/* ==========================================================================
   Plataforma de Zeladoria Urbana - Protótipo (front-end)
   Tema visual sobre Bootstrap 5. Cores institucionais discretas.
   ========================================================================== */
:root{
  --zl-primary:#087466;
  --zl-primary-dark:#07594f;
  --zl-primary-light:#e8f6f3;
  --zl-primary-soft:#f3faf8;
  --zl-accent:#e99a18;
  --zl-slate:#19333d;
  --zl-slate-2:#284852;
  --zl-text:#20313a;
  --zl-bg:#f3f6f7;
  --zl-surface:#ffffff;
  --zl-surface-soft:#f8fafb;
  --zl-border:#dfe7e9;
  --zl-border-strong:#cddadd;
  --zl-muted:#667983;
  --zl-sidebar-w:258px;
  --zl-radius-sm:8px;
  --zl-radius:12px;
  --zl-radius-lg:18px;
  --zl-shadow-sm:0 2px 8px rgba(24,51,61,.06);
  --zl-shadow:0 10px 30px rgba(24,51,61,.09);
  --zl-shadow-lg:0 22px 60px rgba(24,51,61,.16);
}

/* ---- Base ---- */
body{background:var(--zl-bg);color:var(--zl-text);font-family:Inter,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;}
a{color:var(--zl-primary);}
.text-primary{color:var(--zl-primary)!important;}
.bg-primary{background-color:var(--zl-primary)!important;}
.btn-primary{background-color:var(--zl-primary);border-color:var(--zl-primary);}
.btn-primary:hover,.btn-primary:focus{background-color:var(--zl-primary-dark);border-color:var(--zl-primary-dark);}
.btn-outline-primary{color:var(--zl-primary);border-color:var(--zl-primary);}
.btn-outline-primary:hover{background-color:var(--zl-primary);border-color:var(--zl-primary);}
.badge-soft{background:var(--zl-primary-light);color:var(--zl-primary-dark);font-weight:600;}
.link-plain{text-decoration:none;}

/* ---- Área pública / landing ---- */
.public-nav{background:#fff;border-bottom:1px solid var(--zl-border);}
.brand{font-weight:700;color:var(--zl-primary)!important;letter-spacing:.2px;}
.brand i{color:var(--zl-accent);}
.hero{background:linear-gradient(135deg,var(--zl-primary) 0%,var(--zl-slate) 100%);color:#fff;}
.hero .btn-light{color:var(--zl-primary-dark);font-weight:600;}
.feature-icon{width:52px;height:52px;border-radius:12px;display:inline-flex;align-items:center;justify-content:center;background:var(--zl-primary-light);color:var(--zl-primary-dark);font-size:1.4rem;}
.section-title{font-weight:700;color:var(--zl-slate);}
footer.public{background:var(--zl-slate);color:#cbd6df;}
footer.public a{color:#e9eef2;text-decoration:none;}

/* ---- Auth cards ---- */
.auth-wrap{min-height:100vh;display:flex;align-items:center;background:linear-gradient(135deg,#0f6e5c22,#24374611),var(--zl-bg);}
.auth-card{max-width:430px;width:100%;border:none;box-shadow:0 10px 30px rgba(20,40,50,.12);}
.auth-card .card-header{background:var(--zl-primary);color:#fff;border:none;text-align:center;padding:1.4rem;}
.demo-creds{background:var(--zl-primary-light);border:1px dashed var(--zl-primary);border-radius:8px;font-size:.85rem;}
.demo-creds code{cursor:pointer;}

/* ---- App shell ---- */
.app-topbar{height:58px;background:#fff;border-bottom:1px solid var(--zl-border);position:fixed;top:0;left:0;right:0;z-index:1030;display:flex;align-items:center;}
/* Layout com SCROLL ÚNICO: topbar fixa; menu + página compartilham o mesmo scroll da janela */
.app-body{display:flex;align-items:flex-start;margin-top:58px;}
.app-sidebar{position:sticky;top:58px;align-self:flex-start;flex:0 0 var(--zl-sidebar-w);width:var(--zl-sidebar-w);min-height:calc(100vh - 58px);background:var(--zl-slate);z-index:1029;padding-bottom:1rem;}
.app-sidebar .nav-link{color:#c7d3dc;border-radius:8px;margin:2px 10px;padding:.55rem .8rem;font-size:.92rem;display:flex;align-items:center;gap:.6rem;}
.app-sidebar .nav-link .bi{font-size:1.05rem;width:20px;text-align:center;}
.app-sidebar .nav-link:hover{background:var(--zl-slate-2);color:#fff;}
.app-sidebar .nav-link.active{background:var(--zl-primary);color:#fff;font-weight:600;}
.app-sidebar .nav-section{color:#7d92a3;font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;padding:.9rem 1.3rem .3rem;}
.app-main{flex:1 1 auto;min-width:0;padding:1.3rem 1.5rem 3rem;}
.sidebar-backdrop{display:none;}
/* Colapso do menu no desktop (hambúrguer) */
body.sidebar-collapsed .app-sidebar{display:none;}
@media (max-width:991.98px){
  .app-body{display:block;}
  .app-sidebar{position:fixed;top:58px;bottom:0;left:0;height:auto;max-height:calc(100vh - 58px);min-height:0;overflow-y:auto;transform:translateX(-100%);transition:transform .25s ease;}
  body.sidebar-collapsed .app-sidebar{display:block;}
  body.sidebar-open .app-sidebar{transform:translateX(0);}
  body.sidebar-open .sidebar-backdrop{display:block;position:fixed;inset:58px 0 0 0;background:rgba(0,0,0,.4);z-index:1028;}
  .app-main{width:100%;}
}

/* ---- Cards / KPIs ---- */
.card{border:1px solid var(--zl-border);border-radius:12px;}
.kpi{border-radius:12px;}
.kpi .kpi-icon{width:46px;height:46px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;font-size:1.3rem;}
.kpi h3{font-weight:700;margin:0;}
.kpi .card-body>div{min-width:0;}
.kpi h3{overflow-wrap:anywhere;}
.kpi small{color:var(--zl-muted);}
.stat-up{color:#1a8f5a;}
.stat-down{color:#c0392b;}

/* ---- Tabelas ---- */
.table thead th{background:#fbfcfd;color:var(--zl-slate);font-size:.8rem;text-transform:uppercase;letter-spacing:.03em;border-bottom:2px solid var(--zl-border);cursor:default;white-space:nowrap;}
.table thead th.sortable{cursor:pointer;user-select:none;}
.table thead th.sortable:hover{color:var(--zl-primary);}
.table-hover tbody tr:hover{background:var(--zl-primary-light);}
.table td{vertical-align:middle;}
.row-action{cursor:pointer;}

/* ---- Status pills ---- */
.pill{display:inline-block;padding:.2rem .6rem;border-radius:999px;font-size:.75rem;font-weight:600;white-space:nowrap;}
.pill-grey{background:#eceff2;color:#5b6b78;}
.pill-blue{background:#e4effb;color:#1c6cdd;}
.pill-teal{background:#e6f2ef;color:#0b5548;}
.pill-amber{background:#fdf1dd;color:#9a6b12;}
.pill-green{background:#e3f5ea;color:#1a8f5a;}
.pill-red{background:#fbe6e6;color:#c0392b;}
.pill-purple{background:#efe8fb;color:#6b3fbf;}

/* ---- Timeline (histórico) ---- */
.timeline{list-style:none;padding-left:0;margin:0;}
.timeline li{position:relative;padding:0 0 1.1rem 1.6rem;border-left:2px solid var(--zl-border);}
.timeline li:last-child{border-left-color:transparent;}
.timeline li::before{content:"";position:absolute;left:-7px;top:2px;width:12px;height:12px;border-radius:50%;background:var(--zl-primary);}
.timeline .tl-time{font-size:.78rem;color:var(--zl-muted);}

/* ---- Wizard ---- */
.wizard-steps{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:1.2rem;}
.wizard-steps .step{flex:1;min-width:120px;text-align:center;padding:.6rem;border-radius:8px;background:#fff;border:1px solid var(--zl-border);font-size:.85rem;color:var(--zl-muted);}
.wizard-steps .step.active{background:var(--zl-primary);color:#fff;border-color:var(--zl-primary);font-weight:600;}
.wizard-steps .step.done{background:var(--zl-primary-light);color:var(--zl-primary-dark);border-color:var(--zl-primary);}

/* ---- Evidências (fotos simuladas) ---- */
.evidence{height:120px;border-radius:10px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:.8rem;text-align:center;position:relative;overflow:hidden;}
.evidence.before{background:#8a94a0;}
.evidence.during{background:#3a83c9;}
.evidence.after{background:#1a8f5a;}
.evidence .geo{position:absolute;bottom:4px;left:4px;right:4px;font-size:.62rem;background:rgba(0,0,0,.35);border-radius:4px;padding:1px 4px;}
.evidence-upload-panel{border:1px solid var(--zl-border);border-radius:10px;padding:.85rem;background:#fbfcfd;}
.evidence-total{white-space:nowrap;border:1px solid var(--zl-border);font-weight:600;color:var(--zl-muted)!important;}
.evidence-stage-selector{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem;}
.evidence-stage-btn{display:flex;align-items:center;justify-content:space-between;gap:.35rem;padding:.55rem .65rem;border:1px solid var(--zl-border);border-radius:8px;background:#fff;color:var(--zl-text);font-size:.84rem;transition:border-color .15s,box-shadow .15s,background .15s;}
.evidence-stage-btn:hover{border-color:var(--zl-primary);}
.evidence-stage-btn.active{border-color:var(--zl-primary);background:var(--zl-primary-light);box-shadow:0 0 0 2px rgba(17,119,96,.1);color:var(--zl-primary-dark);font-weight:600;}
.evidence-stage-btn.complete::before{content:'✓';color:var(--zl-primary);font-weight:700;}
.evidence-stage-count{display:inline-flex;align-items:center;justify-content:center;min-width:1.35rem;height:1.35rem;padding:0 .3rem;border-radius:999px;background:#eef1f4;color:var(--zl-muted);font-size:.72rem;font-weight:700;}
.evidence-stage-btn.active .evidence-stage-count,.evidence-stage-btn.complete .evidence-stage-count{background:var(--zl-primary);color:#fff;}
.evidence-upload-list{gap:.4rem;}
.evidence-upload-list .list-group-item{border-radius:8px!important;border:1px solid var(--zl-border);}
.evidence-upload-item{display:flex;align-items:center;gap:.65rem;padding:.5rem;}
.evidence-upload-preview{flex:0 0 auto;}
.evidence-upload-thumb{width:52px;height:52px;object-fit:cover;border-radius:7px;border:1px solid var(--zl-border);background:#eef1f4;}
.evidence-upload-info{min-width:0;flex:1;}
.evidence-file-name{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.84rem;font-weight:600;}
.evidence-stage-badge{display:inline-flex;padding:.15rem .4rem;border-radius:999px;background:#eef1f4;color:#56606b;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.02em;}
.evidence-stage-badge.antes{background:#edf0f3;color:#53606d;}.evidence-stage-badge.durante{background:#e5f1fc;color:#2267a6;}.evidence-stage-badge.depois{background:#e1f3eb;color:#18724a;}
.evidence-remove{flex:0 0 auto;}
.evidence-upload-empty{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.8rem;color:var(--zl-muted);font-size:.84rem;}
@media (max-width:575.98px){.evidence-upload-panel{padding:.7rem}.evidence-stage-btn{padding:.5rem .45rem;font-size:.78rem}.evidence-upload-thumb{width:44px;height:44px}}

/* ---- Abrangência territorial ---- */
.territory-scope{border:1px solid var(--zl-border);border-radius:10px;background:#f8faf9;overflow:hidden;}
.territory-step{display:block;padding:1rem 1.1rem;background:#fff;}
.territory-step+.territory-step{border-top:1px solid var(--zl-border);}
.territory-step-heading{display:flex;align-items:flex-start;gap:.65rem;margin-bottom:.75rem;}
.territory-step-number{display:inline-flex;align-items:center;justify-content:center;flex:0 0 1.65rem;height:1.65rem;border-radius:50%;background:var(--zl-primary-light);color:var(--zl-primary-dark);font-size:.78rem;font-weight:700;}
.territory-option,.territory-neighborhood-option{display:flex;align-items:flex-start;gap:.55rem;height:100%;padding:.65rem .7rem;border:1px solid var(--zl-border);border-radius:8px;background:#fff;cursor:pointer;transition:border-color .15s,background .15s,box-shadow .15s;}
.territory-option:hover,.territory-neighborhood-option:hover{border-color:var(--zl-primary);}
.territory-option.selected,.territory-neighborhood-option.selected{border-color:var(--zl-primary);background:var(--zl-primary-light);box-shadow:0 0 0 1px rgba(15,110,92,.08);}
.territory-option .form-check-input,.territory-neighborhood-option .form-check-input{flex:0 0 auto;margin-top:.18rem;}
.territory-option strong,.territory-option small,.territory-neighborhood-header small{display:block;}
.territory-option strong{font-size:.84rem;line-height:1.25;}
.territory-option small,.territory-neighborhood-header small{margin-top:.15rem;color:var(--zl-muted);font-size:.72rem;}
.territory-district-summary{display:flex;flex-wrap:wrap;gap:.45rem;}
.territory-chip{display:inline-flex;align-items:center;gap:.35rem;padding:.35rem .6rem;border-radius:999px;background:var(--zl-primary-light);color:var(--zl-primary-dark);font-size:.78rem;font-weight:600;}
.territory-chip small{opacity:.72;font-weight:500;}
.territory-neighborhood-panel{padding:0;}
.territory-neighborhood-panel>summary{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1.1rem;cursor:pointer;list-style:none;}
.territory-neighborhood-panel>summary::-webkit-details-marker{display:none;}
.territory-neighborhood-panel>summary .territory-step-heading{margin-bottom:0;}
.territory-chevron{color:var(--zl-muted);transition:transform .15s;}
.territory-neighborhood-panel[open] .territory-chevron{transform:rotate(180deg);}
.territory-neighborhood-content{padding:0 1.1rem 1rem;max-height:320px;overflow:auto;}
.territory-neighborhood-group{padding:.75rem;border:1px solid var(--zl-border);border-radius:8px;background:#fbfcfd;}
.territory-neighborhood-group+.territory-neighborhood-group{margin-top:.75rem;}
.territory-neighborhood-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:.65rem;}
.territory-neighborhood-option{padding:.5rem .6rem;font-size:.8rem;}
@media (max-width:575.98px){.territory-step,.territory-neighborhood-panel>summary{padding:.85rem}.territory-neighborhood-content{padding:0 .85rem .85rem}.territory-neighborhood-header{align-items:flex-start;flex-direction:column}.territory-neighborhood-header .btn-group{align-self:stretch}.territory-neighborhood-header .btn{flex:1}}

/* ---- Misc ---- */
.empty-state{text-align:center;padding:3rem 1rem;color:var(--zl-muted);}
.empty-state .bi{font-size:2.6rem;opacity:.5;}
.breadcrumb{--bs-breadcrumb-divider:'›';font-size:.85rem;margin:0;}
.required::after{content:" *";color:#c0392b;}
.form-help{font-size:.78rem;color:var(--zl-muted);}
.avatar{width:34px;height:34px;border-radius:50%;background:var(--zl-primary);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-weight:600;font-size:.85rem;}
.cursor-pointer{cursor:pointer;}
@media print{.app-sidebar,.app-topbar,.no-print{display:none!important;}.app-main{margin:0;}}
.geo-map-filters .form-select{width:auto;min-width:170px}
.geo-status-dropdown .dropdown-toggle{display:flex;align-items:center;justify-content:space-between;gap:.75rem;min-width:185px;background:#fff;color:var(--zl-text);border-color:var(--zl-border)}
.geo-status-dropdown .dropdown-menu{min-width:245px;border-color:var(--zl-border);box-shadow:0 .5rem 1.2rem rgba(30,50,60,.14)}
.geo-status-options{padding:.35rem 0}.geo-status-options .dropdown-item{margin:0;padding:.5rem .8rem;cursor:pointer;font-size:.84rem}.geo-status-options .dropdown-item:active{color:inherit;background:#eef7f5}.geo-status-options .form-check-input{flex:0 0 auto}
.geo-legend-filter{display:inline-flex;align-items:center;gap:.35rem;border:1px solid transparent;border-radius:999px;background:transparent;color:var(--bs-body-color);padding:.2rem .55rem;font-size:inherit;line-height:1.4;transition:background-color .15s,border-color .15s,box-shadow .15s}
.geo-legend-filter:hover{background:#f4f7f8;border-color:#dce4e7}
.geo-legend-filter.active{background:#eef7f5;border-color:#75b8aa;box-shadow:0 0 0 1px rgba(15,110,92,.08);font-weight:600}
.geo-legend-filter:focus-visible{outline:2px solid #0f6e5c;outline-offset:2px}
@media(max-width:767.98px){.geo-map-filters{width:100%;margin-left:0!important}.geo-map-filters .form-select,.geo-status-dropdown{flex:1 1 160px;min-width:0}.geo-status-dropdown .dropdown-toggle{width:100%;min-width:0}}
.program-weekdays{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:.5rem;padding:.65rem;border:1px solid var(--zl-border);border-radius:.55rem;background:#f8fafb}
.program-weekdays>div,.program-weekdays .btn{width:100%}
.program-weekdays .btn{padding:.45rem .25rem;font-weight:600}
.program-weekdays .btn-check:checked+.btn{background:var(--zl-primary);border-color:var(--zl-primary);color:#fff}
.program-weekdays.is-invalid{border-color:#dc3545;background:#fff7f7}
.program-cadence-help{font-size:.82rem;color:var(--zl-muted);background:#fbfcfd}
@media(max-width:575.98px){.program-weekdays{grid-template-columns:repeat(4,minmax(0,1fr))}}
.measurement-overview{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem;margin-bottom:1rem}
.measurement-overview>div{display:flex;flex-direction:column;justify-content:center;min-height:72px;padding:.75rem .9rem;border:1px solid var(--zl-border);border-radius:.6rem;background:#f8fafb}
.measurement-overview>div>span,.measurement-detail-grid>div>span{display:block;color:var(--zl-muted);font-size:.75rem;margin-bottom:.2rem}
.measurement-overview strong{font-size:.9rem}.measurement-overview small{color:var(--zl-muted);font-size:.72rem;margin-top:.15rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.measurement-timeline-card{height:100%;padding:.85rem;border:1px solid var(--zl-border);border-radius:.65rem;background:#fff}
.measurement-timeline{max-height:390px;overflow:auto;padding-right:.25rem}
.measurement-workspace{border:1px solid var(--zl-border);border-radius:.65rem;background:#fff;overflow:hidden}
.measurement-tabs{flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;padding:.4rem .5rem 0;background:#f8fafb;scrollbar-width:thin}
.measurement-tabs .nav-link{display:flex;align-items:center;gap:.35rem;white-space:nowrap;font-size:.85rem;padding:.55rem .7rem}
.measurement-tab-content{padding:1rem}.measurement-pane{min-height:210px}
.measurement-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}
.measurement-detail-grid>div{padding:.8rem;border:1px solid var(--zl-border);border-radius:.5rem;background:#fbfcfd}
.measurement-detail-grid strong{display:block;font-size:.9rem;word-break:break-word}
.measurement-empty{display:flex;min-height:155px;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:var(--zl-muted);padding:1.5rem;border:1px dashed var(--zl-border);border-radius:.55rem;background:#fbfcfd}
.measurement-empty .bi{font-size:1.7rem;margin-bottom:.45rem;opacity:.6}.measurement-empty strong{color:var(--zl-slate);font-size:.9rem}.measurement-empty span{font-size:.8rem;margin-top:.25rem;max-width:430px}
@media(max-width:991.98px){.measurement-overview{grid-template-columns:repeat(2,minmax(0,1fr))}.measurement-timeline{max-height:220px}.measurement-pane{min-height:0}}
@media(max-width:575.98px){.measurement-overview{grid-template-columns:1fr}.measurement-detail-grid{grid-template-columns:1fr}}

/* ---- BI gerencial ---- */
.bi-filter-card{border-color:#dfe8e6;background:linear-gradient(180deg,#fff 0,#fbfdfc 100%)}
.bi-view-tabs{display:inline-flex;gap:.25rem;max-width:100%;padding:.3rem;border:1px solid var(--zl-border);border-radius:.65rem;background:#f3f6f7;overflow-x:auto}
.bi-view-tabs .btn{border:0;color:var(--zl-muted);white-space:nowrap;padding:.45rem .75rem}
.bi-view-tabs .btn:hover{color:var(--zl-primary-dark);background:#e8f2f0}
.bi-view-tabs .btn.active{color:var(--zl-primary-dark);background:#fff;box-shadow:0 1px 5px rgba(31,52,62,.13);font-weight:600}
.bi-chart{position:relative;height:270px;min-height:270px}
.bi-attention-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem}
.bi-attention-item{display:flex;align-items:flex-start;gap:.75rem;min-height:102px;padding:.85rem;border:1px solid var(--zl-border);border-radius:.6rem;background:#f8fafb}
.bi-attention-item>i{display:flex;align-items:center;justify-content:center;flex:0 0 2.35rem;height:2.35rem;border-radius:.55rem;background:#e4effb;color:#1c6cdd;font-size:1.1rem}
.bi-attention-item>div{min-width:0}.bi-attention-item strong,.bi-attention-item span,.bi-attention-item small{display:block}
.bi-attention-item strong{font-size:1.25rem;line-height:1.1}.bi-attention-item span{margin-top:.2rem;font-size:.82rem;font-weight:600;line-height:1.25}.bi-attention-item small{margin-top:.15rem;color:var(--zl-muted);font-size:.7rem}
.bi-attention-item.warning>i{background:#fdf1dd;color:#9a6b12}.bi-attention-item.danger>i{background:#fbe6e6;color:#c0392b}
.bi-table{font-size:.8rem}.bi-table thead th{padding:.55rem .45rem;color:#5b6872;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.02em;white-space:nowrap;background:#f8fafb}
.bi-table tbody td{padding:.55rem .45rem;border-color:#edf0f1;vertical-align:middle}
.bi-table tbody tr:hover{background:#fbfdfc}
@media(max-width:1199.98px){.bi-attention-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:575.98px){.bi-view-tabs{display:flex;width:100%}.bi-attention-grid{grid-template-columns:1fr}.bi-chart{height:240px;min-height:240px}}
@media print{.bi-chart{height:230px;min-height:230px}.bi-attention-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.bi-table{font-size:.7rem}}
@media(max-width:575.98px){.kpi .card-body{gap:.65rem!important;padding:.8rem}.kpi .kpi-icon{flex:0 0 40px;width:40px;height:40px}.kpi h3{font-size:1.15rem}}

/* ========================================================================== 
   Evolução visual 2026.09
   Camada transversal de apresentação. Mantém estrutura, regras e eventos.
   ========================================================================== */

/* Estrutura e tipografia */
body::selection{background:#bfe3db;color:var(--zl-primary-dark)}
.app-body{margin-top:68px;min-height:calc(100vh - 68px)}
.app-main{padding:1.75rem clamp(1rem,2.2vw,2rem) 3.5rem;background:
  radial-gradient(circle at 92% 2%,rgba(8,116,102,.055),transparent 25rem),
  linear-gradient(180deg,#f8fafb 0,var(--zl-bg) 18rem)}
.section-title{color:var(--zl-slate);font-size:1.5rem;font-weight:750;letter-spacing:-.025em}
.text-muted{color:var(--zl-muted)!important}
.small,small{line-height:1.45}

/* Barra superior */
.app-topbar{height:68px;padding-left:1rem!important;padding-right:1rem!important;border-bottom:1px solid rgba(205,218,221,.78);background:rgba(255,255,255,.94);box-shadow:0 4px 18px rgba(24,51,61,.055);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.app-menu-toggle,.topbar-icon-btn,.user-menu-trigger{border:1px solid var(--zl-border);background:#fff;color:var(--zl-slate);box-shadow:0 1px 2px rgba(24,51,61,.04)}
.app-menu-toggle{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:10px;font-size:1.15rem}
.app-menu-toggle:hover,.topbar-icon-btn:hover,.user-menu-trigger:hover{border-color:#a8cdc5;background:var(--zl-primary-soft);color:var(--zl-primary-dark)}
.app-brand{display:flex;align-items:center;color:var(--zl-primary-dark)!important;letter-spacing:-.02em;white-space:nowrap}
.app-brand-mark{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;margin-right:.55rem;border-radius:10px;color:#fff;background:linear-gradient(145deg,var(--zl-primary),#0a8c79);box-shadow:0 6px 15px rgba(8,116,102,.22)}
.app-brand-mark .bi{font-size:1rem}
.topbar-search .input-group-text,.topbar-search .form-control{height:38px;border-color:var(--zl-border);background:var(--zl-surface-soft)!important}
.topbar-search .input-group-text{border-radius:10px 0 0 10px;color:var(--zl-muted)}
.topbar-search .form-control{border-left:0;border-radius:0 10px 10px 0}
.topbar-search .form-control:focus{background:#fff!important}
.topbar-favorites{display:flex;align-items:center;flex:1 1 auto;min-width:0;gap:.35rem;margin-left:.75rem;padding:.18rem .1rem;overflow-x:auto;scrollbar-width:none}
.topbar-favorites::-webkit-scrollbar{display:none}
.topbar-favorite-link{display:inline-flex;align-items:center;justify-content:center;flex:0 0 36px;width:36px;height:36px;border:1px solid transparent;border-radius:10px;color:#647981;text-decoration:none;transition:color .15s,background .15s,border-color .15s,transform .15s}
.topbar-favorite-link:hover{transform:translateY(-1px);border-color:#cfe0dd;background:#f0f8f6;color:var(--zl-primary-dark)}
.topbar-favorite-link.active{border-color:#b9dcd5;background:#e5f4f1;color:var(--zl-primary);box-shadow:inset 0 0 0 1px rgba(8,116,102,.04)}
.topbar-favorite-link .bi{font-size:1rem}
.topbar-icon-btn{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:10px}
.user-menu-trigger{min-height:44px;padding:.25rem .45rem;border-radius:12px}
.app-topbar .dropdown-menu{margin-top:.55rem!important;border:1px solid var(--zl-border);border-radius:14px;box-shadow:var(--zl-shadow-lg);overflow:hidden}
.app-topbar .dropdown-item{padding:.62rem .85rem;font-size:.86rem}
.app-topbar .dropdown-item:hover{background:var(--zl-primary-soft);color:var(--zl-primary-dark)}
.avatar{width:36px;height:36px;background:linear-gradient(145deg,var(--zl-primary),#0b8a77);box-shadow:0 4px 12px rgba(8,116,102,.2)}

/* Navegação lateral */
.app-sidebar{top:68px;min-height:calc(100vh - 68px);background:
  radial-gradient(circle at 0 0,rgba(20,145,126,.22),transparent 18rem),
  linear-gradient(180deg,#1c3943 0,#162e37 100%);box-shadow:8px 0 26px rgba(24,51,61,.1)}
.sidebar-scroll{padding-bottom:2rem!important}
.app-sidebar .nav-section{padding:1.15rem 1.25rem .4rem;color:#829aa3;font-size:.66rem;font-weight:750;letter-spacing:.13em}
.app-sidebar .sidebar-section{display:block}
.app-sidebar .nav-section{display:flex;align-items:center;justify-content:space-between;width:calc(100% - 24px);min-height:36px;margin:.72rem 12px .18rem;padding:.55rem .72rem;border:0;border-radius:9px;background:transparent;text-align:left;transition:color .16s,background .16s}
.app-sidebar .nav-section:hover{background:rgba(255,255,255,.055);color:#b7c9cf}
.app-sidebar .nav-section:focus-visible{outline:2px solid #69c8b5;outline-offset:1px}
.app-sidebar .nav-section-chevron{font-size:.7rem;transition:transform .18s ease}
.app-sidebar .sidebar-section.is-collapsed .nav-section-chevron{transform:rotate(-90deg)}
.app-sidebar .sidebar-section.has-active .nav-section{color:#a9d9d0}
.app-sidebar .sidebar-section-items[hidden]{display:none!important}
.app-sidebar .sidebar-section.is-collapsed+.sidebar-section .nav-section{margin-top:.28rem}
.app-sidebar .nav-link{position:relative;margin:3px 12px;padding:.67rem .82rem;border:1px solid transparent;border-radius:10px;color:#c4d2d6;font-size:.88rem;transition:color .16s,background .16s,border-color .16s,transform .16s}
.app-sidebar .nav-link .bi{display:inline-flex;align-items:center;justify-content:center;width:25px;height:25px;border-radius:7px;color:#9db2b9;transition:color .16s,background .16s}
.app-sidebar .nav-link:hover{transform:translateX(2px);border-color:rgba(255,255,255,.06);background:rgba(255,255,255,.075);color:#fff}
.app-sidebar .nav-link:hover .bi{color:#c8eee6}
.app-sidebar .nav-link.active{border-color:rgba(130,222,204,.18);background:linear-gradient(90deg,rgba(15,145,124,.92),rgba(15,125,109,.7));box-shadow:0 7px 16px rgba(3,29,35,.2);color:#fff;font-weight:650}
.app-sidebar .nav-link.active::before{content:"";position:absolute;left:-12px;top:8px;bottom:8px;width:3px;border-radius:0 4px 4px 0;background:#7de1ce}
.app-sidebar .nav-link.active .bi{background:rgba(255,255,255,.13);color:#fff}

/* Cabeçalhos das páginas */
.page-heading{position:relative;padding:1.1rem 1.2rem 1.1rem 1.35rem;border:1px solid rgba(213,225,227,.85);border-radius:var(--zl-radius-lg);background:linear-gradient(135deg,rgba(255,255,255,.98),rgba(246,251,250,.96));box-shadow:var(--zl-shadow-sm);overflow:hidden}
.page-heading::before{content:"";position:absolute;inset:0 auto 0 0;width:4px;background:linear-gradient(180deg,var(--zl-primary),#5ac3ae)}
.page-heading .breadcrumb{color:var(--zl-muted);font-size:.75rem}
.page-heading .breadcrumb a{color:var(--zl-primary);font-weight:600}
.page-heading-actions{justify-content:flex-end}
.page-favorite-button{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;min-height:36px;padding:.42rem .7rem;border:1px solid #d5e1e2;background:#fff;color:#60747c}
.page-favorite-button:hover{border-color:#e4bd69;background:#fff8e8;color:#9a6812}
.page-favorite-button.active{border-color:#e5bf6b;background:#fff7e2;color:#a76c06}
.page-favorite-button .bi{font-size:.9rem}

/* Cartões e indicadores */
.card{border-color:rgba(213,225,227,.9);border-radius:var(--zl-radius);background:var(--zl-surface);box-shadow:var(--zl-shadow-sm)}
.card-header{padding:.85rem 1rem;border-bottom-color:var(--zl-border);background:linear-gradient(180deg,#fff,#fafcfc)}
.card-body{padding:1rem 1.1rem}
.kpi-card{position:relative;overflow:hidden;border:0;box-shadow:0 7px 22px rgba(24,51,61,.08);transition:transform .18s,box-shadow .18s}
.kpi-card::after{content:"";position:absolute;right:-25px;bottom:-35px;width:100px;height:100px;border-radius:50%;background:rgba(8,116,102,.035)}
.kpi-card:hover{transform:translateY(-2px);box-shadow:0 12px 28px rgba(24,51,61,.11)}
.kpi .kpi-icon{flex:0 0 46px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.55)}
.kpi h3{color:var(--zl-slate);font-size:clamp(.98rem,1.35vw,1.35rem);letter-spacing:-.035em}
.kpi small{font-size:.76rem;font-weight:600}

/* Botões */
.btn{border-radius:9px;font-weight:600;letter-spacing:-.005em;transition:transform .14s,box-shadow .14s,background-color .14s,border-color .14s}
.btn:hover{transform:translateY(-1px)}
.btn:active{transform:translateY(0)}
.btn-primary{background:linear-gradient(145deg,#0a806f,var(--zl-primary));border-color:var(--zl-primary);box-shadow:0 5px 13px rgba(8,116,102,.18)}
.btn-primary:hover,.btn-primary:focus{background:linear-gradient(145deg,var(--zl-primary),var(--zl-primary-dark));border-color:var(--zl-primary-dark);box-shadow:0 7px 16px rgba(8,116,102,.23)}
.btn-outline-primary{background:#fff}
.btn-outline-primary:hover{box-shadow:0 5px 12px rgba(8,116,102,.14)}
.btn-outline-secondary{border-color:var(--zl-border-strong);color:#50646d}
.btn-outline-secondary:hover{border-color:#9eb2b8;background:#f3f7f8;color:var(--zl-slate)}
.btn-danger,.btn-outline-danger{box-shadow:none}
.btn-sm{padding:.42rem .7rem}
.btn-group>.btn{transform:none}

/* Formulários */
.form-label{margin-bottom:.38rem;color:#435861;font-size:.8rem;font-weight:650}
.form-control,.form-select,.input-group-text{min-height:40px;border-color:var(--zl-border-strong);border-radius:9px;color:var(--zl-text);font-size:.88rem}
.form-control,.form-select{background-color:#fff}
.form-control:hover,.form-select:hover{border-color:#a9bdc2}
.form-control:focus,.form-select:focus,.form-check-input:focus{border-color:#4cae9b;box-shadow:0 0 0 .22rem rgba(8,116,102,.11)}
.form-control::placeholder{color:#9aa9af}
.input-group>.input-group-text{color:#71858d;background:#f8fafb}
.input-group>.form-control:not(:first-child){border-left-color:#e4eaec}
.form-check-input{border-color:#aebfc4}
.form-check-input:checked{background-color:var(--zl-primary);border-color:var(--zl-primary)}
.form-text,.form-help{color:#748790;font-size:.74rem}
textarea.form-control{line-height:1.5}
.is-invalid{background-color:#fffafa}
.invalid-feedback{font-size:.73rem;font-weight:550}

/* Tabelas, busca e paginação */
.data-card{overflow:hidden;border:0;box-shadow:0 8px 26px rgba(24,51,61,.075)}
.data-card>.card-body{padding:0}
.data-toolbar{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:.65rem;align-items:center;margin:0!important;padding:1rem;border-bottom:1px solid #e9eff0;background:linear-gradient(180deg,#fff,#fbfcfc)}
.data-filter-grid{display:contents}
.data-filter-grid>.form-select,.data-filter-grid>.input-group{width:100%;min-width:0;max-width:none!important;margin:0}
.data-filter-grid .form-select{background-color:#fff}
.data-search-field .input-group-text,.data-search-field .form-control{height:40px}
.data-toolbar-actions{align-items:center;justify-content:flex-end;min-width:0;min-height:40px;margin:0}
.data-toolbar-actions:empty{display:none!important}
.data-toolbar-actions .btn{min-height:40px;white-space:nowrap}
.data-toolbar-actions .btn:only-child{width:100%}
.data-card .table-responsive{scrollbar-width:thin;scrollbar-color:#b9cacd transparent}
.table{--bs-table-color:var(--zl-text);font-size:.84rem}
.table thead th{padding:.72rem .8rem;border-top:0;border-bottom:1px solid #dfe8e9;background:#f2f7f6;color:#53676f;font-size:.69rem;font-weight:750;letter-spacing:.055em}
.table tbody td{padding:.72rem .8rem;border-color:#edf1f2}
.table tbody tr{transition:background-color .12s,box-shadow .12s}
.table-hover tbody tr:hover{--bs-table-hover-bg:#f1f8f6;box-shadow:inset 3px 0 var(--zl-primary)}
.table .btn-sm{padding:.32rem .48rem}
.data-footer{margin:0!important;padding:.8rem 1rem;border-top:1px solid #e9eff0;background:#fbfcfc}
.pagination{gap:.2rem}
.page-link{min-width:31px;border-radius:8px!important;border-color:var(--zl-border);color:var(--zl-primary);text-align:center}
.page-item.active .page-link{border-color:var(--zl-primary);background:var(--zl-primary);box-shadow:0 3px 8px rgba(8,116,102,.18)}

/* Estados, alertas e etiquetas */
.alert{border-width:1px;border-radius:11px;box-shadow:0 3px 10px rgba(24,51,61,.04);font-size:.86rem}
.alert-success{border-color:#b9decf;background:#effaf5;color:#196443}
.alert-warning{border-color:#efd8a6;background:#fff9ec;color:#795817}
.alert-danger{border-color:#efc4c4;background:#fff4f4;color:#8c2f35}
.alert-info{border-color:#bedbea;background:#f1f8fc;color:#245f7b}
.pill{padding:.26rem .62rem;border:1px solid transparent;font-size:.7rem;letter-spacing:.01em}
.pill-green{border-color:#bfe5cf}.pill-red{border-color:#f0c5c5}.pill-amber{border-color:#ecd6ad}.pill-blue{border-color:#bfd7f2}.pill-teal{border-color:#b9ddd5}.pill-purple{border-color:#d8c8ee}.pill-grey{border-color:#d9e0e4}
.badge{letter-spacing:.01em}
.empty-state{min-height:190px;padding:2.6rem 1rem}
.empty-state .bi{display:inline-flex;align-items:center;justify-content:center;width:58px;height:58px;border-radius:17px;background:var(--zl-primary-light);color:var(--zl-primary);font-size:1.55rem;opacity:1}

/* Abas, listas, timeline e progressos */
.nav-tabs{gap:.2rem;border-bottom-color:var(--zl-border)}
.nav-tabs .nav-link{border:0;border-bottom:2px solid transparent;border-radius:8px 8px 0 0;color:var(--zl-muted);font-size:.85rem;font-weight:600}
.nav-tabs .nav-link:hover{background:#f2f7f6;color:var(--zl-primary-dark)}
.nav-tabs .nav-link.active{border-bottom-color:var(--zl-primary);background:var(--zl-primary-light);color:var(--zl-primary-dark)}
.view-switcher{display:inline-flex;max-width:100%;gap:.25rem;padding:.3rem;border:1px solid #dbe5e7;border-radius:11px;background:#eef3f3;overflow-x:auto;scrollbar-width:thin}
.view-switcher .nav-item{display:flex;min-width:0}
.view-switcher .nav-link{display:flex;align-items:center;justify-content:center;min-height:36px;padding:.45rem .75rem;border:0;border-radius:.45rem;color:var(--zl-muted);font-size:.82rem;font-weight:600;white-space:nowrap;transition:color .15s,background .15s,box-shadow .15s}
.view-switcher .nav-link:hover{color:var(--zl-primary-dark);background:#e8f2f0}
.view-switcher .nav-link.active{color:var(--zl-primary-dark);background:#fff;box-shadow:0 1px 5px rgba(31,52,62,.13);font-weight:600}
.view-switcher .badge{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;margin-left:.4rem!important;padding:0 .35rem;border:1px solid #d9e3e4;border-radius:999px;background:#fff!important;color:#5a6c73!important;font-size:.65rem;font-weight:750}
.view-switcher .nav-link.active .badge{border-color:#cfe1de;color:var(--zl-primary-dark)!important}

/* Planejamento */
.planning-workspace{align-items:stretch}
.planning-side{display:flex;flex-direction:column}
.planning-card{border:1px solid #dbe6e7;box-shadow:0 7px 22px rgba(24,51,61,.065)}
.planning-card .card-body{padding:1.15rem}
.section-heading{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem}
.section-heading-icon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 38px;width:38px;height:38px;border-radius:11px;background:var(--zl-primary-light);color:var(--zl-primary);font-size:1rem}
.section-heading-icon-warning{background:#fff2dc;color:#a4660a}
.section-heading h6{color:var(--zl-ink);font-size:.93rem;font-weight:750}
.section-heading p{color:var(--zl-muted);font-size:.74rem;line-height:1.35}
.planning-criteria-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}
.planning-criterion{display:flex;align-items:center;gap:.55rem;min-height:42px;padding:.52rem .6rem;border:1px solid #e3ebec;border-radius:10px;background:#f9fbfb}
.planning-criterion>span{display:inline-flex;align-items:center;justify-content:center;flex:0 0 23px;width:23px;height:23px;border-radius:7px;background:#e4f2ef;color:var(--zl-primary-dark);font-size:.67rem;font-weight:800}
.planning-criterion p{margin:0;color:#40565f;font-size:.73rem;line-height:1.25}
.planning-sla-card{flex:1}
.planning-sla-table{border:1px solid #e3ebec;border-radius:10px}
.planning-sla-table .table thead th{padding:.58rem .65rem;font-size:.66rem}
.planning-sla-table .table tbody td{padding:.58rem .65rem;font-size:.75rem}
.status-check{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:#e2f4ed;color:#087466;font-size:.72rem}
.status-check-off{background:#eef2f3;color:#87979d}
.planning-note{display:flex;align-items:flex-start;gap:.45rem;margin-top:.8rem;padding:.62rem .7rem;border-radius:9px;background:#f3f7f7;color:#687c83;font-size:.7rem;line-height:1.4}
.planning-note .bi{color:var(--zl-primary);margin-top:.05rem}
.planning-backlog-card .card-body{display:flex;flex-direction:column;min-height:100%}
.planning-backlog-heading{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding-bottom:1rem;border-bottom:1px solid #e4ebec}
.planning-count{display:inline-flex;align-items:center;gap:.3rem;padding:.38rem .68rem;border:1px solid #dbe8e6;border-radius:999px;background:#f2f8f7;color:#5a7078;font-size:.72rem;white-space:nowrap}
.planning-count strong{color:var(--zl-primary-dark);font-size:.86rem}
.planning-backlog-table{margin-top:1rem;border:1px solid #e2eaeb;border-radius:10px}
.planning-empty-state{display:flex;flex:1;min-height:345px;align-items:center;justify-content:center;flex-direction:column;padding:2.5rem 1rem;text-align:center;background:radial-gradient(circle at center,#f4faf8 0,#fff 68%)}
.planning-empty-icon{display:inline-flex;align-items:center;justify-content:center;width:72px;height:72px;margin-bottom:1rem;border:1px solid #cce4df;border-radius:22px;background:#e5f4f0;color:var(--zl-primary);font-size:1.8rem;box-shadow:0 9px 24px rgba(8,116,102,.1)}
.planning-empty-state h5{margin-bottom:.4rem;color:var(--zl-ink);font-size:1.05rem;font-weight:750}
.planning-empty-state p{max-width:340px;margin:0 0 1rem;color:var(--zl-muted);font-size:.8rem}
.planning-empty-status{display:inline-flex;align-items:center;gap:.42rem;padding:.4rem .7rem;border-radius:999px;background:#eaf7f1;color:#187553;font-size:.72rem;font-weight:650}

/* Resumo das medições */
.measurement-summary{display:grid;grid-template-columns:repeat(5,minmax(140px,1fr));gap:.65rem;padding:.75rem;border-top:1px solid #e4ebec;border-bottom:1px solid #e4ebec;background:#f7faf9}
.measurement-summary-item{display:flex;align-items:center;gap:.65rem;min-width:0;padding:.72rem .78rem;border:1px solid #dfe8e8;border-radius:11px;background:#fff;box-shadow:0 2px 8px rgba(24,51,61,.045)}
.measurement-summary-icon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 34px;width:34px;height:34px;border-radius:10px;background:#edf3f4;color:#577078;font-size:.9rem}
.measurement-summary-item>div{min-width:0}
.measurement-summary-item>div>span{display:block;margin-bottom:.12rem;color:#73858b;font-size:.66rem;font-weight:650;line-height:1.15;text-transform:uppercase;letter-spacing:.025em}
.measurement-summary-item strong{display:block;overflow:hidden;color:var(--zl-ink);font-size:.86rem;font-weight:750;line-height:1.25;text-overflow:ellipsis;white-space:nowrap}
.measurement-summary-count .measurement-summary-icon{background:#e8f1fb;color:#1c6cdd}
.measurement-summary-gross .measurement-summary-icon{background:#e9f1ff;color:#2563b8}
.measurement-summary-loss .measurement-summary-icon{background:#fdecec;color:#c23b31}
.measurement-summary-loss strong{color:#b8342b}
.measurement-summary-net .measurement-summary-icon{background:#e7f6ed;color:#168453}
.measurement-summary-approved .measurement-summary-icon{background:#e5f4f1;color:#087466}
.list-group-item{border-color:var(--zl-border)}
.progress{border-radius:999px;background:#e9eff0;overflow:hidden}
.progress-bar{border-radius:999px}
.timeline li{border-left-color:#d5e3e1}
.timeline li::before{box-shadow:0 0 0 4px var(--zl-primary-light)}

/* Modais */
.modal-backdrop.show{opacity:.46}
.modal-content{border:1px solid rgba(210,222,224,.75);border-radius:16px;box-shadow:var(--zl-shadow-lg);overflow:hidden}
.modal-header{padding:1rem 1.15rem;border-bottom-color:var(--zl-border);background:linear-gradient(135deg,#fff,#f5faf9)}
.modal-title{color:var(--zl-slate);font-size:1.03rem;font-weight:750}
.modal-body{padding:1.1rem 1.15rem;background:#fff}
.modal-footer{padding:.85rem 1.15rem;border-top-color:var(--zl-border);background:#fafcfc}
.modal .btn-close{width:.8rem;height:.8rem;padding:.55rem;border-radius:8px}
.modal .card{box-shadow:none}
.modal-dialog-scrollable .modal-body{scrollbar-width:thin;scrollbar-color:#b8c9cc transparent}
.service-photo-group{height:100%;padding:.8rem .9rem;border:1px solid #dfe8e8;border-radius:11px;background:#f8fbfa}
.service-photo-group .form-help{display:block;min-height:1.05rem}
.company-form-panel{height:100%;padding:.8rem .9rem;border:1px solid #dfe8e8;border-radius:11px;background:#f8fbfa}

/* Cadastros administrativos */
.registry-page{width:100%}
.registry-page .page-heading-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:.5rem}
.registry-page .page-heading-actions .btn{min-height:36px;margin:0!important}
.registry-table-host .data-card{border:1px solid #e1e9ea}
.registry-table-host .table thead th:last-child,.registry-table-host .table tbody td:last-child{width:1%;min-width:96px;white-space:nowrap}
.registry-table-host .table tbody td{height:56px;vertical-align:middle}
.registry-table-host .table tbody td:first-child{color:var(--zl-slate)}
.registry-row-actions{display:inline-flex;align-items:center;justify-content:flex-end;gap:.35rem;min-height:32px;white-space:nowrap}
.registry-row-actions .btn{display:inline-flex;align-items:center;justify-content:center;flex:0 0 32px;width:32px;height:32px;margin:0!important;padding:0;border-radius:8px}
.registry-row-actions .btn .bi{margin:0;font-size:.82rem;line-height:1}
.registry-table-host .data-card>.card-body>.mb-3{margin:0!important}
.registry-summary{display:grid;grid-template-columns:.7fr repeat(4,minmax(150px,1fr));gap:.65rem;padding:.75rem 1rem;border-bottom:1px solid #e4ebec;background:#f7faf9}
.registry-summary-item{display:flex;min-width:0;flex-direction:column;justify-content:center;padding:.62rem .72rem;border:1px solid #dfe8e8;border-radius:10px;background:#fff}
.registry-summary-item span{margin-bottom:.12rem;color:#71838a;font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.035em}
.registry-summary-item strong{overflow:hidden;color:var(--zl-ink);font-size:.83rem;font-weight:750;text-overflow:ellipsis;white-space:nowrap}
.registry-form{width:100%}
.registry-form .row{--bs-gutter-x:1rem;--bs-gutter-y:.85rem}
.registry-form .form-label{display:block;min-height:1rem;margin-bottom:.34rem;line-height:1.25}
.registry-form .form-control,.registry-form .form-select{width:100%}
.registry-form textarea.form-control{resize:vertical}
.registry-form .form-help{line-height:1.35}
.registry-form .border.rounded.p-2{border-color:#dfe8e8!important;border-radius:10px!important;background:#f9fbfb}
.registry-status-page>.alert{display:flex;align-items:flex-start;gap:.45rem;margin-bottom:1rem!important;padding:.8rem 1rem;background:#f7faf9}
.registry-status-card{overflow:hidden;border:1px solid #dfe7e8;box-shadow:0 5px 16px rgba(24,51,61,.055)}
.registry-status-card .card-body{padding:1rem}
.registry-status-card .card-body>div:first-child{min-height:32px;padding-bottom:.65rem;border-bottom:1px solid #e7edef}
.registry-status-card .list-group-item{min-height:45px;background:transparent}
.registry-status-card .form-switch{padding-left:2.7rem}
.registry-status-card .form-switch .form-check-input{width:2.05rem;height:1.08rem;margin-left:-2.7rem}
.registry-matrix-card{overflow:hidden;border:1px solid #dfe8e9;box-shadow:0 6px 18px rgba(24,51,61,.055)}
.registry-matrix-card .table-responsive{border:1px solid #e2e9ea;border-radius:10px}
.registry-permissions-form .tab-content{min-height:310px}
@media(min-width:768px){
  .modal-dialog.modal-xl,.modal-dialog.modal-dialog-wide{max-width:min(1320px,calc(100vw - 2rem))}
  .modal-dialog-scrollable{height:calc(100vh - 1.5rem);margin:.75rem auto}
  .modal-dialog-wide .row.g-3{--bs-gutter-y:.75rem}
  .modal-dialog-wide .mb-3{margin-bottom:.75rem!important}
}

/* Abrangência, programação, medição e BI */
.territory-scope{border-color:#dbe6e7;border-radius:13px;background:#f8fbfa;box-shadow:inset 0 1px 0 #fff}
.territory-step{padding:1.05rem 1.15rem}
.territory-step-number{background:linear-gradient(145deg,var(--zl-primary),#16927d);color:#fff;box-shadow:0 3px 8px rgba(8,116,102,.18)}
.territory-option,.territory-neighborhood-option{border-color:#dfe8e9;border-radius:10px;box-shadow:0 2px 5px rgba(24,51,61,.035)}
.territory-option:hover,.territory-neighborhood-option:hover{background:#fbfefd;box-shadow:0 5px 12px rgba(24,51,61,.07)}
.territory-option.selected,.territory-neighborhood-option.selected{border-color:#69b9aa;background:#eef9f6;box-shadow:0 0 0 2px rgba(8,116,102,.07)}
.territory-neighborhood-group{border-radius:11px;background:#fff}
.program-weekdays{border-color:#dbe6e8;border-radius:11px;background:#f7faf9}
.program-cadence-help{border-radius:9px;background:#f3f8f7!important}
.measurement-overview>div,.measurement-detail-grid>div{border-color:#dfe8e9;border-radius:11px;background:linear-gradient(145deg,#fff,#f7faf9);box-shadow:0 3px 9px rgba(24,51,61,.045)}
.measurement-workspace,.measurement-timeline-card{border-color:#dbe5e7;border-radius:13px;box-shadow:var(--zl-shadow-sm)}
.measurement-tabs{padding:.55rem .65rem 0;background:#f5f8f8}
.bi-filter-card{border:0;box-shadow:0 8px 24px rgba(24,51,61,.07)}
.bi-view-tabs{border-color:#dbe5e7;border-radius:11px;background:#eef3f3}
.bi-attention-item{border-color:#dce6e7;border-radius:11px;background:linear-gradient(145deg,#fff,#f7faf9);box-shadow:0 3px 10px rgba(24,51,61,.045)}

/* Mapas */
.leaflet-container{border-radius:12px;background:#eaf0ef;font-family:inherit;box-shadow:inset 0 0 0 1px rgba(203,216,219,.65)}
.leaflet-control-zoom a{color:var(--zl-slate)!important}
.leaflet-popup-content-wrapper,.leaflet-popup-tip{box-shadow:var(--zl-shadow)!important}

/* Área pública */
.public-nav{min-height:68px;border-bottom-color:rgba(213,225,227,.9);background:rgba(255,255,255,.94);box-shadow:0 4px 18px rgba(24,51,61,.055);backdrop-filter:blur(12px)}
.public-nav .navbar-brand{font-size:1.05rem}
.public-nav .nav-link{position:relative;color:#53666f;font-size:.88rem;font-weight:550}
.public-nav .nav-link:hover{color:var(--zl-primary)}
.hero{position:relative;overflow:hidden;background:
  radial-gradient(circle at 78% 18%,rgba(84,205,182,.28),transparent 24rem),
  radial-gradient(circle at 10% 100%,rgba(233,154,24,.15),transparent 22rem),
  linear-gradient(135deg,#075c52 0,#143945 58%,#1c3943 100%)}
.hero::after{content:"";position:absolute;right:-110px;bottom:-190px;width:430px;height:430px;border:1px solid rgba(255,255,255,.1);border-radius:50%;box-shadow:0 0 0 45px rgba(255,255,255,.025),0 0 0 90px rgba(255,255,255,.018)}
.hero>.container{position:relative;z-index:1}
.hero h1{max-width:670px;letter-spacing:-.04em;line-height:1.08}
.hero .card{border:1px solid rgba(255,255,255,.22)!important;border-radius:18px;box-shadow:0 24px 60px rgba(4,30,34,.28)!important}
.hero .badge{padding:.48rem .72rem;border:1px solid rgba(255,255,255,.2);border-radius:999px}
#funcionalidades .card,#planos .card{border:1px solid #e0e8e9;box-shadow:0 6px 20px rgba(24,51,61,.055);transition:transform .2s,box-shadow .2s,border-color .2s}
#funcionalidades .card:hover,#planos .card:hover{transform:translateY(-4px);border-color:#b7d7d0;box-shadow:0 15px 34px rgba(24,51,61,.1)}
#funcionalidades .card-body{padding:1.35rem}
.feature-icon{background:linear-gradient(145deg,#eaf7f4,#dcefeb);box-shadow:inset 0 0 0 1px rgba(8,116,102,.08)}
#beneficios,#faq{border-top:1px solid #e8eeee;border-bottom:1px solid #e8eeee}
.accordion{--bs-accordion-border-color:var(--zl-border);--bs-accordion-btn-focus-box-shadow:0 0 0 .2rem rgba(8,116,102,.1);--bs-accordion-active-bg:var(--zl-primary-soft);--bs-accordion-active-color:var(--zl-primary-dark)}
.accordion-item{overflow:hidden;margin-bottom:.6rem;border:1px solid var(--zl-border)!important;border-radius:11px!important;box-shadow:var(--zl-shadow-sm)}
.accordion-button{font-size:.9rem;font-weight:650}
footer.public{background:linear-gradient(145deg,#193741,#122b34)}

/* Autenticação e configuração inicial */
.auth-wrap{position:relative;overflow:hidden;background:
  radial-gradient(circle at 18% 14%,rgba(8,116,102,.13),transparent 25rem),
  radial-gradient(circle at 88% 86%,rgba(233,154,24,.08),transparent 22rem),
  linear-gradient(145deg,#edf5f3,#f6f8f9 55%,#edf2f3)}
.auth-wrap::before,.auth-wrap::after{content:"";position:absolute;border:1px solid rgba(8,116,102,.08);border-radius:50%;pointer-events:none}
.auth-wrap::before{width:360px;height:360px;left:-170px;bottom:-170px;box-shadow:0 0 0 48px rgba(8,116,102,.025)}
.auth-wrap::after{width:280px;height:280px;right:-130px;top:-130px;box-shadow:0 0 0 38px rgba(8,116,102,.02)}
.auth-wrap .container{position:relative;z-index:1}
.auth-card{border:1px solid rgba(210,222,224,.8);border-radius:18px;box-shadow:0 24px 65px rgba(24,51,61,.15)}
.auth-card .card-header{padding:1.55rem;background:
  radial-gradient(circle at 85% 0,rgba(104,224,201,.22),transparent 10rem),
  linear-gradient(145deg,var(--zl-primary),var(--zl-primary-dark));border-radius:17px 17px 0 0}
.auth-card .card-body{padding:1.5rem!important}
.demo-creds{border-color:#9bc9bf;background:#f0f9f7}

/* Acessibilidade e movimento */
:focus-visible{outline:2px solid #167e6d;outline-offset:2px}
.btn:focus-visible,.form-control:focus-visible,.form-select:focus-visible{outline:0}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}

/* Responsividade */
@media(max-width:991.98px){
  .app-body{margin-top:68px}
  .app-sidebar{top:68px;max-height:calc(100vh - 68px);box-shadow:16px 0 35px rgba(12,31,37,.24)}
  .app-main{padding:1.25rem 1rem 3rem}
  .page-heading{padding:1rem 1rem 1rem 1.2rem}
  .data-toolbar{grid-template-columns:repeat(4,minmax(0,1fr))}
  .registry-summary{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:767.98px){
  .app-topbar{padding-left:.65rem!important;padding-right:.65rem!important}
  .app-brand{margin-right:.35rem!important}
  .topbar-favorites{margin-left:.2rem;gap:.2rem}
  .topbar-favorite-link{flex-basis:34px;width:34px;height:34px}
  .app-brand-mark{width:32px;height:32px;margin-right:.42rem}
  .page-heading{align-items:flex-start!important;border-radius:14px}
  .page-heading-actions{width:100%;justify-content:flex-start}
  .data-toolbar{grid-template-columns:repeat(2,minmax(0,1fr))}
  .modal-dialog{margin:.5rem}
  .planning-empty-state{min-height:280px}
  .measurement-summary{grid-template-columns:repeat(3,minmax(0,1fr))}
  .registry-page .page-heading-actions{width:100%;justify-content:flex-start}
  .registry-summary{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:575.98px){
  .app-main{padding:1rem .75rem 2.5rem}
  .section-title{font-size:1.28rem}
  .page-heading{margin-bottom:1rem!important;padding:.9rem .9rem .9rem 1.05rem}
  .page-heading-actions .btn{flex:1 1 auto}
  .page-heading-actions .page-favorite-button{flex:0 0 auto}
  .card-body{padding:.9rem}
  .kpi-card:hover{transform:none}
  .view-switcher{display:flex;width:100%}
  .data-toolbar{grid-template-columns:1fr;padding:.8rem}
  .planning-criteria-list{grid-template-columns:1fr}
  .planning-backlog-heading{align-items:flex-start}
  .planning-count{margin-top:.15rem}
  .planning-card .card-body{padding:1rem}
  .measurement-summary{grid-template-columns:1fr;padding:.65rem;gap:.5rem}
  .measurement-summary-item{padding:.65rem}
  .registry-summary{grid-template-columns:1fr;padding:.65rem;gap:.5rem}
  .registry-table-host .table tbody td{height:auto;min-height:52px}
  .data-toolbar-actions{width:100%;flex-wrap:wrap;justify-content:stretch}
  .data-toolbar-actions .btn{flex:1 1 auto}
  .data-footer{padding:.75rem .8rem}
  .modal-dialog{margin:0;min-height:100%}
  .modal-content{min-height:100vh;border:0;border-radius:0}
  .modal-header{position:sticky;top:0;z-index:3}
  .modal-footer{position:sticky;bottom:0;z-index:3}
  .hero h1{font-size:2.25rem}
  .auth-wrap{padding:.75rem 0}
  .auth-card{border-radius:15px}
}
