:root{
  color-scheme:light;
  --bg:#EEF2F1; --surface:#FFFFFF; --surface-2:#F5F8F7; --line:#D5DEDC;
  --ink:#15212A; --muted:#5A6873; --faint:#8A979F;
  --accent:#0E7A83; --accent-ink:#FFFFFF; --accent-soft:#D6EEEF;
  --hp:#C9453A; --energy:#C98512; --joy:#7657C4; --ties:#2E8A57; --kid:#D2527F; --money:#2F69B3;
  --warn-bg:#FFF3DC; --warn-line:#E8B75A; --warn-ink:#6B4A07;
  --bad-bg:#FDE7E4; --bad-line:#E39A91; --bad-ink:#7A2219;
  --good-bg:#E1F3E8; --good-ink:#1C5A36;
  --cell:#E7EDEC; --cell-on:#0E7A83;
  --radius:12px;
  --f:system-ui,-apple-system,"Roboto","Segoe UI",sans-serif;
  --mono:ui-monospace,"Roboto Mono","Cascadia Mono",Consolas,monospace;
}
@media (prefers-color-scheme: dark){
  :root{
    color-scheme:dark;
    --bg:#0E1417; --surface:#162027; --surface-2:#1B2730; --line:#2A3943;
    --ink:#E4ECEF; --muted:#9AAAB3; --faint:#6D7D86;
    --accent:#3BB5BE; --accent-ink:#06282B; --accent-soft:#16383C;
    --hp:#F07468; --energy:#EDB04A; --joy:#A68CF0; --ties:#5CC48A; --kid:#F07CA6; --money:#6FA4EE;
    --warn-bg:#35290F; --warn-line:#8A6A24; --warn-ink:#F3D08A;
    --bad-bg:#3A1A17; --bad-line:#8E433A; --bad-ink:#F6B3AA;
    --good-bg:#153223; --good-ink:#9BE0B6;
    --cell:#22303A; --cell-on:#3BB5BE;
  }
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--f);font-size:16px;line-height:1.45}
body{padding-top:env(safe-area-inset-top,0px);padding-bottom:calc(64px + env(safe-area-inset-bottom,0px))}
button,input,textarea,select{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
h1,h2,h3,p{margin:0}
h1{font-size:22px;font-weight:800;letter-spacing:-.01em;text-wrap:balance}
h2{font-size:17px;font-weight:750;text-wrap:balance}
h3{font-size:14px;font-weight:700}
.muted{color:var(--muted)}
.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}
.eyebrow{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}

/* top bar */
.bar{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:10px;padding:10px 16px;background:var(--bg);border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:8px;font-weight:800;font-size:18px;flex:1}
.brand img{border-radius:7px}
.sync{display:flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:4px 10px;font-size:12.5px;color:var(--muted);max-width:52vw}
.sync span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sync i{width:8px;height:8px;border-radius:50%;background:var(--faint);flex:none}
.sync.ok i{background:var(--ties)} .sync.wait i{background:var(--energy)} .sync.err i{background:var(--hp)}
.gear{font-size:20px;text-decoration:none;color:var(--muted);padding:4px}

/* view */
.view{max-width:720px;margin:0 auto;padding:16px;display:flex;flex-direction:column;gap:14px;outline:none}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px;display:flex;flex-direction:column;gap:12px}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.spread{justify-content:space-between}
.btn{border:1px solid var(--line);background:var(--surface-2);border-radius:10px;padding:9px 14px;font-weight:650;font-size:14px}
.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.btn:disabled{opacity:.45}
.chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:3px 10px;font-size:12.5px;font-weight:650}
.chip.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}

/* banners */
.banner{border:1px solid;border-radius:var(--radius);padding:12px 14px;display:flex;flex-direction:column;gap:6px;font-size:14.5px}
.banner.warn{background:var(--warn-bg);border-color:var(--warn-line);color:var(--warn-ink)}
.banner.bad{background:var(--bad-bg);border-color:var(--bad-line);color:var(--bad-ink)}
.banner.good{background:var(--good-bg);border-color:transparent;color:var(--good-ink)}
.banner ol{margin:0;padding-left:20px}

/* today */
.dayhead{display:flex;flex-direction:column;gap:6px}
.onething{border-left:4px solid var(--accent);background:var(--accent-soft);border-radius:8px;padding:10px 12px;font-size:15px}
.habits{display:flex;flex-direction:column;gap:8px}
.habit{display:flex;align-items:center;gap:12px;width:100%;text-align:left;border:1px solid var(--line);background:var(--surface-2);border-radius:12px;padding:12px 14px;min-height:56px}
.habit .mark{width:28px;height:28px;border-radius:8px;border:2px solid var(--c);flex:none;display:grid;place-items:center;font-weight:800;color:var(--accent-ink)}
.habit[aria-pressed="true"]{border-color:var(--c);background:var(--surface)}
.habit[aria-pressed="true"] .mark{background:var(--c)}
.habit[aria-pressed="true"] .mark::after{content:"✓"}
.habit .name{flex:1;font-weight:650}
.habit .cnt{font-family:var(--mono);font-size:13px;color:var(--muted)}
.habit .cnt.met{color:var(--ties);font-weight:700}
.scale{display:grid;grid-template-columns:repeat(10,1fr);gap:5px}
.scale button{border:1px solid var(--line);background:var(--surface-2);border-radius:8px;height:42px;font-weight:750;padding:0}
.scale button[aria-pressed="true"]{background:var(--energy);border-color:var(--energy);color:#1b1206}
.scale5{grid-template-columns:repeat(5,1fr)}
.scale5 button[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.stepper{display:flex;align-items:center;gap:10px}
.stepper button{width:52px;height:46px;border-radius:10px;border:1px solid var(--line);background:var(--surface-2);font-size:22px;font-weight:700}
.stepper input{flex:1;height:46px;text-align:center;border:1px solid var(--line);border-radius:10px;background:var(--surface);font-family:var(--mono);font-size:20px;min-width:0}
.why{display:grid;gap:10px}
.prio{border-left:3px solid var(--c);padding-left:10px}
.prio b{display:block;font-size:14px}
.prio span{font-size:13.5px;color:var(--muted)}
details summary{cursor:pointer;font-weight:700}

/* week grid */
.grid-wrap{overflow-x:auto;margin-inline:-6px;padding-inline:6px}
table.grid{border-collapse:separate;border-spacing:3px;width:100%;min-width:560px}
.grid th{font-size:11.5px;font-weight:700;color:var(--muted);text-align:center}
.grid th.today{color:var(--accent)}
.grid td.lbl{font-size:13px;font-weight:650;padding-right:6px;white-space:nowrap;position:sticky;left:0;background:var(--surface)}
.grid td.lbl i{display:inline-block;width:8px;height:8px;border-radius:2px;background:var(--c);margin-right:6px}
.grid td.cnt{font-family:var(--mono);font-size:12px;text-align:right;white-space:nowrap}
.grid td.cnt.met{color:var(--ties);font-weight:700}
.cellbtn{width:100%;min-width:34px;height:34px;border-radius:7px;border:1px solid transparent;background:var(--cell);display:block;padding:0}
.cellbtn[aria-pressed="true"]{background:var(--cell-on)}
.cellbtn[aria-pressed="true"]::after{content:"✓";color:var(--accent-ink);font-weight:800}
.num{width:100%;min-width:34px;height:34px;border-radius:7px;border:1px solid var(--line);background:var(--surface-2);text-align:center;font-family:var(--mono);font-size:13px;padding:0}
.metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.metric{display:flex;flex-direction:column;gap:2px}
.metric .v{font-family:var(--mono);font-size:21px;font-weight:700}
.metric .v small{font-size:12px;color:var(--muted);font-weight:400}
.metric.over .v{color:var(--hp)}
.progress{height:6px;background:var(--cell);border-radius:99px;overflow:hidden}
.progress i{display:block;height:100%;background:var(--accent);border-radius:99px}

/* forms */
.field{display:flex;flex-direction:column;gap:6px}
.field label,.field .lab{font-size:13px;font-weight:700;color:var(--muted)}
.field input,.field textarea{background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:10px 12px;width:100%}
.field textarea{min-height:72px;resize:vertical}
.check{display:flex;gap:12px;align-items:flex-start;padding:4px 0}
.check input{width:22px;height:22px;margin-top:1px;accent-color:var(--accent);flex:none}
.check.done span{color:var(--faint);text-decoration:line-through}

/* trends */
.trends{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.trend{border:1px solid var(--line);border-radius:10px;padding:10px;background:var(--surface-2);display:flex;flex-direction:column;gap:4px}
.trend .head{display:flex;justify-content:space-between;align-items:baseline;gap:6px}
.trend .val{font-family:var(--mono);font-weight:700}
.trend svg{width:100%;height:60px;display:block}
.hist{display:flex;flex-direction:column;gap:8px}
.hist .item{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;font-size:14px;border-top:1px solid var(--line);padding-top:8px}
.coach{border-left:3px solid var(--accent);padding-left:12px;white-space:pre-wrap}
@media (max-width:460px){.trends{grid-template-columns:1fr}.metrics{grid-template-columns:1fr 1fr 1fr}}

/* tabs */
.tabs{position:fixed;left:0;right:0;bottom:0;z-index:5;display:grid;grid-template-columns:repeat(5,1fr);background:var(--surface);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom,0px)}
.tabs a{display:flex;flex-direction:column;align-items:center;gap:1px;padding:8px 2px 9px;text-decoration:none;color:var(--muted);font-size:11.5px;font-weight:650}
.tabs a b{font-size:17px;line-height:1.1}
.tabs a[aria-current="page"]{color:var(--accent)}
@media (prefers-reduced-motion:no-preference){.progress i{transition:width .3s ease}}
