@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media (prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*),[data-astro-transition-scope]{animation:none!important}}.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:300 400;src:url(/_astro/fraunces-latin-ext-full-normal.YHFkNujK.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:300 400;src:url(/_astro/fraunces-latin-full-normal.C3gLENTn.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces Variable;font-style:italic;font-display:swap;font-weight:300 400;src:url(/_astro/fraunces-latin-ext-full-italic.B8-t4Nou.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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}@font-face{font-family:Fraunces Variable;font-style:italic;font-display:swap;font-weight:300 400;src:url(/_astro/fraunces-latin-full-italic.C4u6GIvr.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:400 500;src:url(/_astro/inter-latin-ext-wght-normal.DO1Apj_S.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:400 500;src:url(/_astro/inter-latin-wght-normal.Ds3Qbe2Y.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Caveat Variable;font-style:normal;font-display:swap;font-weight:400 600;src:url(/_astro/caveat-latin-ext-wght-normal.Byk3UhVp.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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}@font-face{font-family:Caveat Variable;font-style:normal;font-display:swap;font-weight:400 600;src:url(/_astro/caveat-latin-wght-normal.oJ_1aXFa.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root,[data-theme=stone]{color-scheme:light;--bg:#eeeeeb;--bg-soft:#e1e1dd;--surface:#ffffffb3;--ink:#111318;--ink-mid:#3a3d46;--ink-soft:#62656f;--line:#d4d4cf;--primary:#111827;--on-primary:#fff;--secondary:#264be6;--on-secondary:#fff;--chip:var(--bg-soft);--scrim:#080c14b3}[data-theme=ocean]{color-scheme:dark;--bg:#0f1b2d;--bg-soft:#172640;--surface:#ffffff0d;--ink:#e8eef7;--ink-mid:#c0cbdb;--ink-soft:#8d9bb2;--line:#25365a;--primary:#7fb4ff;--on-primary:#0a1424;--secondary:#ffb86b;--on-secondary:#0a1424;--chip:color-mix(in srgb, var(--primary) 16%, transparent);--scrim:#03070ebf}:root{--ease:cubic-bezier(.22, .8, .24, 1);--serif:"Fraunces Variable", Georgia, serif;--sans:"Inter Variable", system-ui, sans-serif;interpolate-size:allow-keywords;--container:1440px;--gutter:1rem;--hero-col:48%;--hero-max:48rem;--art:min(54vw, 760px, calc((100vh - 19.5rem) * 1.05));--art-lift:3rem;--art-right:max(1rem, calc(50vw - var(--container) / 2 + var(--gutter) - var(--art) * .0667));--hand:"Caveat Variable", "Segoe Print", cursive;--fs-sm:.8125rem;--radius:1.75rem;--radius-sm:1rem;--pill:999px;--fs-md:.9375rem;--fs-lg:1.0625rem;--ext-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 17L17 7M8.5 7H17v8.5'/%3E%3C/svg%3E")}@media (width>=700px){:root{--gutter:2rem}}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;scrollbar-gutter:stable}body{background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:var(--fs-lg);-webkit-font-smoothing:antialiased;flex-direction:column;min-height:100dvh;margin:0;line-height:1.7;display:flex;overflow-x:hidden}::selection{background:color-mix(in srgb, var(--secondary) 28%, var(--bg))}a{color:inherit}button{font:inherit;color:inherit}.site-header{z-index:30;view-transition-name:nav;padding:1.1rem max(var(--gutter), calc(50% - var(--container) / 2 + var(--gutter)));transition:transform .55s var(--ease), background .4s, box-shadow .4s, padding .4s;justify-content:space-between;align-items:center;gap:1rem;display:flex;position:fixed;top:0;left:0;right:0}.site-header.scrolled{background:color-mix(in srgb, var(--bg) 84%, transparent);backdrop-filter:blur(14px);box-shadow:0 1px 0 var(--line);padding-block:.7rem}.site-header.hide:not(.open){transform:translateY(-100%)}.brand{z-index:2;color:var(--primary);align-items:center;gap:.8rem;text-decoration:none;display:flex;position:relative}.brand .who{flex-direction:column;align-items:flex-start;gap:.1rem;display:flex}.logo{flex:none;width:54px;height:auto;overflow:visible}.logo-text{fill:var(--primary);font-family:var(--serif);font-variation-settings:"SOFT" 100, "WONK" 1;font-size:29px;font-weight:400}.logo-accent,.logo-text{transform-box:fill-box;transform-origin:50%}.logo-accent{fill:var(--secondary)}.brand:hover .l-open{animation:lg-open .9s var(--ease)}.brand:hover .l-close{animation:lg-close .9s 60ms var(--ease)}.brand:hover .l-slash{animation:lg-slash .9s 30ms var(--ease)}.brand:hover .logo-text{animation:lg-a .9s .1s var(--ease)}@keyframes lg-open{30%{transform:translate(-3px)rotate(-14deg)}60%{transform:translate(1px)rotate(5deg)}}@keyframes lg-close{30%{transform:translate(3px)rotate(14deg)}60%{transform:translate(-1px)rotate(-5deg)}}@keyframes lg-slash{30%{transform:rotate(16deg)}60%{transform:rotate(-7deg)}}@keyframes lg-a{30%{transform:translateY(-3px)rotate(-7deg)}60%{transform:translateY(0)rotate(3deg)}}.brand b{font-family:var(--serif);letter-spacing:-.02em;font-size:1.3rem;font-weight:400;line-height:1.1}.brand small{font-size:var(--fs-sm);color:var(--ink-soft);letter-spacing:.04em;line-height:1.2}.hdr-right{align-items:center;gap:1.5rem;display:flex}.nav{align-items:center;gap:2.25rem;display:flex}.theme-toggle{z-index:2;border-radius:var(--pill);border:1px solid var(--line);background:var(--bg);cursor:pointer;width:2.5rem;height:2.5rem;transition:transform .45s var(--ease), border-color .3s;flex:none;padding:0;position:relative}.theme-toggle:hover{border-color:var(--secondary);transform:rotate(18deg)}:where(a,button,summary):focus-visible{outline:2px solid var(--secondary);outline-offset:3px}.theme-toggle svg{fill:none;width:1.2rem;height:1.2rem;stroke:var(--ink);stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;margin:auto;display:none;position:absolute;inset:0}.theme-toggle[data-next=ocean] .i-moon,.theme-toggle[data-next=stone] .i-sun{display:block}.nav .link{font-size:var(--fs-md);color:var(--ink-mid);padding:.3rem 0;text-decoration:none;transition:color .3s;position:relative}.nav .link:after{content:"";background:var(--secondary);transform-origin:100%;height:2px;transition:transform .45s var(--ease);position:absolute;bottom:-3px;left:0;right:0;transform:scaleX(0)}.nav .link:hover{color:var(--ink)}.nav .link:hover:after,.nav .link[aria-current=page]:after{transform-origin:0;transform:scaleX(1)}.nav .link[aria-current=page]{color:var(--ink)}.nav .btn{font-size:var(--fs-md);white-space:nowrap;padding:.55rem 1.25rem}.burger{z-index:2;border-radius:var(--pill);border:1px solid var(--line);cursor:pointer;background:var(--bg);flex:none;width:2.5rem;height:2.5rem;display:none;position:relative}.burger:before,.burger:after,.burger i{background:var(--ink);border-radius:1px;height:1.5px;margin-top:-.75px;position:absolute;top:50%;left:calc(.7rem - 1px)}.burger:before,.burger:after{content:"";width:1.1rem;transition:transform .45s var(--ease)}.burger i{transform-origin:0;width:.65rem;transition:transform .3s var(--ease), opacity .1s}.burger:before{transform:translateY(-6px)rotate(0)}.burger:after{transform:translateY(6px)rotate(0)}.open .burger:before{transform:translateY(0)rotate(45deg)}.open .burger:after{transform:translateY(0)rotate(-45deg)}.open .burger i{opacity:0;transform:scaleX(0)}@media (width<=380px){.brand small{display:none}}@media (width<=900px){.burger{display:block}.hdr-right{margin-left:auto}.site-header.hide:not(.open){transform:none}.site-header.open{backdrop-filter:none;box-shadow:none;background:0 0}.nav{z-index:1;background:var(--bg);opacity:0;pointer-events:none;visibility:hidden;transition:opacity .45s var(--ease), visibility 0s .45s;flex-direction:column;justify-content:center;align-items:flex-start;gap:.9rem;padding:2rem 1.75rem;position:fixed;inset:0}.open .nav{opacity:1;pointer-events:auto;visibility:visible;transition-delay:0s}.nav .link{font-family:var(--serif);letter-spacing:-.02em;color:var(--primary);opacity:0;transition:opacity .6s var(--ease), transform .6s var(--ease);font-size:clamp(1.7rem,7vw,2.2rem);font-weight:300;transform:translateY(24px)}.nav .btn{font-family:var(--serif);letter-spacing:-.02em;color:var(--primary);opacity:0;transition:opacity .6s var(--ease), transform .6s var(--ease);background:0 0;border:0;border-radius:0;padding:.3rem 0;font-size:clamp(1.7rem,7vw,2.2rem);font-weight:300;transform:translateY(24px)}.nav .btn:hover{color:var(--primary);background:0 0}.open .nav .btn{opacity:1;transform:none}.nav .btn{position:relative}.nav .btn:after{content:"";background:var(--secondary);transform-origin:100%;height:2px;transition:transform .45s var(--ease);position:absolute;bottom:-3px;left:0;right:0;transform:scaleX(0)}.nav .btn[aria-current=page]:after{transform-origin:0;transform:scaleX(1)}.nav .link[aria-current=page],.nav .btn[aria-current=page]{color:var(--secondary)}.open .nav .link{opacity:1;transform:none}.open .nav>:nth-child(2){transition-delay:70ms}.open .nav>:nth-child(3){transition-delay:.14s}.open .nav>:nth-child(4){transition-delay:.21s}}main[tabindex="-1"]:focus{outline:none}main{width:100%;max-width:var(--container);padding:10rem var(--gutter) 3rem;flex:1 0 auto;margin:0 auto}footer{width:100%;max-width:var(--container);padding:3rem var(--gutter);color:var(--ink-soft);font-size:var(--fs-md);flex-wrap:wrap;justify-content:space-between;gap:.5rem;margin:0 auto;display:flex}h1,h2,h3{font-family:var(--serif);letter-spacing:-.025em;font-variation-settings:"SOFT" 100, "WONK" 1;margin:0;font-weight:350;line-height:1.05}h1{font-size:clamp(3rem,8vw,6.25rem)}h2{margin-bottom:1.5rem;font-size:clamp(2rem,5vw,3.4rem)}h3{font-size:1.35rem;font-weight:400}h1{color:var(--primary)}em{color:var(--secondary);font-style:italic}.eyebrow{font-size:var(--fs-sm);letter-spacing:.16em;text-transform:uppercase;color:var(--secondary);align-items:center;gap:.6rem;margin:0 0 1.25rem;display:flex}.lead{font-size:clamp(var(--fs-lg), 2.2vw, 1.35rem);color:var(--ink-soft);max-width:38em;margin:1.75rem 0 2.25rem}section{margin-top:8rem}section[id]{scroll-margin-top:7rem}.btn{cursor:pointer;border:1px solid var(--primary);border-radius:var(--pill);background:var(--primary);color:var(--on-primary);transition:transform .4s var(--ease), background .3s, color .3s;align-items:center;gap:.7rem;padding:.85rem 1.6rem;text-decoration:none;display:inline-flex}.btn:hover{background:var(--secondary);border-color:var(--secondary);color:var(--on-secondary)}.btn.ghost{color:var(--primary);background:0 0}.btn.ghost:hover{background:var(--primary);color:var(--on-primary);border-color:var(--primary)}.row{flex-wrap:wrap;gap:.75rem;display:flex}.hero{min-height:min(78vh, var(--hero-max));flex-direction:column;justify-content:center;display:flex}.split .w{white-space:nowrap;display:inline-block}.split .ch{animation:letter 1.2s var(--ease) both;animation-delay:calc(var(--n) * 35ms + .15s);display:inline-block}@keyframes letter{0%{opacity:0;filter:blur(10px);transform:translateY(.6em)}}.word-stack{vertical-align:top;display:inline-grid}.word-stack>em{color:var(--secondary);opacity:0;filter:blur(8px);transition:opacity .45s ease, transform .6s var(--ease), filter .45s ease;grid-area:1/1;font-style:italic;transform:translateY(.35em)}.word-stack>em.on{opacity:1;filter:none;transition-delay:50ms;transform:none}.word-stack>em:after{content:"."}.slide-desc{max-width:36em;margin:1.5rem 0 2.25rem;display:grid}.slide-desc>p{opacity:0;transition:opacity .45s ease, transform .6s var(--ease);grid-area:1/1;margin:0;transform:translateY(12px)}.slide-desc>p.on{opacity:1;transition-delay:.1s;transform:none}.tagline{font-family:var(--serif);letter-spacing:-.02em;animation:fadeup .9s var(--ease) .15s both;margin:1.1rem 0 0;font-size:clamp(1.7rem,4.6vw,3.4rem);font-weight:300;line-height:1.15}.role{font-size:clamp(var(--fs-lg), 2.2vw, 1.35rem);color:var(--ink);text-wrap:balance;max-width:36em;animation:fadeup .9s var(--ease) .1s both;margin:.9rem 0 0;font-weight:500}.hero .slide-desc,.hero .slide-ctl,.hero .row{animation:fadeup .9s var(--ease) .3s both}@keyframes fadeup{0%{opacity:0;filter:blur(6px);transform:translateY(24px)}}.scroll-hint{font-size:var(--fs-sm);color:var(--ink-soft);animation:fadeup .9s var(--ease) .5s both;align-items:center;gap:.75rem;margin-top:3rem;display:flex}.scroll-hint i{background:linear-gradient(var(--ink-soft), transparent);transform-origin:top;width:1px;height:3rem;animation:2.2s ease-in-out infinite slide}@keyframes slide{0%{transform:scaleY(0)}50%{transform:scaleY(1)}to{opacity:0;transform:scaleY(1)}}.marquee{cursor:grab;gap:.75rem;width:100vw;margin:1.5rem calc(50% - 50vw) 0;display:grid;mask-image:linear-gradient(90deg,#0000,#000 12% 88%,#0000)}.mq-row{overflow:hidden}.track{touch-action:pan-y pinch-zoom;display:flex}.track span{border-radius:var(--pill);border:1px solid var(--line);background:var(--surface);font-size:var(--fs-md);white-space:nowrap;flex:none;margin-right:.75rem;padding:.5rem 1.3rem;transition:background .3s,border-color .3s}.track span:hover{background:var(--bg-soft);border-color:var(--secondary)}.stats{grid-template-columns:1fr;gap:1rem;margin-top:5rem;display:grid}@media (width>=500px){.stats{grid-template-columns:repeat(2,1fr)}}@media (width>=960px){.stats{grid-template-columns:repeat(4,1fr)}}.stat{border-radius:var(--radius);background:color-mix(in srgb, var(--primary) 9%, var(--bg));padding:1.6rem}.stat b{color:var(--primary);font-family:var(--serif);letter-spacing:-.03em;font-size:2.8rem;font-weight:350;line-height:1.1;display:block}.stat b .arr{font:400 .6em var(--sans,Inter, sans-serif);color:var(--secondary);vertical-align:.12em;margin:0 .35em}.stat span{font-size:var(--fs-md);color:var(--ink-mid)}.stat small{font-family:var(--hand);color:var(--secondary);margin-top:.5rem;font-size:1.25rem;line-height:1.2;display:block}.journey{grid-template-columns:minmax(220px,300px) 1fr;align-items:start;gap:3rem;margin-top:1.5rem;display:grid}.j-side{padding-bottom:1rem;position:sticky;top:6.5rem}.year{font-family:var(--serif);letter-spacing:-.04em;font-variant-numeric:tabular-nums;height:1em;font-size:clamp(4rem,9vw,7rem);font-weight:300;line-height:1;display:flex;overflow:hidden}.digit{width:.6em;height:1em;display:block;overflow:hidden}.digit div{transition:transform 1s var(--ease);transform:translateY(calc(var(--d,0) * -1em))}.digit span{text-align:center;height:1em;display:block}.j-co{font-family:var(--serif);min-height:2.2em;color:var(--secondary);margin:1rem 0 0;font-size:1.4rem;transition:opacity .4s}.j-co.fade{opacity:0}.j-bar{background:var(--line);border-radius:3px;width:100%;height:3px;margin-top:1.5rem;overflow:hidden}.j-bar i{height:100%;width:calc(var(--p,0) * 100%);background:var(--secondary);border-radius:3px;display:block}.j-list{gap:1rem;margin:0;padding:0;list-style:none;display:grid}.j-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);transition:transform .7s var(--ease), box-shadow .7s, border-color .7s, opacity .7s;opacity:.75;transform:scale(.97)}.j-card.active{opacity:1;border-color:color-mix(in srgb, var(--secondary) 32%, transparent);box-shadow:0 20px 50px color-mix(in srgb, var(--ink) 10%, transparent);transform:none}.j-card summary{cursor:pointer;grid-template-columns:1fr auto;align-items:center;gap:.25rem 1rem;padding:1.6rem 1.75rem;list-style:none;display:grid}.j-card summary::-webkit-details-marker{display:none}.j-card h3{font-size:clamp(1.3rem,2.6vw,1.7rem)}.j-meta{color:var(--ink-mid);font-size:var(--fs-md);grid-column:1}.j-meta .sep{display:none}.j-meta .per{display:block}.j-card summary .tags{grid-column:1/-1;margin-top:.5rem}.j-arrow{border-radius:var(--pill);border:1px solid color-mix(in srgb, var(--ink) 25%, transparent);width:2.5rem;height:2.5rem;transition:transform .5s var(--ease), background .3s;grid-area:1/2/span 2;place-items:center;line-height:1;display:grid}.j-card[open] .j-arrow{background:var(--bg);transform:rotate(180deg)}.j-card summary:hover .j-arrow{background:var(--bg)}.j-card::details-content{block-size:0;transition:block-size .6s var(--ease), content-visibility .6s allow-discrete;overflow:hidden}.j-card[open]::details-content{block-size:auto}.j-body{padding:0 1.75rem 1.75rem}.j-body .note{color:var(--secondary);font-size:var(--fs-md);margin:0 0 .8rem}.j-body .note a{color:var(--ink);text-decoration:underline;text-decoration-color:var(--secondary);text-underline-offset:3px}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.j-body ul{color:var(--ink-mid);margin:0;padding-left:1.1rem;list-style:outside}.j-body li{margin-bottom:.5rem}.j-body li::marker{color:var(--secondary)}.tags{flex-wrap:wrap;gap:.4rem;margin-top:1rem;display:flex}.tags span,.tags li{font-size:var(--fs-sm);border-radius:var(--pill);background:var(--chip);padding:.15rem .7rem}ul.tags{padding:0;list-style:none}@media (width>=600px) and (width<=889px){.cards>:last-child:nth-child(odd){grid-column:1/-1}}.cards.skills{grid-template-columns:1fr}@media (width>=640px){.cards.skills{grid-template-columns:repeat(2,1fr)}}@media (width>=1000px){.cards.skills{grid-template-columns:repeat(3,1fr)}}.skills .card .tags{gap:.5rem;margin-top:0}.skills .card .tags li{font-size:var(--fs-md);color:var(--ink-mid);padding:.25rem .85rem}@media (width<=820px){.journey{grid-template-columns:1fr;gap:1rem}.j-side{display:none}}.cards{grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:1rem;display:grid}@media (width>=600px){.cards.projects{grid-template-columns:repeat(2,1fr)}}@media (width>=900px){.cards.projects{grid-template-columns:repeat(3,1fr)}}@media (width>=600px){.cards.projects.lead-first>:first-child{grid-column:1/-1}}@media (width>=600px) and (width<=889px){.cards.projects.lead-first>:last-child:nth-child(odd){grid-column:auto}}@media (width>=900px){.cards.projects.lead-first{grid-template-columns:minmax(0,5fr) minmax(0,7fr)}.cards.projects.lead-first>:first-child{grid-area:span 2}}.card{border-radius:var(--radius);background:var(--surface);border:1px solid var(--line);flex-direction:column;padding:1.9rem;display:flex;position:relative}.card:before{content:"";border-radius:inherit;pointer-events:none;background:color-mix(in srgb, var(--secondary) 55%, transparent);-webkit-mask-composite:xor;clip-path:inset(0 100% 0 0);transition:clip-path .7s var(--ease);padding:1px;position:absolute;inset:-1px;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor,source-over;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}.card h3{margin-bottom:.7rem}@media (hover:hover){.card:hover:before{clip-path:inset(0)}}.card p{color:var(--ink-mid);margin:0}.card p+p{margin-top:.75rem}.card .more{min-height:2.75rem;font-size:var(--fs-md);align-self:flex-start;align-items:center;margin-top:auto;display:inline-flex}.card .tags{margin-top:auto;margin-bottom:.5rem;padding-top:1rem}.card .tags~.more{margin-top:0}.ext:after{content:"";vertical-align:-.1em;width:.9em;height:.9em;-webkit-mask:var(--ext-icon) center / contain no-repeat;mask:var(--ext-icon) center / contain no-repeat;background:currentColor;flex:none;margin-left:.25em;display:inline-block}.card p a{color:var(--ink-mid);text-decoration-skip-ink:none;text-underline-offset:3px;text-decoration:underline 1px;transition:color .3s}.card p a:hover{color:var(--secondary)}.card .meta a{color:inherit;text-decoration:none;transition:color .3s}.card .meta a:hover{color:var(--secondary)}.card .more{color:var(--secondary);text-decoration:none}button.more{font:inherit;font-size:var(--fs-md);cursor:pointer;background:0 0;border:0;padding:0}.card .more:hover{text-decoration:underline}.card .meta{font-size:var(--fs-sm);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);margin:-.3rem 0 .8rem;font-weight:500}.gallery{width:min(100% - 2rem,70rem);max-width:none;max-height:calc(100dvh - 2rem);color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);margin:auto;padding:1.25rem;overflow:auto}.gallery[open]{animation:gallery-in .3s var(--ease);flex-direction:column;gap:.9rem;display:flex}.gallery::backdrop{background:var(--scrim);animation:.3s gallery-fade}@keyframes gallery-in{0%{opacity:0;transform:translateY(.75rem)}}@keyframes gallery-fade{0%{opacity:0}}html:has(.gallery[open]){scrollbar-gutter:stable;overflow:hidden}.gallery-head{justify-content:space-between;align-items:center;gap:1rem;display:flex}.gallery-head h4{font-family:var(--serif);color:var(--ink);margin:0;font-size:1.35rem;font-weight:400;line-height:1.2}.gallery-btn{width:2.75rem;height:2.75rem;font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line);cursor:pointer;border-radius:50%;flex:none;place-items:center;padding:0;font-size:1.15rem;line-height:1;transition:border-color .3s;display:inline-grid}.gallery-btn:hover{border-color:var(--secondary)}.gallery-btn:focus-visible{outline:2px solid var(--secondary);outline-offset:3px}.gallery-head .gallery-btn{background:0 0;border-color:#0000;transition:color .3s}.gallery-head .gallery-btn:hover{color:var(--secondary)}.gallery-stage{align-items:center;gap:.75rem;min-height:0;display:flex}.gallery-slides{flex:1;place-items:center;min-width:0;display:grid}.gallery-item{place-items:center;min-width:0;max-width:100%;margin:0;display:grid}.gallery-item[hidden]{display:none}.gallery-item img,.gallery-item video{object-fit:contain;border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--surface);max-width:100%;height:auto;max-height:calc(100dvh - 15rem);display:block}.gallery-item.narrow img{width:auto}.gallery-item video{width:100%}.video-wrap{max-width:100%;display:grid;position:relative}.pp.video-toggle{background:var(--surface);position:absolute;bottom:.75rem;right:.75rem}.card .gallery-caption{text-align:left;color:var(--ink);flex-wrap:wrap;justify-content:flex-start;gap:.25rem .9rem;margin:0;display:flex}.gallery-count{color:var(--ink-soft);font-variant-numeric:tabular-nums}.card .gallery-credit{text-align:left;font-size:var(--fs-sm);color:var(--ink-soft);margin:0}@media (width<=40rem){.gallery{width:calc(100% - 1rem);max-height:calc(100dvh - 1rem);padding:.9rem}.gallery-stage{flex-wrap:wrap;justify-content:center}.gallery-slides{flex:1 0 100%;order:-1}.gallery-item img,.gallery-item video{max-height:calc(100dvh - 17rem)}}@media (prefers-reduced-motion:reduce){.gallery[open],.gallery::backdrop{animation:none}}.cta{text-align:center;border-radius:var(--radius);background:var(--primary);color:var(--on-primary);padding:5rem 1.5rem}.cta em{color:color-mix(in srgb, var(--on-primary) 65%, var(--primary))}.cta .btn{background:var(--on-primary);color:var(--primary);border-color:var(--on-primary)}.cta .btn:hover{background:var(--secondary);border-color:var(--secondary);color:var(--on-secondary)}@media (width<=700px){main{padding-bottom:0}footer{padding-block:3rem 2rem}section.cta{margin-top:3rem}.hero .eyebrow{margin-bottom:1rem}.hero .tagline{margin-top:1rem}.marquee{gap:.5rem;margin-top:2rem;mask-image:linear-gradient(90deg,#0000,#000 6% 94%,#0000)}.track span{font-size:var(--fs-sm);margin-right:.5rem;padding:.4rem 1rem}.hero main{padding-top:7rem}.j-card{border-radius:1.25rem}.j-card summary{gap:.2rem .75rem;padding:1.1rem 1.25rem}.j-body{padding:0 1.25rem 1.25rem}.stat,.card{padding:1.25rem}.j-body li{margin-bottom:.4rem}.j-card summary .tags{margin-top:.4rem}.j-card:not([open]) summary .tags{max-height:3.75rem;overflow:hidden}section{margin-top:4.5rem}.stats{margin-top:2.5rem}.cta{padding:3.5rem 1rem}}.cta h2{color:inherit;font-size:clamp(2.4rem,7vw,5rem)}.contact-wrap .row{margin-top:2rem}.contact-intro{position:relative}.contact-art{width:min(100%,32rem);margin-top:2rem}@media (width>=960px){.contact-intro{grid-template-columns:var(--hero-col) 1fr;align-items:center;gap:2rem;display:grid}.contact-art{justify-self:end;width:min(100%,34rem);margin:0}}.about-portrait{aspect-ratio:3/4;border-radius:var(--radius);background:var(--surface);border:1px solid var(--line);cursor:pointer;width:min(100%,20rem);margin:2rem 0 0;position:relative;overflow:hidden}.about-portrait:focus-visible{outline:2px solid var(--secondary);outline-offset:3px}.about-portrait img{object-fit:cover;filter:grayscale();width:100%;height:100%;transition:filter .6s;display:block}.about-portrait:hover img,.about-portrait:focus img{filter:none}@media (width>=640px){.hero.about-hero{flex-direction:row;justify-content:space-between;align-items:center;gap:3rem}.about-hero .about-text{flex:1;min-width:0}.about-portrait{flex:none;width:min(34%,22rem);margin:0}.hero.about-hero{min-height:min(60vh, var(--hero-max))}}.about-hero+.cards{margin-top:2rem}@media (width<=639px){.hero.about-hero{min-height:0}.about-hero .lead{margin:1rem 0 0}.about-portrait{aspect-ratio:1;width:100%;margin-top:1.5rem}.about-portrait img{object-position:50% 20%}.about-hero+.cards{margin-top:3rem}}.ca-fill{fill:var(--bg);stroke:none}.ca-trail{stroke:var(--secondary);stroke-width:2.2px;stroke-linecap:round;stroke-dasharray:1 9;fill:none}.contact-art svg{width:100%;height:auto;display:block;overflow:visible}.contact-grid{gap:1rem;margin-top:3.5rem;display:grid}@media (width>=840px){.contact-grid{grid-template-columns:1fr 1fr;gap:1.25rem}}.contact-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);align-items:center;gap:1.1rem;padding:1.2rem 1.3rem;transition:border-color .3s,background .3s;display:flex;position:relative}.contact-card:hover{border-color:color-mix(in srgb, var(--ink) 18%, var(--line))}.contact-card .ico{border-radius:var(--pill);background:var(--chip);width:3rem;height:3rem;color:var(--ink);flex:none;place-items:center;transition:background .3s,color .3s;display:grid}.contact-card:hover .ico{color:var(--secondary)}.contact-card .txt{flex:1;gap:.15rem;min-width:0;display:grid}.contact-card small{font-size:var(--fs-sm);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);font-weight:500}.contact-card a{color:var(--ink);font-family:var(--serif);overflow-wrap:break-word;font-size:clamp(1rem,4.4vw,1.35rem);text-decoration:none}.contact-card a:after{content:"";border-radius:inherit;position:absolute;inset:0}.contact-card i,.contact-card .copy{border-radius:var(--pill);border:1px solid var(--line);width:2.25rem;height:2.25rem;color:var(--ink-mid);background:0 0;flex:none;place-items:center;padding:0;font-style:normal;transition:color .3s,border-color .3s;display:grid;position:relative}.contact-card i svg,.contact-card .copy svg{width:1rem;height:1rem}.contact-card:hover i{border-color:var(--secondary);color:var(--secondary)}.contact-card .copy{z-index:1;cursor:pointer}.contact-card .copy:before{content:"";position:absolute;inset:-4px}.contact-card .copy .i-check,.contact-card .copy.done .i-copy{display:none}.contact-card .copy.done .i-check{display:block}.contact-card .copy.done,.contact-card .copy:hover{border-color:var(--secondary);color:var(--secondary)}@media (width<=380px){.contact-card{flex-wrap:wrap}.contact-card:has(.copy) .txt{flex-basis:calc(100% - 4.1rem)}.contact-card .copy{margin-left:4.1rem}}.cta .row{justify-content:center}@media (prefers-reduced-motion:no-preference){html.js-reveal .reveal{opacity:0;filter:blur(6px);transition:opacity 1s var(--ease), transform 1s var(--ease), filter 1s var(--ease);transition-delay:calc(var(--i,0) * 90ms);transform:translateY(30px)}}html.js-reveal .reveal.in{opacity:1;filter:none;transform:none}@keyframes out{to{opacity:0;filter:blur(10px);transform:translateY(-24px)}}@keyframes in{0%{opacity:0;filter:blur(10px);transform:translateY(32px)}}::view-transition-old(page){animation:out .45s var(--ease) both}::view-transition-new(page){animation:in .7s var(--ease) .15s both}main{view-transition-name:page}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}::view-transition-old(page),::view-transition-new(page){animation:none}.reveal,.split .ch{opacity:1;filter:none;transform:none}}.hero{touch-action:pan-y;position:relative}.hero-bg{z-index:-1;pointer-events:none;width:100vw;margin-left:-50vw;position:absolute;top:0;bottom:0;left:50%;overflow:clip visible}.hb-ink{inset:calc(50% + 3.5rem) auto auto;right:var(--art-right);width:var(--art);aspect-ratio:1;display:block;position:absolute;transform:translateY(-50%)}.hb-ink svg{width:100%;height:100%;overflow:visible}.ink{stroke:none;opacity:.55}.ink.main{fill:var(--primary)}.ink.sec{fill:var(--secondary);opacity:.68}.ink.faint{opacity:.22}.ink.sec.faint{opacity:.4}.ink-reveal{stroke-dasharray:1 1;stroke-dashoffset:1px}.scene.active .ink-reveal{animation:inkdraw var(--dur) linear var(--delay) forwards}@keyframes inkdraw{to{stroke-dashoffset:0}}.scene{opacity:0;transition:opacity .45s}.scene.active:not(.out){opacity:1}.scene .sec{stroke:var(--secondary);opacity:.8}.scene text{stroke:none;fill:var(--ink-soft);font-family:var(--hand);opacity:0;font-size:22px}.scene text.cap{fill:var(--primary);font-size:40px;font-weight:600}.scene text.sub{fill:var(--ink-soft);font-size:24px}.scene text.lbl{fill:var(--secondary);font-size:22px}.scene text.num{fill:var(--primary);font-size:54px;font-weight:600}.scene .flag{fill:none;stroke:var(--secondary);stroke-width:2.2px;stroke-linejoin:round;opacity:0}.scene.active .flag{animation:flagin .5s ease var(--td,2.4s) forwards}.scene.active text{animation:fadein .5s ease var(--td,2.4s) forwards}@keyframes flagin{to{opacity:.8}}@keyframes fadein{to{opacity:.85}}@media (width<=959px){.hero .scroll-hint{display:none}.hero .slide-desc{margin:1rem 0 1.5rem}.hero .row{flex-wrap:nowrap;gap:.75rem}.hero .row .btn{white-space:nowrap;font-size:var(--fs-md);flex:0 auto;justify-content:center;padding:.85rem 1.25rem}.hero .hero-foot{justify-content:flex-start}.hero-foot .ctl{margin-left:0}.hero:has(.hero-bg){justify-content:flex-start;min-height:0}.hero-bg{z-index:auto;order:1;width:auto;margin:2rem 0 0;position:static}.hb-ink{opacity:.85;width:min(100%,32rem);position:relative;top:auto;right:auto;transform:none}.hero .hero-foot{order:2;margin-top:1.5rem}.hb-ink .scene{transform-box:view-box;transform-origin:0 100%}.hb-ink .scene[data-scene=site]{translate:-40px;scale:1.03}.hb-ink .scene[data-scene=blocks]{translate:-88px;scale:1.05}.hb-ink .scene[data-scene=mfe]{translate:-86px;scale:1.09}.hb-ink .scene[data-scene=git]{translate:-64px;scale:1.06}}@media (width<=639px){.hero .row{flex-direction:column;gap:.75rem}.hero .row .btn{flex:none;width:100%;min-height:3.25rem;padding:.8rem 1.5rem}}@media (width>=960px){.hero>:not(.hero-bg):not(.hero-foot){max-width:var(--hero-col)}.hero.solo>:not(.hero-bg):not(.hero-foot){max-width:none}.tagline{white-space:nowrap;font-size:clamp(1.7rem,3.7vw,3.4rem)}}@media (prefers-reduced-motion:reduce){.ink-reveal{stroke-dashoffset:0}.scene text{opacity:.85}}.tech{color:var(--primary);background:linear-gradient(transparent 58%, color-mix(in srgb, var(--secondary) 24%, transparent) 58%);border-radius:2px;padding:0 .12em;font-weight:500}.pp{border-radius:var(--pill);border:1px solid var(--line);width:2.5rem;height:2.5rem;color:var(--ink-mid);cursor:pointer;background:0 0;flex:none;place-items:center;transition:border-color .3s,color .3s,background .3s;display:grid}.pp:hover{border-color:var(--secondary);color:var(--ink);background:var(--bg-soft)}.pp .ic{width:.7rem;height:.8rem;position:relative}.pp .ic:before,.pp .ic:after{content:"";background:currentColor;border-radius:1px;width:.2rem;position:absolute;top:0;bottom:0}.pp .ic:before{left:.04rem}.pp .ic:after{right:.04rem}.pp[aria-pressed=true] .ic:before{background:0 0;border-top:.4rem solid #0000;border-bottom:.4rem solid #0000;border-left:.62rem solid;border-radius:0;width:0;height:0;bottom:auto;left:.12rem}.pp[aria-pressed=true] .ic:after{display:none}.segs{flex:none;gap:.4rem;width:13rem;max-width:42vw;display:flex}.seg{cursor:pointer;background:0 0;border:0;flex:1;height:2.75rem;padding:0;position:relative}.seg:before,.seg:after{content:"";border-radius:2px;height:2px;margin-top:-1px;position:absolute;top:50%;left:0}.seg:before{background:var(--line);transition:background .3s;right:0}.seg:after{background:var(--secondary);width:0}.seg:hover:before{background:color-mix(in srgb, var(--ink) 28%, var(--line))}.seg.done:after{width:100%}.seg.on:after{animation:segfill var(--hold,9s) linear forwards}@keyframes segfill{to{width:100%}}.hero.paused .hb *,.hero.paused .hb text,.hero.paused .seg:after,.hero.offscreen .hb *,.hero.offscreen .hb text,.hero.offscreen .seg:after,.hero.offscreen .scroll-hint i,.tab-hidden *,.tab-hidden :before,.tab-hidden :after{animation-play-state:paused!important}@media (prefers-reduced-motion:reduce){.seg.on:after{width:100%;animation:none}}@media (width>=960px){.hero{min-height:min(max(calc(100vh - 19.5rem), 36rem), var(--hero-max));justify-content:center}.hero.solo:not(.about-hero){min-height:0}.hb-ink{top:calc(50% - var(--art) * .555 - var(--art-lift));transform:none}}.hero-foot{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem 1.5rem;width:100%;margin-top:3rem;display:flex}.hero-foot .scroll-hint{margin-top:0}.ctl{animation:fadeup .9s var(--ease) .5s both;align-items:center;gap:1rem;margin-left:auto;display:flex}.swipe-track{visibility:hidden;pointer-events:none;display:flex;position:absolute;inset:0;overflow:hidden}.swipe-track>div{flex:0 0 100%;min-width:0}.hero.dragging{user-select:none;cursor:grabbing}.contact-card .txt{grid-template-columns:minmax(0,1fr)}@media (width<=959px){.contact-wrap{flex-direction:column;display:flex}.contact-intro{display:contents}.contact-grid{margin-top:2rem}.contact-art{order:2;margin-top:2.5rem}}.j-card:not(.active) .note{color:color-mix(in srgb, var(--secondary) 50%, var(--ink))}@media (width<=380px){.contact-card{gap:.8rem;padding:1rem}.contact-card .ico{width:2.5rem;height:2.5rem}.contact-card:has(.copy) .txt{flex-basis:calc(100% - 3.3rem)}.contact-card .copy{margin-left:3.3rem}}
