/* =========================================================
   SIMSAL · estilos (basado en el diseño de SIPEC)
   ========================================================= */
:root{
  --blue:#1f78d8;--blue-2:#4aa3f0;--brand:#0d6efd;--ink:#343a4f;--bg:#f3f5fa;--slate:#52618a;
  --verde:#198754;--naranja:#fd7e14;--rojo:#dc3545;--gris:#adb5bd;
  --agua:#0d8bd9;--luz:#f2b705;--baja:#6f42c1;--sidebar:250px
}
body{font-family:'Open Sans',system-ui,-apple-system,'Segoe UI',sans-serif;color:var(--ink);background:var(--bg);font-size:.9rem}
h1,h2,h3,h4,h5,.brand-top,.page-head h1,.modal-title{font-family:'Quicksand','Open Sans',sans-serif}
a{color:#1e74d0;text-decoration:none}a:hover{text-decoration:underline}
.btn-brand{background:var(--brand);border-color:var(--brand);color:#fff}.btn-brand:hover,.btn-brand:focus{background:#0b5ed7;border-color:#0a58ca;color:#fff}
.btn-icon{background:none;border:0;color:#fff;cursor:pointer;border-radius:4px;padding:.1rem .4rem}.btn-icon:hover{background:rgba(255,255,255,.18)}

/* Acceso */
.auth{min-height:100vh;display:grid;place-items:center;padding:1.5rem;background:linear-gradient(135deg,#1f6fd1,#4fb0f2 60%,#71c7c0)}
.auth-card{width:100%;max-width:460px;border:0;border-radius:8px}
.brand-logo{display:block;margin:0 auto .5rem;width:110px;height:auto}
.brand-name{font-family:'Quicksand',sans-serif;font-weight:700;font-size:2rem;letter-spacing:.12em;color:#1f2a44}
.brand-sub{font-size:.75rem;color:#6b7390}
.divider-text{display:flex;align-items:center;gap:.75rem;color:#8a93a8;font-size:.85rem;margin:1rem 0 1.4rem}
.divider-text:before,.divider-text:after{content:"";flex:1;border-top:1px solid #e1e5ef}
.input-group-text{background:#fff;color:#6b7390}.form-control,.form-select{border-color:#dfe3ee}
.form-control:focus,.form-select:focus{border-color:var(--blue);box-shadow:0 0 0 .15rem rgba(31,120,216,.2)}
.form-control[readonly]{background:#f6f7fb}

/* Estructura */
.topbar{position:sticky;top:0;z-index:1030;height:52px;display:flex;justify-content:space-between;align-items:center;padding:0 1rem;background:linear-gradient(90deg,#1f6fd1,#4aa3f0);color:#fff}
.brand-top{display:inline-flex;align-items:center;gap:.5rem;color:#fff;font-weight:600}.brand-top:hover{color:#fff;text-decoration:none}
.logo-img{height:32px;width:auto;background:#fff;border-radius:50%;padding:2px}
.user-chip{color:#fff;display:inline-flex;align-items:center;gap:.5rem}.user-chip:hover{color:#fff;text-decoration:none}
.avatar-sm{width:28px;height:28px;border-radius:50%;background:#dbe6f6;display:inline-grid;place-items:center;color:#5a6f9c}
.shell{display:flex;min-height:calc(100vh - 52px)}
.sidebar{width:var(--sidebar);flex:none;background:#fff;border-right:1px solid #e6e9f2;padding:.5rem 0 1rem}
.side-user{padding:.6rem 1.1rem .8rem;border-bottom:1px solid #eef0f6;margin-bottom:.4rem;font-size:.85rem}
.side-link{display:flex;align-items:center;gap:.6rem;padding:.62rem 1.1rem;color:#5a6280;border-left:3px solid transparent;font-family:'Quicksand',sans-serif;font-weight:600}
.side-link:hover{background:#f4f7fd;text-decoration:none;color:#33405f}
.side-link.active{border-left-color:var(--blue);color:#1f6fd1;background:#eef5fe}
.side-link span:first-of-type{flex:1 1 auto}
.side-group .chev{font-size:.7rem;transition:transform .15s}.side-group:not(.collapsed) .chev{transform:rotate(180deg)}
.side-sub .side-link.sub{padding:.42rem 1.1rem .42rem 2.9rem;font-size:.85rem;font-weight:500}
.content{flex:1;min-width:0;padding:1.2rem 1.4rem 0;display:flex;flex-direction:column}
.page-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:1rem;margin-bottom:1rem}
.page-head h1{font-size:1.25rem;font-weight:600;margin:0}
.crumbs{font-size:.78rem;color:#8a93a8;padding-left:1rem;border-left:1px solid #dde1ec}.crumbs span{margin:0 .2rem}
.foot{margin-top:auto;padding:1.2rem 0;color:#8a93a8;font-size:.78rem}
@media(min-width:992px){.sidebar-collapsed .sidebar{display:none}}
.sidebar-backdrop{display:none}
@media(max-width:991px){
  .sidebar{position:fixed;z-index:1040;top:52px;bottom:0;left:calc(var(--sidebar) * -1);transition:left .2s;overflow-y:auto}
  .sidebar-open .sidebar{left:0;box-shadow:0 0 30px rgba(0,0,0,.2)}
  .sidebar-open .sidebar-backdrop{display:block;position:fixed;inset:52px 0 0 0;background:rgba(20,30,60,.35);z-index:1035}
  .content{padding:1rem}
}

/* Paneles y tarjetas */
.panel{border:0;box-shadow:0 1px 8px rgba(40,55,100,.08);border-radius:6px}
.panel .card-header{background:#fff;font-family:'Quicksand',sans-serif;font-weight:700;border-bottom:1px solid #edf0f6}
.panel .card-footer{background:#fff;border-top:1px solid #edf0f6}
.stat{display:flex;gap:1rem;align-items:center;padding:1rem 1.2rem;border-radius:6px;color:#fff;min-height:96px;box-shadow:0 1px 8px rgba(40,55,100,.1)}
.stat>i{font-size:2.3rem;opacity:.9}.stat-n{font-family:'Quicksand',sans-serif;font-size:1.55rem;font-weight:700;line-height:1.1}.stat-n small{font-size:.78rem;font-weight:600;opacity:.92}
.stat-blue{background:linear-gradient(90deg,#1f78d8,#5cb0f5)}.stat-agua{background:linear-gradient(90deg,#0b7fc4,#36b3e8)}
.stat-luz{background:linear-gradient(90deg,#e0a100,#f5c842);color:#3d2f00}.stat-green{background:linear-gradient(90deg,#198754,#3fb27f)}
.stat-red{background:linear-gradient(90deg,#dc3545,#ee6b78)}.stat-slate{background:linear-gradient(90deg,#52618a,#7a89b0)}
.stat-violet{background:linear-gradient(90deg,#6f42c1,#9b7ae0)}.stat-orange{background:linear-gradient(90deg,#f07a1c,#ffab5e)}
.chart-box{position:relative;height:300px}.chart-box.tall{height:380px}

/* Tablas */
.grid thead th{background:var(--slate);color:#fff;font-family:'Quicksand',sans-serif;font-weight:700;font-size:.78rem;border:0;white-space:nowrap;vertical-align:middle}
.grid td{font-size:.82rem}.grid .desc{max-width:300px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.btn-act{display:inline-grid;place-items:center;width:28px;height:24px;border-radius:4px;color:#fff;font-size:.8rem;margin:0 1px;cursor:pointer;border:0;padding:0;line-height:1}
.btn-act:hover{color:#fff;filter:brightness(1.1);text-decoration:none}
.bg-orange{background:#ff8d4e}.bg-agua{background:var(--agua)}.bg-luz{background:var(--luz);color:#3d2f00!important}.bg-baja{background:var(--baja)}
.btn-serv{display:inline-flex;align-items:center;gap:.25rem;border:0;border-radius:4px;color:#fff;font-size:.74rem;font-weight:600;padding:.22rem .5rem;margin:1px;cursor:pointer;white-space:nowrap}
.btn-serv:hover{filter:brightness(1.08)}
.btn-serv.agua{background:var(--agua)}.btn-serv.luz{background:var(--luz);color:#3d2f00}.btn-serv.baja{background:var(--baja)}
.ro-data dt{font-weight:700;font-size:.8rem}.ro-data dd{font-size:.85rem;color:#4b5370}

/* Condición del consumo */
.cond{font-weight:700;font-size:.74rem;padding:.42em .7em;color:#fff}
.cond-verde{background:var(--verde)!important;color:#fff}.cond-naranja{background:var(--naranja)!important;color:#fff}
.cond-rojo{background:var(--rojo)!important;color:#fff}.cond-gris{background:#e9ecef!important;color:#6c757d!important}
.cond-verde-t{color:var(--verde)}.cond-naranja-t{color:var(--naranja)}.cond-rojo-t{color:var(--rojo)}.cond-gris-t{color:#8a93a8}
.avance{display:flex;align-items:center;gap:.4rem;min-width:110px}.avance .progress{flex:1;height:8px;background:#e9edf5}
.avance-n{font-weight:700;font-size:.76rem;min-width:44px;text-align:right}
.dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:.3rem}

/* Ventana emergente de consumo */
.modal-header.agua{background:linear-gradient(90deg,#0b7fc4,#36b3e8);color:#fff}
.modal-header.luz{background:linear-gradient(90deg,#e0a100,#f5c842);color:#3d2f00}
.modal-header.baja{background:linear-gradient(90deg,#6f42c1,#9b7ae0);color:#fff}
.modal-header.agua .btn-close,.modal-header.baja .btn-close{filter:invert(1) grayscale(1) brightness(2)}
.ie-ficha{background:#f6f8fc;border:1px solid #e6eaf3;border-radius:6px;padding:.6rem .9rem;font-size:.82rem}
.tabla-consumo th{background:var(--slate);color:#fff;font-size:.78rem;text-align:center;vertical-align:middle}
.tabla-consumo td{vertical-align:middle;font-size:.84rem}
.tabla-consumo input.form-control-sm{font-size:.82rem;min-width:90px}
.tabla-consumo tfoot td{background:#eef2f8;font-weight:700}
.tabla-consumo tfoot tr.res td{background:#fff}
.res-box{border-radius:8px;padding:.8rem 1rem;color:#fff;text-align:center}
.res-box .n{font-family:'Quicksand',sans-serif;font-size:1.5rem;font-weight:700;line-height:1.1}
.mes-futuro{color:#b0b6c6}
.evid-cell{min-width:240px}
.evid-ok{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}
.lock{color:#6c757d}

.flash-stack{position:fixed;top:62px;right:16px;z-index:2000;width:min(400px,calc(100vw - 32px))}
.nav-pills .nav-link{font-size:.85rem}.nav-pills .nav-link.active{background:var(--brand)}
.perm-grupo{border:1px solid #e6eaf3;border-radius:6px;padding:.6rem .8rem;margin-bottom:.6rem;background:#fbfcfe}
.perm-grupo h6{font-size:.8rem;font-weight:700;color:#52618a;margin-bottom:.4rem;text-transform:uppercase;letter-spacing:.03em}
.lista-ie{max-height:460px;overflow:auto;border:1px solid #e6eaf3;border-radius:6px}
.lista-ie label{display:flex;gap:.6rem;align-items:flex-start;padding:.45rem .7rem;border-bottom:1px solid #f0f2f7;cursor:pointer;margin:0}
.lista-ie label:hover{background:#f4f7fd}
@media print{
  body{background:#fff}.topbar,.sidebar,.sidebar-backdrop,.no-print,.flash-stack,.foot{display:none!important}
  .shell{display:block}.content{padding:0}.panel{box-shadow:none}
}
.stat-n{font-size:1.4rem;white-space:nowrap}
.modal-header.agua .modal-title,.modal-header.baja .modal-title{color:#fff}.modal-header.luz .modal-title{color:#3d2f00}
.grid td.text-end{white-space:nowrap}
.grid .desc{max-width:250px}
/* Columna de acciones fija a la derecha en tablas anchas */
.grid .col-acc{position:sticky;right:0;background:#fff;box-shadow:-6px 0 8px -6px rgba(40,55,100,.25);z-index:1}
.grid thead .col-acc{background:var(--slate)}
.table-hover>tbody>tr:hover>.col-acc{background:#f5f7fb}
