[data-theme="dark"]{--bg:#1a1d23;--bg2:#21252e;--bg3:#272b36;--panel:#1e222c;--border:#2e3340;--text:#e8eaf0;--text2:#8b91a8;--text3:#555d72;--ih:#2f3445;--ia:#3e1a5e;--cbg:#0d0f14}
[data-theme="light"]{--bg:#e6e8ed;--bg2:#dce1e9;--bg3:#f4f6f9;--panel:#f7f8fb;--border:#b9c1cf;--text:#1a1d23;--text2:#4a5068;--text3:#6f778c;--ih:#e7ebf2;--ia:#e8d4f1;--cbg:#dde5f3}
:root{--accent:#600a82;--accent2:#00d4aa;--warn:#ff7c3b;--danger:#ff3b5c;--r:6px}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;overflow:hidden;background:var(--bg);color:var(--text);font-family:"Segoe UI",system-ui,sans-serif;font-size:13px}
#topbar{height:48px;background:var(--panel);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 10px;gap:3px;z-index:100;overflow:visible;position:relative}
#topbar::-webkit-scrollbar{display:none}
.brand{display:flex;align-items:center;gap:5px;font-weight:700;font-size:13px;color:var(--accent);margin-right:5px;white-space:nowrap;flex-shrink:0}
.brand small{color:var(--text2);font-weight:400;font-size:9px}
.v2b{background:var(--accent2);color:#0a1a14;font-size:8px;font-weight:700;padding:1px 4px;border-radius:3px}
.proj-indicator{display:flex;align-items:center;gap:5px;padding:3px 10px;margin-left:6px;border-radius:5px;background:var(--bg3);border:1px solid var(--border);cursor:default;max-width:220px;overflow:hidden;flex-shrink:1;min-width:0}
.proj-ind-ico{font-size:11px;color:var(--text3);flex-shrink:0}
.proj-ind-ico.saved{color:var(--accent2)}.proj-ind-ico.dirty{color:var(--warning,#f5a000)}
.proj-ind-name{font-size:11px;color:var(--text2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500;user-select:none}
.proj-ind-dot{width:7px;height:7px;border-radius:50%;background:var(--warning,#f5a000);flex-shrink:0;animation:dirtyPulse 2s ease infinite}
@keyframes dirtyPulse{0%,100%{opacity:.6}50%{opacity:1}}
.tsep{width:1px;height:18px;background:var(--border);margin:0 2px;flex-shrink:0}
[data-tip]{position:relative}
[data-tip]::after{content:attr(data-tip);position:absolute;top:calc(100% + 7px);left:50%;transform:translateX(-50%);background:#0a0c12;color:#e8eaf0;font-size:10px;padding:4px 9px;border-radius:5px;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .15s;border:1px solid #2e3340;z-index:9999}
[data-tip]:hover::after{opacity:1}
[data-tip]::before{content:'';position:absolute;top:calc(100% + 3px);left:50%;transform:translateX(-50%);border:4px solid transparent;border-bottom-color:#0a0c12;pointer-events:none;opacity:0;transition:opacity .15s;z-index:9999}
[data-tip]:hover::before{opacity:1}
/* ── Dropdown menus ── */
.menu-drop{position:relative;flex-shrink:0}
.menu-trigger{height:28px;padding:0 10px;background:none;border:1px solid transparent;color:var(--text2);border-radius:var(--r);cursor:pointer;display:flex;align-items:center;gap:5px;font-size:11.5px;font-weight:600;transition:all .15s;white-space:nowrap}
.menu-trigger:hover,.menu-drop.open .menu-trigger{background:var(--ih);border-color:var(--border);color:var(--text)}
.menu-trigger i.fa-chevron-down{font-size:7px;opacity:.5;transition:transform .15s}
.menu-drop.open .menu-trigger i.fa-chevron-down{transform:rotate(180deg)}
.menu-panel{display:none;position:absolute;top:calc(100% + 4px);left:0;min-width:220px;background:var(--panel);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 30px rgba(0,0,0,.25);z-index:999;padding:4px;animation:menuIn .12s ease}
.menu-drop.open .menu-panel{display:block}
@keyframes menuIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
.menu-item{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:5px;cursor:pointer;font-size:12px;color:var(--text);transition:all .1s;border:none;background:none;width:100%;text-align:left}
.menu-item:hover{background:var(--ih);color:var(--accent)}
.menu-item i{width:16px;text-align:center;font-size:12px;color:var(--text3);flex-shrink:0}
.menu-item:hover i{color:var(--accent)}
.menu-item .mi-label{flex:1}
.menu-item .mi-shortcut{font-size:10px;color:var(--text3);margin-left:auto;font-family:"SF Mono","Cascadia Code",monospace;letter-spacing:.3px}
.menu-sep{height:1px;background:var(--border);margin:4px 6px;opacity:.5}
.tbtn{height:28px;padding:0 7px;background:var(--bg3);border:1px solid var(--border);color:var(--text);border-radius:var(--r);cursor:pointer;display:flex;align-items:center;gap:3px;font-size:11px;transition:all .15s;white-space:nowrap;flex-shrink:0}
.tbtn:hover{background:var(--ih);border-color:var(--accent);color:var(--accent)}
.tbtn.act{background:var(--ia);border-color:var(--accent);color:var(--accent)}
.tbtn.ok{border-color:var(--accent2);color:var(--accent2)}.tbtn.ok:hover{background:rgba(0,212,170,.1)}
.tbtn.dng:hover{border-color:var(--danger);color:var(--danger)}
.tbtn i{font-size:10px}
#tr{margin-left:auto;display:flex;align-items:center;gap:3px;flex-shrink:0}
#ctx-label{font-size:10px;padding:2px 8px;border-radius:20px;background:var(--bg3);border:1px solid var(--border);color:var(--text2);white-space:nowrap}
#ctx-label.grp{background:rgba(96,10,130,.15);border-color:var(--accent);color:var(--accent)}
#ctx-label.inn{background:rgba(0,212,170,.15);border-color:var(--accent2);color:var(--accent2)}
#app{display:flex;height:calc(100vh - 48px)}
#viewport{flex:1;position:relative;overflow:hidden;background:var(--cbg)}
#canvas-3d{position:absolute;top:0;left:0;width:100%;height:100%;display:block}
#axis-hud{position:absolute;bottom:40px;left:14px;width:120px;height:120px;z-index:10;pointer-events:none;filter:drop-shadow(0 4px 10px rgba(0,0,0,.18))}
#axis-cv{display:block;width:120px;height:120px}
#camviews{position:absolute;top:12px;left:12px;display:flex;gap:3px;background:var(--panel);border:1px solid var(--border);border-radius:20px;padding:3px;z-index:10}
.cvbtn{height:24px;padding:0 9px;border-radius:16px;background:transparent;border:none;color:var(--text2);cursor:pointer;font-size:10px;font-weight:600;transition:all .15s}
.cvbtn:hover{color:var(--text)}.cvbtn.act{background:var(--accent);color:#fff}
#vctrls{position:absolute;top:12px;right:12px;display:flex;flex-direction:column;gap:4px;z-index:10}
.vbtn{width:32px;height:32px;background:var(--panel);border:1px solid var(--border);border-radius:var(--r);color:var(--text2);display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:12px;transition:all .15s;position:relative}
.vbtn:hover{background:var(--ih);border-color:var(--accent);color:var(--accent)}.vbtn.act{background:var(--ia);border-color:var(--accent);color:var(--accent)}
.vbtn[data-tip]::after{left:auto;right:calc(100% + 7px);top:50%;transform:translateY(-50%)}
.vbtn[data-tip]::before{left:auto;right:calc(100% + 3px);top:50%;transform:translateY(-50%);border-bottom-color:transparent;border-left-color:#0a0c12}

/* ── Toolbar flutuante: modo Desenho ── */
#draw-toolbar{
  --dt-pad:8px;
  --dt-gap:8px;
  --dt-btn:36px;
  position:absolute;top:60px;right:56px;
  display:flex;flex-direction:column;align-items:stretch;
  gap:var(--dt-gap);padding:var(--dt-pad);
  background:var(--panel);border:1px solid var(--border);
  border-radius:10px;box-shadow:0 8px 22px rgba(0,0,0,.2);
  z-index:12;user-select:none;
}
#draw-toolbar.dragging{box-shadow:0 14px 36px rgba(0,0,0,.35);opacity:.95;cursor:grabbing}
#draw-toolbar .dt-header{
  display:flex;align-items:center;justify-content:center;
  height:18px;margin:-2px -2px 0;
  border-bottom:1px solid var(--border);
  cursor:grab;color:var(--text3);
}
#draw-toolbar .dt-header:active{cursor:grabbing}
#draw-toolbar .dt-header .dt-grip{font-size:10px;opacity:.55}
#draw-toolbar .dt-group{display:flex;flex-direction:column;gap:var(--dt-gap);align-items:center}
#draw-toolbar .dt-btn{
  width:var(--dt-btn);height:var(--dt-btn);
  background:transparent;border:1px solid transparent;border-radius:8px;
  color:var(--text2);display:flex;align-items:center;justify-content:center;
  cursor:pointer;font-size:13px;transition:all .14s;padding:0;
}
#draw-toolbar .dt-btn:hover{background:var(--ih);color:var(--text1);border-color:var(--border)}
#draw-toolbar .dt-btn.act{background:var(--accent);color:#fff;border-color:var(--accent)}
#draw-toolbar .dt-btn.dt-ok{color:var(--accent2)}
#draw-toolbar .dt-btn.dt-ok:hover{background:var(--accent2);color:#fff;border-color:var(--accent2)}
#draw-toolbar .dt-btn.dt-cancel{color:var(--danger)}
#draw-toolbar .dt-btn.dt-cancel:hover{background:var(--danger);color:#fff;border-color:var(--danger)}
#draw-toolbar .dt-sep{height:1px;background:var(--border);margin:0}
#draw-toolbar .dt-field{
  width:var(--dt-btn);box-sizing:border-box;
  display:flex;flex-direction:column;align-items:center;gap:3px;
  padding:5px 3px;background:var(--ih);border-radius:8px;border:1px solid var(--border);
}
#draw-toolbar .dt-field i{font-size:10px;color:var(--text3)}
#draw-toolbar .dt-field input{
  width:100%;height:20px;background:var(--panel);border:1px solid var(--border);
  border-radius:4px;color:var(--text1);font-size:11px;font-weight:600;text-align:center;
  padding:0;outline:none;box-sizing:border-box;
  -moz-appearance:textfield;
}
#draw-toolbar .dt-field input::-webkit-outer-spin-button,
#draw-toolbar .dt-field input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
#draw-toolbar .dt-field input:focus{border-color:var(--accent)}
#draw-toolbar .dt-field span{font-size:9px;color:var(--text3);letter-spacing:.4px}
@media (max-width:768px){#draw-toolbar{right:8px;top:auto;bottom:120px}}

/* ── Barra de Moldagem Vetorial (Booleans/CSG) ── */
#shaping-bar{
  position:fixed;top:104px;left:50%;transform:translateX(-50%);
  background:var(--panel);border:1px solid var(--border);border-radius:10px;
  padding:6px;display:flex;align-items:center;gap:4px;
  box-shadow:0 8px 22px rgba(0,0,0,.22);z-index:999;
  transition:opacity .2s,transform .2s;
}
#shaping-bar.ctx-hidden{opacity:0;pointer-events:none;transform:translateX(-50%) translateY(-10px)}
#shaping-bar .sh-head{display:flex;align-items:center;gap:6px;padding:0 8px 0 6px;border-right:1px solid var(--border);font-size:10px;font-weight:700;color:var(--text3);text-transform:uppercase;letter-spacing:.6px;height:30px}
#shaping-bar .sh-head i{color:var(--accent2);font-size:12px}
#shaping-bar .sh-btn{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  min-width:52px;height:42px;padding:3px 6px;
  background:transparent;border:1px solid transparent;border-radius:7px;
  color:var(--text2);cursor:pointer;transition:all .12s;
  font:600 9px/1 var(--font-sans,system-ui);letter-spacing:.3px;
}
#shaping-bar .sh-btn i{font-size:13px;color:var(--text2)}
#shaping-bar .sh-btn:hover{background:var(--ih);border-color:var(--border);color:var(--text1)}
#shaping-bar .sh-btn:hover i{color:var(--accent)}
#shaping-bar .sh-btn:active{transform:scale(.96)}
#shaping-bar .sh-sep{width:1px;height:28px;background:var(--border);margin:0 2px}
@media (max-width:768px){
  #shaping-bar{top:auto;bottom:140px;padding:4px;gap:2px}
  #shaping-bar .sh-head{display:none}
  #shaping-bar .sh-btn{min-width:44px;height:40px}
  #shaping-bar .sh-btn span{font-size:8px}
}

/* ── Barra de afastamento: Vista Explodida ── */
#explode-bar{
  position:absolute;bottom:96px;left:50%;transform:translateX(-50%);
  display:flex;align-items:center;gap:10px;
  padding:8px 12px;background:var(--panel);
  border:1px solid var(--border);border-radius:12px;
  box-shadow:0 10px 28px rgba(0,0,0,.22);
  z-index:12;user-select:none;font-size:11px;color:var(--text2);
}
#explode-bar .ex-head{display:flex;align-items:center;gap:6px;padding-right:8px;border-right:1px solid var(--border);font-weight:700;color:var(--text2);text-transform:uppercase;letter-spacing:.4px;font-size:10px}
#explode-bar .ex-head i{color:var(--accent2);font-size:12px}
#explode-bar input[type=range]{
  -webkit-appearance:none;appearance:none;
  width:220px;height:6px;border-radius:999px;
  background:linear-gradient(90deg,var(--border) 0%,var(--accent) var(--_ex,50%),var(--border) var(--_ex,50%));
  outline:none;margin:0;
}
#explode-bar input[type=range]::-webkit-slider-thumb{
  -webkit-appearance:none;appearance:none;
  width:16px;height:16px;border-radius:50%;
  background:var(--accent);border:2px solid var(--panel);
  box-shadow:0 2px 6px rgba(0,0,0,.3);cursor:pointer;transition:transform .12s;
}
#explode-bar input[type=range]::-webkit-slider-thumb:hover{transform:scale(1.15)}
#explode-bar input[type=range]::-moz-range-thumb{
  width:16px;height:16px;border-radius:50%;
  background:var(--accent);border:2px solid var(--panel);cursor:pointer;
}
#explode-bar .ex-nudge{
  width:26px;height:26px;border-radius:6px;border:1px solid var(--border);
  background:var(--ih);color:var(--text2);display:flex;align-items:center;justify-content:center;
  cursor:pointer;font-size:10px;transition:all .12s;padding:0;
}
#explode-bar .ex-nudge:hover{background:var(--accent);color:#fff;border-color:var(--accent)}
#explode-bar #explode-value{
  min-width:46px;text-align:right;color:var(--text1);
  font-weight:700;font-variant-numeric:tabular-nums;
  font:700 11px/1 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
}
#explode-bar .ex-close{
  width:28px;height:28px;border-radius:7px;border:1px solid var(--border);
  background:transparent;color:var(--danger);display:flex;align-items:center;justify-content:center;
  cursor:pointer;font-size:11px;transition:all .12s;padding:0;margin-left:4px;
}
#explode-bar .ex-close:hover{background:var(--danger);color:#fff;border-color:var(--danger)}
@media (max-width:768px){
  #explode-bar{bottom:78px;padding:6px 10px;gap:6px}
  #explode-bar input[type=range]{width:140px}
  #explode-bar .ex-head span{display:none}
}

/* HUD de precisao da ferramenta de desenho */
#draw-hud{
  position:absolute;pointer-events:none;z-index:13;
  background:rgba(10,14,22,.92);color:#fff;
  font:600 11px/1.35 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  padding:5px 9px;border-radius:6px;
  border:1px solid rgba(255,255,255,.12);
  box-shadow:0 4px 14px rgba(0,0,0,.35);
  white-space:pre;letter-spacing:.2px;
}
#draw-hud b{color:#5cc8ff;font-weight:700}
#draw-hud i{font-style:normal;color:#98e9b3}
#draw-hud em{font-style:normal;color:#ffcd6a}
#snap-ind,#surf-ind{position:absolute;left:12px;border-radius:4px;padding:2px 8px;font-size:10px;display:none;z-index:10}
#snap-ind{top:50px;background:rgba(96,10,130,.18);border:1px solid var(--accent);color:var(--accent)}
#surf-ind{top:74px;background:rgba(0,212,170,.18);border:1px solid var(--accent2);color:var(--accent2)}
#snap-ind.show,#surf-ind.show{display:block}
#tmode{position:absolute;bottom:28px;left:50%;transform:translateX(-50%);display:flex;gap:3px;background:var(--panel);border:1px solid var(--border);border-radius:24px;padding:4px;z-index:10}
#modeling-bar{position:absolute;top:50%;left:16px;transform:translateY(-50%);display:flex;flex-direction:column;gap:4px;background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:8px 6px;z-index:10;box-shadow:0 4px 15px rgba(0,0,0,.15)}
#modeling-bar .mb-hd{font-size:9px;font-weight:700;color:var(--text3);text-align:center;letter-spacing:.5px;text-transform:uppercase;padding:0 2px 2px}
#modeling-bar .mb-sep{width:70%;height:1px;background:var(--border);margin:4px auto}
.mbtn{width:38px;height:38px;border-radius:6px;border:1px solid transparent;background:transparent;color:var(--text2);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;font-size:14px}
.mbtn:hover{background:var(--ih);color:var(--text);border-color:var(--border)}
.mbtn.act{background:var(--ia);color:var(--accent);border-color:var(--accent)}
/* Tooltip do .mbtn aparece a direita (em vez do default abaixo) */
.mbtn[data-tip]::after{top:50%;left:calc(100% + 10px);bottom:auto;transform:translateY(-50%)}
.mbtn[data-tip]::before{top:50%;left:calc(100% + 2px);bottom:auto;transform:translateY(-50%);border:4px solid transparent;border-right-color:#0a0c12;border-bottom-color:transparent}
.tmbtn{height:27px;padding:0 10px;border-radius:20px;background:transparent;border:none;color:var(--text2);cursor:pointer;font-size:10.5px;display:flex;align-items:center;gap:4px;transition:all .15s;position:relative}
.tmbtn:hover{color:var(--text)}.tmbtn.act{background:var(--accent);color:#fff}
.tmbtn[data-tip]::after{top:auto;bottom:calc(100% + 7px)}
.tmbtn[data-tip]::before{top:auto;bottom:calc(100% + 3px);border-bottom-color:transparent;border-top-color:#0a0c12}
#statusbar{position:absolute;bottom:0;left:0;right:0;height:26px;background:var(--panel);border-top:1px solid var(--border);display:flex;align-items:center;padding:0 12px;gap:12px;font-size:10.5px;color:var(--text3);z-index:10}
.si{display:flex;align-items:center;gap:3px}
.sel-usage{padding:2px 8px;border-radius:20px;border:1px solid var(--accent);background:rgba(96,10,130,.12);color:var(--accent)}
#font-ld{position:absolute;inset:0;background:rgba(0,0,0,.5);display:none;align-items:center;justify-content:center;z-index:50;flex-direction:column;gap:8px}
#font-ld.show{display:flex}
/* MAT badge */
.mat-badge{display:inline-flex;align-items:center;gap:3px;background:rgba(0,212,170,.15);border:1px solid var(--accent2);border-radius:3px;padding:1px 6px;font-size:10px;color:var(--accent2);margin-left:4px}
.dec-badge{display:inline-flex;align-items:center;gap:3px;background:rgba(255,124,59,.1);border:1px solid var(--warn);border-radius:3px;padding:1px 6px;font-size:10px;color:var(--warn);margin-left:4px}
/* PANEL */
#panel{width:354px;min-width:318px;background:var(--panel);border-left:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden;transition:width .25s cubic-bezier(.4,0,.2,1),min-width .25s cubic-bezier(.4,0,.2,1)}
/* Recolher painel no desktop */
#panel-collapse-btn{display:flex;align-items:center;justify-content:center;width:30px;flex-shrink:0;background:none;border:none;border-right:1px solid var(--border);color:var(--text3);cursor:pointer;font-size:11px;transition:color .15s,background .15s}
#panel-collapse-btn:hover{color:var(--accent);background:var(--ih)}
#panel-rail{display:none}
#panel.desk-collapsed{width:36px;min-width:36px}
#panel.desk-collapsed #ptabs,#panel.desk-collapsed #pbody{display:none}
#panel.desk-collapsed #panel-rail{display:flex;flex-direction:column;align-items:center;gap:12px;padding:12px 0;cursor:pointer;height:100%;color:var(--text2);transition:color .15s,background .15s}
#panel.desk-collapsed #panel-rail:hover{color:var(--accent);background:var(--ih)}
#panel-rail span{writing-mode:vertical-rl;font-size:11px;font-weight:600;letter-spacing:.6px;text-transform:uppercase}
#ptabs{display:flex;border-bottom:1px solid var(--border);flex-shrink:0}
.ptab{flex:1;height:36px;display:flex;align-items:center;justify-content:center;gap:3px;cursor:pointer;font-size:10.5px;color:var(--text2);border-bottom:2px solid transparent;transition:all .15s}
.ptab:hover{color:var(--text)}.ptab.act{color:var(--accent);border-bottom-color:var(--accent)}
#pbody{flex:1;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--border) transparent}
#pbody::-webkit-scrollbar{width:4px}
#pbody::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}
.acc-s{border-bottom:1px solid var(--border)}
.acc-h{display:flex;align-items:center;padding:9px 12px;cursor:pointer;gap:6px;transition:background .15s;user-select:none}
.acc-h:hover{background:var(--ih)}
.acc-h .ico{width:14px;color:var(--text2);font-size:11px;flex-shrink:0}
.acc-h span{flex:1;font-size:12px;font-weight:600;color:var(--text)}
.acc-h .ch{font-size:10px;color:var(--text3);transition:transform .2s}
.acc-h.open .ch{transform:rotate(180deg)}
.acc-b{display:none;padding:8px 12px 12px}.acc-b.open{display:block}
.fr{display:flex;align-items:center;gap:5px;margin-bottom:5px}
.fr label{width:72px;font-size:11px;color:var(--text2);flex-shrink:0}
.fi{flex:1;height:26px;background:var(--bg3);border:1px solid var(--border);border-radius:var(--r);color:var(--text);padding:0 7px;font-size:12px;transition:border-color .15s}
.fi:focus{outline:none;border-color:var(--accent)}
/* Dimensão com base + adição */
.dim-row{display:flex;align-items:center;gap:4px;margin-bottom:5px}
.dim-row label{width:72px;font-size:11px;color:var(--text2);flex-shrink:0}
.dim-base{font-size:10px;color:var(--text3);white-space:nowrap}
.dim-input{flex:1;height:26px;background:var(--bg3);border:1px solid var(--border);border-radius:var(--r);color:var(--text);text-align:center;padding:0 4px;font-size:12px}
.dim-input:focus{outline:none;border-color:var(--accent)}
.dim-lock-row{display:flex;align-items:center;gap:4px;margin:-2px 0 1px 0;padding-left:72px}
.dim-lock-line{flex:1;height:1px;background:var(--border);opacity:.5}
.dim-lock-btn{width:20px;height:20px;border-radius:50%;border:1px solid var(--border);background:var(--bg2);color:var(--text3);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:9px;transition:border-color .15s,color .15s,background .15s;padding:0;flex-shrink:0;line-height:1}
.dim-lock-btn.act{border-color:var(--accent);color:var(--accent)}
.dim-total{font-size:10px;color:var(--accent2);white-space:nowrap;min-width:38px;text-align:right}
.ftri{display:grid;grid-template-columns:1fr 1fr 1fr;gap:4px;margin-bottom:5px}
.ftri .fti{display:flex;flex-direction:column;gap:2px}
.ftri .fti label{font-size:10px;color:var(--text3);text-align:center}
.ftri .fti input{height:26px;background:var(--bg3);border:1px solid var(--border);border-radius:var(--r);color:var(--text);text-align:center;padding:0 3px;font-size:12px;width:100%}
.ftri .fti input:focus{outline:none;border-color:var(--accent)}
.flbl{font-size:10px;color:var(--text3);margin:6px 0 3px;text-transform:uppercase;letter-spacing:.5px}
.cgrid{display:grid;grid-template-columns:1fr 1fr;gap:4px}
.cgrid3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:4px}
.ci{background:var(--bg3);border:1px solid var(--border);border-radius:var(--r);padding:7px 5px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:3px;transition:all .15s}
.ci:hover{border-color:var(--accent);background:var(--ih)}.ci:active{transform:scale(.96)}
.ci .cii{height:25px;display:flex;align-items:center;justify-content:center;font-size:13px;color:var(--accent)}
.ci .cin{font-size:10px;color:var(--text2);text-align:center}
.oli{display:flex;align-items:center;gap:5px;padding:5px 8px;border-radius:var(--r);cursor:pointer;transition:background .12s;margin-bottom:2px}
.oli:hover{background:var(--ih)}.oli.sel{background:var(--ia)}
.oli-i{width:16px;font-size:11px;color:var(--text3);flex-shrink:0}
.oli-n{flex:1;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.oli-b{font-size:10px;color:var(--accent2)}
#mat-card{background:var(--bg3);border:1px solid var(--border);border-radius:var(--r);padding:8px;margin-bottom:6px;display:none}
#mat-card.show{display:block}
.mtnm{font-size:12px;font-weight:600;color:var(--text);margin-bottom:2px}
.mtmt{font-size:10px;color:var(--text3)}
.mtbdg{display:inline-flex;align-items:center;background:rgba(96,10,130,.15);border-radius:3px;padding:1px 6px;font-size:10px;color:var(--accent);margin-top:3px}
.furow{display:flex;align-items:center;gap:5px;padding:4px 6px;background:var(--bg3);border:1px solid var(--border);border-radius:4px;margin-bottom:3px;font-size:11px}
.furow span{flex:1;color:var(--text2)}.furow button{background:none;border:none;color:var(--danger);cursor:pointer;font-size:11px}
.crow{display:flex;gap:4px;flex-wrap:wrap;align-items:center}
.cdot{width:20px;height:20px;border-radius:50%;cursor:pointer;border:2px solid transparent;transition:all .15s;flex-shrink:0}
.cdot:hover,.cdot.sel{border-color:var(--text);transform:scale(1.1)}
.bsm{height:26px;padding:0 9px;border-radius:var(--r);border:1px solid var(--border);background:var(--bg3);color:var(--text);cursor:pointer;font-size:11px;display:inline-flex;align-items:center;gap:4px;transition:all .15s}
.bsm:hover{border-color:var(--accent);color:var(--accent)}
.bsm.prim{background:var(--accent);border-color:var(--accent);color:#fff}.bsm.prim:hover{background:#4d0868}
.bsm.ok{border-color:var(--accent2);color:var(--accent2)}.bsm.ok:hover{background:rgba(0,212,170,.1)}
.bsm.dng{border-color:var(--danger);color:var(--danger)}.bsm.dng:hover{background:rgba(255,59,92,.08)}
.brow{display:flex;gap:4px;flex-wrap:wrap;margin-top:6px}
.stbl{width:100%;border-collapse:collapse;font-size:11px}
.stbl th{text-align:left;color:var(--text3);padding:3px 4px;font-weight:600;border-bottom:1px solid var(--border)}
.stbl td{padding:4px;border-bottom:1px solid var(--border);color:var(--text2)}
.gi{display:flex;align-items:center;gap:8px;padding:7px 8px;background:var(--bg3);border:1px solid var(--border);border-radius:var(--r);cursor:pointer;margin-bottom:4px;transition:all .15s}
.gi:hover{border-color:var(--accent);background:var(--ih)}
.gi-ico{width:32px;height:32px;background:var(--bg2);border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:14px;color:var(--accent2);flex-shrink:0}
.gi-nm{font-size:12px;font-weight:600;color:var(--text)}.gi-tp{font-size:10px;color:var(--text3)}
.mov{position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:1000;display:none;align-items:center;justify-content:center}
.mov.show{display:flex}
.mbox{background:var(--panel);border:1px solid var(--border);border-radius:8px;display:flex;flex-direction:column;box-shadow:0 24px 60px rgba(0,0,0,.5)}
.mhd{display:flex;align-items:center;padding:13px 16px;border-bottom:1px solid var(--border);gap:8px;flex-shrink:0}
.mhd h3{flex:1;font-size:14px;font-weight:600;color:var(--text)}
.mhd button{background:none;border:none;color:var(--text2);cursor:pointer;font-size:15px}
.mbd{padding:14px 16px;overflow-y:auto;flex:1}
/* ── Save Project Modal ── */
#mov-save .mbox{width:480px;max-width:95vw;animation:saveModalIn .2s ease}
@keyframes saveModalIn{from{opacity:0;transform:translateY(-16px) scale(.97)}to{opacity:1;transform:none}}
.sv-section{margin-bottom:20px}
.sv-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--text3);margin-bottom:8px;display:flex;align-items:center;gap:6px}
.sv-label i{font-size:9px;color:var(--accent);opacity:.8}
.sv-folders{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.sv-folder-chip{display:inline-flex;align-items:center;gap:5px;padding:5px 11px;border-radius:20px;border:1px solid var(--border);background:var(--bg3);color:var(--text2);font-size:11px;cursor:pointer;transition:all .15s;user-select:none}
.sv-folder-chip:hover{border-color:var(--accent);color:var(--accent);background:var(--ih)}
.sv-folder-chip.sel{border-color:var(--accent);background:var(--ia);color:var(--accent);font-weight:600}
.sv-folder-chip.new-chip{border-style:dashed;color:var(--accent2);border-color:var(--accent2)}
.sv-folder-chip.new-chip:hover{background:rgba(0,212,170,.08)}
.sv-new-folder-row{display:none;gap:6px;align-items:center;margin-top:4px}
.sv-new-folder-row.show{display:flex}
.sv-input{width:100%;height:36px;background:var(--bg3);border:1.5px solid var(--border);border-radius:var(--r);color:var(--text);padding:0 12px;font-size:13px;transition:border-color .15s,box-shadow .15s;outline:none}
.sv-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(96,10,130,.12)}
.sv-input.ok{border-color:var(--accent2)}
.sv-input.err{border-color:var(--danger);box-shadow:0 0 0 3px rgba(255,59,92,.1)}
.sv-feedback{font-size:10.5px;margin-top:5px;min-height:16px;display:flex;align-items:center;gap:4px}
.sv-feedback.ok{color:var(--accent2)}.sv-feedback.err{color:var(--danger)}.sv-feedback.info{color:var(--text3)}
.sv-divider{height:1px;background:var(--border);margin:20px 0;opacity:.5}
.sv-footer{display:flex;align-items:center;gap:8px;padding:12px 16px;border-top:1px solid var(--border);background:var(--bg3);border-radius:0 0 8px 8px;flex-shrink:0}
.sv-footer .sv-cancel{margin-right:auto}
.sv-btn-save{height:34px;padding:0 20px;border-radius:var(--r);background:var(--accent);border:none;color:#fff;font-size:12px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:background .15s,opacity .15s}
.sv-btn-save:hover{background:#4d0868}.sv-btn-save:disabled{opacity:.4;cursor:not-allowed}
#op-open-btn{background:var(--accent2)}#op-open-btn:hover{background:#00b892}#op-open-btn:disabled{opacity:.4;cursor:not-allowed;background:var(--accent2)}
.sv-proj-name-wrap{position:relative}
.sv-proj-name-wrap .sv-check-ico{position:absolute;right:10px;top:50%;transform:translateY(-50%);font-size:13px;pointer-events:none;transition:opacity .15s}
/* ── Open Project Modal ── */
#mov-open .mbox{width:680px;max-width:96vw;height:500px;max-height:90vh;animation:saveModalIn .2s ease}
.op-browser{display:flex;flex:1;min-height:0;overflow:hidden}
.op-sidebar{width:190px;flex-shrink:0;background:var(--bg);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden}
.op-sidebar-hd{padding:10px 12px 6px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--text3);flex-shrink:0}
.op-folder-list{flex:1;overflow-y:auto;padding:4px 6px;scrollbar-width:thin;scrollbar-color:var(--border) transparent}
.op-folder-item{display:flex;align-items:center;gap:7px;padding:7px 8px;border-radius:6px;cursor:pointer;font-size:12px;color:var(--text2);transition:all .15s;user-select:none;position:relative}
.op-folder-item:hover{background:var(--ih);color:var(--text)}
.op-folder-item.sel{background:var(--ia);color:var(--accent);font-weight:600}
.op-folder-item.sel i{color:var(--accent)}
.op-folder-item i{font-size:13px;color:var(--text3);flex-shrink:0;width:14px;text-align:center}
.op-folder-item .op-folder-count{margin-left:auto;font-size:10px;background:var(--bg3);border:1px solid var(--border);border-radius:10px;padding:0 5px;color:var(--text3);line-height:17px}
.op-folder-item.sel .op-folder-count{background:rgba(96,10,130,.15);border-color:var(--accent);color:var(--accent)}
.op-main{flex:1;display:flex;flex-direction:column;min-width:0;overflow:hidden}
.op-search-bar{padding:10px 12px 8px;flex-shrink:0;border-bottom:1px solid var(--border)}
.op-search-bar input{width:100%;height:30px;background:var(--bg3);border:1px solid var(--border);border-radius:var(--r);color:var(--text);padding:0 10px 0 30px;font-size:12px;outline:none;transition:border-color .15s}
.op-search-bar input:focus{border-color:var(--accent)}
.op-search-wrap{position:relative}
.op-search-wrap i{position:absolute;left:9px;top:50%;transform:translateY(-50%);color:var(--text3);font-size:11px;pointer-events:none}
.op-files{flex:1;overflow-y:auto;padding:8px;scrollbar-width:thin;scrollbar-color:var(--border) transparent;display:flex;flex-direction:column;gap:3px}
.op-file-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:6px;cursor:pointer;border:1px solid transparent;transition:all .15s;background:var(--bg3)}
.op-file-item:hover{border-color:var(--accent);background:var(--ih)}
.op-file-item.sel{border-color:var(--accent);background:var(--ia);box-shadow:0 0 0 2px rgba(96,10,130,.15)}
.op-file-item.sel .op-file-actions{opacity:1}
.op-file-item:active{background:var(--ia)}
.op-file-ico{width:32px;height:32px;border-radius:6px;background:rgba(96,10,130,.12);border:1px solid rgba(96,10,130,.2);display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:15px;color:var(--accent)}
.op-file-info{flex:1;min-width:0}
.op-file-name{font-size:12px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.op-file-date{font-size:10px;color:var(--text3);margin-top:1px}
.op-file-actions{display:flex;gap:4px;flex-shrink:0;opacity:0;transition:opacity .15s}
.op-file-item:hover .op-file-actions{opacity:1}
.op-file-del{width:24px;height:24px;border-radius:4px;border:1px solid var(--border);background:transparent;color:var(--text3);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:10px;transition:all .15s}
.op-file-del:hover{border-color:var(--danger);color:var(--danger);background:rgba(255,59,92,.08)}
.op-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--text3);font-size:12px}
.op-empty i{font-size:32px;opacity:.3}
.op-footer{display:flex;align-items:center;gap:8px;padding:10px 14px;border-top:1px solid var(--border);background:var(--bg3);border-radius:0 0 8px 8px;flex-shrink:0}
.op-path{flex:1;font-size:11px;color:var(--text3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.op-path span{color:var(--accent)}
#mat-search{width:100%;height:32px;background:var(--bg3);border:1px solid var(--border);border-radius:var(--r);color:var(--text);padding:0 10px;font-size:12px;margin-bottom:10px}
#mat-search:focus{outline:none;border-color:var(--accent)}
#mat-results{display:flex;flex-direction:column;gap:4px}
.mri{padding:8px 10px;background:var(--bg3);border:1px solid var(--border);border-radius:var(--r);cursor:pointer;transition:all .15s}
.mri:hover{border-color:var(--accent);background:var(--ih)}
.mrinm{font-size:12px;font-weight:600;color:var(--text)}.mrism{font-size:10px;color:var(--text3);margin-top:1px}
.psrow{display:flex;justify-content:space-between;padding:3px 0;font-size:11px;border-bottom:1px solid var(--border)}
.psrow:last-child{border:none}.psrow span:last-child{color:var(--accent2);font-weight:600}
#svg-drop{border:2px dashed var(--border);border-radius:8px;padding:24px 20px;text-align:center;cursor:pointer;transition:all .2s;margin-bottom:10px}
#svg-drop:hover,#svg-drop.drag{border-color:var(--accent);background:rgba(96,10,130,.05)}
#svg-drop i{font-size:28px;color:var(--text3);display:block;margin-bottom:8px}
#svg-drop p{font-size:12px;color:var(--text2)}#svg-drop small{font-size:10px;color:var(--text3)}
/* SVG preview */
#svg-preview{width:100%;height:140px;border:1px solid var(--border);border-radius:var(--r);background:var(--bg3);display:flex;align-items:center;justify-content:center;margin-bottom:10px;overflow:hidden;position:relative}
#svg-preview svg{max-width:100%;max-height:100%;position:absolute}
.svg-opt-row{display:flex;align-items:center;gap:6px;margin-bottom:6px}
.svg-opt-row label{font-size:11px;color:var(--text2);width:90px;flex-shrink:0}
.svg-opt-row input[type=number]{flex:1;height:26px;background:var(--bg3);border:1px solid var(--border);border-radius:var(--r);color:var(--text);padding:0 7px;font-size:12px}
.svg-opt-row input[type=number]:focus{outline:none;border-color:var(--accent)}
.svg-opt-row input[type=range]{flex:1;accent-color:var(--accent)}
.svg-opt-row span{font-size:10px;color:var(--text3);width:38px;text-align:right}
.opt-tabs{display:flex;gap:0;border:1px solid var(--border);border-radius:var(--r);overflow:hidden;margin-bottom:10px}
.opt-tab{flex:1;height:28px;display:flex;align-items:center;justify-content:center;font-size:11px;cursor:pointer;color:var(--text2);transition:all .15s;background:var(--bg3)}
.opt-tab:hover{background:var(--ih)}.opt-tab.act{background:var(--accent);color:#fff}
.opt-panel{display:none}.opt-panel.act{display:block}
#gltf-drop{border:2px dashed var(--border);border-radius:8px;padding:24px 20px;text-align:center;cursor:pointer;transition:all .2s;margin-bottom:10px}
#gltf-drop:hover,#gltf-drop.drag{border-color:var(--accent);background:rgba(96,10,130,.05)}
#gltf-drop i{font-size:26px;color:var(--text3);display:block;margin-bottom:8px}
#gltf-drop p{font-size:12px;color:var(--text2)}#gltf-drop small{font-size:10px;color:var(--text3)}
.txtprev{background:var(--bg3);border:1px solid var(--border);border-radius:4px;padding:10px;text-align:center;font-size:20px;font-weight:700;color:var(--accent);letter-spacing:2px;margin-bottom:8px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
#notif{position:fixed;bottom:40px;left:50%;transform:translateX(-50%);background:var(--panel);border:1px solid var(--border);border-radius:20px;padding:8px 18px;font-size:12px;color:var(--text2);opacity:0;transition:opacity .25s;pointer-events:none;z-index:11000;max-width:90vw;text-align:center;line-height:1.4}
#notif.show{opacity:1}
#btn-theme .sun{display:none}#btn-theme .moon{display:inline}
[data-theme="light"] #btn-theme .sun{display:inline}[data-theme="light"] #btn-theme .moon{display:none}
.srow{display:flex;align-items:center;gap:6px;margin-bottom:5px}
.srow label{width:72px;font-size:11px;color:var(--text2);flex-shrink:0}
.srow input[type=range]{flex:1;accent-color:var(--accent)}
.srow span{font-size:10px;color:var(--text3);width:28px;text-align:right}
/* info box */
.infobox{background:rgba(96,10,130,.08);border:1px solid rgba(96,10,130,.3);border-radius:var(--r);padding:8px 10px;font-size:11px;color:var(--text2);line-height:1.6;margin-bottom:8px}
.infobox i{color:var(--accent)}
/* MP ligado / desligado */
.mp-linked{background:rgba(0,212,170,.1);border:1px solid var(--accent2);border-radius:var(--r);padding:6px 10px;font-size:11px;color:var(--accent2);margin-bottom:6px;display:flex;align-items:center;gap:6px}
.mp-unlinked{background:rgba(255,124,59,.08);border:1px solid var(--warn);border-radius:var(--r);padding:6px 10px;font-size:11px;color:var(--warn);margin-bottom:6px;display:flex;align-items:center;gap:6px}

/* ===== MOBILE SUPPORT ===== */
* { -webkit-tap-highlight-color: transparent; touch-action: none; }
input, select, textarea { touch-action: auto; }

/* Panel deslizável no mobile */
@media (max-width: 768px) {
  #app { flex-direction: column; position: relative; }
  /* No mobile o recolher é feito pelo handle; ignora o estado de desktop */
  #panel-collapse-btn, #panel-rail { display: none !important; }
  #panel.desk-collapsed { width: 100% !important; min-width: unset; }
  #panel.desk-collapsed #ptabs { display: flex !important; }
  #panel.desk-collapsed #pbody { display: block !important; }
  #viewport { width: 100%; height: calc(100vh - 48px - var(--panel-h, 260px)); flex:none; }
  #panel {
    width: 100% !important; min-width: unset;
    position: absolute; bottom: 0; left: 0; right: 0;
    height: var(--panel-h, 260px);
    border-left: none; border-top: 1px solid var(--border);
    border-radius: 16px 16px 0 0;
    z-index: 50; transition: height .3s cubic-bezier(.4,0,.2,1);
    box-shadow: 0 -4px 24px rgba(0,0,0,.3);
  }
  #panel.collapsed { --panel-h: 44px; }
  #panel.expanded  { --panel-h: 75vh; }
  /* Handle de arraste */
  #panel-handle {
    display: flex; align-items: center; justify-content: center;
    height: 44px; cursor: grab; flex-shrink: 0;
    position: relative;
  }
  #panel-handle::before {
    content: ''; width: 36px; height: 4px;
    background: var(--border); border-radius: 2px;
  }
  #panel-handle::after {
    content: attr(data-title);
    position: absolute; left: 16px; top: 50%;
    transform: translateY(-50%);
    font-size: 12px; font-weight: 600; color: var(--text2);
  }
  #ptabs { padding: 0 4px; }
  .ptab { font-size: 9.5px; }
  /* Topbar compacto */
  #topbar { padding: 0 8px; gap: 2px; }
  .brand small { display: none; }
  .proj-indicator{display:none}
  .menu-trigger{font-size:10px;padding:0 7px;height:32px}
  .tbtn { height: 32px; padding: 0 6px; font-size: 10px; }
  /* Controles de câmera menores */
  #camviews { top: 8px; left: 8px; }
  .cvbtn { height: 22px; padding: 0 7px; font-size: 9px; }
  /* Vctrls maior para toque */
  #vctrls { top: 8px; right: 8px; gap: 5px; }
  .vbtn { width: 38px; height: 38px; font-size: 14px; }
  /* Barra de modos maior para toque */
  #tmode { bottom: var(--panel-h, 260px); left: 50%; }
  .tmbtn { height: 34px; padding: 0 12px; font-size: 11px; }
  /* Statusbar acima do panel */
  #statusbar { bottom: var(--panel-h, 260px); }
  /* Axis HUD reposicionado */
  #axis-hud { bottom: calc(var(--panel-h, 260px) + 30px); }
  /* Tooltips desabilitados no mobile (sem hover) */
  [data-tip]::after, [data-tip]::before { display: none !important; }
  /* Indicadores de modo touch */
  #touch-hint {
    position: absolute; top: 50%; left: 50%;
    transform: translate(-50%,-50%);
    background: rgba(0,0,0,.7); color: #fff;
    padding: 8px 16px; border-radius: 20px;
    font-size: 12px; pointer-events: none;
    opacity: 0; transition: opacity .3s; z-index: 30;
  }
  #touch-hint.show { opacity: 1; }
  /* Fab de ações rápidas mobile */
  #fab-menu {
    position: absolute;
    bottom: calc(var(--panel-h, 260px) + 8px);
    left: 12px;
    display: flex; flex-direction: column; gap: 6px; z-index: 20;
  }
  .fab-btn {
    width: 42px; height: 42px;
    background: var(--panel); border: 1px solid var(--border);
    border-radius: 50%; color: var(--text2);
    display: flex; align-items: center; justify-content: center;
    cursor: pointer; font-size: 14px;
    box-shadow: 0 2px 8px rgba(0,0,0,.3);
    transition: all .15s;
  }
  .fab-btn:active { transform: scale(.92); }
  .fab-btn.act { background: var(--ia); border-color: var(--accent); color: var(--accent); }
}
@media (min-width: 769px) {
  #panel-handle { display: none; }
  #fab-menu { display: none; }
  #touch-hint { display: none; }
}
/* Botão flutuante de toggle panel */
#btn-panel-toggle {
  display: none;
}
@media (max-width: 768px) {
  #btn-panel-toggle { display: flex; }
}


/* Landscape mobile */
@media (max-width: 900px) and (orientation: landscape) {
  #viewport { height: calc(100vh - 48px - 54px); }
  #panel {
    height: 54px !important;
    overflow: hidden;
  }
  #panel.expanded { height: 60vh !important; }
  #ptabs { overflow-x: auto; scrollbar-width: none; }
  #ptabs::-webkit-scrollbar { display: none; }
}
/* Telas muito pequenas */
@media (max-width: 380px) {
  .tbtn span { display: none; }
  .tbtn i { font-size: 12px; }
}

/* ── BARRA CONTEXTUAL FLUTUANTE ── */
#ctx-bar{position:fixed;top:56px;left:50%;transform:translateX(-50%);background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:6px 8px;display:flex;gap:6px;box-shadow:0 8px 24px rgba(0,0,0,.3);z-index:1000;transition:opacity .2s,transform .2s}
#ctx-bar.ctx-hidden{opacity:0;pointer-events:none;transform:translateX(-50%) translateY(-15px)}
.ctx-group{display:flex;align-items:center;gap:4px}
.ctx-btn{width:28px;height:28px;background:var(--bg3);border:1px solid var(--border);border-radius:4px;color:var(--text);cursor:pointer;display:flex;justify-content:center;align-items:center;font-size:12px;transition:all .15s}
.ctx-btn:hover{background:var(--ih);border-color:var(--accent);color:var(--accent)}
.ctx-btn.act{background:var(--ia);border-color:var(--accent);color:var(--accent)}
.ctx-btn.ctx-dng:hover{border-color:var(--danger);color:var(--danger);background:rgba(255,59,92,.1)}
.ctx-sep{width:1px;height:18px;background:var(--border);margin:0 4px;opacity:.6}
.ctx-label{font-size:9px;color:var(--text3);font-weight:700;text-transform:uppercase;letter-spacing:.5px;margin-right:2px}
.ctx-input{width:45px;height:24px;background:var(--bg);border:1px solid var(--border);border-radius:4px;color:var(--text);text-align:center;font-size:11px}
/* Login */
#login-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background:rgba(15,18,25,.6);backdrop-filter:blur(15px);-webkit-backdrop-filter:blur(15px);z-index:99999;display:flex;align-items:center;justify-content:center;transition:opacity .4s ease}
.login-box{background:rgba(25,30,40,.85);border:1px solid rgba(255,255,255,.1);padding:30px;border-radius:12px;width:320px;box-shadow:0 20px 40px rgba(0,0,0,.5);text-align:center}
.login-box h2{color:#fff;margin:0 0 20px;font-size:20px}
.login-inp{width:100%;background:rgba(0,0,0,.2);border:1px solid rgba(255,255,255,.1);color:#fff;padding:12px;border-radius:6px;margin-bottom:12px;outline:none;transition:border .2s;box-sizing:border-box;font-size:13px}
.login-inp:focus{border-color:var(--accent)}
/* Neutraliza o autofill amarelado do Chrome/Safari */
.login-inp:-webkit-autofill,
.login-inp:-webkit-autofill:hover,
.login-inp:-webkit-autofill:focus{-webkit-text-fill-color:#fff;-webkit-box-shadow:0 0 0 1000px rgba(0,0,0,.25) inset;caret-color:#fff;transition:background-color 999999s ease-in-out 0s}
.login-btn{width:100%;background:var(--accent);color:#fff;border:none;padding:12px;border-radius:6px;font-weight:bold;cursor:pointer;transition:filter .2s;font-size:14px}
.login-btn:hover{filter:brightness(1.2)}
.login-btn:disabled{opacity:.6;cursor:wait}
.login-err{color:#ff4455;font-size:12px;margin-bottom:10px;display:none}
.login-logo{font-size:28px;color:var(--accent);margin-bottom:6px}
.ctx-input:focus{outline:none;border-color:var(--accent)}
