/* =====================================================================
   InfraMap — app (explorador | mapa | propriedades)
   ===================================================================== */
body.app-page{ overflow:hidden; }
.muted{ color:var(--text-faint); }
.danger-text{ color:var(--danger) !important; }
.danger-text:hover{ background:var(--danger-soft) !important; }

/* ---------- Tela de carregamento ---------- */
.boot-screen{ position:fixed; inset:0; z-index:2000; display:flex; flex-direction:column; gap:18px; align-items:center; justify-content:center; background:var(--bg); }
.boot-screen .brand-mark{ width:40px; height:40px; border-radius:10px; }
.boot-screen .brand-mark svg{ width:24px; height:24px; }
.boot-bar{ width:120px; height:3px; border-radius:2px; background:var(--border); overflow:hidden; }
.boot-bar i{ display:block; width:40%; height:100%; background:var(--accent); border-radius:2px; animation:boot 1s ease-in-out infinite; }
@keyframes boot{ 0%{ transform:translateX(-100%);} 100%{ transform:translateX(260%);} }
.boot-error{ display:flex; flex-direction:column; align-items:center; gap:8px; max-width:420px; text-align:center; padding:0 16px; color:var(--text-muted); }
.boot-error strong{ color:var(--text); font-size:15px; }
body.is-booting .app{ visibility:hidden; }

/* ---------- Estrutura ---------- */
.app{ display:grid; grid-template-rows:38px minmax(0,1fr) 24px; height:100vh; height:100dvh; }

.titlebar{ display:flex; align-items:center; gap:4px; padding:0 8px; background:var(--surface); border-bottom:1px solid var(--border); z-index:40; min-width:0; }
.titlebar .brand{ margin-right:2px; padding:0 4px; }
.titlebar .brand-mark{ width:22px; height:22px; border-radius:6px; }
.titlebar .brand-mark svg{ width:13px; height:13px; }
.titlebar .brand-name{ font-size:13.5px; }
.titlebar-divider{ width:1px; height:18px; background:var(--border); margin:0 6px; flex-shrink:0; }
.titlebar-spacer{ flex:1; }

.crumbs{ display:flex; align-items:center; min-width:0; overflow:hidden; margin-left:6px; }
.crumb{ display:inline-flex; align-items:center; gap:5px; height:24px; padding:0 6px; border:none; background:none; border-radius:5px; color:var(--text-muted); font-size:12.5px; white-space:nowrap; min-width:0; }
.crumb span{ overflow:hidden; text-overflow:ellipsis; max-width:220px; }
.crumb .fi{ width:14px; height:14px; flex-shrink:0; }
.crumb:hover{ background:var(--surface-alt); color:var(--text); }
.crumb.is-current{ color:var(--text); font-weight:500; }
span.crumb{ cursor:default; }
span.crumb:hover{ background:none; }
.crumb-sep{ display:flex; color:var(--text-faint); flex-shrink:0; }
.crumb-sep svg{ width:12px; height:12px; }

.user-menu{ position:relative; }
.user-btn{ display:flex; align-items:center; gap:7px; height:28px; padding:0 8px 0 3px; border:none; border-radius:999px; background:transparent; color:var(--text); }
.user-btn:hover{ background:var(--surface-alt); }
.avatar{ width:24px; height:24px; border-radius:50%; background:var(--accent); color:var(--accent-contrast); font-size:10.5px; font-weight:600; display:flex; align-items:center; justify-content:center; letter-spacing:.02em; }
.user-name{ font-size:12.5px; font-weight:500; max-width:120px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.dropdown{ position:absolute; right:0; top:calc(100% + 6px); min-width:230px; background:var(--surface-raised); border:1px solid var(--border); border-radius:9px; box-shadow:var(--shadow-lg); padding:5px; z-index:60; animation:pop-in .12s ease-out; }
.dropdown-head{ padding:8px 10px 10px; border-bottom:1px solid var(--border); margin-bottom:4px; display:flex; flex-direction:column; min-width:0; }
.dropdown-head strong{ font-size:13px; }
.dropdown-head small{ color:var(--text-muted); font-size:12px; overflow:hidden; text-overflow:ellipsis; }
.dropdown-item{ display:flex; align-items:center; gap:9px; width:100%; height:32px; padding:0 10px; border:none; background:none; border-radius:6px; color:var(--text); text-align:left; }
.dropdown-item svg{ width:15px; height:15px; color:var(--text-muted); }
.dropdown-item:hover,.dropdown-item:focus-visible{ background:var(--surface-alt); outline:none; }

.workbench{ --left-w:280px; --right-w:340px; display:grid; grid-template-columns:var(--left-w) 0 minmax(0,1fr) 0 var(--right-w); min-height:0; position:relative; }
.workbench.left-off{ grid-template-columns:0 0 minmax(0,1fr) 0 var(--right-w); }
.workbench.right-off{ grid-template-columns:var(--left-w) 0 minmax(0,1fr) 0 0; }
.workbench.left-off.right-off{ grid-template-columns:0 0 minmax(0,1fr) 0 0; }
.workbench.left-off .side-left,.workbench.left-off [data-resize="left"],
.workbench.right-off .side-right,.workbench.right-off [data-resize="right"]{ visibility:hidden; overflow:hidden; }

.side{ display:flex; flex-direction:column; min-height:0; min-width:0; background:var(--surface); overflow:hidden; }
.side-left{ border-right:1px solid var(--border); background:var(--surface-alt); }
.side-right{ border-left:1px solid var(--border); }

.resizer{ position:relative; z-index:20; cursor:col-resize; }
.resizer::after{ content:""; position:absolute; top:0; bottom:0; left:-3px; width:6px; transition:background .15s .1s; }
.resizer:hover::after,body.is-resizing .resizer::after{ background:var(--accent); opacity:.6; }
body.is-resizing{ cursor:col-resize; user-select:none; }
body.is-resizing .map-area{ pointer-events:none; }

.statusbar{ display:flex; align-items:center; gap:14px; padding:0 10px; background:var(--surface); border-top:1px solid var(--border); font-size:11.5px; color:var(--text-muted); z-index:40; white-space:nowrap; overflow:hidden; }
.sb-item{ display:inline-flex; align-items:center; gap:6px; }
.sb-spacer{ flex:1; }
.sb-dot{ width:7px; height:7px; border-radius:50%; background:var(--success); flex-shrink:0; }
#sb-conn.is-error .sb-dot{ background:var(--danger); }

/* ---------- Cabeçalho de painel ---------- */
.pane-header{ display:flex; align-items:center; height:35px; padding:0 6px 0 14px; flex-shrink:0; }
.pane-title{ font-size:11px; font-weight:600; letter-spacing:.07em; text-transform:uppercase; color:var(--text-muted); flex:1; }
.pane-actions{ display:flex; gap:1px; opacity:.85; }
.pane-actions .icon-btn{ width:24px; height:24px; border-radius:5px; }
.pane-actions .icon-btn svg{ width:15px; height:15px; }
.side-left:hover .pane-actions{ opacity:1; }
.icon-btn.is-spinning svg{ animation:spin .8s linear infinite; }

/* =====================================================================
   Árvore (explorador)
   ===================================================================== */
.tree{ flex:1; overflow:auto; outline:none; padding-bottom:4px; user-select:none; --row-h:24px; --indent:12px; }
.tree:focus-visible{ outline:none; }
.tree-tail{ min-height:40px; }
.tree.is-drop-root{ background:color-mix(in srgb, var(--accent) 7%, transparent); box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--accent) 40%, transparent); }

.tree-row{ position:relative; display:flex; align-items:center; height:var(--row-h); padding-left:8px; padding-right:4px; color:var(--text); cursor:pointer; white-space:nowrap; font-size:13px; border:1px solid transparent; }
.tree-row:hover{ background:var(--row-hover); }
.tree-row.is-selected{ background:var(--row-selected); }
.tree:focus .tree-row.is-focused{ border-color:var(--row-focus); }
.tree:focus .tree-row.is-selected.is-focused{ background:var(--row-selected); }
.tree-row.is-dragging{ opacity:.45; }
.tree-row.is-drop-target{ background:color-mix(in srgb, var(--accent) 11%, transparent); }

.tr-indent{ display:flex; align-self:stretch; flex-shrink:0; }
.tr-guide{ width:var(--indent); position:relative; }
.tr-guide::before{ content:""; position:absolute; left:7px; top:0; bottom:0; border-left:1px solid transparent; }
.tree:hover .tr-guide::before{ border-left-color:var(--border); }
.tr-guide.is-active::before{ border-left-color:var(--border-strong) !important; }
.tree:hover .tr-guide.is-active::before{ border-left-color:var(--text-faint) !important; }

.tr-twistie{ width:16px; height:16px; display:flex; align-items:center; justify-content:center; flex-shrink:0; color:var(--text-muted); }
.tr-chevron{ display:flex; transition:transform .1s; }
.tr-chevron svg{ width:14px; height:14px; }
.tr-chevron.is-open{ transform:rotate(90deg); }
.tr-icon{ width:16px; height:16px; display:flex; align-items:center; justify-content:center; margin:0 6px 0 2px; flex-shrink:0; }
.tr-icon .fi{ width:16px; height:16px; }
.tr-label{ flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; }
.tr-badge{ display:flex; align-items:center; margin-left:4px; color:var(--accent); flex-shrink:0; }
.tr-badge svg{ width:13px; height:13px; }
.tree-row:hover .tr-badge.is-on,.tree-row.is-selected .tr-badge.is-on{ display:none; }
.mini-spin{ display:inline-block; vertical-align:-1px; flex-shrink:0; width:11px; height:11px; border:1.6px solid var(--accent); border-right-color:transparent; border-radius:50%; animation:spin .7s linear infinite; }

.tr-actions{ display:none; align-items:center; gap:1px; margin-left:4px; flex-shrink:0; }
.tree-row:hover .tr-actions,.tree-row.is-selected .tr-actions{ display:flex; }
.tr-act{ width:22px; height:20px; display:flex; align-items:center; justify-content:center; border:none; border-radius:4px; background:transparent; color:var(--text-muted); padding:0; }
.tr-act svg{ width:14px; height:14px; }
.tr-act:hover{ background:color-mix(in srgb, var(--text) 10%, transparent); color:var(--text); }
.tr-act.danger:hover{ background:var(--danger-soft); color:var(--danger); }

.tr-edit{ position:relative; flex:1; min-width:0; }
.tr-input{ width:100%; height:20px; padding:0 4px; border:1px solid var(--accent); border-radius:2px; background:var(--surface); color:var(--text); font-size:13px; outline:none; }
.tr-input.is-invalid{ border-color:var(--danger); }
.tr-input-msg{ position:absolute; left:0; right:0; top:21px; z-index:5; padding:4px 7px; font-size:12px; line-height:1.35; white-space:normal; background:var(--danger-soft); color:var(--danger); border:1px solid var(--danger); border-top:none; }
.tree-row.is-editing{ background:var(--row-selected); cursor:default; }

.tree-empty{ flex:1; display:flex; flex-direction:column; align-items:center; text-align:center; padding:40px 22px; gap:12px; color:var(--text-muted); }
.tree-empty p{ margin:0; font-size:13px; }
.tree-empty-acoes{ display:flex; gap:6px; flex-wrap:wrap; justify-content:center; }
.tree-empty-acoes svg{ width:14px; height:14px; }
.tree-empty .tree-empty-imp{ max-width:250px; font-size:12px; color:var(--text-faint); line-height:1.45; }
.tree-empty-imp[hidden]{ display:none; }
.tree-empty strong{ display:block; color:var(--text); margin-bottom:3px; }
.tree-empty-ico{ width:48px; height:48px; border-radius:12px; background:var(--surface); border:1px solid var(--border); display:flex; align-items:center; justify-content:center; }
.tree-empty-ico::before{ content:""; width:26px; height:22px; background:#e0a73f; border-radius:3px 3px 4px 4px; clip-path:polygon(0 0,40% 0,50% 18%,100% 18%,100% 100%,0 100%); }

/* ---------- Menu de contexto ---------- */
.context-menu{ position:fixed; z-index:1200; min-width:220px; padding:4px; background:var(--surface-raised); border:1px solid var(--border); border-radius:8px; box-shadow:var(--shadow-lg); animation:pop-in .1s ease-out; }
.cm-item{ display:flex; align-items:center; gap:8px; width:100%; height:28px; padding:0 8px; border:none; background:none; border-radius:5px; color:var(--text); font-size:13px; text-align:left; }
.cm-item:hover,.cm-item:focus-visible{ background:var(--accent); color:var(--accent-contrast); outline:none; }
.cm-item:hover .cm-ico,.cm-item:focus-visible .cm-ico,.cm-item:hover kbd,.cm-item:focus-visible kbd{ color:inherit; }
.cm-item.danger{ color:var(--danger); }
.cm-item.danger:hover,.cm-item.danger:focus-visible{ background:var(--danger); color:var(--danger-contrast); }
.cm-item[disabled]{ opacity:.45; pointer-events:none; }
.cm-ico{ width:16px; display:flex; color:var(--text-muted); }
.cm-ico svg{ width:15px; height:15px; }
.cm-label{ flex:1; }
.cm-item kbd{ font-family:var(--font-mono); font-size:11px; color:var(--text-faint); }
.cm-sep{ height:1px; background:var(--border); margin:4px 6px; }

/* =====================================================================
   Mapa
   ===================================================================== */
.map-area{ position:relative; min-width:0; min-height:0; background:var(--surface-alt); }
.map{ position:absolute; inset:0; }
.map-area.is-drop::after{ content:"Solte para visualizar no mapa (sem enviar)"; position:absolute; inset:10px; border:2px dashed var(--accent); border-radius:12px; background:color-mix(in srgb, var(--accent) 10%, transparent); display:flex; align-items:center; justify-content:center; color:var(--accent); font-weight:600; z-index:30; pointer-events:none; }

.map-toolbar{ position:absolute; top:10px; left:10px; z-index:10; display:flex; gap:6px; }
.map-tool{ display:inline-flex; align-items:center; gap:6px; height:34px; padding:0 12px; border:1px solid var(--border); border-radius:8px; background:var(--surface); color:var(--text); font-size:12.5px; font-weight:500; box-shadow:var(--shadow); }
.map-tool svg{ width:16px; height:16px; color:var(--text-muted); }
.map-tool:hover{ background:var(--surface-alt); }
.map-tool.is-active{ background:var(--accent); border-color:var(--accent); color:var(--accent-contrast); }
.map-tool.is-active svg{ color:inherit; }

.map-hint{ position:absolute; top:54px; left:50%; transform:translateX(-50%); z-index:12; display:flex; align-items:center; gap:8px; padding:7px 12px; border-radius:8px; background:var(--text); color:var(--surface); font-size:12.5px; box-shadow:var(--shadow-lg); white-space:nowrap; }
.map-hint svg{ width:15px; height:15px; }
.map-hint kbd{ font-family:var(--font-mono); font-size:11px; padding:0 4px; border-radius:3px; border:1px solid currentColor; opacity:.8; }

.map-overlay{ position:absolute; inset:0; z-index:25; display:flex; align-items:center; justify-content:center; background:var(--surface-alt); padding:16px; }
.map-overlay-card{ display:flex; flex-direction:column; align-items:center; gap:12px; max-width:380px; text-align:center; color:var(--text-muted); }
.map-overlay-card p{ margin:0; }
.map-overlay.is-error .spinner{ display:none; }
.map-overlay.is-error .map-overlay-card::before{ content:"!"; width:36px; height:36px; border-radius:50%; background:var(--danger-soft); color:var(--danger); display:flex; align-items:center; justify-content:center; font-weight:700; font-size:18px; }
.spinner{ width:22px; height:22px; border:2.5px solid var(--border-strong); border-top-color:var(--accent); border-radius:50%; animation:spin .8s linear infinite; }

.layers-panel{ position:absolute; left:10px; bottom:24px; z-index:10; width:290px; max-width:calc(100% - 70px); background:var(--surface); border:1px solid var(--border); border-radius:10px; box-shadow:var(--shadow); overflow:hidden; }
.layers-head{ display:flex; align-items:center; gap:8px; width:100%; height:34px; padding:0 10px; border:none; background:none; color:var(--text); font-size:12.5px; font-weight:600; }
.layers-head svg{ width:15px; height:15px; color:var(--text-muted); }
.layers-head span{ flex:1; text-align:left; }
.layers-head b{ font-family:var(--font-mono); font-size:11px; font-weight:500; padding:0 6px; border-radius:999px; background:var(--surface-alt); color:var(--text-muted); }
.layers-chev{ transform:rotate(90deg); transition:transform .15s; }
.layers-panel.is-collapsed .layers-chev{ transform:rotate(-90deg); }
.layers-panel.is-collapsed .layers-list{ display:none; }
.layers-list{ list-style:none; margin:0; padding:0 4px 4px; max-height:220px; overflow:auto; border-top:1px solid var(--border); }
.layer-row{ display:flex; align-items:center; gap:4px; height:30px; padding:0 2px 0 6px; border-radius:6px; }
.layer-row:hover{ background:var(--surface-alt); }
.layer-row.is-selected{ background:var(--row-selected); }
.layer-row.is-hidden .layer-name,.layer-row.is-hidden .layer-ico{ opacity:.45; }
.layer-ico{ display:flex; }
.layer-ico .fi{ width:15px; height:15px; }
.layer-name{ flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; border:none; background:none; text-align:left; font-size:12.5px; color:var(--text); padding:0 4px; }
.layer-tag{ font-size:10px; font-weight:600; padding:0 5px; border-radius:4px; background:var(--warning-soft); color:var(--warning); }
.layer-row .icon-btn{ width:24px; height:24px; }
.layer-row .icon-btn svg{ width:14px; height:14px; }

/* Conteúdo das janelas de informação do Google Maps */
.im-iw{ font-family:var(--font-ui); font-size:13px; color:#1a2330; max-width:320px; }
.im-iw strong{ display:block; font-size:13.5px; margin-bottom:4px; }
.im-iw-desc{ max-height:220px; overflow:auto; margin-bottom:6px; }
.im-iw-desc img{ max-width:100%; height:auto; }
.im-iw small{ color:#8994a3; font-size:11px; }

/* =====================================================================
   Inspetor (painel direito)
   ===================================================================== */
.inspector-tabs{ display:flex; gap:2px; height:36px; padding:0 6px; border-bottom:1px solid var(--border); flex-shrink:0; overflow-x:auto; overflow-y:hidden; scrollbar-width:none; }
.inspector-tabs::-webkit-scrollbar{ display:none; }
.insp-tab{ display:flex; align-items:center; gap:6px; padding:0 8px; flex-shrink:0; border:none; border-bottom:2px solid transparent; background:none; color:var(--text-muted); font-size:12.5px; font-weight:500; white-space:nowrap; margin-bottom:-1px; }
.insp-tab:hover:not([disabled]){ color:var(--text); }
.insp-tab.is-active{ color:var(--accent); border-bottom-color:var(--accent); }
.insp-tab[disabled]{ opacity:.45; cursor:default; }
.tab-count{ font-family:var(--font-mono); font-size:10.5px; font-weight:500; min-width:18px; height:17px; padding:0 5px; border-radius:999px; background:var(--accent-soft); color:var(--accent); display:inline-flex; align-items:center; justify-content:center; }
.inspector-body{ flex:1; overflow:auto; padding:16px 16px 28px; }

.insp-empty{ display:flex; flex-direction:column; align-items:center; text-align:center; gap:12px; padding:36px 12px; color:var(--text-muted); }
.insp-empty p{ margin:0; font-size:13px; }
.insp-empty strong{ display:block; color:var(--text); margin-bottom:3px; }
.insp-empty-ico{ width:44px; height:44px; border-radius:11px; background:var(--surface-alt); border:1px solid var(--border); display:flex; align-items:center; justify-content:center; color:var(--text-faint); }
.insp-empty-ico svg{ width:22px; height:22px; }
.insp-loading{ display:flex; align-items:center; gap:10px; color:var(--text-muted); padding:20px 0; }
.insp-loading .spinner{ width:16px; height:16px; border-width:2px; }
.insp-alert{ margin-bottom:16px; font-size:12.5px; }

.insp-head{ display:flex; align-items:flex-start; gap:12px; margin-bottom:18px; }
.insp-head-ico{ width:40px; height:40px; border-radius:10px; background:var(--surface-alt); border:1px solid var(--border); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.insp-head-ico .fi{ width:24px; height:24px; }
.insp-head-txt{ flex:1; min-width:0; }
.insp-title{ margin:0; font-size:15px; font-weight:600; line-height:1.3; overflow-wrap:anywhere; }
.insp-sub{ font-size:12px; color:var(--text-muted); margin-top:2px; overflow-wrap:anywhere; }

.insp-section{ padding:14px 0; border-top:1px solid var(--border); }
.insp-h{ margin:0 0 10px; font-size:11px; font-weight:600; letter-spacing:.06em; text-transform:uppercase; color:var(--text-muted); }
.insp-h label{ cursor:inherit; }

.props{ display:grid; grid-template-columns:minmax(96px,auto) 1fr; gap:7px 14px; margin:0; font-size:13px; }
.props dt{ color:var(--text-muted); }
.props dd{ margin:0; min-width:0; overflow-wrap:anywhere; }
.ext-chip{ font-family:var(--font-mono); font-size:11px; font-weight:600; padding:0 5px; border-radius:4px; color:var(--c); background:color-mix(in srgb, var(--c) 14%, transparent); }
.link-btn{ border:none; background:none; padding:0; color:var(--accent); font:inherit; text-align:left; cursor:pointer; }
.link-btn:hover{ text-decoration:underline; }

.insp-save-row{ display:flex; align-items:center; gap:6px; margin-top:8px; }
.insp-save-row .hint{ flex:1; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.insp-actions{ display:flex; flex-wrap:wrap; gap:6px; }
.insp-actions .btn svg{ width:14px; height:14px; }
.map-state{ display:flex; align-items:center; gap:7px; font-size:13px; color:var(--text-muted); margin-bottom:10px; }
.map-state .sb-dot{ background:var(--text-faint); }
.map-state.on{ color:var(--text); }
.map-state.on .sb-dot{ background:var(--success); }

.glb-grid{ display:grid; grid-template-columns:1fr 1fr; gap:8px 10px; margin-bottom:10px; }
.glb-grid label{ display:flex; flex-direction:column; gap:3px; font-size:11.5px; color:var(--text-muted); }
.glb-grid .span2{ grid-column:1 / -1; }
.range-row{ display:flex; align-items:center; gap:10px; }
.range-row input[type="range"]{ flex:1; accent-color:var(--accent); }
.range-row .input{ width:84px; flex-shrink:0; }
.insp-section .hint{ margin:8px 0 0; }

/* ---------- Relatórios ---------- */
.rel-head{ display:flex; align-items:flex-start; justify-content:space-between; gap:10px; margin-bottom:14px; }
.rel-list{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:8px; }
.rel-card{ display:flex; flex-direction:column; gap:6px; width:100%; padding:11px 12px; border:1px solid var(--border); border-radius:9px; background:var(--surface); text-align:left; color:var(--text); transition:border-color .12s, box-shadow .12s; }
.rel-card:hover{ border-color:var(--border-strong); box-shadow:var(--shadow); }
.rel-card-top{ display:flex; justify-content:space-between; gap:8px; align-items:baseline; }
.rel-card-top b{ font-size:13.5px; font-weight:600; min-width:0; overflow-wrap:anywhere; }
.rel-date{ font-family:var(--font-mono); font-size:11.5px; color:var(--text-muted); white-space:nowrap; }
.rel-card-meta{ display:flex; flex-wrap:wrap; gap:4px 12px; font-size:12px; color:var(--text-muted); }
.rel-card-meta span{ display:inline-flex; align-items:center; gap:4px; }
.rel-card-meta svg{ width:13px; height:13px; }
.progress{ display:block; height:4px; border-radius:2px; background:var(--border); overflow:hidden; }
.progress i{ display:block; height:100%; background:var(--success); border-radius:2px; }
.progress.inline{ display:inline-block; width:70px; vertical-align:middle; margin-right:6px; }
.rel-nav{ display:flex; align-items:center; gap:2px; margin:-6px -6px 10px; }
.rel-title{ font-size:17px; margin-bottom:12px; }
.rel-folder{ display:flex; align-items:center; gap:6px; margin:-8px 0 16px; }
.rel-folder .fi{ width:14px; height:14px; flex-shrink:0; }
.rel-obs{ margin:0; white-space:pre-wrap; font-size:13px; }
.field-2{ display:grid; grid-template-columns:1fr 1fr; gap:0 10px; }
.pct-input{ display:flex; align-items:center; gap:4px; color:var(--text-muted); }
.pct-input .input{ width:72px; }
.rel-form-actions{ display:flex; justify-content:flex-end; gap:8px; margin-top:6px; }
#rel-form .alert{ margin-bottom:10px; }

.dropzone{ display:flex; flex-direction:column; align-items:center; gap:4px; padding:18px 12px; border:1.5px dashed var(--border-strong); border-radius:9px; text-align:center; color:var(--text-muted); font-size:12.5px; cursor:pointer; }
.dropzone svg{ width:22px; height:22px; margin-bottom:2px; }
.dropzone strong{ color:var(--text); font-weight:500; font-size:13px; }
.dropzone:hover:not(.is-disabled){ border-color:var(--accent); color:var(--accent); }
.dropzone.is-disabled{ cursor:not-allowed; opacity:.7; background:var(--surface-alt); }

.photo-grid{ display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.photo{ margin:0; }
.photo-img{ aspect-ratio:4/3; border-radius:7px; background:var(--surface-alt) center/cover no-repeat; border:1px solid var(--border); }
.photo-img.is-missing{ background-image:none !important; }
.photo figcaption{ font-size:12px; color:var(--text-muted); margin-top:4px; overflow-wrap:anywhere; }
.photo-edit-list{ display:flex; flex-direction:column; gap:8px; margin-bottom:8px; }
.photo-edit{ display:grid; grid-template-columns:84px 1fr; gap:8px; }
.photo-edit .photo-img{ aspect-ratio:1; }
.photo-edit .textarea{ min-height:0; }

/* ---------- Modal (complementos) ---------- */
.mdl-list{ margin:-4px 0 12px; padding-left:18px; color:var(--text); }
.mdl-list li{ margin:2px 0; }
.mdl-warn{ color:var(--danger); font-weight:500; }
.mdl-label{ display:block; margin-bottom:6px; color:var(--text-muted); }
.mdl-input{ font-family:var(--font-mono); margin-bottom:6px; }
.mdl-input.is-match{ border-color:var(--success); box-shadow:0 0 0 3px var(--success-soft); }

/* ---------- Responsivo: telas estreitas ---------- */
@media (max-width: 900px){
  .workbench{ grid-template-columns:0 0 minmax(0,1fr) 0 0 !important; }
  .side-left,.side-right{ position:absolute; top:0; bottom:0; z-index:30; width:min(86vw, 340px); box-shadow:var(--shadow-lg); }
  .side-left{ left:0; }
  .side-right{ right:0; }
  .workbench.left-off .side-left,.workbench.right-off .side-right{ display:none; }
  .resizer{ display:none; }
  .user-name,.crumbs{ display:none; }
  .map-tool span{ display:none; }
}

/* =====================================================================
   Organizações
   ===================================================================== */
.org-menu{ position:relative; min-width:0; flex-shrink:0; max-width:40%; }
.org-btn > :not(.org-name){ flex-shrink:0; }
.org-btn{ position:relative; display:flex; align-items:center; gap:8px; height:28px; max-width:340px; padding:0 8px 0 4px; border:1px solid transparent; border-radius:7px; background:transparent; color:var(--text); min-width:0; }
.org-btn:hover,.org-btn[aria-expanded="true"]{ background:var(--surface-alt); border-color:var(--border); }
.org-name{ font-size:13px; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; min-width:0; }
.org-chev{ width:14px; height:14px; color:var(--text-faint); flex-shrink:0; }
.org-dot{ position:absolute; top:-5px; left:15px; min-width:16px; height:16px; padding:0 4px; border-radius:999px; background:var(--danger); color:#fff; font-size:10px; font-weight:700; display:flex; align-items:center; justify-content:center; border:2px solid var(--surface); }
.org-dropdown{ left:0; right:auto; min-width:280px; }
.dd-label{ padding:6px 10px 4px; font-size:10.5px; font-weight:600; letter-spacing:.06em; text-transform:uppercase; color:var(--text-faint); }
.dd-sep{ height:1px; background:var(--border); margin:5px 4px; }
.dropdown-item span{ flex:1; }
.dropdown-item .org-avatar svg,.org-item > svg{ width:15px; height:15px; color:var(--accent); }
.org-item{ height:40px; }
.org-item-txt{ display:flex; flex-direction:column; min-width:0; line-height:1.25; }
.org-item-txt b{ font-size:13px; font-weight:500; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.org-item-txt small{ font-size:11.5px; color:var(--text-muted); }
.org-item.is-current{ background:var(--accent-soft); }
.dd-badge{ min-width:18px; height:18px; padding:0 5px; border-radius:999px; background:var(--danger); color:#fff; font-size:10.5px; display:inline-flex; align-items:center; justify-content:center; }
body.sem-org .crumbs,body.sem-org #btn-toggle-left,body.sem-org #btn-toggle-right,body.sem-org .org-divider{ display:none; }

/* ---------- Painel modal (gerenciar) ---------- */
.modal.panel{ display:flex; flex-direction:column; max-height:min(760px, calc(100vh - 32px)); }
.panel-head{ display:flex; align-items:flex-start; gap:12px; padding:18px 18px 12px; }
.panel-head > div{ flex:1; min-width:0; }
.panel-head h2{ margin:0; font-size:17px; overflow-wrap:anywhere; }
.panel-sub{ margin:2px 0 0; font-size:12.5px; color:var(--text-muted); }
.panel-body{ display:flex; flex-direction:column; min-height:0; flex:1; padding:0 18px 18px; overflow-y:auto; overflow-x:hidden; overscroll-behavior:contain; }
/* Formulários longos (ex.: publicar): os botões ficam sempre visíveis embaixo */
.panel-body > form > .panel-actions:last-child{ position:sticky; bottom:-18px; z-index:2; margin:4px -18px -18px; padding:12px 18px 18px; background:var(--surface-raised); border-top:1px solid var(--border); }
.panel-actions{ display:flex; justify-content:flex-end; gap:8px; margin-top:4px; }
.panel-actions.left{ justify-content:flex-start; }
.panel-body .alert{ margin-bottom:12px; }
.pn-tabs{ display:flex; gap:2px; box-shadow:inset 0 -1px 0 var(--border); margin:0 -18px; padding:0 12px; overflow-x:auto; overflow-y:hidden; flex-shrink:0; scrollbar-width:thin; }
/* Painel que se ajusta às abas: o conteúdo não alarga a janela */
.modal.panel.is-ajustada{ width:fit-content; min-width:min(560px, calc(100vw - 32px)); max-width:calc(100vw - 32px); }
.modal.panel.is-ajustada .pn-content,.modal.panel.is-ajustada .panel-head > div{ width:0; min-width:100%; }
.modal.panel.is-ajustada .panel-head > div{ min-width:0; }
.pn-tab{ display:flex; align-items:center; gap:7px; height:38px; padding:0 10px; border:none; border-bottom:2px solid transparent; background:none; color:var(--text-muted); font-size:13px; font-weight:500; white-space:nowrap; }
.pn-tab svg{ width:15px; height:15px; }
.pn-tab:hover{ color:var(--text); }
.pn-tab.is-active{ color:var(--accent); border-bottom-color:var(--accent); }
.pn-count{ min-width:18px; height:18px; padding:0 5px; border-radius:999px; background:var(--danger); color:#fff; font-size:10.5px; display:inline-flex; align-items:center; justify-content:center; }
.pn-content{ overflow:auto; padding-top:16px; min-height:220px; }
.pn-help{ margin:0 0 14px; font-size:12.5px; color:var(--text-muted); line-height:1.5; }
.pn-help b{ color:var(--text); font-weight:600; }
.pn-foot{ display:flex; align-items:center; justify-content:space-between; gap:12px; padding-top:14px; margin-top:14px; border-top:1px solid var(--border); }
.pn-foot > span{ display:flex; flex-direction:column; min-width:0; }
.pn-foot b{ font-size:13px; }
.danger-zone b{ color:var(--danger); }
.danger-hover:hover{ background:var(--danger-soft); color:var(--danger); }

.member-list,.request-list,.acesso-list,.onb-reqs{ list-style:none; margin:0; padding:0; }
.member-row{ display:flex; align-items:center; gap:12px; padding:9px 0; border-bottom:1px solid var(--border); }
.member-row:last-child{ border-bottom:none; }
.member-txt{ flex:1; min-width:0; display:flex; flex-direction:column; }
.member-txt b{ font-size:13.5px; font-weight:500; }
.member-txt small{ font-size:12px; color:var(--text-muted); overflow:hidden; text-overflow:ellipsis; }
.member-ctl{ display:flex; align-items:center; gap:4px; flex-shrink:0; }
.member-ctl .select{ width:auto; min-width:140px; }

.request-row{ display:flex; align-items:flex-start; gap:12px; padding:12px; margin-bottom:10px; border:1px solid var(--border); border-radius:10px; }
.request-txt{ flex:1; min-width:0; display:flex; flex-direction:column; }
.request-txt b{ font-size:13.5px; font-weight:600; }
.request-txt small{ font-size:12px; color:var(--text-muted); }
.request-msg{ margin:6px 0 0; font-size:13px; color:var(--text); font-style:italic; overflow-wrap:anywhere; }
.request-ctl{ display:flex; align-items:center; gap:6px; flex-wrap:wrap; justify-content:flex-end; }
.request-ctl .select{ width:auto; }

.invite-box{ display:flex; gap:8px; margin-bottom:16px; }
.invite-box .input{ font-size:12.5px; }
.invite-box.is-off .input{ opacity:.55; text-decoration:line-through; }
.switch-row{ display:flex; align-items:flex-start; gap:12px; cursor:pointer; }
.switch-row input{ position:absolute; opacity:0; pointer-events:none; }
.switch{ position:relative; width:36px; height:20px; border-radius:999px; background:var(--border-strong); flex-shrink:0; transition:background .15s; margin-top:1px; }
.switch::after{ content:""; position:absolute; top:2px; left:2px; width:16px; height:16px; border-radius:50%; background:#fff; box-shadow:0 1px 2px rgba(0,0,0,.2); transition:transform .15s; }
.switch-row input:checked + .switch{ background:var(--accent); }
.switch-row input:checked + .switch::after{ transform:translateX(16px); }
.switch-row input:focus-visible + .switch{ outline:2px solid var(--accent); outline-offset:2px; }
.switch-row > span:last-child{ display:flex; flex-direction:column; }
.switch-row b{ font-size:13px; }
.switch-row small{ font-size:12px; color:var(--text-muted); }

/* ---------- Sem organização ---------- */
.onboarding{ overflow:auto; display:flex; align-items:flex-start; justify-content:center; padding:48px 16px; background:
  radial-gradient(800px 400px at 50% -10%, color-mix(in srgb, var(--accent) 10%, transparent), transparent 70%), var(--bg); }
.onb-card{ width:100%; max-width:760px; }
.onb-ico{ width:52px; height:52px; border-radius:14px; background:var(--accent-soft); color:var(--accent); display:flex; align-items:center; justify-content:center; margin-bottom:18px; }
.onb-ico svg{ width:26px; height:26px; }
.onb-card h1{ margin:0 0 8px; font-size:26px; letter-spacing:-.02em; }
.onb-lead{ margin:0 0 26px; color:var(--text-muted); font-size:14.5px; max-width:620px; }
.onb-lead b{ color:var(--text); }
.onb-grid{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.onb-opt{ display:flex; flex-direction:column; gap:10px; padding:20px; border:1px solid var(--border); border-radius:12px; background:var(--surface); }
.onb-opt h2{ display:flex; align-items:center; gap:8px; margin:0; font-size:15px; }
.onb-opt h2 svg{ width:18px; height:18px; color:var(--accent); }
.onb-opt p{ margin:0 0 4px; font-size:13px; color:var(--text-muted); flex:1; }
#onb-pedidos{ margin-top:26px; }
.onb-reqs li{ display:flex; align-items:center; gap:10px; padding:10px 12px; border:1px solid var(--border); border-radius:9px; background:var(--surface); margin-bottom:8px; }
.onb-reqs b{ flex:1; font-weight:500; }
.status{ font-size:11.5px; font-weight:600; padding:2px 8px; border-radius:999px; }
.status-pendente{ background:var(--warning-soft); color:var(--warning); }
.status-aprovada{ background:var(--success-soft); color:var(--success); }
.status-recusada{ background:var(--danger-soft); color:var(--danger); }

/* ---------- Inspetor: acesso e leitura ---------- */
.ro-chip{ display:inline-flex; align-items:center; gap:5px; margin-top:6px; height:20px; padding:0 8px; border-radius:999px; font-size:11px; font-weight:600; background:var(--warning-soft); color:var(--warning); }
.ro-chip svg{ width:12px; height:12px; }
.insp-text{ margin:0; font-size:13px; white-space:pre-wrap; overflow-wrap:anywhere; }
.acesso-eu{ display:flex; align-items:center; flex-wrap:wrap; gap:6px 8px; font-size:13px; }
.acesso-eu > span:first-child{ color:var(--text-muted); }
.acesso-ajuda{ margin:10px 0 10px !important; }
.acesso-row{ display:flex; align-items:center; gap:8px; padding:6px 0; }
.acesso-nome{ flex:1; min-width:0; display:flex; flex-direction:column; line-height:1.3; }
.acesso-nome b{ font-size:12.5px; font-weight:500; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.acesso-nome small{ font-size:11px; color:var(--text-faint); }
.acesso-row .select{ width:auto; }
.acesso-row .icon-btn{ width:26px; height:26px; }
.acesso-herdado{ display:flex; flex-direction:column; align-items:flex-end; gap:2px; }
.acesso-herdado small{ font-size:10.5px; color:var(--text-faint); max-width:110px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.acesso-add{ display:flex; gap:6px; margin-top:8px; }
.acesso-add .select:first-child{ flex:1; min-width:0; }
.acesso-add .select{ width:auto; }
.tr-badge.is-shared{ color:var(--text-faint); }

@media (max-width: 720px){
  .onb-grid{ grid-template-columns:1fr; }
  .org-btn .role-chip,.org-name{ display:none; }
  .member-row{ flex-wrap:wrap; }
  .member-ctl{ width:100%; padding-left:44px; }
  .request-row{ flex-wrap:wrap; }
  .request-ctl{ width:100%; justify-content:flex-start; }
  .invite-box{ flex-direction:column; }
}

/* ajustes do seletor de organização */
.dropdown-item .org-avatar{ flex:0 0 auto; }
.org-item .org-item-txt{ flex:1; }
.org-btn{ max-width:460px; }
@media (max-width: 720px){
  .org-dropdown{ position:fixed; top:44px; left:8px; right:8px; min-width:0; }
}

/* =====================================================================
   Arquivos do mapa (parte inferior do explorador)
   ===================================================================== */
.side-left .tree{ min-height:80px; }
.sash-h{ position:relative; height:1px; flex-shrink:0; background:var(--border); cursor:row-resize; z-index:5; }
.sash-h::after{ content:""; position:absolute; left:0; right:0; top:-3px; height:7px; transition:background .15s .1s; }
.sash-h:hover::after,body.is-resizing-v .sash-h::after{ background:var(--accent); opacity:.55; }
body.is-resizing-v{ cursor:row-resize; user-select:none; }
body.is-resizing-v .map-area{ pointer-events:none; }

.map-files{ display:flex; flex-direction:column; flex-shrink:0; min-height:0; height:240px; background:var(--surface-alt); }
.map-files.is-collapsed{ height:auto; }
.map-files.is-collapsed .mf-body{ display:none; }
.section-header{ display:flex; align-items:center; height:30px; padding:0 6px 0 4px; flex-shrink:0; }
.section-toggle{ flex:1; min-width:0; display:flex; align-items:center; gap:3px; height:26px; border:none; background:none; padding:0 4px; color:var(--text-muted); text-align:left; border-radius:5px; }
.section-toggle:hover{ color:var(--text); }
.section-toggle .pane-title{ flex:0 1 auto; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.mf-chev{ width:14px; height:14px; flex-shrink:0; transform:rotate(90deg); transition:transform .12s; }
.map-files.is-collapsed .mf-chev{ transform:none; }
.mf-count{ margin-left:6px; font-family:var(--font-mono); font-size:10.5px; font-weight:500; padding:0 6px; border-radius:999px; background:var(--surface); border:1px solid var(--border); color:var(--text-muted); }
.section-header .pane-actions{ opacity:0; transition:opacity .12s; }
.map-files:hover .section-header .pane-actions,.section-header .pane-actions:focus-within{ opacity:1; }
.section-header .icon-btn{ width:22px; height:22px; }
.section-header .icon-btn svg{ width:14px; height:14px; }
.mf-body{ display:flex; flex-direction:column; min-height:0; flex:1; }
.mf-filter{ padding:0 8px 6px; display:none; }
.map-files.has-filter .mf-filter{ display:block; }
.mf-filter .input{ min-height:26px; font-size:12px; }
.mf-list{ list-style:none; margin:0; padding:0 0 8px; overflow:auto; flex:1; }
.mf-group{ display:flex; justify-content:space-between; padding:6px 12px 3px; font-size:10.5px; font-weight:600; letter-spacing:.05em; text-transform:uppercase; color:var(--text-faint); }
.mf-group span{ font-family:var(--font-mono); letter-spacing:0; }
.mf-row{ position:relative; display:flex; align-items:center; gap:6px; min-height:36px; padding:0 6px 0 12px; border:1px solid transparent; }
.mf-row:hover{ background:var(--row-hover); }
.mf-row.is-selected{ background:var(--row-selected); }
.mf-row.is-current::before{ content:""; position:absolute; left:0; top:5px; bottom:5px; width:3px; border-radius:0 2px 2px 0; background:var(--accent); }
.mf-row.is-hidden .mf-ico,.mf-row.is-hidden .mf-name{ opacity:.45; }
.mf-ico{ display:flex; flex-shrink:0; }
.mf-ico .fi{ width:16px; height:16px; }
.mf-name{ flex:1; min-width:0; display:flex; flex-direction:column; align-items:flex-start; border:none; background:none; padding:3px 0; color:var(--text); text-align:left; line-height:1.25; }
.mf-name b{ display:flex; align-items:center; gap:5px; max-width:100%; font-size:12.5px; font-weight:500; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.mf-name small{ max-width:100%; font-size:11px; color:var(--text-faint); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.mf-row:not(.is-loaded) .mf-name b{ color:var(--text-muted); font-weight:400; }
.mf-actions{ display:flex; align-items:center; gap:1px; flex-shrink:0; }
.mf-act{ width:22px; height:22px; display:flex; align-items:center; justify-content:center; border:none; border-radius:4px; background:none; color:var(--text-muted); padding:0; }
.mf-act svg{ width:14px; height:14px; }
.mf-act:hover{ background:color-mix(in srgb, var(--text) 10%, transparent); color:var(--text); }
.mf-row.is-loaded:not(:hover):not(.is-selected) .mf-act[data-mf="focar"],
.mf-row.is-loaded:not(:hover):not(.is-selected) .mf-act[data-mf="fechar"]{ display:none; }
.mf-open{ display:inline-flex; align-items:center; gap:3px; height:22px; padding:0 7px 0 5px; border:1px solid var(--border); border-radius:5px; background:var(--surface); color:var(--accent); font-size:11.5px; font-weight:600; opacity:0; }
.mf-open svg{ width:13px; height:13px; }
.mf-row:hover .mf-open,.mf-row.is-selected .mf-open,.mf-open:focus-visible{ opacity:1; }
.mf-open:hover{ border-color:var(--accent); background:var(--accent-soft); }
.mf-spin{ display:flex; padding:0 6px; }
.mf-empty{ padding:10px 14px; font-size:12px; color:var(--text-faint); line-height:1.5; }
.mf-empty b{ color:var(--text-muted); font-weight:500; }
@media (hover: none){ .mf-open,.section-header .pane-actions{ opacity:1; } }

/* =====================================================================
   Painel de envios
   ===================================================================== */
.uploads{ position:absolute; left:10px; bottom:24px; z-index:15; width:360px; max-width:calc(100% - 70px); background:var(--surface); border:1px solid var(--border); border-radius:10px; box-shadow:var(--shadow-lg); overflow:hidden; animation:pop-in .14s ease-out; }
.up-head{ display:flex; align-items:center; gap:2px; height:38px; padding:0 6px 0 14px; }
.up-title{ flex:1; font-size:13px; font-weight:600; }
.up-head .icon-btn{ width:26px; height:26px; }
.uploads.is-collapsed #up-toggle svg{ transform:rotate(180deg); }
.uploads.is-collapsed .up-list{ display:none; }
.up-total{ display:block; height:3px; background:var(--border); }
.up-total i{ display:block; height:100%; width:0; background:var(--accent); transition:width .2s; }
.uploads:not(.is-busy) .up-total i{ background:var(--success); }
.up-list{ list-style:none; margin:0; padding:4px 0; max-height:280px; overflow:auto; }
.up-row{ display:flex; align-items:center; gap:10px; padding:7px 8px 7px 14px; }
.up-row + .up-row{ border-top:1px solid var(--border); }
.up-ico{ display:flex; flex-shrink:0; }
.up-ico .fi{ width:20px; height:20px; }
.up-info{ flex:1; min-width:0; display:flex; flex-direction:column; gap:2px; }
.up-info b{ font-size:12.5px; font-weight:500; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.up-info small{ font-size:11.5px; color:var(--text-muted); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.up-bar{ margin-top:3px; }
.up-bar i{ background:var(--accent); transition:width .15s; }
.up-row.is-na-fila .up-bar i{ background:var(--border-strong); }
.up-state{ display:flex; }
.up-state svg{ width:16px; height:16px; }
.up-row.is-concluido .up-state{ color:var(--success); }
.up-row.is-erro .up-state,.up-row.is-erro small{ color:var(--danger); }
.up-row.is-cancelado b{ color:var(--text-faint); text-decoration:line-through; }
.up-row .icon-btn{ width:26px; height:26px; }
.up-row .icon-btn svg{ width:14px; height:14px; }
@media (max-width: 720px){ .uploads{ left:8px; right:8px; width:auto; max-width:none; } }

/* ---------- Fotos do relatório (formulário e visualizador) ---------- */
.photo-edit{ grid-template-columns:84px 1fr auto; align-items:start; }
.photo-edit .photo-img{ position:relative; }
.photo-edit-txt{ display:flex; flex-direction:column; gap:3px; min-width:0; }
.rf-img-head{ display:flex; align-items:center; justify-content:space-between; gap:10px; }
.rf-numerar{ align-items:center; gap:8px; user-select:none; }
.rf-numerar .switch{ margin-top:0; }
.rf-numerar b{ font-weight:500; color:var(--text); }
.photo-edit-num{ font-size:12px; font-weight:600; color:var(--text); }
.photo-num{ font-weight:600; color:var(--text); }
.photo-edit-txt small{ font-size:11px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.photo-n{ position:absolute; left:4px; top:4px; min-width:18px; height:18px; padding:0 5px; border-radius:999px; background:rgba(0,0,0,.6); color:#fff; font-size:10.5px; font-weight:600; display:flex; align-items:center; justify-content:center; }
.photo-new{ position:absolute; right:4px; bottom:4px; padding:0 5px; border-radius:4px; background:var(--accent); color:var(--accent-contrast); font-size:10px; font-weight:600; }
.photo-edit .icon-btn{ width:28px; height:28px; }
.dropzone.is-over{ border-color:var(--accent); background:var(--accent-soft); color:var(--accent); }
button.photo-img{ display:block; width:100%; padding:0; cursor:zoom-in; }
button.photo-img:hover{ filter:brightness(1.05); box-shadow:0 0 0 2px var(--accent); }
#rel-form .alert-warning{ margin-bottom:12px; }

.lightbox{ position:fixed; inset:0; z-index:1300; background:rgba(8,12,18,.92); display:flex; align-items:center; justify-content:center; padding:48px 64px; animation:fade-in .12s ease-out; }
.lb-fig{ margin:0; max-width:100%; max-height:100%; display:flex; flex-direction:column; align-items:center; gap:12px; }
.lb-fig img{ max-width:100%; max-height:calc(100vh - 150px); object-fit:contain; border-radius:6px; background:#111; box-shadow:0 10px 40px rgba(0,0,0,.5); }
.lb-fig figcaption{ color:#e7ecf3; font-size:14px; text-align:center; max-width:760px; display:flex; flex-direction:column; gap:3px; }
.lb-n{ font-family:var(--font-mono); font-size:12px; color:#93a0b1; font-weight:500; }
.lb-btn{ position:absolute; width:44px; height:44px; border-radius:50%; border:none; background:rgba(255,255,255,.1); color:#fff; display:flex; align-items:center; justify-content:center; }
.lb-btn:hover{ background:rgba(255,255,255,.2); }
.lb-btn svg{ width:22px; height:22px; }
.lb-close{ top:14px; right:14px; }
.lb-prev{ left:14px; top:50%; transform:translateY(-50%); }
.lb-next{ right:14px; top:50%; transform:translateY(-50%); }
@media (max-width: 720px){ .lightbox{ padding:56px 8px; } .lb-prev,.lb-next{ top:auto; bottom:14px; transform:none; } }

/* =====================================================================
   v3 — tags, parâmetros, filtro, regiões, fixação
   ===================================================================== */
/* ---------- Árvore ---------- */
.tree.is-compact-empty{ flex:0 0 auto; min-height:0; }
.tree.is-compact-empty .tree-tail{ min-height:4px; }
.tree-row.is-context .tr-label{ color:var(--text-muted); }
.tr-badge.is-region{ gap:2px; color:var(--accent); font-size:10.5px; font-weight:600; }
.tr-badge.is-region svg{ width:11px; height:11px; }
.tr-badge.is-region b{ font-family:var(--font-mono); font-weight:500; padding:0 4px; border-radius:999px; background:var(--accent-soft); }
.tr-badge.is-pin{ color:var(--text-faint); }
.tr-badge.is-pin svg{ width:12px; height:12px; }
.tr-tags{ display:inline-flex; align-items:center; gap:2px; margin-left:5px; flex-shrink:0; }
.tr-tags i{ width:7px; height:7px; border-radius:50%; background:var(--c); box-shadow:0 0 0 1px color-mix(in srgb, var(--c) 45%, var(--surface)); }
.tr-tags small{ font-size:10px; color:var(--text-faint); margin-left:1px; }
.tree-noresult{ padding:18px 16px; font-size:12.5px; color:var(--text-muted); display:flex; align-items:center; gap:8px; }

/* ---------- Botão e painel de filtro ---------- */
.filter-btn{ position:relative; }
.filter-n{ position:absolute; top:-2px; right:-3px; min-width:14px; height:14px; padding:0 3px; border-radius:999px; background:var(--accent); color:var(--accent-contrast); font-size:9.5px; font-weight:700; display:flex; align-items:center; justify-content:center; line-height:1; }
.filter-panel{ flex-shrink:0; max-height:62%; overflow:auto; margin:0 8px 6px; padding:10px 10px 8px; border:1px solid var(--border); border-radius:9px; background:var(--surface); box-shadow:var(--shadow); font-size:12.5px; }
.fp-sec{ margin-bottom:10px; }
.fp-h{ display:flex; align-items:center; justify-content:space-between; gap:6px; margin-bottom:6px; font-size:10.5px; font-weight:600; letter-spacing:.06em; text-transform:uppercase; color:var(--text-muted); }
.fp-mini{ border:1px solid var(--border); border-radius:5px; background:var(--surface); font-size:11.5px; text-transform:none; letter-spacing:0; padding:1px 4px; color:var(--text); }
.fp-tags{ display:flex; flex-wrap:wrap; gap:4px; }
.fp-conds{ list-style:none; margin:0 0 6px; padding:0; display:flex; flex-direction:column; gap:6px; }
.fp-cond{ display:flex; flex-wrap:wrap; align-items:center; gap:4px; padding:6px; border:1px solid var(--border); border-radius:7px; background:var(--surface-alt); }
.fp-cond .select,.fp-cond .input{ flex:1 1 90px; min-width:0; width:auto; }
.fp-cond .icon-btn{ width:24px; height:24px; margin-left:auto; }
.fp-e{ color:var(--text-muted); }
.fp-check{ display:flex; align-items:flex-start; gap:7px; cursor:pointer; line-height:1.35; }
.fp-check input{ margin:2px 0 0; accent-color:var(--accent); flex-shrink:0; }
.fp-check small{ display:block; color:var(--text-faint); font-size:11.5px; }
.fp-reg-opts{ display:flex; flex-direction:column; gap:6px; margin-top:6px; }
.fp-reg-opts .link-btn{ display:inline-flex; align-items:center; gap:5px; font-size:12px; align-self:flex-start; }
.fp-reg-opts .link-btn svg{ width:13px; height:13px; }
.fp-foot{ display:flex; align-items:center; flex-wrap:wrap; gap:6px; padding-top:8px; border-top:1px solid var(--border); }
.fp-count{ flex:1 1 100%; font-size:12px; font-weight:500; color:var(--text); }
.fp-foot .btn svg{ width:14px; height:14px; }
.filter-bar{ display:flex; align-items:center; gap:2px; margin:0 8px 6px; padding:2px 2px 2px 4px; border-radius:7px; background:var(--accent-soft); color:var(--accent); flex-shrink:0; }
.fb-main{ flex:1; min-width:0; display:flex; align-items:center; gap:6px; border:none; background:none; color:inherit; padding:4px; text-align:left; font-size:12px; }
.fb-main svg{ width:14px; height:14px; flex-shrink:0; }
.fb-crit{ font-weight:600; white-space:nowrap; }
.fb-txt{ color:var(--text-muted); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.filter-bar .icon-btn{ width:24px; height:24px; color:inherit; }

/* ---------- Tags ---------- */
.tagchip{ display:inline-flex; align-items:center; gap:5px; height:22px; padding:0 8px; border-radius:999px; font-size:12px; font-weight:500; white-space:nowrap;
  background:color-mix(in srgb, var(--c) 13%, var(--surface)); color:color-mix(in srgb, var(--c) 78%, var(--text)); border:1px solid color-mix(in srgb, var(--c) 30%, transparent); }
.tagchip i{ width:7px; height:7px; border-radius:50%; background:var(--c); flex-shrink:0; }
.tagchip-x{ display:flex; align-items:center; justify-content:center; width:16px; height:16px; margin-right:-4px; border:none; border-radius:50%; background:none; color:inherit; padding:0; opacity:.65; }
.tagchip-x:hover{ opacity:1; background:color-mix(in srgb, var(--c) 22%, transparent); }
.tagchip-x svg{ width:11px; height:11px; }
.tagchip.is-toggle{ cursor:pointer; background:var(--surface); color:var(--text-muted); border-color:var(--border); }
.tagchip.is-toggle:hover{ border-color:var(--c); color:var(--text); }
.tagchip.is-toggle.is-on{ background:color-mix(in srgb, var(--c) 16%, var(--surface)); color:color-mix(in srgb, var(--c) 78%, var(--text)); border-color:var(--c); }
.tag-list{ display:flex; flex-wrap:wrap; gap:5px; }
.tag-list:empty{ display:none; }
.tag-add{ margin-top:8px; width:auto; max-width:100%; }
.insp-h-row{ display:flex; align-items:center; justify-content:space-between; gap:8px; }
.link-btn.sm{ font-size:11.5px; font-weight:500; letter-spacing:0; text-transform:none; }
.opt-chip{ display:inline-flex; align-items:center; height:20px; padding:0 7px; border-radius:5px; font-size:12px; background:color-mix(in srgb, var(--c) 15%, var(--surface)); color:color-mix(in srgb, var(--c) 75%, var(--text)); }

/* ---------- Variáveis ---------- */
.var-list{ display:flex; flex-direction:column; gap:9px; }
.var-list{ gap:11px; }
.var-row{ display:flex; flex-direction:column; gap:4px; }
.var-row.is-ro{ display:grid; grid-template-columns:minmax(96px, 40%) 1fr; gap:4px 12px; align-items:baseline; }
.var-label{ display:flex; align-items:center; gap:4px; min-width:0; font-size:12.5px; color:var(--text-muted); }
.var-name{ display:flex; align-items:center; gap:5px; min-width:0; }
.var-name > span:not(.var-sym){ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.var-name .tag{ margin-left:0; flex-shrink:0; }
.var-sym{ display:inline-flex; align-items:center; justify-content:center; min-width:18px; height:16px; padding:0 3px; border-radius:4px; background:var(--surface-alt); border:1px solid var(--border); color:var(--text-faint); font-family:var(--font-mono); font-size:9.5px; font-weight:600; flex-shrink:0; }
.var-sym svg{ width:11px; height:11px; }
.var-menu{ width:20px; height:20px; margin-left:auto; opacity:0; }
.var-row:hover .var-menu,.var-menu:focus-visible{ opacity:1; }
.var-menu svg{ width:13px; height:13px; }
.var-ctl{ position:relative; display:flex; align-items:center; gap:4px; min-width:0; }
.var-ctl > .input,.var-ctl > .select,.var-ctl > .textarea{ flex:1; min-width:0; }
.var-ctl > .textarea{ min-height:60px; font-size:12.5px; }
.var-num,.var-link{ flex:1; display:flex; align-items:center; gap:4px; min-width:0; }
.var-num .input,.var-link .input{ flex:1; min-width:0; }
.var-pre,.var-suf{ font-size:12px; color:var(--text-muted); flex-shrink:0; }
.var-state{ position:absolute; right:-2px; top:-9px; font-size:11px; display:flex; align-items:center; pointer-events:none; }
.var-state svg{ width:12px; height:12px; }
.var-state.is-ok{ color:var(--success); }
.var-state.is-error{ position:static; grid-column:1/-1; color:var(--danger); flex-basis:100%; }
.var-ctl:has(.var-state.is-error){ flex-wrap:wrap; }
.var-desc{ font-size:11.5px; color:var(--text-faint); margin-top:-1px; }
.var-val{ font-size:13px; min-width:0; overflow-wrap:anywhere; }
.var-multi{ display:flex; flex-wrap:wrap; gap:4px; }
.opt-toggle{ position:relative; display:inline-flex; cursor:pointer; }
.opt-toggle input{ position:absolute; opacity:0; pointer-events:none; }
.opt-toggle span{ display:inline-flex; align-items:center; height:22px; padding:0 8px; border-radius:5px; font-size:12px; border:1px solid var(--border); color:var(--text-muted); background:var(--surface); }
.opt-toggle input:checked + span{ background:color-mix(in srgb, var(--c) 16%, var(--surface)); border-color:var(--c); color:color-mix(in srgb, var(--c) 78%, var(--text)); }
.opt-toggle input:focus-visible + span{ outline:2px solid var(--accent); outline-offset:1px; }
.var-actions{ margin-top:10px; }


/* ---------- Editores (tag e variável) ---------- */
.swatches{ display:flex; flex-wrap:wrap; gap:6px; }
.swatch{ position:relative; width:26px; height:26px; border-radius:50%; border:2px solid var(--surface); background:var(--c); box-shadow:0 0 0 1px var(--border-strong); padding:0; cursor:pointer; display:flex; align-items:center; justify-content:center; }
.swatch.is-on{ box-shadow:0 0 0 2px var(--text); }
.swatch-custom{ background:conic-gradient(#ef4444,#eab308,#22c55e,#06b6d4,#6366f1,#d946ef,#ef4444); color:#fff; }
.swatch-custom.is-on{ background:var(--c); }
.swatch-custom svg{ width:13px; height:13px; filter:drop-shadow(0 0 1px rgba(0,0,0,.6)); }
.swatch-custom input,.swatch-pick input{ position:absolute; inset:0; opacity:0; cursor:pointer; width:100%; height:100%; }
.tf-ajuda{ margin:-6px 0 12px; }
.tf-preview{ display:flex; align-items:center; gap:10px; margin-bottom:14px; }
.opt-edit{ list-style:none; margin:0 0 6px; padding:0; display:flex; flex-direction:column; gap:6px; }
.opt-edit li{ display:flex; align-items:center; gap:6px; }
.opt-edit .input{ flex:1; }
.swatch-pick{ position:relative; width:22px; height:22px; border-radius:6px; background:var(--c); flex-shrink:0; box-shadow:inset 0 0 0 1px rgba(0,0,0,.12); cursor:pointer; }
.vf-aviso{ margin:-6px 0 12px; }
.var-form .field-2{ align-items:end; }

/* ---------- Painel da organização: listas de tags e variáveis ---------- */
.pn-toolbar{ display:flex; align-items:center; gap:10px; margin-bottom:12px; }
.meta-list{ list-style:none; margin:0; padding:0; }
.meta-row{ display:flex; align-items:center; gap:8px; padding:8px 0; border-bottom:1px solid var(--border); }
.meta-row:last-child{ border-bottom:none; }
.meta-main{ flex:1; min-width:0; display:flex; flex-direction:column; align-items:flex-start; gap:3px; }
.meta-main b{ font-size:13.5px; font-weight:500; }
.meta-main small{ font-size:12px; color:var(--text-muted); }
.meta-main small b{ font-size:12px; font-weight:600; }
.var-sym-lg .var-sym{ min-width:30px; height:26px; font-size:11px; border-radius:6px; }
.var-sym-lg .var-sym svg{ width:14px; height:14px; }
.member-note{ margin-left:6px; }

/* ---------- Regiões e fixação no painel de propriedades ---------- */
.insp-note{ display:flex; align-items:center; gap:8px; margin-top:12px; padding:8px 10px; border-radius:7px; background:var(--warning-soft); color:var(--warning); font-size:12.5px; }
.insp-note svg{ width:15px; height:15px; flex-shrink:0; }
.insp-note span{ flex:1; }
.insp-hint-top{ margin:0 0 8px !important; }
.insp-hint-top svg{ width:12px; height:12px; vertical-align:-2px; }
.reg-list{ list-style:none; margin:0; padding:0; max-height:260px; overflow:auto; border:1px solid var(--border); border-radius:7px; }
.reg-list li{ display:flex; align-items:center; gap:8px; padding:3px 4px 3px 10px; border-bottom:1px solid var(--border); font-size:12.5px; }
.reg-list li:last-child{ border-bottom:none; }
.reg-nome{ flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.reg-list small{ color:var(--text-faint); font-family:var(--font-mono); font-size:11px; white-space:nowrap; }
.reg-list .icon-btn{ width:24px; height:24px; }
.reg-list .icon-btn svg{ width:13px; height:13px; }
.pin-box{ display:flex; flex-direction:column; gap:10px; margin-top:12px; padding-top:12px; border-top:1px dashed var(--border); }
.switch-row.sm b{ display:inline-flex; align-items:center; gap:5px; font-size:12.5px; }
.switch-row.sm b svg{ width:13px; height:13px; }
.switch-row.sm small{ font-size:11.5px; }
.switch-row.sm .switch{ width:32px; height:18px; }
.switch-row.sm .switch::after{ width:14px; height:14px; }
.switch-row.sm input:checked + .switch::after{ transform:translateX(14px); }

/* ---------- Camadas: fixar ---------- */
.mf-pin{ opacity:0; }
.mf-pin.is-on{ opacity:1; color:var(--accent); }
.mf-row:hover .mf-pin,.mf-row.is-selected .mf-pin,.mf-pin:focus-visible{ opacity:1; }

/* ---------- Opacidade das áreas, busca de região, dados do KML ---------- */
.op-box{ margin-top:12px; display:flex; flex-direction:column; gap:4px; }
.op-label{ display:flex; justify-content:space-between; font-size:12.5px; color:var(--text-muted); }
.op-label .mono{ color:var(--text); }
.op-row{ display:flex; align-items:center; gap:10px; }
.op-row input[type="range"]{ flex:1; accent-color:var(--accent); }
.op-box .hint{ margin:0 !important; }
.fp-reg-busca{ display:flex; flex-direction:column; gap:4px; }
.fp-reg-lista{ list-style:none; margin:0; padding:2px 0; max-height:168px; overflow:auto; border:1px solid var(--border); border-radius:6px; background:var(--surface); }
.fp-reg-lista li{ display:flex; justify-content:space-between; gap:8px; padding:4px 9px; font-size:12.5px; cursor:pointer; }
.fp-reg-lista li small{ color:var(--text-faint); font-size:11px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.fp-reg-lista li:hover,.fp-reg-lista li.is-first{ background:var(--row-hover); }
.fp-reg-lista li.fp-reg-mais{ cursor:default; color:var(--text-faint); font-size:11.5px; }
.fp-reg-lista li.fp-reg-mais:hover{ background:none; }
.fp-reg-sel{ display:flex; align-items:center; gap:4px; padding:3px 3px 3px 8px; border:1px solid var(--accent); border-radius:6px; background:var(--accent-soft); }
.fp-reg-sel > span{ flex:1; min-width:0; display:flex; align-items:center; gap:6px; font-size:12.5px; }
.fp-reg-sel > span svg{ width:14px; height:14px; color:var(--accent); flex-shrink:0; }
.fp-reg-sel small{ color:var(--text-muted); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.fp-reg-sel .icon-btn{ width:22px; height:22px; }
.im-iw-dados{ border-collapse:collapse; margin:2px 0 6px; font-size:12px; }
.im-iw-dados th{ text-align:left; font-weight:500; color:#5b6673; padding:1px 10px 1px 0; white-space:nowrap; }
.im-iw-dados td{ padding:1px 0; }

/* ---------- Lista de regiões/elementos com caixas de seleção ---------- */
.el-busca{ margin-bottom:6px; }
.el-todos{ display:flex; align-items:center; gap:7px; padding:4px 4px 6px 10px; font-size:12.5px; cursor:pointer; }
.el-todos input,.el-item input{ margin:0; accent-color:var(--accent); flex-shrink:0; }
.el-todos small{ margin-left:auto; color:var(--text-faint); font-size:11.5px; }
.el-item{ flex:1; min-width:0; display:flex; align-items:center; gap:7px; cursor:pointer; }
.el-list li{ min-height:30px; }
.el-list li.el-vazio{ color:var(--text-faint); padding:8px 10px; }
.el-list li:has(input:not(:checked)) .reg-nome{ color:var(--text-faint); }

/* ---------- Rotação do GLB: mostrador tipo relógio ---------- */
.rot-box{ display:flex; align-items:center; gap:14px; }
.rot-num{ flex:1; min-width:0; }
.rot-num .input{ width:96px; }
.rot-num small{ font-size:11px; line-height:1.35; margin-top:2px; }
.dial{ width:124px; height:124px; flex-shrink:0; border-radius:50%; cursor:grab; touch-action:none; outline:none; }
.dial:focus-visible{ box-shadow:0 0 0 3px var(--accent-soft), 0 0 0 1px var(--accent); }
.dial.is-dragging{ cursor:grabbing; }
.dial.is-disabled{ opacity:.45; cursor:default; }
.dial svg{ width:100%; height:100%; display:block; overflow:visible; }
.dm-face{ fill:var(--surface-alt); stroke:var(--border-strong); stroke-width:1; }
.dm-g{ stroke:var(--text-muted); stroke-width:1.6; }
.dm-p{ stroke:var(--border-strong); stroke-width:1; }
.dial text{ font-family:var(--font-mono); font-size:8px; text-anchor:middle; fill:var(--text-faint); }
.dm-rosa text{ font-family:var(--font-ui); font-size:9px; font-weight:600; fill:var(--text-muted); }
.dm-arco{ fill:none; stroke:var(--accent); stroke-width:2; opacity:.55; }
.dm-ponteiro{ stroke:#e5484d; stroke-width:2.6; stroke-linecap:round; }
.dm-centro{ fill:var(--text); }
.dm-ponta{ fill:#e5484d; stroke:var(--surface); stroke-width:2; }
.dial:not(.is-disabled):hover .dm-ponta,.dial.is-dragging .dm-ponta{ r:7.5; }

/* ---------- Street View: esconde as ferramentas do mapa ---------- */
.map-area.is-streetview .map-toolbar,.map-area.is-streetview .map-hint{ display:none; }

/* ---------- Engrenagem da organização na barra de título ---------- */
.org-gear{ position:relative; }
.org-gear .org-dot{ position:absolute; top:1px; right:1px; }

/* ---------- Trava de posição do GLB ---------- */
.lock-btn{ height:24px; padding:0 8px; font-size:11.5px; letter-spacing:0; text-transform:none; font-weight:500; }
.lock-btn svg{ width:13px; height:13px; }
.lock-btn.is-on{ background:var(--warning-soft); color:var(--warning); border-color:color-mix(in srgb, var(--warning) 45%, transparent); }
.lock-chip{ margin-top:0; text-transform:none; letter-spacing:0; }
.lock-note{ margin:0 0 12px; }
.insp-section .hint kbd,.insp-hint kbd{ font-family:var(--font-mono); font-size:10.5px; padding:0 4px; border:1px solid var(--border-strong); border-radius:3px; background:var(--surface-alt); color:var(--text); }

/* ---------- Vários itens selecionados: resumo de parâmetros ---------- */
.rs-ico{ color:var(--accent); }
.rs-ico svg{ width:20px; height:20px; }
.rs-wrap{ overflow:auto; max-height:420px; border:1px solid var(--border); border-radius:8px; }
.rs-wrap.is-grande{ max-height:calc(100vh - 230px); margin-bottom:12px; }
.rs-tabela{ border-collapse:separate; border-spacing:0; font-size:12.5px; min-width:100%; }
.rs-tabela th,.rs-tabela td{ padding:6px 10px; border-bottom:1px solid var(--border); text-align:left; white-space:nowrap; vertical-align:middle; }
.rs-tabela thead th{ position:sticky; top:0; z-index:2; background:var(--surface-alt); font-size:11.5px; font-weight:600; color:var(--text-muted); }
.rs-tabela thead th .var-sym{ margin-right:5px; vertical-align:-3px; }
.rs-tabela .rs-item{ position:sticky; left:0; z-index:1; background:var(--surface); max-width:170px; border-right:1px solid var(--border); }
.rs-tabela thead .rs-item{ z-index:3; background:var(--surface-alt); }
.rs-tabela td.num{ text-align:right; }
.rs-tabela td .opt-chip{ margin:1px 0; }
.rs-tabela tfoot th,.rs-tabela tfoot td{ position:sticky; bottom:0; background:var(--surface-alt); border-bottom:none; border-top:2px solid var(--border-strong); }
.rs-tabela tfoot td small{ display:block; font-size:10.5px; color:var(--text-faint); }
.rs-tabela tfoot td b{ display:block; font-size:12.5px; color:var(--text); }
.rs-tabela tfoot .rs-item{ z-index:3; }
.rs-na{ color:var(--text-faint); font-size:11px; }
.rs-nome{ display:flex; align-items:center; gap:6px; max-width:100%; border:none; background:none; padding:0; color:var(--text); font:inherit; cursor:pointer; text-align:left; }
.rs-nome .fi{ width:15px; height:15px; flex-shrink:0; }
.rs-nome span{ overflow:hidden; text-overflow:ellipsis; }
.rs-nome:hover span{ color:var(--accent); text-decoration:underline; }
.rs-lista{ list-style:none; margin:8px 0 0; padding:0; display:flex; flex-direction:column; gap:4px; }
.crumb .ico, .crumb > svg{ width:14px; height:14px; }
.rs-totais{ display:flex; flex-direction:column; border:1px solid var(--border); border-radius:8px; overflow:hidden; }
.rs-total{ display:flex; align-items:center; justify-content:space-between; gap:10px; padding:7px 10px; border-bottom:1px solid var(--border); font-size:12.5px; }
.rs-total:last-child{ border-bottom:none; }
.rs-pnome{ display:flex; align-items:center; gap:6px; min-width:0; color:var(--text-muted); }
.rs-pnome > span:not(.var-sym):not(.tag){ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.rs-pnome .tag{ margin-left:0; }
.rs-tval{ display:flex; flex-direction:column; align-items:flex-end; flex-shrink:0; text-align:right; }
.rs-tval small{ font-size:10.5px; color:var(--text-faint); }
.rs-tval b{ font-size:13px; color:var(--text); }
.rs-sub{ margin:16px 0 8px; font-size:11px; font-weight:600; letter-spacing:.06em; text-transform:uppercase; color:var(--text-muted); }
.rs-cards{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:8px; }
.rs-card{ padding:9px 10px; border:1px solid var(--border); border-radius:8px; background:var(--surface); }
.rs-card .rs-nome{ font-weight:600; margin-bottom:6px; }
.rs-props{ grid-template-columns:minmax(90px, 42%) 1fr; gap:4px 10px; font-size:12.5px; }
.rs-card .hint{ margin:0; }

/* =====================================================================
   Aba Regiões (polígonos dos KML/KMZ)
   ===================================================================== */
#insp-regioes{ padding-top:12px; outline:none; }
.rg-topo{ position:sticky; top:-12px; z-index:2; margin:-12px -16px 10px; padding:12px 16px 8px; background:var(--surface); border-bottom:1px solid var(--border); display:flex; flex-direction:column; gap:8px; }
.rg-escopo{ display:flex; align-items:center; gap:8px; font-size:12.5px; color:var(--text-muted); }
.rg-escopo > span{ flex:1; min-width:0; display:flex; align-items:center; gap:6px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.rg-escopo svg{ width:14px; height:14px; color:var(--accent); flex-shrink:0; }
.rg-busca-row{ display:flex; gap:4px; }
.rg-busca-row .input{ flex:1; }
.rg-grupos{ list-style:none; margin:0 -8px; padding:0; outline:none; }
.rg-grupo + .rg-grupo{ border-top:1px solid var(--border); }
.rg-cab{ display:flex; align-items:center; gap:4px; height:32px; padding:0 4px 0 2px; border-radius:6px; cursor:pointer; }
.rg-cab:hover{ background:var(--row-hover); }
.rg-chev{ width:20px; height:20px; display:flex; align-items:center; justify-content:center; border:none; background:none; padding:0; color:var(--text-faint); flex-shrink:0; }
.rg-chev svg{ width:12px; height:12px; transition:transform .12s; }
.rg-grupo.is-open .rg-chev svg{ transform:rotate(90deg); }
.rg-cab input,.rg-row input{ accent-color:var(--accent); margin:0; flex-shrink:0; cursor:pointer; }
.rg-spin{ width:13px; display:flex; justify-content:center; flex-shrink:0; }
.rg-arq{ flex:1; min-width:0; display:flex; align-items:center; gap:6px; border:none; background:none; padding:0 0 0 4px; font:inherit; font-size:12.5px; font-weight:600; color:var(--text); text-align:left; cursor:pointer; }
.rg-arq .fi{ width:15px; height:15px; flex-shrink:0; }
.rg-arq span{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.rg-n{ font-family:var(--font-mono); font-size:10.5px; color:var(--text-faint); white-space:nowrap; }
.rg-ir{ width:24px; height:24px; opacity:0; }
.rg-ir svg{ width:14px; height:14px; }
.rg-cab:hover .rg-ir,.rg-ir:focus-visible{ opacity:1; }
.rg-lista{ list-style:none; margin:0 0 6px; padding:0; }
.rg-row{ display:flex; align-items:center; gap:7px; height:28px; padding:0 8px 0 28px; border-radius:6px; font-size:12.5px; }
.rg-row:hover{ background:var(--row-hover); }
.rg-row.is-sel{ background:var(--row-selected); }
.rg-nome{ flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; border:none; background:none; padding:0; font:inherit; color:var(--text); text-align:left; cursor:pointer; }
.rg-nome:hover{ color:var(--accent); text-decoration:underline; }
.rg-row .tr-tags{ margin-left:0; }
.rg-area{ font-family:var(--font-mono); font-size:10.5px; color:var(--text-faint); white-space:nowrap; }
.rg-vazio{ padding:28px 8px; }
.rg-vazio p{ font-size:12.5px; }
.rg-mais,.rg-ajuda{ margin-top:10px !important; }
.rg-nota{ margin-top:10px; font-size:12px; }
.rg-nota .link-btn{ font-size:12px; }
.rg-nav{ display:flex; align-items:center; gap:2px; margin:-4px 0 12px; }
.rg-nav .link-btn{ display:inline-flex; align-items:center; gap:4px; font-size:12.5px; margin-right:auto; }
.rg-nav .link-btn svg{ width:13px; height:13px; }
.rg-nav-pos{ font-family:var(--font-mono); font-size:11px; color:var(--text-faint); margin-right:4px; }
.rg-nav .icon-btn{ width:26px; height:26px; }
.rg-up svg{ transform:rotate(180deg); }
.rg-head-ico{ color:var(--accent); }
.rg-head-ico svg{ width:20px; height:20px; }
.rg-dd-arq{ overflow-wrap:anywhere; }
#insp-regioes .props + .insp-actions{ margin-top:12px; }
.rs-reg-ico{ display:inline-flex; color:var(--accent); flex-shrink:0; }
.rs-reg-ico svg{ width:14px; height:14px; }
/* Regiões no painel do arquivo */
.reg-resumo{ display:flex; align-items:center; gap:10px; margin-bottom:10px; }
.reg-resumo-n{ flex:1; display:flex; align-items:center; gap:6px; font-size:13px; }
.reg-resumo-n svg{ width:15px; height:15px; color:var(--accent); }
.reg-resumo-n b{ font-family:var(--font-mono); font-weight:500; }
/* "Vale para" (tags e parâmetros) */
.aplica-checks{ display:flex; flex-wrap:wrap; gap:6px; }
.aplica-chk{ display:inline-flex; align-items:center; gap:6px; padding:5px 10px 5px 8px; border:1px solid var(--border); border-radius:7px; font-size:13px; cursor:pointer; user-select:none; }
.aplica-chk input{ accent-color:var(--accent); margin:0; }
.aplica-chk:has(input:checked){ border-color:var(--accent); background:var(--accent-soft); }
.aplica-chk.is-off{ opacity:.5; cursor:not-allowed; }

/* =====================================================================
   Publicações (página pública de regiões)
   ===================================================================== */
.pb-form{ display:flex; flex-direction:column; gap:14px; }
.pb-cols{ display:grid; grid-template-columns:minmax(0,1.15fr) minmax(0,1fr); gap:14px 24px; align-items:start; }
.pb-col{ display:flex; flex-direction:column; gap:14px; min-width:0; }
@media (max-width: 760px){ .pb-cols{ grid-template-columns:1fr; } }
.pb-form .field{ margin:0; }
.pb-cores{ list-style:none; margin:0 0 6px; padding:0; display:flex; flex-direction:column; gap:6px; }
.pb-cor{ display:flex; flex-direction:column; gap:6px; padding:8px; border:1px solid var(--border); border-radius:8px; background:var(--surface-alt); }
.pb-cor-l1,.pb-cor-l2{ display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.pb-cor-l1 .select{ flex:1; }
.pb-cor-l2 .select{ flex:0 1 210px; }
.pb-cor-l2 .input{ flex:1 1 160px; min-width:0; }
.pb-cor .hint{ margin:0; }
.pb-cor-vazio{ padding:6px 2px; }
.pb-swatches{ display:inline-flex; gap:4px; margin-left:auto; }
.pb-sw{ width:20px; height:20px; border-radius:5px; border:2px solid transparent; background:var(--c); padding:0; box-shadow:inset 0 0 0 1px rgba(0,0,0,.12); }
.pb-sw.is-on{ border-color:var(--text); }
.pb-params{ display:flex; flex-wrap:wrap; gap:6px; margin-bottom:4px; }
.pb-params .aplica-chk span{ display:inline-flex; align-items:center; gap:6px; }
.pb-lista{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:4px; }
.pb-row{ display:flex; align-items:center; gap:8px; padding:6px 6px 6px 10px; border:1px solid var(--border); border-radius:8px; background:var(--surface); }
.pb-row.is-off{ opacity:.65; }
.pb-ico{ display:flex; color:var(--accent); flex-shrink:0; }
.pb-ico svg{ width:15px; height:15px; }
.pb-main{ flex:1; min-width:0; display:flex; flex-direction:column; }
.pb-main b{ font-size:13px; font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pb-main small{ font-size:11.5px; color:var(--text-muted); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pb-on{ color:var(--accent); font-weight:600; }
.pb-row .icon-btn[disabled]{ opacity:.35; cursor:default; }
.pb-aba{ display:flex; flex-direction:column; gap:6px; align-items:flex-start; }
.pb-aba .pb-lista{ width:100%; }
.pb-aba .pb-row{ padding:4px 4px 4px 8px; }

/* =====================================================================
   Fotos no mapa
   ===================================================================== */
.tr-badge.is-foto{ color:var(--text-faint); }
.tr-badge.is-foto svg{ width:12px; height:12px; }
.map-tool.is-active{ border-color:var(--accent); color:var(--accent); background:var(--accent-soft); }
.fotos-card{ position:absolute; left:10px; bottom:28px; z-index:11; width:min(330px, calc(100% - 20px)); padding:8px 8px 10px 10px; border:1px solid var(--border); border-radius:10px; background:var(--surface); box-shadow:var(--shadow); display:flex; flex-direction:column; gap:6px; }
.fc-cab{ display:flex; align-items:center; gap:6px; }
.fc-ico{ display:flex; width:26px; height:26px; border-radius:7px; align-items:center; justify-content:center; background:var(--accent-soft); color:var(--accent); flex-shrink:0; }
.fc-ico svg{ width:15px; height:15px; }
.fc-tit{ flex:1; min-width:0; display:flex; flex-direction:column; line-height:1.25; }
.fc-tit b{ font-size:12.5px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.fc-tit small{ font-size:11.5px; color:var(--text-muted); }
.fc-periodo{ display:flex; align-items:center; gap:5px; font-size:12px; color:var(--text-muted); }
.fc-periodo .input{ flex:1; min-width:0; min-height:28px; padding:2px 6px; font-size:12px; }
.fc-hint{ display:flex; align-items:center; gap:6px; margin:0 !important; }
.map-area.is-streetview .fotos-card{ display:none; }
/* Janela da foto (InfoWindow do Google: fundo sempre claro) */
.im-foto{ font-family:var(--font-ui); width:240px; display:flex; flex-direction:column; gap:3px; color:#1a2330; }
.im-foto-img{ width:100%; height:160px; border-radius:6px; background:#eef1f5; display:flex; align-items:center; justify-content:center; overflow:hidden; margin-bottom:5px; text-align:center; padding:0 10px; }
.im-foto-img small{ color:#5b6673; }
.im-foto-img img{ width:100%; height:100%; object-fit:cover; cursor:zoom-in; }
.im-foto strong{ font-size:13px; overflow-wrap:anywhere; }
.im-foto small{ font-size:11.5px; color:#5b6673; }
.im-foto-abrir{ align-self:flex-start; margin-top:6px; border:none; background:none; padding:0; color:#15803d; font:inherit; font-size:12.5px; font-weight:600; cursor:pointer; }
.im-foto-abrir:hover{ text-decoration:underline; }
/* Relatório: foto com localização */
.photo{ position:relative; }
.photo-map{ position:absolute; top:6px; right:6px; width:26px; height:26px; display:flex; align-items:center; justify-content:center; border:none; border-radius:50%; background:rgba(21,128,61,.92); color:#fff; box-shadow:0 1px 4px rgba(0,0,0,.3); padding:0; }
.photo-map svg{ width:14px; height:14px; }
.rel-mapa{ display:flex; align-items:center; flex-wrap:wrap; gap:6px 10px; margin-top:12px; }
.rel-mapa .hint{ font-size:12px; }
.rel-mapa-hint{ margin-top:10px; }
.photo-quando{ display:block; font-size:11px; color:var(--text-faint); margin-top:2px; }
.btn.is-on{ border-color:var(--accent); color:var(--accent); background:var(--accent-soft); }

/* =====================================================================
   Dashboard da organização (por cima da área de trabalho)
   Marcas de dados numa cor só (série única), separada do verde da interface.
   ===================================================================== */
:root{ --dash-bar:#2a78d6; --dash-bar-soft:color-mix(in srgb, #2a78d6 14%, transparent); }
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]){ --dash-bar:#3987e5; --dash-bar-soft:color-mix(in srgb, #3987e5 18%, transparent); } }
:root[data-theme="dark"]{ --dash-bar:#3987e5; --dash-bar-soft:color-mix(in srgb, #3987e5 18%, transparent); }

.tb-dash{ gap:6px; height:28px; padding:0 10px; font-weight:500; }
.tb-dash svg{ width:15px; height:15px; }
.tb-dash.is-active{ background:var(--accent-soft); color:var(--accent); }
.dashboard{ position:fixed; z-index:35; top:38px; bottom:24px; left:0; right:0; overflow:auto; background:var(--bg); outline:none; }
.dashboard[hidden]{ display:none; }
.dash-wrap{ max-width:1320px; margin:0 auto; padding:20px 24px 40px; display:flex; flex-direction:column; gap:16px; }
.dash-loading{ display:flex; align-items:center; gap:10px; justify-content:center; padding:80px 0; color:var(--text-muted); }
.dash-loading .spinner{ width:16px; height:16px; border:2px solid var(--border-strong); border-top-color:var(--accent); border-radius:50%; animation:spin .8s linear infinite; }

.dash-head{ display:flex; align-items:flex-end; gap:12px; flex-wrap:wrap; }
.dash-tit{ flex:1; min-width:0; }
.dash-tit h1{ margin:0; font-size:22px; letter-spacing:-.015em; }
.dash-org{ font-size:12.5px; color:var(--text-muted); }
.dash-acoes{ display:flex; gap:6px; flex-wrap:wrap; }
.dash-acoes .btn svg, .dash-filtros .btn svg, .dash-h .btn svg{ width:14px; height:14px; }
.dash-spacer{ flex:1; }

.dash-filtros{ display:flex; align-items:center; gap:10px 14px; flex-wrap:wrap; padding:10px 12px; border:1px solid var(--border); border-radius:10px; background:var(--surface); position:sticky; top:0; z-index:3; }
.dash-medida{ display:flex; align-items:center; gap:8px; font-size:12.5px; color:var(--text-muted); }
.dash-medida .select{ max-width:280px; }
.dash-chips{ display:flex; align-items:center; gap:6px; flex-wrap:wrap; min-width:0; }
.dash-chip{ display:inline-flex; align-items:center; gap:6px; padding:3px 6px 3px 9px; border-radius:999px; border:1px solid var(--border-strong); background:var(--surface-alt); color:var(--text); font-size:12.5px; }
.dash-chip small{ color:var(--text-muted); font-size:11px; }
.dash-chip i{ width:8px; height:8px; border-radius:50%; }
.dash-chip svg{ width:12px; height:12px; color:var(--text-muted); }
.dash-chip:hover{ border-color:var(--text-muted); }
.dash-aviso{ margin:0; }

/* Totais */
.dash-kpis{ display:grid; grid-template-columns:repeat(auto-fill, minmax(190px, 1fr)); gap:10px; }
.kpi{ display:flex; flex-direction:column; gap:2px; padding:14px 16px; border:1px solid var(--border); border-radius:10px; background:var(--surface); min-width:0; }
.kpi-rot{ font-size:12px; color:var(--text-muted); line-height:1.35; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; min-height:2.7em; }
.kpi-val{ font-family:var(--font-mono); font-size:24px; font-weight:500; letter-spacing:-.02em; color:var(--text); line-height:1.25; overflow-wrap:anywhere; }
.kpi small{ font-size:11.5px; color:var(--text-faint); }
.kpi-main{ border-color:var(--border-strong); }
.kpi-alerta .kpi-val{ color:var(--warning); }

/* Cartões e gráficos */
.dash-grid{ display:grid; grid-template-columns:repeat(auto-fill, minmax(380px, 1fr)); gap:12px; align-items:start; }
.dash-card{ border:1px solid var(--border); border-radius:10px; background:var(--surface); padding:14px 16px 12px; min-width:0; }
.dash-h{ display:flex; align-items:center; gap:7px; margin:0 0 12px; font-size:13px; font-weight:600; color:var(--text); }
.dash-h > svg{ width:15px; height:15px; color:var(--text-muted); flex-shrink:0; }
.dash-h > span{ flex:1; min-width:0; }
.dash-h small{ font-weight:400; color:var(--text-faint); font-size:11.5px; }
.dash-h .select{ max-width:200px; margin-left:auto; }
.dash-n{ font-family:var(--font-mono); font-weight:500; font-size:11.5px; color:var(--text-muted); background:var(--surface-alt); border:1px solid var(--border); border-radius:999px; padding:0 7px; margin-left:4px; }
.dash-nota{ margin:8px 0 0; font-size:11.5px; }
.dash-mais{ margin-top:6px; }

.bars{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:2px; }
.bar-row{ display:grid; grid-template-columns:minmax(90px, 46%) minmax(0,1fr) auto; align-items:center; gap:10px; width:100%; min-height:30px; padding:3px 6px; border:1px solid transparent; border-radius:7px; background:none; color:var(--text); text-align:left; cursor:pointer; }
.bar-row:hover{ background:var(--row-hover); }
.bar-row:focus-visible{ outline:2px solid var(--accent); outline-offset:1px; }
.bar-row.is-on{ border-color:var(--border-strong); background:var(--surface-alt); }
.bar-row.is-off .bar-fill{ opacity:.3; }
.bar-row.is-off .bar-lbl, .bar-row.is-off .bar-val{ color:var(--text-faint); }
.bar-lbl{ display:flex; align-items:center; gap:7px; min-width:0; font-size:12.5px; }
.bar-lbl span{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.bar-lbl i{ width:8px; height:8px; border-radius:50%; flex-shrink:0; }
.bar-lbl i.is-vazio{ background:none; box-shadow:inset 0 0 0 1.5px var(--border-strong); }
.bar-row.is-neutra .bar-lbl span{ color:var(--text-muted); font-style:italic; }
.bar-trk{ height:18px; display:flex; align-items:center; }
.bar-fill{ display:block; height:14px; max-height:24px; background:var(--dash-bar); border-radius:0 4px 4px 0; transition:width .2s ease; }
.bar-row.is-neutra .bar-fill{ background:var(--text-faint); }
.bar-val{ font-family:var(--font-mono); font-size:12px; color:var(--text); min-width:44px; text-align:right; white-space:nowrap; }

/* Linha do tempo */
.dash-tempo{ grid-column:1 / -1; }
.cols{ display:grid; grid-template-columns:repeat(var(--n), minmax(0, 1fr)); gap:2px; height:190px; align-items:end; padding-bottom:20px; position:relative; border-bottom:1px solid var(--border); }
.col{ position:relative; height:100%; display:flex; flex-direction:column; justify-content:flex-end; align-items:center; border-radius:4px; outline:none; }
.col:hover, .col:focus-visible{ background:var(--row-hover); }
.col-bar{ display:block; width:min(24px, 70%); background:var(--dash-bar); border-radius:4px 4px 0 0; }
.col-val{ font-family:var(--font-mono); font-size:10.5px; color:var(--text-muted); margin-bottom:3px; white-space:nowrap; }
.col-lbl{ position:absolute; bottom:-19px; font-size:10.5px; color:var(--text-muted); white-space:nowrap; }
@media (max-width: 900px){ .col-val{ display:none; } }

/* Prazos */
.dash-prazos ul{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; }
.dash-prazos li{ display:flex; align-items:center; gap:10px; padding:5px 0; border-top:1px solid var(--border); }
.dash-prazos li:first-child{ border-top:none; }
.dash-prazo{ display:flex; flex-direction:column; align-items:flex-end; font-family:var(--font-mono); font-size:12px; white-space:nowrap; }
.dash-prazo small{ font-family:var(--font-ui); font-size:11px; color:var(--text-faint); }
.dash-prazo.is-perto small{ color:var(--warning); font-weight:600; }
.dash-item{ flex:1; min-width:0; display:flex; flex-direction:column; align-items:flex-start; border:none; background:none; padding:0; text-align:left; color:var(--text); cursor:pointer; }
.dash-item-nome{ color:var(--accent); font-weight:500; overflow-wrap:anywhere; }
.dash-item:hover .dash-item-nome{ text-decoration:underline; }
.dash-item small{ font-size:11px; color:var(--text-faint); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; max-width:100%; }

/* Tabela */
.dash-tab-wrap{ overflow:auto; max-height:560px; border:1px solid var(--border); border-radius:8px; }
.dash-tab{ width:100%; border-collapse:collapse; font-size:12.5px; }
.dash-tab th{ position:sticky; top:0; background:var(--surface-alt); text-align:left; font-weight:600; border-bottom:1px solid var(--border); white-space:nowrap; z-index:1; }
.dash-tab th button{ border:none; background:none; padding:7px 10px; font:inherit; color:var(--text-muted); cursor:pointer; width:100%; text-align:inherit; }
.dash-tab th button:hover{ color:var(--text); }
.dash-tab td{ padding:6px 10px; border-bottom:1px solid var(--border); vertical-align:top; }
.dash-tab td:first-child{ min-width:240px; max-width:360px; }
.dash-cel{ display:block; max-width:240px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.dash-tab .num .dash-cel{ max-width:none; }
.dash-tab td:last-child .dash-cel{ max-width:300px; }
.dash-tab a{ color:var(--accent); }
.dash-tab tr:last-child td{ border-bottom:none; }
.dash-tab .num{ text-align:right; font-family:var(--font-mono); white-space:nowrap; }
.dash-tab td.is-herdado{ color:var(--text-muted); }
.dash-tab .dash-item-nome{ font-weight:500; }
.dash-dot{ display:inline-block; width:7px; height:7px; border-radius:50%; margin-right:6px; vertical-align:1px; }

.dash-tip{ position:fixed; z-index:60; max-width:320px; padding:7px 10px; border-radius:7px; background:var(--text); color:var(--surface); font-size:12px; line-height:1.4; pointer-events:none; box-shadow:var(--shadow); }
.dash-tip[hidden]{ display:none; }

/* Vazio */
.dash-vazio{ max-width:620px; margin:40px auto; text-align:center; padding:32px 24px; border:1px dashed var(--border-strong); border-radius:14px; background:var(--surface); }
.dash-vazio-ico{ width:48px; height:48px; margin:0 auto 12px; display:flex; align-items:center; justify-content:center; border-radius:12px; background:var(--dash-bar-soft); color:var(--dash-bar); }
.dash-vazio-ico svg{ width:24px; height:24px; }
.dash-vazio h2{ margin:0 0 8px; font-size:17px; }
.dash-vazio p{ color:var(--text-muted); margin:0 0 14px; }
.dash-vazio-acoes{ display:flex; gap:8px; justify-content:center; flex-wrap:wrap; margin-bottom:10px; }
.dash-vazio-acoes svg{ width:15px; height:15px; }

/* Configuração */
.dc-form{ display:flex; flex-direction:column; gap:14px; }
.dc-lista{ list-style:none; margin:0; padding:0; border:1px solid var(--border); border-radius:8px; max-height:240px; overflow:auto; }
.dc-lista li{ display:flex; align-items:center; gap:4px; padding:3px 6px 3px 10px; border-top:1px solid var(--border); }
.dc-lista li:first-child{ border-top:none; }
.dc-lista .dc-chk{ flex:1; }
.dc-chk{ display:inline-flex; align-items:center; gap:7px; font-size:13px; cursor:pointer; min-width:0; }
.dc-chk input{ accent-color:var(--accent); margin:0; }
.dc-chk small{ color:var(--text-faint); font-size:11px; }
.dc-checks{ display:flex; flex-wrap:wrap; gap:6px 16px; }

@media (max-width: 760px){
  .dash-wrap{ padding:14px 12px 32px; }
  .dash-grid, .dash-alertas{ grid-template-columns:minmax(0,1fr); }
  .tb-dash span{ display:none; }
  .tb-dash{ width:28px; padding:0; justify-content:center; }
  .dash-filtros{ position:static; }
  .kpi-val{ font-size:19px; }
  .dash-kpis{ grid-template-columns:repeat(2, minmax(0, 1fr)); gap:8px; }
  .kpi{ padding:11px 12px; }
}

/* =====================================================================
   Importar planilha
   ===================================================================== */
.imp{ display:flex; flex-direction:column; gap:14px; }
.imp-passos{ display:flex; gap:6px; list-style:none; margin:0; padding:0; flex-wrap:wrap; }
.imp-passos li{ display:flex; align-items:center; gap:7px; padding:5px 12px 5px 6px; border-radius:999px; font-size:12.5px; color:var(--text-muted); background:var(--surface-alt); border:1px solid var(--border); }
.imp-passos b{ display:inline-flex; width:20px; height:20px; align-items:center; justify-content:center; border-radius:50%; background:var(--border); color:var(--text-muted); font-size:11px; }
.imp-passos li.is-on{ color:var(--text); border-color:var(--accent); }
.imp-passos li.is-on b{ background:var(--accent); color:#fff; }
.imp-passos li.is-ok b{ background:var(--accent-soft); color:var(--accent); }
.imp-corpo{ display:flex; flex-direction:column; gap:14px; }
.imp-ajuda{ margin:0; font-size:13px; color:var(--text-muted); }
.imp-drop{ display:flex; flex-direction:column; align-items:center; gap:6px; padding:26px 16px; border:1.5px dashed var(--border-strong); border-radius:12px; text-align:center; cursor:pointer; background:var(--surface-alt); }
.imp-drop:hover, .imp-drop.is-over, .imp-drop:focus-visible{ border-color:var(--accent); background:var(--accent-soft); outline:none; }
.imp-drop svg{ width:22px; height:22px; color:var(--accent); }
.imp-drop span{ font-size:12.5px; color:var(--text-muted); }
.imp-prev-wrap, .imp-cols-wrap{ overflow:auto; border:1px solid var(--border); border-radius:8px; }
.imp-prev-wrap{ max-height:220px; }
.imp-prev{ border-collapse:collapse; font-size:12px; }
.imp-prev td{ padding:4px 8px; border-bottom:1px solid var(--border); white-space:nowrap; max-width:220px; overflow:hidden; text-overflow:ellipsis; }
.imp-prev tr.is-cab td{ font-weight:600; background:var(--accent-soft); }
.modal.panel.is-importar{ min-width:min(920px, calc(100vw - 32px)); }
/* Só a tabela de colunas define a largura; o resto acompanha */
.imp-corpo > *:not(.imp-cols-wrap){ width:0; min-width:100%; }
.imp-cols-wrap{ overflow:visible; }
.imp-cols{ width:100%; border-collapse:collapse; font-size:12.5px; }
.imp-cols th{ position:sticky; top:-1px; z-index:2; background:var(--surface-alt); text-align:left; font-weight:600; color:var(--text-muted); padding:7px 8px; border-bottom:1px solid var(--border); white-space:nowrap; }
.imp-cols td{ padding:5px 8px; border-bottom:1px solid var(--border); vertical-align:middle; }
.imp-cols td:first-child b{ display:block; font-weight:600; max-width:220px; }
.imp-cols td small{ display:block; font-size:11px; color:var(--text-faint); }
.imp-cols .num{ text-align:right; font-family:var(--font-mono); }
.imp-cols tr.is-ign td:not(:nth-child(4)){ opacity:.5; }
.imp-cols .select, .imp-cols .input{ min-width:0; }
.imp-cols td:nth-child(4) .select{ width:140px; }
.imp-cols td:nth-child(5) .select{ width:150px; }
.imp-ex{ max-width:260px; }
.imp-ex span{ display:block; width:fit-content; max-width:220px; margin:2px 0; padding:0 6px; border-radius:4px; background:var(--surface-alt); border:1px solid var(--border); font-size:11.5px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; vertical-align:middle; }
.imp-par{ display:flex; flex-wrap:wrap; gap:4px; }
.imp-par .input{ width:150px; }
.imp-par .select{ width:112px; }
.imp-arvore{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; font-size:13px; }
.imp-arvore span{ padding:4px 10px; border-radius:7px; background:var(--surface-alt); border:1px solid var(--border); }
.imp-arvore b{ font-family:var(--font-mono); color:var(--accent); margin-right:3px; }
.imp-arvore i{ color:var(--text-faint); font-style:normal; }
.imp-sug .btn{ margin-left:6px; }
.imp-dest{ display:flex; flex-direction:column; gap:6px; margin:4px 0; }
.imp-map{ border:1px solid var(--border); border-radius:10px; padding:12px 14px; }
.imp-map h3{ margin:0 0 10px; font-size:13.5px; }
.imp-map h3 small{ font-weight:400; color:var(--text-faint); margin-left:6px; }
.imp-map-grid{ display:grid; grid-template-columns:repeat(auto-fill, minmax(420px, 1fr)); gap:4px 16px; }
.imp-map-row{ display:grid; grid-template-columns:minmax(0, 1fr) auto minmax(0, 1fr); align-items:center; gap:8px; font-size:12.5px; }
.imp-map-orig{ display:flex; gap:6px; align-items:baseline; min-width:0; }
.imp-map-orig{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.imp-map-orig small{ font-family:var(--font-mono); color:var(--text-faint); font-size:11px; }
.imp-map-row > span[aria-hidden]{ color:var(--text-faint); }
.imp-resumo{ display:grid; grid-template-columns:repeat(auto-fit, minmax(170px, 1fr)); gap:10px; }
.imp-avisos{ margin:0; padding-left:18px; font-size:12.5px; color:var(--text-muted); display:flex; flex-direction:column; gap:4px; }
.imp-prog{ display:flex; align-items:center; gap:10px; font-size:12.5px; color:var(--text-muted); }
.imp-prog[hidden]{ display:none; }
.imp-prog-bar{ flex:0 0 240px; height:6px; border-radius:3px; background:var(--border); overflow:hidden; }
.imp-prog-bar i{ display:block; height:100%; width:0; background:var(--accent); transition:width .2s; }
.imp-fim{ text-align:center; padding:20px 0 8px; }
.imp-fim h2{ margin:0 0 6px; font-size:18px; }
.imp-fim p{ color:var(--text-muted); margin:0 0 14px; }
.imp-fim .dash-vazio-ico{ background:var(--accent-soft); color:var(--accent); }
@media (max-width: 760px){
  .imp-resumo{ grid-template-columns:minmax(0,1fr); }
  .imp-map-grid{ grid-template-columns:minmax(0,1fr); }
}
.imp-extra{ display:flex; flex-direction:column; gap:2px; font-size:12px; }

/* Barra de título no celular: cabe o botão do dashboard sem cobrir a organização */
@media (max-width: 480px){
  .titlebar .brand-name{ display:none; }
  .titlebar-divider{ margin:0 2px; }
  .titlebar{ gap:2px; padding:0 6px; }
}

/* =====================================================================
   Parâmetro do tipo tabela (várias linhas por item)
   ===================================================================== */
.tb-h{ gap:6px; }
.tb-tit{ display:flex; align-items:center; gap:6px; min-width:0; flex:1; }
.tb-tit > svg{ width:14px; height:14px; flex-shrink:0; color:var(--text-muted); }
.tb-tit > span:first-of-type{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.tb-tit .tab-count{ text-transform:none; letter-spacing:0; }
.tb-h .var-menu{ opacity:1; width:22px; height:22px; }
.tb-desc{ display:block; margin:-4px 0 8px; }
.tb-wrap{ overflow:auto; max-height:340px; border:1px solid var(--border); border-radius:8px; background:var(--surface); }
.tb-wrap.is-grande{ max-height:calc(100vh - 330px); }
.tb{ border-collapse:separate; border-spacing:0; font-size:12.5px; min-width:100%; }
.tb th,.tb td{ padding:5px 8px; border-bottom:1px solid var(--border); text-align:left; white-space:nowrap; vertical-align:middle; }
.tb thead th{ position:sticky; top:0; z-index:1; background:var(--surface-alt); font-size:11.5px; font-weight:600; color:var(--text-muted); }
.tb .num{ text-align:right; }
.tb td.num{ font-family:var(--font-mono); font-size:12px; }
.tb .tb-n{ width:1%; color:var(--text-faint); font-family:var(--font-mono); font-size:11px; text-align:right; padding-right:6px; }
.tb tbody tr:last-child td{ border-bottom:none; }
.tb tbody tr.is-edit{ cursor:pointer; }
.tb tbody tr.is-edit:hover td{ background:var(--row-hover); }
.tb tbody tr.is-edit:focus-visible{ outline:2px solid var(--accent); outline-offset:-2px; }
.tb tbody tr.is-on td{ background:var(--row-selected); }
.tb td .opt-chip{ margin:1px 0; }
.tb tfoot th,.tb tfoot td{ position:sticky; bottom:0; background:var(--surface-alt); border-bottom:none; border-top:2px solid var(--border-strong); }
.tb tfoot b{ font-size:12px; color:var(--text); font-weight:600; }
.tb-acoes{ margin-top:8px; }
.tb-acoes .btn svg,.tb-form .btn svg{ width:14px; height:14px; }
.tb-form{ margin-top:10px; padding:10px 10px 8px; border:1px solid var(--border-strong); border-radius:9px; background:var(--surface-alt); }
.tb-form-h{ display:flex; align-items:baseline; gap:8px; flex-wrap:wrap; margin-bottom:8px; font-size:12.5px; }
.tb-form-h small{ color:var(--text-faint); font-size:11.5px; }
.tb-campos{ display:grid; grid-template-columns:1fr; gap:8px; }
.tb-form.is-grande .tb-campos{ grid-template-columns:repeat(auto-fill, minmax(200px, 1fr)); gap:10px 14px; }
.tb-campo{ margin:0; gap:3px; }
.tb-campo > label{ display:flex; align-items:center; gap:5px; font-size:12px; }
.tb-campo .var-sym{ transform:scale(.9); }
.tb-form .tb-erro{ margin-top:8px; }
.tb-form-acoes{ display:flex; align-items:center; gap:6px; margin-top:10px; }
.tb-sec.is-grande .tb-h{ font-size:12px; }

/* Editor de colunas (no editor de parâmetro) */
.col-edit{ list-style:none; margin:0 0 6px; padding:0; display:flex; flex-direction:column; gap:6px; }
.col-edit li{ display:grid; grid-template-columns:18px minmax(0,1fr) 130px auto; align-items:center; gap:6px; }
.col-edit .col-n{ font-family:var(--font-mono); font-size:11px; color:var(--text-faint); text-align:right; }
.col-edit .col-btns{ display:flex; gap:0; }
.col-edit .col-btns .icon-btn{ width:24px; height:24px; font-size:13px; }
.col-edit .col-btns .icon-btn svg{ width:13px; height:13px; }
.col-edit .col-ops{ grid-column:2 / -1; }
@media (max-width: 520px){ .col-edit li{ grid-template-columns:18px minmax(0,1fr) auto; } .col-edit li select{ grid-column:2 / 3; } }

/* Importador: outras abas como tabelas */
.imp-tab{ border:1px solid var(--border); border-radius:10px; padding:12px 14px; margin-bottom:12px; background:var(--surface); }
.imp-tab.is-off{ background:var(--surface-alt); }
.imp-tab-usar{ font-size:13.5px; }
.imp-tab-usar small{ color:var(--text-faint); margin-left:6px; font-size:12px; }
.imp-tab-campos{ display:grid; grid-template-columns:minmax(180px, 1.2fr) 130px minmax(260px, 2fr); gap:10px 14px; margin:12px 0 4px; }
.imp-tab-campos .field{ margin:0; }
.imp-lig-par{ display:flex; align-items:center; gap:6px; }
.imp-lig-par .select{ flex:1; min-width:0; }
.imp-lig-par > span{ color:var(--text-faint); }
.imp-tab-res{ display:flex; align-items:flex-start; gap:6px; margin:6px 0 10px; font-size:12.5px; color:var(--success); }
.imp-tab-res svg{ width:15px; height:15px; flex-shrink:0; margin-top:1px; }
.imp-tab-res.is-erro{ color:var(--danger); }
.imp-tab-res span{ color:var(--text-muted); }
.imp-tab-res.is-erro span{ color:var(--danger); }
.imp-tab-cols{ width:100%; }
@media (max-width: 760px){ .imp-tab-campos{ grid-template-columns:1fr; } }

/* ===== Foto de perfil e logo (09_imagens.sql) ===== */
.avatar,.org-avatar{ overflow:hidden; position:relative; }
.avatar > img,.org-avatar > img{ position:absolute; inset:0; width:100%; height:100%; display:block; }
.avatar > img{ object-fit:cover; border-radius:inherit; }
.org-avatar > img{ object-fit:contain; }
.org-avatar.has-img{ background:#fff; box-shadow:inset 0 0 0 1px var(--border); }
.avatar.has-img{ background:var(--surface-alt); }
.avatar.lg{ width:40px; height:40px; font-size:14px; }
.avatar.xl,.org-avatar.xl{ width:76px; height:76px; font-size:26px; }
.org-avatar.xl{ border-radius:16px; }
.user-dd-head{ flex-direction:row; align-items:center; gap:10px; }
.user-dd-txt{ display:flex; flex-direction:column; min-width:0; }
.img-campo{ display:flex; align-items:center; gap:16px; width:100%; }
.img-campo-txt{ display:flex; flex-direction:column; gap:3px; min-width:0; }
.img-campo-acoes{ display:flex; gap:6px; margin-top:6px; flex-wrap:wrap; }
.img-campo-acoes label.btn{ cursor:pointer; }
#pf-img{ padding-bottom:16px; margin-bottom:14px; border-bottom:1px solid var(--border); }
.cfg-logo{ display:block; }
.dash-org{ display:inline-flex; align-items:center; gap:7px; }

/* ===== Assistente (chat com os dados) — no painel direito ===== */
.side-right.chat-on > :not(.ast){ display:none !important; }
.ast{ display:flex; flex-direction:column; flex:1; min-height:0; background:var(--surface); }
.ast[hidden]{ display:none; }
.ast-fab{ position:absolute; z-index:40; right:16px; bottom:16px; width:52px; height:52px; border-radius:50%; border:none;
  display:flex; align-items:center; justify-content:center; background:var(--accent); color:var(--accent-contrast, #fff); box-shadow:var(--shadow-lg); cursor:pointer;
  transition:transform .15s ease, box-shadow .15s ease; }
.ast-fab:hover{ transform:translateY(-2px) scale(1.04); }
.ast-fab:focus-visible{ outline:3px solid color-mix(in srgb, var(--accent) 45%, transparent); outline-offset:2px; }
.ast-fab svg{ width:24px; height:24px; }
.ast-fab[hidden]{ display:none; }
/* o conteúdo do painel rola até passar do botão */
body.com-assistente .side-right .inspector-body{ padding-bottom:84px; }
/* painel direito fechado: o botão fica no canto do mapa, acima dos créditos do Google */
.workbench.right-off .ast-fab{ bottom:30px; }
.ast-head{ display:flex; align-items:center; gap:6px; padding:8px 8px 8px 12px; border-bottom:1px solid var(--border); }
.ast-tit{ display:flex; align-items:center; gap:7px; flex:1; min-width:0; font-size:13.5px; }
.ast-tit svg{ width:16px; height:16px; color:var(--accent); }
.ast-uso{ font-size:11.5px; color:var(--text-muted); padding:2px 7px; border-radius:999px; background:var(--surface-alt); white-space:nowrap; }
.ast-uso.alto{ color:var(--danger); background:var(--danger-soft); }
.ast-msgs{ flex:1; overflow:auto; padding:12px; display:flex; flex-direction:column; gap:10px; scroll-behavior:smooth; }
.ast-msg{ max-width:92%; font-size:13.5px; line-height:1.5; overflow-wrap:anywhere; }
.ast-msg.eu{ align-self:flex-end; background:var(--accent-soft); color:var(--text); padding:8px 11px; border-radius:12px 12px 3px 12px; }
.ast-msg.ia{ align-self:flex-start; max-width:100%; }
.ast-msg.ia.recusa{ color:var(--text-muted); font-style:italic; }
.ast-msg p{ margin:0 0 8px; } .ast-msg p:last-child{ margin-bottom:0; }
.ast-msg h3,.ast-msg h4{ margin:12px 0 6px; font-size:14px; } .ast-msg h3:first-child,.ast-msg h4:first-child{ margin-top:0; }
.ast-msg ul,.ast-msg ol{ margin:0 0 8px; padding-left:20px; } .ast-msg li{ margin:2px 0; } .ast-msg li.sub{ margin-left:16px; }
.ast-msg code{ font-family:var(--font-mono, monospace); font-size:12px; background:var(--surface-alt); padding:1px 4px; border-radius:4px; }
.ast-msg pre{ font-size:12px; background:var(--surface-alt); padding:8px; border-radius:6px; overflow:auto; white-space:pre-wrap; }
.ast-msg mark{ background:color-mix(in srgb, #facc15 40%, transparent); color:inherit; border-radius:2px; }
.ast-msg a{ color:var(--accent); }
.ast-msg .btn{ margin-top:8px; }
.ast-tabela{ overflow:auto; margin:4px 0 8px; border:1px solid var(--border); border-radius:6px; }
.ast-tabela table{ border-collapse:collapse; width:100%; font-size:12.5px; }
.ast-tabela th,.ast-tabela td{ padding:5px 8px; border-bottom:1px solid var(--border); text-align:left; vertical-align:top; }
.ast-tabela th{ background:var(--surface-alt); font-weight:600; white-space:nowrap; }
.ast-tabela tr:last-child td{ border-bottom:none; }
.ast-ref{ display:inline-flex; align-items:center; gap:4px; max-width:100%; padding:0 6px 0 4px; margin:0 1px; height:21px; vertical-align:-4px; border:1px solid var(--border); border-radius:6px; background:var(--surface); color:var(--text); font:inherit; font-size:12.5px; cursor:pointer; }
.ast-ref:hover{ border-color:var(--accent); color:var(--accent); }
.ast-ref svg{ width:14px; height:14px; flex-shrink:0; }
.ast-ref span{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ast-passo{ align-self:flex-start; font-size:11.5px; color:var(--text-muted); padding-left:2px; }
.ast-passo::before{ content:"↳ "; }
.ast-pensando{ display:flex; align-items:center; gap:8px; font-size:12.5px; color:var(--text-muted); }
.ast-pensando .spinner{ width:14px; height:14px; }
.ast-erro{ display:flex; gap:8px; align-items:flex-start; font-size:12.5px; color:var(--danger); background:var(--danger-soft); padding:8px 10px; border-radius:8px; }
.ast-erro svg{ width:15px; height:15px; flex-shrink:0; margin-top:1px; }
.ast-autorizar{ border:1px solid var(--accent); background:var(--accent-soft); border-radius:10px; padding:10px 12px; font-size:13px; }
.ast-autorizar p{ margin:0 0 8px; }
.ast-aut-acoes{ display:flex; gap:6px; }
.ast-vazio{ margin:auto 0; text-align:center; color:var(--text-muted); font-size:13px; padding:8px; }
.ast-vazio-ic svg{ width:28px; height:28px; color:var(--accent); }
.ast-vazio p{ margin:6px 0 12px; }
.ast-exemplos{ display:flex; flex-direction:column; gap:6px; }
.ast-ex{ text-align:left; font:inherit; font-size:12.5px; color:var(--text); background:var(--surface); border:1px solid var(--border); border-radius:8px; padding:7px 10px; cursor:pointer; }
.ast-ex:hover{ border-color:var(--accent); }
.ast-form{ display:flex; gap:6px; align-items:flex-end; padding:8px 8px 4px; border-top:1px solid var(--border); }
.ast-form textarea{ flex:1; resize:none; min-height:36px; max-height:160px; line-height:1.4; padding:8px 10px; font:inherit; font-size:13.5px; }
.ast-enviar{ width:36px; height:36px; padding:0; justify-content:center; flex-shrink:0; }
.ast-enviar svg{ width:16px; height:16px; }
.ast-nota{ font-size:10.5px; color:var(--text-muted); padding:0 10px 7px; line-height:1.3; }
/* Assistente: dias, horas, novo assunto e pesquisa */
.ast-head .icon-btn{ flex-shrink:0; }
.ast-dia{ align-self:center; position:sticky; top:-12px; z-index:2; padding:4px 0; }
.ast-dia span{ display:inline-block; font-size:11px; font-weight:600; color:var(--text-muted); background:var(--surface-alt); border:1px solid var(--border); padding:2px 10px; border-radius:999px; }
.ast-assunto{ display:flex; align-items:center; gap:8px; font-size:11px; color:var(--text-muted); }
.ast-assunto::before,.ast-assunto::after{ content:""; flex:1; height:1px; background:var(--border); }
.ast-hora{ display:block; text-align:right; font-size:10.5px; color:var(--text-muted); margin-top:3px; line-height:1; }
.ast-msg.ia .ast-hora{ text-align:left; }
.ast-msg mark.ast-achado{ background:color-mix(in srgb, #facc15 60%, transparent); color:inherit; border-radius:2px; }
.ast-msg.ast-flash{ animation:ast-flash 1.6s ease-out; border-radius:10px; }
@keyframes ast-flash{ 0%,30%{ box-shadow:0 0 0 4px color-mix(in srgb, var(--accent) 35%, transparent); background-color:color-mix(in srgb, var(--accent) 12%, transparent); } 100%{ box-shadow:0 0 0 4px transparent; } }
.ast-busca{ display:flex; align-items:center; gap:4px; padding:6px 8px; border-bottom:1px solid var(--border); }
.ast-busca[hidden]{ display:none; }
.ast-busca .input{ flex:1; height:32px; font-size:13px; }
.ast-res{ flex:1; overflow:auto; display:flex; flex-direction:column; }
.ast-res[hidden],.ast-msgs[hidden]{ display:none; }
.ast-res-n{ padding:8px 12px; font-size:11.5px; color:var(--text-muted); border-bottom:1px solid var(--border); }
.ast-res-item{ display:flex; flex-direction:column; gap:3px; text-align:left; padding:9px 12px; border:none; border-bottom:1px solid var(--border); background:transparent; color:var(--text); font:inherit; font-size:13px; cursor:pointer; }
.ast-res-item:hover,.ast-res-item:focus-visible{ background:var(--surface-alt); outline:none; }
.ast-res-item small{ font-size:11px; color:var(--text-muted); }
.ast-res-item span{ line-height:1.4; overflow:hidden; display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; }
.ast-res-item mark{ background:color-mix(in srgb, #facc15 50%, transparent); color:inherit; border-radius:2px; }

/* Explorador: arquivo recortado (Ctrl+X) aparece esmaecido até colar */
.tree-row.is-cut .tr-icon,.tree-row.is-cut .tr-label{ opacity:.5; }
/* Assistente: cartão "No mapa" (o usuário escolhe o que abrir) */
.ast-mapa{ border:1px solid var(--border); border-radius:10px; padding:8px 10px; margin:6px 0; background:var(--surface-alt); }
.ast-mapa-tit{ display:flex; align-items:center; gap:6px; font-size:12px; font-weight:600; color:var(--text-muted); margin-bottom:6px; }
.ast-mapa-tit svg{ width:14px; height:14px; color:var(--accent); }
.ast-mapa-lista{ list-style:none; margin:0 0 6px; padding:0; display:flex; flex-direction:column; gap:4px; }
.ast-mapa-lista li{ display:flex; align-items:center; gap:8px; margin:0; }
.ast-mapa-lista li > svg{ width:18px; height:18px; flex-shrink:0; }
.ast-mapa-nome{ flex:1; min-width:0; display:flex; flex-direction:column; font-size:12.5px; overflow:hidden; }
.ast-mapa-nome small{ font-size:11px; color:var(--text-muted); }
.ast-mapa .btn{ margin-top:0; }
.ast-mapa-fotos svg{ width:14px; height:14px; }

/* Assistente: arquivos entregues e planilhas geradas (receita preenchida com os dados reais) */
.ast-arqs, .ast-pl{ border:1px solid var(--border); border-radius:10px; padding:8px 10px; margin:6px 0; background:var(--surface-alt); }
.ast-arqs .ast-mapa-lista{ margin:0; }
.ast-arqs .ast-mapa-nome{ white-space:nowrap; }
.ast-arqs .ast-mapa-nome, .ast-arqs .ast-mapa-nome small{ text-overflow:ellipsis; overflow:hidden; }
.ast-arq-btns{ display:flex; align-items:center; gap:4px; flex-shrink:0; }
.ast-arq-btns svg{ width:14px; height:14px; }
.ast-arqs .btn, .ast-pl .btn{ margin-top:0; }
.ast-pl-tit{ display:flex; align-items:center; gap:6px; font-size:12.5px; font-weight:600; margin-bottom:6px; min-width:0; }
.ast-pl-tit > svg{ width:18px; height:18px; flex-shrink:0; }
.ast-pl-tit span{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ast-pl-tit small{ margin-left:auto; flex-shrink:0; font-weight:400; color:var(--text-muted); font-size:11px; }
.ast-pl-prev{ overflow-x:auto; border:1px solid var(--border); border-radius:6px; background:var(--surface); margin-bottom:4px; }
.ast-pl-prev table{ border-collapse:collapse; font-size:11.5px; width:max-content; min-width:100%; }
.ast-pl-prev th, .ast-pl-prev td{ padding:4px 8px; border-bottom:1px solid var(--border); text-align:left; white-space:nowrap; max-width:220px; overflow:hidden; text-overflow:ellipsis; }
.ast-pl-prev th{ background:var(--surface-alt); font-weight:600; position:sticky; top:0; }
.ast-pl-prev .num{ text-align:right; font-variant-numeric:tabular-nums; }
.ast-pl-prev tfoot td{ font-weight:600; border-bottom:0; border-top:1px solid var(--border-strong, var(--border)); }
.ast-pl-fx{ font-style:italic; font-weight:400; color:var(--accent); font-size:10.5px; }
.ast-pl > small{ display:block; font-size:11px; margin:2px 0 4px; }
.ast-pl-acoes{ display:flex; flex-wrap:wrap; gap:6px; margin-top:6px; }
.ast-pl-acoes svg{ width:14px; height:14px; }
.ast-pl-pastas{ list-style:none; margin:8px 0 0; padding:0; max-height:360px; overflow:auto; display:flex; flex-direction:column; gap:2px; }
.ast-pl-pasta{ display:flex; align-items:center; gap:8px; width:100%; text-align:left; padding:6px 8px; border:0; border-radius:6px; background:none; color:inherit; font:inherit; font-size:13px; cursor:pointer; }
.ast-pl-pasta:hover, .ast-pl-pasta:focus-visible{ background:var(--surface-alt); }
.ast-pl-pasta.is-atual{ background:color-mix(in srgb, var(--accent) 12%, transparent); }
.ast-pl-pasta svg{ width:16px; height:16px; flex-shrink:0; }
a.dropdown-item{ text-decoration:none; }

/* Painéis com IA: criação, lista e página do painel (iframe isolado) */
.pn-form .field{ margin-bottom:12px; }
.pn-img{ display:flex; align-items:center; gap:10px; }
.pn-img-prev{ position:relative; display:inline-flex; }
.pn-img-prev[hidden]{ display:none; }
.pn-img-prev img{ height:64px; max-width:160px; object-fit:cover; border-radius:6px; border:1px solid var(--border); }
.pn-img-prev .icon-btn{ position:absolute; top:-8px; right:-8px; width:22px; height:22px; background:var(--surface); border:1px solid var(--border); border-radius:50%; }
.pn-status{ display:flex; align-items:center; gap:10px; padding:10px 12px; border-radius:8px; background:var(--surface-alt); margin-bottom:10px; font-size:13px; }
.pn-status[hidden]{ display:none; }
.pn-pronto{ display:flex; flex-direction:column; gap:10px; align-items:flex-start; margin-bottom:10px; }
.pn-pronto[hidden]{ display:none; }
.pn-botoes{ display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.pn-botoes .btn[hidden]{ display:none; }
.pn-lista-top{ margin-bottom:10px; }
.pn-lista{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:4px; }
.pn-lista li{ display:flex; align-items:center; gap:6px; }
.pn-item{ flex:1; min-width:0; display:flex; align-items:center; gap:10px; padding:10px; border-radius:8px; color:inherit; text-decoration:none; border:1px solid var(--border); }
.pn-item:hover{ background:var(--surface-alt); }
.pn-item svg{ width:20px; height:20px; color:var(--accent); flex-shrink:0; }
.pn-item span{ display:flex; flex-direction:column; min-width:0; }
.pn-item b{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pn-item small{ color:var(--text-muted); font-size:12px; }
.painel-page .pg{ position:fixed; inset:0; display:flex; flex-direction:column; background:var(--bg); }
.painel-page .pg[hidden]{ display:none; }
.pg-top{ display:flex; align-items:center; gap:10px; padding:8px 12px; border-bottom:1px solid var(--border); background:var(--surface); }
.pg-tit{ flex:1; min-width:0; display:flex; flex-direction:column; }
.pg-tit h1{ margin:0; font-size:16px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pg-tit small{ color:var(--text-muted); font-size:12px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pg-acoes{ display:flex; gap:6px; flex-shrink:0; }
.pg-acoes .btn{ margin:0; }
.pg-acoes .btn svg{ width:15px; height:15px; }
.pg-acoes .btn[hidden]{ display:none; }
.pg-aviso{ margin:8px 12px 0; }
.pg-aviso[hidden]{ display:none; }
.pg-corpo{ flex:1; min-height:0; }
.painel-frame{ display:block; width:100%; height:100%; border:0; background:#fff; }
@media (max-width: 640px){ .pg-acoes .btn span{ display:none; } }
.ast-painel-pedido{ margin:0 0 4px; font-size:12.5px; color:var(--text-muted); white-space:pre-wrap; max-height:120px; overflow:auto; }

/* ---------- Regiões do arquivo: lista com cores (legenda) ---------- */
.rg-bloco{ position:relative; margin-top:10px; display:flex; flex-direction:column; gap:4px; }
.rg-cores-acoes{ display:flex; gap:6px; margin:2px 0 6px; }
.rg-list{ max-height:320px; }
.rg-cor{ --c:transparent; width:16px; height:16px; flex-shrink:0; border-radius:4px; background:var(--c); border:1px solid color-mix(in srgb, var(--c) 60%, #000); box-shadow:inset 0 0 0 1px rgba(255,255,255,.25); }
.rg-cor.sem-cor{ background:transparent; border:1px dashed var(--border-strong, var(--border)); box-shadow:none; }
.rg-cor[role="button"]{ cursor:pointer; }
.rg-cor[role="button"]:hover,.rg-cor[role="button"]:focus-visible{ outline:2px solid var(--accent); outline-offset:1px; }
.rg-area{ margin-left:auto; padding-right:6px; }
/* Seletor de cor invisível: fica preso dentro do bloco (fora dele, aumentava a página e ela rolava) */
.rg-cor-input{ position:absolute; top:0; right:0; width:1px; height:1px; opacity:0; pointer-events:none; border:0; padding:0; overflow:hidden; }

/* ---------- Assistente: opções clicáveis ---------- */
.ast-opcoes{ margin:8px 0; display:flex; flex-direction:column; gap:6px; }
.ast-opcoes-tit{ font-size:12px; font-weight:600; color:var(--text-muted, var(--text-faint)); }
.ast-opcoes-lista{ display:flex; flex-wrap:wrap; gap:6px; }
.ast-opcao{ font:inherit; font-size:12.5px; text-align:left; padding:6px 11px; border-radius:999px; border:1px solid color-mix(in srgb, var(--accent) 45%, var(--border)); background:color-mix(in srgb, var(--accent) 8%, var(--surface)); color:var(--text); cursor:pointer; max-width:100%; overflow:hidden; text-overflow:ellipsis; }
.ast-opcao:hover,.ast-opcao:focus-visible{ background:color-mix(in srgb, var(--accent) 18%, var(--surface)); border-color:var(--accent); outline:none; }
.ast-opcao.is-escolhida{ background:var(--accent); border-color:var(--accent); color:#fff; }

/* ---------- Regiões: escala por valor ---------- */
.rg-modo{ display:flex; gap:0; margin:4px 0 6px; border:1px solid var(--border); border-radius:7px; overflow:hidden; }
.rg-modo .seg-btn{ flex:1; font:inherit; font-size:12px; padding:5px 8px; border:0; background:var(--surface); color:var(--text-muted); cursor:pointer; }
.rg-modo .seg-btn + .seg-btn{ border-left:1px solid var(--border); }
.rg-modo .seg-btn.is-on{ background:color-mix(in srgb, var(--accent) 14%, var(--surface)); color:var(--text); font-weight:600; }
.rg-modo .seg-btn:disabled{ cursor:default; }
.rg-esc-cfg{ display:flex; flex-direction:column; gap:6px; padding:8px; margin-bottom:6px; border:1px solid var(--border); border-radius:7px; background:var(--surface-2, var(--surface)); }
.rg-esc-campo{ display:flex; flex-direction:column; gap:2px; font-size:11.5px; color:var(--text-muted); min-width:0; }
.rg-esc-campo select,.rg-esc-campo input.input{ width:100%; }
.rg-esc-linha{ display:flex; gap:6px; align-items:flex-end; }
.rg-esc-linha .rg-esc-campo:first-child{ flex:1; }
.rg-esc-n{ flex:0 0 auto; }
.rg-esc-cor{ width:38px; height:28px; padding:0 2px; border:1px solid var(--border); border-radius:6px; background:var(--surface); cursor:pointer; }
.rg-legenda{ margin:2px 0 4px; font-size:12px; }
.rg-legenda > b{ display:block; margin-bottom:3px; font-size:12px; }
.rg-legenda ul{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:1px; }
.rg-leg-item{ width:100%; display:flex; align-items:center; gap:7px; padding:3px 6px; border:0; border-radius:5px; background:none; color:var(--text); font:inherit; font-size:12px; text-align:left; cursor:pointer; }
.rg-leg-item:hover{ background:var(--row-hover); }
.rg-leg-item.is-on{ background:color-mix(in srgb, var(--accent) 14%, transparent); font-weight:600; }
.rg-leg-item i{ width:22px; height:12px; border-radius:3px; background:var(--c); flex-shrink:0; border:1px solid color-mix(in srgb, var(--c) 70%, #000); }
.rg-leg-item i.sem{ background:repeating-linear-gradient(45deg, var(--c) 0 3px, transparent 3px 6px); }
.rg-leg-item small{ margin-left:auto; color:var(--text-faint); font-family:var(--font-mono); font-size:11px; }
.rg-esc-info{ font-size:11.5px; margin:2px 0 6px; }
.rg-esc-erro{ color:var(--danger, #b91c1c); }
.rg-valor{ font-variant-numeric:tabular-nums; }

/* ---------- Importar tabela para as regiões ---------- */
.rgi{ display:flex; flex-direction:column; gap:8px; }
.rgi h4{ margin:8px 0 0; font-size:13px; }
.rgi-arq{ align-self:flex-start; }
.rgi-arqnome{ display:flex; align-items:center; gap:6px; margin:0; }
.rgi-arqnome svg{ width:16px; height:16px; }
.rgi-linha{ display:flex; gap:6px; }
.rgi-linha [data-rgi="chave"]{ flex:1 1 0; min-width:0; width:auto; }
.rgi-linha [data-rgi="modo"]{ flex:0 0 150px; width:150px; }
.rgi-res{ margin:0; font-size:12.5px; }
.rgi-res .ok{ color:var(--accent); }
.rgi-res .ruim{ color:var(--danger, #b91c1c); }
.rgi-det{ font-size:12px; }
.rgi-det ul{ margin:4px 0 0; padding-left:18px; max-height:160px; overflow:auto; }
.rgi-cols{ width:100%; border-collapse:collapse; font-size:12.5px; }
.rgi-cols th,.rgi-cols td{ padding:4px 6px; border-bottom:1px solid var(--border); text-align:left; }
.rgi-cols td:last-child{ width:45%; }
.rgi-acoes{ display:flex; justify-content:flex-end; gap:8px; margin-top:6px; }
