/* ================================================================
   PODOSMART · Sistema de captura
   Construido por DV Nova
   Tema claro y clínico: se usa ocho horas al día, en tablet y con
   luz de clínica. Contrastes medidos, no elegidos a ojo.
   ================================================================ */

:root{
  --fondo:#F6F8FA;
  --superficie:#FFFFFF;
  --linea:#E4E9EF;          /* separadores decorativos */
  --borde:#8494A6;          /* borde de campo: 3.10 sobre blanco */
  --tinta:#16232E;          /* 15.01 */
  --tinta-suave:#5A6B7A;    /* 5.17 */
  --azul:#0A7099;           /* 5.20 · acciones y navegación */
  --verde:#15794F;          /* 5.08 · confirmado, al corriente */
  --ambar:#9A5B06;          /* 5.09 · por confirmar, aviso */
  --rojo:#B3241C;           /* 6.19 · solo deuda vencida y alertas */

  --azul-tenue:rgba(10,112,153,.08);
  --verde-tenue:rgba(21,121,79,.09);
  --ambar-tenue:rgba(154,91,6,.10);
  --rojo-tenue:rgba(179,36,28,.08);

  --radio:10px;
  --sans:"Inter","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,Helvetica,Arial,sans-serif;
  --num:"SF Mono",ui-monospace,"Cascadia Mono","Roboto Mono",Menlo,Consolas,monospace;
}

*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;overflow-x:clip}
body{
  background:var(--fondo);color:var(--tinta);
  font-family:var(--sans);font-size:16px;line-height:1.55;
  -webkit-font-smoothing:antialiased;
  display:flex;flex-direction:column;min-height:100vh;
}

/* ------------------------------------------------------ encabezado */
.barra{
  background:var(--superficie);
  border-bottom:1px solid var(--linea);
  box-shadow:0 1px 2px rgba(22,35,46,.04);
  position:sticky;top:0;z-index:40;
}
.barra-in{
  max-width:1200px;margin:0 auto;padding:.9rem 1.5rem;
  display:flex;align-items:center;justify-content:space-between;gap:1.5rem;
}
.marca{display:flex;align-items:center;gap:.9rem;min-width:0}
/* Hueco reservado para el logo real; hasta entonces, la palabra. */
.logo-podosmart{height:38px;width:auto;display:block}
.logo-texto{
  font-size:1.35rem;font-weight:700;letter-spacing:.02em;
  color:var(--azul);white-space:nowrap;
}
.sucursal{
  font-size:1rem;color:var(--tinta-suave);
  padding-left:.9rem;border-left:1px solid var(--linea);white-space:nowrap;
}
.usuario{font-size:.9rem;color:var(--tinta-suave);text-align:right;white-space:nowrap}
.usuario b{color:var(--tinta);font-weight:600;display:block}
.salir{
  background:none;border:none;color:var(--azul);cursor:pointer;
  font-family:inherit;font-size:.85rem;text-decoration:underline;padding:0;
}

main{flex:1;max-width:1200px;width:100%;margin:0 auto;padding:1.75rem 1.5rem 3rem}

/* ---------------------------------------------------------- pie */
.pie{
  border-top:1px solid var(--linea);background:var(--superficie);
  padding:1.25rem 1.5rem;text-align:center;
}
.logo-dvnova{height:16px;opacity:.4;filter:grayscale(1);margin-bottom:.4rem}
.pie-linea{font-size:.8rem;color:var(--tinta-suave)}
.pie-linea i{font-style:normal;color:#9AA7B4;padding:0 .3em}

/* -------------------------------------------------------- buscador */
.buscador{margin-bottom:1.5rem}
.buscador label{
  display:block;font-size:.85rem;font-weight:600;
  color:var(--tinta-suave);margin-bottom:.4rem;
}
input[type=text],input[type=search],input[type=date],input[type=number],
input[type=password],select,textarea{
  width:100%;background:var(--superficie);
  border:1px solid var(--borde);border-radius:var(--radio);
  color:var(--tinta);font-family:inherit;font-size:1rem;
  padding:.7rem .85rem;
}
input:focus,select:focus,textarea:focus{
  outline:3px solid var(--azul-tenue);border-color:var(--azul);
}
.buscador input{font-size:1.15rem;padding:.9rem 1rem}
.pista{font-size:.82rem;color:var(--tinta-suave);margin-top:.4rem}

/* ------------------------------------------------------ resultados */
.resultados{
  background:var(--superficie);border:1px solid var(--linea);
  border-radius:var(--radio);overflow:hidden;margin-bottom:1.5rem;
}
.resultado{
  display:grid;grid-template-columns:1fr auto;gap:1rem;align-items:center;
  padding:.85rem 1.1rem;border-bottom:1px solid var(--linea);
  cursor:pointer;background:none;border-left:none;border-right:none;border-top:none;
  width:100%;text-align:left;font-family:inherit;font-size:1rem;color:inherit;
}
.resultado:last-child{border-bottom:none}
.resultado:hover,.resultado:focus{background:var(--azul-tenue);outline:none}
.resultado-nombre{font-weight:600}
.resultado-detalle{font-size:.85rem;color:var(--tinta-suave);margin-top:.15rem}
.resultado-saldo{font-family:var(--num);font-weight:600;text-align:right;white-space:nowrap}
.vacio{padding:1.5rem;text-align:center;color:var(--tinta-suave)}

/* ----------------------------------------------------------- ficha */
.ficha{
  background:var(--superficie);border:1px solid var(--linea);
  border-radius:var(--radio);box-shadow:0 1px 3px rgba(22,35,46,.05);
  overflow:hidden;
}
.ficha-cab{
  padding:1.3rem 1.5rem;border-bottom:1px solid var(--linea);
  display:flex;justify-content:space-between;align-items:flex-start;
  gap:1.5rem;flex-wrap:wrap;
}
.ficha-nombre{font-size:1.45rem;font-weight:700;letter-spacing:-.01em}
.ficha-sub{font-size:.9rem;color:var(--tinta-suave);margin-top:.25rem}

.cifras{
  display:grid;gap:1px;background:var(--linea);
  grid-template-columns:repeat(auto-fit,minmax(150px,1fr));
  border-bottom:1px solid var(--linea);
}
.cifra{background:var(--superficie);padding:1.1rem 1.25rem}
.cifra-et{
  font-size:.76rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;
  color:var(--tinta-suave);margin-bottom:.4rem;
}
.cifra-val{font-family:var(--num);font-size:1.5rem;font-weight:700;line-height:1.1}
.cifra-val.debe{color:var(--rojo)}
.cifra-val.ok{color:var(--verde)}
.cifra-pie{font-size:.8rem;color:var(--tinta-suave);margin-top:.25rem}

/* ------------------------------------------------------- etiquetas */
.etiqueta{
  display:inline-flex;align-items:center;gap:.35rem;
  font-size:.78rem;font-weight:600;padding:.22rem .6rem;border-radius:99px;
}
.etiqueta.verde{background:var(--verde-tenue);color:var(--verde)}
.etiqueta.ambar{background:var(--ambar-tenue);color:var(--ambar)}
.etiqueta.roja{background:var(--rojo-tenue);color:var(--rojo)}
.etiqueta.azul{background:var(--azul-tenue);color:var(--azul)}
.etiqueta::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}

/* ---------------------------------------------------------- avisos */
.aviso{
  padding:.85rem 1.25rem;font-size:.95rem;
  border-left:4px solid var(--verde);background:var(--verde-tenue);color:var(--tinta);
}
.aviso.atencion{border-left-color:var(--ambar);background:var(--ambar-tenue)}

.confirmar-sesiones{
  padding:1.25rem 1.5rem;background:var(--ambar-tenue);
  border-bottom:1px solid var(--linea);border-left:4px solid var(--ambar);
}
.confirmar-sesiones h3{font-size:1.05rem;margin-bottom:.3rem;color:var(--tinta)}
.confirmar-sesiones p{font-size:.9rem;color:var(--tinta-suave);margin-bottom:.9rem;max-width:70ch}
.confirmar-fila{display:flex;gap:.75rem;align-items:flex-end;flex-wrap:wrap}
.confirmar-fila .campo{max-width:150px}

/* ------------------------------------------------------ formulario */
.seccion{padding:1.4rem 1.5rem;border-bottom:1px solid var(--linea)}
.seccion:last-child{border-bottom:none}
.seccion h3{
  font-size:.85rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;
  color:var(--tinta-suave);margin-bottom:1rem;
}
.rejilla{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}
.campo label{
  display:block;font-size:.85rem;font-weight:600;
  color:var(--tinta-suave);margin-bottom:.35rem;
}
.campo-ancho{grid-column:1/-1}
.opcional{font-weight:400;color:var(--tinta-suave)}

.acciones{display:flex;gap:.75rem;align-items:center;margin-top:1.25rem;flex-wrap:wrap}
.btn{
  background:var(--azul);color:#fff;border:1px solid var(--azul);
  border-radius:var(--radio);cursor:pointer;
  font-family:inherit;font-size:1rem;font-weight:600;
  padding:.75rem 1.4rem;transition:filter .15s;
}
.btn:hover{filter:brightness(1.1)}
.btn:focus{outline:3px solid var(--azul-tenue);outline-offset:2px}
.btn.verde{background:var(--verde);border-color:var(--verde)}
.btn.secundario{background:none;color:var(--azul)}
.btn.secundario:hover{background:var(--azul-tenue);filter:none}
.atajo{font-size:.82rem;color:var(--tinta-suave)}
kbd{
  font-family:var(--num);font-size:.78rem;background:var(--fondo);
  border:1px solid var(--borde);border-bottom-width:2px;border-radius:5px;
  padding:.1rem .35rem;color:var(--tinta);
}

/* ---------------------------------------------------------- tablas */
.tabla-caja{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:.92rem}
th{
  text-align:left;font-size:.76rem;font-weight:700;letter-spacing:.05em;
  text-transform:uppercase;color:var(--tinta-suave);
  padding:.6rem .85rem;border-bottom:1px solid var(--linea);white-space:nowrap;
}
td{padding:.65rem .85rem;border-bottom:1px solid var(--linea);vertical-align:top}
tr:last-child td{border-bottom:none}
.num{font-family:var(--num);text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.tenue{color:var(--tinta-suave);font-size:.88rem}

/* ------------------------------------------------------- dirección */
.tarjetas{
  display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));
  margin-bottom:1.75rem;
}
.tarjeta{
  background:var(--superficie);border:1px solid var(--linea);
  border-radius:var(--radio);padding:1.2rem 1.3rem;
}
.tarjeta-et{
  font-size:.78rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;
  color:var(--tinta-suave);margin-bottom:.5rem;
}
.tarjeta-val{font-family:var(--num);font-size:1.75rem;font-weight:700;line-height:1}
.tarjeta-pie{font-size:.82rem;color:var(--tinta-suave);margin-top:.3rem}
.panel{
  background:var(--superficie);border:1px solid var(--linea);
  border-radius:var(--radio);margin-bottom:1.5rem;overflow:hidden;
}
.panel-cab{padding:1.1rem 1.4rem;border-bottom:1px solid var(--linea)}
.panel-cab h2{font-size:1.05rem;font-weight:700}
.panel-cab p{font-size:.88rem;color:var(--tinta-suave);margin-top:.25rem;max-width:80ch}
.panel-cuerpo{padding:0 .5rem}

/* ----------------------------------------------------------- login */
.login-caja{
  max-width:400px;margin:6vh auto 0;background:var(--superficie);
  border:1px solid var(--linea);border-radius:14px;padding:2.5rem 2rem;
  box-shadow:0 2px 12px rgba(22,35,46,.06);text-align:center;
}
.login-caja .logo-texto{font-size:1.9rem;margin-bottom:.4rem}
.login-caja .lema{font-size:.9rem;color:var(--tinta-suave);margin-bottom:2rem}
.login-caja form{text-align:left}
.login-caja .campo{margin-bottom:1rem}
.login-caja .btn{width:100%;margin-top:.5rem}
.login-firma{
  margin-top:2rem;padding-top:1.25rem;border-top:1px solid var(--linea);
  font-size:.82rem;color:var(--tinta-suave);
}
.error{
  background:var(--rojo-tenue);color:var(--rojo);border-left:4px solid var(--rojo);
  padding:.7rem .9rem;border-radius:6px;font-size:.9rem;margin-bottom:1rem;text-align:left;
}

/* ---------------------------------------------------------- móvil */
@media (max-width:760px){
  body{font-size:15px}
  .barra-in{padding:.75rem 1rem;flex-wrap:wrap;gap:.6rem}
  .sucursal{padding-left:0;border-left:none}
  main{padding:1.25rem 1rem 2.5rem}
  .ficha-cab{padding:1.1rem}
  .seccion{padding:1.1rem}
  .cifras{grid-template-columns:1fr 1fr}
  .rejilla{grid-template-columns:1fr}
}

@media (prefers-reduced-motion:reduce){
  *{transition:none !important;animation:none !important}
}

/* ------------------------------------------------ dirección cubriendo */
/* Se ve en todas las pantallas mientras dure: es la única situación en que
   dirección escribe, y no puede pasar desapercibida. */
.cubriendo{
  display:flex;gap:1rem;align-items:center;justify-content:space-between;
  flex-wrap:wrap;max-width:1180px;margin:0 auto;padding:.7rem 1.25rem;
  background:var(--ambar-tenue);border-bottom:3px solid var(--ambar);
  color:var(--ambar);font-size:.92rem;
}
.cubriendo b{font-weight:700}

/* Dato calculado que se enseña pero no se teclea. Antes era un input
   deshabilitado y seguía leyéndose como un campo que se podía llenar. */
.valor-fijo{
  display:flex;align-items:center;gap:.5rem;
  padding:.6rem .75rem;border:1px dashed var(--linea);border-radius:8px;
  background:var(--fondo-suave,rgba(0,0,0,.02));
  font-size:1.05rem;font-weight:600;font-variant-numeric:tabular-nums;
}

/* ------------------------------------------------------------- tickets */
/* El papel, enmarcado dentro de la aplicación. El ancho es el real: 58 mm,
   para que lo que se ve en pantalla sea lo que sale de la térmica. */
.papel-marco{
  width:58mm;margin:0 auto;padding:0;background:#fff;
  border:1px solid var(--linea);border-radius:4px;
  box-shadow:0 2px 12px rgba(0,0,0,.12);overflow:hidden;
}
.papel-marco .tk{color:#000}
tr.recien td{background:var(--verde-tenue,rgba(22,120,60,.10))}

/* --------------------------------------------------------- comisiones */
/* El desglose va plegado: el número se lee de un vistazo y el detalle está
   ahí para auditarlo cuando alguien pregunte de dónde salió. */
.detalle-comision{margin-top:1rem;border-top:1px solid var(--linea);padding-top:.75rem}
.detalle-comision>summary{
  cursor:pointer;font-size:.92rem;color:var(--azul);padding:.35rem 0;
}
.detalle-comision>summary:hover{text-decoration:underline}
.detalle-comision[open]>summary{font-weight:600;margin-bottom:.6rem}

/* -------------------------------------------------------- inventario */
.seccion-interna{
  border:1px solid var(--linea);border-radius:8px;padding:.9rem;
}
.seccion-interna h4{margin:0 0 .7rem;font-size:.95rem}
.fila-producto{display:flex;gap:.5rem;align-items:center;margin-bottom:.5rem}
.fila-producto select{flex:1;min-width:0}
.fila-producto input[type=number]{width:4.5rem}
.fila-consumo{display:flex;gap:.4rem;align-items:center}
.fila-consumo input[type=number]{width:4.5rem}
.obligatorio{color:var(--rojo)}

/* ------------------------------------------------------ línea de tiempo */
/* El recorrido del paciente. Va de lo más reciente hacia atrás: lo que la
   administradora necesita saber primero es lo último que pasó. */
.linea-tiempo{list-style:none;margin:0;padding:0}
.linea-tiempo .ev{
  display:flex;gap:.9rem;align-items:baseline;
  padding:.5rem .2rem;border-bottom:1px solid var(--linea);
}
.linea-tiempo .ev:last-child{border-bottom:0}
.ev-fecha{flex:0 0 6.5rem;font-size:.85rem;color:var(--tinta-suave);
          font-variant-numeric:tabular-nums}
.ev-cuerpo{flex:1;min-width:0}
.ev-detalle{display:block;font-size:.85rem;color:var(--tinta-suave)}
.ev-monto{flex:0 0 auto;text-align:right;font-variant-numeric:tabular-nums}
.ev-monto .tenue{display:block;font-size:.78rem}
/* Un filete de color a la izquierda dice de un vistazo de qué es cada renglón. */
.ev-visita{border-left:3px solid var(--verde);padding-left:.7rem}
.ev-abono{border-left:3px solid var(--azul);padding-left:.7rem}
.ev-producto{border-left:3px solid var(--ambar);padding-left:.7rem}
.ev-paquete{border-left:3px solid var(--tinta-suave);padding-left:.7rem}
.ev-alta{border-left:3px solid var(--linea);padding-left:.7rem}

/* ------------------------------------------------------------- regalos */
.marca-regalo{
  display:flex;align-items:center;gap:.3rem;white-space:nowrap;
  font-size:.86rem;color:var(--tinta-suave);
}
.marca-regalo input{margin:0}
.lista-regalos{margin:.2rem 0 .6rem;padding-left:1.1rem;font-size:.9rem}
.lista-regalos li{margin-bottom:.25rem}
