@layer tokens{:root{--ink-900:#08090a;--ink-850:#0b0c0d;--ink-800:#101213;--ink-700:#1c2022;--fg:#f2f4f4;--fg-muted:#a3a8a9;--fg-faint:#7c8183;--line:#f2f4f417;--line-faint:#f2f4f409;--line-strong:#f2f4f42b;--acid:#c6f24e;--acid-dim:color-mix(in oklab, var(--acid) 38%, transparent);--acid-wash:color-mix(in oklab, var(--acid) 9%, transparent);--on-acid:#0a0d05;--cat-work:#c6f24e;--cat-education:#93b1f0;--cat-certification:#e3a463;--font-display:"Archivo", ui-sans-serif, system-ui, "Segoe UI", Helvetica, Arial, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--step--2:.6875rem;--step--1:.8125rem;--step-0:clamp(.9375rem, .9rem + .2vw, 1rem);--step-1:clamp(1.0625rem, 1rem + .3vw, 1.1875rem);--step-2:clamp(1.25rem, 1.1rem + .6vw, 1.5rem);--step-4:clamp(2.125rem, 1.5rem + 3vw, 3.5rem);--step-5:clamp(2.875rem, 9vw, 20rem);--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:24px;--s-6:32px;--s-7:48px;--s-8:64px;--s-9:96px;--r-1:2px;--content-max:100%;--gutter:0px;--overlay-pad:clamp(0px, 2vw, 32px);--nav-h:60px;--section-pad:clamp(56px, 9vh, 128px);--screen-min:min(100svh, 1500px);--dur-1:.14s;--dur-2:.24s;--dur-3:.42s;--ease-out:cubic-bezier(.2, .8, .25, 1);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (width>=900px){:root{--nav-h:68px}}@media (orientation:portrait){:root{--screen-min:100svh}}@media (orientation:portrait) and (height>=900px){:root{--step-5:clamp(2.875rem, max(9vw, 6.5vh), 20rem)}}}@layer reset{*,:before,:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--nav-h) + var(--s-5))}img,svg,video,canvas{max-width:100%;display:block}img,video{height:auto}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:0;padding:0}ul,ol,dl,dd{margin:0;padding:0}li{list-style:none}a{color:inherit;text-decoration:none}}@layer base{body{background:var(--ink-900);min-height:100svh;color:var(--fg);font-family:var(--font-display);font-size:var(--step-0);font-synthesis-weight:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;counter-reset:section;margin:0;font-weight:400;line-height:1.6;overflow-x:hidden}h1,h2,h3,h4{font-family:var(--font-display);letter-spacing:-.035em;text-wrap:balance;font-weight:600;font-stretch:88%;line-height:1.04}p{text-wrap:pretty}::selection{background:var(--acid);color:var(--on-acid)}*{scrollbar-width:thin;scrollbar-color:var(--ink-700) transparent}html{scrollbar-width:none}html::-webkit-scrollbar{width:0;height:0}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--ink-700);border:2px solid var(--ink-900);border-radius:99px}::-webkit-scrollbar-thumb:hover{background:var(--line-strong)}:focus-visible{outline:2px solid var(--acid);outline-offset:2px;box-shadow:0 0 0 4px var(--ink-900);border-radius:var(--r-1)}.skip-link{top:var(--s-3);left:var(--s-3);z-index:3000;padding:var(--s-3) var(--s-4);background:var(--acid);color:var(--on-acid);font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.04em;transition:transform var(--dur-2) var(--ease-out);position:fixed;transform:translateY(-250%)}.skip-link:focus-visible{transform:translateY(0)}}@layer field{.field{z-index:0;pointer-events:none;contain:strict;position:fixed;inset:0}.field:before{content:"";width:min(100%, var(--content-max));padding-inline:var(--gutter);background-origin:content-box;background-clip:content-box;background-image:linear-gradient(to left, var(--line-faint) 0 1px, transparent 1px), repeating-linear-gradient(to right, var(--line-faint) 0 1px, transparent 1px calc(100% / 12));margin-inline:auto;position:absolute;inset:0}@media (width<=767px){.field:before{background-image:repeating-linear-gradient(to right, var(--line-faint) 0 1px, transparent 1px calc(100% / 4))}}.field:after{content:"";opacity:.04;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)'/%3E%3C/svg%3E");position:absolute;inset:-50%}}@layer layout{.main-container{z-index:1;transition:opacity var(--dur-3) var(--ease-out), visibility var(--dur-3) var(--ease-out);position:relative}.shell{width:100%;max-width:var(--content-max);padding-inline:var(--gutter);margin-inline:auto}.hero-section{counter-increment:section}.content-section{counter-increment:section;padding-block:var(--section-pad);min-height:var(--screen-min);grid-template-rows:auto 1fr;display:grid;position:relative}.content-section>:last-child{min-height:0}.section-header{align-items:end;column-gap:var(--s-5);padding-bottom:var(--s-4);border-bottom:1px solid var(--line-strong);margin-bottom:var(--s-7);grid-template-columns:auto 1fr;display:grid}.section-title{font-size:var(--step-4);align-items:baseline;gap:.5ch;margin:0;display:flex}.section-title:before{content:counter(section, decimal-leading-zero);font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.1em;color:var(--acid);align-self:start;font-weight:500;font-stretch:100%;translate:0 .35em}.section-note{font-family:var(--font-mono);font-size:var(--step--2);letter-spacing:.14em;text-transform:uppercase;color:var(--fg-faint);grid-column:2;place-self:end;padding-bottom:.35em}@media (width<=599px){.section-header{row-gap:var(--s-2);grid-template-columns:1fr}.section-note{grid-column:1;justify-self:start}}.eyebrow{font-family:var(--font-mono);font-size:var(--step--2);letter-spacing:.16em;text-transform:uppercase;color:var(--fg-faint);font-weight:500}}@layer components{.nav-container{z-index:1000;height:var(--nav-h);background:color-mix(in oklab, var(--ink-900) 82%, transparent);-webkit-backdrop-filter:blur(14px)saturate(140%);backdrop-filter:blur(14px)saturate(140%);border-bottom:1px solid var(--line);transition:border-color var(--dur-2) var(--ease-out), background-color var(--dur-2) var(--ease-out);display:flex;position:fixed;inset:0 0 auto}.nav-inner{width:100%;max-width:var(--content-max);padding-inline:var(--gutter);justify-content:space-between;align-items:center;gap:var(--s-4);margin-inline:auto;display:flex}.nav-container.scrolled{border-bottom-color:var(--line-strong);background:color-mix(in oklab, var(--ink-900) 94%, transparent)}.nav-brand{align-items:center;gap:var(--s-2);min-height:44px;font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.02em;color:var(--fg);white-space:nowrap;font-weight:600;display:inline-flex}.brand-mark{background:var(--acid);flex:none;width:9px;height:9px}.brand-cursor{color:var(--acid);margin-left:-.15ch}.nav-menu{align-items:center;gap:var(--s-1);counter-reset:nav;margin-left:auto;display:flex}.nav-item{counter-increment:nav;min-height:44px;padding-inline:var(--s-3);font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.02em;color:var(--fg-muted);transition:color var(--dur-1) var(--ease-out);align-items:center;gap:.6ch;display:inline-flex}.nav-item:before{content:counter(nav, decimal-leading-zero);font-size:var(--step--2);color:var(--fg-faint);transition:color var(--dur-1) var(--ease-out)}.nav-item:hover,.nav-item.active{color:var(--fg)}.nav-item:hover:before,.nav-item.active:before{color:var(--acid)}.nav-toggle{width:44px;height:44px;margin-right:calc(var(--s-3) * -1);place-content:center;justify-items:end;gap:5px;display:none}.nav-toggle span{background:var(--fg);width:20px;height:1.5px;transition:transform var(--dur-2) var(--ease-out), opacity var(--dur-1) linear;display:block}.nav-toggle span:nth-child(2){width:13px}.hero-section{min-height:var(--screen-min);padding-block:calc(var(--nav-h) + var(--s-8)) var(--s-9);align-items:center;display:flex;position:relative}.hero-grid{width:100%;max-width:var(--content-max);padding-inline:var(--gutter);gap:var(--s-6);margin-inline:auto;display:grid}.hero-primary,.hero-secondary{gap:var(--s-5);align-content:start;display:grid}.hero-handle{align-items:center;gap:var(--s-3);display:flex}.hero-handle:after{content:"";background:var(--line-strong);flex:1;max-width:180px;height:1px}.hero-title{font-size:var(--step-5);letter-spacing:-.045em;margin-block:calc(var(--s-2) * -1) 0;font-weight:620;font-stretch:84%;line-height:.88}.hero-role{gap:var(--s-1);max-width:46ch;display:grid}.hero-role-title{font-size:var(--step-2);letter-spacing:-.02em;font-weight:500;font-stretch:92%;line-height:1.2}.hero-role-sub{font-family:var(--font-mono);font-size:var(--step--1);color:var(--fg-muted)}.hero-lead{max-width:68ch;color:var(--fg-muted);font-size:var(--step-0);padding-top:var(--s-4);border-top:1px solid var(--line);line-height:1.68}.terminal-line{max-width:100%;padding:var(--s-2) var(--s-4);background:var(--ink-850);border:1px solid var(--line);border-left:2px solid var(--acid);font-family:var(--font-mono);font-size:var(--step--1);color:var(--fg-muted);justify-self:start;align-items:center;gap:.75ch;display:inline-flex;overflow:hidden}.prompt{color:var(--acid);flex:none}.typed-text{color:var(--fg);white-space:nowrap}.cursor-blink{background:var(--acid);flex:none;width:.55ch;height:1.05em;animation:1.05s step-end infinite caret;display:inline-block}.social-links{gap:var(--s-1) var(--s-5);padding-top:var(--s-2);flex-wrap:wrap;display:flex}.social-link{min-height:44px;font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.02em;color:var(--fg-muted);transition:color var(--dur-1) var(--ease-out);align-items:center;gap:.5ch;display:inline-flex}.social-link svg{width:.95em;height:.95em;transition:translate var(--dur-2) var(--ease-out)}.social-link:hover{color:var(--acid)}.social-link:hover svg{translate:2px -2px}.scroll-arrow{bottom:var(--s-6);left:max(var(--gutter), calc(50% - var(--content-max) / 2 + var(--gutter)));align-items:center;gap:var(--s-3);min-height:44px;font-family:var(--font-mono);font-size:var(--step--2);letter-spacing:.16em;text-transform:uppercase;color:var(--fg-faint);transition:color var(--dur-1) var(--ease-out);display:inline-flex;position:absolute}.scroll-arrow:after{content:"";background:var(--line-strong);transform-origin:0;width:56px;height:1px;transition:scale var(--dur-2) var(--ease-out), background-color var(--dur-2) var(--ease-out)}.scroll-arrow:hover{color:var(--fg)}.scroll-arrow:hover:after{background:var(--acid);scale:1.45 1}.timeline-container{grid-template-rows:auto auto auto;align-content:center;min-height:0;display:grid;position:relative}.timeline-search{max-width:520px;margin-bottom:var(--s-4);position:relative}@media (width>=900px){.timeline-container{column-gap:var(--s-5);grid-template-rows:auto 1fr;grid-template-columns:minmax(0,1fr) auto}.timeline-search{grid-area:1/1;align-self:center;margin-bottom:0}.timeline-controls{grid-area:1/2;justify-content:flex-end;margin-bottom:0}.timeline-wrapper{grid-area:2/1/auto/-1}}.timeline-search svg{left:var(--s-3);width:15px;height:15px;color:var(--fg-faint);pointer-events:none;position:absolute;top:50%;translate:0 -50%}.timeline-search input{width:100%;min-height:44px;padding:var(--s-3) var(--s-3) var(--s-3) calc(var(--s-3) * 2 + 15px);background:var(--ink-850);border:1px solid var(--line);color:var(--fg);font-family:var(--font-mono);font-size:var(--step--1);transition:border-color var(--dur-1) var(--ease-out);border-radius:0}.timeline-search input::placeholder{color:var(--fg-faint)}.timeline-search input:focus{border-color:var(--acid);outline:none}.timeline-search:has(input:focus) svg{color:var(--acid)}.timeline-controls{justify-content:space-between;align-items:center;gap:var(--s-3) var(--s-4);margin-bottom:var(--s-6);flex-wrap:wrap;display:flex}.timeline-filters{gap:var(--s-2);flex-wrap:wrap;display:flex}.timeline-hint{font-family:var(--font-mono);font-size:var(--step--2);letter-spacing:.14em;text-transform:uppercase;color:var(--fg-faint);display:none}@media (width>=769px){.timeline-hint{display:block}}.filter-btn{min-height:44px;padding-inline:var(--s-4);border:1px solid var(--line);color:var(--fg-muted);font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.04em;transition:color var(--dur-1) var(--ease-out), border-color var(--dur-1) var(--ease-out), background-color var(--dur-1) var(--ease-out);background:0 0;align-items:center;gap:.6ch;display:inline-flex}.filter-btn svg{width:14px;height:14px;color:var(--fg-faint);transition:color var(--dur-1) var(--ease-out)}.filter-btn:hover{color:var(--fg);border-color:var(--line-strong)}.filter-btn.active{color:var(--on-acid);background:var(--acid);border-color:var(--acid)}.filter-btn.active svg{color:var(--on-acid)}.timeline-wrapper{padding-block:var(--s-6);min-height:0;position:relative}.timeline-track{position:relative}.timeline-line{z-index:1;background:var(--line-strong);position:absolute}.timeline-progress{z-index:2;background:var(--acid);transition:width var(--dur-2) linear, height var(--dur-2) linear;position:absolute}.timeline-items{z-index:3;position:relative}.timeline-item{cursor:pointer;position:relative}.timeline-dot{background:var(--fg-faint);z-index:4;pointer-events:none;outline:3px solid var(--ink-900);width:11px;height:11px;transition:scale var(--dur-2) var(--ease-out), background-color var(--dur-1) var(--ease-out);flex:none;place-items:center;display:grid;position:relative}.timeline-dot.work{background:var(--cat-work)}.timeline-dot.education{box-shadow:inset 0 0 0 2.5px var(--cat-education);background:0 0}.timeline-dot.certification{background:var(--cat-certification);rotate:45deg;scale:.92}.timeline-item:hover .timeline-dot,.timeline-item:focus-visible .timeline-dot{scale:1.45}.timeline-item:hover .timeline-dot.certification,.timeline-item:focus-visible .timeline-dot.certification{scale:1.3}.timeline-content{background:var(--ink-850);border:1px solid var(--line);border-top-width:2px;border-top-color:var(--line-strong);gap:var(--s-2);transition:border-color var(--dur-2) var(--ease-out), background-color var(--dur-2) var(--ease-out), translate var(--dur-2) var(--ease-out);flex-direction:column;display:flex;position:relative}.timeline-item[data-category=work] .timeline-content{border-top-color:var(--cat-work)}.timeline-item[data-category=education] .timeline-content{border-top-color:var(--cat-education)}.timeline-item[data-category=certification] .timeline-content{border-top-color:var(--cat-certification)}.timeline-item:hover .timeline-content,.timeline-item:focus-visible .timeline-content{background:var(--ink-800);border-inline-color:var(--line-strong);border-bottom-color:var(--line-strong);translate:0 -3px}.timeline-date{font-family:var(--font-mono);font-size:var(--step--2);letter-spacing:.1em;text-transform:uppercase;color:var(--fg-faint);font-variant-numeric:tabular-nums;font-weight:500}.timeline-content h3{font-size:var(--step-1);letter-spacing:-.02em;font-weight:560;font-stretch:92%;line-height:1.16}.timeline-content p{font-size:var(--step--1);color:var(--fg-muted);line-height:1.45}.timeline-tag{padding-top:var(--s-2);font-family:var(--font-mono);font-size:var(--step--2);letter-spacing:.14em;text-transform:uppercase;color:var(--fg-faint);margin-top:auto}.timeline-item[data-category=work] .timeline-tag{color:color-mix(in oklab, var(--cat-work) 72%, var(--fg-muted))}.timeline-item[data-category=education] .timeline-tag{color:color-mix(in oklab, var(--cat-education) 72%, var(--fg-muted))}.timeline-item[data-category=certification] .timeline-tag{color:color-mix(in oklab, var(--cat-certification) 72%, var(--fg-muted))}.timeline-empty{padding:var(--s-7) var(--s-4);font-family:var(--font-mono);font-size:var(--step--1);color:var(--fg-faint)}.showcase-grid{border-top:1px solid var(--line);border-left:1px solid var(--line);counter-reset:project;grid-template-columns:1fr;align-self:start;gap:0;display:grid}@media (width>=600px){.showcase-grid{grid-template-columns:repeat(2,1fr)}}@media (width>=900px){.showcase-grid{grid-template-columns:repeat(3,1fr)}}@media (width>=1280px){.showcase-grid{grid-template-columns:repeat(4,1fr)}}@media (width>=1900px){.showcase-grid{grid-template-columns:repeat(6,1fr)}}@media (orientation:portrait) and (width>=900px){.showcase-grid{grid-template-columns:repeat(3,1fr)}}.showcase-card{counter-increment:project;background:var(--ink-850);border-right:1px solid var(--line);border-bottom:1px solid var(--line);cursor:pointer;transition:background-color var(--dur-2) var(--ease-out);flex-direction:column;display:flex;position:relative;container-type:inline-size}.showcase-card:hover,.showcase-card:focus-visible{background:var(--ink-800)}.showcase-image{aspect-ratio:16/10;background:var(--ink-800);flex:none;position:relative;overflow:hidden}@container (width>=440px){.showcase-image{aspect-ratio:16/9}}.showcase-media{object-fit:cover;filter:grayscale()contrast(1.04)brightness(.82);width:100%;height:100%;transition:filter var(--dur-3) var(--ease-out), scale var(--dur-3) var(--ease-out);scale:1.01}.showcase-card:hover .showcase-media,.showcase-card:focus-visible .showcase-media{filter:none;scale:1.035}.showcase-overlay{background:linear-gradient(to top, color-mix(in oklab, var(--ink-900) 72%, transparent) 0%, transparent 58%);pointer-events:none;position:absolute;inset:0}.showcase-index{top:var(--s-3);left:var(--s-3);z-index:2;font-family:var(--font-mono);font-size:var(--step--2);letter-spacing:.1em;color:var(--fg);mix-blend-mode:difference;font-weight:500;position:absolute}.showcase-index:before{content:counter(project, decimal-leading-zero)}.showcase-content{gap:var(--s-2);padding:var(--s-4);border-top:1px solid var(--line);flex-direction:column;flex:none;display:flex}.showcase-title{font-size:var(--step-1);letter-spacing:-.02em;align-items:baseline;gap:.6ch;font-weight:560;font-stretch:92%;line-height:1.15;display:flex}.showcase-title a{color:inherit;text-decoration:none}.showcase-title:after{content:"";background:var(--acid);opacity:0;width:6px;height:6px;transition:opacity var(--dur-2) var(--ease-out), translate var(--dur-2) var(--ease-out);flex:none;translate:-4px}.showcase-title a{text-underline-offset:.22em;transition:text-decoration-color var(--dur-1) var(--ease-out);margin-block:-12px;padding-block:12px;text-decoration-color:#0000;display:inline-block}.showcase-card:hover .showcase-title a,.showcase-title a:focus-visible{text-decoration:underline;-webkit-text-decoration-color:var(--acid);text-decoration-color:var(--acid)}.showcase-card:hover .showcase-title:after,.showcase-card:focus-visible .showcase-title:after{opacity:1;translate:0}.tech-stack{font-family:var(--font-mono);font-size:var(--step--2);letter-spacing:.06em;color:var(--fg-faint);flex-wrap:wrap;gap:0 .75ch;margin-top:auto;display:flex}.tech-badge{white-space:nowrap;align-items:center;display:inline-flex}.tech-badge+.tech-badge:before{content:"/";color:var(--line-strong);margin-right:.75ch}@media (width<=599px){.showcase-card{grid-template-columns:minmax(132px,42%) minmax(0,1fr);display:grid}.showcase-image{aspect-ratio:auto;height:100%;min-height:156px}.showcase-content{padding:var(--s-4);border-top:0;border-left:1px solid var(--line);justify-content:center}.showcase-title{font-size:var(--step-1)}.tech-stack{margin-top:var(--s-2);font-size:var(--step--1);line-height:1.6}}.modal-overlay{z-index:2000;padding:var(--overlay-pad);background:color-mix(in oklab, var(--ink-900) 86%, transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);opacity:0;visibility:hidden;transition:opacity var(--dur-2) var(--ease-out), visibility 0s linear var(--dur-2);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-overlay.active{opacity:1;visibility:visible;transition:opacity var(--dur-2) var(--ease-out)}.modal-container{background:var(--ink-850);border:1px solid var(--line-strong);width:min(100%,860px);max-height:min(92svh,1100px);transition:translate var(--dur-3) var(--ease-out);flex-direction:column;display:flex;translate:0 10px;box-shadow:0 40px 120px -20px #000c}.modal-container:has(.modal-body--split){width:min(100%,1240px)}.modal-container:has(.modal-iframe){width:min(100%,1100px)}.modal-container.resume-modal{width:min(95vw,1800px);height:92svh;max-height:92svh}.resume-modal .modal-content{flex:1;min-height:0;padding:0;overflow:hidden}.resume-modal .modal-body,.resume-modal .modal-figure{height:100%;min-height:0}.resume-modal .modal-iframe{border:0;height:100%}.modal-overlay.active .modal-container{translate:0}.modal-header{justify-content:space-between;align-items:center;gap:var(--s-4);padding:var(--s-4) var(--s-4) var(--s-4) var(--s-5);border-bottom:1px solid var(--line);background:var(--ink-800);display:flex}.modal-title{font-size:var(--step-2);letter-spacing:-.025em;font-weight:580;font-stretch:90%;line-height:1.15}.modal-close{width:44px;height:44px;color:var(--fg-muted);border:1px solid var(--line);transition:color var(--dur-1) var(--ease-out), border-color var(--dur-1) var(--ease-out);flex:none;place-items:center;display:grid}.modal-close svg{width:17px;height:17px}.modal-close:hover{color:var(--acid);border-color:var(--acid-dim)}.modal-content{padding:var(--s-5) var(--s-5) var(--s-7);overscroll-behavior:contain;scrollbar-gutter:stable;overflow-y:auto}.modal-body{gap:var(--s-5);align-items:start;display:grid}.modal-figure{gap:var(--s-4);min-width:0;display:grid}.modal-text{min-width:0}.modal-text>:last-child{margin-bottom:0}@media (width>=900px){.modal-body--split{gap:var(--s-6);grid-template-columns:minmax(0,1.05fr) minmax(0,1fr)}.modal-body--split .modal-figure{position:sticky;top:0}}.modal-subtitle{font-size:var(--step-1);margin-bottom:var(--s-2);font-weight:500;font-stretch:94%}.modal-location{font-family:var(--font-mono);font-size:var(--step--2);letter-spacing:.1em;text-transform:uppercase;color:var(--fg-faint);margin-bottom:var(--s-5);align-items:center;gap:.6ch;display:flex}.modal-location svg{width:13px;height:13px}.modal-media{object-fit:contain;object-position:top;background:var(--ink-900);border:1px solid var(--line);width:100%;max-height:64svh}.modal-iframe{border:1px solid var(--line);width:100%;height:min(74svh,900px)}.modal-description{color:var(--fg-muted);margin-bottom:var(--s-5);max-width:72ch;line-height:1.68}.modal-details{font-family:var(--font-mono);font-size:var(--step--1);margin-bottom:var(--s-5);max-width:80ch;line-height:1.7}.modal-details .detail-heading{font-family:var(--font-display);font-size:var(--step-1);letter-spacing:-.02em;color:var(--fg);margin:var(--s-6) 0 var(--s-2);padding-top:var(--s-3);border-top:1px solid var(--line);font-weight:560;font-stretch:92%}.modal-details .detail-heading:first-child{border-top:0;margin-top:0;padding-top:0}.modal-details .detail-subheading{font-size:var(--step--2);letter-spacing:.14em;text-transform:uppercase;color:var(--acid);margin:var(--s-4) 0 var(--s-2);font-weight:500}.modal-details .detail-text,.modal-details .detail-line{color:var(--fg)}.modal-details .detail-bullet{color:var(--fg-muted)}.modal-awards{margin-bottom:var(--s-5);padding-top:var(--s-4);border-top:1px solid var(--line)}.modal-awards-title{font-family:var(--font-mono);font-size:var(--step--2);letter-spacing:.14em;text-transform:uppercase;color:var(--acid);margin-bottom:var(--s-3);align-items:center;gap:.7ch;font-weight:500;display:flex}.modal-awards-title svg{width:14px;height:14px}.modal-awards-list{gap:var(--s-2);display:grid}.modal-awards-list li{padding-left:var(--s-4);border-left:1px solid var(--line-strong);font-size:var(--step--1)}.award-description{color:var(--fg-faint)}.modal-links{gap:var(--s-2);flex-wrap:wrap;display:flex}.modal-link{min-height:44px;padding-inline:var(--s-4);border:1px solid var(--line-strong);font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.03em;transition:color var(--dur-1) var(--ease-out), background-color var(--dur-1) var(--ease-out), border-color var(--dur-1) var(--ease-out);align-items:center;gap:.7ch;display:inline-flex}.modal-link svg{width:14px;height:14px}.modal-link:first-child{background:var(--acid);border-color:var(--acid);color:var(--on-acid)}.modal-link:first-child:hover{background:color-mix(in oklab, var(--acid) 86%, white)}.modal-link:not(:first-child):hover{color:var(--acid);border-color:var(--acid-dim);background:var(--acid-wash)}.site-footer{border-top:1px solid var(--line);padding-block:var(--s-6)}.site-footer-inner{gap:var(--s-3) var(--s-5);font-family:var(--font-mono);font-size:var(--step--2);letter-spacing:.1em;text-transform:uppercase;color:var(--fg-faint);flex-wrap:wrap;justify-content:space-between;align-items:center;display:flex}.site-footer a{align-items:center;min-height:44px;display:inline-flex}.site-footer a:hover{color:var(--acid)}.loading-screen{z-index:9999;padding:var(--s-5);background:var(--ink-900);transition:opacity var(--dur-3) var(--ease-out), visibility var(--dur-3) var(--ease-out);place-content:center;display:grid;position:fixed;inset:0}.loading-screen:before{content:"";pointer-events:none;opacity:.7;background-image:linear-gradient(to bottom, transparent 49.95%, var(--line-faint) 50%, transparent 50.05%), repeating-linear-gradient(to right, var(--line-faint) 0 1px, transparent 1px calc(100% / 12));position:absolute;inset:0;-webkit-mask-image:linear-gradient(#0000,#000 20% 80%,#0000);mask-image:linear-gradient(#0000,#000 20% 80%,#0000)}.loading-screen.hidden{opacity:0;visibility:hidden;pointer-events:none}.loading-content{border-block:1px solid var(--line);gap:clamp(16px,1.5vw,28px);width:clamp(300px,44vw,760px);padding-block:clamp(24px,4vw,64px);display:grid;position:relative}.loading-head{align-items:end;gap:var(--s-5);grid-template-columns:minmax(0,1fr) auto;display:grid}.loading-kicker,.loading-index{font-family:var(--font-mono);font-size:var(--step--2);letter-spacing:.16em;text-transform:uppercase;color:var(--fg-faint)}.loading-kicker{margin-bottom:clamp(12px,1.2vw,20px)}.loading-logo{font-family:var(--font-display);letter-spacing:-.055em;align-items:center;gap:clamp(10px,1vw,16px);font-size:clamp(2.2rem,4.8vw,6rem);font-weight:650;font-stretch:78%;line-height:.9;display:flex}.loading-counter{font-family:var(--font-display);letter-spacing:-.08em;color:var(--fg);font-variant-numeric:tabular-nums;font-size:clamp(4.8rem,11vw,13rem);font-weight:300;font-stretch:72%;line-height:.68}.loading-logo:before{content:"";background:var(--acid);flex:none;width:clamp(10px,.8vw,16px);height:clamp(10px,.8vw,16px)}.loading-logo:after{content:"_";color:var(--acid);font-family:var(--font-mono);letter-spacing:0;align-self:flex-end;margin-left:-.12em;font-size:.34em;font-weight:600;animation:1.05s step-end infinite caret}.loading-bar{background:var(--line);height:clamp(3px,.3vw,5px);position:relative;overflow:hidden}.loading-bar:after{content:"";z-index:2;pointer-events:none;background:repeating-linear-gradient(to right, transparent 0 calc(10% - 1px), var(--ink-900) calc(10% - 1px) 10%);position:absolute;inset:0}.loading-progress{z-index:1;background:var(--acid);width:0;height:100%;transition:width var(--dur-2) linear;position:relative}.loading-footer{justify-content:space-between;align-items:center;gap:var(--s-4);display:flex}.loading-text{font-family:var(--font-mono);font-size:clamp(var(--step--2), .75vw, var(--step--1));letter-spacing:.16em;text-transform:uppercase;color:var(--fg-faint)}.loading-text:before{content:"> ";color:var(--acid)}@media (width<=480px){.loading-screen:before{background-image:linear-gradient(to bottom, transparent 49.95%, var(--line-faint) 50%, transparent 50.05%), repeating-linear-gradient(to right, var(--line-faint) 0 1px, transparent 1px calc(100% / 4))}.loading-content{width:100%}.loading-head{gap:var(--s-6);grid-template-columns:1fr}.loading-counter{grid-row:1;justify-self:end;font-size:clamp(5rem,28vw,7rem)}.loading-head>div{grid-row:2}}@media (width>=769px){.timeline-wrapper{scroll-snap-type:x proximity;cursor:grab;-webkit-user-select:none;user-select:none;scrollbar-width:none;-ms-overflow-style:none;overflow:auto hidden}.timeline-wrapper::-webkit-scrollbar{display:none}.timeline-wrapper:active{cursor:grabbing}.timeline-track{width:fit-content;min-width:100%;padding:var(--s-5) var(--gutter);align-items:flex-start;display:flex}.timeline-line{top:calc(var(--s-5) + 5px);height:1px;left:0;right:0}.timeline-progress{top:calc(var(--s-5) + 4px);width:var(--timeline-progress,0%);height:3px;left:0}.timeline-items{align-items:flex-start;gap:clamp(32px,4vw,72px);width:fit-content;min-width:100%;display:flex}.timeline-item{scroll-snap-align:center;flex-direction:column;flex:none;align-items:flex-start;width:312px;display:flex}.timeline-dot{margin-bottom:var(--s-5);margin-left:1px}.timeline-content{width:100%;min-height:clamp(176px,26vh,320px);padding:var(--s-4)}}@media (width<=768px){.timeline-wrapper{padding-block:var(--s-4);overflow:visible}.timeline-track{padding-inline:var(--gutter);display:block}.timeline-line{top:0;bottom:0;left:calc(var(--gutter) + 5px);width:1px}.timeline-progress{top:0;left:calc(var(--gutter) + 4px);width:3px;height:var(--timeline-progress,0%)}.timeline-items{gap:var(--s-5);display:grid}.timeline-item{padding-left:var(--s-6);display:block}.timeline-dot{left:0;top:var(--s-4);position:absolute}.timeline-content{padding:var(--s-4);min-height:0}}@media (width<=899px){.nav-toggle{display:grid}.nav-menu{inset:var(--nav-h) 0 auto;padding:var(--s-3) var(--gutter) var(--s-6);background:color-mix(in oklab, var(--ink-900) 97%, transparent);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-bottom:1px solid var(--line-strong);clip-path:inset(0 0 100%);visibility:hidden;transition:clip-path var(--dur-3) var(--ease-out), visibility 0s linear var(--dur-3);flex-direction:column;align-items:stretch;gap:0;position:fixed}.nav-menu.active{clip-path:inset(0);visibility:visible;transition:clip-path var(--dur-3) var(--ease-out)}.nav-item{min-height:52px;font-size:var(--step-0);border-bottom:1px solid var(--line);justify-content:flex-start;padding-inline:0}.nav-toggle.active span:first-child{transform:translateY(3.25px)rotate(45deg)}.nav-toggle.active span:nth-child(2){opacity:0}.nav-toggle.active span:nth-child(3){transform:translateY(-3.25px)rotate(-45deg)}}@media (width>=1100px){.hero-grid{grid-template-columns:repeat(12,1fr);align-items:end;column-gap:0}.hero-primary{grid-column:1/span 7}.hero-secondary{grid-column:9/span 4;padding-bottom:6px}.hero-lead{max-width:62ch}.hero-secondary .social-links{justify-content:start;gap:0 var(--s-5);grid-template-columns:repeat(3,auto);display:grid}}@media (orientation:portrait) and (height>=900px){.hero-grid{row-gap:clamp(var(--s-6), 4.5vh, 88px)}}@media (orientation:portrait) and (height>=900px) and (width>=1100px){.hero-grid{grid-template-columns:repeat(12,1fr)}.hero-primary{grid-area:1/1/auto/span 12}.hero-secondary{grid-area:2/7/auto/span 6;padding-bottom:0}}@media (width<=480px){.scroll-arrow{display:none}}@media (width<=719px){.modal-overlay{padding:0}.modal-container{border:0;width:100%;height:100svh;max-height:100svh}.modal-container.resume-modal{width:100%;height:100svh;max-height:100svh}.modal-header{padding:var(--s-3) var(--s-3) var(--s-3) var(--s-4)}.modal-content{padding:var(--s-4) var(--s-4) var(--s-8)}.modal-media{max-height:56svh}.modal-iframe{height:70svh}}@media (height<=620px){.hero-section{padding-block:calc(var(--nav-h) + var(--s-5)) var(--s-6)}.scroll-arrow{display:none}.modal-container{max-height:94svh}}}@layer motion{@keyframes caret{0%,49%{opacity:1}50%,to{opacity:0}}@keyframes rise{0%{opacity:0;translate:0 14px}to{opacity:1;translate:0}}.fade-in-up{opacity:0;transition:opacity var(--dur-3) var(--ease-out), translate var(--dur-3) var(--ease-out);translate:0 12px}.timeline-item.visible{animation:rise var(--dur-3) var(--ease-out) both;animation-delay:calc(min(var(--item-index,0), 8) * 55ms)}@supports (animation-timeline:view()){@media (prefers-reduced-motion:no-preference){.showcase-card{animation:rise var(--dur-3) var(--ease-out) both;animation-timeline:view();animation-range:entry 5% cover 18%}}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.timeline-item.visible,.showcase-card{opacity:1;translate:none}.showcase-media,.showcase-card:hover .showcase-media{scale:1}}}
