:root{--app-bg:#f4f4f8;--bar:color-mix(in srgb, var(--card) 86%, transparent);--tab-h:62px;--bar-h:52px}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--app-bg:#0d0d12}}body.appmode{background:var(--app-bg);overscroll-behavior-y:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}body.appmode input,body.appmode textarea,body.appmode .selectable{-webkit-user-select:text;user-select:text}body.sheet-open{overflow:hidden}.appbar{z-index:30;padding-top:env(safe-area-inset-top);background:var(--bar);-webkit-backdrop-filter:saturate(1.6)blur(14px);border-bottom:1px solid var(--line);position:fixed;inset:0 0 auto}.appbar-in{max-width:560px;height:var(--bar-h);align-items:center;gap:8px;margin:0 auto;padding:0 12px;display:flex}.appbar-title{white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:1.05rem;font-weight:800;overflow:hidden}.appbar-back,.icon-btn{min-width:40px;height:40px;color:var(--c-text);font:700 1rem var(--font);cursor:pointer;background:0 0;border:0;border-radius:12px;place-items:center;padding:0 8px;display:inline-grid}.icon-btn:active,.appbar-back:active{background:var(--c-bg)}.sync-dot{background:var(--line);border-radius:50%;width:8px;height:8px}.sync-dot[data-state=idle]{background:var(--ok)}.sync-dot[data-state=syncing]{background:var(--c);animation:1s infinite pulse}.sync-dot[data-state=offline],.sync-dot[data-state=error],.sync-dot[data-state=signedout]{background:var(--warn)}@keyframes pulse{50%{opacity:.3}}.app-main{max-width:560px;padding:calc(var(--bar-h) + env(safe-area-inset-top) + 8px) 16px calc(var(--tab-h) + env(safe-area-inset-bottom) + 24px);min-height:100dvh;margin:0 auto}.pane{animation:.18s ease-out paneIn}@keyframes paneIn{0%{opacity:0;transform:translateY(6px)}}.pane>h2:first-child,.pane>.section-h:first-child{margin-top:8px}.tabbar{z-index:30;background:var(--bar);-webkit-backdrop-filter:saturate(1.6)blur(14px);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom);position:fixed;inset:auto 0 0}.tabbar-in{max-width:560px;height:var(--tab-h);grid-auto-columns:1fr;grid-auto-flow:column;margin:0 auto;display:grid}.tabbar a{color:var(--mute);-webkit-tap-highlight-color:transparent;align-content:center;place-items:center;gap:2px;font-size:.68rem;font-weight:700;text-decoration:none;display:grid}.tabbar a i{filter:grayscale();opacity:.7;font-size:1.45rem;font-style:normal;line-height:1;transition:transform .15s}.tabbar a[aria-current=page]{color:var(--c-hi)}.tabbar a[aria-current=page] i{filter:none;opacity:1;transform:translateY(-1px)scale(1.08)}.section-h{color:var(--mute);letter-spacing:.02em;margin:22px 4px 8px;font-size:.8rem;font-weight:800}.group{background:var(--card);border:1px solid var(--line);border-radius:16px;overflow:hidden}.group+.group{margin-top:12px}.row{width:100%;min-height:54px;color:var(--fg);font:500 1rem/1.45 var(--font);text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:12px;padding:12px 16px;text-decoration:none;display:flex}.row+.row{border-top:1px solid var(--line)}.row .ico{text-align:center;flex:none;width:30px;font-size:1.35rem}.row .main{flex:1;min-width:0}.row .main small,.row .sub{color:var(--mute);font-size:.82rem;line-height:1.4;display:block}.row .val{color:var(--mute);flex:none;font-size:.92rem}.row.link:after{content:"›";color:var(--mute);flex:none;font-size:1.4rem;line-height:1}.row:active{background:var(--c-bg)}.hero-card{color:#fff;background:linear-gradient(140deg, var(--c) 0%, var(--c-d) 100%);box-shadow:0 10px 30px color-mix(in srgb, var(--c) 30%, transparent);border-radius:24px;padding:22px 20px;position:relative;overflow:hidden}.hero-card .label{opacity:.85;font-size:.85rem;font-weight:700}.hero-card .big{letter-spacing:-.01em;margin:4px 0;font-size:3rem;font-weight:900;line-height:1.1}.hero-card .big small{margin-left:4px;font-size:1rem;font-weight:800}.hero-card .foot{opacity:.9;font-size:.85rem}.hero-card .btn{color:var(--c-d);box-shadow:none;background:#fff}.tile{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:16px}.tile+.tile{margin-top:12px}.tiles{grid-template-columns:1fr 1fr;gap:10px;display:grid}.tiles .tile{margin:0}.tile .k{color:var(--mute);font-size:.78rem;font-weight:800}.tile .v{color:var(--c-hi);font-size:1.6rem;font-weight:900;line-height:1.2}.fab{z-index:25;right:max(16px,50vw - 264px);bottom:calc(var(--tab-h) + env(safe-area-inset-bottom) + 16px);background:var(--c);width:58px;height:58px;color:var(--c-ink);font:400 2rem/1 var(--font);box-shadow:0 8px 24px color-mix(in srgb, var(--c) 45%, transparent);cursor:pointer;border:0;border-radius:50%;position:fixed}.fab:active{transform:scale(.94)}.sheet-back{z-index:60;opacity:0;background:#00000061;transition:opacity .2s;position:fixed;inset:0}.sheet-back.on{opacity:1}.sheet{z-index:61;background:var(--card);max-width:560px;max-height:88dvh;padding:6px 18px calc(18px + env(safe-area-inset-bottom));border-radius:22px 22px 0 0;margin:0 auto;transition:transform .22s cubic-bezier(.2,.8,.2,1);position:fixed;bottom:0;left:0;right:0;overflow:auto;transform:translateY(100%)}.sheet.on{transform:none}.sheet-grip{background:var(--line);touch-action:none;border-radius:9px;width:40px;height:5px;margin:6px auto 10px}.sheet-head{justify-content:space-between;align-items:center;margin-bottom:8px;font-size:1.05rem;display:flex}.sheet-x{background:var(--c-bg);color:var(--mute);cursor:pointer;border:0;border-radius:50%;width:32px;height:32px;font-size:.9rem}.sheet-msg{margin:8px 0 16px;font-size:1.02rem}.sheet-actions{gap:10px;margin-top:16px;display:grid}.sheet-note{color:var(--mute);font-size:.85rem}.steps{padding-left:1.3em;line-height:2}.btn.danger{background:var(--ng);box-shadow:none}input.switch{-webkit-appearance:none;appearance:none;background:var(--line);cursor:pointer;border-radius:99px;flex:none;width:50px;height:30px;transition:background .15s;position:relative}input.switch:after{content:"";background:#fff;border-radius:50%;width:24px;height:24px;transition:transform .15s;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #00000040}input.switch:checked{background:var(--c)}input.switch:checked:after{transform:translate(20px)}.seg{background:var(--line);border-radius:12px;gap:3px;padding:3px;display:flex}.seg button{font:700 .88rem var(--font);color:var(--mute);cursor:pointer;background:0 0;border:0;border-radius:9px;flex:1;padding:8px 6px}.seg button[aria-pressed=true]{background:var(--card);color:var(--fg);box-shadow:0 1px 3px #0000001f}.empty{text-align:center;color:var(--mute);padding:36px 16px}.empty .e{margin-bottom:8px;font-size:3rem;display:block}.check{background:var(--card);border:1px solid var(--line);border-radius:16px;align-items:center;gap:12px;padding:12px 14px;display:flex}.check+.check{margin-top:8px}.check .t{flex:1;min-width:0;font-weight:700}.check .t small{color:var(--mute);font-size:.8rem;font-weight:500;display:block}.check-btn{border:2.5px solid var(--line);cursor:pointer;color:#0000;background:0 0;border-radius:50%;flex:none;place-items:center;width:44px;height:44px;font-size:1.2rem;transition:all .15s;display:grid}.check-btn[aria-pressed=true]{background:var(--c);border-color:var(--c);color:#fff;transform:scale(1.04)}.streak{color:#f2701d;align-items:center;gap:4px;font-weight:900;display:inline-flex}.ring{display:block}.ring .bg{stroke:var(--line)}.ring .fg{stroke:var(--c);stroke-linecap:round;transition:stroke-dashoffset .5s}.heat{grid-template-columns:repeat(7,1fr);gap:4px;display:grid}.heat i{aspect-ratio:1;background:var(--line);color:var(--mute);border-radius:6px;place-items:center;font-size:.62rem;font-style:normal;display:grid}.heat i[data-l="1"]{background:color-mix(in srgb, var(--c) 30%, var(--card))}.heat i[data-l="2"]{background:color-mix(in srgb, var(--c) 55%, var(--card));color:#fff}.heat i[data-l="3"]{background:color-mix(in srgb, var(--c) 80%, var(--card));color:#fff}.heat i[data-l="4"]{background:var(--c);color:#fff}.heat i.today{outline:2px solid var(--c-hi);outline-offset:1px}.bubbles{gap:10px;display:grid}.bubble{border-radius:18px;max-width:85%;padding:10px 14px;line-height:1.55}.bubble small{opacity:.75;margin-bottom:2px;font-size:.72rem;font-weight:800;display:block}.bubble.me{background:var(--c);color:var(--c-ink);border-bottom-right-radius:6px;justify-self:end}.bubble.them{background:var(--card);border:1px solid var(--line);border-bottom-left-radius:6px;justify-self:start}.bubble.locked{color:#0000;text-shadow:0 0 9px var(--mute);user-select:none}.avatar{background:var(--c-bg);width:40px;height:40px;color:var(--c-text);border:2px solid var(--card);border-radius:50%;flex:none;place-items:center;font-weight:900;display:inline-grid}.avatars{display:inline-flex}.avatars .avatar+.avatar{margin-left:-10px}.keypad{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.keypad button{background:var(--card);height:56px;color:var(--fg);font:700 1.4rem var(--font);box-shadow:0 1px 0 var(--line);cursor:pointer;border:0;border-radius:14px}.keypad button:active{background:var(--c-bg)}.install-banner{background:var(--c-bg);border:1px solid color-mix(in srgb, var(--c) 25%, transparent);border-radius:16px;align-items:center;gap:12px;margin-bottom:12px;padding:12px 14px;display:flex}.install-banner .t{flex:1;font-size:.88rem;line-height:1.5}.install-banner .t b{font-size:.95rem;display:block}.install-banner .x{color:var(--mute);cursor:pointer;background:0 0;border:0;font-size:1rem}body.appmode .toast{bottom:calc(var(--tab-h) + env(safe-area-inset-bottom) + 16px)}body[data-pane=welcome] .tabbar,body[data-pane=welcome] .appbar,body[data-pane=welcome] .fab{display:none}body[data-pane=welcome] .app-main{padding-top:calc(env(safe-area-inset-top) + 24px)}.welcome{text-align:center;align-content:center;gap:14px;min-height:80dvh;display:grid}.welcome .big{font-size:72px;line-height:1}.welcome h1{margin:.2em 0}.welcome p{color:var(--mute)}.code-big{letter-spacing:.18em;text-align:center;background:var(--c-bg);color:var(--c-text);-webkit-user-select:all;user-select:all;border-radius:16px;padding:14px;font:900 2.4rem/1.2 ui-monospace,SFMono-Regular,Consolas,monospace}:root{--s1:#2a78d6;--s2:#eb6834;--s3:#1baf7a;--s4:#eda100;--s5:#e87ba4;--s6:#008300;--s7:#6250d6;--s8:#e34948;--s0:#a3a29c}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--s1:#3987e5;--s2:#d95926;--s3:#199e70;--s4:#c98500;--s5:#d55181;--s6:#008300;--s7:#9085e9;--s8:#e66767;--s0:#6f6e69}}:root[data-theme=dark]{--s1:#3987e5;--s2:#d95926;--s3:#199e70;--s4:#c98500;--s5:#d55181;--s6:#008300;--s7:#9085e9;--s8:#e66767;--s0:#6f6e69}.appmode .linkbtn{color:var(--c-text)}.num{font-variant-numeric:tabular-nums}.tabbar a[data-tab=add] i{background:var(--c);color:#fff;filter:none;opacity:1;width:46px;height:46px;box-shadow:0 6px 16px color-mix(in srgb, var(--c) 40%, transparent);border-radius:50%;place-items:center;margin-top:-10px;font-size:1.7rem;font-weight:700;display:grid}.tabbar a[data-tab=add][aria-current=page] i{background:var(--c-d);transform:none}.welcome{align-content:start;padding-top:4dvh}.wdots{justify-content:center;gap:6px;display:flex}.wdots i{background:var(--line);border-radius:9px;width:8px;height:8px;transition:all .2s}.wdots i.on{background:var(--c);width:22px}.wstep{gap:12px;display:grid}.wstep h2{margin:.2em 0 0;font-size:1.45rem}.wstep p{margin:0}.wq-k{font-size:.8rem;font-weight:800;color:var(--c-text)!important}.wq-s{font-size:.95rem;font-weight:700;color:var(--fg)!important}.wnote{font-size:.82rem}.wjoin{background:var(--c-bg);border-radius:12px;padding:8px 12px;font-size:.9rem;font-weight:700;color:var(--c-text)!important}.wchips{justify-content:center}.wchips .chip{justify-content:center;min-width:82px}.wcustom{align-items:center;gap:8px;display:flex}.wcustom input{text-align:right;flex:1;min-width:0}.unit{color:var(--mute);white-space:nowrap;font-size:.9rem;font-weight:700}.wannual{background:var(--card);border:1px solid var(--line);border-radius:16px;gap:10px;padding:12px;display:grid}.wfixed{text-align:left}.wfixed .row{cursor:default;min-height:52px;padding:8px 14px}.wfixed input,.fx-in{text-align:right;flex:none;width:7.5em;min-height:40px;padding:6px 10px}.welcome .linkbtn{justify-self:center}.notice{background:var(--card);border:1px solid var(--line);border-radius:14px;align-items:center;gap:10px;margin-bottom:10px;padding:10px 12px;font-size:.9rem;line-height:1.5;display:flex}.notice .t{flex:1;min-width:0}.notice .x{color:var(--mute);cursor:pointer;background:0 0;border:0;font-size:1rem}.coach{background:var(--c-bg);border:1.5px dashed color-mix(in srgb, var(--c) 45%, transparent);border-radius:16px;margin-bottom:12px;padding:12px 14px;font-size:.92rem;line-height:1.6}.coach b{color:var(--c-text)}.coach .btn{margin-top:8px}.scope-seg{margin-bottom:10px}.hero-card .big{font-variant-numeric:tabular-nums}.hero-card .big.neg{opacity:.95}.hero-card .hbar{background:#ffffff40;border-radius:9px;height:8px;margin:12px 0 8px;overflow:hidden}.hero-card .hbar i{background:#ffe08a;border-radius:9px;height:100%;transition:width .4s;display:block}.hero-card .hrow{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;font-size:.85rem;display:flex}.hero-card .hrow .btn{min-height:40px;padding:8px 16px}.hero-card.pop{animation:.5s ease-out heroPop}@keyframes heroPop{30%{transform:scale(1.025)}}#h-tiles,#f-tiles{margin-top:12px}.tile .s{color:var(--mute);margin-top:2px;font-size:.8rem;line-height:1.45}.tile .btn{margin-top:8px}#h-tiles .tile .btn.sm{white-space:nowrap;width:100%;min-height:36px;padding:6px 8px;font-size:.78rem}.tiles3{grid-template-columns:1fr 1fr 1fr}.tiles3 .tile{padding:12px 10px}.tiles3 .tile .v{font-size:1.15rem}.tile .v.ok{color:var(--ok)}.tile .v.ng{color:var(--ng)}.tx .amt-r{font-variant-numeric:tabular-nums;flex:none;font-weight:800}.tx .who{background:var(--c-bg);width:22px;height:22px;color:var(--c-text);vertical-align:1px;border-radius:50%;place-items:center;margin-right:4px;font-size:.7rem;font-weight:900;display:inline-grid}.tx .main small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.insight{border-left:5px solid var(--c)}.insight p{margin:4px 0 0;line-height:1.6}.insight .s a{color:var(--c-text)}.day-h{color:var(--mute);justify-content:space-between;margin:14px 4px 6px;font-size:.78rem;font-weight:800;display:flex}.amt-card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:10px 16px 8px}.amt-top{justify-content:space-between;align-items:center;font-size:.92rem;font-weight:800;display:flex}.amt-top .linkbtn{padding:0;font-size:.8rem}.amt{text-align:right;font-variant-numeric:tabular-nums;color:var(--fg);text-overflow:ellipsis;font-size:2.6rem;font-weight:900;line-height:1.2;overflow:hidden}.amt.zero{color:var(--mute)}.cat-grid{grid-template-columns:repeat(5,1fr);gap:6px;margin:10px 0;display:grid}.cat-grid button{border:1.5px solid var(--line);background:var(--card);min-height:54px;color:var(--fg);font:700 .7rem/1.3 var(--font);cursor:pointer;-webkit-tap-highlight-color:transparent;border-radius:12px;justify-items:center;gap:0;padding:6px 2px;display:grid}.cat-grid button i{font-size:1.3rem;font-style:normal;line-height:1.2}.cat-grid button[aria-pressed=true]{border-color:var(--c);background:var(--c-bg);color:var(--c-text)}.add-meta{align-items:center;gap:8px;margin-bottom:8px;display:flex}.add-meta .chip{flex:none;min-height:44px}.add-meta input{flex:1;min-width:0;min-height:44px}.add-pair{gap:8px;margin-bottom:8px;display:grid}.add-pair .sw{justify-content:space-between;align-items:center;gap:10px;font-size:.88rem;font-weight:700;display:flex}.add-pair .sw small{color:var(--mute);font-size:.76rem;font-weight:500;display:block}.keypad button{height:50px}.a-save{margin-top:10px}.month-nav{justify-content:space-between;align-items:center;margin:4px 0 10px;display:flex}.month-nav b{font-size:1.1rem}.month-nav .icon-btn{background:var(--card);border:1px solid var(--line);font-size:1.5rem}.month-nav .icon-btn:disabled{opacity:.3}.donut-box{place-items:center;margin:2px 0 10px;display:grid}.donut{width:180px;height:180px;display:block}.donut .slice{cursor:pointer;transition:opacity .15s}.donut.focus .slice:not(.on){opacity:.25}.donut .d-k{fill:var(--mute);font-size:12px;font-weight:700}.donut .d-v{fill:var(--fg);font-size:19px;font-weight:900}.legend-list{gap:0;display:grid}.legend-list button{border:0;border-top:1px solid var(--line);color:var(--fg);font:500 .92rem var(--font);text-align:left;cursor:pointer;background:0 0;border-radius:0;grid-template-columns:12px 1fr auto;align-items:center;gap:10px;padding:8px 6px;display:grid}.legend-list button.on{background:var(--c-bg);border-radius:8px}.legend-list .sw{border-radius:3px;width:12px;height:12px}.legend-list .ln{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.legend-list .lv{font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:700}.legend-list .lv small{text-align:right;min-width:3.2em;color:var(--mute);margin-left:6px;font-weight:500;display:inline-block}.chart-cap{color:var(--mute);min-height:1.5em;margin:0 0 4px;font-size:.85rem}.chart-cap b{color:var(--fg)}.bars{touch-action:pan-y;width:100%;height:auto;display:block}.bars .ax{fill:var(--mute);font-size:9px}.bars .hit{cursor:pointer}.chart-key{color:var(--mute);flex-wrap:wrap;gap:14px;margin-top:4px;font-size:.75rem;display:flex}.chart-key span:before{content:"";background:var(--c);vertical-align:0;border-radius:2px;width:12px;height:8px;margin-right:4px;display:inline-block}.chart-key span.dash:before{border-top:2px dashed var(--fg);opacity:.6;vertical-align:3px;background:0 0;border-radius:0;height:0}.cmp .up{color:var(--ng);font-weight:800}.cmp .down{color:var(--ok);font-weight:800}.goal-card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:14px}.goal-card+.goal-card{margin-top:10px}.goal-card .gh{color:var(--fg);align-items:center;gap:10px;text-decoration:none;display:flex}.goal-card .ge{font-size:1.8rem;line-height:1}.goal-card .gt{flex:1;min-width:0}.goal-card .gt b{display:block}.goal-card .gt small{color:var(--mute);font-size:.8rem}.goal-card .gv{text-align:right;font-variant-numeric:tabular-nums;font-weight:900}.goal-card .gv small{color:var(--mute);font-size:.75rem;font-weight:600;display:block}.goal-card .ga{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-top:10px;display:flex}.goal-card .ga .streak{font-size:.9rem}.pbar{background:var(--line);border-radius:9px;height:10px;margin-top:10px;overflow:hidden}.pbar i{background:var(--c);border-radius:9px;height:100%;transition:width .4s;display:block}.num-grid{grid-template-columns:repeat(7,1fr);gap:5px;max-height:46dvh;padding:2px;display:grid;overflow:auto}.num-grid button{border:1.5px solid var(--line);background:var(--card);height:38px;color:var(--fg);font:700 .82rem var(--font);cursor:pointer;font-variant-numeric:tabular-nums;border-radius:9px}.num-grid button:disabled{background:var(--c);border-color:var(--c);color:#fff;opacity:.9;cursor:default}.type-list .row .main b{display:block}.amt-in{text-align:right;font-weight:900;font-size:1.6rem!important}.emoji-pick{flex-wrap:wrap;gap:6px;display:flex}.emoji-pick button{border:1.5px solid var(--line);background:var(--card);cursor:pointer;border-radius:12px;width:42px;height:42px;font-size:1.3rem}.emoji-pick button[aria-pressed=true]{border-color:var(--c);background:var(--c-bg)}.row .val{text-overflow:ellipsis;white-space:nowrap;max-width:45%;overflow:hidden}.kind-pick{gap:10px;display:grid}.kind-pick .btn{text-align:left;justify-content:flex-start}.kind-pick .btn small{opacity:.85;font-size:.8rem;font-weight:500;display:block}.tool .panel{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:4px 14px 12px}.tool .out{text-align:center;margin:16px 0 8px}.tool .out .k{color:var(--mute);font-size:.88rem;font-weight:700}.tool .out .v{color:var(--c-hi);font-variant-numeric:tabular-nums;font-size:2.2rem;font-weight:900;line-height:1.2}.tool .out .s{color:var(--mute);font-size:.85rem}.tool .chart{width:100%;height:auto;color:var(--fg);display:block}.tool .src{color:var(--mute);font-size:.78rem}.inline2{grid-template-columns:1fr 1fr;gap:10px;display:grid}.inline2 .field{margin:8px 0}.ratio-row{align-items:center;gap:10px;display:flex}.ratio-row input{text-align:right;width:5em}.offers{margin-top:26px}.sheet .field{margin:10px 0}.sheet .chips{gap:6px}.sheet .card-img{width:min(100%,260px)}.date-row{flex-wrap:wrap;gap:8px;display:flex}
