:root{
  --bg:#14171c; --panel:#1c2027; --panel2:#22272f; --line:#2c333d;
  --ink:#d8e1ea; --dim:#8593a3; --accent:#3fa9f5; --hot:#ffd166;
  --geo:#dfe8f1; --constr:#7c8b9c; --dimc:#e8a04c; --ok:#65d98a;
  --mono:'JetBrains Mono','Cascadia Mono',Consolas,monospace;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;overflow:hidden}
body{background:var(--bg);color:var(--ink);font:13px/1.4 'Segoe UI',system-ui,sans-serif;
  display:flex;flex-direction:column;user-select:none;-webkit-user-select:none}

/* ═══ верхня панель ═══ */
#bar,#bar2{display:flex;align-items:center;gap:2px;background:var(--panel);
  border-bottom:1px solid var(--line);padding:4px 8px;flex-wrap:wrap}
#bar2{background:var(--panel2);padding:3px 8px;border-bottom:none;border-top:1px solid var(--line);
  flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden}
#bar2::-webkit-scrollbar{height:0}
#bar2 .grp{border-left:none}
#logo{font:700 14px var(--mono);letter-spacing:.08em;color:var(--accent);
  padding:0 10px 0 2px;white-space:nowrap}
#logo b{color:var(--ink);font-weight:700}
.grp{display:flex;align-items:center;gap:2px;padding:2px 8px;border-left:1px solid var(--line)}
.glabel{font:600 9px var(--mono);color:var(--dim);text-transform:uppercase;
  letter-spacing:.1em;margin-right:4px}
#conGrp .tb.on{background:#3a2430;border-color:#e06c88;color:#e06c88}
#conGrp .tb.on svg{stroke:#e06c88}
#conGrp button[data-con] svg{stroke:#c98a9c}

/* ═══ кнопки ═══ */
button.tb{display:flex;flex-direction:column;align-items:center;gap:2px;
  min-width:44px;padding:5px 6px 4px;background:transparent;border:1px solid transparent;
  border-radius:6px;color:var(--ink);cursor:pointer;font:11px 'Segoe UI',sans-serif;
  transition:background .15s,border-color .15s}
button.tb svg{width:20px;height:20px;stroke:var(--ink);fill:none;
  stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
button.tb:hover{background:var(--panel2);border-color:var(--line)}
button.tb.on{background:#173049;border-color:var(--accent);color:var(--accent)}
button.tb.on svg{stroke:var(--accent)}
button.tb:active{transform:translateY(1px)}
button.tb:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
input[type=number]{width:58px;background:var(--bg);border:1px solid var(--line);
  border-radius:5px;color:var(--ink);font:12px var(--mono);padding:4px 6px}
input[type=number]:focus{outline:1px solid var(--accent)}
.minil{font:10px var(--mono);color:var(--dim)}

/* ═══ середина ═══ */
#mid{display:flex;flex:1;min-height:0}

/* ліва панель інструментів — тільки іконки; підписи живуть у флаяутах і тултипах */
#ltools{display:flex;flex-direction:column;align-items:center;gap:2px;width:46px;
  background:var(--panel);border-right:1px solid var(--line);padding:6px 3px;
  overflow-y:auto;overflow-x:visible;flex-shrink:0;z-index:30}
#ltools::-webkit-scrollbar{width:0}
.lt-label{font:600 8px var(--mono);color:#5a6672;text-transform:uppercase;
  letter-spacing:.06em;padding:5px 0 2px;text-align:center}
.lt-sep{height:1px;background:var(--line);margin:5px 3px;align-self:stretch}
#ltools .tb{width:34px;min-width:34px;justify-content:center;padding:6px 0}
#ltools .tb > span{display:none}          /* назва — у тултипі та у флаяуті */

/* флаяути */
.flyout{position:relative;display:flex;align-items:stretch}
.flyout .flyface{flex:1;min-width:0}
.flyarrow{width:11px;background:transparent;border:none;color:#5a6672;
  cursor:pointer;font-size:8px;border-radius:4px;padding:0}
.flyarrow:hover{background:var(--panel2);color:var(--accent)}
/* підписи у випадному меню потрібні завжди — воно й розрізняє варіанти.
   Селектор із #ltools, щоб перебити правило «іконки без підписів». */
#ltools .flymenu .tb{width:auto;min-width:0;justify-content:flex-start;padding:6px 10px}
#ltools .flymenu .tb > span{display:inline;white-space:nowrap}
/* position:fixed — щоб меню не обрізалось прокруткою #ltools */
.flymenu{display:none;position:fixed;z-index:200;
  background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:4px;
  box-shadow:0 8px 30px rgba(0,0,0,.55);min-width:150px}
.flyout.open .flymenu{display:block}
.flyout.open .flyarrow{background:var(--panel2);color:var(--accent)}
.flymenu .tb{width:100%;flex-direction:row;justify-content:flex-start;gap:8px}

/* канвас */
#wrap{position:relative;flex:1;min-width:0}
canvas{position:absolute;inset:0;width:100%;height:100%;cursor:crosshair;touch-action:none}

#vi{position:absolute;display:none;z-index:20;background:var(--panel2);
  border:1px solid var(--accent);border-radius:6px;padding:3px 6px;
  box-shadow:0 4px 16px rgba(0,0,0,.5);align-items:center}
#vi input{width:70px;background:transparent;border:none;outline:none;
  color:var(--hot);font:13px var(--mono)}
#vi input::placeholder{color:#4d5866}
#vi .u{font:11px var(--mono);color:var(--dim);margin-left:2px}
#viAngBox{display:none;align-items:center;margin-left:8px;padding-left:8px;
  border-left:1px solid var(--line)}
#vi.two #viAngBox{display:inline-flex}
#viAngBox input{width:58px}
#viAngU{color:var(--accent)}
#viAngU.rel::after{content:'↻';margin-left:2px}

/* підказка й параметри інструмента стоять стовпчиком, не налазять одне на одне */
#overlayLeft{position:absolute;left:10px;top:8px;z-index:16;display:flex;flex-direction:column;
  gap:6px;align-items:flex-start;max-width:min(70%,340px);pointer-events:none}
#overlayLeft > *{pointer-events:auto}
#hint{background:rgba(28,32,39,.92);border:1px solid var(--line);border-radius:6px;
  padding:5px 10px;font:12px var(--mono);color:var(--dim);pointer-events:none}
#hint b{color:var(--accent)}

/* параметри активного модифікатора */
#toolOpts{display:none;width:216px;
  background:rgba(28,32,39,.96);border:1px solid var(--line);border-radius:8px;padding:8px 10px;
  box-shadow:0 8px 30px rgba(0,0,0,.5)}
.to-head{font:600 10px var(--mono);color:var(--accent);letter-spacing:.1em;
  text-transform:uppercase;margin-bottom:6px}
.to-row{display:flex;align-items:center;gap:6px;margin-bottom:5px;font:12px 'Segoe UI',sans-serif}
.to-lbl{flex:1;color:var(--dim)}
.to-row input[type=number]{width:64px}
.to-row label{display:flex;align-items:center;gap:6px;cursor:pointer}
.to-row input[type=checkbox]{width:14px;height:14px;accent-color:var(--accent);margin:0;cursor:pointer}
.to-seg{display:flex;border:1px solid var(--line);border-radius:5px;overflow:hidden}
.to-seg button{background:transparent;border:none;color:var(--dim);font:11px 'Segoe UI',sans-serif;
  padding:4px 8px;cursor:pointer}
.to-seg button.on{background:#173049;color:var(--accent)}
.to-btn,.to-apply{background:var(--panel2);border:1px solid var(--line);border-radius:5px;
  color:var(--ink);font:11.5px 'Segoe UI',sans-serif;padding:5px 10px;cursor:pointer}
.to-btn:hover,.to-apply:hover:not(:disabled){background:#173049;border-color:var(--accent)}
.to-apply{width:100%;margin-top:4px;color:var(--accent)}
.to-apply:disabled{opacity:.4;cursor:default;color:var(--dim)}
.to-note{margin-top:6px;font:10.5px var(--mono);color:#6b7885;line-height:1.45}

/* виміри виділеного — внизу вьюпорта, як у Fusion */
#selInfo{display:none;position:absolute;left:50%;bottom:10px;transform:translateX(-50%);
  z-index:14;max-width:calc(100% - 24px);
  background:rgba(28,32,39,.94);border:1px solid var(--line);border-radius:8px;
  padding:6px 12px;box-shadow:0 6px 24px rgba(0,0,0,.5);
  display:none;gap:16px;align-items:center;white-space:nowrap;overflow-x:auto}
#selInfo.on{display:flex}
#selInfo .si{display:flex;align-items:baseline;gap:5px}
#selInfo .si-l{font:10px var(--mono);color:var(--dim);text-transform:uppercase;letter-spacing:.06em}
#selInfo .si-v{font:13px var(--mono);color:var(--hot)}
#selInfo .si-u{font:10px var(--mono);color:#5f6d7d}

#help{position:absolute;right:10px;top:8px;z-index:15}
#helpBtn{width:26px;height:26px;border-radius:50%;border:1px solid var(--line);
  background:var(--panel);color:var(--dim);font:700 13px var(--mono);cursor:pointer}
#helpBtn:hover{color:var(--accent);border-color:var(--accent)}
#helpBox,#helpBoxEn{display:none;position:absolute;right:0;top:32px;width:320px;max-height:70vh;overflow-y:auto;
  background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:12px 14px;
  box-shadow:0 8px 30px rgba(0,0,0,.55);font:11.5px var(--mono);color:var(--dim)}
#helpBox h4,#helpBoxEn h4{color:var(--ink);font:600 12px var(--mono);margin:8px 0 4px}
#helpBox h4:first-child,#helpBoxEn h4:first-child{margin-top:0}
#helpBox kbd,#helpBoxEn kbd{background:var(--bg);border:1px solid var(--line);border-radius:3px;
  padding:0 4px;color:var(--hot);font:10.5px var(--mono)}
#helpBox p,#helpBoxEn p{margin:2px 0}

/* ═══ панель шарів (справа) ═══ */
#lpanel{width:250px;flex-shrink:0;background:var(--panel);border-left:1px solid var(--line);
  display:flex;flex-direction:column;min-height:0}
#lphead{display:flex;align-items:center;justify-content:space-between;
  padding:7px 10px;border-bottom:1px solid var(--line);
  font:600 10px var(--mono);color:var(--dim);letter-spacing:.12em}
.lpbtns{display:flex;gap:2px}
.lpbtns button{width:24px;height:24px;background:transparent;border:1px solid transparent;
  border-radius:5px;cursor:pointer;display:flex;align-items:center;justify-content:center}
.lpbtns button svg{width:15px;height:15px;stroke:var(--dim);fill:none;stroke-width:1.8;
  stroke-linecap:round;stroke-linejoin:round}
.lpbtns button:hover{background:var(--panel2);border-color:var(--line)}
.lpbtns button:hover svg{stroke:var(--accent)}
#bMoveToLayer{display:flex;align-items:center;gap:7px;margin:6px 8px 0;padding:6px 8px;
  background:var(--panel2);border:1px solid var(--line);border-radius:6px;color:var(--ink);
  cursor:pointer;font:11.5px 'Segoe UI',sans-serif;text-align:left;
  transition:background .15s,border-color .15s}
#bMoveToLayer:hover{background:#173049;border-color:var(--accent)}
#bMoveToLayer svg{width:16px;height:16px;flex-shrink:0;stroke:var(--accent);fill:none;
  stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
#bMoveToLayer span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#bMoveToLayer b{color:var(--accent);font-weight:600}
#lpMsg{max-height:0;overflow:hidden;margin:0 8px;color:var(--ok);font:11px var(--mono);
  transition:max-height .18s,padding .18s}
#lpMsg.show{max-height:34px;padding:5px 0 0}
#layerList{flex:1;overflow-y:auto;padding:4px}
#layerList::-webkit-scrollbar{width:5px}
#layerList::-webkit-scrollbar-thumb{background:var(--line);border-radius:2px}

.lrow{display:flex;align-items:center;gap:5px;padding:4px 6px;border-radius:6px;
  border:1px solid transparent;margin-bottom:1px;cursor:pointer;min-height:32px}
.lrow.layer{flex-direction:column;align-items:stretch;gap:2px}
.lmain{display:flex;align-items:center;gap:5px}
.lstyle{display:flex;align-items:center;gap:5px;padding-left:27px;opacity:.75}
.lrow.layer:hover .lstyle,.lrow.layer.active .lstyle{opacity:1}
.lstyle .ldash{flex:1;min-width:0}
.lrow:hover{background:var(--panel2)}
.lrow.active{background:#173049;border-color:var(--accent)}
.lrow.dragover{border-color:var(--hot)}
.lrow.folder{font-weight:600;color:var(--dim)}
.licon.exp.on svg{stroke:var(--accent)}
.licon.exp svg{stroke:#3d4652}
.licon.fold svg{stroke:var(--dim)}
.lname{flex:1;min-width:50px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}
.lcount{font:10px var(--mono);color:var(--dim)}
.licon{width:22px;height:22px;flex-shrink:0;background:transparent;border:none;
  border-radius:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;
  color:var(--dim);font-size:11px}
.licon svg{width:14px;height:14px;stroke:#4a5666;fill:none;stroke-width:1.8;
  stroke-linecap:round;stroke-linejoin:round}
.licon:hover{background:var(--bg)}
.licon.eye.on svg{stroke:var(--ink)}
.licon.lock.on svg{stroke:var(--hot)}
.lcolor{width:20px;height:20px;padding:0;border:1px solid var(--line);border-radius:4px;
  background:transparent;cursor:pointer;flex-shrink:0}
.lcolor::-webkit-color-swatch-wrapper{padding:1px}
.lcolor::-webkit-color-swatch{border:none;border-radius:3px}
.lwidth{width:44px;padding:2px 4px;font-size:11px}
.ldash{width:96px;background:var(--bg);border:1px solid var(--line);border-radius:4px;
  color:var(--ink);font-size:10.5px;padding:2px 3px}
.lrename{flex:1;background:var(--bg);border:1px solid var(--accent);border-radius:4px;
  color:var(--ink);font-size:12px;padding:2px 4px;outline:none;min-width:0}

/* ═══ статус-бар ═══ */
#status{display:flex;align-items:center;background:var(--panel);
  border-top:1px solid var(--line);padding:3px 10px;font:11.5px var(--mono);color:var(--dim)}
#coords{min-width:210px;color:var(--ink)}
.stbtn{background:transparent;border:1px solid transparent;border-radius:4px;
  color:var(--dim);font:11px var(--mono);padding:2px 8px;cursor:pointer;margin-left:6px}
.stbtn.on{color:var(--ok);border-color:var(--line);background:var(--bg)}
#zoomPct{margin-left:auto}
#entCount{margin-left:14px}

/* панель налаштувань прив'язки */
#snapWrap{position:relative}
#snapPanel{display:none;position:absolute;bottom:26px;left:0;z-index:60;min-width:230px;
  background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:8px 10px;
  box-shadow:0 -8px 30px rgba(0,0,0,.55)}
#snapWrap.open #snapPanel{display:block}
#snapPanel .sp-head{font:600 9px var(--mono);color:var(--dim);letter-spacing:.1em;
  text-transform:uppercase;margin:8px 0 4px;padding-top:6px;border-top:1px solid var(--line)}
#snapPanel .sp-head:first-child{margin-top:0;padding-top:0;border-top:none}
#snapPanel label{display:flex;align-items:center;gap:7px;padding:3px 2px;cursor:pointer;
  font:12px 'Segoe UI',sans-serif;color:var(--ink);border-radius:4px}
#snapPanel label:hover{background:var(--panel2)}
#snapPanel input[type=checkbox]{width:14px;height:14px;accent-color:var(--accent);cursor:pointer;margin:0}
#snapPanel .sp-m{width:14px;text-align:center;color:var(--ok);font:12px var(--mono)}
#snapPanel .sp-row{display:flex;align-items:center;gap:6px;padding:4px 2px;font:12px 'Segoe UI',sans-serif}
#snapPanel .sp-row input{width:62px}
#snapPanel .sp-row select{background:var(--bg);border:1px solid var(--line);border-radius:4px;
  color:var(--ink);font-size:11.5px;padding:3px 4px}
#snapPanel .sp-note{font:10px var(--mono);color:#5f6d7d;line-height:1.45;padding:2px 2px 0}

@media (max-width:1100px){
  #lpanel{width:210px}
  .ldash{width:48px}
}
@media (max-width:900px){
  .lt-label{display:none}
  #bar .tb span{display:none}
  #bar .tb{min-width:34px}
}

/* випадний список у панелі параметрів (шрифти) */
.to-sel{flex:1;min-width:0;background:var(--panel2);color:var(--ink);border:1px solid var(--line);
  border-radius:6px;padding:4px 6px;font:12px var(--mono)}
.to-sel:focus{outline:none;border-color:var(--accent)}
/* лупа калібрування */
#loupe{position:absolute;right:10px;top:10px;width:150px;height:150px;border-radius:8px;
  border:1px solid var(--line);background:#0d1014;display:none;z-index:25;pointer-events:none;
  box-shadow:0 8px 24px rgba(0,0,0,.5)}
#loupe.on{display:block}

/* вкладки правої панелі: Шари / Канваси */
#lptabs{display:flex;gap:2px;padding:4px 6px 0;background:var(--panel)}
.lptab{flex:1;background:transparent;color:var(--dim);border:1px solid transparent;border-bottom:none;
  border-radius:6px 6px 0 0;padding:5px 8px;font:600 11px var(--mono);cursor:pointer;letter-spacing:.04em}
.lptab:hover{color:var(--ink)}
.lptab.on{background:var(--panel2);color:var(--accent);border-color:var(--line)}
#canvasList{display:none;padding:4px;overflow-y:auto;flex:1}
#lpanel.canvas #layerList,#lpanel.canvas #lphead,#lpanel.canvas #bMoveToLayer,
#lpanel.canvas #lpMsg{display:none}
#lpanel.canvas #canvasList{display:block}
.crow{display:flex;flex-direction:column;gap:4px;padding:6px;margin-bottom:4px;
  background:var(--panel2);border:1px solid var(--line);border-radius:8px}
.crow.active{border-color:var(--accent)}
.crow .cmain{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.crow .cname{flex:1 1 100%;order:3}
.crow img{width:38px;height:28px;object-fit:cover;border-radius:4px;border:1px solid var(--line)}
.crow .cname{flex:1;font:11px var(--mono);color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.crow .cbtns{display:flex;gap:2px}
.crow .cbtns button{background:transparent;border:none;color:var(--dim);cursor:pointer;padding:2px}
.crow .cbtns button.on{color:var(--accent)}
.crow .cbtns button:hover{color:var(--ink)}
.crow .copa{display:flex;align-items:center;gap:6px}
.crow .copa input[type=range]{flex:1;accent-color:var(--accent)}
.crow .copa span{font:10px var(--mono);color:var(--dim);min-width:30px;text-align:right}
.cempty{padding:14px 8px;color:var(--dim);font:11px var(--mono);text-align:center;line-height:1.6}

/* перемикач мови */
#langSw{margin-left:auto;display:flex;gap:0;border:1px solid var(--line);border-radius:7px;
  overflow:hidden;flex-shrink:0}
#langSw button{background:transparent;color:var(--dim);border:none;cursor:pointer;
  padding:4px 9px;font:600 11px var(--mono);letter-spacing:.06em}
#langSw button:hover{color:var(--ink)}
#langSw button.on{background:var(--accent);color:#0d1014}

/* довідка: показуємо той блок, що відповідає мові */
#help.open #helpBox:not([hidden]),#help.open #helpBoxEn:not([hidden]){display:block}
#helpBoxEn .sp-head,#helpBox .sp-head{margin-top:9px}
