@font-face { font-family:"Public Sans"; src:url(/fonts/public-sans-var.woff2) format("woff2"); font-weight:100 900; font-display:swap; }
:root { --ink:#0b1c24; --muted:#4b5b63; --line:#d5e1dd; --bg:#f6faf8; --brand:#1f7864; --err:#b42318; --warn:#9a6700; --fix:#175cd3; --ok:#067647; }
* { box-sizing: border-box; }
body { margin:0; font: 16px/1.5 "Public Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; color:var(--ink); background:var(--bg); }
.wrap { max-width: 1100px; margin: 0 auto; padding: 0 16px; }
.top { background:#fff; color:var(--ink); border-bottom:1px solid var(--line); padding: 12px 0; }
.topbar { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:4px 16px; }
.home { display:inline-flex; align-items:center; gap:10px; color:var(--ink); text-decoration:none; min-height:44px; }
.home .mark { height:32px; width:auto; }
.brand { font-weight: 750; font-size: 19px; letter-spacing:-.01em; }
.tag { color:var(--muted); font-size: 14px; }
a { color:#17604f; }
a:focus-visible, button:focus-visible, select:focus-visible, input:focus-visible { outline:3px solid #ffdd00; outline-offset:0; box-shadow:0 0 0 6px #0b0c0c; }
.notice { background:#fff8e6; border:1px solid #f1d38b; border-radius:8px; padding:12px 14px; margin-top:16px; font-size:14px; }
.card { background:#fff; border:1px solid var(--line); border-radius:10px; padding:18px 20px; margin:16px 0; }
.card h2 { margin:0 0 8px; font-size:20px; }
.n { display:inline-block; width:28px; height:28px; border-radius:50%; background:var(--brand); color:#fff; text-align:center; line-height:28px; font-size:15px; margin-right:6px; }
.hidden { display:none; }
.drop { display:block; border:2px dashed var(--line); border-radius:10px; padding:28px; text-align:center; cursor:pointer; color:var(--muted); }
.drop.over { border-color: var(--brand); background:#eef8f3; }
.drop input { display:none; }
.small { font-size: 13px; color: var(--muted); }
.grid2 { display:grid; grid-template-columns: 1fr 1fr; gap: 12px 20px; margin: 12px 0; }
.grid2 label { display:flex; flex-direction:column; gap:4px; font-size:14px; }
.grid2 label:has(input[type=checkbox]) { flex-direction:row; align-items:center; }
.inline { display:flex; gap:6px; } .inline input { width: 70px; }
input[type=text], input[type=number], select { font: inherit; padding:6px 8px; border:1px solid var(--line); border-radius:6px; background:#fff; }
button { font: inherit; padding:8px 14px; border-radius:6px; border:1px solid var(--line); background:#fff; cursor:pointer; }
button.primary { background: var(--brand); color:#fff; border-color: var(--brand); font-weight:600; }
button:disabled { opacity:.5; cursor:not-allowed; }
table { border-collapse: collapse; width:100%; font-size:14px; }
th, td { text-align:left; padding:6px 8px; border-bottom:1px solid var(--line); vertical-align:top; }
th { background:#f0f2f5; }
.tablewrap th { position: sticky; top: 0; }
.map td:first-child { width: 34%; }
.map .req::after { content:" *"; color: var(--err); }
.tablewrap { max-height: 420px; overflow:auto; border:1px solid var(--line); border-radius:8px; }
.stats { display:grid; grid-template-columns: repeat(auto-fit, minmax(140px,1fr)); gap:10px; margin-bottom:12px; }
.stat { border:1px solid var(--line); border-radius:8px; padding:10px; }
.stat b { display:block; font-size:22px; }
.stat.err b { color: var(--err); } .stat.warn b { color: var(--warn); } .stat.ok b { color: var(--ok); } .stat.fix b { color: var(--fix); }
.filters { display:flex; gap:8px; flex-wrap:wrap; margin-bottom:8px; }
.filters button.on { background: var(--ink); color:#fff; border-color: var(--ink); }
.lvl { font-weight:600; font-size:12px; text-transform: uppercase; }
.lvl.error { color: var(--err); } .lvl.warning { color: var(--warn); } .lvl.fixed { color: var(--fix); } .lvl.excluded, .lvl.info { color: var(--muted); }
#downloads li { margin: 6px 0; }
footer { padding: 10px 16px 40px; }
@media (max-width: 720px) { .grid2 { grid-template-columns: 1fr; } }
:root { --brand:#1d4f91; }
a { color:#1d4f91; }
.n { background:#1d4f91; }
.modes { border:1px solid var(--line); border-radius:8px; margin:12px 0; padding:8px 12px; }
.modes label { display:block; margin:6px 0; font-size:15px; }
.modes select { margin-left:6px; max-width: 100%; }
.tablewrap.tall { max-height: 560px; }
.map input[type=text] { width: 100%; }
.map .help { display:block; font-size:12px; color:var(--muted); }
#sheetCounts { margin: 0 0 10px; }
button.primary { background:#1d4f91; border-color:#1d4f91; }
