:root{--bg:#f5f6f8;--fg:#1c2330;--muted:#5d6676;--line:#d5d9e0;--brand:#1d4e89;--brand-d:#143a68;--ok:#1a7f4b;--warn:#9a6700;--bad:#b42318;--card:#fff}
*{box-sizing:border-box}
body{margin:0;font:16px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;background:var(--bg);color:var(--fg)}
.wrap{max-width:60rem;margin:0 auto;padding:1rem}
header.site{background:var(--brand);color:#fff}
header.site .wrap{padding:.9rem 1rem}
h1{font-size:1.6rem;margin:.5rem 0 1rem}h2{font-size:1.2rem}h3{font-size:1.05rem;margin:1.2rem 0 .4rem}
a{color:var(--brand)}
.muted{color:var(--muted)}.small{font-size:.85rem}.r{text-align:right}
.card{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:1rem 1.2rem;margin:0 0 1rem}
.card.info{border-left:4px solid var(--brand)}
fieldset{background:var(--card);border:1px solid var(--line);border-radius:8px;margin:0 0 1rem;padding:1rem 1.2rem}
legend{font-weight:600;padding:0 .4rem}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:.8rem 1rem}
.grid .wide{grid-column:1/-1}
@media(max-width:640px){.grid{grid-template-columns:1fr}}
.f{display:flex;flex-direction:column;gap:.25rem;margin-bottom:.4rem}
label{font-weight:500}
input,select,textarea{font:inherit;padding:.55rem .6rem;border:1px solid #9aa3b2;border-radius:6px;background:#fff;color:var(--fg);width:100%;min-height:2.6rem}
input[type=checkbox],input[type=radio]{width:auto;min-height:0;margin-right:.5rem}
input:focus,select:focus,textarea:focus,.btn:focus{outline:3px solid #8ab4f8;outline-offset:1px}
[aria-invalid=true]{border-color:var(--bad);background:#fff5f4}
.error{color:var(--bad);margin:.2rem 0;font-size:.92rem}
.req{color:var(--bad)}
.check{display:block;font-weight:400;margin:.5rem 0}
.radios{display:flex;gap:1.5rem;flex-wrap:wrap}.radios label{font-weight:400}
.btn{display:inline-block;font:inherit;font-weight:600;padding:.65rem 1.2rem;border-radius:6px;border:1px solid var(--brand);cursor:pointer;text-decoration:none;min-height:2.6rem}
.btn.primary{background:var(--brand);color:#fff}.btn.primary:hover{background:var(--brand-d)}
.btn.secondary{background:#fff;color:var(--brand)}
.btn.danger{background:var(--bad);border-color:var(--bad);color:#fff}
.btn.small{padding:.3rem .7rem;min-height:0;font-size:.9rem}
.btn:disabled{opacity:.6;cursor:wait}
.actions{display:flex;gap:.8rem;flex-wrap:wrap;margin:1rem 0}
form.inline{display:inline}
.alert{padding:.8rem 1rem;border-radius:6px;margin:0 0 1rem;border:1px solid}
.alert.error{background:#fef3f2;border-color:#f4b4ae;color:#7a1b12}
.alert.success{background:#ecfdf3;border-color:#a6e0bd;color:#0b4a2a}
.alert.warning{background:#fffaeb;border-color:#f0d38a;color:#6b4500}
.badge{display:inline-block;padding:.1rem .5rem;border-radius:99px;background:#e8ebf0;font-size:.85rem}
.badge.early,.badge.ok{background:#dcf5e7;color:#0b4a2a}.badge.bad{background:#fde4e1;color:#7a1b12}.badge.warn{background:#fff0c7;color:#6b4500}
.hp{position:absolute;left:-9999px;height:0;overflow:hidden}
.sum{width:100%;border-collapse:collapse}.sum td{padding:.35rem 0;border-bottom:1px solid var(--line)}.sum .total td{font-weight:700;border-bottom:0}
ul.plain{list-style:none;padding:0}
table.data{width:100%;border-collapse:collapse;background:#fff;font-size:.92rem}
table.data th,table.data td{border-bottom:1px solid var(--line);padding:.45rem .6rem;text-align:left;vertical-align:top}
table.data th{background:#eef1f5;white-space:nowrap}
.tablewrap{overflow-x:auto;border:1px solid var(--line);border-radius:8px}
nav.admin{background:#1c2330}nav.admin .wrap{display:flex;gap:1rem;flex-wrap:wrap;align-items:center;padding:.6rem 1rem}
nav.admin a{color:#fff;text-decoration:none}nav.admin a:hover{text-decoration:underline}nav.admin .sp{flex:1}
.wrap.wide{max-width:84rem}
.filters{display:grid;grid-template-columns:repeat(auto-fill,minmax(11rem,1fr));gap:.6rem;align-items:end;margin-bottom:1rem}
dl.kv{display:grid;grid-template-columns:12rem 1fr;gap:.3rem 1rem}dl.kv dt{color:var(--muted)}dl.kv dd{margin:0}
@media(max-width:640px){dl.kv{grid-template-columns:1fr}}
[hidden]{display:none!important}
svg.bars .bg{fill:#e8ebf0}svg.bars .bar{fill:#1d4e89}svg.bars .alt{fill:#6b8e23}svg.bars .full{fill:#b42318}
