/* Palette: ink, paper, copper, verdigris. System fonts only, so the app works offline. */
:root{
  --bg:#F1ECE1; --panel:#FBF8F1; --fg:#0F1E2A; --muted:#55606A; --line:#CFC7B6;
  --accent:#8A4620; --accent-soft:#EBD9C8; --ok:#1E4A46; --ok-soft:#D3E3DF;
  --warn:#8A5A00; --warn-soft:#F2E3BE; --crit:#9A2F1F; --crit-soft:#F1D3CC; --side:#0F1E2A; --side-fg:#E8E2D4;
  --display:'Iowan Old Style','Palatino Linotype',Palatino,Georgia,serif;
  --body:system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  --mono:ui-monospace,'SF Mono',Menlo,Consolas,monospace;
}
@media (prefers-color-scheme:dark){:root{
  --bg:#0F1E2A; --panel:#16293A; --fg:#F1ECE1; --muted:#A9B3BA; --line:#2C4154;
  --accent:#E39A66; --accent-soft:#3A2D26; --ok:#6FB3A8; --ok-soft:#183A39;
  --warn:#E2B450; --warn-soft:#3B3220; --crit:#F0877A; --crit-soft:#432622; --side:#0A1620; --side-fg:#E8E2D4; color-scheme:dark}}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--bg);color:var(--fg);font:15px/1.5 var(--body)}
h1,h2,h3{font-family:var(--display);font-weight:600;line-height:1.15;margin:0;text-wrap:balance}
h1{font-size:28px} h2{font-size:22px} h3{font-size:17px}
a{color:var(--accent)}
.mono{font-family:var(--mono)}
.eyebrow{font:500 12px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--accent)}
.note{font-size:13px;color:var(--muted)}
button:focus-visible,select:focus-visible,input:focus-visible,textarea:focus-visible,summary:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

.shell{display:grid;grid-template-columns:230px minmax(0,1fr);min-height:100vh}
.side{background:var(--side);color:var(--side-fg);padding:18px 14px;display:flex;flex-direction:column;gap:4px;position:sticky;top:0;height:100vh;overflow:auto}
.side .brand{font:600 20px var(--display);padding:4px 10px 14px}
.side .brand small{display:block;font:500 11px var(--mono);letter-spacing:.1em;color:#E39A66;text-transform:uppercase}
.side a{color:var(--side-fg);text-decoration:none;padding:8px 10px;border-left:3px solid transparent;font-size:14px}
.side a[aria-current=page]{border-left-color:#E39A66;background:rgba(255,255,255,.07)}
.side a:hover{background:rgba(255,255,255,.05)}
.side .sp{flex:1}
.side .who{font-size:12px;padding:8px 10px;color:#A9B3BA}
.side button{background:none;border:1px solid #2C4154;color:var(--side-fg);padding:6px 10px;cursor:pointer;font:13px var(--body);text-align:left}
main{padding:22px max(18px,env(safe-area-inset-right,0px)) 60px max(18px,env(safe-area-inset-left,0px));min-width:0;max-width:1240px}
.banner{background:var(--accent-soft);border-left:3px solid var(--accent);padding:8px 12px;font-size:13px;margin-bottom:16px}
.top{display:flex;flex-wrap:wrap;gap:12px 20px;justify-content:space-between;align-items:flex-end;margin-bottom:16px}
.row{display:flex;flex-wrap:wrap;gap:12px;align-items:center}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:16px}
.stat{background:var(--panel);border:1px solid var(--line);padding:10px 14px}
.stat b{display:block;font:600 26px var(--display);font-variant-numeric:tabular-nums}
.stat span{font-size:12px;color:var(--muted)}
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:16px;margin-bottom:16px}
.card{background:var(--panel);border:1px solid var(--line);padding:16px;display:flex;flex-direction:column;gap:10px;min-width:0}
.col{display:flex;flex-direction:column;gap:16px;min-width:0}
.split{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:16px}
.controls{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:12px;align-items:end}
label.f{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}
select,input[type=text],input[type=password],input[type=number],textarea{font:14px var(--body);background:var(--panel);color:var(--fg);border:1px solid var(--line);padding:7px 9px;min-width:0}
textarea{width:100%;min-height:80px;resize:vertical}
textarea.code{font:12px/1.4 var(--mono);min-height:110px}
.btn{font:500 13px var(--body);background:var(--fg);color:var(--bg);border:0;padding:8px 14px;cursor:pointer}
.btn.ghost{background:none;color:var(--fg);border:1px solid var(--line)}
.btn.small{padding:4px 9px;font-size:12px}
.btn[disabled]{opacity:.4;cursor:not-allowed}
.tablebox{overflow-x:auto;border:1px solid var(--line);background:var(--panel)}
table{border-collapse:collapse;width:100%;font-variant-numeric:tabular-nums}
th{font:500 11px var(--mono);letter-spacing:.06em;text-transform:uppercase;text-align:left;color:var(--muted);padding:9px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
th.sort{cursor:pointer} th.sort:hover{color:var(--fg)}
td{padding:9px 10px;border-bottom:1px solid var(--line);vertical-align:top;font-size:14px}
tr:last-child td{border-bottom:0}
.num{text-align:right}
.pill{display:inline-block;padding:2px 9px;font:500 12px var(--mono);border-radius:999px;white-space:nowrap}
.t-high{background:var(--crit-soft);color:var(--crit)} .t-rev{background:var(--warn-soft);color:var(--warn)} .t-mon{background:var(--ok-soft);color:var(--ok)} .t-na{background:var(--line);color:var(--muted)}
.chip{display:inline-block;font-size:12px;padding:1px 7px;border:1px solid var(--line);margin:1px 3px 1px 0;color:var(--muted)}
.bar{height:8px;background:var(--line);position:relative;min-width:50px}
.bar i{position:absolute;inset:0 auto 0 0;background:var(--accent)}
.ladder{list-style:none;margin:0;padding:0}
.ladder li{display:grid;grid-template-columns:28px 1fr auto;gap:10px;padding:8px 0;border-bottom:1px solid var(--line);align-items:start}
.ladder li:last-child{border-bottom:0}
.rung{width:24px;height:24px;border:1.5px solid var(--muted);display:grid;place-items:center;font:500 12px var(--mono);color:var(--muted)}
.met .rung{background:var(--ok);border-color:var(--ok);color:var(--bg)}
.cur .rung{border-color:var(--accent);color:var(--accent)}
.ladder small{color:var(--muted);display:block}
.log{font:12px/1.5 var(--mono);color:var(--muted);margin:0;padding:0;list-style:none}
.log li{padding:6px 0;border-bottom:1px dotted var(--line)}
svg text{fill:var(--muted);font:11px var(--mono)}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--muted)}
.sw{display:inline-block;width:10px;height:10px;margin-right:5px;vertical-align:-1px}
.err{color:var(--crit);font-size:13px;min-height:1.2em}
.ok{color:var(--ok);font-size:13px}
details{background:var(--panel);border:1px solid var(--line);padding:10px 14px}
summary{cursor:pointer;font-weight:500}
.wgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px 24px;margin-top:12px}
.wgrid label{display:flex;flex-direction:column;gap:2px;font-size:12px}
.empty{padding:28px;border:1px dashed var(--line);text-align:center;color:var(--muted)}
.prose p,.prose li{max-width:72ch}
.five dt{font-weight:600;margin-top:10px} .five dd{margin:2px 0 0;color:var(--muted)}
.modal{position:fixed;inset:0;background:rgba(0,0,0,.45);display:grid;place-items:center;padding:16px;z-index:20}
.modal>div{background:var(--panel);border:1px solid var(--line);padding:20px;max-width:640px;width:100%;max-height:90vh;overflow:auto;display:flex;flex-direction:column;gap:12px}
.login{min-height:100vh;display:grid;place-items:center;padding:16px}
.login form{background:var(--panel);border:1px solid var(--line);padding:26px;max-width:380px;width:100%;display:flex;flex-direction:column;gap:12px}
@media (max-width:860px){
  .shell{grid-template-columns:minmax(0,1fr)}
  .side{position:static;height:auto;flex-direction:row;flex-wrap:wrap;align-items:center}
  .side .brand{width:100%} .side .sp{display:none}
  .split{grid-template-columns:minmax(0,1fr)}
}

.memo{border:1px solid var(--line);padding:6px 18px;max-height:52vh;overflow:auto;font-size:14px;line-height:1.55}
.memo h1{font-size:22px;margin:4px 0}.memo h2{font-size:16px;margin:20px 0 6px;border-bottom:1px solid var(--line);padding-bottom:4px}
.memo-disc{border-left:3px solid var(--accent,#8a4620);padding:6px 12px;font-size:13px}
@media print{.side,.row,.btn{display:none!important}}
[hidden]{display:none!important}
pre.mono{background:var(--bg,#f3f5f6);border:1px solid var(--line,#d3dade);padding:12px;white-space:pre;overflow-x:auto}
