:root{
  --bg:#f5f6f8; --panel:#ffffff; --ink:#1b1f24; --muted:#5d6672; --line:#dde1e6; --soft:#eef1f4;
  --accent:#1f5fa8; --accent-soft:#e3edf8; --ok:#1d7a46; --ok-soft:#e2f3e9; --bad:#b42318; --bad-soft:#fbe7e5;
  --warn:#9a6700; --warn-soft:#fff4d6; --water:#2f80c8; --pipe:#3a3f46;
  --soil1:#d9c7a3; --soil2:#c9b08a; --soil3:#b99d76; --soil4:#e6d8b8; --soil5:#a88b66; --native:#e9e4da;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#14171b; --panel:#1c2026; --ink:#e7eaee; --muted:#9aa4b1; --line:#2e343c; --soft:#242a31;
    --accent:#6ea8ea; --accent-soft:#1d2d40; --ok:#4cc38a; --ok-soft:#163626; --bad:#f07067; --bad-soft:#3a1d1b;
    --warn:#e0b84d; --warn-soft:#3a3018; --water:#5aa6e8; --pipe:#c5ccd5;
    --soil1:#6b5a3e; --soil2:#5e4e35; --soil3:#52432d; --soil4:#776647; --soil5:#463826; --native:#2b2823;
  }
}
:root[data-theme="dark"]{
  --bg:#14171b; --panel:#1c2026; --ink:#e7eaee; --muted:#9aa4b1; --line:#2e343c; --soft:#242a31;
  --accent:#6ea8ea; --accent-soft:#1d2d40; --ok:#4cc38a; --ok-soft:#163626; --bad:#f07067; --bad-soft:#3a1d1b;
  --warn:#e0b84d; --warn-soft:#3a3018; --water:#5aa6e8; --pipe:#c5ccd5;
  --soil1:#6b5a3e; --soil2:#5e4e35; --soil3:#52432d; --soil4:#776647; --soil5:#463826; --native:#2b2823;
}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--bg);color:var(--ink);font:14px/1.45 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
header{background:var(--panel);border-bottom:1px solid var(--line);padding:14px 16px}
.hwrap{max-width:1320px;margin:0 auto;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
header h1{font-size:18px;margin:0;font-weight:650;letter-spacing:-.01em}
header .sub{color:var(--muted);font-size:13px}
header .tools{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap}
button,.btn{font:inherit;border:1px solid var(--line);background:var(--panel);color:var(--ink);border-radius:7px;padding:6px 11px;cursor:pointer}
button:hover,.btn:hover{border-color:var(--accent)}
button.primary{background:var(--accent);border-color:var(--accent);color:#fff}
main{max-width:1320px;margin:0 auto;padding:16px;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;align-items:start}
@media (max-width:980px){main{grid-template-columns:1fr}}
.card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:14px 16px;margin-bottom:14px}
.card h2{font-size:14px;margin:0 0 10px;font-weight:650;display:flex;align-items:center;gap:8px}
.card h2 .n{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:50%;background:var(--accent-soft);color:var(--accent);font-size:12px}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px 12px}
label.f{display:block;font-size:12px;color:var(--muted)}
label.f > input,label.f > select{display:block;margin-top:3px}
label.f span.u{color:var(--muted);font-size:11px;opacity:.85}
label.f span.u::before{content:" · "}
input,select{font:inherit;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:6px 8px;width:100%;min-width:0}
input:focus,select:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}
input[readonly]{background:var(--soft);color:var(--muted)}
.chk{display:block;font-size:13px;color:var(--ink);padding-left:24px;text-indent:-24px}
.chk input{width:auto;margin:0 8px 0 0;vertical-align:-2px;text-indent:0}
.hint{font-size:12px;color:var(--muted);margin:8px 0 0}
.hidden{display:none!important}
table{border-collapse:collapse;width:100%}
.layers td,.layers th{padding:4px 4px;text-align:left;font-size:12px}
.layers th{color:var(--muted);font-weight:500;border-bottom:1px solid var(--line)}
.layers td input,.layers td select{padding:5px 6px}
.layers .x{border:none;background:none;color:var(--muted);font-size:16px;padding:2px 6px}
.layers .x:hover{color:var(--bad)}
.scroll{overflow-x:auto}
.right{position:sticky;top:12px}
@media (max-width:980px){.right{position:static}}
.verdict{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:10px;margin-bottom:12px;font-weight:600}
.verdict.ok{background:var(--ok-soft);color:var(--ok)}
.verdict.bad{background:var(--bad-soft);color:var(--bad)}
.verdict .big{font-size:20px}
.checks{display:grid;gap:10px}
.chkrow{border:1px solid var(--line);border-radius:8px;padding:10px 12px}
.chkrow .top{display:flex;justify-content:space-between;gap:10px;align-items:baseline}
.chkrow .t{font-weight:600}
.chkrow .ref{color:var(--muted);font-size:12px;font-weight:400}
.chkrow .eq{font-variant-numeric:tabular-nums;color:var(--muted);font-size:12.5px;margin-top:3px}
.bar{height:8px;background:var(--soft);border-radius:4px;margin-top:8px;overflow:hidden;position:relative}
.bar i{display:block;height:100%;border-radius:4px}
.bar::after{content:"";position:absolute;left:calc(100% * 1/1.25);top:-2px;bottom:-2px;width:1px;background:var(--muted);opacity:.6}
.eta{font-variant-numeric:tabular-nums;font-weight:650}
.eta.ok{color:var(--ok)} .eta.bad{color:var(--bad)}
.warns{margin:10px 0 0;padding:0;list-style:none;display:grid;gap:6px}
.warns li{background:var(--warn-soft);color:var(--warn);border-radius:7px;padding:7px 10px;font-size:12.5px}
.warns li.info{background:var(--accent-soft);color:var(--accent)}
.kv{width:100%;font-size:12.5px;font-variant-numeric:tabular-nums}
.kv td{padding:4px 6px;border-bottom:1px solid var(--line);vertical-align:top}
.kv td:first-child{color:var(--muted)}
.kv td.v{text-align:right;white-space:nowrap}
.kv td.r{color:var(--muted);font-size:11.5px;white-space:nowrap}
.kv tr.sec td{background:var(--soft);font-weight:600;color:var(--ink)}
svg text{font-family:inherit}
#section{width:100%;height:auto;display:block}
.tabs{display:flex;gap:4px;margin-bottom:10px}
.tabs button{border-radius:6px;padding:5px 10px;font-size:13px}
.tabs button.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}
.stress td,.stress th{font-size:12px;padding:4px 6px;text-align:right;font-variant-numeric:tabular-nums;border-bottom:1px solid var(--line)}
.stress th{color:var(--muted);font-weight:500}
.stress td:first-child,.stress th:first-child{text-align:left}
.stress td.hl{font-weight:650}
.seg{display:inline-flex;gap:4px;margin:0 0 10px}
.seg button{padding:4px 10px;font-size:12.5px;border-radius:6px}
.seg button.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}
.rings{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:6px 0 10px}
.rings svg{width:100%;max-width:230px;height:auto;display:block;margin:0 auto}
.rings figcaption{font-size:12px;color:var(--muted);text-align:center}
.lfsum td{font-size:12px;padding:3px 6px;border-bottom:1px solid var(--line)}
.lfsum td:first-child{color:var(--muted)}
form.logout{margin:0}
.auth{display:grid;grid-template-columns:1fr;place-items:center;min-height:100vh;padding:16px;max-width:none}
.auth-card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:24px;width:100%;max-width:360px;display:grid;gap:14px}
.auth-card h1{font-size:18px;margin:0}
.auth-card button{padding:9px 12px}
.error{color:var(--bad);font-size:13px;margin:0}
footer{max-width:1320px;margin:0 auto;padding:0 16px 24px;color:var(--muted);font-size:12px}
.printonly{display:none}
@media print{
  body{background:#fff;color:#000;font-size:11px}
  header .tools,.noprint,.layers .x{display:none!important}
  main{display:block;padding:0}
  .card{break-inside:avoid;border-color:#bbb;padding:8px 10px;margin-bottom:8px}
  .right{position:static}
  .printonly{display:block}
  input,select{border:none;padding:0;background:none;appearance:none;-webkit-appearance:none}
}
