/* Xtruct: visual moderno no estilo do LAESTool (LAEST), com tema escuro (padrão) e claro.
   As classes .w-*, .dlg-*, .tb, .pal-*, .barra-flut etc. são o contrato com os módulos de diálogo. */
:root {
  --bg: #071626; --sf: #0c2138; --rs: #12304e; --bd: #1d4067;
  --tx: #e9eff7; --txm: #9db0c8; --txm2: #6d84a0;
  --ac: #5b91ff; --acbg: #123058; --ac2: #eeb12b; --gr: #3fbf6a; --run: #2f6bff;
  --gold: #eeb12b; --red: #ff6b6b; --pur: #b48cf2;
  --cvbg: #071626; --hd: #052142; --hd2: #0e3a72; --hdtx: #dbe5f5; --hdmuted: #93a8c6;
  --tabbg: #041627; --tabhover: rgba(255,255,255,.07); --pill: rgba(12,33,56,.93);
  --shadow: 0 8px 24px rgba(0,0,0,.5);
  --mono: "IBM Plex Mono", Consolas, monospace;
  --fonte: Poppins, "Segoe UI", system-ui, sans-serif;
}
html.light {
  --bg: #f2f3f6; --sf: #ffffff; --rs: #eef0f4; --bd: #d6d9e0;
  --tx: #052142; --txm: #5a6577; --txm2: #8b93a1;
  --ac: #073cd3; --acbg: #e7ecfc; --ac2: #b8790c; --gr: #1f7a3d; --run: #073cd3;
  --gold: #eeb12b; --red: #c62828; --pur: #5e30b0;
  --cvbg: #ffffff; --hd: #052142; --hd2: #0e3a72; --hdtx: #dbe5f5; --hdmuted: #a9bcd8;
  --tabbg: #eae8e8; --tabhover: rgba(255,255,255,.6); --pill: rgba(255,255,255,.93);
  --shadow: 0 8px 24px rgba(5,33,66,.14);
}
* { box-sizing: border-box; }
[hidden] { display: none !important; }
html, body { height: 100%; margin: 0; overflow: hidden; }
body { background: var(--bg); color: var(--tx); font: 13px/1.4 var(--fonte); user-select: none; }
button, input, select, textarea { font: inherit; color: inherit; }
::-webkit-scrollbar { width: 6px; height: 6px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: var(--bd); border-radius: 4px; }
u { text-decoration: none; }

/* ================= estrutura ================= */
#janela { display: flex; flex-direction: column; height: 100vh; }
#instBar { height: 28px; flex-shrink: 0; background: var(--hd); display: flex; align-items: center; justify-content: center; gap: 8px; color: #fff; font-size: 11px; position: relative; }
#instBar img { height: 18px; }
#instBar strong { font-size: 12px; letter-spacing: .3px; }
#instBar span { opacity: .75; font-size: 10px; }

#topbar { height: 44px; flex-shrink: 0; display: flex; align-items: center; gap: 4px; padding: 0 10px; background: var(--sf); border-bottom: 1px solid var(--bd); z-index: 60; }
.brand { display: flex; align-items: center; gap: 10px; margin-right: 8px; white-space: nowrap; }
.brand img { height: 30px; }
.brand .logo-tema-claro, html.light .brand .logo-tema-escuro { display: none; }
html.light .brand .logo-tema-claro { display: block; }
.brand-name { font-weight: 600; font-size: 15px; letter-spacing: .6px; color: var(--tx); }
.brand-name b { color: var(--ac2); font-weight: 600; }
.brand-sep { width: 1px; height: 18px; background: var(--bd); }
.brand-sub { font-size: 12px; color: var(--txm2); }
.spacer { flex: 1; }
#tTitulo { font-size: 12px; color: var(--txm); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 32vw; }
.hd-btn { flex-shrink: 0; height: 30px; min-width: 30px; padding: 0 8px; border: 1px solid var(--bd); border-radius: 6px; background: var(--sf); color: var(--txm); cursor: pointer; display: inline-flex; align-items: center; justify-content: center; gap: 6px; font-size: 12px; }
.hd-btn:hover { border-color: var(--ac); color: var(--ac); }
.hd-btn svg { width: 16px; height: 16px; }

/* menus (dropdowns no topo) */
#menus { display: flex; align-items: center; gap: 2px; }
.mn { position: relative; }
.mn-t { display: flex; align-items: center; gap: 5px; height: 30px; padding: 0 11px; border-radius: 6px; color: var(--txm); cursor: pointer; white-space: nowrap; font-size: 13px; }
.mn-t::after { content: ''; width: 0; height: 0; border-left: 3.5px solid transparent; border-right: 3.5px solid transparent; border-top: 4px solid currentColor; opacity: .8; }
.mn:hover > .mn-t, .mn.ab > .mn-t { background: var(--rs); color: var(--tx); }
.mn-drop { position: absolute; left: 0; top: calc(100% + 6px); min-width: 250px; background: var(--sf); border: 1px solid var(--bd); border-radius: 8px; padding: 6px; z-index: 200; box-shadow: var(--shadow); }
.mn-drop.sub { left: calc(100% + 4px); top: -7px; }
.mn-it { position: relative; display: grid; grid-template-columns: 22px 1fr auto 12px; align-items: center; gap: 6px; height: 32px; padding: 0 10px 0 8px; border-radius: 6px; cursor: pointer; white-space: nowrap; color: var(--tx); font-size: 13px; }
.mn-it:hover { background: var(--rs); }
.mn-it.des { color: var(--txm2); opacity: .55; cursor: default; }
.mn-it.des:hover { background: transparent; }
.mn-ic { display: flex; justify-content: center; color: var(--txm); }
.mn-ic svg { width: 16px; height: 16px; }
.mn-at { color: var(--txm2); font-family: var(--mono); font-size: 11px; padding-left: 16px; }
.mn-sb { color: var(--txm2); }
.mn-sep { height: 1px; background: var(--bd); margin: 4px 2px; }

/* abas de trabalho (como as abas de projeto do LAESTool) */
#abas { height: 40px; flex-shrink: 0; display: flex; align-items: flex-end; gap: 4px; padding: 0 12px; background: var(--tabbg); border-bottom: 1px solid var(--bd); overflow-x: auto; }
.aba { display: flex; align-items: center; gap: 8px; height: 34px; padding: 0 16px; border: 1px solid transparent; border-bottom: none; border-radius: 8px 8px 0 0; background: transparent; color: var(--txm); font-size: 13px; font-weight: 500; cursor: pointer; white-space: nowrap; transition: background .1s, color .1s; }
.aba svg { width: 16px; height: 16px; }
.aba:hover:not(:disabled) { background: var(--tabhover); color: var(--tx); }
.aba.ativa { background: var(--sf); color: var(--tx); border-color: var(--bd); position: relative; top: 1px; }
.aba.ativa::before { content: ''; position: absolute; left: 12px; right: 12px; top: -1px; height: 2px; border-radius: 2px; background: var(--ac2); }
.aba:disabled { opacity: .4; cursor: default; }
.abas-dir { margin-left: auto; align-self: center; display: flex; align-items: center; gap: 6px; }

/* faixa de ferramentas no estilo do Revit: a ação principal de cada grupo em botão grande (ícone e nome embaixo),
   as demais em botões pequenos com o nome ao lado, empilhados de 3 em 3; o nome do grupo fica embaixo */
#ribbon { height: 86px; flex-shrink: 0; display: flex; align-items: stretch; gap: 0; padding: 0 8px; background: var(--sf); border-bottom: 1px solid var(--bd); overflow-x: auto; overflow-y: hidden; }
.rb-group { display: flex; flex-direction: column; padding: 4px 8px 3px; border-right: 1px solid var(--rs); flex-shrink: 0; }
.rb-corpo { flex: 1; min-height: 0; display: flex; flex-direction: column; }
.rb-tools { flex: 1; min-height: 0; display: flex; align-items: center; gap: 4px; }
.rb-lbl { font-size: 10.5px; letter-spacing: .2px; color: var(--txm2); text-align: center; line-height: 1; padding-top: 4px; white-space: nowrap; }
#ribbon .tb-g { height: 62px; min-width: 52px; max-width: 84px; padding: 5px 6px 3px; gap: 4px; justify-content: flex-start; }
#ribbon .tb-g svg { width: 26px; height: 26px; }
#ribbon .tb-g .tb-txt { font-size: 11px; line-height: 1.2; white-space: normal; text-align: center; color: var(--tx); }
#ribbon .rb-pilha { display: grid; grid-auto-flow: column; grid-template-rows: repeat(var(--l, 3), 20px); gap: 1px 2px; align-content: center; }
#ribbon .tb-p { flex-direction: row; justify-content: flex-start; height: 20px; min-width: 0; gap: 6px; padding: 0 9px 0 5px; border-radius: 5px; }
#ribbon .tb-p svg { width: 16px; height: 16px; }
#ribbon .tb-p .tb-txt { font-size: 11.5px; line-height: 1; color: var(--tx); }
#ribbon .tb.lig .tb-txt { color: var(--ac); }
.tb-seta { font-size: 9px; margin-left: 3px; color: var(--txm2); }
/* grupo recolhido (faixa sem espaço): um botão com o nome do grupo, que abre o grupo inteiro logo abaixo */
#ribbon .rb-rec { display: none; flex: 1; flex-direction: column; align-items: center; justify-content: center; gap: 5px; min-width: 60px; padding: 4px 8px; border: 0; border-radius: 6px; background: transparent; color: var(--txm); cursor: pointer; }
#ribbon .rb-rec svg { width: 24px; height: 24px; }
#ribbon .rb-rec .tb-txt { font-size: 11px; color: var(--tx); white-space: nowrap; }
#ribbon .rb-rec:hover, #ribbon .rb-aberto .rb-rec { background: var(--rs); color: var(--tx); }
#ribbon .rb-recolhido .rb-rec { display: flex; }
#ribbon .rb-recolhido .rb-corpo { display: none; }
#ribbon .rb-recolhido.rb-aberto .rb-corpo { display: flex; position: fixed; z-index: 300; height: 82px; padding: 4px 8px 3px; background: var(--sf); border: 1px solid var(--bd); border-radius: 8px; box-shadow: var(--shadow); }
.rb-menu { position: fixed; z-index: 400; min-width: 240px; background: var(--sf); border: 1px solid var(--bd); border-radius: 8px; padding: 6px; box-shadow: var(--shadow); }
/* acesso rápido no topo (abrir, salvar, desfazer, refazer) */
.qat { display: flex; align-items: center; gap: 1px; padding: 0 8px 0 2px; margin-right: 6px; border-right: 1px solid var(--bd); }
.qat-b { width: 30px; height: 30px; border: 0; border-radius: 6px; background: transparent; color: var(--txm); cursor: pointer; display: flex; align-items: center; justify-content: center; }
.qat-b:hover { background: var(--rs); color: var(--tx); }
.qat-b svg { width: 18px; height: 18px; }
.tb { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; min-width: 44px; height: 42px; padding: 0 6px; border: 0; border-radius: 6px; background: transparent; color: var(--txm); font-size: 10px; cursor: pointer; transition: background .12s; flex-shrink: 0; }
.tb svg { width: 20px; height: 20px; flex-shrink: 0; }
.tb .tb-txt { font-size: 10px; line-height: 1; white-space: nowrap; }
.tb:hover:not(:disabled) { background: var(--rs); color: var(--tx); }
.tb.lig { background: var(--acbg); color: var(--ac); }
.tb:disabled { opacity: .35; cursor: default; }
.tb-sep { width: 1px; align-self: stretch; margin: 8px 3px; background: var(--rs); }
.tb-mola { flex: 1; }
#ribbon.rb-aperto1 .rb-group { padding: 4px 4px 3px; }
#ribbon.rb-aperto1 .tb-p { padding: 0 6px 0 4px; }
#ribbon.rb-aperto1 .tb-g { padding: 5px 3px 3px; }
#ribbon.rb-aperto1 .grupo-nav .gnome { min-width: 110px; }
.rb-run { display: flex; align-items: center; gap: 10px; padding-left: 12px; margin-left: auto; position: sticky; right: 0; background: var(--sf); flex-shrink: 0; }
/* topo estreito: o subtítulo da marca sai para os menus e o botão de tema caberem */
@media (max-width: 1500px) { .brand-sub, .brand-sep { display: none; } }
@media (max-width: 1180px) { .brand-name { display: none; } }
.grupo-nav { display: flex; align-items: center; gap: 4px; }
.grupo-nav .gbtn svg { flex-shrink: 0; }
.grupo-nav .gbtn { width: 32px; height: 30px; border: 1px solid var(--ac); border-radius: 6px; background: var(--acbg); color: var(--ac); cursor: pointer; display: flex; align-items: center; justify-content: center; }
.grupo-nav .gbtn svg * { stroke-width: 2.6; }
.grupo-nav .gbtn:hover:not(:disabled) { background: var(--ac); color: #fff; }
.grupo-nav .gbtn:disabled { opacity: .3; cursor: default; border-color: var(--bd); background: var(--bg); color: var(--txm); }
.grupo-nav .gnome { height: 30px; min-width: 130px; padding: 0 10px; border: 1px solid var(--bd); border-radius: 6px; background: var(--bg); color: var(--tx); cursor: pointer; font-family: var(--mono); font-size: 12px; text-align: left; }
.grupo-nav .gnome:hover { border-color: var(--ac); }
.btn-run { height: 38px; padding: 0 20px; border: 0; border-radius: 6px; background: var(--run); color: #fff; font-size: 13px; font-weight: 600; letter-spacing: .3px; cursor: pointer; display: flex; align-items: center; gap: 8px; white-space: nowrap; }
.btn-run:hover { filter: brightness(.92); }
.btn-run svg { width: 16px; height: 16px; }
.btn-sec { height: 32px; padding: 0 12px; border: 1px solid var(--bd); border-radius: 6px; background: var(--sf); color: var(--tx); font-size: 12px; cursor: pointer; display: flex; align-items: center; gap: 6px; white-space: nowrap; }
.btn-sec:hover { border-color: var(--ac); color: var(--ac); }
.btn-sec svg { width: 16px; height: 16px; }

/* corpo: desenho + painel direito */
#centro { flex: 1; display: flex; min-height: 0; overflow: hidden; position: relative; }
#tela { flex: 1; position: relative; min-width: 0; overflow: hidden; background: var(--cvbg); }
#cv { position: absolute; inset: 0; width: 100%; height: 100%; display: block; cursor: none; }
.pill { background: var(--pill); border: 1px solid var(--bd); border-radius: 6px; }
#prompt { position: absolute; top: 10px; left: 50%; transform: translateX(-50%); max-width: calc(100% - 340px); padding: 5px 12px; font-size: 12px; color: var(--txm); z-index: 6; pointer-events: none; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
#prompt b { color: var(--tx); font-weight: 600; }
#coords { position: absolute; left: 12px; bottom: 12px; padding: 5px 10px; font-family: var(--mono); font-size: 11px; color: var(--txm); white-space: pre; z-index: 6; pointer-events: none; }
#snapbox { position: absolute; left: 12px; bottom: 48px; display: flex; align-items: center; gap: 4px; padding: 4px 6px; font-size: 10px; color: var(--txm2); text-transform: uppercase; letter-spacing: .5px; z-index: 6; }
#snapbox .sb-lbl { padding: 0 4px; }
#snapbox button { height: 22px; padding: 0 8px; border: 1px solid var(--bd); border-radius: 4px; background: var(--bg); color: var(--txm); font-size: 10px; letter-spacing: .4px; cursor: pointer; font-family: var(--mono); }
#snapbox button.lig { border-color: var(--ac); color: var(--ac); background: var(--acbg); }
#snapbox select { height: 22px; padding: 0 4px; border-radius: 4px; border: 1px solid var(--bd); background: var(--bg); color: var(--tx); font-family: var(--mono); font-size: 11px; outline: none; cursor: pointer; }
#zoomStack { position: absolute; right: 12px; bottom: 12px; display: flex; flex-direction: column; border-radius: 6px; background: var(--sf); border: 1px solid var(--bd); overflow: hidden; z-index: 6; }
#zoomStack button { width: 32px; height: 30px; border: 0; background: transparent; color: var(--tx); cursor: pointer; display: flex; align-items: center; justify-content: center; font-size: 15px; }
#zoomStack button + button { border-top: 1px solid var(--rs); }
#zoomStack button:hover { background: var(--rs); }
#zoomStack svg { width: 16px; height: 16px; }
#toast { position: absolute; bottom: 14px; left: 50%; transform: translateX(-50%); padding: 6px 14px; border-radius: 8px; font-size: 12px; z-index: 50; pointer-events: none; background: rgba(74,186,124,.14); border: 1px solid rgba(74,186,124,.45); color: var(--gr); max-width: 60%; text-align: center; transition: opacity .25s; }
#toast.aviso { background: rgba(238,177,43,.14); border-color: rgba(238,177,43,.5); color: var(--ac2); }
#toast.erro { background: rgba(239,85,85,.15); border-color: var(--red); color: var(--red); }
#toast.oculto { opacity: 0; }
.cx-prol { position: absolute; z-index: 20; display: flex; align-items: center; gap: 6px; padding: 4px 8px; background: var(--sf); border: 1px solid var(--ac); border-radius: 8px; box-shadow: var(--shadow); font-size: 12px; color: var(--txm); }
.pop-apagar { position: absolute; z-index: 30; display: flex; flex-direction: column; gap: 6px; padding: 10px; min-width: 230px; background: var(--sf); border: 1px solid var(--bd); border-radius: 10px; box-shadow: var(--shadow); }
.pop-apagar .pa-t { font-size: 12px; font-weight: 600; color: var(--tx); }
.pop-apagar .bt { justify-content: flex-start; gap: 8px; display: flex; align-items: center; }
.pop-apagar .bt:hover, .pop-apagar .bt:focus { border-color: var(--red); color: var(--red); }
.pop-apagar .pa-n { font-size: 11px; color: var(--txm2); }
/* correções automáticas */
.corr-it { display: flex; gap: 8px; align-items: flex-start; padding: 5px 4px; border-bottom: 1px solid var(--bd); cursor: pointer; }
.corr-it input { margin-top: 3px; }
.corr-it span { display: flex; flex-direction: column; gap: 1px; font-size: 12px; }
.corr-it small { color: var(--txm2); font-size: 11px; }
.corr-cont { margin: 10px 0 2px; padding: 8px 10px; border-radius: 8px; background: var(--sf2, var(--sf)); border: 1px solid var(--bd); font-size: 12px; }
.corr-pend { padding: 5px 2px; border-bottom: 1px solid var(--bd); font-size: 12px; }
.cx-prol input { width: 70px; height: 24px; text-align: right; }

/* painel direito (como o do LAESTool) */
#rp { width: 304px; flex-shrink: 0; display: flex; flex-direction: column; background: var(--sf); border-left: 1px solid var(--bd); overflow: hidden; }
.rp-tabs { display: flex; border-bottom: 1px solid var(--bd); flex-shrink: 0; }
.rp-tab { flex: 1; height: 40px; border: 0; border-bottom: 2px solid transparent; background: transparent; color: var(--txm); font-size: 12px; font-weight: 500; cursor: pointer; display: flex; align-items: center; justify-content: center; gap: 5px; }
.rp-tab.ativa { color: var(--ac); border-bottom-color: var(--ac); }
.rp-tab:hover:not(.ativa) { background: var(--bg); }
.rp-tab .cont { font-family: var(--mono); font-size: 10px; padding: 0 5px; border-radius: 8px; background: var(--rs); color: var(--txm); }
.rp-tab .cont.erro { background: rgba(255,107,107,.18); color: var(--red); }
#info { flex: 1; overflow-y: auto; padding: 14px; display: flex; flex-direction: column; gap: 12px; }
.card { border: 1px solid var(--bd); border-radius: 8px; padding: 12px; background: transparent; }
.card-t { font-weight: 600; color: var(--tx); margin-bottom: 8px; display: flex; align-items: center; gap: 8px; font-size: 13px; }
.sgrid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 10px; }
.sl { font-size: 9px; color: var(--txm2); letter-spacing: 1.2px; text-transform: uppercase; }
.sv { font-size: 20px; font-weight: 600; font-family: var(--mono); line-height: 1.2; color: var(--ac); }
.sv.gold { color: var(--ac2); } .sv.gr { color: var(--gr); } .sv.red { color: var(--red); } .sv.pur { color: var(--pur); }
.sinfo { font-family: var(--mono); font-size: 10px; color: var(--txm2); margin-top: 8px; }
.vazio { border: 1px dashed var(--bd); border-radius: 8px; padding: 18px 16px; color: var(--txm); font-size: 12px; line-height: 1.55; }
.vazio b { display: block; color: var(--tx); margin-bottom: 4px; }
.steps-t { font-size: 9px; letter-spacing: 1.2px; text-transform: uppercase; color: var(--txm2); margin: 2px 0 2px; }
.steps { display: flex; flex-direction: column; gap: 5px; }
.step { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border-radius: 6px; color: var(--txm2); font-size: 12px; cursor: pointer; border: 0; background: transparent; text-align: left; }
.step:hover { background: var(--rs); }
.step.cur { background: var(--acbg); color: var(--tx); }
.step.done { color: var(--txm); }
.step-n { width: 20px; height: 20px; border-radius: 50%; background: var(--rs); color: var(--txm2); display: flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 600; flex-shrink: 0; }
.step.cur .step-n { background: var(--ac); color: #fff; }
.step.done .step-n { background: var(--gr); color: #fff; }
table.mini { width: 100%; border-collapse: collapse; font-size: 12px; }
table.mini td { padding: 5px 2px; border-bottom: 1px solid var(--rs); vertical-align: top; }
table.mini td:first-child { color: var(--txm); width: 44%; }
table.mini td:last-child { font-family: var(--mono); font-size: 11.5px; }
#info .nota { color: var(--txm2); font-size: 11px; }
.selo { display: inline-block; padding: 1px 8px; border-radius: 10px; font-size: 10px; font-weight: 600; letter-spacing: .4px; text-transform: uppercase; font-family: var(--mono); }
.selo.ok { color: var(--gr); background: rgba(63,191,106,.14); }
.selo.aviso { color: var(--ac2); background: rgba(238,177,43,.14); }
.selo.erro { color: var(--red); background: rgba(255,107,107,.15); }
.selo.info { color: var(--ac); background: var(--acbg); }
ul.msgs { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 4px; }
ul.msgs li { padding: 6px 8px 6px 26px; position: relative; border-radius: 6px; background: var(--bg); font-size: 12px; line-height: 1.45; border-left: 2px solid var(--bd); }
ul.msgs li::before { position: absolute; left: 8px; top: 6px; font-weight: 700; font-family: var(--mono); }
ul.msgs li.erro { border-left-color: var(--red); } ul.msgs li.erro::before { content: '✕'; color: var(--red); }
ul.msgs li.aviso { border-left-color: var(--ac2); } ul.msgs li.aviso::before { content: '!'; color: var(--ac2); left: 11px; }
ul.msgs li.info { border-left-color: var(--ac); } ul.msgs li.info::before { content: 'i'; color: var(--ac); left: 11px; font-style: italic; }
ul.msgs li.clic { cursor: pointer; } ul.msgs li.clic:hover { background: var(--rs); }

/* ================= paletas e barras flutuantes ================= */
.paleta, .barra-flut { position: absolute; z-index: 40; background: var(--sf); border: 1px solid var(--bd); border-radius: 10px; box-shadow: var(--shadow); overflow: hidden; }
.pal-tit, .bf-tit { display: flex; align-items: center; height: 32px; padding: 0 6px 0 12px; border-bottom: 1px solid var(--bd); cursor: move; font-size: 12px; font-weight: 600; color: var(--tx); }
.pal-tit span, .bf-tit span { flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pal-x { width: 24px; height: 24px; border: 0; border-radius: 5px; background: transparent; color: var(--txm2); cursor: pointer; font-size: 13px; }
.pal-x:hover { color: var(--red); background: var(--rs); }
.pal-itens { padding: 6px; max-height: 70vh; overflow: auto; }
.pal-it { display: grid; grid-template-columns: 6px 20px 1fr; align-items: center; gap: 8px; width: 100%; height: 32px; padding: 0 8px; border: 0; border-radius: 6px; background: transparent; color: var(--tx); text-align: left; cursor: pointer; font-size: 12.5px; }
.pal-it:hover:not(:disabled) { background: var(--rs); }
.pal-it:disabled { opacity: .4; cursor: default; }
.pal-it svg { width: 18px; height: 18px; color: var(--txm); }
.pal-it.ativo { background: var(--acbg); color: var(--ac); }
.pal-it.ativo .pal-mk { width: 4px; height: 16px; border-radius: 2px; background: var(--ac); }
.pal-sep { height: 1px; background: var(--bd); margin: 4px 6px; }
.bf-corpo { display: flex; align-items: center; gap: 6px; padding: 8px 10px; flex-wrap: wrap; font-size: 12px; color: var(--txm); }
.bf-corpo .tb { height: 34px; min-width: 34px; flex-direction: row; gap: 6px; padding: 0 8px; }
.bf-corpo .tb .tb-txt { font-size: 12px; }
.bf-corpo label { display: inline-flex; align-items: center; gap: 5px; }

/* ================= diálogos (modais do LAESTool) ================= */
.dlg-fundo { position: fixed; inset: 0; z-index: 300; background: rgba(4,12,24,.55); backdrop-filter: blur(2px); }
html.light .dlg-fundo { background: rgba(28,36,49,.35); }
.dlg-livre { position: fixed; inset: 0; z-index: 300; pointer-events: none; }
.dlg-livre .dlg { pointer-events: auto; }
.dlg { position: fixed; background: var(--sf); border: 1px solid var(--bd); border-radius: 12px; box-shadow: var(--shadow); display: flex; flex-direction: column; max-height: 94vh; max-width: 97vw; overflow: hidden; color: var(--tx); }
.dlg-tit { display: flex; align-items: center; gap: 10px; min-height: 52px; padding: 10px 10px 10px 18px; border-bottom: 1px solid var(--bd); cursor: move; flex: none; }
.dlg-ic img { height: 26px; display: block; }
.dlg-txt { flex: 1; font-size: 15px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dlg-x { width: 32px; height: 32px; border: 0; border-radius: 6px; background: transparent; color: var(--txm2); font-size: 18px; cursor: pointer; }
.dlg-x:hover { color: var(--tx); background: var(--rs); }
.dlg-max { font-size: 16px; }
/* alças de redimensionar (W.redimensionavel): faixas finas nas bordas e quadrados nos cantos */
.dlg-rz { position: absolute; z-index: 20; }
.dlg-rz-n { top: 0; left: 10px; right: 10px; height: 6px; cursor: ns-resize; }
.dlg-rz-s { bottom: 0; left: 10px; right: 10px; height: 6px; cursor: ns-resize; }
.dlg-rz-e { right: 0; top: 10px; bottom: 10px; width: 6px; cursor: ew-resize; }
.dlg-rz-w { left: 0; top: 10px; bottom: 10px; width: 6px; cursor: ew-resize; }
.dlg-rz-ne { top: 0; right: 0; width: 12px; height: 12px; cursor: nesw-resize; }
.dlg-rz-nw { top: 0; left: 0; width: 12px; height: 12px; cursor: nwse-resize; }
.dlg-rz-se { bottom: 0; right: 0; width: 12px; height: 12px; cursor: nwse-resize; }
.dlg-rz-sw { bottom: 0; left: 0; width: 12px; height: 12px; cursor: nesw-resize; }
.dlg-corpo { position: relative; padding: 16px 18px; overflow: auto; flex: 1; font-size: 12.5px; }
.dlg-rod { display: flex; align-items: center; gap: 8px; padding: 12px 18px; border-top: 1px solid var(--bd); flex: none; }
.dlg-rod .esp { flex: 1; }
.bt { min-width: 92px; height: 34px; padding: 0 16px; border: 1px solid var(--bd); border-radius: 6px; background: var(--sf); color: var(--tx); font-size: 12.5px; font-weight: 500; cursor: pointer; }
.bt:hover:not(:disabled) { background: var(--rs); }
.bt.pri { background: var(--ac); border-color: var(--ac); color: #fff; }
.bt.pri:hover:not(:disabled) { background: var(--ac); filter: brightness(.92); }
.bt:focus-visible { outline: 2px solid var(--ac); outline-offset: 2px; }
.bt:disabled { opacity: .45; cursor: default; }
.ajuda-q { position: absolute; right: 14px; top: 12px; width: 22px; height: 22px; border-radius: 50%; border: 1px solid var(--bd); background: var(--bg); color: var(--ac); font-weight: 700; font-size: 12px; cursor: pointer; padding: 0; z-index: 2; }
.ajuda-q:hover { border-color: var(--ac); }
.msg-ic { float: left; margin: 2px 14px 8px 0; color: var(--ac); }
.msg-ic svg { width: 30px; height: 30px; }
.msg-txt { overflow: hidden; padding-top: 4px; line-height: 1.55; color: var(--tx); }

/* conteúdo de diálogos (contrato dos módulos dlg_*) */
.w-linha { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.w-col { display: flex; flex-direction: column; gap: 6px; }
.w-grade2 { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 18px; }
.w-sep { height: 1px; background: var(--bd); margin: 10px 0; border: 0; }
.w-vsep { width: 1px; align-self: stretch; background: var(--bd); margin: 0 8px; }
.w-faixa { font-size: 9.5px; letter-spacing: 1.2px; text-transform: uppercase; color: var(--txm2); font-weight: 600; margin: 12px 0 6px; padding-bottom: 4px; border-bottom: 1px solid var(--rs); }
.w-info { background: var(--acbg); border: 1px solid var(--bd); border-left: 3px solid var(--ac2); border-radius: 6px; padding: 8px 10px; color: var(--txm); line-height: 1.5; }
.w-info b { display: block; color: var(--tx); margin-bottom: 2px; }
.w-quadro { background: var(--cvbg); border: 1px solid var(--bd); border-radius: 8px; overflow: hidden; }
.w-campo { display: inline-flex; align-items: center; gap: 8px; margin: 3px 0; }
.w-rot { white-space: nowrap; font-size: 12px; color: var(--txm); }
.w-un { color: var(--txm2); font-size: 11px; font-family: var(--mono); }
.w-in { height: 30px; padding: 0 9px; border: 1px solid var(--bd); border-radius: 6px; background: var(--bg); color: var(--tx); font-size: 12px; outline: none; }
.w-in.num { text-align: right; font-family: var(--mono); }
.w-in:focus { border-color: var(--ac); }
.w-in[readonly], .w-in:disabled { color: var(--txm2); background: var(--sf); border-style: dashed; }
select.w-in { padding: 0 6px; cursor: pointer; }
select.w-in option { background: var(--sf); color: var(--tx); }
.w-chk { display: inline-flex; align-items: center; gap: 7px; margin: 3px 0; cursor: pointer; color: var(--tx); font-size: 12.5px; }
.w-chk input { accent-color: var(--ac); }
.w-chk.neg, .neg { font-weight: 600; }
table.w-tab { border-collapse: separate; border-spacing: 0; width: 100%; font-size: 12px; }
table.w-tab th { font-size: 9.5px; letter-spacing: .9px; text-transform: uppercase; color: var(--txm2); font-weight: 600; text-align: left; padding: 7px 8px; border-bottom: 1px solid var(--bd); white-space: nowrap; background: var(--sf); position: sticky; top: 0; z-index: 1; }
table.w-tab td { padding: 5px 8px; border-bottom: 1px solid var(--rs); white-space: nowrap; height: 32px; }
table.w-tab td.n, table.w-tab th.n { text-align: right; font-family: var(--mono); }
table.w-tab tr.sel td { background: var(--acbg) !important; }
table.w-tab tr.clic { cursor: pointer; }
table.w-tab tr.clic:hover td { background: var(--rs); }
table.w-tab td input.w-in { width: 100%; height: 26px; background: transparent; border-color: transparent; }
table.w-tab td input.w-in:hover { border-color: var(--bd); }
table.w-tab td input.w-in:focus { border-color: var(--ac); background: var(--bg); }
table.w-tab td select.w-in { width: 100%; height: 26px; background: transparent; }
table.w-tab td.cinza { background: var(--rs); }
.w-rolagem { overflow: auto; }
.t-erro { color: var(--red); } .t-aviso { color: var(--ac2); } .t-ok { color: var(--gr); }
.nota { color: var(--txm2); font-size: 11.5px; line-height: 1.5; }

/* janela da parede (bloco NBR 6120): cartões com o desenho do bloco, chips de espessura e reboco */
.par { display: flex; flex-direction: column; gap: 10px; }
.par-modo { display: flex; gap: 14px; }
.par-cards { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
.par-card { display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 8px 4px 7px; background: var(--rs); border: 1px solid var(--bd); border-radius: 8px; color: var(--txm); font: inherit; font-size: 11.5px; cursor: pointer; }
.par-card:hover { border-color: var(--ac); color: var(--tx); }
.par-card.on { border: 2px solid var(--ac); padding: 7px 3px 6px; color: var(--tx); background: var(--acbg); font-weight: 600; }
.par-lin { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.par-rot { color: var(--txm); font-size: 12px; min-width: 104px; }
.par-chips { display: flex; gap: 5px; flex-wrap: wrap; }
.par-chip { padding: 3px 10px; border: 1px solid var(--bd); border-radius: 12px; background: transparent; color: var(--txm); font: inherit; font-size: 12px; cursor: pointer; }
.par-chip:hover { border-color: var(--ac); color: var(--tx); }
.par-chip.on { background: var(--acbg); border-color: var(--ac); color: var(--ac); font-weight: 600; }
.par-ex { color: var(--txm2); font-size: 11.5px; margin: -4px 0 0 114px; }
.par-bloco { display: flex; flex-direction: column; gap: 10px; }
.par-bloco.par-des { opacity: .5; }
.par-res { padding: 9px 12px; border-radius: 8px; background: var(--rs); border: 1px solid var(--bd); font-size: 13px; color: var(--txm); }
.par-res b { color: var(--tx); font-size: 15px; }
tr.par-alt td { background: var(--acbg); }

/* widget do ponto fixo (9 marcas) */
.pfixo { position: relative; width: 56px; height: 56px; background: var(--bg); border: 1px solid var(--bd); border-radius: 6px; }
.pfixo svg { position: absolute; inset: 0; }

/* relatórios */
.abas-dlg { display: flex; gap: 2px; border-bottom: 1px solid var(--bd); margin-bottom: 10px; }
.abas-dlg button { border: 0; border-bottom: 2px solid transparent; background: transparent; color: var(--txm); padding: 8px 12px; cursor: pointer; font-size: 12px; font-weight: 500; }
.abas-dlg button.ativa { color: var(--ac); border-bottom-color: var(--ac); }
.abas-dlg button:hover:not(.ativa) { color: var(--tx); }
.cards { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; margin-bottom: 8px; }
.cards .card { display: flex; flex-direction: column; gap: 2px; }
.cards .card b { font-size: 22px; font-family: var(--mono); color: var(--ac); }
.cards .card span { font-size: 10px; letter-spacing: 1px; text-transform: uppercase; color: var(--txm2); }
.mem h4 { margin: 14px 0 6px; font-size: 9.5px; letter-spacing: 1.2px; text-transform: uppercase; color: var(--txm2); }
.mem table.w-tab td { white-space: normal; height: auto; padding: 6px 8px; }
.mem table.w-tab td:first-child { width: 40%; color: var(--txm); }
.mem table.w-tab td:last-child { font-family: var(--mono); font-size: 11.5px; }
.mem .nota { margin: 4px 2px 8px; }
.diag { background: var(--cvbg); border: 1px solid var(--bd); border-radius: 8px; margin-bottom: 8px; padding: 6px 8px; }
.diag .dtit { font-size: 10px; letter-spacing: .8px; text-transform: uppercase; color: var(--txm2); }
.diag svg { width: 100%; height: auto; display: block; }
.diag .dm { fill: rgba(251,191,36,.16); stroke: #FBBF24; stroke-width: 1.4; }
.diag .dv { fill: rgba(52,211,153,.14); stroke: #34D399; stroke-width: 1.4; }
html.light .diag .dm { fill: rgba(154,100,0,.12); stroke: #9a6400; }
html.light .diag .dv { fill: rgba(13,143,99,.12); stroke: #0D8F63; }
.diag .eixo { stroke: var(--txm2); stroke-width: 1; }
.diag .apoio { fill: var(--txm); }
.diag text { font-size: 11px; fill: var(--tx); font-family: var(--mono); }
.diag text.ap { fill: var(--txm2); font-size: 10px; }

/* legenda de isovalores */
#legenda { position: absolute; left: 50%; transform: translateX(-50%); bottom: 12px; height: 22px; display: flex; z-index: 7; border-radius: 6px; overflow: hidden; border: 1px solid var(--bd); box-shadow: var(--shadow); min-width: 520px; }
#legenda div { flex: 1; display: flex; align-items: center; justify-content: center; font-family: var(--mono); font-weight: 600; font-size: 10px; padding: 0 4px; }
#legenda .un { flex: none; padding: 0 10px; background: var(--sf); color: var(--txm); }

/* ================= painel do pilar (edição direta e novo pilar) ================= */
.pp { display: flex; flex-direction: column; gap: 12px; }
.pp-cab { display: flex; align-items: center; gap: 6px; }
.pp-nome { flex: 1; min-width: 0; height: 34px; font-size: 15px; font-weight: 600; font-family: var(--mono); }
.pp-badge { display: inline-flex; align-items: center; gap: 6px; padding: 0 10px; height: 30px; border-radius: 6px; background: var(--acbg); color: var(--ac); font-weight: 600; font-size: 12px; white-space: nowrap; }
.pp-badge svg { width: 16px; height: 16px; }
.pp-ic { width: 32px; height: 32px; flex-shrink: 0; border: 1px solid var(--bd); border-radius: 6px; background: var(--bg); color: var(--txm); cursor: pointer; display: flex; align-items: center; justify-content: center; }
.pp-ic:hover { border-color: var(--ac); color: var(--ac); }
.pp-ic.perigo:hover { border-color: var(--red); color: var(--red); }
.pp-sec { display: flex; flex-direction: column; gap: 8px; padding-top: 10px; border-top: 1px solid var(--rs); }
.pp-tit { font-size: 9.5px; letter-spacing: 1.2px; text-transform: uppercase; color: var(--txm2); font-weight: 600; }
.pp-dim { display: flex; align-items: center; gap: 6px; }
.pp-dim label, .pp-coord label { display: flex; align-items: center; gap: 5px; flex: 1; }
.pp-dim label span, .pp-coord label span { font-size: 12px; color: var(--txm); width: 18px; }
.pp-dim input { width: 100%; min-width: 0; }
.pp-dim em, .pp-coord em { font-style: normal; font-size: 10px; color: var(--txm2); font-family: var(--mono); }
.pp-x { color: var(--txm2); font-size: 12px; }
.pp-chk { font-size: 12px; }
.pp-lances { display: flex; flex-direction: column; gap: 4px; padding: 6px; border: 1px solid var(--rs); border-radius: 6px; background: var(--bg); }
.pp-lance { display: grid; grid-template-columns: 1fr 58px 10px 58px; align-items: center; gap: 4px; }
.pp-lance input { height: 26px; min-width: 0; padding: 0 6px; }
.pp-lnome { font-size: 11.5px; color: var(--tx); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pp-lnome em { font-style: normal; font-size: 9.5px; color: var(--ac2); }
.pp-fixorow { display: flex; gap: 12px; align-items: center; }
.pp-fixo { position: relative; display: grid; grid-template-columns: repeat(3, 28px); grid-template-rows: repeat(3, 28px); flex-shrink: 0; padding: 4px; border-radius: 8px; background: var(--bg); border: 1px solid var(--bd); }
.pp-fixo::before { content: ''; position: absolute; inset: 18px; border: 1.5px solid var(--txm2); border-radius: 2px; background: rgba(157,176,200,.08); pointer-events: none; }
.pp-pf { position: relative; border: 0; background: transparent; cursor: pointer; display: flex; align-items: center; justify-content: center; padding: 0; }
.pp-pf i { width: 8px; height: 8px; border-radius: 50%; background: var(--txm2); transition: transform .1s; }
.pp-pf:hover:not(:disabled) i { background: var(--ac); transform: scale(1.35); }
.pp-pf.sel i { width: 12px; height: 12px; background: var(--ac2); box-shadow: 0 0 0 4px rgba(238,177,43,.25); }
.pp-pf:disabled { cursor: default; }
.novo .pp-fixo .pp-pf i { opacity: .5; }
.pp-coord { flex: 1; display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.pp-coord input { width: 100%; min-width: 0; }
.pp-fnome { font-size: 12px; font-weight: 600; color: var(--ac2); }
.pp-dica { flex: 1; font-size: 11.5px; line-height: 1.5; color: var(--txm); }
.pp-dica b { color: var(--tx); font-weight: 600; }
.pp-grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.pp-grid2 label { display: flex; flex-direction: column; gap: 4px; font-size: 11px; color: var(--txm); }
.pp-grid2 select { width: 100%; }
.pp-pilha { display: flex; flex-direction: column; border: 1px solid var(--rs); border-radius: 6px; overflow: hidden; }
.pp-piso { display: grid; grid-template-columns: 10px 1fr auto; gap: 8px; align-items: center; padding: 5px 8px; font-size: 11.5px; color: var(--txm2); border-top: 1px solid var(--rs); }
.pp-piso:first-child { border-top: 0; }
.pp-piso i { width: 6px; align-self: stretch; margin: -5px 0; border-radius: 2px; }
.pp-piso.tem { color: var(--tx); background: rgba(238,177,43,.06); }
.pp-piso.tem i { background: var(--ac2); }
.pp-piso.fund { background: var(--bg); }
.pp-piso.base i { background: var(--ac2); border-radius: 0 0 3px 3px; }
.pp-piso em { font-style: normal; font-family: var(--mono); font-size: 10.5px; color: var(--txm2); }
.pp-rod { font-size: 11px; color: var(--txm2); padding-top: 8px; border-top: 1px solid var(--rs); }
.pp-rod b { color: var(--tx); font-family: var(--mono); font-weight: 500; }
.pp .w-in { height: 30px; }

/* escada: escolha do tipo */
.esc-tipos { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; }
.esc-div { display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0; }
.esc-cont { display: flex; align-items: center; gap: 4px; padding: 3px 6px; border: 1px solid var(--bd); border-radius: 6px; font-size: 11px; color: var(--txm); }
.esc-cont b { min-width: 18px; text-align: center; color: var(--tx); font-size: 12px; }
.esc-cont .bt { height: 22px; min-width: 22px; padding: 0 4px; }
.esc-tipo { height: 32px; border: 1px solid var(--bd); border-radius: 6px; background: var(--bg); color: var(--txm); cursor: pointer; font-size: 12px; font-weight: 500; }
.esc-tipo:hover { border-color: var(--ac); color: var(--tx); }
.esc-tipo.sel { border-color: var(--ac2); background: rgba(238,177,43,.12); color: var(--ac2); }

.pp-grid2 input, .pp-grid2 .w-in { width: 100%; min-width: 0; }
.pp-grid2 label span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

.esc-giro { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 6px; align-items: center; }
.esc-giro .bt { min-width: 0; padding: 0 6px; height: 30px; font-size: 12px; }
.esc-giro label { grid-column: 1 / -1; display: flex; align-items: center; gap: 6px; font-size: 11px; color: var(--txm); }
.esc-giro label input { width: 90px; }
.esc-giro label em { font-style: normal; color: var(--txm2); }

/* ---------------- aba Pranchas ---------------- */
#pranchas { flex: 1; display: flex; min-width: 0; min-height: 0; background: var(--cvbg); }
/* aba Esforços: obra em 3D com os diagramas (V3D.embutir) e o painel do elemento clicado */
#esf3d { flex: 1; position: relative; min-width: 0; min-height: 0; overflow: hidden; background: var(--cvbg); }
#esf3d .v3d-area { position: absolute; inset: 0; border: 0; border-radius: 0; }
#esf3d .v3d-dica { position: absolute; left: 10px; bottom: 8px; font-size: 11px; color: var(--txm); pointer-events: none; }
.esf-lista { display: flex; flex-direction: column; gap: 2px; max-height: 260px; overflow-y: auto; }
.esf-lin { display: flex; justify-content: space-between; gap: 8px; padding: 4px 8px; border: 1px solid transparent; border-radius: 5px; background: transparent; color: var(--tx); font-size: 12px; cursor: pointer; text-align: left; }
.esf-lin:hover { background: var(--rs); }
.esf-lin.lig { border-color: var(--ac); background: var(--rs); }
.esf-lin b { font-family: var(--mono); font-weight: 600; }
.esf-diag svg { width: 100%; height: auto; }
.pr-lista { width: 300px; flex-shrink: 0; display: flex; flex-direction: column; background: var(--sf); border-right: 1px solid var(--bd); min-height: 0; }
.pr-cab { display: flex; align-items: baseline; justify-content: space-between; padding: 12px 14px 10px; border-bottom: 1px solid var(--bd); font-weight: 600; }
.pr-qt { font: 500 11px var(--mono); color: var(--txm2); }
.pr-rol { flex: 1; overflow-y: auto; padding: 6px 8px 14px; }
.pr-etapa { display: flex; align-items: center; gap: 7px; margin: 12px 4px 5px; font-size: 10.5px; font-weight: 600; letter-spacing: 1.1px; color: var(--txm); text-transform: uppercase; }
.pr-etapa svg { color: var(--ac2); flex-shrink: 0; }
.pr-en { display: inline-grid; place-items: center; min-width: 19px; height: 19px; border-radius: 10px; background: var(--ac2); color: #1a1300; font: 600 11px var(--mono); letter-spacing: 0; }
.pr-item { display: flex; align-items: flex-start; gap: 8px; padding: 7px 8px; margin-left: 12px; border-radius: 7px; border: 1px solid transparent; cursor: pointer; }
.pr-item:hover { background: var(--tabhover); border-color: var(--bd); }
.pr-item.ativo { background: var(--acbg); border-color: var(--ac); }
.pr-item.fora { opacity: .5; }
.pr-item input { margin: 3px 0 0; accent-color: var(--ac); flex-shrink: 0; }
.pr-num { font: 600 12px var(--mono); color: var(--ac); padding-top: 1px; flex-shrink: 0; }
.pr-txt { display: flex; flex-direction: column; min-width: 0; }
.pr-txt b { font-weight: 500; font-size: 12.5px; line-height: 1.3; }
.pr-txt small { color: var(--txm2); font-size: 11px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pr-vazio { padding: 18px 10px; color: var(--txm); }
.pr-avisos { margin: 16px 4px 0; display: flex; flex-direction: column; gap: 6px; }
.pr-avisos div { display: flex; gap: 7px; align-items: flex-start; font-size: 11.5px; color: var(--txm); background: var(--acbg); border-left: 3px solid var(--ac2); border-radius: 5px; padding: 7px 8px; line-height: 1.45; }
.pr-avisos svg { flex-shrink: 0; color: var(--ac2); margin-top: 1px; }
.pr-vista { flex: 1; position: relative; min-width: 0; overflow: hidden; }
.pr-papel { position: absolute; inset: 0; cursor: grab; }
.pr-papel.arrastando { cursor: grabbing; }
.pr-papel svg { display: block; filter: drop-shadow(0 4px 14px rgba(0,0,0,.35)); }
.pr-canvas { display: block; user-select: none; -webkit-user-drag: none; }
.pr-zoom { position: absolute; right: 12px; top: 12px; z-index: 2; display: flex; flex-direction: column; gap: 4px; }
.pr-zoom button, .pr-nav button { width: 32px; height: 32px; display: grid; place-items: center; background: var(--pill); border: 1px solid var(--bd); border-radius: 8px; cursor: pointer; color: var(--tx); }
.pr-zoom button:hover, .pr-nav button:hover { border-color: var(--ac); }
.pr-nav { position: absolute; left: 50%; bottom: 12px; transform: translateX(-50%); z-index: 2; display: flex; align-items: center; gap: 8px; background: var(--pill); border: 1px solid var(--bd); border-radius: 10px; padding: 4px; box-shadow: var(--shadow); max-width: calc(100% - 40px); }
.pr-nav button { font-size: 18px; line-height: 1; }
.pr-nav span { font-size: 12px; padding: 0 6px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rb-campo { display: flex; flex-direction: column; gap: 3px; font-size: 10px; color: var(--txm); padding: 0 4px; }
.rb-campo select { width: 70px; }
#prImpressao { display: none; }
@media print {
  body > *:not(#prImpressao) { display: none !important; }
  html, body { height: auto; overflow: visible; background: #fff; }
  #prImpressao { display: block; }
  /* Ctrl+P na página: sai só este aviso (as pranchas saem pelo Baixar projeto) */
  #prImpressao:empty::before { content: 'Xtruct: para imprimir as pranchas use Pranchas > Baixar projeto (PDF).'; display: block; padding: 40px; font: 16px Arial, sans-serif; color: #000; }
  .pr-folha { page-break-after: always; break-after: page; }
  .pr-folha:last-child { page-break-after: auto; break-after: auto; }
  .pr-folha svg { display: block; }
}
.pr-calc { padding: 0 14px 8px; font: 500 10.5px var(--mono); color: var(--txm2); border-bottom: 1px solid var(--bd); }
/* menu de escala de um desenho da prancha (clique no desenho) */
.pr-esc { position: fixed; z-index: 9999; min-width: 220px; background: var(--sf); border: 1px solid var(--bd); border-radius: 10px; box-shadow: var(--shadow); padding: 6px; display: flex; flex-direction: column; gap: 2px; }
.pr-esc-t { font-size: 11px; font-weight: 600; color: var(--txm2); padding: 4px 8px 6px; }
.pr-esc button { text-align: left; background: none; border: 0; border-radius: 6px; padding: 6px 8px; font: inherit; font-size: 12.5px; color: var(--tx); cursor: pointer; }
.pr-esc button:hover { background: var(--tabhover); }
.pr-esc button.sel { background: var(--acbg); color: var(--ac); font-weight: 600; }
.pr-esc button small { color: var(--txm2); font-weight: 400; }
.pr-esc hr { border: 0; border-top: 1px solid var(--bd); margin: 4px 0; }

/* ================= faixa de ferramentas e painel lateral ================= */
/* abas, barra de ferramentas e painel da direita num tom próprio: azul mais claro no tema escuro, cinza no claro */
:root { --tbz: #15375a; --tbz2: #10304f; --tbzh: #1f4a75; --tbzbd: #25527f; --tbzlig: #1d4c86; }
html.light { --tbz: #e9ebef; --tbz2: #dde0e6; --tbzh: #d5d9e0; --tbzbd: #c7ccd5; --tbzlig: #d9e2f7; }
#abas { background: var(--tbz2); border-bottom-color: var(--tbzbd); }
.aba.ativa { background: var(--tbz); border-color: var(--tbzbd); }
#ribbon { background: var(--tbz); border-bottom-color: var(--tbzbd); }
#ribbon .rb-recolhido.rb-aberto .rb-corpo { background: var(--tbz); border-color: var(--tbzbd); }
#ribbon .tb:hover:not(:disabled), #ribbon .rb-rec:hover { background: var(--tbzh); }
#ribbon .tb.lig { background: var(--tbzlig); }
#rp { background: var(--tbz); border-left-color: var(--tbzbd); }