.react-activity-calendar__tooltip{color:#f0f0f0;background-color:#1a1a1a;border-radius:.25em;width:max-content;max-width:calc(100vw - 20px);padding:.2em .5em;font-size:13px}.react-activity-calendar__tooltip .react-activity-calendar__tooltip-arrow{fill:#1a1a1a}.react-activity-calendar__tooltip[data-color-scheme=dark]{color:#0f0f0f;background-color:#f0f0f0}.react-activity-calendar__tooltip[data-color-scheme=dark] .react-activity-calendar__tooltip-arrow{fill:#f0f0f0}:root{--bg-color:#f7f7f9;--card-bg:#fff;--text-main:#111;--text-muted:#666;--border-color:#e5e5e5;--accent:#2ecc71;--accent-hover:#27ae60;--link-color:#22a75c;--link-hover-color:#1b8f4d;--radius:24px}[data-theme=dark]{--bg-color:#09090b;--card-bg:#18181b;--text-main:#f4f4f5;--text-muted:#a1a1aa;--border-color:#27272a;--link-hover-color:#2ecc71}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-color);color:var(--text-main);-webkit-font-smoothing:antialiased;font-family:Inter,sans-serif;line-height:1.5;transition:background-color .3s,color .3s}.app-wrapper{-webkit-user-select:none;user-select:none}a,button,.btn,footer{-webkit-user-select:text;user-select:text}img{-webkit-user-drag:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}@media print{body{display:none!important}}h1,h2,h3,h4{letter-spacing:-.04em;color:var(--text-main);font-family:Space Grotesk,sans-serif;font-weight:700}a{color:var(--link-color);text-decoration:none;transition:color .2s}a:hover{color:var(--link-hover-color)}.app-wrapper{max-width:1200px;margin:0 auto;padding:2rem 2rem 4rem}.bento-grid{grid-template-columns:repeat(12,1fr);grid-auto-flow:dense;gap:1.5rem;display:grid}.bento-card{background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius);flex-direction:column;padding:2.5rem;transition:transform .25s,box-shadow .25s,background-color .3s,border-color .3s;display:flex;position:relative;overflow:hidden}.bento-card:hover{border-color:color-mix(in srgb, var(--accent) 28%, var(--border-color));box-shadow:0 18px 30px -24px color-mix(in srgb, var(--text-main) 24%, transparent), 0 6px 16px -14px color-mix(in srgb, var(--accent) 20%, transparent)}@media (width>=1024px){.col-span-12{grid-column:span 12}.col-span-8{grid-column:span 8}.col-span-7{grid-column:span 7}.col-span-5{grid-column:span 5}.col-span-6{grid-column:span 6}.col-span-4{grid-column:span 4}}@media (width<=1023px) and (width>=768px){.bento-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.col-span-12,.col-span-8,.col-span-7,.col-span-6,.col-span-5,.col-span-4{grid-column:span 2}#about,#experience{grid-column:span 1}.contact-layout{gap:1.25rem;grid-template-columns:1fr!important}.contact-layout>*{width:100%}}@media (width<=767px){.app-wrapper{padding:1.25rem 1rem 3rem}.bento-card{padding:1.5rem}.bento-grid{grid-template-columns:1fr;gap:1.25rem}.col-span-12,.col-span-8,.col-span-7,.col-span-6,.col-span-5,.col-span-4{grid-column:span 1;min-width:0}.contact-form button[type=submit]{width:100%}.hero-title{white-space:normal;overflow-wrap:anywhere;word-wrap:break-word}.hero-actions{flex-wrap:wrap;gap:.75rem;margin-top:.75rem}.hero-actions .btn{flex:calc(50% - .5rem);justify-content:center;min-width:min(100%,12rem)}.hero-social-links{margin-top:.2rem}.hero-social-icon{width:34px;height:34px}.hero-card{--hero-ribbon-offset:1.5rem}.contact-layout{grid-template-columns:1fr!important}.contact-layout>*{width:100%}.navbar{margin-bottom:1.25rem;top:.75rem}.tabs-container{margin-bottom:1.25rem}.tab-btn{padding:.5rem 1rem;font-size:.85rem}.project-card--with-label{padding-top:2.8rem!important;padding-left:1.25rem!important}.project-ribbon{writing-mode:horizontal-tb;letter-spacing:.06em;z-index:1;border-radius:999px;width:fit-content;min-height:1.5rem;padding:.25rem .6rem;font-size:.62rem;line-height:1.2;inset:.75rem auto auto .75rem;transform:none}}@media (width>=768px){.hero-title{white-space:nowrap}}@media (width<=420px){.app-wrapper{padding:1rem .75rem 2.5rem}.bento-card{border-radius:18px;padding:1.2rem}.navbar{padding:.7rem 1rem}.hero-actions .btn{flex:100%;width:100%}.hero-card{--hero-ribbon-offset:1.2rem}.project-card{padding:1.25rem!important}.project-card--with-label{padding-top:2.65rem!important}}.hero-actions{gap:1rem;margin-top:1rem;display:flex}.hero-card{--hero-ribbon-offset:2.5rem}.hero-social-links{margin-top:.55rem;margin-left:calc(-1 * var(--hero-ribbon-offset,2.5rem));width:fit-content;min-height:48px;padding:.42rem .75rem .42rem calc(var(--hero-ribbon-offset,2.5rem) + .75rem);border:1px solid var(--border-color);background:color-mix(in srgb, var(--bg-color) 82%, var(--card-bg));border-left:none;border-radius:0 999px 999px 0;align-items:center;gap:.7rem;display:inline-flex}.hero-social-title{color:var(--text-main);letter-spacing:.04em;opacity:.72;white-space:nowrap;padding-right:.1rem;font-family:JetBrains Mono,monospace;font-size:.8rem;font-weight:700}.hero-social-icon{background:var(--card-bg);border:1px solid var(--border-color);width:36px;height:36px;color:var(--text-muted);border-radius:50%;justify-content:center;align-items:center;transition:all .2s;display:flex}.hero-social-icon:hover{transform:translateY(-1px)}.hero-social-icon-github:hover{color:#fff;background:#181717;border-color:#181717;box-shadow:0 8px 18px -14px #1817178c}.hero-social-icon-linkedin:hover{color:#fff;background:#0a66c2;border-color:#0a66c2;box-shadow:0 8px 18px -14px #0a66c299}.contact-layout{grid-template-columns:1.1fr .9fr;align-items:start;gap:1.5rem;display:grid}.contact-stack{--contact-stack-size:1.85rem;--contact-stack-overlap:calc(var(--contact-stack-size) * -.32);flex-shrink:0;align-items:center;padding:.05rem 0;display:flex}.contact-stack__link{width:var(--contact-stack-size);height:var(--contact-stack-size);flex:0 0 var(--contact-stack-size);border:1.5px solid var(--border-color);background:var(--bg-color);color:var(--text-muted);margin-left:var(--contact-stack-overlap);border-radius:50%;justify-content:center;align-items:center;text-decoration:none;transition:transform .2s,background-color .2s,color .2s,border-color .2s;display:flex;position:relative}.contact-stack__link:first-child{margin-left:0}.contact-stack__link:first-child{z-index:1}.contact-stack__link:nth-child(2){z-index:2}.contact-stack__link:nth-child(3){z-index:3}.contact-stack__link:focus-visible{outline:2px solid color-mix(in srgb, var(--link-color) 85%, #fff);outline-offset:3px}.contact-stack__link:hover{background:var(--text-main);color:var(--bg-color);border-color:var(--text-main);z-index:10;transform:translateY(-2px)}.contact-touch-row{box-sizing:border-box;align-items:center;gap:.65rem;width:100%;display:flex}.contact-touch-label{text-align:left;min-width:0;color:var(--text-main);word-break:break-word;flex:1;font-size:.95rem;font-weight:500}.contact-touch-label--muted{color:var(--text-muted);font-size:.88rem}.contact-touch-chevron{color:var(--text-muted);flex-shrink:0;align-items:center;display:flex}.contact-form{border:1px solid var(--border-color);background:var(--bg-color);border-radius:16px;flex-direction:column;gap:.75rem;width:100%;padding:1.1rem;display:flex}.contact-form-label{color:var(--text-main);flex-direction:column;gap:.4rem;font-size:.88rem;font-weight:600;display:flex}.contact-form-input{border:1px solid var(--border-color);background:var(--card-bg);width:100%;color:var(--text-main);border-radius:10px;outline:none;padding:.68rem .78rem;font-family:inherit;font-size:.92rem}.contact-form-input:focus{border-color:color-mix(in srgb, var(--accent) 55%, var(--border-color));box-shadow:0 0 0 2px color-mix(in srgb, var(--accent) 20%, transparent)}.contact-form-textarea{resize:vertical;min-height:120px}.contact-form button:disabled{opacity:.75;cursor:not-allowed}.contact-form-status{margin-top:.15rem;font-size:.86rem;font-weight:500}.contact-form-status-success{color:#1f9d57}.contact-form-status-error{color:#d14343}.contact-honeypot{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute;left:-9999px}.projects-grid{grid-template-columns:1fr;gap:1.5rem;min-width:0;display:grid}@media (width>=640px){.projects-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.projects-grid>*{min-width:0}.projects-grid-animating>*{animation:.32s both projects-fade-up}@keyframes projects-fade-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.projects-grid h3{overflow-wrap:break-word}.project-card{min-width:0;transition:transform .2s,box-shadow .2s,background-color .2s}.project-card-thumb{transform-origin:50%;transition:transform .32s,filter .32s}.project-card:hover{background:color-mix(in srgb, var(--text-main) 4%, var(--card-bg));box-shadow:0 26px 44px -32px color-mix(in srgb, var(--text-main) 35%, transparent), 0 10px 20px -16px color-mix(in srgb, var(--text-main) 28%, transparent);transform:translateY(-3px)}.project-card:hover .project-card-thumb{filter:saturate(1.03);transform:scale(1.03)}.project-card--with-label{padding-left:2.8rem!important}.project-ribbon{writing-mode:vertical-rl;justify-content:center;align-items:center;width:1.85rem;display:flex;position:absolute;top:0;bottom:0;left:0;transform:rotate(180deg)}@media (width<=767px){.project-card--with-label{padding-top:2.8rem!important;padding-left:1.25rem!important}.project-ribbon{writing-mode:horizontal-tb;letter-spacing:.06em;z-index:1;border-radius:999px;width:fit-content;min-height:1.5rem;padding:.25rem .6rem;font-size:.62rem;line-height:1.2;inset:.75rem auto auto .75rem;transform:none}}a.project-card-icon-link{color:var(--text-muted);background:var(--bg-color);border:1px solid var(--border-color);box-sizing:border-box;border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;transition:color .2s;display:inline-flex}a.project-card-icon-link:hover{color:var(--bg-color);background:var(--text-main);border-color:var(--text-main)}.project-modal-footer-links a.btn-outline:hover{color:var(--accent);border-color:var(--accent);background:0 0}.project-modal-footer-links a.btn-primary:hover{background:var(--accent);border-color:var(--accent);color:#fff;opacity:1}.project-modal-panel{flex-direction:column;min-height:0;max-height:min(90dvh,900px);display:flex;overflow:hidden}.project-modal-header{border-bottom:1px solid var(--border-color);background:var(--card-bg);flex-shrink:0;justify-content:space-between;align-items:flex-start;gap:.75rem;padding:1rem clamp(1rem,4vw,2rem);display:flex}.project-modal-title{letter-spacing:-.03em;overflow-wrap:anywhere;word-break:break-word;min-width:0;color:var(--text-main);flex:1;margin:0;padding-top:.2rem;font-family:Space Grotesk,sans-serif;font-size:1.1rem;font-weight:700;line-height:1.35}.project-modal-close{box-sizing:border-box;aspect-ratio:1;border:1px solid var(--border-color);background:var(--bg-color);width:44px;min-width:44px;height:44px;min-height:44px;color:var(--text-muted);cursor:pointer;appearance:none;-webkit-tap-highlight-color:transparent;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;margin:0;padding:0;transition:color .2s,border-color .2s;display:inline-flex}.project-modal-close:hover{color:var(--accent);border-color:color-mix(in srgb, var(--accent) 42%, var(--border-color));background:color-mix(in srgb, var(--accent) 9%, var(--bg-color));box-shadow:0 0 0 1px color-mix(in srgb, var(--accent) 24%, transparent)}.project-modal-body-scroll{-webkit-overflow-scrolling:touch;overscroll-behavior:contain;flex:auto;min-height:0;padding:clamp(1.25rem,4vw,2rem);overflow:hidden auto}.project-screenshots-grid img{min-width:0}.projects-see-more-wrap{justify-content:center;margin-top:1.75rem;padding-top:.25rem;display:flex}.projects-see-more-btn{letter-spacing:-.02em;cursor:pointer;color:var(--text-main);background:0 0;border:none;border-radius:0;justify-content:center;align-items:center;gap:.45rem;padding:.35rem 0;font-family:Space Grotesk,sans-serif;font-size:.9rem;font-weight:600;transition:color .2s;display:inline-flex}.projects-see-more-btn:hover{color:var(--accent)}.projects-see-more-btn:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.projects-see-more-btn:hover .projects-see-more-arrow{transform:translate(4px)}.projects-see-more-btn .projects-see-more-arrow{flex-shrink:0;transition:transform .28s}.card-title{align-items:center;gap:.5rem;margin-bottom:1.5rem;font-size:1.25rem;display:flex}.card-title:before{content:"";background-color:var(--text-main);width:8px;height:8px;box-shadow:0 0 10px var(--text-main);opacity:.9;border-radius:50%;display:block}.card-title:after{content:"";background-image:linear-gradient(90deg, var(--text-main) 50%, transparent 50%);background-size:6px 100%;flex:1;height:1px;margin-left:.6rem;-webkit-mask-image:linear-gradient(90deg,#0000004d 0%,#0000 100%);mask-image:linear-gradient(90deg,#0000004d 0%,#0000 100%)}.badge{background:var(--bg-color);color:var(--text-main);border:1px solid var(--border-color);border-radius:99px;align-items:center;padding:.4rem .8rem;font-family:JetBrains Mono,monospace;font-size:.85rem;font-weight:500;display:inline-flex}.tabs-container{scrollbar-width:none;gap:.75rem;margin-bottom:2rem;padding-bottom:.5rem;display:flex;overflow-x:auto}.tabs-container::-webkit-scrollbar{display:none}.tab-btn{background:var(--bg-color);border:1px solid var(--border-color);color:var(--text-muted);cursor:pointer;white-space:nowrap;border-radius:99px;padding:.6rem 1.25rem;font-family:Space Grotesk,sans-serif;font-size:.9rem;font-weight:500;transition:all .2s}.tab-btn:hover{border-color:color-mix(in srgb, var(--accent) 35%, var(--border-color));box-shadow:0 0 0 1px color-mix(in srgb, var(--accent) 20%, transparent);color:var(--text-main)}.tab-btn.active{background:var(--text-main);color:var(--bg-color);border-color:var(--text-main)}.btn{cursor:pointer;border:1px solid #0000;border-radius:99px;justify-content:center;align-items:center;width:fit-content;padding:.8rem 1.5rem;font-size:1rem;font-weight:500;transition:all .2s;display:inline-flex}.btn-primary{background:var(--text-main);color:var(--bg-color)}.btn-primary:hover{opacity:.8}.btn-outline{color:var(--text-main);border:1px solid var(--border-color);background:0 0}.btn-outline:hover{background:var(--bg-color)}.btn.contact-touch-row{box-sizing:border-box;width:100%;max-width:100%}.btn-resume-shimmer{background:linear-gradient(var(--card-bg), var(--card-bg)) padding-box, linear-gradient(120deg, color-mix(in srgb, var(--accent) 95%, #fff) 0%, #60a5fa 30%, #a78bfa 55%, #f472b6 75%, color-mix(in srgb, var(--accent) 95%, #fff) 100%) border-box;background-size:100% 100%,240% 240%;border:2px solid #0000;animation:3.6s linear infinite resume-border-shimmer}.btn-resume-shimmer:hover{background:linear-gradient(color-mix(in srgb, var(--accent) 6%, var(--card-bg)), color-mix(in srgb, var(--accent) 6%, var(--card-bg))) padding-box, linear-gradient(120deg, color-mix(in srgb, var(--accent) 95%, #fff) 0%, #60a5fa 30%, #a78bfa 55%, #f472b6 75%, color-mix(in srgb, var(--accent) 95%, #fff) 100%) border-box}@keyframes resume-border-shimmer{0%{background-position:0 0,0%}to{background-position:0 0,200%}}ul.points-list{flex-direction:column;gap:.8rem;list-style:none;display:flex}ul.points-list li{color:var(--text-muted);padding-left:1.5rem;font-size:.95rem;position:relative}ul.points-list li:before{content:"→";color:var(--text-main);font-family:JetBrains Mono,monospace;position:absolute;left:0}.marquee-container{-webkit-user-select:none;user-select:none;gap:1rem;margin-bottom:1rem;padding:.5rem 0;display:flex;overflow:hidden}.marquee-content{flex-shrink:0;gap:1rem;animation:40s linear infinite scroll-left;display:flex}.marquee-content.reverse{animation:40s linear infinite scroll-right}@keyframes scroll-left{0%{transform:translate(0)}to{transform:translate(-50%)}}@keyframes scroll-right{0%{transform:translate(-50%)}to{transform:translate(0)}}.marquee-container:hover .marquee-content{animation-play-state:paused}.testimonials-marquee-wrap .marquee-content{animation-duration:80s}#feedback .testimonial-quote{margin-bottom:1.5rem;font-size:.95rem}#feedback .testimonial-author-name{font-size:.9rem}#feedback .testimonial-author-role{font-size:.8rem;line-height:1.4}#feedback .testimonial-more-hint{font-size:.875rem}@media (width<=767px){#feedback .testimonial-quote{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;margin-bottom:1.125rem;font-size:.875rem;line-height:1.6}#feedback .testimonial-author-name{font-size:.8125rem}#feedback .testimonial-author-role{font-size:.75rem;line-height:1.4}#feedback .testimonial-more-hint{font-size:.8125rem}#project-details .card-title:before{content:none}}.navbar{z-index:50;background:var(--card-bg);border:1px solid var(--border-color);border-radius:99px;justify-content:space-between;align-items:center;margin-bottom:2rem;padding:1rem 2rem;display:flex;position:sticky;top:1rem;box-shadow:0 4px 6px -1px #0000000d}.nav-links{gap:1.5rem;font-size:.95rem;font-weight:500;list-style:none;display:flex}.nav-links a{color:var(--text-muted);font-weight:500;transition:color .2s,font-weight .15s}.nav-links a:hover:not(.nav-link-active){color:var(--accent)}.nav-links a.nav-link-active{color:var(--accent);font-weight:700}.nav-links a.nav-link-active:hover{color:var(--accent-hover)}.hamburger-btn{color:var(--text-main);cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;padding:.4rem;transition:background .2s;display:none}.hamburger-btn:hover{background:var(--bg-color)}.mobile-menu-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;background:#00000080;justify-content:flex-end;animation:.2s fadeIn;display:flex;position:fixed;inset:0}.mobile-menu{background:var(--card-bg);border-left:1px solid var(--border-color);width:280px;height:100%;padding:2rem 1.5rem;animation:.3s slideIn}.mobile-nav-links{flex-direction:column;gap:.25rem;margin-top:1rem;list-style:none;display:flex}.mobile-nav-links li a{color:var(--text-muted);border-radius:12px;padding:.9rem 1rem;font-size:1.05rem;font-weight:500;text-decoration:none;transition:all .2s;display:block}.mobile-nav-links li a:hover:not(.nav-link-active){color:var(--accent);background:var(--bg-color)}.mobile-nav-links li a.nav-link-active{color:var(--accent);background:color-mix(in srgb, var(--accent) 12%, transparent);font-weight:700}.mobile-nav-links li a.nav-link-active:hover{color:var(--accent-hover);background:color-mix(in srgb, var(--accent) 18%, transparent)}@keyframes slideIn{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@media (width<=768px){.nav-desktop{display:none}.hamburger-btn{display:flex}.navbar{padding:.8rem 1.5rem}}.theme-toggle{color:var(--text-main);cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:.5rem;transition:background .2s;display:flex}.theme-toggle:hover{background:var(--bg-color)}.skill-badge{cursor:default;transition:transform .3s,background-color .3s,color .3s,border-color .3s}.skill-badge:hover{transform:translateY(-2px)scale(1.05);background:var(--text-main)!important;color:var(--card-bg)!important;border-color:var(--text-main)!important}.project-modal-tech-badge:hover{transform:none;background:var(--bg-color)!important;color:var(--text-main)!important;border-color:var(--border-color)!important}.cert-link{color:var(--text-muted);cursor:pointer;margin-bottom:.25rem;font-size:.9rem;text-decoration:none;transition:color .2s;display:block}.cert-link:hover{color:var(--text-main);text-decoration:underline}@keyframes section-nav-highlight-ring{0%{opacity:0;border-color:#0000}20%{opacity:1;border-color:color-mix(in srgb, var(--accent) 42%, var(--border-color))}50%{border-color:color-mix(in srgb, var(--accent) 32%, var(--border-color))}to{opacity:0;border-color:#0000}}.section-nav-highlight{border-radius:var(--radius);z-index:5;isolation:isolate;position:relative;overflow:visible!important}#about,#experience,#skills,#projects,#feedback,#contact,#project-details{scroll-margin-top:170px}.section-nav-highlight:before{content:"";border-radius:calc(var(--radius) + 2px);pointer-events:none;z-index:100;box-sizing:border-box;border:2px solid #0000;animation:1.2s ease-in-out forwards section-nav-highlight-ring;position:absolute;inset:-2px}.project-breadcrumb{align-items:center;gap:.35rem;margin-bottom:1.1rem;display:flex}.project-breadcrumb-link{color:var(--text-muted);align-items:center;gap:.35rem;padding:.3rem .1rem;font-size:.95rem;font-weight:600;text-decoration:none;display:inline-flex}.project-breadcrumb-link:hover{color:var(--accent)}#feedback.bento-card,#feedback.bento-card:hover{box-shadow:none}#feedback .testimonial-card,#feedback .testimonial-card:hover{transform:none!important}.modal-backdrop{animation:.34s forwards modal-backdrop-in}.modal-backdrop.is-closing{animation:.34s forwards modal-backdrop-out}.modal-panel{animation:.4s cubic-bezier(.22,1,.36,1) forwards modal-panel-in}.modal-panel.is-closing{animation:.34s forwards modal-panel-out}@keyframes modal-backdrop-in{0%{opacity:0}to{opacity:1}}@keyframes modal-backdrop-out{0%{opacity:1}to{opacity:0}}@keyframes modal-panel-in{0%{opacity:0;transform:translateY(14px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes modal-panel-out{0%{opacity:1;transform:translateY(0)scale(1)}to{opacity:0;transform:translateY(10px)scale(.985)}}.skeleton-shimmer{border-radius:inherit;position:relative;overflow:hidden}.skeleton-animation{border-radius:inherit;background:linear-gradient(90deg, transparent 0%, color-mix(in srgb, var(--text-muted) 22%, transparent) 45%, transparent 100%);will-change:transform;animation:1.35s linear infinite skeleton-shimmer;position:absolute;inset:0;transform:translate(-100%)}@keyframes skeleton-shimmer{to{transform:translate(100%)}}.skeleton-card{height:100%;min-height:250px}
