:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#080a10;--bg-elevated:#0f121b;--surface:#ffffff06;--surface-hover:#ffffff0e;--border:#1e2230;--border-strong:#2c3243;--text:#f2f5fa;--text-muted:#9aa2b4;--text-subtle:#7d8598;--accent:#7c7fff;--accent-bright:#a2a4ff;--accent-dim:#7c7fff21;--accent-ring:#7c7fff66;--accent-solid:#5f61e8;--danger:#ff9a9a;--success:#86e0ac;--container:1160px;--gutter:24px;--nav-height:72px;--radius-sm:8px;--radius:12px;--radius-lg:18px;--radius-pill:999px;--font-sans:Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;--font-mono:"JetBrains Mono", "Fira Code", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--ease:cubic-bezier(.22, 1, .36, 1);--fast:.14s;--base:.24s;--shadow:0 24px 60px #0006;--card-shadow:0 18px 40px #00000052;--on-accent:#fff;--text-strong:#d8dde8;--bg-translucent:#080a10d9;--input-bg:#06080d99;--meter-track:#ffffff12;--meter-track-hover:#ffffff1c;--accent-glow:#7c7fff29;--accent-glow-strong:#7c7fff47;--success-glow:#86e0ac29;--success-glow-strong:#86e0ac73;--success-glow-off:#86e0ac00;--danger-glow:#ff9a9a29;--aurora-teal:#4fd1c5;--aurora-violet:#c084fc;--aurora-a:.34;--aurora-b:.16;--aurora-c:.14;--portrait-panel-bg:#141826;--portrait-panel-wash:#7c7fff17;--portrait-panel-wash-fade:#7c7fff08;--portrait-panel-border:#3a4157;--portrait-shadow:#00000061;--star-red:#f56;--star-blue:#7fb2ff;--star-bright:#ffd9de;--star-opacity:.7;--star-tile:320px;--star-shift-x:0px;--star-shift-y:0px;--web-line:#ffffff1f;--web-opacity:.6;--ambient-a:#7c7fff24;--ambient-b:#7c7fff0f}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f6f7fb;--bg-elevated:#fff;--surface:#10131c06;--surface-hover:#10131c0d;--border:#e2e5ee;--border-strong:#c6cbd9;--text:#0f121b;--text-muted:#545c70;--text-subtle:#5f6679;--text-strong:#3b4252;--accent:#4f52e8;--accent-bright:#4346d6;--accent-dim:#4f52e81a;--accent-ring:#4f52e859;--accent-solid:#4f52e8;--danger:#c0392b;--success:#1a7a41;--shadow:0 24px 60px #10131c1f;--card-shadow:0 18px 40px #10131c24;--on-accent:#fff;--bg-translucent:#f6f7fbd9;--input-bg:#fff;--meter-track:#10131c14;--meter-track-hover:#10131c21;--accent-glow:#4f52e824;--accent-glow-strong:#4f52e838;--success-glow:#1f8a4c2e;--success-glow-strong:#1f8a4c66;--success-glow-off:#1f8a4c00;--danger-glow:#c0392b29;--aurora-a:.1;--aurora-b:.06;--aurora-c:.05;--portrait-panel-bg:#fff;--portrait-panel-wash:#4f52e80d;--portrait-panel-wash-fade:#4f52e805;--portrait-panel-border:#bcc3d5;--portrait-shadow:#10131c1f;--star-red:#e62429;--star-blue:#2f6fd0;--star-bright:#ff5a6a;--star-opacity:.5;--web-line:#1656a033;--web-opacity:.5;--ambient-a:#4f52e814;--ambient-b:#4f52e80a}*,:before,:after{box-sizing:border-box;margin:0;padding:0}ul,ol{list-style:none}img,svg{max-width:100%;display:block}button,input,textarea{font:inherit;color:inherit}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--nav-height) + 12px);-webkit-text-size-adjust:100%}body{min-height:100vh;font-family:var(--font-sans);color:var(--text);background:radial-gradient(circle at 78% -5%, var(--ambient-a), transparent 32%), radial-gradient(circle at 12% 40%, var(--ambient-b), transparent 34%), var(--bg);-webkit-font-smoothing:antialiased;font-size:16px;line-height:1.6}h1,h2,h3{letter-spacing:-.02em;font-weight:700;line-height:1.1}a{color:inherit;transition:color var(--fast) var(--ease);text-decoration:none}::selection{background:var(--accent-solid);color:var(--on-accent)}:focus-visible{outline:2px solid var(--accent-bright);outline-offset:3px;border-radius:4px}.icon{flex-shrink:0;width:1.15em;height:1.15em}.visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:200;border-radius:var(--radius-sm);background:var(--accent);color:var(--on-accent);transition:transform var(--fast) var(--ease);padding:10px 18px;font-size:.9rem;font-weight:600;position:absolute;top:8px;left:8px;transform:translateY(-200%)}.skip-link:focus-visible{transform:translateY(0)}.btn{border-radius:var(--radius);cursor:pointer;white-space:nowrap;transition:transform var(--fast) var(--ease), background-color var(--fast) var(--ease), border-color var(--fast) var(--ease), box-shadow var(--fast) var(--ease), color var(--fast) var(--ease);border:1px solid #0000;justify-content:center;align-items:center;gap:8px;padding:13px 24px;font-size:.95rem;font-weight:600;display:inline-flex}.btn-primary{background:var(--accent-solid);color:var(--on-accent)}.btn-primary:hover{box-shadow:0 10px 30px var(--accent-glow-strong), 0 0 0 4px var(--accent-dim);transform:translateY(-2px)}.btn-secondary{border-color:var(--border-strong);background:var(--surface);color:var(--text-strong)}.btn-secondary:hover{border-color:var(--accent);color:var(--text);transform:translateY(-2px)}.btn-ghost{border-color:var(--border-strong);color:var(--text-strong)}.btn-ghost:hover{border-color:var(--accent);color:var(--text)}.btn:disabled{cursor:not-allowed;opacity:.6;box-shadow:none;transform:none}.section{width:min(var(--container), 100% - var(--gutter) * 2);margin-inline:auto;padding-block:104px}.section-heading{max-width:680px;margin-bottom:56px}.section-heading-center{text-align:center;margin-inline:auto}.section-label{color:var(--accent);letter-spacing:.18em;text-transform:uppercase;align-items:center;gap:10px;font-size:.78rem;font-weight:700;display:inline-flex}.section-label:before{content:"";opacity:.6;background:currentColor;width:28px;height:1px}.section-heading-center .section-label:before{display:none}.section-heading h2{margin-top:14px;font-size:clamp(1.9rem,3.8vw,3rem)}.section-heading p{color:var(--text-muted);margin-top:18px;line-height:1.75}.navbar{z-index:100;height:var(--nav-height);transition:background-color var(--base) var(--ease), border-color var(--base) var(--ease);border-bottom:1px solid #0000;position:sticky;top:0}.navbar-scrolled{border-bottom-color:var(--border);background:var(--bg-translucent);-webkit-backdrop-filter:blur(14px)saturate(140%);backdrop-filter:blur(14px)saturate(140%)}.navbar-inner{width:min(var(--container), 100% - var(--gutter) * 2);align-items:center;gap:20px;height:100%;margin-inline:auto;display:flex}.logo{letter-spacing:-.04em;font-size:1.4rem;font-weight:800}.logo span{color:var(--accent)}.nav-links{align-items:center;gap:6px;margin-inline:auto;display:flex}.nav-link{border-radius:var(--radius-sm);color:var(--text-muted);transition:color var(--fast) var(--ease), background-color var(--fast) var(--ease);padding:8px 14px;font-size:.94rem;font-weight:500;position:relative}.nav-link:hover{background:var(--surface-hover);color:var(--text)}.nav-link-active{color:var(--text)}.nav-cta{padding:10px 18px;font-size:.9rem}.menu-button{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);width:42px;height:42px;color:var(--text);cursor:pointer;transition:border-color var(--fast) var(--ease), background-color var(--fast) var(--ease);justify-content:center;align-items:center;display:none}.menu-button:hover{border-color:var(--accent);background:var(--surface-hover)}.menu-button .icon{width:20px;height:20px}.theme-toggle{border:1px solid var(--border);border-radius:var(--radius-sm);width:40px;height:40px;color:var(--text-muted);cursor:pointer;transition:color var(--fast) var(--ease), border-color var(--fast) var(--ease), background-color var(--fast) var(--ease), transform var(--fast) var(--ease);background:0 0;justify-content:center;align-items:center;margin-left:auto;display:inline-flex}.theme-toggle:hover{border-color:var(--accent);background:var(--surface-hover);color:var(--text);transform:rotate(-8deg)}.theme-toggle:disabled{cursor:default;opacity:.5}.theme-toggle-icon{width:20px;height:20px;display:block;position:relative}.theme-toggle .icon{width:20px;height:20px;position:absolute;inset:0}:root[data-theme=dark] .theme-icon-sun,:root:not([data-theme]) .theme-icon-sun{opacity:0;transform:rotate(-70deg)scale(.6)}:root[data-theme=dark] .theme-icon-moon,:root:not([data-theme]) .theme-icon-moon,:root[data-theme=light] .theme-icon-sun{opacity:1;transform:none}:root[data-theme=light] .theme-icon-moon{opacity:0;transform:rotate(70deg)scale(.6)}.theme-toggle .icon{transition:opacity var(--base) var(--ease), transform var(--base) var(--ease)}.scroll-progress{background:linear-gradient(90deg, var(--accent), var(--accent-bright));transform-origin:0;opacity:0;height:2px;transition:opacity var(--base) var(--ease);pointer-events:none;position:absolute;bottom:0;left:0;right:0;transform:scaleX(0)}.navbar-scrolled .scroll-progress{opacity:1}.hero-socials{flex-wrap:wrap;gap:8px;margin-top:30px;display:flex}.social-link{border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--surface);color:var(--text-muted);transition:color var(--fast) var(--ease), border-color var(--fast) var(--ease), background-color var(--fast) var(--ease);align-items:center;gap:8px;padding:8px 14px;font-size:.85rem;font-weight:500;display:inline-flex}.social-link:hover{border-color:var(--accent);background:var(--accent-dim);color:var(--text)}.social-link .icon{width:15px;height:15px}.hero{min-height:calc(100vh - var(--nav-height));grid-template-columns:1.12fr .88fr;align-items:center;gap:48px;padding-block:72px;display:grid}.hero-content,.hero-visual,.project-content{min-width:0}.hero-label{border:1px solid var(--border-strong);border-radius:var(--radius-pill);background:var(--surface);color:var(--text-muted);letter-spacing:.02em;text-transform:none;align-items:center;gap:10px;margin-bottom:20px;padding:6px 14px 6px 12px;font-size:.82rem;font-weight:500;display:inline-flex}.status-dot{background:var(--success);width:7px;height:7px;box-shadow:0 0 0 3px var(--success-glow);border-radius:50%}.hero h1{letter-spacing:-.035em;font-size:clamp(2.4rem,6vw,4.6rem)}.hero-greeting{letter-spacing:0;color:var(--text-subtle);margin-bottom:8px;font-size:.4em;font-weight:500;display:block}.hero-name{color:var(--accent);font-family:Plus Jakarta Sans,Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;font-weight:700}.hero-role{color:var(--text-strong);margin-top:20px;font-size:clamp(1.1rem,2.4vw,1.6rem);font-weight:500}.hero-role span{color:var(--text-subtle)}.hero-description{max-width:54ch;color:var(--text-muted);margin-top:22px;font-size:1.05rem;line-height:1.8}.hero-actions{flex-wrap:wrap;gap:12px;margin-top:34px;display:flex}.hero-tech{flex-wrap:wrap;gap:8px;margin-top:40px;display:flex}.hero-tech li{border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--surface);color:var(--text-subtle);font-size:.78rem;font-family:var(--font-mono);padding:6px 12px}.hero-visual{justify-content:center;align-items:center;display:flex;position:relative}.hero-portrait{z-index:1;flex:none;width:clamp(215px,24vw,350px);position:relative}.hero-portrait img{width:100%;height:auto;filter:drop-shadow(0 12px 20px var(--portrait-shadow));display:block}.hero-portrait-panel{z-index:0;border:1px solid var(--portrait-panel-border);border-radius:var(--radius-lg);background:var(--portrait-panel-bg);box-shadow:var(--shadow);pointer-events:none;position:absolute;inset:-24px;overflow:hidden}.hero-portrait-panel:before{content:"";background:linear-gradient(170deg, var(--portrait-panel-wash) 0%, var(--portrait-panel-wash-fade) 55%, transparent 100%);position:absolute;inset:-30% -10% -10%}.about-grid{grid-template-columns:1.15fr .85fr;align-items:start;gap:64px;display:grid}.about-narrative{max-width:64ch;color:var(--text-muted);gap:20px;line-height:1.85;display:grid}.about-narrative p:first-child{color:var(--text-strong);font-size:1.1rem}.about-aside{gap:28px;display:grid}.about-facts{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);gap:0;padding:8px 24px;display:grid}.about-fact{border-bottom:1px solid var(--border);gap:4px;padding:16px 0;display:grid}.about-fact:last-child{border-bottom:0}.about-fact dt{color:var(--text-subtle);letter-spacing:.1em;text-transform:uppercase;font-size:.75rem;font-weight:600}.about-fact dd{color:var(--text);font-size:.95rem}.about-principles{gap:20px;display:grid}.about-principle{border-left:2px solid var(--accent-dim);padding-left:18px}.about-principle h3{font-size:.98rem}.about-principle p{color:var(--text-muted);margin-top:5px;font-size:.9rem;line-height:1.7}.now-list{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px;display:grid}.now-item{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-elevated);grid-template-columns:auto 1fr;gap:16px;padding:20px;display:grid}.now-kind{border:1px solid var(--border);border-radius:var(--radius-pill);color:var(--text-muted);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;align-items:center;gap:6px;height:fit-content;padding:5px 10px;font-size:.7rem;font-weight:600;display:inline-flex}.now-kind .icon{width:13px;height:13px}.now-body h3{align-items:center;gap:8px;margin-bottom:4px;font-size:1rem;display:flex}.now-body p{color:var(--text-muted);font-size:.9rem;line-height:1.6}.now-link{color:var(--text-subtle);transition:color var(--fast) var(--ease);display:inline-flex}.now-link .icon{width:15px;height:15px}.now-body h3 .now-link:hover,.now-body h3 .now-link:focus-visible{color:var(--accent)}.recognition-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px;display:grid}.recognition-link{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-elevated);height:100%;transition:border-color var(--base) var(--ease), background-color var(--base) var(--ease), transform var(--base) var(--ease);flex-direction:column;gap:6px;padding:24px;display:flex}a.recognition-link:hover,a.recognition-link:focus-visible{border-color:var(--accent);background:var(--surface-hover);transform:translateY(-3px)}.recognition-top{justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px;display:flex}.recognition-kind{color:var(--accent);letter-spacing:.1em;text-transform:uppercase;font-size:.68rem;font-weight:700}.recognition-meta{border:1px solid var(--border);border-radius:var(--radius-pill);color:var(--text-subtle);white-space:nowrap;padding:3px 8px;font-size:.68rem}.recognition-link h3{font-size:1.02rem}.recognition-issuer{color:var(--text-subtle);font-size:.8rem}.recognition-link p{color:var(--text-muted);margin-top:4px;font-size:.88rem;line-height:1.6}.skills-groups{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px;display:grid}.skill-group{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);transition:border-color var(--base) var(--ease), transform var(--base) var(--ease);padding:28px}.skill-group:hover{border-color:var(--border-strong)}.skill-group-header{justify-content:space-between;align-items:baseline;gap:16px;display:flex}.skill-group-header h3{letter-spacing:-.01em;font-size:1.15rem}.skill-count{color:var(--text-subtle);font-family:var(--font-mono);font-size:.8rem}.skill-group-blurb{color:var(--text-subtle);margin-top:8px;font-size:.88rem;line-height:1.65}.skill-list{border-top:1px solid var(--border);gap:14px;margin-top:22px;padding-top:22px;display:grid}.skill-item{gap:3px;display:grid}.skill-name{font-size:.95rem;font-weight:600}.skill-detail{color:var(--text-subtle);font-size:.82rem;line-height:1.6}.timeline{gap:44px;padding-left:30px;display:grid;position:relative}.timeline:before{content:"";background:linear-gradient(to bottom, var(--accent), var(--border) 25%, var(--border) 75%, transparent);width:1px;position:absolute;top:10px;bottom:10px;left:5px}.timeline-item{gap:6px;display:grid;position:relative}.timeline-marker{border:2px solid var(--bg);background:var(--accent);width:11px;height:11px;box-shadow:0 0 0 3px var(--accent-glow);border-radius:50%;position:absolute;top:8px;left:-30px}.timeline-period{color:var(--accent-bright);font-family:var(--font-mono);letter-spacing:.04em;font-size:.78rem}.timeline-body h3{font-size:1.3rem}.timeline-organisation{color:var(--text-subtle);margin-top:2px;font-size:.88rem;font-weight:500}.timeline-summary{max-width:66ch;color:var(--text-muted);margin-top:12px;line-height:1.75}.timeline-achievements{gap:9px;margin-top:18px;display:grid}.timeline-achievements li{max-width:66ch;color:var(--text-muted);padding-left:22px;font-size:.93rem;line-height:1.7;position:relative}.timeline-achievements li:before{content:"";background:var(--accent);width:10px;height:1px;position:absolute;top:.72em;left:0}.projects-list{border-top:1px solid var(--border)}.project-card{border-bottom:1px solid var(--border);grid-template-columns:72px 1fr;gap:28px;padding:46px 0;display:grid}.project-number{color:var(--text-subtle);font-family:var(--font-mono);letter-spacing:.08em;padding-top:6px;font-size:.9rem}.project-heading{flex-wrap:wrap;align-items:baseline;gap:14px;display:flex}.project-heading h3{letter-spacing:-.025em;font-size:clamp(1.4rem,2.6vw,1.95rem)}.project-scope{border:1px solid var(--accent-ring);border-radius:var(--radius-pill);background:var(--accent-dim);color:var(--accent-bright);letter-spacing:.04em;padding:4px 10px;font-size:.72rem;font-weight:600}.project-summary{max-width:66ch;color:var(--text-muted);margin-top:14px;line-height:1.8}.project-highlights{gap:9px;margin-top:22px;display:grid}.project-highlights li{max-width:68ch;color:var(--text-muted);padding-left:22px;font-size:.93rem;line-height:1.7;position:relative}.project-highlights li:before{content:"";background:var(--accent);width:10px;height:1px;position:absolute;top:.72em;left:0}.project-tech{flex-wrap:wrap;gap:8px;margin-top:24px;display:flex}.project-tech li{border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--surface);color:var(--text-subtle);font-size:.75rem;font-family:var(--font-mono);padding:5px 11px}.project-links{flex-wrap:wrap;gap:10px;margin-top:26px;display:flex}.project-links a{border:1px solid var(--border-strong);border-radius:var(--radius-sm);color:var(--text-muted);transition:color var(--fast) var(--ease), border-color var(--fast) var(--ease), background-color var(--fast) var(--ease);align-items:center;gap:8px;padding:9px 16px;font-size:.87rem;font-weight:600;display:inline-flex}.project-links a:hover{border-color:var(--accent);background:var(--accent-dim);color:var(--text)}.project-links .icon{width:15px;height:15px}.contact{padding-block:120px}.contact-layout{border:1px solid var(--border);border-radius:calc(var(--radius-lg) + 6px);background:linear-gradient(150deg, var(--accent-dim), transparent 55%), var(--bg-elevated);grid-template-columns:.9fr 1.1fr;gap:60px;padding:56px;display:grid}.contact-info .section-heading{margin-bottom:40px}.contact-details{gap:18px;display:grid}.contact-detail{gap:3px;display:grid}.contact-detail-label{color:var(--text-subtle);letter-spacing:.12em;text-transform:uppercase;font-size:.74rem;font-weight:600}.contact-detail a,.contact-detail span:not(.contact-detail-label){color:var(--text);font-size:.95rem}.contact-detail a:hover{color:var(--accent-bright)}.contact-socials{border-top:1px solid var(--border);gap:12px;margin-top:34px;padding-top:30px;display:grid}.contact-socials .hero-socials{margin-top:0}.contact-form{gap:22px;display:grid}.form-group{gap:8px;display:grid}.form-group label{color:var(--text-strong);font-size:.86rem;font-weight:500}.form-group input,.form-group textarea{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--input-bg);width:100%;color:var(--text);transition:border-color var(--fast) var(--ease), box-shadow var(--fast) var(--ease);padding:14px 16px}.form-group textarea{resize:vertical;min-height:150px}.form-group input::placeholder,.form-group textarea::placeholder{color:var(--text-subtle)}.form-group input:focus,.form-group textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow);outline:none}.form-group input[aria-invalid=true],.form-group textarea[aria-invalid=true]{border-color:var(--danger)}.form-group input[aria-invalid=true]:focus,.form-group textarea[aria-invalid=true]:focus{box-shadow:0 0 0 3px var(--danger-glow)}.form-error{color:var(--danger);font-size:.84rem}.form-success{color:var(--success);font-size:.88rem;line-height:1.65}.form-status:empty{display:none}.submit-button{border:0;justify-self:start}.footer{border-top:1px solid var(--border);padding-block:48px}.footer-content{width:min(var(--container), 100% - var(--gutter) * 2);text-align:center;flex-wrap:wrap;justify-content:center;align-items:center;gap:14px 20px;margin-inline:auto;display:flex}.footer-brand{align-items:center;gap:10px;display:flex}.footer-brand .logo{font-size:1.5rem}.footer-blurb{max-width:26ch;color:var(--text-subtle);font-size:.82rem;line-height:1.6}.footer-nav ul{flex-wrap:wrap;justify-content:center;gap:8px 14px;display:flex}.footer-nav a{color:var(--text-muted);font-size:.85rem}.footer-meta{align-items:center;gap:12px;display:flex}.footer-socials{gap:8px;display:flex}.social-icon{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);width:34px;height:34px;color:var(--text-muted);transition:color var(--fast) var(--ease), border-color var(--fast) var(--ease), background-color var(--fast) var(--ease);justify-content:center;align-items:center;display:inline-flex}.social-icon:hover{border-color:var(--accent);background:var(--accent-dim);color:var(--text)}.social-icon .icon{width:16px;height:16px}.footer-copyright{color:var(--text-subtle);font-size:.78rem}.back-to-top{color:var(--text-muted);align-items:center;gap:8px;font-size:.8rem;font-weight:500;display:inline-flex}.back-to-top:hover{color:var(--text)}.back-to-top .icon{width:14px;height:14px}@media (width<=1024px){.hero,.about-grid{gap:44px}.contact-layout{gap:40px;padding:44px}}@media (width<=880px){:root{--nav-height:64px}.section{padding-block:76px}.nav-links{top:calc(var(--nav-height) - 4px);right:var(--gutter);left:var(--gutter);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elevated);box-shadow:var(--shadow);flex-direction:column;align-items:stretch;gap:2px;margin-inline:0;padding:10px;display:none;position:absolute}.nav-links-open{display:flex}.nav-link{padding:12px 14px}.nav-link-active{background:var(--accent-dim)}.nav-link-active:after,.nav-cta{display:none}.menu-button{margin-left:auto;display:inline-flex}.hero{grid-template-columns:1fr;gap:52px;min-height:0;padding-block:56px}.hero-portrait{width:min(70vw,330px)}.hero-visual{flex-direction:column;align-items:center}.about-grid,.contact-layout{grid-template-columns:1fr}.stat-row{grid-template-columns:1fr;gap:12px;margin-bottom:44px}.stat{padding:20px 22px}.contact-layout{gap:44px;padding:36px}}@media (width<=560px){.section{padding-block:60px}.hero h1{font-size:clamp(2.1rem,11vw,3rem)}.hero-actions .btn{width:100%}.skills-groups{grid-template-columns:1fr}.skill-group{padding:22px}.project-card{grid-template-columns:1fr;gap:10px;padding:34px 0}.project-number{padding-top:0}.timeline{padding-left:24px}.timeline-marker{left:-24px}.timeline:before{left:4px}.contact-layout{padding:26px}.submit-button{width:100%}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media print{.navbar,.hero-actions,.hero-socials,.skip-link,.contact-form-wrap,.footer-nav,.back-to-top,.scroll-progress,.aurora{display:none!important}body{color:#111;background:#fff}.section{padding-block:24px}.hero{min-height:0}.hero-content,.hero-portrait{opacity:1!important;translate:none!important}.tilt{transform:none!important}.tilt:after{display:none}.skill-meter-fill{transform:scaleX(1)!important}}:root{--reveal-shift:22px;--stagger-step:80ms;--stagger-max:8;--word-step:90ms;--hero-enter-base:60ms;--hero-enter-step:80ms}@keyframes reveal-rise{0%{opacity:0;transform:translateY(var(--reveal-shift))}to{opacity:1;transform:none}}@keyframes pulse{0%,to{box-shadow:0 0 0 0 var(--success-glow-strong)}50%{box-shadow:0 0 0 7px var(--success-glow-off)}}.hero-content>*{animation:reveal-rise .8s var(--ease) both;animation-delay:calc(var(--hero-enter-base) + var(--hero-enter-step) * 6)}.hero-content>:first-child{animation-delay:calc(var(--hero-enter-base) + var(--hero-enter-step) * 0)}.hero-content>:nth-child(2){animation-delay:calc(var(--hero-enter-base) + var(--hero-enter-step) * 1)}.hero-content>:nth-child(3){animation-delay:calc(var(--hero-enter-base) + var(--hero-enter-step) * 2)}.hero-content>:nth-child(4){animation-delay:calc(var(--hero-enter-base) + var(--hero-enter-step) * 3)}.hero-content>:nth-child(5){animation-delay:calc(var(--hero-enter-base) + var(--hero-enter-step) * 4)}.hero-content>:nth-child(6){animation-delay:calc(var(--hero-enter-base) + var(--hero-enter-step) * 5)}.hero-content>:nth-child(7){animation-delay:calc(var(--hero-enter-base) + var(--hero-enter-step) * 6)}.hero-visual{animation:reveal-rise .9s var(--ease) calc(var(--hero-enter-base) + var(--hero-enter-step) * 3.5) both}.status-dot{animation:pulse 2.6s var(--ease) infinite}.reveal,.stagger>*{transition:opacity .7s var(--ease), translate .7s var(--ease), transform var(--base) var(--ease), border-color var(--base) var(--ease), background-color var(--base) var(--ease), box-shadow var(--base) var(--ease)}.reveal[data-reveal-armed=hidden],.stagger[data-reveal-armed=hidden]>*{opacity:0;translate:0 var(--reveal-shift)}.stagger[data-reveal-armed=hidden]>:first-child{transition-delay:calc(var(--stagger-step) * 0)}.stagger[data-reveal-armed=hidden]>:nth-child(2){transition-delay:calc(var(--stagger-step) * 1)}.stagger[data-reveal-armed=hidden]>:nth-child(3){transition-delay:calc(var(--stagger-step) * 2)}.stagger[data-reveal-armed=hidden]>:nth-child(4){transition-delay:calc(var(--stagger-step) * 3)}.stagger[data-reveal-armed=hidden]>:nth-child(5){transition-delay:calc(var(--stagger-step) * 4)}.stagger[data-reveal-armed=hidden]>:nth-child(6){transition-delay:calc(var(--stagger-step) * 5)}.stagger[data-reveal-armed=hidden]>:nth-child(7){transition-delay:calc(var(--stagger-step) * 6)}.stagger[data-reveal-armed=hidden]>:nth-child(n+8){transition-delay:calc(var(--stagger-step) * 7)}.nav-link:after{content:"";border-radius:var(--radius-pill);background:var(--accent);transform-origin:0;height:2px;transition:transform var(--base) var(--ease);position:absolute;bottom:3px;left:14px;right:14px;transform:scaleX(0)}.nav-link:hover:after,.nav-link-active:after{transform:scaleX(1)}.footer-nav a{position:relative}.footer-nav a:after{content:"";border-radius:var(--radius-pill);background:var(--accent);transform-origin:50%;height:2px;transition:transform var(--base) var(--ease);position:absolute;bottom:-3px;left:0;right:0;transform:scaleX(0)}.footer-nav a:hover:after{transform:scaleX(1)}.skill-group,.project-card{position:relative}.tilt{--tilt-rx:0deg;--tilt-ry:0deg;--tilt-lift:0px;--glow-x:50%;--glow-y:0%;transform:perspective(1000px) rotateX(var(--tilt-rx)) rotateY(var(--tilt-ry)) translateY(var(--tilt-lift))}.tilt:hover{--tilt-lift:-5px}.tilt:after{content:"";border-radius:inherit;background:radial-gradient(460px circle at var(--glow-x) var(--glow-y), var(--accent-dim), transparent 62%);opacity:0;transition:opacity var(--base) var(--ease);pointer-events:none;position:absolute;inset:0}.tilt:hover:after{opacity:1}.tilt:hover{border-color:var(--border-strong);box-shadow:var(--card-shadow)}.project-card:before{content:"";border-radius:var(--radius-pill);background:linear-gradient(to bottom, var(--accent), var(--accent-bright));transform-origin:top;width:2px;transition:transform var(--base) var(--ease);position:absolute;top:40px;bottom:40px;left:0;transform:scaleY(0)}.project-card:hover:before{transform:scaleY(1)}.project-links a:hover .icon{transform:translate(1px,-1px)}.project-links .icon{transition:transform var(--fast) var(--ease)}.social-link:hover .icon{transform:scale(1.12)}.social-link .icon{transition:transform var(--fast) var(--ease)}.timeline-item{transition:opacity var(--base) var(--ease)}.timeline-item:hover .timeline-marker{background:var(--accent-bright);transform:scale(1.25)}.timeline-marker{transition:transform var(--base) var(--ease), background-color var(--base) var(--ease)}.skill-item-head{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.skill-level{color:var(--text-subtle);font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:.75rem}.skill-meter{border-radius:var(--radius-pill);background:var(--meter-track);height:4px;margin-top:8px;display:block;overflow:hidden}.skill-meter-fill{width:var(--level,0%);border-radius:inherit;background:linear-gradient(90deg, var(--accent), var(--accent-bright));transform-origin:0;height:100%;transition:transform .9s var(--ease) .18s;display:block;transform:scaleX(1)}.stagger[data-reveal-armed=hidden] .skill-meter-fill{transform:scaleX(0)}.skill-group:hover .skill-meter{background:var(--meter-track-hover)}.stat-row{grid-template-columns:repeat(3,1fr);gap:18px;margin-bottom:52px;display:grid}.stat{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);padding:24px 26px}.stat-value{color:var(--text);font-family:var(--font-mono);letter-spacing:-.03em;font-variant-numeric:tabular-nums;align-items:baseline;gap:2px;font-size:clamp(2rem,4vw,2.6rem);font-weight:600;line-height:1.1;display:flex}.stat-suffix{color:var(--accent-bright);font-size:.6em}.stat-label{color:var(--text-subtle);margin-top:8px;font-size:.85rem;display:block}.aurora{z-index:-1;pointer-events:none;position:fixed;inset:0;overflow:hidden}.aurora-blob{filter:blur(90px);opacity:var(--aurora-a);will-change:transform;border-radius:50%;position:absolute}.aurora-blob-a{background:radial-gradient(circle, var(--accent) 0%, transparent 68%);width:52vw;height:52vh;opacity:var(--aurora-a);animation:34s ease-in-out infinite alternate aurora-drift-a;top:-18vh;left:-8vw}.aurora-blob-b{background:radial-gradient(circle, var(--aurora-teal) 0%, transparent 66%);width:58vw;height:58vh;opacity:var(--aurora-b);animation:46s ease-in-out infinite alternate aurora-drift-b;top:24vh;right:-14vw}.aurora-blob-c{background:radial-gradient(circle, var(--aurora-violet) 0%, transparent 68%);width:62vw;height:62vh;opacity:var(--aurora-c);animation:58s ease-in-out infinite alternate aurora-drift-c;bottom:-22vh;left:22vw}@keyframes aurora-drift-a{0%{transform:translate(0,0)scale(1)}to{transform:translate(9vw,7vh)scale(1.16)}}@keyframes aurora-drift-b{0%{transform:translate(0,0)scale(1.08)}to{transform:translate(-11vw,10vh)scale(1)}}@keyframes aurora-drift-c{0%{transform:translate(0,0)scale(1)}to{transform:translate(7vw,-9vh)scale(1.2)}}.starfield{--drift-x:9%;--drift-y:6%;background-image:radial-gradient(1.3px 1.3px at 18px 26px, var(--star-blue) 50%, transparent 51%), radial-gradient(1.1px 1.1px at 86px 54px, var(--star-blue) 50%, transparent 51%), radial-gradient(1.5px 1.5px at 150px 18px, var(--star-red) 50%, transparent 51%), radial-gradient(1.2px 1.2px at 244px 72px, var(--star-blue) 50%, transparent 51%), radial-gradient(1.4px 1.4px at 300px 140px, var(--star-red) 50%, transparent 51%), radial-gradient(1px 1px at 44px 168px, var(--star-blue) 50%, transparent 51%), radial-gradient(1.6px 1.6px at 120px 214px, var(--star-bright) 50%, transparent 51%), radial-gradient(1.2px 1.2px at 206px 180px, var(--star-blue) 50%, transparent 51%), radial-gradient(1.3px 1.3px at 282px 262px, var(--star-red) 50%, transparent 51%), radial-gradient(1.1px 1.1px at 160px 300px, var(--star-blue) 50%, transparent 51%), radial-gradient(1.1px 1.1px at 62px 110px, var(--star-blue) 50%, transparent 51%), radial-gradient(1.4px 1.4px at 196px 96px, var(--star-red) 50%, transparent 51%), radial-gradient(1.2px 1.2px at 256px 196px, var(--star-blue) 50%, transparent 51%), radial-gradient(1.3px 1.3px at 96px 268px, var(--star-red) 50%, transparent 51%);background-size:var(--star-tile) var(--star-tile);background-position:var(--star-shift-x) var(--star-shift-y);opacity:var(--star-opacity);will-change:translate;animation:78s linear -18s infinite star-drift-orbit;display:block;position:absolute;inset:-20%}.starfield:before{--drift-x:6%;--drift-y:9%;content:"";background-image:radial-gradient(1.5px 1.5px at 60px 90px, var(--star-red) 50%, transparent 51%), radial-gradient(1.2px 1.2px at 250px 40px, var(--star-red) 50%, transparent 51%), radial-gradient(1.3px 1.3px at 410px 150px, var(--star-bright) 50%, transparent 51%), radial-gradient(1.6px 1.6px at 140px 300px, var(--star-red) 50%, transparent 51%), radial-gradient(1.2px 1.2px at 330px 340px, var(--star-bright) 50%, transparent 51%), radial-gradient(1.4px 1.4px at 30px 410px, var(--star-red) 50%, transparent 51%), radial-gradient(1.1px 1.1px at 250px 440px, var(--star-bright) 50%, transparent 51%), radial-gradient(1.2px 1.2px at 180px 190px, var(--star-red) 50%, transparent 51%), radial-gradient(1.1px 1.1px at 400px 270px, var(--star-bright) 50%, transparent 51%);background-size:calc(var(--star-tile) * 1.46875) calc(var(--star-tile) * 1.46875);background-position:var(--star-shift-x) var(--star-shift-y);will-change:translate, opacity;animation:112s linear -47s infinite star-drift-orbit,4.3s ease-in-out infinite star-blink-a;position:absolute;inset:0}.starfield:after{--drift-x:8%;--drift-y:7%;content:"";background-image:radial-gradient(1.7px 1.7px at 120px 80px, var(--star-blue) 50%, transparent 51%), radial-gradient(1.4px 1.4px at 420px 60px, var(--star-blue) 50%, transparent 51%), radial-gradient(1.5px 1.5px at 300px 240px, var(--star-bright) 50%, transparent 51%), radial-gradient(1.3px 1.3px at 560px 200px, var(--star-blue) 50%, transparent 51%), radial-gradient(1.6px 1.6px at 80px 380px, var(--star-blue) 50%, transparent 51%), radial-gradient(1.4px 1.4px at 400px 470px, var(--star-bright) 50%, transparent 51%), radial-gradient(1.5px 1.5px at 200px 560px, var(--star-blue) 50%, transparent 51%), radial-gradient(1.2px 1.2px at 520px 580px, var(--star-bright) 50%, transparent 51%), radial-gradient(1.3px 1.3px at 240px 150px, var(--star-blue) 50%, transparent 51%), radial-gradient(1.2px 1.2px at 480px 340px, var(--star-bright) 50%, transparent 51%);background-size:calc(var(--star-tile) * 1.90625) calc(var(--star-tile) * 1.90625);background-position:var(--star-shift-x) var(--star-shift-y);will-change:translate, opacity;animation:58s linear -11s infinite star-drift-orbit,6.7s ease-in-out infinite star-blink-b;position:absolute;inset:0}.starfield-near{--drift-x:5%;--drift-y:8%;background-image:radial-gradient(1px 1px at 34px 62px, var(--star-bright) 50%, transparent 51%), radial-gradient(.9px .9px at 188px 24px, var(--star-blue) 50%, transparent 51%), radial-gradient(1.1px 1.1px at 352px 128px, var(--star-bright) 50%, transparent 51%), radial-gradient(.9px .9px at 96px 296px, var(--star-blue) 50%, transparent 51%), radial-gradient(1px 1px at 470px 250px, var(--star-bright) 50%, transparent 51%), radial-gradient(.9px .9px at 268px 402px, var(--star-blue) 50%, transparent 51%), radial-gradient(.9px .9px at 600px 120px, var(--star-blue) 50%, transparent 51%), radial-gradient(1px 1px at 610px 520px, var(--star-bright) 50%, transparent 51%);background-size:calc(var(--star-tile) * 2.5625) calc(var(--star-tile) * 2.5625);opacity:calc(var(--star-opacity) * .72);will-change:translate;animation:40s linear -26s infinite star-drift-orbit;display:block;position:absolute;inset:-20%}.starfield,.starfield-near{-webkit-mask-image:linear-gradient(to bottom, transparent 0, transparent 14.2857%, #000 calc(14.2857% + var(--nav-height)), #000 100%);-webkit-mask-image:linear-gradient(to bottom, transparent 0, transparent 14.2857%, #000 calc(14.2857% + var(--nav-height)), #000 100%);mask-image:linear-gradient(to bottom, transparent 0, transparent 14.2857%, #000 calc(14.2857% + var(--nav-height)), #000 100%)}.spider-web{background-image:repeating-conic-gradient(from 0deg at 50% 50%, var(--web-line) 0deg .35deg, transparent .35deg 22.5deg), repeating-radial-gradient(circle at 50% 50%, var(--web-line) 0 1px, transparent 1px 24px), radial-gradient(circle, var(--web-line) .9px, transparent 1.3px);width:62vmin;height:62vmin;opacity:var(--web-opacity);will-change:translate, rotate, opacity;background-size:100% 100%,100% 100%,12px 12px;animation:46s ease-in-out infinite alternate web-drift,8.5s ease-in-out infinite alternate web-pulse;position:absolute;top:-16vmin;right:-16vmin;-webkit-mask-image:radial-gradient(circle,#000 24%,#0000 68%);mask-image:radial-gradient(circle,#000 24%,#0000 68%)}.spider-web:after{content:"";background:radial-gradient(circle at 50% 50%, transparent 0 44%, var(--web-line) 46%, transparent 49%);opacity:0;will-change:scale, opacity;animation:spider-sense 14s var(--ease) infinite;border-radius:50%;position:absolute;inset:0}@keyframes web-drift{0%{translate:0;rotate:0deg}to{translate:-2vmin 1.5vmin;rotate:1.6deg}}@keyframes web-pulse{0%{opacity:calc(var(--web-opacity) * .7)}to{opacity:var(--web-opacity)}}@keyframes spider-sense{0%,8%{opacity:0;scale:.18}22%{opacity:calc(var(--web-opacity) * 1.6)}60%,to{opacity:0;scale:1.5}}.shooting-star{border-radius:var(--radius-pill);background:linear-gradient(90deg, transparent, var(--star-blue) 45%, var(--star-red));opacity:0;will-change:translate, opacity;width:150px;height:2px;position:absolute;left:0}.shooting-star-a{animation:shooting-star 11s var(--ease) infinite;top:8vh;rotate:16deg}.shooting-star-b{width:120px;animation:shooting-star-b 22s var(--ease) infinite;top:52vh;rotate:164deg}@keyframes star-drift-orbit{0%{translate:var(--drift-x) 0}8.333%{translate:calc(var(--drift-x) * .866) calc(var(--drift-y) * .5)}16.667%{translate:calc(var(--drift-x) * .5) calc(var(--drift-y) * .866)}25%{translate:0 var(--drift-y)}33.333%{translate:calc(var(--drift-x) * -.5) calc(var(--drift-y) * .866)}41.667%{translate:calc(var(--drift-x) * -.866) calc(var(--drift-y) * .5)}50%{translate:calc(var(--drift-x) * -1) 0}58.333%{translate:calc(var(--drift-x) * -.866) calc(var(--drift-y) * -.5)}66.667%{translate:calc(var(--drift-x) * -.5) calc(var(--drift-y) * -.866)}75%{translate:0 calc(var(--drift-y) * -1)}83.333%{translate:calc(var(--drift-x) * .5) calc(var(--drift-y) * -.866)}91.667%{translate:calc(var(--drift-x) * .866) calc(var(--drift-y) * -.5)}to{translate:var(--drift-x) 0}}@keyframes star-blink-a{0%,62%,to{opacity:.12}74%{opacity:1}}@keyframes star-blink-b{0%,48%,to{opacity:.18}62%{opacity:.95}}@keyframes shooting-star{0%,74%{opacity:0;translate:-20vw}76%{opacity:.85}90%{opacity:0;translate:120vw 52vh}to{opacity:0;translate:120vw 52vh}}@keyframes shooting-star-b{0%,62%{opacity:0;translate:120vw}63.5%{opacity:.7}71%{opacity:0;translate:-10vw 46vh}to{opacity:0;translate:-10vw 46vh}}.hero-content{translate:0 var(--parallax-y,0px);opacity:calc(1 - var(--parallax-fade,0) * .75)}.hero-visual{translate:0 var(--parallax-y,0px)}.hero-portrait{opacity:calc(1 - var(--parallax-fade,0) * .75)}.word{animation:word-rise .7s var(--ease) both;animation-delay:calc(var(--word-delay,0s) + var(--i,0) * var(--word-step));display:inline-block}@keyframes word-rise{0%{opacity:0;filter:blur(6px);translate:0 .5em}to{opacity:1;filter:blur();translate:0}}.magnetic{translate:var(--magnetic-x,0px) var(--magnetic-y,0px);transition:translate var(--base) var(--ease), transform var(--base) var(--ease)}.hero-marquee{margin-top:34px;position:relative;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000,#000 12% 88%,#0000);mask-image:linear-gradient(90deg,#0000,#000 12% 88%,#0000)}.hero-marquee-track{width:max-content;animation:marquee-slide calc(var(--marquee-count,6) * 3.4s) linear infinite;display:flex}.hero-marquee-track .hero-tech{flex:none}@keyframes marquee-slide{0%{transform:translate(0,0)}to{transform:translate(-50%)}}.copy-email{border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--surface);color:var(--text-muted);cursor:pointer;transition:color var(--fast) var(--ease), border-color var(--fast) var(--ease), background-color var(--fast) var(--ease), transform var(--fast) var(--ease);align-items:center;gap:8px;margin-top:10px;padding:7px 12px;font-size:.78rem;font-weight:600;display:inline-flex}.copy-email:hover{border-color:var(--accent);background:var(--surface-hover);color:var(--text);transform:translateY(-1px)}.copy-email-icon{width:16px;height:16px;display:block;position:relative}.copy-email .icon{width:16px;height:16px;transition:opacity var(--fast) var(--ease), transform var(--fast) var(--ease);position:absolute;inset:0}.copy-icon-mail{opacity:1;transform:none}.copy-icon-check,.copy-icon-fail,.copy-email[data-status=copied] .copy-icon-mail,.copy-email[data-status=failed] .copy-icon-mail{opacity:0;transform:scale(.5)}.copy-email[data-status=copied] .copy-icon-check,.copy-email[data-status=failed] .copy-icon-fail{opacity:1;transform:none}.copy-email[data-status=copied]{color:var(--success)}.aurora[data-backdrop=classic]{--star-red:#ffd9de;--star-blue:#cfe0ff;--star-bright:#fff}.aurora[data-backdrop=classic] .spider-web,.aurora[data-backdrop=web-only] .starfield,.aurora[data-backdrop=web-only] .shooting-star,.aurora[data-backdrop=none]>*{display:none}.copy-email[data-status=failed]{border-color:var(--danger);color:var(--danger)}@media (prefers-reduced-motion:reduce){.hero-content>*,.hero-visual,.status-dot,.aurora-blob,.spider-web,.spider-web:after,.starfield,.starfield:before,.starfield:after,.starfield-near,.shooting-star,.word,.hero-marquee-track{animation:none!important}.reveal,.stagger>*{transition-duration:.01ms!important;transition-delay:0s!important}.scroll-progress{display:none}.skill-meter-fill{transition:none!important}.hero-content,.hero-visual{translate:none!important}.hero-content,.hero-portrait{opacity:1!important}.tilt,.magnetic{transform:translate(0,0)!important}.tilt:hover{--tilt-lift:0px!important}.tilt:after{display:none}}
