/* ---------- Reset & theme tokens ---------- */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg:#f4f6f8;
  --surface:#ffffff;
  --text:#1d2733;
  --muted:#5b6b7b;
  --border:#d7dee6;
  --accent:#1663c7;
  --accent-hover:#0e4fa3;
  /* Fix (Phase 3 contrast): solid tokens for white-text backgrounds.
     Light values equal the text accents (white on #1663c7 = 5.76:1, AA). */
  --accent-solid:#1663c7;
  --accent-solid-hover:#0e4fa3;
  --danger:#c0392b;
  --danger-solid:#c0392b;
  --danger-bg:#fdecea;
  /* Fix (clear actions): amber warning token for the persistent "Changes not saved."
     indicator. #8a5a00 on the white surface = 5.9:1 (WCAG AA). */
  --warn:#8a5a00;
  --radius:10px;
  --shadow:0 1px 3px rgba(16,24,40,.08);
  /* Fix (settings): user-adjustable scales (set on <html> pre-paint + by the settings modal).
     --app-font-scale scales rem-based text; --app-icon-scale scales icon glyphs. Default 100%. */
  --app-font-scale:1;
  --app-icon-scale:1;
}
:root[data-theme="dark"]{
  --bg:#12161c;
  --surface:#1b222b;
  --text:#e8edf3;
  --muted:#9aa8b6;
  --border:#2c3642;
  --accent:#4d94f0;
  --accent-hover:#6ba7f4;
  /* Fix (Phase 3 contrast): --danger #e05a4e -> #e8715f — danger text was 4.38:1 on
     surface and 3.98:1 on danger-bg; now 5.31:1 and 4.82:1 (WCAG AA). */
  --danger:#e8715f;
  /* Fix (Phase 3 contrast): solid backgrounds for white text — white on #4d94f0 was
     only 3.08:1; #2f6fc0 gives 5.05:1, hover #27629f 6.30:1, #b33629 6.04:1 (AA). */
  --accent-solid:#2f6fc0;
  --accent-solid-hover:#27629f;
  --danger-solid:#b33629;
  --danger-bg:#3a2320;
  /* Fix (clear actions): amber on the dark surface #1b222b = 7.4:1 (WCAG AA). */
  --warn:#e8a33d;
  --shadow:0 1px 3px rgba(0,0,0,.4);
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#12161c;
    --surface:#1b222b;
    --text:#e8edf3;
    --muted:#9aa8b6;
    --border:#2c3642;
    --accent:#4d94f0;
    --accent-hover:#6ba7f4;
    /* Fix (Phase 3 contrast): mirror of the data-theme block — see comments there. */
    --danger:#e8715f;
    --accent-solid:#2f6fc0;
    --accent-solid-hover:#27629f;
    --danger-solid:#b33629;
    --danger-bg:#3a2320;
    /* Fix (clear actions): mirror of the data-theme block — see comment there. */
    --warn:#e8a33d;
    --shadow:0 1px 3px rgba(0,0,0,.4);
  }
}
html{font-size:calc(16px * var(--app-font-scale));-webkit-text-size-adjust:100%;overflow-y:scroll} /* Fix (settings): was 16px hard-coded */
body{
  font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  background:var(--bg);color:var(--text);
  min-height:100vh;
  padding:calc(env(safe-area-inset-top,0px) + 1rem) 1rem calc(env(safe-area-inset-bottom,0px) + 2.5rem);
}
.wrap{max-width:880px;margin:0 auto;display:flex;flex-direction:column;gap:1rem}
/* Fix (Phase 3 landmarks): <main> replicates .wrap spacing so wrapping the content changes no visuals */
#appMain{display:flex;flex-direction:column;gap:1rem}

