:root{--ds-space-3xs: 2px;--ds-space-2xs: 4px;--ds-space-xs: 8px;--ds-space-sm: 12px;--ds-space-md: 16px;--ds-space-lg: 24px;--ds-space-xl: 32px;--ds-space-2xl: 48px;--ds-space-3xl: 64px;--ds-space-4xl: 96px;--ds-space-5xl: 128px;--ds-space-fluid-s: clamp(16px, 4vw, 22px);--ds-space-fluid-m: clamp(22px, 5.5vw, 32px);--ds-space-fluid-l: clamp(36px, 8vw, 56px);--ds-space-fluid-xl: clamp(56px, 11vw, 88px);--ds-gutter: clamp(20px, 5vw, 64px);--ds-measure: 68ch;--ds-container: 1140px;--ds-text-micro: 11px;--ds-text-mono: 12.5px;--ds-text-xs: 13px;--ds-text-sm: 14px;--ds-text-md: 15px;--ds-text-base: 17px;--ds-text-lead: clamp(16px, 1.7vw, 19px);--ds-text-h3: clamp(20px, 2.4vw, 28px);--ds-text-h2: clamp(30px, 4.4vw, 52px);--ds-text-h1: clamp(34px, 6.6vw, 78px);--ds-type-h1-size: var(--ds-text-h1);--ds-type-h1-leading: 1.06;--ds-type-h1-tracking: -.03em;--ds-type-h1-weight: 600;--ds-type-h2-size: var(--ds-text-h2);--ds-type-h2-leading: 1.1;--ds-type-h2-tracking: -.025em;--ds-type-h2-weight: 600;--ds-type-h3-size: var(--ds-text-h3);--ds-type-h3-leading: 1.2;--ds-type-h3-tracking: -.015em;--ds-type-h3-weight: 600;--ds-type-lead-size: var(--ds-text-lead);--ds-type-lead-leading: 1.5;--ds-type-lead-tracking: 0;--ds-type-lead-weight: 400;--ds-type-body-size: var(--ds-text-base);--ds-type-body-leading: 1.6;--ds-type-body-tracking: 0;--ds-type-body-weight: 400;--ds-type-ui-size: var(--ds-text-md);--ds-type-ui-leading: 1.4;--ds-type-ui-tracking: 0;--ds-type-ui-weight: 500;--ds-type-label-size: var(--ds-text-sm);--ds-type-label-leading: 1.4;--ds-type-label-tracking: 0;--ds-type-label-weight: 500;--ds-type-mono-size: var(--ds-text-mono);--ds-type-mono-leading: 1.4;--ds-type-mono-tracking: 0;--ds-type-mono-weight: 400;--ds-leading-tight: 1.06;--ds-leading-snug: 1.1;--ds-leading-normal: 1.4;--ds-leading-body: 1.5;--ds-leading-relaxed: 1.6;--ds-tracking-tightest: -.03em;--ds-tracking-tighter: -.025em;--ds-tracking-tight: -.015em;--ds-tracking-normal: 0;--ds-tracking-wide: .04em;--ds-tracking-wider: .08em;--ds-weight-regular: 400;--ds-weight-medium: 500;--ds-weight-semibold: 600;--ds-weight-bold: 700;--ds-radius-xs: calc(var(--ds-radius-base) * .25);--ds-radius-sm: calc(var(--ds-radius-base) * .5);--ds-radius-md: var(--ds-radius-base);--ds-radius-lg: calc(var(--ds-radius-base) * 1.5);--ds-radius-xl: calc(var(--ds-radius-base) * 2.5);--ds-radius-full: 999px;--ds-border-hairline: 1px;--ds-border-thick: 1.5px;--ds-border-heavy: 2px;--ds-focus-width: 2px;--ds-focus-offset: 3px;--ds-focus-style: solid;--ds-duration-instant: .1s;--ds-duration-fast: .15s;--ds-duration-base: .25s;--ds-duration-slow: .4s;--ds-duration-slower: .7s;--ds-duration-slowest: .9s;--ds-ease-out: cubic-bezier(.22, 1, .36, 1);--ds-ease-in: cubic-bezier(.55, 0, 1, .45);--ds-ease-in-out: cubic-bezier(.65, 0, .35, 1);--ds-ease-spring: linear(0, .006, .025, .101, .539, .816, .934, .988, 1.007, 1.011, 1.005, 1);--ds-shadow-sm: 0 1px 3px var(--ds-color-shadow-color);--ds-shadow-md: 0 2px 8px -2px var(--ds-color-shadow-color);--ds-shadow-lg: 0 8px 24px -6px var(--ds-color-shadow-color);--ds-shadow-xl: 0 20px 48px -12px var(--ds-color-shadow-color);--ds-shadow-inset-hairline: inset 0 1px 0 var(--ds-color-shadow-highlight);--ds-control-height-sm: calc(32px * var(--ds-density));--ds-control-height-md: calc(40px * var(--ds-density));--ds-control-height-lg: calc(48px * var(--ds-density));--ds-control-tap-min: 44px;--ds-control-pad-x-sm: calc(10px * var(--ds-density));--ds-control-pad-x-md: calc(14px * var(--ds-density));--ds-control-pad-x-lg: calc(20px * var(--ds-density));--ds-z-base: 0;--ds-z-raised: 1;--ds-z-sticky: 10;--ds-z-nav: 40;--ds-z-overlay: 50;--ds-z-modal: 60;--ds-z-toast: 70}:root{--ds-radius-base: 8px;--ds-density: 1;--ds-font-display: "Bricolage Grotesque", system-ui, sans-serif;--ds-font-sans: "IBM Plex Sans", system-ui, sans-serif;--ds-font-mono: "IBM Plex Sans", system-ui, sans-serif;--ds-font-script: "IBM Plex Sans", system-ui, sans-serif;--ds-color-bg: #0A0B0C;--ds-color-bg-alt: #0F1113;--ds-color-surface: #16181B;--ds-color-surface-raised: #171A1E;--ds-color-surface-hover: rgba(255, 255, 255, .05);--ds-color-border-subtle: rgba(255, 255, 255, .06);--ds-color-border: rgba(255, 255, 255, .1);--ds-color-border-strong: rgba(255, 255, 255, .18);--ds-color-text: #ECEDEE;--ds-color-text-dim: #C4C8CB;--ds-color-text-muted: #8A8F94;--ds-color-text-inverse: #0A0B0C;--ds-color-accent: #5B7FE8;--ds-color-accent-hover: #7C9AFF;--ds-color-accent-contrast: #FFFFFF;--ds-color-accent-alt: #7C9AFF;--ds-color-accent-gradient: linear-gradient(135deg, #5B7FE8 0%, #7C9AFF 100%);--ds-color-success: #3FA97A;--ds-color-warning: #D9A03C;--ds-color-danger: #E05252;--ds-color-info: #5B7FE8;--ds-color-shadow-color: rgba(0, 0, 0, .55);--ds-color-shadow-highlight: rgba(255, 255, 255, .08);--ds-color-selection-bg: #5B7FE8;--ds-color-selection-text: #FFFFFF}:root{--bg:var(--ds-color-bg);--bg2:var(--ds-color-bg-alt);--panel:var(--ds-color-surface);--text:var(--ds-color-text);--dim:var(--ds-color-text-dim);--mute:var(--ds-color-text-muted);--line:var(--ds-color-border);--line2:var(--ds-color-border-subtle);--accent:var(--ds-color-accent);--accent-hot:var(--ds-color-accent-hover);--serif:var(--ds-font-display);--sans:var(--ds-font-sans);--gut:var(--ds-gutter);--space-s:var(--ds-space-fluid-s);--space-m:var(--ds-space-fluid-m);--space-l:var(--ds-space-fluid-l);--ease:var(--ds-ease-out)}*{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--bg)}body{margin:0;background:transparent;color:var(--text);font-family:var(--sans);font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}.locked body{overflow:hidden}.locked main,.locked footer,.locked .nav{visibility:hidden}html:not(.js) .think,html:not(.js) .inspect-toggle-wrap{display:none}html:not(.js) #foot:after{content:none}img,video{display:block;max-width:100%}h1,h2,h3{text-wrap:balance}p{text-wrap:pretty}a{color:inherit;text-decoration:none}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.wrap{max-width:1140px;margin:0 auto;padding-inline:var(--gut)}.lbl{font-family:var(--sans);font-size:var(--ds-type-label-size);line-height:var(--ds-type-label-leading);font-weight:var(--ds-type-label-weight);letter-spacing:var(--ds-type-label-tracking);color:var(--mute);font-variant-numeric:tabular-nums}.nav{position:fixed;top:0;left:0;right:0;z-index:40;padding-block:12px;transition:padding var(--ds-duration-base) var(--ease),opacity var(--ds-duration-slower) var(--ease)}.js .nav{opacity:0}.nav-blur{position:absolute;top:0;right:0;bottom:-48px;left:0;z-index:-1;pointer-events:none}.nav-blur:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(to bottom,color-mix(in srgb,var(--bg) 70%,transparent),color-mix(in srgb,var(--bg) 35%,transparent) 55%,transparent)}.nav-blur i{position:absolute;top:0;right:0;bottom:0;left:0;backdrop-filter:blur(var(--b));-webkit-backdrop-filter:blur(var(--b));--m:linear-gradient(to top,transparent var(--a),#000 calc(var(--a) + 10%),#000 calc(var(--a) + 20%),transparent calc(var(--a) + 30%));mask-image:var(--m);-webkit-mask-image:var(--m)}.nav-blur i:nth-child(1){--b:1px;--a:0%}.nav-blur i:nth-child(2){--b:2px;--a:10%}.nav-blur i:nth-child(3){--b:4px;--a:20%}.nav-blur i:nth-child(4){--b:8px;--a:30%}.nav-blur i:nth-child(5){--b:16px;--a:40%}.nav-blur i:nth-child(6){--b:24px;--m:linear-gradient(to top,transparent 50%,#000 60%)}.nav.in{opacity:1}.nav.shrink{padding-block:10px}.nav .in{display:flex;align-items:center;gap:20px}.nav .me{font-weight:500;font-size:15px}.nav ul{list-style:none;display:flex;gap:6px;margin:0 0 0 auto;padding:0}.nav ul a{font-size:14px}#prog{position:absolute;left:0;bottom:-1px;height:2px;width:100%;background:var(--accent);transform:scaleX(0);transform-origin:left;will-change:transform;border-radius:2px}.hero{min-height:86svh;display:flex;flex-direction:column;justify-content:center;padding-block:118px 56px}.think{position:fixed;left:0;right:0;top:50%;transform:translateY(-50%);z-index:50;max-width:1140px;margin:0 auto;padding-inline:var(--gut);display:flex;align-items:center;gap:10px;pointer-events:none;font-size:14px;opacity:0;transition:opacity var(--ds-duration-slow) var(--ease),filter var(--ds-duration-slow) var(--ease)}.think .ob-loading-text{--ob-loading-text-hold:.75s}.think.in{opacity:1}.think.out{opacity:0;filter:blur(4px)}.hero h1{font-family:var(--serif);font-weight:600;font-size:clamp(34px,6.6vw,78px);line-height:1.06;letter-spacing:-.03em;margin:0 0 28px;max-width:17ch;text-wrap:balance}.hero .sub{font-size:clamp(16px,1.7vw,19px);color:var(--dim);max-width:52ch;margin:0 0 var(--space-l)}.hero .meta{display:flex;flex-wrap:wrap;gap:10px 26px;align-items:center}.dot{width:7px;height:7px;background:var(--accent);border-radius:50%;display:inline-block;margin-right:8px}.hero .meta a{border-bottom:1px solid var(--line);transition:border-color var(--ds-duration-fast),color var(--ds-duration-fast)}.hero .meta a:hover{color:var(--accent);border-bottom-color:var(--accent)}.marq{border-top:1px solid var(--line2);border-bottom:1px solid var(--line2);padding:20px 0;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,black 12%,black 88%,transparent);mask-image:linear-gradient(90deg,transparent,black 12%,black 88%,transparent)}.marq .row{--marq-dur:34s;display:flex;width:max-content;animation:slide var(--marq-dur) linear infinite}.marq:hover .row{animation-play-state:paused}.marq span{font-size:15px;color:var(--mute);padding:0 clamp(24px,2.6vw,44px);white-space:nowrap;transition:color var(--ds-duration-base)}.marq:hover span{color:var(--dim)}@keyframes slide{to{transform:translate(-50%)}}section{padding-block:clamp(56px,7vw,118px);min-height:86svh;display:flex;flex-direction:column;justify-content:center}.head{display:flex;align-items:baseline;gap:16px;margin-bottom:clamp(24px,2.6vw,40px)}.head h2{font-family:var(--sans);font-weight:500;font-size:15px;margin:0}.head .rule{flex:1;height:1px;background:var(--line2)}.about{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);gap:clamp(24px,5vw,64px);align-items:center}.about p{margin:0 0 var(--space-m);color:var(--dim);font-size:16.5px}.about p:last-child{margin:0}.portrait{display:inline-block;max-width:100%;position:relative;transition:transform var(--ds-duration-slow) var(--ease);will-change:transform;touch-action:pan-y;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.portrait picture{display:block}.portrait .pl-back{position:relative}.portrait img{display:block;max-width:100%;height:auto;-webkit-user-drag:none}.portrait:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:radial-gradient(circle at var(--gx,50%) var(--gy,50%),color-mix(in srgb,var(--text) 14%,transparent),transparent 55%);opacity:0;transition:opacity var(--ds-duration-base) var(--ease);-webkit-mask:url(/portrait/back.webp) center/100% 100% no-repeat;mask:url(/portrait/back.webp) center/100% 100% no-repeat}.portrait.tilting:after{opacity:1}.pl-fg{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;-webkit-mask:url(/portrait/inner.png) center/100% 100% no-repeat;mask:url(/portrait/inner.png) center/100% 100% no-repeat}.pl-l{position:absolute;top:0;right:0;bottom:0;left:0}.portrait .pl-l>img:first-child{width:100%}.portrait .pl{position:absolute;max-width:none;height:auto;pointer-events:none}.pl-ticks-left{left:13.796%;top:47.608%;width:6.459%;transform-origin:85% 95%}.pl-ticks-mic{left:81.499%;top:50.638%;width:5.582%;transform-origin:0% 45%}.portrait .pl-devices{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block}.pl-devices .lap-sel,.pl-devices .mon-bar{transform-box:fill-box;transform-origin:0 0}.pl-devices .lap-sel{opacity:0}.pl-devices .lap-cursor{transform:translate(128px,70px)}.pl-mac{--d:.4}.pl-mon{--d:.3}.pl-mic{--d:.55}.pl-me{--d:1}.pl-l{translate:calc(var(--fx,0) * var(--d) * 1px) calc(var(--fy,0) * var(--d) * 1px);transition:translate var(--ds-duration-slow) var(--ds-ease-out)}.portrait.in .pl-me>img{animation:plDrift 6s var(--ds-ease-in-out) infinite}.portrait.in .pl-ticks-left{animation:plTick 2.2s var(--ds-ease-in-out) infinite}.portrait.in .pl-ticks-mic{animation:plTick 1.6s var(--ds-ease-in-out) .4s infinite}@keyframes plDrift{0%,to{transform:none}50%{transform:translateY(-.5%)}}@keyframes plTick{0%,to{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.88)}}.pl-devices{--lap-loop:10s;--mon-loop:9s}.pl-devices .f-ink{fill:#111113}.pl-devices .s-ink{stroke:#111113}.pl-devices .f-paper{fill:#fff}.pl-devices .s-paper{stroke:#fff}.pl-devices .f-figma{fill:#0d99ff}.pl-devices .s-figma{stroke:#0d99ff}.pl-devices .f-chrome{fill:#2c2c2c}.pl-devices .f-canvas{fill:#1e1e1e}.pl-devices .f-ui-hi{fill:#9a9a9a}.pl-devices .f-ui{fill:#7a7a7a}.pl-devices .f-ui-lo{fill:#4e4e4e}.pl-devices .f-block-1{fill:#e8e8ec}.pl-devices .f-block-2{fill:#c4d2e4}.pl-devices .f-block-3{fill:#b2b2ba}.pl-devices .f-metal{fill:#a6a3a0}.pl-devices .f-metal-dk{fill:#6d6b69}.pl-devices .f-bezel{fill:#5f6069}.pl-devices .f-screen{fill:#28292c}.pl-devices .f-panel{fill:#2e2f32}.pl-devices .f-pill{fill:#35373a}.pl-devices .f-dot{fill:#737474}.pl-devices .f-bar{fill:#5b5d5f}.pl-devices .f-pick{fill:#466fa7}@keyframes lapCursor{0.00%{transform:translate(130px,60px)}4.00%{transform:translate(130px,60px)}8.50%{transform:translate(48px,24px)}13.50%{transform:translate(100px,36px)}17.50%{transform:translate(100px,36px)}22.00%{transform:translate(52.2px,42px)}27.00%{transform:translate(95.8px,76px)}31.00%{transform:translate(95.8px,76px)}35.50%{transform:translate(52.2px,82px)}40.50%{transform:translate(89.6px,87px)}44.50%{transform:translate(89.6px,87px)}49.00%{transform:translate(52.2px,91px)}54.00%{transform:translate(79.2px,96px)}58.00%{transform:translate(79.2px,96px)}62.50%{transform:translate(52.2px,104px)}67.50%{transform:translate(95.8px,114px)}71.50%{transform:translate(95.8px,114px)}79.50%{transform:translate(128px,70px)}100.00%{transform:translate(130px,60px)}}.portrait.in .lap-cursor{animation:lapCursor var(--lap-loop) var(--ds-ease-in-out) infinite}@keyframes lapSel0{0%,8.50%{opacity:0;transform:scale(0)}8.60%{opacity:1;transform:scale(0)}13.50%{opacity:1;transform:scale(1)}22.00%{opacity:1;transform:scale(1)}22.10%,to{opacity:0;transform:scale(1)}}.portrait.in .lap-sel-0{animation:lapSel0 var(--lap-loop) linear infinite}@keyframes lapFill0{0%,13.50%{opacity:0}14.30%,91.00%{opacity:1}97.00%,to{opacity:0}}.portrait.in .lap-fill-0{animation:lapFill0 var(--lap-loop) linear infinite}@keyframes lapSel1{0%,22.00%{opacity:0;transform:scale(0)}22.10%{opacity:1;transform:scale(0)}27.00%{opacity:1;transform:scale(1)}35.50%{opacity:1;transform:scale(1)}35.60%,to{opacity:0;transform:scale(1)}}.portrait.in .lap-sel-1{animation:lapSel1 var(--lap-loop) linear infinite}@keyframes lapFill1{0%,27.00%{opacity:0}27.80%,91.00%{opacity:1}97.00%,to{opacity:0}}.portrait.in .lap-fill-1{animation:lapFill1 var(--lap-loop) linear infinite}@keyframes lapSel2{0%,35.50%{opacity:0;transform:scale(0)}35.60%{opacity:1;transform:scale(0)}40.50%{opacity:1;transform:scale(1)}49.00%{opacity:1;transform:scale(1)}49.10%,to{opacity:0;transform:scale(1)}}.portrait.in .lap-sel-2{animation:lapSel2 var(--lap-loop) linear infinite}@keyframes lapFill2{0%,40.50%{opacity:0}41.30%,91.00%{opacity:1}97.00%,to{opacity:0}}.portrait.in .lap-fill-2{animation:lapFill2 var(--lap-loop) linear infinite}@keyframes lapSel3{0%,49.00%{opacity:0;transform:scale(0)}49.10%{opacity:1;transform:scale(0)}54.00%{opacity:1;transform:scale(1)}62.50%{opacity:1;transform:scale(1)}62.60%,to{opacity:0;transform:scale(1)}}.portrait.in .lap-sel-3{animation:lapSel3 var(--lap-loop) linear infinite}@keyframes lapFill3{0%,54.00%{opacity:0}54.80%,91.00%{opacity:1}97.00%,to{opacity:0}}.portrait.in .lap-fill-3{animation:lapFill3 var(--lap-loop) linear infinite}@keyframes lapSel4{0%,62.50%{opacity:0;transform:scale(0)}62.60%{opacity:1;transform:scale(0)}67.50%{opacity:1;transform:scale(1)}73.50%{opacity:1;transform:scale(1)}73.60%,to{opacity:0;transform:scale(1)}}.portrait.in .lap-sel-4{animation:lapSel4 var(--lap-loop) linear infinite}@keyframes lapFill4{0%,67.50%{opacity:0}68.30%,91.00%{opacity:1}97.00%,to{opacity:0}}.portrait.in .lap-fill-4{animation:lapFill4 var(--lap-loop) linear infinite}@keyframes monPick{0.01%,30.56%{transform:translateY(0)}33.34%,63.89%{transform:translateY(29px)}66.68%,97.22%{transform:translateY(55px)}to{transform:translateY(0)}}.portrait.in .mon-pick{animation:monPick var(--mon-loop) var(--ds-ease-in-out) infinite}@keyframes monBar0{0%{transform:scaleX(0)}1.67%{transform:scaleX(0)}6.67%,30.00%{transform:scaleX(.854)}32.78%{transform:scaleX(0)}35.00%{transform:scaleX(0)}40.00%,63.33%{transform:scaleX(.707)}66.11%{transform:scaleX(0)}68.33%{transform:scaleX(0)}73.33%,96.67%{transform:scaleX(1)}99.44%{transform:scaleX(0)}to{transform:scaleX(0)}}.portrait.in .mon-bar-0{animation:monBar0 var(--mon-loop) var(--ds-ease-out) infinite}@keyframes monBar1{0%{transform:scaleX(0)}3.00%{transform:scaleX(0)}8.00%,30.00%{transform:scaleX(1)}32.78%{transform:scaleX(0)}36.33%{transform:scaleX(0)}41.33%,63.33%{transform:scaleX(.733)}66.11%{transform:scaleX(0)}69.67%{transform:scaleX(0)}74.67%,96.67%{transform:scaleX(.653)}99.44%{transform:scaleX(0)}to{transform:scaleX(0)}}.portrait.in .mon-bar-1{animation:monBar1 var(--mon-loop) var(--ds-ease-out) infinite}@keyframes monBar2{0%{transform:scaleX(0)}4.33%{transform:scaleX(0)}9.33%,30.00%{transform:scaleX(.833)}32.78%{transform:scaleX(0)}37.67%{transform:scaleX(0)}42.67%,63.33%{transform:scaleX(1)}66.11%{transform:scaleX(0)}71.00%{transform:scaleX(0)}76.00%,96.67%{transform:scaleX(.562)}99.44%{transform:scaleX(0)}to{transform:scaleX(0)}}.portrait.in .mon-bar-2{animation:monBar2 var(--mon-loop) var(--ds-ease-out) infinite}@keyframes monBar3{0%{transform:scaleX(0)}5.67%{transform:scaleX(0)}10.67%,30.00%{transform:scaleX(.833)}32.78%{transform:scaleX(0)}39.00%{transform:scaleX(0)}44.00%,63.33%{transform:scaleX(.689)}66.11%{transform:scaleX(0)}72.33%{transform:scaleX(0)}77.33%,96.67%{transform:scaleX(1)}99.44%{transform:scaleX(0)}to{transform:scaleX(0)}}.portrait.in .mon-bar-3{animation:monBar3 var(--mon-loop) var(--ds-ease-out) infinite}.htl{margin-top:8px;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;padding-bottom:4px;scrollbar-width:thin;scrollbar-color:var(--ds-color-border-strong) transparent}.htl::-webkit-scrollbar{height:5px}.htl::-webkit-scrollbar-track{background:transparent}.htl::-webkit-scrollbar-thumb{background:var(--ds-color-border-strong);border-radius:var(--ds-radius-full)}.htl::-webkit-scrollbar-thumb:hover{background:var(--dim)}.htl-rail{position:relative;min-width:960px;display:grid;grid-template-columns:repeat(6,1fr);padding-top:34px}.htl-item{position:relative;padding-top:20px;text-align:center}.htl-dot{position:absolute;top:-4.5px;left:50%;transform:translate(-50%);width:9px;height:9px;border-radius:50%;background:var(--line)}.htl.in .htl-dot{animation:dotFlash var(--ds-duration-slowest) var(--ease) var(--d) both}@keyframes dotFlash{0%{background:var(--line)}22%{background:var(--accent-hot)}to{background:var(--line)}}.htl.in .is-now .htl-dot{animation:dotArrive var(--ds-duration-slower) var(--ease) var(--d) forwards}@keyframes dotArrive{0%{background:var(--line)}40%{background:var(--accent-hot)}to{background:var(--accent)}}.htl-when{display:block;margin-bottom:10px}.htl-item h3{font-family:var(--serif);font-weight:600;font-size:17px;letter-spacing:-.01em;margin:0 0 4px;color:var(--text)}.htl-role{margin:0;font-size:13.5px;color:var(--mute)}.htl-when,.htl-item h3,.htl-role{transition:opacity var(--ds-duration-base) var(--ease)}.htl.in .htl-item:not(.is-now) .htl-when,.htl.in .htl-item:not(.is-now) h3,.htl.in .htl-item:not(.is-now) .htl-role{animation:htlSettle var(--ds-duration-slower) var(--ease) calc(var(--d) + var(--ds-duration-slow)) both}@keyframes htlSettle{0%{opacity:1}to{opacity:.4}}.htl-item:hover .htl-when,.htl-item:hover h3,.htl-item:hover .htl-role,.htl-item:focus-within .htl-when,.htl-item:focus-within h3,.htl-item:focus-within .htl-role{opacity:1!important}.is-now .htl-dot:after{content:"";position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px;border-radius:50%;border:1px solid var(--accent);opacity:0;--tl-pulse:3s;--tl-pulse-wait:2.9s;animation:tlPulse var(--tl-pulse) var(--ease) var(--tl-pulse-wait) infinite}@keyframes tlPulse{0%{transform:scale(.5);opacity:.75}70%{opacity:0}to{transform:scale(2.1);opacity:0}}.bld p{margin:0 0 var(--space-l);color:var(--dim);font-size:16px;max-width:64ch}.bld p.lbl{margin:0;font-size:var(--ds-type-label-size);color:var(--mute)}.bld-gh{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-s)}.gh-scroll{width:100%;max-width:100%}.gh-graph{max-width:100%;height:auto;border-radius:8px}.gh-graph-svg{display:block;width:100%;height:auto;border-radius:8px}.gh-anim{opacity:0;transition:opacity var(--ds-duration-slow) var(--ease)}.gh-anim.in{opacity:1}@media (prefers-reduced-motion:reduce){.gh-anim{opacity:1;transition:none}}.bld-link{color:var(--mute);border-bottom:1px solid var(--line);padding-bottom:1px;transition:color var(--ds-duration-fast),border-color var(--ds-duration-fast)}.bld-link:hover{color:var(--accent);border-bottom-color:var(--accent)}.side-projects{margin-top:var(--space-l)}.side-projects-label{margin:0 0 var(--space-s);font-family:var(--sans);font-weight:500;font-size:15px;color:var(--text)}.apps{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-s)}.app{display:flex;align-items:flex-start;gap:14px;padding:14px 16px;border:1px solid var(--line2);border-radius:var(--ds-radius-lg);background:var(--bg2);color:var(--dim);transition:border-color var(--ds-duration-fast)}.app:hover,.app:focus-visible{border-color:var(--ds-color-border-strong)}.app-icon{flex:none;display:grid;place-items:center;width:48px;height:48px;border-radius:12px;background:var(--bg);border:1px solid var(--line2)}.app-icon img{display:block;width:32px;height:32px;border-radius:7px}.app-body{display:flex;flex-direction:column;gap:3px;min-width:0}.app-name{color:var(--text);font-family:var(--serif);font-weight:600;font-size:16px;letter-spacing:-.01em}.app-desc{font-size:14px;line-height:1.45;color:var(--mute)}.app-url{margin-top:3px;overflow-wrap:anywhere}.app:hover .app-url{color:var(--dim)}.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}@media (max-width:640px){.apps{grid-template-columns:1fr}}.work-note{margin:calc(var(--space-m) * -.5) 0 var(--space-m);font-size:15px;line-height:1.55;color:var(--mute)}.work-list{display:grid;grid-template-columns:1fr;gap:var(--space-m)}@media (min-width:720px){.work-list{grid-template-columns:repeat(2,minmax(0,1fr))}}.case{display:flex;flex-direction:column;gap:10px;min-width:0;padding:22px 24px 24px;border:1px solid var(--line2);border-radius:14px;background:var(--bg2);color:var(--dim)}.case-meta{margin-top:-4px}.case-title{display:flex;align-items:flex-start;gap:12px;font-family:var(--serif);font-weight:600;font-size:clamp(20px,2.2vw,24px);line-height:1.2;letter-spacing:-.015em;color:var(--text);text-wrap:balance}.case-desc{font-size:15px;line-height:1.55;color:var(--mute)}.case-stats{display:flex;flex-wrap:wrap;gap:8px 20px;margin-top:auto;padding-top:12px;border-top:1px solid var(--line2);font-size:13px;color:var(--mute)}.case-stats b{color:var(--text);font-weight:600;font-variant-numeric:tabular-nums}.lead{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:clamp(24px,5vw,64px);align-items:start}.lead-text p{margin:0 0 var(--space-m);color:var(--dim);font-size:16.5px;max-width:64ch}.lead-text p:last-child{margin:0}.quotes{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-s)}.quotes li{padding:18px 20px;border:1px solid var(--line2);border-radius:var(--ds-radius-lg);background:var(--bg2);display:flex;flex-direction:column;gap:8px}.quotes blockquote{margin:0;font-family:var(--serif);font-size:18px;line-height:1.35;color:var(--text)}.quotes .lbl{color:var(--mute)}@media (max-width:820px){.lead{grid-template-columns:1fr}}.lead--solo{grid-template-columns:1fr}.pod-link{white-space:nowrap;border-bottom:0;padding-bottom:0}.pod-text{border-bottom:1px solid var(--line);padding-bottom:1px;transition:border-color var(--ds-duration-fast)}.pod-link:hover .pod-text{border-bottom-color:var(--accent)}.pod-link img{display:inline-block;width:1em;height:1em;margin-right:.35em;vertical-align:-.15em}.cta h2{font-family:var(--serif);font-weight:600;font-size:clamp(30px,4.4vw,52px);line-height:1.1;letter-spacing:-.025em;margin:0 0 20px;max-width:16ch}.tour{color:var(--mute);font-size:15px;margin:-8px 0 26px}.tour a{color:var(--text);border-bottom:1px solid var(--line)}.tour a:hover{color:var(--accent);border-bottom-color:var(--accent)}.cta .links{display:flex;flex-wrap:wrap;gap:14px 26px;align-items:center}.ob-confetti .ob-button{--ob-button-radius:var(--ds-radius-full)}.cta .links a.plain{color:var(--mute);border-bottom:1px solid var(--line);transition:color var(--ds-duration-fast),border-color var(--ds-duration-fast)}.cta .links a.plain:hover{color:var(--accent);border-bottom-color:var(--accent)}footer{border-top:1px solid var(--line2);padding-block:26px 40px}footer .in{display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between}#ver{opacity:.6}#foot:after{content:"_";margin-left:2px;animation:cursor-blink var(--ds-duration-slowest) steps(1) infinite}@keyframes cursor-blink{0%,50%{opacity:1}50.01%,to{opacity:0}}@media (prefers-reduced-motion:reduce){#foot:after{animation:none;opacity:1}}.js h1 .w{display:inline-block;opacity:0;transform:translateY(12px);filter:blur(3px)}h1 .w.w-tail{display:inline;transform:none}h1 .w.in{opacity:1;transform:none;filter:none;transition:opacity var(--ds-duration-slow) var(--ease),transform var(--ds-duration-slow) var(--ease),filter var(--ds-duration-slow) var(--ease)}.js .hero .seq,.js .marq.seq{opacity:0;transform:translateY(10px)}.seen .hero .seq,.seen .marq.seq,.seen h1 .w{transition:none!important}.hero .seq.in,.marq.seq.in{opacity:1;transform:none;transition:opacity var(--ds-duration-slower) var(--ease),transform var(--ds-duration-slower) var(--ease)}@media (max-width:820px){section{padding-block:clamp(64px,15vw,96px);min-height:70svh}.think{font-size:13px;gap:8px}.head{margin-bottom:var(--space-m)}.hero{min-height:auto;padding-block:104px 44px}.about{grid-template-columns:1fr;gap:var(--space-l)}.htl-rail{min-width:0;width:max-content;grid-template-columns:repeat(6,150px);column-gap:6px}.htl.more-r{-webkit-mask-image:linear-gradient(90deg,black 82%,transparent);mask-image:linear-gradient(90deg,black 82%,transparent)}.htl.more-l{-webkit-mask-image:linear-gradient(90deg,transparent,black 18%);mask-image:linear-gradient(90deg,transparent,black 18%)}.htl.more-l.more-r{-webkit-mask-image:linear-gradient(90deg,transparent,black 18%,black 82%,transparent);mask-image:linear-gradient(90deg,transparent,black 18%,black 82%,transparent)}.gh-graph{max-width:100%}.nav,.nav.shrink{padding-block:10px}.nav .me{display:none}.nav ul{margin:0 auto 0 0;gap:3px;min-width:0;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch}.nav ul::-webkit-scrollbar{display:none}.nav ul a{font-size:12px;padding:6px 8px;white-space:nowrap}.marq{padding:var(--space-m) 0}.marq span{font-size:14px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important;animation:none!important}.js .seq,.js h1 .w{opacity:1;transform:none;filter:none}.htl.in .htl-dot{animation:none!important;background:var(--line)}.htl.in .is-now .htl-dot{background:var(--accent)}.is-now .htl-dot:after{display:none}.think{display:none}.js .nav{opacity:1}}.inspect-toggle-wrap{position:fixed;right:20px;bottom:20px;z-index:60}.inspect-toggle{display:flex;align-items:center;gap:8px;padding:10px 16px 10px 14px;border-radius:999px;border:1px solid var(--line2);background:var(--ds-color-bg-alt);color:var(--dim);cursor:pointer;box-shadow:var(--ds-shadow-md);transition:border-color var(--ds-duration-fast),color var(--ds-duration-fast),background var(--ds-duration-fast)}.inspect-toggle:hover{color:var(--text);border-color:var(--line)}.itg-dot{width:6px;height:6px;border-radius:50%;background:var(--mute);transition:background var(--ds-duration-fast)}.inspect-toggle.on{color:var(--text);border-color:color-mix(in srgb,var(--accent) 40%,transparent);background:var(--panel)}.inspect-toggle.on .itg-dot{background:var(--accent)}.inspect-toggle-wrap.ob-tooltip-host{position:fixed}.inspect-toggle-wrap .ob-tooltip{background:var(--ds-color-bg-alt);color:var(--dim);border:1px solid var(--line2)}body.inspect [data-law]{outline:1px dashed color-mix(in srgb,var(--accent) 28%,transparent);outline-offset:5px;cursor:help;transition:outline-color var(--ds-duration-fast) var(--ease)}body.inspect [data-law]:hover{outline-color:var(--accent-hot)}body.inspect .ob-badge{pointer-events:auto}.lawtip{position:fixed;z-index:200;max-width:260px;background:var(--ds-color-bg-alt);border:1px solid var(--line2);border-radius:10px;padding:13px 15px;box-shadow:var(--ds-shadow-lg);opacity:0;transform:translateY(4px);pointer-events:none;--resize-dur:.3s;--resize-ease:var(--ds-ease-out);transition:opacity var(--ds-duration-fast) var(--ease),transform var(--ds-duration-fast) var(--ease),width var(--resize-dur) var(--resize-ease),height var(--resize-dur) var(--resize-ease);will-change:opacity,transform,width,height}.lawtip.show{opacity:1;transform:none}.lawtip-name{display:block;color:var(--accent-hot);margin-bottom:6px;font-size:var(--ds-type-label-size);line-height:var(--ds-type-label-leading);font-weight:var(--ds-type-label-weight)}.lawtip-why{margin:0;font-size:13px;line-height:1.55;color:var(--dim)}@media (max-width:820px){.inspect-toggle-wrap{right:16px;bottom:16px;transition:opacity var(--ds-duration-base) var(--ease),transform var(--ds-duration-base) var(--ease)}.inspect-toggle-wrap.is-scrolling{opacity:0;transform:translateY(8px);pointer-events:none}.inspect-toggle{width:38px;height:38px;padding:0;justify-content:center}.itg-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.inspect-toggle-wrap .ob-tooltip{white-space:normal;width:max-content;max-width:calc(100vw - 32px)}}@media (prefers-reduced-motion:reduce){.lawtip{transition:none}}.bg{position:fixed;top:0;right:0;bottom:0;left:0;z-index:-2;pointer-events:none;background:var(--bg)}.grain{position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;pointer-events:none;opacity:.055;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='4'/%3E%3C/filter%3E%3Crect width='100%' height='100%' filter='url(%23n)'/%3E%3C/svg%3E")}.scanlines{position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;pointer-events:none;--scanline-opacity:.35;background-image:repeating-linear-gradient(to bottom,var(--ds-color-surface-hover) 0px,var(--ds-color-surface-hover) 1px,transparent 1px,transparent 3px);opacity:var(--scanline-opacity);mix-blend-mode:overlay}.ripple{position:fixed;width:14px;height:14px;margin:-7px 0 0 -7px;border-radius:50%;pointer-events:none;z-index:80;border:1px solid var(--accent);opacity:.65;animation:rippleOut var(--ds-duration-slower) var(--ease) forwards}@keyframes rippleOut{to{transform:scale(11);opacity:0;border-width:.5px}}@media (prefers-reduced-motion:reduce){.ripple{display:none}}@view-transition{navigation:auto}.fig-open{position:absolute;left:0;bottom:calc(100% + 10px);display:none;padding:0;border:0;background:none;cursor:pointer;font-family:var(--sans);font-size:var(--ds-type-label-size);line-height:var(--ds-type-label-leading);font-weight:var(--ds-type-label-weight);color:var(--accent-hot)}.fig-open:hover{color:var(--text)}body.inspect .fig-open{display:block}body.inspect .portrait{cursor:pointer}.fig{width:min(1080px,calc(100vw - 48px));height:min(680px,calc(100vh - 48px));max-width:none;max-height:none;padding:0;border:1px solid var(--ds-color-border);border-radius:var(--ds-radius-lg);background:var(--ds-color-bg-alt);color:var(--text);font-family:var(--sans);font-size:var(--ds-text-xs);line-height:1.4;box-shadow:var(--ds-shadow-xl);overflow:hidden}.fig[open]{display:flex;flex-direction:column;animation:figIn var(--ds-duration-base) var(--ds-ease-out)}.fig::backdrop{background:color-mix(in srgb,var(--ds-color-bg) 70%,transparent)}@keyframes figIn{0%{opacity:0;transform:scale(.98)}}@media (prefers-reduced-motion:reduce){.fig[open]{animation:none}}.fig-bar{display:flex;align-items:center;justify-content:space-between;gap:var(--ds-space-sm);height:var(--ds-control-height-md);flex:none;padding-inline:var(--ds-space-sm);border-bottom:1px solid var(--line)}.fig-file{margin:0;display:flex;gap:var(--ds-space-xs);min-width:0}.fig-file-name{font-weight:600}.fig-file-page{color:var(--mute)}.fig-bar-end{display:flex;gap:var(--ds-space-2xs)}.fig-btn{height:var(--ds-control-height-sm);padding-inline:var(--ds-control-pad-x-sm);border:0;border-radius:var(--ds-radius-sm);background:none;color:var(--dim);font:inherit;cursor:pointer;transition:background var(--ds-duration-fast),color var(--ds-duration-fast)}.fig-btn:hover{background:var(--ds-color-surface-hover);color:var(--text)}.fig-btn[aria-pressed=true]{background:var(--ds-color-surface);color:var(--text)}.fig-x{width:var(--ds-control-height-sm);padding:0;display:grid;place-items:center}.fig-x svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round}.fig-body{flex:1;min-height:0;display:grid;grid-template-columns:232px minmax(0,1fr) 256px}.fig-layers,.fig-design{overflow:auto;background:var(--ds-color-bg-alt)}.fig-layers{border-right:1px solid var(--line);padding-block:var(--ds-space-xs)}.fig-design{border-left:1px solid var(--line)}.fig-h{margin:0;font-size:var(--ds-text-xs);font-weight:600;color:var(--text)}.fig-layers>.fig-h{padding:var(--ds-space-2xs) var(--ds-space-sm) var(--ds-space-xs)}.fig-tree,.fig-tree ul{list-style:none;margin:0;padding:0}.fig-row{display:flex;align-items:center;height:28px;padding-left:calc(var(--lvl) * 14px + 4px);padding-right:var(--ds-space-xs)}.fig-row:hover{box-shadow:inset 0 0 0 1px var(--accent)}.fig-row.is-sel{background:color-mix(in srgb,var(--accent) 22%,transparent)}.fig-caret{flex:none;width:16px;height:16px;padding:0;border:0;background:none;color:var(--mute);display:grid;place-items:center;cursor:pointer}.fig-caret svg{width:10px;height:10px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;transition:transform var(--ds-duration-fast) var(--ease)}.fig-caret[aria-expanded=true] svg{transform:rotate(90deg)}.fig-item{flex:1;min-width:0;height:100%;display:flex;align-items:center;gap:var(--ds-space-xs);padding:0 0 0 2px;border:0;background:none;color:var(--dim);font:inherit;text-align:left;cursor:default}.fig-item span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fig-row.is-sel .fig-item{color:var(--text)}.fig-item:focus-visible{outline-offset:-2px}.fig-ico{flex:none;width:12px;height:12px;fill:none;stroke:var(--mute);stroke-width:1.1;stroke-linecap:round;stroke-linejoin:round}.fig-row.is-sel .fig-ico{stroke:var(--accent-hot)}.fig-canvas{min-width:0;min-height:0;display:grid;place-items:center;overflow:hidden;padding:var(--ds-space-2xl) var(--ds-space-lg) var(--ds-space-xl);background:var(--bg)}.fig-stage{position:relative;width:min(100%,520px);aspect-ratio:1;cursor:default}.fig-frame-name{position:absolute;left:0;bottom:calc(100% + 6px);color:var(--mute)}.fig-frame{position:absolute;top:0;right:0;bottom:0;left:0}.fig-frame .portrait{display:block;width:100%;transition:none;touch-action:auto}.fig-frame .portrait img{width:100%}.fig-defs{position:absolute}.fig-line-flood{flood-color:var(--ds-color-text-dim)}.fig-hover,.fig-sel{position:absolute;pointer-events:none;box-sizing:border-box}.fig-hover,.fig-sel{box-shadow:0 0 0 1px var(--accent)}.fig-sel:before,.fig-sel:after{content:"";position:absolute;width:7px;height:7px;background:var(--ds-color-text);box-shadow:0 0 0 1px var(--accent)}.fig-sel:before{left:-4px;top:-4px}.fig-sel:after{right:-4px;bottom:-4px}.fig-size{position:absolute;top:calc(100% + 6px);left:50%;transform:translate(-50%);padding:1px 5px;border-radius:var(--ds-radius-xs);white-space:nowrap;background:var(--accent);color:var(--ds-color-accent-contrast);font-size:var(--ds-text-micro);font-variant-numeric:tabular-nums}.fig-frame.is-outline .portrait img{filter:url(#figLine)}.fig-frame.is-outline .pl-devices *{fill:none!important;stroke:var(--ds-color-text-dim)!important;stroke-width:1!important;vector-effect:non-scaling-stroke}.fig-frame.is-outline .lap-sel{opacity:1!important}.fig-design{padding-bottom:var(--ds-space-md)}.fig-sel-head{display:flex;align-items:center;gap:var(--ds-space-xs);padding:var(--ds-space-sm);border-bottom:1px solid var(--line);font-weight:600}.fig-sel-head .fig-ico{stroke:var(--accent-hot)}.fig-note{margin:0;padding:var(--ds-space-sm) var(--ds-space-sm) 0;color:var(--mute);text-wrap:pretty}.fig-sec .fig-note{padding:var(--ds-space-xs) 0 0}.fig-sec{padding:var(--ds-space-sm);border-bottom:1px solid var(--line)}.fig-sec:last-child{border-bottom:0}.fig-sec>.fig-h{margin-bottom:var(--ds-space-xs)}.fig-xywh{margin:0;display:grid;grid-template-columns:1fr 1fr;gap:var(--ds-space-2xs)}.fig-xywh div{display:flex;gap:var(--ds-space-xs);height:28px;align-items:center;padding-inline:var(--ds-space-xs);background:var(--ds-color-surface);border-radius:var(--ds-radius-sm)}.fig-xywh dt{color:var(--mute)}.fig-xywh dd{margin:0;font-variant-numeric:tabular-nums}.fig-props{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--ds-space-xs)}.fig-prop{display:flex;align-items:flex-start;gap:var(--ds-space-xs)}.fig-swatch,.fig-thumb{flex:none;width:28px;height:28px;border-radius:var(--ds-radius-sm);box-shadow:inset 0 0 0 1px var(--ds-color-border)}.fig-thumb{object-fit:contain;background:var(--ds-color-surface)}.fig-prop-text{min-width:0;display:flex;flex-direction:column}.fig-prop-label{color:var(--dim)}.fig-prop-val{color:var(--mute);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.fig-token{color:var(--accent-hot);overflow-wrap:anywhere;text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--accent-hot) 40%,transparent);text-underline-offset:2px}.fig-token:hover{color:var(--text)}@media (max-width:820px){.fig{width:100vw;height:100dvh;border:0;border-radius:0}.fig-body{display:flex;flex-direction:column;overflow:auto}.fig-canvas{order:-1;flex:none;display:block;position:sticky;top:0;z-index:1;padding:var(--ds-space-xl) var(--ds-space-md) var(--ds-space-lg);border-bottom:1px solid var(--line)}.fig-stage{width:100%;max-width:min(280px,36dvh);margin-inline:auto}.fig-layers,.fig-design{overflow:visible;border:0;border-top:1px solid var(--line)}.fig-row{height:36px}}
