:root{--ink-0:#0b0b0b;--ink-1:#171717;--ink-2:#262626;--ink-3:#3d3d3d;--ink-4:#5c5c5c;--ink-5:#8a8a8a;--ink-6:#b4b4b4;--ink-7:#d6d6d6;--ink-8:#e8e8e8;--ink-9:#f2f2f2;--paper:#fafafa;--raised:#ffffff;--bg:var(--paper);--bg-raised:var(--raised);--bg-sunken:var(--ink-9);--bg-inverse:var(--ink-0);--fg:var(--ink-0);--fg-muted:var(--ink-4);--fg-subtle:#6e6e6e;--fg-inverse:var(--paper);--fg-inverse-muted:rgba(250,250,250,0.62);--fg-inverse-subtle:rgba(250,250,250,0.55);--fg-inverse-faint:rgba(250,250,250,0.42);--bg-inverse-well:rgba(250,250,250,0.08);--bg-inverse-raised:rgba(250,250,250,0.16);--line-on-inverse:rgba(250,250,250,0.18);--track-on-inverse:rgba(250,250,250,0.2);--line:var(--ink-7);--line-strong:var(--ink-6);--focus-ring:var(--ink-0);--r-1:4px;--r-2:8px;--r-3:12px;--r-4:18px;--r-5:28px;--r-full:999px;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:20px;--s-6:24px;--s-8:32px;--s-10:40px;--s-12:48px;--s-16:64px;--s-20:80px;--s-24:96px;--font-sans:-apple-system,BlinkMacSystemFont,"Segoe UI Variable Display","Segoe UI",Roboto,system-ui,sans-serif;--font-mono:ui-monospace,"SF Mono","Cascadia Code","Roboto Mono",Consolas,monospace;--t-xs:0.6875rem;--t-sm:0.8125rem;--t-base:1rem;--t-md:1.125rem;--t-lg:clamp(1.25rem,1.1rem + 0.7vw,1.5rem);--t-xl:clamp(1.5rem,1.3rem + 1.1vw,2rem);--t-2xl:clamp(2rem,1.6rem + 2vw,3rem);--t-3xl:clamp(2.75rem,2rem + 3.6vw,4.5rem);--t-4xl:clamp(3.5rem,2.2rem + 6.2vw,7rem);--lh-tight:1.02;--lh-snug:1.2;--lh-body:1.55;--tr-tight:-0.03em;--tr-snug:-0.01em;--tr-wide:0.14em;--e-1:0 1px 2px rgba(11,11,11,0.04),0 0 0 1px rgba(11,11,11,0.06);--e-2:0 2px 8px -2px rgba(11,11,11,0.08),0 0 0 1px rgba(11,11,11,0.06);--e-3:0 12px 32px -8px rgba(11,11,11,0.12),0 0 0 1px rgba(11,11,11,0.07);--e-inset:inset 0 1px 0 rgba(255,255,255,0.06);--ease-out:cubic-bezier(0.23,1,0.32,1);--ease-in-out:cubic-bezier(0.77,0,0.175,1);--ease-drawer:cubic-bezier(0.32,0.72,0,1);--ease-spring:cubic-bezier(0.34,1.56,0.64,1);--d-press:120ms;--d-tip:150ms;--d-menu:200ms;--d-sheet:320ms;--tap:44px;--shell:480px;--wide:1160px;--safe-b:env(safe-area-inset-bottom,0px);--safe-t:env(safe-area-inset-top,0px)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0b0b0b;--bg-raised:#171717;--bg-sunken:#050505;--bg-inverse:#fafafa;--fg:#fafafa;--fg-muted:#a3a3a3;--fg-subtle:#8a8a8a;--fg-inverse:#0b0b0b;--fg-inverse-muted:rgba(11,11,11,0.70);--fg-inverse-subtle:rgba(11,11,11,0.62);--fg-inverse-faint:rgba(11,11,11,0.45);--bg-inverse-well:rgba(11,11,11,0.08);--bg-inverse-raised:rgba(11,11,11,0.14);--line-on-inverse:rgba(11,11,11,0.18);--track-on-inverse:rgba(11,11,11,0.16);--line:#2b2b2b;--line-strong:#3d3d3d;--focus-ring:#fafafa;--e-1:0 1px 2px rgba(0,0,0,0.4),0 0 0 1px rgba(250,250,250,0.08);--e-2:0 2px 8px -2px rgba(0,0,0,0.5),0 0 0 1px rgba(250,250,250,0.08);--e-3:0 12px 32px -8px rgba(0,0,0,0.6),0 0 0 1px rgba(250,250,250,0.1)}}:root[data-theme=dark]{--bg:#0b0b0b;--bg-raised:#171717;--bg-sunken:#050505;--bg-inverse:#fafafa;--fg:#fafafa;--fg-muted:#a3a3a3;--fg-subtle:#8a8a8a;--fg-inverse:#0b0b0b;--fg-inverse-muted:rgba(11,11,11,0.70);--fg-inverse-subtle:rgba(11,11,11,0.62);--fg-inverse-faint:rgba(11,11,11,0.45);--bg-inverse-well:rgba(11,11,11,0.08);--bg-inverse-raised:rgba(11,11,11,0.14);--line-on-inverse:rgba(11,11,11,0.18);--track-on-inverse:rgba(11,11,11,0.16);--line:#2b2b2b;--line-strong:#3d3d3d;--focus-ring:#fafafa;--e-1:0 1px 2px rgba(0,0,0,0.4),0 0 0 1px rgba(250,250,250,0.08);--e-2:0 2px 8px -2px rgba(0,0,0,0.5),0 0 0 1px rgba(250,250,250,0.08);--e-3:0 12px 32px -8px rgba(0,0,0,0.6),0 0 0 1px rgba(250,250,250,0.1)}*,:after,:before{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--fg);font-family:var(--font-sans);font-size:var(--t-base);line-height:var(--lh-body);-webkit-font-smoothing:antialiased;overflow-x:hidden}img,svg{display:block;max-width:100%}button,input,select,textarea{font:inherit;color:inherit}button{background:none;border:0;cursor:pointer}:where(a,a:link,a:visited,a:hover,a:active){color:inherit;text-decoration:none}.prose a,a.link{text-decoration:underline;-webkit-text-decoration-color:var(--line-strong);text-decoration-color:var(--line-strong);text-decoration-thickness:1px;text-underline-offset:.2em}.prose a:hover,a.link:hover{-webkit-text-decoration-color:var(--fg);text-decoration-color:var(--fg)}:focus{outline:none}:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px;border-radius:var(--r-1)}::selection{background:var(--fg);color:var(--bg)}input,select,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--bg-raised)}::placeholder{color:var(--fg-subtle);opacity:1}input[type=file]::-webkit-file-upload-button{background:var(--bg-sunken);color:var(--fg);border:1px solid var(--line)}input[type=file]::file-selector-button{background:var(--bg-sunken);color:var(--fg);border:1px solid var(--line)}meter,progress{-webkit-appearance:none;-moz-appearance:none;appearance:none}progress::-webkit-progress-bar{background:var(--bg-sunken)}progress::-webkit-progress-value{background:var(--fg)}meter::-webkit-meter-even-less-good-value,meter::-webkit-meter-optimum-value,meter::-webkit-meter-suboptimum-value{background:var(--fg)}input[type=date]::-webkit-calendar-picker-indicator,input[type=time]::-webkit-calendar-picker-indicator{filter:grayscale(1)}input:-webkit-autofill,input:-webkit-autofill:focus,input:-webkit-autofill:hover{-webkit-text-fill-color:var(--fg)!important;box-shadow:0 0 0 1000px var(--bg-raised) inset!important;caret-color:var(--fg);-webkit-transition:background-color 9999s ease-in-out 0s;transition:background-color 9999s ease-in-out 0s}input[type=checkbox],input[type=radio]{--control-mark:var(--bg-raised);display:inline-grid;place-content:center;flex:none;width:18px;height:18px;background:transparent;box-shadow:inset 0 0 0 1.5px var(--line-strong);cursor:pointer;transition:background-color var(--d-press) var(--ease-out),box-shadow var(--d-press) var(--ease-out)}input[type=radio]{border-radius:var(--r-full)}input[type=checkbox]{border-radius:var(--r-1)}input[type=checkbox]:before,input[type=radio]:before{content:"";background:var(--control-mark);transform:scale(.4);opacity:0;transition:transform var(--d-press) var(--ease-out),opacity var(--d-press) var(--ease-out)}input[type=radio]:before{width:7px;height:7px;border-radius:var(--r-full)}input[type=checkbox]:before{width:11px;height:11px;-webkit-clip-path:polygon(14% 47%,0 61%,40% 100%,100% 22%,84% 10%,38% 71%);clip-path:polygon(14% 47%,0 61%,40% 100%,100% 22%,84% 10%,38% 71%)}input[type=checkbox]:checked,input[type=radio]:checked{background:currentColor;box-shadow:inset 0 0 0 1.5px currentColor}input[type=checkbox]:checked:before,input[type=radio]:checked:before{transform:scale(1);opacity:1}input[type=checkbox]:disabled,input[type=radio]:disabled{opacity:.4;cursor:not-allowed}@media (prefers-reduced-motion:reduce){input[type=checkbox],input[type=checkbox]:before,input[type=radio],input[type=radio]:before{transition:none}}:root{accent-color:var(--fg);caret-color:var(--fg);color-scheme:light dark;scrollbar-color:var(--line-strong) var(--bg);scrollbar-width:thin}html{-webkit-tap-highlight-color:transparent;text-size-adjust:100%}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:var(--r-full);border:2px solid var(--bg)}mark{background:var(--bg-inverse);color:var(--fg-inverse)}hr{border:0;border-top:1px solid var(--line)}summary::-webkit-details-marker,summary::marker{color:var(--fg-subtle)}.display{font-size:var(--t-3xl);line-height:var(--lh-tight);letter-spacing:var(--tr-tight);font-weight:600}.h1{font-size:var(--t-2xl)}.h1,.h2{line-height:var(--lh-snug);letter-spacing:var(--tr-snug);font-weight:600}.h2{font-size:var(--t-xl)}.h3{font-size:var(--t-lg);line-height:var(--lh-snug);letter-spacing:var(--tr-snug);font-weight:550}.meta{font-size:var(--t-sm);color:var(--fg-muted)}.label{font-size:var(--t-xs);letter-spacing:var(--tr-wide);text-transform:uppercase;color:var(--fg-subtle);font-weight:500}.label,.num{font-family:var(--font-mono)}.num{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;letter-spacing:-.01em}.shell{width:100%;max-width:var(--shell);margin-inline:auto;padding-inline:var(--s-5)}@media (min-width:768px){.shell{max-width:640px;padding-inline:var(--s-8)}}@media (min-width:1024px){.shell{max-width:var(--wide);padding-inline:var(--s-10)}}.stack{display:flex;flex-direction:column}.stack-2{gap:var(--s-2)}.stack-3{gap:var(--s-3)}.stack-4{gap:var(--s-4)}.stack-6{gap:var(--s-6)}.stack-8{gap:var(--s-8)}.slab{position:relative;background:var(--bg-raised);border-radius:var(--r-5);padding:var(--s-5);box-shadow:var(--e-2);text-align:left;width:100%;transition:transform var(--d-press) var(--ease-out),background-color var(--d-press) var(--ease-out),color var(--d-press) var(--ease-out),box-shadow var(--d-press) var(--ease-out);-webkit-tap-highlight-color:transparent;touch-action:manipulation}a.slab:active,button.slab:active{transform:scale(.97);background:var(--bg-inverse);color:var(--fg-inverse);box-shadow:var(--e-3)}a.slab:active .slab-sub,button.slab:active .slab-sub{color:var(--fg-inverse-muted)}.slab-ink,a.slab:active .ico,button.slab:active .ico{color:var(--fg-inverse)}.slab-ink{background:var(--bg-inverse)}.slab-ink .slab-sub{color:var(--fg-inverse-muted)}.slab-ink .label{color:var(--fg-inverse-subtle)}.slab-flat{box-shadow:0 0 0 1px var(--line)}.slab-sub{color:var(--fg-muted);font-size:var(--t-sm);line-height:1.45}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);min-height:var(--tap);padding:0 var(--s-5);border-radius:var(--r-3);font-size:var(--t-base);font-weight:550;letter-spacing:var(--tr-snug);-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;transition:transform var(--d-press) var(--ease-out),background-color var(--d-press) var(--ease-out),opacity var(--d-press) var(--ease-out),box-shadow var(--d-press) var(--ease-out)}.btn:active{transform:scale(.97)}.btn-primary{background:var(--bg-inverse);color:var(--fg-inverse);box-shadow:var(--e-inset)}.btn-secondary{background:var(--bg-raised);color:var(--fg);box-shadow:0 0 0 1px var(--line)}.btn-ghost{background:transparent;color:var(--fg-muted)}.btn-block{display:flex;width:100%}.btn-fat{min-height:56px;border-radius:var(--r-4);font-size:var(--t-md);font-weight:600}.btn[aria-disabled=true],.btn[disabled]{opacity:.38;pointer-events:none}@media (hover:hover) and (pointer:fine){.btn-primary:hover{opacity:.88}.btn-secondary:hover{box-shadow:0 0 0 1px var(--line-strong)}.btn-ghost:hover{color:var(--fg);background:var(--bg-sunken)}}.field{display:flex;flex-direction:column;gap:var(--s-2)}.field>label{font-size:var(--t-sm);font-weight:550}.input,.textarea{width:100%;min-height:var(--tap);padding:var(--s-3) var(--s-4);font-size:var(--t-base);background:var(--bg-raised);border:0;border-radius:var(--r-2);box-shadow:0 0 0 1px var(--line);transition:box-shadow var(--d-menu) var(--ease-out)}.textarea{min-height:96px;resize:vertical;line-height:var(--lh-body)}.input::placeholder,.textarea::placeholder{color:var(--fg-subtle)}.input:focus,.textarea:focus{outline:none;box-shadow:0 0 0 2px var(--fg)}.notice{padding:var(--s-3) var(--s-4);border-radius:var(--r-2);background:var(--bg-sunken);box-shadow:0 0 0 1px var(--line)}.form-error,.notice{font-size:var(--t-sm);line-height:var(--lh-body);color:var(--fg)}.form-error{font-weight:550}.ico{width:24px;height:24px;flex:none;stroke:currentColor;fill:none;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}.ico-lg{width:30px;height:30px;stroke-width:1.6}.ico-xl{width:44px;height:44px;stroke-width:1.4}.iconbtn{width:var(--tap);height:var(--tap);display:grid;place-items:center;border-radius:var(--r-full);background:var(--bg-raised);box-shadow:0 0 0 1px var(--line);transition:transform var(--d-press) var(--ease-out),background-color var(--d-press) var(--ease-out),color var(--d-press) var(--ease-out)}.iconbtn:active{transform:scale(.92);background:var(--bg-inverse);color:var(--fg-inverse)}.iconbtn-bare{background:none;box-shadow:none}.prog{display:flex;gap:5px;--prog-todo:var(--bg-sunken);--prog-todo-line:var(--line);--prog-done:var(--fg-muted);--prog-live:var(--fg)}.slab-ink .prog{--prog-todo:var(--track-on-inverse);--prog-todo-line:transparent;--prog-done:var(--fg-inverse-muted);--prog-live:var(--fg-inverse)}.prog i{flex:1 1;height:7px;border-radius:var(--r-full);background:var(--prog-todo);box-shadow:inset 0 0 0 1px var(--prog-todo-line)}.prog i[data-done]{background:var(--prog-done);box-shadow:none}.prog i[data-live]{background:var(--prog-live);box-shadow:none;animation-name:breathe;animation-duration:1.9s;animation-timing-function:var(--ease-in-out);animation-iteration-count:infinite}@media (prefers-reduced-motion:reduce){.prog i[data-live]{animation:none}}.stepper{display:inline-flex;align-items:center;background:var(--bg-raised);box-shadow:0 0 0 1px var(--line)}.stepper,.stepper button{border-radius:var(--r-full)}.stepper button{width:var(--tap);height:var(--tap);display:grid;place-items:center;color:var(--fg);transition:transform var(--d-press) var(--ease-out),background-color var(--d-press) var(--ease-out)}.stepper button:active{transform:scale(.9);background:var(--bg-sunken)}.stepper button:disabled{color:var(--fg-subtle);pointer-events:none}.stepper output{min-width:2.5ch;text-align:center;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.chip{position:relative;display:inline-flex;align-items:center;gap:var(--s-2);height:34px;padding:0 var(--s-3);border-radius:var(--r-full);font-size:var(--t-sm);font-weight:500;white-space:nowrap;background:var(--bg-raised);box-shadow:0 0 0 1px var(--line);transition:transform var(--d-press) var(--ease-out),background-color var(--d-press) var(--ease-out),color var(--d-press) var(--ease-out)}.chip:after{content:"";position:absolute;inset:-5px 0;border-radius:inherit}.chip:active{transform:scale(.96)}.chip[aria-pressed=true]{background:var(--bg-inverse);color:var(--fg-inverse);box-shadow:none}.dock{position:-webkit-sticky;position:sticky;bottom:0;z-index:40;padding:var(--s-4) 0 calc(var(--s-4) + var(--safe-b));background:linear-gradient(to top,var(--bg) 66%,transparent)}.grain{position:fixed;inset:0;z-index:9999;pointer-events:none;opacity:.035;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)'/%3E%3C/svg%3E")}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .grain{mix-blend-mode:screen;opacity:.05}}.enter{opacity:1;transform:translateY(0);transition:opacity .38s var(--ease-out),transform .38s var(--ease-out)}@starting-style{.enter{opacity:0;transform:translateY(10px)}}.stagger>*{opacity:0;transform:translateY(9px);animation-name:rise;animation-duration:.4s;animation-timing-function:var(--ease-out);animation-fill-mode:forwards;animation-delay:calc(var(--i, 0) * 45ms)}@keyframes rise{to{opacity:1;transform:none}}.stagger>.settled{animation-name:none;opacity:1;transform:none}.pressable{transition:transform var(--d-press) var(--ease-out);-webkit-tap-highlight-color:transparent;touch-action:manipulation}.pressable:active{transform:scale(.97)}.fade-layer{transition:opacity var(--d-sheet) var(--ease-out),display var(--d-sheet) allow-discrete,overlay var(--d-sheet) allow-discrete}.skeleton{background:var(--bg-sunken);border-radius:var(--r-2);position:relative;overflow:hidden}.skeleton:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(11,11,11,.05),transparent);animation-name:shimmer;animation-duration:1.4s;animation-timing-function:linear;animation-iteration-count:infinite}@keyframes shimmer{0%{transform:translateX(-100%)}to{transform:translateX(100%)}}@keyframes breathe{0%,to{opacity:1}50%{opacity:.34}}@view-transition{navigation:auto}::view-transition-old(root){animation:vt-out .18s var(--ease-out) both}::view-transition-new(root){animation:vt-in .26s var(--ease-out) both}@keyframes vt-out{to{opacity:0}}@keyframes vt-in{0%{opacity:0;transform:translateY(8px)}}@media (prefers-reduced-motion:reduce){.stagger>*{animation:none;opacity:1;transform:none}.enter{transition:opacity .2s var(--ease-out)}@starting-style{.enter{transform:none}}.pressable:active{transform:none}.skeleton:after{animation:none}::view-transition-new(root),::view-transition-old(root){animation:none}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;-webkit-clip-path:inset(50%);clip-path:inset(50%);white-space:nowrap;border:0}