:root{
  --bg:#0d1117; --bg2:#0f141b; --panel:#161c26; --panel2:#1b2230; --panel3:#202a3a;
  --line:#262f3d; --line2:#303c4d; --text:#e6edf3; --muted:#93a1b3; --faint:#5d6b7c;
  --accent:#3b82f6; --accent2:#2e75b6; --accent-soft:rgba(59,130,246,.14); --accent-bd:rgba(59,130,246,.45);
  --ok:#2ea043; --ok-soft:rgba(46,160,67,.14); --ok-bd:rgba(46,160,67,.4);
  --warn:#d29922; --warn-soft:rgba(210,153,34,.13);
  --radius:14px; --radius-sm:10px;
  --shadow:0 8px 30px rgba(0,0,0,.35);
}
*{box-sizing:border-box;}
html,body{margin:0;height:100%;}
body{background:radial-gradient(1200px 600px at 80% -10%, #15203033, transparent), var(--bg);
  color:var(--text); font-family:'Inter',system-ui,Arial,sans-serif; font-size:14px; line-height:1.5;
  -webkit-font-smoothing:antialiased;}
.hidden{display:none !important;}
.muted{color:var(--muted);}

/* ── buttons ── */
.btn{font:inherit; font-weight:500; border:1px solid var(--line2); background:var(--panel2); color:var(--text);
  padding:9px 16px; border-radius:var(--radius-sm); cursor:pointer; transition:.15s; display:inline-flex;
  align-items:center; justify-content:center; gap:8px;}
.btn:hover{border-color:var(--accent-bd); background:var(--panel3);}
.btn:active{transform:scale(.985);}
.btn:disabled{opacity:.45; cursor:not-allowed;}
.btn-primary{background:linear-gradient(180deg,#3b82f6,#2e6fd6); border-color:#3b82f6; color:#fff;
  box-shadow:0 4px 14px rgba(59,130,246,.3);}
.btn-primary:hover{filter:brightness(1.08); background:linear-gradient(180deg,#4a8cf7,#2e6fd6);}
.btn-ghost{background:transparent;}
.btn-block{width:100%;}
.btn-icon{padding:7px 11px; background:transparent; border-color:transparent; font-size:16px;}
.btn-icon:hover{background:var(--panel3); border-color:var(--line2);}

/* ── login ── */
.login-screen{position:fixed; inset:0; display:flex; align-items:center; justify-content:center;
  background:radial-gradient(900px 500px at 50% 0%, #1b2a44, var(--bg));}
.login-card{width:360px; background:var(--panel); border:1px solid var(--line); border-radius:var(--radius);
  padding:30px 28px; box-shadow:var(--shadow);}
.login-card h1{font-size:20px; margin:18px 0 4px;}
.login-card input{margin:16px 0 10px;}
.login-err{color:#f87171; font-size:13px; min-height:18px; margin-top:8px;}

/* ── brand ── */
.brand{display:flex; align-items:center; gap:11px;}
.brand-logo{width:34px; height:34px; border-radius:9px; background:linear-gradient(135deg,#3b82f6,#1e58b0);
  display:flex; align-items:center; justify-content:center; font-size:18px; color:#fff;}
.brand-name{font-weight:700; font-size:16px; letter-spacing:.2px;}
.brand-sub{font-size:11px; color:var(--faint);}

/* ── inputs ── */
input,select{width:100%; font:inherit; color:var(--text); background:var(--panel2);
  border:1px solid var(--line2); border-radius:var(--radius-sm); padding:9px 12px; outline:none; transition:.15s;}
input:focus,select:focus{border-color:var(--accent-bd); box-shadow:0 0 0 3px var(--accent-soft);}
input::placeholder{color:var(--faint);}
select{appearance:none; background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='%2393a1b3'><path d='M2 4l4 4 4-4z'/></svg>");
  background-repeat:no-repeat; background-position:right 12px center; padding-right:30px;}

/* ── topbar ── */
.app{display:flex; flex-direction:column; height:100vh;}
.topbar{display:flex; align-items:center; gap:18px; padding:12px 20px; border-bottom:1px solid var(--line);
  background:var(--bg2);}
.tabs{display:flex; gap:6px; margin-left:8px; flex-wrap:wrap;}
.tab{font:inherit; font-size:13px; padding:7px 14px; border-radius:9px; border:1px solid transparent;
  background:transparent; color:var(--faint); cursor:not-allowed;}
.tab.active{background:var(--accent-soft); color:#cfe0ff; border-color:var(--accent-bd); font-weight:600; cursor:default;}
.topbar-right{margin-left:auto; display:flex; align-items:center; gap:12px;}
.pill{font-size:12px; color:#bcd3f0; background:var(--accent-soft); border:1px solid var(--accent-bd);
  padding:5px 12px; border-radius:999px;}
.operator{font-size:13px; color:var(--muted); display:flex; align-items:center; gap:6px;}
.operator::before{content:""; width:7px; height:7px; border-radius:50%; background:var(--ok); box-shadow:0 0 6px var(--ok);}

/* ── toasts ── */
.toasts{position:fixed; right:18px; bottom:18px; display:flex; flex-direction:column; gap:8px; z-index:80;}
.toast{background:var(--panel2); border:1px solid var(--ok-bd); color:#c8f0d6; padding:11px 16px;
  border-radius:var(--radius-sm); box-shadow:var(--shadow); font-size:13px; display:flex; align-items:center; gap:9px;
  animation:slideIn .22s ease; max-width:340px;}
.toast.err{border-color:#7a2f2f; color:#f3b7b7;}
@keyframes slideIn{from{transform:translateY(8px); opacity:0;} to{transform:translateY(0); opacity:1;}}

/* ── layout ── */
.layout{flex:1; min-height:0; display:grid; grid-template-columns:minmax(0,44fr) minmax(0,56fr); gap:14px;
  padding:14px 20px 18px; overflow:hidden;}
.right-col{display:flex; flex-direction:column; gap:10px; min-width:0; min-height:0; height:100%; overflow:hidden;}

/* ── panel ── */
.panel{background:var(--panel); border:1px solid var(--line); border-radius:var(--radius);
  box-shadow:0 2px 14px rgba(0,0,0,.18); display:flex; flex-direction:column; overflow:hidden; min-height:0;}
.panel-head{display:flex; align-items:center; gap:8px; padding:13px 16px; border-bottom:1px solid var(--line);
  font-weight:600; font-size:14px; color:#cfe0ff;}
.panel-head .ic{color:var(--accent); font-style:normal;}
.panel-sub{font-weight:400; color:var(--faint); font-size:12px; margin-left:2px;}
.tree-panel{min-height:0; height:100%;}
.search{padding:10px 14px;}
.tree{flex:1; overflow:auto; padding:4px 8px 14px;}

/* ── tree ── */
.tnode{user-select:none;}
.trow{display:flex; align-items:flex-start; gap:7px; padding:6px 8px; border-radius:8px; cursor:pointer;
  transition:.12s;}
.trow:hover{background:var(--panel2);}
.trow.lvl1{font-weight:600; color:#e6edf3;}
.trow.lvl2{color:#c4d0de;}
.trow.lvl3{color:var(--muted); font-size:13px;}
.trow.sel{background:var(--accent-soft); color:#dbe8ff; box-shadow:inset 0 0 0 1px var(--accent-bd);}
.tcaret{width:14px; flex:none; color:var(--faint); transition:.15s; margin-top:2px;}
.tcaret.open{transform:rotate(90deg);}
.tlabel{flex:1; min-width:0;}
.children{margin-left:14px; border-left:1px solid var(--line2); padding-left:6px;}
.tcode{color:var(--accent); font-weight:600; margin-right:6px; font-variant-numeric:tabular-nums;}

/* ── param window ── */
.param-panel{flex:1 1 auto; min-height:240px;}
.param-body{flex:1; overflow:auto; padding:16px; min-height:0;}
.empty-state{height:100%; display:flex; flex-direction:column; align-items:center; justify-content:center;
  text-align:center; color:var(--faint); gap:14px;}
.empty-ic{font-size:46px; opacity:.35;}
.work-head{display:flex; justify-content:space-between; align-items:flex-start; gap:10px;}
.work-title{font-weight:600; font-size:15px; line-height:1.4;}
.work-meta{color:var(--faint); font-size:12px; margin-top:3px;}
.params-grid{display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:10px; margin:14px 0;}
.field label{display:block; font-size:12px; color:var(--muted); margin-bottom:5px;}
.rate-banner{background:var(--ok-soft); border:1px solid var(--ok-bd); color:#7ee2a0; border-radius:var(--radius-sm);
  padding:10px 13px; font-size:13.5px; margin:6px 0 12px;}
.rate-banner b{color:#b9f6cf;}
.dobor-line{color:var(--muted); font-size:12.5px; margin:-6px 0 12px;}
.warn-banner{background:var(--warn-soft); border:1px solid #5a4a1e; color:#e8c878; border-radius:var(--radius-sm);
  padding:10px 13px; font-size:13px;}
.hint{background:var(--panel2); border:1px dashed var(--line2); color:var(--muted); border-radius:var(--radius-sm);
  padding:14px 16px; font-size:13.5px; text-align:center;}

/* ── ABC tabs ── */
.abc-tabs{display:flex; gap:4px; border-bottom:1px solid var(--line); margin-bottom:10px;}
.abc-tab{font:inherit; font-size:13px; padding:8px 13px; border:none; background:transparent; color:var(--muted);
  cursor:pointer; border-bottom:2px solid transparent; margin-bottom:-1px;}
.abc-tab:hover{color:var(--text);}
.abc-tab.active{color:#cfe0ff; border-bottom-color:var(--accent); font-weight:600;}
.abc-pane{display:none;}
.abc-pane.active{display:block;}

/* ── table ── */
table.res{width:100%; border-collapse:collapse; font-size:13px;}
table.res th{background:var(--panel3); color:#bcd3f0; text-align:left; padding:8px 10px; font-weight:600;
  border-bottom:1px solid var(--line); position:sticky; top:0;}
table.res td{padding:7px 10px; border-bottom:1px solid var(--line); color:var(--text);}
table.res td.num,table.res th.num{text-align:right; font-variant-numeric:tabular-nums;}
table.res tr:hover td{background:var(--panel2);}

/* ── popravki ── */
.pop{display:flex; gap:9px; align-items:flex-start; padding:8px 6px; border-bottom:1px solid var(--line);
  cursor:pointer; font-size:12.5px; line-height:1.4;}
.pop:hover{background:var(--panel2);}
.pop input{width:16px; height:16px; flex:none; margin-top:1px; accent-color:var(--accent);}
.pop .pt{color:var(--accent); font-weight:600; margin-right:5px;}
.pop .pk{color:#e8c878;}
.har-row{display:flex; justify-content:space-between; gap:12px; padding:7px 4px; border-bottom:1px solid var(--line);
  font-size:13px;}
.har-row .hk{color:var(--muted);} .har-row .hv{text-align:right; color:var(--text);}

/* ── naked accumulator ── */
.naked-panel{flex:0 0 auto; height:170px;}
.naked{flex:1; overflow:auto; padding:6px 10px; min-height:0;}
.nrow{display:flex; align-items:flex-start; gap:8px; padding:9px 6px; border-bottom:1px solid var(--line);}
.nrow:last-child{border-bottom:none;}
.nrow .nmain{flex:1; min-width:0;}
.nrow .ncode{font-weight:600; color:#e6edf3;}
.nrow .ndesc{font-size:12px; color:var(--faint); margin-top:2px;}
.nrow .npop{color:#e8c878;}
.ndel{flex:none; background:transparent; border:none; color:var(--faint); cursor:pointer; font-size:15px;
  padding:2px 6px; border-radius:7px;}
.ndel:hover{background:#3a1f22; color:#f87171;}
.naked .empty{color:var(--faint); padding:18px 6px; text-align:center;}
.naked-actions{display:flex; gap:10px;}
.naked-actions .btn{flex:1;}
.naked-actions .btn-primary{flex:2.2;}

/* ── modal ── */
.modal{position:fixed; inset:0; background:rgba(5,8,12,.7); backdrop-filter:blur(3px); display:flex;
  align-items:center; justify-content:center; z-index:50; padding:30px;}
.modal-card{width:min(1100px,96vw); max-height:90vh; background:var(--panel); border:1px solid var(--line);
  border-radius:var(--radius); box-shadow:var(--shadow); display:flex; flex-direction:column; overflow:hidden;}
.modal-head{display:flex; justify-content:space-between; align-items:center; padding:16px 20px;
  border-bottom:1px solid var(--line);}
.modal-head h2{margin:0; font-size:18px;}
.modal-actions{display:flex; gap:8px; align-items:center;}
.modal-body{overflow:auto; padding:18px 20px;}
.smeta-work{margin-bottom:16px;}
.smeta-work .swh{font-weight:600; color:#cfe0ff; margin-bottom:6px; font-size:13.5px;}
.svod-title{font-weight:600; color:#bcd3f0; margin:16px 0 6px; font-size:13px;}

::-webkit-scrollbar{width:10px; height:10px;}
::-webkit-scrollbar-thumb{background:#2a3340; border-radius:8px; border:2px solid var(--panel);}
::-webkit-scrollbar-thumb:hover{background:#39455a;}
