:root{
  --bg:#eef2f8; --card:#fff; --ink:#1c2430; --muted:#6b7480; --line:#e6e9ef;
  --accent:#2f6df6; --accent-d:#1f4fc4; --soft:#f4f7fc;
  --b0:#9aa3b2; --b1:#e08a3c; --b2:#2faa63; --b3:#2f6df6;
}
*{box-sizing:border-box}
html,body{margin:0}
body{min-height:100vh;color:var(--ink);
  background:linear-gradient(180deg,#f7f9fc 0%,#eef2f8 100%);background-attachment:fixed;
  font:15px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;}

/* ---------- upload ---------- */
.upload{max-width:600px;margin:9vh auto;padding:34px 30px;background:var(--card);
  border:1px solid var(--line);border-radius:18px;box-shadow:0 8px 30px rgba(28,36,48,.08)}
.upload h1{font-size:23px;margin:0 0 6px}
.upload .sub{color:var(--muted);margin:0 0 22px}
.file{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;
  border:2px dashed #cfd7e4;border-radius:14px;padding:38px 18px;text-align:center;cursor:pointer;
  background:var(--soft);transition:.15s}
.file:hover,.file.over{border-color:var(--accent);background:#eef4ff}
.file input{position:absolute;inset:0;opacity:0;cursor:pointer}
.fileicon{font-size:30px}
.file span{color:var(--muted);font-weight:500}
.file span small{color:#94a0b0;font-weight:400}
button{margin-top:18px;width:100%;padding:14px 18px;border:0;border-radius:12px;background:var(--accent);color:#fff;
  font-size:15px;font-weight:600;cursor:pointer;transition:background .15s;box-shadow:0 4px 14px rgba(47,109,246,.3)}
button:hover{background:var(--accent-d)}
button:disabled{opacity:.65;cursor:default;box-shadow:none}
.note{margin-top:18px;color:var(--muted);font-size:13px}
.err{border:1px solid #f3c2c2;background:#fff5f5;color:#8a1f1f;border-radius:12px;padding:18px}
.back{color:var(--accent);text-decoration:none;font-weight:600}
.back:hover{text-decoration:underline}

/* ---------- loading ---------- */
.loading{position:fixed;inset:0;z-index:50;display:grid;place-items:center;
  background:rgba(238,242,248,.82);backdrop-filter:blur(5px)}
.loading[hidden]{display:none}
.lcard{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:32px 34px;
  width:min(420px,90vw);text-align:center;box-shadow:0 20px 60px rgba(28,36,48,.18)}
.lspin{width:46px;height:46px;margin:0 auto 18px;border:4px solid #e6ebf3;border-top-color:var(--accent);
  border-radius:50%;animation:spin 1s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.lcard h2{font-size:18px;margin:0 0 16px}
.lbar{height:9px;background:#e9edf4;border-radius:6px;overflow:hidden;margin:4px 0 14px}
.lbar-f{height:100%;width:0;border-radius:6px;background:linear-gradient(90deg,var(--b2),var(--accent));transition:width .25s linear}
.lstep{color:var(--ink);font-weight:600;margin:0 0 6px;min-height:1.4em}
.lhint{color:var(--muted);font-size:13px;margin:0}

/* ---------- toolbar + tabs (light) ---------- */
.toolbar{position:sticky;top:0;z-index:5;display:flex;gap:14px;align-items:center;justify-content:space-between;
  padding:10px 18px;background:rgba(255,255,255,.92);border-bottom:1px solid var(--line);backdrop-filter:blur(8px)}
.toolbar .back{white-space:nowrap}
.tabs{display:flex;gap:5px;background:#e9edf4;border-radius:12px;padding:4px}
.tab{width:auto;margin:0;padding:8px 15px;background:transparent;color:var(--muted);font-size:14px;border-radius:9px;box-shadow:none}
.tab:hover{background:#dde3ee;color:var(--ink)}
.tab.active{background:var(--accent);color:#fff}
.toolbar .print{width:auto;margin:0;padding:8px 15px;font-size:14px;background:#e9edf4;color:var(--ink);box-shadow:none}
.toolbar .print:hover{background:#dde3ee}
.views{padding:18px 0 50px}

/* ---------- level indicator ---------- */
.lvbar{display:inline-flex;gap:3px;vertical-align:middle;margin-left:8px}
.lvbar i{width:13px;height:7px;border-radius:2px;background:#e3e7ee;display:inline-block}
.lvbar.lv0 i.on{background:var(--b0)}
.lvbar.lv1 i.on{background:var(--b1)}
.lvbar.lv2 i.on{background:var(--b2)}
.lvbar.lv3 i.on{background:var(--b3)}

/* ---------- Стиль 1: бланк ---------- */
.doc{max-width:900px;margin:0 auto;background:var(--card);border:1px solid var(--line);color:var(--ink);
  padding:42px 50px;border-radius:14px;box-shadow:0 8px 30px rgba(28,36,48,.08)}
.doc-head{position:relative;text-align:center;border-bottom:2px solid var(--ink);padding-bottom:14px;margin-bottom:18px}
.doc-head h1{font-size:18px;margin:4px 0;line-height:1.35}
.doc-head h1 small{font-size:13px;font-weight:400;color:var(--muted)}
.proj{position:absolute;right:0;top:0;background:#fff3e0;color:#b26a00;border:1px solid var(--b1);border-radius:6px;padding:2px 10px;font-size:12px;font-weight:700}
.legal{font-size:11.5px;color:var(--muted);margin:8px 0 0}
.passport{width:100%;border-collapse:collapse;font-size:13.5px;margin:8px 0}
.passport th{width:40%;text-align:left;background:var(--soft);border:1px solid var(--line);padding:7px 10px;font-weight:600}
.passport td{border:1px solid var(--line);padding:7px 10px}
.doc h2{font-size:15px;margin:22px 0 8px}
.doc h3{font-size:14px;margin:12px 0 6px;color:var(--muted)}
.crit{width:100%;border-collapse:collapse;font-size:13.5px;margin:6px 0}
.crit th{background:#eef3fb;border:1px solid #d8e0ee;padding:8px;text-align:left}
.crit td{border:1px solid var(--line);padding:8px 10px;vertical-align:top}
.crit td.cn{text-align:center;font-weight:700;width:38px}
.crit td.lvcell{text-align:center;white-space:nowrap;width:120px}
.crit td.lvcell b{font-size:16px}
.itogbox{display:flex;gap:16px;align-items:center;border:1px solid #d8e0ee;border-radius:12px;padding:14px 18px;margin:18px 0;background:#f5f9ff}
.itog-n{font-size:30px;font-weight:800;color:var(--accent-d);white-space:nowrap}
.itog-n span{font-size:16px;color:var(--muted);font-weight:600}
.itog-t{font-size:13.5px}
.recs{padding-left:20px}
.recs li{margin:5px 0}
.sign{margin-top:24px}
.sign .ozn{font-weight:600;margin-bottom:10px}
.sigline{margin-top:20px;font-family:ui-monospace,Menlo,monospace;letter-spacing:.5px}
.sigcap{font-size:11.5px;color:var(--muted);margin-top:2px}
.footnote{margin-top:18px;font-size:12px;color:var(--muted);border-top:1px solid var(--line);padding-top:12px;font-style:italic}

/* ---------- Стиль 2: дашборд ---------- */
.dash{max-width:900px;margin:0 auto;background:var(--card);border:1px solid var(--line);color:var(--ink);
  padding:30px 34px;border-radius:16px;box-shadow:0 8px 30px rgba(28,36,48,.08)}
.dhead{display:flex;justify-content:space-between;align-items:flex-start;gap:20px}
.dproj{font-size:12px;color:#b26a00;font-weight:700}
.dhead h1{font-size:22px;margin:4px 0}
.dtema{color:var(--muted);margin:0;max-width:520px}
.gauge{text-align:center;min-width:110px}
.gn{font-size:44px;font-weight:800;color:var(--accent-d);line-height:1}
.gn small{font-size:18px}
.gx{color:var(--muted);font-weight:600}
.gbar{height:10px;background:#e9edf4;border-radius:6px;overflow:hidden;margin:14px 0 6px}
.gbar-f{height:100%;border-radius:6px;background:linear-gradient(90deg,var(--b2),var(--b3))}
.dash h2{font-size:15px;margin:20px 0 10px}
.dcards{display:grid;gap:12px}
.dcard{border:1px solid var(--line);border-left:4px solid var(--b0);border-radius:12px;padding:13px 16px;background:#fff}
.dcard.lv1{border-left-color:var(--b1)}
.dcard.lv2{border-left-color:var(--b2)}
.dcard.lv3{border-left-color:var(--b3)}
.dcard-h{display:flex;align-items:center;gap:10px}
.cid{font-weight:800;color:var(--muted)}
.ctitle{flex:1;font-weight:600;font-size:14px}
.lvbadge{width:26px;height:26px;flex:0 0 26px;border-radius:50%;display:grid;place-items:center;color:#fff;font-weight:800;font-size:14px;background:var(--b0)}
.lvbadge.lv1{background:var(--b1)}
.lvbadge.lv2{background:var(--b2)}
.lvbadge.lv3{background:var(--b3)}
.dprog{height:7px;background:#e9edf4;border-radius:5px;margin:10px 0;overflow:hidden}
.dprog-f{height:100%;border-radius:5px;background:var(--b0)}
.dprog-f.lv1{background:var(--b1)}
.dprog-f.lv2{background:var(--b2)}
.dprog-f.lv3{background:var(--b3)}
.dj{margin:0;color:#39404d;font-size:13.5px}
.callout{background:#f5f9ff;border:1px solid #d8e6ff;border-radius:12px;padding:14px 18px;margin-top:18px}
.callout h3{margin:0 0 8px;font-size:15px}
.callout ol{padding-left:20px;margin:0}

/* ---------- Стиль 3: подробно ---------- */
.expl{max-width:900px;margin:0 auto;background:var(--card);border:1px solid var(--line);color:var(--ink);
  padding:36px 42px;border-radius:14px;box-shadow:0 8px 30px rgba(28,36,48,.08)}
.expl h1{font-size:20px;border-bottom:2px solid var(--ink);padding-bottom:10px}
.expl h2{font-size:16px;margin-top:22px}
.kv{border-collapse:collapse;width:100%;font-size:13.5px;margin:12px 0}
.kv th{width:30%;text-align:left;background:var(--soft);border:1px solid var(--line);padding:7px 10px;font-weight:600}
.kv td{border:1px solid var(--line);padding:7px 10px}
.expl .crit td.ec{text-align:center;font-weight:700;width:70px;font-size:15px}
.itog-line{background:#f5f9ff;border:1px solid #d8e0ee;border-radius:10px;padding:12px 16px}

/* ---------- print ---------- */
@media print{
  body{background:#fff}
  .no-print{display:none!important}
  .doc,.dash,.expl{box-shadow:none;border:0;border-radius:0;margin:0;max-width:none;padding:0 6mm}
  .views{padding:0}
  .passport th,.crit th,.itogbox,.proj,.lvbadge,.dprog-f,.gbar-f,.lvbar i.on{
    -webkit-print-color-adjust:exact;print-color-adjust:exact}
}
