/* Щитовая — строгий интерфейс.
   Светлый каменный фон, белые панели с тонкой рамкой, скругления 6–8px,
   красный #FF4D4D только для главных действий и выделения. Шрифт Inter, данные — JetBrains Mono. */
:root{
  --bg:#F5F5F4; --panel:#FFFFFF; --sunken:#FAFAF9; --hover:#F5F5F4;
  --ink:#1C1917; --ink-2:#44403C; --muted:#57534E; --faint:#78716C;
  --line:#E7E5E4; --line-2:#D6D3D1; --line-3:#A8A29E;
  --accent:#FF4D4D; --accent-hover:#E83E3E; --accent-press:#D33535; --accent-text:#C62F2F; --accent-soft:#FFF1F1; --accent-line:#FFC9C9;
  --ring:0 0 0 3px rgba(255,77,77,.22);
  --ok:#15803D; --ok-soft:#ECFDF3; --warn:#A16207; --warn-soft:#FEF7E0; --err:#B91C1C; --err-soft:#FEF2F2;
  --dark:#141210;
  --enc:#D6DADF; --enc-edge:#ADB4BB; --plate:#EEF0F2; --rail:#B7BDC4; --rail-slot:#9DA4AC;
  --dev:#FAFAF7; --dev-edge:#B7BCC2; --dev-face:#ECEDEE; --dev-ink:#30363C; --lever:#22272C; --screw:#3A3F45; --tape:#FFFFFF;
  --f-ui:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  --f-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --r:6px; --r-card:8px;
  --sh-1:0 1px 2px rgba(28,25,23,.06); --sh-2:0 4px 16px rgba(28,25,23,.08); --sh-pop:0 12px 32px rgba(28,25,23,.16);
  color-scheme:light;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--f-ui);font-size:14px;line-height:1.5;min-height:100vh;display:flex;flex-direction:column}
main{flex:1 0 auto}
h1,h2,h3{margin:0 0 .4em;line-height:1.2;text-wrap:balance;letter-spacing:-.015em;color:var(--ink)}
h1{font-size:clamp(26px,3.2vw,34px);font-weight:700}
h2{font-size:18px;font-weight:650}
h3{font-size:16px;font-weight:650}
p{margin:0 0 .8em}
a{color:var(--accent-text);text-underline-offset:2px}
a:hover{color:var(--accent-press)}
code{font-family:var(--f-mono);font-size:.88em;background:var(--hover);border:1px solid var(--line);color:var(--ink-2);padding:0 5px;border-radius:4px}
button,select,input,textarea{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.ico{flex:none;display:inline-block;vertical-align:-3px}
.mono{font-family:var(--f-mono)}
.muted{color:var(--muted)}
.small{font-size:13px}
.eyebrow,.label{display:block;font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0 0 6px}
.label{color:var(--accent-text)}
.lead{font-size:16px;color:var(--muted);max-width:64ch;line-height:1.6}
.empty{color:var(--muted);font-size:14px}
.wrap,.wide,.narrow,.nav-wrap,.foot-in,.sec-in,.flashes{padding-left:max(20px,env(safe-area-inset-left,0px));padding-right:max(20px,env(safe-area-inset-right,0px))}
.wrap{max-width:1200px;width:100%;margin:0 auto;padding-block:32px 56px}
.wide{max-width:1600px;width:100%;margin:0 auto;padding-block:20px 40px}
.narrow{max-width:520px;width:100%;margin:0 auto;padding-block:48px 64px}
.home{padding:0}

/* ---------- Кнопки ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:36px;padding:0 14px;border:1px solid var(--line-2);border-radius:var(--r);background:var(--panel);color:var(--ink);font-size:14px;font-weight:600;line-height:1;text-decoration:none;white-space:nowrap;box-shadow:var(--sh-1);transition:background-color .12s,border-color .12s,color .12s}
.btn:hover{background:var(--sunken);border-color:var(--line-3);color:var(--ink)}
.btn:active{background:var(--hover)}
.btn:focus-visible{outline:none;box-shadow:var(--ring);border-color:var(--accent)}
.btn:disabled,.btn[aria-disabled="true"]{opacity:.45;pointer-events:none}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 1px 2px rgba(198,47,47,.3)}
.btn.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:#fff}
.btn.primary:active{background:var(--accent-press)}
.btn.ghost{background:transparent;border-color:transparent;box-shadow:none}
.btn.ghost:hover{background:var(--hover);border-color:transparent}
.btn.danger{color:var(--err)}
.btn.danger:hover{background:var(--err-soft);border-color:#F5B5B5;color:var(--err)}
.btn.sm{height:30px;padding:0 10px;font-size:13px}
.btn.lg{height:44px;padding:0 20px;font-size:15px}
.btn.icon{width:32px;padding:0}
.btn.icon.sm{width:30px}
.btn-white{display:inline-flex;align-items:center;gap:10px;height:46px;padding:0 8px 0 20px;background:#fff;color:var(--ink);border-radius:var(--r);text-decoration:none;font-weight:600;font-size:15px}
.btn-white:hover{background:#F5F5F4;color:var(--ink)}
.btn-white .circ{display:grid;place-items:center;width:32px;height:32px;border-radius:4px;background:var(--accent);color:#fff}
.btn-line{display:inline-flex;align-items:center;height:46px;padding:0 20px;border:1px solid rgba(255,255,255,.4);border-radius:var(--r);color:#fff;text-decoration:none;font-weight:500;font-size:15px}
.btn-line:hover{background:rgba(255,255,255,.08);color:#fff;border-color:rgba(255,255,255,.7)}

/* ---------- Поля ---------- */
input[type=text],input[type=tel],input[type=email],input[type=password],input[type=number],input[type=url],input[type=search],input:not([type]),select,textarea{width:100%;min-width:0;height:36px;padding:0 10px;border:1px solid var(--line-2);border-radius:var(--r);background:#fff;color:var(--ink);font-size:14px;box-shadow:inset 0 1px 1px rgba(28,25,23,.04);transition:border-color .12s,box-shadow .12s}
input:hover,select:hover,textarea:hover{border-color:var(--line-3)}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:var(--ring)}
input::placeholder,textarea::placeholder{color:#A8A29E}
select{appearance:none;-webkit-appearance:none;padding-right:30px;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2357534E' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 10px center;cursor:pointer}
textarea{height:auto;min-height:96px;padding:8px 10px;line-height:1.5}
textarea.code{font-family:var(--f-mono);font-size:12px}
input[type=file]{height:auto;padding:6px;font-size:13px;background:var(--sunken)}
input[type=file]::file-selector-button{height:28px;margin-right:10px;padding:0 10px;border:1px solid var(--line-2);border-radius:4px;background:#fff;font:inherit;font-weight:600;cursor:pointer}
input[type=checkbox],input[type=radio]{accent-color:var(--accent);width:16px;height:16px}
.form{display:flex;flex-direction:column;gap:14px}
.form label{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:600;color:var(--ink-2)}
.form label input,.form label select,.form label textarea{font-weight:400}
.form .btn{align-self:flex-start}
.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
@media (max-width:560px){.grid2,.grid3{grid-template-columns:minmax(0,1fr)}}
.chk-line,.form .chk-line{display:flex;flex-direction:row;align-items:center;gap:8px;font-weight:500;color:var(--ink)}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-card);padding:22px 24px;margin-bottom:16px;box-shadow:var(--sh-1)}
.flashes{max-width:1200px;width:100%;margin:12px auto 0;display:flex;flex-direction:column;gap:6px}
.flash{padding:10px 14px;border-radius:var(--r);border:1px solid #BBE5C8;background:var(--ok-soft);color:var(--ok);font-size:14px;font-weight:500;margin-bottom:8px}
.flash.err{border-color:#F5C2C2;background:var(--err-soft);color:var(--err)}
.flash.info{border-color:var(--line-2);background:var(--panel);color:var(--ink)}
.reqs{list-style:none;padding:0;margin:0;display:grid;gap:4px}
.reqs .ok{color:var(--ok)} .reqs .bad{color:var(--err);font-weight:600}
.ok-card{border-color:#BBE5C8}

/* ---------- Шапка сайта ---------- */
header.site{position:sticky;top:0;z-index:40;background:rgba(255,255,255,.97);border-bottom:1px solid var(--line)}
.nav-wrap{max-width:1200px;margin:0 auto}
.nav-pill{display:flex;align-items:center;gap:8px 20px;flex-wrap:wrap;min-height:60px}
.logo{display:inline-flex;align-items:center;gap:10px;color:var(--ink);text-decoration:none;font-weight:700;font-size:17px;letter-spacing:-.01em}
.logo:hover{color:var(--ink)}
.logo-mark{display:grid;place-items:center;width:30px;height:30px;border-radius:6px;background:var(--accent);color:#fff}
.mainnav{display:flex;gap:4px;flex:1;flex-wrap:wrap;align-self:stretch}
.mainnav a{display:inline-flex;align-items:center;gap:8px;padding:0 12px;color:var(--muted);text-decoration:none;font-size:14px;font-weight:500;border-bottom:2px solid transparent;margin-bottom:-1px}
.mainnav a:hover{color:var(--ink)}
.mainnav a[aria-current="page"]{color:var(--ink);border-bottom-color:var(--accent)}
.usernav{display:flex;align-items:center;gap:6px}
.usernav form{margin:0}
.uname{display:inline-flex;align-items:center;gap:6px;max-width:200px;overflow:hidden;white-space:nowrap;font-size:13px;color:var(--muted);padding:0 6px}
.uname span{overflow:hidden;text-overflow:ellipsis}
.uinit{display:none;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--hover);color:var(--ink);font-size:14px;font-weight:700}
header.site.over{position:absolute;left:0;right:0;background:transparent;border-bottom-color:rgba(255,255,255,.14)}
.over .logo,.over .logo:hover{color:#fff}
.over .mainnav a{color:rgba(255,255,255,.75)}
.over .mainnav a:hover,.over .mainnav a[aria-current="page"]{color:#fff}
.over .uname{color:rgba(255,255,255,.75)}
.over .btn.ghost{color:#fff}
.over .btn.ghost:hover{background:rgba(255,255,255,.1)}
@media (max-width:860px){
  .nav-pill{padding-top:8px;gap:0 12px}
  .mainnav{order:3;flex-basis:100%;flex-wrap:nowrap;gap:0;min-height:44px;margin:6px calc(-1 * max(20px,env(safe-area-inset-left,0px))) 0;padding:0 max(12px,env(safe-area-inset-left,0px));border-top:1px solid var(--line);overflow-x:auto;scrollbar-width:none}
  .mainnav::-webkit-scrollbar{display:none}
  .mainnav a{flex:1 1 0;justify-content:center;white-space:nowrap;padding:0 8px}
  .over .mainnav{border-top-color:rgba(255,255,255,.14)}
  .usernav{margin-left:auto}
  .hide-sm{display:none}
}
@media (max-width:560px){
  .nav-pill{min-height:52px}
  .logo{font-size:16px;gap:8px}
  .logo-mark{width:28px;height:28px}
  .mainnav{min-height:54px}
  .mainnav a{flex-direction:column;gap:3px;padding:7px 2px 6px;font-size:11px;font-weight:600;letter-spacing:-.01em;min-width:64px}
  .mainnav a .ico,.mainnav a svg{width:19px;height:19px}
  .mainnav a[aria-current="page"]{color:var(--accent-text)}
  .over .mainnav a[aria-current="page"]{color:#fff}
  .uname{padding:0;max-width:none}
  .uname svg,.uname span{display:none}
  .uname .uinit{display:grid}
  .over .uname .uinit{background:rgba(255,255,255,.14);color:#fff}
  .usernav .btn.sm{height:32px;width:32px;padding:0;justify-content:center}
  .usernav a.btn.sm{width:auto;padding:0 10px}
}

/* ---------- Главная ---------- */
.hero{position:relative;overflow:hidden;color:#fff;min-height:680px;display:flex;align-items:center;background:var(--dark)}
.hero-media{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:30% 40%}
.hero-veil{position:absolute;inset:0;background:linear-gradient(90deg,rgba(20,18,16,.92) 0%,rgba(20,18,16,.78) 50%,rgba(20,18,16,.55) 100%)}
.glow{display:none}
.hero-in{position:relative;z-index:2;width:100%;max-width:1200px;margin:0 auto;padding:140px 20px 96px;display:flex;flex-direction:column;align-items:flex-start;gap:22px}
.hero h1{margin:0;font-size:56px;font-size:clamp(38px,6vw,64px);line-height:1.04;font-weight:800;letter-spacing:-.03em;color:#fff;max-width:14ch}
.grad{color:var(--accent)}
.hero p{margin:0;max-width:560px;font-size:18px;line-height:1.6;color:#D6D3D1}
.hero-cta{display:flex;flex-wrap:wrap;gap:12px}
.hero-scroll{display:none}
.ticker{background:var(--panel);border-bottom:1px solid var(--line)}
.ticker-in{max-width:1200px;margin:0 auto;padding:14px 20px;display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 24px;font-size:13px;font-weight:500;color:var(--muted)}
.ticker-in span{display:inline-flex;align-items:center;gap:8px}
.ticker-in .ico{color:var(--accent)}
.sec{padding:72px 0}
.sec.alt{background:var(--panel);border-block:1px solid var(--line)}
.sec-in{max-width:1200px;margin:0 auto}
.blob{display:none}
.sec h2.big{font-size:clamp(26px,3vw,34px);font-weight:700;margin:0}
.split{display:flex;flex-wrap:wrap;gap:48px;align-items:center}
.split>*{flex:1 1 420px;min-width:0}
.split p{color:var(--muted);font-size:16px;line-height:1.65}
.stack{display:flex;flex-direction:column;gap:16px}
.showcase{position:relative}
.showcase .card{margin:0;padding:18px;box-shadow:var(--sh-2)}
.float-card{position:relative;margin:12px 0 0;background:var(--dark);color:#fff;padding:16px 18px;border-radius:var(--r-card)}
.float-card b{display:flex;align-items:center;gap:8px;margin-bottom:4px}
.float-card b .ico{color:var(--accent)}
.float-card p{margin:0;font-size:13px;line-height:1.55;color:#D6D3D1}
.mini-enc{background:var(--enc);border:1px solid var(--enc-edge);border-radius:8px;padding:12px;display:flex;flex-direction:column;gap:12px}
.mini-row{position:relative;display:flex;gap:3px;height:76px;align-items:stretch}
.mini-rail{position:absolute;left:-6px;right:-6px;top:30px;height:14px;background:repeating-linear-gradient(90deg,var(--rail) 0 6px,var(--rail-slot) 6px 14px)}
.mini-dev{position:relative;background:var(--dev);border:1px solid var(--dev-edge);border-radius:3px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-width:0}
.mini-dev b{width:60%;max-width:22px;height:12px;background:var(--lever);border-radius:2px}
.mini-dev em{font-style:normal;font-family:var(--f-mono);font-size:10px;color:var(--dev-ink);white-space:nowrap;overflow:hidden;max-width:100%}
.mini-dev.rc::after{content:"";position:absolute;right:3px;top:5px;width:7px;height:7px;border-radius:50%;background:var(--accent)}
.mini-dev.blank{background:#E2E4E6;border-color:#C4C8CD}
.mini-dev.free{background:transparent;border:1px dashed var(--enc-edge)}
.phaserow{display:flex;flex-direction:column;gap:6px}
.phaserow div:first-child{display:flex;justify-content:space-between;font-size:14px}
.phaserow .track{height:6px;background:var(--hover);border-radius:3px}
.phaserow .track i{display:block;height:6px;border-radius:3px;background:var(--accent)}
.center-hd{display:flex;flex-direction:column;gap:4px;margin-bottom:32px}
.fcards{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px}
.fcard{display:flex;flex-direction:column;gap:12px;padding:24px;border-radius:var(--r-card);background:var(--panel);border:1px solid var(--line);box-shadow:var(--sh-1);transition:border-color .15s}
.fcard:hover{border-color:var(--line-3)}
.fcard h3{font-size:18px;margin:0}
.fcard ul{margin:0;padding-left:18px;color:var(--muted);line-height:1.75}
.fcard .more{margin-top:auto;font-weight:600;text-decoration:none}
.ficon{display:grid;place-items:center;width:40px;height:40px;border-radius:6px;background:var(--accent-soft);color:var(--accent-text)}
.lines-box{padding:0}
.lines-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0;border:1px solid var(--line);border-radius:var(--r-card);background:var(--panel);overflow:hidden}
@media (max-width:760px){.lines-grid{grid-template-columns:minmax(0,1fr)}}
.line-item{display:flex;gap:12px;align-items:flex-start;padding:16px 18px;border-bottom:1px solid var(--line);border-right:1px solid var(--line)}
.line-ico{flex:none;display:grid;place-items:center;width:32px;height:32px;border-radius:6px;background:var(--accent-soft);color:var(--accent-text)}
.line-item b{display:block;font-size:15px;line-height:1.3;margin-bottom:2px}
.line-item span{font-size:14px;color:var(--muted);line-height:1.5}
.badges{margin-top:14px;display:flex;flex-wrap:wrap;gap:8px}
.badge{display:inline-flex;align-items:center;height:28px;padding:0 10px;border-radius:4px;background:var(--panel);border:1px solid var(--line-2);font-size:13px;color:var(--ink-2)}
.steps{list-style:none;counter-reset:s;padding:0;margin:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
@media (max-width:980px){.steps{grid-template-columns:minmax(0,1fr)}}
.steps li{counter-increment:s;padding:18px;border-radius:var(--r-card);background:var(--sunken);border:1px solid var(--line);display:flex;flex-direction:column;gap:4px}
.steps li::before{content:"0" counter(s);font-family:var(--f-mono);font-size:12px;font-weight:700;color:var(--accent-text)}
.steps span{color:var(--muted);font-size:14px}
.cta{background:var(--dark);color:#fff;padding:56px 0}
.cta-panel{max-width:1200px;margin:0 auto;padding:0 20px;display:flex;flex-wrap:wrap;gap:20px;align-items:center;justify-content:space-between}
.cta-panel h2{color:#fff;font-size:clamp(24px,2.6vw,30px);margin:0 0 6px}
.cta-panel p{margin:0;color:#D6D3D1;font-size:16px;max-width:600px}

/* ---------- Справочник ---------- */
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;margin-top:24px}
.link-card{text-decoration:none;color:var(--ink);margin:0;display:flex;flex-direction:column;gap:6px;transition:border-color .15s}
.link-card:hover{border-color:var(--line-3);color:var(--ink)}
.link-card h2{font-size:17px;margin:0}
.link-card p{margin:0}
.guide{display:grid;grid-template-columns:240px minmax(0,1fr);gap:32px;align-items:start}
@media (max-width:860px){.guide{grid-template-columns:minmax(0,1fr)}.guide-side{display:none}}
.guide-side{position:sticky;top:80px;display:flex;flex-direction:column;gap:1px;font-size:14px}
.guide-side a{color:var(--ink-2);text-decoration:none;padding:7px 12px;border-left:2px solid var(--line)}
.guide-side a:hover{background:var(--panel);color:var(--ink)}
.guide-side a[aria-current="page"]{border-left-color:var(--accent);color:var(--ink);font-weight:600;background:var(--panel)}
.guide-side .back{color:var(--muted);border-left:0;padding-left:0;margin-bottom:8px}
.prose{max-width:74ch;padding:32px 36px;border-radius:var(--r-card);background:var(--panel);border:1px solid var(--line)}
@media (max-width:640px){.prose{padding:22px 18px}}
.prose h2{margin-top:1.5em;font-size:20px}
.prose ul,.prose ol{padding-left:1.3em;margin:0 0 1em}
.prose li{margin-bottom:.45em}
.prose .note{font-size:13px;color:var(--muted);border-top:1px solid var(--line);padding-top:14px;margin-top:24px}
.tbl{overflow-x:auto;margin-bottom:1em}

/* ---------- Проекты ---------- */
.page-hd{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:20px}
.page-hd h1{margin:0}
.plist{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:var(--r-card);background:var(--panel);overflow:hidden}
.plist .card{margin:0;border:0;border-bottom:1px solid var(--line);border-radius:0;box-shadow:none}
.plist .card:last-child{border-bottom:0}
.prow{display:flex;gap:16px;justify-content:space-between;align-items:center;flex-wrap:wrap}
.pmain{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1 1 320px}
.ptitle{font-weight:650;font-size:16px;color:var(--ink);text-decoration:none}
.ptitle:hover{color:var(--accent-text)}
.pmain .mono{font-size:12px}
.pact{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.pact form{display:flex;gap:6px;flex-wrap:wrap;margin:0}
.sharebox{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-top:6px}
.sharebox input{flex:1 1 240px;font-family:var(--f-mono);font-size:12px;height:30px}

/* ---------- Таблицы ---------- */
table{border-collapse:collapse;width:100%;font-size:13px}
th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:middle}
th{font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;background:var(--sunken)}
tbody tr:hover td{background:var(--sunken)}
td.n,th.n{text-align:right;font-family:var(--f-mono);font-variant-numeric:tabular-nums;white-space:nowrap}
tfoot td{font-weight:700;background:var(--sunken)}
.tblwrap{overflow-x:auto}

/* ---------- Админка ---------- */
.admin-nav{display:flex;gap:0;flex-wrap:wrap;margin-bottom:24px;border-bottom:1px solid var(--line)}
.admin-nav a{padding:10px 14px;text-decoration:none;color:var(--muted);font-size:14px;font-weight:500;border-bottom:2px solid transparent;margin-bottom:-1px}
.admin-nav a:hover{color:var(--ink)}
.admin-nav a[aria-current="page"]{color:var(--ink);border-bottom-color:var(--accent)}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin-bottom:20px}
.stat{padding:16px 18px;border-radius:var(--r-card);background:var(--panel);border:1px solid var(--line)}
.stat span{font-size:13px}
.stat b{display:block;font-family:var(--f-mono);font-size:26px;font-weight:700;margin-top:2px}
.tag{display:inline-flex;align-items:center;height:22px;padding:0 8px;font-size:12px;font-weight:600;border-radius:4px;background:var(--hover);color:var(--muted)}
.tag.on{background:var(--ok-soft);color:var(--ok)}
.tag.off{background:var(--err-soft);color:var(--err)}
.inline-form{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin:0}
.inline-form input,.inline-form select{width:auto;min-width:70px}
td .inline-form input,td .inline-form select{height:30px;font-size:13px}
.vtable input,.vtable select{height:30px;font-size:13px;width:100%;min-width:60px}
.help{font-size:13px;color:var(--muted)}
.photo-edit{display:flex;flex-wrap:wrap;gap:20px;align-items:flex-start}
.photo-box{flex:none;width:180px;height:180px;border-radius:var(--r-card);background:#fff;border:1px solid var(--line);display:grid;place-items:center;overflow:hidden}
.photo-box img{max-width:100%;max-height:100%;object-fit:contain}
.logo-form{display:flex;flex-direction:column;gap:6px;margin:0}
.logo-inputs{display:flex;flex-direction:column;gap:4px}
.logo-inputs input{height:30px;font-size:12px}
.logo-box{display:inline-grid;place-items:center;min-width:88px;height:38px;padding:4px 8px;border-radius:var(--r);background:#fff;border:1px solid var(--line)}
.logo-box img{max-height:28px;max-width:120px;object-fit:contain}
.thumb-box{display:inline-grid;place-items:center;width:44px;height:44px;border-radius:var(--r);background:#fff;border:1px solid var(--line);overflow:hidden;text-decoration:none}
.thumb-box img{max-width:100%;max-height:100%;object-fit:contain}
.media-grid{align-items:start}
.media-grid .card{margin:0}
@media (max-width:860px){.media-grid{grid-template-columns:minmax(0,1fr)}}

/* ---------- Подвал ---------- */
.site-foot{background:var(--dark);color:#A8A29E;margin-top:48px}
body.home-page .site-foot{margin-top:0}
.foot-glow{display:none}
.foot-in{max-width:1200px;margin:0 auto;padding-block:44px 26px}
.foot-cols{display:flex;flex-wrap:wrap;gap:40px;justify-content:space-between}
.foot-about{flex:1 1 280px;max-width:380px;display:flex;flex-direction:column;gap:14px;align-items:flex-start}
.foot-about .logo{color:#fff}
.foot-about p{margin:0;font-size:14px;line-height:1.6}
.foot-links{display:flex;flex-wrap:wrap;gap:48px}
.foot-links div{display:flex;flex-direction:column;gap:8px;font-size:14px}
.foot-links h3{font-size:13px;font-weight:600;color:#fff;margin:0 0 4px;text-transform:uppercase;letter-spacing:.06em}
.foot-links a{color:#A8A29E;text-decoration:none}
.foot-links a:hover{color:#fff}
.foot-note{margin:32px 0 0;padding-top:16px;border-top:1px solid #2C2825;font-size:12px;color:#78716C}

/* ===================================================================
   РЕДАКТОР ЩИТА — на весь экран
   =================================================================== */
body.is-editor{height:100vh;height:100dvh;overflow:hidden;background:var(--bg)}
.ed{height:100vh;height:100dvh;display:grid;grid-template-columns:300px minmax(0,1fr) 320px;grid-template-rows:52px minmax(0,1fr) auto;grid-template-areas:"top top top" "left canvas right" "left dock right"}
.ed.ro{grid-template-columns:minmax(0,1fr) 320px;grid-template-areas:"top top" "canvas right" "dock right"}
.ed-top{grid-area:top;display:flex;align-items:center;gap:10px;padding:0 10px 0 8px;background:var(--panel);border-bottom:1px solid var(--line);min-width:0;z-index:20}
.ed-logo{display:grid;place-items:center;width:34px;height:34px;border-radius:6px;background:var(--accent);color:#fff;flex:none;text-decoration:none}
.ed-logo:hover{background:var(--accent-hover);color:#fff}
.ed-title{display:flex;align-items:center;gap:8px;min-width:0;flex:1 1 200px}
.ed-title h1{font-size:15px;margin:0;font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ed-title .owner{font-size:12px;color:var(--muted);white-space:nowrap}
#projName{height:32px;font-size:15px;font-weight:650;border-color:transparent;box-shadow:none;background:transparent;padding:0 8px;max-width:340px}
#projName:hover{border-color:var(--line-2);background:#fff}
#projName:focus{border-color:var(--accent);background:#fff;box-shadow:var(--ring)}
.savestate{font-size:12px;font-weight:500;white-space:nowrap;color:var(--faint)}
.savestate::before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:6px;background:currentColor;vertical-align:1px}
.savestate:empty{display:none}
.savestate.dirty{color:var(--warn)} .savestate.ok{color:var(--ok)} .savestate.err{color:var(--err)}
.ed-tools{display:flex;align-items:center;gap:6px}
.tgroup{display:inline-flex;align-items:center;border:1px solid var(--line-2);border-radius:var(--r);background:#fff;box-shadow:var(--sh-1);overflow:hidden}
.tgroup .btn{border:0;border-radius:0;box-shadow:none;height:30px}
.tgroup .btn+.btn{border-left:1px solid var(--line)}
.tgroup #zoomVal{min-width:58px;font-family:var(--f-mono);font-size:12px;font-weight:600}
.tsel{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);font-weight:500;white-space:nowrap}
.tsel select{height:30px;width:auto;min-width:62px;font-size:13px;padding-left:8px}
.sep{width:1px;height:22px;background:var(--line);margin:0 2px}
.ed-actions{display:flex;align-items:center;gap:6px;margin-left:auto}
.ed-user{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--ink);color:#fff;font-size:12px;font-weight:700;text-decoration:none}
.ed-user:hover{color:#fff;background:var(--ink-2)}
.only-narrow{display:none!important}
.more{position:relative}
.more summary{list-style:none}
.more summary::-webkit-details-marker{display:none}
.more-menu{position:absolute;right:0;top:calc(100% + 6px);background:#fff;border:1px solid var(--line-2);border-radius:var(--r-card);box-shadow:var(--sh-pop);padding:4px;display:flex;flex-direction:column;min-width:240px;z-index:50}
.more-menu button,.more-menu .filebtn,.more-menu a{display:flex;align-items:center;gap:10px;height:34px;padding:0 10px;border:0;border-radius:4px;background:none;color:var(--ink);font-size:13px;font-weight:500;text-align:left;text-decoration:none;cursor:pointer;white-space:nowrap}
.more-menu button:hover,.more-menu .filebtn:hover,.more-menu a:hover{background:var(--hover);color:var(--ink)}
.more-menu .danger{color:var(--err)}
.more-menu hr{border:0;border-top:1px solid var(--line);margin:4px 0}
.more-menu .ico{color:var(--muted)}
.filebtn input{display:none}
.sharepanel{position:absolute;top:58px;right:12px;z-index:45;width:min(460px,calc(100vw - 24px));background:#fff;border:1px solid var(--line-2);border-radius:var(--r-card);box-shadow:var(--sh-pop);padding:14px 16px}
.sharepanel p{margin:0 0 8px;font-size:13px}

/* Боковые панели */
.ed-left,.ed-right{background:var(--panel);display:flex;flex-direction:column;min-height:0;z-index:10}
.ed-left{grid-area:left;border-right:1px solid var(--line)}
.ed-right{grid-area:right;border-left:1px solid var(--line)}
.pane-hd{display:flex;align-items:center;justify-content:space-between;gap:8px;height:42px;padding:0 12px 0 14px;border-bottom:1px solid var(--line);flex:none}
.pane-hd h2{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-2);margin:0}
.pane-hd .muted{font-size:12px}
.filters{display:flex;flex-direction:column;gap:8px;padding:10px 12px;border-bottom:1px solid var(--line);flex:none}
.searchbox{position:relative}
.searchbox .ico{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--faint);pointer-events:none}
.searchbox input{padding-left:32px;height:34px}
.chips{display:flex;flex-wrap:wrap;gap:4px}
.chip{height:26px;padding:0 9px;border:1px solid var(--line-2);border-radius:4px;background:#fff;font-size:12px;font-weight:500;color:var(--ink-2)}
.chip:hover{border-color:var(--line-3);color:var(--ink)}
.chip[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:#fff}
.frow{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px}
.frow select{height:30px;font-size:12px;padding-left:8px;padding-right:22px;background-position:right 6px center}
.serlist{flex:1;overflow:auto;min-height:0;padding:4px 0 8px}
.brandhd{display:flex;align-items:center;gap:8px;padding:12px 14px 4px;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--faint)}
.brandhd img{height:16px;max-width:70px;object-fit:contain}
.ser{border-bottom:1px solid var(--line)}
.ser:first-of-type{border-top:0}
.ser>button.sh{display:flex;width:100%;text-align:left;gap:10px;align-items:center;background:none;border:0;padding:8px 14px;cursor:grab}
.ser>button.sh:hover{background:var(--sunken)}
.ser.open>button.sh{background:var(--accent-soft)}
.kindtag{flex:none;display:grid;place-items:center;width:34px;height:34px;border-radius:6px;font-family:var(--f-mono);font-size:10px;font-weight:700;background:var(--hover);color:var(--ink-2);border:1px solid var(--line)}
.kindtag.rccb{background:#FFF7ED;color:#9A3412;border-color:#FED7AA}
.kindtag.rcbo{background:var(--ok-soft);color:var(--ok);border-color:#BBE5C8}
.sthumb{flex:none;width:34px;height:34px;border-radius:6px;background:#fff;border:1px solid var(--line);object-fit:contain;padding:1px}
.ser .t{min-width:0;flex:1}
.ser .t b{display:block;font-weight:600;font-size:13px;line-height:1.3}
.ser .t span{display:block;font-size:11px;color:var(--muted);font-family:var(--f-mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ser .cfg{padding:4px 14px 14px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;background:var(--accent-soft)}
.ser .cfg .full{grid-column:1/-1}
.sphoto{width:100%;max-height:150px;object-fit:contain;background:#fff;border-radius:6px;border:1px solid var(--line);padding:6px}
.field{display:flex;flex-direction:column;gap:4px;min-width:0}
.field label{font-size:12px;font-weight:600;color:var(--ink-2)}
.field select,.field input{height:32px;font-size:13px}
.catnote{font-size:11px;color:var(--faint);padding:10px 14px;border-top:1px solid var(--line);flex:none}

/* Холст */
.ed-canvas{grid-area:canvas;position:relative;min-width:0;min-height:0;background-color:#EFEEEC;background-image:radial-gradient(#D6D3D1 1px,transparent 1px);background-size:16px 16px}
.encwrap{position:absolute;inset:0;overflow:auto;display:flex;padding:40px 32px 56px}
.enc{margin:auto;background:var(--enc);border:1px solid var(--enc-edge);border-radius:10px;padding:16px;width:max-content;box-shadow:0 10px 30px rgba(28,25,23,.12),inset 0 1px 0 rgba(255,255,255,.6)}
.canvas-meter{position:absolute;left:12px;bottom:12px;display:flex;align-items:center;gap:10px;height:30px;padding:0 10px;background:#fff;border:1px solid var(--line-2);border-radius:var(--r);box-shadow:var(--sh-1);font-size:12px;z-index:2}
.canvas-meter .bar{width:110px;height:6px;border-radius:3px;background:var(--hover);overflow:hidden}
.canvas-meter .bar i{display:block;height:100%;background:var(--accent)}
.canvas-hint{position:absolute;right:12px;bottom:12px;font-size:12px;color:var(--faint);background:rgba(255,255,255,.85);padding:4px 8px;border-radius:4px;z-index:2}
.canvas-hint kbd,.kbd{font-family:var(--f-mono);font-size:11px;padding:1px 5px;border:1px solid var(--line-2);border-bottom-width:2px;border-radius:4px;background:#fff;color:var(--ink-2)}
.plate{background:var(--plate);border-radius:6px;padding:10px 10px 4px}
.row{position:relative;display:flex;align-items:flex-start;padding:6px 0 14px}
.row+.row{border-top:1px dashed var(--enc-edge)}
.rail{position:absolute;left:-4px;right:-4px;top:50px;height:18px;background:repeating-linear-gradient(90deg,var(--rail) 0 9px,var(--rail-slot) 9px 21px,var(--rail) 21px 24px);border-radius:2px}
.rownum{position:absolute;left:-2px;top:-2px;font-family:var(--f-mono);font-size:11px;color:var(--muted)}
.row.active .rownum{color:var(--accent-text);font-weight:700}
.slots{position:relative;display:flex;align-items:flex-start}
.free{position:relative;height:138px;border:1px dashed transparent;border-radius:4px;display:grid;place-items:center;color:var(--muted);font-size:11px;text-align:center;background:none;padding:0 4px;line-height:1.3}
.free:hover,.row.active .free{border-color:var(--accent);color:var(--accent-text);background:rgba(255,77,77,.05)}
.free.ro{border:0}
.row.drop .free{border-color:var(--accent);background:var(--accent-soft)}
.dev{position:relative;display:flex;flex-direction:column;align-items:stretch;cursor:pointer;background:none;border:0;padding:0;font:inherit}
.dev .body{height:100px;background:var(--dev);border:1px solid var(--dev-edge);border-radius:3px;display:flex;flex-direction:column;margin:0 1px}
.dev .term{height:16px;display:flex;justify-content:space-around;align-items:center}
.dev .term i{width:10px;height:10px;border-radius:50%;background:radial-gradient(circle at 50% 50%,#CDD1D5 0 3px,var(--screw) 3.5px)}
.dev .face{flex:1;background:var(--dev-face);margin:0 3px;border-radius:2px;display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:3px 2px;position:relative;color:var(--dev-ink)}
.dev .bl{font-family:var(--f-mono);font-size:10px;line-height:1;opacity:.75;white-space:nowrap;overflow:hidden;max-width:100%}
.dev .blogo{height:9px;max-width:90%;object-fit:contain;display:block;filter:grayscale(1) contrast(1.2);opacity:.8}
.dev .lever{width:calc(100% - 8px);max-width:60px;height:20px;background:#CFD3D7;border-radius:2px;position:relative}
.dev .lever i{position:absolute;left:2px;right:2px;top:2px;height:9px;background:var(--lever);border-radius:2px}
.dev .mk{font-family:var(--f-mono);font-size:11px;font-weight:500;line-height:1.1;text-align:center;white-space:nowrap}
.dev .mk small{display:block;font-size:10px;font-weight:400}
.dev .tb{position:absolute;right:3px;top:22px;width:11px;height:11px;border-radius:50%;background:#F2C200;border:1px solid #B08C00}
.dev .tape{margin:4px 2px 0;height:34px;background:var(--tape);border:1px solid var(--dev-edge);border-radius:3px;font-family:var(--f-mono);font-size:11px;font-weight:700;color:#333;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;white-space:nowrap;overflow:hidden;line-height:1}
.dev .tape .ti{display:flex;color:var(--accent-text);height:13px}
.dev .tape .ti:empty{display:none}
.dev.blank .body{background:#E2E4E6;border-color:#C4C8CD}
.dev:hover .body{border-color:#8A9199}
.dev.sel .body{outline:2px solid var(--accent);outline-offset:1px}
.dev.sel .tape{border-color:var(--accent)}
.dev.dragging{opacity:.4}
.dev.dropbefore::before{content:"";position:absolute;left:-2px;top:0;bottom:38px;width:3px;background:var(--accent);border-radius:2px;z-index:2}
.dev.warn .tape{background:#FEF3C7;border-color:#D4A23A}
.dev.err .tape{background:#FEE2E2;border-color:#E05555}
.buses{display:flex;gap:10px;flex-wrap:wrap;padding:8px 2px 18px}
.bus{flex:1 1 110px;height:16px;border-radius:3px;background:#C99A4B;border:1px solid #9C7430;position:relative}
.bus::after{content:attr(data-l);position:absolute;left:0;right:0;top:18px;text-align:center;font-size:11px;color:var(--muted);font-family:var(--f-mono);white-space:nowrap}
.bus.n{border-left:8px solid #2F6FD6;border-right:8px solid #2F6FD6}
.bus.pe{border-left:8px solid #3FA34D;border-right:8px solid #3FA34D}

/* Свойства */
#insp{flex:1;overflow:auto;padding:14px;display:flex;flex-direction:column;gap:12px;min-height:0}
.devtitle{display:flex;gap:10px;align-items:center}
.devtitle .kindtag{width:40px;height:40px;font-size:11px}
.devtitle .dt{min-width:0;display:flex;flex-direction:column;gap:2px}
.devtitle .dt b{font-size:14px}
.devtitle .dt .mono{font-size:11px;line-height:1.4}
.devphoto{width:100%;max-height:180px;object-fit:contain;background:#fff;border-radius:6px;border:1px solid var(--line);padding:8px}
.moves{display:flex;flex-wrap:wrap;gap:6px}
.issue{font-size:12px;padding:8px 10px;border-radius:var(--r);border:1px solid transparent;line-height:1.45}
.issue.err{background:var(--err-soft);color:var(--err);border-color:#F5C2C2}
.issue.warn{background:var(--warn-soft);color:var(--warn);border-color:#F3DFA2}
.issue.info{background:var(--sunken);color:var(--muted);border-color:var(--line)}
.tip{font-size:12px;padding:10px 12px;border-radius:var(--r);background:var(--sunken);border:1px solid var(--line);border-left:3px solid var(--accent);color:var(--ink-2);line-height:1.5}
.kv{display:grid;grid-template-columns:auto minmax(0,1fr);gap:6px 12px;margin:0;font-size:13px}
.kv dt{color:var(--muted)} .kv dd{margin:0}
.ico-prev{display:inline-flex;vertical-align:-3px;color:var(--accent-text);margin-left:4px}
.ph{background:var(--sunken);border:1px solid var(--line);border-radius:var(--r);padding:10px 12px}
.ph .eyebrow{font-size:10px;margin-bottom:2px}
.ph b{font-family:var(--f-mono);font-size:18px;font-weight:700;font-variant-numeric:tabular-nums}
.ph .phbar{position:relative;height:6px;border-radius:3px;background:var(--line);margin-top:8px;overflow:visible}
.ph .phbar i{display:block;height:100%;border-radius:3px}
.ph .phbar i.warn{outline:2px solid var(--warn)} .ph .phbar i.err{outline:2px solid var(--err)}
.ph .phbar s{position:absolute;top:-4px;bottom:-4px;width:2px;background:var(--accent);text-decoration:none}
.shortcuts{font-size:12px;color:var(--muted);display:grid;grid-template-columns:auto 1fr;gap:6px 10px;align-items:center;margin-top:4px}

/* Нижняя панель */
.ed-dock{grid-area:dock;background:var(--panel);border-top:1px solid var(--line);display:flex;flex-direction:column;min-width:0;height:300px;max-height:45vh}
.ed-dock.collapsed{height:40px}
.dock-tabs{display:flex;align-items:stretch;gap:0;height:40px;flex:none;border-bottom:1px solid var(--line);padding:0 6px;overflow-x:auto}
.dock-tab{display:inline-flex;align-items:center;gap:8px;padding:0 12px;border:0;border-bottom:2px solid transparent;margin-bottom:-1px;background:none;font-size:13px;font-weight:600;color:var(--muted);white-space:nowrap}
.dock-tab:hover{color:var(--ink)}
.dock-tab[aria-selected="true"]{color:var(--ink);border-bottom-color:var(--accent)}
.dock-tab .pill{font-size:10px}
.dock-tabs .spacer{flex:1}
.dock-toggle{align-self:center}
.ed-dock.collapsed .dock-toggle .ico{transform:rotate(180deg)}
.dock-body{flex:1;overflow:auto;min-height:0}
.ed-dock.collapsed .dock-body{display:none}
.dock-pane{padding:12px 16px}
.pane-bar{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.pane-bar .help{margin:0}
.checks{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.chk{display:grid;grid-template-columns:86px minmax(0,1fr);gap:12px;align-items:start;padding:8px 12px;border-bottom:1px solid var(--line);background:#fff}
.chk:last-child{border-bottom:0}
.chk p{margin:0;font-size:13px}
.chk button{background:none;border:0;padding:0;margin-left:4px;color:var(--accent-text);text-decoration:underline;text-underline-offset:2px;font-size:12px;font-weight:600}
.pill{display:inline-flex;align-items:center;justify-content:center;height:20px;padding:0 7px;font-size:10px;font-weight:700;letter-spacing:.04em;border-radius:4px;white-space:nowrap}
.pill.err{background:var(--err-soft);color:var(--err)}
.pill.warn{background:var(--warn-soft);color:var(--warn)}
.pill.info{background:var(--hover);color:var(--muted)}
.pill.ok{background:var(--ok-soft);color:var(--ok)}
.phases{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;margin-bottom:10px}
.loadsum{display:flex;flex-wrap:wrap;gap:6px 20px;font-size:13px;color:var(--muted)}
.loadsum b{color:var(--ink);font-family:var(--f-mono);font-weight:700}
.legend{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:4px 16px;font-size:13px}
.legend span{display:flex;gap:8px;min-width:0;align-items:center}
.legend .lg-ic{display:flex;flex:none;width:18px;color:var(--accent-text)}
.legend b{font-family:var(--f-mono);font-weight:700;min-width:48px;flex:none}
.legend em{font-style:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.marking{display:flex;flex-direction:column;gap:8px;width:max-content}
.mk-row{display:flex;background:#fff;border:1px solid #57534E;border-radius:2px;overflow:hidden}
.mk-cell{flex:none;min-height:92px;padding:6px 2px 5px;border-right:1px solid #A8A29E;display:flex;flex-direction:column;align-items:center;gap:3px;text-align:center;overflow:hidden;color:#1C1917}
.mk-cell:last-child{border-right:0}
.mk-ic{display:flex;color:var(--accent-text)}
.mk-cell b{font-family:var(--f-mono);font-size:12px;line-height:1}
.mk-nm{font-size:10px;line-height:1.15;font-weight:600;overflow-wrap:anywhere;hyphens:auto;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.mk-rm{font-size:9.5px;line-height:1.1;color:#57534E;overflow-wrap:anywhere}
.mk-ra{margin-top:auto;font-family:var(--f-mono);font-size:9px;color:#78716C;white-space:nowrap}
.mk-cell.blank{background:repeating-linear-gradient(-45deg,#fff 0 6px,#F1F0EE 6px 12px)}
.mk-cell.free{justify-content:center;font-size:10px;color:#A8A29E;background:#FAFAF9}
.mini-field{display:inline-flex;align-items:center;gap:8px;font-size:12px;font-weight:500;color:var(--muted)}
.mini-field select{height:30px;width:auto;min-width:70px;font-size:13px}
td.ph-cell{width:44px;padding-top:4px;padding-bottom:4px}
td.ph-cell img{width:32px;height:32px;object-fit:contain;background:#fff;border-radius:4px;border:1px solid var(--line)}
#toast{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(20px + env(safe-area-inset-bottom,0px));background:var(--ink);color:#fff;padding:9px 16px;border-radius:var(--r);font-size:13px;font-weight:500;box-shadow:var(--sh-pop);opacity:0;pointer-events:none;transition:opacity .15s;max-width:calc(100vw - 32px);z-index:80}
#toast.on{opacity:1}
.scrim{display:none}

/* Средние экраны: свойства уходят в выдвижную панель */
@media (max-width:1240px){
  .ed{grid-template-columns:280px minmax(0,1fr);grid-template-areas:"top top" "left canvas" "left dock"}
  .ed.ro{grid-template-columns:minmax(0,1fr);grid-template-areas:"top" "canvas" "dock"}
  .ed-right{position:fixed;top:52px;right:0;bottom:0;width:min(340px,92vw);transform:translateX(100%);transition:transform .2s;box-shadow:var(--sh-pop);z-index:60}
  body.show-right .ed-right{transform:none}
  .only-narrow.r{display:inline-flex!important}
}
/* Телефоны: каталог тоже выдвижной */
@media (max-width:860px){
  .ed,.ed.ro{grid-template-columns:minmax(0,1fr);grid-template-areas:"top" "canvas" "dock"}
  .ed-left{position:fixed;top:52px;left:0;bottom:0;width:min(330px,92vw);transform:translateX(-100%);transition:transform .2s;box-shadow:var(--sh-pop);z-index:60}
  body.show-left .ed-left{transform:none}
  .only-narrow{display:inline-flex!important}
  .hide-narrow{display:none!important}
  .ed-dock{height:240px}
  .canvas-hint{display:none}
  .scrim{display:block;position:fixed;inset:52px 0 0;background:rgba(20,18,16,.35);z-index:55;opacity:0;pointer-events:none;transition:opacity .2s}
  body.show-left .scrim,body.show-right .scrim{opacity:1;pointer-events:auto}
}
@media (max-width:1240px) and (min-width:861px){
  .scrim{display:block;position:fixed;inset:52px 0 0;background:rgba(20,18,16,.25);z-index:55;opacity:0;pointer-events:none;transition:opacity .2s}
  body.show-right .scrim{opacity:1;pointer-events:auto}
}

@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* Печать: щит и все вкладки нижней панели */

/* ---- Переключатель вида ---- */
.seg{display:inline-flex;border:1px solid var(--line-2);border-radius:var(--r);overflow:hidden;background:#fff;height:30px}
.seg button{border:0;background:none;font:500 12.5px var(--f-ui);color:var(--muted);padding:0 10px;cursor:pointer}
.seg button+button{border-left:1px solid var(--line-2)}
.seg button[aria-pressed="true"]{background:var(--ink);color:#fff}
.seg button:hover:not([aria-pressed="true"]){background:var(--hover);color:var(--ink)}
.seg button:focus-visible{outline:none;box-shadow:inset var(--ring)}
@media (max-width:600px){.ed-tools .seg,.ed-tools .seg+.sep,.ed-title .savestate{display:none}.ed-top{gap:6px}.tgroup #zoomVal{min-width:46px}}
#projName{min-width:0;width:100%}
.more-menu .only-phone{display:none}
@media (max-width:600px){.more-menu .only-phone{display:flex}}

/* ---- Монтажная схема ---- */
.enc.sch{flex:none;position:relative;padding:0;background:none;border:0;border-radius:8px;box-shadow:0 10px 30px rgba(28,25,23,.12)}
.sch-bg,.sch-fg{position:absolute;left:0;top:0;display:block}
.sch-fg{pointer-events:none;z-index:2}
.sch-mid{position:absolute;inset:0;z-index:1}
.sch .row{position:absolute;padding:0;display:block;border:0;border-radius:4px}
.sch .row+.row{border-top:0}
.sch .row.active{box-shadow:0 0 0 1px var(--accent-line)}
.sch .row.drop{box-shadow:0 0 0 2px var(--accent)}
.sch .dev{position:absolute;top:0;display:block;padding:0;background:none;border:0;border-radius:4px;cursor:pointer}
.sch .dev svg{display:block}
.sch .dev:hover{filter:drop-shadow(0 2px 6px rgba(28,25,23,.22))}
.sch .dev.sel{outline:2px solid var(--accent);outline-offset:2px}
.sch .dev.dragging{opacity:.35}
.sch .dev.dropbefore::before{content:"";position:absolute;left:-2px;top:0;bottom:0;width:3px;background:var(--accent);border-radius:2px;z-index:3}
.sch .dev .flag{position:absolute;right:-5px;top:-7px;width:16px;height:16px;border-radius:50%;font:700 11px/16px var(--f-ui);color:#fff;text-align:center;background:var(--warn);box-shadow:0 0 0 2px #fff}
.sch .dev.err .flag{background:var(--err)}
.sch .free{position:absolute;top:0;border:1px dashed transparent;border-radius:4px;background:none;display:grid;place-items:center;color:var(--muted);font-size:11px;line-height:1.3}
.sch .free:hover,.sch .row.active .free{border-color:var(--accent);color:var(--accent-text);background:rgba(255,77,77,.05)}
.sch .db{fill:url(#gBody);stroke:#9EA4AA}
.sch .tz{fill:#DDE0E3;stroke:#C3C8CD}
.sch .sc circle{fill:url(#gScrew);stroke:#6B7177;stroke-width:.8}
.sch .sc path{stroke:#4A4F55;stroke-width:1.3;stroke-linecap:round}
.sch .gr{fill:#D3D7DB}
.sch .pt{font:600 7px var(--f-mono);fill:#7A8087;text-anchor:middle}
.sch .bt{font:700 7.5px var(--f-ui);fill:#fff;text-anchor:middle;letter-spacing:.02em}
.sch .slot{fill:#4B5157}
.sch .lev{fill:#2B2F33;stroke:#15181A;stroke-width:.6}
.sch .lev.red{fill:#D93A3A;stroke:#9C1F1F}
.sch .lcd{fill:#2F3A33;stroke:#1C2420}
.sch .lcd2{fill:#141816;stroke:#0A0C0B}
.sch .sg{font:700 11.5px var(--f-mono);text-anchor:middle;letter-spacing:.02em}
.sch .sg.sm{font-size:9px}
.sch .sg.v{fill:#FF5146}
.sch .sg.a{fill:#3BE07F}
.sch .sg .su{font-size:.62em;font-weight:600}
.sch .sgl{font:700 7px var(--f-mono);fill:#8E9893}
.sch .tbtn circle{fill:#F2C200;stroke:#B08C00}
.sch .tbtn text{font:700 6.5px var(--f-ui);fill:#4A3A00;text-anchor:middle}
.sch .mkt{font:700 11px var(--f-mono);fill:#22272C;text-anchor:middle}
.sch .mks{font:600 8px var(--f-mono);fill:#4A5057;text-anchor:middle}
.sch .lp{fill:#fff;stroke:#B9BEC3}
.sch .lpt{font:700 9px var(--f-mono);fill:var(--ink);text-anchor:middle}
.sch .rn{font:700 10px var(--f-mono);fill:#5B6168;text-anchor:middle}
.sch .vt{font:700 12px var(--f-ui);fill:#C62F2F;text-anchor:middle}
.sch .bn{font:600 10px var(--f-mono);fill:var(--muted);text-anchor:middle}
.sch .lg{font:600 10px var(--f-mono);fill:var(--muted);text-anchor:end}
.sch .w path{fill:none;stroke-linecap:round;stroke-linejoin:round}
.sch .w .ws{stroke:rgba(20,18,16,.28);stroke-width:5}
.sch .w .wc{stroke-width:3}
.sch .w .wpe{stroke:#F2D21B;stroke-width:3;stroke-dasharray:5 6}
.sch .w.dim{opacity:.18}
.sch .w.hl .wc,.sch .w.hl .wpe{stroke-width:3.6}
.sch .w.hl .ws{stroke-width:6}


/* ---- Провода и шины ---- */
.canvas-tools{position:absolute;left:14px;top:12px;z-index:6;display:flex;gap:8px;align-items:center;flex-wrap:wrap;max-width:calc(100% - 28px)}
.canvas-tools .seg{box-shadow:var(--sh-1)}
.canvas-tools .addbus .more-menu{left:0;right:auto}
.canvas-tools .addbus summary{box-shadow:var(--sh-1);background:#fff}
.bsw{display:inline-block;width:18px;height:8px;border-radius:2px;flex:none}
.bsw.n{background:#2F7FD8}.bsw.pe{background:repeating-linear-gradient(120deg,#2E9B45 0 5px,#F2D21B 5px 9px)}.bsw.l1{background:#8B4A2B}.bsw.l2{background:#26292C}.bsw.l3{background:#8F969D}
.wire-hint{font-size:12px;color:var(--accent-text);background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:var(--r);padding:5px 10px}
.only-manual{display:none!important}
body.wm-manual .wire-hint.only-manual{display:inline-block!important}
body.wm-manual .more-menu .only-manual{display:flex!important}
body.wm-manual .more-menu hr.only-manual{display:block!important}
/* в компактном виде показывается только кнопка испытания */
.encwrap{padding-top:56px}
.sch-mid{pointer-events:none}
.sch .row{pointer-events:auto}
.sch-fg .hit{fill:none;stroke:transparent;stroke-width:12;pointer-events:stroke;cursor:pointer}
.sch-fg .bushit{fill:transparent;pointer-events:all;cursor:pointer}
.sch-fg .hs{fill:rgba(255,255,255,.01);stroke:#FF4D4D;stroke-width:1.4;stroke-dasharray:2.5 2;pointer-events:all;cursor:crosshair;opacity:.5}
.sch-fg .hs:hover{opacity:1;stroke-dasharray:none;stroke-width:2;fill:rgba(255,77,77,.2)}
.sch-fg .hs.on{opacity:1;stroke-dasharray:none;stroke-width:2.6;fill:rgba(255,77,77,.38)}
body.wire-pending .sch-fg .hs{opacity:.85}
.sch .w.sel .wc{stroke-width:4.6}
.sch .w.sel .ws{stroke:rgba(255,77,77,.45);stroke-width:9}
@media (max-width:600px){.wire-hint{display:none!important}.canvas-tools .seg button{padding:0 8px}}


/* ---- Гребёнки ---- */
.combline{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;border:1px solid var(--line-2);border-radius:var(--r);background:var(--sunken);font-size:13px}
.sch .comb.dim{opacity:.3}
.sch-fg .combhit{fill:transparent;pointer-events:all;cursor:pointer}
.sch-fg .hit[data-ai]{cursor:pointer}


/* ---- Компактный вид: подписи рядов, свободные места и шины не перекрываются ---- */
.enc:not(.sch) .row{padding:26px 0 14px}
.enc:not(.sch) .rail{top:70px}
.enc:not(.sch) .rownum{left:0;top:4px;font-size:11px;font-weight:600;line-height:16px;padding:0 7px;border-radius:4px;background:#fff;border:1px solid var(--line-2);color:var(--ink-2);z-index:1}
.enc:not(.sch) .row.active .rownum{background:var(--accent-soft);border-color:var(--accent-line);color:var(--accent-text)}
.enc:not(.sch) .free{border:1px dashed var(--line-3);background:rgba(255,255,255,.82);color:var(--muted);font-weight:500;z-index:1}
.enc:not(.sch) .free:hover,.enc:not(.sch) .row.active .free{border-color:var(--accent);color:var(--accent-text);background:rgba(255,241,241,.9)}
.enc:not(.sch) .buses{row-gap:30px;column-gap:12px;padding:12px 2px 28px;margin-top:4px;border-top:1px dashed var(--enc-edge)}
.enc:not(.sch) .bus::after{top:20px;font-size:11px;font-weight:600;color:var(--ink-2)}

@media print{
  body,body.is-editor{background:#fff;height:auto;overflow:visible;display:block}
  header.site,.site-foot,.ed-top,.ed-left,.ed-right,.sharepanel,#toast,.flashes,.chk button,.dock-tabs,.canvas-meter,.canvas-hint,.pane-bar .btn,.mini-field,.scrim{display:none!important}
  .ed{display:block;height:auto}
  .ed-canvas{background:none}
  .encwrap{position:static;overflow:visible;padding:0}
  .enc{box-shadow:none;zoom:1!important}
  .canvas-tools,.sch-fg .hs{display:none!important} .sch .w.dim{opacity:1} .sch .dev.sel{outline:0} .sch .free,.sch .dev .flag{display:none}
  .ed-dock,.ed-dock.collapsed{height:auto;max-height:none;border:0}
  .ed-dock .dock-body{display:block!important;overflow:visible}
  .dock-pane{display:block!important;break-inside:avoid;padding:12px 0}
  body.print-marks .ed-canvas,body.print-marks .dock-pane:not([data-pane="marks"]),body.print-marks .pane-bar,body.print-marks .mk-screen{display:none!important}
  body.print-marks .mk-print{display:block;page:marks}
  body.print-marks .dock-pane[data-pane="marks"]{padding:0}
}
@page{margin:10mm}
@page marks{size:A4 landscape;margin:8mm}
/* ---- Печать наклеек: полосы по 18 мм на модуль ---- */
.mk-print{display:none;font-family:var(--f-ui);color:#000}
.mk-print-head{display:flex;align-items:baseline;gap:4mm;flex-wrap:wrap;margin:0 0 5mm;padding-bottom:2mm;border-bottom:.3mm solid #000}
.mk-print-head b{font-size:13pt}
.mk-print-head span{font-size:8pt;color:#444}
.mk-print-row{break-inside:avoid;margin:0 0 6mm}
.mk-print-row h4{margin:0 0 1.5mm;font-size:8pt;font-weight:700;color:#333}
.mk-print-row h4 small{font-weight:400;color:#777;margin-left:2mm}
.mk-print-strip{display:inline-flex;border:.35mm solid #000;outline:.2mm dashed #999;outline-offset:1.5mm}
.mkp{box-sizing:border-box;flex:none;height:20mm;padding:1.4mm .8mm 1.2mm;border-right:.25mm solid #000;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:.6mm;text-align:center;overflow:hidden;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.mkp:last-child{border-right:0}
.mkp-ic{display:flex;height:4mm}
.mkp-ic svg{width:4mm;height:4mm;color:#000}
.mkp b{font-family:var(--f-mono);font-size:9.5pt;line-height:1;font-weight:800}
.mkp-nm{font-size:6.8pt;line-height:1.12;font-weight:600;overflow-wrap:anywhere;hyphens:auto;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.mkp-rm{font-size:6pt;line-height:1.1;color:#444;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}
.mkp-ra{margin-top:auto;font-family:var(--f-mono);font-size:6.5pt;white-space:nowrap;color:#000}
.mkp.blank{background:repeating-linear-gradient(-45deg,#fff 0 1.2mm,#e6e6e6 1.2mm 2.4mm)}
.mkp.free{background:#fff}
.mk-print-foot{margin:4mm 0 0;font-size:7pt;color:#888}

/* ---- Загрузка конструктора ---- */
.ed-loading{height:100vh;display:grid;place-items:center;color:var(--muted);font-size:14px}

/* ---- Панель свойств: ровные отступы между блоками ---- */
#insp > div{display:flex;flex-direction:column;gap:14px;min-width:0}
#insp .devtitle{padding-bottom:12px;border-bottom:1px solid var(--line)}
#insp .devphoto{max-height:150px;padding:10px}
#insp .grid2{gap:10px 12px}
#insp .field .help{margin:2px 0 0;font-size:11.5px;line-height:1.45;color:var(--faint)}
#insp .field .grid2 + .btn,#insp .field .btn.full{margin-top:8px;width:100%;justify-content:center}
#insp .tip{margin:2px 0}
#insp .insp-sec{padding-top:14px;border-top:1px solid var(--line);gap:8px}
#insp .moves .btn{flex:1 1 auto;justify-content:center}
#insp .kv{padding:10px 12px;background:var(--sunken);border:1px solid var(--line);border-radius:var(--r)}
#insp .insp-sec .moves{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.enc:not(.sch) .dev .bl{font-family:var(--f-ui);font-size:9px;font-weight:800;opacity:1;letter-spacing:.01em}
.enc:not(.sch) .dev .blogo{filter:none;opacity:1}

/* ---- Новые блоки: шаблоны, падение напряжения, однолинейка, корпус, маркировка проводов ---- */
.more-menu .menu-hd{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--faint);padding:8px 10px 2px}
#insp .help.mid{color:var(--warn)} #insp .help.bad{color:var(--err);font-weight:600}
.dock-h{font-size:13px;font-weight:650;margin:18px 0 8px}
.sline-wrap{overflow:auto;border:1px solid var(--line);border-radius:var(--r);background:#fff;padding:8px}
.sline-wrap svg{display:block;max-width:none}
.encl{font-size:13px;padding:10px 12px;margin-bottom:10px;border:1px solid var(--line);border-left:3px solid var(--ok);border-radius:var(--r);background:var(--sunken)}
.encl.bad{border-left-color:var(--err);background:var(--err-soft)}
.wiremarks{display:none}
.wm{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;width:30mm;height:12mm;border:1px solid #000;margin:0 1.5mm 1.5mm 0;font-family:var(--f-mono);overflow:hidden;vertical-align:top}
.wm b{font-size:11pt;line-height:1.1}
.wm span{font-size:6pt;white-space:nowrap;max-width:28mm;overflow:hidden;text-overflow:ellipsis}
.wm.c-L1{border-left:3mm solid #8B4A2B}.wm.c-L2{border-left:3mm solid #26292C}.wm.c-L3{border-left:3mm solid #8F969D}.wm.c-N{border-left:3mm solid #2F7FD8}.wm.c-PE{border-left:3mm solid #2E9B45}
@media print{
  body.print-sline .ed-canvas,body.print-sline .dock-tabs,body.print-sline .pane-bar,body.print-sline .dock-pane:not([data-pane="sline"]){display:none!important}
  body.print-sline .sline-wrap{border:0;padding:0;overflow:visible}
  body.print-sline .sline-wrap svg{width:100%;height:auto}
  body.print-wires .ed-canvas,body.print-wires .dock-tabs,body.print-wires .pane-bar,body.print-wires .dock-pane:not([data-pane="tags"]),body.print-wires .legend{display:none!important}
  body.print-wires .wiremarks{display:block!important}
  body.print-wires .dock-pane[data-pane="tags"]{display:block!important}
}

/* ---------- Комментарии к щиту ---------- */
.cmts{display:flex;flex-direction:column;gap:8px;margin:8px 0 12px}
.cmt{border:1px solid var(--line-2);border-radius:var(--r);padding:8px 10px;background:#fff}
.cmt.done{opacity:.6}
.cmt-hd{display:flex;align-items:center;flex-wrap:wrap;gap:8px}
.cmt-hd .spacer{flex:1}
.cmt p{margin:4px 0 0;white-space:pre-line;font-size:13px}
.cmt-dev{border:0;background:var(--accent-soft);color:var(--accent-text);font-size:12px;font-weight:600;padding:2px 7px;border-radius:4px;cursor:pointer}
.cmt-form{display:flex;flex-direction:column;gap:8px;max-width:640px}
.cmt-form input,.cmt-form textarea{width:100%;font:inherit;font-size:13px}
.cmt-form .moves{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.cmt-form .spacer{flex:1}
.cmt-err{color:var(--err);font-size:12px}
.mini-check{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-2)}

/* ---------- Окно заявки ---------- */
.modal-bg{position:fixed;inset:0;z-index:200;background:rgba(20,18,16,.45);display:flex;align-items:center;justify-content:center;padding:16px}
.modal{position:relative;background:#fff;border-radius:var(--r-card);box-shadow:0 20px 60px rgba(0,0,0,.25);width:min(520px,100%);max-height:calc(100dvh - 32px);overflow:auto;padding:22px 22px 18px}
.modal h2{margin:0 0 6px;font-size:20px}
.modal .moves{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.modal .grid2{gap:12px}
.modal-x{position:absolute;top:8px;right:10px;border:0;background:none;font-size:26px;line-height:1;color:var(--muted);cursor:pointer;padding:4px 8px}
.modal-x:hover{color:var(--ink)}
.hp{position:absolute!important;left:-9999px;width:1px;height:1px;opacity:0}
@media (max-width:560px){.modal .grid2{grid-template-columns:1fr}}

/* ---------- Админка: заявки, настройки ---------- */
a.chip{display:inline-flex;align-items:center;gap:6px;text-decoration:none}
a.chip.on{background:var(--ink);border-color:var(--ink);color:#fff}
.chips{margin:0 0 12px}
.tag.st-new{background:var(--accent-soft);color:var(--accent-text)}
.tag.st-work{background:var(--warn-soft);color:var(--warn)}
.tag.st-done{background:var(--ok-soft);color:var(--ok)}
.dl{display:grid;grid-template-columns:140px 1fr;gap:6px 12px;margin:0}
.dl dt{color:var(--muted);font-size:13px}.dl dd{margin:0}
pre.summary{white-space:pre-wrap;font:13px/1.5 var(--f-mono);background:var(--hover);padding:12px;border-radius:var(--r);margin:0;overflow:auto}
.form label.check{flex-direction:row;align-items:center;gap:8px;font-weight:500}
.row-between{display:flex;align-items:center;justify-content:space-between;gap:12px}
.oauth{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin:14px 0}
.oauth-yandex{border-color:#FC3F1D;color:#FC3F1D}
.oauth-vk{border-color:#0077FF;color:#0077FF}
.cmt-form textarea{height:64px;min-height:64px;padding:8px 10px;resize:vertical}
.modal textarea{height:auto;padding:8px 10px}
.comb-grow{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.comb-grow .btn{justify-content:center}
/* Розетка на DIN-рейку в компактном виде */
.dev .sockic{width:30px;height:30px;border-radius:50%;background:#E6E9EC;border:2px solid #B9BFC5;box-shadow:inset 0 1px 2px rgba(0,0,0,.12);display:flex;align-items:center;justify-content:center;gap:7px;margin:1px 0 2px}
.dev .sockic i{width:5px;height:5px;border-radius:50%;background:#1B1E21}
.dev .sockic.usb{border-radius:4px;width:26px;height:24px;gap:4px}
.dev .sockic.usb i{width:4px;height:12px;border-radius:1px;background:#1B1E21;box-shadow:inset 0 0 0 1px #5A9BE0}
#insp .shortcuts{display:grid;grid-template-columns:auto 1fr;gap:8px 12px;align-items:center;justify-items:start;text-align:left}
.demo-badge{display:inline-flex;align-items:center;height:26px;padding:0 10px;border-radius:13px;background:var(--warn-soft);color:var(--warn);font-size:12px;font-weight:700;letter-spacing:.02em}

/* ---------- Главная: готовые проекты ---------- */
.demos-sec{overflow:hidden}
.demos-hd{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:24px}
.demos-hd p{max-width:640px;margin:10px 0 0}
.demos-nav{display:flex;gap:8px;flex:none}
.demos-nav .btn{width:42px;height:42px;font-size:18px;justify-content:center}
.demos{display:grid;grid-auto-flow:column;grid-auto-columns:calc((100% - 60px) / 4);gap:20px;overflow-x:auto;scroll-snap-type:x mandatory;padding:4px 2px 18px;scrollbar-width:thin;outline:none}
.demo-card{scroll-snap-align:start;display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);border-radius:12px;overflow:hidden;text-decoration:none;color:var(--ink);box-shadow:0 1px 2px rgba(28,25,23,.05);transition:transform .18s,box-shadow .18s,border-color .18s}
.demo-card:hover{transform:translateY(-3px);box-shadow:0 14px 34px rgba(28,25,23,.12);border-color:var(--line-2);color:var(--ink)}
.demo-img{display:block;height:320px;background:linear-gradient(180deg,#F4F5F6,#E9ECEE);padding:14px;border-bottom:1px solid var(--line)}
.demo-img img{width:100%;height:100%;object-fit:contain;display:block}
.demo-body{display:flex;flex-direction:column;gap:6px;padding:16px 16px 18px;flex:1}
.demo-for{font-size:12px;font-weight:600;color:var(--accent-text);text-transform:uppercase;letter-spacing:.04em}
.demo-title{font-size:18px;line-height:1.25}
.demo-text{font-size:13.5px;color:var(--muted);line-height:1.5;flex:1}
.demo-stats{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.demo-stats span{font-size:12px;font-weight:600;color:var(--ink-2);background:var(--hover);border-radius:4px;padding:3px 7px}
.demo-go{margin-top:10px;font-size:14px;font-weight:700;color:var(--accent-text)}
@media (max-width:1100px){.demos{grid-auto-columns:calc((100% - 40px) / 3)}}
@media (max-width:800px){.demos{grid-auto-columns:calc((100% - 20px) / 2)}}
@media (max-width:560px){.demo-img{height:280px}.demos{grid-auto-columns:82%}.demos-hd{align-items:flex-start}.demos-nav{display:none}}

/* ---------- Испытание щита ---------- */
.test-toggle.on{background:var(--accent);border-color:var(--accent);color:#fff}
.lvh{transition:none}
.lvh.off{transform:translateY(15.5px)}
.lvh.anim.off{animation:lvOff .32s cubic-bezier(.3,1.4,.6,1)}
.lvh.anim.on{animation:lvOn .32s cubic-bezier(.3,1.4,.6,1)}
@keyframes lvOff{from{transform:translateY(0)}to{transform:translateY(15.5px)}}
@keyframes lvOn{from{transform:translateY(15.5px)}to{transform:translateY(0)}}
.dev .tbt{cursor:pointer}
.ed .dev.t-trip{filter:drop-shadow(0 0 6px rgba(217,58,58,.75))}
.tripflag{position:absolute;left:50%;top:-17px;transform:translateX(-50%);z-index:8;background:#D93A3A;color:#fff;font:800 9.5px/1 var(--f-mono);letter-spacing:.04em;padding:3px 6px;border-radius:3px;white-space:nowrap;box-shadow:0 2px 6px rgba(0,0,0,.25);animation:tripIn .35s ease-out;pointer-events:none}
.tripflag::after{content:'';position:absolute;left:50%;bottom:-4px;margin-left:-4px;border:4px solid transparent;border-bottom:0;border-top-color:#D93A3A}
@keyframes tripIn{0%{transform:translate(-50%,6px);opacity:0}60%{transform:translate(-50%,-2px);opacity:1}100%{transform:translate(-50%,0)}}
.dev.t-ping{animation:tPing 1.1s ease-out}
@keyframes tPing{0%,100%{filter:none}30%,70%{filter:drop-shadow(0 0 10px rgba(255,77,77,.9))}}
/* компактный вид: рычаг вниз и зелёный флажок */
.dev.t-off .lever i,.dev.t-trip .lever i{top:9px}
.dev.t-anim.t-off .lever i,.dev.t-anim.t-trip .lever i{animation:plOff .3s;animation-delay:var(--ad,0ms)}
.dev.t-anim.t-on .lever i{animation:plOn .3s;animation-delay:var(--ad,0ms)}
@keyframes plOff{from{top:2px}to{top:9px}}
@keyframes plOn{from{top:9px}to{top:2px}}
.enc:not(.sch) .row{overflow:visible}
/* лампочки */
.lamps{position:absolute;left:14px;top:58px;z-index:6;width:268px;max-height:calc(100% - 120px);overflow:auto;background:rgba(255,255,255,.96);border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 24px rgba(28,25,23,.12);padding:10px 10px 6px}
.lamps-hd{display:flex;justify-content:space-between;align-items:baseline;margin:0 2px 6px}
.lamp{display:grid;grid-template-columns:26px 1fr auto;gap:8px;align-items:center;padding:5px 2px;border-top:1px solid var(--line)}
.lamp-t{font-size:12.5px;line-height:1.25;cursor:pointer;min-width:0}
.lamp-t small{display:block;color:var(--muted);font-size:11px}
.lamp-b{display:flex;gap:3px}
.lamp-b button{border:1px solid var(--line-2);background:#fff;border-radius:4px;font-size:10.5px;font-weight:600;padding:3px 5px;cursor:pointer;color:var(--ink-2)}
.lamp-b button:hover:not(:disabled){border-color:var(--accent);color:var(--accent-text)}
.lamp-b button:disabled{opacity:.4;cursor:default}
.bulb .glow{fill:#FFD54A;opacity:0;transition:opacity .25s}
.bulb .glass{fill:#E8EAED;stroke:#A9AFB5;stroke-width:1;transition:fill .25s}
.bulb .fil{fill:none;stroke:#8A9097;stroke-width:1}
.lamp.lit .bulb .glow{opacity:.45}
.lamp.lit .bulb .glass{fill:#FFE27A;stroke:#E0A800}
.lamp.lit .bulb .fil{stroke:#C77700}
.lamp.low .bulb .glow{opacity:.15}.lamp.low .bulb .glass{fill:#F3D9A0}
.lamp.over .bulb .glow{fill:#FF7043;opacity:.6;animation:blink .4s infinite alternate}
.lamp.burnt .bulb .glass{fill:#5A5F64;stroke:#3A3F44}.lamp.burnt .lamp-t small{color:var(--err)}
.lamp.danger{background:var(--err-soft)}
@keyframes blink{to{opacity:.2}}
.test-insp h3{font-size:13px;margin:4px 0 6px}
.test-trips .trip,.test-insp .trip{display:flex;gap:8px;align-items:flex-start;padding:6px 0;cursor:pointer}
.test-insp .trip p{margin:0;font-size:12.5px}
.test-log{display:flex;flex-direction:column;gap:5px;font-size:12px;max-height:340px;overflow:auto}
.test-log .mono{color:var(--faint);margin-right:4px}
.test-log .lg-err{color:var(--err)}.test-log .lg-ok{color:var(--ok)}.test-log .lg-warn{color:var(--warn)}
@media (max-width:900px){
  .lamps{top:auto;bottom:8px;left:8px;right:8px;width:auto;max-height:none;padding:8px;display:grid;grid-auto-flow:column;grid-auto-columns:168px;gap:6px;overflow-x:auto;overflow-y:hidden}
  .lamps-hd{display:none}
  .lamp{border:1px solid var(--line);border-radius:8px;padding:6px;grid-template-columns:22px 1fr;row-gap:4px}
  .lamp .bulb{width:22px;height:26px}
  .lamp-b{grid-column:1 / -1}
  .lamp-t{font-size:11.5px}
  .lamp-t b{display:inline}
}
@media (min-width:901px){body.testing .encwrap{padding-left:322px}}
.sch .dev .tripflag{font-size:13px;top:-24px;padding:4px 8px}
.sch .dev.t-trip{z-index:30}
.sch .tflags{position:absolute;inset:0;pointer-events:none;z-index:40}
.sch .tfl{position:absolute;width:0;height:0}
.sch .tfl .tripflag{position:absolute;left:0;top:-30px;transform:translateX(-50%);font-size:13px;padding:4px 8px;z-index:auto}
body.testing .canvas-meter{display:none}
/* настоящая лампа справа */
.phys-lamp{position:absolute;right:18px;top:52px;z-index:6;width:190px;display:flex;flex-direction:column;align-items:center;pointer-events:none}
.phys-lamp svg{overflow:visible}
.phys-lamp .pl-cap{pointer-events:auto;margin-top:-6px;width:100%;background:rgba(255,255,255,.95);border:1px solid var(--line);border-radius:10px;padding:8px 10px;display:flex;flex-direction:column;gap:4px;box-shadow:0 6px 18px rgba(28,25,23,.1);text-align:center}
.phys-lamp select{height:30px;font-size:12px}
.phys-lamp .pl-cap b{font-size:13px}
.pl-swing{transform-origin:90px 8px;animation:plSwing 6s ease-in-out infinite}
@keyframes plSwing{0%,100%{transform:rotate(-1.2deg)}50%{transform:rotate(1.2deg)}}
.pl-halo{opacity:0;transition:opacity .35s}
.pl-glass{fill:url(#plGlassOff);transition:fill .3s}
.pl-fil{stroke:#6E747A;transition:stroke .3s}
.pl-fil-glow{stroke:#FFB300;opacity:0;transition:opacity .3s}
.st-on .pl-halo{opacity:1;animation:plFlick 3.2s infinite}
.st-on .pl-glass{fill:url(#plGlassOn)}
.st-on .pl-fil{stroke:#FFF6C8}
.st-on .pl-fil-glow{opacity:.9}
.st-low .pl-halo{opacity:.35;animation:plFlick .9s infinite}
.st-low .pl-glass{fill:#F6D9A2}
.st-low .pl-fil{stroke:#E07B20}
.st-low .pl-fil-glow{stroke:#E07B20;opacity:.5}
.st-over .pl-halo{opacity:1;animation:plOver .18s infinite alternate}
.st-over .pl-glass{fill:#FFFFFF}
.st-over .pl-fil{stroke:#FFFFFF}
.st-over .pl-fil-glow{stroke:#FFFFFF;opacity:1}
.st-burnt .pl-glass{fill:#C9CDD1}
.st-burnt .pl-fil{stroke:#4A4F55;stroke-dasharray:6 3}
.st-burnt .pl-burn{opacity:.45}
.st-burnt .pl-swing{animation:none}
@keyframes plFlick{0%,100%{opacity:1}47%{opacity:.93}50%{opacity:.85}53%{opacity:.96}}
@keyframes plOver{from{opacity:.7}to{opacity:1}}
@media (max-width:1180px){.phys-lamp{display:none}}
@media (min-width:1181px){body.testing .encwrap{padding-right:236px}}
.phys-lamp .pl-cap::before{content:'Лампа подключена к линии';font-size:11px;color:var(--muted)}

/* ---------- Главная: живой щит и анимации ---------- */
.hero-in{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,660px);align-items:center;gap:40px;max-width:1320px}
.hero-text{display:flex;flex-direction:column;align-items:flex-start;gap:22px}
.live-board{position:relative;filter:drop-shadow(0 12px 28px rgba(0,0,0,.35));animation:lbIn .9s ease-out both}
.live-board svg{display:block;max-width:100%;height:auto}
@keyframes lbIn{from{opacity:0;transform:translateY(24px) scale(.97)}to{opacity:1;transform:none}}
.lb-lev{transition:transform .32s cubic-bezier(.3,1.5,.6,1)}
.lb-lev.off{transform:translateY(19px)}
.lb-ind{transition:fill .2s}
.lb-flow{opacity:0;transition:opacity .3s}
.lb-flow.live{opacity:1;animation:lbFlow .7s linear infinite}
@keyframes lbFlow{to{stroke-dashoffset:-16}}
.lb-halo{opacity:0;transition:opacity .4s}
.lb-glass{fill:rgba(232,235,238,.92);transition:fill .35s}
.lb-fil{stroke:#7C8288;transition:stroke .35s}
.lb-bulb.lit .lb-halo{opacity:1;animation:lbFlick 2.6s infinite}
.lb-bulb.lit .lb-glass{fill:url(#lbGlass)}
.lb-bulb.lit .lb-fil{stroke:#FFF6C8}
@keyframes lbFlick{0%,100%{opacity:1}46%{opacity:.9}50%{opacity:.78}54%{opacity:.95}}
.lb-test{transform-box:fill-box;transform-origin:center;transition:transform .15s}
.lb-test.press{transform:scale(.7)}
#lbFlag{transition:opacity .25s}
.lb-status{position:absolute;left:50%;bottom:-34px;transform:translateX(-50%);background:rgba(20,18,16,.82);border:1px solid rgba(255,255,255,.14);color:#fff;font-size:13px;font-weight:600;padding:7px 14px;border-radius:20px;white-space:nowrap;backdrop-filter:blur(6px)}
.lb-status::before{content:'';display:inline-block;width:7px;height:7px;border-radius:50%;background:#3BE07F;margin-right:8px;box-shadow:0 0 8px #3BE07F;vertical-align:1px;animation:blink .8s infinite alternate}
.lb-status.pop{animation:lbPop .35s ease-out}
@keyframes lbPop{from{transform:translate(-50%,6px);opacity:.3}to{transform:translate(-50%,0);opacity:1}}
/* бегущие искры по фону */
.hero-sparks{position:absolute;inset:0;width:100%;height:100%;z-index:1;pointer-events:none}
.hero-sparks .spk{fill:none;stroke:url(#none);stroke:#FF8A5B;stroke-width:1.6;stroke-dasharray:2 22 60 400;opacity:.55;animation:spark 6s linear infinite;filter:drop-shadow(0 0 4px #FF6A3D)}
.hero-sparks .s2{stroke:#FFD978;animation-duration:8s;animation-delay:-3s;opacity:.4}
.hero-sparks .s3{stroke:#7FB8FF;animation-duration:9s;animation-delay:-5s;opacity:.35}
@keyframes spark{to{stroke-dashoffset:-484}}
/* появление блоков */
.reveal{opacity:0;transform:translateY(22px);transition:opacity .6s ease-out,transform .6s ease-out}
.reveal.in{opacity:1;transform:none}
.fcard.reveal:nth-child(2){transition-delay:.12s}.fcard.reveal:nth-child(3){transition-delay:.24s}
.fcard .ficon{transition:transform .3s,box-shadow .3s}
.fcard:hover .ficon{transform:translateY(-3px) rotate(-6deg);box-shadow:0 8px 20px rgba(255,77,77,.35)}
/* фазы в блоке «Как это работает» заполняются, ток бежит */
.phaserow .track i{position:relative;overflow:hidden;animation:phFill 1.6s ease-out both}
.phaserow .track i::after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.55),transparent);transform:translateX(-100%);animation:phRun 2.2s ease-in-out infinite 1.6s}
@keyframes phFill{from{max-width:0}to{max-width:100%}}
@keyframes phRun{to{transform:translateX(100%)}}
.mini-dev b{animation:miniOn 6s infinite}
.mini-row:nth-child(2) .mini-dev b{animation-delay:.4s}.mini-row:nth-child(3) .mini-dev b{animation-delay:.8s}
@keyframes miniOn{0%,8%{transform:translateY(5px)}12%,100%{transform:none}}
@media (max-width:1000px){.hero-in{grid-template-columns:1fr;gap:36px;padding-bottom:70px}.live-board{max-width:640px;width:100%;justify-self:center}}
@media (prefers-reduced-motion:reduce){.hero-sparks,.lb-flow.live{animation:none}.reveal{opacity:1;transform:none}.phaserow .track i,.mini-dev b{animation:none}}
/* провод с коротким замыканием */
.w.short .wshort{fill:none;stroke:#FF2D2D;stroke-width:13;stroke-linecap:round;stroke-linejoin:round;opacity:.55;animation:wShort .7s ease-in-out infinite alternate;filter:drop-shadow(0 0 4px #FF2D2D)}
@keyframes wShort{from{opacity:.25}to{opacity:.8}}
/* Общий сайт: подпись раздела и ссылка на кухни */
.logo-txt{display:inline-flex;flex-direction:column;line-height:1.05}
.logo-txt small{font-size:10.5px;font-weight:500;opacity:.6;letter-spacing:.02em}
.mainnav .nav-other{opacity:.75}
.mainnav .nav-other:hover{opacity:1}
a.uname{text-decoration:none;color:inherit}
/* ivilove: значок бренда вместо молнии в конструкторе */
.ed-logo{background:#fff url(../brand/mark.png) center/24px no-repeat;border:1px solid var(--line)}
.ed-logo:hover{background:#fff url(../brand/mark.png) center/26px no-repeat;border-color:var(--accent)}
.ed-logo>svg{display:none}
