/* Callers here are mostly retirees working a laptop. Big type, high contrast,
   nothing that needs a steady hand. Colours match build_call_list.py's workbook
   so the app and the printed sheet feel like the same thing. */
:root{
  --navy:#1E3A5F; --brass:#8A6D24; --stop:#8C3A2E; --go:#1F6B3A;
  --ink:#1a1d21; --dim:#5d6570; --line:#d9dee5; --bg:#f4f6f9; --card:#fff;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);
  font:17px/1.5 -apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}
main{max-width:1180px;margin:0 auto;padding:18px}
.hidden{display:none !important}
/* an author `display:` beats the UA stylesheet's [hidden] rule, so say it here --
   otherwise the "try the other number" button shows up empty on every voter who
   only has one number on file */
[hidden]{display:none !important}

.bar{background:var(--navy);color:#fff;display:flex;align-items:center;gap:16px;
  padding:11px 20px}
.brand{font-weight:700;letter-spacing:.08em;font-size:15px}
.brand span{font-weight:400;opacity:.75;letter-spacing:.02em}
.bar .who{margin-left:auto;font-weight:600}
.bar .counts{opacity:.85;font-variant-numeric:tabular-nums}
.inline{display:inline}
.link{background:none;border:0;color:#cfe0f5;cursor:pointer;font-size:15px;
  text-decoration:underline;padding:0}
a.link{text-decoration:underline}

.card{background:var(--card);border:1px solid var(--line);border-radius:10px;
  padding:20px;margin-bottom:14px}
h1{font-size:30px;margin:0 0 6px}
h2{font-size:16px;text-transform:uppercase;letter-spacing:.06em;color:var(--brass);
  margin:0 0 10px}
h3{font-size:14px;color:var(--dim);margin:16px 0 6px;font-weight:600}
.lead{font-size:19px;color:var(--dim);margin:.2em 0 1em}
.fine{font-size:14px;color:var(--dim)}
.dim{color:var(--dim)}
.err{color:var(--stop);font-weight:600;margin-top:10px;min-height:1.2em}
.warn{color:var(--stop)}

button{font:inherit}
.big{display:block;width:100%;padding:18px;border:0;border-radius:9px;
  font-size:21px;font-weight:700;color:#fff;cursor:pointer}
.big.go{background:var(--go)}
.big.end{background:var(--stop)}
.big:disabled{background:#9aa3ad;cursor:not-allowed}
.ghost{display:inline-block;margin-top:10px;padding:11px 16px;border:1px solid var(--line);
  background:#fff;border-radius:8px;cursor:pointer;color:var(--dim)}
.ghost.wide{display:block;width:100%}
.chip{padding:11px 15px;margin:0 7px 7px 0;border:1.5px solid var(--line);background:#fff;
  border-radius:20px;cursor:pointer;font-size:16px}
.chip.on{background:var(--navy);border-color:var(--navy);color:#fff}
.chip[data-outcome="STOP"]{border-color:var(--stop);color:var(--stop);font-weight:700}
.chip[data-outcome="STOP"].on{background:var(--stop);border-color:var(--stop);color:#fff}
.row{display:flex;flex-wrap:wrap}

.login{max-width:380px;margin:9vh auto}
.login label{display:block;margin:0 0 14px;font-weight:600}
.login input{display:block;width:100%;margin-top:5px;padding:13px;font-size:18px;
  border:1px solid var(--line);border-radius:8px}

.cols{display:grid;grid-template-columns:1fr 360px;gap:16px}
@media (max-width:900px){.cols{grid-template-columns:1fr}}

.voter h1{font-size:34px}
.voter .meta{color:var(--dim);margin:.2em 0}
.voter .phone{font-size:30px;font-weight:700;letter-spacing:.02em;margin:.35em 0 .1em;
  font-variant-numeric:tabular-nums}
.voter .line{font-size:14px;color:var(--dim);margin:0}
.state{margin-top:12px;font-size:17px;font-weight:600;color:var(--go);min-height:1.3em}

.said textarea{display:block;width:100%;margin-top:6px;padding:11px;font:inherit;
  border:1px solid var(--line);border-radius:8px;resize:vertical}
.said{display:block;margin:16px 0;font-weight:600}

.script .sh{font-weight:700;margin:14px 0 2px;font-size:15px}
.script .sb{margin:0;color:#333;font-size:15px}
.rules ul{margin:0;padding-left:18px;font-size:14px;color:#333}
.rules li{margin-bottom:8px}
.rules li.stop{color:var(--stop);font-weight:600}

.admin table{width:100%;border-collapse:collapse;margin-bottom:22px;font-size:15px}
.admin th{text-align:left;background:var(--navy);color:#fff;padding:7px 9px;font-weight:600}
.admin td{padding:7px 9px;border-bottom:1px solid var(--line);
  font-variant-numeric:tabular-nums}
dialog{border:0;border-radius:10px;padding:22px;box-shadow:0 12px 40px rgba(0,0,0,.25)}
dialog select{display:block;width:100%;padding:11px;font:inherit;margin:10px 0;
  border:1px solid var(--line);border-radius:8px}
dialog menu{display:flex;gap:10px;justify-content:flex-end;padding:0;margin:14px 0 0}
dialog button{padding:11px 16px;border-radius:8px;border:1px solid var(--line);
  background:#fff;cursor:pointer}
dialog button.go{background:var(--go);color:#fff;border-color:var(--go)}
