:root{
  --bg:#0f1216; --bg2:#151a21; --card:#171d25; --line:#242c37; --line2:#2f3947;
  --tx:#e7edf5; --tx2:#9aa7b8; --tx3:#6c7a8c;
  --acc:#4f8cff; --acc2:#2f6fe4; --ok:#2ecc8f; --warn:#ffb020; --bad:#ff5f56; --info:#7b5cff;
  --radius:14px; --shadow:0 8px 30px rgba(0,0,0,.35);
}
html[data-theme="light"]{
  --bg:#f4f6fa; --bg2:#ffffff; --card:#ffffff; --line:#e3e8f0; --line2:#d3dbe7;
  --tx:#141a22; --tx2:#5b6676; --tx3:#8b96a6; --shadow:0 6px 22px rgba(20,40,80,.08);
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--tx);font:14.5px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}
.app{display:flex;min-height:100vh}
.sidebar{width:272px;flex:0 0 272px;background:var(--bg2);border-right:1px solid var(--line);padding:18px 14px;display:flex;flex-direction:column;gap:14px;position:sticky;top:0;height:100vh;overflow:auto}
.brand{display:flex;gap:10px;align-items:center}
.brand-mark{width:36px;height:36px;border-radius:10px;background:linear-gradient(135deg,var(--acc),var(--info));display:grid;place-items:center;font-weight:700;color:#fff}
.brand-title{font-weight:650;letter-spacing:.2px}
.brand-sub{font-size:11.5px;color:var(--tx3)}
.nav-group{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--tx3);margin:12px 0 6px}
.nav-item{display:flex;gap:9px;align-items:center;padding:8px 10px;border-radius:10px;color:var(--tx2);text-decoration:none;font-size:13.5px}
.nav-item:hover{background:var(--card);color:var(--tx)}
.nav-item.active{background:linear-gradient(135deg,rgba(79,140,255,.18),rgba(123,92,255,.12));color:var(--tx);border:1px solid var(--line2)}
.ico{opacity:.8;width:16px;display:inline-block;text-align:center}
.sidebar-foot{margin-top:auto;border-top:1px solid var(--line);padding-top:10px}
.tiny{font-size:11px;color:var(--tx3);line-height:1.45}
.main{flex:1;min-width:0;padding:0 26px 40px}
.topbar{display:flex;align-items:center;gap:12px;position:sticky;top:0;background:linear-gradient(var(--bg) 70%,transparent);padding:16px 0 12px;z-index:5}
.page-title{font-weight:600}
.spacer{flex:1}
.db-badge{font-size:12px;color:var(--tx2);border:1px solid var(--line);padding:5px 10px;border-radius:999px;background:var(--card)}
.icon-btn{background:var(--card);border:1px solid var(--line);color:var(--tx2);border-radius:10px;width:34px;height:34px;cursor:pointer;font-size:15px}
.icon-btn:hover{color:var(--tx);border-color:var(--line2)}
.only-mobile{display:none}
.hero{background:linear-gradient(135deg,rgba(79,140,255,.12),rgba(123,92,255,.08));border:1px solid var(--line);border-radius:var(--radius);padding:20px 22px;margin-bottom:16px}
.hero h1{margin:0 0 8px;font-size:21px;letter-spacing:-.2px}
.hero p{margin:0;color:var(--tx2);max-width:1000px}
.stats{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}
.stat{background:var(--card);border:1px solid var(--line);border-radius:11px;padding:8px 12px;min-width:132px}
.stat b{display:block;font-size:16px}
.stat span{font-size:11.5px;color:var(--tx3)}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;margin-bottom:16px;box-shadow:var(--shadow)}
.card-head{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.card-head h2{margin:0;font-size:15.5px;font-weight:620}
.hint{font-size:12px;color:var(--tx3)}
textarea,.input,input[type=search]{width:100%;background:var(--bg2);color:var(--tx);border:1px solid var(--line2);border-radius:11px;padding:11px 12px;font:inherit;outline:none}
textarea:focus,.input:focus,input[type=search]:focus{border-color:var(--acc);box-shadow:0 0 0 3px rgba(79,140,255,.14)}
.row{display:flex;align-items:center;margin-top:10px}
.row.gap{gap:14px;flex-wrap:wrap}
.row.center{justify-content:center}
.grow{flex:1;min-width:220px}
.btn{background:var(--bg2);color:var(--tx);border:1px solid var(--line2);border-radius:10px;padding:9px 14px;cursor:pointer;font:inherit}
.btn:hover{border-color:var(--acc)}
.btn.primary{background:linear-gradient(135deg,var(--acc),var(--acc2));border-color:transparent;color:#fff;font-weight:600}
.btn.small{padding:5px 10px;font-size:12.5px}
.btn:disabled{opacity:.55;cursor:not-allowed}
.chk{display:inline-flex;gap:6px;align-items:center;font-size:12.5px;color:var(--tx2);cursor:pointer}
.chk input{accent-color:var(--acc)}
.filters{display:flex;gap:22px;flex-wrap:wrap;margin-top:12px;padding-top:12px;border-top:1px dashed var(--line2)}
.fg-title{font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--tx3);margin-bottom:6px}
.filter-group .chk{display:flex;margin:3px 0}
.legend{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.badge{display:inline-block;padding:1px 7px;border-radius:6px;font-size:11px;font-weight:700;border:1px solid transparent}
.badge.ban{background:rgba(255,95,86,.16);color:#ff8b84;border-color:rgba(255,95,86,.35)}
.badge.restrict{background:rgba(255,176,32,.16);color:#ffc45c;border-color:rgba(255,176,32,.35)}
.badge.adv{background:rgba(46,204,143,.16);color:#5ee0ad;border-color:rgba(46,204,143,.35)}
.badge.uis{background:rgba(123,92,255,.18);color:#a795ff;border-color:rgba(123,92,255,.35)}
.badge.inv{background:rgba(79,140,255,.18);color:#8ab4ff;border-color:rgba(79,140,255,.35)}
.badge.auc{background:rgba(0,190,220,.16);color:#6ad9ec;border-color:rgba(0,190,220,.35)}
.badge.muted{background:var(--bg2);color:var(--tx3);border-color:var(--line2)}
.results{margin-top:12px;display:flex;flex-direction:column;gap:8px}
.item{border:1px solid var(--line);border-radius:12px;padding:11px 12px;background:var(--bg2);display:flex;gap:12px;align-items:flex-start}
.item:hover{border-color:var(--line2)}
.item .main-col{flex:1;min-width:0}
.item .nm{font-weight:560}
.item .meta{font-size:12px;color:var(--tx3);margin-top:3px;display:flex;gap:10px;flex-wrap:wrap}
.item .badges{display:flex;gap:5px;flex-wrap:wrap;margin-top:6px}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
.match-out{margin-top:14px}
.passport{border:1px solid var(--line2);border-radius:12px;padding:0;overflow:hidden;background:var(--bg2);margin-bottom:14px}
.passport-head{padding:12px 14px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.passport-head .ttl{font-weight:620}
.passport-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:0}
.pcell{padding:12px 14px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}
.pcell h4{margin:0 0 7px;font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--tx3)}
.pcell ul{margin:0;padding-left:16px}
.pcell li{margin-bottom:5px;font-size:13px}
.checks{margin:0;padding-left:0;list-style:none}
.checks li{padding:5px 0;border-bottom:1px dashed var(--line);font-size:13px}
.checks li:last-child{border:0}
.checks li.warn{color:var(--warn)}
.checks li.ok{color:var(--ok)}
.checks li:before{content:"✔";margin-right:7px;color:var(--ok)}
.checks li.warn:before{content:"!";color:var(--warn)}
.score{font-size:11.5px;color:var(--tx3)}
.dropzone{border:2px dashed var(--line2);border-radius:12px;padding:22px;text-align:center;cursor:pointer;transition:.15s}
.dropzone:hover,.dropzone.over{border-color:var(--acc);background:rgba(79,140,255,.06)}
.dz-title{font-weight:600}
.dz-sub{font-size:12px;color:var(--tx3);margin-top:4px}
.counter{background:var(--acc);color:#fff;border-radius:999px;padding:1px 9px;font-size:12px;font-weight:700;margin-left:6px}
table.grid{width:100%;border-collapse:collapse;margin-top:12px;font-size:13px}
table.grid th,table.grid td{border-bottom:1px solid var(--line);padding:7px 8px;text-align:left;vertical-align:top}
table.grid th{font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--tx3);position:sticky;top:0;background:var(--card)}
.table-wrap{max-height:520px;overflow:auto;border:1px solid var(--line);border-radius:12px;margin-top:12px}
.refs{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px}
.ref{border:1px solid var(--line);border-radius:12px;padding:12px;background:var(--bg2)}
.ref b{display:block;margin-bottom:4px}
.ref span{font-size:12px;color:var(--tx3);display:block}
.foot{margin-top:10px;font-size:11.5px;color:var(--tx3);max-width:1100px}
.empty{padding:16px;text-align:center;color:var(--tx3);font-size:13px}
.spinner{width:15px;height:15px;border:2px solid var(--line2);border-top-color:var(--acc);border-radius:50%;display:inline-block;animation:spin .7s linear infinite;vertical-align:-3px}
@keyframes spin{to{transform:rotate(360deg)}}
@media (max-width:1000px){
  .sidebar{position:fixed;left:-300px;z-index:20;transition:.2s;box-shadow:var(--shadow)}
  .sidebar.open{left:0}
  .only-mobile{display:block}
  .main{padding:0 14px 30px}
}

/* === Бренд-режим GUREEV VECTOR v3.1.1 ===
   Источник цветов — brand-tokens.css (сгенерирован из tokens.json, правило 19, BL-25).
   Тёмная тема НЕ применяется: её токены в эталоне не утверждены (см. config.toml эталона).
   Семантические цвета состояний в брендбуке не заданы: значения ниже — предложение
   проекта, не норма брендбука. Радиусы, тени и шкала отступов — также предложение. */
:root{
  --bg: var(--gv-bg); --bg2: var(--gv-bg); --card: var(--gv-bg);
  --line: var(--gv-border-decor); --line2: var(--gv-border-input);
  --tx: var(--gv-graphite); --tx2: var(--gv-text-secondary); --tx3: var(--gv-text-secondary);
  --acc: var(--gv-teal-text); --acc2: var(--gv-teal-strong);
  --ok:#1B7F5A; --warn:#8A5B00; --bad:#A62B22; --info:var(--gv-teal-ui);
  --radius:10px; --shadow:0 2px 10px rgba(38,52,61,.06);
}
html,body{background:var(--gv-bg-subtle);color:var(--gv-graphite);font-family:var(--gv-font-text);font-weight:var(--gv-weight-body)}
h1,h2,h3,.brand-title,.page-title,.stat b,.card-head h2{font-weight:var(--gv-weight-heading)}
code,.mono,.stat b,.db-badge,.item .meta b{font-family:var(--gv-font-mono);font-variant-numeric:tabular-nums}
.brand-icon{width:32px;height:32px;display:block;flex:0 0 32px}
.brand-lock{display:block;width:240px;height:auto;margin:0 0 14px}
.brand-title{font-size:14.5px}
#themeBtn{display:none}
.topbar{background:linear-gradient(var(--gv-bg-subtle) 70%,transparent)}
.sidebar{background:var(--gv-bg);border-right:1px solid var(--gv-border-decor)}
.hero{background:var(--gv-bg);border-color:var(--gv-border-decor)}
.nav-item.active{background:rgba(8,184,204,.10);border-color:var(--gv-teal-ui);color:var(--gv-graphite)}
.nav-item:hover{background:var(--gv-bg-subtle)}
.ico{color:var(--gv-teal-text);opacity:1}
.card{background:var(--gv-bg);border-color:var(--gv-border-decor);box-shadow:var(--shadow)}
textarea,.input,input[type=search]{background:var(--gv-bg);border-color:var(--gv-border-input);color:var(--gv-graphite)}
textarea:focus,.input:focus,input[type=search]:focus{border-color:var(--gv-teal-text);box-shadow:0 0 0 3px rgba(8,184,204,.18)}
.btn{border-color:var(--gv-border-input);background:var(--gv-bg);color:var(--gv-graphite)}
.btn:hover{border-color:var(--gv-teal-text)}
.btn.primary{background:var(--gv-teal-text);border-color:transparent;color:#fff}
.btn.primary:hover{background:var(--gv-teal-strong)}
.badge.ban{background:rgba(166,43,34,.10);color:#A62B22;border-color:rgba(166,43,34,.30)}
.badge.restrict{background:rgba(138,91,0,.10);color:#8A5B00;border-color:rgba(138,91,0,.30)}
.badge.adv{background:rgba(27,127,90,.10);color:#1B7F5A;border-color:rgba(27,127,90,.30)}
.badge.uis,.badge.inv{background:rgba(8,184,204,.12);color:var(--gv-teal-strong);border-color:rgba(8,184,204,.35)}
.badge.auc{background:rgba(38,52,61,.08);color:var(--gv-graphite);border-color:var(--gv-border-input)}
.fg-title,.nav-group{color:var(--gv-text-secondary)}

/* мандат и контроль: определённое утверждение о работе цифровых исполнителей */
.mandate__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:8px 0 2px}
.mandate__grid dt{font:600 12px/1.4 var(--gv-font-text);letter-spacing:.04em;text-transform:uppercase;
  color:var(--gv-teal-strong);margin:0 0 4px}
.mandate__grid dd{margin:0;color:var(--gv-text-secondary);font-size:13px;line-height:1.5}
@media(max-width:900px){.mandate__grid{grid-template-columns:1fr}}
