/* One accent, the stripes' teal; amber only for favourites (PLAN.md § 1, rule 5). Light and dark follow the OS. */
:root {
  color-scheme: light dark;
  --accent: #466A70;
  /* The same teal for text on the page; dark mode lightens only this, since #466A70 on near-black is hard to read. */
  --accent-text: #466A70;
  --on-accent: #fff;
  --amber: #B8860B;
  --bg: #f7f6f3;
  --surface: #fff;
  --text: #1d1b19;
  --muted: #6b665f;
  --line: #e2ded7;
  /* The outline of a field or a button must reach 3:1 (WCAG 1.4.11, tests/vectors/contrast.json); --line is for dividers. */
  --control-line: #8a8378;
  --selected: #e6eeef;
  /* The eight category colours of docs/UI-REFRESH.md § 1, then the status colours; amber stays for favourites. */
  --c0: #466A70; --c1: #2F6DB5; --c2: #BF5F24; --c3: #7356B8; --c4: #2E8540; --c5: #B83F66; --c6: #8B5E3C; --c7: #5D6B79;
  --fine: #23875A; --waiting: #B7740F; --failed: #C42B1C;
  --tint: 16%;
  --shadow: 0 1px 2px rgb(0 0 0 / .05), 0 4px 14px rgb(0 0 0 / .05);
  font: 15px/1.45 system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
}
@media (prefers-color-scheme: dark) {
  :root {
    --accent-text: #8fb3b9;
    --amber: #e0a830;
    --bg: #1b1917;
    --surface: #24211f;
    --text: #ece8e1;
    --muted: #a39d94;
    --line: #3a3532;
    --control-line: #7d766f;
    --selected: #2c3a3c;
    --c0: #8FB3B9; --c1: #7EB0EA; --c2: #F2A26E; --c3: #B59DEB; --c4: #7CCB8B; --c5: #F08DAE; --c6: #D2A27E; --c7: #A5B1BD;
    --fine: #4CC38A; --waiting: #E7A93B; --failed: #FF99A4;
    --tint: 28%;
    --shadow: none;
  }
}
* { box-sizing: border-box; }
body { margin: 0; background: var(--bg); color: var(--text); }
main { max-width: 760px; margin: 0 auto; padding: 16px; }
h1, h2, h3 { margin: 0; font-weight: 600; }
h2 { font-size: 1.2rem; }
h3 { font-size: 1rem; margin-bottom: 8px; }
.brand { font-size: 1.3rem; color: var(--accent-text); margin-right: auto; }
header { display: flex; align-items: center; gap: 8px; margin-bottom: 12px; flex-wrap: wrap; }
header h2 { margin-right: auto; }

input, textarea, select, button { font: inherit; color: inherit; }
input, textarea, select {
  width: 100%; padding: 8px 10px; border: 1px solid var(--control-line); border-radius: 8px; background: var(--surface);
}
input:focus, textarea:focus, select:focus, button:focus-visible { outline: 2px solid var(--accent-text); outline-offset: 1px; }
textarea { resize: vertical; }
button {
  padding: 7px 14px; border: 1px solid var(--control-line); border-radius: 8px; background: var(--surface); cursor: pointer;
}
button.accent { background: var(--accent); border-color: var(--accent); color: var(--on-accent); }
button[aria-pressed="true"] { border-color: var(--accent-text); color: var(--accent-text); }

.card, .signin { background: var(--surface); border: 1px solid var(--line); border-radius: 12px; padding: 16px; margin-bottom: 12px; }
.signin { max-width: 380px; margin: 10vh auto 0; display: grid; gap: 10px; }
.muted, .preview, .hint, .status, .empty { color: var(--muted); }
.muted { font-size: .9rem; }
.actions { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 8px; }
.field { display: grid; gap: 4px; margin-bottom: 10px; }
.field > span { font-size: .9rem; color: var(--muted); }
.check { display: flex; align-items: center; gap: 8px; }
.check input { width: auto; }
.toggles { display: flex; gap: 6px; margin: 10px 0; }

.list { list-style: none; margin: 0; padding: 0; }
.list li { border-bottom: 1px solid var(--line); }
.list li > a, .palette li, .devices li { display: flex; align-items: baseline; gap: 8px; padding: 9px 4px; color: inherit; text-decoration: none; }
.list li.empty { padding: 16px 4px; border: 0; }
.title { font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.preview { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.star { color: transparent; width: 1em; }
.star.on { color: var(--amber); }
.tag { margin-inline-start: 8px; font-size: .8rem; color: var(--accent-text); }
.devices li { flex-wrap: wrap; }
.passkeys { margin-top: 18px; }

dialog { border: 1px solid var(--line); border-radius: 12px; background: var(--surface); color: var(--text); padding: 16px; }
dialog::backdrop { background: rgb(0 0 0 / .35); }
.ask { max-width: 420px; }
.palette { width: min(560px, 94vw); margin-top: 12vh; padding: 10px; }
.palette li { cursor: pointer; border-radius: 6px; border: 0; }
.palette li.selected { background: var(--selected); }
.palette .hint { font-size: .85rem; margin: 8px 4px 0; }
.chips { display: flex; gap: 6px; flex-wrap: wrap; }
.chip { padding: 3px 10px; border-radius: 999px; font-size: .9rem; }
.palette li.save { color: var(--accent-text); }
.quicksave { display: grid; gap: 10px; }
.legal { max-width: 720px; margin: 0 auto; padding: 24px 16px 48px; line-height: 1.55; }
.legal a { color: var(--accent-text); }
.legal h2 { margin-top: 1.6em; font-size: 1.1rem; }
.quicksave .actions { display: flex; justify-content: space-between; align-items: center; }
button.link { background: none; border: 0; color: var(--accent-text); padding: 4px; }
/* The assistant (PLAN.md § 11): the Plus pill, the side-by-side suggestion, the template preview. */
.plus { margin-inline-start: 6px; padding: 0 7px 1px; border-radius: 8px; font-size: .72rem; font-weight: 600; background: var(--selected); color: var(--accent-text); }
.ask.wide { max-width: min(860px, 94vw); }
.compare { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; max-height: 60vh; overflow: auto; }
.compare h4, .template h4 { margin: 0 0 4px; font-size: .85rem; color: var(--muted, inherit); }
.pre { white-space: pre-wrap; }
.template { display: grid; gap: 8px; max-height: 60vh; overflow: auto; }
.chip[aria-pressed="true"] { background: var(--selected); color: var(--accent-text); }
.menu { display: grid; gap: 4px; min-width: 260px; }
.menu button { text-align: start; }
.menu h4 { margin: 6px 0 2px; font-size: .85rem; }

/* UI refresh (docs/UI-REFRESH.md): icons, colour dots, tinted badges, status colours. */
.c0 { --tone: var(--c0); } .c1 { --tone: var(--c1); } .c2 { --tone: var(--c2); } .c3 { --tone: var(--c3); }
.c4 { --tone: var(--c4); } .c5 { --tone: var(--c5); } .c6 { --tone: var(--c6); } .c7 { --tone: var(--c7); }
.icon { width: 1.15em; height: 1.15em; fill: currentColor; flex: none; vertical-align: -0.2em; }
button { display: inline-flex; align-items: center; gap: 6px; border-radius: 999px; }
button.icon-only { padding: 7px; border-color: transparent; background: none; }
button.icon-only:hover, button.link:hover { background: var(--selected); }
button.danger, .danger { color: var(--failed); }
.dot { display: inline-block; width: 10px; height: 10px; border-radius: 50%; background: var(--tone); flex: none; align-self: center; }
.dot.none { background: transparent; }
.badge { display: inline-grid; place-items: center; width: 36px; height: 36px; border-radius: 50%; flex: none;
  color: var(--tone); background: color-mix(in srgb, var(--tone) var(--tint), transparent); }
.badge .icon { width: 20px; height: 20px; vertical-align: 0; }
.card { border-radius: 16px; padding: 18px; box-shadow: var(--shadow); }
.card-head { display: flex; align-items: center; gap: 12px; margin-bottom: 10px; }
.card-head h3 { margin: 0; font-size: 1.1rem; }
.info { color: var(--muted); display: inline-flex; cursor: help; }
.status { display: flex; align-items: center; gap: 6px; }
.status.fine { color: var(--fine); } .status.waiting { color: var(--waiting); } .status.failed { color: var(--failed); }
.star .icon { width: 1em; height: 1em; }
.star { color: transparent; display: inline-flex; }
.star.on { color: var(--amber); }
.row-main { display: grid; gap: 1px; min-width: 0; flex: 1; }
.row-main .title { display: flex; align-items: center; gap: 6px; }
.chip { display: inline-flex; align-items: center; gap: 6px; }
.chip[aria-pressed="true"].tinted { background: color-mix(in srgb, var(--tone) var(--tint), transparent); border-color: var(--tone); color: inherit; }
.swatches { display: flex; gap: 8px; flex-wrap: wrap; }
.swatch { width: 26px; height: 26px; padding: 0; border-radius: 50%; background: var(--tone); border: 2px solid var(--surface); outline: 2px solid transparent; }
.swatch[aria-pressed="true"] { outline-color: var(--text); }
.category-row { display: flex; align-items: center; gap: 8px; }
.category-row select { flex: 1; }
.search { position: relative; }
.search .icon { position: absolute; inset-inline-start: 12px; top: 50%; transform: translateY(-50%); color: var(--muted); }
.search input { padding-inline-start: 38px; border-radius: 999px; }
.devices li .badge { width: 30px; height: 30px; }
.list li > a .dot { align-self: flex-start; margin-top: 7px; }
.sparkle { color: var(--tone); display: inline-flex; }
.star.off { color: var(--muted); }
.palette li .dot { margin-inline-end: 2px; }
.palette li.save { align-items: center; }
[dir="rtl"] .icon.mirror { transform: scaleX(-1); }
