@import url("https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;1,9..40,400&display=swap");:root{--teal:#0a7c72;--teal-soft:#e7f5f3;--teal-dark:#065f58;--dark-blue:#1f3b57;--orange:#f15a22;--bg:#f3f6f8;--card:#ffffff;--border:#e2e8ee;--text:#3d4654;--muted:#7a8494;--green:#1b9e6d;--red:#d64545;--purple:#6b5ce0;--blue:#2f80ed;--yellow:#e6a700}*{box-sizing:border-box}body,html{margin:0;font-family:DM Sans,Segoe UI,sans-serif;background:var(--bg);color:var(--text)}a{color:inherit;text-decoration:none}button,input,select{font:inherit}.layout{display:grid;grid-template-columns:248px 1fr;min-height:100vh}.sidebar{background:#fff;border-right:1px solid var(--border);padding:1.1rem 1rem;display:flex;flex-direction:column;gap:.85rem;position:-webkit-sticky;position:sticky;top:0;height:100vh}.sidebar-brand{padding:.25rem .4rem .5rem}.sidebar-user{display:flex;align-items:center;gap:.7rem;border:1px solid var(--border);background:#fafcfc;border-radius:.9rem;padding:.65rem .75rem;cursor:pointer;text-align:left}.sidebar-user small,.sidebar-user strong{display:block}.sidebar-user strong{color:var(--dark-blue);font-size:.92rem}.sidebar-user small{color:var(--muted);font-size:.75rem;margin-top:.1rem}.sidebar-avatar{width:38px;height:38px;border-radius:50%;background:linear-gradient(145deg,#0a7c72,#3db8a8);color:#fff;display:grid;place-items:center;font-weight:700;flex-shrink:0}.sidebar nav{display:grid;grid-gap:.3rem;gap:.3rem;flex:1 1}.sidebar nav a{display:flex;align-items:center;gap:.65rem;padding:.75rem .85rem;border-radius:.75rem;color:#5b6575;font-weight:600;font-size:.95rem}.sidebar nav a .nav-icon{width:1.4rem;text-align:center;opacity:.75}.sidebar nav a.active,.sidebar nav a:hover{background:var(--teal-soft);color:var(--teal-dark)}.sidebar-help{background:#eef7ff;border-radius:.9rem;padding:.85rem;display:grid;grid-gap:.2rem;gap:.2rem;font-size:.82rem}.sidebar-help strong{color:var(--dark-blue)}.sidebar-help span{color:var(--muted)}.sidebar-help a{color:var(--blue);font-weight:700;margin-top:.2rem}.sidebar-logout{width:100%;border:1px solid var(--border);background:#fff;color:var(--dark-blue);border-radius:.75rem;padding:.7rem .9rem;font-weight:700;cursor:pointer}.sidebar-logout:hover{border-color:var(--teal);color:var(--teal)}.sidebar-footer{text-align:center;color:var(--muted);font-size:.72rem;padding-bottom:.25rem}.content{padding:1.4rem 1.6rem 2rem;min-width:0}.page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;flex-wrap:wrap;margin-bottom:1.1rem}.page-head h1{margin:0 0 .3rem;color:var(--dark-blue);font-size:1.55rem}.page-head p{margin:0;color:var(--muted);max-width:46rem}.page-actions{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}.btn{background:var(--teal);color:white;border:0;border-radius:.7rem;padding:.7rem 1.1rem;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:.4rem}.btn:disabled{opacity:.65;cursor:not-allowed}.btn-outline{background:#fff;color:var(--dark-blue);border:1px solid var(--border)}.btn-ghost{background:transparent;border:0;color:var(--teal);font-weight:700;cursor:pointer;padding:.5rem .7rem}.btn-icon{width:38px;height:38px;border-radius:.7rem;border:1px solid var(--border);background:#fff;display:grid;place-items:center;cursor:pointer;position:relative}.btn-icon .badge-dot{position:absolute;top:-4px;right:-4px;min-width:18px;height:18px;border-radius:999px;background:#e53935;color:#fff;font-size:.68rem;font-weight:700;display:grid;place-items:center;padding:0 4px}.field-date,.field-select{border:1px solid var(--border);background:#fff;border-radius:.7rem;padding:.55rem .8rem;color:var(--dark-blue);font-weight:600}.kpi-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-gap:.85rem;gap:.85rem;margin-bottom:1rem}.kpi-card{background:var(--card);border:1px solid var(--border);border-radius:1rem;padding:1rem;display:grid;grid-gap:.45rem;gap:.45rem;min-height:132px}.kpi-card header{display:flex;justify-content:space-between;align-items:flex-start;gap:.5rem}.kpi-card h3{margin:0;font-size:.82rem;color:var(--muted);font-weight:600;line-height:1.3}.kpi-ico{width:34px;height:34px;border-radius:.65rem;display:grid;place-items:center;font-size:1rem;flex-shrink:0}.kpi-ico.green{background:#e8f8f0}.kpi-ico.orange{background:#fff1ea}.kpi-ico.purple{background:#efeefe}.kpi-ico.blue{background:#eaf2ff}.kpi-ico.red{background:#fdeeee}.kpi-value{font-size:1.55rem;font-weight:750;letter-spacing:-.02em;line-height:1.1}.kpi-value.green{color:var(--green)}.kpi-value.orange{color:var(--orange)}.kpi-value.purple{color:var(--purple)}.kpi-value.blue{color:var(--blue)}.kpi-value.red{color:var(--red)}.kpi-delta{font-size:.78rem;font-weight:600;color:var(--muted)}.kpi-delta.up{color:var(--green)}.kpi-delta.down{color:var(--red)}.kpi-delta.warn{color:var(--orange)}.dash-row{display:grid;grid-gap:.85rem;gap:.85rem;margin-bottom:.85rem}.dash-row.three{grid-template-columns:1.3fr 1fr 1fr}.dash-row.bottom{grid-template-columns:1fr 1.15fr .95fr}.panel{background:var(--card);border:1px solid var(--border);border-radius:1rem;padding:1rem 1.1rem}.panel-head{display:flex;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.75rem}.panel-head h2{margin:0;font-size:.98rem;color:var(--dark-blue)}.chart-box{width:100%;height:230px}.chart-box.sm{height:190px}.donut-wrap{display:grid;grid-template-columns:1fr 1fr;grid-gap:.5rem;gap:.5rem;align-items:center}.legend-list{list-style:none;margin:0;padding:0;display:grid;grid-gap:.45rem;gap:.45rem;font-size:.78rem}.legend-list li{display:grid;grid-template-columns:10px 1fr auto;grid-gap:.4rem;gap:.4rem;align-items:center;color:#556}.legend-dot{width:10px;height:10px;border-radius:50%}.legend-list strong{color:var(--dark-blue);font-weight:700}.progress-list{display:grid;grid-gap:.9rem;gap:.9rem}.progress-item label{display:flex;justify-content:space-between;font-size:.85rem;margin-bottom:.35rem;color:#556}.progress-item strong{color:var(--dark-blue)}.progress-track{height:10px;background:#eef2f5;border-radius:999px;overflow:hidden}.progress-fill{height:100%;border-radius:999px}.progress-fill.ok{background:var(--green)}.progress-fill.bad{background:var(--red)}.alert-box{margin-top:.9rem;background:#fff4e8;border:1px solid #ffd7b0;color:#9a5b16;border-radius:.75rem;padding:.7rem .8rem;font-size:.8rem;line-height:1.35}.bairro-layout{display:grid;grid-template-columns:1.1fr .9fr;grid-gap:.85rem;gap:.85rem;align-items:start}.rank-list{list-style:none;margin:0;padding:0;display:grid;grid-gap:.55rem;gap:.55rem}.rank-list li{display:grid;grid-template-columns:24px 1fr auto;grid-gap:.5rem;gap:.5rem;align-items:center;font-size:.86rem}.rank-num{width:24px;height:24px;border-radius:50%;background:var(--teal-soft);color:var(--teal-dark);display:grid;place-items:center;font-size:.75rem;font-weight:700}.map-mock{background:linear-gradient(160deg,#d9f0ea,#b7e0d6 45%,#8fcfbf);border-radius:.9rem;min-height:180px;position:relative;overflow:hidden;border:1px solid #c5e5dc}.map-mock:after,.map-mock:before{content:"";position:absolute;border-radius:40% 60% 55% 45%;background:rgba(10,124,114,.18)}.map-mock:before{width:70%;height:75%;left:12%;top:12%}.map-mock:after{width:35%;height:30%;right:10%;bottom:18%;background:rgba(10,124,114,.28)}.map-label{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background:rgba(255,255,255,.85);border-radius:999px;padding:.3rem .7rem;font-size:.72rem;font-weight:700;color:var(--teal-dark);z-index:1}.alerta-list{list-style:none;margin:0;padding:0;display:grid;grid-gap:.7rem;gap:.7rem}.alerta-list li{display:grid;grid-template-columns:10px 1fr auto;grid-gap:.55rem;gap:.55rem;align-items:start;font-size:.84rem;line-height:1.35}.alerta-list strong{color:var(--dark-blue)}.sev{width:10px;height:10px;border-radius:50%;margin-top:.3rem}.sev.MEDIA{background:var(--yellow)}.sev.ALTA{background:var(--orange)}.sev.CRITICA{background:var(--red)}.sev.INFO{background:var(--blue)}.dash-footnote{text-align:center;color:var(--muted);font-size:.78rem;margin-top:.75rem}.filters-card{background:var(--card);border:1px solid var(--border);border-radius:1rem;padding:1rem;margin-bottom:1rem}.filters-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:.75rem;gap:.75rem}.filters-grid label{display:grid;grid-gap:.35rem;gap:.35rem;font-size:.8rem;font-weight:700;color:var(--dark-blue)}.filters-grid input,.filters-grid select{width:100%;border:1px solid var(--border);border-radius:.7rem;padding:.7rem .8rem;background:#fff}.filters-actions{display:flex;justify-content:flex-end;align-items:center;gap:.75rem;margin-top:.9rem}.table-card{background:var(--card);border:1px solid var(--border);border-radius:1rem;padding:.85rem 1rem 1rem}.table-meta{color:var(--muted);font-size:.86rem;margin:0 0 .7rem}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;min-width:980px}td,th{text-align:left;padding:.75rem .5rem;border-bottom:1px solid var(--border);font-size:.86rem;white-space:nowrap}th{color:var(--muted);font-size:.78rem;text-transform:uppercase;letter-spacing:.02em}td strong,th{font-weight:700}td strong{color:var(--dark-blue)}.badge{display:inline-block;padding:.22rem .6rem;border-radius:999px;font-size:.74rem;font-weight:700}.badge.ATIVO{background:#e7f7f0;color:#1b7f5a}.badge.BLOQUEADO{background:#fdecea;color:#c62828}.badge.SUSPENSO{background:#fff3e0;color:#ef6c00}.badge.AGUARDANDO_ATUALIZACAO,.badge.EM_ANALISE{background:#e3f2fd;color:#1565c0}.badge.CANCELADO,.badge.INATIVO{background:#eee;color:#555}.badge.ADMIN,.badge.GESTOR{background:#e7f7f0;color:#1b7f5a}.badge.ATENDENTE_156,.badge.TECNICO{background:#e3f2fd;color:#1565c0}.pagination{display:flex;justify-content:flex-end;gap:.35rem;margin-top:.9rem;flex-wrap:wrap}.pagination button{min-width:34px;height:34px;border-radius:.55rem;border:1px solid var(--border);background:#fff;cursor:pointer;font-weight:600;color:#556}.pagination button.active{background:var(--teal);border-color:var(--teal);color:#fff}.drawer-backdrop{position:fixed;inset:0;background:rgba(20,30,40,.35);z-index:40}.drawer{position:fixed;top:0;right:0;width:min(420px,100%);height:100vh;background:#fff;z-index:50;box-shadow:-8px 0 30px rgba(20,40,50,.12);display:flex;flex-direction:column}.drawer-head{padding:1.1rem 1.15rem .75rem;border-bottom:1px solid var(--border)}.drawer-head-top{display:flex;justify-content:space-between;gap:.75rem;align-items:flex-start}.drawer-head h2{margin:0 0 .35rem;font-size:1.15rem;color:var(--dark-blue)}.drawer-head .meta{color:var(--muted);font-size:.85rem;margin-top:.35rem}.drawer-tabs{display:flex;gap:.2rem;margin-top:.85rem;overflow-x:auto}.drawer-tabs button{border:0;background:transparent;padding:.55rem .7rem;font-weight:700;color:var(--muted);cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap}.drawer-tabs button.active{color:var(--teal);border-bottom-color:var(--teal)}.drawer-body{padding:1rem 1.15rem;overflow:auto;flex:1 1;display:grid;grid-gap:.9rem;gap:.9rem;align-content:start}.drawer-section h3{margin:0 0 .55rem;font-size:.92rem;color:var(--dark-blue)}.kv{grid-gap:.4rem;font-size:.86rem}.kv,.kv div{display:grid;gap:.4rem}.kv div{grid-template-columns:140px 1fr;grid-gap:.4rem}.kv span{color:var(--muted)}.kv strong{color:var(--dark-blue);font-weight:600}.benefit-box{background:#eefaf5;border:1px solid #cfeee3;border-radius:.85rem;padding:.85rem}.benefit-box .money{color:var(--green);font-size:1.15rem}.pend-box{background:#fff8e8;border:1px solid #ffe1a8;border-radius:.85rem;padding:.85rem;display:grid;grid-gap:.55rem;gap:.55rem}.pend-item{display:flex;justify-content:space-between;gap:.5rem;align-items:center;font-size:.86rem}.drawer-foot{border-top:1px solid var(--border);padding:.9rem 1.15rem;display:grid;grid-template-columns:1fr 1fr;grid-gap:.6rem;gap:.6rem}.form-grid{display:grid;grid-gap:.85rem;gap:.85rem}.form-grid h2{margin:.75rem 0 0;font-size:1.05rem;color:var(--dark-blue)}.form-grid label{display:grid;grid-gap:.35rem;gap:.35rem;font-size:.9rem;font-weight:700;color:var(--dark-blue)}.form-grid input,.form-grid select{width:100%;border:1px solid var(--border);border-radius:.7rem;padding:.7rem .8rem;font-weight:500}.form-row{display:grid;grid-template-columns:1fr 1fr;grid-gap:.75rem;gap:.75rem}.form-row.three{grid-template-columns:repeat(3,minmax(0,1fr))}.form-meta{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.form-hint{margin:0;color:var(--muted);font-size:.9rem}.form-ok{color:var(--green)}.form-err,.form-ok{margin:0;font-weight:600}.form-err{color:var(--red)}.form-actions{display:flex;gap:.75rem;flex-wrap:wrap;margin-top:.5rem}.checkbox-row{display:flex!important;align-items:center;gap:.55rem;font-weight:600!important}.checkbox-row input{width:auto!important}.login-page{min-height:100vh;display:grid;place-items:center;padding:1rem;background:radial-gradient(circle at 10% 0,#d9f3ef 0,transparent 40%),radial-gradient(circle at 90% 10%,#ffe6cb 0,transparent 35%),var(--bg)}.login-card{width:min(420px,100%);background:white;border-radius:1.2rem;border:1px solid var(--border);padding:1.5rem}.login-card h1{margin-top:0;color:var(--dark-blue)}.login-card label{display:grid;grid-gap:.35rem;gap:.35rem;margin:.8rem 0}.login-card input{border:1px solid var(--border);border-radius:.7rem;padding:.75rem .85rem}.upload-box{display:grid;grid-gap:.45rem;gap:.45rem;margin-bottom:1rem}.upload-box input[type=file]{border:1px dashed var(--border);border-radius:.8rem;padding:.9rem;background:#fafcfc}code{background:#eef5f4;padding:.1rem .35rem;border-radius:.35rem;font-size:.85em}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));grid-gap:1rem;gap:1rem}.card{background:var(--card);border:1px solid var(--border);border-radius:1rem;padding:1rem}.card h3{margin:0;font-size:.9rem;color:#667}.card strong{display:block;margin-top:.5rem;font-size:1.4rem;color:var(--dark-blue)}@media (max-width:1280px){.kpi-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.dash-row.bottom,.dash-row.three{grid-template-columns:1fr 1fr}}@media (max-width:980px){.layout{grid-template-columns:1fr}.sidebar{position:relative;height:auto;border-right:0;border-bottom:1px solid var(--border)}.sidebar nav{grid-template-columns:repeat(2,1fr)}.bairro-layout,.dash-row.bottom,.dash-row.three,.donut-wrap,.filters-grid,.form-row,.form-row.three,.kpi-grid{grid-template-columns:1fr}}