/* ============================================================
   Horuz Tracker — design system · Fase 1 (dark premium)
   Layout: app shell; layered surfaces bg → card → inset → control.
   Violet = actions/selection/main indicators. Green = positive states.
   Habit hues = identity only (swatches, grids, charts).
   ============================================================ */
:root{
  color-scheme:dark;
  /* surfaces */
  --bg:#111318; --surface:#191C24; --surface-2:#20252E; --surface-3:#272D38;
  --line:#2C313D; --line-2:#383E4B; --line-3:#4A5161;
  /* text */
  --ink:#F3F4F6; --ink-2:#A3AAB8; --muted:#8E95A3; --faint:#687080;
  /* accent + semantic */
  --accent:#9B8AFB; --accent-soft:rgba(155,138,251,.14); --accent-line:rgba(155,138,251,.45); --on-accent:#15122a;
  --good:#65D6A4; --good-soft:rgba(101,214,164,.13);
  --warn:#F6B84A; --warn-soft:rgba(246,184,74,.13);
  --bad:#EF7A73; --bad-soft:rgba(239,122,115,.12);
  --primary:var(--accent); --on-primary:var(--on-accent);
  /* habit identity (validated on --surface: CVD + normal-vision separation) */
  --c-treino:#E8693F; --c-leitura:#1A9DAE; --c-sono:#5876EC; --c-alim:#CF5E9C; --c-extra:#8b93a8;
  /* type */
  --f-display:"Manrope",system-ui,-apple-system,"Segoe UI",sans-serif;
  --f-body:"Manrope",system-ui,-apple-system,"Segoe UI",sans-serif;
  --f-mono:"JetBrains Mono",ui-monospace,"SF Mono",Menlo,monospace;
  --t-label:12px; --t-sm:13px; --t-md:15px; --t-lg:17px; --t-xl:22px; --t-2xl:30px; --t-num:40px;
  /* radii: cards 20 · fields/buttons 12 · compact 8–10 */
  --r-card:20px; --r-inset:14px; --r-ctl:12px; --r-sm:10px; --r-xs:8px; --r-pill:999px;
  /* spacing (8-based, 4 for fine tuning) */
  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-5:20px; --sp-6:24px; --sp-8:32px; --sp-10:40px;
  /* elevation + motion */
  --shadow:0 1px 0 rgba(255,255,255,.03) inset,0 10px 30px -20px rgba(0,0,0,.8);
  --ring:0 0 0 3px rgba(155,138,251,.42);
  --ease:cubic-bezier(.2,.7,.2,1);
}
*{box-sizing:border-box}
html{background:var(--bg)}
body{background:var(--bg);color:var(--ink);font-family:var(--f-body);font-size:var(--t-md);font-weight:450;line-height:1.5;-webkit-font-smoothing:antialiased}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer;-webkit-tap-highlight-color:transparent}
button:disabled{cursor:not-allowed}
:focus-visible{outline:none;box-shadow:var(--ring)}
.num{font-variant-numeric:tabular-nums}
.mono{font-family:var(--f-mono)}
.wrap{max-width:1120px;margin:0 auto;padding-block:32px 80px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
@media (max-width:600px){.wrap{padding-block:20px 56px}}
.stack{display:flex;flex-direction:column;gap:var(--sp-4)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ---------- header + navigation ---------- */
.top{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);flex-wrap:wrap;margin-bottom:var(--sp-6)}
.brand h1{font-family:var(--f-display);font-weight:700;font-size:clamp(24px,4vw,30px);line-height:1.1;letter-spacing:-.02em;margin:0;text-wrap:balance}
.brand p{margin:4px 0 0;color:var(--ink-2);font-size:var(--t-sm)}
.save{font-size:12.5px;font-weight:500;color:var(--ink-2);display:inline-flex;align-items:center;gap:8px;white-space:nowrap;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-pill);padding:6px 12px}
.save .dot{width:7px;height:7px;border-radius:50%;background:var(--good)}
.save.saving .dot{background:var(--warn)}
.save.err{color:var(--bad);border-color:color-mix(in srgb,var(--bad) 40%,var(--line))}
.save.err .dot{background:var(--bad)}
.tabs{display:flex;gap:4px;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:4px;margin-bottom:var(--sp-8)}
.tab{flex:1 1 0;min-width:0;border:0;background:transparent;padding:10px 8px;border-radius:12px;font-weight:600;font-size:14px;color:var(--ink-2);transition:color .2s var(--ease),background .2s var(--ease);white-space:nowrap}
.tab:hover{color:var(--ink);background:var(--surface-2)}
.tab[aria-selected="true"]{background:var(--accent-soft);color:var(--ink);box-shadow:inset 0 0 0 1px var(--accent-line)}
@media (max-width:600px){.tabs{margin-bottom:var(--sp-6)}.tab{font-size:13px;padding:10px 4px}}

/* ---------- section heading ---------- */
.sec-h{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--sp-3) var(--sp-4);flex-wrap:wrap;margin:0 0 var(--sp-5)}
.eyebrow{font-size:var(--t-label);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin-bottom:4px}
.sec-h h2{font-family:var(--f-display);font-weight:700;font-size:var(--t-xl);letter-spacing:-.015em;margin:0;line-height:1.2;text-wrap:balance}
.sec-h .sub{color:var(--ink-2);font-size:var(--t-sm);margin-top:4px}
.sec-h .sub b{color:var(--ink);font-weight:600}
h3.lab{font-family:var(--f-display);font-weight:600;font-size:var(--t-label);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0 0 var(--sp-4)}
h3.ttl{font-family:var(--f-display);font-weight:600;font-size:var(--t-lg);margin:0 0 4px;letter-spacing:-.01em}

/* ---------- buttons ---------- */
.nav{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}
.ib{width:40px;height:40px;border-radius:var(--r-ctl);border:1px solid var(--line);background:var(--surface);display:inline-grid;place-items:center;font-size:18px;line-height:1;color:var(--ink-2);transition:background .15s var(--ease),border-color .15s var(--ease),transform .1s}
.ib:hover:not(:disabled){background:var(--surface-2);border-color:var(--line-2);color:var(--ink)}
.ib:active:not(:disabled){transform:scale(.96)}
.ib:disabled{opacity:.35}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:40px;border:1px solid var(--line-2);background:var(--surface-2);border-radius:var(--r-ctl);padding:8px 16px;font-weight:600;font-size:14px;color:var(--ink);transition:background .15s var(--ease),border-color .15s var(--ease),transform .1s}
.btn:hover:not(:disabled){background:var(--surface-3);border-color:var(--line-3)}
.btn:active:not(:disabled){transform:scale(.98)}
.btn:disabled{opacity:.45}
.btn.pri{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.btn.pri:hover:not(:disabled){background:color-mix(in srgb,var(--accent) 88%,#fff);border-color:transparent}
.btn.ghost{background:transparent;border-color:transparent;color:var(--ink-2)}
.btn.ghost:hover:not(:disabled){background:var(--surface-2);color:var(--ink)}
.btn.sm{min-height:34px;padding:6px 12px;font-size:13px;border-radius:var(--r-sm)}
.date-in{border:1px solid var(--line);background:var(--surface);border-radius:var(--r-ctl);padding:6px 10px;font-size:14px;height:40px;color:var(--ink-2)}
.date-in:hover{border-color:var(--line-2)}

/* ---------- layout ---------- */
.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-4);align-items:start}
.grid4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--sp-4)}
@media (max-width:900px){.grid4{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-3)}}
@media (max-width:720px){.grid2{grid-template-columns:minmax(0,1fr)}}
.span2{grid-column:1/-1}
.gap-b{margin-bottom:var(--sp-4)}

/* ---------- card ---------- */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);padding:var(--sp-6);min-width:0;box-shadow:var(--shadow)}
@media (max-width:600px){.card{padding:var(--sp-4);border-radius:18px}}
.card-h{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);margin-bottom:var(--sp-4)}
.card-h .meta{font-size:var(--t-sm);color:var(--muted);margin-top:2px}
.hname{display:flex;align-items:center;gap:10px;font-family:var(--f-display);font-weight:600;font-size:var(--t-lg);letter-spacing:-.01em;flex-wrap:wrap;line-height:1.25}
.sw{width:10px;height:10px;border-radius:3px;flex:none}
.hint{color:var(--muted);font-size:var(--t-sm)}
.foot{margin-top:var(--sp-5);padding-top:var(--sp-4);border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);flex-wrap:wrap;font-size:var(--t-sm);color:var(--ink-2)}
.foot b{color:var(--ink);font-weight:600}
.opt-t{font-size:11.5px;font-weight:500;color:var(--faint);margin-left:4px;text-transform:none;letter-spacing:0}

/* ---------- segmented choice (selected = tint + border + check, never color alone) ---------- */
.seg{display:flex;gap:4px;flex-wrap:wrap;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-inset);padding:4px}
.seg button{flex:1 1 0;min-width:0;min-height:44px;border:1px solid transparent;background:transparent;border-radius:var(--r-sm);padding:9px 10px;font-weight:600;font-size:14px;color:var(--ink-2);transition:background .15s var(--ease),color .15s var(--ease),border-color .15s var(--ease)}
.seg button:hover{color:var(--ink);background:var(--surface-3)}
.seg button:active{transform:scale(.98)}
.seg button[aria-pressed="true"]{background:color-mix(in srgb,var(--hc,var(--accent)) 20%,var(--surface-3));border-color:color-mix(in srgb,var(--hc,var(--accent)) 75%,transparent);color:var(--ink)}
.seg button[aria-pressed="true"]::before{content:"✓";margin-right:6px;font-weight:700;color:var(--hc,var(--accent))}
.seg button.neg[aria-pressed="true"]{background:var(--surface-3);border-color:var(--line-3)}
.seg button.neg[aria-pressed="true"]::before{color:var(--ink-2)}
.seg.sm{padding:3px;border-radius:var(--r-ctl);display:inline-flex}
.seg.sm button{min-height:34px;padding:5px 12px;font-size:13px;flex:none;border-radius:9px}
.seg.sm button[aria-pressed="true"]::before{margin-right:4px}
.seg.sm:empty{display:none}

/* ---------- chips ---------- */
.chips{display:flex;gap:8px;flex-wrap:wrap}
.chip{min-height:36px;border:1px solid var(--line-2);background:transparent;border-radius:var(--r-pill);padding:6px 14px;font-size:13px;font-weight:500;color:var(--ink-2);transition:all .15s var(--ease)}
.chip:hover{border-color:var(--line-3);color:var(--ink)}
.chip[aria-pressed="true"]{border-color:color-mix(in srgb,var(--hc,var(--accent)) 70%,transparent);background:color-mix(in srgb,var(--hc,var(--accent)) 16%,transparent);color:var(--ink);font-weight:600}
.chip[aria-pressed="true"]::before{content:"✓ ";color:var(--hc,var(--accent))}

/* ---------- fields ---------- */
.fields{display:flex;gap:var(--sp-3) var(--sp-4);flex-wrap:wrap;margin-top:var(--sp-4)}
.field{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:500;color:var(--ink-2);min-width:0}
.field input,.field select,.settings input,.settings select,.hed-n,.hed select{min-height:44px;border:1px solid var(--line);background:var(--surface-2);border-radius:var(--r-ctl);padding:9px 12px;font-size:15px;font-weight:500;color:var(--ink);width:128px;max-width:100%;transition:border-color .15s var(--ease),background .15s var(--ease)}
.field input:hover,.settings input:hover,.settings select:hover,.hed-n:hover,.hed select:hover,textarea:hover{border-color:var(--line-2)}
.field input:focus,.settings input:focus,.settings select:focus,.hed-n:focus,.hed select:focus,textarea:focus{border-color:var(--accent);box-shadow:var(--ring);outline:none}
.field input[type=time]{font-family:var(--f-mono);width:140px}
.field input[type=number]{width:104px}
.field.grow{flex:1 1 240px}
.field.grow input{width:100%}
input::placeholder,textarea::placeholder{color:var(--faint)}
textarea{width:100%;min-height:88px;border:1px solid var(--line);background:var(--surface-2);border-radius:var(--r-ctl);padding:12px 14px;resize:vertical;font-weight:450;color:var(--ink);line-height:1.5}
.subl{font-size:13px;font-weight:500;color:var(--ink-2);margin:var(--sp-5) 0 var(--sp-2)}
.msg{font-size:13px;font-weight:500;border-radius:var(--r-sm);padding:8px 12px}
.msg.err{color:var(--bad);background:var(--bad-soft)}
.msg.ok{color:var(--good);background:var(--good-soft)}
/* disclosure for optional fields */
details.more{margin-top:var(--sp-4)}
details.more>summary{list-style:none;display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:6px 12px;border-radius:var(--r-sm);border:1px dashed var(--line-2);color:var(--ink-2);font-size:13px;font-weight:500;cursor:pointer}
details.more>summary::-webkit-details-marker{display:none}
details.more>summary:hover{border-color:var(--line-3);color:var(--ink)}
details.more[open]>summary{border-style:solid;margin-bottom:var(--sp-3)}

/* rating 1–5 with label (sleep) */
.q{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}
.q button{min-height:56px;border:1px solid var(--line);background:var(--surface-2);border-radius:var(--r-ctl);padding:8px 4px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;transition:all .15s var(--ease)}
.q button:hover{border-color:var(--line-3)}
.q button b{font-family:var(--f-display);font-size:18px;font-weight:700;line-height:1.1}
.q button span{font-size:11px;font-weight:500;color:var(--muted)}
.q button[aria-pressed="true"]{background:color-mix(in srgb,var(--c-sono) 20%,var(--surface-3));border-color:var(--c-sono);box-shadow:inset 0 0 0 1px var(--c-sono)}
.q button[aria-pressed="true"] span{color:var(--ink)}
/* compact 1–5 (check-in) */
.mini{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}
.mini button{min-height:44px;border:1px solid var(--line);background:var(--surface-2);border-radius:var(--r-sm);font-weight:600;font-size:15px;color:var(--ink-2);transition:all .15s var(--ease)}
.mini button:hover{border-color:var(--line-3);color:var(--ink)}
.mini button[aria-pressed="true"]{background:var(--accent-soft);border-color:var(--accent);color:var(--ink);box-shadow:inset 0 0 0 1px var(--accent)}
.mini-l{display:flex;justify-content:space-between;font-size:11.5px;color:var(--faint);margin-top:6px}
.ci-row+.ci-row{margin-top:var(--sp-5)}
.ci-h{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:var(--sp-2);font-size:14px;font-weight:600}
.ci-h span{font-size:13px;color:var(--muted);font-weight:500}
.step{display:inline-flex;align-items:center;border:1px solid var(--line);background:var(--surface-2);border-radius:var(--r-ctl);overflow:hidden;height:44px}
.step button{border:0;background:transparent;width:40px;height:100%;font-size:18px;color:var(--ink-2)}
.step button:hover{background:var(--surface-3);color:var(--ink)}
.step output{min-width:32px;text-align:center;font-weight:600}
.notice{border:1px solid var(--line);border-radius:var(--r-inset);padding:12px 14px;font-size:14px;background:var(--surface-2);color:var(--ink-2)}

/* sleep block */
.sl-times{display:flex;gap:var(--sp-4);flex-wrap:wrap;align-items:flex-end}
.sl-dur{display:flex;flex-direction:column;gap:2px;padding:6px 16px;border-left:1px solid var(--line)}
.sl-dur small{font-size:13px;color:var(--ink-2);font-weight:500}
.bigdur{font-family:var(--f-display);font-weight:700;font-size:26px;line-height:1.15;letter-spacing:-.01em}
@media (max-width:520px){.sl-dur{border-left:0;padding:0}}

/* ---------- badges / state pills (text always present) ---------- */
.pill{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;padding:4px 10px;border-radius:var(--r-pill);white-space:nowrap;border:1px solid var(--line-2);color:var(--ink-2);flex:none}
.pill::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.9}
.pill.ok{background:var(--good-soft);border-color:transparent;color:var(--good)}
.pill.part{background:var(--warn-soft);border-color:transparent;color:var(--warn)}
.pill.no,.pill.miss{background:var(--bad-soft);border-color:transparent;color:var(--bad)}
.pill.pend{border-style:dashed}
.pill.pend::before{background:transparent;border:1px solid currentColor}
.pill.rest,.pill.opt,.pill.fut{background:var(--surface-2);border-color:transparent;color:var(--muted)}
.pill.extra{background:var(--accent-soft);border-color:transparent;color:var(--ink-2)}

/* ---------- progress ---------- */
.bar{height:6px;border-radius:var(--r-pill);background:var(--surface-3);overflow:hidden}
.bar i{display:block;height:100%;border-radius:var(--r-pill);background:var(--hc,var(--accent))}
.bar.lg{height:10px}
.bar.lg i{background:var(--accent)}
.bar.lg.done i{background:var(--good)}
.bar.sm{height:4px;margin:6px 0 2px}
.pips{display:inline-flex;gap:4px}
.pip{width:16px;height:6px;border-radius:var(--r-pill);background:var(--surface-3)}
.pip.on{background:var(--hc)}
.ring{vertical-align:middle;margin-left:8px}
@media (prefers-reduced-motion:no-preference){.bar i{transition:width .5s var(--ease)}}

/* daily progress panel */
.panel{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:var(--sp-6) var(--sp-8);align-items:stretch;margin-bottom:var(--sp-4)}
@media (max-width:860px){.panel{grid-template-columns:minmax(0,1fr)}}
.p-main{display:flex;flex-direction:column;gap:var(--sp-4);min-width:0}
.p-head{display:flex;align-items:baseline;gap:var(--sp-3);flex-wrap:wrap}
.p-num{font-family:var(--f-display);font-weight:700;font-size:var(--t-num);line-height:1;letter-spacing:-.02em}
.p-num.empty{color:var(--faint)}
.p-cap{font-size:15px;color:var(--ink-2)}
.p-cap b{color:var(--ink);font-weight:600}
.sum{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-2)}
.sum div{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-ctl);padding:10px 12px;display:flex;flex-direction:column;gap:2px}
.sum b{font-size:20px;font-weight:700;line-height:1.1}
.sum span{font-size:12px;color:var(--muted);font-weight:500}
.sum .g b{color:var(--good)}
.hst{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:13px;color:var(--ink-2)}
.hst span{display:inline-flex;align-items:center;gap:6px}
.p-side{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-2);align-content:start}
.kpi{display:flex;flex-direction:column;gap:2px;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-inset);padding:12px 14px;min-width:0}
.kl{font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:600}
.kpi b{font-family:var(--f-display);font-size:22px;font-weight:700;line-height:1.2}
.kpi b small{font-size:13px;font-weight:500;color:var(--muted)}
.ks{font-size:12px;color:var(--muted)}
.p-empty{grid-column:1/-1;display:flex;align-items:center;justify-content:center;text-align:center;color:var(--muted);font-size:13.5px;border:1px dashed var(--line-2);border-radius:var(--r-inset);padding:16px}

/* ---------- banner ---------- */
.banner{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);flex-wrap:wrap;border:1px solid var(--line);background:var(--surface);border-radius:var(--r-inset);padding:12px 16px;margin-bottom:var(--sp-5);font-size:13.5px;color:var(--ink-2)}
.banner.demo{border-color:var(--accent-line);background:var(--accent-soft)}
.tag{display:inline-block;font-weight:700;font-size:11px;letter-spacing:.08em;text-transform:uppercase;padding:3px 8px;border-radius:6px;background:var(--accent);color:var(--on-accent);margin-right:8px}

/* ---------- stat tiles ---------- */
.tile{display:flex;flex-direction:column;gap:var(--sp-2)}
.tile .v{font-family:var(--f-display);font-weight:700;font-size:var(--t-2xl);line-height:1.05;letter-spacing:-.02em}
.tile .s{font-size:12.5px;color:var(--muted)}
.delta{display:inline-block;font-size:12px;font-weight:600;color:var(--muted);margin-left:6px;white-space:nowrap;letter-spacing:0;vertical-align:middle;padding:2px 8px;border-radius:var(--r-pill);background:var(--surface-2)}
.delta.up{color:var(--good);background:var(--good-soft)}
.delta.down{color:var(--bad);background:var(--bad-soft)}
@media (max-width:480px){.tile .v{font-size:26px}.tile .v .delta{display:table;margin:6px 0 0}}

/* ---------- week grid: table (desktop) / stacked rows (phone) ---------- */
table.wk{border-collapse:separate;border-spacing:6px;width:100%}
.wk th{font-size:12px;font-weight:600;color:var(--muted);text-align:center;padding:2px 0}
.wk th.hl{text-align:left}
.wk th small{display:block;font-weight:400;font-family:var(--f-mono);font-size:11px;color:var(--faint)}
.wk th.today,.wk th.today small{color:var(--accent)}
.wk td.hn{font-weight:600;white-space:nowrap;padding-right:10px}
.wk td.pc{text-align:right;font-weight:700;font-size:16px;white-space:nowrap;padding-left:10px}
.cell{width:100%;height:44px;border-radius:var(--r-sm);border:1px solid var(--line);background:var(--surface-2);display:grid;place-items:center;font-size:14px;font-weight:700;color:var(--muted);transition:border-color .15s var(--ease)}
.cell:hover{border-color:var(--line-3)}
.cell.s1{background:var(--hc);border-color:transparent;color:#fff}
.cell.s5{background:color-mix(in srgb,var(--hc) 28%,var(--surface-2));border-color:color-mix(in srgb,var(--hc) 60%,transparent);color:var(--ink)}
.cell.s0{color:var(--bad);background:var(--bad-soft);border-color:transparent}
.cell.miss{border-style:dashed;color:var(--bad);border-color:color-mix(in srgb,var(--bad) 40%,transparent);background:transparent}
.cell.none{border-style:dashed;background:transparent}
.cell.free{border-style:dashed;font-size:11px;font-weight:600;color:var(--faint);background:transparent}
.cell.xtra{border-style:dashed;color:var(--hc);border-color:color-mix(in srgb,var(--hc) 60%,transparent);background:transparent}
.cell.opt{background:transparent;opacity:.6}
.cell.fut{opacity:.35}
.wkm{display:none}
.wkm-r+.wkm-r{margin-top:var(--sp-4);padding-top:var(--sp-4);border-top:1px solid var(--line)}
.wkm-h{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--sp-2);font-weight:600;font-size:14px}
.wkm-h b{font-weight:700}
.wkm-g{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.wkm-g .cell{height:40px;font-size:13px}
.wkm-d{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;margin-bottom:4px;font-size:11px;text-align:center;color:var(--muted);font-weight:600}
.wkm-d .today{color:var(--accent)}
@media (max-width:640px){table.wk{display:none}.wkm{display:block}}
.legend{display:flex;gap:8px 16px;flex-wrap:wrap;font-size:12.5px;font-weight:500;color:var(--ink-2);margin-bottom:var(--sp-3)}
.legend span{display:inline-flex;align-items:center;gap:6px}

/* ---------- calendars ---------- */
.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.cal .dh{font-size:11px;font-weight:600;color:var(--faint);text-align:center}
.cal .c{aspect-ratio:1;max-width:100%;border-radius:var(--r-xs);border:1px solid var(--line);font-size:11px;font-weight:600;display:grid;place-items:center;color:var(--muted);background:var(--surface-2)}
.cal .c.s1{background:var(--hc);border-color:transparent;color:#fff}
.cal .c.s5{background:color-mix(in srgb,var(--hc) 30%,var(--surface-2));border-color:color-mix(in srgb,var(--hc) 60%,transparent);color:var(--ink)}
.cal .c.s0{background:var(--bad-soft);border-color:transparent;color:var(--bad)}
.cal .c.miss{border-style:dashed;color:var(--bad);border-color:color-mix(in srgb,var(--bad) 40%,transparent);background:transparent}
.cal .c.free,.cal .c.none{border-style:dashed;background:transparent}
.cal .c.xtra{border-style:dashed;border-color:color-mix(in srgb,var(--hc) 60%,transparent);background:transparent}
.cal .c.opt{background:transparent;opacity:.6}
.cal .c.fut{opacity:.3}
.cal .c.blank{border:0;background:transparent}

/* ---------- weekday pattern: table / stacked ---------- */
table.pat{border-collapse:separate;border-spacing:4px;width:100%}
.pat th{font-size:12px;color:var(--muted);font-weight:600}
.pat td.hn{font-weight:600;font-size:14px;white-space:nowrap;padding-right:8px}
.pat td.v,.patm .v{text-align:center;font-size:13px;font-weight:600;border-radius:var(--r-sm);padding:10px 0;font-variant-numeric:tabular-nums;color:var(--ink)}
.patm{display:none}
.patm .v{padding:8px 0;font-size:12px}
@media (max-width:640px){table.pat{display:none}.patm{display:block}}

/* ---------- correlations ---------- */
.cr{display:flex;flex-direction:column;gap:var(--sp-3)}
.crr{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) 3.4em;gap:4px var(--sp-4);align-items:center}
.crr .l{font-size:14px;font-weight:500}
.crr .l small{display:block;color:var(--muted);font-size:12px;font-weight:400}
.dv{position:relative;height:16px}
.dv::before{content:"";position:absolute;left:50%;top:-3px;bottom:-3px;width:1px;background:var(--line-2)}
.dv i{position:absolute;top:3px;height:10px;border-radius:var(--r-pill)}
.dv i.p{left:calc(50% + 2px);background:var(--good)}
.dv i.n{right:calc(50% + 2px);background:var(--bad)}
.crr .d{font-weight:700;font-size:15px;text-align:right;white-space:nowrap}
@media (max-width:560px){.crr{grid-template-columns:minmax(0,1fr) 3.4em}.crr .dv{grid-column:1/-1;order:3}}

/* ---------- lists, insights, charts ---------- */
.ins{display:flex;flex-direction:column;gap:var(--sp-3);margin:0;padding:0;list-style:none}
.ins li{display:flex;gap:var(--sp-3);align-items:flex-start;font-size:14px;color:var(--ink-2)}
.ins li b{color:var(--ink);font-weight:600}
.ins li .k{flex:none;width:24px;height:24px;border-radius:var(--r-xs);display:grid;place-items:center;font-size:11.5px;font-weight:700;color:#fff}
.ins li .k.g{background:var(--good-soft);color:var(--good)}
.ins li .k.b{background:var(--bad-soft);color:var(--bad)}
.ins li .k.a{background:var(--accent-soft);color:var(--accent)}
.ins li .k.n{background:var(--surface-3);color:var(--ink-2)}
.ins li time{display:block;font-size:12px;color:var(--muted)}
.chart{width:100%;min-width:0}
.chart svg{display:block;overflow:visible}
.chart text{font-family:var(--f-body)}
.empty{display:flex;flex-direction:column;align-items:center;gap:6px;color:var(--muted);font-size:14px;padding:24px 16px;text-align:center;border:1px dashed var(--line-2);border-radius:var(--r-inset)}
.empty b{color:var(--ink-2);font-weight:600}
.kv{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(140px,100%),1fr));gap:var(--sp-3)}
.kv>div{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-inset);padding:12px 14px}
.kv div b{display:block;font-family:var(--f-display);font-size:22px;font-weight:700;line-height:1.2}
.kv div span{font-size:12px;color:var(--muted)}
.kv b.mono{font-family:var(--f-mono);font-size:20px;font-weight:500}
.cols2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-6)}
@media (max-width:620px){.cols2{grid-template-columns:minmax(0,1fr)}}

/* ---------- plan / goals ---------- */
.heds{display:flex;flex-direction:column;gap:var(--sp-3)}
.hed{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-inset);padding:var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-3)}
.hed.off{opacity:.55}
.hed-r{display:flex;align-items:center;gap:8px 12px;flex-wrap:wrap}
.hed-top{flex-wrap:nowrap}
.hed-top select{flex:none;max-width:42%}
.hed-n{flex:1 1 auto;min-width:0;width:auto!important;font-weight:600!important;background:var(--surface)!important}
.hed select{width:auto;background:var(--surface)}
@media (max-width:600px){.hed-top{flex-wrap:wrap}.hed-top .hed-n{flex:1 1 calc(100% - 30px)}.hed-top select{flex:1 1 auto;max-width:none}}
.hl2{font-size:12.5px;font-weight:500;color:var(--muted);min-width:76px}
.hed-p{display:flex;align-items:center;gap:var(--sp-3);font-size:12.5px;color:var(--ink-2)}
.hed-p .bar{flex:1}
.days{display:flex;gap:6px;flex-wrap:wrap}
.days button{width:36px;height:36px;border-radius:var(--r-sm);border:1px solid var(--line-2);background:transparent;font-weight:600;font-size:13px;color:var(--muted);transition:all .15s var(--ease)}
.days button:hover{border-color:var(--line-3);color:var(--ink)}
.days button[aria-pressed="true"]{background:color-mix(in srgb,var(--hc) 85%,transparent);border-color:transparent;color:#fff;font-weight:700}
.settings .row{display:flex;justify-content:space-between;align-items:center;gap:var(--sp-3);padding:var(--sp-3) 0;border-bottom:1px solid var(--line);flex-wrap:wrap}
.settings .row:last-child{border-bottom:0}
.settings .row label{font-weight:500}
.settings .row small{display:block;color:var(--muted);font-weight:400;font-size:12.5px}
.settings input,.settings select{width:156px}
.savebar{display:flex;gap:var(--sp-3);align-items:center;flex-wrap:wrap;margin-top:var(--sp-6);padding-top:var(--sp-5);border-top:1px solid var(--line)}

/* ---------- tooltip ---------- */
#tip{position:fixed;z-index:50;pointer-events:none;background:var(--surface-3);color:var(--ink);border:1px solid var(--line-2);font-size:12.5px;font-weight:500;padding:8px 10px;border-radius:var(--r-sm);max-width:260px;line-height:1.4;box-shadow:0 12px 28px -10px rgba(0,0,0,.8)}
.sgrp .subl{margin-top:0}
.sgrp+.sgrp{margin-top:var(--sp-5)}

/* ---------- salvar o dia ---------- */
.daysave{display:flex;align-items:center;justify-content:flex-end;gap:var(--sp-3) var(--sp-4);flex-wrap:wrap;margin-top:var(--sp-5);padding:var(--sp-4) var(--sp-5);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card)}
.daysave #daySaveMsg{flex:1 1 220px;min-width:0}
.daysave .btn{min-height:48px;min-width:180px;font-size:15px}
.daysave .btn.done{background:var(--good-soft);border-color:color-mix(in srgb,var(--good) 45%,transparent);color:var(--good)}
.daysave .btn.done:hover{background:var(--good-soft)}
@media (max-width:600px){.daysave{flex-direction:column;align-items:stretch;padding:var(--sp-4)}.daysave .btn{width:100%}.daysave #daySaveMsg{flex:none;text-align:center}}
.daysave .msg{background:transparent;padding:0;font-size:var(--t-sm)}
