:root,[data-theme=paper]{color-scheme:light;--paper: #FEFEFE;--paper-2: #F7F7F7;--paper-3: #EFEFEF;--ink: #1E1E1E;--ink-soft: #4A4A4A;--ink-faint: #6B6B6B;--line-soft: #E5E5E5;--line: #DEDEDE;--line-strong: #C4C4C4;--accent: #F386A1;--accent-ink: #1E1E1E;--accent-text: #B8204F;--accent-wash: color-mix(in srgb, var(--accent) 14%, var(--paper));--accent-2: #D45BB6;--accent-2-text: #9C2C84;--accent-2-wash: color-mix(in srgb, var(--accent-2) 12%, var(--paper));--ok: #03AA5C;--ok-text: #02703D;--ok-wash: color-mix(in srgb, var(--ok) 12%, var(--paper));--info: #09AEA1;--info-text: #056F66;--info-wash: color-mix(in srgb, var(--info) 12%, var(--paper));--sage: #ABBAB9;--danger: #D93B4A;--danger-text: #A82733;--danger-wash: color-mix(in srgb, var(--danger) 10%, var(--paper));--scrim: rgb(0 0 0 / .32);--bg: var(--paper);--fg: var(--ink);--border: var(--line);--muted: var(--ink-faint)}[data-theme=ink]{color-scheme:dark;--paper: #161616;--paper-2: #1E1E1E;--paper-3: #262626;--ink: #F2F2F2;--ink-soft: #BEBEBE;--ink-faint: #9A9A9A;--line-soft: #242424;--line: #2C2C2C;--line-strong: #3E3E3E;--accent: #F386A1;--accent-ink: #1E1E1E;--accent-text: #F79AB2;--accent-wash: color-mix(in srgb, var(--accent) 18%, var(--paper));--accent-2: #E551BA;--accent-2-text: #EE7FCC;--accent-2-wash: color-mix(in srgb, var(--accent-2) 16%, var(--paper));--ok: #03AA5C;--ok-text: #4FD48F;--ok-wash: color-mix(in srgb, var(--ok) 16%, var(--paper));--info: #09AEA1;--info-text: #4FD2C6;--info-wash: color-mix(in srgb, var(--info) 16%, var(--paper));--sage: #55615F;--danger: #E0505E;--danger-text: #FF8A94;--danger-wash: color-mix(in srgb, var(--danger) 14%, var(--paper));--scrim: rgb(0 0 0 / .55)}:root{--sans: "Host Grotesk", system-ui, -apple-system, "Segoe UI", sans-serif;--mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--t-12: .75rem;--t-13: .8125rem;--t-14: .875rem;--t-16: 1rem;--t-18: 1.125rem;--t-22: 1.375rem;--t-28: 1.75rem;--t-36: 2.25rem;--t-48: 3rem;--track: .08em;--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 24px;--s-6: 32px;--s-7: 48px;--s-8: 64px;--r-1: 4px;--r-2: 8px;--r-3: 12px;--r-pill: 999px;--tap: 44px;--appbar-h: 64px;--appbar-sub-h: 44px;--dock-h: 78px;--z-sticky: 10;--z-appbar: 100;--z-dock: 100;--z-banner: 150;--z-sheet: 200;--z-toast: 300;--ease: cubic-bezier(.2, .7, .2, 1);--dur-1: .12s;--dur-2: .2s;--dur-3: .32s}@font-face{font-family:Host Grotesk;font-style:normal;font-weight:300 800;font-display:swap;src:url(/fonts/host-grotesk-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Host Grotesk;font-style:normal;font-weight:300 800;font-display:swap;src:url(/fonts/host-grotesk-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Host Grotesk;font-style:italic;font-weight:300 800;font-display:swap;src:url(/fonts/host-grotesk-italic-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(/fonts/jetbrains-mono-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(/fonts/jetbrains-mono-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}*,*:before,*:after{box-sizing:border-box}html{background:var(--paper);height:100%;overflow:hidden;-webkit-text-size-adjust:100%}body{margin:0;height:100%;overflow:hidden;font:400 var(--t-16)/1.45 var(--sans);color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased}#root{height:100%}.shell{height:100dvh;overflow:hidden;position:relative}.view{height:100%;overflow-y:auto;overscroll-behavior-y:none;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding-top:var(--appbar-h);padding-bottom:calc(var(--dock-h) + var(--s-5))}.view::-webkit-scrollbar{display:none}.view.no-dock{padding-bottom:var(--s-6)}.view.has-sub{padding-top:calc(var(--appbar-h) + var(--appbar-sub-h))}.container{max-width:720px;margin:0 auto;padding:0 var(--s-4)}.page{padding:var(--s-4) 0 var(--s-6)}.page>.container>h1:first-child{margin-top:var(--s-2)}.appbar{position:fixed;top:0;left:0;right:0;height:var(--appbar-h);z-index:var(--z-appbar);background:color-mix(in srgb,var(--paper) 92%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}.appbar-row{max-width:720px;margin:0 auto;height:100%;display:grid;grid-template-columns:var(--tap) minmax(0,1fr) var(--tap);align-items:center;gap:var(--s-2);padding:0 var(--s-2)}.appbar-title{grid-column:2;min-width:0;display:flex;flex-direction:column;justify-content:center}.appbar-title.left{padding-left:var(--s-2)}.appbar-title h1{margin:0;font-size:var(--t-22);font-weight:600;letter-spacing:-.01em;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.appbar-title .eyebrow{margin-top:2px}.appbar-back{grid-column:1}.appbar-action{grid-column:3;justify-self:end}.appbar-sub{position:fixed;top:var(--appbar-h);left:0;right:0;height:var(--appbar-sub-h);z-index:calc(var(--z-appbar) - 1);background:var(--paper);border-bottom:1px solid var(--line)}.appbar-sub>.container{height:100%;display:flex;align-items:stretch}.dock-mobile{position:fixed;inset:auto 0 0;height:var(--dock-h);z-index:var(--z-dock);display:grid;grid-template-columns:repeat(5,minmax(0,1fr));align-items:end;padding:0 var(--s-2) 10px;border-top:1px solid var(--line);background:var(--paper)}.dock-btn{appearance:none;background:none;border:0;color:var(--ink-faint);font:400 10px/1 var(--mono);letter-spacing:var(--track);text-transform:uppercase;text-decoration:none;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:6px;min-height:var(--tap);padding:6px 0 4px;position:relative;cursor:pointer;-webkit-tap-highlight-color:transparent}.dock-btn svg{width:22px;height:22px}.dock-btn.on{color:var(--ink)}.dock-btn .dock-dot{position:absolute;top:0;width:5px;height:5px;border-radius:var(--r-pill);background:var(--accent);opacity:0}.dock-btn.on .dock-dot{opacity:1}.dock-fab-wrap{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:6px;min-height:var(--tap)}.dock-fab{width:60px;height:60px;margin-bottom:4px;border-radius:var(--r-pill);background:var(--accent);color:var(--accent-ink);border:1px solid var(--ink);display:flex;align-items:center;justify-content:center;text-decoration:none;cursor:pointer;-webkit-tap-highlight-color:transparent;position:relative}.dock-fab svg{width:26px;height:26px}.dock-fab-label{font:400 10px/1 var(--mono);letter-spacing:var(--track);text-transform:uppercase;color:var(--ink-faint);padding-bottom:4px}.dock-fab-wrap.on .dock-fab-label{color:var(--ink)}.dock-fab .live-dot{position:absolute;top:4px;right:4px}.login{max-width:420px;margin:var(--s-6) auto 0;padding:var(--s-5) var(--s-4) var(--s-6);border:1px solid var(--line);border-radius:var(--r-3);background:var(--paper)}.stack{display:flex;flex-direction:column;gap:var(--s-3)}.stack>h2{margin:0}.stack>p{margin:0;color:var(--ink-soft)}.row-line{display:flex;align-items:center;gap:var(--s-3)}.row-line.spread{justify-content:space-between}.divider{display:flex;align-items:center;gap:var(--s-3);color:var(--ink-faint);font:400 var(--t-12)/1 var(--mono);letter-spacing:var(--track);text-transform:uppercase}.divider:before,.divider:after{content:"";flex:1;height:1px;background:var(--line)}@media(min-width:900px){.container{padding:0 var(--s-5)}}h1,h2,h3{margin:0 0 var(--s-2);font-weight:600;letter-spacing:-.01em;line-height:1.15}h1{font-size:var(--t-28)}h2{font-size:var(--t-22)}h3{font-size:var(--t-18);font-weight:500}p{margin:0 0 var(--s-3)}p.lede{font-size:var(--t-18);color:var(--ink-soft)}a{color:inherit}.muted{color:var(--ink-faint)}.soft{color:var(--ink-soft)}code{font-family:var(--mono);font-weight:400;font-size:.92em}.small{font-size:var(--t-14)}.eyebrow{display:block;font:400 var(--t-12)/1.3 var(--mono);letter-spacing:var(--track);text-transform:uppercase;color:var(--ink-faint)}.data,.price,.qty,.mono{font-family:var(--mono);font-variant-numeric:tabular-nums;font-weight:300}.data.strong,.mono.strong{font-weight:400}.hr{height:1px;background:var(--line);border:0;margin:var(--s-4) 0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}:focus-visible{outline:2px solid var(--accent-2);outline-offset:2px}.btn{appearance:none;display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);min-height:var(--tap);padding:0 18px;border:1px solid var(--ink);border-radius:var(--r-2);background:var(--paper);color:var(--ink);font:500 15px/1 var(--sans);text-decoration:none;cursor:pointer;-webkit-tap-highlight-color:transparent;white-space:nowrap}.btn:active{transform:translateY(1px)}.btn:disabled,.btn[aria-disabled=true]{opacity:.45;cursor:default;transform:none}.btn-primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.btn-ghost{border-color:var(--line-strong)}.btn-quiet{border-color:transparent;background:transparent}.btn-danger{color:var(--danger-text);border-color:var(--danger-text)}.btn-sm{min-height:36px;padding:0 12px;font-size:var(--t-14)}.btn-lg{min-height:52px;font-size:17px}.btn-block{width:100%}.btn-icon{width:var(--tap);height:var(--tap);padding:0;line-height:0;border-color:transparent;background:transparent}.btn-icon svg{width:22px;height:22px}.btn.is-busy{color:transparent;position:relative}.btn.is-busy .dot-pulse{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--ink)}.btn-primary.is-busy .dot-pulse{color:var(--accent-ink)}@media(hover:hover){.btn:not(:disabled):hover{background:var(--paper-2)}.btn-primary:not(:disabled):hover{background:color-mix(in srgb,var(--accent) 88%,var(--ink))}}.linkish{appearance:none;background:none;border:0;padding:0;color:var(--ink-soft);font:500 var(--t-14)/1.4 var(--sans);text-decoration:underline;text-underline-offset:3px;cursor:pointer;min-height:var(--tap)}.linkish:disabled{opacity:.45;cursor:default}.chip{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px;border:1px solid var(--line-strong);border-radius:var(--r-pill);background:var(--paper);color:var(--ink);font:400 var(--t-13)/1 var(--sans);white-space:nowrap;cursor:pointer;-webkit-tap-highlight-color:transparent}button.chip{appearance:none}.chip.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}.chip-ok{background:var(--ok-wash);color:var(--ok-text);border-color:transparent}.chip-warn{background:var(--accent-wash);color:var(--accent-text);border-color:transparent}.chip-ai{background:var(--accent-2-wash);color:var(--accent-2-text);border-color:transparent}.chip-info{background:var(--info-wash);color:var(--info-text);border-color:transparent}.chip-row{display:flex;gap:var(--s-2);overflow-x:auto;scrollbar-width:none;padding:var(--s-1) 0;margin:0 calc(-1 * var(--s-4));padding-left:var(--s-4);padding-right:var(--s-4)}.chip-row::-webkit-scrollbar{display:none}.chip-wrap{display:flex;flex-wrap:wrap;gap:var(--s-2)}.card{border:1px solid var(--line);border-radius:var(--r-3);background:var(--paper);padding:var(--s-4)}.card-accent{border-left:2px solid var(--accent)}.card-ai{border-color:var(--accent-2);border-style:dashed}.card+.card{margin-top:var(--s-3)}.rows{margin:0 calc(-1 * var(--s-4))}.row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--s-3);min-height:56px;padding:var(--s-2) var(--s-4);border-bottom:1px solid var(--line-soft);color:inherit;text-decoration:none}.row.no-lead{grid-template-columns:minmax(0,1fr) auto}.row.link{cursor:pointer;-webkit-tap-highlight-color:transparent}@media(hover:hover){.row.link:hover{background:var(--paper-2)}}.row-lead{display:flex;align-items:center;justify-content:center;color:var(--ink-soft)}.row-body{min-width:0;display:flex;flex-direction:column;gap:2px}.row-title{font-size:var(--t-16);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row-sub{font:300 var(--t-12)/1.3 var(--mono);color:var(--ink-faint);margin-top:2px;letter-spacing:.02em}.row-meta{display:flex;align-items:center;gap:var(--s-2);font-family:var(--mono);font-variant-numeric:tabular-nums;font-weight:300;font-size:var(--t-14);color:var(--ink-soft)}.row.done .row-title{text-decoration:line-through;color:var(--ink-faint)}.row.remote{background:var(--info-wash)}.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s-3);padding:var(--s-4) 0 var(--s-2)}.section-head .eyebrow{flex:1}.sticky-head{position:sticky;top:0;z-index:var(--z-sticky);background:var(--paper);border-bottom:1px solid var(--line);padding:var(--s-3) var(--s-4) var(--s-2)}.kv{display:grid;grid-template-columns:auto 1fr;gap:var(--s-1) var(--s-4);font-size:var(--t-14)}.kv dt{color:var(--ink-faint);margin:0}.kv dd{margin:0;font-family:var(--mono);font-weight:300;font-variant-numeric:tabular-nums}.check-big{position:relative;display:inline-flex;width:28px;height:28px;flex:none;border:2px solid var(--ink);border-radius:var(--r-1);background:var(--paper);align-items:center;justify-content:center;color:var(--accent-ink)}.check-big svg{width:18px;height:18px;opacity:0}.check-wrap{display:inline-flex;align-items:center;justify-content:center;width:var(--tap);height:var(--tap);cursor:pointer}.check-wrap input{position:absolute;opacity:0;width:1px;height:1px}.check-wrap input:checked+.check-big{background:var(--accent);border-color:var(--accent)}.check-wrap input:checked+.check-big svg{opacity:1}.check-wrap input:focus-visible+.check-big{outline:2px solid var(--accent-2);outline-offset:2px}.shop-row .check-big{width:32px;height:32px}.field{display:flex;flex-direction:column;gap:6px}.field-label{font:400 var(--t-12)/1.3 var(--mono);letter-spacing:var(--track);text-transform:uppercase;color:var(--ink-faint)}.field.is-unsure .input{border-bottom:2px dotted var(--accent-2)}.input{appearance:none;width:100%;min-height:var(--tap);padding:0 12px;border:1px solid var(--line-strong);border-radius:var(--r-2);background:var(--paper);color:var(--ink);font:400 16px/1.3 var(--sans)}textarea.input{padding:10px 12px;min-height:96px;resize:vertical;line-height:1.45}.input:focus{outline:none;border-color:var(--ink)}.input::placeholder{color:var(--ink-faint)}.input-lg{min-height:52px;font-size:18px}.input-code{font-family:var(--mono);font-size:30px;letter-spacing:.35em;text-align:center;font-weight:400;min-height:60px}.input-search{padding-left:40px}.search{position:relative}.search>svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:18px;height:18px;color:var(--ink-faint);pointer-events:none}.stepper{display:inline-flex;align-items:center;border:1px solid var(--line-strong);border-radius:var(--r-2)}.stepper .btn-icon{width:40px;height:40px}.stepper .data{min-width:44px;text-align:center;font-size:var(--t-16)}.switch{appearance:none;width:44px;height:26px;border-radius:var(--r-pill);background:var(--line-strong);border:0;position:relative;cursor:pointer;flex:none;-webkit-tap-highlight-color:transparent}.switch:after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:var(--r-pill);background:var(--paper);transition:transform var(--dur-2) var(--ease)}.switch:checked{background:var(--accent)}.switch:checked:after{transform:translate(18px)}.err{color:var(--danger-text);font-size:var(--t-14)}.devcode{font-size:var(--t-14);color:var(--ink-soft);background:var(--paper-2);padding:var(--s-2) var(--s-3);border-radius:var(--r-2)}.sheet{position:fixed;margin:0;width:100%;max-width:720px;inset:auto 0 0 50%;transform:translate(-50%);max-height:88dvh;border:1px solid var(--line);border-bottom:0;border-radius:var(--r-3) var(--r-3) 0 0;background:var(--paper);color:var(--ink);padding:0;display:none;flex-direction:column;overflow:hidden;z-index:var(--z-sheet)}.sheet[open]{display:flex}.sheet::backdrop{background:var(--scrim)}.sheet.tall{max-height:96dvh}.sheet-handle{width:36px;height:4px;border-radius:var(--r-pill);background:var(--line-strong);margin:10px auto 4px;flex:none}.sheet-head{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);padding:var(--s-2) var(--s-2) var(--s-2) var(--s-4);flex:none}.sheet-head h2{margin:0;font-size:var(--t-18)}.sheet-body{overflow:auto;overscroll-behavior:contain;padding:0 var(--s-4) var(--s-4);flex:1 1 auto}.sheet-foot{position:sticky;bottom:0;background:var(--paper);border-top:1px solid var(--line);padding:var(--s-3) var(--s-4);display:flex;gap:var(--s-2);flex:none}.toast-stack{position:fixed;left:50%;transform:translate(-50%);bottom:calc(var(--dock-h) + var(--s-3));z-index:var(--z-toast);display:flex;flex-direction:column;gap:var(--s-2);width:min(92vw,420px);pointer-events:none}.toast{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);background:var(--ink);color:var(--paper);font-size:var(--t-14);padding:12px 14px;border-radius:var(--r-2);pointer-events:auto}.toast-action{appearance:none;background:none;border:0;color:var(--accent);font:600 var(--t-14)/1 var(--sans);padding:6px 4px;cursor:pointer}.toast-ok{border-left:3px solid var(--ok)}.toast-warn{border-left:3px solid var(--accent)}.tabs{display:flex;gap:var(--s-1);width:100%;overflow-x:auto;scrollbar-width:none}.tab{appearance:none;background:none;border:0;border-bottom:2px solid transparent;min-height:var(--tap);padding:0 var(--s-3);color:var(--ink-faint);font:400 var(--t-12)/1 var(--mono);letter-spacing:var(--track);text-transform:uppercase;display:inline-flex;align-items:center;gap:6px;cursor:pointer;white-space:nowrap}.tab.on{color:var(--ink);border-bottom-color:var(--accent)}.tab .count{color:var(--ink-faint)}.seg{display:inline-flex;border:1px solid var(--line-strong);border-radius:var(--r-pill);padding:2px;gap:2px}.seg>button{appearance:none;border:0;background:none;color:var(--ink-soft);min-height:32px;padding:0 14px;border-radius:var(--r-pill);font:500 var(--t-14)/1 var(--sans);cursor:pointer}.seg>button.on{background:var(--ink);color:var(--paper)}.seg.block{display:flex}.seg.block>button{flex:1}.banner{display:flex;align-items:center;gap:var(--s-2);background:var(--paper-3);border-bottom:1px solid var(--line);font-size:var(--t-13);padding:8px var(--s-4);color:var(--ink-soft)}.banner svg{width:16px;height:16px;flex:none}.banner-offline{background:color-mix(in srgb,var(--sage) 30%,var(--paper))}.banner-sync{background:var(--info-wash)}.banner-fixed{position:fixed;top:var(--appbar-h);left:0;right:0;z-index:var(--z-banner)}.progress{height:2px;background:var(--line)}.progress>i{display:block;height:100%;background:var(--accent);transition:width var(--dur-3) var(--ease)}.dot-pulse{display:inline-flex;gap:4px;align-items:center}.dot-pulse i{width:4px;height:4px;border-radius:var(--r-pill);background:currentColor;opacity:.2}.dot-pulse.ai{color:var(--accent-2)}.live-dot{display:inline-block;width:6px;height:6px;border-radius:var(--r-pill);background:var(--info)}.empty{text-align:center;padding:var(--s-7) var(--s-4);color:var(--ink-soft);display:flex;flex-direction:column;align-items:center;gap:var(--s-3)}.empty svg{width:32px;height:32px;color:var(--ink-faint)}.empty h2{margin:0;color:var(--ink);font-size:var(--t-18);font-weight:500}.empty p{margin:0;max-width:34ch}.skeleton{background:var(--paper-3);border-radius:var(--r-2);min-height:16px}.skeleton.line{height:14px;margin:10px 0;width:70%}.skeleton.line.short{width:40%}.skeleton.block{height:56px;margin:var(--s-2) 0;width:100%}.avatar{width:28px;height:28px;border-radius:var(--r-pill);background:var(--paper-3);color:var(--ink-soft);display:inline-flex;align-items:center;justify-content:center;font:400 var(--t-12)/1 var(--mono);letter-spacing:.04em;flex:none}.avatar.lg{width:40px;height:40px;font-size:var(--t-14)}.pill-count{font:300 var(--t-12)/1 var(--mono);color:var(--ink-faint)}.list-plain{list-style:none;margin:0;padding:0}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-3)}.actions{display:flex;gap:var(--s-2);flex-wrap:wrap}.actions.end{justify-content:flex-end}.stack-lg{display:flex;flex-direction:column;gap:var(--s-4)}.center{text-align:center}.pad-y{padding:var(--s-4) 0}.code-box{font-family:var(--mono);font-weight:400;font-size:var(--t-28);letter-spacing:.25em;text-align:center;padding:var(--s-3);border:1px solid var(--line);border-radius:var(--r-2)}.step-count{font:400 var(--t-12)/1 var(--mono);letter-spacing:var(--track);color:var(--ink-faint)}.icon-inline{width:16px;height:16px;vertical-align:-3px}.row-btn{appearance:none;width:100%;text-align:left;background:none;border:0;border-bottom:1px solid var(--line-soft);font:inherit;color:inherit;cursor:pointer}.mt-2{margin-top:var(--s-2)}.mt-3{margin-top:var(--s-3)}.mt-4{margin-top:var(--s-4)}.mb-3{margin-bottom:var(--s-3)}.card-copy{margin:6px 0 10px}.appbar-title.full{grid-column:1 / 3}.passkeys .row{grid-template-columns:auto minmax(0,1fr) auto}.member-row .row-meta{gap:var(--s-1)}.welcome-steps{display:flex;flex-direction:column;gap:var(--s-4);max-width:440px;margin:0 auto;padding-top:var(--s-4)}.share-box{display:grid;gap:var(--s-2)}.share-box .input{font-family:var(--mono);font-weight:300;font-size:var(--t-14)}.quick-add{display:flex;gap:var(--s-2);align-items:center}.quick-add .input{flex:1;min-width:0}.quick-add .btn-icon.is-live{color:var(--accent-2-text);border-color:var(--accent-2)}.quick-add .err{flex-basis:100%}.shop-add{position:fixed;left:0;right:0;bottom:var(--dock-h);z-index:var(--z-sticky);background:color-mix(in srgb,var(--paper) 94%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-top:1px solid var(--line);padding:var(--s-2) 0}.page.shop{padding-bottom:calc(var(--s-8) + var(--s-4))}.sticky-progress{position:sticky;top:0;z-index:calc(var(--z-sticky) + 1);margin:0 calc(-1 * var(--s-4)) var(--s-2)}.section-group .sticky-head,.view.has-sub .section-group .sticky-head{top:0}.section-group .rows{margin-bottom:var(--s-2)}.section-group .count{color:var(--ink-faint)}.shop-row{grid-template-columns:minmax(0,1fr) auto;min-height:64px;padding:0 var(--s-2) 0 0}.shop-row .row-hit{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--s-2);min-height:64px;padding:0 var(--s-2) 0 var(--s-2);cursor:pointer;-webkit-tap-highlight-color:transparent}.shop-row .row-title{font-size:var(--t-18);font-weight:500;display:inline-flex;gap:var(--s-2);align-items:center;flex-wrap:wrap}.shop-row.done .row-title{text-decoration:line-through;color:var(--ink-faint);font-weight:400}.shop-row.done .row-sub{color:var(--ink-faint)}.shop-row.skipped{opacity:.6}.shop-row .row-actions{color:var(--ink-faint)}.shop-row .avatar.sm{width:22px;height:22px;font-size:10px;margin-left:var(--s-2)}.cart .cart-head{width:100%;appearance:none;border:0;border-bottom:1px solid var(--line);background:var(--paper);cursor:pointer;text-align:left;color:inherit}.finish-row{margin-top:var(--s-4);border-top:1px solid var(--line)}.all-done{display:flex;flex-direction:column;align-items:center;gap:var(--s-2);color:var(--ok-text)}.all-done .lede{color:var(--ink);margin:0}.row.danger .row-title,.row.danger svg{color:var(--danger-text)}.pantry-row.out .row-title{color:var(--ink-faint)}.pantry-row .row-meta{display:inline-flex;align-items:center;gap:var(--s-1)}.staple-row.off .row-title{color:var(--ink-faint)}.staple-controls{display:inline-flex;align-items:center;gap:var(--s-2)}.staple-controls .seg>button{padding:0 8px;min-height:28px;font-size:var(--t-12)}.chip-picker .chip{min-height:40px}.recipe-rows .row-title .fav{color:var(--accent-text);margin-right:6px;vertical-align:-2px}.recipe-meta{color:var(--ink-faint);font-size:var(--t-13);text-transform:uppercase;letter-spacing:var(--track)}.recipe header h1{font-size:var(--t-28);line-height:1.15;margin:0}.ing-row .qty{min-width:56px;text-align:right;font-size:var(--t-14)}.ing-row.optional .row-title{color:var(--ink-soft)}.steps li{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--s-3);padding:var(--s-3) 0;border-bottom:1px solid var(--line-soft);align-items:start}.steps li p{margin:0;line-height:1.5}.steps .step-no{color:var(--ink-faint);padding-top:3px}.steps.edit li{grid-template-columns:auto minmax(0,1fr) auto}.steps.edit textarea{width:100%;resize:vertical}.ing-list{display:flex;flex-direction:column;gap:var(--s-3)}.ing-edit{display:grid;grid-template-columns:64px 84px minmax(0,1fr) auto;gap:var(--s-2);align-items:center;padding-bottom:var(--s-3);border-bottom:1px solid var(--line-soft);position:relative}.ing-edit .note{grid-column:1 / 4}.ing-edit .optional{grid-column:4 / 5;display:inline-flex;align-items:center;gap:6px;color:var(--ink-faint);white-space:nowrap}.ing-edit.is-unsure .name{border-bottom:2px dotted var(--accent-2)}.ing-edit .check,.field .check,.section-head .check,.eyebrow.check{color:var(--accent-2-text)}.grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:var(--s-3)}.tag-input{flex:1;min-width:120px;min-height:36px;padding:0 var(--s-3)}.paste-box{font-size:var(--t-14)}.card-ai{border-color:var(--accent-2);color:var(--accent-2-text);background:var(--accent-2-wash)}.thumbs{display:flex;gap:var(--s-2);overflow-x:auto}.thumbs img{height:96px;width:auto;border-radius:var(--r-2);border:1px solid var(--line)}textarea.input{min-height:44px;padding:var(--s-2) var(--s-3);line-height:1.4;resize:vertical;font:inherit}select.input{padding-right:var(--s-3)}.week-nav .data{font-size:var(--t-16)}.week-grid{display:flex;flex-direction:column;gap:var(--s-2)}.week-head{display:grid;grid-template-columns:56px 1fr;gap:var(--s-2);padding-left:0}.week-grid.cols-2 .week-head{grid-template-columns:56px 1fr 1fr}.week-grid.cols-3 .week-head{grid-template-columns:56px 1fr 1fr 1fr}.day-row{display:grid;grid-template-columns:56px 1fr;gap:var(--s-2);align-items:stretch}.week-grid.cols-2 .day-row{grid-template-columns:56px 1fr 1fr}.week-grid.cols-3 .day-row{grid-template-columns:56px 1fr 1fr 1fr}.week-grid.cols-4 .day-row,.week-grid.cols-5 .day-row{grid-template-columns:56px repeat(2,1fr)}.day-label{display:flex;flex-direction:column;justify-content:center;gap:2px}.day-label .data{font-size:var(--t-22)}.day-row.today .day-label .data{color:var(--accent-text);font-weight:400}.slot-card{position:relative;display:flex;align-items:stretch;border:1px solid var(--line);border-radius:var(--r-2);background:var(--paper);min-height:64px}.slot-card.empty{appearance:none;border-style:dashed;color:var(--ink-faint);flex-direction:row;align-items:center;justify-content:center;gap:var(--s-2);cursor:pointer;font:inherit}.slot-card.recipe{border-color:var(--line-strong)}.slot-card.proposed{border-color:var(--accent-2)}.slot-card.leftovers,.slot-card.out{background:var(--paper-2)}.slot-main{flex:1;appearance:none;border:0;background:none;text-align:left;padding:var(--s-2) var(--s-3);display:flex;flex-direction:column;gap:2px;color:inherit;font:inherit;cursor:pointer;min-width:0}.slot-title{font-weight:500;font-size:var(--t-16);line-height:1.25}.slot-shuffle{align-self:center;color:var(--ink-faint)}.build-bar{position:sticky;bottom:var(--s-2);display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);padding:var(--s-3) var(--s-4);border:1px solid var(--line);border-radius:var(--r-3);background:var(--paper)}.store-row.have .row-title{color:var(--ink-soft)}.store-row .row-meta{display:inline-flex;gap:0}.row-title .chip{margin-left:var(--s-2);font-size:var(--t-12);min-height:22px;padding:0 8px}.actions.center{justify-content:center}.card.center{text-align:center}.shop-row .row-body,.ing-row .row-body,.pantry-row .row-body,.staple-row .row-body,.store-row .row-body{display:flex;flex-direction:column;gap:2px;min-width:0}.shop-row .row-sub,.ing-row .row-sub{display:block}.live-dot.on{background:var(--info);animation:live-pulse 2s linear infinite}.live-dot.off{background:var(--line-strong)}.live-dot.ok{background:var(--ok)}.appbar-title .eyebrow .live-dot{margin-right:6px;vertical-align:1px}.live-label{color:var(--info-text)}.presence{display:flex;gap:var(--s-2);overflow-x:auto;scrollbar-width:none;padding:var(--s-2) 0 var(--s-1)}.presence::-webkit-scrollbar{display:none}.presence-chip{height:36px;padding-left:10px}.presence-chip .avatar{width:22px;height:22px;font-size:10px}.presence-chip.away{opacity:.7}.shop-row.remote{background:var(--info-wash);transition:background var(--dur-3) var(--ease)}@keyframes live-pulse{0%,to{opacity:.35}50%{opacity:1}}@media(prefers-reduced-motion:reduce){.live-dot.on{animation:none}}.rm .live-dot.on{animation:none}.tab .total{color:var(--ink-soft);font-weight:300}.row-hit-btn{display:flex;flex:1;min-width:0;align-items:center;gap:var(--s-3);min-height:var(--tap);padding:0;background:none;border:0;color:inherit;font:inherit;text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent}.row-hit-btn .row-body{display:flex;flex-direction:column;gap:2px;min-width:0}.store-pick .row.on .row-title{font-weight:500}.trip-summary .eyebrow{display:block}.trip-total{font-size:var(--t-48);line-height:1;margin:var(--s-2) 0 var(--s-3)}.trip-summary .kv{margin-bottom:var(--s-3)}.savings{color:var(--ok-text)}.maps-actions{margin-top:var(--s-3)}.stop-card{padding:0;overflow:hidden}.stop-head{display:flex;align-items:center;gap:var(--s-3);width:100%;min-height:64px;padding:var(--s-3) var(--s-4);background:none;border:0;color:inherit;font:inherit;text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent}.stop-index{width:28px;height:28px;flex:none;border-radius:50%;border:1px solid var(--ink);display:inline-flex;align-items:center;justify-content:center;font-size:var(--t-12)}.stop-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.stop-items{border-top:1px solid var(--line-soft);padding:0 var(--s-4)}.stop-items .row{min-height:48px}.stop-actions{display:flex;gap:var(--s-2);padding:var(--s-3) var(--s-4);border-top:1px solid var(--line-soft)}.money-field{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:var(--s-2)}.money-field .sym{font-family:var(--mono);font-weight:300;font-size:var(--t-22);color:var(--ink-faint)}.candidate-rows{border:1px solid var(--accent-2);border-style:dashed;border-radius:var(--r-3);padding:0 var(--s-3)}.candidate-row .row-title{display:inline-flex;gap:var(--s-2);align-items:center;flex-wrap:wrap}.receipt-lines{display:flex;flex-direction:column}.receipt-line{display:grid;grid-template-columns:minmax(0,1fr) 88px var(--tap);gap:var(--s-2);align-items:center;padding:var(--s-2) 0;border-bottom:1px solid var(--line-soft)}.receipt-line .raw{grid-column:1 / -1;display:inline-flex;gap:var(--s-2);align-items:center;font:300 var(--t-12)/1.3 var(--mono);letter-spacing:var(--track);text-transform:uppercase;color:var(--ink-faint)}.receipt-line.review{border-left:2px solid var(--accent-2);padding-left:var(--s-2)}.aisle-list{margin:0;padding:0}.aisle-row{display:flex;align-items:center;gap:var(--s-2);min-height:var(--tap);border-bottom:1px solid var(--line-soft)}.aisle-row .idx{width:28px;font:300 var(--t-12)/1 var(--mono);color:var(--ink-faint)}.aisle-row .name{flex:1;min-width:0}@media(prefers-reduced-motion:no-preference){@keyframes dot-loop{0%,to{opacity:.2}50%{opacity:1}}.dot-pulse i{animation:dot-loop 2s linear infinite}.dot-pulse i:nth-child(2){animation-delay:.33s}.dot-pulse i:nth-child(3){animation-delay:.66s}.live-dot{animation:dot-loop 2s linear infinite}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.fade-in{animation:fade-in var(--dur-2) var(--ease)}@keyframes slide-up{0%{transform:translate(-50%,100%)}to{transform:translate(-50%)}}.sheet[open]{animation:slide-up var(--dur-3) var(--ease)}@keyframes shimmer{0%{opacity:.6}50%{opacity:1}to{opacity:.6}}.skeleton{animation:shimmer 1.6s ease-in-out infinite}@keyframes row-check{0%{background:var(--accent-wash)}to{background:transparent}}.row.just-done{animation:row-check .6s var(--ease)}.toast{animation:fade-in var(--dur-2) var(--ease)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}.dot-pulse i,.live-dot{opacity:1}}html.rm *,html.rm *:before,html.rm *:after{animation:none!important;transition:none!important}
