:root,[data-theme=forest]{--bg: #f6f5f1;--card: #fff;--ink: #1d2421;--muted: #5a645f;--line: #e3e1da;--brand: #1f6f5c;--brand-ink: #fff;--ok: #1f6f5c;--soon: #8f5a00;--today: #b0430f;--overdue: #c01f1f;--radius: 14px;--edge: color-mix(in srgb, var(--ink) 56%, var(--bg));--focus: #0b5cad;--tint: 12%;--chart: #12805f}@media (prefers-color-scheme: dark){:root,[data-theme=forest]{--bg: #121614;--card: #1b211e;--ink: #ecf0ed;--muted: #9aa5a0;--line: #2a322e;--brand: #3fa88c;--brand-ink: #08130f;--ok: #3fa88c;--soon: #e0a23b;--today: #ed8a4a;--overdue: #f26b6b;--chart: #3fa88c;--edge: color-mix(in srgb, var(--ink) 44%, var(--bg));--focus: #7db8ff;--tint: 10%}}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.4 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-text-size-adjust:100%}#app{max-width:640px;margin:0 auto;padding:calc(env(safe-area-inset-top) + 12px) 16px calc(env(safe-area-inset-bottom) + 84px)}header{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}h1{font-size:1.6rem;margin:0;letter-spacing:-.02em}.who{border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:999px;padding:6px 12px;font-size:.85rem}.summary{color:var(--muted);margin:0 0 16px;font-size:.95rem}.list{display:grid;gap:22px}.cards{display:grid;gap:12px;padding:0;margin:0;list-style:none}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px;display:grid;gap:10px}.card[data-status=overdue]{border-color:var(--overdue)}.row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.title{all:unset;font-weight:650;font-size:1.05rem;cursor:pointer;border-radius:6px}.chip{white-space:nowrap;font-size:.72rem;color:var(--muted);border:1px solid var(--edge);border-radius:999px;padding:1px 8px;margin-left:6px;vertical-align:middle;font-weight:500}.left{font-weight:650}[data-status=ok] .left{color:var(--ok)}[data-status=soon] .left{color:var(--soon)}[data-status=today] .left{color:var(--today)}[data-status=overdue] .left{color:var(--overdue)}.meta{color:var(--muted);font-size:.85rem}.bar{height:6px;border-radius:99px;background:var(--line);overflow:hidden}.bar>i{display:block;height:100%;background:var(--ok)}[data-status=soon] .bar>i{background:var(--soon)}[data-status=today] .bar>i{background:var(--today)}[data-status=overdue] .bar>i{background:var(--overdue)}button.primary,button.secondary,button.danger{font:inherit;border-radius:10px;padding:10px 16px;border:1px solid transparent;cursor:pointer;min-height:44px}button.primary{background:var(--brand);color:var(--brand-ink);font-weight:650}button.secondary{background:transparent;border-color:var(--edge);color:var(--ink)}button.danger{background:transparent;border-color:var(--overdue);color:var(--overdue)}.done{white-space:nowrap}.empty{text-align:center;color:var(--muted);padding:40px 0;display:grid;gap:12px;justify-items:center}dialog{border:0;border-radius:18px;padding:20px;width:min(92vw,460px);background:var(--card);color:var(--ink)}dialog::backdrop{background:#00000073}form{display:grid;gap:12px}label{display:grid;gap:4px;font-size:.85rem;color:var(--muted)}input,select,textarea{font:inherit;font-size:16px;padding:10px;border-radius:10px;border:1px solid var(--edge);background:var(--bg);color:var(--ink);width:100%}.pair{display:grid;grid-template-columns:90px 1fr;gap:8px}.actions{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap}.history{font-size:.85rem;color:var(--muted);margin:0;padding-left:18px;max-height:120px;overflow:auto}.toast{position:fixed;left:16px;right:16px;max-width:608px;margin:0 auto;justify-content:space-between;bottom:calc(env(safe-area-inset-bottom) + 72px);background:var(--ink);color:var(--bg);padding:10px 14px;border-radius:12px;display:flex;gap:12px;align-items:center;z-index:10}.toast button{all:unset;font-weight:700;cursor:pointer;text-decoration:underline}.install{background:var(--card);border:1px dashed var(--line);border-radius:var(--radius);padding:10px 14px;margin-bottom:12px;font-size:.85rem;color:var(--muted)}.chips{display:flex;gap:6px}.sync.synced{color:var(--ok)}.sync.offline,.sync.syncing{color:var(--muted)}.sync.reconnect,.sync.error{color:var(--overdue);border-color:var(--overdue)}dialog button.primary,dialog button.secondary,dialog button.danger{width:100%}dialog .actions button{width:auto}dialog .actions .danger{margin-right:auto}.meta:empty{display:none}.card[data-status=dormant]{border-style:dashed;color:var(--muted)}[data-status=dormant] .left{color:var(--muted)}.actions-col{display:grid;gap:0;justify-items:end}button.link{all:unset;color:var(--brand);cursor:pointer;font-size:.9rem;text-decoration:underline;padding:10px 6px;min-height:40px;box-sizing:border-box;display:inline-flex;align-items:center;border-radius:8px}.meta.error{color:var(--overdue)}.stack{display:grid;gap:8px}.check{display:flex;align-items:center;gap:8px;color:var(--ink);font-size:1rem}.check input{width:auto}.months{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.chipbtn{font:inherit;font-size:.8rem;padding:8px 0;border-radius:8px;border:1px solid var(--edge);background:var(--bg);color:var(--ink);cursor:pointer;min-height:40px}.chipbtn[aria-pressed=true]{background:var(--brand);color:var(--brand-ink);border-color:var(--brand);font-weight:700}.history li{margin-bottom:4px}.vehicle{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:6px 0}.vbtns{display:flex;gap:6px}dialog .vbtns button{width:auto;padding:8px 12px;min-height:40px}h3{margin:16px 0 0;font-size:1rem}[hidden]{display:none!important}.suggest{background:color-mix(in srgb,var(--brand) 10%,var(--card));border:1px solid color-mix(in srgb,var(--brand) 35%,var(--line));border-radius:10px;padding:10px 12px;display:grid;gap:6px}.suggest p{margin:0;font-size:.9rem}.suggest .vbtns{align-items:center}.suggest .vbtns button.secondary{padding:6px 12px;min-height:36px}.tour-spot{position:relative}.tour-blocker{position:fixed;inset:0;z-index:900}.tour-spot{z-index:901;pointer-events:none;border-radius:12px;outline:3px solid var(--brand);outline-offset:3px;box-shadow:0 0 0 100vmax #0000008c}.tour{position:fixed;left:12px;right:12px;max-width:520px;margin:0 auto;z-index:902;background:var(--card);color:var(--ink);border-radius:16px;padding:16px;display:grid;gap:8px;box-shadow:0 8px 30px #00000059;max-height:70vh;overflow:auto}.tour[data-pos=bottom]{bottom:calc(env(safe-area-inset-bottom) + 12px)}.tour[data-pos=top]{top:calc(env(safe-area-inset-top) + 12px)}.tour:not([data-pos]){bottom:calc(env(safe-area-inset-bottom) + 12px)}.tour h2{margin:0;font-size:1.15rem}.tour p{margin:0}.tour-count{font-size:.75rem;color:var(--muted);letter-spacing:.04em;text-transform:uppercase}.tour-actions{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:4px}.tour-actions .vbtns{margin-left:auto;display:flex;gap:8px}.tour button.primary,.tour button.secondary{padding:8px 18px;min-height:44px}.tour .tour-name{width:100%}@media (prefers-reduced-motion: no-preference){.tour{animation:tour-in .18s ease-out}}@keyframes tour-in{0%{opacity:0;transform:translateY(8px)}}.summary-row{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin:0 0 16px}.summary-row .summary{margin:0}dialog.spend{width:min(94vw,520px)}.seg{display:flex;gap:4px;padding:3px;border:1px solid var(--line);border-radius:12px;background:var(--bg)}.seg button{flex:1;font:inherit;font-size:.9rem;padding:8px 4px;border:0;border-radius:9px;background:transparent;color:var(--muted);cursor:pointer;min-height:40px}.seg button[aria-pressed=true]{background:var(--card);color:var(--ink);font-weight:650;box-shadow:0 0 0 1px var(--line)}.spend-range{margin:2px 0 0}.spend-label{font-size:.8rem;color:var(--muted)}.spend-top{display:grid;gap:2px;margin-top:8px}.hero{font-size:3rem;line-height:1.05;font-weight:700;letter-spacing:-.02em}.spend-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;margin-top:10px}.tile{border:1px solid var(--line);border-radius:12px;padding:10px 12px;display:grid;gap:2px}.tile-value{font-size:1.25rem;font-weight:650}.spend-sec{display:grid;gap:6px;margin-top:16px}.spend-sec h3{margin:0}.spend-head{display:flex;justify-content:space-between;align-items:baseline}.chart{position:relative;padding:24px 0 0 34px}.area{position:relative;height:150px}.grid{position:absolute;left:0;right:0;height:0;border-top:1px solid var(--line)}.tick{position:absolute;left:-34px;width:28px;text-align:right;transform:translateY(-50%);font-size:.7rem;color:var(--muted)}.cols{position:absolute;inset:0;display:flex}.col{flex:1;min-width:0;position:relative;display:flex;align-items:flex-end;justify-content:center;padding:0 1px;background:transparent;border:0;cursor:pointer}.colbar{display:block;width:100%;max-width:24px;background:var(--chart);border-radius:4px 4px 0 0}.col.on .colbar{filter:brightness(1.18)}.col:focus-visible{outline:2px solid var(--chart);outline-offset:-2px;border-radius:4px}.peak{position:absolute;font-size:.72rem;font-weight:600;color:var(--ink);white-space:nowrap;pointer-events:none}.peak.mid{left:50%;transform:translate(-50%)}.peak.left{left:0}.peak.right{right:0}.xlabels{display:flex;margin-top:4px}.xlabels span{flex:1;text-align:center;font-size:.7rem;color:var(--muted)}.tip{position:absolute;z-index:5;transform:translate(-50%);display:grid;gap:1px;padding:6px 10px;border-radius:8px;background:var(--ink);color:var(--bg);font-size:.75rem;pointer-events:none;white-space:nowrap}.tip strong{font-size:.9rem}.ranks{list-style:none;margin:0;padding:0;display:grid;gap:12px}.rname{font-size:.9rem;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rbar{display:flex;align-items:center;gap:8px;margin-top:3px}.rfill{display:block;flex:0 0 auto;width:calc((100% - 140px) * var(--p));min-width:2px;height:10px;border-radius:0 4px 4px 0;background:var(--chart)}.rval{font-size:.85rem;font-weight:650;color:var(--ink);white-space:nowrap}.rshare{font-size:.75rem;color:var(--muted)}.spend-table{width:100%;border-collapse:collapse;font-size:.9rem}.spend-table caption{text-align:left;color:var(--muted);font-size:.8rem;padding-bottom:4px}.spend-table th,.spend-table td{padding:6px 4px;border-bottom:1px solid var(--line);text-align:left;font-weight:400}.spend-table td{text-align:right;font-variant-numeric:tabular-nums}.spend-table tfoot th,.spend-table tfoot td{font-weight:650;border-bottom:0}:root{--p1: #2a78d6;--p1-on: #0b0b0b;--p2: #eb6834;--p2-on: #0b0b0b;--p3: #1baf7a;--p3-on: #0b0b0b;--p4: #eda100;--p4-on: #0b0b0b;--p5: #e87ba4;--p5-on: #0b0b0b;--p6: #008300;--p6-on: #ffffff;--p7: #6250d6;--p7-on: #ffffff;--p8: #e34948;--p8-on: #0b0b0b}@media (prefers-color-scheme: dark){:root{--p1: #3987e5;--p1-on: #0b0b0b;--p2: #d95926;--p2-on: #0b0b0b;--p3: #199e70;--p3-on: #0b0b0b;--p4: #c98500;--p4-on: #0b0b0b;--p5: #d55181;--p5-on: #0b0b0b;--p6: #008300;--p6-on: #ffffff;--p7: #9085e9;--p7-on: #0b0b0b;--p8: #e66767;--p8-on: #0b0b0b}}.pc-1{--pc: var(--p1);--on: var(--p1-on)}.pc-2{--pc: var(--p2);--on: var(--p2-on)}.pc-3{--pc: var(--p3);--on: var(--p3-on)}.pc-4{--pc: var(--p4);--on: var(--p4-on)}.pc-5{--pc: var(--p5);--on: var(--p5-on)}.pc-6{--pc: var(--p6);--on: var(--p6-on)}.pc-7{--pc: var(--p7);--on: var(--p7-on)}.pc-8{--pc: var(--p8);--on: var(--p8-on)}.pc-none{--pc: var(--line);--on: var(--muted)}.avatar{display:inline-grid;place-items:center;flex:none;width:1.45em;height:1.45em;border-radius:50%;background:var(--pc);color:var(--on);font-size:.78em;font-weight:700;line-height:1;vertical-align:-.2em}.person{display:inline-flex;align-items:center;gap:.4em}.who .avatar{font-size:.72em}.swatches{display:flex;flex-wrap:wrap;gap:8px}.swatch{width:44px;height:44px;border-radius:50%;border:2px solid transparent;background:var(--pc);color:var(--on);font:inherit;font-weight:800;font-size:1.1rem;cursor:pointer;display:grid;place-items:center;padding:0}.swatch[aria-pressed=true]{outline:3px solid var(--ink);outline-offset:2px}.swatch:focus-visible{outline:3px solid var(--ink);outline-offset:2px}.member-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:4px 0}.you{font-size:.72rem;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:0 8px;margin-left:6px}.avatar:before{content:attr(data-i)}:focus{outline:none}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.card .title:focus-visible,button.link:focus-visible{outline-offset:1px}button,.chipbtn,.swatch,.col{-webkit-tap-highlight-color:transparent;touch-action:manipulation}button.primary:active,button.secondary:active,.who:active{transform:scale(.97)}button.primary:hover{filter:brightness(1.08)}button.secondary:hover,.who:hover{background:color-mix(in srgb,var(--ink) 6%,transparent)}button:disabled{opacity:.5;cursor:not-allowed}@media (prefers-reduced-motion: no-preference){button,.card{transition:transform .08s ease,background-color .15s ease,filter .15s ease}dialog[open]{animation:dlg-in .18s ease-out}dialog[open]::backdrop{animation:fade-in .18s ease-out}.toast{animation:toast-in .2s ease-out}}@keyframes dlg-in{0%{opacity:0;transform:translateY(12px) scale(.98)}}@keyframes fade-in{0%{opacity:0}}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}}header{margin-bottom:8px}.chips{gap:6px;align-items:center}.who{min-height:40px;display:inline-flex;align-items:center;gap:6px;cursor:pointer;font:inherit;font-size:.85rem}.iconbtn{width:40px;padding:0;justify-content:center;font-size:1.1rem;line-height:1}.summary{font-size:1rem}.pill{font:inherit;font-size:.9rem;font-weight:600;color:var(--brand);background:color-mix(in srgb,var(--brand) 10%,var(--card));border:1px solid color-mix(in srgb,var(--brand) 30%,var(--line));border-radius:999px;padding:8px 16px;min-height:40px;cursor:pointer}.group{display:grid;gap:10px}.group-title{margin:0;font-size:.8rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);display:flex;align-items:center;gap:8px}.group[data-group=Overdue] .group-title{color:var(--overdue)}.group[data-group="Due soon"] .group-title{color:var(--soon)}.count{font-size:.72rem;letter-spacing:0;background:var(--line);color:var(--ink);border-radius:999px;padding:0 8px;min-width:22px;text-align:center}.card[data-status=overdue]{border-width:2px;padding:13px}.card[data-status=today]{border-color:var(--today)}.done{min-width:84px}.card[data-status=dormant] .done{background:transparent;color:var(--muted);border-color:var(--line)}.empty{padding:32px 8px;gap:10px}.empty h2{margin:0;color:var(--ink);font-size:1.3rem;letter-spacing:-.01em}.empty p{margin:0 0 8px;max-width:32ch}.empty-icon{font-size:3rem;line-height:1}.empty button{min-width:220px}.install{display:flex;align-items:center;justify-content:space-between;gap:8px}dialog{max-height:min(92dvh,760px);overscroll-behavior:contain}dialog form>.actions:last-child{position:sticky;bottom:-20px;background:var(--card);padding:12px 0 4px;margin-bottom:-4px;border-top:1px solid var(--line)}.dlg-head{display:flex;align-items:center;justify-content:space-between;position:sticky;top:-20px;background:var(--card);padding:4px 0;z-index:2}.dlg-head h2{margin:0}dialog .iconbtn.close{width:40px;min-height:40px;border-radius:50%;border:1px solid var(--line);background:transparent;color:var(--ink);cursor:pointer;font-size:1rem}dialog h2{margin:0 0 4px}dialog h3{margin-top:20px;padding-top:16px;border-top:1px solid var(--line)}dialog .dlg-head+h3{border-top:0;padding-top:0;margin-top:8px}input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--focus);outline-offset:0;border-color:var(--brand)}label{font-weight:500}.toast{box-shadow:0 6px 20px #0000004d}.toast button{padding:8px 4px}dialog.confirm{width:min(88vw,380px)}dialog.confirm p{margin:0;line-height:1.45}button.danger.solid{background:var(--overdue);color:#fff;border-color:var(--overdue)}.toast span{flex:1}dialog.confirm form>.actions:last-child{position:static;border-top:0;padding:4px 0 0;margin:0}.install span,.install>:first-child{flex:1}.install button{white-space:nowrap;flex:none}dialog.spend h3{border-top:0;padding-top:0;margin-top:0}dialog.spend .spend-sec{margin-top:0;padding-top:18px;border-top:1px solid var(--line)}dialog.spend .spend-top{margin-top:4px}dialog.spend .spend-head{align-items:center}dialog.spend .spend-head button.link{padding:6px 4px;min-height:36px}dialog.spend .seg{position:sticky;top:28px;z-index:2}.spend-empty{text-align:center;padding:28px 8px;display:grid;gap:8px;justify-items:center}.spend-empty p{margin:0;max-width:34ch}.spend-empty-title{font-weight:650;font-size:1.05rem}.spend-empty button.secondary{width:auto;padding:10px 20px}.entries{list-style:none;margin:0;padding:0;display:grid}.entries li{padding:10px 0;border-bottom:1px solid var(--line);display:grid;gap:2px}.entries li:last-child{border-bottom:0}.entry-main{display:flex;justify-content:space-between;gap:12px;align-items:baseline}.entry-name{font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.entry-cost{font-weight:650;font-variant-numeric:tabular-nums;white-space:nowrap}dialog.spend>form>button.secondary:last-child{margin-top:4px}dialog.settings{width:min(94vw,500px);background:var(--bg)}dialog.settings .dlg-head{background:var(--bg)}.settings-form{gap:18px}.set-group{display:grid;gap:6px}dialog.settings .set-group>h3{margin:0;padding:0 4px;border:0;font-size:.78rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.set-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px;display:grid;gap:10px}.set-card>p{margin:0}.set-group.danger .set-card{border-color:color-mix(in srgb,var(--overdue) 35%,var(--line))}.set-status{margin:0;display:flex;align-items:center;gap:8px;font-weight:600}.dot{width:10px;height:10px;border-radius:50%;background:var(--muted);flex:none}.dot.ok{background:var(--ok)}.dot.bad{background:var(--overdue)}.dot.muted{background:var(--muted)}.set-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.set-row .meta{margin:2px 0 0}.set-divider{border-top:1px solid var(--line);margin:2px -14px}.set-label{gap:6px;color:var(--ink);font-size:.95rem;font-weight:600}.set-label .meta{font-weight:400}.inline-field{display:flex;gap:8px}.inline-field input{flex:1;min-width:0}dialog button.secondary.small,dialog .vbtns button.secondary.small{width:auto;padding:8px 14px;min-height:40px;font-size:.9rem;white-space:nowrap}.vbtns.wrap{flex-wrap:wrap}.set-card button.link{justify-self:start}.set-card .member-row,.set-card .vehicle{padding:2px 0}.set-card .member-row+.member-row,.set-card .vehicle+.vehicle{border-top:1px solid var(--line);padding-top:8px}.set-label input{font-weight:400}.set-card .vehicle{flex-wrap:wrap}.set-card .vehicle>div:first-child{flex:1 1 160px;min-width:0}.linkcode{font:700 2rem/1.2 ui-monospace,SF Mono,Menlo,Consolas,monospace;letter-spacing:.14em;text-align:center;padding:14px 8px;border:1px dashed var(--line);border-radius:12px;background:var(--bg);user-select:all}.linkcode.expired{opacity:.4;text-decoration:line-through}.codeinput{font:600 1.4rem/1.2 ui-monospace,SF Mono,Menlo,Consolas,monospace!important;letter-spacing:.12em;text-align:center;text-transform:uppercase}[data-theme=terracotta]{--bg: #f8f2ea;--card: #fffcf8;--ink: #2a1f1a;--muted: #6b5d54;--line: #e9dccf;--brand: #75220f;--brand-ink: #fff;--chart: #a64832}[data-theme=rosewood]{--bg: #f9f2f1;--card: #fffbfa;--ink: #2a1d20;--muted: #6b5c60;--line: #ebdcdb;--brand: #7e2e57;--brand-ink: #fff;--chart: #9f4471}[data-theme=walnut]{--bg: #f6f1ea;--card: #fffcf7;--ink: #2b2119;--muted: #6a5e55;--line: #e6dccf;--brand: #583a2a;--brand-ink: #fff;--chart: #9e5209}@media (prefers-color-scheme: dark){[data-theme=terracotta]{--bg: #171210;--card: #211a16;--ink: #f3ece6;--muted: #b0a299;--line: #3a2e28;--brand: #ffbfb8;--brand-ink: #1a0d08;--chart: #cf6963}[data-theme=rosewood]{--bg: #171113;--card: #22191c;--ink: #f3eaec;--muted: #b1a0a5;--line: #3b2c31;--brand: #f4a6c8;--brand-ink: #1c0a10;--chart: #c76894}[data-theme=walnut]{--bg: #16120e;--card: #201a15;--ink: #f1ebe4;--muted: #ada196;--line: #392f27;--brand: #edcdb9;--brand-ink: #1a1008;--chart: #c77434}}.themes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.theme-opt{all:unset;box-sizing:border-box;cursor:pointer;display:grid;gap:8px;padding:10px;border-radius:12px;background:var(--bg);color:var(--ink);border:2px solid var(--line);min-height:44px}.theme-opt[aria-pressed=true]{border-color:var(--brand);box-shadow:0 0 0 1px var(--brand)}.theme-opt:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.tp-card{display:flex;align-items:center;justify-content:space-between;gap:6px;background:var(--card);border:1px solid var(--line);border-radius:8px;padding:8px}.tp-lines{display:grid;gap:4px;flex:1}.tp-lines i{display:block;height:6px;border-radius:3px;background:var(--ink);opacity:.75;width:80%}.tp-lines i+i{background:var(--ok);opacity:1;width:55%}.tp-done{font-size:.72rem;font-weight:700;background:var(--brand);color:var(--brand-ink);border-radius:6px;padding:4px 8px}.tp-name{font-weight:650;display:flex;align-items:center;justify-content:space-between;gap:6px}.tp-name .tick{color:var(--brand);font-weight:800}.tp-note{font-size:.78rem;color:var(--muted);line-height:1.3}svg.i{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}svg.i.sm{width:16px;height:16px}svg.i.lg{width:28px;height:28px}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.screen-h{font-size:1.55rem;line-height:1.2;letter-spacing:-.02em;margin:4px 0 6px}.screen-h:focus{outline:none}.lede{color:var(--muted);margin:0 0 16px}.hint{font-size:.85rem;color:var(--muted);margin:6px 0 0}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:6;display:grid;grid-template-columns:repeat(3,1fr);background:var(--card);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}.tabbar button{all:unset;box-sizing:border-box;cursor:pointer;display:grid;justify-items:center;align-content:center;gap:2px;min-height:56px;padding:6px 4px;color:var(--muted);font-size:.78rem;font-weight:500}.tabbar button[aria-current=page]{color:var(--brand);font-weight:700}.tabbar button[aria-current=page] svg{stroke-width:2.5}.tabbar button:focus-visible{outline:3px solid var(--focus);outline-offset:-4px;border-radius:8px}.btn{font:inherit;border-radius:12px;padding:10px 18px;border:1px solid transparent;cursor:pointer;min-height:48px;font-weight:650;display:inline-flex;align-items:center;justify-content:center;gap:8px;text-align:center}.btn.primary{background:var(--brand);color:var(--brand-ink)}.btn.secondary{background:transparent;border-color:var(--edge);color:var(--ink);font-weight:500}.btn.sm{min-height:44px;padding:8px 14px;font-size:.95rem}.btn.block{width:100%}.btn[disabled]{background:var(--line);color:var(--muted);border-color:transparent;cursor:not-allowed;opacity:1}.iconbtn2{width:44px;height:44px;display:inline-grid;place-items:center;border:1px solid var(--edge);background:transparent;border-radius:50%;cursor:pointer;color:var(--ink)}.iconbtn2:hover{background:color-mix(in srgb,var(--ink) 8%,transparent)}.t-head{display:flex;align-items:center;gap:6px}.t-head .grow{flex:1;min-width:0}.t-head .sync{min-height:40px}.strip{display:flex;align-items:center;gap:8px;border-radius:12px;padding:9px 12px;font-size:.9rem;background:var(--card);border:1px solid var(--line);margin-bottom:12px}.strip svg{color:var(--muted)}.strip .btn{margin-left:auto}.banner{background:color-mix(in srgb,var(--brand) 10%,var(--card));border:1px solid color-mix(in srgb,var(--brand) 35%,var(--line));border-radius:var(--radius);padding:14px;display:grid;gap:10px;margin-bottom:14px}.banner p{margin:0}.banner b{font-size:1.05rem}.btns{display:flex;gap:8px;flex-wrap:wrap}.btns .btn{flex:1 1 130px}.coach{background:var(--ink);color:var(--bg);border-radius:12px;padding:8px 8px 8px 14px;font-size:.9rem;display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-bottom:12px}.coach span{flex:1 1 200px}.coach button{all:unset;cursor:pointer;text-decoration:underline;font-weight:700;padding:10px 8px;min-height:24px}.coach button:focus-visible{outline:3px solid var(--focus)}.sec{display:flex;align-items:baseline;justify-content:space-between;margin:18px 2px 8px;font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:700}.sec.first{margin-top:4px}.screen-h+.sec.first{margin-top:14px}.t-head .sync{line-height:1.2;white-space:nowrap}h3.sec{margin-bottom:8px}.badge{display:inline-flex;align-items:center;gap:4px;font-size:.8rem;font-weight:650;border-radius:999px;padding:2px 10px 2px 8px;--c: var(--ok);color:var(--c);background:color-mix(in srgb,var(--c) var(--tint),var(--card))}.badge[data-s=soon]{--c: var(--soon)}.badge[data-s=today]{--c: var(--today)}.badge[data-s=overdue]{--c: var(--overdue)}.badge[data-s=rest]{--c: var(--muted)}.t-card .row{align-items:center;flex-wrap:wrap;gap:8px}.t-card .main{flex:1 1 150px;min-width:0;display:grid;gap:4px}.t-card .t{font-weight:650;font-size:1.05rem;line-height:1.25;text-align:left}.t-card .sub{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.t-card .sub .chip{margin-left:0}.t-card .acts{display:flex;align-items:center;gap:2px;margin-left:auto}.t-card .done{min-height:48px;min-width:84px}.t-card .menu{display:flex;gap:8px;flex-wrap:wrap;padding-top:8px;border-top:1px solid var(--line)}.t-card .note{margin:0;font-size:.85rem;color:var(--muted)}.disc{margin-top:12px}.disc summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:8px;min-height:48px;padding:6px 14px;border:1px dashed var(--edge);border-radius:12px}.disc summary::-webkit-details-marker{display:none}.disc[open] summary svg{transform:rotate(180deg)}.disc summary:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.disc .count-note{color:var(--muted);font-weight:400}.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;margin-top:8px}.item{display:flex;align-items:center;gap:12px;padding:10px 14px;min-height:56px;border-top:1px solid var(--line);width:100%;text-align:left;color:inherit;background:transparent;border-left:0;border-right:0;border-bottom:0;font:inherit}.item:first-child{border-top:0}button.item{cursor:pointer}button.item:hover{background:color-mix(in srgb,var(--ink) 5%,transparent)}button.item:focus-visible{outline-offset:-3px}.item .g{flex:1;min-width:0;display:grid}.item small{color:var(--muted);font-size:.85rem}.item .lead{color:var(--brand)}.item .chev{color:var(--muted)}.rowlink{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;background:transparent;border:1px dashed var(--edge);color:var(--ink);border-radius:12px;padding:12px 14px;min-height:48px;cursor:pointer;text-align:left;font:inherit;margin-top:10px}.rowlink small{color:var(--muted);display:block}.clear{text-align:center;display:grid;gap:8px;justify-items:center;padding:24px 8px 8px}.clear .art{width:96px;height:96px;border-radius:50%;display:grid;place-items:center;background:color-mix(in srgb,var(--brand) 12%,var(--card));color:var(--brand)}.clear .art svg{width:44px;height:44px}.clear h2{margin:8px 0 0;font-size:1.5rem;letter-spacing:-.02em}.clear p{margin:0;color:var(--muted);max-width:30ch}.clear .btns{margin-top:12px;justify-content:center}.a-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.search{position:relative;margin:12px 0 4px}.search svg{position:absolute;left:12px;top:13px;color:var(--muted);pointer-events:none}.search input{padding-left:40px;min-height:48px}.setup{position:fixed;inset:0;z-index:20;background:var(--bg);display:flex;flex-direction:column}.setup .topbar{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:calc(env(safe-area-inset-top) + 8px) 8px 0;min-height:52px}.setup .topbar .title2{font-weight:650}.setup .steps{display:flex;gap:6px;flex:1;min-width:0;justify-content:center}.setup .steps i{flex:1 1 6px;max-width:28px;min-width:6px;height:6px;border-radius:9px;background:var(--line)}.setup .steps i.on{background:var(--brand)}.setup .scroll{flex:1;overflow-y:auto;padding:14px 16px 24px;width:100%;max-width:640px;margin:0 auto}.setup .foot{padding:12px 16px calc(12px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--bg);display:grid;gap:4px;justify-items:center}.setup .foot .btn{width:100%;max-width:608px}.stepcount{font-size:.8rem;color:var(--muted);margin:4px 0 0}.setup button.link{justify-self:center}.f{display:grid;gap:6px;font-size:.9rem;color:var(--muted)}.tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.tile{position:relative;display:grid;gap:4px;align-content:start;padding:12px;min-height:80px;border:1.5px solid var(--edge);background:var(--card);border-radius:var(--radius);cursor:pointer;color:var(--ink);font-size:1rem}.tile input{position:absolute;opacity:0;inset:0;width:100%;height:100%;margin:0;cursor:pointer}.tile svg.ic{color:var(--muted)}.tile b{font-weight:650}.tile small{color:var(--muted);font-size:.8rem}.tile:has(input:checked),.opt:has(input:checked){border-color:var(--brand);background:color-mix(in srgb,var(--brand) 10%,var(--card));box-shadow:inset 0 0 0 1px var(--brand)}.tile:has(input:checked) svg.ic{color:var(--brand)}.tile:has(input:focus-visible),.opt:has(input:focus-visible){outline:3px solid var(--focus);outline-offset:2px}.tile .tick{position:absolute;top:10px;right:10px;left:auto;transform:none;text-align:center;width:22px;height:22px;border-radius:50%;border:1.5px solid var(--edge);display:grid;place-items:center;color:transparent}.tile:has(input:checked) .tick{background:var(--brand);border-color:var(--brand);color:var(--brand-ink)}.tile .tick svg{width:14px;height:14px;stroke-width:3}.tile.wide{grid-column:1 / -1}.stepper{display:inline-flex;flex-wrap:wrap;align-items:center;gap:4px;position:relative;z-index:2}.stepper button{width:44px;height:44px;border-radius:50%;border:1px solid var(--edge);background:var(--card);color:var(--ink);font-size:1.3rem;cursor:pointer;line-height:1}.stepper output{min-width:28px;text-align:center;font-weight:700}.opt{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:start;padding:14px;border:1.5px solid var(--edge);background:var(--card);border-radius:var(--radius);cursor:pointer;position:relative;color:var(--ink);font-size:1rem}.opt+.opt{margin-top:10px}.opt input{position:absolute;opacity:0;inset:0;width:100%;height:100%;margin:0;cursor:pointer}.opt .dot{width:22px;height:22px;border-radius:50%;border:1.5px solid var(--edge);margin-top:1px;display:grid;place-items:center}.opt:has(input:checked) .dot{border-color:var(--brand)}.opt:has(input:checked) .dot:after{content:"";width:12px;height:12px;border-radius:50%;background:var(--brand)}.opt b{display:block}.opt .s{color:var(--muted);font-size:.88rem;font-weight:400}.setup .seg{border-color:var(--edge);background:var(--card)}.setup .seg button{color:var(--ink);min-height:44px}.setup .seg button[aria-pressed=true]{background:var(--brand);color:var(--brand-ink);font-weight:700;box-shadow:none}.note2{display:flex;gap:10px;align-items:flex-start;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 12px;font-size:.9rem;margin-top:14px}.note2 svg{color:var(--brand);margin-top:1px}.note2 p{margin:0}.panel2{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;margin-top:8px}.two{display:grid;grid-template-columns:1fr 1fr;gap:10px}.rv-group{margin-top:18px}.rv-group>h3{display:flex;align-items:center;gap:8px;margin:0 0 8px;font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.rv-group>h3 .ct{margin-left:auto;text-transform:none;letter-spacing:0;font-weight:500}.rv-box{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.rrow{display:grid;grid-template-columns:44px 1fr;border-top:1px solid var(--line)}.rrow:first-child{border-top:0}.rrow .cb{position:relative;display:grid;place-items:start center;padding-top:14px}.rrow .cb input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}.rrow .cb span{width:24px;height:24px;border-radius:7px;border:2px solid var(--edge);display:grid;place-items:center;color:transparent;background:var(--card)}.rrow .cb input:checked+span{background:var(--brand);border-color:var(--brand);color:var(--brand-ink)}.rrow .cb input:focus-visible+span{outline:3px solid var(--focus);outline-offset:2px}.rrow .cb svg{width:16px;height:16px;stroke-width:3.2}.rrow .body{padding:11px 12px 11px 0;display:grid;gap:2px}.rrow .nm{font-weight:650}.rrow .mt,.rrow .why{color:var(--muted);font-size:.85rem}.rrow .chiprow{margin-top:6px;display:flex;align-items:center;gap:8px}.rrow .chiprow small{color:var(--muted);font-size:.78rem}button.chip2{display:inline-flex;align-items:center;gap:4px;font:inherit;font-size:.85rem;min-height:44px;padding:4px 12px;border-radius:999px;border:1px solid var(--edge);background:var(--card);color:var(--ink);cursor:pointer}.rv-more>summary b{display:block}.rv-more .hint{margin:0}.chipbtn{min-height:44px}.card[data-status=dormant] .title{color:var(--muted)}.badge[data-s=overdue]{font-weight:700}.badge[data-s=today]{font-weight:600}.t-head-wrap{display:block}.t-head-wrap .summary{margin-top:4px}.readings{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:2px}.readings li{display:flex;align-items:center;gap:12px;min-height:44px}.readings li span{flex:1}.readings button.link{min-height:44px;min-width:44px}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.invite-row{display:grid;gap:8px;padding:10px 0;border-top:1px solid var(--line)}.invite-name{margin:0;font-weight:650;overflow-wrap:anywhere}.invite-text .meta{margin:2px 0 0}.invite-btns{display:flex;flex-wrap:wrap;gap:8px}.set-card button.primary:disabled{opacity:.5;cursor:not-allowed}.linkbox{display:flex;align-items:center;gap:8px;min-height:48px;border:1.5px solid var(--edge);border-radius:10px;padding:2px 2px 2px 12px}.linkbox-text{flex:1;min-width:0;color:var(--ink);font:600 .9rem ui-monospace,SF Mono,Menlo,Consolas,monospace;user-select:all;overflow:hidden;white-space:nowrap}dialog .linkbox button.copy{width:auto;min-width:44px;min-height:44px;padding:8px 12px}.join{min-height:100dvh;display:grid;align-items:center;justify-items:center;padding:24px 16px calc(24px + env(safe-area-inset-bottom))}.join-card{width:100%;max-width:420px;display:grid;gap:14px;text-align:center;justify-items:center}.join-icon{width:96px;height:96px;border-radius:50%;display:grid;place-items:center;background:color-mix(in srgb,var(--brand) 16%,var(--bg));color:var(--brand)}.join-icon .i{width:44px;height:44px}.join-icon.ok{background:color-mix(in srgb,var(--ok) 18%,var(--bg));color:var(--ok)}.join h1{font-size:1.5rem;line-height:1.25;margin:4px 0 0}.join h1:focus{outline:none}.join-sub{margin:-6px 0 0;color:var(--muted);font-weight:600}.join-body{margin:0;max-width:30ch;color:var(--ink)}.join-field{width:100%;display:grid;gap:6px;text-align:left}.join-field label{color:var(--ink);font-weight:650;font-size:.95rem}.join-field input{min-height:48px}.join-field .meta,.join-fine{margin:0}.join-err{margin:0;color:var(--overdue);font-size:.9rem;min-height:0}.join-err:empty{display:none}.join-go{width:100%;min-height:48px}.join button.primary,.join button.secondary{width:100%}.join-actions{display:grid;gap:10px;width:100%}.join-install{width:100%;text-align:left;display:grid;gap:8px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px}.join-install h2{margin:0;font-size:1.05rem}.join-install ol{margin:0;padding-left:20px}.join-install .meta{margin:0}.join-code-slot:empty{display:none}dialog>form{min-width:0;grid-template-columns:minmax(0,1fr)}.linkbox{min-width:0}.linkbox-text{font-size:.85rem}.join-icon.muted{background:color-mix(in srgb,var(--muted) 16%,var(--bg));color:var(--muted)}.person-row{display:grid;gap:8px;padding:10px 0;border-top:1px solid var(--line)}.person-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.person-name{margin:0;font-weight:650;overflow-wrap:anywhere}.person-row .meta{margin:0}.person-btns{display:flex;flex-wrap:wrap;gap:8px}.person-btns .gap-top{margin-top:6px}.radio-row{display:flex;align-items:center;gap:12px;min-height:56px;padding:0 4px;border-top:1px solid var(--line);color:var(--ink);font-size:1rem}.radio-row input{width:22px;height:22px;flex:none}.match{margin:0;font-size:.85rem}.danger.solid[aria-disabled=true]{opacity:.5;cursor:not-allowed}.set-card button.danger.small,dialog button.danger.small{width:auto;padding:8px 14px;min-height:40px;font-size:.9rem}.stack-btns{display:grid;gap:16px;margin-top:8px}.kid-head{margin-bottom:4px}.kid-head h1{font-size:2rem}.kid-tiles{display:grid;gap:14px;padding:0;margin:8px 0 0;list-style:none}.kid-tile{background:var(--card);border:2px solid var(--edge);border-radius:20px;padding:16px;display:grid;gap:12px;min-height:88px}.kid-name{font-size:1.4rem;font-weight:700;line-height:1.2;overflow-wrap:anywhere}.kid-done{min-height:64px;font-size:1.3rem;font-weight:700;border-radius:16px;border:0;background:var(--brand);color:var(--brand-ink);cursor:pointer}.kid-done:disabled{opacity:.6}.kid-done:focus-visible,.kid-lock:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.kid-sub{font-size:1rem;margin:22px 2px 8px;color:var(--muted)}.kid-done-list{list-style:none;padding:0;margin:0;display:grid;gap:8px;font-size:1.15rem}.kid-foot{margin-top:36px;text-align:center}.kid-lock{all:unset;cursor:pointer;font-size:.85rem;color:var(--muted);padding:14px 16px;min-height:24px;border-radius:10px;user-select:none;touch-action:none}.kid-row{display:grid;gap:6px;padding:8px 0}.kid-row-btns{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.snap-list{display:grid;gap:8px}.snap-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.snap-row>span{min-width:0}.snap-row button{flex:none;width:auto}.setup .signin-alt{margin-top:18px;padding-top:16px;border-top:1px solid var(--line, color-mix(in srgb, var(--muted) 30%, transparent));display:grid;gap:8px}.setup .signin-alt h3{margin:0;font-size:1rem}.setup .signin-alt .hint{margin:0}.setup .signin-alt button{width:100%}.season summary{cursor:pointer;min-height:44px;display:flex;align-items:center;gap:6px;font-size:.9rem;color:var(--muted)}.season summary b{color:var(--ink);font-weight:650}.season summary:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:8px}.season .months{margin-top:6px}.season summary{list-style:none}.season summary::-webkit-details-marker{display:none}.season summary:after{content:"Change";margin-left:auto;color:var(--brand);text-decoration:underline}.season[open] summary:after{content:"Hide"}.card[data-status=overdue]{border-width:1px;border-color:var(--line);border-left:4px solid var(--overdue);padding:14px 14px 14px 12px}@media (max-width: 300px){.pair{grid-template-columns:1fr}}@media (prefers-color-scheme: dark){:root:not([data-theme=light]) .coach{background:var(--card);color:var(--ink);border:1px solid var(--edge)}}.t-card.ticked{border-left-color:var(--brand);background:color-mix(in srgb,var(--brand) 9%,var(--card))}.t-card.ticked .done{background:transparent;color:var(--brand);border-color:transparent}.t-card.ticked .done:before{content:"✓ "}@media (prefers-reduced-motion: no-preference){.t-card.ticked{transition:opacity .4s ease,background-color .2s ease;opacity:.55}.clear .art.pop{animation:bloom .5s ease-out 1}}@keyframes bloom{0%{transform:scale(.7);opacity:.4}}.summary .linkish{font:inherit;color:inherit;background:none;border:0;padding:12px 2px;margin:-12px 0;text-decoration:underline;text-underline-offset:3px;cursor:pointer;min-height:44px}.week-who{display:flex;flex-wrap:wrap;gap:6px 16px;font-weight:600;margin:8px 0}.week-who>span{display:inline-flex;align-items:center;gap:6px}.week-list{list-style:none;margin:0;padding:0;max-height:50vh;overflow-y:auto}.nowrap{white-space:nowrap}.week-list li{display:flex;flex-wrap:wrap;justify-content:space-between;gap:4px 12px;padding:10px 0;border-top:1px solid var(--line)}.week-list li>span{min-width:0;overflow-wrap:anywhere}.week-list small{color:var(--muted)}.soft-card{background:color-mix(in srgb,var(--brand) 9%,var(--card));border:1px solid color-mix(in srgb,var(--brand) 40%,var(--line));border-radius:var(--radius);padding:14px;display:grid;gap:8px;margin:14px 0}.soft-card b{font-size:1.05rem}.soft-card p{margin:0;color:var(--muted)}.soft-card .eb{font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;font-weight:700;color:var(--brand)}.soft-card .soft-actions{display:flex;flex-wrap:wrap;gap:8px}.soft-card .soft-actions .btn{min-height:44px}.soft-card .chips,.soft-card .answers{display:flex;flex-wrap:wrap;gap:8px}.soft-card .answer{font:inherit;font-size:.92rem;font-weight:600;min-height:44px;padding:8px 14px;border-radius:999px;border:1.5px solid var(--edge);background:var(--card);color:var(--ink);cursor:pointer}.soft-card .answer:hover{background:color-mix(in srgb,var(--ink) 6%,var(--card))}
