/* track — stylesheet. Reference system: LSM principles bundle (DECISIONS.md D-02..D-05).
   Tokens first, then base, then components. Base styles ARE the resting legible state;
   nothing here hides content pending an animation. */

@font-face {
  font-family: 'Fraunces';
  src: url('/fonts/fraunces-var-latin.woff2') format('woff2-variations');
  font-weight: 300 700;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'Source Sans 3';
  src: url('/fonts/sourcesans-var-latin.woff2') format('woff2-variations');
  font-weight: 300 800;
  font-style: normal;
  font-display: swap;
}

:root{
  color-scheme: light dark;
  /* grounds and ink (D-02) */
  --paper:#F7F4EF; --surface:#FFFDFA; --sunk:#EFEAE2; --ink:#191613; --ink-soft:#45403A;
  --muted:#5F5A52; --hair:#DDD6CA; --accent:#16324F;
  --good:#2F6B3A; --bad:#A63A16; --info:#16324F;
  --on-dark:#F7F4EF; --scrim:25 22 19;
  --r:10px; --r-ctl:6px;
  /* motion: a response to the reader, never a performance */
  --motion-fast:180ms; --motion-mid:300ms; --motion-curve:cubic-bezier(0.16, 1, 0.3, 1);
  /* the metrics are the colour; checked as label text on --surface by scripts/gates.py */
  --c-water:#0E6F6E; --c-calories:#9A5117; --c-protein:#7E631A; --c-weight:#474C9A;
  --c-sleep:#2F5F96; --c-mood:#6F4590; --c-training:#A23F28; --c-vitamins:#43703A;
  --c-nosmoke:#5A5F6B; --c-nodrink:#5A5F6B; --c-spend:#84375A; --c-networth:#1C6A57;
  --c-pnl:#2F5F96; --c-note:#5F5A52; --c-gym:#A23F28;
  --font-body:'Source Sans 3', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
  --font-display:'Fraunces', 'Iowan Old Style', Georgia, serif;
}
@media (prefers-color-scheme: dark){
  :root{
    --paper:#141210; --surface:#1C1916; --sunk:#100E0C; --ink:#EDE8E0; --ink-soft:#C9C2B8;
    --muted:#A39B90; --hair:#2E2A25; --accent:#8FB4E3;
    --good:#7CC08A; --bad:#E8886A; --info:#8FB4E3;
    --c-water:#4FBFB8; --c-calories:#D9964D; --c-protein:#D1B055; --c-weight:#8F93DF;
    --c-sleep:#7FA8DD; --c-mood:#B48AD6; --c-training:#E07A62; --c-vitamins:#8FC07A;
    --c-nosmoke:#B4B8C2; --c-nodrink:#B4B8C2; --c-spend:#D48FB0; --c-networth:#6FC3A9;
    --c-pnl:#7FA8DD; --c-note:#A39B90; --c-gym:#E07A62;
  }
}

/* ---------- base ---------- */
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{-webkit-text-size-adjust:100%}
html,body{margin:0;background:var(--paper);color:var(--ink)}
body{font-family:var(--font-body);font-size:16px;line-height:1.45;font-feature-settings:'kern','liga','calt';
  text-rendering:optimizeLegibility;padding:env(safe-area-inset-top) 0 calc(72px + env(safe-area-inset-bottom))}
body.auth{padding-bottom:env(safe-area-inset-bottom)}
.wrap{max-width:480px;margin:0 auto;padding:12px 14px}
.num{font-variant-numeric:tabular-nums;letter-spacing:-.01em}
h1{font-family:var(--font-display);font-weight:600;font-size:24px;letter-spacing:-.018em;line-height:1.1;margin:0 0 12px;text-wrap:balance;overflow-wrap:anywhere;min-width:0}
h2{font-size:13px;font-weight:600;color:var(--muted);margin:22px 0 8px}
p{text-wrap:pretty}
button{font-family:inherit}
a{color:var(--accent);text-decoration-thickness:1px;text-underline-offset:.16em}
a,button,input,select,textarea,summary,label,[role=button]{touch-action:manipulation}
input:focus-visible,button:focus-visible,textarea:focus-visible,[role=button]:focus-visible,a:focus-visible{outline:3px solid var(--accent);outline-offset:2px;border-radius:2px}
::selection{background:var(--accent);color:var(--paper)}
img{max-width:100%;height:auto}
[hidden]{display:none !important}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ---------- photo bands (D-05): render only when a slot is final; absent otherwise ---------- */
.band{position:relative;overflow:hidden;border-radius:var(--r);margin:0 0 12px;background:var(--ink);color:var(--on-dark);
  min-height:var(--band-h,150px);display:flex;align-items:flex-end;border:1px solid var(--hair)}
.band img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:var(--pos,50% 50%)}
.band .scrim{position:absolute;inset:0;
  background:linear-gradient(to bottom, rgb(var(--scrim) / .18) 0%, rgb(var(--scrim) / .42) 55%, rgb(var(--scrim) / .82) 100%)}
.band .cap{position:relative;padding:10px 14px 12px;font-family:var(--font-display);font-size:22px;font-weight:500;letter-spacing:-.01em;line-height:1.1}
.band .cap small{display:block;font-family:var(--font-body);font-size:13px;font-weight:500;opacity:.92;margin-top:3px;letter-spacing:0}
.band.short{--band-h:112px}
.band.tall{--band-h:220px;border-radius:0 0 var(--r) var(--r);margin:0 -14px 18px;border-width:0 0 1px}

/* ---------- today ---------- */
.datestrip{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.datestrip button{background:none;border:none;color:var(--muted);font-size:24px;padding:4px 12px;cursor:pointer;min-width:44px;min-height:44px}
.datestrip button:disabled{opacity:.25}
#daylabel{font-family:var(--font-display);font-size:19px;font-weight:600;text-align:center;letter-spacing:-.01em}
#daysub{font-size:12px;color:var(--muted);text-align:center}
.badge{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.06em;padding:3px 8px;border-radius:999px;
  background:var(--bad);color:var(--paper);vertical-align:middle;margin-left:8px}
.card{background:var(--surface);border:1px solid var(--hair);border-radius:var(--r);padding:12px 14px 14px;margin-bottom:10px}
.chead{display:flex;align-items:center;justify-content:space-between;cursor:pointer;min-height:24px}
.cname{font-size:13px;font-weight:600}
.cmeta{font-size:13px;color:var(--muted)}
.big{font-family:var(--font-display);font-size:34px;font-weight:500;margin:4px 0 8px;line-height:1.1;letter-spacing:-.02em}
.big .u{font-family:var(--font-body);font-size:14px;font-weight:400;color:var(--muted);margin-left:5px;letter-spacing:0}
.bar{height:5px;border-radius:3px;overflow:hidden;background:var(--hair)}
.bar>i{display:block;height:100%;border-radius:3px;transition:width var(--motion-fast) var(--motion-curve)}
.row{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap;align-items:center}
.grp{display:flex;gap:8px;flex:1 1 160px;min-width:0}
.grp input{flex:1}
.act{flex:1;background:var(--sunk);border:1px solid var(--hair);color:var(--ink);border-radius:var(--r-ctl);padding:10px 8px;
  font-size:14px;font-weight:550;cursor:pointer;min-height:44px;
  transition:background-color var(--motion-fast) var(--motion-curve),border-color var(--motion-fast) var(--motion-curve),transform var(--motion-fast) var(--motion-curve)}
.act:hover{border-color:var(--ink)}
.act:active{transform:translateY(.5px)}
.act.on{border-color:var(--ink);background:var(--ink);color:var(--paper)}
.act.small{flex:0 0 auto;min-height:36px;padding:7px 12px;font-size:13px;border-radius:999px}
.act.warn{color:var(--bad);border-color:var(--bad)}
.act.primary{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.act.primary:hover{background:var(--ink-soft);border-color:var(--ink-soft)}
input[type=number],input[type=text],input[type=date],input[type=password],textarea{flex:1;min-width:0;background:var(--sunk);border:1px solid var(--hair);
  color:var(--ink);border-radius:var(--r-ctl);padding:10px 12px;font-size:16px;min-height:44px;font-family:inherit;
  transition:border-color var(--motion-fast) var(--motion-curve)}
input:hover,textarea:hover{border-color:var(--muted)}
textarea{resize:vertical;min-height:60px;line-height:1.4}
::placeholder{color:var(--muted);opacity:.8}
.err{font-size:13px;color:var(--bad);margin-top:6px}
.spark{width:100%;height:36px;display:block}
.two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:10px}
.tile{background:var(--surface);border:1px solid var(--hair);border-radius:var(--r);padding:12px 14px}
.tile .big{font-size:30px}
.tile .sub{font-size:12px;color:var(--muted)}
.chips{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.chip{background:var(--sunk);border:1px solid var(--hair);color:var(--ink);border-radius:999px;padding:8px 14px;font-size:14px;cursor:pointer;min-height:40px;
  transition:background-color var(--motion-fast) var(--motion-curve),border-color var(--motion-fast) var(--motion-curve),color var(--motion-fast) var(--motion-curve)}
.chip:hover{border-color:var(--ink)}
.chip.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.moodrow{display:flex;gap:6px;margin-top:8px}
.moodrow .act{padding:10px 0;font-size:16px}
.pos{color:var(--good)} .neg{color:var(--bad)}
.entry{display:flex;align-items:center;gap:8px;padding:9px 0;border-bottom:1px solid var(--hair);font-size:14px}
.entry:last-child{border-bottom:none}
.entry .t{color:var(--muted);font-size:13px;width:44px;flex:none}
.entry .v{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.entry .v.multi{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere;line-height:1.3}
.entry .v.multi .sub{display:block;font-size:13px;color:var(--muted);margin-top:2px}
.entry button{background:none;border:none;color:var(--muted);font-size:18px;cursor:pointer;padding:2px 8px;min-width:36px;min-height:36px}
.entry button:hover{color:var(--ink)}
.empty{color:var(--muted);font-size:14px;padding:6px 0}
.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:14px}
.stat{background:var(--surface);border:1px solid var(--hair);border-radius:var(--r);padding:11px 13px}
.stat b{display:block;font-family:var(--font-display);font-size:24px;font-weight:500;letter-spacing:-.015em}
.stat i{display:block;font-style:normal;font-size:12px;color:var(--muted)}
.tabs{display:flex;gap:8px;margin-bottom:14px}
.tabs button{flex:1;background:var(--surface);border:1px solid var(--hair);color:var(--muted);border-radius:var(--r-ctl);padding:9px;font-size:14px;cursor:pointer;min-height:40px;
  transition:border-color var(--motion-fast) var(--motion-curve),color var(--motion-fast) var(--motion-curve)}
.tabs button:hover{border-color:var(--ink);color:var(--ink)}
.tabs button[aria-pressed=true]{color:var(--ink);border-color:var(--ink);font-weight:600}
.back{background:none;border:none;color:var(--ink);font-size:15px;padding:4px 0 10px;cursor:pointer;min-height:44px}
.list .item{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:12px 14px;background:var(--surface);
  border:1px solid var(--hair);border-radius:var(--r);margin-bottom:8px;cursor:pointer;font-size:15px;
  transition:border-color var(--motion-fast) var(--motion-curve)}
.list .item:hover{border-color:var(--ink)}
.list .item span:first-child{min-width:0;overflow-wrap:anywhere}
.list .item span:last-child{color:var(--muted);font-size:13px;flex:none;max-width:45%;text-align:right}
.calstrip{display:grid;grid-template-columns:repeat(15,1fr);gap:4px;margin-top:12px}
.calstrip i{display:block;aspect-ratio:1;border-radius:3px;background:var(--hair)}
.calstrip i.c{background:var(--good)} .calstrip i.s{background:var(--bad)}
.corr{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--hair);font-size:14px}
.corr:last-child{border-bottom:none}
.corr .r{width:52px;flex:none;font-weight:600;text-align:right}
.corr .bar{flex:0 0 60px;height:6px}
.corr .n{color:var(--muted);font-size:12px;flex:none}
.set{background:var(--surface);border:1px solid var(--hair);border-radius:var(--r);padding:12px 14px;margin-bottom:10px}
.set .hd{display:flex;justify-content:space-between;align-items:center;font-weight:600;font-size:15px}
.set label{display:block;font-size:12px;color:var(--muted);margin:10px 0 4px}
.set input{width:100%;min-width:0;max-width:100%}
.set input[type=date]{-webkit-appearance:none;appearance:none;display:block;box-sizing:border-box}
.set .sub{font-size:13px;color:var(--muted);margin-top:6px}
.toggle{width:44px;height:26px;border-radius:13px;background:var(--hair);border:none;position:relative;cursor:pointer;flex:none;
  transition:background-color var(--motion-fast) var(--motion-curve)}
.toggle::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:var(--surface);transition:left var(--motion-fast) var(--motion-curve)}
.toggle.on{background:var(--good)} .toggle.on::after{left:21px}
nav{position:fixed;left:0;right:0;bottom:0;background:var(--surface);border-top:1px solid var(--hair);
  padding:6px 0 calc(6px + env(safe-area-inset-bottom));z-index:5}
nav .navin{max-width:480px;margin:0 auto;display:flex;justify-content:space-around}
nav button{background:none;border:none;color:var(--muted);font-size:13px;padding:8px 14px;cursor:pointer;min-height:44px;border-radius:var(--r-ctl);position:relative;
  transition:color var(--motion-fast) var(--motion-curve)}
nav button::after{content:'';position:absolute;left:14px;right:14px;bottom:4px;height:1.5px;background:currentColor;transform:scaleX(0);transform-origin:left;
  transition:transform var(--motion-fast) var(--motion-curve)}
nav button:hover,nav button:focus-visible{color:var(--ink)}
nav button:hover::after,nav button:focus-visible::after,nav button[aria-current=page]::after{transform:scaleX(1)}
nav button[aria-current=page]{color:var(--ink);font-weight:600}
#toast{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(84px + env(safe-area-inset-bottom));background:var(--ink);color:var(--paper);
  padding:10px 16px;border-radius:999px;font-size:14px;z-index:9;max-width:90vw;opacity:0;transition:opacity var(--motion-mid) var(--motion-curve);pointer-events:none}
#toast.show{opacity:1}
#rest{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(84px + env(safe-area-inset-bottom));background:var(--c-gym);color:#fff;
  padding:10px 18px;border-radius:999px;font-size:15px;font-weight:600;z-index:8;cursor:pointer;font-variant-numeric:tabular-nums;border:none}

/* ---------- gym ---------- */
.wk{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:12px}
.wk button{background:none;border:none;color:var(--muted);font-size:11px;padding:4px 0;cursor:pointer;line-height:1.2}
.wk button b{display:block;margin:4px auto 0;width:34px;height:34px;line-height:32px;border-radius:50%;font-size:14px;font-weight:500;color:var(--ink);border:1.5px solid transparent;
  transition:border-color var(--motion-fast) var(--motion-curve)}
.wk button.today{color:var(--ink);font-weight:600}
.wk button.sel b{outline:2px solid var(--ink);outline-offset:2px}
.wk .done b{background:var(--good);color:#fff;border-color:var(--good)}
.wk .missed b{border-color:var(--bad);color:var(--bad)}
.wk .scheduled b{border-color:var(--muted)}
.wk .active b{border-color:var(--info);color:var(--info)}
.exh{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.exh .nm{font-weight:600;font-size:15px;cursor:pointer;min-width:0;overflow-wrap:anywhere}
.exh .tg{font-size:12px;color:var(--muted);flex:none;max-width:48%;text-align:right}
.exnote{font-size:13px;color:var(--muted);margin-top:2px}
.prev{font-size:12px;color:var(--muted);margin-top:4px}
.sets{margin-top:8px}
.srow{display:grid;grid-template-columns:28px 1fr 1fr 44px 28px;gap:8px;align-items:center;padding:5px 0}
.srow .n{font-size:13px;color:var(--muted);text-align:center}
.srow input{min-height:40px;padding:6px 10px;font-size:16px;text-align:center}
.srow.done input{color:var(--muted)}
.srow .tick{width:40px;height:40px;border-radius:50%;border:1.5px solid var(--hair);background:var(--sunk);color:transparent;font-size:18px;cursor:pointer;
  transition:background-color var(--motion-fast) var(--motion-curve),border-color var(--motion-fast) var(--motion-curve)}
.srow.done .tick{background:var(--good);border-color:var(--good);color:#fff}
.srow .x{background:none;border:none;color:var(--muted);font-size:18px;cursor:pointer;padding:0;min-height:36px}
.shead{display:grid;grid-template-columns:28px 1fr 1fr 44px 28px;gap:8px;font-size:11px;color:var(--muted);text-align:center;margin-top:8px}
.sesshead{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px}
.sesshead h1{flex:1}
.sesshead .el{flex:none}
.sesshead .el{font-size:14px;color:var(--muted)}
.pr{background:var(--good);color:#fff;border-radius:999px;padding:2px 8px;font-size:11px;font-weight:600;margin-left:6px}
.wdays{display:flex;gap:6px;margin-top:6px}
.wdays button{flex:1;min-height:36px;border-radius:var(--r-ctl);border:1px solid var(--hair);background:var(--sunk);color:var(--muted);font-size:13px;cursor:pointer}
.wdays button.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.exedit{border:1px solid var(--hair);border-radius:var(--r);padding:10px;margin-top:8px}
.exedit .r1{display:grid;grid-template-columns:1fr 60px 76px;gap:6px}
.exedit .r2{display:grid;grid-template-columns:1fr auto auto auto;gap:6px;margin-top:6px}
.exedit input{min-height:38px;padding:6px 10px;font-size:14px}
.exedit .sm{min-height:38px;padding:0 10px;border-radius:var(--r-ctl);border:1px solid var(--hair);background:var(--sunk);color:var(--ink);cursor:pointer;font-size:14px}

/* ---------- sign in ---------- */
#v-auth{max-width:480px;margin:0 auto;padding:0 14px 24px}
#v-auth h1{font-size:28px;margin:6px 0 4px}
#v-auth .lead{color:var(--ink-soft);margin:0 0 16px;font-size:15px}
#v-auth form{background:var(--surface);border:1px solid var(--hair);border-radius:var(--r);padding:14px}
#v-auth label{display:block;font-size:12px;color:var(--muted);margin:10px 0 4px}
#v-auth label:first-child{margin-top:0}
#v-auth input{width:100%}
#v-auth .row{margin-top:14px}
#v-auth .switch{text-align:center;font-size:14px;color:var(--muted);margin-top:14px}
#v-auth .switch button{background:none;border:none;color:var(--accent);font-size:14px;cursor:pointer;text-decoration:underline;text-underline-offset:.16em;padding:6px 4px;min-height:36px}
#v-auth .flag{border-left:3px solid var(--bad);padding:2px 0 2px 12px;font-size:14px;color:var(--ink-soft);margin:18px 0 0}

/* ---------- reduced motion: the kill that actually works (RUNBOOK §1a-0) ---------- */
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{
    animation-name:none !important;
    animation-timeline:none !important;
    animation-duration:0.01ms !important;
    animation-delay:0ms !important;
    animation-iteration-count:1 !important;
    transition-duration:0.01ms !important;
  }
}

/* band-mounted day arrows (Today) */
.bandnav{position:absolute;right:8px;top:8px;display:flex;gap:4px;z-index:1}
.bandbtn{background:rgb(var(--scrim) / .35);border:1px solid rgb(247 244 239 / .35);color:var(--on-dark);font-size:22px;line-height:1;
  width:40px;height:40px;border-radius:999px;cursor:pointer;transition:background-color var(--motion-fast) var(--motion-curve)}
.bandbtn:hover{background:rgb(var(--scrim) / .6)}
.bandbtn:disabled{opacity:.35}
.bandbtn:focus-visible{outline-color:var(--on-dark)}

/* ---------- food sheet ---------- */
#timer{position:fixed;inset:0;z-index:21;background:var(--paper);overflow-y:auto;padding:env(safe-area-inset-top) 0 env(safe-area-inset-bottom)}
#food{position:fixed;inset:0;z-index:20;background:var(--paper);overflow-y:auto;overscroll-behavior:contain;padding:env(safe-area-inset-top) 0 env(safe-area-inset-bottom)}
body.sheet{overflow:hidden}
.sheet-in{max-width:480px;margin:0 auto;padding:12px 14px 24px}
.sheet-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.sheet-head h1{margin:0}
#food input[type=search]{flex:1;min-width:0;background:var(--sunk);border:1px solid var(--hair);color:var(--ink);border-radius:var(--r-ctl);padding:10px 12px;font-size:16px;min-height:44px;font-family:inherit;-webkit-appearance:none}
#food .item .sub{font-size:13px;color:var(--muted)}
#scan{margin:10px 0}
#scan-video{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;background:var(--ink);border-radius:var(--r);border:1px solid var(--hair)}
.pick{margin:10px 0}
.foodlog{margin-top:8px}

/* ---------- day score ---------- */
.score .scorerow{display:flex;align-items:center;gap:14px;margin:4px 0 6px}
.score .big{margin:0;flex:0 0 auto}
.bar.tall{height:10px;border-radius:5px;flex:1}
.bar.tall>i{transition:width var(--motion-mid) var(--motion-curve)}
.score .sub{font-size:14px;color:var(--ink-soft)}
.score .chips{margin-top:10px}

/* ---------- macros + timers ---------- */
.macros{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 14px;margin-top:6px}
.macro{cursor:pointer;min-width:0}
.macro .mname{display:block;font-size:12px;font-weight:600}
.macro .mval{display:block;font-family:var(--font-display);font-size:22px;margin:2px 0 4px}
.macro .u{font-family:var(--font-body);font-size:12px;color:var(--muted)}
.timer{text-align:center;padding-top:15vh}
.timer .tbig{font-family:var(--font-display);font-size:72px;font-weight:500;letter-spacing:-.02em;margin:18px 0}
.timer .sub{margin:12px 0;color:var(--ink-soft)}

/* ---------- report card ---------- */
.rdays{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;text-align:center}
.rday i{display:block;font-style:normal;font-size:11px;color:var(--muted)}
.rday b{display:block;font-family:var(--font-display);font-size:18px;font-weight:500}
.plan .sub{margin-top:6px;line-height:1.5}

/* ---------- categories on Today ---------- */
.catnav{margin:0 0 12px}
.catnav .chip{text-decoration:none;font-size:13px;min-height:34px;padding:6px 12px}
details.cat{margin:0 0 6px;scroll-margin-top:12px}
details.cat>summary{display:flex;justify-content:space-between;align-items:center;list-style:none;cursor:pointer;padding:12px 2px 8px;min-height:44px;border-top:1px solid var(--hair)}
details.cat>summary::-webkit-details-marker{display:none}
details.cat>summary .cname{font-family:var(--font-display);font-size:19px;font-weight:600;letter-spacing:-.01em}
details.cat>summary .cname::before{content:'\25B8';display:inline-block;margin-right:8px;font-size:13px;color:var(--muted);transition:transform var(--motion-fast) var(--motion-curve)}
details.cat[open]>summary .cname::before{transform:rotate(90deg)}

#entries details.cat>summary{border-top:none;padding-top:4px}

/* ---------- local-first additions (web/): the Import control is a label wrapping a hidden file input ---------- */
.set label.act{display:flex;align-items:center;justify-content:center;position:relative;margin:0;font-size:14px;color:var(--ink)}
.set input.sr{width:1px}
#import-out .card{margin-bottom:0}
