:root{--primary:#7aa7ff;--primary-hover:#9bb8ff;--secondary:#b78cff;--bg:#050810;--surface:#0d1322;--text:#f1f5ff;--text-muted:#8da3c4;--border:#1e2942;--surface-raised:#111829;--surface-inset:#080d18;--border-strong:#2c3a5c;--primary-soft:#7aa7ff1f;--primary-line:#7aa7ff47;--on-primary:#04070f;--success:#5ddba0;--success-soft:#5ddba01f;--success-line:#5ddba080;--danger:#ff6b6b;--danger-text:#ffb9b9;--danger-soft:#ff6b6b1f;--danger-line:#ff6b6b8c;--gold:#ffd87a;--gold-line:#ffd87a80;--max-width:1180px;--nav-height:68px;--section-gap:8.5rem;--block-gap:3.5rem;--radius-sm:6px;--radius:10px;--radius-lg:16px;--font-sans:"Space Grotesk", "Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--ease:cubic-bezier(.22, 1, .36, 1)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;scroll-padding-top:var(--nav-height)}body{font-family:var(--font-sans);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.65;overflow-x:hidden}a{color:inherit;transition:color .2s var(--ease);text-decoration:none}ul{list-style:none}img{max-width:100%;display:block}button,input,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--primary);outline-offset:3px;border-radius:3px}::selection{background:var(--primary);color:var(--bg)}.container{width:100%;max-width:var(--max-width);margin:0 auto;padding:0 2rem}h1,h2,h3,h4{letter-spacing:-.03em;font-weight:700;line-height:1.08}h1{font-size:clamp(2.75rem,7.5vw,5.25rem)}h2{font-size:clamp(2.25rem,5.5vw,3.75rem)}h3{letter-spacing:-.02em;font-size:clamp(1.25rem,2.4vw,1.6rem)}h4{letter-spacing:-.01em;font-size:1.0625rem}p{color:var(--text-muted)}.dot{color:var(--primary)}.eyebrow{font-family:var(--font-mono);letter-spacing:.22em;text-transform:uppercase;color:var(--primary);margin-bottom:1.1rem;font-size:.75rem}.eyebrow--muted{color:var(--text-muted)}.btn{border-radius:var(--radius-sm);cursor:pointer;transition:background-color .2s var(--ease), border-color .2s var(--ease), color .2s var(--ease), transform .2s var(--ease);border:1px solid #0000;align-items:center;gap:.5rem;padding:.8rem 1.4rem;font-size:.9375rem;font-weight:600;display:inline-flex}.btn:hover{transform:translateY(-2px)}.btn-primary{background:var(--primary);color:var(--on-primary)}.btn-primary:hover{background:var(--primary-hover)}.btn-outline{background:var(--surface-raised);border-color:var(--border);color:var(--text)}.btn-outline:hover{border-color:var(--primary);color:var(--primary)}.tag-list{flex-wrap:wrap;gap:.4rem;display:flex}.tag{font-family:var(--font-mono);letter-spacing:.02em;border:1px solid var(--border);color:var(--text-muted);background:var(--surface-inset);white-space:nowrap;border-radius:4px;padding:.25rem .55rem;font-size:.7rem}.reveal{opacity:0;transition:opacity .7s var(--ease), transform .7s var(--ease);transition-delay:var(--reveal-delay,0s);transform:translateY(18px)}.reveal.is-visible{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal{opacity:1;transition:none;transform:none}.btn:hover{transform:none}}@media (width<=768px){:root{--section-gap:5.5rem;--block-gap:2.5rem}.container{padding:0 1.25rem}}.navbar{z-index:100;height:var(--nav-height);transition:background-color .3s var(--ease), border-color .3s var(--ease);border-bottom:1px solid #0000;align-items:center;display:flex;position:fixed;top:0;left:0;right:0}.navbar.is-scrolled{-webkit-backdrop-filter:blur(14px);border-bottom-color:var(--border);background:#050810c7}.navbar__inner{justify-content:space-between;align-items:center;gap:1rem;display:flex}.navbar__brand{letter-spacing:-.03em;font-size:1.15rem;font-weight:700}.navbar__links{align-items:center;gap:2rem;display:flex}.navbar__links a{color:var(--text-muted);padding:.35rem 0;font-size:.9rem;font-weight:500;position:relative}.navbar__links a:hover{color:var(--text)}.navbar__links a.is-active{color:var(--primary)}.navbar__links a:after{content:"";background:var(--primary);transform-origin:0;height:1.5px;transition:transform .25s var(--ease);position:absolute;bottom:-2px;left:0;right:0;transform:scaleX(0)}.navbar__links a.is-active:after{transform:scaleX(1)}.navbar__toggle{cursor:pointer;background:0 0;border:none;flex-direction:column;justify-content:center;gap:5px;width:40px;height:40px;padding:0;display:none}.navbar__toggle span{background:var(--text);width:22px;height:1.5px;transition:transform .25s var(--ease), opacity .2s var(--ease);margin-left:auto;margin-right:auto;display:block}.navbar__toggle.is-open span:first-child{transform:translateY(6.5px)rotate(45deg)}.navbar__toggle.is-open span:nth-child(2){opacity:0}.navbar__toggle.is-open span:nth-child(3){transform:translateY(-6.5px)rotate(-45deg)}@media (width<=820px){.navbar__toggle{order:2;display:flex}.navbar__links{inset:var(--nav-height) 0 auto 0;-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--border);opacity:0;pointer-events:none;transition:transform .3s var(--ease), opacity .3s var(--ease);background:#050810f7;flex-direction:column;align-items:stretch;gap:0;padding:.5rem 1.25rem 1.25rem;position:fixed;transform:translateY(-120%)}.navbar__links.is-open{opacity:1;pointer-events:auto;transform:translateY(0)}.navbar__links a{border-bottom:1px solid var(--border);padding:.85rem 0;font-size:1rem;display:block}.navbar__links a:after{display:none}}.footer{z-index:1;margin-top:var(--section-gap);border-top:1px solid var(--border);background:#080d1899;padding-top:3.5rem;position:relative}.footer__inner{grid-template-columns:1.4fr 1fr 1fr;gap:2.5rem;padding-bottom:2.5rem;display:grid}.footer__name{letter-spacing:-.03em;font-size:1.1rem;font-weight:700}.footer__tagline{margin-top:.4rem;font-size:.875rem}.footer__nav,.footer__socials{flex-direction:column;gap:.6rem;font-size:.875rem;display:flex}.footer__nav a,.footer__socials a{color:var(--text-muted);width:fit-content}.footer__nav a:hover,.footer__socials a:hover{color:var(--primary)}.footer__base{border-top:1px solid var(--border);padding-top:1.5rem;padding-bottom:2rem}.footer__base p{color:var(--text-muted);font-size:.8125rem}@media (width<=768px){.footer__inner{grid-template-columns:1fr 1fr}.footer__brand{grid-column:1/-1}}.grid-bg{z-index:0;pointer-events:none;background:var(--bg);position:fixed;inset:0}.grid-bg__lines{background-image:repeating-linear-gradient(90deg,#7aa7ff0e 0 1px,#0000 1px 80px),repeating-linear-gradient(#7aa7ff0e 0 1px,#0000 1px 80px);position:absolute;inset:0;-webkit-mask-image:radial-gradient(100% 80% at 50% 40%,#000 40%,#0000 100%);mask-image:radial-gradient(100% 80% at 50% 40%,#000 40%,#0000 100%)}.grid-bg__glow{background:radial-gradient(60% 50% at 15% 0,#7aa7ff24,#0000 65%),radial-gradient(50% 45% at 85% 15%,#b78cff17,#0000 65%);position:absolute;inset:0}.hero{min-height:calc(100vh - var(--nav-height));padding-top:var(--nav-height);align-items:center;display:flex}.hero__inner{grid-template-columns:1.15fr .85fr;align-items:center;gap:3rem;width:100%;display:grid}.hero__sub{max-width:46ch;min-height:3.3em;margin-top:1.5rem;font-size:1.15rem}.hero__typed{color:var(--primary);font-weight:600}.hero__cursor{color:var(--primary);margin-left:2px;animation:1s step-end infinite hero-blink;display:inline-block}@keyframes hero-blink{50%{opacity:0}}.hero__actions{flex-wrap:wrap;gap:1rem;margin-top:2.25rem;display:flex}.hero__socials{flex-wrap:wrap;gap:.6rem;margin-top:2rem;display:flex}.hero__socials a{border:1px solid var(--border);border-radius:var(--radius-sm);font-family:var(--font-mono);letter-spacing:.02em;color:var(--text-muted);background:var(--surface-raised);transition:border-color .2s var(--ease), color .2s var(--ease), transform .2s var(--ease);align-items:center;padding:.45rem .75rem;font-size:.75rem;display:inline-flex}.hero__socials a:hover{border-color:var(--primary);color:var(--primary);transform:translateY(-2px)}.hero__portrait{justify-content:center;display:flex}.hero__portrait img{object-fit:cover;border:2px solid var(--border);width:340px;max-width:100%;height:340px;box-shadow:0 0 0 18px var(--primary-soft);border-radius:50%}@media (width<=900px){.hero__inner{text-align:center;grid-template-columns:1fr;gap:2.5rem}.hero__sub{min-height:4.95em;margin-left:auto;margin-right:auto}.hero__actions,.hero__socials{justify-content:center}.hero__portrait img{width:240px;height:240px}}@media (width<=480px){.hero__sub{min-height:6.6em}.hero__portrait img{width:190px;height:190px;box-shadow:0 0 0 12px var(--primary-soft)}}@media (prefers-reduced-motion:reduce){.hero__cursor{animation:none}.hero__socials a:hover{transform:none}}.section-header{margin-bottom:var(--block-gap)}.section-header__eyebrow{display:block}.section-header__slash{color:var(--text-muted);margin:0 .15em}.section-header__lede{max-width:58ch;margin-top:1.25rem;font-size:1.0625rem}.about .section-header__lede,.about__body{max-width:38.5rem}.about .section-header{margin-bottom:2rem}.about__grid{grid-template-columns:1.6fr .9fr;align-items:start;gap:4rem;display:grid}.about__body p+p{margin-top:1rem}.about__focus-heading{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--text-muted);margin-bottom:1rem;font-size:.75rem}.about__focus ul li{border-bottom:1px solid var(--border);padding:.9rem 0;font-size:.95rem}.about__focus ul li:last-child{border-bottom:none}@media (width<=900px){.about__grid{grid-template-columns:1fr;gap:2.5rem}.about__body{max-width:none}}.skills__grid{grid-template-columns:repeat(2,1fr);gap:1.5rem;display:grid}.skills__card{background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.skills__card-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:baseline;padding:1.1rem 1.4rem;display:flex}.skills__card-name{font-weight:700}.skills__card-count{font-family:var(--font-mono);color:var(--text-muted);font-size:.85rem}.skills__chips{grid-template-columns:repeat(auto-fit,minmax(11.5rem,1fr));gap:.6rem;padding:1.4rem;display:grid}.skills__chips li{font-family:var(--font-mono);background:var(--surface-inset);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-muted);transition:border-color .2s var(--ease), color .2s var(--ease);align-items:center;gap:.45rem;padding:.55rem .6rem;font-size:.78rem;display:flex}.skills__chips li:hover{border-color:var(--primary-line);color:var(--text)}.skills__chip-icon{width:1.05rem;height:1.05rem;color:var(--primary);flex:none;justify-content:center;align-items:center;font-size:1.05rem;display:inline-flex}.skills__chip-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}@media (width<=900px){.skills__grid{grid-template-columns:1fr}}@media (width<=480px){.skills__chips{grid-template-columns:repeat(2,1fr);padding:1rem}.skills__chips li{padding:.5rem;font-size:.72rem}}.experience__subheading{margin:var(--block-gap) 0 2rem}.timeline{flex-direction:column;gap:2.5rem;display:flex;position:relative}.timeline:before{content:"";background:var(--border);width:1px;position:absolute;top:0;bottom:0;left:50%;transform:translate(-50%)}.timeline__item{grid-template-columns:1fr 1fr;column-gap:3rem;display:grid;position:relative}.timeline__item:before{content:"";background:var(--primary);border:2px solid var(--bg);z-index:2;border-radius:3px;width:12px;height:12px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.timeline__item:nth-child(odd) .timeline__card{grid-column:1}.timeline__item:nth-child(2n) .timeline__card{grid-column:2}.timeline__card{background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem}.timeline__meta{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.75rem;display:flex}.timeline__period{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);font-size:.75rem}.timeline__badge{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--success);border:1px solid var(--success-line);white-space:nowrap;border-radius:999px;padding:.15rem .55rem;font-size:.65rem}.timeline__card h3{margin-top:.1rem}.timeline__org{color:var(--primary);margin-top:.35rem;font-weight:600}.timeline__location{font-family:var(--font-mono);color:var(--text-muted);margin-top:.2rem;font-size:.78rem}.timeline__summary{margin-top:.9rem}.timeline__card .tag-list{margin-top:1.1rem}.timeline__link{text-align:right;font-family:var(--font-mono);color:var(--primary);margin-top:1.1rem;font-size:.85rem;display:block}.timeline__link:hover{color:var(--primary-hover)}@media (width<=900px){.timeline:before{left:14px}.timeline__item{grid-template-columns:1fr;padding-left:2.75rem}.timeline__item:before{left:14px}.timeline__item:nth-child(odd) .timeline__card,.timeline__item:nth-child(2n) .timeline__card{grid-column:1}}.selected-work__grid{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:1.75rem;display:grid}.work-card{background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius);transition:transform .25s var(--ease), border-color .25s var(--ease);flex-direction:column;display:flex;overflow:hidden}.work-card:hover{border-color:var(--primary-line);transform:translateY(-4px)}.work-card__head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:1.1rem 1.4rem;display:flex}.work-card__index{font-family:var(--font-mono);color:var(--primary);font-size:.85rem}.work-card__lead{font-family:var(--font-mono);color:var(--text-muted);font-size:.78rem}.work-card__body{flex-direction:column;flex:1;gap:.75rem;padding:1.4rem;display:flex}.work-card__context{font-family:var(--font-mono);color:var(--text-muted);font-size:.78rem}.work-card__blurb{color:var(--text-muted);font-size:.9rem}.work-card__body .tag-list{margin-top:.25rem}.work-card__view{font-family:var(--font-mono);color:var(--primary);align-self:flex-end;margin-top:auto;padding-top:.5rem;font-size:.85rem}.work-card__view:hover{color:var(--primary-hover)}.selected-work__more{justify-content:center;margin-top:3rem;display:flex}@media (width<=900px){.selected-work__grid{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){.work-card{transition:none}.work-card:hover{transform:none}}.contact__grid{grid-template-columns:.8fr 1.2fr;align-items:start;gap:4rem;display:grid}.contact__email{color:var(--text);margin-bottom:.75rem;font-size:1.35rem;font-weight:700;display:inline-block}.contact__email:hover{color:var(--primary)}.contact__location{font-family:var(--font-mono);margin-bottom:2rem;font-size:.9rem}.contact__socials{flex-wrap:wrap;gap:.6rem;display:flex}.contact__socials a{border:1px solid var(--border);border-radius:var(--radius-sm);font-family:var(--font-mono);letter-spacing:.02em;color:var(--text-muted);background:var(--surface-raised);transition:border-color .2s var(--ease), color .2s var(--ease);align-items:center;padding:.45rem .75rem;font-size:.75rem;display:inline-flex}.contact__socials a:hover{border-color:var(--primary);color:var(--primary)}.contact-form{flex-direction:column;gap:1.25rem;display:flex}.contact-form__field{flex-direction:column;gap:.5rem;display:flex}.contact-form__field label{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted);font-size:.72rem}.contact-form__field input,.contact-form__field textarea{background:var(--surface-inset);border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;color:var(--text);transition:border-color .2s var(--ease);padding:.75rem .9rem;font-size:.95rem}.contact-form__field input:focus,.contact-form__field textarea:focus{border-color:var(--primary);outline:none}.contact-form__field textarea{resize:vertical;min-height:140px}.contact-form .btn{align-self:flex-start;margin-top:.5rem}.contact-form__notice{margin-top:-.25rem;font-size:.85rem}.contact-form__notice--sent{color:var(--success)}.contact-form__notice--error{color:var(--danger)}@media (width<=900px){.contact__grid{grid-template-columns:1fr;gap:2.5rem}}.page--home{padding-top:0}.app{z-index:1;flex-direction:column;min-height:100vh;display:flex;position:relative}.page{padding-top:calc(var(--nav-height) + 4rem);flex:1}.route-fallback{flex:1;min-height:70vh}.section{scroll-margin-top:var(--nav-height);padding-bottom:var(--section-gap)}
