body { background: #f4f6f8; }
.login-shell { min-height: calc(100vh - 3rem); display:flex; align-items:center; justify-content:center; }
.login-card { width:100%; max-width:420px; border:0; }
.card { border-radius: 0.8rem; }
.table thead th { white-space: nowrap; background:#f8f9fa; font-size:.82rem; text-transform:uppercase; letter-spacing:.03em; }
.progress { height: 1.1rem; background:#e9ecef; }
.progress-bar { font-size:.72rem; }

.discipline-tabs{display:flex;align-items:center;gap:.45rem;flex-wrap:wrap}.discipline-label{font-size:.78rem;font-weight:700;padding:.65rem .25rem}.discipline-btn{background:#edf2f6;border:1px solid #c8d3dc;min-width:132px;font-size:.78rem;font-weight:700;padding:.75rem 1rem}.discipline-btn.active{background:#198f73;border-color:#14735d;color:#fff}.active-discipline{background:#e7f1f7;border:1px solid #bfd2de;border-radius:.35rem;padding:.45rem .75rem;font-size:.82rem}.network-summary{background:#fff;border:1px solid #d9e1e6;border-radius:.5rem;padding:.5rem .75rem;font-size:.85rem;color:#52606d}.map-toolbar{background:#fff;border:1px solid #dde4e9;border-radius:.65rem;padding:.55rem .7rem;display:flex;justify-content:space-between;align-items:center;gap:.75rem}.map-toolbar label{display:flex;align-items:center;gap:.35rem;font-size:.82rem}.map-toolbar select{width:auto;min-width:110px}.map-layout{display:grid;grid-template-columns:minmax(0,1fr) 290px;gap:.6rem;min-height:650px}.schematic-map{position:relative;min-height:650px;height:calc(100vh - 300px);background:#f8fafb;border:1px solid #dce3e8;overflow:hidden;cursor:grab;user-select:none;touch-action:none}.schematic-map.dragging{cursor:grabbing}.schematic-map svg{width:100%;height:100%;display:block}.map-line{stroke-width:1.8;vector-effect:non-scaling-stroke;fill:none;stroke-linecap:round}.map-node{stroke:#fff;stroke-width:1.2;vector-effect:non-scaling-stroke}.map-hit{stroke:transparent;stroke-width:12;vector-effect:non-scaling-stroke;cursor:pointer}.status-pending .map-line,.status-pending .map-node{stroke:#df4c4c;fill:#df4c4c}.status-partial .map-line,.status-partial .map-node{stroke:#e8a317;fill:#e8a317}.status-complete .map-line,.status-complete .map-node{stroke:#159b72;fill:#159b72}.map-feature:hover .map-line{stroke-width:3.3}.map-feature.selected .map-line{stroke:#1665c1;stroke-width:4}.map-feature.selected .map-node{stroke:#1665c1;fill:#fff;stroke-width:2}.map-empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#65727e;background:rgba(248,250,251,.88)}.map-legend{position:absolute;left:12px;bottom:12px;display:flex;gap:.75rem;background:rgba(255,255,255,.94);border:1px solid #dce3e8;border-radius:.4rem;padding:.4rem .55rem;font-size:.74rem}.map-legend span{display:flex;align-items:center;gap:.28rem}.legend-dot{width:10px;height:10px;border-radius:50%;display:inline-block}.legend-dot.pending{background:#df4c4c}.legend-dot.partial{background:#e8a317}.legend-dot.complete{background:#159b72}.detail-panel{background:#fff;border:1px solid #dce3e8;min-width:0;overflow:auto}.detail-panel h2{font-size:1rem;font-weight:700;background:#f1f4f6;margin:0;padding:.6rem .7rem;border-bottom:1px solid #dce3e8}.detail-panel dl{margin:0;padding:.35rem .55rem}.detail-panel dl div{display:grid;grid-template-columns:47% 53%;gap:.35rem;border-bottom:3px solid #fff;font-size:.76rem}.detail-panel dt,.detail-panel dd{margin:0;padding:.23rem .3rem;background:#f3f5f7;min-width:0;overflow-wrap:anywhere}.detail-panel dd{background:#f7f8f9}.detail-panel .btn{margin:.55rem;width:calc(100% - 1.1rem)!important}@media(max-width:992px){.map-layout{grid-template-columns:1fr}.schematic-map{height:62vh;min-height:460px}}@media(max-width:620px){.map-toolbar{align-items:stretch;flex-direction:column}.discipline-btn{flex:1;min-width:125px}}


/* Ajustes MVP3: linhas sem laranja; caixas com três estados; modo Todas */
.map-line{stroke-width:2;}
.map-node{stroke:#fff!important;stroke-width:1.4;vector-effect:non-scaling-stroke;cursor:pointer;}
.node-hit{fill:transparent;stroke:transparent;cursor:pointer;pointer-events:all;}
.line-pending .map-line{stroke:#df4c4c;}
.line-completed .map-line{stroke:#159b72;}
.line-mt .map-line{stroke:#2369c9;}
.line-bt .map-line{stroke:#7b4bc4;}
.line-ip .map-line{stroke:#d4a000;}
.line-telecom .map-line{stroke:#168a9c;}
.map-node.box-pending{fill:#df4c4c!important;}
.map-node.box-partial{fill:#f28c18!important;}
.map-node.box-complete{fill:#159b72!important;}
.map-feature.selected .map-line{stroke:#111!important;stroke-width:4;}
.map-feature.selected .map-node{stroke:#111!important;stroke-width:2.2;}
.legend-line{display:inline-block;width:20px;height:3px;border-radius:2px;}
.legend-line.pending{background:#df4c4c}.legend-line.completed{background:#159b72}.legend-line.mt{background:#2369c9}.legend-line.bt{background:#7b4bc4}.legend-line.ip{background:#d4a000}.legend-line.telecom{background:#168a9c}
.legend-dot.box-pending{background:#df4c4c}.legend-dot.box-partial{background:#f28c18}.legend-dot.box-complete{background:#159b72}
.map-legend{flex-wrap:wrap;max-width:calc(100% - 24px);}

/* MVP4: mapas separados por item executivo */
.service-tabs{display:flex;align-items:center;gap:.45rem;flex-wrap:wrap}
.service-btn{background:#fff;border:1px solid #c8d3dc;min-width:150px;font-size:.78rem;font-weight:700;padding:.65rem 1rem}
.service-btn.active{background:#22313f;border-color:#22313f;color:#fff}
.detail-panel dl{margin:0}.detail-panel dl div{display:grid;grid-template-columns:45% 55%;font-size:.78rem;border-bottom:2px solid #fff}.detail-panel dt,.detail-panel dd{padding:.35rem;margin:0;background:#f1f3f5;overflow-wrap:anywhere}.detail-panel dd{background:#f8f9fa}.map-node{vector-effect:non-scaling-stroke;stroke:#fff;stroke-width:1.3;cursor:pointer}.map-node.box-pendente,.map-node.box-pending{fill:#df4c4c}.map-node.box-parcial,.map-node.box-partial{fill:#f28c18}.map-node.box-concluido,.map-node.box-complete{fill:#159b72}.map-line{vector-effect:non-scaling-stroke;stroke-width:2;stroke-linecap:round}.map-hit{stroke:transparent;stroke-width:14;vector-effect:non-scaling-stroke;cursor:pointer}.selected{filter:drop-shadow(0 0 3px #111)}

/* MVP5 - navegação lateral e base de dados */
html,body{min-height:100%}.app-shell{min-height:100vh;display:flex}.app-sidebar{position:fixed;inset:0 auto 0 0;width:240px;background:#12344d;color:#fff;display:flex;flex-direction:column;z-index:1030}.sidebar-brand{padding:1.15rem 1rem 1.45rem;border-bottom:1px solid rgba(255,255,255,.16)}.sidebar-title{font-size:1.08rem;font-weight:800}.sidebar-subtitle{font-size:.78rem;line-height:1.35;margin-top:.7rem}.sidebar-nav{padding:.75rem .55rem;display:flex;flex-direction:column;gap:.35rem}.sidebar-link{display:block;padding:.72rem .85rem;border-radius:.45rem;color:#fff;text-decoration:none;font-size:.88rem}.sidebar-link:hover{background:rgba(255,255,255,.1);color:#fff}.sidebar-link.active{background:#239276;color:#fff}.sidebar-divider{height:1px;background:rgba(255,255,255,.15);margin:.65rem .4rem}.sidebar-footer{margin-top:auto;padding:1rem;border-top:1px solid rgba(255,255,255,.15);font-size:.82rem}.sidebar-footer a{color:#fff}.app-main{margin-left:240px;width:calc(100% - 240px);min-width:0}.page-heading h1{font-size:1.35rem;color:#12344d;font-weight:800;margin:0}.page-heading p{font-size:.82rem;color:#647381;margin:.2rem 0 0}.data-toolbar{display:flex;align-items:center;gap:.6rem;background:#fff;border:1px solid #dce3e8;border-radius:.65rem;padding:.55rem}.data-toolbar .search-box{flex:1;min-width:260px}.data-toolbar label{display:flex;align-items:center;gap:.3rem;font-size:.78rem;white-space:nowrap}.database-table-wrap{max-height:calc(100vh - 315px);overflow:auto;border:1px solid #ccd7df;background:#fff}.database-table{margin:0;font-size:.76rem;min-width:1500px}.database-table thead{position:sticky;top:0;z-index:2}.database-table thead th{background:#123b58;color:#fff;text-align:center;vertical-align:middle}.database-table td{white-space:nowrap}.database-table .form-control,.database-table .form-select{min-width:105px;font-size:.74rem}.database-table .status-cell .form-select:has(option:checked[value="1"]){background:#d8f0e7}.database-actions{display:flex;justify-content:space-between}.discipline-tabs{overflow-x:auto;padding-bottom:.15rem}@media(max-width:900px){.app-sidebar{position:relative;width:100%;min-height:auto}.app-shell{display:block}.app-main{margin-left:0;width:100%}.sidebar-footer{display:none}.sidebar-nav{flex-direction:row;overflow-x:auto}.sidebar-link{white-space:nowrap}.data-toolbar{flex-wrap:wrap}.map-layout{grid-template-columns:1fr}}

/* MVP6 - dashboard e relatório */
.metric-card{height:100%;background:#fff;border:1px solid #dce5eb;border-radius:.55rem;padding:1rem;box-shadow:0 .125rem .35rem rgba(18,50,72,.06);display:flex;flex-direction:column;gap:.15rem}
.metric-card strong{font-size:1.55rem;color:#153a55;line-height:1.15}
.metric-card span{font-size:.78rem;text-transform:uppercase;color:#5f6f7a;font-weight:700}
.metric-card small{color:#7b8992}
.phase-progress .progress{height:9px;background:#edf1f4}
.status-ring-wrap{display:flex;justify-content:center;padding:.2rem 0 1rem}
.status-ring{position:relative;--pct:0;width:150px;height:150px;border-radius:50%;background:conic-gradient(#1d8f78 calc(var(--pct)*1%),#e9eef1 0);display:grid;place-items:center}
.status-ring:before{content:"";width:112px;height:112px;border-radius:50%;background:#fff;position:absolute}
.status-ring div{position:relative;text-align:center;display:flex;flex-direction:column;color:#153a55}
.status-ring b{font-size:1.5rem}.status-ring span{font-size:.78rem;color:#6b7881}
.legend-dot{display:inline-block;width:.65rem;height:.65rem;border-radius:50%;margin-right:.45rem}
.dashboard-network{display:flex;flex-direction:column;padding:1rem;color:#253845;gap:.45rem;min-height:130px}
.dashboard-network:hover{background:#f4f8fa}.dashboard-network span{font-weight:700;color:#153a55}.dashboard-network strong{font-size:1.4rem}.dashboard-network small{color:#6c7882}
.card-header{color:#153a55}

/* MVP6.2 - representação de pontos como caixas */
.map-box{shape-rendering:geometricPrecision;}
.map-legend .legend-dot{border-radius:1px;}

/* MVP 6.3: indica apenas as linhas que serão enviadas ao salvar. */
.database-table tbody tr.linha-alterada > td {
  box-shadow: inset 0 2px 0 rgba(255, 193, 7, .75), inset 0 -2px 0 rgba(255, 193, 7, .75);
}

/* MVP 6.4 - símbolos fixos, equipamentos e seleção de trechos curtos */
.map-point,.map-equipment{cursor:pointer}
.node-hit,.equipment-hit,.segment-hit{fill:transparent;stroke:transparent;pointer-events:all;cursor:pointer}
.equipment-symbol{fill:#fff;stroke:#2d63a5;stroke-width:1.5;vector-effect:non-scaling-stroke}
.equipment-pendente .equipment-symbol{fill:#fff}
.equipment-parcial .equipment-symbol{fill:#f4a340}
.equipment-concluido .equipment-symbol{fill:#159b72}
.equipment-label{fill:#214f88;paint-order:stroke;stroke:#f8fafb;stroke-linejoin:round;pointer-events:none;font-family:Arial,sans-serif}
.map-equipment.selected .equipment-symbol,.map-point.selected .map-node{stroke:#111!important;stroke-width:2.4!important}
.segment-hit{pointer-events:all}
.legend-equipment{display:inline-block;width:10px;height:10px;background:#fff;border:2px solid #2d63a5}
/* REV 8 — pontos de iluminação não são renderizados como caixas civis. */
.ip-post{fill:#fff3b0;stroke:#b98500;stroke-width:2;vector-effect:non-scaling-stroke}
.discipline-dashboard{border-left:4px solid #153a55!important}
.discipline-selector .form-check-input{cursor:pointer}
/* REV 9.0 — acabamento operacional e novas disciplinas */
.legend-line.ip{background:#B36B00}.line-ip .map-line{stroke:#B36B00}.ip-post{fill:#fff7e6;stroke:#B36B00}
.legend-line.ramais{background:#C2185B}.legend-line.ramal-bt{background:#C2185B}.legend-line.ramal-tl{background:#8E3A8C}.line-ramais .map-line{stroke:#C2185B}
.rede-ramais .map-line{stroke:#C2185B}
.detail-panel .edit-form{padding:.75rem}.detail-panel .edit-form>label:not(.form-check){display:block;margin:.7rem 0 .35rem;font-size:.86rem}.detail-panel .btn-hoje{margin:.45rem 0 .25rem;width:100%!important}.detail-panel #salvarMapa{background:#198f57;border-color:#198f57}.detail-panel #cancelarMapa{margin-top:.1rem}.detail-panel #editarObjeto{margin-top:.75rem}

/* REV 9.1 — seletor por botões e atualização visual imediata */
.discipline-button-bar{display:flex;align-items:stretch;gap:.5rem;flex-wrap:wrap;background:#fff;border-bottom:1px solid #d8e0e6;padding:.65rem .25rem}
.discipline-button-bar .discipline-btn{appearance:none;background:#eef3f7;border:1px solid #c8d5df;border-radius:.35rem;min-width:132px;padding:.72rem 1rem;color:#102a3c;font-size:.78rem;font-weight:800;text-align:center;cursor:pointer;transition:background .12s,border-color .12s,color .12s}
.discipline-button-bar .discipline-btn:hover{background:#e4ebf1;border-color:#aebdca}
.discipline-button-bar .discipline-btn.active{background:#198f73;border-color:#198f73;color:#fff}
.discipline-button-bar .discipline-btn[data-rede="TODAS"]{min-width:132px}
@media(max-width:700px){.discipline-button-bar .discipline-btn{flex:1 1 145px}}

/* REV 9.2 - acabamento de filtros e usuário */
.app-topbar{height:66px;background:#fff;border-bottom:1px solid #dce4ea;display:flex;align-items:center;justify-content:flex-end;padding:0 1.1rem;position:sticky;top:0;z-index:1020;box-shadow:0 2px 8px rgba(18,52,77,.035)}
.user-menu{display:flex;align-items:center;gap:.7rem;color:#17384f}.user-avatar{width:36px;height:36px;border-radius:50%;background:#e8f1f5;border:1px solid #cad8e1;display:grid;place-items:center;font-weight:800;color:#176f5d}.user-meta{display:flex;flex-direction:column;line-height:1.15;min-width:130px}.user-meta strong{font-size:.84rem}.user-meta span{font-size:.68rem;color:#71808b;margin-top:.2rem}.logout-link{font-size:.78rem;color:#526875;text-decoration:none;border-left:1px solid #dce4e8;padding-left:.75rem}.logout-link:hover{color:#b02a37}.discipline-button-bar{background:#fff;border:1px solid #dfe6eb;border-radius:.5rem;padding:.55rem;box-shadow:0 1px 3px rgba(18,52,77,.035)}.discipline-btn{border-radius:.35rem;transition:background .15s,border-color .15s,color .15s,transform .08s}.discipline-btn:hover{border-color:#86a1b2;background:#e4edf2}.discipline-btn.active:hover{background:#147c65}.ip-post{fill:#B36B00!important;stroke:#B36B00!important}.rede-ip .ip-post{fill:#B36B00!important;stroke:#B36B00!important}
@media(max-width:900px){.app-topbar{position:relative}.user-meta{min-width:0}.app-main{margin-left:0;width:100%}}

/* REV 10 - visão integrada por trecho */
.btn-integrated{background:#123b55;color:#fff;border-color:#123b55}.btn-integrated:hover{background:#0d3047;color:#fff}
.integrated-count{display:inline-flex;min-width:2rem;height:2rem;align-items:center;justify-content:center;border-radius:999px;background:#eef2f6;font-weight:700}
.integrated-overview{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:#dfe6ec;border:1px solid #dfe6ec;border-radius:.65rem;overflow:hidden}.integrated-overview>div{background:#fff;padding:1rem}.integrated-overview span{display:block;color:#667586;font-size:.78rem;text-transform:uppercase;font-weight:700}.integrated-overview strong{display:block;margin-top:.25rem}
.integrated-discipline{border-left:5px solid #526477!important}.rede-border-mt{border-left-color:#2369c9!important}.rede-border-bt{border-left-color:#7b4bc4!important}.rede-border-ip{border-left-color:#B36B00!important}.rede-border-telecom{border-left-color:#168a9c!important}.rede-border-ramais{border-left-color:#C2185B!important}
.integrated-item{border:1px solid #dbe3ea;border-radius:.65rem;padding:1rem;background:#fff}.integrated-item.is-done{border-color:#159b72;background:#f1fbf7}.item-state{font-size:.75rem;font-weight:700;text-transform:uppercase;background:#fff2f2;color:#bd3030;border-radius:999px;padding:.3rem .65rem}.is-done .item-state{background:#dff6ec;color:#087c55}.status-pill{border-radius:999px;padding:.35rem .7rem;font-size:.78rem;font-weight:700}.status-pill.done{background:#dff6ec;color:#087c55}.status-pill.partial{background:#fff3cd;color:#795e00}
@media(max-width:900px){.integrated-overview{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* REV 10.1 - cards em uma linha, nomenclatura e base responsiva para uso móvel */
.network-summary-row{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.5rem}
.network-summary-row .network-summary{min-width:0;display:flex;flex-direction:column;justify-content:center;min-height:78px}
@media(max-width:1200px){.network-summary-row{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){.network-summary-row{grid-template-columns:1fr}.app-topbar{height:auto;min-height:58px;padding:.55rem}.user-menu{width:100%;justify-content:flex-end}.map-layout{display:block}.detail-panel{margin-top:.6rem;max-height:none}.schematic-map{height:58vh;min-height:360px}.container-fluid{padding-left:.65rem!important;padding-right:.65rem!important}}

/* REV 10.2 - planta baixa em tela cheia e informações em nuvem */
.map-layout{position:relative;grid-template-columns:minmax(0,1fr)}
.map-info-cloud{position:absolute;top:14px;right:14px;z-index:25;width:min(340px,calc(100% - 28px));max-height:calc(100% - 28px);border-radius:.7rem;box-shadow:0 .5rem 1.5rem rgba(18,52,77,.24);overflow:auto}
.map-info-cloud .detail-close{position:absolute;right:.45rem;top:.28rem;z-index:2;border:0;background:transparent;color:#536573;font-size:1.5rem;line-height:1;padding:.15rem .35rem}
.map-info-cloud h2{padding-right:2.4rem}
.map-exit-fullscreen{position:absolute;top:14px;left:14px;z-index:40;box-shadow:0 .25rem .8rem rgba(0,0,0,.2)}
.map-layout:fullscreen,.map-layout.is-fullscreen,.map-layout.fullscreen-fallback{background:#f8fafb;width:100%;height:100%;min-height:100vh;padding:0;display:block}
.map-layout:fullscreen .schematic-map,.map-layout.is-fullscreen .schematic-map,.map-layout.fullscreen-fallback .schematic-map{width:100%;height:100vh;min-height:100vh;border:0}
.map-layout.fullscreen-fallback{position:fixed;inset:0;z-index:2000}
@media(max-width:760px){.map-info-cloud{top:auto;bottom:10px;right:10px;left:10px;width:auto;max-height:55%}}

/* REV 11 - planta baixa compacta, painel lateral e usuário no rodapé */
.app-main{min-height:100vh}
.sidebar-user-menu{display:grid;grid-template-columns:36px minmax(0,1fr) auto;align-items:center;gap:.65rem;color:#fff}
.sidebar-user-menu .user-avatar{background:#1aa378;border-color:rgba(255,255,255,.2);color:#fff}
.sidebar-user-menu .user-meta{min-width:0;color:#fff}
.sidebar-user-menu .user-meta strong{font-size:.82rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sidebar-user-menu .user-meta span{color:rgba(255,255,255,.72);font-size:.66rem}
.sidebar-user-menu .logout-link{color:#fff;border-left:1px solid rgba(255,255,255,.22);padding-left:.65rem}
.sidebar-user-menu .logout-link:hover{color:#d9fff3}
.map-page{min-width:0}
.map-discipline-bar{flex-wrap:nowrap;overflow-x:auto}
.map-discipline-bar .discipline-btn{flex:1 0 128px;min-width:128px;padding:.62rem .7rem}
.map-workspace{display:grid;grid-template-columns:minmax(0,1fr) 250px;gap:.65rem;align-items:stretch;transition:grid-template-columns .2s ease}
.map-workspace.panel-collapsed{grid-template-columns:minmax(0,1fr) 34px}
.map-center-column{min-width:0;display:flex;flex-direction:column}
.map-toolbar-compact{min-height:48px;padding:.42rem .65rem}
.phase-control{display:flex;align-items:center;gap:.45rem}.phase-control select{width:auto;min-width:112px}
.map-center-column .map-layout{flex:1;min-height:0}
.map-center-column .schematic-map{height:calc(100vh - 178px);min-height:560px}
.map-control-panel{position:relative;background:#fff;border:1px solid #dce4ea;border-radius:.65rem;min-width:0;overflow:visible;transition:width .2s ease}
.map-control-panel .panel-content{height:100%;padding:.75rem;overflow:auto}
.map-control-panel.collapsed .panel-content{display:none}
.panel-collapse-btn{position:absolute;left:-13px;top:45%;z-index:30;width:27px;height:48px;padding:0;border:0;border-radius:14px 0 0 14px;background:#198f73;color:#fff;font-size:1.55rem;line-height:1;box-shadow:0 .2rem .65rem rgba(18,52,77,.2)}
.map-control-panel.collapsed .panel-collapse-btn{left:3px;border-radius:0 14px 14px 0}
.control-section{padding:.2rem 0 .8rem}.control-section+ .control-section{border-top:1px solid #e1e7ec;padding-top:.85rem}
.control-section h3{font-size:.78rem;text-transform:uppercase;letter-spacing:.025em;color:#243c4e;font-weight:800;margin:0 0 .65rem}
.vertical-disciplines{display:flex;flex-direction:column;gap:.35rem}
.vertical-discipline-btn{display:flex;align-items:center;gap:.55rem;width:100%;border:0;background:transparent;border-radius:.4rem;padding:.46rem .38rem;text-align:left;font-size:.78rem;font-weight:700;color:#405463}
.vertical-discipline-btn:hover{background:#f1f5f7}.vertical-discipline-btn:not(.active){opacity:.55}
.discipline-check{display:grid;place-items:center;width:20px;height:20px;border-radius:.25rem;background:#cfd9df;color:transparent;font-size:.72rem}
.vertical-discipline-btn.active .discipline-check{background:#198f73;color:#fff}
.summary-section{display:grid;grid-template-columns:1fr auto;column-gap:.75rem}.summary-section h3{grid-column:1/-1}
.summary-stat{display:contents}.summary-stat span,.summary-stat strong{padding:.36rem 0;border-bottom:1px solid #eef2f4;font-size:.79rem}.summary-stat span{color:#60727e}.summary-stat strong{text-align:right;color:#163d56}
.panel-actions{display:flex;flex-direction:column;gap:.45rem}.panel-actions h3{margin-bottom:.2rem}
@media(max-width:1100px){.map-workspace{grid-template-columns:minmax(0,1fr) 220px}.map-workspace.panel-collapsed{grid-template-columns:minmax(0,1fr) 32px}.map-center-column .schematic-map{min-height:500px}}
@media(max-width:900px){.sidebar-user-menu{display:none}.map-workspace,.map-workspace.panel-collapsed{grid-template-columns:1fr}.map-control-panel{display:none}.map-center-column .schematic-map{height:62vh;min-height:430px}.map-discipline-bar{flex-wrap:nowrap}.map-toolbar-compact{flex-direction:row;align-items:center}}
@media(max-width:620px){.map-toolbar-compact{flex-direction:column;align-items:stretch}.map-toolbar-compact>div:last-child{justify-content:flex-end}.map-center-column .schematic-map{height:58vh;min-height:360px}}

/* REV 11.1 - KPIs contextuais, disciplinas somente à direita e legenda dinâmica */
.map-workspace{grid-template-columns:minmax(0,1fr) 250px}
.map-kpi-bar{display:grid;grid-template-columns:165px repeat(4,minmax(145px,1fr));align-items:stretch;background:#fff;border:1px solid #dce4ea;border-radius:.65rem;overflow:hidden;min-height:96px}
.kpi-phase{padding:.75rem .8rem;border-right:1px solid #e3e9ed;align-items:center;justify-content:center;flex-wrap:wrap;align-content:center}
.kpi-phase strong{width:100%;font-size:.78rem;color:#193a50}.kpi-phase select{width:100%;min-width:105px;margin-top:.25rem}
.kpi-card{padding:.65rem .85rem;border-right:1px solid #e3e9ed;display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto auto;gap:.15rem .45rem;align-items:center;min-width:0}
.kpi-card:last-child{border-right:0}.kpi-label{font-size:.75rem;color:#334d5f;display:flex;align-items:center;gap:.35rem;white-space:nowrap}.kpi-icon{font-size:.9rem}
.kpi-card strong{grid-column:2;grid-row:1/3;font-size:1.22rem;line-height:1;color:#163d56;white-space:nowrap}.kpi-card small{grid-column:1;grid-row:2;font-size:.68rem;color:#536b7a;white-space:nowrap}
.kpi-progress{grid-column:1/-1;height:6px;background:#e8eef1;border-radius:10px;overflow:hidden;margin-top:.25rem}.kpi-progress i{display:block;height:100%;width:0;border-radius:10px;transition:width .2s ease}
.kpi-executed strong{color:#159b72}.kpi-executed .kpi-icon{color:#159b72}.kpi-executed .kpi-progress{background:#d8eee7}.kpi-executed .kpi-progress i{background:#159b72}
.kpi-pending strong{color:#e23f43}.kpi-pending .kpi-icon{color:#e23f43}.kpi-pending .kpi-progress{background:#f9dcdc}.kpi-pending .kpi-progress i{background:#e23f43}
.kpi-completed strong{color:#159b72}.kpi-completed .kpi-icon{color:#159b72}.kpi-completed .kpi-progress{background:#d8eee7}.kpi-completed .kpi-progress i{background:#159b72}
.kpi-total strong{color:#1769e0}.kpi-total .kpi-icon{color:#1769e0}.kpi-total .kpi-progress{background:#dce9fb}.kpi-total .kpi-progress i{background:#1769e0}
.map-center-column .schematic-map{height:calc(100vh - 126px);min-height:570px}
.panel-collapse-btn{top:50%;transform:translateY(-50%)}
.summary-section{display:grid;grid-template-columns:1fr auto;column-gap:.75rem}.summary-context{grid-column:1/-1;font-size:.68rem;color:#647884;margin:-.25rem 0 .45rem;padding-bottom:.45rem;border-bottom:1px solid #edf1f3;white-space:normal}
.discipline-symbol{width:18px;text-align:center;font-size:1rem;font-weight:800}.discipline-mt{color:#159b72}.discipline-bt{color:#2369c9}.discipline-ip{color:#e99b00}.discipline-telecom{color:#7b4bc4}.discipline-ramais{color:#df3e48}
.map-legend{max-width:min(720px,calc(100% - 24px));align-items:center}.map-legend .legend-discipline{padding-right:.45rem;border-right:1px solid #dce3e8}.legend-line.ramais{background:#C2185B}.legend-line.ramal-bt{background:#C2185B}.legend-line.ramal-tl{background:#8E3A8C}
@media(max-width:1250px){.map-kpi-bar{grid-template-columns:140px repeat(4,minmax(120px,1fr))}.kpi-card{padding:.55rem .6rem}.kpi-card strong{font-size:1.05rem}}
@media(max-width:1050px){.map-kpi-bar{grid-template-columns:130px repeat(2,1fr);overflow:visible}.kpi-total{border-top:1px solid #e3e9ed}.kpi-completed{border-top:1px solid #e3e9ed}.map-center-column .schematic-map{height:calc(100vh - 205px)}}
@media(max-width:900px){.map-kpi-bar{grid-template-columns:1fr 1fr}.kpi-phase{grid-column:1/-1;border-right:0;border-bottom:1px solid #e3e9ed;display:flex;justify-content:flex-start}.kpi-phase strong{width:auto}.kpi-phase select{width:auto;margin:0}.map-center-column .schematic-map{height:60vh}}
@media(max-width:620px){.map-kpi-bar{grid-template-columns:1fr}.kpi-card,.kpi-phase{border-right:0;border-bottom:1px solid #e3e9ed}.kpi-card:last-child{border-bottom:0}.map-legend{font-size:.67rem;gap:.45rem}}

/* REV 11.2 — identidade EvolutON */
:root{
  --evo-navy:#062844;
  --evo-navy-deep:#041f36;
  --evo-green:#11a878;
  --evo-green-soft:#dff4ed;
  --evo-text:#102f46;
  --evo-muted:#667984;
  --evo-line:#dfe7ec;
  --evo-bg:#f5f7f9;
}
body{background:var(--evo-bg);color:var(--evo-text)}
.evoluton-shell{background:var(--evo-bg)}
.evoluton-sidebar{background:linear-gradient(180deg,var(--evo-navy-deep),var(--evo-navy));width:224px;box-shadow:3px 0 16px rgba(4,31,54,.08)}
.evoluton-brand{padding:14px 13px 10px;border-bottom:1px solid rgba(255,255,255,.10);min-height:88px;display:flex;align-items:center}
.evoluton-logo{display:block;width:182px;max-width:100%;height:auto;object-fit:contain}
.evoluton-nav{padding:10px 8px}
.evoluton-nav .sidebar-link{display:flex;align-items:center;gap:.72rem;border-radius:.48rem;padding:.68rem .7rem;color:rgba(255,255,255,.88);font-size:.82rem;border-left:3px solid transparent;transition:.15s ease}
.evoluton-nav .sidebar-link i{font-size:1.08rem;width:20px;text-align:center;color:rgba(255,255,255,.92)}
.evoluton-nav .sidebar-link:hover{background:rgba(255,255,255,.07);color:#fff}
.evoluton-nav .sidebar-link.active{background:rgba(255,255,255,.10);border-left-color:var(--evo-green);color:#fff}
.evoluton-nav .sidebar-link.active i{color:#69e6bf}
.evoluton-user{background:rgba(0,0,0,.07);border-top:1px solid rgba(255,255,255,.10);padding:.75rem .8rem}
.evoluton-user .logout-link{display:flex;flex-direction:column;align-items:center;gap:.05rem;font-size:.65rem}
.evoluton-user .logout-link i{font-size:1.05rem}
.evoluton-main{margin-left:224px;min-width:0;background:var(--evo-bg);display:flex;flex-direction:column;min-height:100vh}
.evoluton-topbar{height:66px;background:#fff;border-bottom:1px solid var(--evo-line);display:flex;align-items:center;justify-content:space-between;padding:0 18px;flex:0 0 auto}
.project-heading{display:flex;align-items:center;gap:.7rem;min-width:0}
.project-heading-icon{font-size:1.25rem;color:var(--evo-green)}
.project-heading div{display:flex;flex-direction:column;line-height:1.15}
.project-heading strong{font-size:1rem;letter-spacing:.01em;color:#102f46}
.project-heading span{font-size:.72rem;color:#6c7e89;margin-top:.18rem}
.system-status{display:flex;align-items:center;gap:.35rem;border:1px solid #b8ddcf;border-radius:999px;padding:.28rem .62rem;font-size:.69rem;font-weight:800;color:#148663;background:#f7fcfa}
.status-dot{width:7px;height:7px;border-radius:50%;background:var(--evo-green)}
.evoluton-content{flex:1;min-height:0}
.evoluton-footer{height:34px;flex:0 0 auto;background:#fff;border-top:1px solid var(--evo-line);display:flex;justify-content:space-between;align-items:center;padding:0 18px;color:#60727e;font-size:.69rem}

/* interface mais sóbria; cor forte reservada para dados e status */
.map-kpi-bar,.map-control-panel,.schematic-map{box-shadow:0 1px 2px rgba(11,43,76,.025)}
.map-kpi-bar{border-color:var(--evo-line);min-height:90px}
.kpi-card,.kpi-phase{border-color:#e8edef}
.kpi-label{color:#334d5f}
.vertical-discipline-btn{color:#314b5c}
.vertical-discipline-btn.active .discipline-check{background:var(--evo-green)}
.panel-collapse-btn{background:var(--evo-green)}
.control-section h3{color:#18374c}
.btn-outline-primary{--bs-btn-color:#0c5a92;--bs-btn-border-color:#a9bed0;--bs-btn-hover-bg:#0c5a92;--bs-btn-hover-border-color:#0c5a92}
.map-control-panel{border-color:var(--evo-line)}
.map-center-column .schematic-map{height:calc(100vh - 156px);min-height:545px}
.map-legend{background:rgba(255,255,255,.94)}

@media(max-width:900px){
  .evoluton-sidebar{width:210px}.evoluton-main{margin-left:210px}.evoluton-logo{width:172px}
  .evoluton-topbar{height:60px}.map-center-column .schematic-map{height:60vh}
}
@media(max-width:760px){
  .evoluton-sidebar{position:static;width:100%;min-height:auto}.evoluton-main{margin-left:0}.evoluton-brand{min-height:72px}.evoluton-logo{width:165px}
  .evoluton-topbar{height:58px}.system-status{display:none}.evoluton-footer{display:none}
}

/* REV11.3 — acabamento dos indicadores e preferências visuais */
:root{--disc-mt:#2369c9;--disc-bt:#7b4bc4;--disc-ip:#B36B00;--disc-telecom:#168a9c;--disc-ramais:#C2185B}
.polished-kpis{border-radius:.8rem;box-shadow:0 4px 14px rgba(11,43,76,.055);border-color:#e4eaee;overflow:hidden;background:linear-gradient(180deg,#fff 0%,#fdfefe 100%)}
.polished-kpis .kpi-phase{padding:.75rem .9rem;background:#fff;display:flex;flex-direction:column;justify-content:center;gap:.45rem}
.polished-kpis .phase-select-wrap{display:flex;align-items:center;gap:.35rem;border:1px solid #dfe6eb;border-radius:.55rem;padding-left:.55rem;background:#fff}
.polished-kpis .phase-select-wrap i{color:#31536c}.polished-kpis .phase-select-wrap select{border:0;box-shadow:none;background-color:transparent}
.polished-kpis .kpi-card{position:relative;grid-template-columns:44px 1fr auto;grid-template-rows:auto auto auto;padding:.72rem .9rem;gap:.12rem .55rem}
.polished-kpis .kpi-round-icon{grid-row:1/4;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:#0f4d8a;color:#fff;font-size:1rem;align-self:start;margin-top:.1rem}
.polished-kpis .kpi-label{grid-column:2;grid-row:1;font-size:.73rem;color:#344c5e}.polished-kpis .kpi-card strong{grid-column:3;grid-row:1/3;font-size:1.25rem}.polished-kpis .kpi-card small{grid-column:2;grid-row:2}.polished-kpis .kpi-progress{grid-column:2/4;grid-row:3;margin-top:.42rem;height:5px;border-radius:999px;background:#e9edf0}.polished-kpis .kpi-progress i{border-radius:999px}
.polished-kpis .kpi-pending .kpi-round-icon{background:#d94a3f}.polished-kpis .kpi-completed .kpi-round-icon{background:#198f73}.polished-kpis .kpi-total .kpi-round-icon{background:#164f8d}
.legend-line.mt{background:var(--disc-mt)!important}.legend-line.bt{background:var(--disc-bt)!important}.legend-line.ip{background:var(--disc-ip)!important}.legend-line.telecom{background:var(--disc-telecom)!important}.legend-line.ramais{background:var(--disc-ramais)!important}
.discipline-mt{color:var(--disc-mt)!important}.discipline-bt{color:var(--disc-bt)!important}.discipline-ip{color:var(--disc-ip)!important}.discipline-telecom{color:var(--disc-telecom)!important}.discipline-ramais{color:var(--disc-ramais)!important}
.color-settings-modal{border:0;border-radius:.85rem;box-shadow:0 18px 50px rgba(11,43,76,.18)}.discipline-color-fields{display:grid;gap:.55rem}.discipline-color-row{display:grid;grid-template-columns:1fr 48px 82px;align-items:center;gap:.7rem;padding:.55rem .65rem;border:1px solid #e5ebef;border-radius:.55rem;background:#fbfcfd}.discipline-color-row span{font-weight:700;color:#294557}.discipline-color-row input{width:42px;height:32px;border:0;background:transparent;padding:0}.discipline-color-row code{font-size:.72rem;color:#526b7b}

/* REV11.4 — planta GeoJSON do empreendimento */
.base-map-line{fill:none;stroke:#aeb7c3;stroke-width:1.15;vector-effect:non-scaling-stroke;opacity:.72;pointer-events:none}
.base-map-status{position:absolute;left:14px;top:14px;z-index:8;padding:7px 11px;border:1px solid #d9e0e8;border-radius:8px;background:rgba(255,255,255,.94);color:#526174;font-size:.76rem;box-shadow:0 2px 8px rgba(15,35,65,.08);transition:opacity .25s ease}
.base-map-status.loaded{color:#276749;border-color:#c6e3d5}.base-map-status.error{color:#a33a35;border-color:#ecc9c7}.base-map-status.hidden{opacity:0;pointer-events:none}
#baseMapLayer{pointer-events:none}


/* REV 13.0.2 — protótipo visual dos ambientes por perfil */
.role-prototype-page{max-width:1500px;margin:0 auto;padding-bottom:2rem}.prototype-eyebrow,.role-kicker{font-size:.67rem;font-weight:800;letter-spacing:.12em;color:var(--evo-green)}
.role-switcher{display:flex;gap:.45rem;overflow-x:auto;padding:.45rem;background:#fff;border:1px solid var(--evo-line);border-radius:.8rem;box-shadow:0 3px 12px rgba(11,43,76,.04)}
.role-pill{border:0;background:transparent;border-radius:.58rem;padding:.65rem .85rem;color:#526978;font-size:.78rem;font-weight:700;white-space:nowrap;display:flex;align-items:center;gap:.45rem}.role-pill:hover{background:#f0f5f7}.role-pill.active{background:var(--evo-navy);color:#fff}.role-pill i{font-size:1rem}
.role-panel{display:none}.role-panel.active{display:block;animation:roleFade .18s ease}@keyframes roleFade{from{opacity:.35;transform:translateY(4px)}to{opacity:1;transform:none}}
.role-hero{display:flex;justify-content:space-between;align-items:center;gap:1rem;background:linear-gradient(120deg,#062844,#0a476c);color:#fff;border-radius:.9rem;padding:1.3rem 1.45rem;margin-bottom:1rem;box-shadow:0 8px 24px rgba(6,40,68,.12)}.role-hero h2{font-size:1.35rem;margin:.2rem 0}.role-hero p{margin:0;color:rgba(255,255,255,.78);max-width:720px}.hero-metric{text-align:center;min-width:110px}.hero-metric strong{display:block;font-size:2rem}.hero-metric span{font-size:.7rem;text-transform:uppercase;letter-spacing:.08em}.hero-metric i{display:block;font-size:2rem;margin-bottom:.2rem}.role-hero.read-only{background:linear-gradient(120deg,#30485c,#577386)}.role-hero.comment-mode{background:linear-gradient(120deg,#173f58,#176f78)}
.prototype-grid{display:grid;gap:1rem}.prototype-grid.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.prototype-grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.prototype-grid.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.prototype-stat,.prototype-card{background:#fff;border:1px solid var(--evo-line);border-radius:.78rem;box-shadow:0 3px 14px rgba(11,43,76,.045)}.prototype-stat{display:flex;align-items:center;gap:.8rem;padding:1rem}.prototype-stat>i{width:42px;height:42px;border-radius:.65rem;background:var(--evo-green-soft);color:var(--evo-green);display:grid;place-items:center;font-size:1.15rem}.prototype-stat.warning>i{background:#fff0e0;color:#cb6b12}.prototype-stat strong{display:block;font-size:1.25rem}.prototype-stat span{font-size:.72rem;color:var(--evo-muted)}.prototype-card{padding:1rem 1.05rem}.prototype-card h3{font-size:.88rem;margin:0 0 .85rem;color:#18374c}.prototype-card h3 i{color:var(--evo-green);margin-right:.35rem}
.action-list{display:grid;grid-template-columns:1fr 1fr;gap:.55rem}.action-list button{border:1px solid #dfe7ec;background:#f9fbfc;border-radius:.55rem;padding:.7rem;text-align:left;color:#294557;font-size:.76rem}.action-list button:hover{border-color:#9bc8b8;background:#f2faf7}.health-row,.work-row,.approval-item{display:flex;justify-content:space-between;align-items:center;gap:.8rem;padding:.65rem 0;border-bottom:1px solid #eef2f4}.health-row:last-child,.work-row:last-child,.approval-item:last-child{border-bottom:0}.health-row{font-size:.76rem}.status-ok{color:#148663}.work-row span{display:flex;flex-direction:column}.work-row b{font-size:.78rem}.work-row small{color:var(--evo-muted)}.work-row em,.asset-summary em{font-style:normal;font-size:.65rem;font-weight:800;padding:.28rem .48rem;border-radius:999px}.pill-red{background:#fde5e3;color:#b63730}.pill-green{background:#e2f5ee;color:#148663}.pill-amber{background:#fff1d8;color:#a86400}.approval-item{font-size:.76rem}
.task-board h3{display:flex;justify-content:space-between}.task-board h3 span{background:#eef3f6;border-radius:999px;padding:.15rem .45rem}.mini-task{border:1px solid #e4eaee;border-radius:.6rem;padding:.7rem;margin-top:.55rem;background:#fafcfd;display:flex;flex-direction:column;gap:.25rem}.mini-task b{font-size:.76rem}.mini-task small{color:var(--evo-muted)}.mini-task progress{width:100%;height:6px;accent-color:var(--evo-green)}.mini-task.active{border-left:4px solid #2571bc}.mini-task.done{border-left:4px solid var(--evo-green)}.mini-task button{align-self:flex-start;border:0;background:var(--evo-green);color:#fff;border-radius:.4rem;font-size:.68rem;padding:.3rem .5rem}
.mobile-preview-wrap{display:grid;grid-template-columns:360px 1fr;gap:2rem;align-items:center;max-width:1000px;margin:1.2rem auto}.mobile-preview{background:#edf2f4;border:9px solid #18374c;border-radius:2rem;box-shadow:0 18px 45px rgba(8,34,52,.18);overflow:hidden;min-height:660px}.mobile-top{background:var(--evo-navy);color:#fff;padding:.85rem 1rem;display:flex;justify-content:space-between;align-items:center}.mobile-top span{font-weight:800;letter-spacing:.08em}.mobile-top small{color:#b9ceda}.mobile-user{display:flex;align-items:center;gap:.7rem;padding:1rem;background:#fff}.avatar-circle{width:42px;height:42px;border-radius:50%;background:var(--evo-green);color:#fff;display:grid;place-items:center;font-weight:800}.mobile-user div:last-child{display:flex;flex-direction:column}.mobile-user span{font-size:.68rem;color:var(--evo-muted)}.daily-progress{padding:.8rem 1rem;background:#fff;border-top:1px solid #edf1f3}.daily-progress div{display:flex;justify-content:space-between;font-size:.72rem}.daily-progress progress{width:100%;height:7px;accent-color:var(--evo-green)}.mobile-section-title{font-size:.63rem;font-weight:800;letter-spacing:.1em;color:#607783;padding:.9rem 1rem .35rem}.mobile-task{margin:0 .8rem .7rem;background:#fff;border:1px solid #dfe7ec;border-radius:.75rem;padding:.9rem}.mobile-task.current{border:2px solid #2b78bb;box-shadow:0 6px 18px rgba(32,104,163,.1)}.task-head{display:flex;justify-content:space-between;align-items:center}.task-code{display:inline-block;background:#e9f2fb;color:#1e66a2;border-radius:.4rem;padding:.22rem .4rem;font-size:.67rem;font-weight:800}.task-head em{font-size:.6rem;color:#b63730;font-style:normal}.mobile-task h3{font-size:1rem;margin:.55rem 0 .25rem}.mobile-task p{font-size:.7rem;color:var(--evo-muted);margin:0}.mobile-actions{display:flex;gap:.45rem;margin-top:.8rem}.mobile-actions .btn{font-size:.7rem}.mobile-explanation h2{font-size:1.55rem;margin:.3rem 0}.mobile-explanation p,.mobile-explanation li{color:#526978}.mobile-explanation li{margin:.4rem 0}
.big-percent{font-size:3rem;font-weight:800;color:var(--evo-green)}.evidence-placeholder{height:58px;border:1px dashed #cbd7de;border-radius:.55rem;margin:.5rem 0;display:flex;align-items:center;gap:.65rem;padding:.5rem;color:#5a7180}.evidence-placeholder i{font-size:1.35rem}.issue-line{display:flex;align-items:center;gap:.7rem;padding:.42rem 0}.issue-line b{width:30px;height:30px;border-radius:50%;background:#eef3f6;display:grid;place-items:center}.permission-toggle{display:flex;align-items:center;gap:.55rem;cursor:pointer}.permission-toggle input{display:none}.permission-toggle span{width:42px;height:23px;border-radius:999px;background:#a9bbc5;position:relative}.permission-toggle span:after{content:'';position:absolute;width:17px;height:17px;background:#fff;border-radius:50%;top:3px;left:3px;transition:.15s}.permission-toggle input:checked+span{background:var(--evo-green)}.permission-toggle input:checked+span:after{left:22px}.permission-toggle b{font-size:.72rem}.asset-summary{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.7rem}.asset-icon{width:46px;height:46px;border-radius:.6rem;background:#e9f2fb;color:#1d659f;display:grid;place-items:center;font-weight:900}.asset-summary div{display:flex;flex-direction:column}.asset-summary small{color:var(--evo-muted)}.prototype-dl{margin:.8rem 0 0}.prototype-dl div{display:flex;justify-content:space-between;padding:.5rem 0;border-top:1px solid #eef2f4}.prototype-dl dt,.prototype-dl dd{font-size:.72rem;margin:0}.prototype-disabled{opacity:.42;pointer-events:none;filter:grayscale(.5)}
@media(max-width:1100px){.prototype-grid.cols-4{grid-template-columns:repeat(2,1fr)}.prototype-grid.cols-3{grid-template-columns:1fr}.mobile-preview-wrap{grid-template-columns:340px 1fr}}
@media(max-width:760px){.prototype-grid.cols-4,.prototype-grid.cols-2{grid-template-columns:1fr}.role-hero{align-items:flex-start}.hero-metric{display:none}.mobile-preview-wrap{grid-template-columns:1fr}.mobile-preview{max-width:360px;margin:auto}.role-switcher{position:sticky;top:0;z-index:20}.action-list{grid-template-columns:1fr}}

/* REV 14.1 — filtros globais persistentes, tabelas fixas e backups */
.evoluton-topbar{position:sticky;top:0;z-index:1040}
.global-filter-container{
  position:sticky;top:66px;z-index:1035;background:#fff;border-bottom:1px solid var(--evo-line);
  box-shadow:0 3px 10px rgba(4,31,54,.055);padding:.5rem 1rem;display:flex;
  align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap
}
.global-filter-disciplines,.global-filter-selects{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}
.global-filter-title{font-size:.76rem;font-weight:800;color:#28495f;display:flex;align-items:center;gap:.3rem;margin-right:.15rem}
.global-discipline-btn{border:1px solid #cad5dd;background:#f2f5f7;color:#345164;border-radius:.45rem;padding:.42rem .62rem;font-size:.69rem;font-weight:800;line-height:1.1;white-space:nowrap}
.global-discipline-btn:hover{border-color:#8fa7b8;background:#eaf0f4}
.global-discipline-btn.active{background:var(--evo-green);border-color:var(--evo-green);color:#fff}
.global-filter-selects label{display:flex;align-items:center;gap:.3rem;font-size:.68rem;font-weight:800;color:#536b7a;white-space:nowrap}
.global-filter-selects select{width:auto;min-width:92px;max-width:165px;font-size:.72rem}
.global-filter-selects label:nth-child(2) select,.global-filter-selects label:nth-child(3) select{min-width:132px}
.global-filter-clear{font-size:.7rem;white-space:nowrap}
.database-card-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.85rem 1rem}
.database-card-header h1{color:#153a55}.database-header-actions{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;justify-content:flex-end}
.database-inner-toolbar{border:0;border-bottom:1px solid #dce3e8;border-radius:0;padding:.65rem .8rem}
.database-card .database-table-wrap{border:0;max-height:calc(100vh - 286px)}
.visao-table-wrap{max-height:calc(100vh - 295px);overflow:auto}
.sticky-header-table thead th{position:sticky;top:0;z-index:5;background:#123b58;color:#fff;box-shadow:inset 0 -1px 0 #d5e0e7}
.backup-table-wrap{max-height:360px;overflow:auto}.backup-table-wrap thead th{position:sticky;top:0;z-index:2}
.map-active-scope{display:flex;align-items:center;gap:.4rem;color:#31536c;font-size:.75rem;font-weight:700;padding:.45rem .55rem;border:1px solid #dfe6eb;border-radius:.55rem;background:#fff}
.map-center-column .schematic-map{height:calc(100vh - 220px);min-height:500px}
@media(max-width:1100px){
  .global-filter-container{align-items:flex-start}.global-filter-disciplines,.global-filter-selects{width:100%}
  .map-center-column .schematic-map{height:calc(100vh - 275px)}
}
@media(max-width:760px){
  .global-filter-container{position:relative;top:auto;padding:.45rem .55rem}.evoluton-topbar{position:relative}
  .global-filter-disciplines,.global-filter-selects{overflow-x:auto;flex-wrap:nowrap;padding-bottom:.2rem}
  .global-filter-title{display:none}.global-discipline-btn{flex:0 0 auto}.global-filter-selects label{flex:0 0 auto}
  .database-card-header{align-items:flex-start;flex-direction:column}.database-header-actions{width:100%;justify-content:flex-start}
  .visao-table-wrap{max-height:65vh}.map-center-column .schematic-map{height:60vh}
}

/* REV 14.2 — progresso da importação e robustez da Planta Baixa */
.import-progress-panel{
  margin-top:1rem;padding:.85rem .95rem;border:1px solid #cbd9e2;border-radius:.65rem;
  background:#f8fbfc;color:#24475e
}
.import-progress-panel strong{font-size:.82rem}.import-progress-panel #importProgressPercent{font-size:.74rem;font-weight:800;color:#35586f}
.import-progress-track{height:10px;background:#e1e8ed;border-radius:999px;overflow:hidden}
.import-progress-track .progress-bar{background:linear-gradient(90deg,#0b6b9f,#159b72);transition:width .22s ease}
.import-progress-panel.is-complete{border-color:#a9d8c7;background:#f2fbf7}.import-progress-panel.is-complete .progress-bar{background:#159b72}
.import-progress-panel.is-error{border-color:#ebc5c1;background:#fff7f6}.import-progress-panel.is-error strong,.import-progress-panel.is-error #importProgressPercent{color:#a33a35}.import-progress-panel.is-error .progress-bar{background:#c84d43}
.network-data-status{top:52px}

/* REV 14.3 — mapas múltiplos, CAD e linha paralela */
.map-layers-section{min-width:0}
.map-layer-controls{display:flex;flex-direction:column;gap:.42rem;max-height:220px;overflow:auto;padding-right:.15rem}
.map-layer-controls.horizontal{flex-direction:row;flex-wrap:wrap;max-height:none;overflow:visible;flex:1}
.map-layer-toggle{display:flex;align-items:flex-start;gap:.5rem;padding:.5rem .55rem;border:1px solid #dfe7ec;border-radius:.55rem;background:#fafcfd;cursor:pointer;min-width:0}
.map-layer-toggle:hover{border-color:#9db4c3;background:#f4f8fa}
.map-layer-toggle input{margin-top:.18rem;flex:0 0 auto}
.map-layer-toggle span{display:flex;flex-direction:column;min-width:0}
.map-layer-toggle strong{font-size:.73rem;color:#24465d;white-space:normal;overflow-wrap:anywhere}
.map-layer-toggle small{font-size:.62rem;color:#70838f;white-space:normal}
.map-layer-toggle.compact{padding:.35rem .48rem;align-items:center}.map-layer-toggle.compact input{margin-top:0}.map-layer-toggle.compact strong{font-size:.69rem}
.dwg-converter-status{display:flex;align-items:flex-start;gap:.65rem;padding:.7rem .8rem;border-radius:.6rem;border:1px solid}
.dwg-converter-status i{font-size:1.05rem;margin-top:.08rem}.dwg-converter-status div{display:flex;flex-direction:column}.dwg-converter-status strong{font-size:.78rem}.dwg-converter-status span,.dwg-converter-status small{font-size:.68rem;overflow-wrap:anywhere}
.dwg-converter-status.available{border-color:#a9d8c7;background:#f3fbf8;color:#147b5e}.dwg-converter-status.unavailable{border-color:#ead39c;background:#fff9eb;color:#8b5b00}
.map-files-table-wrap{max-height:420px;overflow:auto}.map-files-card .sticky-header-table thead th{z-index:3}
.integrated-map-layout{display:grid;grid-template-columns:250px minmax(0,1fr);min-height:430px}
.integrated-map-layers{padding:.8rem;border-right:1px solid #dfe7ec;background:#f9fbfc;display:flex;flex-direction:column;gap:.45rem;max-height:520px;overflow:auto}
.integrated-map-viewport{position:relative;min-height:430px;background:#f6f8fa;overflow:hidden;touch-action:none}
.integrated-map-viewport svg{width:100%;height:100%;position:absolute;inset:0}
.integrated-base-line{fill:none;stroke:#aebdca;stroke-width:.55;vector-effect:non-scaling-stroke}
.integrated-network-line{fill:none;stroke-linecap:round;stroke-linejoin:round;cursor:pointer}
.integrated-network-line.reference{filter:drop-shadow(0 0 1px rgba(0,0,0,.35))}
.integrated-map-point{fill:#e85c57;stroke:#fff;stroke-width:1;vector-effect:non-scaling-stroke}
.integrated-map-status{position:absolute;left:12px;bottom:10px;padding:.35rem .55rem;border-radius:.45rem;background:rgba(255,255,255,.92);border:1px solid #d8e1e7;color:#49616f;font-size:.68rem;pointer-events:none}.integrated-map-status.error{color:#a33a35;border-color:#ebc5c1}
@media(max-width:900px){.integrated-map-layout{grid-template-columns:1fr}.integrated-map-layers{border-right:0;border-bottom:1px solid #dfe7ec;max-height:160px}.integrated-map-viewport{min-height:360px}}

/* REV 14.5 - roteamento seguro, cores por mapa e controles no modo tela cheia */
.color-group-title{font-size:.78rem;text-transform:uppercase;letter-spacing:.035em;color:#294557;font-weight:800;margin:0 0 .55rem}
.discipline-color-row span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fullscreen-filters-section{display:none}
.map-workspace:fullscreen,
.map-workspace.is-fullscreen,
.map-workspace.fullscreen-fallback{
  width:100vw;height:100vh;min-height:100vh;max-height:100vh;
  display:grid!important;grid-template-columns:minmax(0,1fr) 310px!important;
  gap:0;background:#f8fafb;padding:0;overflow:hidden;
}
.map-workspace.fullscreen-fallback{position:fixed;inset:0;z-index:2000}
.map-workspace:fullscreen .map-center-column,
.map-workspace.is-fullscreen .map-center-column,
.map-workspace.fullscreen-fallback .map-center-column{height:100vh;min-height:0}
.map-workspace:fullscreen .map-kpi-bar,
.map-workspace.is-fullscreen .map-kpi-bar,
.map-workspace.fullscreen-fallback .map-kpi-bar{display:none}
.map-workspace:fullscreen .map-layout,
.map-workspace.is-fullscreen .map-layout,
.map-workspace.fullscreen-fallback .map-layout{flex:1;height:100vh;min-height:0;border-radius:0}
.map-workspace:fullscreen .schematic-map,
.map-workspace.is-fullscreen .schematic-map,
.map-workspace.fullscreen-fallback .schematic-map{width:100%;height:100vh!important;min-height:100vh!important;border:0;border-radius:0}
.map-workspace:fullscreen .map-control-panel,
.map-workspace.is-fullscreen .map-control-panel,
.map-workspace.fullscreen-fallback .map-control-panel{
  display:block!important;height:100vh;min-height:0;border-radius:0;border-width:0 0 0 1px;
  box-shadow:-4px 0 18px rgba(26,57,78,.08);overflow:visible;background:#fff;
}
.map-workspace:fullscreen .map-control-panel .panel-content,
.map-workspace.is-fullscreen .map-control-panel .panel-content,
.map-workspace.fullscreen-fallback .map-control-panel .panel-content{height:100vh;overflow:auto;padding:.85rem}
.map-workspace:fullscreen .fullscreen-filters-section,
.map-workspace.is-fullscreen .fullscreen-filters-section,
.map-workspace.fullscreen-fallback .fullscreen-filters-section{display:block}
.map-workspace:fullscreen .panel-collapse-btn,
.map-workspace.is-fullscreen .panel-collapse-btn,
.map-workspace.fullscreen-fallback .panel-collapse-btn{display:none}
.fullscreen-global-filters{display:block!important;position:static!important;margin:0!important;padding:0!important;border:0!important;border-radius:0!important;box-shadow:none!important;background:transparent!important}
.fullscreen-global-filters .global-filter-disciplines{display:grid!important;grid-template-columns:1fr!important;gap:.35rem!important;align-items:stretch!important}
.fullscreen-global-filters .global-filter-title{margin:0 0 .15rem!important}
.fullscreen-global-filters .global-discipline-btn{width:100%;text-align:left;justify-content:flex-start;padding:.42rem .55rem}
.fullscreen-global-filters .global-filter-selects{display:grid!important;grid-template-columns:1fr!important;gap:.45rem!important;margin-top:.65rem!important}
.fullscreen-global-filters .global-filter-selects label{width:100%!important;display:grid!important;grid-template-columns:1fr!important;gap:.2rem!important}
.fullscreen-global-filters .global-filter-selects select,.fullscreen-global-filters .global-filter-clear{width:100%!important}
.map-layer-toggle{border-left:3px solid var(--map-layer-color,#aeb7c3);padding-left:.45rem}
@media(max-width:760px){
  .map-workspace:fullscreen,.map-workspace.is-fullscreen,.map-workspace.fullscreen-fallback{grid-template-columns:minmax(0,1fr) 260px!important}
}

/* REV 14.7.1 — painel lateral compacto e carregamento online-first */
.map-workspace{grid-template-columns:minmax(0,1fr) 272px}
.map-control-panel .panel-content{padding:.52rem .58rem;overflow:auto}
.control-section{padding:.05rem 0 .48rem}
.control-section + .control-section{padding-top:.52rem}
.control-section h3{font-size:.72rem;margin:0 0 .38rem;letter-spacing:.02em}
.map-global-filters-section{display:block}
.map-sidebar-global-filters{
  position:static!important;top:auto!important;z-index:auto!important;margin:0!important;padding:0!important;
  border:0!important;border-radius:0!important;box-shadow:none!important;background:transparent!important;
  display:block!important
}
.map-sidebar-global-filters .global-filter-disciplines{display:grid!important;grid-template-columns:1fr!important;gap:.18rem!important;align-items:stretch!important}
.map-sidebar-global-filters .global-filter-title{display:none!important}
.map-sidebar-global-filters .global-discipline-btn{
  width:100%;text-align:left;justify-content:flex-start;padding:.34rem .46rem;border-radius:.42rem;font-size:.68rem
}
.map-sidebar-global-filters .global-discipline-btn::before{content:'✓';display:inline-grid;place-items:center;width:18px;height:18px;margin-right:.4rem;border:1px solid #aebdc7;border-radius:4px;background:#fff;color:transparent;font-size:.68rem;font-weight:900;vertical-align:middle}
.map-sidebar-global-filters .global-discipline-btn.active::before{background:var(--evo-green);border-color:var(--evo-green);color:#fff}
.map-sidebar-global-filters .global-filter-selects{display:grid!important;grid-template-columns:1fr!important;gap:.28rem!important;margin-top:.42rem!important}
.map-sidebar-global-filters .global-filter-selects label{display:grid!important;grid-template-columns:82px minmax(0,1fr)!important;align-items:center!important;gap:.35rem!important;width:100%!important;font-size:.65rem!important}
.map-sidebar-global-filters .global-filter-selects select{width:100%!important;min-width:0!important;max-width:none!important;font-size:.68rem!important;padding-top:.22rem;padding-bottom:.22rem}
.map-sidebar-global-filters .global-filter-clear{width:100%!important;font-size:.66rem!important;padding:.3rem .45rem!important}
.execution-measurement-section .form-label{font-size:.65rem!important;margin-bottom:.12rem!important}
.execution-measurement-section .form-select{font-size:.68rem!important;padding-top:.24rem;padding-bottom:.24rem;margin-bottom:.34rem!important}
.map-layer-controls{gap:.22rem;max-height:150px}
.map-layer-toggle{padding:.3rem .38rem;gap:.35rem;border-radius:.42rem}
.map-layer-toggle strong{font-size:.66rem}.map-layer-toggle small{font-size:.57rem}
.panel-actions .btn{font-size:.65rem;padding:.3rem .4rem;margin-bottom:.18rem}
.fullscreen-filters-section{display:block}
@media(max-width:1100px){.map-workspace{grid-template-columns:minmax(0,1fr) 250px}}

/* REV 14.7.1 hotfix — ações rápidas logo abaixo de RAMAIS */
.map-sidebar-global-filters .map-filter-quick-actions{display:grid;grid-template-columns:1fr;gap:.24rem;margin:.34rem 0 .42rem}
.map-sidebar-global-filters .map-filter-quick-actions .btn{width:100%!important;font-size:.66rem!important;padding:.3rem .45rem!important}
.map-sidebar-global-filters .global-filter-selects{margin-top:0!important}
.map-sidebar-global-filters .global-filter-selects .global-filter-clear{display:none!important}
.map-workspace:fullscreen .map-filter-quick-actions,.map-workspace.is-fullscreen .map-filter-quick-actions,.map-workspace.fullscreen-fallback .map-filter-quick-actions{display:grid;grid-template-columns:1fr;gap:.24rem;margin:.34rem 0 .42rem}

/* REV 14.7.4 — painel operacional compacto e edição sem rolagem desnecessária */
@media (min-width: 901px) {
  .map-workspace{grid-template-columns:minmax(0,1fr) 300px}
  .map-control-panel .panel-content{padding:.38rem .46rem;overflow:hidden}
  .control-section{padding:.02rem 0 .30rem}
  .control-section + .control-section{padding-top:.30rem}
  .control-section h3{font-size:.67rem;margin:0 0 .22rem;line-height:1.05}
  .map-sidebar-global-filters .global-filter-disciplines{gap:.08rem!important}
  .map-sidebar-global-filters .global-discipline-btn{padding:.22rem .38rem!important;font-size:.63rem!important;min-height:25px}
  .map-sidebar-global-filters .global-discipline-btn::before{width:14px;height:14px;margin-right:.28rem;font-size:.56rem}
  .map-sidebar-global-filters .map-filter-quick-actions{grid-template-columns:1fr 1fr;gap:.16rem;margin:.20rem 0 .24rem}
  .map-sidebar-global-filters .map-filter-quick-actions .btn{font-size:.61rem!important;padding:.22rem .25rem!important;min-height:26px}
  .map-sidebar-global-filters .global-filter-selects{gap:.14rem!important}
  .map-sidebar-global-filters .global-filter-selects label{grid-template-columns:72px minmax(0,1fr)!important;gap:.25rem!important;font-size:.60rem!important;line-height:1.05}
  .map-sidebar-global-filters .global-filter-selects select{font-size:.62rem!important;padding:.16rem 1.5rem .16rem .30rem!important;min-height:27px}
  .execution-measurement-section label{font-size:.61rem!important;margin-bottom:.08rem!important}
  .execution-measurement-section select{font-size:.62rem!important;min-height:27px;padding-top:.16rem;padding-bottom:.16rem;margin-bottom:.18rem!important}
  .map-layer-controls{gap:.12rem}
  .map-layer-toggle{padding:.20rem .28rem!important;min-height:27px}
  .map-layer-toggle span strong{font-size:.61rem!important}
  .map-layer-toggle span small{font-size:.54rem!important;line-height:1.05}
  .panel-actions{display:grid;grid-template-columns:1fr 1fr;gap:.16rem}
  .panel-actions h3{grid-column:1/-1}
  .panel-actions .btn{font-size:.61rem!important;padding:.23rem .28rem!important;min-height:27px}
}

/* Nuvem de edição: retângulo compacto, coordenadas legíveis e ações sempre visíveis. */
.detail-panel.map-info-cloud{max-height:min(72vh,640px);overflow:hidden;display:flex;flex-direction:column}
.detail-panel.map-info-cloud #consulta,.detail-panel.map-info-cloud #edicao{overflow:auto;min-height:0}
.detail-panel dl{padding:.18rem .32rem}
.detail-panel dl div{grid-template-columns:40% 60%;font-size:.68rem;border-bottom:1px solid #fff}
.detail-panel dt,.detail-panel dd{padding:.16rem .22rem;line-height:1.15}
.detail-panel dl .coordinate-row{grid-template-columns:34% 66%}
.detail-panel dl .coordinate-row dd{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.62rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.detail-panel .edit-form{padding:.36rem .42rem}
.detail-panel .edit-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:.32rem .42rem;align-items:end}
.detail-panel .edit-form-grid>label{margin:0!important;font-size:.68rem!important;line-height:1.1}
.detail-panel .edit-form-grid .edit-wide{grid-column:1/-1}
.detail-panel .edit-form-grid .edit-check{align-self:center;padding-top:.15rem}
.detail-panel .edit-form-grid input.form-control,.detail-panel .edit-form-grid select.form-select{font-size:.67rem;min-height:29px;padding-top:.18rem;padding-bottom:.18rem}
.detail-panel .edit-form-grid small{font-size:.59rem;line-height:1.15}
.detail-panel .edit-actions-sticky{position:sticky;bottom:0;z-index:3;background:#fff;border-top:1px solid #dce4ea;padding:.34rem .42rem;display:grid;grid-template-columns:1fr 1fr;gap:.28rem}
.detail-panel .edit-actions-sticky .btn{margin:0!important;width:100%!important;font-size:.68rem!important;padding:.30rem .38rem!important}
.detail-panel #msgMapa{background:#fff;margin:0!important;padding-top:.15rem!important}


/* REV 14.7.5 — distribuição vertical, ficha harmônica e operação em tela cheia */
@media (min-width:901px){
  .map-control-panel .panel-content{
    height:100%;min-height:0;overflow:hidden!important;
    display:flex;flex-direction:column;justify-content:space-between;
    padding:.52rem .58rem!important;
  }
  .map-control-panel .control-section{flex:0 0 auto;padding:.08rem 0 .38rem!important}
  .map-control-panel .control-section + .control-section{padding-top:.38rem!important}
  .map-control-panel .control-section h3{font-size:.69rem;margin:0 0 .30rem!important}
  .map-sidebar-global-filters .global-filter-disciplines{gap:.16rem!important}
  .map-sidebar-global-filters .global-discipline-btn{min-height:29px!important;padding:.28rem .42rem!important;font-size:.65rem!important}
  .map-sidebar-global-filters .map-filter-quick-actions{gap:.24rem!important;margin:.30rem 0 .34rem!important}
  .map-sidebar-global-filters .map-filter-quick-actions .btn{min-height:29px!important;font-size:.63rem!important}
  .map-sidebar-global-filters .global-filter-selects{gap:.20rem!important}
  .map-sidebar-global-filters .global-filter-selects label{font-size:.62rem!important;grid-template-columns:74px minmax(0,1fr)!important}
  .map-sidebar-global-filters .global-filter-selects select,.execution-measurement-section select{min-height:29px!important;font-size:.64rem!important}
  .execution-measurement-section select{margin-bottom:.24rem!important}
  .map-layer-controls{max-height:120px;overflow:hidden}
  .map-layer-toggle{min-height:31px!important;padding:.25rem .32rem!important}
  .panel-actions .btn{min-height:30px!important;font-size:.64rem!important}
  .map-workspace:fullscreen .map-control-panel .panel-content,
  .map-workspace.is-fullscreen .map-control-panel .panel-content,
  .map-workspace.fullscreen-fallback .map-control-panel .panel-content{height:100vh;overflow:hidden!important;display:flex;justify-content:space-between;padding:.52rem .58rem!important}
}

.detail-panel.map-info-cloud{height:min(74vh,660px);max-height:min(74vh,660px);overflow:hidden;display:flex;flex-direction:column}
.detail-panel.map-info-cloud #consulta{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden!important;padding:.25rem!important}
.detail-panel.map-info-cloud #consulta dl{flex:0 1 auto;min-height:0;overflow:auto;margin:0;padding:.12rem .18rem}
.detail-panel.map-info-cloud #edicao{flex:1;min-height:0;overflow:auto}
.detail-panel dl div{grid-template-columns:39% 61%;font-size:.68rem;border-bottom:1px solid #fff;gap:.18rem}
.detail-panel dt,.detail-panel dd{padding:.15rem .20rem;line-height:1.12}
.detail-panel dl .coordinate-row{grid-template-columns:39% 61%}
.detail-panel dl .coordinate-row dd{white-space:normal!important;overflow:visible!important;text-overflow:clip!important;word-break:normal;font-size:.58rem;line-height:1.05}
.coord-value{display:grid;grid-template-columns:1fr;gap:.05rem;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}
.coord-value span{display:block;white-space:nowrap}
.detail-view-actions{margin-top:auto;padding:.42rem .30rem .34rem;display:grid;grid-template-columns:1fr;gap:.34rem;border-top:1px solid #e2e8ed;background:#fff}
.detail-panel .detail-view-actions .btn{margin:0!important;width:100%!important;min-height:34px;padding:.34rem .45rem!important;font-size:.73rem!important;line-height:1.15;border-radius:.36rem}
.detail-panel .edit-actions-sticky .btn{min-height:32px;font-size:.70rem!important;padding:.32rem .38rem!important}

/* Símbolos civis podem girar com a direção do trecho sem alterar posição ou escala. */
.map-point .map-box{transform-box:fill-box;transform-origin:center}

/* REV 14.7.5 — ajuste visual da ficha conforme referência aprovada (14/08/2026) */
.detail-panel.map-info-cloud{
  height:min(78vh,700px);
  max-height:min(78vh,700px);
}
.detail-panel.map-info-cloud>h2{
  font-size:1.02rem!important;
  line-height:1.15;
  font-weight:800;
  padding:.72rem .78rem .58rem!important;
  margin:0!important;
}
.detail-panel.map-info-cloud .detail-close{
  top:.58rem;
  right:.62rem;
  font-size:1.35rem;
}
.detail-panel.map-info-cloud #consulta{
  padding:.36rem .52rem .46rem!important;
}
.detail-panel.map-info-cloud #consulta dl{
  flex:1 1 auto;
  min-height:0;
  overflow:hidden!important;
  display:flex;
  flex-direction:column;
  justify-content:space-between;
  margin:0;
  padding:0;
  background:#f7f9fa;
}
.detail-panel.map-info-cloud #consulta dl>div{
  flex:1 1 0;
  min-height:0;
  display:grid;
  grid-template-columns:41% 59%;
  align-items:center;
  gap:0;
  font-size:.75rem;
  line-height:1.12;
  border-bottom:1px solid #fff;
}
.detail-panel.map-info-cloud #consulta dl>div.coordinate-row{
  flex:1.45 1 0;
  grid-template-columns:41% 59%;
}
.detail-panel.map-info-cloud #consulta dt{
  align-self:stretch;
  display:flex;
  align-items:center;
  padding:.18rem .42rem;
  font-weight:700;
  color:#29465b;
  background:#f0f3f5;
}
.detail-panel.map-info-cloud #consulta dd{
  margin:0;
  padding:.18rem .48rem;
  color:#36556c;
  font-size:.75rem;
}
.detail-panel.map-info-cloud #consulta .coordinate-row dd{
  font-size:.68rem!important;
  line-height:1.14;
  font-family:ui-monospace,SFMono-Regular,Consolas,monospace;
}
.detail-panel.map-info-cloud #consulta .coord-value{
  gap:.12rem;
}
.detail-panel.map-info-cloud #consulta .coord-value span{
  white-space:nowrap;
}
.detail-panel.map-info-cloud .detail-view-actions{
  flex:0 0 auto;
  margin-top:.48rem;
  padding:0;
  gap:.38rem;
  border-top:0;
}
.detail-panel.map-info-cloud .detail-view-actions .btn{
  min-height:39px;
  padding:.42rem .55rem!important;
  font-size:.78rem!important;
  line-height:1.15;
  border-radius:.38rem;
}
@media (max-height:760px) and (min-width:901px){
  .detail-panel.map-info-cloud{height:min(82vh,640px);max-height:min(82vh,640px)}
  .detail-panel.map-info-cloud>h2{font-size:.94rem!important;padding:.56rem .68rem .46rem!important}
  .detail-panel.map-info-cloud #consulta{padding:.28rem .42rem .36rem!important}
  .detail-panel.map-info-cloud #consulta dl>div{font-size:.69rem}
  .detail-panel.map-info-cloud #consulta dd{font-size:.69rem;padding:.13rem .38rem}
  .detail-panel.map-info-cloud #consulta dt{padding:.13rem .34rem}
  .detail-panel.map-info-cloud #consulta .coordinate-row dd{font-size:.61rem!important}
  .detail-panel.map-info-cloud .detail-view-actions{margin-top:.34rem;gap:.28rem}
  .detail-panel.map-info-cloud .detail-view-actions .btn{min-height:34px;font-size:.72rem!important;padding:.34rem .44rem!important}
}

/* REV 14.7.5 — refinamento visual da edição de caixas/pontos
   Mantém a lógica existente e redistribui o formulário no mesmo card. */
.detail-panel.map-info-cloud.is-editing{
  width:min(390px,calc(100% - 28px));
  height:min(70vh,610px);
  max-height:min(70vh,610px);
}
.detail-panel.map-info-cloud.is-editing>h2{
  flex:0 0 auto;
  font-size:1.08rem!important;
  line-height:1.15;
  padding:.72rem .86rem .62rem!important;
}
.detail-panel.map-info-cloud.is-editing .detail-close{
  top:.42rem;
  right:.52rem;
  font-size:1.38rem;
}
.detail-panel.map-info-cloud.is-editing #edicao{
  display:flex;
  flex-direction:column;
  flex:1 1 auto;
  min-height:0;
  overflow:hidden!important;
  padding:0!important;
  background:#fff;
}
.detail-panel.map-info-cloud.is-editing .edit-form{
  flex:1 1 auto;
  min-height:0;
  padding:.88rem .86rem .58rem!important;
}
.detail-panel.map-info-cloud.is-editing .edit-form-grid{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1.12fr);
  column-gap:.86rem;
  row-gap:.82rem;
  align-items:center;
  align-content:start;
}
.detail-panel.map-info-cloud.is-editing .edit-form-grid>label{
  margin:0!important;
  font-size:.84rem!important;
  line-height:1.22!important;
  color:#17354b;
  font-weight:650;
}
.detail-panel.map-info-cloud.is-editing .edit-form-grid .edit-check{
  min-height:38px;
  display:flex;
  align-items:center;
  gap:.48rem;
  padding:.22rem 0!important;
}
.detail-panel.map-info-cloud.is-editing .edit-form-grid .edit-check .form-check-input{
  width:1.12rem;
  height:1.12rem;
  margin:0;
  flex:0 0 auto;
}
.detail-panel.map-info-cloud.is-editing .edit-form-grid .edit-check .form-check-label{
  font-size:.86rem;
  line-height:1.18;
  font-weight:650;
}
.detail-panel.map-info-cloud.is-editing .edit-form-grid input.form-control,
.detail-panel.map-info-cloud.is-editing .edit-form-grid select.form-select{
  min-height:39px;
  margin-top:.27rem;
  padding:.43rem .58rem;
  font-size:.82rem!important;
  line-height:1.2;
  border-radius:.42rem;
}
.detail-panel.map-info-cloud.is-editing .edit-form-grid .edit-wide{
  grid-column:1/-1;
}
.detail-panel.map-info-cloud.is-editing .edit-form-grid small{
  grid-column:1/-1;
  font-size:.71rem!important;
  line-height:1.3!important;
  color:#607382!important;
  margin-top:-.18rem;
}
.detail-panel.map-info-cloud.is-editing .edit-actions-sticky{
  position:static!important;
  flex:0 0 auto;
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:.58rem;
  padding:.68rem .86rem .78rem!important;
  margin:0;
  border-top:1px solid #dce4ea;
  background:#fff;
}
.detail-panel.map-info-cloud.is-editing .edit-actions-sticky .btn{
  min-height:42px!important;
  margin:0!important;
  padding:.48rem .58rem!important;
  font-size:.82rem!important;
  font-weight:650;
  line-height:1.15;
  border-radius:.42rem;
}
.detail-panel.map-info-cloud.is-editing #msgMapa{
  flex:0 0 auto;
  padding:0 .86rem .45rem!important;
  font-size:.72rem!important;
}

/* Caixa/ponto: mantém a leitura 2x2 no topo e abre espaço para os campos amplos. */
.detail-panel.map-info-cloud.editing-ponto .edit-form-grid{
  grid-template-rows:auto auto auto auto auto;
}
.detail-panel.map-info-cloud.editing-ponto .edit-form-grid .edit-wide:nth-of-type(5){
  margin-top:.10rem!important;
}
.detail-panel.map-info-cloud.editing-ponto .edit-form-grid .edit-check.edit-wide{
  min-height:44px;
}

@media (max-height:760px) and (min-width:901px){
  .detail-panel.map-info-cloud.is-editing{
    height:min(78vh,570px);
    max-height:min(78vh,570px);
  }
  .detail-panel.map-info-cloud.is-editing>h2{
    font-size:1rem!important;
    padding:.60rem .72rem .50rem!important;
  }
  .detail-panel.map-info-cloud.is-editing .edit-form{
    padding:.66rem .72rem .44rem!important;
  }
  .detail-panel.map-info-cloud.is-editing .edit-form-grid{
    column-gap:.68rem;
    row-gap:.58rem;
  }
  .detail-panel.map-info-cloud.is-editing .edit-form-grid>label{font-size:.78rem!important}
  .detail-panel.map-info-cloud.is-editing .edit-form-grid .edit-check .form-check-label{font-size:.80rem}
  .detail-panel.map-info-cloud.is-editing .edit-form-grid input.form-control,
  .detail-panel.map-info-cloud.is-editing .edit-form-grid select.form-select{
    min-height:35px;
    font-size:.76rem!important;
    padding:.35rem .50rem;
  }
  .detail-panel.map-info-cloud.is-editing .edit-form-grid small{font-size:.66rem!important}
  .detail-panel.map-info-cloud.is-editing .edit-actions-sticky{
    padding:.52rem .72rem .60rem!important;
    gap:.46rem;
  }
  .detail-panel.map-info-cloud.is-editing .edit-actions-sticky .btn{
    min-height:37px!important;
    font-size:.76rem!important;
  }
}

/* REV 14.7.5 — ajuste aprovado para EDITAR TRECHO.
   Formulário vertical, fonte maior, datas com atalho Hoje e ações proporcionais. */
.detail-panel.map-info-cloud.editing-trecho{
  width:min(390px,calc(100% - 28px));
  height:min(76vh,650px);
  max-height:min(76vh,650px);
}
.detail-panel.map-info-cloud.editing-trecho .edit-form{
  padding:.82rem .86rem .46rem!important;
  overflow:hidden;
}
.detail-panel.map-info-cloud.editing-trecho .trecho-edit-grid{
  display:grid;
  grid-template-columns:1fr;
  gap:.52rem;
  align-content:start;
}
.detail-panel.map-info-cloud.editing-trecho .trecho-edit-grid>label,
.detail-panel.map-info-cloud.editing-trecho .trecho-edit-grid .edit-wide{
  grid-column:1!important;
  font-size:.86rem!important;
  line-height:1.20!important;
}
.detail-panel.map-info-cloud.editing-trecho .trecho-edit-grid .edit-check{
  min-height:34px;
  padding:.08rem 0 .12rem!important;
}
.detail-panel.map-info-cloud.editing-trecho .trecho-edit-grid .edit-check .form-check-input{
  width:1.08rem;
  height:1.08rem;
}
.detail-panel.map-info-cloud.editing-trecho .trecho-edit-grid .edit-check .form-check-label{
  font-size:.88rem!important;
  font-weight:600;
}
.detail-panel.map-info-cloud.editing-trecho .date-block{
  display:block;
  font-weight:500!important;
}
.detail-panel.map-info-cloud.editing-trecho .date-block input.form-control{
  min-height:40px;
  margin-top:.28rem;
  font-size:.88rem!important;
  padding:.42rem .62rem;
}
.detail-panel.map-info-cloud.editing-trecho .btn-hoje{
  display:block;
  width:100%!important;
  min-height:38px;
  margin:.42rem 0 0!important;
  padding:.38rem .55rem!important;
  font-size:.86rem!important;
  line-height:1.1;
  border-radius:.42rem;
}
.detail-panel.map-info-cloud.editing-trecho .edit-divider{
  height:1px;
  background:#cfd8df;
  margin:.30rem 0 .26rem;
}
.detail-panel.map-info-cloud.editing-trecho .trecho-edit-grid select.form-select{
  min-height:40px;
  margin-top:.28rem;
  font-size:.86rem!important;
  padding:.40rem .58rem;
}
.detail-panel.map-info-cloud.editing-trecho .trecho-edit-grid small{
  font-size:.74rem!important;
  line-height:1.34!important;
  margin-top:-.08rem;
}
.detail-panel.map-info-cloud.editing-trecho .edit-actions-sticky{
  grid-template-columns:1fr;
  gap:.42rem;
  padding:.54rem .86rem .72rem!important;
}
.detail-panel.map-info-cloud.editing-trecho .edit-actions-sticky .btn{
  min-height:40px!important;
  font-size:.84rem!important;
  padding:.43rem .58rem!important;
}
@media (max-height:760px) and (min-width:901px){
  .detail-panel.map-info-cloud.editing-trecho{height:min(82vh,610px);max-height:min(82vh,610px)}
  .detail-panel.map-info-cloud.editing-trecho .edit-form{padding:.62rem .72rem .34rem!important}
  .detail-panel.map-info-cloud.editing-trecho .trecho-edit-grid{gap:.36rem}
  .detail-panel.map-info-cloud.editing-trecho .date-block input.form-control,
  .detail-panel.map-info-cloud.editing-trecho .trecho-edit-grid select.form-select{min-height:35px;font-size:.79rem!important}
  .detail-panel.map-info-cloud.editing-trecho .btn-hoje{min-height:33px;font-size:.79rem!important;margin-top:.30rem!important}
  .detail-panel.map-info-cloud.editing-trecho .trecho-edit-grid>label{font-size:.79rem!important}
  .detail-panel.map-info-cloud.editing-trecho .trecho-edit-grid .edit-check .form-check-label{font-size:.81rem!important}
  .detail-panel.map-info-cloud.editing-trecho .trecho-edit-grid small{font-size:.68rem!important}
  .detail-panel.map-info-cloud.editing-trecho .edit-actions-sticky{padding:.42rem .72rem .52rem!important;gap:.34rem}
  .detail-panel.map-info-cloud.editing-trecho .edit-actions-sticky .btn{min-height:36px!important;font-size:.78rem!important}
}

/* REV 14.7.12 - permissões por disciplina */
.permission-matrix-wrap{border:1px solid #dfe7ec;border-radius:.65rem;overflow:hidden;background:#fff}
.permission-matrix thead th{background:#f4f7f9;color:#506572;font-size:.76rem;text-transform:uppercase;letter-spacing:.03em;border-bottom:1px solid #dfe7ec}
.permission-matrix td,.permission-matrix th{padding:.55rem .75rem;vertical-align:middle}
.permission-matrix td:first-child{width:70%}
.permission-matrix .form-check-input{width:1.15rem;height:1.15rem;cursor:pointer}
.permission-matrix .form-check-input:disabled{cursor:not-allowed;opacity:.55}

/* REV 14.7.14 - ramais separados no filtro global */
.discipline-ramal_bt{color:var(--disc-ramal-bt,#C2185B)!important}.discipline-ramal_tl{color:var(--disc-ramal-tl,#8E3A8C)!important}
.rede-ramal_bt .ip-post,.rede-ramal_tl .ip-post{fill:currentColor}

/* REV 14.7.15 — subfiltros por serviço dentro de cada disciplina */
.global-discipline-group{display:flex;align-items:center;gap:.28rem;flex-wrap:wrap;padding:.12rem .18rem;border-radius:8px;background:#f7fafc;border:1px solid #e1e9ee}
.global-discipline-group>.global-discipline-btn{margin:0}
.global-service-subfilters{display:flex;align-items:center;gap:.18rem;flex-wrap:wrap}
.global-service-btn{border:1px solid #b8c6cf;background:#fff;color:#536b7a;border-radius:999px;padding:.18rem .42rem;font-size:.62rem;font-weight:800;line-height:1.1;transition:.15s ease;white-space:nowrap}
.global-service-btn:hover{border-color:#6f8ea2;color:#28495f}
.global-service-btn.active{background:#e4f4ee;border-color:#1d8f78;color:#11604f}
.map-sidebar-global-filters .global-discipline-group{display:grid!important;grid-template-columns:1fr!important;gap:.12rem!important;padding:.18rem!important}
.map-sidebar-global-filters .global-service-subfilters{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:.12rem!important}
.map-sidebar-global-filters .global-service-btn{width:100%;font-size:.58rem;padding:.20rem .20rem;text-align:center}
.fullscreen-global-filters .global-discipline-group{display:grid!important;grid-template-columns:1fr!important;gap:.18rem!important}
.fullscreen-global-filters .global-service-subfilters{display:flex!important;gap:.18rem!important}
@media(max-width:900px){.global-discipline-group{flex:0 0 auto}.global-service-subfilters{flex-wrap:nowrap}}

/* V4.2: layout mobile; não interfere na geometria SVG nem no backend */
.evo-mobile-menu,.evo-mobile-close,.mobile-filters-toggle,.mobile-map-tools-toggle{display:none}
.mobile-nav-backdrop[hidden]{display:none!important}
@media(max-width:900px){
 html,body{max-width:100%;overflow-x:hidden}
 .app-shell.evoluton-shell{display:block!important;min-width:0}
 .app-main.evoluton-main{margin-left:0!important;width:100%!important;min-width:0!important}
 .app-sidebar.evoluton-sidebar{position:fixed!important;top:0!important;bottom:0!important;left:0!important;width:min(86vw,310px)!important;height:100dvh!important;min-height:0!important;display:flex!important;flex-direction:column!important;transform:translateX(-105%);transition:transform .22s ease;z-index:2105!important;box-shadow:0 10px 36px rgba(0,0,0,.2);overflow-y:auto}
 .app-sidebar.evoluton-sidebar.mobile-open{transform:translateX(0)}
 .app-sidebar.evoluton-sidebar .sidebar-nav{display:flex!important;flex-direction:column!important;overflow:visible!important;gap:.3rem}
 .app-sidebar.evoluton-sidebar .sidebar-link{white-space:normal;min-height:44px;display:flex;align-items:center;gap:.6rem;font-size:.9rem}
 .app-sidebar.evoluton-sidebar .sidebar-user-menu{display:flex!important;flex:0 0 auto}
 .mobile-nav-backdrop:not([hidden]){display:block;position:fixed;inset:0;background:rgba(9,24,36,.62);z-index:2100}
 body.mobile-nav-open{overflow:hidden}
 .evo-mobile-menu,.evo-mobile-close{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;border:0;border-radius:.5rem;background:transparent}
 .evo-mobile-menu{font-size:1.55rem;color:#173e58;flex-shrink:0}
 .evo-mobile-close{position:absolute;right:8px;top:8px;color:white;font-size:1.2rem}
 .evoluton-brand{position:relative}
 .evoluton-topbar{position:relative!important;top:auto!important;height:auto!important;min-height:60px!important;display:flex;gap:.35rem;padding:.45rem .6rem!important}
 .project-heading{min-width:0;flex:1}.project-heading strong{font-size:.86rem}.project-heading span{font-size:.68rem}
 .evoluton-content{min-width:0;padding:.6rem!important}
 .global-filter-container{position:relative!important;top:auto!important;box-shadow:none!important;padding:.6rem!important;display:none!important;overflow:visible}
 .global-filter-container.mobile-filters-open{display:flex!important;flex-direction:column;align-items:stretch!important;gap:.55rem}
 .mobile-filters-toggle,.mobile-map-tools-toggle{display:flex;align-items:center;justify-content:space-between;gap:.5rem;width:100%;padding:.7rem .8rem;min-height:44px;border:1px solid #cbdce4;background:#f5f9fb;color:#143e59;font-size:.82rem;font-weight:750;text-align:left;border-radius:.5rem}
 .mobile-filters-toggle>span{flex:1}.mobile-filters-toggle[aria-expanded=true]>.bi-chevron-down,.mobile-map-tools-toggle[aria-expanded=true]>.bi-chevron-down{transform:rotate(180deg)}
 .global-filter-disciplines{display:flex!important;flex-wrap:wrap!important;overflow:visible!important;width:100%!important;gap:.4rem!important}
 .global-discipline-group{flex:1 1 140px!important;min-width:0;display:flex!important;flex-wrap:wrap!important;align-items:center;gap:.25rem;padding:.28rem;border:1px solid #e2eaf0;border-radius:.5rem}
 .global-discipline-group>.global-discipline-btn{flex:1 0 100%;min-height:40px}
 .global-service-subfilters{display:flex;gap:.25rem;flex-wrap:wrap!important;width:100%}
 .global-service-btn{flex:1 1 auto;min-height:38px}
 .global-filter-selects{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));gap:.45rem!important;width:100%!important;overflow:visible!important}
 .global-filter-selects label{display:flex;flex-direction:column;align-items:stretch;gap:.2rem;min-width:0;white-space:normal}
 .global-filter-selects select,.global-filter-selects label:nth-child(2) select,.global-filter-selects label:nth-child(3) select{min-width:0;max-width:none;width:100%;min-height:40px}
 .global-filter-clear{min-height:42px}
 .map-workspace,.map-workspace.panel-collapsed{display:flex!important;flex-direction:column;gap:.5rem;min-width:0}
 .map-center-column{min-width:0;width:100%}
 .map-kpi-bar{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:0;min-width:0}
 .map-kpi-bar .kpi-phase{grid-column:1/-1}.map-kpi-bar .kpi-card{min-width:0;padding:.55rem!important;grid-template-columns:1fr auto!important}
 .map-kpi-bar .kpi-round-icon{display:none!important}.map-kpi-bar .kpi-label{grid-column:1;min-width:0;font-size:.66rem}.map-kpi-bar .kpi-card strong{grid-column:2;font-size:1rem!important}
 .map-kpi-bar .kpi-card small,.map-kpi-bar .kpi-progress{grid-column:1/-1}
 .map-layout,.map-center-column .map-layout{width:100%;min-width:0;min-height:0!important;display:block!important}
 .map-center-column .schematic-map{height:clamp(360px,62dvh,760px)!important;min-height:0!important;width:100%;touch-action:none}
 .map-control-panel{display:none!important;width:100%!important;max-height:none!important;overflow:visible!important}
 .map-control-panel.mobile-tools-open{display:block!important;position:relative!important;grid-column:auto!important}
 .map-control-panel.mobile-tools-open .panel-content{display:block!important;width:100%;overflow:visible!important}
 .map-control-panel .panel-collapse-btn{display:none!important}
 .map-control-panel .control-section{min-width:0}
 .map-legend{max-width:calc(100% - 16px);max-height:75px;overflow:auto;flex-wrap:wrap;font-size:.65rem;left:8px;bottom:8px;padding:.3rem;gap:.3rem}
 .detail-panel.map-info-cloud:not(.d-none){position:fixed!important;inset:auto 0 0 0!important;width:100%!important;max-width:none!important;height:min(76dvh,700px)!important;max-height:76dvh!important;border-radius:16px 16px 0 0!important;z-index:2200!important;box-shadow:0 -10px 40px rgba(0,0,0,.28)}
 .detail-panel.map-info-cloud .detail-close{min-width:44px;min-height:44px}
 .database-card-header{flex-direction:column;align-items:stretch!important;gap:.55rem}.database-header-actions{display:flex;flex-wrap:wrap;justify-content:flex-start!important;gap:.35rem}
 .database-header-actions .btn{min-height:42px}
 .data-toolbar,.database-inner-toolbar{display:flex;flex-wrap:wrap;gap:.5rem}.data-toolbar .search-box{min-width:0;flex-basis:100%}
 .database-table-wrap,.database-card .database-table-wrap,.visao-table-wrap{width:100%;max-width:100%;max-height:65dvh!important;overflow:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}
 .database-table{min-width:1500px}
 .row,.card,.table-responsive{min-width:0}
 input,select,textarea{font-size:max(16px,1rem)}
}
@media(max-width:390px){.global-filter-selects{grid-template-columns:1fr}.project-heading-icon{display:none}}

@media(max-width:900px){
 body:has(.map-page) .mobile-filters-toggle{display:none!important}
 .map-control-panel.mobile-tools-open #globalFilterContainer{display:flex!important;flex-direction:column!important;gap:.55rem}
 .map-control-panel.mobile-tools-open .map-sidebar-global-filters .global-discipline-group{display:flex!important;flex-wrap:wrap!important;min-width:0;width:100%}
 .map-control-panel.mobile-tools-open .map-sidebar-global-filters .global-service-subfilters{display:flex!important;flex-wrap:wrap!important;width:100%}
 .map-control-panel.mobile-tools-open .global-filter-selects{display:grid!important;width:100%}
}

/* V4.3 - gestos do mapa em dispositivos touch */
#viewport,#viewport svg,#viewport #world,#viewport .map-feature,#viewport .map-object{touch-action:none;-webkit-user-select:none;user-select:none}
#viewport svg{-webkit-tap-highlight-color:transparent}
