.bokeh{display:block;height:100%;inset:0;pointer-events:none;position:fixed;width:100%;z-index:0}.topbar{left:0;pointer-events:none;position:fixed;right:0;top:0;z-index:100}.topbar .progress{background:var(--warm);box-shadow:0 0 12px var(--warm-glow);height:2px;left:0;position:absolute;right:0;top:0;-webkit-transform:scaleX(0);transform:scaleX(0);-webkit-transform-origin:left;transform-origin:left}@supports(animation-timeline:scroll()){.topbar .progress{animation-timeline:scroll(root block);-webkit-animation:progress-grow linear both;animation:progress-grow linear both}}.topbar .topbar-pill{align-items:center;backdrop-filter:blur(18px) saturate(140%);-webkit-backdrop-filter:blur(18px) saturate(140%);background:rgba(10,22,51,.62);border-radius:var(--r-pill);box-shadow:0 0 0 1px var(--line),0 1px 0 hsla(0,0%,100%,.08) inset,0 24px 60px -24px rgba(3,8,24,.9);display:flex;gap:16px;height:var(--nav-h);justify-content:space-between;margin:var(--nav-top) auto 0;max-width:1120px;padding:0 8px 0 22px;pointer-events:auto;width:var(--page)}@media(max-width:768px){.topbar .topbar-pill{padding:0 6px 0 16px}}.topbar .brand{color:var(--text);font-size:1.0625rem;font-weight:700;letter-spacing:-.02em;text-decoration:none;transition:color .2s ease}.topbar .brand .brand-short{display:none}@media(hover:hover)and (pointer:fine){.topbar .brand:hover{color:var(--warm-hot)}}@media(max-width:768px){.topbar .brand .brand-full{display:none}.topbar .brand .brand-short{display:inline}}.topbar .links{align-items:center;display:flex;gap:4px}.topbar .links a{border-radius:var(--r-pill);color:var(--text-2);font-size:.9375rem;font-weight:500;padding:8px 12px;text-decoration:none;transition:color .2s ease,background-color .2s ease}@media(hover:hover)and (pointer:fine){.topbar .links a:hover{background:var(--tint);color:var(--text)}}.topbar .links a.active{color:var(--warm)}@media(max-width:768px){.topbar .links{gap:0}.topbar .links a{font-size:.875rem;padding:8px 9px}.topbar .links a:first-child,.topbar .links a:nth-child(2){display:none}}@-webkit-keyframes progress-grow{0%{-webkit-transform:scaleX(0);transform:scaleX(0)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes progress-grow{0%{-webkit-transform:scaleX(0);transform:scaleX(0)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.footer{padding:56px 0 64px}.footer .footer-inner{align-items:center;display:flex;gap:24px;justify-content:space-between}@media(max-width:768px){.footer .footer-inner{align-items:flex-start;flex-direction:column;gap:20px}}.footer .socials{display:flex;gap:6px}.footer .socials a{align-items:center;border:1px solid transparent;border-radius:50%;color:var(--text-2);display:inline-flex;height:44px;justify-content:center;transition:color .2s ease,background-color .2s ease,border-color .2s ease,-webkit-transform .2s var(--ease-out);transition:color .2s ease,background-color .2s ease,border-color .2s ease,transform .2s var(--ease-out);transition:color .2s ease,background-color .2s ease,border-color .2s ease,transform .2s var(--ease-out),-webkit-transform .2s var(--ease-out);width:44px}@media(hover:hover)and (pointer:fine){.footer .socials a:hover{background:var(--tint);border-color:var(--line);color:var(--warm-hot)}}.footer .socials a:active{-webkit-transform:scale(.96);transform:scale(.96)}.footer .rally-teaser{border:1px solid transparent;border-radius:var(--r-pill);color:var(--muted);font-family:var(--font);font-size:.8125rem;font-weight:600;letter-spacing:.01em;line-height:1.3;padding:10px 16px;text-decoration:none;transition:color .2s ease,border-color .2s ease,background-color .2s ease}@media(hover:hover)and (pointer:fine){.footer .rally-teaser:hover{background:var(--tint);border-color:var(--line);color:var(--warm)}}.footer .footer-note{color:var(--muted);font-size:.9rem}.hero{grid-column-gap:24px;align-items:center;-webkit-column-gap:24px;column-gap:24px;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));min-height:100svh;padding-bottom:48px;padding-top:calc(var(--nav-h) + var(--nav-top) + 48px);position:relative}@media(max-width:1024px){.hero{grid-template-columns:1fr;min-height:0;padding-top:calc(var(--nav-h) + var(--nav-top) + 40px);row-gap:8px}}.hero .hero-copy{align-items:flex-start;display:flex;flex-direction:column;grid-column:1/8;grid-row:1;position:relative;z-index:1}@media(max-width:1024px){.hero .hero-copy{display:contents;grid-column:1/-1;grid-row:auto}}.hero .hero-title{color:var(--warm-hot);font-family:var(--font);font-size:clamp(4.25rem,9.2vw,8.75rem);font-weight:700;letter-spacing:-.035em;line-height:.96;margin-bottom:28px;text-shadow:0 0 18px rgba(255,184,92,.38),0 0 60px rgba(255,184,92,.22)}.hero .hero-title .hero-dot{color:var(--warm)}@media(max-width:1024px){.hero .hero-title{margin-bottom:8px;order:1}}.hero .hero-sub{color:var(--text-2);font-size:clamp(1.125rem,1.5vw,1.3125rem);line-height:1.5;margin-bottom:40px;max-width:44ch}@media(max-width:1024px){.hero .hero-sub{margin-bottom:28px;margin-top:20px;order:3}}.hero .hero-actions{display:flex;flex-wrap:wrap;gap:12px}@media(max-width:1024px){.hero .hero-actions{order:4}}.hero .hero-ball{grid-column:7/13;grid-row:1;height:clamp(380px,58vh,640px);position:relative}@media(max-width:1024px){.hero .hero-ball{grid-column:1/-1;grid-row:auto;height:260px;margin:8px 0 0;order:2}}.hero .hero-ball-track{inset:0;position:absolute;transition:-webkit-transform .7s var(--ease-out);transition:transform .7s var(--ease-out);transition:transform .7s var(--ease-out),-webkit-transform .7s var(--ease-out);will-change:transform}.hero .hero-glow{aspect-ratio:1;background:radial-gradient(circle,rgba(255,184,92,.34) 0,rgba(255,184,92,.12) 38%,rgba(255,184,92,0) 68%);border-radius:50%;left:50%;pointer-events:none;position:absolute;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);width:78%}.hero .hero-canvas{cursor:grab;inset:0;position:absolute}.hero .hero-canvas:active{cursor:grabbing}.hero .hero-hint{bottom:0;color:var(--muted);pointer-events:none;position:absolute;right:8px}@media(max-width:1024px){.hero .hero-hint{bottom:-6px;right:0}}.hero.is-ready .hero-title{-webkit-animation:rise 1s var(--ease-out) .18s both;animation:rise 1s var(--ease-out) .18s both}.hero.is-ready .hero-sub{-webkit-animation:rise .9s var(--ease-out) .32s both;animation:rise .9s var(--ease-out) .32s both}.hero.is-ready .hero-actions{-webkit-animation:rise .9s var(--ease-out) .44s both;animation:rise .9s var(--ease-out) .44s both}.hero.is-ready .hero-ball{-webkit-animation:emerge 1.4s var(--ease-out) .26s both;animation:emerge 1.4s var(--ease-out) .26s both}@-webkit-keyframes rise{0%{-webkit-filter:blur(8px);filter:blur(8px);opacity:0;-webkit-transform:translateY(18px);transform:translateY(18px)}to{-webkit-filter:blur(0);filter:blur(0);opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes rise{0%{-webkit-filter:blur(8px);filter:blur(8px);opacity:0;-webkit-transform:translateY(18px);transform:translateY(18px)}to{-webkit-filter:blur(0);filter:blur(0);opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes emerge{0%{opacity:0;-webkit-transform:scale(.94);transform:scale(.94)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes emerge{0%{opacity:0;-webkit-transform:scale(.94);transform:scale(.94)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@media(prefers-reduced-motion:reduce){.hero.is-ready .hero-actions,.hero.is-ready .hero-ball,.hero.is-ready .hero-sub,.hero.is-ready .hero-title{-webkit-animation:fade .4s ease both;animation:fade .4s ease both}.hero .hero-ball-track{transition:none}}@-webkit-keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes fade{0%{opacity:0}to{opacity:1}}.about{grid-column-gap:24px;align-items:center;-webkit-column-gap:24px;column-gap:24px;display:grid;grid-template-columns:repeat(12,minmax(0,1fr))}@media(max-width:1024px){.about{grid-template-columns:1fr;row-gap:40px}}.about .about-window{background:var(--tint);border-radius:28px;box-shadow:0 0 0 1px var(--line),0 1px 0 hsla(0,0%,100%,.1) inset,var(--shadow-pane);grid-column:1/6;justify-self:start;max-width:460px;opacity:0;padding:10px;position:relative;-webkit-transform:translateY(16px);transform:translateY(16px);transition:opacity .9s var(--ease-out),-webkit-transform .9s var(--ease-out);transition:opacity .9s var(--ease-out),transform .9s var(--ease-out);transition:opacity .9s var(--ease-out),transform .9s var(--ease-out),-webkit-transform .9s var(--ease-out);width:100%}.about .about-window:after{background:radial-gradient(60% 45% at 18% 12%,rgba(255,184,92,.18) 0,rgba(255,184,92,0) 70%),linear-gradient(160deg,hsla(0,0%,100%,.12),hsla(0,0%,100%,0) 38%);border-radius:18px;content:"";inset:10px;pointer-events:none;position:absolute}.about .about-window img{aspect-ratio:4/5;border-radius:18px;height:auto;object-fit:cover;object-position:50% 30%;width:100%}@media(max-width:1024px){.about .about-window{grid-column:1/-1;max-width:420px}}.about .about-text{grid-column:7/13;max-width:58ch;opacity:0;-webkit-transform:translateY(16px);transform:translateY(16px);transition:opacity .9s var(--ease-out) .12s,-webkit-transform .9s var(--ease-out) .12s;transition:opacity .9s var(--ease-out) .12s,transform .9s var(--ease-out) .12s;transition:opacity .9s var(--ease-out) .12s,transform .9s var(--ease-out) .12s,-webkit-transform .9s var(--ease-out) .12s}.about .about-text h2{font-family:var(--font);font-size:clamp(2.25rem,4.6vw,3.5rem);font-weight:700;letter-spacing:-.035em;line-height:.96;margin-bottom:28px}.about .about-text p{color:var(--text-2);font-size:1.1875rem;line-height:1.6;margin-bottom:20px}@media(max-width:1024px){.about .about-text{grid-column:1/-1}}.about.is-in .about-text,.about.is-in .about-window{opacity:1;-webkit-transform:none;transform:none}@media(prefers-reduced-motion:reduce){.about .about-text,.about .about-window{-webkit-transform:none;transform:none;transition:opacity .3s ease}}.numbers .figures{grid-column-gap:24px;align-items:end;-webkit-column-gap:24px;column-gap:24px;display:grid;grid-template-columns:repeat(12,minmax(0,1fr))}@media(max-width:1024px){.numbers .figures{grid-template-columns:1fr;row-gap:40px}}.numbers .figure{display:flex;flex-direction:column;gap:14px;opacity:.2;transition:opacity .9s var(--ease-out)}.numbers .figure .figure-value{-webkit-font-feature-settings:"tnum";font-feature-settings:"tnum";color:var(--warm-hot);font-family:var(--font);font-size:clamp(3rem,7.4vw,7rem);font-variant-numeric:tabular-nums;font-weight:700;letter-spacing:-.035em;line-height:.96;text-shadow:0 0 0 rgba(255,184,92,0);transition:text-shadow 1.2s ease}.numbers .figure .figure-label{color:var(--text-2);font-size:1.125rem}.numbers .figure-lg{grid-column:1/9}@media(max-width:1024px){.numbers .figure-lg{grid-column:1/-1}}.numbers .figure-sm{align-items:flex-start;grid-column:9/13}.numbers .figure-sm .figure-value{color:var(--text);font-size:clamp(2rem,3.6vw,3.5rem)}@media(max-width:1024px){.numbers .figure-sm{grid-column:1/-1}}.numbers .figures.is-in .figure{opacity:1}.numbers .figures.is-in .figure.figure-lg .figure-value{text-shadow:0 0 18px rgba(255,184,92,.4),0 0 60px rgba(255,184,92,.22)}.numbers .figures.is-in .figure-sm{transition-delay:.16s}@media(prefers-reduced-motion:reduce){.numbers .figure{opacity:1;transition:none}}.journey .string{display:flex;flex-direction:column;gap:72px;list-style:none;margin-top:64px;padding-left:44px;position:relative}.journey .string:before{background:rgba(175,192,230,.16);bottom:10px;content:"";left:7px;mask-image:linear-gradient(180deg,transparent,#000 6%,#000 94%,transparent);-webkit-mask-image:linear-gradient(180deg,transparent,#000 6%,#000 94%,transparent);position:absolute;top:10px;width:2px}@media(max-width:768px){.journey .string{gap:56px;margin-top:44px;padding-left:36px}}.journey .stop{grid-gap:32px;align-items:start;display:grid;gap:32px;grid-template-columns:minmax(0,1fr) auto;position:relative;transition:opacity .3s ease}@media(max-width:1024px){.journey .stop{gap:16px;grid-template-columns:1fr}}.journey .bulb{background:rgba(175,192,230,.28);border-radius:50%;height:16px;left:-44px;position:absolute;top:10px;transition:background-color .5s ease,box-shadow .5s ease,-webkit-transform .5s var(--ease-out);transition:background-color .5s ease,box-shadow .5s ease,transform .5s var(--ease-out);transition:background-color .5s ease,box-shadow .5s ease,transform .5s var(--ease-out),-webkit-transform .5s var(--ease-out);transition-delay:calc(var(--i)*60ms);width:16px}@media(max-width:768px){.journey .bulb{left:-36px;top:8px}}.journey .stop.is-in .bulb{background:var(--warm);box-shadow:0 0 0 4px var(--warm-soft),0 0 26px var(--warm-glow);-webkit-transform:scale(1.05);transform:scale(1.05)}.journey .stop.is-live.is-in .bulb{background:var(--warm-hot);box-shadow:0 0 0 5px rgba(255,241,214,.18),0 0 36px rgba(255,184,92,.75)}.journey .stop-body{max-width:60ch}.journey .stop-body h3{font-family:var(--font);font-size:clamp(1.5rem,2.4vw,2rem);font-weight:700;letter-spacing:-.035em;letter-spacing:-.025em;line-height:.96;margin-bottom:10px}.journey .stop-body .stop-meta{color:var(--muted);font-size:1rem;margin-bottom:12px}.journey .stop-body .stop-meta .stop-sep{margin:0 6px;opacity:.6}.journey .stop-body .stop-blurb{color:var(--text-2);font-size:1.0625rem;line-height:1.6}.journey .stop-stat{align-items:flex-end;display:flex;flex-direction:column;gap:6px;text-align:right}.journey .stop-stat .stop-stat-value{-webkit-font-feature-settings:"tnum";font-feature-settings:"tnum";color:var(--text);font-size:clamp(1.5rem,2.6vw,2.25rem);font-variant-numeric:tabular-nums;font-weight:700;letter-spacing:-.03em;line-height:1}.journey .stop-stat .stop-stat-label{color:var(--muted);font-family:var(--font);font-size:.8125rem;font-weight:600;letter-spacing:.01em;line-height:1.3}@media(max-width:1024px){.journey .stop-stat{align-items:flex-start;text-align:left}}.journey .stop.is-live .stop-stat-value{color:var(--warm-hot);text-shadow:0 0 18px rgba(255,184,92,.35),0 0 60px rgba(255,184,92,.22)}@media(hover:hover)and (pointer:fine){.journey .stop .bulb,.journey .stop .stop-stat-value,.journey .stop h3{transition:opacity .3s ease,background-color .5s ease,box-shadow .5s ease,-webkit-transform .5s var(--ease-out);transition:opacity .3s ease,background-color .5s ease,box-shadow .5s ease,transform .5s var(--ease-out);transition:opacity .3s ease,background-color .5s ease,box-shadow .5s ease,transform .5s var(--ease-out),-webkit-transform .5s var(--ease-out)}.journey .stop:not(.is-live) .bulb,.journey .stop:not(.is-live) .stop-stat-value,.journey .stop:not(.is-live) h3{opacity:.62}.journey .stop:focus-within .bulb,.journey .stop:focus-within .stop-stat-value,.journey .stop:focus-within h3,.journey .stop:hover .bulb,.journey .stop:hover .stop-stat-value,.journey .stop:hover h3{opacity:1}.journey .string:has(.stop:focus-within) .stop:not(:focus-within) .bulb,.journey .string:has(.stop:focus-within) .stop:not(:focus-within) .stop-stat-value,.journey .string:has(.stop:focus-within) .stop:not(:focus-within) h3,.journey .string:has(.stop:hover) .stop:not(:hover) .bulb,.journey .string:has(.stop:hover) .stop:not(:hover) .stop-stat-value,.journey .string:has(.stop:hover) .stop:not(:hover) h3{opacity:.45}}.journey .journey-link{margin-top:64px}@media(prefers-reduced-motion:reduce){.journey .bulb,.journey .stop{transition:none}}.contact .contact-grid{grid-column-gap:24px;align-items:start;-webkit-column-gap:24px;column-gap:24px;display:grid;grid-template-columns:repeat(12,minmax(0,1fr))}@media(max-width:1024px){.contact .contact-grid{grid-template-columns:1fr;row-gap:40px}}.contact .contact-copy{grid-column:1/6}@media(max-width:1024px){.contact .contact-copy{grid-column:1/-1}}.contact .contact-form{display:flex;flex-direction:column;gap:22px;grid-column:7/13}@media(max-width:1024px){.contact .contact-form{grid-column:1/-1;max-width:640px}}.contact .field{display:flex;flex-direction:column;gap:8px}.contact .field label{color:var(--muted);color:var(--text-2);font-family:var(--font);font-size:.8125rem;font-weight:600;letter-spacing:.01em;line-height:1.3}.contact .field input,.contact .field textarea{background:var(--pane);border:1px solid var(--line);border-radius:var(--r-field);box-shadow:inset 0 1px 0 hsla(0,0%,100%,.05);color:var(--text);font-size:1rem;line-height:1.5;padding:15px 18px;transition:border-color .2s ease,box-shadow .3s ease,background-color .2s ease;width:100%}.contact .field input:focus-visible,.contact .field textarea:focus-visible{background:#132350;border-color:var(--warm);box-shadow:0 0 0 4px var(--warm-soft),0 0 28px rgba(255,184,92,.22);outline:none}.contact .field textarea{min-height:160px;resize:vertical}.contact .field .field-error{color:var(--error);display:none;font-size:.875rem}.contact .field:has(:user-invalid) input,.contact .field:has(:user-invalid) textarea{border-color:var(--error)}.contact .field:has(:user-invalid) .field-error{display:block}.contact .btn{align-self:flex-start}.side-index{position:fixed;right:28px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);z-index:50}@media(max-width:1200px){.side-index{display:none}}@media(max-width:1539px){.side-index{right:18px}.side-index .side-index-label{display:none}}.side-index ol{display:flex;flex-direction:column;gap:14px;list-style:none}.side-index a{align-items:center;color:var(--muted);display:flex;font-family:var(--font);font-size:.8125rem;font-weight:600;gap:10px;justify-content:flex-end;letter-spacing:.01em;line-height:1.3;text-decoration:none;transition:color .2s ease}.side-index a .side-index-label{opacity:.75;transition:opacity .2s ease,color .2s ease}.side-index a .side-index-dot{background:rgba(175,192,230,.35);border-radius:50%;height:6px;transition:background-color .3s ease,box-shadow .3s ease,-webkit-transform .3s var(--ease-out);transition:background-color .3s ease,box-shadow .3s ease,transform .3s var(--ease-out);transition:background-color .3s ease,box-shadow .3s ease,transform .3s var(--ease-out),-webkit-transform .3s var(--ease-out);width:6px}@media(hover:hover)and (pointer:fine){.side-index a:hover{color:var(--text)}.side-index a:hover .side-index-label{opacity:1}}.side-index a.is-active{color:var(--text)}.side-index a.is-active .side-index-label{opacity:1}.side-index a.is-active .side-index-dot{background:var(--warm);box-shadow:0 0 0 3px var(--warm-soft),0 0 16px var(--warm-glow);-webkit-transform:scale(1.2);transform:scale(1.2)}@media(prefers-reduced-motion:reduce){.side-index a,.side-index a .side-index-dot,.side-index a .side-index-label{transition:none}}.experience{padding-top:48px!important}.experience .roles{display:flex;flex-direction:column;gap:112px}@media(max-width:768px){.experience .roles{gap:72px}}.experience .role{grid-column-gap:24px;align-items:start;-webkit-column-gap:24px;column-gap:24px;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));opacity:0;-webkit-transform:translateY(14px);transform:translateY(14px);transition:opacity .8s var(--ease-out),-webkit-transform .8s var(--ease-out);transition:opacity .8s var(--ease-out),transform .8s var(--ease-out);transition:opacity .8s var(--ease-out),transform .8s var(--ease-out),-webkit-transform .8s var(--ease-out)}.experience .role.is-in{opacity:1;-webkit-transform:none;transform:none}@media(max-width:1024px){.experience .role{grid-template-columns:1fr;row-gap:24px}}.experience .role-head{grid-column:1/6;position:-webkit-sticky;position:sticky;top:calc(var(--nav-h) + var(--nav-top) + 32px)}@media(max-width:1024px){.experience .role-head{grid-column:1/-1;position:static}}.experience .role-head h3{font-family:var(--font);font-size:clamp(1.75rem,3vw,2.5rem);font-weight:700;letter-spacing:-.035em;line-height:.96;margin-bottom:14px}.experience .role-head .role-title{color:var(--text);font-size:1.125rem;font-weight:600;margin-bottom:6px}.experience .role-body{grid-column:7/13;max-width:62ch}@media(max-width:1024px){.experience .role-body{grid-column:1/-1}}.experience .role-summary{color:var(--text-2);font-size:1.1875rem;line-height:1.55;margin-bottom:28px}.experience .role-points{display:flex;flex-direction:column;gap:14px;list-style:none;margin-bottom:32px}.experience .role-points li{color:var(--text);font-size:1.0625rem;line-height:1.6;padding-left:26px;position:relative}.experience .role-points li:before{background:var(--muted);content:"";height:1px;left:0;position:absolute;top:.85em;width:14px}.experience .role-tags{display:flex;flex-wrap:wrap;gap:8px;list-style:none}.experience .role-tags li{border:1px solid var(--line);border-radius:var(--r-pill);color:var(--muted);color:var(--text-2);font-family:var(--font);font-size:.8125rem;font-weight:600;letter-spacing:.01em;line-height:1.3;padding:7px 12px}@media(prefers-reduced-motion:reduce){.experience .role{-webkit-transform:none;transform:none;transition:opacity .3s ease}}.projects{padding-top:48px!important}.projects .roster{display:flex;flex-direction:column;gap:10px;list-style:none}.projects .project{opacity:0;-webkit-transform:translateY(12px);transform:translateY(12px);transition:opacity .7s var(--ease-out),-webkit-transform .7s var(--ease-out);transition:opacity .7s var(--ease-out),transform .7s var(--ease-out);transition:opacity .7s var(--ease-out),transform .7s var(--ease-out),-webkit-transform .7s var(--ease-out)}.projects .project.is-in{opacity:1;-webkit-transform:none;transform:none}.projects .project a{grid-gap:32px;align-items:center;border:1px solid transparent;border-radius:var(--r-pane);color:inherit;display:grid;gap:32px;grid-template-columns:minmax(0,1fr) auto auto;padding:32px 28px;text-decoration:none;transition:background-color .25s ease,border-color .25s ease,-webkit-transform .2s var(--ease-out);transition:background-color .25s ease,border-color .25s ease,transform .2s var(--ease-out);transition:background-color .25s ease,border-color .25s ease,transform .2s var(--ease-out),-webkit-transform .2s var(--ease-out)}@media(hover:hover)and (pointer:fine){.projects .project a:hover{background:var(--tint);border-color:var(--line)}.projects .project a:hover .project-arrow{background:var(--warm-soft);border-color:rgba(255,184,92,.4);color:var(--warm);-webkit-transform:translate(2px,-2px);transform:translate(2px,-2px)}.projects .project a:hover .project-stat-value{color:var(--warm-hot);text-shadow:0 0 18px rgba(255,184,92,.3),0 0 60px rgba(255,184,92,.22)}}.projects .project a:active{-webkit-transform:scale(.995);transform:scale(.995)}@media(max-width:768px){.projects .project a{gap:16px 20px;grid-template-columns:minmax(0,1fr) auto;padding:24px 4px}.projects .project a .project-stat{align-items:flex-start;grid-column:1/-1;text-align:left}}@media(hover:hover)and (pointer:fine){.projects .roster:has(.project:hover) .project:not(:hover){opacity:.5}}.projects .project-text{max-width:56ch}.projects .project-text h3{font-family:var(--font);font-size:1.5rem;font-weight:700;letter-spacing:-.035em;letter-spacing:-.02em;line-height:.96;margin-bottom:10px}.projects .project-text p{color:var(--text-2);font-size:1.0625rem;line-height:1.6}.projects .project-stat{align-items:flex-end;display:flex;flex-direction:column;gap:6px;text-align:right}.projects .project-stat .project-stat-value{-webkit-font-feature-settings:"tnum";font-feature-settings:"tnum";color:var(--text);font-size:1.75rem;font-variant-numeric:tabular-nums;font-weight:700;letter-spacing:-.03em;line-height:1;transition:color .25s ease,text-shadow .4s ease}.projects .project-arrow{align-items:center;background:var(--tint);border:1px solid var(--line);border-radius:50%;color:var(--text-2);display:inline-flex;height:40px;justify-content:center;transition:background-color .2s ease,border-color .2s ease,color .2s ease,-webkit-transform .3s var(--ease-out);transition:transform .3s var(--ease-out),background-color .2s ease,border-color .2s ease,color .2s ease;transition:transform .3s var(--ease-out),background-color .2s ease,border-color .2s ease,color .2s ease,-webkit-transform .3s var(--ease-out);width:40px}@media(prefers-reduced-motion:reduce){.projects .project{-webkit-transform:none;transform:none;transition:opacity .3s ease}}.volley-game{background:var(--tint);border-radius:28px;box-shadow:0 0 0 1px var(--line),0 1px 0 hsla(0,0%,100%,.1) inset,var(--shadow-pane);height:560px;padding:10px;position:relative}@media(max-width:768px){.volley-game{height:460px}}.volley-game canvas{background:linear-gradient(180deg,rgba(13,28,66,.9),rgba(7,14,36,.95));border-radius:18px;cursor:pointer;height:calc(100% - 20px);inset:10px;position:absolute;touch-action:none;width:calc(100% - 20px)}.volley-game .hud{display:flex;justify-content:space-between;left:34px;pointer-events:none;position:absolute;right:34px;top:30px}.volley-game .hud .hud-readout{display:flex;flex-direction:column;gap:6px}.volley-game .hud .hud-readout:last-child{align-items:flex-end;text-align:right}.volley-game .hud .hud-readout .hud-value{-webkit-font-feature-settings:"tnum";font-feature-settings:"tnum";color:var(--warm-hot);font-size:2.75rem;font-variant-numeric:tabular-nums;font-weight:700;letter-spacing:-.03em;line-height:1;text-shadow:0 0 18px rgba(255,184,92,.35),0 0 60px rgba(255,184,92,.22)}.volley-game .hud .hud-readout .hud-best{color:var(--text);text-shadow:none}.volley-game .overlay{bottom:54px;left:0;pointer-events:none;position:absolute;right:0;text-align:center}.volley-game .overlay .overlay-title{color:var(--text);font-family:var(--font);font-size:1.875rem;font-weight:700;letter-spacing:-.035em;letter-spacing:-.025em;line-height:.96;margin-bottom:10px}.volley-game .overlay .overlay-hint{color:var(--text-2);font-size:1rem}.label{color:var(--muted);font-family:var(--font);font-size:.8125rem;font-weight:600;letter-spacing:.01em;line-height:1.3}.section-heading{font-family:var(--font);font-size:clamp(2.25rem,5vw,3.75rem);font-weight:700;letter-spacing:-.035em;line-height:.96;margin-bottom:20px}.section-lede{color:var(--text-2);font-size:1.1875rem;line-height:1.55;max-width:56ch}.btn{align-items:center;border:1px solid transparent;border-radius:var(--r-pill);color:var(--text);cursor:pointer;display:inline-flex;font-family:var(--font);font-size:1rem;font-weight:600;gap:14px;letter-spacing:-.005em;min-height:52px;padding:0 10px 0 24px;text-decoration:none;transition:background-color .2s ease,border-color .2s ease,box-shadow .3s ease,color .2s ease,-webkit-transform .2s var(--ease-out);transition:transform .2s var(--ease-out),background-color .2s ease,border-color .2s ease,box-shadow .3s ease,color .2s ease;transition:transform .2s var(--ease-out),background-color .2s ease,border-color .2s ease,box-shadow .3s ease,color .2s ease,-webkit-transform .2s var(--ease-out);white-space:nowrap}.btn:active{-webkit-transform:scale(.98);transform:scale(.98)}.btn .btn-icon{align-items:center;border-radius:50%;display:inline-flex;flex:none;height:34px;justify-content:center;transition:background-color .2s ease,-webkit-transform .3s var(--ease-out);transition:transform .3s var(--ease-out),background-color .2s ease;transition:transform .3s var(--ease-out),background-color .2s ease,-webkit-transform .3s var(--ease-out);width:34px}.btn.plain{padding-right:24px}.btn.small{font-size:.9rem;min-height:40px;padding:0 18px}.btn.primary{background:var(--warm);border-color:var(--warm);box-shadow:inset 0 1px 0 rgba(255,241,214,.55),0 12px 32px -12px rgba(255,184,92,.65);color:var(--warm-ink)}.btn.primary .btn-icon{background:rgba(42,22,0,.14);color:var(--warm-ink)}@media(hover:hover)and (pointer:fine){.btn.primary:hover{background:var(--warm-hover);border-color:var(--warm-hover);box-shadow:inset 0 1px 0 rgba(255,241,214,.6),0 18px 44px -12px rgba(255,184,92,.8)}.btn.primary:hover .btn-icon{-webkit-transform:translate(2px,-2px);transform:translate(2px,-2px)}}.btn.glass{background:var(--tint);border-color:var(--line);color:var(--text)}.btn.glass .btn-icon{background:var(--tint-strong)}@media(hover:hover)and (pointer:fine){.btn.glass:hover{background:var(--tint-strong);border-color:var(--line-strong)}.btn.glass:hover .btn-icon{-webkit-transform:translate(2px,-2px);transform:translate(2px,-2px)}}.text-link{color:var(--text);font-size:1rem;font-weight:600;gap:8px;text-decoration:none;transition:color .2s ease}.text-link,.text-link .text-link-icon{align-items:center;display:inline-flex}.text-link .text-link-icon{background:var(--tint);border:1px solid var(--line);border-radius:50%;height:30px;justify-content:center;transition:background-color .2s ease,border-color .2s ease,color .2s ease,-webkit-transform .3s var(--ease-out);transition:transform .3s var(--ease-out),background-color .2s ease,border-color .2s ease,color .2s ease;transition:transform .3s var(--ease-out),background-color .2s ease,border-color .2s ease,color .2s ease,-webkit-transform .3s var(--ease-out);width:30px}@media(hover:hover)and (pointer:fine){.text-link:hover{color:var(--warm-hot)}.text-link:hover .text-link-icon{background:var(--warm-soft);border-color:rgba(255,184,92,.4);color:var(--warm);-webkit-transform:translate(2px,-2px);transform:translate(2px,-2px)}}.page{margin:0 auto;width:var(--page)}.sr-only{clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}@media(prefers-reduced-motion:reduce){.btn,.btn .btn-icon,.text-link .text-link-icon{transition:none}.btn:active{-webkit-transform:none;transform:none}}.app{display:flex;flex-direction:column;min-height:100dvh;position:relative;z-index:1}.app main{flex:1 1}.app .sections{margin:0 auto;width:var(--page)}.app .sections>*{padding:140px 0;scroll-margin-top:calc(var(--nav-h) + var(--nav-top) + 24px)}@media(max-width:768px){.app .sections>*{padding:88px 0}}.app .page-hero{padding-bottom:32px!important;padding-top:calc(var(--nav-h) + var(--nav-top) + 96px)!important}.app .page-hero .page-title{font-family:var(--font);font-size:clamp(2.75rem,6.5vw,5rem);font-weight:700;letter-spacing:-.035em;line-height:.96;margin-bottom:24px}.app .page-hero .page-blurb{color:var(--text-2);font-size:1.1875rem;line-height:1.55;max-width:54ch}@media(max-width:768px){.app .page-hero{padding-top:calc(var(--nav-h) + var(--nav-top) + 56px)!important}}.app .back-link{align-items:center;color:var(--muted);display:inline-flex;font-family:var(--font);font-size:.8125rem;font-weight:600;gap:8px;letter-spacing:.01em;line-height:1.3;margin-top:32px;text-decoration:none;transition:color .2s ease}.app .back-link svg{transition:-webkit-transform .3s var(--ease-out);transition:transform .3s var(--ease-out);transition:transform .3s var(--ease-out),-webkit-transform .3s var(--ease-out)}@media(hover:hover)and (pointer:fine){.app .back-link:hover{color:var(--warm)}.app .back-link:hover svg{-webkit-transform:translateX(-3px);transform:translateX(-3px)}}.app .notfound{min-height:55vh}.app .notfound .mono-hint{color:var(--warm);font-weight:600;text-shadow:0 0 18px var(--warm-glow),0 0 60px rgba(255,184,92,.22)}@font-face{font-display:swap;font-family:Bricolage Grotesque Variable;font-stretch:75% 100%;font-style:normal;font-weight:200 800;src:url(/static/media/bricolage-grotesque-latin-standard-normal.e956cf557f2fb3fb7bed.woff2) format("woff2-variations");unicode-range:u+00??,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}@font-face{font-display:swap;font-family:Bricolage Grotesque Variable;font-stretch:75% 100%;font-style:normal;font-weight:200 800;src:url(/static/media/bricolage-grotesque-latin-ext-standard-normal.a84345800ca1888afc1e.woff2) format("woff2-variations");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}:root{--night:#0a1633;--night-high:#0d1c42;--night-deep:#060c1e;--pane:#111f45;--line:rgba(175,192,230,.16);--line-strong:rgba(175,192,230,.3);--tint:rgba(175,192,230,.08);--tint-strong:rgba(175,192,230,.14);--warm:#ffb85c;--warm-hover:#ffc677;--warm-hot:#fff1d6;--warm-ink:#2a1600;--warm-soft:rgba(255,184,92,.18);--warm-glow:rgba(255,184,92,.45);--cool:#9fc4ff;--text:#f2f5ff;--text-2:#afc0e6;--muted:#7c8fbc;--error:#ff9d8a;--font:"Bricolage Grotesque Variable","Bricolage Grotesque",system-ui,sans-serif;--ease-out:cubic-bezier(0.23,1,0.32,1);--ease-in-out:cubic-bezier(0.77,0,0.175,1);--ease-drawer:cubic-bezier(0.32,0.72,0,1);--r-pill:999px;--r-pane:24px;--r-field:14px;--nav-h:56px;--nav-top:16px;--gutter:24px;--page:min(1280px,calc(100% - var(--gutter)*2));--shadow-pane:0 40px 80px -30px rgba(3,8,24,.9);color-scheme:dark}@media (max-width:768px){:root{--gutter:16px;--nav-h:52px;--nav-top:12px}}*{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;background:#060c1e;background:var(--night-deep);scroll-behavior:smooth;scrollbar-color:#ffb85c #060c1e;scrollbar-color:var(--warm) var(--night-deep)}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;background-color:#0a1633;background-color:var(--night);caret-color:#ffb85c;caret-color:var(--warm);font-family:Bricolage Grotesque Variable,Bricolage Grotesque,system-ui,sans-serif;font-family:var(--font);font-optical-sizing:auto;font-size:1.0625rem;line-height:1.6;min-height:100dvh}body,h1,h2,h3,h4{color:#f2f5ff;color:var(--text)}h1,h2,h3,h4{text-wrap:balance;font-family:Bricolage Grotesque Variable,Bricolage Grotesque,system-ui,sans-serif;font-family:var(--font);font-weight:700;letter-spacing:-.03em;line-height:1}p{text-wrap:pretty}a{color:inherit}img{display:block;max-width:100%}button,input,textarea{color:inherit;font:inherit}::selection{background:#ffb85c;background:var(--warm);color:#2a1600;color:var(--warm-ink)}:focus{outline:none}:focus-visible{border-radius:6px;box-shadow:0 0 20px rgba(255,184,92,.35);outline:2px solid #ffb85c;outline:2px solid var(--warm);outline-offset:3px}::-webkit-scrollbar{height:10px;width:10px}::-webkit-scrollbar-track{background:#060c1e;background:var(--night-deep)}::-webkit-scrollbar-thumb{background:#ffb85c;background:var(--warm);border:2px solid #060c1e;border:2px solid var(--night-deep);border-radius:999px}::-webkit-scrollbar-thumb:hover{background:#ffc677;background:var(--warm-hover)}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
/*# sourceMappingURL=main.3aac07ba.css.map*/