:root{
  --bg-1:#eef1f5;
  --bg-2:#c9d2dd;
  --fg:#1d2733;
  --muted:#5b6b7c;
  --panel:rgba(255,255,255,.92);
  --border:rgba(20,35,55,.14);
  --accent:#0a63c2;
  --shadow:0 6px 24px rgba(15,30,50,.14);
}
@media (prefers-color-scheme: dark){
  :root{
    --bg-1:#20262e;
    --bg-2:#0e1216;
    --fg:#e8edf3;
    --muted:#93a3b4;
    --panel:rgba(28,34,42,.92);
    --border:rgba(255,255,255,.12);
    --accent:#4d9dff;
    --shadow:0 6px 24px rgba(0,0,0,.45);
  }
}
*{box-sizing:border-box}
html,body{margin:0;height:100%;overflow:hidden;background:var(--bg-2)}
body{
  font:14px/1.4 "Segoe UI",Roboto,-apple-system,Helvetica,Arial,sans-serif;
  color:var(--fg);
  -webkit-user-select:none;user-select:none;
  -webkit-tap-highlight-color:transparent;
}
#app{position:fixed;inset:0}
#c{display:block;width:100%;height:100%;outline:none;touch-action:none}

/* ---------- оверлеи ---------- */
.overlay{
  position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(160deg,var(--bg-1),var(--bg-2));
  z-index:40;transition:opacity .45s ease;
}
.overlay.hidden{opacity:0;pointer-events:none}
.loader-box{width:min(320px,72vw);text-align:center}
#error .loader-box{width:min(460px,86vw)}
.loader-title{font-size:15px;font-weight:600;letter-spacing:.2px;margin-bottom:14px}
.loader-title.err{color:#d8483f}
.loader-sub{margin-top:10px;font-size:12px;color:var(--muted);min-height:16px;word-break:break-word}
#error-sub{line-height:1.55;text-align:left}
#error-sub code{font-family:ui-monospace,Consolas,monospace;font-size:11.5px;
  background:rgba(125,145,170,.16);border-radius:4px;padding:1px 5px;white-space:nowrap}
.bar{height:4px;border-radius:4px;background:var(--border);overflow:hidden}
.bar-fill{height:100%;width:0;background:var(--accent);border-radius:4px;transition:width .18s linear}

/* ---------- верхняя панель ---------- */
#topbar{
  position:absolute;top:0;left:0;right:0;padding:12px 16px;
  display:flex;justify-content:space-between;align-items:flex-start;gap:12px;
  pointer-events:none;z-index:20;
}
#title{font-size:13px;font-weight:600;color:var(--fg);opacity:.9;text-shadow:0 1px 2px rgba(255,255,255,.35)}
#stats{font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums;text-align:right;white-space:pre-line;transition:margin-right .25s ease}
body.panel-open #stats{margin-right:min(320px,82vw)}

/* ---------- тулбар ---------- */
#toolbar{
  position:absolute;left:50%;bottom:16px;transform:translateX(-50%);
  display:flex;align-items:center;gap:2px;padding:5px;
  background:var(--panel);border:1px solid var(--border);border-radius:12px;
  box-shadow:var(--shadow);backdrop-filter:blur(10px);z-index:30;
  max-width:calc(100vw - 24px);overflow-x:auto;scrollbar-width:none;
}
#toolbar::-webkit-scrollbar{display:none}
#toolbar .sep{width:1px;height:22px;background:var(--border);margin:0 4px;flex:none}
#toolbar button{
  flex:none;width:36px;height:34px;display:grid;place-items:center;
  border:0;border-radius:8px;background:transparent;color:var(--fg);
  cursor:pointer;transition:background .15s,color .15s;
}
#toolbar button[hidden]{display:none}
#toolbar button:hover{background:rgba(125,145,170,.18)}
#toolbar button.on{background:var(--accent);color:#fff}
#toolbar svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
#toolbar .txt{font-size:10px;font-weight:700;letter-spacing:.4px}

/* ---------- панель состава ---------- */
#panel{
  position:absolute;top:0;right:0;bottom:0;width:min(320px,82vw);
  display:flex;flex-direction:column;z-index:35;
  background:var(--panel);border-left:1px solid var(--border);
  box-shadow:var(--shadow);backdrop-filter:blur(10px);
  transition:transform .25s ease;
}
#panel.hidden{transform:translateX(101%)}
.panel-head{
  display:flex;justify-content:space-between;align-items:center;
  padding:12px 14px;border-bottom:1px solid var(--border);
  font-weight:600;font-size:13px;
}
.panel-head button{border:0;background:transparent;color:var(--muted);font-size:22px;line-height:1;cursor:pointer;padding:0 2px}
.panel-tools{display:flex;gap:6px;padding:10px 12px;border-bottom:1px solid var(--border)}
.panel-tools input{
  flex:1;min-width:0;padding:6px 9px;font:inherit;font-size:12px;
  border:1px solid var(--border);border-radius:7px;background:transparent;color:var(--fg);
}
.panel-tools input:focus{outline:none;border-color:var(--accent)}
.panel-tools button{
  flex:none;padding:6px 9px;font-size:12px;border:1px solid var(--border);
  border-radius:7px;background:transparent;color:var(--fg);cursor:pointer;
}
.panel-tools button:hover{background:rgba(125,145,170,.18)}
#tree{flex:1;overflow:auto;padding:6px 4px 16px;font-size:12.5px;overscroll-behavior:contain}
.node{display:flex;align-items:center;gap:4px;border-radius:6px;padding:2px 4px;white-space:nowrap}
.node:hover{background:rgba(125,145,170,.14)}
.node .tw{width:16px;height:16px;flex:none;display:grid;place-items:center;cursor:pointer;color:var(--muted);font-size:10px}
.node .tw.leaf{visibility:hidden}
.node .eye{width:20px;height:18px;flex:none;cursor:pointer;color:var(--muted);display:grid;place-items:center}
.node .eye.off{opacity:.32}
.node .nm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;cursor:pointer}
.node.sel{background:rgba(10,99,194,.16)}
.node.dim .nm{opacity:.4}
.kids{margin-left:14px;border-left:1px solid var(--border);padding-left:2px}
.kids.collapsed{display:none}

/* ---------- подсказка ---------- */
#hint{
  position:absolute;left:16px;bottom:18px;display:flex;gap:14px;
  font-size:11px;color:var(--muted);pointer-events:none;z-index:20;
  transition:opacity .6s ease;
}
#hint b{color:var(--fg);font-weight:600}
#hint.gone{opacity:0}
@media (max-width:720px){
  #hint{display:none}
  #stats{display:none}
  #toolbar{bottom:10px;gap:0}
  #toolbar button{width:34px}
}
