/* OdonFlow — estilos generales.
   Barra lateral azul noche, verde para las acciones, fondo gris claro,
   tarjetas blancas. Tipografía Poppins, servida local (carpeta fuentes/). */
@font-face{font-family:'Poppins';font-style:normal;font-weight:400;font-display:swap;src:url('/publico/fuentes/poppins-400.woff2') format('woff2')}
@font-face{font-family:'Poppins';font-style:normal;font-weight:500;font-display:swap;src:url('/publico/fuentes/poppins-500.woff2') format('woff2')}
@font-face{font-family:'Poppins';font-style:normal;font-weight:600;font-display:swap;src:url('/publico/fuentes/poppins-600.woff2') format('woff2')}
@font-face{font-family:'Poppins';font-style:normal;font-weight:700;font-display:swap;src:url('/publico/fuentes/poppins-700.woff2') format('woff2')}
@font-face{font-family:'Poppins';font-style:normal;font-weight:800;font-display:swap;src:url('/publico/fuentes/poppins-800.woff2') format('woff2')}
:root{
  --noche:#10263a; --noche-2:#17334b; --noche-3:#1d3f5c;
  --verde:#0e8a6a; --verde-oscuro:#0b6f55;
  --azul:#1570cd; --rojo:#d92d20; --ambar:#b45309;
  --fondo:#eef2f6; --papel:#fff;
  --tinta:#12232f; --suave:#5a7284; --tenue:#8fa3b1;
  --linea:#dbe4ea; --linea-fuerte:#c2d1db;
  --diente:#fff;
  --sombra:0 1px 2px rgba(16,38,58,.06), 0 10px 26px -18px rgba(16,38,58,.35);
  --r:10px; --lateral:250px;
}
*{box-sizing:border-box}
body{
  margin:0;background:var(--fondo);color:var(--tinta);
  font:14px/1.5 'Poppins',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
}
h1,h2,h3{margin:0;font-weight:600;letter-spacing:-.01em}
a{color:var(--azul)}
button{font:inherit}
:focus-visible{outline:2px solid var(--verde);outline-offset:2px;border-radius:6px}

/* ── barra lateral ──────────────────────────────────────────────────────── */
.lateral{
  position:fixed;inset:0 auto 0 0;width:var(--lateral);background:var(--noche);
  color:#c8d8e4;display:flex;flex-direction:column;overflow-y:auto;z-index:20;
}
.lateral .marca{
  display:flex;align-items:center;gap:11px;padding:20px 18px;color:#fff;
  border-bottom:1px solid rgba(255,255,255,.08);
}
.lateral .marca .logo{
  width:34px;height:34px;border-radius:9px;background:var(--verde);
  display:grid;place-items:center;font-weight:700;font-size:15px;flex:none;
}
/* Como el sistema viejo: arriba la clínica chiquita en versalitas, abajo la
   marca grande y pesada. */
.lateral .marca span{
  display:block;font-size:9.5px;font-weight:600;letter-spacing:.16em;
  text-transform:uppercase;color:#8fb0c6;
}
.lateral .marca b{font-size:19px;line-height:1.15;display:block;font-weight:800;letter-spacing:-.01em}
.lateral nav{padding:12px 10px 24px}
.lateral .seccion{
  font-size:10px;font-weight:600;letter-spacing:.15em;text-transform:uppercase;
  color:#6f90a8;padding:16px 10px 7px;
}
.lateral a{
  display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:8px;
  color:#c8d8e4;text-decoration:none;font-size:14px;margin-bottom:2px;
}
.lateral a:hover{background:var(--noche-2);color:#fff}
.lateral a.on{background:var(--verde);color:#fff;font-weight:500}
.lateral a .ico{width:17px;height:17px;opacity:.85;flex:none}
.lateral a.on .ico{opacity:1}

/* Pantalla incrustada adentro del Consultorio: sin menú ni barra. */
body.incrustado .lateral,body.incrustado .barra{display:none}
body.incrustado .principal{margin-left:0}
body.incrustado .contenido{padding:14px 16px 28px}
/* Dentro del Consultorio (iframe) la ficha no repite su encabezado ni sus
   botones: el Consultorio ya muestra el nombre del paciente arriba. */
body.incrustado .ficha-cabecera{display:none}
body.incrustado .pestanas{position:sticky;top:0;z-index:3}

/* ── encabezado ─────────────────────────────────────────────────────────── */
.principal{margin-left:var(--lateral);min-height:100vh;display:flex;flex-direction:column}
.barra{
  background:var(--papel);border-bottom:1px solid var(--linea);
  padding:12px 24px;display:flex;align-items:center;gap:14px;position:sticky;top:0;z-index:10;
}
.barra .quien{margin-left:auto;display:flex;align-items:center;gap:12px;font-size:13.5px;color:var(--suave)}
.barra .quien b{color:var(--tinta);font-weight:600}
.barra .rol{
  background:#eaf3ee;color:var(--verde-oscuro);border-radius:999px;padding:2px 9px;font-size:11.5px;font-weight:600;
}
.contenido{padding:22px 24px 48px;flex:1}
.cabecera-pagina{display:flex;align-items:flex-end;gap:14px;margin-bottom:18px;flex-wrap:wrap}
.cabecera-pagina h1{font-size:23px}
.cabecera-pagina p{margin:4px 0 0;color:var(--suave);font-size:13.5px}
.cabecera-pagina .acciones{margin-left:auto;display:flex;gap:8px}

/* ── piezas ─────────────────────────────────────────────────────────────── */
.caja{background:var(--papel);border:1px solid var(--linea);border-radius:var(--r);box-shadow:var(--sombra)}
.caja > header{padding:13px 16px;border-bottom:1px solid var(--linea);display:flex;align-items:center;gap:10px}
.caja > header h2{font-size:14.5px}
.caja > header .apunte{margin-left:auto;font-size:12.5px;color:var(--tenue)}
.caja .cont{padding:16px}

.btn{
  border:1px solid var(--linea-fuerte);background:var(--papel);color:var(--tinta);
  padding:9px 15px;border-radius:9px;cursor:pointer;font-weight:500;text-decoration:none;
  display:inline-flex;align-items:center;gap:7px;
}
.btn:hover{background:#f6f9fb}
.btn.verde{background:var(--verde);border-color:var(--verde);color:#fff}
.btn.verde:hover{background:var(--verde-oscuro)}
.btn.chico{padding:6px 11px;font-size:13px}

input[type=text],input[type=date],input[type=time],input[type=email],input[type=password],
input[type=number],select,textarea{
  font:inherit;padding:9px 11px;border:1px solid var(--linea-fuerte);border-radius:9px;
  background:var(--papel);color:inherit;width:100%;
}
textarea{resize:vertical;min-height:90px}
label{display:block;font-size:12.5px;color:var(--suave);font-weight:500;margin-bottom:5px}
.campos{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}
.campo-ancho{grid-column:1/-1}

/* ── tarjetas de números ────────────────────────────────────────────────── */
.tarjetas{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px;margin-bottom:18px}
.tarjeta{background:var(--papel);border:1px solid var(--linea);border-radius:var(--r);
  padding:15px 17px;box-shadow:var(--sombra);border-top:3px solid var(--verde)}
.tarjeta.azul{border-top-color:var(--azul)}
.tarjeta.ambar{border-top-color:var(--ambar)}
.tarjeta.rojo{border-top-color:var(--rojo)}
.tarjeta span{display:block;font-size:11.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--tenue)}
.tarjeta strong{display:block;font-size:30px;font-weight:650;letter-spacing:-.03em;margin-top:5px;
  font-variant-numeric:tabular-nums}
.tarjeta small{display:block;color:var(--suave);font-size:12.5px;margin-top:3px}

/* ── tablas ─────────────────────────────────────────────────────────────── */
table{width:100%;border-collapse:collapse}
th,td{text-align:left;padding:11px 14px;border-bottom:1px solid var(--linea)}
th{font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--tenue);font-weight:600;
  background:#f7fafb}
tbody tr:hover{background:#f7fafb}
tbody tr:last-child td{border-bottom:0}
td.num{font-variant-numeric:tabular-nums}
.tabla-vacia{padding:34px;text-align:center;color:var(--tenue)}

.chip{display:inline-block;padding:3px 10px;border-radius:7px;font-size:12px;font-weight:600;white-space:nowrap}
.chip.pendiente{background:#fbf0d8;color:#8a5b00}
.chip.confirmado{background:#e2eef5;color:#1d4e6b}
.chip.llego{background:#e8eaff;color:#3b45e0}
.chip.atendido{background:#ddf1e6;color:#10603f}
.chip.no_vino{background:#f9e4e2;color:#99302a}
.chip.cancelado{background:#ecf0f2;color:#5d6b75}

.aviso{padding:11px 14px;border-radius:9px;font-size:13.5px;margin-bottom:16px}
.aviso.mal{background:#fef3f2;color:#99302a;border:1px solid #f6cfcb}
.aviso.bien{background:#eaf6f0;color:#10603f;border:1px solid #bfe3d0}

.buscador{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;margin-bottom:16px}
.buscador .crecer{flex:1;min-width:240px}

.paginado{display:flex;gap:6px;align-items:center;padding:14px 16px;color:var(--suave);font-size:13.5px}
.paginado a{padding:6px 11px;border:1px solid var(--linea-fuerte);border-radius:8px;text-decoration:none;color:var(--tinta)}
.paginado .actual{background:var(--noche);color:#fff;border-color:var(--noche)}

/* ── ingreso ────────────────────────────────────────────────────────────── */
.pantalla-ingreso{
  min-height:100vh;display:grid;place-items:center;padding:24px;
  background:linear-gradient(160deg,#10263a 0%,#17334b 55%,#0e8a6a 240%);
}
.pantalla-ingreso form{
  background:var(--papel);border-radius:16px;padding:34px;width:min(400px,100%);
  box-shadow:0 24px 60px -30px rgba(0,0,0,.6);
}
.pantalla-ingreso .marca{display:flex;align-items:center;gap:12px;margin-bottom:22px}
.pantalla-ingreso .marca .logo{
  width:44px;height:44px;border-radius:11px;background:var(--verde);color:#fff;
  display:grid;place-items:center;font-weight:800;font-size:19px;
}
.pantalla-ingreso .marca h1{font-weight:800;font-size:24px;letter-spacing:-.01em}
.pantalla-ingreso h1{font-size:19px}
.pantalla-ingreso .marca span{font-size:12.5px;color:var(--suave)}
.pantalla-ingreso .campo{margin-bottom:14px}
.pantalla-ingreso button{width:100%;justify-content:center;margin-top:6px}
.pantalla-ingreso .pie{margin-top:18px;font-size:12.5px;color:var(--tenue);text-align:center}

/* ── ficha del paciente ─────────────────────────────────────────────────── */
.ficha-datos{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px}
.ficha-datos dt{font-size:11px;letter-spacing:.09em;text-transform:uppercase;color:var(--tenue)}
.ficha-datos dd{margin:3px 0 0;font-size:14.5px;font-weight:500}
.pestanas{display:flex;gap:2px;border-bottom:1px solid var(--linea);padding:0 16px;background:var(--papel);
  border-radius:var(--r) var(--r) 0 0;overflow-x:auto;scrollbar-width:none}
.pestanas::-webkit-scrollbar{display:none}
.pestanas a{
  padding:12px 14px;text-decoration:none;color:var(--suave);font-weight:500;
  border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;flex:none;
}
.pestanas a.on{color:var(--noche);border-bottom-color:var(--verde);font-weight:600}
/* Pestañas arriba de una sección completa (Comunicación, Finanzas). */
.pestanas.sueltas{
  border:1px solid var(--linea);border-radius:var(--r);
  margin-bottom:16px;box-shadow:var(--sombra);overflow-x:auto;
  scrollbar-width:none;
}
.pestanas.sueltas::-webkit-scrollbar{display:none}
.pestanas.sueltas a{white-space:nowrap}

@media (max-width:900px){
  :root{--lateral:0px}
  .lateral{position:static;width:auto;flex-direction:row;overflow-x:auto}
  .lateral .seccion{display:none}
  .lateral nav{display:flex;gap:4px;padding:8px}
  .lateral .marca{border:0}
  .principal{margin-left:0}
}

/* ── formularios largos por bloques (ficha del profesional) ─────────────── */
.bloque{margin-bottom:16px}
.bloque > header h2{color:var(--verde-oscuro)}
.apunte-bloque{margin:0 0 14px;font-size:12.5px;color:var(--suave);line-height:1.5}
.tildes{display:flex;gap:24px;flex-wrap:wrap}
.tilde{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--tinta);font-weight:500;margin:0}
.tilde input{width:auto}
.tabla-horarios th{font-size:11px}
.tabla-horarios td{padding:8px 14px}
.tabla-horarios input{max-width:200px}
.tabla-horarios tbody tr:hover{background:transparent}

/* ── pantalla ancha: la agenda usa todo el ancho disponible ─────────────── */
body.ancho .contenido{padding:18px 16px 30px}
body.ancho.sin-lateral{--lateral:0px}
body.ancho.sin-lateral .lateral{display:none}
.btn-ancho{margin-left:8px}

/* ── calendario de la agenda ────────────────────────────────────────────── */
.calendario{
  display:flex;gap:10px;overflow-x:auto;padding-bottom:8px;align-items:flex-start;
}
.calendario .col-dia{flex:1 1 170px;min-width:132px}
/* Los días sin atención (sobre todo el finde) no se merecen una columna
   entera: quedan angostos y los días de trabajo respiran. */
.calendario .col-dia.sin-atencion{flex:0 0 78px;min-width:78px}
.col-dia.sin-atencion > header{flex-direction:column;align-items:flex-start;gap:0}
.col-dia.sin-atencion > header span{margin-left:0}
.col-dia.sin-atencion .no-labora{padding:16px 6px;font-size:11px;text-align:center}
.calendario.un-dia .col-dia{flex:1 1 auto;max-width:760px}
.col-dia{background:var(--papel);border:1px solid var(--linea);border-radius:var(--r);
  box-shadow:var(--sombra);overflow:hidden}
.col-dia > header{
  padding:10px 12px;border-bottom:1px solid var(--linea);background:#f7fafb;
  display:flex;align-items:baseline;gap:8px;
}
.col-dia > header b{font-size:14px}
.col-dia > header b::first-letter{text-transform:uppercase}
.col-dia > header span{font-size:12px;color:var(--tenue);margin-left:auto;font-variant-numeric:tabular-nums}
.col-dia.hoy{border-color:var(--verde)}
.col-dia.hoy > header{background:#eaf6f0;color:var(--verde-oscuro)}
.no-labora{padding:26px 12px;text-align:center;color:var(--tenue);font-size:12.5px}
.ranuras{padding:8px;display:flex;flex-direction:column;gap:6px;max-height:calc(100vh - 250px);overflow-y:auto}
/* Sin esto, el contenedor con scroll ENCOGE las tarjetas de turno y el
   contenido se desborda por arriba y por abajo. */
.ranuras > *{flex:none}

.ranura{
  display:flex;flex-direction:column;gap:3px;text-align:left;width:100%;
  border:1px solid var(--linea);border-radius:9px;padding:10px 11px;cursor:pointer;
  background:var(--papel);font:inherit;color:inherit;min-height:46px;justify-content:center;
}
.ranura .hora{font-size:12.5px;color:var(--tenue);font-variant-numeric:tabular-nums;font-weight:600}
.ranura.libre{border-style:dashed;color:var(--tenue);flex-direction:row;align-items:center;justify-content:space-between}
.ranura.libre:hover{border-color:var(--verde);background:#f2faf7;color:var(--verde-oscuro)}
.ranura.libre .mas{font-size:16px;line-height:1;opacity:.6}
/* La tarjeta ocupada mide LO MISMO que un casillero libre: así las filas de
   todos los días quedan alineadas. Nombre y color de estado; el resto vive en
   el tooltip y en el diálogo al tocarla. */
.ranura.ocupada{
  border-left:4px solid var(--tenue);min-height:46px;
  flex-direction:row;align-items:center;gap:8px;
}
.ranura.ocupada:hover{border-color:var(--noche);box-shadow:var(--sombra)}
.ranura .quien{
  font-size:13px;font-weight:600;line-height:1.25;min-width:0;flex:1;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.ranura .senal{font-size:12px;font-weight:700;flex:none}
.ranura .senal.cobrado{color:var(--verde-oscuro)}
.ranura .senal.fuera{color:var(--ambar)}
.ranura .senal.cobrar{background:#fff3e0;color:#8a5a12;border:1px solid #f0d5a8;
  border-radius:6px;padding:1px 6px;font-size:10px;font-weight:700}
.ranura.e-pendiente{border-left-color:#c08a16}
.ranura.e-confirmado{border-left-color:#2e7da8}
.ranura.e-llego{border-left-color:#3b45e0}
.ranura.e-atendido{border-left-color:#1e8a5c}
.ranura.e-no_vino{border-left-color:#c0453c}
.ranura.e-cancelado{border-left-color:#8a98a2;opacity:.55}

/* ── diálogos ───────────────────────────────────────────────────────────── */
.dialogo{
  border:0;border-radius:14px;padding:22px;width:min(430px,92vw);
  box-shadow:0 30px 70px -30px rgba(0,0,0,.55);color:var(--tinta);
}
.dialogo::backdrop{background:rgba(16,38,58,.45)}
.dialogo h2{font-size:18px}
.dialogo .cuando{margin:5px 0 16px;color:var(--suave);font-size:13.5px}
.dialogo .cuando::first-letter{text-transform:uppercase}
.dialogo .ayuda{font-size:12px;color:var(--tenue);margin:6px 0 0}
.dialogo label{margin-top:12px}
.rotulo-dlg{
  display:block;font-size:10.5px;letter-spacing:.11em;text-transform:uppercase;
  color:var(--tenue);margin:18px 0 8px;
}
.estados-turno{display:flex;flex-wrap:wrap;gap:6px}
.datos-turno{margin:0;display:grid;gap:8px}
.datos-turno div{display:grid;grid-template-columns:96px 1fr;gap:10px;align-items:baseline}
.datos-turno dt{font-size:10.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--tenue)}
.datos-turno dd{margin:0;font-size:14px}
.cobro-fila{display:grid;grid-template-columns:1fr 1fr auto;gap:7px}
.acciones-dlg{display:flex;gap:8px;margin-top:20px;flex-wrap:wrap}

.segmentado{display:flex;border:1px solid var(--linea-fuerte);border-radius:9px;overflow:hidden}
.segmentado button{border:0;background:var(--papel);color:var(--suave);padding:9px 14px;cursor:pointer;font-weight:500}
.segmentado button + button{border-left:1px solid var(--linea-fuerte)}
.segmentado button.on{background:var(--noche);color:#fff}

/* ── botonera de acciones por fila ──────────────────────────────────────── */
.acciones-fila{display:flex;gap:5px;justify-content:flex-end;align-items:center}
.acciones-fila form{display:flex}
.icono{
  display:grid;place-items:center;width:32px;height:32px;border-radius:8px;
  border:1px solid var(--linea-fuerte);background:var(--papel);color:var(--suave);
  cursor:pointer;text-decoration:none;padding:0;
}
.icono:hover{border-color:var(--noche);color:var(--noche);background:#f6f9fb}
.icono.editar:hover{border-color:var(--azul);color:var(--azul)}
.icono.borrar{color:#fff;background:var(--rojo);border-color:var(--rojo)}
.icono.borrar:hover{background:#b3251b;border-color:#b3251b;color:#fff}
tr.baja td{opacity:.55}

/* ── gráficos del panel ─────────────────────────────────────────────────── */
.dos-columnas{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);gap:16px}
@media (max-width:1000px){.dos-columnas{grid-template-columns:minmax(0,1fr)}}
.grafico{width:100%;height:auto;display:block}
.eje{font:11px system-ui;fill:var(--tenue)}
.dona{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.dona svg{width:150px;height:150px;flex:none}
.dona-num{font:700 26px system-ui;fill:var(--tinta)}
.leyenda{list-style:none;margin:0;padding:0;display:grid;gap:7px;flex:1;min-width:140px}
.leyenda li{display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--suave)}
.leyenda i{width:11px;height:11px;border-radius:3px;flex:none}
.leyenda b{margin-left:auto;color:var(--tinta);font-variant-numeric:tabular-nums}
.barras{display:grid;gap:10px}
.barra{display:grid;grid-template-columns:190px 1fr 40px;gap:12px;align-items:center}
.barra .nombre{font-size:13px;color:var(--suave);text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.barra .pista{background:#eef3f6;border-radius:6px;height:22px;overflow:hidden}
.barra .relleno{background:var(--verde);height:100%;border-radius:6px;min-width:3px}
.barra .valor{font-variant-numeric:tabular-nums;font-weight:600;font-size:13.5px}
@media (max-width:700px){.barra{grid-template-columns:110px 1fr 34px}}

/* datos extra dentro del turno: la recepción los necesita sin abrir nada */
.ranura .detalle-mini{font-size:11.5px;color:var(--tenue);line-height:1.35}
.ranura .detalle-mini b{color:var(--suave);font-weight:600}

/* ── atajos de configuración ────────────────────────────────────────────── */
.atajos{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}
.atajo{
  background:var(--papel);border:1px solid var(--linea);border-radius:var(--r);
  padding:16px 18px;box-shadow:var(--sombra);text-decoration:none;color:inherit;display:block;
  border-left:3px solid var(--verde);
}
.atajo:hover{border-color:var(--linea-fuerte);border-left-color:var(--verde)}
.atajo b{display:block;font-size:15px}
.atajo span{display:block;color:var(--verde-oscuro);font-size:12.5px;font-weight:600;margin-top:2px}
.atajo small{display:block;color:var(--suave);font-size:12.5px;margin-top:7px;line-height:1.4}
.roles{margin:0;padding-left:18px;color:var(--suave);font-size:13.5px;line-height:1.9}
.roles b{color:var(--tinta)}
/* filas de tabla que son formularios */
tbody tr > form{display:contents}

/* El turno ocupado tiene que despegarse del casillero libre de al lado */
.ranura.ocupada{background:#fbfdfe;box-shadow:0 1px 2px rgba(16,38,58,.05)}
.ranura.libre{background:transparent;opacity:.9}
.ranuras{gap:8px}
.ranura.bloqueada{
  cursor:not-allowed;background:repeating-linear-gradient(135deg,#f3f6f8 0 8px,#eaeff2 8px 16px);
  border-style:dashed;color:var(--tenue);
}
.ranura.bloqueada .motivo-bloqueo{font-size:11.5px;font-weight:600}
.atajo.elegido{border-color:var(--noche);border-left-color:var(--noche);background:#f7fafb}
tfoot td{background:#f7fafb;border-top:2px solid var(--linea-fuerte);font-variant-numeric:tabular-nums}

/* arrastrar turnos */
.ranura.ocupada{cursor:grab}
.ranura.ocupada:active{cursor:grabbing}
.ranura.moviendose{opacity:.45}
.ranura.libre.encima{
  border-color:var(--verde);border-style:solid;background:#e7f6f0;
  box-shadow:inset 0 0 0 1px var(--verde);
}

/* ── galería de imágenes de la ficha ────────────────────────────────────── */
.galeria{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px;padding:16px}
.imagen{margin:0;background:var(--papel);border:1px solid var(--linea);border-radius:10px;overflow:hidden}
.imagen a{display:block;background:#0e1a21;aspect-ratio:4/3}
.imagen img{width:100%;height:100%;object-fit:contain;display:block}
.imagen .pdf{
  width:100%;height:100%;display:grid;place-items:center;color:#8fb0c6;
  font-weight:700;letter-spacing:.1em;font-size:15px;
}
.imagen figcaption{padding:10px 12px;display:grid;gap:3px}
.imagen figcaption b{font-size:12.5px;text-transform:capitalize}
.imagen figcaption span{font-size:11.5px;color:var(--tenue);font-variant-numeric:tabular-nums}
.imagen figcaption em{font-size:12px;color:var(--suave);font-style:normal}
.imagen figcaption form{margin-top:6px}
input[type=file]{
  font:inherit;padding:8px;border:1px dashed var(--linea-fuerte);border-radius:9px;
  background:var(--papel);width:100%;
}

/* ── grilla por sillón ──────────────────────────────────────────────────── */
.grilla-sillones{border-collapse:separate;border-spacing:0;table-layout:fixed;min-width:760px}
.grilla-sillones th{position:sticky;top:0;z-index:2;background:#f7fafb}
.grilla-sillones th,.grilla-sillones td{border-bottom:1px solid var(--linea);vertical-align:top}
.grilla-sillones .col-hora{
  width:78px;font-variant-numeric:tabular-nums;color:var(--tenue);font-size:12.5px;
  font-weight:600;background:#fbfdfe;border-right:1px solid var(--linea);white-space:nowrap;
}
.grilla-sillones .celda{padding:6px 8px;height:54px;border-left:1px solid var(--linea)}
.grilla-sillones .celda.libre{background:repeating-linear-gradient(180deg,transparent 0 26px,#f7fafb 26px 27px)}
.grilla-sillones .con-turno{border-left:4px solid var(--tenue);background:#fbfdfe}
.grilla-sillones .sigue{border-left:4px solid var(--tenue);background:#f4f8fa;border-top:0}
.grilla-sillones .con-turno b{font-size:13px;display:block;line-height:1.3}
.grilla-sillones .con-turno a{text-decoration:none;color:inherit}
.grilla-sillones .con-turno a:hover b{text-decoration:underline}
.grilla-sillones .mini{display:block;font-size:11.5px;color:var(--tenue);line-height:1.35}
.grilla-sillones .pie{display:flex;gap:6px;align-items:center;margin-top:4px;flex-wrap:wrap}
.grilla-sillones .pie .chip{font-size:10.5px;padding:1px 7px}
.grilla-sillones .cobrado{font-size:10.5px;color:var(--verde-oscuro);font-weight:600}
.grilla-sillones .e-pendiente{border-left-color:#c9973a}
.grilla-sillones .e-confirmado{border-left-color:#2e7da8}
.grilla-sillones .e-llego{border-left-color:#3b45e0}
.grilla-sillones .e-atendido{border-left-color:#1e8a5c}
.grilla-sillones .e-no_vino{border-left-color:#c0453c}
.grilla-sillones .e-cancelado{border-left-color:#8a98a2;opacity:.55}

/* ── planes de cuotas ───────────────────────────────────────────────────── */
.plan{border-bottom:1px solid var(--linea);padding:14px 16px}
.plan:last-child{border-bottom:0}
.plan-cabeza{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;margin-bottom:12px}
.plan-cabeza b{font-size:14.5px}
.plan-cabeza span{display:block;color:var(--suave);font-size:13px;margin-top:2px}
.plan-cabeza em{display:block;color:var(--tenue);font-size:12.5px;font-style:normal;margin-top:2px}
.cuotas{display:grid;gap:6px}
.cuota{
  display:grid;grid-template-columns:90px 120px 1fr auto;gap:12px;align-items:center;
  padding:9px 12px;border:1px solid var(--linea);border-radius:9px;font-size:13.5px;
}
.cuota .n{font-weight:600}
.cuota .importe{font-variant-numeric:tabular-nums;font-weight:600}
.cuota .vence{color:var(--tenue);font-size:12.5px}
.cuota form{display:flex;gap:6px}
.cuota.pagada{background:#f4faf7;border-color:#cfe8dc;color:var(--verde-oscuro)}
.cuota.pagada .vence{color:var(--verde-oscuro)}
.cuota.vencida{background:#fef6f5;border-color:#f2ccc8}
.cuota.vencida .vence{color:var(--rojo);font-weight:600}
@media (max-width:760px){.cuota{grid-template-columns:1fr 1fr}}

/* ── documento imprimible (consentimientos) ─────────────────────────────── */
.documento{
  background:var(--papel);border:1px solid var(--linea);border-radius:var(--r);
  box-shadow:var(--sombra);max-width:820px;padding:34px 40px 30px;
}
.doc-cabeza{
  display:flex;justify-content:space-between;gap:20px;
  padding-bottom:16px;border-bottom:1px solid var(--linea);margin-bottom:20px;
}
.doc-cabeza b{display:block;font-size:15px}
.doc-cabeza span{display:block;font-size:12.5px;color:var(--tenue);margin-top:2px}
.doc-datos{display:flex;flex-wrap:wrap;gap:26px;margin-bottom:22px}
.doc-datos dt{font-size:11px;letter-spacing:.09em;text-transform:uppercase;color:var(--tenue)}
.doc-datos dd{margin:2px 0 0;font-size:14.5px;font-weight:600}
.doc-texto{white-space:pre-wrap;line-height:1.7;font-size:14.5px}

.doc-firma{margin-top:44px;max-width:330px}
.doc-firma .trazo{display:block;width:100%;height:104px}
.doc-firma .trazo.vacio{border-bottom:1px solid var(--linea-fuerte);height:104px}
.doc-firma .pie-firma{border-top:1px solid var(--tinta);padding-top:6px}
.doc-firma .pie-firma b{font-size:14px;display:block}
.doc-firma .pie-firma span{display:block;font-size:12px;color:var(--tenue)}

.firma-enlace{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.firma-enlace input{
  flex:1;min-width:260px;padding:9px 11px;border:1px solid var(--linea-fuerte);
  border-radius:8px;font:inherit;font-size:13px;color:var(--suave);background:#fafcfd;
}

tr.anulado{color:var(--tenue)}
tr.anulado td{text-decoration:line-through}
tr.anulado td:last-child{text-decoration:none}

@media print{
  body{background:#fff}
  .lateral,.barra,.no-imprimir{display:none !important}
  .principal{margin-left:0}
  .contenido{padding:0}
  .documento{border:0;box-shadow:none;padding:0;max-width:none}
}

/* ── tablero de presupuestos ────────────────────────────────────────────── */
.tablero{display:flex;gap:12px;overflow-x:auto;align-items:flex-start;padding-bottom:8px}
.columna-tablero{
  flex:1 1 200px;min-width:190px;background:#eef2f6;border:1px solid var(--linea);
  border-radius:var(--r);
}
.columna-tablero.destino{outline:2px dashed var(--verde);outline-offset:-4px}
.columna-tablero > header{
  display:flex;justify-content:space-between;align-items:baseline;gap:8px;
  padding:10px 12px;border-bottom:1px solid var(--linea);
}
.columna-tablero > header b{font-size:13px}
.columna-tablero > header span{font-size:11px;color:var(--tenue);white-space:nowrap}
.tarjetas-tablero{padding:8px;display:grid;gap:8px;min-height:60px}
.ficha-presu{
  background:var(--papel);border:1px solid var(--linea);border-radius:9px;
  padding:10px 12px;cursor:grab;box-shadow:var(--sombra);
}
.ficha-presu.fantasma{opacity:.4}
.ficha-presu b{display:block;font-size:13px}
.ficha-presu .monto{display:block;font-size:14px;font-weight:700;margin-top:2px}
.ficha-presu small{display:block;color:var(--tenue);font-size:11px;margin-top:2px}
.ficha-presu a{font-size:12px}
.columna-vacia{text-align:center;color:var(--tenue);margin:14px 0}

/* ── equipo: el panel del dueño ─────────────────────────────────────────── */
.equipo{display:grid;grid-template-columns:270px 1fr;gap:16px;align-items:start}
.equipo-lista{display:grid;gap:8px;position:sticky;top:76px}
.medico{
  display:block;background:var(--papel);border:1px solid var(--linea);border-radius:var(--r);
  padding:12px 14px;text-decoration:none;color:inherit;box-shadow:var(--sombra);
}
.medico:hover{border-color:var(--linea-fuerte)}
.medico.on{border-color:var(--verde);box-shadow:inset 0 0 0 1px var(--verde)}
.medico b{display:block;font-size:14px}
.medico span{display:block;font-size:12px;color:var(--tenue)}
.medico small{display:block;font-size:11.5px;color:var(--suave);margin-top:6px;line-height:1.5}
.barra-mini{height:6px;border-radius:4px;background:#e8eef3;overflow:hidden;margin-bottom:3px}
.barra-mini i{display:block;height:100%;background:var(--verde);border-radius:4px}
.dia-evoluciones{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:8px}
.dia-evoluciones li{font-size:13px;white-space:pre-wrap;line-height:1.55}
.dia-evoluciones li > span{display:block;font-size:11.5px;color:var(--tenue)}
@media (max-width:900px){ .equipo{grid-template-columns:1fr} .equipo-lista{position:static} }

/* ── agenda: el mes a la izquierda, tarjetas y grilla a la derecha ──────── */
/* Los indicadores del día en una fila compacta arriba; abajo, el mes y la
   grilla de la semana juntos. */
.agenda-kpis{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin-bottom:16px}
.agenda-kpis .tarjeta{padding:12px 14px}
.agenda-kpis .tarjeta strong{font-size:23px;margin-top:2px}
@media (max-width:1100px){ .agenda-kpis{grid-template-columns:repeat(3,1fr)} }
@media (max-width:600px){ .agenda-kpis{grid-template-columns:repeat(2,1fr)} }
.agenda-cuerpo{display:flex;gap:16px;align-items:flex-start}
.agenda-cuerpo .mes-mini{position:sticky;top:76px}
.agenda-derecha{flex:1;min-width:0}
@media (max-width:1100px){
  .agenda-cuerpo{flex-direction:column}
  .agenda-cuerpo .mes-mini{position:static}
}
.mes-mini{
  width:292px;flex:none;background:var(--papel);border:1px solid var(--linea);
  border-radius:var(--r);box-shadow:var(--sombra);padding:10px 12px 12px;
}
.mes-mini > header{
  display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;
}
.mes-mini > header b{font-size:12.5px;text-transform:capitalize}
.mes-mini > header a{
  text-decoration:none;color:var(--suave);font-size:16px;line-height:1;
  padding:3px 10px;border-radius:7px;
}
.mes-mini > header a:hover{background:var(--fondo);color:var(--tinta)}
.mes-mini .mes-grilla{gap:3px}
.mes-mini .mes-nombre-dia{font-size:9px;padding-bottom:2px}
.mes-mini .mes-dia{
  min-height:32px;padding:0;border-radius:7px;align-items:center;justify-content:center;
}
.mes-mini .mes-dia b{font-size:12px;font-weight:600}
.mes-mini .mes-dia.elegido{outline:2px solid var(--verde);outline-offset:1px}
.mes-leyenda.chica{gap:10px;font-size:10.5px;margin:10px 0 0}
.mes-leyenda.chica .punto-mes{width:9px;height:9px;border-radius:3px}

/* ── agenda por mes ─────────────────────────────────────────────────────── */
.mes-leyenda{display:flex;gap:18px;flex-wrap:wrap;font-size:12.5px;color:var(--suave);margin-bottom:14px}
.mes-leyenda span{display:flex;align-items:center;gap:6px}
.punto-mes{width:12px;height:12px;border-radius:4px;display:inline-block}
.punto-mes.libre,.mes-dia.libre{background:#e3f4ec}
.punto-mes.con-turnos,.mes-dia.con-turnos{background:#fdf3d7}
.punto-mes.lleno,.mes-dia.lleno{background:#fbdfdc}
.punto-mes.no-trabaja,.mes-dia.no-trabaja{background:#e3edf6}

.mes-grilla{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.mes-nombre-dia{
  font-size:10.5px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;
  color:var(--tenue);text-align:center;padding-bottom:4px;
}
.mes-dia{
  border-radius:10px;padding:9px 10px;min-height:64px;text-decoration:none;
  display:flex;flex-direction:column;justify-content:space-between;
  border:1px solid transparent;
}
.mes-dia b{font-size:14.5px;color:var(--tinta)}
.mes-dia span{font-size:12px;color:var(--suave);font-variant-numeric:tabular-nums}
.mes-dia.libre b{color:#116446}
.mes-dia.libre span{color:#2a7d5c}
.mes-dia.con-turnos b{color:#7a5a08}
.mes-dia.con-turnos span{color:#94700f}
.mes-dia.lleno b{color:#8f2921}
.mes-dia.lleno span{color:#a53b32}
.mes-dia.no-trabaja b{color:#3d6485}
.mes-dia.no-trabaja span{color:#5a7fa0}
.mes-dia:hover{border-color:var(--noche);filter:brightness(.97)}
.mes-dia.es-hoy{outline:2px solid var(--noche);outline-offset:1px}

/* ── elección de formato del lote ───────────────────────────────────────── */
.formatos{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:10px}
.formato{
  display:block;padding:13px 15px;border:1px solid var(--linea);border-radius:var(--r);
  background:#fafcfd;text-decoration:none;color:var(--tinta);
}
.formato:hover{border-color:var(--verde);background:#f3faf7}
.formato.on{border-color:var(--verde);box-shadow:inset 0 0 0 1px var(--verde);background:#f3faf7}
.formato b{display:block;font-size:14px;margin-bottom:3px}
.formato span{display:block;font-size:12.5px;color:var(--suave);line-height:1.45}

/* ── insumos ────────────────────────────────────────────────────────────── */
.alertas{list-style:none;margin:0;padding:0}
.alertas li{
  display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;
  padding:12px 16px;border-bottom:1px solid var(--linea);border-left:4px solid var(--linea);
}
.alertas li:last-child{border-bottom:0}
.alertas b{display:block;font-size:14.5px}
.alertas span{font-size:13px;color:var(--suave)}
.alertas .e-vencido{border-left-color:var(--rojo);background:#fdf5f4}
.alertas .e-sin_stock{border-left-color:var(--rojo)}
.alertas .e-bajo{border-left-color:var(--ambar);background:#fffaf2}
.alertas .e-por_vencer{border-left-color:var(--ambar)}
.lotes-vencidos{display:flex;gap:6px;flex-wrap:wrap}

.lotes{display:flex;gap:5px;flex-wrap:wrap;max-width:320px}
.lote{
  font-size:11.5px;padding:2px 8px;border-radius:20px;background:#eef3f6;color:var(--suave);
  white-space:nowrap;
}
.lote.pronto{background:#fff3e0;color:var(--ambar)}
.lote.vencido{background:#fdeceb;color:var(--rojo);text-decoration:line-through}

.chip.e-vencido,.chip.e-sin_stock{background:#fdeceb;color:#a52f26}
.chip.e-bajo,.chip.e-por_vencer{background:#fff3e0;color:#8a5a12}
.chip.e-ok{background:#eaf6f0;color:#12684a}

/* ── cobros online ──────────────────────────────────────────────────────── */
.cobros{list-style:none;margin:0;padding:0}
.cobro{
  display:flex;align-items:center;gap:14px;flex-wrap:wrap;
  padding:14px 16px;border-bottom:1px solid var(--linea);border-left:4px solid var(--linea);
}
.cobro:last-child{border-bottom:0}
.cobro.e-aprobado{border-left-color:var(--verde);background:#f7fcfa}
.cobro.e-pendiente{border-left-color:#c9973a}
.cobro.e-rechazado,.cobro.e-devuelto,.cobro.e-cancelado{border-left-color:var(--rojo);opacity:.75}
.cobro-datos{flex:1;min-width:220px}
.cobro-datos b{display:block;font-size:14.5px}
.cobro-datos span{display:block;font-size:12.5px;color:var(--suave);margin-top:2px}
.cobro-datos em{display:block;font-size:12px;color:var(--verde-oscuro);font-style:normal;margin-top:3px}
.cobro-acciones{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.cobro-acciones form{display:inline}

.pasos{margin:0;padding-left:20px;line-height:1.65}
.pasos li{margin-bottom:14px;font-size:14px}
.pasos b{font-weight:600}
