:root{
  --tinta:#141B33; --azul:#26367A; --azul-suave:#E9EDF8;
  --verde:#3E9B4F; --verde-suave:#E7F3E8;
  --ambar:#B9761A; --ambar-suave:#FBF1E2;
  --rojo:#A83232; --rojo-suave:#FBE9E9;
  --papel:#FBFBFC; --linea:#D7DCE7; --linea-tenue:#EAEDF3; --gris:#6B7488;
}
*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;background:var(--papel);color:var(--tinta);
  font-family:'Public Sans',system-ui,-apple-system,'Segoe UI',sans-serif;
  font-size:14px;line-height:1.45;font-variant-numeric:tabular-nums;
}
a{color:var(--azul)}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:2px solid var(--azul);outline-offset:2px}
.mono{font-family:'Roboto Mono',ui-monospace,monospace}

/* barra */
.barra{display:flex;align-items:center;gap:18px;height:52px;padding:0 18px;background:var(--azul);color:#fff}
.marca{display:flex;align-items:baseline;gap:9px;font-weight:700;text-decoration:none;color:#fff}
.marca .ojo{width:22px;height:13px;border:2px solid #fff;border-radius:11px/7px;display:inline-grid;place-items:center;position:relative;top:2px}
.marca .ojo::after{content:"";width:6px;height:6px;border-radius:50%;background:var(--verde)}
.marca small{font-weight:400;opacity:.72;font-size:12px}
.barra nav{display:flex;gap:2px}
.barra nav a{padding:7px 13px;border-radius:3px;color:#fff;opacity:.74;text-decoration:none;font-weight:500}
.barra nav a:hover{opacity:1;background:rgba(255,255,255,.12)}
.barra nav a.on{opacity:1;background:rgba(255,255,255,.18)}
.barra .yo{margin-left:auto;display:flex;align-items:center;gap:10px;font-size:13px}
.barra .yo a{color:#fff;opacity:.8;text-decoration:none;font-size:12.5px}
.barra .yo a:hover{opacity:1;text-decoration:underline}
.avatar{width:28px;height:28px;border-radius:50%;background:#fff;color:var(--azul);display:grid;place-items:center;font-weight:700;font-size:12px}

/* contenedores */
.envoltura{max-width:1120px;margin:0 auto;padding:24px 22px 64px}
.lienzo{display:grid;grid-template-columns:296px 1fr;min-height:calc(100vh - 52px)}
.rail{border-right:1px solid var(--linea);background:#fff;display:flex;flex-direction:column;min-height:0}
.hoja{overflow-y:auto;min-height:0}

h1{font-size:25px;font-weight:700;letter-spacing:-.015em;margin:0}
h2{font-size:18px;font-weight:700;margin:0 0 4px}
h3{font-size:13.5px;font-weight:700;margin:0 0 8px}
.sub{color:var(--gris);font-size:13px;margin:2px 0 0}

/* botones */
.btn{border:1px solid var(--azul);background:var(--azul);color:#fff;padding:8px 14px;border-radius:3px;font-weight:600;font-size:13px;text-decoration:none;display:inline-block}
.btn:hover{filter:brightness(1.09)}
.btn.fantasma{background:#fff;color:var(--azul)}
.btn.verde{background:var(--verde);border-color:var(--verde);color:#fff}
.btn.peligro{background:#fff;border-color:var(--rojo);color:var(--rojo)}
.btn.chico{padding:5px 10px;font-size:12.5px}
.btn[disabled]{opacity:.5;cursor:not-allowed}

/* formularios */
.campo{margin:0 0 15px}
.campo label{display:block;font-size:12.5px;font-weight:600;color:var(--gris);margin-bottom:4px}
.campo input,.campo select,.campo textarea{width:100%;border:1px solid var(--linea);border-radius:3px;padding:9px 11px;background:#fff}
.campo input:focus,.campo select:focus,.campo textarea:focus{border-color:var(--azul)}
.campo textarea{min-height:74px;resize:vertical}
.campo .pista{font-size:12px;color:var(--gris);margin-top:4px}
.par{display:grid;grid-template-columns:1fr 1fr;gap:14px}

/* avisos */
.aviso{padding:10px 14px;border-radius:3px;font-size:13px;margin:0 0 16px;border-left:3px solid}
.aviso.ok{background:var(--verde-suave);border-color:var(--verde);color:#22662E}
.aviso.error{background:var(--rojo-suave);border-color:var(--rojo);color:#7E2222}
.aviso.info{background:var(--azul-suave);border-color:var(--azul);color:#1D2A5E}
.aviso.alerta{background:var(--ambar-suave);border-color:var(--ambar);color:#7A4F11}
.aviso ul{margin:6px 0 0;padding-left:18px}

/* tablas */
table.datos{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--linea);border-radius:3px}
table.datos th{font-size:11.5px;font-weight:600;color:var(--gris);background:#FAFBFD;text-align:left;padding:8px 11px;border-bottom:1px solid var(--linea)}
table.datos td{padding:9px 11px;border-bottom:1px solid var(--linea-tenue)}
table.datos tr:last-child td{border-bottom:0}
table.datos tr:hover td{background:#FAFBFD}
.pill{display:inline-block;font-size:11px;font-weight:600;padding:2px 8px;border-radius:2px;background:#F1F3F7;color:var(--gris)}
.pill.verde{background:var(--verde-suave);color:var(--verde)}
.pill.azul{background:var(--azul-suave);color:var(--azul)}
.pill.ambar{background:var(--ambar-suave);color:var(--ambar)}
.pill.rojo{background:var(--rojo-suave);color:var(--rojo)}

/* login */
.puerta{min-height:100vh;display:grid;place-items:center;padding:24px;
  background:linear-gradient(160deg,#1C2856 0%,#26367A 58%,#2F4496 100%)}
.puerta-caja{width:min(400px,100%);background:#fff;border-radius:5px;padding:32px 30px 26px;box-shadow:0 20px 56px rgba(10,16,40,.34)}
.puerta-marca{display:flex;align-items:baseline;gap:10px;color:var(--azul);font-weight:700;font-size:21px;margin-bottom:2px}
.puerta-marca .ojo{width:26px;height:15px;border:2px solid var(--azul);border-radius:13px/8px;display:inline-grid;place-items:center;position:relative;top:2px}
.puerta-marca .ojo::after{content:"";width:7px;height:7px;border-radius:50%;background:var(--verde)}
.puerta p.sub{margin:0 0 22px}
.puerta .btn{width:100%;padding:11px;font-size:14px}
.puerta-pie{margin-top:18px;padding-top:14px;border-top:1px solid var(--linea-tenue);font-size:12px;color:var(--gris);text-align:center}

/* agenda */
.rail-cab{padding:13px 16px 10px;border-bottom:1px solid var(--linea-tenue)}
.agenda{list-style:none;margin:0;padding:0;overflow-y:auto;flex:1}
.agenda li{border-bottom:1px solid var(--linea-tenue)}
.agenda a{display:grid;grid-template-columns:48px 1fr;gap:10px;padding:9px 16px 9px 12px;border-left:3px solid transparent;text-decoration:none;color:inherit}
.agenda a:hover{background:var(--azul-suave)}
.agenda a.on{background:var(--azul-suave);border-left-color:var(--azul)}
.hora{font-family:'Roboto Mono',monospace;font-size:12.5px;color:var(--gris)}
.quien strong{display:block;font-weight:600;font-size:13.5px;line-height:1.3}
.quien em{display:block;font-style:normal;font-size:12px;color:var(--gris);margin-top:1px}
.rail-pie{padding:10px 16px;border-top:1px solid var(--linea);display:flex;gap:8px}

/* ficha del paciente */
.ficha{padding:20px 28px 0;max-width:1080px}
.ficha-id{display:flex;align-items:flex-start;gap:16px;flex-wrap:wrap}
.ficha-id dl{margin:6px 0 0;display:flex;gap:22px;flex-wrap:wrap;font-size:13px}
.ficha-id dl div{display:flex;gap:6px}
.ficha-id dt{color:#9AA1B2}
.ficha-id dd{margin:0;font-weight:500}
.acciones{margin-left:auto;display:flex;gap:8px}
.banderas{display:flex;gap:6px;flex-wrap:wrap;margin:14px 0 0}

/* refracción */
.rx{margin:20px 0 0;border:1px solid var(--linea);background:#fff;border-radius:3px;overflow:hidden}
.rx-cab{display:flex;align-items:center;justify-content:space-between;padding:9px 14px;border-bottom:1px solid var(--linea-tenue)}
.rx-cab span{font-size:12px;color:var(--gris)}
.rx table{width:100%;border-collapse:collapse;font-family:'Roboto Mono',monospace;font-size:13px}
.rx th,.rx td{padding:7px 10px;text-align:center;border-bottom:1px solid var(--linea-tenue)}
.rx thead th{font-family:'Public Sans',sans-serif;font-size:11.5px;font-weight:600;color:var(--gris);background:#FAFBFD;border-bottom:1px solid var(--linea)}
.rx tbody tr:last-child td{border-bottom:0}
.rx td.ojo,.rx th.ojo{font-family:'Public Sans',sans-serif;font-weight:700;text-align:left;width:62px;color:var(--azul);border-right:1px solid var(--linea)}
.rx tbody tr:nth-child(2) td.ojo{color:var(--verde)}
.rx .av{background:#FAFBFD;font-weight:500}
.rx input{width:100%;min-width:52px;border:1px solid transparent;border-radius:2px;padding:5px 6px;font-family:'Roboto Mono',monospace;font-size:12.5px;text-align:center;background:transparent}
.rx input:hover{border-color:var(--linea);background:#fff}
.rx input:focus{border-color:var(--azul);background:#fff}

/* línea de tiempo */
.tiempo{padding:26px 28px 60px;max-width:1080px}
.eje{position:relative;margin-top:16px;padding-left:26px}
.eje::before{content:"";position:absolute;left:5px;top:6px;bottom:6px;width:1px;background:var(--linea)}
.visita{position:relative;padding:0 0 22px}
.visita::before{content:"";position:absolute;left:-25px;top:6px;width:11px;height:11px;border-radius:50%;background:#fff;border:2px solid var(--azul)}
.visita.migrada::before{border-color:#B9C0D2}
.visita h4{margin:0;font-size:13.5px;font-weight:600;display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.visita h4 time{font-family:'Roboto Mono',monospace;font-size:12.5px;color:var(--azul);font-weight:500}
.visita.migrada h4 time{color:var(--gris)}
.visita h4 .medico{font-weight:400;font-size:12.5px;color:var(--gris)}
.visita .cuerpo{margin:7px 0 0;border-left:2px solid var(--linea-tenue);padding-left:13px;font-size:13.5px;white-space:pre-line}
.visita .cuerpo p{margin:0 0 6px}
.visita .cuerpo p:last-child{margin-bottom:0}

/* barra de fuerza de clave */
.fuerza{display:flex;gap:4px;margin-top:7px}
.fuerza i{flex:1;height:4px;border-radius:2px;background:var(--linea)}
.fuerza i.on1{background:var(--rojo)} .fuerza i.on2{background:var(--ambar)}
.fuerza i.on3{background:#8AA83B} .fuerza i.on4{background:var(--verde)}
.reglas{margin:8px 0 0;padding:0;list-style:none;font-size:12.5px;color:var(--gris)}
.reglas li::before{content:"○ ";color:var(--gris)}
.reglas li.cumple{color:var(--verde)} .reglas li.cumple::before{content:"● ";color:var(--verde)}

.vacio{padding:34px 20px;text-align:center;color:var(--gris);font-size:13.5px}
.clave-temporal{font-family:'Roboto Mono',monospace;font-size:19px;font-weight:500;letter-spacing:.04em;
  background:#fff;border:1px dashed var(--azul);border-radius:3px;padding:12px 16px;display:inline-block;margin:8px 0}

@media (max-width:900px){
  .lienzo{grid-template-columns:1fr}
  .rail{border-right:0;border-bottom:1px solid var(--linea)}
  .par{grid-template-columns:1fr}
  .barra nav a{padding:7px 9px;font-size:13px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
