:root{--sp-0:2px;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--sp-6:32px;--sp-7:48px;--sp-8:64px;--sp-9:96px;--safe-t:env(safe-area-inset-top,0px);--safe-r:env(safe-area-inset-right,0px);--safe-b:env(safe-area-inset-bottom,0px);--safe-l:env(safe-area-inset-left,0px);--gutter:max(var(--sp-4), var(--safe-l), var(--safe-r));--r-pill:999px;--fs-floor-label:.75rem;--fs-floor-small:.875rem;--fs-floor-body:1rem;--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-in:cubic-bezier(.7, 0, .84, 0);--ease-io:cubic-bezier(.65, 0, .35, 1);--ease-back:cubic-bezier(.34, 1.56, .64, 1);--spring:var(--ease-back);--dur-press:50ms;--dur-1:.12s;--dur-2:.2s;--dur-3:.32s;--dur-4:.48s;--dur-hero:.9s;--stagger:45ms;--font-display:serif;--font-ui:system-ui, sans-serif;--font-num:var(--font-ui);--font-voice:var(--font-display);--focus:#1f5f99;--focus-halo:transparent;--focus-w:3px;font-synthesis:none}@supports (transition-timing-function:linear(0, 1)){:root{--spring:linear(0, .009, .035 2.1%, .141, .281 6.7%, .723 12.9%, .938 16.7%, 1.017, 1.077, 1.121 24%, 1.149 26.8%, 1.159, 1.154 31.7%, 1.106 37.6%, 1.031 46.5%, 1.003 51.3%, .986 56.8%, .991 69.4%, 1 100%)}}.num,[data-num]{font-family:var(--font-num);font-variant-numeric:tabular-nums lining-nums;font-feature-settings:"tnum" 1, "lnum" 1}:where(a,button,[role=tab],[tabindex],input,select,summary):focus-visible{outline:var(--focus-w) solid var(--focus);outline-offset:3px;box-shadow:0 0 0 calc(var(--focus-w) + 4px) var(--focus-halo)}:where(button,a):focus:not(:focus-visible){outline:none}@keyframes ui-rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes ui-fade{0%{opacity:0}to{opacity:1}}@keyframes ui-pop{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:none}}@keyframes ui-tick{0%{transform:translateY(0)}40%{transform:translateY(-2px)scale(1.06)}to{transform:none}}@keyframes ui-burst{0%{opacity:1;transform:translate(-50%, -50%) rotate(var(--ang,0deg)) translateX(0) scale(1)}to{opacity:0;transform:translate(-50%, -50%) rotate(var(--ang,0deg)) translateX(var(--dist,40px)) scale(.4)}}.stagger>*{animation:ui-rise var(--dur-3) var(--ease-out) both;animation-delay:calc(min(var(--i,0), 10) * var(--stagger) + 60ms)}.ui-tick{animation:ui-tick var(--dur-2) var(--spring)}.ui-burst{pointer-events:none;position:absolute;inset:0}.ui-burst>i{background:var(--burst,currentColor);width:6px;height:6px;animation:ui-burst var(--dur-4) var(--ease-out) forwards;border-radius:50%;position:absolute;top:50%;left:50%}.ui-burst.ring>i{border:2px solid var(--burst,currentColor);background:0 0}@media (prefers-reduced-motion:reduce){.stagger>*{animation:ui-fade var(--dur-2) linear both;animation-delay:0s}.ui-tick,.ui-burst{animation:none;display:none}}:root.reduce-motion .stagger>*{animation:ui-fade var(--dur-2) linear both;animation-delay:0s}:root.reduce-motion .ui-tick{animation:none}:root.reduce-motion .ui-burst{display:none}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}@font-face{font-family:Studio Display;src:url(/portfolio-assets/fraunces-latin-opsz-normal-DihXLNYH.woff2)format("woff2");font-weight:100 900;font-style:normal;font-display:swap}@font-face{font-family:Studio UI;src:url(/portfolio-assets/instrument-sans-latin-wght-normal-BbzFLZTg.woff2)format("woff2");font-weight:400 700;font-style:normal;font-display:swap}@font-face{font-family:Studio Display Fallback;src:local(Times New Roman),local(Liberation Serif),local(Georgia);size-adjust:93.3%;ascent-override:105%;descent-override:27.9%}@font-face{font-family:Studio UI Fallback;src:local(Arial),local(Liberation Sans),local(Helvetica);size-adjust:102.3%;ascent-override:94.8%;descent-override:24.4%}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--font-display:"Studio Display", "Studio Display Fallback", Georgia, serif;--font-ui:"Studio UI", "Studio UI Fallback", system-ui, sans-serif;--font-num:var(--font-ui);--font-voice:var(--font-display);--ink:#07060b;--ink-2:#0d0b14;--ink-raised:#14111d;--ink-hover:#1b1726;--glass:#14111d8c;--glass-strong:#0d0b14c7;--line:#f0ebe11a;--line-strong:#f0ebe138;--text:#f3eee4;--text-muted:#f3eee4bd;--text-faint:#f3eee48a;--shadow:#0000008c;--white-08:#ffffff14;--white-16:#ffffff29;--accent-gold:#f4c774;--accent-gold-soft:#f4c77429;--accent-lime:#c6ec6a;--accent-lime-soft:#c6ec6a29;--accent-violet:#b8a2ff;--accent-violet-soft:#b8a2ff2e;--accent-teal:#7fd8cf;--accent-teal-soft:#7fd8cf29;--accent-rose:#ff8fa3;--glow-a:#b8a2ff38;--glow-b:#f4c77424;--glow-c:#7fd8cf1f;--live:#8ef0a8;--live-halo:#8ef0a859;--ui-paper:#f6f3ea;--ui-paper-ink:#16151a;--ui-paper-muted:#16151a99;--ui-paper-line:#16151a1f;--ui-phone:#0b0a10;--focus:#f4c774;--focus-halo:#f4c7744d;--fs-eyebrow:.75rem;--fs-small:.875rem;--fs-body:1rem;--fs-lede:clamp(1.0625rem, .95rem + .55vw, 1.3125rem);--fs-h1:clamp(3.1rem, 1.2rem + 8.4vw, 9.5rem);--fs-h2:clamp(2rem, 1.2rem + 3.4vw, 4rem);--fs-case-h1:clamp(2.75rem, 1.4rem + 5.6vw, 6.5rem);--fs-card:clamp(1.5rem, 1.2rem + 1vw, 2rem);--fs-card-hero:clamp(1.9rem, 1.3rem + 2.2vw, 3.1rem);--fs-stat:clamp(2.4rem, 1.6rem + 3vw, 4.2rem);--fs-thesis:clamp(1.75rem, 1.05rem + 3vw, 3.6rem);--fs-giant:clamp(4rem, .5rem + 17vw, 17rem);--r-card:28px;--r-pill:999px;--page:1240px;--z-canvas:0;--z-glow:0;--z-page:1;--z-top:10;--z-under:-1;--z-1:1;--z-2:2;--z-3:3}@property --wg{syntax:"<number>";inherits:false;initial-value:420}@property --angle{syntax:"<angle>";inherits:false;initial-value:0deg}@view-transition{navigation:auto}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:88px}html,body{background:var(--ink);color:var(--text);font-family:var(--font-ui);font-size:var(--fs-body);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;line-height:1.55}body{min-height:100vh;overflow-x:clip}a{color:inherit}a:focus-visible,button:focus-visible{outline:var(--focus-w) solid var(--focus);outline-offset:4px;box-shadow:0 0 0 8px var(--focus-halo)}::selection{background:var(--accent-violet);color:var(--ink)}.field{width:100%;height:100lvh;z-index:var(--z-canvas);opacity:0;transition:opacity 1.4s var(--ease-out);pointer-events:none;display:block;position:fixed;inset:0}.field.on{opacity:1}.field.lost{opacity:0}.glow{background:radial-gradient(38% 46% at 72% 38%, var(--glow-a), transparent 70%), radial-gradient(30% 40% at 88% 70%, var(--glow-b), transparent 70%), radial-gradient(34% 40% at 40% 20%, var(--glow-c), transparent 70%);pointer-events:none;height:110vh;z-index:var(--z-glow);transition:opacity 1.4s var(--ease-out);position:fixed;inset:-20vh 0 auto}.field.on~.glow{opacity:0}.grain{pointer-events:none;z-index:var(--z-top);opacity:.07;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:0}.top,main,.foot{z-index:var(--z-page);width:min(var(--page), 100% - 2 * var(--gutter));margin-inline:auto;position:relative}.top{z-index:var(--z-top);align-items:center;gap:var(--sp-5);padding:max(var(--sp-4), var(--safe-t)) 0 var(--sp-4);display:flex;position:sticky;top:0}.top:before{content:"";inset:0 calc(-1 * var(--gutter));z-index:var(--z-under);background:linear-gradient(to bottom, var(--glass-strong), transparent);-webkit-backdrop-filter:blur(14px)saturate(140%);position:absolute;-webkit-mask-image:linear-gradient(#000 55%,#0000);mask-image:linear-gradient(#000 55%,#0000)}.wordmark{align-items:center;gap:var(--sp-2);font-family:var(--font-display);letter-spacing:-.01em;font-size:1.25rem;font-weight:600;text-decoration:none;display:inline-flex}.mark{background:conic-gradient(from 210deg, var(--accent-violet), var(--accent-teal), var(--accent-gold), var(--accent-rose), var(--accent-violet));width:22px;height:22px;box-shadow:0 0 24px var(--glow-a);border-radius:50%;animation:14s linear infinite spin}.nav{gap:var(--sp-1);padding:var(--sp-1);border:1px solid var(--line);border-radius:var(--r-pill);background:var(--glass);-webkit-backdrop-filter:blur(10px);margin-left:auto;display:flex}.nav a{padding:var(--sp-2) var(--sp-4);border-radius:var(--r-pill);font-size:var(--fs-small);color:var(--text-muted);transition:color var(--dur-2), background var(--dur-2);font-weight:550;text-decoration:none}.nav a:hover{color:var(--text);background:var(--white-08)}.pulse{align-items:center;gap:var(--sp-2);font-size:var(--fs-small);color:var(--text-faint);white-space:nowrap;margin:0;display:inline-flex}.dot{background:var(--live);width:8px;height:8px;box-shadow:0 0 0 0 var(--live-halo);animation:beat 2.4s var(--ease-out) infinite;border-radius:50%}.eyebrow{align-items:center;gap:var(--sp-3);margin:0 0 var(--sp-5);font-size:var(--fs-eyebrow);letter-spacing:.16em;text-transform:uppercase;color:var(--text-faint);flex-wrap:wrap;font-weight:600;display:inline-flex}.eyebrow .sep{background:var(--line-strong);width:24px;height:1px}.btn{align-items:center;gap:var(--sp-2);padding:var(--sp-3) var(--sp-5);border-radius:var(--r-pill);font-weight:600;font-size:var(--fs-body);transition:transform var(--dur-2) var(--ease-out), background var(--dur-2), box-shadow var(--dur-3);text-decoration:none;display:inline-flex}.btn:active{transform:scale(.97)}.btn-primary{color:var(--ink);background:var(--text);box-shadow:0 10px 40px -10px var(--glow-a)}.btn-primary:hover{background:var(--accent,var(--accent-gold));box-shadow:0 14px 50px -8px var(--accent-soft,var(--glow-b))}.btn-primary:after{content:"→";transition:transform var(--dur-2) var(--ease-out)}.btn-primary:hover:after{transform:translate(3px)}.btn-ghost{border:1px solid var(--line-strong);background:var(--glass);-webkit-backdrop-filter:blur(8px)}.btn-ghost:hover{background:var(--white-08)}.hero{min-height:calc(100svh - 72px);padding:var(--sp-8) 0 var(--sp-9);flex-direction:column;justify-content:center;display:flex;position:relative}.hero .eyebrow{color:var(--accent-gold)}h1{word-spacing:.06em;font-family:var(--font-display);font-size:var(--fs-h1);letter-spacing:-.045em;font-variation-settings:"opsz" 144;text-wrap:balance;margin:0;font-weight:420;line-height:.92}.kinetic{max-width:11ch}.kw{white-space:nowrap;display:inline-block}.kl{font-variation-settings:"wght" var(--wg), "opsz" 144;transform:translateY(calc(var(--lift,0) * -.04em));transition:--wg .6s var(--ease-out), transform .6s var(--ease-out);display:inline-block}.kw:last-child .kl{color:color-mix(in oklab, var(--accent-violet), var(--accent-gold) calc(var(--k,0) * 100%))}.ready .split .kl{animation:letter-in 1.1s var(--ease-out) both;animation-delay:calc(.12s + var(--i) * 34ms)}.lede{margin:var(--sp-6) 0 0;max-width:600px;font-size:var(--fs-lede);color:var(--text-muted);text-wrap:pretty;line-height:1.55}.hero-cta{gap:var(--sp-3);margin-top:var(--sp-6);flex-wrap:wrap;display:flex}.ready .hero .lede,.ready .hero .hero-cta,.ready .hero .eyebrow,.ready .stats{animation:rise 1s var(--ease-out) both}.ready .hero .eyebrow{animation-delay:60ms}.ready .hero .lede{animation-delay:.65s}.ready .hero .hero-cta{animation-delay:.78s}.ready .stats{animation-delay:.92s}.stats{gap:var(--sp-5);margin:var(--sp-8) 0 0;padding-top:var(--sp-5);border-top:1px solid var(--line);grid-template-columns:repeat(4,minmax(0,1fr));max-width:880px;display:grid}.stats div{gap:var(--sp-1);flex-direction:column-reverse;display:flex}.stats dt{font-size:var(--fs-small);color:var(--text-faint)}.stats dd{font-family:var(--font-display);font-size:var(--fs-stat);letter-spacing:-.03em;font-variant-numeric:tabular-nums;font-variation-settings:"opsz" 144;margin:0;font-weight:380;line-height:1}.scroll-cue{left:50%;bottom:var(--sp-5);border:1px solid var(--line-strong);border-radius:var(--r-pill);width:26px;height:42px;margin-left:-13px;position:absolute}.scroll-cue span{background:var(--text);width:4px;height:8px;animation:cue 2s var(--ease-io) infinite;border-radius:2px;margin-left:-2px;position:absolute;top:8px;left:50%}.work,.method,.thesis{padding:var(--sp-9) 0}.section-head{max-width:760px;margin-bottom:var(--sp-8)}.section-h2{font-family:var(--font-display);font-size:var(--fs-h2);letter-spacing:-.035em;font-variation-settings:"opsz" 144;text-wrap:balance;margin:0;font-weight:400;line-height:1}.section-lede{margin:var(--sp-5) 0 0;max-width:560px;font-size:var(--fs-lede);color:var(--text-muted);text-wrap:pretty}.bento{gap:var(--sp-5);grid-template-columns:repeat(12,minmax(0,1fr));grid-auto-rows:minmax(260px,auto);margin:0;padding:0;list-style:none;display:grid}.cell{perspective:1400px;display:flex;container-type:inline-size}.cell-hero{grid-area:span 2/span 8}.cell-hero .visual{min-height:400px}.cell-tall{grid-area:span 2/span 4}.cell-wide{grid-column:span 7}.cell-square{grid-column:span 5}.accent-gold{--accent:var(--accent-gold);--accent-soft:var(--accent-gold-soft)}.accent-lime{--accent:var(--accent-lime);--accent-soft:var(--accent-lime-soft)}.accent-violet{--accent:var(--accent-violet);--accent-soft:var(--accent-violet-soft)}.accent-teal{--accent:var(--accent-teal);--accent-soft:var(--accent-teal-soft)}.card{--mx:50%;--my:30%;--rx:0deg;--ry:0deg;isolation:isolate;border-radius:var(--r-card);background:linear-gradient(160deg, var(--ink-raised), var(--ink-2));border:1px solid var(--line);min-width:0;transform:rotateX(var(--rx)) rotateY(var(--ry));transform-style:preserve-3d;transition:transform .5s var(--ease-out), border-color var(--dur-3), box-shadow var(--dur-4) var(--ease-out);box-shadow:0 30px 80px -40px var(--shadow);flex-direction:column;flex:1;text-decoration:none;display:flex;position:relative;overflow:hidden}.card:before{content:"";z-index:var(--z-1);pointer-events:none;background:radial-gradient(520px circle at var(--mx) var(--my), var(--accent-soft), transparent 45%);opacity:0;transition:opacity var(--dur-3);position:absolute;inset:0}.card:after{content:"";z-index:var(--z-3);pointer-events:none;border-radius:inherit;background:conic-gradient(from var(--angle), transparent 0 70%, var(--accent) 85%, transparent 100%);-webkit-mask-composite:xor;opacity:0;transition:opacity var(--dur-3);padding:1px;position:absolute;inset:0;-webkit-mask:linear-gradient(#000,#000) content-box,linear-gradient(#000,#000);-webkit-mask-composite:xor,source-over;mask:linear-gradient(#000,#000) content-box exclude,linear-gradient(#000,#000)}.card:hover,.card:focus-visible{border-color:var(--line-strong);box-shadow:0 40px 100px -40px var(--accent-soft)}.card:hover:before,.card:hover:after,.card:focus-visible:after{opacity:1}.card:hover:after{animation:3.2s linear infinite orbit}.visual{background:radial-gradient(80% 90% at 70% 0%, var(--accent-soft), transparent 70%), var(--ink-2);flex:1;min-height:220px;display:block;position:relative;overflow:hidden}.card-body{z-index:var(--z-2);gap:var(--sp-2);padding:var(--sp-5) var(--sp-6) var(--sp-6);display:grid;position:relative}.card-top{align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-1);flex-wrap:wrap;display:flex}.card-name{font-family:var(--font-display);font-size:var(--fs-card);letter-spacing:-.025em;font-variation-settings:"opsz" 72;font-weight:450;line-height:1.05}.cell-hero .card-name{font-size:var(--fs-card-hero)}.card-tagline{color:var(--text);font-weight:550}.card-blurb{color:var(--text-muted);max-width:60ch}@container (width<=420px){.card-blurb{display:none}}.go{align-items:center;gap:var(--sp-2);margin-top:var(--sp-2);font-size:var(--fs-small);color:var(--accent);font-weight:600;display:inline-flex}.go:after{content:"→";transition:transform var(--dur-3) var(--ease-out)}.card:hover .go:after{transform:translate(6px)}.status{align-items:center;gap:var(--sp-2);padding:var(--sp-1) var(--sp-3);border-radius:var(--r-pill);font-size:var(--fs-eyebrow);letter-spacing:.06em;text-transform:uppercase;color:var(--accent);background:var(--accent-soft);font-weight:650;display:inline-flex}.status-live:before{content:"";width:6px;height:6px;animation:beat 2.4s var(--ease-out) infinite;background:currentColor;border-radius:50%}.lock{background:currentColor;border-radius:2px;width:9px;height:7px;margin-top:4px;position:relative}.lock:before{content:"";border:1.5px solid;border-bottom:0;border-radius:4px 4px 0 0;width:6px;height:6px;position:absolute;bottom:5px;left:1.5px}.tags,.stack{gap:var(--sp-1);flex-wrap:wrap;display:inline-flex}.tag{padding:var(--sp-1) var(--sp-3);border:1px solid var(--line);border-radius:var(--r-pill);font-size:var(--fs-eyebrow);color:var(--text-faint)}.shots{display:block;position:absolute;inset:0}.shots img{aspect-ratio:16/10;object-fit:cover;border:1px solid var(--white-16);width:78%;height:auto;box-shadow:0 30px 60px -20px var(--shadow);transition:transform .7s var(--ease-out);border-radius:14px;display:block;position:absolute}.card .shots-3 img:first-child{z-index:var(--z-3);top:14%;left:11%;transform:translateZ(40px)}.card .shots-3 img:nth-child(2){z-index:var(--z-1);top:6%;left:2%;transform:rotate(-6deg)scale(.9)}.card .shots-3 img:nth-child(3){z-index:var(--z-2);top:4%;left:22%;transform:rotate(5deg)scale(.92)}.card:hover .shots-3 img:first-child{transform:translateY(-8px)scale(1.02)}.card:hover .shots-3 img:nth-child(2){transform:translate(-9%)rotate(-10deg)scale(.88)}.card:hover .shots-3 img:nth-child(3){transform:translate(9%)rotate(9deg)scale(.9)}.ui{place-items:center;display:grid;position:absolute;inset:0}.ui-kicksmash{padding-top:var(--sp-6);place-items:start center}.ui-kicksmash .phone{aspect-ratio:9/17;width:min(240px,72%);padding:var(--sp-4) var(--sp-3);background:var(--ui-phone);border:1px solid var(--white-16);box-shadow:0 40px 80px -30px var(--shadow), 0 0 0 6px var(--ink-hover);gap:var(--sp-2);transition:transform .7s var(--ease-out);border-radius:34px;flex-direction:column;display:flex;position:relative;transform:rotate(-4deg)translateY(4%)}.card:hover .ui-kicksmash .phone{transform:rotate(0)translateY(0)}.ks-head{font-size:var(--fs-eyebrow);color:var(--accent);justify-content:space-between;font-weight:700;display:flex}.ks-code{color:var(--text-faint)}.ks-card{gap:var(--sp-1);padding:var(--sp-3);background:var(--accent);color:var(--ink);border-radius:18px;display:grid}.ks-when{font-family:var(--font-display);font-size:1.375rem;font-weight:600;line-height:1.1}.ks-where,.ks-level{font-size:var(--fs-eyebrow);font-weight:600}.ks-seats{gap:var(--sp-1);margin:var(--sp-1) 0;display:flex}.seat{border:2px solid var(--ink);border-radius:50%;width:22px;height:22px}.seat.on{background:var(--ink)}.seat.pulse{animation:seat 2.2s var(--ease-io) infinite;border-style:dashed}.ks-join{padding:var(--sp-2);background:var(--ink);color:var(--accent);font-size:var(--fs-eyebrow);text-align:center;border-radius:10px;font-weight:700}.ks-bubble{padding:var(--sp-2) var(--sp-3);background:var(--ink-hover);font-size:var(--fs-eyebrow);color:var(--text-muted);animation:bubble 6s var(--ease-out) infinite;border-radius:14px 14px 14px 4px;align-self:flex-start}.ks-bubble.two{animation-delay:1.2s}.ks-bubble b{color:var(--text)}.ui-sleeplab{align-content:center;place-items:stretch stretch;gap:var(--sp-3);padding:var(--sp-5) var(--sp-6) 0}.sl-top{align-items:baseline;gap:var(--sp-2);font-size:var(--fs-small);color:var(--text-muted);flex-wrap:wrap;display:flex}.sl-score b{font-family:var(--font-display);color:var(--accent);margin-right:var(--sp-1);font-size:2.5rem;font-weight:400}.sl-score{margin-right:auto}.sl-chip{padding:var(--sp-1) var(--sp-3);border-radius:var(--r-pill);background:var(--white-08);font-size:var(--fs-eyebrow)}.sl-chart{width:100%;height:150px;overflow:visible}.sl-chart path{fill:none;vector-effect:non-scaling-stroke;stroke-linecap:round;stroke-linejoin:round}.sl-grid{stroke:var(--line);stroke-width:1px}.sl-stage{stroke:var(--accent);stroke-width:2.5px;stroke-dasharray:2000;animation:draw 5s var(--ease-io) infinite alternate}.sl-co2{stroke:var(--accent-gold);stroke-width:2px;stroke-dasharray:6 6;opacity:.8}.sl-temp{stroke:var(--accent-rose);stroke-width:2px;opacity:.8}.sl-legend{gap:var(--sp-4);font-size:var(--fs-eyebrow);color:var(--text-faint);display:flex}.sl-legend span:before{content:"";width:14px;height:2px;margin-right:var(--sp-2);vertical-align:middle;background:var(--accent);display:inline-block}.sl-legend .k-co2:before{background:var(--accent-gold)}.sl-legend .k-temp:before{background:var(--accent-rose)}.ui-kinetiq{color:var(--accent)}.kq-racket{width:auto;height:82%;max-height:300px;filter:drop-shadow(0 30px 40px var(--shadow));animation:float 6s var(--ease-io) infinite}.kq-head{fill:var(--ink-hover);stroke:currentColor;stroke-width:2px}.kq-nda{top:var(--sp-5);right:var(--sp-5);padding:var(--sp-1) var(--sp-3);border-radius:var(--r-pill);font-size:var(--fs-eyebrow);letter-spacing:.12em;text-transform:uppercase;-webkit-backdrop-filter:blur(6px);border:1px dashed;font-weight:700;position:absolute}.card .ui-kinetiq:after{content:"";-webkit-backdrop-filter:blur(2px);position:absolute;inset:0;-webkit-mask-image:linear-gradient(#0000 40%,#000);mask-image:linear-gradient(#0000 40%,#000)}.loop{gap:var(--sp-5);grid-template-columns:repeat(4,minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid;position:relative}.loop:before{content:"";background:linear-gradient(90deg, var(--accent-violet), var(--accent-teal), var(--accent-gold), var(--accent-rose));transform-origin:0;height:1px;position:absolute;top:27px;left:0;right:0}.step{padding:var(--sp-8) var(--sp-5) var(--sp-5) 0;position:relative}.step-n{border:1px solid var(--line-strong);background:var(--ink);width:32px;height:32px;font-size:var(--fs-eyebrow);font-variant-numeric:tabular-nums;border-radius:50%;place-items:center;font-weight:700;display:grid;position:absolute;top:12px;left:0}.step h3{margin:0 0 var(--sp-3);font-family:var(--font-display);font-size:var(--fs-card);letter-spacing:-.02em;font-weight:450}.step p{color:var(--text-muted);margin:0}.thesis{padding-block:var(--sp-9) calc(var(--sp-9) * 1.5)}.thesis-text{max-width:22ch;font-family:var(--font-display);font-size:var(--fs-thesis);letter-spacing:-.03em;font-variation-settings:"opsz" 144;text-wrap:balance;margin:0;font-weight:380;line-height:1.12}.foot{padding:var(--sp-8) 0 max(var(--sp-6), var(--safe-b));border-top:1px solid var(--line);color:var(--text-faint);font-size:var(--fs-small)}.giant{margin-bottom:var(--sp-6);font-family:var(--font-display);font-size:var(--fs-giant);letter-spacing:-.06em;color:#0000;-webkit-text-stroke:1px var(--line-strong);background:linear-gradient(90deg, var(--accent-violet), var(--accent-teal), var(--accent-gold), var(--accent-rose));transition:background-size 1.1s var(--ease-out);white-space:nowrap;background-repeat:no-repeat;background-size:0% 100%;-webkit-background-clip:text;background-clip:text;font-weight:300;line-height:.85;text-decoration:none;display:block;overflow:hidden}.giant:hover,.giant:focus-visible{background-size:100% 100%}.foot-row{justify-content:space-between;gap:var(--sp-4);flex-wrap:wrap;display:flex}.foot-links{gap:var(--sp-5);flex-wrap:wrap;display:flex}.foot-links a{text-decoration:none}.foot-links a:hover{color:var(--text)}.case{padding:var(--sp-6) 0 var(--sp-9)}.back{gap:var(--sp-2);font-size:var(--fs-small);color:var(--text-faint);text-decoration:none;display:inline-flex}.back:before{content:"←"}.back:hover{color:var(--text)}.case-head{max-width:900px;padding:var(--sp-8) 0 var(--sp-7)}.case-head .eyebrow{margin-bottom:var(--sp-4)}.case-head h1{font-size:var(--fs-case-h1);animation:rise .9s var(--ease-out) both;font-weight:400}.case-head .lede{animation:rise .9s .12s var(--ease-out) both}.case-head .btn{margin-top:var(--sp-6);animation:rise .9s .22s var(--ease-out) both}.case .case-visual{aspect-ratio:16/9;border-radius:var(--r-card);border:1px solid var(--line);min-height:0}.case-visual .shots{gap:var(--sp-3);grid-template-columns:repeat(2,minmax(0,1fr));display:grid;position:static}.case-visual:has(.shots){aspect-ratio:auto;background:0 0;border:0;overflow:visible}.case-visual .shots img{width:100%;position:static}.case-visual .shots img:first-child{grid-column:1/-1}.case-grid{gap:var(--sp-7);padding-top:var(--sp-8);grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(240px,.8fr);display:grid}.case-block h2,.case-side h2{margin:0 0 var(--sp-4);font-size:var(--fs-eyebrow);letter-spacing:.14em;text-transform:uppercase;color:var(--accent);font-weight:650}.case-block p{font-family:var(--font-display);font-variation-settings:"opsz" 36;margin:0;font-size:1.375rem;line-height:1.35}.case-block ul{gap:var(--sp-4);color:var(--text-muted);margin:0;padding:0;list-style:none;display:grid}.case-block li{padding-left:var(--sp-5);position:relative}.case-block li:before{content:"";background:var(--accent);width:10px;height:1px;position:absolute;top:.65em;left:0}.facts{margin:0 0 var(--sp-6);gap:var(--sp-4);display:grid}.facts div{padding-bottom:var(--sp-3);border-bottom:1px solid var(--line)}.facts dt{font-size:var(--fs-small);color:var(--text-faint)}.facts dd{font-family:var(--font-display);letter-spacing:-.02em;margin:0;font-size:1.75rem}.next{align-items:baseline;gap:var(--sp-4);margin-top:var(--sp-9);padding-top:var(--sp-6);border-top:1px solid var(--line);font-family:var(--font-display);font-size:var(--fs-h2);letter-spacing:-.03em;text-decoration:none;display:flex}.next span{font-family:var(--font-ui);font-size:var(--fs-eyebrow);letter-spacing:.14em;text-transform:uppercase;color:var(--text-faint);font-weight:650}.next:hover{color:var(--accent)}.case-page .case .visual .ui{transform:scale(1.25)}@supports (animation-timeline:view()){.reveal{animation:linear both reveal;animation-timeline:view();animation-range:entry entry 80%}.cell{animation:linear both card-in;animation-timeline:view();animation-range:entry entry 70%}.loop:before{animation:linear both draw-line;animation-timeline:view();animation-range:entry 40% cover 55%}.thesis-text .word{opacity:.16;animation:linear both word-on;animation-timeline:--thesis;animation-range:cover calc(18% + var(--w) * 42%) cover calc(24% + var(--w) * 42%)}.thesis{view-timeline-name:--thesis}}::view-transition-group(*){animation-duration:.65s;animation-timing-function:var(--ease-out)}::view-transition-old(root){animation:vt-out .3s var(--ease-in) both}::view-transition-new(root){animation:vt-in .5s .12s var(--ease-out) both}@keyframes letter-in{0%{opacity:0;filter:blur(10px);--wg:100;transform:translateY(.35em)rotate(4deg)}}@keyframes rise{0%{opacity:0;transform:translateY(18px)}}@keyframes reveal{0%{opacity:0;transform:translateY(40px)}}@keyframes card-in{0%{opacity:0;transform:translateY(80px)scale(.96)}}@keyframes draw-line{0%{transform:scaleX(0)}}@keyframes word-on{to{opacity:1}}@keyframes orbit{to{--angle:360deg}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes beat{0%{box-shadow:0 0 0 0 var(--live-halo)}70%,to{box-shadow:0 0 0 10px #0000}}@keyframes cue{0%{opacity:0;transform:translateY(0)}30%{opacity:1}to{opacity:0;transform:translateY(14px)}}@keyframes seat{50%{background:var(--ink);border-style:solid}}@keyframes bubble{0%,8%{opacity:0;transform:translateY(10px)scale(.96)}16%,80%{opacity:1;transform:none}92%,to{opacity:0}}@keyframes draw{0%{stroke-dashoffset:2000px}to{stroke-dashoffset:0}}@keyframes float{50%{transform:translateY(-10px)rotate(2deg)}}@keyframes vt-out{to{opacity:0;transform:scale(.985)}}@keyframes vt-in{0%{opacity:0;transform:translateY(16px)}}@media (width<=1000px){.cell-hero,.cell-wide{grid-column:span 12}.cell-tall,.cell-square{grid-column:span 6}.cell-hero{grid-row:span 1;min-height:560px}.loop{grid-template-columns:repeat(2,minmax(0,1fr))}.loop:before{display:none}.case-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.case-side{grid-column:1/-1}}@media (width<=720px){.pulse{display:none}.wordmark{font-size:1.125rem}.nav{gap:0}.case .case-visual{aspect-ratio:4/3}.nav a{padding:var(--sp-2) var(--sp-3)}.hero .eyebrow .sep,.hero .eyebrow span:last-child{display:none}.hero{min-height:calc(100svh - 64px);padding-bottom:var(--sp-8);justify-content:flex-end}.stats{margin-top:var(--sp-7);grid-template-columns:repeat(2,minmax(0,1fr))}.scroll-cue{display:none}.bento{grid-template-columns:minmax(0,1fr);grid-auto-rows:auto}.cell-hero,.cell-tall,.cell-wide,.cell-square{grid-area:auto/1/auto/-1;min-height:0}.visual{flex:none;min-height:260px}.cell-hero .visual{min-height:240px}.cell-tall .visual{min-height:380px}.card-body{padding:var(--sp-4) var(--sp-5) var(--sp-5)}.loop{grid-template-columns:minmax(0,1fr)}.step{padding:var(--sp-7) 0 var(--sp-2)}.work,.method,.thesis{padding:var(--sp-8) 0}.case-grid,.case-visual .shots{grid-template-columns:minmax(0,1fr)}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:1ms!important;animation:none!important}.thesis-text .word{opacity:1}.card{transform:none}}@media (width<=420px){.nav a[href$=\#method]{display:none}}@media (width>=721px){.case-visual .shots-4{grid-template-columns:repeat(3,minmax(0,1fr))}}
