@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/inter-latin-wght-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light;color:#1a1a1a;background-color:#fff;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--color-primary: #1a1a1a;--color-secondary: #666666;--color-muted: #666666;--color-accent: #22c55e;--color-accent-bright: #22c55e;--color-background: #ffffff;--color-surface: #fafafa;--color-border: rgba(0, 0, 0, .08);--color-hover: #f5f5f5;--ink: #000000;--ink-soft: #333333;--paper: #ffffff;--halo: 0 0 1px #fff, 0 0 12px rgba(255, 255, 255, .95), 0 0 22px rgba(255, 255, 255, .8);--halo-tight: 0 1px 8px rgba(255, 255, 255, .3);--halo-soft: 0 1px 5px rgba(255, 255, 255, .2);--glass: rgba(255, 255, 255, .1);--glass-strong: rgba(255, 255, 255, .15);--glass-hover: rgba(255, 255, 255, .2);--glass-solid: rgba(255, 255, 255, .95);--line: rgba(255, 255, 255, .2);--line-strong: rgba(255, 255, 255, .3);--shadow: 0 8px 32px rgba(0, 0, 0, .2);--shadow-lift: 0 14px 40px rgba(82, 39, 255, .18);--accent-line: rgba(82, 39, 255, .45);--focus: #0e7490;--tag-bg: rgba(6, 182, 212, .2);--tag-fg: #0e7490;--tag-line: rgba(6, 182, 212, .3);--icon: #06b6d4;--icon-bg: rgba(6, 182, 212, .2);--icon-line: rgba(6, 182, 212, .3);--role-green: #22c55e;--role-green-bg: rgba(34, 197, 94, .125);--avatar-bg: #f0f0f0;--avatar-ring: rgba(255, 255, 255, .85);--cta-bg: #1a1a1a;--cta-bg-hover: #2a2a2a;--cta-fg: #ffffff;--cta-muted: rgba(255, 255, 255, .78);--cta-icon: rgba(255, 255, 255, .12);--link: #1a1a1a;--link-hover: #15803d;--available: #15803d;--dot: #22c55e;--scrollbar-thumb: rgba(26, 26, 26, .38);--scrollbar-track: rgba(255, 255, 255, .65);--menu-shadow: 0 4px 20px rgba(0, 0, 0, .08);--chip: rgba(0, 0, 0, .05);--chip-hover: rgba(0, 0, 0, .1);--overlay: rgba(0, 0, 0, .7);--project-link-bg: #ffffff;--project-link-fg: #1a1a1a;--project-link-hover: #f0f0f0;--skip-bg: #1a1a1a;--skip-fg: #ffffff;--blob-a: rgba(177, 158, 239, .22);--blob-b: rgba(255, 159, 252, .16);--blob-c: rgba(82, 39, 255, .12);--social-github: #24292f;--social-linkedin: #0a66c2;--social-x: #1a1a1a;--spacing-xs: .5rem;--spacing-sm: 1rem;--spacing-md: 1.5rem;--spacing-lg: 2rem;--spacing-xl: 3rem;--spacing-2xl: 4rem;--spacing-3xl: 6rem;--border-radius-sm: 8px;--border-radius-md: 12px;--border-radius-lg: 16px;--border-radius-xl: 24px;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .08);--shadow-md: 0 4px 20px rgba(0, 0, 0, .08);--shadow-lg: 0 10px 40px rgba(0, 0, 0, .12)}html[data-theme=dark]{color-scheme:dark;color:#f4f1fb;background-color:#121018;--color-primary: #f4f1fb;--color-secondary: #d5d0e4;--color-muted: #c8c2d6;--color-accent: #86efac;--color-accent-bright: #4ade80;--color-background: #121018;--color-surface: #1b1826;--color-border: rgba(255, 255, 255, .12);--color-hover: rgba(255, 255, 255, .06);--ink: #f7f4ff;--ink-soft: #d5d0e4;--paper: #121018;--halo: 0 0 1px #121018, 0 0 12px rgba(18, 16, 24, .95), 0 0 22px rgba(18, 16, 24, .85);--halo-tight: 0 1px 8px rgba(18, 16, 24, .65);--halo-soft: 0 1px 5px rgba(18, 16, 24, .5);--glass: rgba(18, 16, 28, .82);--glass-strong: rgba(28, 24, 44, .9);--glass-hover: rgba(40, 34, 62, .94);--glass-solid: rgba(16, 14, 26, .94);--line: rgba(196, 181, 253, .28);--line-strong: rgba(196, 181, 253, .55);--shadow: 0 8px 32px rgba(0, 0, 0, .45);--shadow-lift: 0 16px 40px rgba(82, 39, 255, .38);--accent-line: rgba(196, 181, 253, .85);--focus: #c4b5fd;--tag-bg: rgba(125, 211, 252, .16);--tag-fg: #a5f3fc;--tag-line: rgba(125, 211, 252, .45);--icon: #67e8f9;--icon-bg: rgba(103, 232, 249, .14);--icon-line: rgba(103, 232, 249, .4);--role-green: #4ade80;--role-green-bg: rgba(74, 222, 128, .16);--avatar-bg: #2a2638;--avatar-ring: rgba(244, 241, 251, .4);--cta-bg: #f4f1fb;--cta-bg-hover: #ffffff;--cta-fg: #121018;--cta-muted: rgba(18, 16, 24, .72);--cta-icon: rgba(18, 16, 24, .08);--link: #f4f1fb;--link-hover: #86efac;--available: #86efac;--dot: #4ade80;--scrollbar-thumb: rgba(196, 181, 253, .6);--scrollbar-track: #121018;--menu-shadow: 0 8px 28px rgba(0, 0, 0, .45);--chip: rgba(255, 255, 255, .08);--chip-hover: rgba(255, 255, 255, .14);--overlay: rgba(0, 0, 0, .72);--project-link-bg: #f4f1fb;--project-link-fg: #121018;--project-link-hover: #ffffff;--skip-bg: #f4f1fb;--skip-fg: #121018;--blob-a: rgba(177, 158, 239, .38);--blob-b: rgba(255, 159, 252, .28);--blob-c: rgba(82, 39, 255, .32);--social-github: #f4f1fb;--social-linkedin: #7dd3fc;--social-x: #f4f1fb}*{margin:0;padding:0;box-sizing:border-box}a{font-weight:500;color:var(--link);text-decoration:none;transition:color .2s ease}a:hover{color:var(--link-hover)}html{background-color:var(--color-background);scrollbar-color:var(--scrollbar-thumb) var(--scrollbar-track);transition:background-color .45s ease,color .45s ease}body{margin:0;font-family:Inter,system-ui,sans-serif;color:var(--color-primary);background-color:var(--color-background);line-height:1.6;transition:background-color .45s ease,color .45s ease}::-webkit-scrollbar{width:12px;height:12px}::-webkit-scrollbar-track{background:var(--scrollbar-track)}::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:999px;border:3px solid var(--scrollbar-track)}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.3;color:var(--color-primary)}h1{font-size:clamp(2.5rem,5vw,4rem);font-weight:700}h2{font-size:clamp(2rem,4vw,3rem);font-weight:600}h3{font-size:clamp(1.5rem,3vw,2rem);font-weight:600}p{color:var(--color-secondary);line-height:1.6}button{font-family:inherit;cursor:pointer}:focus-visible{outline:2px solid var(--focus);outline-offset:3px}.reveal{opacity:1;transform:none}.reveal.reveal-pending{opacity:0;transform:translateY(12px);transition:none}.reveal.is-in{opacity:1;transform:none;transition:opacity .6s ease,transform .6s ease;transition-delay:var(--reveal-delay, 0ms)}html[data-reveal=done] .reveal,html[data-reveal=done] .reveal.reveal-pending{opacity:1;transform:none}@media(prefers-reduced-motion:no-preference){:where(a,button,p,h1,h2,h3,h4,li,span,label,section,header,footer,div){transition-property:color,background-color,border-color,outline-color,box-shadow,fill,stroke;transition-duration:.45s;transition-timing-function:ease}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.reveal,.reveal.reveal-pending,.reveal.is-in{opacity:1!important;transform:none!important;transition:none!important}}.app{min-height:100vh;background-color:transparent;position:relative}main{margin-left:320px;max-width:calc(100% - 360px);padding:0 2rem;position:relative;z-index:1}.liquid-ether-layer{position:fixed;inset:0;pointer-events:none}.skip-link{position:fixed;left:1rem;top:0;z-index:10000;transform:translateY(-120%);background:var(--skip-bg);color:var(--skip-fg);padding:.75rem 1rem;border-radius:8px}.skip-link:focus{transform:none;top:.75rem;color:var(--skip-fg)}.ambient{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden}@media(min-width:1025px){.ambient{left:340px}}.ambient-blob{position:absolute;width:48vmax;height:48vmax;border-radius:50%;background:radial-gradient(circle,var(--blob, transparent) 0%,transparent 68%);transform:translateZ(0)}.ambient-a{--blob: var(--blob-a);top:-12%;left:18%}.ambient-b{--blob: var(--blob-b);top:18%;right:-16%}.ambient-c{--blob: var(--blob-c);bottom:-22%;left:28%}html[data-motion="1"] .ambient-blob{animation:blob-drift 46s ease-in-out infinite alternate}html[data-motion="1"] .ambient-b{animation-duration:58s;animation-delay:-12s}html[data-motion="1"] .ambient-c{animation-duration:52s;animation-delay:-6s}@keyframes blob-drift{0%{transform:translateZ(0)}to{transform:translate3d(3%,4%,0)}}html{scroll-behavior:smooth}html,body,#root{max-width:100%;overflow-x:hidden;overflow-x:clip;overscroll-behavior-x:none}html,body{touch-action:pan-y pinch-zoom}.container{max-width:1200px;margin:0 auto;padding:0 var(--spacing-lg);width:100%}@media(max-width:1024px){main{margin-left:0;max-width:100%;padding:136px 0 0}#home,#about,#projects,#stack,#contact{scroll-margin-top:136px}.container{padding:0 var(--spacing-md)}}@media(min-width:1025px){main{max-width:min(calc(100% - 360px),1400px)}}@media(min-width:1600px){main{margin-left:340px;max-width:min(calc(100% - 380px),1600px)}}section{padding:var(--spacing-3xl) 0}@media(max-width:768px){section{padding:var(--spacing-2xl) 0}}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;flex-shrink:0;padding:0;border-radius:12px;border:1px solid var(--line);background:var(--glass);color:var(--ink);box-shadow:none;transition:transform .25s ease,background-color .35s ease,border-color .35s ease,color .35s ease,box-shadow .35s ease}.theme-toggle:hover,.theme-toggle:focus-visible{background:var(--glass-hover);border-color:var(--line-strong);color:var(--ink);transform:translateY(-2px);box-shadow:var(--shadow-lift)}html[data-theme=dark] .theme-toggle:hover,html[data-theme=dark] .theme-toggle:focus-visible{background:var(--glass-strong);border-color:var(--accent-line)}.sidebar-theme{display:flex;justify-content:flex-end;margin:-.5rem 0 1.25rem}.mobile-header-actions{display:flex;align-items:center;gap:.25rem;flex-shrink:0}.mobile-nav-theme{display:flex;justify-content:center;margin-bottom:1rem}.sidebar{position:fixed;margin:2rem;width:280px;max-height:fit-content;z-index:1000;background:var(--glass);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:24px;box-shadow:var(--shadow);border:1px solid var(--line);overflow:hidden;transition:top .3s ease,transform .3s ease}.sidebar-above-footer{position:fixed!important;bottom:auto!important}.sidebar-content{height:100%;display:flex;flex-direction:column;padding:2rem}.sidebar-profile{display:flex;align-items:center;gap:1rem;padding-bottom:2rem;border-bottom:1px solid var(--line);margin-bottom:2rem}.sidebar-profile picture,.mobile-logo picture{display:block;flex-shrink:0;line-height:0}.profile-img{width:56px;height:56px;border-radius:16px;object-fit:cover;background:var(--avatar-bg)}.profile-text .profile-name{margin:0;font-size:1.25rem;font-weight:600;color:var(--ink);line-height:1.3;text-shadow:var(--halo-tight)}.profile-text p{margin:0;font-size:.875rem;color:var(--ink-soft);margin-top:.25rem;text-shadow:var(--halo-soft)}.sidebar-nav{flex:1;display:flex;flex-direction:column;gap:.75rem}.nav-link{display:flex;align-items:center;gap:1rem;border-radius:12px;text-decoration:none;color:var(--ink-soft);font-weight:500;font-size:small;transition:transform .2s ease,background-color .2s ease,color .2s ease;position:relative;text-shadow:var(--halo-soft)}.nav-link:hover,.nav-link:focus-visible{background:var(--glass);color:var(--ink)}.nav-link.active{background:var(--glass-strong);color:var(--ink)}.nav-icon{display:flex;align-items:center;justify-content:center;color:inherit;width:40px;height:40px}.nav-text{color:inherit}.sidebar-status{padding:1.5rem;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.availability{display:flex;align-items:center;gap:.5rem;font-size:.875rem;color:var(--available);font-weight:500;margin-bottom:1rem}.status-dot{width:8px;height:8px;background:var(--dot);border-radius:50%;animation:pulse 2s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}.contact-btn{display:block;width:100%;text-align:center;text-decoration:none;background:var(--glass);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);color:var(--ink);border:1px solid var(--line);padding:.875rem 1rem;border-radius:12px;font-weight:500;font-size:.95rem;cursor:pointer;transition:transform .25s ease,background-color .25s ease,border-color .25s ease,box-shadow .25s ease,color .25s ease;text-shadow:var(--halo-soft)}.contact-btn:hover,.contact-btn:focus-visible{background:var(--glass-hover);border-color:var(--line-strong);color:var(--ink);transform:translateY(-2px);box-shadow:var(--shadow-lift)}html[data-theme=dark] .contact-btn:hover,html[data-theme=dark] .contact-btn:focus-visible{background:var(--glass-strong);border-color:var(--accent-line)}.sidebar-social{display:flex;justify-content:center;gap:1rem;padding-top:1.5rem}.sidebar-social .social-link{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:10px;background:var(--glass);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);color:var(--ink-soft);text-decoration:none;transition:transform .25s ease,background-color .25s ease,border-color .25s ease,color .25s ease,box-shadow .25s ease;border:1px solid var(--line)}.sidebar-social .social-link:hover,.sidebar-social .social-link:focus-visible{background:var(--glass-hover);border-color:var(--line-strong);color:var(--ink);transform:translateY(-2px);box-shadow:var(--shadow-lift)}html[data-theme=dark] .sidebar-social .social-link:hover,html[data-theme=dark] .sidebar-social .social-link:focus-visible{background:var(--glass-strong);border-color:var(--accent-line)}.mobile-header,.mobile-nav{display:none}@media(max-width:1024px){.sidebar{display:none}.mobile-header{display:block;position:fixed;top:1rem;left:1rem;right:1rem;z-index:1000;background:var(--glass-solid);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--color-border);border-radius:16px;box-shadow:var(--shadow-md);transition:border-radius .3s ease}.mobile-header.menu-open{border-radius:16px;border-bottom:1px solid var(--color-border);box-shadow:var(--menu-shadow)}.mobile-nav{display:block}.mobile-header-content{padding:1rem 1.5rem;display:flex;align-items:center;justify-content:space-between;gap:.75rem}.mobile-logo{display:flex;align-items:center;gap:.75rem;min-width:0;flex:1}.profile-img-mobile{width:44px;height:44px;border-radius:12px;object-fit:cover;background:var(--avatar-bg)}.mobile-logo-text{min-width:0}.mobile-logo-text .profile-name{margin:0;font-size:1.1rem;font-weight:600;color:var(--ink)}.mobile-logo-text p{margin:0;font-size:.825rem;color:var(--color-muted)}.mobile-menu-btn{background:none;border:none;cursor:pointer;color:var(--ink);padding:.5rem;border-radius:8px;transition:color .2s ease,background-color .2s ease,transform .2s ease;display:flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;flex-shrink:0}.mobile-menu-btn:hover{background:var(--chip)}.mobile-nav{display:grid;grid-template-rows:0fr;z-index:1001;visibility:hidden;opacity:0;overflow:hidden;pointer-events:none;transition:grid-template-rows .22s ease,opacity .22s ease,visibility 0s linear .22s}.mobile-nav.mobile-nav-open{grid-template-rows:1fr;visibility:visible;opacity:1;pointer-events:auto;transition:grid-template-rows .22s ease,opacity .22s ease,visibility 0s linear 0s}.mobile-nav-clip{min-height:0;overflow:hidden}.mobile-nav-content{background:var(--glass-solid);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:0 0 16px 16px;border-top:none;box-shadow:var(--menu-shadow);padding:1.5rem;width:100%;display:flex;flex-direction:column;position:relative;margin:-1px 0 0}.mobile-nav-links{display:flex;flex-direction:column;width:100%;gap:.25rem;margin-bottom:1.5rem}.mobile-nav-link{display:flex;align-items:center;justify-content:flex-start;gap:.75rem;padding:.875rem 1rem;border-radius:10px;text-decoration:none;color:var(--color-secondary);font-weight:500;font-size:1rem;transition:color .2s ease,background-color .2s ease,transform .2s ease;width:100%}.mobile-nav-link:hover{background:var(--color-hover);color:var(--color-primary)}.mobile-nav-footer{width:100%;border-top:1px solid var(--color-border);padding-top:1rem;text-align:center}.mobile-nav-footer .availability{display:flex;align-items:center;justify-content:center;gap:.5rem;margin-bottom:1rem;font-size:.85rem;color:var(--available);font-weight:500}.mobile-social{display:flex;justify-content:center;gap:.5rem;flex-wrap:wrap}.mobile-social .social-link{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:8px;background:var(--chip);color:var(--color-secondary);text-decoration:none;transition:color .2s ease,background-color .2s ease,transform .2s ease}.mobile-social .social-link:hover{background:var(--chip-hover);color:var(--color-primary);transform:scale(1.05)}.mobile-social .social-link span{display:none}}@media(prefers-reduced-motion:reduce){.mobile-nav,.mobile-nav.mobile-nav-open{transition:none}}@media(max-width:480px){.mobile-header{top:.75rem;left:.75rem;right:.75rem;border-radius:14px;transition:border-radius .3s ease}.mobile-header.menu-open{border-radius:14px 14px 0 0;border-bottom:1px solid var(--color-border);box-shadow:var(--menu-shadow)}.mobile-header-content{padding:.875rem 1rem}.mobile-nav{top:calc(.75rem + 66px);left:.75rem;right:.75rem}.mobile-nav-content{padding:1.25rem;border-radius:0 0 14px 14px;box-shadow:var(--menu-shadow);margin:-1px 0 0}.mobile-nav-link{font-size:.95rem;padding:.75rem .875rem;gap:.625rem}.mobile-nav-footer{padding-top:1rem}.mobile-nav-links{margin-bottom:1.25rem}.profile-img-mobile{width:40px;height:40px}.mobile-logo-text .profile-name{font-size:1rem}.mobile-logo-text p{font-size:.8rem}.mobile-social .social-link{width:44px;height:44px}.mobile-nav-footer .availability{font-size:.8rem}}.circular-text{margin:0 auto;border-radius:50%;width:200px;position:relative;height:200px;font-weight:700;color:var(--ink);font-weight:900;text-align:center;cursor:pointer;transform-origin:50% 50%;-webkit-transform-origin:50% 50%}.circular-text span{position:absolute;display:inline-block;inset:0;font-size:24px;transition:transform .5s cubic-bezier(0,0,0,1)}.hero{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:4rem 2rem;background:transparent;position:relative;z-index:1}.hero-content{max-width:1200px;width:100%;text-align:center;position:relative;z-index:2}.hero-text{margin-bottom:4rem;max-width:100%}.hero-circular-frame{width:100%;max-width:100%;height:240px;margin:0 auto;display:grid;place-items:center;overflow:hidden;overflow:clip}.hero h1{font-size:clamp(2.5rem,5vw,4rem);font-weight:700;color:var(--ink);margin-bottom:1.5rem;line-height:1.2;text-shadow:var(--halo)}.hero-description{font-size:1.125rem;color:var(--ink-soft);line-height:1.6;max-width:600px;margin:0 auto;text-shadow:var(--halo)}.roles-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:2rem;max-width:900px;margin:0 auto}.role-card{background:var(--glass);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:2.5rem;border-radius:16px;box-shadow:var(--shadow);border:1px solid var(--line);transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease,background-color .35s ease,color .35s ease;cursor:pointer}.role-card:hover,.role-card:focus-within{background:var(--glass-strong);box-shadow:var(--shadow-lift);border-color:var(--accent-line);transform:translateY(-4px)}.role-icon{width:80px;height:80px;border-radius:20px;display:flex;align-items:center;justify-content:center;margin:0 auto 1.5rem;transition:transform .25s ease,background-color .35s ease,color .35s ease}.role-icon-engineer{background:var(--icon-bg);color:var(--icon);border:1px solid var(--icon-line)}.role-icon-architect{background:var(--role-green-bg);color:var(--role-green);border:1px solid rgba(34,197,94,.35)}html[data-theme=dark] .role-icon-architect{border-color:#4ade8066}.role-card h3{font-size:1.8rem;font-weight:700;color:var(--ink);margin-bottom:1rem;text-shadow:var(--halo-tight)}.role-card p{color:var(--ink-soft);font-size:1.1rem;line-height:1.6;text-shadow:var(--halo-soft);margin:0}@media(max-width:1024px){.hero{padding:2rem 1rem}}@media(max-width:768px){.hero{padding:2rem 1rem}.roles-grid{grid-template-columns:1fr;gap:1.5rem}.role-card{padding:2rem}}.about{padding:6rem 2rem;background:transparent;position:relative;z-index:1}.about-content{max-width:1200px;margin:0 auto}.about-header{text-align:center}.about h2{font-size:2.5rem;font-weight:700;color:var(--ink);margin-bottom:1.5rem;text-shadow:var(--halo)}.about-description{font-size:1.125rem;color:var(--ink-soft);line-height:1.6;max-width:600px;margin:0 auto;text-shadow:var(--halo)}@media(max-width:768px){.about{padding:4rem 1rem}.about h2{font-size:2rem}}.projects{padding:6rem 2rem;background:transparent;position:relative;z-index:1}.projects-content{max-width:1200px;margin:0 auto}.projects-header{text-align:center;margin-bottom:4rem}.projects h2{font-size:2.5rem;font-weight:700;color:var(--ink);margin-bottom:1.5rem;text-shadow:var(--halo)}.projects-description{font-size:1.125rem;color:var(--ink-soft);line-height:1.6;max-width:600px;margin:0 auto;text-shadow:var(--halo)}.projects-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,500px),1fr));gap:3rem;margin-bottom:3rem}.project-card{min-width:0;background:var(--glass);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:16px;overflow:hidden;box-shadow:var(--shadow);border:1px solid var(--line);transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease,background-color .35s ease}.project-card:hover,.project-card:focus-within,html[data-reveal=done] .project-card:hover,html[data-reveal=done] .project-card:focus-within{box-shadow:var(--shadow-lift);border-color:var(--accent-line);background:var(--glass-strong);transform:translateY(-4px)}.project-image{position:relative;width:100%;height:300px;background:var(--avatar-bg);overflow:hidden}.project-image img{width:100%;height:100%;object-fit:cover;transition:transform .3s ease}.project-image img.crop-top{object-position:top center;transform-origin:top center}.project-card:hover .project-image img{transform:scale(1.05)}.project-overlay{position:absolute;inset:0;background:var(--overlay);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .3s ease}.project-card:hover .project-overlay,.project-card:focus-within .project-overlay{opacity:1}@media(hover:none){.project-overlay{opacity:1;background:linear-gradient(to top,rgba(0,0,0,.72),rgba(0,0,0,.05) 55%,transparent);align-items:flex-end;justify-content:flex-end;padding:.75rem}}.project-link{display:flex;align-items:center;gap:.5rem;padding:.75rem 1.5rem;background:var(--project-link-bg);color:var(--project-link-fg);text-decoration:none;border-radius:8px;font-weight:500;transition:transform .25s ease,background-color .25s ease,color .25s ease,box-shadow .25s ease}.project-link:hover,.project-link:focus-visible{background:var(--project-link-hover);color:var(--project-link-fg);transform:translateY(-2px);box-shadow:var(--shadow-lift)}.project-content{padding:2rem}.project-content h3{font-size:1.25rem;font-weight:600;color:var(--ink);margin:0 0 1rem;line-height:1.3;text-shadow:var(--halo-tight)}.project-content p{color:var(--ink-soft);line-height:1.6;margin:0 0 1.5rem;text-shadow:var(--halo-soft)}.project-tags{display:flex;flex-wrap:wrap;gap:.5rem}.project-tag{padding:.375rem .75rem;background:var(--tag-bg);color:var(--tag-fg);font-size:.8rem;font-weight:500;border-radius:6px;border:1px solid var(--tag-line);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.projects-footer{text-align:center}.view-all-btn{display:inline-flex;align-items:center;padding:1rem 2rem;background:var(--glass);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:var(--ink);text-decoration:none;border-radius:8px;font-weight:500;border:1px solid var(--line);transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease,background-color .35s ease,color .35s ease;text-shadow:var(--halo-soft)}.view-all-btn:hover,.view-all-btn:focus-visible{background:var(--glass-strong);border-color:var(--accent-line);color:var(--ink);transform:translateY(-2px);box-shadow:var(--shadow-lift)}@media(max-width:768px){.projects{padding:4rem 1rem}.projects-grid{grid-template-columns:1fr;gap:2rem}.project-content{padding:1.5rem}.projects h2{font-size:2rem}}.stack{padding:var(--spacing-3xl) var(--spacing-lg);background:transparent;position:relative;z-index:1}.stack-content{max-width:1200px;margin:0 auto}.stack-header{text-align:center;margin-bottom:var(--spacing-2xl)}.stack h2{font-size:2.5rem;font-weight:700;color:var(--ink);margin-bottom:var(--spacing-md);text-shadow:var(--halo)}.stack-description{font-size:1.125rem;color:var(--ink-soft);line-height:1.6;max-width:600px;margin:0 auto;text-shadow:var(--halo)}.tools-sections{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-2xl);margin-bottom:var(--spacing-xl);overflow-x:hidden;overflow-x:clip}.tools-section{min-width:0}.tools-section h3{font-size:1.5rem;font-weight:600;color:var(--ink);margin-bottom:var(--spacing-lg);text-align:center;text-shadow:var(--halo-tight)}.tools-grid{display:grid;gap:var(--spacing-md)}.tool-card{min-width:0;background:var(--glass);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:var(--spacing-lg);border-radius:var(--border-radius-md);box-shadow:var(--shadow);border:1px solid var(--line);transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease,background-color .35s ease;cursor:pointer}.tool-card:hover,.tool-card:focus-within{box-shadow:var(--shadow-lift);border-color:var(--accent-line);background:var(--glass-strong);transform:translateY(-4px)}.tool-icon{width:60px;height:60px;background:var(--icon-bg);border-radius:var(--border-radius-md);display:flex;align-items:center;justify-content:center;margin-bottom:var(--spacing-sm);color:var(--icon);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);border:1px solid var(--icon-line)}.tool-content h4{font-size:1.125rem;font-weight:600;color:var(--ink);margin:0 0 .75rem;text-shadow:var(--halo-tight)}.tool-content p{color:var(--ink-soft);font-size:.9rem;line-height:1.5;margin:0;text-shadow:var(--halo-soft)}@media(max-width:768px){.stack{padding:4rem 1rem}.tools-sections{grid-template-columns:1fr;gap:3rem}.tool-card{padding:1.5rem}.stack h2{font-size:2rem}}.contact{padding:6rem 2rem;background:transparent;position:relative;z-index:1}.contact-content{max-width:800px;margin:0 auto;text-align:center}.contact-header{margin-bottom:3rem}.contact h2{font-size:2.5rem;font-weight:700;color:var(--ink);margin-bottom:1.5rem;text-shadow:var(--halo)}.contact-description{font-size:1.125rem;color:var(--ink-soft);line-height:1.6;max-width:600px;margin:0 auto;text-shadow:var(--halo)}.contact .social-links{display:flex;justify-content:center;gap:1rem;margin-bottom:2.5rem}.contact .social-link{display:flex;align-items:center;gap:.375rem;padding:.5rem 1rem;background:var(--glass);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--line);border-radius:8px;text-decoration:none;color:var(--ink);font-weight:500;font-size:.875rem;min-height:44px;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease,background-color .35s ease,color .35s ease;box-shadow:var(--shadow);text-shadow:var(--halo-soft)}.contact .social-link:hover,.contact .social-link:focus-visible{box-shadow:var(--shadow-lift);border-color:var(--accent-line);background:var(--glass-strong);color:var(--ink);transform:translateY(-2px)}.contact .social-icon{width:20px;height:20px;border-radius:6px;display:flex;align-items:center;justify-content:center}.social-icon-github{color:var(--social-github)}.social-icon-linkedin{color:var(--social-linkedin)}.social-icon-x{color:var(--social-x)}.contact-cta{display:inline-flex;align-items:center;gap:.875rem;padding:.9rem 1.35rem .9rem .9rem;background:var(--cta-bg);color:var(--cta-fg);border-radius:16px;text-decoration:none;box-shadow:var(--shadow);border:1px solid transparent;transition:background-color .25s ease,color .25s ease,transform .25s ease,box-shadow .25s ease,border-color .25s ease}.contact-cta:hover,.contact-cta:focus-visible{background:var(--cta-bg-hover);color:var(--cta-fg);transform:translateY(-2px);box-shadow:var(--shadow-lift);border-color:var(--accent-line)}.contact-cta-icon{width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;background:var(--cta-icon);color:var(--cta-fg);flex-shrink:0}.contact-cta-copy{display:flex;flex-direction:column;align-items:flex-start;line-height:1.25;text-align:left}.contact-cta-label{font-size:1.05rem;font-weight:600;color:var(--cta-fg)}.contact-cta-address{font-size:.875rem;font-weight:500;color:var(--cta-muted)}@media(max-width:768px){.contact{padding:4rem 1rem}.contact .social-links{flex-wrap:wrap;gap:.75rem}.contact h2{font-size:2rem}.contact-cta{width:100%;max-width:360px;justify-content:center}}.curved-loop-jacket{display:flex;align-items:center;justify-content:center;width:100%;max-width:100%;margin:1rem 0;overflow:hidden;overflow:clip;contain:paint}.curved-loop-svg{width:100%;height:auto;aspect-ratio:1440 / 260;min-height:120px;overflow:hidden;display:block;font-size:2rem;fill:var(--ink-soft);user-select:none;-moz-user-select:none;-webkit-user-select:none;font-weight:700;text-transform:uppercase;line-height:1}.footer{background:transparent;border-top:1px solid var(--line);padding:var(--spacing-3xl) 0 var(--spacing-xl);margin-top:var(--spacing-3xl);position:relative;z-index:1}.footer .container{max-width:1200px;margin:0 auto;padding:0 var(--spacing-lg)}.footer-cta{text-align:center;margin-bottom:var(--spacing-3xl);padding-bottom:var(--spacing-3xl);border-bottom:1px solid var(--line)}.footer-cta h3{font-size:1.75rem;font-weight:600;color:var(--ink);margin:0 0 var(--spacing-lg) 0;max-width:600px;margin-left:auto;margin-right:auto;line-height:1.2;text-shadow:var(--halo)}.footer-contact-btn{display:inline-block;background:var(--glass);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:var(--ink);padding:1rem 2.5rem;border-radius:var(--border-radius-md);text-decoration:none;font-weight:500;font-size:1rem;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease,background-color .35s ease,color .35s ease;box-shadow:var(--shadow);border:1px solid var(--line);text-shadow:var(--halo-soft)}.footer-contact-btn:hover,.footer-contact-btn:focus-visible{background:var(--glass-strong);color:var(--ink);transform:translateY(-2px);box-shadow:var(--shadow-lift);border-color:var(--accent-line)}.footer-main{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-lg);padding-bottom:var(--spacing-lg);border-bottom:1px solid var(--line);flex-wrap:wrap;gap:var(--spacing-md)}.footer-copyright{color:var(--ink-soft);font-size:.875rem;text-shadow:var(--halo)}.footer-links{display:flex;gap:var(--spacing-lg)}.footer-links .social-link{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:10px;background:var(--glass);border:1px solid var(--line);color:var(--ink-soft);text-decoration:none;transition:background .2s ease,color .2s ease,transform .2s ease}.footer-links .social-link:hover,.footer-links .social-link:focus-visible{background:var(--glass-strong);color:var(--ink);border-color:var(--accent-line);transform:translateY(-2px);box-shadow:var(--shadow-lift)}.footer-credits{color:var(--ink-soft);font-size:.875rem;text-shadow:var(--halo)}.footer-note{color:var(--ink-soft);font-size:.8rem;line-height:1.5;text-align:center;max-width:36rem;margin:0 auto var(--spacing-lg);text-shadow:var(--halo)}.footer-template{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:var(--spacing-md)}@media(max-width:768px){.footer{padding:var(--spacing-2xl) 0 var(--spacing-lg);margin-top:var(--spacing-2xl)}.footer .container{padding:0 var(--spacing-md)}.footer-cta h3{font-size:1.5rem;line-height:1.3}.footer-main{flex-direction:column;text-align:center;gap:var(--spacing-sm)}.footer-links{justify-content:center;gap:var(--spacing-md)}.footer-template{flex-direction:column;text-align:center;gap:var(--spacing-sm)}.footer-contact-btn{padding:.875rem 2rem;font-size:.95rem}}@media(max-width:480px){.footer-cta h3{font-size:1.25rem}.footer-links{gap:var(--spacing-sm)}}.scroll-to-top{position:fixed;bottom:var(--spacing-lg);right:var(--spacing-lg);background:var(--glass-strong);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:var(--ink);border:1px solid var(--line-strong);width:50px;height:50px;border-radius:50%;display:flex;align-items:center;justify-content:center;padding:0;cursor:pointer;box-shadow:var(--shadow);z-index:999;transition:transform .25s ease,background-color .25s ease,border-color .25s ease,box-shadow .25s ease,color .25s ease;pointer-events:none}.scroll-to-top svg{color:var(--ink);fill:none;stroke:currentColor;stroke-width:2.5;opacity:1;z-index:1000;pointer-events:none}.scroll-to-top:hover,.scroll-to-top:focus-visible{background:var(--glass-solid);border-color:var(--accent-line);transform:translateY(-2px);box-shadow:var(--shadow-lift)}.scroll-to-top:hover svg{transform:translateY(-1px)}.scroll-to-top.visible{opacity:1;transform:scale(1);pointer-events:auto}@media(max-width:768px){.scroll-to-top{bottom:var(--spacing-md);right:var(--spacing-md);width:45px;height:45px}}
