@font-face{font-family:Instrument Sans;font-style:normal;font-weight:400 700;font-stretch:100%;font-display:swap;src:url(../media/c7f47671e39f7787-s.06cvo47x4w1en.woff2)format("woff2");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:Instrument Sans;font-style:normal;font-weight:400 700;font-stretch:100%;font-display:swap;src:url(../media/f06bf9da926bae75-s.p.0pz0x0eczp58u.woff2)format("woff2");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:Instrument Sans Fallback;src:local(Arial);ascent-override:94.42%;descent-override:24.33%;line-gap-override:0.0%;size-adjust:102.74%}.instrument_sans_2b37563f-module__bo4h_G__className{font-family:Instrument Sans,Instrument Sans Fallback;font-style:normal}.instrument_sans_2b37563f-module__bo4h_G__variable{--font-family-sans:"Instrument Sans", "Instrument Sans Fallback"}
@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/5ce348bf30bf5439-s.0ee55_hj9qcer.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/4fa387ec64143e14-s.0.qu-9752pffj.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/6306c77e7c8268e4-s.0mao5jbfbduzp.woff2)format("woff2");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/7d817b4c03b0c5f1-s.0uzt.a6d44yda.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/bbc41e54d2fcbd21-s.0mvwgmnhv29no.woff2)format("woff2");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:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/797e433ab948586e-s.p.09zddjkbdep5a.woff2)format("woff2");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:Geist Mono Fallback;src:local(Arial);ascent-override:74.67%;descent-override:21.92%;line-gap-override:0.0%;size-adjust:134.59%}.geist_mono_8d43a2aa-module__8Li5zG__className{font-family:Geist Mono,Geist Mono Fallback;font-style:normal}.geist_mono_8d43a2aa-module__8Li5zG__variable{--font-geist-mono:"Geist Mono", "Geist Mono Fallback"}
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:root,:host{--font-mono:var(--font-geist-mono);--spacing:.25rem;--default-font-family:var(--font-family-sans);--default-mono-font-family:var(--font-geist-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.static{position:static}.sticky{position:sticky}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.h-full{height:100%}.min-h-full{min-height:100%}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.flex-col{flex-direction:column}.rounded{border-radius:.25rem}.uppercase{text-transform:uppercase}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}}:root{--background:#050505;--foreground:#f4f4f4;--muted:#c4c4c4;--line:#343434;--content-max:68rem;--surface:#0a0a0a;--focus-ring:#8ab4ff;--rule:var(--foreground)}@supports (color:color-mix(in lab, red, red)){:root{--rule:color-mix(in srgb, var(--foreground) 22%, transparent)}}:root{--track-display:-.026em;--track-title:-.02em;--track-body:.008em;--track-caps:.11em;--lead-display:.9;--lead-hero-name:1;--lead-hero-typer:1.22;--track-hero-name:-.02em;--track-hero-typer:-.008em;--gap-hero-name-typer:.72rem;--lead-title:1;--lead-nav:1.12;--lead-body:1.58;--lead-copy:1.55;--lead-long:1.72}:root[data-theme=light]{--background:#fafafa;--foreground:#111;--muted:#555;--line:#d4d4d4;--surface:#f0f0f0}:root[data-theme=light] .browser-intro-overlay{color:#888;background:#fafafa}:root[data-theme=light] .browser-intro-window{background:#fafafa;border-color:#d4d4d4}:root[data-theme=light] .browser-intro-chrome{background:#f0f0f0;border-color:#d4d4d4}:root[data-theme=light] .browser-intro-viewport{background:#fafafa}:root[data-theme=light] .browser-intro-preview-blocks span{background:linear-gradient(90deg,#ececec 0%,#e0e0e0 100%);border-color:#d4d4d4}:root[data-theme=light] .project-highlight,:root[data-theme=light] .project-work-jump-card{background:var(--surface);border-color:var(--line)}:root[data-theme=light] .project-highlight blockquote{color:#222}:root[data-theme=light] .project-content,:root[data-theme=light] .project-section-body{color:#333}:root[data-theme=light] .play-embed-wrap,:root[data-theme=light] .skip-link{background:var(--surface);border-color:var(--line)}:root[data-theme=light] .not-found-link:hover,:root[data-theme=light] .resume-cta:hover{background:var(--surface);border-color:#999}:root[data-theme=light] .resume-detail{border-color:var(--line)}body{background:var(--background);color:var(--foreground);font-family:var(--font-family-sans), system-ui, sans-serif;line-height:var(--lead-body);letter-spacing:var(--track-body)}body:after{content:"";z-index:9999;pointer-events:none;opacity:.028;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");background-repeat:repeat;background-size:256px 256px;position:fixed;inset:0}:root[data-theme=light] body:after{opacity:.04;mix-blend-mode:multiply}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}@keyframes fadeUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes sectionScrollIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes digitFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}a{color:inherit}.skip-link{z-index:1000;border:1px solid var(--line);background:var(--surface);color:var(--foreground);border-radius:.45rem;padding:.55rem .75rem;text-decoration:none;position:absolute;top:-3rem;left:.75rem}.skip-link:focus-visible{top:.75rem}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.page-shell{width:min(var(--content-max), 100%);margin:0 auto;padding:1.2rem 1.4rem 4.5rem}html.browser-intro-lock,html.browser-intro-lock body{overflow:hidden}.browser-intro-overlay{z-index:10000;color:#5a5a5a;perspective:900px;pointer-events:none;opacity:1;background:#fff;flex-direction:column;justify-content:center;align-items:center;gap:1.35rem;display:flex;position:fixed;inset:0}.browser-intro-stage{transform-origin:50%;will-change:transform;backface-visibility:hidden;transform:scale(.38)}.browser-intro-window{background:#0a0a0a;border:1px solid #d8d8d8;border-radius:.7rem;width:min(31rem,90vw);overflow:hidden;box-shadow:0 32px 80px #00000024,0 12px 28px #00000014,0 0 0 1px #0000000f}.browser-intro-chrome{border-bottom:1px solid var(--line);background:#111;align-items:center;gap:.65rem;padding:.55rem .7rem;display:flex}.browser-intro-traffic{gap:.35rem;display:flex}.browser-intro-traffic span{background:#3a3a3a;border-radius:50%;width:.52rem;height:.52rem}.browser-intro-traffic span:first-child{background:#5c5c5c}.browser-intro-traffic span:nth-child(2){background:#4a4a4a}.browser-intro-traffic span:nth-child(3){background:#6a6a6a}.browser-intro-url{letter-spacing:.04em;color:var(--muted);white-space:nowrap;text-overflow:ellipsis;flex:1;margin:0;font-size:.72rem;overflow:hidden}.browser-intro-viewport{background:#050505;padding:.85rem .9rem 1rem}.browser-intro-preview{gap:.45rem;display:grid}.browser-intro-preview-header{color:var(--muted);letter-spacing:.06em;text-transform:uppercase;justify-content:space-between;align-items:center;gap:.5rem;font-size:.5rem;display:flex}.browser-intro-preview-name{font-size:1.35rem;line-height:var(--lead-display);letter-spacing:var(--track-display);margin:.15rem 0 0;font-weight:400}.browser-intro-preview-line{color:var(--muted);margin:0;font-size:.58rem;line-height:1.4}.browser-intro-preview-blocks{gap:.35rem;margin-top:.35rem;display:grid}.browser-intro-preview-blocks span{border:1px solid var(--line);background:linear-gradient(90deg,#121212 0%,#1a1a1a 100%);border-radius:.25rem;height:1.35rem;display:block}.browser-intro-preview-blocks span:nth-child(2){height:2.4rem}.browser-intro-status{letter-spacing:.12em;text-transform:uppercase;color:#5a5a5a;margin:0;font-size:.72rem}.browser-intro-loader{background:#e2e2e2;border-radius:999px;width:min(12rem,42vw);height:2px;overflow:hidden}.browser-intro-loader-fill{transform-origin:0;border-radius:inherit;will-change:transform;background:linear-gradient(90deg,#8a8a8a 0%,#1a1a1a 100%);width:100%;height:100%;display:block;transform:scaleX(0)}.browser-intro-status,.browser-intro-loader,.browser-intro-chrome{will-change:opacity}@media (max-width:639px){.browser-intro-stage{transform:scale(.44)}.browser-intro-window{width:min(28rem,88vw)}.browser-intro-overlay{perspective:720px;gap:1.05rem}.browser-intro-preview-name{font-size:1.2rem}}@media (prefers-reduced-motion:reduce){.browser-intro-overlay{display:none}}.not-found{align-items:end;min-height:calc(60svh - 8rem);margin-top:3rem;animation:.52s ease-out both fadeUp;display:grid;position:relative}.not-found-content{z-index:1;flex-direction:column;align-items:flex-start;display:flex;position:relative}.not-found-label{text-transform:uppercase;letter-spacing:var(--track-caps);color:var(--muted);margin-bottom:.75rem;font-size:.78rem}.not-found-code{letter-spacing:var(--track-display);color:var(--line);cursor:default;gap:.02em;margin-top:3rem;font-size:clamp(5rem,14vw,10rem);font-weight:400;line-height:1;display:flex}.not-found-digit{transition:color .5s;display:inline-block}.not-found-code:hover .not-found-digit{color:var(--foreground)}.not-found-code:hover .not-found-digit:nth-child(2){color:var(--muted)}.not-found-title{font-size:clamp(1.8rem,4vw,3rem);line-height:var(--lead-title);letter-spacing:var(--track-title);text-wrap:balance;margin-top:0}.not-found-body{color:var(--muted);max-width:34ch;line-height:var(--lead-copy);text-wrap:pretty;margin-top:.65rem}.not-found-link{border:1px solid var(--line);border-radius:.45rem;align-items:center;gap:.4rem;margin-top:1.8rem;padding:.85rem 1.15rem;font-size:.92rem;text-decoration:none;transition:border-color .2s,background .2s,gap .28s;display:inline-flex}.not-found-link:after{content:"←";opacity:0;font-size:.88em;transition:opacity .22s,transform .28s cubic-bezier(.25,.46,.45,.94);display:inline-block;transform:translate(4px)}.not-found-link:hover{background:var(--surface);border-color:#5a5a5a;gap:.55rem}.not-found-link:hover:after{opacity:1;transform:translate(0)}.not-found-link:focus-visible{outline-offset:3px;outline:2px solid #8ab4ff}@media (min-width:768px){.not-found{grid-template-columns:1fr auto;align-items:end;gap:3rem;min-height:calc(55svh - 6rem);margin-top:4rem}.not-found-code{opacity:.18;align-self:end;margin-top:0;font-size:clamp(8rem,16vw,14rem);transition:opacity .6s}.not-found-code:hover{opacity:1}}@media (prefers-reduced-motion:no-preference){.not-found-digit{animation:4.5s ease-in-out infinite digitFloat}.not-found-digit:first-child{animation-delay:0s}.not-found-digit:nth-child(2){animation-delay:-1.5s}.not-found-digit:nth-child(3){animation-delay:-3s}.not-found-link:active{transform:scale(.97)}}html.home-intro-wait .home-page .site-kicker,html.home-intro-wait .home-page .site-nav-list li,html.home-intro-wait .home-page .hero-name,html.home-intro-wait .home-page .hero-typer,html.home-intro-wait .home-page .hero-tagline,html.home-intro-wait .home-page #work>h2,html.home-intro-wait .home-page #work>.work-list>.work-item{opacity:0}.home-page.home-entrance-active .site-header,.home-page.home-entrance-active .hero,.home-page.home-entrance-active .hero-tagline,.home-page.home-entrance-active .work:not(.work-drafts)>h2,.home-page.home-entrance-active .work:not(.work-drafts)>.work-list>.work-item{animation:none!important}.home-page.home-entrance-active:not(.home-entrance-done) .site-kicker,.home-page.home-entrance-active:not(.home-entrance-done) .site-nav-list li,.home-page.home-entrance-active:not(.home-entrance-done) .hero-name,.home-page.home-entrance-active:not(.home-entrance-done) .hero-typer,.home-page.home-entrance-active:not(.home-entrance-done) .hero-tagline,.home-page.home-entrance-active:not(.home-entrance-done) #work>h2,.home-page.home-entrance-active:not(.home-entrance-done) #work>.work-list>.work-item{opacity:0}.home-page.home-entrance-done:not(.home-entrance-skipped) .site-header,.home-page.home-entrance-done:not(.home-entrance-skipped) .hero,.home-page.home-entrance-done:not(.home-entrance-skipped) .site-kicker,.home-page.home-entrance-done:not(.home-entrance-skipped) .site-nav-list li,.home-page.home-entrance-done:not(.home-entrance-skipped) .hero-name,.home-page.home-entrance-done:not(.home-entrance-skipped) .hero-typer,.home-page.home-entrance-done:not(.home-entrance-skipped) .hero-tagline,.home-page.home-entrance-done:not(.home-entrance-skipped) #work>h2,.home-page.home-entrance-done:not(.home-entrance-skipped) #work>.work-list>.work-item{opacity:1;transform:none;animation:none!important}.site-header{justify-content:space-between;align-items:flex-start;gap:1.5rem;margin-bottom:2.8rem;animation:.42s ease-out both fadeUp;display:flex}.site-header-left{flex-direction:column;align-items:flex-start;gap:.6rem;display:flex}.site-kicker{color:var(--muted);letter-spacing:.02em;font-size:.8rem}.theme-toggle{border:1px solid var(--line);width:1.75rem;height:1.75rem;color:var(--muted);cursor:pointer;background:0 0;border-radius:.35rem;justify-content:center;align-items:center;padding:0;transition:color .2s,border-color .2s,transform .12s;display:inline-flex;position:relative}.theme-toggle:before{content:"";position:absolute;inset:-.75rem}.theme-toggle:hover{color:var(--foreground);border-color:#5a5a5a}.theme-toggle:active{transform:scale(.92)}.theme-toggle:focus-visible{outline-offset:3px;outline:2px solid #8ab4ff}.theme-toggle-icon{display:block}.theme-toggle-placeholder{width:1.75rem;height:1.75rem}.site-nav-list{text-align:right;font-size:clamp(1.02rem,1.9vw,1.4rem);line-height:var(--lead-nav);gap:.18rem;margin:0;padding:0;font-weight:500;list-style:none;display:grid}.site-nav-list a{padding:.72rem 0;text-decoration:none;transition:opacity .18s,transform .22s;display:inline-block}@media (prefers-reduced-motion:no-preference){.site-nav-list a:hover,.site-nav-list a:focus-visible{opacity:.72;transform:translate(-3px)}.site-nav-list a:active{opacity:.52;transform:translate(-1px)scale(.98)}}@media (prefers-reduced-motion:reduce){.site-nav-list a:hover,.site-nav-list a:focus-visible{opacity:.68}}a:focus-visible,button:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px;border-radius:.2rem}.hero{margin-bottom:3.3rem;animation:.5s ease-out 90ms both fadeUp}.project-page .site-header{border-bottom:1px solid var(--line);margin-bottom:0;padding-bottom:1.15rem}.project-page .project-topbar{margin-top:1rem;margin-bottom:.15rem}.project-page .project-hero{text-align:left;flex-direction:column;align-items:flex-start;margin-top:1rem;padding-top:1.35rem;display:flex}@media (min-width:640px){.project-page .project-hero{padding-top:1.65rem}}.project-page .project-hero-title{font-size:clamp(2.35rem,6.8vw,4.85rem);font-weight:400;line-height:var(--lead-title);letter-spacing:var(--track-display);color:var(--foreground);text-align:left;overflow-wrap:break-word;text-wrap:balance;align-self:stretch;margin:0}.project-page .project-hero-lede{max-width:50ch;font-size:clamp(1.02rem,2.1vw,1.22rem);line-height:var(--lead-body);color:var(--muted);text-align:left;text-wrap:pretty;align-self:stretch;margin:1rem 0 0}.hero-name{font-size:clamp(2.85rem,8.1vw,6.7rem);line-height:var(--lead-hero-name);letter-spacing:var(--track-hero-name);white-space:nowrap}.hero-typer{margin-top:var(--gap-hero-name-typer);max-width:min(100%,36rem);min-height:1.45em;font-size:clamp(1.15rem,2.6vw,1.65rem);line-height:var(--lead-hero-typer);letter-spacing:var(--track-hero-typer);color:var(--foreground);font-weight:500}.hero-typer-text{white-space:pre-wrap}.hero-typer-cursor{color:var(--muted);opacity:0;margin-left:1px;font-weight:300;transition:opacity 80ms}.hero-typer-cursor--on{opacity:1}.hero-tagline{color:var(--muted);max-width:44ch;font-size:1.03rem;line-height:var(--lead-body);text-wrap:pretty;margin-top:1rem}@media (prefers-reduced-motion:no-preference){.hero-tagline{opacity:0;animation:.58s ease-out .2s both fadeUp}}.work,.about{max-width:60rem}.about{animation:.52s ease-out .16s both fadeUp}.work h2,.about h2{text-transform:uppercase;letter-spacing:var(--track-caps);color:var(--muted);margin-bottom:.75rem;font-size:.78rem}.work-list{border-top:1px solid var(--line)}.work-item{border-top:1px solid var(--line);padding:1.8rem 0 2rem}.work-item a{transition:transform .14s;display:block}@media (prefers-reduced-motion:no-preference){.work:not(.work-drafts)>h2{opacity:0;animation:.48s ease-out .1s both fadeUp}.work-drafts>h2{opacity:0;animation:.48s ease-out 60ms both fadeUp}.work:not(.work-drafts)>.work-list>.work-item{opacity:0;animation:.56s ease-out both fadeUp}.work:not(.work-drafts)>.work-list>.work-item:first-child{animation-delay:.14s}.work:not(.work-drafts)>.work-list>.work-item:nth-child(2){animation-delay:.2s}.work:not(.work-drafts)>.work-list>.work-item:nth-child(3){animation-delay:.26s}.work:not(.work-drafts)>.work-list>.work-item:nth-child(4){animation-delay:.32s}.work:not(.work-drafts)>.work-list>.work-item:nth-child(5){animation-delay:.38s}.work:not(.work-drafts)>.work-list>.work-item:nth-child(6){animation-delay:.44s}.work:not(.work-drafts)>.work-list>.work-item:nth-child(7){animation-delay:.5s}.work:not(.work-drafts)>.work-list>.work-item:nth-child(8){animation-delay:.56s}.work:not(.work-drafts)>.work-list>.work-item:nth-child(n+9){animation-delay:.62s}.work-drafts>.work-list>.work-item{opacity:0;animation:.56s ease-out both fadeUp}.work-drafts>.work-list>.work-item:first-child{animation-delay:.12s}.work-drafts>.work-list>.work-item:nth-child(2){animation-delay:.18s}.work-drafts>.work-list>.work-item:nth-child(3){animation-delay:.24s}.work-drafts>.work-list>.work-item:nth-child(n+4){animation-delay:.3s}.work-item a:active{transform:scale(.992)}}.work-item:first-child{border-top:none}.work-item h3{font-size:clamp(1.85rem,3.8vw,2.85rem);line-height:var(--lead-title);letter-spacing:var(--track-title);overflow-wrap:break-word;text-wrap:balance}.work-item p{color:var(--muted);font-size:1.01rem;line-height:var(--lead-copy);text-wrap:pretty;margin-top:.45rem}.play-hero{margin-bottom:2rem}.play-lede{max-width:42ch}.play-section{max-width:60rem;animation:.48s ease-out 60ms both fadeUp}.play-section-label{text-transform:uppercase;letter-spacing:var(--track-caps);color:var(--muted);margin-bottom:.75rem;font-size:.78rem}.play-entries{border-top:1px solid var(--line);margin:0;padding:0;list-style:none}.play-entry{border-bottom:1px solid var(--line);gap:0;padding:2.2rem 0 2.8rem;display:grid}.play-entry-header{align-items:baseline;gap:1rem;margin-bottom:.65rem;display:flex}.play-entry-index{letter-spacing:var(--track-caps);color:var(--muted);flex-shrink:0;font-size:.78rem;position:relative;top:-.08em}.play-entry-title{font-size:clamp(1.65rem,3.8vw,2.8rem);line-height:var(--lead-title);letter-spacing:var(--track-title);overflow-wrap:break-word;text-wrap:balance}.play-entry-hook{color:var(--foreground);font-size:1.06rem;line-height:var(--lead-body);text-wrap:pretty;max-width:52ch;margin:0 0 .85rem}.play-entry-body{gap:1.1rem;display:grid}.play-entry-exploration{color:var(--muted);line-height:var(--lead-copy);text-wrap:pretty;max-width:56ch}.play-embed-wrap{border:1px solid var(--line);background:var(--surface);border-radius:.65rem;margin-top:.45rem;overflow:hidden}.play-embed{border:0;width:100%;min-height:690px;display:block}@media (max-width:768px){.play-embed{min-height:min(480px,70svh)}}.play-entry-footer{flex-wrap:wrap;align-items:baseline;gap:.75rem 1.5rem;margin-top:1.2rem;display:flex}.play-entry-meta{letter-spacing:.02em;color:var(--muted);font-size:.84rem}.play-entry-tags{flex-wrap:wrap;gap:.45rem;margin:0;padding:0;list-style:none;display:flex}.play-entry-tag{border:1px solid var(--line);color:var(--muted);border-radius:999px;padding:.22rem .5rem;font-size:.78rem;transition:border-color .2s}.play-entry-tag:hover{border-color:#5a5a5a}@media (prefers-reduced-motion:no-preference){.play-entry{opacity:0;animation:.56s ease-out both fadeUp}.play-entry:first-child{animation-delay:.12s}.play-entry:nth-child(2){animation-delay:.2s}.play-entry:nth-child(3){animation-delay:.28s}.play-entry:nth-child(n+4){animation-delay:.36s}}.resume-layout{gap:3.5rem;margin-top:2.5rem;animation:.52s ease-out both fadeUp;display:grid}@media (min-width:768px){.resume-layout{grid-template-columns:3fr 1fr;gap:4rem;margin-top:3.5rem}}.resume-primary{flex-direction:column;align-items:flex-start;display:flex}.resume-label{text-transform:uppercase;letter-spacing:var(--track-caps);color:var(--muted);margin-bottom:.75rem;font-size:.78rem}.resume-heading{font-size:clamp(2.2rem,5.5vw,4rem);font-weight:400;line-height:var(--lead-title);letter-spacing:var(--track-display);color:var(--foreground);text-wrap:balance;margin:0}.resume-body{color:var(--muted);max-width:42ch;line-height:var(--lead-copy);text-wrap:pretty;margin-top:1rem}.resume-cta{border:1px solid var(--line);border-radius:.45rem;align-items:center;gap:.4rem;margin-top:2rem;padding:.85rem 1.15rem;font-size:.92rem;text-decoration:none;transition:border-color .2s,background .2s;display:inline-flex}.resume-cta:hover{background:var(--surface);border-color:#5a5a5a}.resume-cta:focus-visible{outline-offset:3px;outline:2px solid #8ab4ff}@media (prefers-reduced-motion:no-preference){.resume-cta:active{transform:scale(.97)}}.resume-aside{padding-top:.5rem}@media (min-width:768px){.resume-aside{border-left:1px solid var(--line);padding-top:2rem;padding-left:2rem}}.resume-details{gap:0;display:grid}.resume-detail{border-bottom:1px solid var(--line);padding:.85rem 0}.resume-detail:first-child{padding-top:0}.resume-detail:last-child{border-bottom:none}.resume-detail dt{text-transform:uppercase;letter-spacing:var(--track-caps);color:var(--muted);margin-bottom:.2rem;font-size:.78rem}.resume-detail dd{font-size:.95rem;line-height:var(--lead-copy);margin:0}.resume-detail dd a{text-decoration:none;transition:opacity .18s}.resume-detail dd a:hover{opacity:.72}.work-item-image{border:1px solid var(--line);border-radius:.65rem;width:100%;height:auto;margin-top:1rem;transition:transform .32s,border-color .24s}.work-item a:hover .work-item-image{border-color:#4a4a4a;transform:scale(1.012)}.work-item a:focus-visible .work-item-image{border-color:#8ab4ff}.about{margin-top:3.5rem}.work-drafts{margin-top:2.5rem}.draft-badge{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-top:.8rem;font-size:.76rem;display:inline-block}.about p{max-width:60ch;color:var(--muted);line-height:var(--lead-body);text-wrap:pretty}.footer{border-top:1px solid var(--line);flex-direction:column;gap:1.1rem;margin-top:5.5rem;padding-top:1.6rem;animation:.52s ease-out .22s both fadeUp;display:flex}@media (min-width:640px){.footer{flex-direction:row;justify-content:space-between;align-items:baseline}}.footer-nav{color:var(--foreground);flex-wrap:wrap;gap:.4rem 1.4rem;font-size:.94rem;display:flex}.footer-nav a{color:inherit;padding:.35rem 0;text-decoration:none;transition:opacity .18s}.footer-nav a:hover,.footer-nav a:focus-visible{opacity:.7}.footer-meta{color:var(--muted);letter-spacing:.04em;font-variant-numeric:tabular-nums;margin:0;font-size:.76rem}.about-actions{color:var(--foreground);flex-wrap:wrap;gap:.6rem 1.5rem;margin-top:1.3rem;display:flex}.about-action{color:inherit;align-items:center;gap:.15rem;padding:.4rem 0;font-size:.98rem;text-decoration:none;transition:opacity .2s;display:inline-flex;position:relative}.about-action:after{content:"";opacity:.35;background:currentColor;height:1px;transition:opacity .2s;position:absolute;bottom:.18rem;left:0;right:0}.about-action:hover:after,.about-action:focus-visible:after{opacity:.9}.project-topbar{color:var(--muted);margin:0 0 1.9rem;font-size:.95rem;animation:.42s ease-out both fadeUp}.project-topbar a{margin:-.6rem 0;padding:.6rem 0;transition:opacity .16s,transform .2s;display:inline-block}@media (prefers-reduced-motion:no-preference){.project-topbar a:hover,.project-topbar a:focus-visible{opacity:.75;transform:translate(-2px)}.project-topbar a:active{transform:translate(-1px)scale(.98)}}.project-cover{margin:0 0 2rem;animation:.48s ease-out 40ms both fadeUp}.project-cover-image{border:1px solid var(--line);border-radius:.65rem;width:100%;height:auto;transition:border-color .24s}.project-meta{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:1fr;gap:.95rem 1.5rem;margin:0 0 2.5rem;padding:1.05rem 0;display:grid}@media (min-width:640px){.project-meta{grid-template-columns:repeat(3,minmax(0,1fr));align-items:baseline}}.project-meta-field{flex-direction:column;gap:.28rem;min-width:0;display:flex}.project-meta-field dt{font-size:.72rem;font-family:var(--font-mono), ui-monospace, monospace;text-transform:uppercase;letter-spacing:.12em;color:var(--muted)}.project-meta-field dd{color:var(--foreground);overflow-wrap:break-word;margin:0;font-size:.96rem;line-height:1.35}.project-meta-field--tags dd{color:var(--muted)}.project-highlight{gap:1.8rem;max-width:36rem;margin:.5rem 0 3.2rem;display:grid}.project-highlight-quote{border-left:1px solid var(--foreground);margin:0;padding-left:1.15rem}.project-highlight-quote blockquote{letter-spacing:-.012em;color:var(--foreground);text-wrap:balance;margin:0;font-size:clamp(1.35rem,2.8vw,1.85rem);font-weight:400;line-height:1.32}.project-highlight-metric{flex-direction:column;gap:.35rem;margin:0;padding-left:1.15rem;display:flex}.project-highlight-metric-value{letter-spacing:var(--track-display);color:var(--foreground);font-variant-numeric:tabular-nums;font-size:clamp(2.2rem,4.5vw,3.1rem);font-weight:500;line-height:1}.project-highlight-metric-label{color:var(--muted);text-wrap:pretty;max-width:32ch;font-size:.82rem;line-height:1.45}:root[data-theme=light] .project-highlight,:root[data-theme=light] .project-highlight-quote,:root[data-theme=light] .project-highlight-metric{border-color:var(--foreground);background:0 0}.project-content{color:#e3e3e3;max-width:65ch;margin-top:2rem;line-height:1.7}.project-content p{text-wrap:pretty}.project-sections{gap:4.5rem;display:grid}@media (prefers-reduced-motion:no-preference){.project-sections>.project-section{opacity:0;animation:.58s ease-out both fadeUp}.project-sections>.project-section:first-child{animation-delay:40ms}.project-sections>.project-section:nth-child(2){animation-delay:95ms}.project-sections>.project-section:nth-child(3){animation-delay:.15s}.project-sections>.project-section:nth-child(4){animation-delay:.205s}.project-sections>.project-section:nth-child(5){animation-delay:.26s}.project-sections>.project-section:nth-child(6){animation-delay:.315s}.project-sections>.project-section:nth-child(7){animation-delay:.37s}.project-sections>.project-section:nth-child(8){animation-delay:.425s}.project-sections>.project-section:nth-child(n+9){animation-delay:.48s}}@supports (animation-timeline:view()){@media (prefers-reduced-motion:no-preference){.project-sections>.project-section{opacity:1;animation-name:sectionScrollIn;animation-duration:auto;animation-timing-function:linear;animation-delay:0s;animation-fill-mode:both;animation-timeline:view();animation-range:entry 6% entry 38%}}}.project-section{max-width:65ch;position:relative}.project-section h2{letter-spacing:var(--track-display);text-wrap:balance;margin:0 0 1rem;padding-top:.85rem;font-size:clamp(1.7rem,3vw,2.5rem);font-weight:500;line-height:1.16;position:relative}.project-section h2:before{content:"";background:var(--rule);width:2.5rem;height:1px;position:absolute;top:0;left:0}.project-section-body{color:#e3e3e3;line-height:var(--lead-long);max-width:64ch}.project-section-body p{text-wrap:pretty}.project-section-body p+p{margin-top:.9rem}.project-section-body ul,.project-section-body ol{margin:.8rem 0 .8rem 1.25rem;list-style:outside}.project-section-body ol{list-style:decimal}.project-section-body li+li{margin-top:.35rem}.color-palette{grid-template-columns:repeat(6,1fr);gap:1rem;margin-top:2.4rem;margin-bottom:2rem;display:grid}.color-swatch{cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:none;flex-direction:column;align-items:center;gap:.5rem;padding:0;display:flex}.color-swatch-circle{background:var(--swatch-color);border-radius:50%;width:3.2rem;height:3.2rem;transition:transform .26s,box-shadow .26s;box-shadow:0 0 #0000}.color-swatch:hover .color-swatch-circle{box-shadow:0 0 0 2.5px var(--background), 0 0 0 4px var(--swatch-color);transform:scale(1.14)}.color-swatch-label{font-size:.7rem;font-family:var(--font-mono);color:var(--muted);letter-spacing:.01em;text-align:center;min-width:5ch;transition:color .2s}.color-swatch:hover .color-swatch-label{color:var(--foreground)}@media (max-width:768px){.color-palette{grid-template-columns:repeat(4,1fr);gap:.9rem .6rem}.color-swatch-circle{width:2.6rem;height:2.6rem}.color-swatch-label{font-size:.62rem}}@media (max-width:420px){.color-palette{grid-template-columns:repeat(3,1fr)}}.project-section-images{gap:.8rem;margin-top:1.1rem;display:grid}.project-section-image{border:1px solid var(--line);border-radius:.7rem;width:100%;height:auto;transition:transform .32s,border-color .24s}.project-section-image:hover{border-color:#4a4a4a;transform:scale(1.008)}.project-toc-sentinel{pointer-events:none;height:0}.project-toc{z-index:40;background:var(--background);border-bottom:1px solid #0000;margin-bottom:2rem;padding:.7rem 0;transition:border-color .28s,background-color .28s;position:sticky;top:0}.project-toc--sticky{border-bottom-color:var(--line)}.project-toc-list{scrollbar-width:none;-ms-overflow-style:none;gap:.15rem;margin:0;padding:0;list-style:none;display:flex;overflow-x:auto}.project-toc-list::-webkit-scrollbar{display:none}.project-toc-item{flex:none}.project-toc-link{color:var(--muted);letter-spacing:var(--track-body);white-space:nowrap;cursor:pointer;background:0 0;border:none;border-radius:.3rem;align-items:center;gap:.4rem;padding:.45rem .65rem;font-family:inherit;font-size:.78rem;font-weight:500;transition:color .2s,background-color .2s;display:flex}.project-toc-link:hover{color:var(--foreground);background:var(--surface)}.project-toc-link:active{transform:scale(.98)}.project-toc-link:focus-visible{outline-offset:2px;border-radius:.3rem;outline:2px solid #8ab4ff}.project-toc-link--active{color:var(--foreground)}.project-toc-dot{background:var(--line);border-radius:50%;flex-shrink:0;width:5px;height:5px;transition:background-color .24s,transform .24s;display:block}.project-toc-link--active .project-toc-dot{background:var(--foreground);transform:scale(1.35)}.project-toc-num{color:var(--muted);font-variant-numeric:tabular-nums;opacity:.6;transition:opacity .2s}.project-toc-link--active .project-toc-num{opacity:1}.project-toc-text{text-overflow:ellipsis;overflow:hidden}.project-toc-toggle{display:none}.project-toc-chevron{transition:transform .22s}.project-toc-chevron--open{transform:rotate(180deg)}@media (max-width:768px){.project-toc{padding:0}.project-toc-toggle{width:100%;color:var(--foreground);letter-spacing:var(--track-body);cursor:pointer;background:0 0;border:none;justify-content:space-between;align-items:center;padding:.7rem 0;font-family:inherit;font-size:.82rem;font-weight:500;transition:color .2s;display:flex}.project-toc-toggle:focus-visible{outline-offset:2px;border-radius:.2rem;outline:2px solid #8ab4ff}.project-toc-toggle-label{align-items:center;gap:.35rem;display:flex}.project-toc-toggle .project-toc-num{opacity:.5}.project-toc-list{flex-direction:column;gap:0;padding-bottom:.5rem;display:none;overflow-x:visible}.project-toc-list--open{display:flex}.project-toc-link{border-radius:0;padding:.55rem .2rem;font-size:.82rem}.project-toc-link--active{background:0 0}}.project-section[id]{scroll-margin-top:3.5rem}.project-content h2,.project-content h3{text-wrap:balance;margin-top:2rem;margin-bottom:.5rem;line-height:1.2}.project-content p+p{margin-top:.8rem}.project-content ul,.project-content ol{margin:.8rem 0 .8rem 1.25rem;list-style:outside}.project-content ol{list-style:decimal}.project-content li+li{margin-top:.35rem}.project-content a{text-decoration:underline}.project-work-jump{border-top:1px solid var(--line);margin-top:3.75rem;padding-top:2.25rem}.project-work-jump h2{text-transform:uppercase;letter-spacing:var(--track-caps);color:var(--muted);margin-bottom:1.25rem;font-size:.78rem}@media (prefers-reduced-motion:no-preference){.project-work-jump>h2{opacity:0;animation:.48s ease-out 60ms both fadeUp}.project-work-jump-list>li{opacity:0;animation:.52s ease-out both fadeUp}.project-work-jump-list>li:first-child{animation-delay:.1s}.project-work-jump-list>li:nth-child(2){animation-delay:.16s}.project-work-jump-list>li:nth-child(3){animation-delay:.22s}.project-work-jump-list>li:nth-child(4){animation-delay:.28s}.project-work-jump-list>li:nth-child(n+5){animation-delay:.34s}.project-work-jump-card:active{transform:scale(.992)}}.project-work-jump-list{gap:1rem;margin:0;padding:0;list-style:none;display:grid}.project-work-jump-card{border:1px solid var(--line);background:var(--surface);color:inherit;border-radius:.65rem;flex-direction:column;gap:1rem;padding:1.15rem 1.2rem;text-decoration:none;transition:border-color .24s,transform .32s;display:flex}@media (min-width:640px){.project-work-jump-card{flex-direction:row;justify-content:space-between;align-items:center;gap:1.25rem}}.project-work-jump-card:hover{border-color:#4a4a4a;transform:scale(1.005)}.project-work-jump-card:focus-visible{outline-offset:3px;border-color:#8ab4ff;outline:2px solid #8ab4ff}.project-work-jump-text h3{letter-spacing:var(--track-title);text-wrap:balance;font-size:clamp(1.35rem,3.5vw,1.75rem);line-height:1.12}.project-work-jump-text p{font-size:.92rem;line-height:var(--lead-copy);color:var(--muted);text-wrap:pretty;margin-top:.4rem}.project-work-jump-draft{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-top:.5rem;font-size:.72rem;display:inline-block}.project-work-jump-thumb{border:1px solid var(--line);border-radius:.45rem;flex-shrink:0;width:100%;max-width:280px;height:auto;transition:border-color .24s}@media (min-width:640px){.project-work-jump-thumb{width:200px;max-width:40%}}.project-work-jump-card:hover .project-work-jump-thumb{border-color:#4a4a4a}@media (max-width:768px){.site-header{flex-direction:column}.site-nav-list{text-align:left;font-size:1.2rem}.hero-name{white-space:normal;overflow-wrap:break-word}.hero-typer{font-size:clamp(1.05rem,4vw,1.35rem)}body{overflow-x:clip}}@media (prefers-reduced-motion:no-preference){.site-nav-list li{overflow:hidden}.site-nav-list a{position:relative}.site-nav-list a:after{content:"";background:var(--foreground);transform-origin:100%;width:100%;height:1px;transition:transform .28s cubic-bezier(.25,.46,.45,.94);position:absolute;bottom:0;left:0;transform:scaleX(0)}.site-nav-list a:hover:after,.site-nav-list a:focus-visible:after{transform-origin:0;transform:scaleX(1)}.work-item a{text-decoration:none;transition:transform .14s}.work-item h3{background-image:linear-gradient(var(--foreground), var(--foreground));background-position:0 100%;background-repeat:no-repeat;background-size:0% 1px;transition:background-size .32s cubic-bezier(.25,.46,.45,.94);display:inline}.work-item a:hover h3{background-size:100% 1px}.draft-badge{transition:letter-spacing .28s}.work-item a:hover .draft-badge{letter-spacing:.14em}.project-topbar a{position:relative}.project-topbar a:after{content:"";background:var(--muted);transform-origin:100%;width:100%;height:1px;transition:transform .24s cubic-bezier(.25,.46,.45,.94);position:absolute;bottom:-1px;left:0;transform:scaleX(0)}.project-topbar a:hover:after{transform-origin:0;transform:scaleX(1)}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.site-header,.hero,.about,.footer,.project-topbar,.project-cover,.hero-tagline,.not-found,.resume-layout,.play-section,.play-entry,.work:not(.work-drafts)>h2,.work-drafts>h2,.work:not(.work-drafts)>.work-list>.work-item,.work-drafts>.work-list>.work-item,.project-sections>.project-section,.project-work-jump>h2,.project-work-jump-list>li{opacity:1!important;animation:none!important}.not-found-digit{animation:none!important}.work-item-image,.project-cover-image,.project-section-image,.project-work-jump-thumb,.site-nav-list a,.work-item a,.project-topbar a,.project-work-jump-card,.not-found-link:after,.resume-cta,.play-entry-tag{transition:none}.project-work-jump-card:hover,.theme-toggle:active{transform:none}}.fg-page{--fg-accent:#4f7a5b;--fg-accent-soft:var(--fg-accent)}@supports (color:color-mix(in lab, red, red)){.fg-page{--fg-accent-soft:color-mix(in oklch, var(--fg-accent) 16%, transparent)}}.fg-page{--fg-accent-line:var(--fg-accent)}@supports (color:color-mix(in lab, red, red)){.fg-page{--fg-accent-line:color-mix(in srgb, var(--fg-accent) 60%, transparent)}}:root[data-theme=light] .fg-page{--fg-accent:#3d6447;--fg-accent-soft:var(--fg-accent)}@supports (color:color-mix(in lab, red, red)){:root[data-theme=light] .fg-page{--fg-accent-soft:color-mix(in oklch, var(--fg-accent) 10%, transparent)}}.fg-eyebrow{font-family:var(--font-mono), ui-monospace, monospace;letter-spacing:.12em;text-transform:uppercase;color:var(--fg-accent);margin:0 0 .85rem;font-size:.72rem}.fg-title{font-size:clamp(2.5rem,7vw,4.6rem)!important}.fg-lede{max-width:38ch!important;font-size:clamp(1.05rem,2vw,1.28rem)!important}.fg-hero-device{justify-content:center;margin-top:2.6rem;display:flex}@media (min-width:900px){.fg-hero{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:2.5rem 4rem;display:grid}.fg-eyebrow,.fg-title,.fg-lede{grid-column:1}.fg-hero-device{grid-area:1/2/span 3;align-self:center;margin-top:0}}.fg-meta{margin-top:2.5rem}.fg-section{margin-top:4.5rem}.fg-section--wide{max-width:none}.fg-section--wide .project-section-body{max-width:65ch}.fg-phone{--phone-w:240px;width:var(--phone-w);filter:drop-shadow(0 24px 40px #00000052);margin:0 auto}.fg-phone-bezel{aspect-ratio:9/19.5;background:#0a0a0a;border:1px solid #2a2a2a;border-radius:34px;padding:7px;position:relative;overflow:hidden}:root[data-theme=light] .fg-phone-bezel{background:#161616;border-color:#2a2a2a}.fg-phone-notch{z-index:2;background:#050505;border-radius:12px;width:76px;height:18px;position:absolute;top:9px;left:50%;transform:translate(-50%)}.fg-phone-screen{background:#0e0e10;border-radius:27px;width:100%;height:100%;position:relative;overflow:hidden}.fg-route-screen{color:#f4f4f4;background:#0e0e10;flex-direction:column;width:100%;height:100%;padding:0;font-size:11px;display:flex}.fg-route-status{font-family:var(--font-mono), monospace;letter-spacing:.05em;color:#f4f4f4c7;justify-content:space-between;padding:18px 18px 6px;font-size:9px;display:flex}.fg-route-status-right{letter-spacing:.18em}.fg-route-map{background:#161618;border-radius:12px;flex:auto;margin:6px 10px;position:relative;overflow:hidden}.fg-route-svg{width:100%;height:100%;display:block}.fg-route-briefing{background:#0e0e10;flex-direction:column;gap:8px;padding:12px 14px 16px;display:flex}.fg-route-briefing-label{font-family:var(--font-mono), monospace;letter-spacing:.14em;text-transform:uppercase;color:#f4f4f48c;margin:0;font-size:8px}.fg-route-chips{flex-direction:column;gap:5px;margin:0;padding:0;list-style:none;display:flex}.fg-chip{color:#f4f4f4;border:1px solid #ffffff14;border-radius:100px;padding:4px 8px;font-size:9.5px;line-height:1.1}.fg-chip--ok{background:#4f7a5b2e;border-color:#4f7a5b66}.fg-chip--hazard{background:#f08a4b2e;border-color:#f08a4b66}.fg-chip--info{background:#28487252;border-color:#2848728c}.fg-route-go{color:#f4f4f4;letter-spacing:.06em;cursor:pointer;pointer-events:none;background:#4f7a5b;border:none;border-radius:100px;margin-top:4px;padding:8px;font-size:10px;font-weight:600}.fg-arch{border:1px solid var(--line);background:var(--surface);border-radius:.7rem;margin:2.2rem 0 1.4rem;padding:1.5rem 1.2rem;overflow-x:auto}.fg-arch--process{margin:1.5rem 0 .4rem;padding:1.25rem 1.1rem}.fg-arch-svg{width:100%;min-width:560px;height:auto;color:var(--foreground)}.fg-arch--process .fg-arch-svg{min-width:520px}.fg-features{margin-top:5rem}.fg-features-heading{letter-spacing:var(--track-display);text-wrap:balance;margin:0 0 .55rem;font-size:clamp(1.7rem,3vw,2.5rem);font-weight:500;line-height:1.16}.fg-features-lede{max-width:52ch;color:var(--muted);font-size:1.02rem;line-height:var(--lead-body);margin:0 0 2.6rem}.fg-features-grid{grid-template-columns:1fr;gap:3.5rem 2.5rem;display:grid}@media (min-width:720px){.fg-features-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:4rem 3rem}}.fg-feature{grid-template-columns:240px 1fr;align-items:start;gap:1.6rem;display:grid}@media (max-width:720px){.fg-feature{text-align:left;grid-template-columns:1fr;justify-items:center;gap:1.4rem}}@media (min-width:720px) and (max-width:1080px){.fg-feature{grid-template-columns:1fr;justify-items:stretch;gap:1.4rem}}.fg-feature-text{min-width:0}.fg-feature-number{font-family:var(--font-mono), monospace;letter-spacing:.16em;color:var(--fg-accent);margin:0 0 .45rem;font-size:.72rem}.fg-feature-title{letter-spacing:-.01em;text-wrap:balance;margin:0 0 .55rem;font-size:clamp(1.1rem,1.6vw,1.32rem);font-weight:500;line-height:1.25}.fg-feature-copy{color:var(--foreground);text-wrap:pretty;opacity:.94;margin:0 0 .85rem;font-size:.96rem;line-height:1.55}.fg-feature-thesis{border-left:1px solid var(--fg-accent-line);color:var(--muted);text-wrap:pretty;margin:0;padding-left:.85rem;font-size:.88rem;line-height:1.5}.fg-feature-thesis-label{font-family:var(--font-mono), monospace;letter-spacing:.1em;text-transform:uppercase;color:var(--fg-accent);margin-right:.3rem;font-size:.7rem}.fg-screen-stub{color:#f4f4f4;background:#0e0e10;flex-direction:column;width:100%;height:100%;padding:0;display:flex;position:relative;overflow:hidden}.fg-screen-band{background:#ffffff0a;border-bottom:1px solid #ffffff0d;height:22px;display:block}.fg-screen-band--header{height:36px}.fg-screen-map{background:#161618;border-radius:10px;height:120px;margin:8px 10px;overflow:hidden}.fg-screen-map--full{flex:auto;height:auto}.fg-screen-map svg{width:100%;height:100%;display:block}.fg-screen-card{background:#161618;border-radius:12px;flex-direction:column;gap:8px;margin:8px 12px 14px;padding:10px;display:flex}.fg-screen-line{background:#ffffff1f;border-radius:100px;height:8px;display:block}.fg-screen-line--80{width:80%}.fg-screen-line--60{width:60%}.fg-screen-line--40{width:40%}.fg-screen-chip-row{gap:4px;display:flex}.fg-screen-chip{background:#ffffff14;border-radius:100px;flex:1;height:14px}.fg-screen-chip--ok{background:#4f7a5b59}.fg-screen-chip--hazard{background:#f08a4b59}.fg-screen-chip--info{background:#2848728c}.fg-screen-cta{background:#4f7a5b;border-radius:100px;height:22px;margin-top:2px;display:block}.fg-screen-search{background:#ffffff0f;border:1px solid #ffffff0a;border-radius:100px;height:28px;margin:10px}.fg-screen-section-label{font-family:var(--font-mono), monospace;letter-spacing:.16em;text-transform:uppercase;color:#f4f4f48c;margin:12px 16px 6px;font-size:8px}.fg-screen-row{margin:6px 10px 14px}.fg-screen-row-label{font-family:var(--font-mono), monospace;letter-spacing:.12em;text-transform:uppercase;color:#f4f4f48c;margin:0 0 6px 4px;font-size:8px}.fg-screen-row-scroll{gap:6px;display:flex}.fg-screen-tile{background:#ffffff14;border-radius:8px;flex:0 0 56px;height:72px}.fg-screen-tile:nth-child(2){background:#4f7a5b38}.fg-screen-stub--nav{position:relative}.fg-screen-nav-instr{flex-direction:column;gap:6px;padding:14px 12px 8px;display:flex}.fg-screen-side-column{flex-direction:column;gap:10px;display:flex;position:absolute;top:50%;right:8px;transform:translateY(-50%)}.fg-screen-side-btn{background:#ffffff1a;border:1px solid #ffffff1f;border-radius:14px;width:28px;height:28px;display:block}.fg-screen-side-btn--sos{background:#d24a3b6b;border-color:#d24a3bb3}.fg-screen-stub--still{background:#11201a}.fg-screen-pulled{flex-direction:column;justify-content:center;gap:14px;height:100%;padding:22px 16px;display:flex}.fg-screen-pulled-rec{font-family:var(--font-mono), monospace;letter-spacing:.18em;color:#f4f4f49e;align-self:flex-start;font-size:8px}.fg-screen-pulled-title{color:#e7eee9;margin:0;font-size:22px;font-weight:500;line-height:1.12}.fg-screen-pulled-sub{color:#e7eee9b3;max-width:80%;margin:0;font-size:10px;line-height:1.5}.fg-screen-pulled-actions{gap:8px;margin-top:auto;display:flex}.fg-screen-pulled-btn{background:#4f7a5b6b;border:1px solid #4f7a5b99;border-radius:100px;flex:1;height:28px;display:block}.fg-screen-stub--ios .fg-screen-band--header{height:30px}.fg-screen-ios-group{background:#ffffff0a;border-radius:10px;margin:14px 12px 0;overflow:hidden}.fg-screen-ios-row{border-bottom:1px solid #ffffff0d;height:32px;display:block}.fg-screen-ios-row:last-child{border-bottom:none}.fg-screen-cal-row{align-items:center;gap:8px;padding:6px 16px;display:flex}.fg-screen-cal-dot{background:var(--fg-accent);border-radius:50%;flex-shrink:0;width:6px;height:6px}.fg-screen-cal-sheet{background:#ffffff0a;border:1px solid #ffffff0f;border-radius:14px;flex-direction:column;gap:8px;margin:12px 12px 14px;padding:14px;display:flex}.fg-signal-list{gap:.7rem;max-width:56ch;margin:2rem 0 2.2rem;padding:0;list-style:none;display:grid}.fg-signal{border-top:1px solid var(--line);grid-template-columns:1.7rem 1fr;align-items:start;gap:.85rem;padding:.65rem 0;display:grid}.fg-signal:first-child{border-top:none;padding-top:0}.fg-signal-swatch{border-radius:4px;width:1.4rem;height:1.4rem;margin-top:.16rem;display:block}.fg-signal-name{flex-wrap:wrap;align-items:baseline;gap:.45rem .65rem;margin:0 0 .18rem;font-size:.96rem;font-weight:500;display:flex}.fg-signal-role{font-family:var(--font-mono), monospace;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-size:.7rem;font-weight:400}.fg-signal-note{color:var(--muted);text-wrap:pretty;margin:0;font-size:.86rem;line-height:1.5}.fg-craft-split{gap:2.2rem;margin-top:2.5rem;display:grid}@media (min-width:760px){.fg-craft-split{grid-template-columns:repeat(2,1fr);gap:3rem}}.fg-craft-half h3.fg-h3{letter-spacing:-.005em;margin:0 0 .55rem;font-size:1.06rem;font-weight:500}.fg-craft-half p{color:var(--foreground);opacity:.92;text-wrap:pretty;max-width:42ch;margin:0 0 1rem;font-size:.94rem;line-height:1.62}.fg-legend{flex-direction:column;gap:.45rem;margin:0;padding:0;list-style:none;display:flex}.fg-legend-row{align-items:center;gap:.7rem;display:flex}.fg-legend-line{flex-shrink:0;width:60px;height:12px}.fg-legend-label{color:var(--muted);letter-spacing:.005em;font-size:.82rem}.fg-scope-grid{border-top:1px solid var(--line);gap:2.2rem;margin-top:1.8rem;padding-top:1.6rem;display:grid}@media (min-width:760px){.fg-scope-grid{grid-template-columns:1fr 1fr;gap:3rem}}.fg-scope-label{font-family:var(--font-mono), monospace;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:0 0 .85rem;font-size:.72rem}.fg-scope-list{flex-direction:column;gap:.8rem;margin:0;padding:0;list-style:none;display:flex}.fg-scope-list li{color:var(--foreground);text-wrap:pretty;opacity:.94;padding-left:1.05rem;font-size:.94rem;line-height:1.55;position:relative}.fg-scope-list li:before{content:"";background:var(--muted);width:.45rem;height:1px;position:absolute;top:.6em;left:0}.fg-scope-col:last-child .fg-scope-list li{color:var(--muted)}@media (prefers-reduced-motion:reduce){.fg-page *{transition:none!important}}.play-title{align-items:baseline;gap:0;padding-bottom:.05em;display:flex;overflow:visible}.play-title-word{align-items:baseline;display:inline-flex}.play-title-letter{transform-origin:50% 100%;will-change:transform;display:inline-block}@media (prefers-reduced-motion:no-preference){.play-title-letter{animation:1.08s cubic-bezier(.32,.72,.36,1) both play-hop;animation-delay:calc(.38s + var(--i,0) * 90ms)}.play-title-letter:first-child{--i:0}.play-title-letter:nth-child(2){--i:1}.play-title-letter:nth-child(3){--i:2}.play-title-letter:nth-child(4){--i:3}}@keyframes play-hop{0%{transform:translateY(0)scale(1)}12%{transform:translateY(0)scale(1.14,.86)}32%{transform:translateY(-.28em)scale(.94,1.08)}55%{transform:translateY(-.34em)scale(.97,1.05)}78%{transform:translateY(0)scale(1.12,.88)}to{transform:translateY(0)scale(1)}}@media (prefers-reduced-motion:reduce){.play-title-letter{animation:none}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}
