
/* ---------- real app shell (overrides the mockup page styles) ---------- */
html,body{min-height:100%}
body{padding:0!important}
.shell{max-width:1120px;margin:0 auto;min-height:100dvh;display:flex}
.app{flex:1;min-width:0;min-height:100dvh;border-radius:0;border:0;padding-bottom:110px;-webkit-backdrop-filter:none!important;backdrop-filter:none!important;background:color-mix(in srgb,var(--bg-card) 45%,transparent);box-shadow:none}
@media (min-width:900px){
  .shell{padding:24px}
  .app{min-height:calc(100dvh - 48px);border-radius:26px;border:1px solid color-mix(in srgb,var(--accent-1) 16%,var(--line));box-shadow:inset 0 1px 0 rgba(234,231,246,.07),0 30px 80px -40px color-mix(in srgb,var(--accent-1) 40%,transparent);overflow:hidden}
}
.a-head{position:sticky;top:0;z-index:4;padding-top:calc(14px + env(safe-area-inset-top,0px));padding-left:max(12px,env(safe-area-inset-left,0px));padding-right:max(14px,env(safe-area-inset-right,0px));background:color-mix(in srgb,var(--bg) 78%,transparent);-webkit-backdrop-filter:blur(16px) saturate(140%);backdrop-filter:blur(16px) saturate(140%)}
.fab{position:fixed;right:max(20px,calc(env(safe-area-inset-right,0px) + 16px));bottom:calc(20px + env(safe-area-inset-bottom,0px));z-index:5}
@media (min-width:900px){.fab{right:max(40px,calc((100vw - 1120px)/2 + 40px));bottom:44px}}
.drawer-wrap{position:fixed;inset:0;z-index:12}
.drawer{padding-top:calc(14px + env(safe-area-inset-top,0px));padding-bottom:calc(20px + env(safe-area-inset-bottom,0px))}
.app.wide .drawer-wrap{position:relative;inset:auto;z-index:auto}
.app.wide .drawer{position:sticky;top:0;height:auto;min-height:100%;max-height:calc(100dvh - 48px)}
.app.wide .a-head{padding-top:14px}
.sync{display:inline-flex;align-items:center;gap:6px}
.sync::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--ok)}
.sync[data-s="saving"]::before,.sync[data-s="loading"]::before{background:var(--warn)}
.sync[data-s="offline"]::before,.sync[data-s="error"]::before{background:var(--bad)}
.acct{display:flex;flex-direction:column;gap:2px;padding:0 4px}
.acct .who{font-size:.8rem;color:var(--muted);padding:2px 10px 6px;overflow-wrap:anywhere}
.acct .nav{min-height:42px}
.toast{z-index:30}
.scrim{z-index:20}
/* empty / onboarding */
.empty .primary,.empty .ghost{margin-top:14px}
.empty-acts{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}
/* auth */
.authwrap{min-height:100dvh;display:grid;place-items:center;padding:24px max(16px,env(safe-area-inset-right,0px)) 24px max(16px,env(safe-area-inset-left,0px))}
.authcard{width:100%;max-width:400px;display:flex;flex-direction:column;gap:14px;padding:26px 22px;border-radius:26px;background:color-mix(in srgb,var(--bg-card) 66%,transparent);-webkit-backdrop-filter:blur(18px) saturate(140%);backdrop-filter:blur(18px) saturate(140%);border:1px solid color-mix(in srgb,var(--accent-1) 16%,var(--line));box-shadow:inset 0 1px 0 rgba(234,231,246,.06),0 30px 80px -40px color-mix(in srgb,var(--accent-1) 45%,transparent)}
.authcard .brand{font-size:2rem}
.authcard .tag{color:var(--dim);margin-top:-6px}
.field input[type="email"],.field input[type="password"]{font:inherit;font-family:var(--f-body);text-transform:none;letter-spacing:0;font-size:16px;min-height:48px;padding:0 12px;border-radius:14px;border:1px solid var(--line-strong);background:rgba(11,10,19,.5);color:var(--fg);width:100%}
.authmsg{min-height:1.2em;font-size:.88rem;color:var(--dim)}
.authmsg.err{color:var(--bad)}
.authmsg.ok{color:var(--ok)}
.authcard .primary{justify-content:space-between;width:100%}
.authcard .linkbtn{align-self:center}
.seg button[aria-selected="true"]{background:linear-gradient(120deg,color-mix(in srgb,var(--accent-1) 34%,var(--bg-card)),color-mix(in srgb,var(--accent-2) 28%,var(--bg-card))) padding-box,var(--grad) border-box;border:1px solid transparent;color:var(--fg)}
.boot{min-height:100dvh;display:grid;place-items:center;color:var(--muted);font-family:var(--f-mono);font-size:.75rem;letter-spacing:.08em;text-transform:uppercase}
.toast{bottom:calc(92px + env(safe-area-inset-bottom,0px))}
@media (min-width:900px){.toast{bottom:40px}}
.app.wide{padding-bottom:0}
.app.wide #list,.app.wide #timeline{padding-bottom:110px}
.app.wide .drawer{position:static;height:100%;max-height:none}

/* ---------- v1.1 polish ---------- */
.wm{color:var(--fg)}
.d-brand .wm{font-size:1.15rem}
.authcard .brand .wm{font-size:1.9rem;letter-spacing:-.02em}
.iconbtn{width:44px;height:44px;border-radius:50%;border:0;background:var(--sunk);color:var(--dim);display:grid;place-items:center;flex:none;transition:background var(--ease),color var(--ease)}
.iconbtn:hover{background:var(--accent-soft);color:var(--fg)}
.iconbtn svg{width:18px;height:18px}
.a-tools{gap:6px}
.a-titles h2{font-size:1.45rem;letter-spacing:-.02em}
#listSub{display:flex;flex-wrap:wrap;align-items:center;gap:2px 8px}
.syncpill{display:inline-flex;align-items:center;font-family:var(--f-mono);font-size:.66rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;padding:2px 9px;border-radius:999px;background:var(--warn-bg);color:var(--warn)}
.syncpill[data-s="offline"],.syncpill[data-s="error"]{background:var(--bad-bg);color:var(--bad)}
/* calmer secondary text: sentence case, body face */
.stamp span{font-family:var(--f-body);font-size:.76rem;text-transform:none;letter-spacing:0;color:var(--muted)}
.count{font-family:var(--f-body);font-size:.8rem;letter-spacing:0;color:var(--muted)}
.sec{font-family:var(--f-display)}
.donegrp{font-family:var(--f-body);text-transform:none;letter-spacing:0;font-size:.9rem;font-weight:600}
.htime{font-size:.92rem;font-variant-numeric:tabular-nums;color:var(--dim)}
.hrow{min-height:46px}
.hrow.editing{padding:8px 0}
.tbtn.quiet{color:var(--muted)}
.hmore{padding:6px 0 0}
.empty h3{font-family:var(--f-display);font-size:1.1rem;color:var(--fg);margin-bottom:6px}
.empty p{max-width:34ch;margin:0 auto}
.d-foot{margin-top:auto;padding-top:10px;border-top:1px solid var(--line)}
.drawer{min-height:100%}
/* segmented control */
.segc{display:flex;padding:3px;gap:3px;border-radius:999px;background:var(--sunk);border:1px solid var(--line)}
.segc button{flex:1;min-height:40px;padding:0 10px;border:1px solid transparent;border-radius:999px;background:none;color:var(--dim);font-family:var(--f-mono);font-size:max(11px,.7rem);font-weight:700;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;transition:background var(--ease),color var(--ease)}
.segc button:hover{color:var(--fg)}
.segc button[aria-checked="true"],.segc button[aria-selected="true"]{background:linear-gradient(120deg,color-mix(in srgb,var(--accent-1) 34%,var(--bg-card)),color-mix(in srgb,var(--accent-2) 28%,var(--bg-card))) padding-box,var(--grad) border-box;color:var(--fg)}
/* switch */
.switch{position:relative;flex:none;width:52px;height:32px;padding:0;border-radius:999px;border:1px solid var(--line-strong);background:var(--sunk);transition:background var(--ease)}
.switch::after{content:"";position:absolute;inset:-7px -2px}
.switch span{position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:var(--dim);transition:transform var(--ease),background var(--ease)}
.switch[aria-checked="true"]{background:var(--grad);border-color:transparent}
.switch[aria-checked="true"] span{transform:translateX(20px);background:#0b0a13}
/* frequency picker */
.freq{display:flex;flex-direction:column;gap:10px}
.stepper{display:inline-flex;align-items:center;align-self:flex-start;border-radius:999px;background:var(--sunk);border:1px solid var(--line)}
.stepper button{width:44px;height:44px;border:0;border-radius:50%;background:none;color:var(--fg);font-size:1.3rem;line-height:1}
.stepper button:disabled{color:var(--muted);opacity:.5;cursor:default}
.stepper output{min-width:48px;text-align:center;font-family:var(--f-mono);font-weight:700;font-size:1rem;color:var(--fg);text-transform:none}
.stepper.off output{color:var(--muted)}
.hint{font-family:var(--f-body);font-size:.86rem;font-weight:500;color:var(--dim);text-transform:none;letter-spacing:0}
/* settings */
.settings{padding:14px max(14px,env(safe-area-inset-right,0px)) 48px max(14px,env(safe-area-inset-left,0px));display:flex;flex-direction:column;gap:16px;max-width:720px}
.set-sec{border:1px solid var(--line);border-radius:20px;background:rgba(23,20,38,.55);overflow:hidden}
.set-sec h3{font-family:var(--f-mono);font-size:max(11px,.7rem);letter-spacing:.09em;text-transform:uppercase;color:var(--muted);padding:14px 16px 4px;font-weight:600}
.set-row{display:flex;align-items:center;justify-content:space-between;gap:12px 16px;padding:14px 16px;border-top:1px solid var(--line)}
.set-sec h3 + .set-row{border-top:0}
.set-row.stack{flex-direction:column;align-items:stretch}
.set-txt{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}
.set-title{font-weight:600}
.set-desc{font-size:.85rem;color:var(--muted);overflow-wrap:anywhere}
.set-desc.err{color:var(--bad)} .set-desc.ok{color:var(--ok)}
.settings .accents{gap:2px}
.settings .accents button{width:44px;height:44px}
.settings .accents button span{width:26px;height:26px}
.settings .accents button[aria-checked="true"] span{outline:2px solid var(--fg);outline-offset:3px;box-shadow:0 0 14px var(--a1)}
.btnrow{display:flex;gap:8px;flex:none}
.pwrow{display:flex;gap:8px}
.pwrow input{flex:1;min-width:0;font:inherit;font-size:16px;min-height:44px;padding:0 12px;border-radius:14px;border:1px solid var(--line-strong);background:rgba(11,10,19,.5);color:var(--fg)}
.sync{display:inline-flex;align-items:center;gap:6px}
.about{text-align:center;color:var(--muted);font-size:.8rem}
@media (max-width:420px){.set-row:not(.stack){flex-wrap:wrap}}
/* Reduce transparency */
.solid *{-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
.solid body{background-image:none}
.solid .app,.solid .sheet,.solid .drawer,.solid .toast,.solid .authcard,.solid .set-sec{background:var(--bg-card)!important}
.solid .a-head{background:var(--bg-elev)}
.solid .scrim,.solid .drawer-wrap{background:rgba(5,4,10,.8)}
.solid .ring svg,.solid .mark,.solid .ring.pop svg{filter:none!important}
.solid .fab,.solid .primary,.solid .toast,.solid .sec .dot,.solid .week span.on,.solid .nicon i,.solid .app{box-shadow:none!important}
/* Reduce motion */
.calm *,.calm *::before,.calm *::after{animation:none!important;transition:none!important}
.app.wide .drawer{position:sticky;top:0;height:100dvh;min-height:0;overflow-y:auto}
@media (min-width:900px){.app.wide .drawer{height:calc(100dvh - 48px)}}
.set-desc .sync{display:inline}
.settings .accents button{width:42px}
body{margin:0}
/* Netlify's "Powered by" badge sits bottom-right; keep the add button and toasts clear of it */
body:has(#nl-badge-frame) .fab{bottom:calc(92px + env(safe-area-inset-bottom,0px))}
body:has(#nl-badge-frame) .toast{bottom:calc(164px + env(safe-area-inset-bottom,0px))}
body:has(#nl-badge-frame) .app{padding-bottom:180px}
body:has(#nl-badge-frame) .sheet{padding-bottom:calc(84px + env(safe-area-inset-bottom,0px))}
body:has(#nl-badge-frame) .drawer{padding-bottom:calc(84px + env(safe-area-inset-bottom,0px))}
body:has(#nl-badge-frame) .settings{padding-bottom:110px}
/* forms: placeholders read as hints, not values */
input::placeholder{color:var(--muted);opacity:.7}
/* wide screens: the add/edit panel is a centred dialog, not a bottom sheet */
@media (min-width:760px){
  .scrim{align-items:center;padding:24px}
  .sheet,body:has(#nl-badge-frame) .sheet{max-width:520px;border-radius:26px;border-bottom:1px solid color-mix(in srgb,var(--accent-1) 16%,var(--line));padding:24px 24px 22px;max-height:calc(100dvh - 48px);overflow-y:auto}
  @keyframes up{from{transform:translateY(10px) scale(.98);opacity:.6}to{transform:none;opacity:1}}
}
.freq + .hint,.hint{margin-top:2px}
.sheet-actions{margin-top:6px}
/* Ghostly Green is Clocked's default accent (set before the script runs, so there's no violet flash) */
:root{--accent-1:#9fe873;--accent-2:#caf2b2}
/* ---------- background tints ---------- */
html.tint-green{--bg:#080d0a;--bg-card:#121b16;--bg-elev:#0f1612;--surface:rgba(18,27,22,.62);--sunk:rgba(231,246,236,.06);--line:rgba(170,255,190,.10);--line-strong:rgba(170,255,190,.18);--fg:#e6f2e9;--dim:#adc6b5;--muted:#86a190}
html.tint-neutral{--bg:#0b0b0d;--bg-card:#17171a;--bg-elev:#121214;--surface:rgba(23,23,26,.62);--sunk:rgba(240,240,244,.06);--line:rgba(220,220,235,.10);--line-strong:rgba(220,220,235,.18);--fg:#ececf0;--dim:#b4b4be;--muted:#8e8e99}
html.tint-green .set-sec,html.tint-neutral .set-sec{background:color-mix(in srgb,var(--bg-card) 60%,transparent)}
html.tint-green #list,html.tint-green #timeline,html.tint-neutral #list,html.tint-neutral #timeline{background:color-mix(in srgb,var(--bg) 60%,transparent)}
html.tint-green .detail,html.tint-neutral .detail{background:color-mix(in srgb,var(--bg) 55%,transparent)}
html.tint-green .drawer,html.tint-neutral .drawer{background:color-mix(in srgb,var(--bg-card) 90%,transparent)}
html.tint-green .app.wide .drawer,html.tint-neutral .app.wide .drawer{background:color-mix(in srgb,var(--bg) 40%,transparent)}
html.tint-green input,html.tint-green select,html.tint-neutral input,html.tint-neutral select{background:color-mix(in srgb,var(--bg) 60%,transparent)!important}
html.tint-green .scrim,html.tint-green .drawer-wrap{background:rgba(3,7,4,.55)}
html.tint-neutral .scrim,html.tint-neutral .drawer-wrap{background:rgba(4,4,5,.55)}
html.tint-green .app.wide .drawer-wrap,html.tint-neutral .app.wide .drawer-wrap{background:none}
/* list background fills the whole column (no seam under short lists) */
.tuned #list,.tuned #timeline,html.tint-neutral #list,html.tint-neutral #timeline{background:none}
.tuned main#main{background:rgba(8,7,14,.55);min-height:60dvh}
html.tint-neutral main#main{background:color-mix(in srgb,var(--bg) 60%,transparent)}
.app.wide main#main{grid-column:2;grid-row:3;align-self:stretch;padding-bottom:110px}
.app.wide #list,.app.wide #timeline{padding-bottom:0}
/* ---------- v1.2: tip spacing, picker, list chips, scrollbars ---------- */
.tip{margin:18px 16px 12px;padding:10px 8px 10px 16px}
html{scrollbar-color:rgba(180,170,255,.22) transparent;scrollbar-width:thin}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:rgba(180,170,255,.22);border-radius:99px;border:2px solid transparent;background-clip:padding-box}
::-webkit-scrollbar-track{background:transparent}
.hrow.editing{flex-direction:column;align-items:stretch;gap:10px;padding:10px 0 12px}
.hrow.editing .acts{justify-content:flex-end}
.dtp{display:flex;flex-wrap:wrap;align-items:center;gap:16px 20px;padding:14px;border-radius:20px;background:color-mix(in srgb,var(--bg-card) 85%,transparent);border:1px solid color-mix(in srgb,var(--accent-1) 14%,var(--line))}
.dtp-cal{flex:1 1 250px;min-width:0;max-width:330px}
.dtp-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.dtp-month{font-family:var(--f-display);font-weight:600;font-size:.98rem}
.iconbtn.sm{width:36px;height:36px}
.iconbtn.sm svg{width:16px;height:16px}
.iconbtn:disabled{opacity:.3;cursor:default}
.dtp-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px}
.dtp-wd{text-align:center;font-family:var(--f-mono);font-size:max(11px,.68rem);color:var(--muted);padding:4px 0 6px}
.dtp-day{aspect-ratio:1;min-height:34px;border:0;border-radius:50%;background:none;color:var(--fg);font:inherit;font-size:.88rem;font-variant-numeric:tabular-nums;transition:background var(--ease)}
.dtp-day:hover:not(:disabled):not([aria-pressed="true"]){background:var(--sunk)}
.dtp-day.is-today{box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--accent-1) 70%,transparent)}
.dtp-day[aria-pressed="true"]{background:var(--grad);color:var(--accent-fg);font-weight:700;box-shadow:none}
.dtp-day:disabled{color:var(--muted);opacity:.3;cursor:default}
.dtp-quick{display:flex;gap:2px;margin-top:6px;margin-left:-8px}
.dtp-time{display:flex;align-items:center;gap:8px;flex:0 0 auto;margin:0 auto}
.tspin{display:flex;flex-direction:column;align-items:center;border-radius:18px;background:var(--sunk);border:1px solid var(--line);overflow:hidden}
.tspin button{width:60px;height:38px;border:0;background:none;color:var(--dim);display:grid;place-items:center}
.tspin button:hover{color:var(--fg);background:var(--accent-soft)}
.tspin button svg{width:16px;height:16px}
.tspin input{width:60px;height:46px;padding:0;text-align:center;border:0;border-block:1px solid var(--line);background:color-mix(in srgb,var(--bg) 50%,transparent);color:var(--fg);font-family:var(--f-mono);font-size:1.45rem;font-weight:700;font-variant-numeric:tabular-nums}
.tspin input:focus-visible{outline:2px solid var(--accent-1);outline-offset:-2px}
.tcolon{font-family:var(--f-mono);font-size:1.45rem;font-weight:700;color:var(--muted)}
.segc.vert{flex-direction:column;border-radius:18px;margin-left:4px}
.segc.vert button{flex:none;border-radius:14px;min-height:44px;padding:0 14px}
.chipset{display:flex;flex-wrap:wrap;gap:6px}
.chipset button{display:inline-flex;align-items:center;gap:8px;min-height:42px;padding:0 16px 0 12px;border-radius:999px;border:1px solid var(--line);background:var(--sunk);color:var(--dim);font-family:var(--f-body);font-size:.95rem;font-weight:600;text-transform:none;letter-spacing:0;transition:background var(--ease),color var(--ease)}
.chipset button:hover{color:var(--fg)}
.chipset .dot{width:10px;height:10px;background:var(--c)}
.chipset button[aria-checked="true"]{background:linear-gradient(120deg,color-mix(in srgb,var(--accent-1) 34%,var(--bg-card)),color-mix(in srgb,var(--accent-2) 28%,var(--bg-card))) padding-box,var(--grad) border-box;border-color:transparent;color:var(--fg)}
.quietnav{color:var(--muted)}
.quietnav .nicon{background:var(--sunk);color:var(--muted)}
.dtp-day{aspect-ratio:auto;height:38px;min-height:0}
.dtp-cal{display:flex;flex-direction:column}
.hrow.editing{flex-wrap:nowrap}
.dtp{display:grid;grid-template-columns:minmax(0,330px) auto;justify-content:start;align-items:center;gap:16px 28px}
.dtp-cal{max-width:none}
@media (max-width:640px){.dtp{grid-template-columns:minmax(0,1fr);justify-items:stretch}.dtp-time{justify-self:center}}
/* ---------- pull to refresh ---------- */
body{overscroll-behavior-y:contain}
.ptr{position:fixed;left:50%;top:calc(env(safe-area-inset-top,0px) - 44px);z-index:8;opacity:0;transform:translate(-50%,0);transition:transform .25s cubic-bezier(.2,0,0,1),opacity .2s;pointer-events:none}
.ptr.drag{transition:none}
.ptr-disc{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:color-mix(in srgb,var(--bg-card) 92%,transparent);border:1px solid var(--line-strong);color:var(--dim);box-shadow:var(--glow);transition:background var(--ease),color var(--ease)}
.ptr svg{width:18px;height:18px}
.ptr.ready .ptr-disc,.ptr.spin .ptr-disc{background:var(--grad);color:var(--accent-fg);border-color:transparent}
.ptr.spin svg{animation:ptrspin .8s linear infinite}
@keyframes ptrspin{to{transform:rotate(360deg)}}
.calm .ptr.spin svg{animation:none}
/* toast without an Undo button: even padding so the text sits centred */
.toast:has(#undoBtn[hidden]){padding:10px 20px}
/* phones: the task area fills the screen, so there's no darker band ending partway down */
.app:not(.wide){display:flex;flex-direction:column}
.app:not(.wide) main#main{flex:1;min-height:0}
.app:not(.wide),body:has(#nl-badge-frame) .app:not(.wide){padding-bottom:0}
.app:not(.wide) main#main{padding-bottom:calc(110px + env(safe-area-inset-bottom,0px))}
/* ---------- list icons (native emoji) ---------- */
.emo{font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif;font-weight:400;line-height:1;display:inline-block}
.nicon .emo{font-size:17px}
.sec .emo{font-size:1.05rem;width:22px;text-align:center}
.chipset .emo,.ml .emo{font-size:1rem}
.iconpick{display:flex;align-items:center;gap:12px;margin-bottom:10px}
.iconprev{width:56px;height:56px;flex:none;border-radius:18px;display:grid;place-items:center;background:var(--sunk);border:1px solid var(--line-strong);font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif;font-size:30px;line-height:1}
.iconprev .noicon{font-family:var(--f-body);font-size:1.2rem;color:var(--muted)}
.iconside{flex:1;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:2px}
.iconside input{width:100%;font-family:var(--f-body);font-size:16px;text-transform:none;letter-spacing:0;min-height:44px;padding:0 12px;border-radius:14px;border:1px solid var(--line-strong);background:rgba(11,10,19,.5);color:var(--fg)}
.iconside .tbtn{margin-left:-10px}
.emogrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(44px,1fr));gap:4px;max-height:156px;overflow-y:auto;padding:6px;border-radius:16px;background:var(--sunk);border:1px solid var(--line)}
.emogrid button{height:44px;border:1px solid transparent;border-radius:12px;background:none;font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif;font-size:22px;line-height:1;transition:background var(--ease)}
.emogrid button:hover{background:var(--accent-soft)}
.emogrid button[aria-checked="true"]{background:linear-gradient(120deg,color-mix(in srgb,var(--accent-1) 34%,var(--bg-card)),color-mix(in srgb,var(--accent-2) 28%,var(--bg-card))) padding-box,var(--grad) border-box}
/* ---------- groups ---------- */
.ngroup{display:flex;flex-direction:column}
.ngrow{display:flex;align-items:center;gap:2px}
.ngrow .nav{flex:1;min-width:0}
.nchev{width:40px;height:40px;flex:none;border:0;border-radius:50%;background:none;color:var(--muted);display:grid;place-items:center;transition:background var(--ease),color var(--ease)}
.nchev:hover{background:var(--sunk);color:var(--fg)}
.nchev svg{width:15px;height:15px;transition:transform var(--ease)}
.nchev[aria-expanded="true"] svg{transform:rotate(90deg)}
.nsub{display:flex;flex-direction:column;gap:2px;margin:2px 0 4px 22px;padding-left:8px;border-left:1px solid var(--line)}
.nsub .nav{min-height:42px}
.nsub .nicon{width:28px;height:28px}
.nempty{font-size:.82rem;color:var(--muted);padding:8px 10px}
.newrow{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:6px}
.newrow .nav{margin-top:0;padding-right:8px}
.newrow .nlabel{font-size:.9rem}
.secgroup{color:var(--muted);font-weight:500;font-family:var(--f-body);font-size:.88rem}
.chipgrp{flex-basis:100%;font-family:var(--f-mono);font-size:max(11px,.68rem);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:6px 0 0 4px}
.chipset .gico{display:grid;place-items:center;color:var(--muted)}
.chipset .gico svg{width:15px;height:15px}
/* sidebar sections: Groups first, then Lists, each with a small add button */
.drawer{overflow-x:hidden}
.d-labrow{display:flex;align-items:center;justify-content:space-between;padding-right:6px}
.addbtn{width:30px;height:30px;border:0;border-radius:50%;background:var(--sunk);color:var(--dim);display:grid;place-items:center;position:relative;transition:background var(--ease),color var(--ease)}
.addbtn::after{content:"";position:absolute;inset:-7px}
.addbtn:hover{background:var(--accent-soft);color:var(--fg)}
.addbtn svg{width:15px;height:15px}
.d-group > .nempty,#navLists > .nempty{display:block;padding:4px 12px 8px}
/* ---------- tree sidebar ---------- */
.nav.static{cursor:default}
.nav.static:hover{background:none;color:var(--dim)}
.nsub{margin:0 0 6px 27px;padding-left:0;border-left:1px solid var(--line-strong);gap:0}
.nsub > .nav,.nsub > .nempty{position:relative;margin-left:14px;width:calc(100% - 14px)}
.nsub > .nav::before{content:"";position:absolute;left:-14px;top:50%;width:11px;border-top:1px solid var(--line-strong)}
.nsub > .nempty{padding:6px 8px;font-size:.8rem}
.tadd{min-height:40px;color:var(--muted);font-weight:500;font-size:.92rem}
.tadd .nicon{width:26px;height:26px;background:none;border:1px dashed var(--line-strong);color:var(--muted)}
.tadd .nicon svg{width:13px;height:13px}
.tadd:hover{color:var(--fg)}
#navLists > .tadd{margin-top:4px}
.ngrow .nav.ngh .nlabel{font-weight:700}
/* wide screens: sidebar grows with its tree instead of scrolling inside itself */
.app.wide .drawer{position:static;height:auto;min-height:100%;max-height:none;overflow:visible}
/* phones: the slide-out menu still scrolls when long, but without a visible bar */
.drawer{scrollbar-width:none}
.drawer::-webkit-scrollbar{display:none}
/* Today's Log ends on a "Now" marker instead of stopping dead */
.tl-now .tm{color:var(--accent-1)}
.tl-now .rail::before{bottom:auto;height:7px;width:0;background:none;border-left:2px dashed var(--line-strong);left:8px}
.tl-now .rail::after{background:var(--bg-card);border:2px solid var(--accent-1);box-shadow:0 0 0 4px var(--accent-soft);animation:nowpulse 2.4s ease-in-out infinite}
.tl-now .nm > span:first-child{font-weight:700;color:var(--fg)}
.tl:has(+ .tl-now) .rail::before{background:none;border-left:2px dashed var(--line-strong);width:0;left:8px;top:22px}
@keyframes nowpulse{50%{box-shadow:0 0 0 7px transparent}}
.calm .tl-now .rail::after{animation:none}
.timeline .tl.tl-now .rail::after{background:var(--bg-card);border:2px solid var(--accent-1);box-shadow:0 0 0 4px var(--accent-soft)}
/* ---------- icon backgrounds use each group's / list's colour ---------- */
.nav[style*="--c"] .nicon{background:color-mix(in srgb,var(--c) 42%,var(--bg-card));box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--c) 75%,transparent)}
.nav[style*="--c"] .nicon i{background:var(--fg);box-shadow:none;width:9px;height:9px}
.nav[style*="--c"] .nicon svg{color:#fff}
.nav[aria-current="page"][style*="--c"] .nicon{background:var(--c);box-shadow:0 0 12px color-mix(in srgb,var(--c) 55%,transparent)}
.nav[aria-current="page"][style*="--c"] .nicon i{background:#0b0a13}
.nav[aria-current="page"][style*="--c"] .nicon svg{color:#0b0a13}
.emochip{display:inline-grid;place-items:center;width:28px;height:28px;flex:none;border-radius:50%;background:color-mix(in srgb,var(--c) 42%,var(--bg-card));box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--c) 75%,transparent)}
.emochip .emo{font-size:15px}
.chipset .emochip{width:24px;height:24px;margin-left:-6px}
.chipset .emochip .emo{font-size:13px}
.ml .emochip{width:18px;height:18px}
.ml .emochip .emo{font-size:10px}
.solid .nav .nicon{box-shadow:none!important}
/* ---------- minimum gap between logs ---------- */
.badge.waitb{--badge-tone:var(--accent-2)}
.row.waiting .ring svg{opacity:.55}
.gaprow{display:flex;flex-direction:column;gap:8px}
.gaprow .stepper output{min-width:64px}

/* ===== Final audit: tap targets ===== */
.iconbtn.sm,.nchev,.tspin button{position:relative}
.iconbtn.sm::after,.nchev::after{content:"";position:absolute;inset:-4px;border-radius:50%}
.tspin button{height:44px}
.dtp-day{height:42px}
.segc button{min-height:44px}
/* hide + while a log entry is being edited so it can't cover Save/Delete */
body:has(.hrow.editing) .fab{opacity:0;pointer-events:none;transform:scale(.8)}

/* ===== v1.3: skip, notes, earlier, pause, usual time, history ===== */
.toast{flex-wrap:wrap;row-gap:4px}
.toastx{flex-basis:100%;display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:2px 0 4px}
.toastx .tlbl{font-family:var(--f-mono);font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;opacity:.75;margin-right:2px}
.toast .toastx .tchip{min-height:36px;padding:0 12px;border-radius:999px;border:1px solid color-mix(in srgb,currentColor 30%,transparent);text-decoration:none;font-size:12px;display:inline-flex;align-items:center;gap:6px;position:relative}
.toast .toastx .tchip::after{content:"";position:absolute;inset:-4px -2px}
.toast .toastx .tchip[aria-pressed="true"]{background:var(--accent-1);color:var(--accent-fg);border-color:transparent}
.toast .toastx .tchip svg{width:14px;height:14px}
.toast .toastx .tchip.note{margin-left:auto}
.badge.pauseb{--badge-tone:var(--muted)}
.badge.lateb{--badge-tone:var(--accent-2)}
.badge.skipb{--badge-tone:var(--muted)}
.row.paused .rname{color:var(--dim)}
.row.paused .ring svg{opacity:.45}
.skiptag{display:inline-block;font-family:var(--f-mono);font-size:10px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);border:1px dashed var(--line-strong);border-radius:999px;padding:1px 7px;vertical-align:2px;margin-left:4px}
.hnote,.tlnote{display:block;font-size:.85rem;color:var(--dim);margin-top:2px;font-style:italic;overflow-wrap:anywhere}
.tlnote{margin-top:4px}
.htime{min-width:0}
.hrow .htime{flex:1}
.week span.sk{background:transparent;outline:1.5px dashed var(--muted);outline-offset:-2px}
.timeline .tl.skipped .rail::after{background:var(--bg-card);border:2px dashed var(--c);box-shadow:none}
.timeline .tl.skipped .nm > span:first-child{color:var(--dim)}
.notefield{display:grid;gap:6px;font-family:var(--f-mono);font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}
.notefield input{font-family:var(--f-body);text-transform:none;letter-spacing:0;font-weight:500;width:100%}
.dacts{flex-wrap:wrap;gap:4px}
.nav.npaused .nlabel{color:var(--muted)}
.nav.npaused .ncount{font-family:var(--f-mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase}
.pausetip{border-color:var(--line-strong)}
.pauserow{padding:4px 0;border:0}
/* history sheet */
.hist .hstats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.hs{display:grid;gap:2px;padding:10px 12px;border-radius:14px;background:var(--sunk);border:1px solid var(--line);min-width:0}
.hs b{font-family:var(--f-mono);font-size:1rem;font-variant-numeric:tabular-nums}
.hs span{font-size:.75rem;color:var(--muted);line-height:1.3}
.hcal{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}
.hc-wd{text-align:center;font-family:var(--f-mono);font-size:10px;font-weight:700;color:var(--muted)}
.hc-day{aspect-ratio:1;max-width:100%;border-radius:10px;display:grid;place-items:center;font-size:.78rem;font-variant-numeric:tabular-nums;color:var(--muted);background:var(--sunk)}
.hc-day.on{background:color-mix(in srgb,var(--c) calc(30% + var(--lvl) * 55%),var(--sunk));color:#0b0a13;font-weight:700}
.hc-day.sk{background:transparent;outline:1.5px dashed var(--muted);outline-offset:-2px}
.hc-day.today{box-shadow:0 0 0 2px var(--fg)}
.hc-day.future{background:none}
.hlist{display:grid;gap:12px;max-height:none}
.hdname{font-family:var(--f-mono);font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:4px}
.hentry{display:grid;grid-template-columns:78px 1fr;gap:10px;padding:6px 0;border-bottom:1px dashed var(--line)}
.hday .hentry:last-child{border-bottom:0}
.hetime{font-family:var(--f-mono);font-weight:700;font-size:.85rem;font-variant-numeric:tabular-nums}
.hentry.skipped .hetime{color:var(--muted)}
.hebody .skiptag{margin-left:0}
.hebody{min-width:0}
.sheet{max-height:calc(100dvh - 24px - env(safe-area-inset-top,0px));overflow-y:auto;overscroll-behavior:contain}
/* reminders */
.rmd{display:inline-flex;align-items:center;gap:4px}
.rmd svg{width:12px;height:12px;opacity:.8}
.rmdrow{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.rmdrow input[type="time"]{font:inherit;font-family:var(--f-mono);font-weight:700;font-size:16px;min-height:44px;padding:0 14px;border-radius:14px;border:1px solid var(--line-strong);background:rgba(11,10,19,.5);color:var(--fg);color-scheme:dark}
#pushMsg{display:block}

/* ===== signed-out overview ===== */
.landing .lp-wrap{max-width:1040px;margin:0 auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));padding-block:40px 56px;display:grid;gap:72px}
.landing h1,.landing h2,.landing h3{font-family:var(--f-display);margin:0;text-wrap:balance;letter-spacing:-.01em}
.landing p{margin:0}
.landing .lp-eyebrow{font-family:var(--f-mono);font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--a1)}
.landing a{color:var(--a2)}
.landing :focus-visible{outline:2px solid var(--a1);outline-offset:3px;border-radius:8px}
.landing .lp-hero{display:grid;grid-template-columns:1.1fr .9fr;gap:48px;align-items:center}
.landing .lp-hero>*{min-width:0}
.landing .lp-brand{display:flex;align-items:center;gap:14px;margin-bottom:22px}
.landing .lp-brand svg{width:56px;height:56px}
.landing .lp-brand h1{font-size:clamp(2.4rem,6vw,3.4rem);font-weight:700}
.landing .lp-lede{font-size:1.25rem;line-height:1.5;color:var(--fg);max-width:32ch}
.landing .lp-sub{color:var(--dim);margin-top:14px;max-width:52ch}
.landing .lp-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:22px}
.landing .lp-tag{font-family:var(--f-mono);font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--dim);border:1px solid var(--line);border-radius:999px;padding:5px 11px}
.landing .lp-tag.lp-on{color:var(--bg);background:var(--a1);border-color:var(--a1)}
.landing .lp-ctas{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}
.landing .lp-btn{display:inline-flex;align-items:center;gap:10px;min-height:48px;padding:0 22px;border-radius:999px;font-family:var(--f-mono);font-size:13px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;text-decoration:none}
.landing .lp-btn.lp-primary{background:linear-gradient(120deg,var(--a1),var(--a2));color:var(--bg)}
.landing .lp-btn.lp-ghost{border:1px solid var(--line);color:var(--fg)}
.landing .lp-btn:hover{filter:brightness(1.08)}
.landing .lp-phone{justify-self:center;width:100%;max-width:340px;border-radius:36px;padding:10px;background:linear-gradient(160deg,#2a2540,#14121d);box-shadow:0 30px 80px -20px rgb(0 0 0 / .7),0 0 0 1px rgb(255 255 255 / .06) inset}
.landing .lp-screen{border-radius:28px;background:var(--bg);overflow:hidden;padding:18px 0 14px}
.landing .lp-s-head{padding:0 16px 12px;border-bottom:1px solid var(--line)}
.landing .lp-s-head b{font-family:var(--f-display);font-size:1.25rem;display:block}
.landing .lp-s-head span{font-size:.75rem;color:var(--muted)}
.landing .lp-s-sec{display:flex;align-items:center;gap:8px;padding:12px 16px 6px;font-family:var(--f-display);font-weight:600;font-size:.9rem}
.landing .lp-s-sec i{width:8px;height:8px;border-radius:50%;background:var(--c)}
.landing .lp-s-sec em{margin-left:auto;font-style:normal;font-family:var(--f-body);font-weight:500;font-size:.7rem;color:var(--muted)}
.landing .lp-row{display:grid;grid-template-columns:28px 1fr auto;gap:12px;align-items:center;padding:10px 16px;border-top:1px solid var(--line)}
.landing .lp-row svg{width:26px;height:26px}
.landing .lp-row .lp-n{font-weight:600;font-size:.9rem;line-height:1.3}
.landing .lp-row .lp-m{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:.7rem;color:var(--muted);margin-top:3px}
.landing .lp-row .lp-t{text-align:right;font-family:var(--f-mono);font-weight:700;font-size:.82rem;font-variant-numeric:tabular-nums}
.landing .lp-row .lp-t small{display:block;font-family:var(--f-body);font-weight:500;font-size:.66rem;color:var(--muted)}
.landing .lp-badge{font-family:var(--f-mono);font-size:.6rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;border-radius:999px;padding:2px 8px;color:var(--tone);background:color-mix(in srgb,var(--tone) 16%,transparent)}
.landing .lp-s-now{display:flex;align-items:center;gap:8px;padding:12px 16px 0;font-size:.7rem;color:var(--muted)}
.landing .lp-s-now i{width:9px;height:9px;border-radius:50%;border:2px solid var(--a1)}
.landing .lp-sec{display:grid;gap:22px}
.landing .lp-sec h2{font-size:clamp(1.5rem,3.4vw,2rem)}
.landing .lp-prose{max-width:62ch;color:var(--dim);display:grid;gap:14px}
.landing .lp-prose strong{color:var(--fg);font-weight:600}
.landing .lp-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;counter-reset:s;list-style:none;margin:0;padding:0}
.landing .lp-steps li{min-width:0;padding:20px;border-radius:18px;background:var(--panel);border:1px solid var(--line);display:grid;gap:8px;align-content:start}
.landing .lp-steps li::before{counter-increment:s;content:counter(s);width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font-family:var(--f-mono);font-weight:700;font-size:13px;color:var(--bg);background:var(--a1)}
.landing .lp-steps h3{font-size:1.05rem}
.landing .lp-steps p{color:var(--dim);font-size:.95rem}
.landing .lp-feats{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:18px;overflow:hidden}
.landing .lp-feat{background:var(--sunk);padding:22px;display:grid;gap:8px;align-content:start;min-width:0}
.landing .lp-feat .lp-ic{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--a-soft);color:var(--a1)}
.landing .lp-feat .lp-ic svg{width:18px;height:18px}
.landing .lp-feat h3{font-size:1rem}
.landing .lp-feat p{color:var(--dim);font-size:.92rem}
.landing .lp-feat code{font-family:var(--f-mono);font-size:.82em;color:var(--a2)}
.landing .lp-stack{display:flex;flex-wrap:wrap;gap:10px}
.landing .lp-chip{display:grid;gap:2px;padding:12px 16px;border-radius:14px;border:1px solid var(--line);background:var(--panel);min-width:0}
.landing .lp-chip b{font-weight:600;font-size:.95rem}
.landing .lp-chip span{font-size:.8rem;color:var(--muted)}
.landing footer{display:flex;flex-wrap:wrap;gap:12px 24px;justify-content:space-between;align-items:center;padding-top:24px;border-top:1px solid var(--line);color:var(--muted);font-size:.85rem}
.landing footer .lp-mono{font-family:var(--f-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase}
@media (max-width:820px){.landing .lp-hero{grid-template-columns:1fr;gap:40px}
.landing .lp-steps,.landing .lp-feats{grid-template-columns:1fr}
.landing .lp-wrap{gap:56px;padding-block:28px 40px}}

@media (min-width:821px) and (max-width:980px){.landing .lp-feats{grid-template-columns:repeat(2,1fr)}}

@media (prefers-reduced-motion:no-preference){.landing .lp-btn{transition:filter .15s ease}}
.landing .lp-hero{align-items:start}
.landing .lp-phone{margin-top:4px}
.landing .lp-hd{display:grid;gap:8px}
.landing .lp-split{display:grid;grid-template-columns:1.2fr .8fr;gap:48px;align-items:start}
.landing .lp-split>*{min-width:0}
.landing .lp-log{margin:0;padding:20px;border-radius:18px;background:var(--panel);border:1px solid var(--line)}
.landing .lp-log figcaption{font-family:var(--f-mono);font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:14px}
.landing .lp-log ol{list-style:none;margin:0;padding:0;display:grid}
.landing .lp-log li{display:grid;grid-template-columns:72px 14px 1fr;gap:12px;align-items:start;position:relative;padding-bottom:16px}
.landing .lp-log li:last-child{padding-bottom:0}
.landing .lp-log li:not(:last-child)::after{content:"";position:absolute;left:calc(72px + 12px + 6px);top:16px;bottom:0;width:2px;background:var(--line)}
.landing .lp-log time{font-family:var(--f-mono);font-weight:700;font-size:.8rem;text-align:right;font-variant-numeric:tabular-nums;padding-top:1px}
.landing .lp-log i{width:12px;height:12px;border-radius:50%;background:var(--c);margin-top:5px;position:relative;z-index:1}
.landing .lp-log span{font-weight:600;font-size:.92rem;line-height:1.35}
.landing .lp-log small{display:block;font-weight:500;font-size:.78rem;color:var(--muted)}
.landing .lp-log .lp-now time{color:var(--a1)}
.landing .lp-log .lp-now i{background:var(--bg);border:2px solid var(--a1)}
.landing .lp-feat .lp-ic{width:40px;height:40px}
.landing .lp-feat .lp-ic svg{width:20px;height:20px}
.landing{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){.landing{scroll-behavior:auto}}

@media (max-width:820px){.landing .lp-split{grid-template-columns:1fr;gap:28px}}
/* landing: tokens mapped to the app's theme, nav, auth modal */
.landing{--panel:var(--bg-card);--a1:var(--accent-1);--a2:var(--accent-2);--a-soft:var(--accent-soft);--c-blue:#3ec9e0;--c-pink:#f472b6;--c-violet:#a78bfa;--warn:#f5c542;min-height:100dvh;color:var(--fg);font-family:var(--f-body);font-size:16px;line-height:1.6}
.landing .lp-btn{border:0;cursor:pointer;font:inherit;font-family:var(--f-mono);font-size:13px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.landing .lp-btn.lp-ghost{background:transparent}
.landing .lp-btn.lp-sm{min-height:40px;padding:0 16px;font-size:12px}
.landing .lp-lede{font-size:clamp(1.9rem,5.4vw,3rem);line-height:1.12;font-weight:700;max-width:16ch}
.landing .lp-sub{margin-top:18px}
.lp-nav{position:sticky;top:env(safe-area-inset-top,0px);z-index:10;background:color-mix(in srgb,var(--bg) 78%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.landing::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:11;background:var(--bg)}
.lp-navin{max-width:1040px;margin:0 auto;padding-block:10px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));display:flex;align-items:center;justify-content:space-between;gap:12px}
.lp-navbrand{display:flex;align-items:center;gap:10px;font-family:var(--f-display);font-weight:700;font-size:1.2rem}
.lp-navbrand .mark{width:34px;height:34px}
.lp-navact{display:flex;gap:8px}
/* auth now opens as a pop-up over the overview */
#authView.authwrap{position:fixed;inset:0;z-index:40;min-height:0;overflow-y:auto;background:rgba(5,4,10,.62);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.authcard{position:relative}
.authx{position:absolute;top:14px;right:14px;width:44px;height:44px;border-radius:50%;border:0;background:var(--sunk);color:var(--dim);display:grid;place-items:center}
.authx:hover{color:var(--fg)}
.authx svg{width:18px;height:18px}
@media (max-width:420px){.lp-navbrand span{display:none}}
.landing .lp-feat{background:var(--bg-elev)}
.landing .lp-feats{background:var(--line-strong)}
