@property --bg{syntax:"<color>";inherits:true;initial-value:#f4f3ef}@property --surface{syntax:"<color>";inherits:true;initial-value:#fff}@property --ink{syntax:"<color>";inherits:true;initial-value:#161616}@property --muted{syntax:"<color>";inherits:true;initial-value:#6e6e6a}@property --faint{syntax:"<color>";inherits:true;initial-value:#74746f}@property --hairline{syntax:"<color>";inherits:true;initial-value:#00000014}@property --fill{syntax:"<color>";inherits:true;initial-value:#0000000a}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f4f3ef;--surface:#fff;--ink:#161616;--muted:#63635f;--faint:#74746f;--hairline:#00000014;--fill:#0000000a;--accent:#ff6a1a;--on-accent:#fff;--positive:#16a34a;--scrim:#f4f3efb8;--tone-peach:#f6dccb;--tone-lilac:#e2dcf4;--tone-sage:#d8e5d3;--tone-sky:#d3e3ef;--tone-butter:#f3e9bf;--tone-graphite:#0c0a08;--font-sans:var(--font-geist-sans), ui-sans-serif, system-ui, sans-serif;--font-mono:var(--font-geist-mono), ui-monospace, "SF Mono", monospace;--text-mono:11px;--text-xs:13px;--text-sm:14px;--text-md:16px;--text-lg:20px;--text-xl:28px;--text-2xl:44px;--text-3xl:clamp(38px, 5.6vw, 72px);--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:24px;--s-6:32px;--s-7:48px;--s-8:72px;--s-9:120px;--gutter:clamp(16px, 3vw, 32px);--bar:60px;--edge:max(var(--gutter), calc((100vw - 1320px) / 2 + var(--gutter)));--r-chip:4px;--r-shape:7px;--r-panel:12px;--r-card:16px;--r-pill:999px;--shadow-hover:0 8px 24px -12px #14141e2e;--shadow-float:0 0 0 1px var(--hairline), 0 24px 48px -16px #14141e38;--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-inout:cubic-bezier(.65, 0, .35, 1);--ease-expand:cubic-bezier(.32, .72, 0, 1);--d-1:.12s;--d-2:.2s;--d-3:.32s;--d-4:.56s;--d-into:.68s;transition:--bg var(--d-3) var(--ease-inout), --surface var(--d-3) var(--ease-inout), --ink var(--d-3) var(--ease-inout), --muted var(--d-3) var(--ease-inout), --faint var(--d-3) var(--ease-inout), --hairline var(--d-3) var(--ease-inout), --fill var(--d-3) var(--ease-inout)}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#121211;--surface:#1b1b1a;--ink:#ededea;--muted:#8f8f8a;--faint:#85857f;--hairline:#ffffff14;--fill:#ffffff0d;--accent:#ff7f3a;--positive:#4ade80;--scrim:#121211b8;--tone-peach:#1a1a19;--tone-lilac:#1a1a1c;--tone-sage:#191a18;--tone-sky:#18191b;--tone-butter:#1b1a18;--tone-graphite:#0a0907}:root[data-accent=cobalt]{--accent:#2f6bff}:root[data-accent=fern]{--accent:#1f9d55}:root[data-accent=iris]{--accent:#7c5cff}:root[data-accent=mono]{--accent:#161616}:root[data-theme=dark][data-accent=cobalt]{--accent:#5b8cff}:root[data-theme=dark][data-accent=fern]{--accent:#3ccf7f}:root[data-theme=dark][data-accent=iris]{--accent:#9b84ff}:root[data-theme=dark][data-accent=mono]{--accent:#ededea;--on-accent:#121211}:root[data-corners=crisp]{--r-chip:2px;--r-shape:3px;--r-panel:6px;--r-card:8px}:root[data-corners=round]{--r-chip:999px;--r-shape:999px;--r-panel:20px;--r-card:24px}:root[data-motion=reduced]{--d-1:0s;--d-2:0s;--d-3:0s;--d-4:0s;--d-into:0s}
*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scrollbar-gutter:stable;scroll-padding-top:calc(var(--bar) + 16px)}html.lenis,html.lenis body{height:auto}.lenis.lenis-stopped{overflow:clip}body{background:var(--bg);min-height:100dvh;color:var(--ink);font-family:var(--font-sans);font-size:var(--text-md);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"ss01" 1;margin:0;line-height:1.5}h1,h2,h3,h4,p,ul,ol,figure,dl,dd{margin:0}ul,ol{padding:0;list-style:none}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}img,svg,iframe{max-width:100%;display:block}input{font:inherit;color:inherit}::selection{background:var(--accent);color:var(--on-accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--r-chip)}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}.skip{z-index:100;border-radius:var(--r-shape);background:var(--ink);color:var(--bg);padding:8px 12px;position:fixed;top:8px;left:8px;transform:translateY(-200%)}.skip:focus-visible{transform:none}.mono{font-family:var(--font-mono);font-size:var(--text-mono);letter-spacing:.06em;text-transform:uppercase;font-weight:400}.muted{color:var(--muted)}.wrap{width:100%;max-width:1320px;padding-inline:var(--gutter);margin-inline:auto}.page{padding-top:var(--bar)}@media (max-width:1024px){:root[data-project]{--bar:104px}}[data-tone]{--tint:color-mix(in srgb, var(--tone) 55%, transparent)}[data-tone=peach]{--tone:var(--tone-peach)}[data-tone=lilac]{--tone:var(--tone-lilac)}[data-tone=sage]{--tone:var(--tone-sage)}[data-tone=sky]{--tone:var(--tone-sky)}[data-tone=butter]{--tone:var(--tone-butter)}[data-tone=graphite]{--tone:var(--tone-graphite);--tint:color-mix(in srgb, var(--ink) 5%, transparent)}:root[data-theme=dark] [data-tone]{--tint:var(--fill)}:root[data-stage]{scrollbar-gutter:auto}:root[data-stage=graphite] body{background:var(--tone-graphite)}:root[data-stage=peach] body{background:var(--tone-peach)}:root[data-stage=sky] body{background:var(--tone-sky)}:root[data-stage=sage] body{background:var(--tone-sage)}:root[data-stage=lilac] body{background:var(--tone-lilac)}:root[data-stage=butter] body{background:var(--tone-butter)}.on-dark{--ink:#f2efe9;--muted:#a5a19a;--faint:#6f6b66;--hairline:#ffffff1a;--fill:#ffffff12;--surface:#1c1b19;--bg:#0c0a08;color:var(--ink)}.btn{--btn-bg:var(--ink);--btn-fg:var(--bg);justify-content:center;align-items:center;gap:var(--s-2);height:40px;padding:0 var(--s-4);border-radius:var(--r-shape);background:var(--btn-bg);color:var(--btn-fg);font-size:var(--text-sm);white-space:nowrap;transition:transform var(--d-1) var(--ease-out), background-color var(--d-2) var(--ease-out), box-shadow var(--d-2) var(--ease-out), opacity var(--d-2) var(--ease-out);font-weight:500;display:inline-flex}.btn:hover{box-shadow:var(--shadow-hover)}.btn:active{transform:scale(.97)}.btn[disabled],.btn[aria-disabled=true]{opacity:.4;pointer-events:none}.btn--ghost{--btn-bg:transparent;--btn-fg:var(--ink);box-shadow:inset 0 0 0 1px var(--hairline)}.btn--ghost:hover{--btn-bg:var(--fill);box-shadow:inset 0 0 0 1px var(--hairline)}.btn--accent{--btn-bg:var(--accent);--btn-fg:var(--on-accent)}.btn--sm{height:32px;padding:0 var(--s-3);font-size:var(--text-xs)}.btn .arrow{transition:transform var(--d-2) var(--ease-out)}.btn:hover .arrow{transform:translate(2px)}.btn.is-loading{pointer-events:none}.btn.is-loading:before{content:"";border:1.5px solid;border-right-color:#0000;border-radius:50%;width:12px;height:12px;animation:.7s linear infinite spin}.chip{height:30px;padding:0 var(--s-3);border-radius:var(--r-shape);font-size:var(--text-xs);color:var(--muted);box-shadow:inset 0 0 0 1px var(--hairline);transition:color var(--d-2) var(--ease-out), background-color var(--d-2) var(--ease-out), box-shadow var(--d-2) var(--ease-out), transform var(--d-1) var(--ease-out);align-items:center;gap:6px;display:inline-flex}.chip:hover{color:var(--ink);background:var(--fill)}.chip:active{transform:scale(.97)}.chip[aria-pressed=true]{background:var(--ink);color:var(--bg);box-shadow:none}.chip__count{font-family:var(--font-mono);opacity:.6;font-variant-numeric:tabular-nums;font-size:10px}.seg{--seg-i:0;--seg-n:2;--seg-pad:3px;padding:var(--seg-pad);border-radius:var(--r-shape);background:var(--fill);box-shadow:inset 0 0 0 1px var(--hairline);grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid;position:relative}.seg:before{content:"";top:var(--seg-pad);bottom:var(--seg-pad);left:var(--seg-pad);width:calc((100% - 2 * var(--seg-pad)) / var(--seg-n));border-radius:max(2px, calc(var(--r-shape) - var(--seg-pad)));background:var(--surface);box-shadow:0 1px 2px #00000014, 0 0 0 1px var(--hairline);transform:translateX(calc(100% * var(--seg-i)));transition:transform var(--d-3) var(--ease-out);position:absolute}.seg__btn{z-index:1;min-width:36px;height:30px;padding:0 var(--s-3);border-radius:max(2px, calc(var(--r-shape) - var(--seg-pad)));font-size:var(--text-xs);color:var(--muted);white-space:nowrap;transition:color var(--d-2) var(--ease-out);justify-content:center;align-items:center;gap:6px;display:inline-flex;position:relative}.seg__btn:hover,.seg__btn[aria-pressed=true],.seg__btn[aria-checked=true],.seg__btn[aria-selected=true]{color:var(--ink)}.seg--sm .seg__btn{min-width:30px;height:26px;padding:0 10px;font-size:12px}.switch{border-radius:max(4px, var(--r-shape));background:var(--fill);width:42px;height:24px;box-shadow:inset 0 0 0 1px var(--hairline);transition:background-color var(--d-2) var(--ease-out);flex:none;position:relative}.switch:after{content:"";border-radius:max(2px, calc(var(--r-shape) - 2px));background:var(--surface);width:18px;height:18px;transition:transform var(--d-3) var(--ease-out);position:absolute;top:3px;left:3px;box-shadow:0 1px 2px #0003}.switch[aria-checked=true]{background:var(--accent);box-shadow:none}.switch[aria-checked=true]:after{background:#fff;transform:translate(18px)}.kbd{border-radius:var(--r-chip);min-width:20px;height:20px;font-family:var(--font-mono);color:var(--muted);background:var(--surface);box-shadow:inset 0 0 0 1px var(--hairline), 0 1px 0 var(--hairline);justify-content:center;align-items:center;padding:0 5px;font-size:10px;display:inline-flex}.dot{background:var(--positive);width:7px;height:7px;box-shadow:0 0 0 3px color-mix(in srgb, var(--positive) 18%, transparent);animation:pulse 2.4s var(--ease-inout) infinite;border-radius:50%;display:inline-block}.icon{flex:none;width:16px;height:16px}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{box-shadow:0 0 0 5px color-mix(in srgb, var(--positive) 0%, transparent)}}::view-transition{pointer-events:none}::view-transition-old(root){animation-duration:var(--d-3);animation-timing-function:var(--ease-out)}::view-transition-new(root){animation-duration:var(--d-3);animation-timing-function:var(--ease-out)}::view-transition-group(.morph){animation-duration:var(--d-4);animation-timing-function:var(--ease-expand);z-index:50;overflow:clip}::view-transition-old(.morph){object-fit:cover;width:100%;height:100%;animation-duration:var(--d-4);animation-timing-function:var(--ease-expand)}::view-transition-new(.morph){object-fit:cover;width:100%;height:100%;animation-duration:var(--d-4);animation-timing-function:var(--ease-expand)}::view-transition-group(site-header){z-index:100;animation:none}::view-transition-old(site-header){animation-duration:var(--d-3);animation-timing-function:var(--ease-out);animation-fill-mode:both}::view-transition-new(site-header){animation-duration:var(--d-3);animation-timing-function:var(--ease-out);animation-fill-mode:both}::view-transition-old(.page-out){animation:var(--d-2) var(--ease-out) both vt-fade-out}::view-transition-new(.page-in){animation:var(--d-3) var(--ease-out) 80ms both vt-fade-in}html:active-view-transition-type(nav-into)::view-transition-group(.morph){animation-duration:var(--d-into)}html:active-view-transition-type(nav-into)::view-transition-old(.morph){animation-duration:var(--d-into)}html:active-view-transition-type(nav-into)::view-transition-new(.morph){animation-duration:var(--d-into)}html:active-view-transition-type(nav-into)::view-transition-old(.morph){object-fit:contain;mix-blend-mode:plus-lighter;animation:calc(var(--d-into) * .4) linear both vt-fade-out}html:active-view-transition-type(nav-into)::view-transition-new(.morph){mix-blend-mode:plus-lighter;animation:calc(var(--d-into) * .4) linear both vt-morph-in}html:active-view-transition-type(nav-into) [data-card-badge]{visibility:hidden}::view-transition-old(.into-out){transform-origin:var(--into-x,50%) var(--into-y,50vh);animation:var(--d-into) var(--ease-expand) both vt-into-out}::view-transition-new(.into-in){animation:var(--d-3) var(--ease-out) calc(var(--d-into) * .55) both vt-into-in}::view-transition-new(.stage-in){animation:var(--d-into) var(--ease-expand) both vt-stage-in}::view-transition-old(.next-out){animation:.64s var(--ease-expand) both vt-next-out}::view-transition-new(.next-in){animation:.64s var(--ease-expand) both vt-next-in}::view-transition-group(.item){animation-duration:var(--d-3);animation-timing-function:var(--ease-out)}::view-transition-new(.item-in){animation:var(--d-3) var(--ease-out) both vt-fade-in}::view-transition-old(.item-out){animation:var(--d-2) var(--ease-out) both vt-fade-out}html:active-view-transition-type(loop)::view-transition-old(root){animation:.7s var(--ease-expand) both vt-loop-out}html:active-view-transition-type(loop)::view-transition-new(root){animation:.7s var(--ease-expand) both vt-loop-in}@keyframes vt-fade-in{0%{opacity:0;transform:translateY(8px)}}@keyframes vt-fade-out{to{opacity:0}}@keyframes vt-morph-in{0%{opacity:0}}@keyframes vt-next-out{to{opacity:0;transform:translate(-6%)scale(.98)}}@keyframes vt-next-in{0%{opacity:0;transform:translate(8%)}}@keyframes vt-into-out{55%{opacity:0}to{opacity:0;transform:scale(1.22)}}@keyframes vt-into-in{0%{opacity:0;transform:scale(.985)}}@keyframes vt-stage-in{0%{opacity:0;transform:scale(.9)}}@keyframes vt-loop-out{to{opacity:0;transform:translateY(-18%)scale(.98)}}@keyframes vt-loop-in{0%{opacity:0;transform:translateY(22%)}}:root[data-motion=reduced] ::view-transition-group(*){animation-duration:0s!important;animation-delay:0s!important}:root[data-motion=reduced] ::view-transition-old(*){animation-duration:0s!important;animation-delay:0s!important}:root[data-motion=reduced] ::view-transition-new(*){animation-duration:0s!important;animation-delay:0s!important}:root[data-motion=reduced] *,:root[data-motion=reduced] :before,:root[data-motion=reduced] :after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.toast-region{left:50%;bottom:max(20px, env(safe-area-inset-bottom));z-index:90;pointer-events:none;position:fixed;translate:-50%}.toast{border-radius:var(--r-shape);background:var(--ink);height:36px;color:var(--bg);font-size:var(--text-xs);box-shadow:var(--shadow-hover);animation:toast 1.8s var(--ease-out) both;align-items:center;gap:8px;padding:0 14px;display:inline-flex}@keyframes toast{0%{opacity:0;transform:translateY(10px)scale(.96)}12%,85%{opacity:1;transform:none}to{opacity:0;transform:translateY(4px)}}
