/* Portal Serenzo — estilo provisional hasta el diseño final */
:root{--teal:#1F4A5C;--teal2:#2d6a80;--claro:#E6EFF2;--oro:#C8A15A;--txt:#1D2427;--gris:#5F6B73;--borde:#d5dee2;--fondo:#f5f8f9;--ok:#e7f5ec;--okt:#1e6b3a;--err:#fdecec;--errt:#a32020;--info:#eef4fb}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{margin:0;background:var(--fondo);color:var(--txt);font:15px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif}
a{color:var(--teal2)}
h1{font-size:1.5rem;margin:.2em 0 .6em;color:var(--teal)}
h2{font-size:1.1rem;margin:0 0 .8em;color:var(--teal)}
h3{margin:0 0 .3em;font-size:1rem}
.centro{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px}
.tarjeta{background:#fff;border:1px solid var(--borde);border-radius:14px;padding:28px;width:100%;max-width:420px;box-shadow:0 6px 24px rgba(31,74,92,.08)}
.marca{display:flex;align-items:center;gap:10px;font-size:1.05rem;color:var(--teal);margin-bottom:18px}
.marca b{color:var(--oro)}
.logo{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:9px;background:var(--teal);color:#fff;font-weight:700}
.campo{display:block;margin:0 0 14px}
.campo span{display:block;font-weight:600;margin-bottom:5px;font-size:.92rem}
.campo small{display:block;color:var(--gris);margin-top:4px}
input,select,textarea{width:100%;padding:10px 12px;border:1px solid var(--borde);border-radius:9px;font:inherit;background:#fff}
textarea{resize:vertical}
input:disabled{background:var(--fondo);color:var(--gris)}
input:focus,select:focus,textarea:focus{outline:2px solid var(--teal2);outline-offset:1px;border-color:var(--teal2)}
input.codigo{font-size:1.6rem;letter-spacing:.4em;text-align:center;font-variant-numeric:tabular-nums}
button,.boton{display:inline-block;padding:10px 16px;border-radius:9px;border:1px solid var(--borde);background:#fff;color:var(--teal);font:inherit;font-weight:600;cursor:pointer;text-decoration:none;text-align:center}
button:disabled{opacity:.6;cursor:wait}
.primario{background:var(--teal);color:#fff;border-color:var(--teal);width:100%}
.primario:hover{background:var(--teal2)}
.secundario{background:#fff}
.mini{padding:5px 9px;font-size:.82rem}
.peligro{color:var(--errt);border-color:#f0c4c4}
.enlace{text-align:center;margin:14px 0 0}
.nota{color:var(--gris);font-size:.88rem}
.aviso{padding:10px 12px;border-radius:9px;margin:0 0 14px}
.aviso.error{background:var(--err);color:var(--errt)}
.aviso.ok{background:var(--ok);color:var(--okt)}
.aviso.info{background:var(--info)}
.reqs{list-style:none;padding:0;margin:-6px 0 14px;font-size:.85rem;color:var(--gris);display:grid;grid-template-columns:1fr 1fr;gap:2px 10px}
.reqs .ok{color:var(--okt)}
.pasos{padding-left:20px;margin:0 0 10px}
.qr{display:block;margin:8px auto 12px;border:1px solid var(--borde);border-radius:10px;background:#fff}
.clave{display:block;padding:8px;background:var(--claro);border-radius:8px;word-break:break-all;margin:8px 0 14px;font-size:.95rem}
details{margin-bottom:14px}
.cargando{color:var(--gris)}
/* app */
.barra{display:flex;flex-wrap:wrap;align-items:center;gap:12px 22px;padding:12px 20px;background:#fff;border-bottom:1px solid var(--borde)}
.barra .marca{margin:0}
.barra nav{display:flex;gap:4px;flex-wrap:wrap;flex:1}
.barra nav a{padding:7px 12px;border-radius:8px;text-decoration:none;color:var(--txt)}
.barra nav a.activo{background:var(--claro);color:var(--teal);font-weight:600}
.quien{display:flex;align-items:center;gap:10px;font-size:.9rem}
.rol{background:var(--claro);color:var(--teal);padding:2px 8px;border-radius:20px;font-size:.78rem;font-weight:600}
.app{max-width:1100px;margin:0 auto;padding:22px 16px 60px}
.sub{color:var(--gris);margin-top:-6px}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}
.card{background:#fff;border:1px solid var(--borde);border-radius:12px;padding:16px}
.card p{color:var(--gris);margin:0 0 10px;font-size:.9rem}
.pronto{font-size:.75rem;font-weight:600;color:var(--oro);text-transform:uppercase;letter-spacing:.05em}
.panel{background:#fff;border:1px solid var(--borde);border-radius:12px;padding:18px;margin:0 0 16px}
.panel form{max-width:520px}
.panel .primario{width:auto}
.fila-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:0 12px;align-items:start;max-width:none!important}
.fila-form .primario{margin:27px 0 14px}
.fila-form.compacta{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}
.datos{display:grid;grid-template-columns:max-content 1fr;gap:6px 16px;margin:0}
.datos dt{color:var(--gris)}
.datos dd{margin:0}
.tabla-wrap{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:.88rem}
th,td{text-align:left;padding:8px;border-bottom:1px solid var(--borde);vertical-align:middle}
th{color:var(--gris);font-weight:600;white-space:nowrap}
tr.inactivo td{color:#9aa5ab}
.acciones{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.link{display:block;padding:8px;background:#fff;border:1px solid var(--borde);border-radius:8px;word-break:break-all;font-size:.8rem;margin:6px 0}
.modal{border:none;border-radius:14px;padding:22px;width:min(440px,calc(100vw - 32px));box-shadow:0 10px 40px rgba(0,0,0,.2)}
.modal::backdrop{background:rgba(20,40,50,.45)}
.modal .acciones{justify-content:flex-end;margin-top:12px}
.modal .primario{width:auto}
.check{display:flex;gap:8px;align-items:center;margin-bottom:12px}
.check input{width:auto}

/* v2: clínicas, cuotas y pagos */
.auto{width:auto!important}
.titulo-sec{margin:24px 0 10px}
.cabecera{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 16px}
.cabecera h1{margin-bottom:.3em}
.migas{margin:0 0 6px;font-size:.9rem}
.accesos{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 16px}
.accesos .primario{width:auto}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin:0 0 16px}
.kpi{background:#fff;border:1px solid var(--borde);border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:2px;min-width:0}
.kpi span{color:var(--gris);font-size:.85rem}
.kpi b{font-size:1.35rem;color:var(--teal);overflow-wrap:anywhere}
.kpi small{color:var(--gris);font-size:.8rem}
.kpi.alerta{border-color:#f0c4c4;background:#fffafa}
.kpi.alerta b{color:var(--errt)}
.chip{display:inline-block;padding:2px 9px;border-radius:20px;font-size:.76rem;font-weight:600;white-space:nowrap;margin:1px 2px 1px 0}
.chip.verde{background:var(--ok);color:var(--okt)}
.chip.ambar{background:#fff4dc;color:#8a5a00}
.chip.azul{background:var(--info);color:#1f4f87}
.chip.rojo{background:var(--err);color:var(--errt)}
.chip.rojo.fuerte{background:var(--errt);color:#fff}
.chip.gris{background:#eef1f2;color:var(--gris)}
.rojo-t{color:var(--errt)}
td.num,th.num{text-align:right;white-space:nowrap}
tr.clic{cursor:pointer}
tr.clic:hover td{background:#f9fbfc}
.filtros{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:0 12px;margin-bottom:4px}
.dos-col{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:0 16px}
.lineas{font-size:.92rem}
.lineas td{border-bottom:1px dashed var(--borde)}
.lineas tr.total td{border-bottom:none;border-top:2px solid var(--teal);font-weight:700;color:var(--teal)}
.ajustes{margin-top:14px;padding-top:10px;border-top:1px solid var(--borde)}
.ajustes h3{font-size:.9rem;color:var(--gris)}
.fila-ajuste{display:flex;align-items:center;gap:10px;justify-content:space-between;padding:4px 0}
.fila-ajuste span{flex:1}
.notas{margin-top:14px;padding:10px 12px;background:#fffbea;border-radius:9px}
.notas h3{font-size:.9rem}
.notas p{margin:0;white-space:pre-wrap}
.tabs{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 14px}
.tabs button{padding:7px 12px}
.tabs button.activo{background:var(--teal);color:#fff;border-color:var(--teal)}
.primario-mini{background:var(--teal);color:#fff;border-color:var(--teal)}
.modal.ancho{width:min(640px,calc(100vw - 32px))}
.modal h3{font-size:.95rem;margin:14px 0 8px;color:var(--teal)}
img.constancia{display:block;max-width:100%;max-height:70vh;margin:0 auto 12px;border-radius:8px;border:1px solid var(--borde)}
fieldset.cuotas-check{border:1px solid var(--borde);border-radius:9px;margin:0 0 14px;padding:8px 12px}
fieldset.cuotas-check legend{font-weight:600;font-size:.92rem;padding:0 4px}
fieldset.cuotas-check .check{margin:4px 0;flex-wrap:wrap}
.checks{display:flex;flex-direction:column;gap:4px;margin:4px 0 12px}
.checks.en-linea{flex-direction:row;flex-wrap:wrap;gap:4px 12px}
.check.apagado{color:var(--gris)}
.etiqueta{display:block;font-weight:600;font-size:.92rem;margin:4px 0 5px}
.resumen-precio{background:var(--fondo);border-radius:9px;padding:8px 12px}
.ficha .panel h2{margin-bottom:12px}
.adic{align-items:end;border-bottom:1px dashed var(--borde);padding-bottom:6px;margin-bottom:8px}
.adic>button{margin-bottom:14px;justify-self:start}
.plan-cfg{border:1px solid var(--borde);border-radius:10px;padding:10px 10px 0}
.panel.destacado{border-color:var(--teal2);box-shadow:0 4px 18px rgba(31,74,92,.08)}
.cuentas{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;margin:0 0 12px}
.cuenta{display:grid;grid-template-columns:1fr auto;gap:0 10px;align-items:center;border:1px solid var(--borde);border-radius:10px;padding:10px 12px}
.cuenta span{grid-column:1;color:var(--gris);font-size:.82rem}
.cuenta b{grid-column:1;font-size:1.05rem;overflow-wrap:anywhere}
.cuenta small{grid-column:1;color:var(--gris)}
.cuenta button{grid-column:2;grid-row:1 / span 3}
.lista{margin:0 0 10px;padding-left:18px}
@media (max-width:600px){
  .tarjeta{padding:22px 18px}
  .quien span:first-child{display:none}
  .barra{padding:10px 14px;gap:8px 12px}
  .barra nav{order:3;flex-basis:100%;overflow-x:auto;flex-wrap:nowrap;padding-bottom:2px}
  .barra nav a{white-space:nowrap}
  .quien{margin-left:auto}
  .app{padding:16px 12px 48px}
  .panel{padding:14px}
  .kpis{grid-template-columns:1fr 1fr}
  .kpi b{font-size:1.1rem}
}
