/* Прометей — вид классической программы Windows (вариант В): меню, панель инструментов, дерево, строка состояния */
:root{
  --bg:#f0f0f0; --panel:#ffffff; --panel2:#f5f6f7; --line:#d9d9d9; --line2:#e8e8e8; --text:#1a1a1a; --muted:#5c636d;
  --accent:#e8622c; --accent2:#b4471b; --blue:#0067c0; --sel:#cce4f7; --hover:#e5f1fb;
  --ok:#2b7d3a; --warn:#8a5a00; --bad:#c42b1c; --info:#0067c0;
  --r:6px; font-family:"Segoe UI",system-ui,Roboto,Arial,sans-serif;
}
*{box-sizing:border-box} html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--text);font-size:13px}
a{color:var(--blue)} .hidden{display:none!important} .muted{color:var(--muted)} .err{color:var(--bad);min-height:1em}
h1{font-size:20px;font-weight:600;margin:0 0 12px} h2{font-size:16px;font-weight:600;margin:20px 0 10px} h3{font-size:14px;font-weight:600;margin:0 0 8px}
.brand{display:flex;align-items:center;gap:8px;font-weight:700;font-size:17px;white-space:nowrap}
.brand .logo{width:28px;height:28px;flex:none}
.auth-card .brand .logo{width:44px;height:44px}
svg.ic{width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
svg.ic.blue{stroke:var(--blue)} svg.ic.green{stroke:var(--ok);stroke-width:2.2}

/* окно программы */
.shell{display:flex;flex-direction:column;height:100vh;overflow:hidden}
.menubar{height:28px;flex:none;display:flex;align-items:stretch;padding-left:4px;background:var(--panel);border-bottom:1px solid var(--line2);position:relative;z-index:10}
.menu{position:relative;display:flex}
.mtop{border:0;background:transparent;font:inherit;padding:0 10px;color:var(--text);cursor:default}
.mtop:hover,.menu.open .mtop{background:var(--hover)}
.mlist{display:none;position:absolute;top:28px;left:0;min-width:250px;background:var(--panel);border:1px solid #c8c8c8;border-radius:6px;box-shadow:0 8px 22px rgba(0,0,0,.16);padding:4px}
.menu.open .mlist{display:block}
.mlist button{display:flex;justify-content:space-between;gap:16px;width:100%;border:0;background:transparent;font:inherit;text-align:left;padding:7px 12px;border-radius:4px;color:var(--text);cursor:default}
.mlist button:hover{background:var(--hover)} .mlist hr{border:0;border-top:1px solid var(--line2);margin:4px 6px}
.kbd{color:var(--muted)}
.mspace{flex:1} .menubar #me{display:flex;align-items:center;padding:0 12px;font-size:12px}
.toolbar{height:44px;flex:none;display:flex;align-items:center;gap:2px;padding:0 6px;background:#f7f7f7;border-bottom:1px solid var(--line);overflow-x:auto}
.tb{height:36px;display:flex;align-items:center;gap:6px;padding:0 10px;border:1px solid transparent;border-radius:4px;background:transparent;font:inherit;font-size:12px;color:var(--text);white-space:nowrap;cursor:default}
.tb:hover:not(:disabled){background:var(--hover);border-color:#cce4f7} .tb:disabled{opacity:.45}
.tb.on{background:var(--hover);border-color:#b9d3ee}
.tsep{width:1px;height:24px;background:#d0d0d0;margin:0 6px;flex:none}
.body{flex:1;display:flex;min-height:0}
.tree{width:250px;flex:none;background:var(--panel);border-right:1px solid var(--line);padding:6px 0;overflow-y:auto;font-size:12.5px}
.tree hr{border:0;border-top:1px solid var(--line2);margin:6px 8px}
.tnode{display:flex;align-items:center;gap:7px;min-height:26px;padding:3px 10px 3px 14px;color:var(--text);text-decoration:none;border-left:3px solid transparent;cursor:default}
.tnode:hover{background:var(--hover)} .tnode.on{background:var(--sel);border-left-color:var(--blue)}
.tnode svg.ic{width:16px;height:16px}
.tnode.root{padding-left:10px} .tnode.tcam{padding-left:30px}
.tnode .led{margin-right:1px}
.led{display:inline-block;width:8px;height:8px;border-radius:50%;background:#9aa0a6;flex:none}
.led.ok{background:var(--ok)} .led.bad{background:var(--bad)} .led.warn{background:#d18b00} .led.off{background:#b5b9be}
main{flex:1;min-width:0;overflow:auto;padding:16px 18px;background:var(--panel)}
.statusbar{height:24px;flex:none;display:flex;align-items:stretch;background:var(--bg);border-top:1px solid var(--line);font-size:12px;color:#2a2a2a;white-space:nowrap;overflow:hidden}
.sb{display:flex;align-items:center;gap:6px;padding:0 10px;border-right:1px solid #d0d0d0} .sb:last-child{border-right:0} .sb.grow{flex:1;overflow:hidden;text-overflow:ellipsis}
.sb.alarm{background:var(--bad);color:#fff;font-weight:600} .sb.alarm .led{background:#fff}

/* элементы */
.btn{background:var(--panel);color:var(--text);border:1px solid #c8c8c8;border-radius:4px;padding:6px 14px;cursor:default;font:inherit;font-size:13px;min-height:32px}
.btn:hover{background:var(--hover);border-color:#99c8ef} .btn.primary{background:var(--blue);border-color:var(--blue);color:#fff;font-weight:600}
.btn.primary:hover{background:#005aa8}
.btn.ok{background:var(--ok);border-color:var(--ok);color:#fff;font-weight:600} .btn.bad{background:var(--panel);border-color:var(--bad);color:var(--bad)}
.btn.ghost{background:transparent} .btn.sm{padding:3px 10px;font-size:12px;min-height:26px} .btn:disabled{opacity:.5}
input,select,textarea{width:100%;background:#fff;border:1px solid #c4c4c4;border-bottom-color:#8a8a8a;color:var(--text);border-radius:4px;padding:6px 8px;font:inherit}
input:focus,select:focus,textarea:focus{outline:0;border-bottom:2px solid var(--blue)}
input[type=checkbox],input[type=radio]{width:auto;margin:0 6px 0 0;accent-color:var(--blue)}
label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}
label.inline{flex-direction:row;align-items:center;gap:8px} label.inline input{width:auto}
.grid{display:grid;gap:12px} .g2{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))} .g3{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:14px}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap} label.row{flex-direction:row;flex-wrap:nowrap;align-items:baseline;gap:4px;color:var(--text);font-size:13px} .space{justify-content:space-between}
.badge{display:inline-block;padding:1px 8px;border-radius:999px;font-size:12px;background:#eceef1;color:#3e454e}
.badge.ok{background:#dff3e4;color:#1e5e2b} .badge.bad{background:#fde7e9;color:#a4262c} .badge.warn{background:#fff4ce;color:#7a5200} .badge.fire{background:var(--accent);color:#fff}
table{width:100%;border-collapse:collapse} th,td{text-align:left;padding:6px 10px;border-bottom:1px solid var(--line2);font-size:12.5px}
th{color:#3a3a3a;font-weight:400;background:var(--panel);border-right:1px solid var(--line2);position:sticky;top:0}
tr.click{cursor:default} tr.click:hover{background:var(--hover)} tr.sel,tr.sel:hover{background:var(--sel)}
.auth{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:16px;background:var(--bg)}
.auth-card{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:28px;width:360px;display:flex;flex-direction:column;gap:14px;box-shadow:0 8px 24px rgba(0,0,0,.08)}

/* терминал охраны: тревога, стена камер, таблица событий */
.term{display:flex;flex-direction:column;gap:0;height:100%;margin:-16px -18px}
.band{display:flex;align-items:center;gap:14px;padding:10px 16px;background:var(--bad);color:#fff;flex-wrap:wrap}
.band + .band{border-top:1px solid rgba(255,255,255,.35)}
.band .kind{font-size:20px;font-weight:800;letter-spacing:.03em}
.band .info{flex:1;min-width:220px;font-size:13px}
.band .btn{min-height:38px;font-weight:600}
.band .btn.w{background:#fff;color:#a4141c;border-color:#fff} .band .btn.o{background:transparent;color:#fff;border:2px solid #fff}
.band.smoke{background:#b4471b}
@keyframes pulse{50%{filter:brightness(1.15)}} .band{animation:pulse 1.6s infinite}
.wall{flex:1.3;min-height:220px;padding:8px;display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));grid-auto-rows:minmax(150px,1fr);gap:6px;background:#e9e9e9;overflow:auto}
.tile{display:flex;flex-direction:column;background:#1f1f1f;border:1px solid #3a3a3a;min-height:150px}
.tile.alert{border:3px solid var(--bad)} .tile.warn{border:3px solid #d18b00}
.tile .cap{height:22px;flex:none;display:flex;align-items:center;gap:6px;padding:0 6px;background:#2d2d2d;color:#fff;font-size:11px}
.tile.alert .cap{background:var(--bad)} .tile.warn .cap{background:#a86d00}
.tile .cap b{flex:1 1 auto;min-width:40px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.tile .cap span{flex:0 1 auto;min-width:0;max-width:60%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tile .img{flex:1;display:flex;align-items:center;justify-content:center;color:#9a9a9a;font-size:12px;overflow:hidden;min-height:0}
.tile img{width:100%;height:100%;object-fit:contain;display:block}
.split{height:6px;flex:none;background:var(--bg);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.lower{flex:1;min-height:170px;display:flex;flex-direction:column;background:var(--panel)}
.tabs{height:30px;flex:none;display:flex;border-bottom:1px solid var(--line2)}
.tabs button{border:0;border-bottom:2px solid transparent;background:transparent;font:inherit;font-size:12.5px;padding:0 14px;color:#3a3a3a;cursor:default}
.tabs button.on{border-bottom-color:var(--blue);font-weight:600;color:var(--text)}
.lower .tbl{flex:1;overflow:auto}
.calm{border:1px dashed var(--line);border-radius:var(--r);padding:24px;text-align:center;color:var(--muted)}
/* старые классы (журнал, модальные окна, камеры) */
.alarm{background:#fde7e9;border:2px solid var(--bad);border-radius:var(--r);padding:12px;margin-bottom:12px}
.alarm img{width:100%;border-radius:4px;display:block;margin:8px 0}
.cams{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
.cam{background:var(--panel);border:2px solid var(--line);border-radius:var(--r);overflow:hidden}
.cam.alert{border-color:var(--bad)} .cam.warn{border-color:#d18b00}
.cam .img{aspect-ratio:16/9;background:#1f1f1f;display:flex;align-items:center;justify-content:center;color:#9a9a9a;font-size:13px}
.cam img{width:100%;height:100%;object-fit:cover;display:block}
.cam .meta{padding:8px 10px;display:flex;justify-content:space-between;gap:8px;align-items:center;font-size:13px}
.modal{position:fixed;inset:0;background:rgba(0,0,0,.35);display:flex;align-items:center;justify-content:center;z-index:20;padding:16px}
.modal-card{background:var(--panel);border:1px solid #bdbdbd;border-radius:8px;padding:22px;max-width:960px;width:100%;max-height:92vh;overflow:auto;position:relative;box-shadow:0 16px 40px rgba(0,0,0,.25)}
.x{position:absolute;right:10px;top:6px;background:none;border:0;color:var(--muted);font-size:24px;cursor:default;width:36px;height:36px;border-radius:4px}
.x:hover{background:var(--bad);color:#fff}
.toast{position:fixed;bottom:34px;left:50%;transform:translateX(-50%);background:#2b2b2b;color:#fff;padding:9px 16px;border-radius:6px;z-index:30;box-shadow:0 6px 18px rgba(0,0,0,.25)}
video,.preview{width:100%;border-radius:4px;background:#000}
.zone-wrap{position:relative} .zone-wrap canvas{position:absolute;inset:0;width:100%;height:100%;cursor:crosshair;touch-action:none}
.code{font-family:Consolas,monospace;font-size:18px;letter-spacing:2px;background:var(--panel2);border:1px solid var(--line);padding:8px 12px;border-radius:4px;display:inline-block}
.hint{font-size:12px;color:var(--muted);margin:4px 0 0}
code{font-family:Consolas,monospace;font-size:12px;background:var(--panel2);padding:1px 4px;border-radius:3px}
details.rtsp{border:1px solid var(--line);border-radius:6px;padding:8px 12px}
details.rtsp summary{cursor:default;color:var(--blue);font-weight:600}
details.rtsp[open] summary{margin-bottom:8px}
details.rtsp .btn{margin-top:4px}
.card.grid{align-content:start} .card.grid > .btn{justify-self:start}
a.btn{text-decoration:none;display:inline-flex;align-items:center}
@media(max-width:900px){.body{flex-direction:column}.tree{width:auto;max-height:180px;border-right:0;border-bottom:1px solid var(--line)}.toolbar .tb{padding:0 8px}}
