:root{
  --bg:#f5f3ee; --surface:#ffffff; --ink:#1d2329; --muted:#5d6670; --line:#e1ddd3;
  --accent:#0f5b5c; --accent-soft:#e3efee; --accent-ink:#ffffff;
  --good:#1f7a4d; --good-soft:#e2f2e9; --warn:#a2650a; --warn-soft:#fbf0dc; --bad:#a63a32; --bad-soft:#f8e3e0;
  --r:14px; --shadow:0 1px 2px rgba(20,30,40,.06),0 4px 16px rgba(20,30,40,.05);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  color:var(--ink); -webkit-text-size-adjust:100%;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);line-height:1.45}
h1,h2,h3{line-height:1.2;margin:0 0 .4em}
h1{font-size:1.45rem} h2{font-size:1.2rem} h3{font-size:1.05rem}
p{margin:.3em 0 .8em}
a{color:var(--accent)}
.wrap{max-width:900px;margin:0 auto;padding:16px}
.wide{max-width:1240px}
header.top{background:var(--accent);color:#fff;padding:14px 0}
header.top .wrap{padding-top:0;padding-bottom:0;display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap}
header.top .t{font-weight:650;font-size:1.02rem}
header.top .s{opacity:.8;font-size:.85rem}
.pill{display:inline-block;padding:3px 10px;border-radius:999px;font-size:.8rem;font-weight:600;background:var(--accent-soft);color:var(--accent)}
.pill.good{background:var(--good-soft);color:var(--good)} .pill.warn{background:var(--warn-soft);color:var(--warn)}
.pill.bad{background:var(--bad-soft);color:var(--bad)} .pill.grey{background:#ecebe6;color:var(--muted)}
header.top .pill{background:rgba(255,255,255,.16);color:#fff}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:18px;margin:14px 0;box-shadow:var(--shadow)}
.muted{color:var(--muted)} .small{font-size:.86rem}
button,.btn{font:inherit;border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:10px;padding:10px 16px;cursor:pointer;
  text-decoration:none;display:inline-flex;align-items:center;gap:6px;min-height:44px;font-weight:550}
button:hover,.btn:hover{border-color:#c9c3b6}
button.primary,.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}
button.danger{color:var(--bad);border-color:#e5c2bd}
button:disabled{opacity:.45;cursor:not-allowed}
button.sm{min-height:34px;padding:5px 10px;font-size:.86rem}
input[type=text],input[type=password],input[type=number],textarea,select{font:inherit;width:100%;padding:11px 12px;border:1px solid var(--line);
  border-radius:10px;background:#fff;color:var(--ink)}
textarea{min-height:76px;resize:vertical}
input:focus,textarea:focus,button:focus-visible{outline:3px solid rgba(15,91,92,.25);outline-offset:1px}
label.f{display:block;font-weight:600;font-size:.9rem;margin:10px 0 5px}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.grow{flex:1}
table{width:100%;border-collapse:collapse;font-size:.92rem}
th,td{text-align:left;padding:8px 8px;border-bottom:1px solid var(--line);vertical-align:top}
th{font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:650}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}
.toast{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);background:var(--ink);color:#fff;padding:10px 16px;border-radius:10px;
  font-size:.9rem;z-index:50;opacity:0;transition:opacity .2s;pointer-events:none;max-width:90vw}
.toast.on{opacity:1}
.bar{height:10px;background:#ecebe6;border-radius:6px;overflow:hidden;position:relative}
.bar>i{position:absolute;left:0;top:0;bottom:0;background:var(--accent);border-radius:6px}
.bar .thr{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--ink);opacity:.55}
.hist{display:flex;gap:4px;align-items:flex-end;height:54px}
.hist div{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;font-size:.72rem;color:var(--muted)}
.hist b{display:block;width:100%;background:#b9cfcd;border-radius:4px 4px 0 0;min-height:2px}
.hist div.hi b{background:var(--accent)}
.hist div.me b{outline:2px solid var(--warn);outline-offset:1px}
@media (max-width:560px){h1{font-size:1.25rem}.card{padding:14px}}
@media print{header.top,.noprint{display:none!important}body{background:#fff}.card{box-shadow:none;border-color:#ccc;break-inside:avoid}}
