/* ui.css — sistema de diseño de la plataforma de Calidad (base: Monitor de Urgencia).
   Se carga DESPUÉS del <style> de cada página: lo común vive aquí, lo propio en la página.
   Contraste AA, foco visible, objetivos ≥ 44 px. */

:root{
  /* superficie y texto */
  --bg:#F3F6FA; --surface:#FFFFFF; --surface-2:#F8FAFC; --border:#DDE4EE; --border-strong:#C7D2E0;
  --text:#0F172A; --text-2:#334155; --muted:#475569; --dim:#64748B;
  /* marca y estados */
  --primary:#0F766E; --primary-hover:#115E59; --primary-soft:#ECFDF8;
  --ok:#15803D; --ok-soft:#ECFDF3; --warn:#B45309; --warn-soft:#FFF7E6; --danger:#B91C1C; --danger-soft:#FEF2F2;
  --radius:12px; --radius-lg:16px; --shadow:0 1px 2px rgba(15,23,42,.05),0 4px 16px rgba(15,23,42,.06);
  --focus:0 0 0 3px rgba(15,118,110,.35);
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scrollbar-gutter:stable;overflow-y:scroll}  /* el ancho no cambia si una página tiene barra de desplazamiento y otra no */
body,h1,h2,h3,p{margin:0}
body{font-family:'Inter',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;background:var(--bg);color:var(--text);
  font-size:15px;line-height:1.45;-webkit-font-smoothing:antialiased;min-height:100vh}
a{color:var(--primary)}
:focus-visible{outline:none;box-shadow:var(--focus);border-radius:8px}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* ── Cabecera compacta (misma estructura HTML en todas las páginas) ── */
header{display:grid;grid-template-columns:auto 1fr auto auto;grid-template-areas:"logo title extra user" "logo sub extra user" "nav nav nav nav";
  grid-template-rows:22px 22px auto;  /* alto fijo: la cabecera mide lo mismo en todas las pantallas */
  column-gap:12px;row-gap:0;align-items:center;padding:12px 24px 0;background:var(--surface);border-bottom:1px solid var(--border);
  position:sticky;top:0;z-index:40}
header > div:not(.logo):not(.spacer):not(#userbox):not(.controls):not(.printer){display:contents}
header > .controls, header > .printer{grid-area:extra;align-self:center;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
header .spacer{display:none}
header .logo{grid-area:logo;width:40px;height:40px;border-radius:10px;background:var(--primary);color:#fff;display:grid;place-items:center;
  font-weight:800;font-size:15px;letter-spacing:.3px;border:0}
header h1{grid-area:title;font-size:17px;font-weight:700;line-height:1.2;margin:0;align-self:end}
header .sub{grid-area:sub;font-size:12.5px;color:var(--dim);align-self:start}
#userbox{grid-area:user;display:flex;align-items:center;gap:10px;font-size:13.5px}
#userbox .uname{font-weight:600;color:var(--text)}
#userbox .urol{color:var(--text-2);background:var(--surface-2);border:1px solid var(--border);padding:3px 10px;border-radius:999px;font-weight:600;font-size:12px}
.logoutbtn{margin:0 !important;width:auto !important;min-height:36px;padding:0 14px;font:inherit;font-size:13.5px;font-weight:600;border-radius:10px;background:var(--surface);
  border:1px solid var(--border-strong);color:var(--text);cursor:pointer}
.logoutbtn:hover{background:var(--surface-2)}
#nav{grid-area:nav;display:flex !important;flex-wrap:nowrap !important;gap:2px;overflow-x:auto;scrollbar-width:none;margin:10px -8px 0;padding:0 8px}
#nav::-webkit-scrollbar{display:none}
#nav a{flex:none;display:flex;align-items:center;min-height:44px;padding:0 12px;color:var(--muted);font-size:14px;font-weight:600;
  text-decoration:none;border-bottom:2px solid transparent;margin:0 !important;white-space:nowrap}
#nav a:hover{color:var(--text)}
#nav a.on{color:var(--primary);border-bottom-color:var(--primary)}

/* ── Barra de secciones de un grupo (Configuración) ── */
.subnav{display:inline-flex;gap:4px;padding:4px;margin:0 0 16px;background:#E8EDF4;border-radius:12px;max-width:100%;overflow-x:auto;scrollbar-width:none}
.subnav::-webkit-scrollbar{display:none}
.subnav a{flex:none;display:flex;align-items:center;min-height:40px;padding:0 16px;border-radius:9px;color:var(--muted);font-size:14px;font-weight:600;text-decoration:none;white-space:nowrap}
.subnav a:hover{color:var(--text)}
.subnav a.on{background:var(--surface);color:var(--text);box-shadow:0 1px 2px rgba(15,23,42,.08),0 1px 6px rgba(15,23,42,.06)}

/* ── Contenido ── */
/* Mismo ancho y mismo borde izquierdo en TODAS las pantallas: al navegar nada salta.
   Las tarjetas angostas (.estrecho) se alinean a la izquierda, no se centran. */
main{max-width:1240px;margin:20px auto;padding:0 24px 48px}
.estrecho{max-width:680px}
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow)}
h2.sec{font-size:12.5px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--dim);margin:0 0 12px}
.empty{color:var(--dim);text-align:center;padding:32px 16px;font-weight:500}
label{color:var(--text-2)}

/* ── Botones (objetivo táctil ≥ 44 px) ── */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;padding:0 16px;font:inherit;font-size:14px;
  font-weight:600;border-radius:10px;border:1px solid transparent;cursor:pointer;transition:background .15s,border-color .15s;white-space:nowrap}
.btn svg{width:18px;height:18px;flex:none}
.btn-primary{background:var(--primary);color:#fff} .btn-primary:hover{background:var(--primary-hover)}
.btn-ok{background:var(--ok);color:#fff} .btn-ok:hover{filter:brightness(.92)}
.btn-dark{background:#1E293B;color:#fff} .btn-dark:hover{background:#0F172A}
.btn-warn{background:var(--surface);color:var(--warn);border-color:#F3D19C} .btn-warn:hover{background:var(--warn-soft)}
.btn-ghost{background:var(--surface);color:var(--text-2);border-color:var(--border-strong)} .btn-ghost:hover{background:var(--surface-2)}
.btn-danger{background:var(--surface);color:var(--danger);border-color:#F5C2C2} .btn-danger:hover{background:var(--danger-soft)}
.btn[disabled]{opacity:.55;cursor:not-allowed}

/* ── Botones chicos ── */
.mini{white-space:nowrap}
.logo{background:var(--primary);color:#fff;border:0}

/* ── Aviso flotante ── */
#toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%) translateY(16px);background:#0F172A;color:#fff;padding:12px 18px;
  border-radius:12px;font-weight:600;font-size:14px;opacity:0;pointer-events:none;transition:.2s;z-index:90;max-width:92vw;text-align:center}
#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* ── Celular ── */
@media (max-width:720px){
  header{padding:10px 16px 0;grid-template-columns:auto 1fr auto;grid-template-areas:"logo title user" "logo sub user" "extra extra extra" "nav nav nav";grid-template-rows:22px 22px auto auto}
  header > .controls, header > .printer{margin-top:10px}
  header h1{font-size:16px}
  #userbox .uname,#userbox .urol{display:none}
  main{padding:0 12px 40px;margin-top:14px}
}

/* ── Formularios ── */
.field{display:block;font-size:13px;font-weight:600;color:var(--text-2);margin:14px 0 6px}
.input,select.input,textarea.input{width:100%;min-height:44px;padding:10px 12px;font:inherit;font-size:15px;color:var(--text);background:var(--surface);
  border:1px solid var(--border-strong);border-radius:10px}
.input:focus{outline:none;border-color:var(--primary);box-shadow:var(--focus)}
textarea.input{min-height:80px;resize:vertical}
.hint{font-size:12.5px;color:var(--dim);margin-top:4px}

/* ── Tablas ── */
.tablewrap{overflow-x:auto;max-width:100%}
.tabla{width:100%;border-collapse:separate;border-spacing:0;font-size:14px}
.tabla th{text-align:left;font-size:11.5px;font-weight:700;color:var(--dim);text-transform:uppercase;letter-spacing:.5px;padding:10px 12px;border-bottom:1px solid var(--border);white-space:nowrap}
.tabla td{padding:10px 12px;border-bottom:1px solid var(--border);vertical-align:middle}
.tabla tr:last-child td{border-bottom:0}
.tabla .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.tabla .dim{color:var(--muted);font-size:13px;white-space:nowrap}
/* .apilada: en celular cada fila pasa a ser una tarjeta (sin desplazamiento lateral) */
@media (max-width:720px){
  .tabla.apilada thead{display:none}
  .tabla.apilada tr{display:block;padding:10px 12px;border-bottom:1px solid var(--border)}
  .tabla.apilada tr:last-child{border-bottom:0}
  .tabla.apilada td{display:block;border:0;padding:2px 0;max-width:none;width:auto}
}

/* ── Modal ── */
.modal{position:fixed;inset:0;background:rgba(15,23,42,.45);display:none;place-items:center;z-index:60;padding:16px}
.modal.show{display:grid}
.mcard{background:var(--surface);border-radius:var(--radius-lg);padding:22px;width:100%;max-width:480px;max-height:calc(100vh - 32px);overflow:auto;
  box-shadow:0 12px 40px rgba(15,23,42,.18)}
.mcard.ancho{max-width:760px}
.mcard h3{font-size:18px;font-weight:700;margin:0 0 4px}
.mcard .msub{font-size:13px;color:var(--muted);margin-bottom:6px;word-break:break-word}
.mactions{display:flex;gap:10px;justify-content:flex-end;margin-top:20px;flex-wrap:wrap}
.mmsg{margin-top:12px;font-size:13.5px;font-weight:600;color:var(--danger);min-height:18px}

/* ── Etiquetas ── */
.tag{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:600;padding:2px 9px;border-radius:999px;background:var(--surface-2);
  border:1px solid var(--border);color:var(--text-2);white-space:nowrap}
.tag.ok{background:var(--ok-soft);color:var(--ok);border-color:#B7E4C7}
.tag.warn{background:var(--warn-soft);color:var(--warn);border-color:#F3D19C}
.tag.danger{background:var(--danger-soft);color:var(--danger);border-color:#F5C2C2}
.tag.pri{background:var(--primary-soft);color:var(--primary);border-color:#A7E3D6}
