/* Автопроект · «Инженерная автоматика» — темы: тёмная графитовая / светлая / авто. Onest + JetBrains Mono. */
:root{
  /* тёмная (по умолчанию): графит, а не чёрный */
  --bg:#14191d; --bg2:#192025; --panel:#1c2429; --panel2:#212a30; --raise:#29343b; --line:rgba(255,255,255,.08); --line2:rgba(255,255,255,.14); --hover-line:rgba(255,255,255,.24);
  --ink:#eef3f5; --ink2:#c3cfd5; --muted:#8a9aa2; --faint:#5c6b73;
  --acc:#3ddfa3; --acc2:#29c9e8; --acc-ink:#04170f; --acc-soft:rgba(61,223,163,.13); --acc-line:rgba(61,223,163,.38);
  --grad:linear-gradient(135deg,#3ddfa3 0%,#29c9e8 100%);
  --warn:#f5b74a; --warn-soft:rgba(245,183,74,.13); --warn-ink:#ffd894; --bad:#ff7070; --bad-soft:rgba(255,112,112,.13); --bad-ink:#ffb8b8;
  --vio:#ac94fb; --vio-soft:rgba(172,148,251,.15); --heat:#ff9f6b; --pdf:#ff8d8d;
  --side:rgba(22,28,33,.85); --head:rgba(20,25,29,.82); --glow1:rgba(41,201,232,.08); --glow2:rgba(61,223,163,.07);
  --sans:"Onest",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif; --mono:"JetBrains Mono",ui-monospace,Menlo,Consolas,monospace;
  --r:14px; --r-sm:10px; --shadow:0 10px 40px -12px rgba(0,0,0,.55); --glow:0 0 0 1px var(--acc-line),0 8px 30px -10px rgba(61,223,163,.35);
  color-scheme:dark;
}
/* светлая */
:root[data-theme="light"]{
  --bg:#eef2f3; --bg2:#f6f8f9; --panel:#ffffff; --panel2:#ffffff; --raise:#e9eef0; --line:rgba(16,32,40,.09); --line2:rgba(16,32,40,.15); --hover-line:rgba(16,32,40,.28);
  --ink:#152027; --ink2:#3c4b53; --muted:#66767e; --faint:#a3b0b6;
  --acc:#0b9465; --acc2:#0a93b3; --acc-ink:#04170f; --acc-soft:rgba(11,148,101,.10); --acc-line:rgba(11,148,101,.38);
  --warn:#a86500; --warn-soft:rgba(232,160,40,.14); --warn-ink:#7a4a00; --bad:#c62f2f; --bad-soft:rgba(220,60,60,.10); --bad-ink:#9e2222;
  --vio:#6d4fd8; --vio-soft:rgba(109,79,216,.10); --heat:#d9661f; --pdf:#c62f2f;
  --side:rgba(255,255,255,.85); --head:rgba(255,255,255,.85); --glow1:rgba(41,201,232,.10); --glow2:rgba(61,223,163,.10);
  --shadow:0 10px 30px -14px rgba(20,40,50,.25); --glow:0 0 0 1px var(--acc-line),0 8px 24px -12px rgba(11,148,101,.35);
  color-scheme:light;
}
@media (prefers-color-scheme: light){:root[data-theme="auto"]{
  --bg:#eef2f3; --bg2:#f6f8f9; --panel:#ffffff; --panel2:#ffffff; --raise:#e9eef0; --line:rgba(16,32,40,.09); --line2:rgba(16,32,40,.15); --hover-line:rgba(16,32,40,.28);
  --ink:#152027; --ink2:#3c4b53; --muted:#66767e; --faint:#a3b0b6;
  --acc:#0b9465; --acc2:#0a93b3; --acc-ink:#04170f; --acc-soft:rgba(11,148,101,.10); --acc-line:rgba(11,148,101,.38);
  --warn:#a86500; --warn-soft:rgba(232,160,40,.14); --warn-ink:#7a4a00; --bad:#c62f2f; --bad-soft:rgba(220,60,60,.10); --bad-ink:#9e2222;
  --vio:#6d4fd8; --vio-soft:rgba(109,79,216,.10); --heat:#d9661f; --pdf:#c62f2f;
  --side:rgba(255,255,255,.85); --head:rgba(255,255,255,.85); --glow1:rgba(41,201,232,.10); --glow2:rgba(61,223,163,.10);
  --shadow:0 10px 30px -14px rgba(20,40,50,.25); --glow:0 0 0 1px var(--acc-line),0 8px 24px -12px rgba(11,148,101,.35);
  color-scheme:light}}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{margin:0;height:100%}
body{background:var(--bg);color:var(--ink);font:15px/1.5 var(--sans);-webkit-font-smoothing:antialiased;
  background-image:radial-gradient(1200px 600px at 85% -10%,var(--glow1),transparent 60%),radial-gradient(900px 500px at -10% 10%,var(--glow2),transparent 60%);
  background-attachment:fixed}
a{color:var(--acc);text-decoration:none}
a:hover{text-decoration:underline}
svg.i{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:none}
svg.i.s{width:16px;height:16px} svg.i.l{width:26px;height:26px} svg.i.xl{width:34px;height:34px;stroke-width:1.4}
::selection{background:rgba(53,224,161,.3)}
:focus-visible{outline:2px solid var(--acc);outline-offset:2px;border-radius:6px}
h1{font-size:28px;line-height:1.15;margin:0;letter-spacing:-.02em;font-weight:700;text-wrap:balance}
h2{font-size:18px;margin:0;letter-spacing:-.01em;font-weight:650}
h3{font-size:15px;margin:0;font-weight:600}
.mono,.num{font-family:var(--mono);font-variant-numeric:tabular-nums}
.muted{color:var(--muted)} .ink2{color:var(--ink2)} .small{font-size:13px} .tiny{font-size:12px}
.grad-text{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}

/* ---------- каркас: боковая панель + контент */
.shell{display:grid;grid-template-columns:240px minmax(0,1fr);min-height:100vh}
.side{position:sticky;top:0;height:100vh;padding:20px 14px;border-right:1px solid var(--line);background:var(--side);backdrop-filter:blur(12px);display:flex;flex-direction:column;gap:6px}
.logo{display:flex;align-items:center;gap:10px;padding:4px 10px 18px;color:var(--ink);font-weight:700;letter-spacing:-.01em}
.logo:hover{text-decoration:none}
.logo .mark{width:30px;height:30px;border-radius:9px;background:var(--grad);display:grid;place-items:center;color:var(--acc-ink);box-shadow:0 6px 20px -6px rgba(53,224,161,.6)}
.logo .mark svg{stroke:var(--acc-ink);stroke-width:2.2}
.logo small{display:block;font-weight:500;color:var(--muted);font-size:11px;letter-spacing:.02em}
.nav a{display:flex;align-items:center;gap:11px;padding:9px 12px;border-radius:10px;color:var(--ink2);font-weight:500;font-size:14.5px}
.nav a:hover{background:var(--panel2);color:var(--ink);text-decoration:none}
.nav a.on{background:var(--acc-soft);color:var(--acc)}
.nav{display:flex;flex-direction:column;gap:2px}
.side .foot{margin-top:6px;padding:12px;border-top:1px solid var(--line);display:flex;align-items:center;gap:10px}
.avatar{width:32px;height:32px;border-radius:50%;background:var(--raise);display:grid;place-items:center;font-weight:600;font-size:13px;color:var(--acc);border:1px solid var(--line2)}
.side .foot .who{flex:1;min-width:0;font-size:13px;line-height:1.25}
.side .foot .who span{display:block;color:var(--muted);font-size:12px}
.iconbtn{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:9px;border:1px solid transparent;background:transparent;color:var(--muted);cursor:pointer}
.iconbtn:hover{background:var(--panel2);color:var(--ink);border-color:var(--line)}
.main{min-width:0;padding:28px clamp(16px,3vw,40px) 80px;display:flex;flex-direction:column;gap:22px;max-width:1440px;width:100%}
.pagehead{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap}
.eyebrow{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--acc);font-weight:600;margin-bottom:6px}
.sub{color:var(--muted);margin:6px 0 0;font-size:14.5px}
.crumbs{display:flex;gap:6px;align-items:center;color:var(--muted);font-size:13px}
.crumbs a{color:var(--muted)}

/* ---------- элементы */
.btn{font:600 14px var(--sans);display:inline-flex;align-items:center;gap:8px;padding:9px 15px;border-radius:10px;border:1px solid var(--line2);background:var(--panel2);color:var(--ink);cursor:pointer;white-space:nowrap;transition:.15s}
.btn:hover{border-color:var(--acc-line);text-decoration:none;background:var(--raise)}
.btn.primary{background:var(--grad);color:var(--acc-ink);border-color:transparent;box-shadow:0 8px 24px -10px rgba(53,224,161,.7)}
.btn.primary:hover{filter:brightness(1.07)}
.btn.ghost{background:transparent;border-color:transparent;color:var(--ink2)}
.btn.ghost:hover{background:var(--panel2)}
.btn.danger{color:var(--bad)} .btn.danger:hover{border-color:rgba(255,107,107,.4)}
.btn.sm{padding:6px 10px;font-size:13px;border-radius:8px}
.btn.lg{padding:13px 22px;font-size:15.5px;border-radius:12px}
.btn[disabled]{opacity:.45;pointer-events:none}
input,select,textarea{font:14.5px var(--sans);color:var(--ink);background:var(--bg2);border:1px solid var(--line2);border-radius:10px;padding:9px 12px;min-width:0;transition:border-color .15s}
input:hover,select:hover,textarea:hover{border-color:var(--hover-line)}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--acc);box-shadow:0 0 0 3px rgba(53,224,161,.15)}
textarea{width:100%;min-height:84px;resize:vertical}
input[type=checkbox],input[type=radio]{accent-color:var(--acc);width:17px;height:17px}
input[type=file]{padding:8px;font-size:13px}
label.f{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--muted);min-width:0;font-weight:500}
.check{display:inline-flex;gap:9px;align-items:center;font-size:14px;color:var(--ink2);cursor:pointer}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.between{justify-content:space-between}
.stack{display:flex;flex-direction:column;gap:12px}
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px}
.grid3{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px}
.card{background:linear-gradient(180deg,var(--panel2),var(--panel));border:1px solid var(--line);border-radius:var(--r);padding:20px;display:flex;flex-direction:column;gap:14px;min-width:0}
.card.flat{background:var(--panel)}
.card .hd{display:flex;align-items:center;justify-content:space-between;gap:12px}
.card .hd .t{display:flex;align-items:center;gap:10px}
.card .hd .t .ic{width:34px;height:34px;border-radius:10px;background:var(--acc-soft);color:var(--acc);display:grid;place-items:center}
.tag{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;padding:3px 9px;border-radius:999px;background:var(--raise);color:var(--ink2);border:1px solid var(--line);white-space:nowrap}
.tag.ok{background:var(--acc-soft);color:var(--acc);border-color:var(--acc-line)}
.tag.warn{background:var(--warn-soft);color:var(--warn);border-color:rgba(245,183,74,.3)}
.tag.vio{background:var(--vio-soft);color:var(--vio);border-color:rgba(167,139,250,.3)}
.tag.bad{background:var(--bad-soft);color:var(--bad);border-color:rgba(255,107,107,.3)}
.dot{width:7px;height:7px;border-radius:50%;background:currentColor;display:inline-block}
.flash{display:flex;gap:10px;align-items:flex-start;background:var(--acc-soft);border:1px solid var(--acc-line);border-radius:12px;padding:12px 14px;color:var(--ink)}
.warnbox{background:var(--warn-soft);border:1px solid rgba(245,183,74,.3);color:var(--warn-ink);border-radius:12px;padding:11px 14px;font-size:13.5px}
.errbox{background:var(--bad-soft);border:1px solid rgba(255,107,107,.3);color:var(--bad-ink);border-radius:12px;padding:11px 14px}
.empty{border:1px dashed var(--line2);border-radius:var(--r);padding:40px 20px;text-align:center;color:var(--muted);display:flex;flex-direction:column;align-items:center;gap:12px}
.empty svg.i{width:40px;height:40px;color:var(--faint);stroke-width:1.3}
.scroll{overflow-x:auto;border:1px solid var(--line);border-radius:12px}
table{border-collapse:collapse;width:100%;font-size:14px}
th,td{border-bottom:1px solid var(--line);padding:10px 12px;text-align:left;vertical-align:middle}
th{background:var(--panel2);font-size:12px;color:var(--muted);font-weight:600;letter-spacing:.02em}
tr:last-child td{border-bottom:none}
td.n,th.n{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums}
.copy{display:flex;gap:8px}
.copy input{flex:1}
.copy input[readonly]{font-family:var(--mono);font-size:13px;color:var(--ink2)}
pre.log{margin:0;font:12.5px/1.6 var(--mono);background:var(--bg2);border:1px solid var(--line);padding:12px 14px;border-radius:12px;max-height:240px;overflow:auto;white-space:pre-wrap;color:var(--ink2)}
details.card>summary{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between}
details.card>summary::-webkit-details-marker{display:none}
hr.sep{border:none;border-top:1px solid var(--line);margin:4px 0}

/* ---------- метрики */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px}
.kpi{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px;display:flex;flex-direction:column;gap:6px;position:relative;overflow:hidden}
.kpi .l{font-size:12.5px;color:var(--muted);display:flex;align-items:center;gap:7px}
.kpi .v{font:600 26px var(--mono);letter-spacing:-.02em}
.kpi::after{content:"";position:absolute;inset:auto -30% -60% auto;width:140px;height:140px;border-radius:50%;background:radial-gradient(circle,rgba(53,224,161,.12),transparent 70%)}

/* ---------- объекты (дашборд) */
.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.search{position:relative;flex:1;min-width:220px;max-width:420px}
.search svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--muted)}
.search input{width:100%;padding-left:38px}
.seg{display:inline-flex;background:var(--bg2);border:1px solid var(--line2);border-radius:11px;padding:3px;gap:2px}
.seg button{font:600 13px var(--sans);border:none;background:transparent;color:var(--muted);padding:6px 12px;border-radius:8px;cursor:pointer}
.seg button.on{background:var(--raise);color:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,.12)}
.objs{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:16px}
.obj{background:linear-gradient(180deg,var(--panel2),var(--panel));border:1px solid var(--line);border-radius:var(--r);padding:18px;display:flex;flex-direction:column;gap:14px;color:var(--ink);transition:.18s;position:relative}
.obj:hover{text-decoration:none;border-color:var(--acc-line);transform:translateY(-2px);box-shadow:var(--shadow)}
.obj .top{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}
.obj h3{font-size:17px;letter-spacing:-.01em}
.obj .addr{font-size:13px;color:var(--muted);margin-top:3px}
.prices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.price{background:var(--bg2);border:1px solid var(--line);border-radius:10px;padding:8px 10px;min-width:0}
.price .p{font:600 14.5px var(--mono);white-space:nowrap}
.price .k{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.price.best{border-color:var(--acc-line);background:var(--acc-soft)}
.price.best .p{color:var(--acc)}
.steps{display:flex;gap:4px}
.steps i{flex:1;height:4px;border-radius:4px;background:var(--raise)}
.steps i.on{background:var(--grad)}
.obj .foot{display:flex;justify-content:space-between;align-items:center;font-size:12.5px;color:var(--muted)}
.feed{display:flex;flex-direction:column}
.feed .ev{display:flex;gap:12px;padding:11px 0;border-bottom:1px solid var(--line);align-items:flex-start}
.feed .ev:last-child{border-bottom:none}
.feed .ev .ic{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;background:var(--raise);color:var(--acc);flex:none}
.feed .ev .ic.vio{color:var(--vio);background:var(--vio-soft)} .feed .ev .ic.warn{color:var(--warn);background:var(--warn-soft)}
.feed .ev .tx{flex:1;min-width:0;font-size:13.5px}
.feed .ev .tm{font-size:12px;color:var(--muted)}

/* ---------- страница объекта */
.objhead{display:flex;gap:18px;align-items:flex-start;justify-content:space-between;flex-wrap:wrap}
.stepper{display:flex;gap:0;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:6px;overflow-x:auto}
.stepper .s{display:flex;align-items:center;gap:9px;padding:8px 14px;border-radius:10px;color:var(--muted);font-size:13.5px;font-weight:600;white-space:nowrap}
.stepper .s b{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:11.5px;background:var(--raise);color:var(--muted);font-family:var(--mono)}
.stepper .s.done{color:var(--ink2)} .stepper .s.done b{background:var(--acc-soft);color:var(--acc)}
.stepper .s.cur{color:var(--ink);background:var(--raise)} .stepper .s.cur b{background:var(--grad);color:var(--acc-ink)}
.stepper .s+.s::before{content:"";width:14px;height:1px;background:var(--line2);margin-right:4px;margin-left:-10px}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);overflow-x:auto;scrollbar-width:none}
.tabs a{padding:11px 14px;color:var(--muted);font-weight:600;font-size:14.5px;border-bottom:2px solid transparent;margin-bottom:-1px;display:flex;gap:8px;align-items:center;white-space:nowrap}
.tabs a:hover{color:var(--ink);text-decoration:none}
.tabs a.on{color:var(--ink);border-color:var(--acc)}
.tabs a .cnt{font:600 11px var(--mono);background:var(--raise);color:var(--ink2);padding:1px 7px;border-radius:9px}
.pane{display:none;flex-direction:column;gap:18px}
.pane.on{display:flex}

/* редактор помещений */
.editor{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:20px;align-items:start}
.dock{position:sticky;top:20px;display:flex;flex-direction:column;gap:12px}
.dock .live{background:linear-gradient(180deg,var(--panel2),var(--panel));border:1px solid var(--line);border-radius:var(--r);padding:16px;display:flex;flex-direction:column;gap:10px}
.live .pl{display:flex;flex-direction:column;align-items:stretch;gap:2px;padding:11px 12px;border-radius:11px;background:var(--bg2);border:1px solid var(--line);transition:.2s}
.live .pl.best{border-color:var(--acc-line);background:var(--acc-soft)}
.live .pl .nm{font-size:13px;color:var(--ink2);font-weight:600}
.live .pl .nm{display:flex;justify-content:space-between;gap:8px}
.live .pl .nm span{font-size:11.5px;color:var(--muted);font-weight:500;white-space:nowrap}
.live .pl .sum{font:600 20px var(--mono);white-space:nowrap;letter-spacing:-.02em}
.live .pl .sum small{display:block;font-size:11px;color:var(--muted);font-weight:500;letter-spacing:0}
.live .pl.best .sum{color:var(--acc)}
.flashup{animation:fu .9s}
@keyframes fu{0%{box-shadow:0 0 0 0 rgba(53,224,161,.6)}100%{box-shadow:0 0 0 12px rgba(53,224,161,0)}}
.savestate{font-size:12.5px;color:var(--muted);display:flex;align-items:center;gap:6px}
.savestate.ok{color:var(--acc)}
.totals{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.totals div{background:var(--bg2);border:1px solid var(--line);border-radius:9px;padding:7px 4px;text-align:center}
.totals b{display:block;font:600 15px var(--mono)}
.totals span{font-size:10.5px;color:var(--muted)}
.floor{display:flex;flex-direction:column;gap:12px}
.floor>.fh{display:flex;align-items:center;gap:10px;color:var(--ink2);font-weight:650;font-size:14px}
.floor>.fh .cnt{color:var(--muted);font-weight:500;font-size:13px}
.floor>.fh::after{content:"";flex:1;height:1px;background:var(--line)}
.rooms{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.room{background:linear-gradient(180deg,var(--panel2),var(--panel));border:1px solid var(--line);border-radius:var(--r);padding:14px;display:flex;flex-direction:column;gap:12px;cursor:pointer;transition:.15s;position:relative}
.room:hover{border-color:var(--line2);transform:translateY(-1px)}
.room.sel{border-color:var(--acc);box-shadow:var(--glow)}
.room .rh{display:flex;gap:11px;align-items:center}
.room .ri{width:40px;height:40px;border-radius:11px;background:var(--raise);display:grid;place-items:center;color:var(--acc);flex:none;border:1px solid var(--line)}
.room .rn{flex:1;min-width:0}
.room .rn b{display:block;font-weight:650;font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.room .rn span{font:12px var(--mono);color:var(--muted)}
.room .acts{display:flex;gap:2px;opacity:0;transition:.15s}
.room:hover .acts,.room.sel .acts{opacity:1}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.fc{display:inline-flex;align-items:center;gap:5px;padding:4px 8px 4px 6px;border-radius:8px;background:var(--bg2);border:1px solid var(--line);font:600 12.5px var(--mono);color:var(--ink2)}
.fc svg.i{width:15px;height:15px;color:var(--acc)}
.fc.g-Климат svg.i{color:var(--heat)} .fc.g-Комфорт svg.i{color:var(--acc2)} .fc.g-Управление svg.i{color:var(--vio)} .fc.g-Безопасность svg.i{color:var(--warn)}
.room .none{font-size:12.5px;color:var(--faint)}
.lvl{display:flex;gap:4px}
.lvl button{flex:1;font:600 11.5px var(--sans);padding:5px 0;border-radius:7px;border:1px solid var(--line);background:transparent;color:var(--muted);cursor:pointer}
.lvl button:hover{color:var(--ink);border-color:var(--line2)}
.addroom{border:1.5px dashed var(--line2);border-radius:var(--r);display:flex;align-items:center;justify-content:center;gap:10px;color:var(--muted);font-weight:600;min-height:110px;cursor:pointer;background:transparent;font:600 14px var(--sans)}
.addroom:hover{color:var(--acc);border-color:var(--acc-line);background:var(--acc-soft)}

/* выдвижная панель */
.drawer{position:fixed;top:0;right:0;height:100vh;width:min(440px,100vw);background:var(--panel);border-left:1px solid var(--line2);box-shadow:-30px 0 60px -20px rgba(0,0,0,.35);transform:translateX(105%);transition:transform .25s cubic-bezier(.2,.8,.2,1);z-index:40;display:flex;flex-direction:column}
.drawer.on{transform:none}
.drawer .dh{padding:18px 20px;border-bottom:1px solid var(--line);display:flex;gap:12px;align-items:center}
.drawer .db{padding:18px 20px;overflow-y:auto;display:flex;flex-direction:column;gap:18px;flex:1}
.drawer .df{padding:14px 20px;border-top:1px solid var(--line);display:flex;gap:8px;justify-content:space-between}
.grp h4{margin:0 0 8px;font-size:12px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);font-weight:600}
.ctr{display:flex;align-items:center;gap:10px;padding:7px 0}
.ctr .lb{flex:1;display:flex;align-items:center;gap:10px;font-size:14px;color:var(--ink2)}
.ctr .lb svg.i{color:var(--acc)}
.stepr{display:inline-flex;align-items:center;background:var(--bg2);border:1px solid var(--line2);border-radius:10px;overflow:hidden}
.stepr button{width:34px;height:32px;border:none;background:transparent;color:var(--ink2);cursor:pointer;display:grid;place-items:center}
.stepr button:hover{background:var(--raise);color:var(--acc)}
.stepr input{width:38px;border:none;background:transparent;text-align:center;font:600 14px var(--mono);padding:0;border-radius:0}
.stepr input:focus{box-shadow:none}
.stepr.nz{border-color:var(--acc-line)} .stepr.nz input{color:var(--acc)}
.scrim{position:fixed;inset:0;background:rgba(10,16,20,.45);backdrop-filter:blur(2px);z-index:30;opacity:0;pointer-events:none;transition:.2s}
.scrim.on{opacity:1;pointer-events:auto}
.modal{position:fixed;left:50%;top:50%;transform:translate(-50%,-48%) scale(.98);width:min(720px,calc(100vw - 32px));max-height:calc(100vh - 40px);overflow:auto;background:var(--panel);border:1px solid var(--line2);border-radius:18px;z-index:41;opacity:0;pointer-events:none;transition:.2s;box-shadow:var(--shadow)}
.modal.on{opacity:1;pointer-events:auto;transform:translate(-50%,-50%)}
.modal .mh{padding:18px 22px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line)}
.modal .mb{padding:20px 22px}
.types{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px}
.type{display:flex;flex-direction:column;align-items:center;gap:8px;padding:16px 8px;border-radius:12px;border:1px solid var(--line);background:var(--bg2);color:var(--ink2);cursor:pointer;font:600 13.5px var(--sans);transition:.15s;position:relative}
@media (hover:hover){.type:hover{border-color:var(--acc-line);color:var(--ink);background:var(--acc-soft)}}
.type svg.i{width:30px;height:30px;color:var(--acc);stroke-width:1.4}
.type .badge{position:absolute;top:6px;right:6px;font:600 11px var(--mono);background:var(--acc);color:var(--acc-ink);border-radius:9px;padding:0 6px}

/* варианты */
.variants{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px}
.var{background:linear-gradient(180deg,var(--panel2),var(--panel));border:1px solid var(--line);border-radius:16px;padding:20px;display:flex;flex-direction:column;gap:14px;position:relative;overflow:hidden}
.var.best{border-color:var(--acc-line);box-shadow:var(--glow)}
.var .vt{font-size:13px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.08em}
.var .vp{font:700 30px var(--mono);letter-spacing:-.03em}
.var.best .vp{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.var .stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.var .stats div{background:var(--bg2);border-radius:9px;padding:8px;border:1px solid var(--line)}
.var .stats b{display:block;font:600 15px var(--mono)}
.var .stats span{font-size:11px;color:var(--muted)}
.var .files{display:flex;flex-direction:column;gap:6px}
.filelink{display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:10px;background:var(--bg2);border:1px solid var(--line);color:var(--ink2);font-size:13.5px;min-width:0}
.filelink:hover{border-color:var(--acc-line);color:var(--ink);text-decoration:none}
.filelink span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.filelink .ext{font:600 10.5px var(--mono);padding:2px 6px;border-radius:5px;background:var(--raise);color:var(--muted);text-transform:uppercase}
.filelink .ext.pdf{color:var(--pdf);background:rgba(255,107,107,.12)} .filelink .ext.xlsx{color:var(--acc);background:var(--acc-soft)}
.ribbon{position:absolute;top:14px;right:-34px;transform:rotate(45deg);background:var(--grad);color:var(--acc-ink);font:700 10.5px var(--sans);letter-spacing:.08em;padding:4px 40px;text-transform:uppercase}
.pills{display:flex;gap:10px;flex-wrap:wrap}
.pill{display:flex;align-items:center;gap:10px;padding:11px 14px;border-radius:12px;border:1px solid var(--line2);background:var(--bg2);cursor:pointer;font-weight:600;font-size:14px;color:var(--ink2);transition:.15s}
.pill:has(input:checked){border-color:var(--acc);background:var(--acc-soft);color:var(--ink)}
.pill input{margin:0}
.files-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px}
.drop{border:1.5px dashed var(--line2);border-radius:var(--r);padding:26px;text-align:center;color:var(--muted);display:flex;flex-direction:column;align-items:center;gap:10px;transition:.15s;cursor:pointer}
.drop:hover,.drop.over{border-color:var(--acc);background:var(--acc-soft);color:var(--ink)}
.drop svg.i{width:30px;height:30px;color:var(--acc)}
.msgs{display:flex;flex-direction:column;gap:10px;max-height:420px;overflow-y:auto;padding-right:4px}
.msg{max-width:85%;padding:10px 13px;border-radius:14px;font-size:14px;background:var(--raise);align-self:flex-start;border:1px solid var(--line)}
.msg.me{align-self:flex-end;background:var(--acc-soft);border-color:var(--acc-line)}
.msg .mt{font-size:11.5px;color:var(--muted);margin-top:4px}
.choice{display:flex;gap:14px;align-items:center;padding:14px 16px;border-radius:14px;background:var(--acc-soft);border:1px solid var(--acc-line)}
.choice .ic{width:42px;height:42px;border-radius:12px;background:var(--grad);color:var(--acc-ink);display:grid;place-items:center}
.choice .ic svg{stroke:var(--acc-ink)}

/* вход */
.loginwrap{min-height:100vh;display:grid;place-items:center;padding:20px}
.loginbox{width:min(400px,100%);display:flex;flex-direction:column;gap:18px}
.loginbox .card{padding:28px;gap:16px}
.hero-mark{width:52px;height:52px;border-radius:15px;background:var(--grad);display:grid;place-items:center;box-shadow:0 12px 40px -10px rgba(53,224,161,.7)}
.hero-mark svg{stroke:var(--acc-ink);width:28px;height:28px;stroke-width:2.1;fill:none}

/* адаптив */
@media (max-width:1100px){.editor{grid-template-columns:1fr}.dock{position:static}}
@media (max-width:860px){
  .shell{grid-template-columns:1fr}
  .side{position:fixed;bottom:0;top:auto;left:0;right:0;height:auto;flex-direction:row;padding:8px 10px calc(8px + env(safe-area-inset-bottom));border-right:none;border-top:1px solid var(--line);z-index:20;justify-content:space-around}
  .side .logo,.side .foot,.side .themebox{display:none}
  .nav{flex-direction:row;gap:2px;width:100%;justify-content:space-around}
  .nav a{flex-direction:column;gap:3px;font-size:11px;padding:6px 8px}
  .main{padding-bottom:110px}
  h1{font-size:23px}
}

/* оборудование и системы */
.systems{display:flex;flex-direction:column;gap:22px}
.systems-in{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;align-items:stretch}
.sysgrp{display:flex;flex-direction:column;gap:12px}
.sysgrp>.fh{display:flex;align-items:center;gap:10px;color:var(--ink2);font-weight:650;font-size:14px}
.sysgrp>.fh::after{content:"";flex:1;height:1px;background:var(--line)}
.vend{display:flex;flex-wrap:wrap;gap:6px}
.vend button{font:600 12.5px var(--sans);padding:6px 10px;border-radius:8px;border:1px solid var(--line2);background:var(--bg2);color:var(--muted);cursor:pointer}
.vend button.on{border-color:var(--acc);background:var(--acc-soft);color:var(--ink)}
.sys{background:linear-gradient(180deg,var(--panel2),var(--panel));border:1px solid var(--line);border-radius:var(--r);padding:16px;display:flex;flex-direction:column;gap:12px;transition:.15s}
.sys.on{border-color:var(--acc-line);box-shadow:var(--glow)}
.sys .sh{display:flex;gap:12px;align-items:center}
.sys .si{width:40px;height:40px;border-radius:11px;background:var(--raise);display:grid;place-items:center;color:var(--muted);flex:none}
.sys.on .si{background:var(--acc-soft);color:var(--acc)}
.sys .st{flex:1;min-width:0}.sys .st b{display:block;font-size:15px}.sys .st span{font-size:12.5px;color:var(--muted)}
.sys .body{display:flex;flex-direction:column;gap:6px}
.sys:not(.on) .body{display:none}
.sw{position:relative;width:42px;height:24px;flex:none}
.sw input{opacity:0;width:0;height:0;position:absolute}
.sw i{position:absolute;inset:0;border-radius:24px;background:var(--raise);border:1px solid var(--line2);transition:.2s;cursor:pointer}
.sw i::after{content:"";position:absolute;width:18px;height:18px;border-radius:50%;left:2px;top:2px;background:var(--muted);transition:.2s}
.sw input:checked+i{background:var(--acc);border-color:var(--acc)}
.sw input:checked+i::after{left:20px;background:var(--acc-ink)}
.sw input:focus-visible+i{outline:2px solid var(--acc);outline-offset:2px}
.picker{position:relative}
.pick-res{position:absolute;left:0;right:0;top:calc(100% + 6px);background:var(--panel2);border:1px solid var(--line2);border-radius:12px;max-height:340px;overflow-y:auto;z-index:15;box-shadow:var(--shadow)}
.pick-res button{display:flex;width:100%;gap:12px;align-items:center;text-align:left;padding:9px 12px;border:none;background:transparent;color:var(--ink);font:14px var(--sans);cursor:pointer;border-bottom:1px solid var(--line)}
.pick-res button:hover,.pick-res button.act{background:var(--acc-soft)}
.pick-res .pc{font:12px var(--mono);color:var(--muted);width:120px;flex:none;overflow:hidden;text-overflow:ellipsis}
.pick-res .pn{flex:1;min-width:0}.pick-res .pn small{display:block;color:var(--muted);font-size:12px}
.pick-res .pp{font:600 13px var(--mono);white-space:nowrap}
.xt td{padding:7px 10px}.xt .nm small{display:block;color:var(--muted);font-size:12px}
.xt td.n{white-space:nowrap}

/* переключатель темы */
.theme{display:inline-flex;background:var(--bg2);border:1px solid var(--line2);border-radius:10px;padding:2px;gap:2px}
.theme button{width:30px;height:28px;border:none;border-radius:8px;background:transparent;color:var(--muted);cursor:pointer;display:grid;place-items:center}
.theme button:hover{color:var(--ink)}
.theme button.on{background:var(--raise);color:var(--acc)}
.side .themebox{margin-top:auto;padding:8px 12px 4px;display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px;color:var(--muted)}
:root[data-theme="light"] .btn.primary,:root[data-theme="light"] .logo .mark{box-shadow:0 6px 16px -8px rgba(11,148,101,.6)}
:root[data-theme="light"] .card,:root[data-theme="light"] .obj,:root[data-theme="light"] .room,:root[data-theme="light"] .sys,:root[data-theme="light"] .var,:root[data-theme="light"] .kpi{box-shadow:0 1px 2px rgba(20,40,50,.06)}
:root[data-theme="light"] .var.best .vp,:root[data-theme="light"] .cvar.rec .vp,:root[data-theme="light"] .cvar.chosen .vp,:root[data-theme="light"] .grad-text{background:none;-webkit-background-clip:initial;background-clip:initial;color:var(--acc)}
@media (prefers-color-scheme: light){:root[data-theme="auto"] .var.best .vp,:root[data-theme="auto"] .cvar.rec .vp,:root[data-theme="auto"] .cvar.chosen .vp{background:none;-webkit-background-clip:initial;background-clip:initial;color:var(--acc)}}
.drawer:not(.on){box-shadow:none;visibility:hidden}

/* фирменный знак IA */
img.mark{width:34px;height:34px;border-radius:9px;display:block;flex:none;box-shadow:0 4px 14px -6px rgba(0,0,0,.5)}
.logo{gap:11px}
img.hero-mark{width:56px;height:56px;border-radius:15px;display:block;box-shadow:0 12px 30px -12px rgba(0,0,0,.55)}
.logo img.mark,.brand img.mark,img.hero-mark{background:none!important;object-fit:contain}
.logo img.mark{width:34px;height:34px}
details.checks{background:var(--bg2);border:1px solid var(--line);border-radius:10px;padding:9px 12px}
details.checks summary{cursor:pointer}
details.checks ul{margin:8px 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--ink2)}
details.checks li{padding-left:16px;position:relative}
details.checks li::before{content:"";position:absolute;left:2px;top:7px;width:7px;height:7px;border-radius:50%;background:var(--acc)}
details.checks li.lv-warn::before{background:var(--warn)} details.checks li.lv-bad::before{background:var(--bad)}

/* глянец: блик сверху, мягкий объём */
.card,.obj,.room,.sys,.var,.kpi,.live,.cvar,.stepper,.price,.pl,.type{box-shadow:inset 0 1px 0 rgba(255,255,255,.07),0 1px 2px rgba(0,0,0,.18)}
.card,.obj,.room,.sys,.var,.live{background-image:linear-gradient(180deg,rgba(255,255,255,.045),rgba(255,255,255,0) 42%)}
.btn.primary{background-image:linear-gradient(180deg,rgba(255,255,255,.32),rgba(255,255,255,0) 52%),var(--grad);box-shadow:inset 0 1px 0 rgba(255,255,255,.45),0 8px 22px -10px rgba(61,223,163,.75)}
.btn{box-shadow:inset 0 1px 0 rgba(255,255,255,.06)}
.side{box-shadow:inset -1px 0 0 rgba(255,255,255,.04)}
.nav a.on{box-shadow:inset 0 1px 0 rgba(255,255,255,.08)}
.var.best,.room.sel,.sys.on{box-shadow:inset 0 1px 0 rgba(255,255,255,.1),var(--glow)}
:root[data-theme="light"] .card,:root[data-theme="light"] .obj,:root[data-theme="light"] .room,:root[data-theme="light"] .sys,:root[data-theme="light"] .var,:root[data-theme="light"] .live{
  background-image:linear-gradient(180deg,#ffffff,#f7fafa);box-shadow:inset 0 1px 0 #fff,0 1px 2px rgba(20,40,50,.06),0 8px 24px -16px rgba(20,40,50,.18)}
:root[data-theme="light"] .btn{box-shadow:inset 0 1px 0 #fff,0 1px 2px rgba(20,40,50,.08)}

.backbar{margin:-12px 0 -8px}
.backbar .btn{padding-left:6px}
.upl{display:flex;flex-direction:column;gap:6px}
.upl .bar{height:6px;border-radius:6px;background:var(--raise);overflow:hidden}
.upl .bar i{display:block;height:100%;width:0;background:var(--grad);transition:width .2s}

/* щит ЩА */
.live .pl .shl{font-size:11.5px;color:var(--muted);text-decoration:none;margin-top:2px}
.live .pl .shl:hover{color:var(--acc)}
.shield-tabs{display:flex;gap:8px;flex-wrap:wrap}
.shield-tabs a{padding:9px 14px;border-radius:11px;border:1px solid var(--line);background:var(--bg2);color:var(--ink2);text-decoration:none;font-weight:600;font-size:14px}
.shield-tabs a.on{border-color:var(--acc-line);background:var(--acc-soft);color:var(--ink)}
.shield-tabs a small{display:block;font-weight:500;color:var(--muted);font-size:11.5px}
.sheet{background:#fff;border-radius:12px;border:1px solid var(--line);overflow:auto;padding:8px;box-shadow:0 8px 30px rgba(0,0,0,.18)}
.sheet img{display:block;width:100%;height:auto;min-width:760px}
.sheet.front img{max-width:980px;margin:0 auto}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px}
.kpis div{background:var(--bg2);border:1px solid var(--line);border-radius:12px;padding:12px}
.kpis b{display:block;font-size:20px;font-family:'JetBrains Mono',monospace}
.kpis span{font-size:12px;color:var(--muted)}
table.spec{width:100%;border-collapse:collapse;font-size:13px}
table.spec th{text-align:left;color:var(--muted);font-weight:600;font-size:12px;padding:7px 8px;border-bottom:1px solid var(--line)}
table.spec td{padding:7px 8px;border-bottom:1px solid var(--line);vertical-align:top}
table.spec td.pos{font-family:'JetBrains Mono',monospace;font-weight:700;white-space:nowrap}
table.spec tr.sub td{color:var(--muted);font-size:12px;background:var(--bg2);font-weight:600}
.rules{white-space:pre-wrap;font-size:12.5px;line-height:1.55;color:var(--ink2);margin:0}
.flash.warn{background:rgba(245,166,35,.12);border-color:rgba(245,166,35,.45)}

/* передача в работу */
.handoff{margin-bottom:16px}
.handoff.q{border-color:rgba(139,92,246,.45)}
.handoff.ok{border-color:var(--acc-line)}
.handoff ul.checks{list-style:none;padding:0;display:flex;flex-direction:column;gap:6px}
.handoff ul.checks li{display:flex;gap:8px;align-items:center;font-size:14px}
.handoff ul.checks li.ok svg{color:var(--acc)}
.handoff ul.checks li.bad{color:var(--muted)}
.queue .hd{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:8px}
.queue .hd h2{display:flex;align-items:center;gap:8px;margin:0}
.qrow{display:grid;grid-template-columns:minmax(0,2fr) 110px 70px minmax(0,1.2fr);gap:12px;align-items:center;padding:10px 12px;border-radius:11px;border:1px solid var(--line);
  background:var(--bg2);color:inherit;text-decoration:none;margin-top:8px}
.qrow:hover{border-color:var(--acc-line)}
.qrow .tt{display:flex;flex-direction:column;min-width:0}
.qrow .tt b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qrow .note{grid-column:1/-1;color:var(--ink2)}
@media (max-width:700px){.qrow{grid-template-columns:1fr 1fr}}

/* ================= телефон (≤ 860 px) ================= */
.mtop,.mbar{display:none}
@media (max-width:860px){
  html{-webkit-text-size-adjust:100%}
  body{overscroll-behavior-y:none}
  .side .themebox{display:none!important}
  .side{padding:6px 4px calc(6px + env(safe-area-inset-bottom));backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}
  .nav a{min-width:58px;padding:6px 4px;border-radius:12px}
  .nav a span{font-size:10.5px}
  .main{padding:0 14px calc(96px + env(safe-area-inset-bottom));gap:16px}
  /* верхняя панель: логотип, тема, выход */
  .mtop{display:flex;align-items:center;justify-content:space-between;gap:10px;position:sticky;top:0;z-index:25;margin:0 -14px;
        padding:calc(8px + env(safe-area-inset-top)) 14px 8px;background:var(--side);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--line)}
  .mlogo{display:flex;align-items:center;gap:9px;color:var(--ink);text-decoration:none;font-weight:750;font-size:16px}
  .mlogo img{width:30px;height:30px;border-radius:9px}
  .mtools{display:flex;align-items:center;gap:8px}
  .mtools .theme button{padding:5px 7px}
  .backbar{margin-top:-4px}
  /* формы: 16 px — iOS не увеличивает страницу при вводе */
  input,select,textarea{font-size:16px!important}
  .btn{min-height:42px}
  .btn.sm{min-height:36px}
  /* заголовки и шапки страниц */
  h1{font-size:22px} h2{font-size:18px}
  .pagehead{flex-direction:column;align-items:stretch;gap:12px}
  .pagehead .btn.lg{justify-content:center}
  .pagehead>.row{flex-wrap:wrap}
  .card{padding:16px}
  .card .hd{flex-wrap:wrap}
  .card .hd .t{min-width:0}
  .grid2,.grid3{grid-template-columns:1fr!important}
  /* горизонтальные ленты: этапы, вкладки, сегменты — прокрутка пальцем */
  .stepper{border-radius:12px;padding:4px;scroll-snap-type:x proximity}
  .stepper .s{padding:7px 10px;font-size:12.5px;scroll-snap-align:center}
  .tabs{position:sticky;top:calc(48px + env(safe-area-inset-top));z-index:15;background:var(--bg);margin:0 -14px;padding:0 10px;scroll-snap-type:x proximity}
  .tabs a{scroll-snap-align:center;white-space:nowrap}
  .seg{display:flex;max-width:100%;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .seg::-webkit-scrollbar{display:none}
  .seg button{white-space:nowrap;flex:0 0 auto}
  .toolbar{flex-direction:column;align-items:stretch;gap:10px}
  .toolbar .search{width:100%}
  /* главная */
  .kpis{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:10px}
  .kpi{padding:14px}
  .kpi .v{font-size:24px}
  .qrow{grid-template-columns:1fr auto;gap:4px 10px}
  .qrow .tt{grid-column:1/-1}
  /* объект: строки «поле + кнопка» складываются */
  form.row{flex-wrap:wrap}
  form.row input{flex:1 1 100%!important;min-width:0}
  form.row .btn{flex:1 1 auto;justify-content:center}
  .handoff .row.between{flex-wrap:wrap}
  .pills{flex-wrap:wrap}
  .pills .pill{flex:1 1 100%}
  #p-variants .row.between{flex-wrap:wrap;gap:12px}
  #p-variants .row.between .btn.lg{width:100%;justify-content:center}
  .variants{grid-template-columns:1fr!important}
  /* мини-панель цены в редакторе помещений */
  .mbar{display:flex;position:fixed;left:10px;right:10px;bottom:calc(70px + env(safe-area-inset-bottom));z-index:19;align-items:center;justify-content:space-between;gap:10px;
        padding:10px 14px;border-radius:14px;border:1px solid var(--acc-line);background:var(--panel);color:var(--ink);font:500 13px var(--sans);
        box-shadow:0 10px 30px -10px rgba(0,0,0,.35);cursor:pointer;text-align:left}
  .mbar b{font-weight:700;color:var(--acc)}
  #p-rooms{padding-bottom:56px}
  /* выдвижная панель — на весь экран */
  .drawer{width:100vw;border-left:none;height:100dvh}
  .drawer .df{padding-bottom:calc(14px + env(safe-area-inset-bottom))}
  /* таблицы прокручиваются внутри карточки */
  table.spec,table.grid,.tbl{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;white-space:nowrap}
  table.spec td.small,table.spec td.muted{white-space:normal;min-width:180px}
  /* щит */
  .shield-tabs{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}
  .shield-tabs a{flex:0 0 auto}
  .sheet.front img{min-width:640px}
  .sheet.wide img{min-width:1200px}
  .sheet{-webkit-overflow-scrolling:touch}
  /* файлы */
  .files-grid{grid-template-columns:1fr!important}
  .drop{padding:22px 14px}
  .flash{font-size:14px}
}
@media (max-width:380px){ .nav a span{font-size:9.5px} .kpi .v{font-size:21px} }
@media (max-width:860px){ .search{max-width:none;min-width:0} }
@media (max-width:860px){ .dash>*,.grid2>*,.grid3>*,.stack>*{min-width:0} .grid2 .grid2{gap:12px} }
@media (max-width:860px){
  .objhead{flex-direction:column;align-items:stretch;gap:10px}
  .objhead>.row{display:grid;grid-template-columns:1fr 1fr;gap:8px}
  .objhead>.row .btn{justify-content:center;font-size:13px;padding-left:8px;padding-right:8px}
}
/* инструкция */
.guidelink{display:flex;align-items:center;gap:10px;margin:10px 4px 0;padding:9px 12px;border-radius:10px;color:var(--muted);text-decoration:none;font-size:13.5px;font-weight:600;border:1px dashed var(--line2)}
.guidelink:hover,.guidelink.on{color:var(--acc);border-color:var(--acc-line);background:var(--acc-soft)}
.guidebanner{display:flex;align-items:center;gap:16px;color:inherit;text-decoration:none;border-color:var(--acc-line)}
.guidebanner>span:nth-child(2){flex:1;display:flex;flex-direction:column;gap:4px}
.guidebanner .si{width:44px;height:44px;border-radius:12px;background:var(--acc-soft);color:var(--acc);display:grid;place-items:center}
.gtoc{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:6px 18px}
.gtoc a{color:var(--ink2);text-decoration:none;font-size:14px;padding:4px 0}
.gtoc a b{display:inline-block;min-width:26px;color:var(--acc);font-family:var(--mono)}
.gtoc a:hover{color:var(--acc)}
.gsl{display:grid;grid-template-columns:minmax(0,380px) minmax(0,1fr);gap:28px;align-items:start;scroll-margin-top:20px}
.gsl.gk-flow,.gsl.gk-table,.gsl.gk-two{grid-template-columns:1fr}
.gsl h2{margin:6px 0 10px;font-size:24px}
.gtx p{margin:0 0 10px}
.gbul{margin:8px 0 0;padding-left:20px;display:flex;flex-direction:column;gap:8px;color:var(--ink2);font-size:15px;line-height:1.45}
.gimgs{display:grid;gap:14px}
.gimgs.n2{grid-template-columns:1fr 1fr}
.gimgs.phones{grid-template-columns:repeat(3,minmax(0,200px));justify-content:start}
.gimgs figure{margin:0;display:flex;flex-direction:column;gap:6px}
.gimgs img{width:100%;height:auto;border-radius:12px;border:1px solid var(--line);display:block;background:#fff}
.gimgs.phones img{border-radius:22px;border:5px solid #13201C}
.gimgs figcaption{font-size:12.5px;color:var(--muted)}
.gflow{list-style:none;padding:0;margin:12px 0;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;counter-reset:g}
.gflow li{counter-increment:g;border:1px solid var(--line);border-radius:12px;padding:14px;display:flex;flex-direction:column;gap:6px;background:var(--bg2)}
.gflow li::before{content:counter(g);font:700 22px var(--mono);color:var(--acc)}
.gflow li span{font-size:13px;color:var(--muted)}
.gflow li.adm{background:#13201C;border-color:#13201C}.gflow li.adm b{color:#F4F8F6}.gflow li.adm span{color:#BFD3CC}.gflow li.adm::before{color:#3DDFA3}
@media (max-width:860px){
  .guidelink{display:none}
  .gsl{grid-template-columns:1fr}
  .gimgs.n2{grid-template-columns:1fr}
  .gimgs.phones{grid-template-columns:repeat(3,minmax(0,1fr))}
  .gflow{grid-template-columns:1fr 1fr}
  .guidebanner{flex-wrap:wrap}
}
.gsl>*{min-width:0}.gtbl{overflow-x:auto;-webkit-overflow-scrolling:touch}

/* кнопки мессенджеров — фирменные цвета */
.btn.msg{color:#fff;border-color:transparent;font-weight:600}
.btn.msg:hover{color:#fff;filter:brightness(1.08);border-color:transparent}
.btn.msg svg{color:#fff}
.btn.msg.tg{background:#229ED9}
.btn.msg.wa{background:#25D366;color:#fff}
.btn.msg.mx{background:linear-gradient(135deg,#26B5FF 0%,#3A5BFF 50%,#9A4BFF 100%)}

/* карточки доп. систем: одна высота в ряду, «Как подбирать» прижат к низу */
.sys .body{flex:1}
.sys>a.tiny{margin-top:auto}
.sys:not(.on)>a.tiny{margin-top:auto}
.vsel{display:flex;flex-direction:column;gap:6px}
.vsel .lb{font-size:12.5px;color:var(--muted)}
.vsel select{width:100%;min-width:0;font:600 13.5px var(--sans);padding:9px 12px;border-radius:10px;border:1px solid var(--acc-line);background:var(--bg2);color:var(--ink)}
/* нечётная последняя карточка в группе — на всю ширину, параметры в две колонки */
@media (min-width:980px){
.systems-in>.sys:last-child:nth-child(odd){grid-column:1/-1}
.systems-in>.sys.on:last-child:nth-child(odd) .body{display:grid;grid-template-columns:1fr 1fr;column-gap:28px;align-content:start}
.systems-in>.sys:last-child:nth-child(odd) .body>.vend,.systems-in>.sys:last-child:nth-child(odd) .body>.vsel,.systems-in>.sys:last-child:nth-child(odd) .body>.tiny{grid-column:1/-1}
}
/* вкладка «План»: расстановка оборудования */
.planwrap{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:18px;align-items:start}
@media (max-width:1100px){.planwrap{grid-template-columns:1fr}}
.pl-pal{display:flex;flex-wrap:wrap;gap:6px}
.pl-pal button{display:inline-flex;align-items:center;gap:7px;font:600 12.5px var(--sans);padding:5px 10px 5px 6px;border-radius:999px;border:1px solid var(--line2);background:var(--bg2);color:var(--ink2);cursor:pointer}
.pl-pal button.on{border-color:var(--acc);background:var(--acc-soft);color:var(--ink)}
.pl-pal i,.plsym{font-style:normal;display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 3px;border-radius:999px;border:2px solid var(--c);color:var(--c);background:#fff;font:700 10.5px var(--sans)}
.pl-stage{position:relative;border:1px solid var(--line);border-radius:var(--r);background:var(--panel);min-height:320px;overflow:hidden}
.pl-board{position:relative;line-height:0;touch-action:none;user-select:none}
.pl-board img{width:100%;height:auto;display:block;background:#fff}
.pl-board svg{position:absolute;inset:0;width:100%;height:100%;cursor:crosshair}
.pl-board .pm{cursor:grab}
.pl-board .pm.sel circle{filter:drop-shadow(0 0 4px rgba(0,0,0,.35))}
.pl-board .pl-lab{paint-order:stroke;stroke:#fff;stroke-width:3px}
#pl-sel{display:flex;flex-direction:column;gap:10px}
#pl-sel input[type=range]{width:100%}
@media (max-width:860px){.pl-pal{flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px;scrollbar-width:none}.pl-pal button{flex:none}}

.live .pl{cursor:pointer}
.live .pl:hover{border-color:var(--acc-line)}
.live .pl .nm span.nmt{white-space:normal;display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:13px;color:var(--ink2);font-weight:600}
.live .pl .pt{font-style:normal;font-size:10.5px;font-weight:600;padding:1px 7px;border-radius:999px;background:var(--raise);color:var(--muted)}
.live .pl .pt.ok{background:var(--acc-soft);color:var(--acc)}
@media (max-width:420px){.price{padding:7px 8px}.price .p{font-size:13px}}
