@font-face{font-family:Syne;src:url(/fonts/syne-latin.woff2)format("woff2");font-weight:400 800;font-style:normal;font-display:swap}@font-face{font-family:Instrument Sans;src:url(/fonts/instrument-sans-latin.woff2)format("woff2");font-weight:400 700;font-style:normal;font-display:swap}@font-face{font-family:JetBrains Mono;src:url(/fonts/jetbrains-mono-latin.woff2)format("woff2");font-weight:100 800;font-style:normal;font-display:swap}:root{color-scheme:dark;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-12:48px;--space-16:64px;--text-meta:14px;--text-secondary:15px;--text-body:17px;--text-title:20px;--text-display:clamp(40px, 5vw, 56px);--measure:680px;--date-col:160px;--background:#0f0f0f;--card:#171717;--card-hover:#1a1a1a;--surface-shadow:inset 0 1px 0 0 #ffffff08, inset 0 0 0 1px #ffffff08, 0 0 0 1px #0000001a, 0 2px 2px 0 #0000001a, 0 4px 4px 0 #0000001a, 0 8px 8px 0 #0000001a;--outline-shadow:inset 0 1px 0 0 #ffffff0d, inset 0 0 0 1px #ffffff0b, 0 0 0 1px #00000024, 0 1px 2px -1px #00000024, 0 2px 4px 0 #00000014;--muted-fg:#929292;--border:#ffffff1a;--well:#1f1f1f;--text:color-mix(in hsl, canvasText, canvas 4%);--muted:var(--text);--accent:oklch(82% .12 192);--accent-solid:oklch(82% .12 192);--on-accent:#04211f;--font-display:Syne, "Arial Black", sans-serif;--font-body:"Instrument Sans", system-ui, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, monospace;--line:color-mix(in hsl, canvasText, transparent 80%);--surface:#060607;--dots:#1a1b1f;--tile-border:#1a1a1d;--tile-alt:#0e0e10;--pop-bg:#0b0b0d;--pop-line:#2c2c31;--pop-shadow:0 16px 56px #000a;--tick:#555;--subtle:#a3a3a3;--accent-text:oklch(82% .12 192);--gap:var(--space-4);--radius:10px;--cell:clamp(180px, calc((100vw - 128px) / 4), 280px);font-family:var(--font-body);color:var(--text);background:var(--background);font-size:16px;font-weight:400;line-height:1.5}*{box-sizing:border-box}html{scroll-padding-top:32px}body{min-height:100vh;margin:0}body:before{content:"";z-index:-1;pointer-events:none;background-image:radial-gradient(circle, var(--dots) .8px, transparent 1px);background-position:12px 12px;background-size:24px 24px;position:fixed;inset:0}a{color:var(--text);text-underline-offset:4px;text-decoration:none}a:hover{background:var(--accent-solid);color:var(--on-accent)}a:focus-visible,button:focus-visible,[role=button]:focus-visible{outline:3px solid var(--accent);outline-offset:5px}button{font:inherit;cursor:pointer}[hidden]{display:none!important}h1,h2,p{margin:0}:root{--frame-max:1324px;--frame-pad-left:var(--space-12);--frame-pad-right:var(--space-12)}@media (width<=1099px){:root{--frame-pad-left:var(--space-6);--frame-pad-right:var(--space-6)}}@media (width>=560px) and (width<=899px){:root{--cell:clamp(220px, calc((100vw - 80px) / 2), 320px)}}@media (width<=559px){:root{--gap:var(--space-3);--cell:clamp(240px, 75vw, 350px)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}:root[data-theme=light]{color-scheme:light;--background:#fafafa;--card:#fff;--card-hover:#f9f9f9;--surface-shadow:0 0 0 1px #0000000f, 0 1px 2px -1px #0000000f, 0 2px 4px 0 #0000000a;--outline-shadow:0 0 0 1px #0000000f, 0 1px 2px -1px #0000000f, 0 2px 4px 0 #0000000a;--muted-fg:#737373;--border:#e5e5e5;--well:#f2f2f2;--surface:#f1f1f2;--dots:#e7e7e9;--tile-border:#e2e2e5;--tile-alt:#f4f4f5;--pop-bg:#fff;--pop-line:#dcdce0;--pop-shadow:0 16px 48px #1010142e;--tick:#b3b3b8;--subtle:#55555b;--accent:#26262a;--accent-solid:#2a2a2e;--accent-text:#0a0a0b;--on-accent:#fff}.nowrap{white-space:nowrap}body{padding-bottom:96px}.theme-switching *,.theme-switching :before,.theme-switching :after{transition:none!important}@media print{:root,body{color:#000;background:#fff}body:before{display:none}}.skip-link{z-index:1000;color:var(--text);background:var(--card);box-shadow:var(--outline-shadow);font:500 16px/1.25 var(--font-body);border-radius:999px;padding:8px 16px;text-decoration:none;position:fixed;top:16px;left:16px;transform:translateY(calc(-100% - 32px))}.skip-link:focus{transform:none}body:has(.skip-link:focus) .wordmark{visibility:hidden}.skip-link:focus-visible{outline:2px solid var(--text);outline-offset:3px}main[tabindex="-1"]:focus{outline:none}.site-nav{z-index:35;height:56px;padding:var(--space-2) var(--space-4);justify-content:space-between;align-items:center;display:flex;position:relative}.wordmark,.intro h1 .w-look{--split:2.5px;--plane-a:oklch(78% .13 192);--plane-b:oklch(72% .17 350);isolation:isolate;animation:7s step-end 1.5s infinite projection-keystone;display:inline-block;position:relative}.wordmark{font:700 28px/1 var(--font-display);color:var(--text);text-decoration:none}.wordmark:hover,.wordmark:focus-visible{--split:4.5px;background:0 0}.wordmark span{color:var(--accent)}.wordmark:before,.wordmark:after,.intro h1 .w-look:before,.intro h1 .w-look:after{z-index:-1;pointer-events:none;mix-blend-mode:screen;transition:translate .2s;position:absolute;inset:0;-webkit-mask-image:repeating-linear-gradient(0deg,#000 0 2px,#0006 2px 3px);mask-image:repeating-linear-gradient(0deg,#000 0 2px,#0006 2px 3px)}.wordmark:before,.wordmark:after{content:"s."}.wordmark:before,.intro h1 .w-look:before{color:var(--plane-a);translate:calc(var(--split) * -1) 0;animation:7s step-end 1.5s infinite projection-plane-a}.wordmark:after,.intro h1 .w-look:after{color:var(--plane-b);translate:var(--split) 0;animation:7s step-end 1.5s infinite projection-plane-b}:root[data-theme=light] .wordmark,:root[data-theme=light] .intro h1 .w-look{--plane-a:oklch(62% .14 192);--plane-b:oklch(64% .2 350)}:root[data-theme=light] .wordmark:before,:root[data-theme=light] .wordmark:after,:root[data-theme=light] .intro h1 .w-look:before,:root[data-theme=light] .intro h1 .w-look:after{mix-blend-mode:multiply}@keyframes projection-keystone{0%,to{transform:none}29%{transform:skew(-2deg)}30.5%{transform:none}66%{transform:perspective(200px)rotateY(5deg)}67.5%{transform:none}92%{transform:perspective(180px)rotateY(16deg)skew(-5deg)}94%{transform:perspective(180px)rotateY(-9deg)skew(3deg)}96%{transform:perspective(180px)rotateY(5deg)}97.5%{transform:none}}@keyframes projection-plane-a{0%,12%,30.5%,48%,67.5%,to{clip-path:none;transform:none}11%{clip-path:inset(20% 0 55%);transform:translate(-3px,1px)}29%{clip-path:inset(60% 0 10%);transform:translate(-2px,-1px)}47%{clip-path:inset(5% 0 70%);transform:translate(-4px)}66%{clip-path:inset(40% 0 30%);transform:translate(-2px,1px)}92%{clip-path:inset(0 0 55%);transform:translate(-6px,1px)}94%{clip-path:inset(45% 0 0);transform:translate(-4px,-1px)}96%{clip-path:none;transform:translate(-2px)}}@keyframes projection-plane-b{0%,12.5%,30%,48.5%,67%,to{clip-path:none;transform:none}11.5%{clip-path:inset(55% 0 15%);transform:translate(3px,-1px)}29.5%{clip-path:inset(10% 0 65%);transform:translate(4px,1px)}47.5%{clip-path:inset(50% 0 20%);transform:translate(2px)}66.5%{clip-path:inset(15% 0 60%);transform:translate(3px,-1px)}92%{clip-path:inset(40% 0 0);transform:translate(6px,-1px)}94%{clip-path:inset(0 0 50%);transform:translate(5px,1px)}96%{clip-path:none;transform:translate(2px)}}@media (prefers-reduced-motion:reduce){.wordmark,.wordmark:before,.wordmark:after,.intro h1 .w-look,.intro h1 .w-look:before,.intro h1 .w-look:after{animation:none}}.nav-actions{align-items:center;gap:var(--space-3);font-size:16px;display:flex}.nav-actions>a{color:var(--text);text-decoration:none}.work{max-width:1240px;padding:0 var(--space-8);margin:0 auto}.work-heading{justify-content:space-between;align-items:baseline;gap:var(--space-4);margin-bottom:var(--space-6);display:flex}.work-heading h2,.work-heading h1{font-size:var(--text-body);font-weight:500;line-height:1.4}.work-heading>span{font-size:var(--text-meta);color:var(--muted)}.grid-page{margin-bottom:var(--gap);contain:layout style;position:relative}.bento-grid{grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:var(--cell);gap:var(--gap);margin:0;padding:0;list-style:none;display:grid}.tile{border-radius:var(--radius);background:var(--surface);min-width:0;position:relative;overflow:hidden}.tile:nth-child(6n+1){grid-area:span 2/span 2}.tile:nth-child(6n+2),.tile:nth-child(6n+5),.tile:nth-child(6n+6){grid-column:span 2}.tile-link{color:#fff;width:100%;height:100%;text-decoration:none;display:block}.tile img{object-fit:cover;width:100%;height:100%;transition:transform .35s;display:block}.tile-caption{gap:var(--space-1);padding:60px var(--space-5) 18px;pointer-events:none;background:linear-gradient(#0000,#000d);flex-direction:column;display:flex;position:absolute;bottom:0;left:0;right:0}.tile-meta>[aria-hidden]{display:inline-block;transform:translateY(-1px)}.tile-meta{justify-content:space-between;align-items:center;gap:var(--space-1);font-size:var(--text-meta);color:#f5f2eb;display:flex}.tile-title{font-size:var(--text-title);font-weight:550;line-height:1.3}.tile-role{font-size:var(--text-meta);color:#f5f2eb;line-height:1.4}.tile-link:focus-visible{outline-offset:-8px;outline:3px solid #fff}.tile:has(.tile-link:focus-visible){outline:3px solid var(--accent);outline-offset:4px}.paginated-work{margin-top:var(--space-16)}.page-navigation{margin-top:var(--space-8);justify-content:space-between;display:flex}@media (hover:hover) and (prefers-reduced-motion:no-preference){.tile-link:hover img{transform:scale(1.025)}}@media (width>=560px) and (width<=899px){.bento-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=559px){.site-nav{padding:var(--space-2) var(--space-4)}.nav-actions{gap:14px}.work{padding:0 var(--space-5)}.work-heading{align-items:flex-start;gap:var(--space-1);flex-direction:column;margin-bottom:18px}.bento-grid{grid-template-columns:minmax(0,1fr)}.tile:nth-child(n){grid-area:auto}.tile:nth-child(6n+1){grid-row:span 1}.tile-caption{padding:60px 18px 18px}}.is-decoding{position:relative}.is-decoding,.is-decoding *{color:#0000!important}.is-decoding .decode-layer{color:initial!important}.decode-layer{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.preview-box{background:var(--tile-alt);border:1px solid var(--tile-border);border-radius:8px;width:100%;height:88px;display:block}.preview-box-square{width:88px;height:88px}.preview-box-tall{width:44px;height:88px}.preview-box-wide{width:176px;height:88px}.preview-note{color:var(--subtle);font-size:var(--text-meta)}.tile[id]{scroll-margin-top:32px}.tile[id]:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.tile>.dir-aware-fill[role=button]:focus-visible{outline:2px solid var(--accent);outline-offset:-4px}.lightbox{z-index:100;position:fixed;inset:0}.lightbox-backdrop{backdrop-filter:blur(18px)saturate(1.1);background:#0f1012b8;position:absolute;inset:0}.lightbox-image{object-fit:cover;cursor:grab;touch-action:none;user-select:none;box-shadow:0 0 0 1px var(--line), 0 30px 80px #00000080;border-radius:8px;position:fixed}.lightbox-image:active{cursor:grabbing}.lightbox-close{background:var(--card);box-shadow:var(--outline-shadow);position:absolute;top:16px;right:16px}.lightbox-close:hover{background:var(--card-hover)}.lightbox-open{overflow:hidden}:root[data-theme=light] .lightbox-backdrop{background:#fffc}.theme-toggle .icon-sun,:root[data-theme=light] .theme-toggle .icon-moon{display:none}:root[data-theme=light] .theme-toggle .icon-sun{display:block}.ref{cursor:pointer}.hover-card{z-index:60;border:1px solid var(--pop-line);width:max-content;max-width:min(360px,100vw - 24px);color:var(--text);background:var(--pop-bg);box-shadow:var(--pop-shadow);font-size:var(--text-secondary);opacity:0;transform-origin:top;border-radius:14px;padding:14px;line-height:1.45;transition:opacity .18s,transform .26s cubic-bezier(.34,1.3,.5,1);position:fixed;transform:translateY(6px)scale(.97)}.hover-card[data-side=above]{transform-origin:bottom;transform:translateY(-6px)scale(.97)}.hover-card.is-open{opacity:1;transform:none}.hover-fan{width:min(436px,100vw - 24px);padding-bottom:var(--space-3)}.fan{--step:86px;height:138px;margin-bottom:var(--space-3);position:relative}.fan-item{--i:0;--o:0;--lift:0px;border:2px solid var(--pop-bg);color:#fff;background:var(--tile-alt);width:168px;height:105px;transition:transform .42s cubic-bezier(.34, 1.35, .5, 1) calc(var(--i) * 40ms);border-radius:10px;margin-left:-84px;position:absolute;top:14px;left:50%;overflow:hidden;transform:rotate(0)translate(0);box-shadow:0 6px 20px #0006}.fan-item:hover{background:var(--accent);color:#fff}.fan-blank .dir-overlay{opacity:1;background:0 0;justify-content:center}.fan-blank .dir-overlay>*{transform:none}.fan-item img{object-fit:cover;width:100%;height:100%;display:block}.fan-item:nth-child(2){--i:1}.fan-item:nth-child(3){--i:2}.fan-item:nth-child(4){--i:3}.fan-item[data-o="-1.5"]{--o:-1.5}.fan-item[data-o="-1"]{--o:-1}.fan-item[data-o="-0.5"]{--o:-.5;--lift:-3px}.fan-item[data-o="0"]{--lift:-6px}.fan-item[data-o="0.5"]{--o:.5;--lift:-3px}.fan-item[data-o="1"]{--o:1}.fan-item[data-o="1.5"]{--o:1.5}.hover-card.is-open .fan-item{transform:translateX(calc(var(--o) * var(--step))) translateY(var(--lift)) rotate(calc(var(--o) * 8deg))}.hover-card.is-open .fan-item:hover{z-index:3}.dir-aware{display:block;position:relative;overflow:hidden}.dir-aware-fill{position:absolute;inset:0}.dir-overlay{padding:var(--space-3);color:#fff;font-size:var(--text-meta);opacity:0;pointer-events:none;background:linear-gradient(#0000 10%,#08080ac7);flex-direction:column;justify-content:flex-end;gap:2px;line-height:1.3;transition:opacity .3s;display:flex;position:absolute;inset:0}.dir-overlay>*{transform:translate(var(--tx,0), var(--ty,10px));transition:transform .34s cubic-bezier(.2,.65,.3,1)}.dir-overlay strong{font-size:var(--text-meta);font-weight:600}.dir-aware img{transition:transform .5s cubic-bezier(.2,.65,.3,1)}.dir-aware.is-aware img{transform:scale(1.12) translate(var(--ix,0), var(--iy,0))}.dir-aware[data-dir=top]{--ty:-10px;--iy:6px}.dir-aware[data-dir=bottom]{--ty:10px;--iy:-6px}.dir-aware[data-dir=left]{--tx:-10px;--ty:0;--ix:6px}.dir-aware[data-dir=right]{--tx:10px;--ty:0;--ix:-6px}.dir-aware.is-aware .dir-overlay{opacity:1}.dir-aware.is-aware .dir-overlay>*{transform:none}@media (prefers-reduced-motion:reduce){.hover-card,.fan-item,.dir-overlay{transition:none}}.fan-item.dir-aware{position:absolute}.fan-item:hover{background:var(--tile-alt)}.hover-card strong{font-weight:600}@media (width<=480px){.fan{--step:62px}}.now-playing{margin:var(--space-1) 0}.np-pill{--np-green:#1db954;padding:var(--space-1) 14px var(--space-1) 6px;color:var(--text);background:var(--card);box-shadow:var(--outline-shadow);border-radius:999px;align-items:center;gap:10px;display:inline-flex;position:relative}.np-pill[data-state=playing] .np-icon{opacity:1}.np-pill:before,.np-pill:after{content:"";border:1px solid var(--np-green);opacity:0;pointer-events:none;border-radius:50%;width:22px;height:22px;margin-top:-11px;position:absolute;top:50%;left:6px}.np-pill[data-state=playing]:before{animation:2.4s ease-out infinite np-ring}.np-pill[data-state=playing]:after{animation:2.4s ease-out 1.2s infinite np-ring}@keyframes np-ring{0%{opacity:.7;transform:scale(1)}to{opacity:0;transform:scale(1.9)}}.np-window{white-space:nowrap;width:168px;display:block;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000,#000 8px calc(100% - 14px),#0000);mask-image:linear-gradient(90deg,#0000,#000 8px calc(100% - 14px),#0000)}.np-track{padding-left:var(--space-2);display:inline-block}.np-track.is-scrolling{animation:np-scroll var(--np-duration,12s) linear infinite}.np-track.is-scrolling>span{padding-right:40px;display:inline-block}@keyframes np-scroll{to{transform:translate(-50%)}}@media (prefers-reduced-motion:reduce){.np-pill:before,.np-pill:after,.np-track.is-scrolling{animation:none}.np-window{text-overflow:ellipsis}}.hover-fan-bare{box-shadow:none;background:0 0;border:0;padding:0}.hover-fan-bare .fan{margin-bottom:0}.scroll-fade{z-index:30;pointer-events:none;height:100px;position:fixed;inset:0 0 auto}.scroll-fade>*{opacity:0;transition:opacity .2s;position:absolute;inset:0}.scroll-fade.is-visible>*{opacity:1}.fade-blur:first-child{--blur:1px;--mask:linear-gradient(to bottom, #000 0%, transparent 100%)}.fade-blur:nth-child(2){--blur:2px;--mask:linear-gradient(to bottom, #000 40%, transparent 80%)}.fade-blur:nth-child(3){--blur:4px;--mask:linear-gradient(to bottom, #000 25%, transparent 60%)}.fade-blur:nth-child(4){--blur:8px;--mask:linear-gradient(to bottom, #000 12%, transparent 40%)}.fade-blur:nth-child(5){--blur:12px;--mask:linear-gradient(to bottom, #000 0%, transparent 25%)}.fade-blur{backdrop-filter:blur(var(--blur));mask-image:var(--mask);-webkit-mask-image:var(--mask)}.fade-tint{background:color-mix(in srgb, var(--background) 80%, transparent);-webkit-mask-image:linear-gradient(#000,#0000);mask-image:linear-gradient(#000,#0000)}@media (prefers-reduced-motion:reduce){.scroll-fade>*{transition:none}}.texture-grain{--grain-dark:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='d'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='1' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 -0.5'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23d)'/%3E%3C/svg%3E");--grain-light:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='l'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='1' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 -1 0 0 0 0.5'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23l)'/%3E%3C/svg%3E");z-index:40;pointer-events:none;opacity:.06;background-image:var(--grain-dark), var(--grain-light);background-size:200px 200px;position:fixed;inset:0}.np-pill[data-state=static] .np-icon{opacity:1}.np-row{align-items:center;gap:10px;display:flex}.hover-card:has(.fan-song){width:310px}.fan-song{height:150px;position:relative}.song-cover,.song-info{border:2px solid var(--pop-bg);border-radius:12px;transition:transform .42s cubic-bezier(.34,1.35,.5,1);position:absolute;top:8px;box-shadow:0 6px 20px #0006}.song-cover{object-fit:cover;z-index:2;width:132px;height:132px;left:18px;transform:rotate(0)}.song-info{width:232px;height:128px;padding:var(--space-3) 10px var(--space-3) 58px;color:var(--text);background:var(--pop-bg);font-size:var(--text-meta);flex-direction:column;justify-content:center;gap:2px;line-height:1.35;display:flex;left:100px;transform:translate(-60px)rotate(0)}.song-info strong{font-size:16px;font-weight:600}.song-meta{color:var(--subtle)}.hover-card.is-open .song-cover{transform:translate(-4px)rotate(-6deg)}.hover-card.is-open .song-info{transform:translate(0)translateY(8px)rotate(4deg)}@media (prefers-reduced-motion:reduce){.song-cover,.song-info{transition:none}}.fan-song,.fan-song:hover{color:var(--text);background:0 0;text-decoration:none;display:block}.fan-song:hover .song-meta:last-child{color:var(--text)}button.ref-text,.ref-text[role=button]{color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;padding:0}.now-playing{margin-top:var(--space-3)}.palette-open{overflow:hidden}.palette{z-index:90;position:fixed;inset:0}.palette[hidden]{display:none}.palette-backdrop{background:color-mix(in srgb, var(--background) 62%, transparent);backdrop-filter:blur(10px);opacity:0;transition:opacity .16s;position:absolute;inset:0}.palette-panel{border-radius:calc(var(--ui-radius) + 4px);width:min(640px,100% - 32px);box-shadow:var(--pop-shadow);opacity:0;margin:min(14vh,120px) auto 0;transition:opacity .16s,transform .22s cubic-bezier(.2,.65,.3,1);position:relative;overflow:hidden;transform:translateY(-8px)scale(.985)}.palette.is-open .palette-backdrop{opacity:1}.palette.is-open .palette-panel{opacity:1;transform:none}.palette-field{align-items:center;gap:var(--space-3);padding:0 var(--space-4);border-bottom:1px solid var(--pop-line);display:flex}.palette-field svg{fill:none;width:20px;height:20px;stroke:var(--subtle);stroke-width:1.5px;stroke-linecap:round;flex:0 0 20px}.palette-input{min-width:0;height:56px;color:var(--text);caret-color:var(--accent);font:500 var(--text-body)/1.3 var(--font-body);background:0 0;border:0;outline:none;flex:1;padding:0}.palette-input::placeholder{color:var(--subtle)}.palette-list{max-height:min(56vh,424px);padding:var(--space-2);overscroll-behavior:contain;margin:0;list-style:none;overflow-y:auto}.palette-row{align-items:center;gap:var(--space-3);padding:var(--space-2);border-radius:var(--ui-radius-sm);cursor:pointer;display:flex}.palette-row[aria-selected=true]{background:var(--ui-hover)}.palette-heading{padding:6px var(--space-2);color:var(--subtle);font:500 var(--text-meta)/20px var(--font-mono)}.palette-thumb{object-fit:cover;border:1px solid var(--tile-border);background:var(--tile-alt);border-radius:6px;flex:0 0 56px;width:56px;height:40px}.palette-text{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.palette-title{font:500 16px/1.3 var(--font-body);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.palette-title mark{color:var(--accent-text);background:0 0;font-weight:700}.palette-meta{color:var(--subtle);font:500 var(--text-meta)/20px var(--font-mono);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.palette-enter{visibility:hidden}.palette-row[aria-selected=true] .palette-enter{visibility:visible}.palette-empty{padding:var(--space-6) var(--space-3);color:var(--subtle);font:500 var(--text-meta)/20px var(--font-mono);text-align:center}.palette-foot{justify-content:space-between;gap:var(--space-4);padding:10px var(--space-4);border-top:1px solid var(--pop-line);color:var(--subtle);font:500 var(--text-meta)/24px var(--font-mono);display:flex}.palette-hints{align-items:center;gap:var(--space-2);display:flex}.palette-hints .kbd{margin-left:var(--space-2)}.palette-hints .kbd:first-child{margin-left:0}@media (width<=559px){.palette-hints{display:none}.palette-panel{margin-top:var(--space-3)}}@media (prefers-reduced-motion:reduce){.palette-backdrop,.palette-panel{transition:none}}.to-top{z-index:20;backdrop-filter:blur(8px);opacity:0;visibility:hidden;transition:opacity .2s,transform .2s,visibility 0s linear .2s;position:fixed;bottom:24px;right:24px;transform:translateY(8px)}.to-top.is-visible{opacity:1;visibility:visible;transition-delay:0s;transform:none}@media (prefers-reduced-motion:reduce){.to-top{transition:none;transform:none}}@media (width<=559px){.to-top{bottom:12px;right:12px}}.site-footer{padding:var(--space-6) var(--space-4) var(--space-8);justify-content:center;display:flex}.footer-link:focus-visible{outline:2px solid var(--text);outline-offset:3px}.footer-link{color:var(--muted-fg);font:400 14px / 1.4 var(--font-body);text-decoration:none}.footer-link:is(:hover,:focus-visible){color:var(--text);text-underline-offset:4px;background:0 0;text-decoration:underline 1px}.intro h1 .w-look{--split:3.5px;animation-delay:4.5s}.intro h1 .w-look:before,.intro h1 .w-look:after{content:"look";font-kerning:none;animation-delay:4.5s}.intro{width:600px;max-width:calc(100% - 48px);margin:var(--space-6) auto 80px;padding:0}.intro h1,.cv-intro h1{font:700 clamp(26px, calc(14px + 2.2vw), 44px) / 1.05 var(--font-display);letter-spacing:-.03em;margin-bottom:var(--space-2)}.intro-identity{font-family:var(--font-mono);font-weight:500;line-height:20px;font-size:var(--text-meta);color:var(--muted)}.intro-copy{text-wrap:pretty;margin-top:var(--space-6)}.intro-copy p+p{margin-top:var(--space-4)}.intro-copy a{text-decoration:none}.intro-contact{margin-top:var(--space-4)}.intro-links{margin-top:var(--space-4);font-style:italic}.intro-status{margin:var(--space-4) 0 0;font:500 var(--text-meta)/20px var(--font-mono);padding:0;list-style:none}.intro-status li{align-items:center;gap:var(--space-2);min-height:28px;display:flex}.intro-status>li>svg,.weather-preview>svg{fill:none;stroke:currentColor;stroke-width:1.5px;flex:0 0 20px;width:20px;height:20px}.work-grid .tile{border:1px solid var(--tile-border)}@media (width<=559px){.intro{margin-top:var(--space-6);margin-bottom:var(--space-12)}}.portfolio-layout{align-items:stretch;gap:var(--space-4);max-width:var(--frame-max);margin:var(--space-6) auto 0;padding:0 var(--frame-pad-right) 0 var(--frame-pad-left);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.portfolio-layout .intro{width:100%;max-width:600px;padding-right:var(--space-12);margin:0;position:static}.portfolio-layout .work-section{width:100%;min-width:0;max-width:none;padding:0;container-type:inline-size}.intro-status{margin-top:var(--space-8)}.weather-fallback{margin-top:var(--space-2);font-size:var(--text-meta);color:var(--subtle)}.intro-bottom-space{height:29px}@media (width<=1099px){.intro-bottom-space{display:none}.portfolio-layout{gap:var(--space-4);grid-template-columns:minmax(0,1fr)}.portfolio-layout .intro{margin:0 auto var(--space-8);padding:0;position:static}}@media (height<=740px){.portfolio-layout .intro{position:static}}.reveal-ready .work-grid .tile{opacity:0;transition:opacity .4s cubic-bezier(.2, .65, .3, 1) var(--reveal-delay,0s), transform .4s cubic-bezier(.2, .65, .3, 1) var(--reveal-delay,0s), border-color .2s ease;transform:translateY(12px)}.reveal-ready .work-grid .tile.is-visible{opacity:1;transform:none}.work-grid .tile-link>img:not(.backdrop-art){transition:transform 1.2s cubic-bezier(.22,1,.36,1);transform:scale(1.02)}.work-grid .tile-link:hover{color:#fff;background:0 0}@media (hover:hover){.work-grid .tile:hover{border-color:var(--pop-line)}.work-grid .tile{transition:border-radius .2s cubic-bezier(0,0,.2,1),border-color .2s;overflow:hidden}.reveal-ready .work-grid .tile{transition:opacity .4s cubic-bezier(.2, .65, .3, 1) var(--reveal-delay,0s), transform .4s cubic-bezier(.2, .65, .3, 1) var(--reveal-delay,0s), border-radius .2s cubic-bezier(0, 0, .2, 1), border-color .2s ease}.work-grid .tile:hover{border-radius:2rem}.work-grid .tile:hover .tile-link>img:not(.backdrop-art){transform:scale(1.035)}}.intro-copy a{color:var(--text)}.intro-copy a.ref:hover,.intro-copy a.ref:focus-visible{color:var(--text);background:0 0}.intro-links a{font-weight:inherit;text-decoration:none}.intro-links a:hover{text-decoration:none}.intro-copy p{color:var(--subtle);font-size:clamp(17px,1.4vw,20px);line-height:1.6}.intro-copy a{background:0 0}.intro-copy a,.intro-copy a.ref{color:var(--text);font-weight:500}.intro-copy .ref-text[role=button]{color:inherit;font-weight:inherit}.intro-copy .ref-text[role=button].ref-highlight{color:var(--text);font-weight:500}.intro-copy .ref-text{text-underline-offset:4px;text-decoration:none}.intro-copy .ref-text,.intro-copy .ref-text:is(:hover,:focus-visible){color:var(--text);background:0 0;font-weight:500;text-decoration:none}.intro-copy .ref-text:is(:hover,:focus-visible){text-underline-offset:4px;text-decoration:underline 1px}.intro-status .np-icon{width:22px;height:22px;fill:var(--np-green);stroke:none;opacity:.55;flex:0 0 22px;transition:opacity .2s;position:relative}.intro-status a.np-pill,.intro-status a.np-pill:hover{color:var(--text);background:var(--card);text-decoration:none;transition:background-color .15s}.intro-status a.np-pill:hover{background:var(--card-hover)}.intro-status a{font-weight:700}.intro-status a:is(:hover,:focus-visible){text-underline-offset:4px;text-decoration:underline 1px}.brand-plain{color:inherit;font-weight:inherit;white-space:nowrap}.js .intro h1:not(.is-split){opacity:0;animation:0s 1.6s forwards heading-show}@keyframes heading-show{to{opacity:1}}.intro h1 .w{white-space:nowrap;display:inline-block;position:relative}.intro h1 .ch{display:inline-block}.intro h1.is-split .w-make .ch{animation:.76s cubic-bezier(.34,1.56,.64,1) both heading-build;animation-delay:calc(var(--i) * 70ms + 80ms)}@keyframes heading-build{0%{opacity:0;transform:translateY(-.55em)rotate(-10deg)scale(.85)}}.intro h1.is-split .w-feel .ch{animation:.9s .3s both heading-soften,2.4s ease-in-out 1.2s 3 heading-wave;animation-delay:.3s, calc(1.2s - var(--i) * .28s);transform:translateY(calc(var(--near,0) * -.09em));color:color-mix(in oklab, var(--accent-solid) calc(var(--near,0) * 100%), var(--text));transition:transform .16s ease-out,color .16s ease-out}@keyframes heading-wave{0%,to{translate:0 .05em;rotate:-4deg}50%{translate:0 -.07em;rotate:4deg}}@keyframes heading-soften{0%{opacity:0;filter:blur(.14em)}}.intro h1.is-split .w-right .ch{animation:.64s cubic-bezier(.3,1.6,.5,1) both heading-snap;animation-delay:calc(var(--i) * 55ms + .76s)}@keyframes heading-snap{0%{opacity:0;transform:translateX(-.35em) rotate(var(--r))}}@media (prefers-reduced-motion:reduce){.intro h1 .ch{animation:none!important}}.intro-top{justify-content:space-between;align-items:center;gap:var(--space-4);display:flex}.social{align-items:center;gap:2px;margin:0 -10px 0 0;padding:0;list-style:none;display:flex}.social a{width:36px;height:36px;color:var(--text);background:0 0;border-radius:50%;place-items:center;transition:color .15s,background .15s;display:grid}.social a:hover,.social a:focus-visible{color:var(--text);background:var(--tile-alt)}.social svg{fill:currentColor;width:18px;height:18px}@media (width<=559px){.intro-identity .identity-dot{display:none}.intro-identity .identity-role{white-space:nowrap;display:block}.intro-top{flex-wrap:wrap}}.work-section .bento-grid{--cell:calc((100cqw - 48px) / 4);grid-auto-flow:dense}.full-width-work{margin-top:var(--gap);grid-column:1/-1}.full-width-work .work-grid .tile{grid-area:span 1/span 1}.full-width-work .work-grid .wall-hero,.full-width-work .work-grid .wall-hero-right{grid-area:span 2/span 2}.full-width-work .work-grid .wall-hero-right{grid-column:3/span 2}.full-width-work .work-grid .wall-wide{grid-column:span 2}@media (width>=560px) and (width<=899px){.portfolio-layout .work-section .bento-grid{--cell:calc((100cqw - 16px) / 2);grid-template-columns:repeat(2,minmax(0,1fr))}.full-width-work .work-grid .wall-hero,.full-width-work .work-grid .wall-hero-right,.full-width-work .work-grid .wall-wide{grid-column:1/-1}.full-width-work .work-grid .wall-wide{grid-row:span 1}}@media (width<=559px){.work-section .bento-grid{--cell:clamp(200px, 80cqw, 350px)}.portfolio-layout .work-section .bento-grid{grid-template-columns:minmax(0,1fr);grid-auto-rows:auto}.work-grid .tile:nth-child(n){aspect-ratio:1;grid-area:auto}.full-width-work .work-grid .wall-wide:nth-child(n){aspect-ratio:2}}@font-face{font-family:Caveat;src:url(/fonts/caveat-latin.woff2)format("woff2");font-weight:600;font-style:normal;font-display:swap}.portfolio-layout>.personal{flex-direction:column;min-width:0;display:flex;position:relative}.personal-label{margin:0 0 var(--space-2) var(--space-2);font:600 26px / 1 Caveat, var(--font-body);color:var(--subtle);rotate:-2deg}.personal-pile{height:300px;margin:0;padding:0;list-style:none;position:relative;container-type:inline-size}.personal{container-type:inline-size}.piece{--shadow:drop-shadow(0 1px 1.5px #00000040) drop-shadow(0 10px 18px #0000004d);--shadow-lifted:drop-shadow(0 2px 3px #00000040) drop-shadow(0 24px 36px #00000061);width:29cqw;rotate:var(--lean,0deg);filter:var(--shadow);-webkit-user-select:none;user-select:none;transition:rotate .32s cubic-bezier(.2,.65,.3,1),scale .22s cubic-bezier(.2,.65,.3,1),filter .22s;position:absolute}.piece-large{width:40cqw}.piece-small{width:20cqw}.piece img{aspect-ratio:1;pointer-events:none;width:100%;height:auto;display:block}.piece-frame{--fw:120px;width:var(--fw)}.like-frame{box-sizing:border-box;background:var(--card);width:100%;height:150px;box-shadow:var(--surface-shadow);border-radius:8px;padding:5px}.piece .like-frame img{aspect-ratio:auto;border-radius:5px;width:100%;height:100%}.like-frame .fit-contain{object-fit:contain}.like-frame .fit-cover{object-fit:cover;object-position:center}.piece-frame{--shadow:drop-shadow(0 6px 14px #0000002e)}.piece{--fw:120px;top:var(--y);left:calc((100cqw - var(--fw)) * var(--x))}.is-resetting .piece{transition:translate .42s cubic-bezier(.2,.65,.3,1),rotate .32s cubic-bezier(.2,.65,.3,1)}.piece.is-dragging,.piece.is-lifted{filter:var(--shadow-lifted);rotate:0deg;scale:1.04}@media (pointer:fine){.piece{cursor:grab}.piece.is-dragging{cursor:grabbing}}@media (prefers-reduced-motion:reduce){.piece,.is-resetting .piece{transition:none}.piece.is-dragging,.piece.is-lifted{scale:none;rotate:var(--lean,0deg);filter:var(--shadow)}}@media (width<=1099px){.personal-pile{height:auto;padding:var(--space-2) var(--space-4) var(--space-6);flex-wrap:wrap;justify-content:center;align-items:center;display:flex}.piece:nth-child(n){width:clamp(92px,24vw,150px);margin:0 -8px -12px;position:relative;inset:auto}.piece-large:nth-child(n){width:clamp(120px,32vw,200px)}.piece-small:nth-child(n){width:clamp(70px,18vw,110px)}.piece-frame:nth-child(n){width:90px}.piece .like-frame{height:113px}}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.tile-link.has-art{position:relative}.tile-link.has-art,.fan-item[data-backdrop]{isolation:isolate}.tile .tile-link .backdrop-art,.fan-item .backdrop-art{z-index:-2;object-fit:cover;filter:blur(28px)saturate(.7)brightness(.8);opacity:.5;width:100%;height:100%;transition:none;position:absolute;inset:0;transform:scale(1.15)}.tile .tile-link .backdrop-art.is-logo,.fan-item .backdrop-art.is-logo{opacity:.25;transform:translate(32%,30%)scale(2.6)}.backdrop-tint{z-index:-1;position:absolute;inset:0}.tile .cover-logo,.fan-item .cover-logo{filter:drop-shadow(0 4px 24px #00000059);position:relative}#local-weather{font-variant-numeric:tabular-nums}@supports (corner-shape:squircle){.nfc-log{corner-shape:squircle}}@media (width<=559px){.full-width-work .work-grid .wall-wide:has(.tile-caption):nth-child(n){aspect-ratio:4/3}}.cv-layout{--cv-gap:var(--space-12);max-width:1324px;margin:var(--space-6) auto 80px;padding:0 76px 0 var(--space-12)}.cv-print-contact{display:none}body[data-page=cv]:before{opacity:.5}body[data-page=cv] .texture-grain{opacity:.03}.cv-intro{max-width:var(--measure);margin-bottom:var(--cv-gap)}.cv-section+.cv-section{margin-top:var(--cv-gap)}.cv-section h2{margin:0 0 var(--space-6);font:500 var(--text-meta)/20px var(--font-mono);color:var(--text)}.cv-list,.cv-clients{margin:0;padding:0;list-style:none}.cv-row{grid-template-columns:var(--date-col) minmax(0, 1fr);gap:var(--space-8);display:grid}.cv-list>li+li,.cv-clients{margin-top:var(--space-8)}.cv-clients>li+li{margin-top:var(--space-5)}.cv-clients .cv-role{padding-left:var(--space-6)}.cv-clients{--tree-x:calc(var(--date-col) + var(--space-8) + var(--space-2));--name-mid:calc(var(--text-body) * .75 - 1px);--first-y:var(--name-mid);position:relative}.cv-clients>li{--name-y:var(--name-mid);--next-y:var(--name-mid);position:relative}.cv-clients:before,.cv-clients>li:before{content:"";left:var(--tree-x);pointer-events:none;border-left:1px solid var(--line);position:absolute}.cv-clients:before{top:calc(var(--space-6) * -1);height:calc(var(--space-6) + var(--first-y))}.cv-clients>li:before{top:var(--name-y);width:var(--space-3);height:calc(100% - var(--name-y) + var(--space-5) + var(--next-y));border-top:1px solid var(--line)}.cv-clients>li:last-child:before{height:0}.cv-dates,.cv-details dt{font:500 var(--text-meta)/20px var(--font-mono);color:var(--subtle);margin:0}.cv-dates{font-variant-numeric:tabular-nums;padding-top:var(--space-1);white-space:nowrap}.cv-clients .cv-dates{padding-top:0}.cv-role{max-width:var(--measure)}.cv-intro p,.cv-role p{text-wrap:pretty}.cv-role p{margin:0}.cv-role h3,.cv-role h4{margin:0 0 var(--space-1);font:700 var(--text-title)/1.3 var(--font-display);color:var(--text)}.cv-role>p:not(.cv-title){font-size:var(--text-body);color:var(--subtle)}.cv-client-head{margin:calc(var(--space-1) * -1);padding:var(--space-1);overflow:hidden}.cv-client-head>div{align-items:baseline;column-gap:var(--space-5);margin-bottom:var(--space-1);flex-wrap:wrap;display:flex}.cv-client-role{position:relative}.cv-client-role:before{content:"·" / "";width:var(--space-5);text-align:center;color:var(--subtle);position:absolute;right:100%}.cv-role h4{font:500 var(--text-body) / 1.5 var(--font-body);margin:0}.cv-role .cv-client-role{font-size:var(--text-body);color:var(--subtle);line-height:1.5}.cv-title{color:var(--subtle)}.cv-role .cv-title{margin-bottom:var(--space-2)}.cv-details{gap:var(--space-6);margin:0;display:grid}.cv-details dd{max-width:68ch;margin:0}@media (width>=1100px){.cv-list>li>.cv-row .cv-role p{font-size:var(--text-body)}}@media (width<=1099px){.cv-layout{padding:0 var(--space-16) 0 var(--space-6)}}@media (width<=559px){.cv-layout{padding:0 var(--space-6)}.cv-row{gap:var(--space-1);grid-template-columns:minmax(0,1fr)}.cv-clients .cv-dates,.cv-clients .cv-role{padding-left:var(--space-4)}.cv-clients{--tree-x:0px;--name-mid:calc(20px + var(--space-1) + var(--text-body) * .75 - 1px);--short-mid:calc(var(--text-body) * .75 - 1px)}.cv-clients .cv-dates:empty{display:none}.cv-clients:has(>li:first-child>.cv-dates:empty){--first-y:var(--short-mid)}.cv-clients>li:has(>.cv-dates:empty){--name-y:var(--short-mid)}.cv-clients>li:has(+li>.cv-dates:empty){--next-y:var(--short-mid)}}@media print{:root,:root[data-theme=light]{--background:#fff;--text:#000;--subtle:#444;--line:#bbb;color:#000;background:#fff}@page{margin:16mm 14mm}body:before,.site-nav,.skip-link,.scroll-fade,.texture-grain,body .to-top,.cv-intro .intro-status{display:none}.cv-layout{max-width:none;margin:0;padding:0}.cv-intro{margin-bottom:var(--space-8)}.cv-print-contact{margin-top:var(--space-2);display:block}.cv-row,.cv-clients>li{break-inside:avoid}.cv-section h2{break-after:avoid}}.project-layout{max-width:var(--frame-max);margin:var(--space-6) auto 80px;padding:0 var(--frame-pad-right) 0 var(--frame-pad-left)}body[data-page=project]:before{opacity:.5}body[data-page=project] .texture-grain{opacity:.03}.project-head{max-width:var(--measure);margin-bottom:var(--space-12)}.project-back{align-items:center;gap:var(--space-2);margin-bottom:var(--space-8);font:500 var(--text-meta)/20px var(--font-mono);color:var(--subtle);display:inline-flex}.project-back svg{fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;width:20px;height:20px}.project-back:is(:hover,:focus-visible){color:var(--text);background:0 0}.project-head h1{font:700 var(--text-display)/1.05 var(--font-display);letter-spacing:-.01em}.project-lead{margin-top:var(--space-4);font-size:var(--text-body);color:var(--subtle);text-wrap:pretty;line-height:1.55}.pp-grid{gap:var(--gap);grid-template-columns:repeat(12,minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid}.pp-item{border:1px solid var(--tile-border);border-radius:var(--radius);background:var(--surface);min-width:0;position:relative;overflow:hidden}.span-3{grid-column:span 3}.span-4{grid-column:span 4}.span-6{grid-column:span 6}.span-8{grid-column:span 8}.span-12{grid-column:span 12}.pp-tall{grid-row:span 2}.pp-open{cursor:zoom-in;background:0 0;border:0;width:100%;height:100%;padding:0;display:block}.pp-open img{object-fit:cover;width:100%;height:100%;transition:transform .35s;display:block}.pp-crop .pp-open{position:absolute;inset:0}.pp-crop img{object-position:top}.pp-item:has(.pp-open:focus-visible){outline:3px solid var(--accent);outline-offset:4px}.pp-open:focus-visible{outline:none}.pp-caption{padding:40px var(--space-4) var(--space-3);color:#f5f2eb;font:500 var(--text-meta)/20px var(--font-mono);opacity:0;pointer-events:none;background:linear-gradient(#0000,#000c);transition:opacity .2s;position:absolute;bottom:0;left:0;right:0}.pp-item:has(.pp-open:focus-visible) .pp-caption{opacity:1}@media (hover:hover){.pp-item:hover .pp-caption{opacity:1}}@media (hover:hover) and (prefers-reduced-motion:no-preference){.pp-open:hover img{transform:scale(1.025)}}.project-story{max-width:var(--measure);margin-top:var(--space-16)}.project-row{grid-template-columns:var(--date-col) minmax(0, 1fr);gap:var(--space-8);display:grid}.project-row dt,.project-row h2{font:500 var(--text-meta)/20px var(--font-mono);color:var(--text);margin:0}.project-row dd{font-size:var(--text-secondary);color:var(--subtle);margin:0;line-height:20px}.project-facts{gap:var(--space-3);margin:0;display:grid}.project-narrative{gap:var(--space-8);margin-top:var(--space-12);padding-top:var(--space-12);border-top:1px solid var(--line);display:grid}.project-text{gap:var(--space-4);display:grid}.project-text p{font-size:var(--text-body);color:var(--subtle);text-wrap:pretty;line-height:1.55}.project-section{margin-top:var(--space-16)}.project-section-head{margin-bottom:var(--space-6)}.project-section h2{font:700 24px/1.2 var(--font-display);color:var(--text);margin:0}.project-intro{max-width:var(--measure);margin-top:var(--space-3);font-size:var(--text-body);color:var(--subtle);text-wrap:pretty;line-height:1.55}.project-next{margin-top:var(--space-16);color:var(--text);display:block}.project-next:is(:hover,:focus-visible){color:var(--text);background:0 0;text-decoration:underline}.project-next-label{font-size:var(--text-body);color:var(--subtle);line-height:1.5;display:block}.project-next-name{font:700 clamp(32px, 5vw, 48px)/1.1 var(--font-display);display:block}@media (width<=599px){.project-head{margin-bottom:var(--space-8)}.project-story,.project-section{margin-top:var(--space-12)}.project-row{gap:var(--space-1);grid-template-columns:minmax(0,1fr)}.project-narrative{gap:var(--space-6);margin-top:var(--space-8);padding-top:var(--space-8)}.span-3{grid-column:span 6}.span-4,.span-6,.span-8{grid-column:span 12}.pp-tall{grid-row:auto}.pp-item.pp-crop{aspect-ratio:1}}@media (width>=600px) and (width<=899px){.span-3,.span-4{grid-column:span 6}.pp-tall{grid-row:auto}}@media print{.pp-caption{display:none}}:root{--ui-radius:var(--radius);--ui-radius-sm:calc(var(--radius) - 2px);--ui-ring:color-mix(in srgb, var(--text) 50%, transparent);--ui-ghost-hover:color-mix(in srgb, var(--text) 8%, transparent);--ui-hover:var(--tile-alt);--ui-shadow-xs:0 1px 2px #0000004d;--ui-shadow-md:0 8px 24px #0006}:root[data-theme=light]{--ui-ghost-hover:color-mix(in srgb, var(--text) 6%, transparent);--ui-shadow-xs:0 1px 2px #00000014;--ui-shadow-md:0 8px 24px #00000024}.btn{justify-content:center;align-items:center;gap:var(--space-2);height:36px;color:var(--text);font:500 15px/1 var(--font-body);white-space:nowrap;cursor:pointer;background:0 0;border:0;border-radius:999px;outline:none;flex-shrink:0;padding:0 14px;text-decoration:none;transition:color .15s,background-color .15s,box-shadow .15s,transform .15s;display:inline-flex}a.btn:hover,.btn:hover{color:var(--text);background:var(--ui-ghost-hover)}.btn:active{transform:scale(.97)}.btn:focus-visible{box-shadow:0 0 0 1.5px var(--ui-ring);outline:none}.btn:disabled,.btn[aria-disabled=true]{opacity:.5;pointer-events:none}.btn svg{fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:16px;height:16px}.btn-icon{width:32px;height:32px;padding:0}.btn-default{color:var(--background);background:var(--text)}a.btn-default:hover,.btn-default:hover{color:var(--background);background:color-mix(in srgb, var(--text) 88%, transparent)}.search-toggle,.theme-toggle{position:relative}.btn-icon[aria-label]:after{content:attr(aria-label);z-index:20;color:var(--background);background:var(--text);font:400 14px/1.3 var(--font-body);white-space:nowrap;pointer-events:none;opacity:0;border-radius:6px;padding:4px 8px;transition:opacity .12s;position:absolute;top:calc(100% + 6px);left:50%;transform:translate(-50%)}.btn-icon[aria-label]:hover:after{opacity:1;transition-delay:.3s}.lightbox-close[aria-label]:after,.theme-toggle[aria-label]:after{left:auto;right:0;transform:none}.to-top[aria-label]:after{inset:auto 0 calc(100% + 6px) auto;transform:none}.kbd{border:1px solid var(--line);min-width:24px;height:24px;color:var(--subtle);background:var(--tile-alt);font:500 var(--text-meta)/1 var(--font-mono);border-radius:6px;justify-content:center;align-items:center;padding:0 6px;display:inline-flex}.popover{border:1px solid var(--pop-line);color:var(--text);background:var(--pop-bg);box-shadow:var(--ui-shadow-md)}.inline-link{color:inherit;text-underline-offset:3px;text-decoration:underline 1px;text-decoration-color:color-mix(in srgb, var(--text) 30%, transparent);transition:text-decoration-color .2s}a.inline-link:hover,.inline-link:focus-visible{color:inherit;text-decoration-color:color-mix(in srgb, var(--text) 70%, transparent);background:0 0}.inline-link-nowrap{white-space:nowrap}.inline-link-icon{vertical-align:-2px;border-radius:4px;width:16px;height:16px;margin-right:4px;display:inline-block}svg.inline-link-icon{fill:none;stroke:var(--subtle);stroke-width:1.2px;stroke-linejoin:round}.inline-link-arrow{vertical-align:0;fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;opacity:0;width:0;height:12px;transition:width .2s,margin-left .2s,opacity .2s,transform .2s;display:inline-block;transform:translate(-3px,3px)}.inline-link:is(:hover,:focus-visible) .inline-link-arrow{opacity:1;width:12px;margin-left:2px;transform:none}@media (prefers-reduced-motion:reduce){.inline-link-arrow{transition:opacity .2s;transform:none}}.nav-actions{gap:10px}.now-playing{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.weather-preview{align-items:center;gap:var(--space-2);min-height:28px;display:inline-flex}.nf{z-index:1;min-height:calc(100svh - 56px);max-width:var(--frame-max);padding:0 var(--frame-pad-right) var(--space-16) var(--frame-pad-left);flex-direction:column;justify-content:flex-end;margin:0 auto;display:flex;position:relative}.nf>*{max-width:var(--measure)}.nf-title{font:700 clamp(26px, calc(14px + 2.2vw), 44px) / 1.05 var(--font-display);letter-spacing:-.03em;color:var(--text);margin:0}.nf-text{margin:var(--space-3) 0 0;font-size:var(--text-body);color:var(--subtle);line-height:1.6}.nf .project-next{width:fit-content;margin-top:var(--space-8)}.nfc-grid{gap:var(--space-12);min-height:70vh;padding-top:var(--space-12);grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);align-items:center;display:grid}.nf.nfc-grid>*{max-width:none}.nf-copy>*{max-width:var(--measure)}.nfc-log{margin:0 0 var(--space-8);background:var(--card);box-shadow:var(--outline-shadow);font-variant-numeric:tabular-nums;font:400 17px / 1.9 var(--font-mono);color:var(--text);border-radius:14px;padding:24px 24px 24px 52px;list-style:none;position:relative}.nfc-log:before{content:"";background:var(--line);width:1px;position:absolute;top:calc(24px + .4em);bottom:calc(24px + .4em);left:28px}.nfc-line{white-space:pre-wrap;overflow-wrap:anywhere;position:relative}.nfc-line:before{content:"";box-sizing:border-box;border:1px solid var(--line);background:var(--card);border-radius:50%;width:8px;height:8px;transition:background-color .2s,border-color .2s;position:absolute;top:calc(.95em - 4px);left:-27px}.nfc-line.is-done:before{background:oklch(78% .12 192);border-color:oklch(78% .12 192)}.nfc-line.nfc-fail.is-done:before{background:#ff2d87;border-color:#ff2d87}.nfc-mark{color:var(--subtle)}.nfc-fail .nfc-mark{color:#ff2d87}.nfc-cursor{vertical-align:-.22em;background:var(--text);width:.6em;height:1.15em;margin-left:2px;animation:1.06s step-end infinite nfc-blink;display:inline-block}@keyframes nfc-blink{50%{opacity:0}}.nfc-typing .nfc-line:not(.is-active){visibility:hidden}.nfc-typing .nf-copy>:not(.nfc-log){opacity:0;transition:opacity .3s,translate .3s;translate:0 8px}.nfc-done .nf-copy>:not(.nfc-log){opacity:1;translate:none}.nfc-done .nf-copy>.nf-text{transition-delay:.15s}.nfc-done .nf-copy>.nf-link{transition-delay:.3s}.vox{justify-self:center;width:100%;max-width:640px;height:auto;display:block;overflow:visible}.vox-floor line{stroke:var(--line);stroke-width:1px;vector-effect:non-scaling-stroke}.vox-top{fill:oklch(82% .12 192)}.vox-left{fill:oklch(55% .09 192)}.vox-right{fill:oklch(38% .06 192)}:root[data-theme=light] .vox-top{fill:color-mix(in oklab, var(--background) 96%, black)}:root[data-theme=light] .vox-left{fill:#bdbdbd}:root[data-theme=light] .vox-right{fill:#8a8a8a}:root[data-theme=light] .vox-cube polygon{stroke:color-mix(in oklab, var(--text) 25%, transparent);stroke-width:1px;stroke-linejoin:round;vector-effect:non-scaling-stroke}.vox-cube{transition:opacity .22s ease-out,transform .22s ease-out}.nfc-typing .vox-cube:not(.is-in){opacity:0;transform:translateY(-24px)}.vox-slot polygon{fill:#ff2d87;fill-opacity:0}.nfc-typing.nfc-lost .vox-slot polygon{animation:.4s ease-in-out vox-flash}@keyframes vox-flash{50%{fill-opacity:.6}}.vox-wire polygon{fill:none;stroke:#ff2d87;stroke-width:1.5px;stroke-dasharray:4 3;stroke-linejoin:round;vector-effect:non-scaling-stroke}.vox-shadow{fill:oklch(65% .25 350/.25)}.vox-pull{transition:translate .3s ease-out}.vox-wire,.vox-shadow{transition:opacity .4s}.vox-wire{transform-box:fill-box;transform-origin:50%;animation:3s ease-in-out infinite vox-float}.nfc-typing:not(.nfc-lost) .vox-wire,.nfc-typing:not(.nfc-lost) .vox-shadow{opacity:0}@keyframes vox-float{0%,to{transform:translateY(-6px)rotate(-2deg)}50%{transform:translateY(6px)rotate(2deg)}}@media (prefers-reduced-motion:reduce){.nfc-cursor,.vox-wire{animation:none}.nfc-line:before,.nf-copy>*,.vox-cube,.vox-pull{transition:none}}@media (width<=899px){.nfc-grid{min-height:0;padding-top:var(--space-12);grid-template-columns:minmax(0,1fr);align-items:start;gap:0}.vox{width:min(100%,420px);max-height:38vh;margin-bottom:var(--space-8);order:-1;justify-self:start}}@media (width<=559px){.nfc-log{font-size:14px}}
