/* ASISTENTE CLÍNICO · 00 · TIPOGRAFÍA
 * Source Sans 3 (SIL Open Font License, public/fuentes/OFL-source-sans-3.txt), servida desde
 * aquí: la política de contenido solo deja cargar fuentes del propio sitio. Variable: un
 * archivo cubre todos los pesos. Latin y latin-ext (tildes, ñ, ç, ·). */
@font-face{font-family:"Source Sans 3"; font-style:normal; font-display:swap; font-weight:200 900;
  src:url(/fuentes/source-sans-3-latin-wght-normal.woff2) format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Source Sans 3"; font-style:normal; font-display:swap; font-weight:200 900;
  src:url(/fuentes/source-sans-3-latin-ext-wght-normal.woff2) format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}


/* ASISTENTE CLÍNICO · 01 · TOKENS (modo día)
 *
 * TODO color, radio, sombra y tamaño sale de aquí. Ningún archivo debería escribir un color
 * a mano: si hace falta uno nuevo, se añade como token.
 *
 * El lenguaje: fondo azul muy claro, superficies blancas con borde suave y esquinas amplias,
 * títulos en azul marino, el marino para la acción principal y un azul medio de acento
 * (progreso, selección). Los estados (ok, aviso, mal) solo para estados, con texto.
 * El modo noche está en 02-tokens-noche.css (solo valores) y el servidor lo aplica dos
 * veces: siguiendo al sistema y forzado con el selector de apariencia. */
:root{
  /* Superficies */
  --app-fondo:#EEF3F9;          /* el fondo de la aplicación */
  --superficie:#FFFFFF;         /* tarjetas, barra lateral, barra superior */
  --superficie-2:#F5F8FC;       /* rellenos suaves: buscador, filas al pasar, cabeceras de tabla */
  --superficie-3:#E8EFF7;       /* seleccionado suave (menú lateral activo) */
  --borde:#DCE4EE; --borde-suave:#E9EEF5; --borde-fuerte:#C5D1DF;
  /* Texto */
  --texto:#1D2939; --texto-2:#475467; --texto-3:#667085; --texto-4:#98A2B3;
  --titulo:#1B365D;             /* títulos de página y de bloque */
  /* Acción y acento */
  --primario:#1E3A63; --primario-hover:#152B4B; --primario-texto:#FFFFFF;
  --acento:#3A72C0; --acento-fondo:#E4EDF8; --acento-texto:#1E3A63;
  /* Administración: azul petróleo, distinto del marino del día a día */
  --admin:#0E6A78; --admin-fondo:#E2F1F3; --admin-texto:#0B5561;
  --equipo:var(--admin);        /* alias antiguo */
  /* Estados: siempre con palabra o icono, nunca solo color */
  --ok:#1F8A55;   --ok-fondo:#E3F3EA;   --ok-texto:#146C41;
  --aviso:#E08A12; --aviso-fondo:#FDF1E1; --aviso-texto:#9A4A06;
  --mal:#D93A2B;  --mal-fondo:#FDECEA;  --mal-texto:#A9241A;
  /* Especialidades (calendario, gráficas) */
  --esp-medica:#3A72C0; --esp-psicologia:#8A63D2; --esp-nutricion:#2E9E6A; --esp-af:#E0852B;
  /* El widget de pendientes: oscuro en los dos modos */
  --pend-fondo:#15294A; --pend-tarjeta:rgba(255,255,255,.07); --pend-borde:rgba(255,255,255,.12);
  /* Forma */
  --r-s:8px; --r-m:10px; --r-l:16px; --r-pill:999px;
  --sombra-1:0 1px 2px rgba(16,24,40,.05);
  --sombra-2:0 1px 3px rgba(16,24,40,.08), 0 1px 2px rgba(16,24,40,.04);
  --sombra-3:0 16px 40px rgba(16,24,40,.16), 0 4px 10px rgba(16,24,40,.06);
  /* Tipografía */
  --fuente:"Source Sans 3", system-ui, -apple-system, "Segoe UI", sans-serif;
  --mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
  --t-xs:12px; --t-s:13.5px; --t-m:15px; --t-l:17px; --t-xl:20px; --t-2xl:28px; --t-3xl:32px;
  /* Medidas de la estructura */
  --lateral-ancho:264px; --barra-alto:72px; --contenido-max:1240px;
  color-scheme:light;

  /* ── ALIAS HEREDADOS: los nombres de antes, apuntando a la paleta nueva. Los usa
     50-heredado.css. No usarlos en código nuevo. */
  --fondo-app:var(--app-fondo); --papel:var(--superficie); --sup-mudo:var(--superficie-2);
  --tinta:var(--texto); --tinta-suave:var(--texto-3); --apagado:var(--texto-4);
  --linea:var(--borde); --linea-suave:var(--borde-suave); --linea-fuerte:var(--borde-fuerte);
  --enlace:var(--primario);
  --azul-punto:var(--acento); --azul-hondo:var(--primario); --azul-fondo:var(--acento-fondo); --azul-texto:var(--acento-texto);
  --ok-punto:var(--ok); --esp-punto:var(--aviso); --esp-fondo:var(--aviso-fondo); --esp-texto:var(--aviso-texto); --mal-punto:var(--mal);
  --sombra:var(--sombra-1); --sombra-alta:var(--sombra-3);
}


@media (prefers-color-scheme: dark){ :root:not([data-tema="claro"]){
--app-fondo:#0E1624; --superficie:#152033; --superficie-2:#1B2940; --superficie-3:#22344F;
--borde:#26364F; --borde-suave:#1F2D44; --borde-fuerte:#344866;
--texto:#E6ECF4; --texto-2:#B6C2D2; --texto-3:#8C9AAE; --texto-4:#64748A;
--titulo:#DDE7F6;
--primario:#4F82D3; --primario-hover:#6B97DE; --primario-texto:#FFFFFF;
--acento:#6E9BE0; --acento-fondo:rgba(110,155,224,.16); --acento-texto:#B9D0F2;
--admin:#4FB8C6; --admin-fondo:rgba(79,184,198,.14); --admin-texto:#A3DEE6;
--ok:#3CB879; --ok-fondo:rgba(60,184,121,.16); --ok-texto:#7FDCAA;
--aviso:#F0A23B; --aviso-fondo:rgba(240,162,59,.16); --aviso-texto:#F7C27A;
--mal:#F0665A; --mal-fondo:rgba(240,102,90,.16); --mal-texto:#F8A79F;
--esp-medica:#6E9BE0; --esp-psicologia:#A88BEA; --esp-nutricion:#4CC08A; --esp-af:#F0A04F;
--pend-fondo:#1C3156;
--sombra-1:0 1px 2px rgba(0,0,0,.35); --sombra-2:0 1px 3px rgba(0,0,0,.4); --sombra-3:0 16px 40px rgba(0,0,0,.55);
color-scheme:dark;
} }
:root[data-tema="oscuro"]{
--app-fondo:#0E1624; --superficie:#152033; --superficie-2:#1B2940; --superficie-3:#22344F;
--borde:#26364F; --borde-suave:#1F2D44; --borde-fuerte:#344866;
--texto:#E6ECF4; --texto-2:#B6C2D2; --texto-3:#8C9AAE; --texto-4:#64748A;
--titulo:#DDE7F6;
--primario:#4F82D3; --primario-hover:#6B97DE; --primario-texto:#FFFFFF;
--acento:#6E9BE0; --acento-fondo:rgba(110,155,224,.16); --acento-texto:#B9D0F2;
--admin:#4FB8C6; --admin-fondo:rgba(79,184,198,.14); --admin-texto:#A3DEE6;
--ok:#3CB879; --ok-fondo:rgba(60,184,121,.16); --ok-texto:#7FDCAA;
--aviso:#F0A23B; --aviso-fondo:rgba(240,162,59,.16); --aviso-texto:#F7C27A;
--mal:#F0665A; --mal-fondo:rgba(240,102,90,.16); --mal-texto:#F8A79F;
--esp-medica:#6E9BE0; --esp-psicologia:#A88BEA; --esp-nutricion:#4CC08A; --esp-af:#F0A04F;
--pend-fondo:#1C3156;
--sombra-1:0 1px 2px rgba(0,0,0,.35); --sombra-2:0 1px 3px rgba(0,0,0,.4); --sombra-3:0 16px 40px rgba(0,0,0,.55);
color-scheme:dark;
}

/* ASISTENTE CLÍNICO · 10 · BASE: el documento, la tipografía y el foco. */
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0; background:var(--app-fondo); color:var(--texto); font:var(--t-m)/1.5 var(--fuente);
  -webkit-font-smoothing:antialiased; font-feature-settings:"tnum" 0}
a{color:var(--primario)}
h1,h2,h3,h4{color:var(--titulo); text-wrap:balance; line-height:1.2}
:focus-visible{outline:2px solid var(--acento); outline-offset:2px}
::selection{background:var(--acento-fondo)}
.sr{position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap}
.mono{font-family:var(--mono)}
.tenue{color:var(--texto-3)}


/* ASISTENTE CLÍNICO · 15 · ESTILOS HEREDADOS DE CADA PÁGINA
 *
 * Lo que había antes del sistema de diseño, por páginas y piezas sueltas. Usa los
 * mismos nombres de color de siempre (--papel, --tinta, --azul-punto…), que en 01-tokens.css
 * apuntan ya a la paleta nueva: por eso se ve con el diseño nuevo sin tocarlo. Va ANTES de
 * 20-estructura y 30-componentes, así que lo que estos definen manda.
 * MIGRAR: cuando se toque una página, su bloque pasa a 40-paginas.css usando los componentes
 * de 30-componentes.css, y se borra de aquí. No añadir cosas nuevas a este archivo. */
/* ── Las ventanas (enviar un ticket, cambiar la disponibilidad): popover centrado con el
   fondo oscurecido detrás. */
.modal{width:min(560px, calc(100vw - 32px)); max-height:calc(100vh - 48px); overflow:auto; padding:0;
  border:1px solid var(--linea); border-radius:16px; background:var(--papel); color:var(--tinta); box-shadow:var(--sombra-alta)}
.modal::backdrop{background:rgba(16,24,40,.45)}
.modal-cab{display:flex; align-items:flex-start; justify-content:space-between; gap:12px; padding:20px 22px 14px; border-bottom:1px solid var(--linea-suave)}
.modal-cab h2{margin:0; font-size:18px}
.modal-cab p{margin:3px 0 0; font-size:13.5px; color:var(--tinta-suave)}
.cerrar{border:0; background:none; font-size:22px; line-height:1; color:var(--tinta-suave); cursor:pointer; padding:2px 6px; border-radius:8px}
.cerrar:hover{background:var(--sup-mudo)}
.modal-cuerpo{padding:18px 22px}
.modal-pie{display:flex; flex-wrap:wrap; align-items:center; justify-content:flex-end; gap:10px; padding:14px 22px 20px; border-top:1px solid var(--linea-suave)}
.modal-pie .nota{margin-right:auto; font-size:12.5px; color:var(--tinta-suave)}
.campo{display:flex; flex-direction:column; gap:5px; margin:0 0 14px; font-size:13.5px; font-weight:600}
.campo input, .campo select, .campo textarea{font:inherit; font-size:14.5px; font-weight:400; padding:9px 11px; border:1px solid var(--linea-fuerte);
  border-radius:10px; background:var(--papel); color:var(--tinta)}
.campo textarea{min-height:110px; resize:vertical}
.campo small{font-weight:400; color:var(--tinta-suave)}
.fila-campos{display:flex; flex-wrap:wrap; gap:10px}
.fila-campos .campo{flex:1; min-width:120px}
.marca-caja{display:flex; align-items:center; gap:8px; font-size:14px; margin:0 0 14px}

/* ── Piezas comunes ── */
.tarjeta{background:var(--papel); border:1px solid var(--linea); border-radius:12px; padding:18px 20px; box-shadow:var(--sombra)}
.tipos{color:var(--tinta-suave); font-size:13.5px}
.tenue{color:var(--tinta-suave)}
.chip{display:inline-flex; align-items:center; gap:5px; font-size:12.5px; font-weight:600; padding:2px 10px; border-radius:999px;
  background:var(--sup-mudo); color:var(--tinta-suave); border:1px solid transparent; white-space:nowrap}
.chip.ok, .chip.si{background:var(--ok-fondo); color:var(--ok-texto)}
.chip.espera, .chip.no{background:var(--esp-fondo); color:var(--esp-texto)}
.chip.mal{background:var(--mal-fondo); color:var(--mal-texto)}
.chip.neutro{background:var(--sup-mudo); color:var(--tinta-suave)}
/* Los botones del panel del MCP: el principal azul y relleno, el resto blanco con borde. */
.btn{display:inline-flex; align-items:center; justify-content:center; gap:8px; border:1px solid var(--azul-punto); border-radius:10px; padding:9px 16px;
  font:inherit; font-size:14.5px; font-weight:600; background:var(--azul-punto); color:#fff; text-decoration:none; cursor:pointer; min-height:40px}
.btn:hover{background:var(--azul-hondo); border-color:var(--azul-hondo)}
.mini{display:inline-flex; align-items:center; justify-content:center; gap:6px; border:1px solid var(--linea-fuerte); border-radius:10px; padding:8px 14px;
  font:inherit; font-size:14px; font-weight:500; background:var(--papel); color:var(--tinta); text-decoration:none; cursor:pointer; min-height:40px}
.mini:hover{background:var(--sup-mudo)}
.btn[disabled], .mini[disabled]{opacity:.5; cursor:not-allowed}
.icono{width:18px; height:18px; flex:none}

/* ── Entrar ── */
.entrar{max-width:420px; margin:10vh auto 0; text-align:center; background:var(--papel); border:1px solid var(--linea);
  border-radius:16px; padding:32px 28px; box-shadow:var(--sombra)}
.entrar h1{margin:0; font-size:24px}
.entrar h1 b{color:var(--azul-punto)}
.entrar-que{margin:10px 0 22px; color:var(--tinta-suave); font-size:14.5px; line-height:1.55}
.entrar-aviso{margin:0 0 18px; padding:10px 12px; border-radius:10px; background:var(--esp-fondo); color:var(--esp-texto); font-size:13.5px; text-align:left}
.btn-google{display:inline-flex; align-items:center; gap:10px; padding:11px 18px; border:1px solid var(--linea-fuerte); border-radius:10px;
  background:var(--papel); color:var(--tinta); font-weight:600; font-size:14.5px; text-decoration:none; min-height:44px}
.btn-google:hover{background:var(--sup-mudo)}
.entrar-pie{margin:16px 0 0; font-size:12.5px; color:var(--tinta-suave)}

/* ── EL RECORRIDO DEL PACIENTE ─────────────────────────────────────────────────────────
   Cuatro zonas: dónde está (las estaciones), ahora (la tarjeta grande), y el paso a paso
   plegado por fases. Todo con los tokens de la casa, así que el modo noche sale solo. */
.recorrido{max-width:780px; margin:0 auto; display:flex; flex-direction:column; gap:16px}
.recorrido > *{margin:0}
.rc-migas{font-size:13.5px}
.rc-migas a{color:var(--enlace); text-decoration:none}
/* La barra de ejemplos es cosa del diseño, no de la pantalla: pequeña y arriba del todo,
   para que no empuje lo que sí importa. */
.rc-ejemplos{display:flex; flex-wrap:wrap; align-items:center; gap:4px 12px; font-size:13px;
  padding:8px 12px; border:1px dashed var(--linea-fuerte); border-radius:10px}
.rc-ejemplos a{color:var(--enlace)}
.rc-ejemplos a.puesta{color:var(--tinta); font-weight:650; text-decoration:none}

/* ── 1 · Quién es y dónde está ── */
.rc-quien{padding:20px 22px 22px}
.rc-quien-cab{display:flex; align-items:center; gap:10px; flex-wrap:wrap}
.rc-quien h1{margin:0; font-size:24px; line-height:1.2}
.rc-quien .tipos{margin:4px 0 0}

/* Las estaciones: cinco círculos unidos por una línea que se pinta de verde según se
   avanza. Se leen como el seguimiento de un pedido, que es el recorrido que todo el mundo
   sabe leer sin que se lo expliquen. */
.rc-estaciones{list-style:none; margin:22px 0 0; padding:0; display:grid; grid-template-columns:repeat(5, 1fr)}
.rc-estacion{position:relative; display:flex; flex-direction:column; align-items:center; text-align:center; gap:6px; min-width:0}
.rc-estacion::after{content:''; position:absolute; top:17px; left:calc(50% + 20px); right:calc(-50% + 20px); height:3px;
  border-radius:2px; background:var(--linea)}
.rc-estacion:last-child::after{display:none}
.rc-estacion.tramo-hecho::after{background:var(--ok-punto)}
.rc-circulo{width:36px; height:36px; border-radius:50%; flex:none; display:flex; align-items:center; justify-content:center;
  font-weight:700; font-size:14px; background:var(--papel); border:2px solid var(--linea-fuerte); color:var(--tinta-suave); font-variant-numeric:tabular-nums}
.rc-est-nombre{font-size:13px; font-weight:600; line-height:1.25; color:var(--tinta-suave); overflow-wrap:anywhere}
.rc-est-pie{font-size:12px; color:var(--tinta-suave); font-variant-numeric:tabular-nums}
.hecho > .rc-circulo, .hecho > summary > .rc-circulo{background:var(--ok-punto); border-color:var(--ok-punto); color:#fff}
.actual > .rc-circulo, .actual > summary > .rc-circulo{background:var(--azul-punto); border-color:var(--azul-punto); color:#fff; box-shadow:0 0 0 5px var(--azul-fondo)}
.atascado > .rc-circulo, .atascado > summary > .rc-circulo{background:var(--esp-punto); border-color:var(--esp-punto); color:#fff; box-shadow:0 0 0 5px var(--esp-fondo)}
.fallido > .rc-circulo, .fallido > summary > .rc-circulo{background:var(--mal-punto); border-color:var(--mal-punto); color:#fff; box-shadow:0 0 0 5px var(--mal-fondo)}
.cerrado > .rc-circulo, .cerrado > summary > .rc-circulo{background:var(--apagado); border-color:var(--apagado); color:#fff}
.no_aplica > .rc-circulo, .no_aplica > summary > .rc-circulo{border-style:dashed; color:var(--apagado)}
.rc-estacion.hecho .rc-est-nombre{color:var(--tinta)}
.rc-estacion.actual .rc-est-nombre, .rc-estacion.atascado .rc-est-nombre,
.rc-estacion.fallido .rc-est-nombre, .rc-estacion.cerrado .rc-est-nombre{color:var(--tinta); font-weight:700}
.rc-estacion.actual .rc-est-pie{color:var(--azul-texto); font-weight:600}
.rc-estacion.atascado .rc-est-pie{color:var(--esp-texto); font-weight:600}
.rc-estacion.fallido .rc-est-pie{color:var(--mal-texto); font-weight:600}
.rc-estacion.no_aplica .rc-est-nombre{color:var(--apagado)}

/* ── 2 · Ahora ── la única tarjeta grande de la página. El color del borde es el estado:
   azul en marcha, ámbar atascado, rojo fallido, gris cerrado, verde completo. */
.rc-ahora{border:1px solid var(--linea); border-left:6px solid var(--azul-punto); border-radius:14px; padding:20px 22px;
  background:var(--azul-fondo)}
.rc-ahora.atascado{border-left-color:var(--esp-punto); background:var(--esp-fondo)}
.rc-ahora.fallido{border-left-color:var(--mal-punto); background:var(--mal-fondo)}
.rc-ahora.cerrado{border-left-color:var(--apagado); background:var(--sup-mudo)}
.rc-ahora.completo{border-left-color:var(--ok-punto); background:var(--ok-fondo)}
.rc-ahora-etq{margin:0; font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--azul-texto)}
.rc-ahora.atascado .rc-ahora-etq{color:var(--esp-texto)}
.rc-ahora.fallido .rc-ahora-etq{color:var(--mal-texto)}
.rc-ahora.cerrado .rc-ahora-etq{color:var(--tinta-suave)}
.rc-ahora.completo .rc-ahora-etq{color:var(--ok-texto)}
.rc-ahora-titulo{margin:6px 0 0; font-size:24px; line-height:1.25; text-wrap:balance}
.rc-ahora-texto{margin:8px 0 0; font-size:15px; max-width:62ch}
/* Los tres datos que deciden qué hacer, en grande y con su nombre encima: a quién le toca,
   cuánto lleva y el plazo. Antes iban en una línea de estadísticas y no los leía nadie. */
.rc-ahora-datos{display:grid; grid-template-columns:repeat(3, 1fr); gap:10px; margin:16px 0 0}
.rc-ahora-datos > div{background:var(--papel); border:1px solid var(--linea); border-radius:10px; padding:10px 12px; min-width:0}
.rc-ahora-datos dt{font-size:11.5px; font-weight:600; text-transform:uppercase; letter-spacing:.05em; color:var(--tinta-suave)}
.rc-ahora-datos dd{margin:2px 0 0; font-size:17px; font-weight:650; line-height:1.3; overflow-wrap:anywhere}
.rc-ahora-ayuda{margin:14px 0 0; max-width:66ch}
.rc-ahora-ayuda b{display:block; font-size:12px; text-transform:uppercase; letter-spacing:.05em; color:var(--tinta-suave)}
.rc-ahora-ayuda p{margin:3px 0 0; font-size:15.5px; line-height:1.55}
.rc-acciones{display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin:16px 0 0}
.rc-acciones button[disabled]{opacity:.55; cursor:not-allowed}
.rc-sin-conectar{font-size:12.5px}

/* ── 3 · Paso a paso ── */
.rc-detalle-cab{display:flex; align-items:baseline; justify-content:space-between; gap:12px; margin:8px 0 8px}
.rc-detalle-cab h2{margin:0; font-size:17px}
.rc-detalle-cab a{font-size:13px; color:var(--enlace)}
.rc-fase{border:1px solid var(--linea); border-radius:12px; background:var(--papel); margin:0 0 8px}
.rc-fase > summary{list-style:none; display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:12px;
  padding:10px 14px; cursor:pointer; border-radius:12px}
.rc-fase > summary::-webkit-details-marker{display:none}
.rc-fase > summary:hover{background:var(--sup-mudo)}
.rc-fase > summary:focus-visible{outline:2px solid var(--azul-punto); outline-offset:2px}
.rc-fase > summary .rc-circulo{width:28px; height:28px; font-size:12px; box-shadow:none}
.rc-fase-nombre{font-weight:650; font-size:15px}
.rc-fase-resumen{font-size:13px; color:var(--tinta-suave); text-align:right; font-variant-numeric:tabular-nums}
.rc-fase > summary::after{content:'▸'; grid-column:4; color:var(--tinta-suave); transition:transform .15s}
.rc-fase[open] > summary::after{transform:rotate(90deg)}
.rc-fase > summary{grid-template-columns:auto 1fr auto auto}
.rc-fase.pendiente > summary .rc-fase-nombre, .rc-fase.no_aplica > summary .rc-fase-nombre{color:var(--tinta-suave)}
.rc-fase.actual{border-color:var(--azul-punto)}
.rc-fase.atascado{border-color:var(--esp-punto)}
.rc-fase.fallido{border-color:var(--mal-punto)}
@media (prefers-reduced-motion: reduce){ .rc-fase > summary::after{transition:none} }

/* Los pasos de una fase: un raíl corto y una línea por paso, con el detalle debajo. */
.rc-pasos{list-style:none; margin:0; padding:2px 14px 12px 14px}
.rc-paso{position:relative; display:grid; grid-template-columns:24px 1fr auto; align-items:start; gap:12px; padding:8px 0 8px}
.rc-paso::before{content:''; position:absolute; left:11px; top:0; bottom:0; width:2px; background:var(--linea)}
.rc-paso.hecho::before{background:var(--ok-punto)}
.rc-paso:first-child::before{top:14px}
.rc-paso:last-child::before{bottom:calc(100% - 14px)}
.rc-punto{position:relative; z-index:1; width:24px; height:24px; margin-top:1px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  font-size:11px; font-weight:700; background:var(--papel); border:2px solid var(--linea-fuerte); color:var(--tinta-suave); font-variant-numeric:tabular-nums}
.rc-paso.hecho .rc-punto{background:var(--ok-punto); border-color:var(--ok-punto); color:#fff}
.rc-paso.actual .rc-punto{background:var(--azul-punto); border-color:var(--azul-punto); color:#fff}
.rc-paso.atascado .rc-punto{background:var(--esp-punto); border-color:var(--esp-punto); color:#fff}
.rc-paso.fallido .rc-punto{background:var(--mal-punto); border-color:var(--mal-punto); color:#fff}
.rc-paso.no_aplica .rc-punto{border-style:dashed; color:var(--apagado)}
.rc-texto{display:flex; flex-direction:column; gap:1px; min-width:0}
.rc-titulo{font-size:15px; line-height:1.35}
.rc-sub{font-size:13px; color:var(--tinta-suave); line-height:1.4}
.rc-paso.pendiente .rc-titulo{color:var(--tinta-suave)}
.rc-paso.no_aplica .rc-titulo{color:var(--apagado); text-decoration:line-through; text-decoration-color:var(--linea-fuerte)}
.rc-paso.aqui .rc-titulo{font-weight:700}
.rc-aqui{display:inline-block; margin-left:6px; font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.05em;
  padding:1px 7px; border-radius:999px; background:var(--azul-punto); color:#fff; vertical-align:2px}
.rc-paso.atascado .rc-aqui{background:var(--esp-punto)}
.rc-paso.fallido .rc-aqui{background:var(--mal-punto)}
.rc-lado{font-size:12.5px; color:var(--tinta-suave); white-space:nowrap; font-variant-numeric:tabular-nums; padding-top:3px}

/* Quién mueve cada paso que falta, en neutro: el color de esta pantalla es del ESTADO
   (verde hecho, azul en curso, ámbar atascado, rojo fallido). Con un color por persona el
   médico salía del mismo azul que «en curso» y la paciente del mismo ámbar que
   «atascado», y ya no se sabía qué quería decir cada color. Lo automático, más apagado,
   porque no pide nada a nadie. */
.rc-actor{font-size:11px; font-weight:600; padding:2px 8px; border-radius:999px; background:var(--sup-mudo); color:var(--tinta)}
.rc-actor.sistema{color:var(--tinta-suave); font-weight:500}

/* ── La entrada ── */
.rc-buscar{display:flex; gap:8px; margin:14px 0 0; max-width:520px}
.rc-buscar input{flex:1; min-width:0; font:inherit; font-size:15px; padding:9px 12px; border:1px solid var(--linea-fuerte);
  border-radius:10px; background:var(--papel); color:var(--tinta)}
.rc-minis{display:grid; gap:14px; grid-template-columns:repeat(auto-fill, minmax(300px, 1fr))}
.rc-mini{display:flex; flex-direction:column; gap:6px; text-decoration:none; color:var(--tinta); padding:16px 18px; border-left:5px solid var(--azul-punto)}
.rc-mini.atascado{border-left-color:var(--esp-punto)}
.rc-mini.fallido{border-left-color:var(--mal-punto)}
.rc-mini.completo{border-left-color:var(--ok-punto)}
.rc-mini.cerrado{border-left-color:var(--apagado)}
.rc-mini-nombre{font-weight:650; font-size:16px; display:flex; align-items:center; gap:8px}
.rc-mini-titular{font-size:15px; line-height:1.35; font-weight:600}
.rc-mini-pie{font-size:12.5px; color:var(--tinta-suave)}
.rc-estaciones.rc-pequenas{margin:6px 0 2px}
.rc-estaciones.rc-pequenas .rc-circulo{width:22px; height:22px; font-size:10px; border-width:2px; box-shadow:none}
.rc-estaciones.rc-pequenas .rc-estacion::after{top:10px; left:calc(50% + 13px); right:calc(-50% + 13px); height:2px}
.rc-estaciones.rc-pequenas .rc-est-nombre{font-size:10.5px; font-weight:500}

@media (max-width:560px){
  .rc-quien, .rc-ahora{padding:16px}
  .rc-quien h1, .rc-ahora-titulo{font-size:20px}
  .rc-circulo{width:30px; height:30px; font-size:12px}
  .rc-estacion::after{top:14px; left:calc(50% + 17px); right:calc(-50% + 17px)}
  .rc-est-nombre{font-size:11px}
  .rc-est-pie{font-size:10.5px}
  .rc-ahora-datos{grid-template-columns:1fr 1fr}
  .rc-ahora-datos > div:first-child{grid-column:1 / -1}
  .rc-fase-resumen{display:none}
  .rc-paso{grid-template-columns:24px 1fr}
  .rc-lado{grid-column:2; padding-top:0}
}
/* Los h2 del admin van en versalitas para los títulos de bloque. Aquí el de «ahora» es una
   frase que se lee —«plan enviado, falta que lo confirme»— y en mayúsculas a ese tamaño
   parecía un grito y costaba leerla. */
.rc-ahora-titulo, .rc-detalle-cab h2{text-transform:none; letter-spacing:0}
.rc-est-nombre .corto{display:none}
.rc-estaciones.rc-pequenas .rc-est-nombre .largo{display:none}
.rc-estaciones.rc-pequenas .rc-est-nombre .corto{display:inline}
@media (max-width:560px){
  .rc-est-nombre .largo{display:none}
  .rc-est-nombre .corto{display:inline}
}

/* ── LA PORTADA: agenda, tareas y disponibilidad ────────────────────────────────────────
   Tres bloques con la misma forma —título, una línea de resumen y una lista— para que al
   segundo ya no haya que leer cómo está hecha la página. Una sola columna, sin tarjetas
   dentro de tarjetas y sin párrafos explicando cada bloque. */
.portada{max-width:880px; margin:0 auto; display:flex; flex-direction:column; gap:30px}
.saludo h1{margin:0; font-size:26px; line-height:1.2}
.saludo p{margin:4px 0 0; color:var(--tinta-suave); display:flex; align-items:center; gap:8px; flex-wrap:wrap}
.chip.ejemplo{font-weight:500}

.bloque-cab{display:flex; align-items:center; justify-content:space-between; gap:12px}
.bloque-cab h2{margin:0; font-size:18px; letter-spacing:-.015em}
.bloque-resumen{margin:4px 0 12px; color:var(--tinta-suave); font-size:13.5px}
.bloque-resumen b{color:var(--tinta)}
.bloque-resumen b.tarde{color:var(--esp-texto)}

/* Hoy | Semana: un conmutador de dos posiciones. Son enlaces, no botones: lo que se ve lo
   decide la dirección, así que se puede compartir y sobrevive a una recarga. */
.conmutador{display:inline-flex; padding:3px; border-radius:10px; background:var(--papel); border:1px solid var(--linea)}
.conmutador a{padding:5px 14px; border-radius:8px; font-size:13px; font-weight:600; color:var(--tinta-suave); text-decoration:none}
.conmutador a[aria-current="page"]{background:var(--papel); color:var(--azul-punto); box-shadow:var(--sombra)}

.lista{list-style:none; margin:0; padding:0; background:var(--papel); border:1px solid var(--linea); border-radius:12px; overflow:hidden; box-shadow:var(--sombra)}
.lista > li{border-top:1px solid var(--linea-suave)}
.lista > li:first-child{border-top:0}
.vacio{margin:0; padding:14px 16px; color:var(--tinta-suave); background:var(--papel); border:1px solid var(--linea); border-radius:12px}

.chip.si{background:var(--ok-fondo); color:var(--ok-texto)}
.chip.no{background:var(--esp-fondo); color:var(--esp-texto)}
.chip.mal{background:var(--mal-fondo); color:var(--mal-texto)}
.chip.neutro{background:var(--sup-mudo); color:var(--tinta-suave)}

/* ── 1 · Agenda ── la hora manda, y va sola en su columna para leerla de arriba abajo. */
.ag-cita{display:grid; grid-template-columns:52px minmax(0, 1fr) auto auto; align-items:center; gap:14px; padding:11px 16px; min-height:60px}
.ag-hora{font-weight:700; font-size:15px; font-variant-numeric:tabular-nums}
.ag-quien{display:flex; flex-direction:column; min-width:0}
.ag-nombre{font-weight:600; font-size:15px; color:var(--tinta); text-decoration:none; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
a.ag-nombre:hover{text-decoration:underline; text-underline-offset:3px}
.ag-tipo{font-size:12.5px; color:var(--tinta-suave)}
.ag-chips{display:flex; flex-wrap:wrap; justify-content:flex-end; gap:5px}
.ag-accion{display:flex; gap:6px; justify-content:flex-end}
.ag-accion .btn, .ag-accion .mini{min-height:34px; padding:6px 12px; font-size:13px}
/* Lo que ya pasó se queda, apagado: sirve para ver cómo va el día, no para actuar. */
.ag-cita.pasada .ag-hora, .ag-cita.pasada .ag-quien{opacity:.5}
/* La raya de «ahora»: dónde está el día. */
.ag-ahora{display:flex; align-items:center; gap:10px; padding:3px 16px; background:var(--azul-fondo)}
.ag-ahora span{font-size:11.5px; font-weight:700; letter-spacing:.04em; text-transform:uppercase; color:var(--azul-texto); white-space:nowrap}
.ag-ahora::after{content:''; flex:1; height:2px; border-radius:1px; background:var(--azul-punto); opacity:.5}
.ag-dia + .ag-dia{margin-top:16px}
.ag-dia h3{display:flex; align-items:center; gap:8px; margin:0 0 6px; font-size:14px}
.cuenta{display:inline-flex; min-width:20px; height:20px; padding:0 6px; align-items:center; justify-content:center; border-radius:999px;
  background:var(--sup-mudo); color:var(--tinta-suave); font-size:11.5px; font-weight:700; font-variant-numeric:tabular-nums}

/* ── 2 · Tareas ── una lista y el orden lo pone la urgencia. Lo que se ha pasado de plazo
   lleva una marca a la izquierda: pintar la fila entera dejaba de verse con tres. */
.tarea{display:grid; grid-template-columns:150px minmax(0, 1fr) auto auto; align-items:center; gap:14px; padding:11px 16px; min-height:60px}
.tarea.tarde{box-shadow:inset 3px 0 0 var(--esp-punto)}
.tarea-tipo{font-size:12.5px; font-weight:600; color:var(--tinta-suave)}
.tarea-quien{display:flex; flex-direction:column; min-width:0}
.tarea-edad{font-size:13px; color:var(--tinta-suave); white-space:nowrap; font-variant-numeric:tabular-nums}
.tarea-edad.tarde{color:var(--esp-texto); font-weight:700}

/* ── 3 · Disponibilidad ── un día por línea y sus horas libres al lado. */
.huecos .hueco-dia{display:grid; grid-template-columns:110px 1fr; align-items:center; gap:14px; padding:9px 16px}
.hueco-fecha{font-size:13.5px; font-weight:600}
.hueco-horas{display:flex; flex-wrap:wrap; gap:6px}
.hora{font-family:var(--mono); font-size:12.5px; padding:2px 8px; border-radius:6px; border:1px solid var(--linea-fuerte); font-variant-numeric:tabular-nums}
.vacio-dia .hueco-fecha{color:var(--tinta-suave); font-weight:500}
.aviso{margin:0 0 12px; padding:10px 14px; border-radius:10px; background:var(--esp-fondo); color:var(--esp-texto); font-size:13.5px}

@media (max-width:640px){
  .portada{gap:26px}
  .saludo h1{font-size:22px}
  .ag-cita{grid-template-columns:48px minmax(0, 1fr); row-gap:8px}
  .ag-chips, .ag-accion{grid-column:2; justify-content:flex-start}
  .tarea{grid-template-columns:minmax(0, 1fr) auto; row-gap:6px}
  .tarea-tipo{grid-column:1 / -1}
  .tarea .ag-accion{grid-column:1 / -1; justify-content:flex-start}
  .huecos .hueco-dia{grid-template-columns:86px 1fr}
}

/* ── El selector de profesional (solo quien administra) ── una barra fina arriba del todo,
   separada del saludo: es una herramienta para elegir, no parte del contenido. */
.selector{display:flex; flex-wrap:wrap; align-items:center; gap:10px; padding:10px 14px; background:var(--papel);
  border:1px solid var(--linea); border-radius:12px}
.selector label{font-size:13.5px; font-weight:600; color:var(--tinta-suave)}
.selector select{flex:1; min-width:220px; font:inherit; font-size:14px; padding:8px 10px; border:1px solid var(--linea-fuerte);
  border-radius:9px; background:var(--papel); color:var(--tinta)}
.selector .btn{min-height:38px; padding:8px 18px}
.selector-aviso{margin:0; padding:10px 14px; border-radius:10px; background:var(--esp-fondo); color:var(--esp-texto); font-size:13.5px}
.saludo .volver{margin-left:4px; font-size:13px}
/* El aviso de datos de ejemplo, en una línea y sin gritar: tiene que verse, no tapar. */
.aviso-ejemplo{margin:-14px 0 0; font-size:12.5px; color:var(--tinta-suave)}
.aviso-ejemplo b{color:var(--tinta)}
@media (max-width:640px){ .selector select{min-width:0; width:100%} .selector .btn{width:100%} }


/* ── Retoques al lenguaje del panel del MCP ── */
.bloque-cab h2{display:flex; align-items:center; gap:10px}
.h2-icono{width:32px; height:32px; border-radius:9px; display:inline-flex; align-items:center; justify-content:center;
  background:var(--azul-fondo); color:var(--azul-punto); flex:none}
.bloque-cab .mini{min-height:36px; padding:6px 12px; font-size:13.5px}
.bloque-cab .mini .icono{width:16px; height:16px}
.bloque-resumen{margin:8px 0 14px}
.cuenta{background:var(--azul-fondo); color:var(--azul-texto)}
.ag-cita:hover, .tarea:hover{background:var(--linea-suave)}
.aviso-ejemplo{margin:-14px 0 0}
.saludo h1{font-size:28px}

/* ── La ventana de disponibilidad ── */
.modal-ancha{width:min(680px, calc(100vw - 32px))}
.modal-seccion{margin:18px 0 10px; font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--tinta-suave)}
.modal-seccion:first-child{margin-top:0}
.habitual{list-style:none; margin:0 0 6px; padding:0; border:1px solid var(--linea); border-radius:12px; overflow:hidden}
.habitual li{display:grid; grid-template-columns:96px 1fr auto; align-items:center; gap:10px; padding:9px 12px; border-top:1px solid var(--linea-suave)}
.habitual li:first-child{border-top:0}
.habitual-dia{font-weight:600; font-size:14px}
.habitual-franjas{display:flex; flex-wrap:wrap; gap:6px}
.franja{display:inline-flex; align-items:center; gap:4px; padding:3px 4px 3px 10px; border-radius:999px; background:var(--azul-fondo); color:var(--azul-texto);
  font-size:13px; font-weight:600; font-variant-numeric:tabular-nums}
.franja button{border:0; background:none; color:inherit; font-size:15px; line-height:1; padding:0 5px; border-radius:999px; cursor:pointer}
.franja button:hover{background:rgba(51,71,219,.12)}
.franja button[disabled]{cursor:not-allowed; opacity:.6}
.enlace-boton{border:0; background:none; padding:0; font:inherit; font-size:13.5px; font-weight:600; color:var(--enlace); cursor:pointer}
.enlace-boton[disabled]{opacity:.55; cursor:not-allowed}
@media (max-width:560px){ .habitual li{grid-template-columns:1fr; gap:6px} }

/* ── Mi perfil ── */
.migas{margin:0; font-size:14px}
.migas a{text-decoration:none}
.perfil{padding:24px}
.perfil-cab{display:flex; align-items:center; gap:16px}
.perfil-cab h1{margin:0; font-size:22px}
.perfil-cab .tipos{margin:2px 0 0}
.avatar.grande{width:56px; height:56px; font-size:19px}
.perfil-datos{margin:22px 0 0; border:1px solid var(--linea); border-radius:12px; overflow:hidden}
.perfil-fila{display:grid; grid-template-columns:120px 1fr; gap:14px; padding:12px 16px; border-top:1px solid var(--linea-suave)}
.perfil-fila:first-child{border-top:0}
.perfil-fila dt{font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--tinta-suave); padding-top:2px}
.perfil-fila dd{margin:0; display:flex; flex-direction:column; gap:3px; font-size:14.5px}
.perfil-fila dd small{font-size:12.5px; color:var(--tinta-suave)}
@media (max-width:560px){ .perfil-fila{grid-template-columns:1fr; gap:4px} }
.perfil-fila dd .chip{align-self:flex-start}

/* ── El selector de día y noche, junto al nombre ── */
.barra-derecha{display:flex; align-items:center; gap:10px; min-width:0}
.tema{display:inline-flex; padding:3px; border-radius:10px; background:var(--sup-mudo); border:1px solid var(--linea)}
.tema a{display:inline-flex; align-items:center; justify-content:center; width:32px; height:28px; border-radius:7px; color:var(--tinta-suave)}
.tema a:hover{color:var(--tinta)}
.tema a[aria-current]{background:var(--papel); color:var(--azul-punto); box-shadow:var(--sombra)}
.tema svg{width:16px; height:16px}
@media (max-width:640px){ .tema a{width:28px} }

/* ── Primera cita o mantenimiento ── la etiqueta dice cuál es; la primera lleva además una
   raya azul a la izquierda, para verlas en una lista larga sin leer. */
.tipo-cita{display:inline-flex; align-items:center; padding:1px 8px; border-radius:6px; font-size:11.5px; font-weight:700; letter-spacing:.01em}
.tipo-cita.primera{background:var(--azul-fondo); color:var(--azul-texto)}
.tipo-cita.seguimiento{background:var(--sup-mudo); color:var(--tinta-suave); border:1px solid var(--linea)}
.ag-tipo{display:flex; align-items:center; gap:6px; margin-top:2px}
.ag-cita.es-primera{box-shadow:inset 3px 0 0 var(--azul-punto)}
.ag-cita.es-primera.pasada{box-shadow:inset 3px 0 0 var(--linea-fuerte)}
/* Toda la fila abre la cita: el enlace del nombre se estira por encima; los botones van
   por encima de él. */
.ag-cita{position:relative}
.estirado::after{content:''; position:absolute; inset:0; z-index:0}
.ag-accion, .ag-chips{position:relative; z-index:1}
.ag-cita:has(.estirado:focus-visible){outline:2px solid var(--azul-punto); outline-offset:-2px}
.estirado:focus-visible{outline:none}

/* ── La ficha de una cita ── */
.ficha-cita{display:flex; flex-wrap:wrap; align-items:flex-end; justify-content:space-between; gap:18px; padding:22px 24px}
.ficha-cita.es-primera{box-shadow:inset 4px 0 0 var(--azul-punto), var(--sombra)}
.ficha-cita-etiquetas{display:flex; gap:8px; align-items:center}
.ficha-cita h1{margin:10px 0 4px; font-size:26px}
.ficha-cita-cuando{margin:0; color:var(--tinta-suave)}
.ficha-cita-cuando b{color:var(--tinta)}
.ficha-cita-acciones{display:flex; flex-wrap:wrap; gap:8px}

/* ── El calendario de disponibilidad ── */
.modal-calendario{width:min(940px, calc(100vw - 32px))}
.form-calendario{counter-reset:dias}
.paso-n{display:inline-flex; width:20px; height:20px; align-items:center; justify-content:center; border-radius:50%; margin-right:6px;
  background:var(--azul-punto); color:#fff; font-size:11px}
.modal-seccion .tenue{text-transform:none; letter-spacing:0; font-weight:500}
.meses{display:grid; grid-template-columns:repeat(3, 1fr); gap:14px}
@media (max-width:760px){ .meses{grid-template-columns:1fr} }
.mes{margin:0; padding:10px 12px 12px; border:1px solid var(--linea); border-radius:12px; min-width:0}
.mes legend{padding:0 6px; font-weight:700; font-size:14px}
.cal-sem, .cal-dias{display:grid; grid-template-columns:repeat(7, 1fr); gap:3px; text-align:center}
.cal-sem span{font-size:11px; font-weight:700; color:var(--tinta-suave); padding:4px 0}
.cal-dia{position:relative; display:flex; align-items:center; justify-content:center; aspect-ratio:1; min-height:32px; border-radius:8px;
  font-size:13.5px; font-variant-numeric:tabular-nums; cursor:pointer; user-select:none}
.cal-dia input{position:absolute; inset:0; margin:0; opacity:0; cursor:pointer}
.cal-dia input:checked{counter-increment:dias}
.cal-dia:hover{background:var(--sup-mudo)}
.cal-dia.finde{color:var(--tinta-suave)}
.cal-dia.hoy span{font-weight:800; color:var(--azul-punto)}
.cal-dia.con-huecos::after{content:''; position:absolute; bottom:4px; left:50%; width:5px; height:5px; margin-left:-2.5px; border-radius:50%; background:var(--ok-punto)}
.cal-dia.pasado{color:var(--apagado); cursor:default; text-decoration:line-through; text-decoration-color:var(--linea-fuerte)}
.cal-dia.pasado:hover{background:none}
.cal-dia.pasado input{cursor:default}
.cal-dia:has(input:checked){background:var(--azul-punto); color:#fff}
.cal-dia:has(input:checked) span{color:#fff}
.cal-dia:has(input:checked)::after{background:#fff}
.cal-dia:has(input:focus-visible){outline:2px solid var(--azul-punto); outline-offset:1px}
.cal-leyenda{display:flex; flex-wrap:wrap; align-items:center; gap:6px; margin:10px 0 0; font-size:13px; color:var(--tinta-suave)}
.punto-huecos{width:7px; height:7px; border-radius:50%; background:var(--ok-punto)}
.cal-leyenda .sep{margin:0 4px}
.contador-dias::before{content:'Días marcados: ' counter(dias); color:var(--tinta)}
/* Qué hacer con los días: dos tarjetas que se eligen. */
.opciones{display:grid; grid-template-columns:1fr 1fr; gap:10px}
@media (max-width:560px){ .opciones{grid-template-columns:1fr} }
.opcion{display:flex; align-items:flex-start; gap:10px; padding:12px 14px; border:1px solid var(--linea-fuerte); border-radius:12px; cursor:pointer}
.opcion input{margin-top:3px; accent-color:var(--azul-punto)}
.opcion span{display:flex; flex-direction:column; gap:2px}
.opcion small{color:var(--tinta-suave); font-size:12.5px}
.opcion:has(input:checked){border-color:var(--azul-punto); background:var(--azul-fondo)}
/* Cerrar días no lleva franjas: se esconden. */
.form-calendario:has(input[value="cerrar"]:checked) .franjas{display:none}
.franja-fila{display:grid; grid-template-columns:28px 1fr 1fr; align-items:end; gap:10px}
.franja-fila .campo{margin-bottom:8px}
.franja-n{align-self:center; width:24px; height:24px; border-radius:50%; display:inline-flex; align-items:center; justify-content:center;
  background:var(--sup-mudo); color:var(--tinta-suave); font-size:12px; font-weight:700; margin-top:14px}

/* ── La vista previa ── */
.lista-problemas{margin:14px 0 0; padding:12px 14px 12px 32px; border-radius:10px; background:var(--esp-fondo); color:var(--esp-texto)}
.lista-problemas li + li{margin-top:4px}
.resumen-previa{margin:16px 0 0; padding:12px 14px; border-radius:10px; background:var(--azul-fondo); color:var(--azul-texto)}
.franjas-previa{display:flex; flex-wrap:wrap; gap:6px}
.resumen-previa + .perfil-datos .perfil-fila dt{text-transform:none; letter-spacing:0; font-size:13.5px; color:var(--tinta)}

/* ── Cargando ──
 * La página llega en dos tiempos: primero la cabecera y esto, luego el <main>. En cuanto el
 * <main> existe, el aviso se esconde solo. Sin JavaScript. */
.cargando{display:flex; align-items:center; justify-content:center; gap:12px; margin:56px auto; padding:0 16px;
  color:var(--tinta-suave); font-size:14.5px; font-weight:500}
body:has(.contenido) .cargando{display:none}
.giro{width:22px; height:22px; flex:none; border-radius:50%; border:3px solid var(--azul-fondo); border-top-color:var(--azul-punto);
  animation:girar .8s linear infinite}
@keyframes girar{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion: reduce){ .giro{animation-duration:2.4s} }

/* ── Estados que faltaban ── */
.chip.azul{background:var(--azul-fondo); color:var(--azul-texto)}
.tipo-cita.otra{background:var(--sup-mudo); color:var(--tinta-suave)}

/* El conmutador de la agenda tiene cuatro posiciones: en el móvil, que quepa. */
@media (max-width:640px){
  #agenda .bloque-cab{flex-wrap:wrap}
  #agenda .conmutador{width:100%}
  #agenda .conmutador a{flex:1; text-align:center; padding:5px 6px}
}

/* LAS CANCELADAS: una línea baja, en letra pequeña, gris y tachada, con «cancelada» al
 * final. Se ve que ahí hubo una cita sin que quite sitio a las que siguen en pie. */
.ag-cita.cancelada{grid-template-columns:52px minmax(0, 1fr) auto; min-height:0; padding:5px 16px; gap:14px}
.ag-cita.cancelada .ag-hora{font-size:12.5px; font-weight:600}
.ag-cita.cancelada .ag-nombre{font-size:12.5px; font-weight:500}
.ag-cita.cancelada .ag-hora, .ag-cita.cancelada .ag-nombre{text-decoration:line-through; color:var(--apagado)}
.ag-cita.cancelada .ag-quien{opacity:1}
.ag-cancelada{font-size:11.5px; color:var(--apagado); white-space:nowrap}
@media (max-width:640px){ .ag-cita.cancelada{grid-template-columns:48px minmax(0, 1fr) auto} }
.ficha-cita.cancelada h1, .ficha-cita.cancelada .ficha-cita-cuando b{text-decoration:line-through; text-decoration-thickness:2px; color:var(--apagado)}

/* Las anteriores, plegadas debajo de «Todo». */
.ag-anteriores{margin-top:18px}
.ag-anteriores > summary{display:flex; align-items:center; gap:8px; cursor:pointer; font-size:14px; font-weight:600; padding:6px 0; list-style:none}
.ag-anteriores > summary::-webkit-details-marker{display:none}
.ag-anteriores > summary::before{content:'▸'; color:var(--tinta-suave); transition:transform .15s}
.ag-anteriores[open] > summary::before{transform:rotate(90deg)}
.ag-anteriores[open] > summary{margin-bottom:8px}
@media (prefers-reduced-motion: reduce){ .ag-anteriores > summary::before{transition:none} }

/* El aviso de «ejemplo» dentro de un bloque. */
.aviso-ejemplo-bloque{margin:0; font-size:12.5px; color:var(--tinta-suave)}
.aviso-ejemplo-bloque b{color:var(--tinta)}
.bloque-cab .chip.ejemplo{margin-left:auto}

/* Sus citas, en la ficha de una cita. */
.hist-cita{display:grid; grid-template-columns:150px minmax(0, 1fr) auto; align-items:center; gap:12px; padding:9px 16px; font-size:14px}
.hist-cuando{font-variant-numeric:tabular-nums; font-weight:600}
.hist-que{color:var(--tinta-suave); min-width:0}
.hist-que b{color:var(--azul-texto)}
.hist-cita.esta{background:var(--azul-fondo)}
.hist-cita.cancelada .hist-cuando, .hist-cita.cancelada .hist-que{text-decoration:line-through; color:var(--apagado)}
.hist-cita.cancelada .chip{background:transparent; border:1px solid var(--linea); color:var(--apagado)}
@media (max-width:640px){
  .hist-cita{grid-template-columns:minmax(0, 1fr) auto; row-gap:2px}
  .hist-que{grid-column:1; grid-row:2}
  .hist-cita .chip{grid-column:2; grid-row:1 / 3}
}

/* ── Analítica: una ficha por valor ── */
.kpis{list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(auto-fill, minmax(170px, 1fr)); gap:10px}
.kpi{display:flex; flex-direction:column; gap:2px; padding:12px 14px; background:var(--papel); border:1px solid var(--linea); border-radius:12px}
.kpi-nombre{font-size:12.5px; font-weight:600; color:var(--tinta-suave)}
.kpi-valor{font-size:22px; font-weight:700; letter-spacing:-.01em; font-variant-numeric:tabular-nums}
.kpi-valor small{margin-left:4px; font-size:12px; font-weight:500; color:var(--tinta-suave)}
.kpi-pie{font-size:12px; color:var(--tinta-suave); line-height:1.45}
.kpi.fuera{border-color:var(--esp-punto); background:var(--esp-fondo)}
.kpi.fuera .kpi-pie b, .kpi.fuera .kpi-valor{color:var(--esp-texto)}
b.tarde{color:var(--esp-texto)}

/* ── Los tests: las respuestas, tal cual ── */
.test + .test{margin-top:14px}
.test-titulo{margin:0 0 6px; font-size:14px}
.respuestas .perfil-fila dd{white-space:pre-line}
.sin-respuesta{margin:8px 0 0; font-size:12.5px; color:var(--tinta-suave)}
.sin-respuesta b{color:var(--tinta)}

/* ── La consulta ── */
.consulta-acciones{display:flex; flex-wrap:wrap; gap:10px}
.consulta-acciones .btn, .consulta-acciones .mini{min-height:44px}
.btn .icono, .mini .icono{width:18px; height:18px}
.modal-corto{width:min(460px, calc(100vw - 32px))}
.aviso.bien{background:var(--ok-fondo); color:var(--ok-texto); border-color:transparent}

/* ── La ficha de la cita, en una cabecera ── */
.ficha-datos{display:flex; flex-wrap:wrap; gap:6px 0; margin:10px 0 0; font-size:14px; font-weight:600; font-variant-numeric:tabular-nums}
.ficha-datos span + span::before{content:'·'; margin:0 9px; color:var(--apagado); font-weight:400}
.ficha-datos span[title]{cursor:help}
.ficha-cita .ficha-cita-acciones{margin-top:16px}
.preparacion{display:flex; flex-wrap:wrap; gap:8px; margin:14px 0 0; padding-top:14px; border-top:1px solid var(--linea-suave)}
.prep{display:inline-flex; align-items:center; gap:6px; padding:4px 11px; border-radius:999px; font-size:13px; font-weight:600; text-decoration:none}
.prep .icono{width:14px; height:14px}
.prep.si{background:var(--ok-fondo); color:var(--ok-texto)}
.prep.si:hover{text-decoration:underline; text-underline-offset:3px}
.prep.no{background:var(--sup-mudo); color:var(--tinta-suave)}
.prep.no-se{background:var(--esp-fondo); color:var(--esp-texto); font-weight:500}
.bloque-fecha{margin-left:auto; font-size:13px}
details.sin-respuesta{margin:8px 0 0; font-size:12.5px; color:var(--tinta-suave)}
details.sin-respuesta summary{cursor:pointer; width:max-content}
details.sin-respuesta p{margin:6px 0 0}
.ficha .test-titulo{margin:14px 0 6px}

/* Cinco vistas en el conmutador: en el móvil, se reparten el ancho. */
@media (max-width:640px){ #agenda .conmutador a{font-size:12.5px; padding:5px 2px} }
.ficha .ficha-cita{display:block}

/* Las respuestas de un test: pregunta y respuesta en una línea, sin mayúsculas, compactas. */
.respuestas .perfil-fila{grid-template-columns:minmax(150px, 34%) 1fr; padding:8px 16px; gap:16px}
.respuestas .perfil-fila dt{text-transform:none; letter-spacing:0; font-size:13px; font-weight:500; color:var(--tinta-suave)}
.respuestas .perfil-fila dd{font-size:14px}
@media (max-width:640px){ .respuestas .perfil-fila{grid-template-columns:1fr; gap:2px} }
.ficha .perfil-datos{margin:0; background:var(--papel)}
/* En el móvil, «Entrar» a la derecha de la fila, no en una tercera línea. */
@media (max-width:640px){
  .ag-cita:not(.cancelada){grid-template-columns:48px minmax(0, 1fr) auto}
  .ag-cita:not(.cancelada) .ag-chips{grid-column:2}
  .ag-cita:not(.cancelada) .ag-accion{grid-column:3; grid-row:1 / span 2; align-self:center}
}

/* ── La llamada de confirmación, en la cabecera ── */
.llamada{margin:12px 0 0; padding:8px 12px; border-radius:10px; font-size:13.5px}
.llamada.si{background:var(--ok-fondo); color:var(--ok-texto)}
.llamada.no, .llamada.no-se{background:var(--esp-fondo); color:var(--esp-texto)}
.llamada.mal{background:var(--mal-fondo); color:var(--mal-texto)}
.llamada.neutro{background:var(--sup-mudo); color:var(--tinta-suave)}
.ag-alerta{color:var(--mal-texto); font-weight:600; text-decoration:none}

/* ── Los cuestionarios de otras áreas, plegados ── */
.plegable{background:var(--papel); border:1px solid var(--linea); border-radius:12px; overflow:hidden}
.plegable + .plegable{margin-top:8px}
.plegable > summary{cursor:pointer; padding:11px 16px; font-size:14px; list-style:none; display:flex; align-items:center; gap:6px}
.plegable > summary::-webkit-details-marker{display:none}
.plegable > summary::before{content:'▸'; color:var(--tinta-suave); transition:transform .15s}
.plegable[open] > summary::before{transform:rotate(90deg)}
.plegable .perfil-datos{border:0; border-top:1px solid var(--linea); border-radius:0}
@media (prefers-reduced-motion: reduce){ .plegable > summary::before{transition:none} }
/* Los otros informes de la ficha: el cuerpo, debajo del título; el texto libre, con sus saltos de línea. */
.plegable-cuerpo .sin-respuesta{margin:0; padding:8px 16px 12px}
.informe-texto{margin:0; padding:12px 16px; border-top:1px solid var(--linea); font-size:14px; white-space:pre-line}
.plegable-cuerpo > .vacio{margin:0; padding:12px 16px; border-top:1px solid var(--linea)}

/* ── Los botones, otra vez al final ── */
.ficha-final{padding-top:4px}
.ficha-final .ficha-cita-acciones{margin:0}
.ficha .test + .test{margin-top:18px}
.ficha .test-titulo{margin:0 0 8px}

/* En «Pasadas» todo ha pasado: no se atenúa, que se lea igual de bien. */
.ag-pasadas .ag-cita.pasada .ag-hora, .ag-pasadas .ag-cita.pasada .ag-quien{opacity:1}
/* Seis vistas: si en un móvil estrecho no caben, el conmutador se desliza de lado. */
#agenda .conmutador{max-width:100%; overflow-x:auto; scrollbar-width:none}
#agenda .conmutador a{white-space:nowrap}

/* ── El cierre de una cita ── */
.opciones-cierre{display:grid; gap:10px; grid-template-columns:1fr}
.opciones-cierre .opcion{padding:14px 16px}
.opciones-cierre .opcion:has(input:checked){border-color:var(--azul-punto); background:var(--azul-fondo)}
.aviso.debug{background:var(--azul-fondo); color:var(--azul-texto)}

/* Los tres pasos del plan */
.pasos-plan{display:flex; gap:8px; list-style:none; margin:0 0 16px; padding:0; flex-wrap:wrap}
.pasos-plan li{display:flex; align-items:center; gap:8px; padding:6px 12px 6px 6px; border-radius:999px; background:var(--papel); border:1px solid var(--linea); font-size:13.5px; color:var(--tinta-suave)}
.pasos-plan li span{display:inline-flex; width:22px; height:22px; border-radius:50%; align-items:center; justify-content:center; background:var(--sup-mudo); font-size:12px; font-weight:700}
.pasos-plan li[aria-current="step"]{border-color:var(--azul-punto); color:var(--tinta); font-weight:600}
.pasos-plan li[aria-current="step"] span{background:var(--azul-punto); color:#fff}
.pasos-plan li.hecho span{background:var(--ok-fondo); color:var(--ok-texto)}
.notas{margin:0 0 14px; padding-left:22px; display:flex; flex-direction:column; gap:8px}
.notas li{padding:8px 12px; background:var(--sup-mudo); border-radius:10px; font-size:14px}
.notas li span{white-space:pre-line}
.notas li .enlace-boton{margin-left:8px; font-size:12.5px}

/* El formulario del plan, con las secciones del del clínico */
.plan-form{display:flex; flex-direction:column; gap:12px}
.plan-form h2{margin:12px 0 0; padding-bottom:6px; font-size:17px; border-bottom:1px solid var(--linea)}
.plan-form h2:first-of-type{margin-top:0}
.plan-form .campo{display:flex; flex-direction:column; gap:5px; font-size:13.5px; font-weight:600}
.plan-form .campo small{font-weight:400; color:var(--tinta-suave)}
.plan-form textarea, .plan-form input[type="number"], .plan-form select{font:inherit; font-weight:400; font-size:14.5px; padding:9px 11px; border:1px solid var(--linea-fuerte); border-radius:10px; background:var(--papel); color:var(--tinta); width:100%}
.plan-form textarea{resize:vertical; min-height:60px}
.rejilla-cifras{display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:12px}
@media (max-width:640px){ .rejilla-cifras{grid-template-columns:repeat(2, minmax(0, 1fr))} }
.plan-form fieldset.campo{border:0; margin:0; padding:0}
.plan-form legend{font-weight:600; font-size:13.5px; margin-bottom:6px}
.check{display:flex; align-items:flex-start; gap:9px; padding:5px 0; font-weight:400; font-size:14px; cursor:pointer}
.check input{margin-top:3px; accent-color:var(--azul-punto)}
.dos-columnas{display:grid; grid-template-columns:1fr 1fr; gap:0 18px}
@media (max-width:640px){ .dos-columnas{grid-template-columns:1fr} }
.oblig{color:var(--mal-texto)}
.payload{margin:12px 0 0; padding:12px; border-radius:10px; background:var(--sup-mudo); font:12.5px/1.5 var(--mono); overflow-x:auto; max-height:420px}
#notas-cita .campo{display:flex; flex-direction:column; gap:6px; font-size:13.5px; font-weight:600}
#notas-cita textarea{font:inherit; font-weight:400; font-size:14.5px; padding:10px 12px; border:1px solid var(--linea-fuerte); border-radius:10px; background:var(--papel); color:var(--tinta); resize:vertical}
.plan-form .campo, #notas-cita .campo{margin:0} .plan-form .campo textarea{min-height:60px}

/* ── Siguientes pasos de una paciente interesada ── */
.pasos-siguientes .paso-sig{display:flex; align-items:center; justify-content:space-between; gap:14px; padding:14px 16px}
.paso-sig-que{display:flex; flex-direction:column; gap:2px; min-width:0}
.paso-sig-que small{font-size:13px; color:var(--tinta-suave)}
.paso-sig.hecho .paso-sig-que small{color:var(--ok-texto)}
.paso-sig.plan{background:var(--azul-fondo)}
.paso-sig .btn, .paso-sig .mini{flex:none}
@media (max-width:560px){ .pasos-siguientes .paso-sig{flex-direction:column; align-items:stretch} }
/* Toda su información, plegada */
.toda-info > summary{padding:13px 16px}
.toda-info-cuerpo{padding:4px 16px 16px; display:flex; flex-direction:column; gap:20px}

/* ── Disponibilidad: el calendario de tres meses ── */
.dc-calendario{display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:14px}
@media (max-width:900px){ .dc-calendario{grid-template-columns:1fr} }
.dc-mes{background:var(--papel); border:1px solid var(--linea); border-radius:12px; padding:12px}
.dc-mes h3{margin:0 0 8px; font-size:14px}
.dc-sem, .dc-dias{display:grid; grid-template-columns:repeat(7, minmax(0, 1fr)); gap:3px}
.dc-sem span{font-size:11px; font-weight:700; color:var(--apagado); text-align:center; padding-bottom:2px}
.dc-dia{position:relative; display:flex; flex-direction:column; align-items:center; justify-content:flex-start; gap:1px; min-height:46px; padding:4px 2px;
  border-radius:8px; text-decoration:none; color:var(--tinta); border:1px solid transparent}
.dc-dia:hover{background:var(--linea-suave)}
.dc-num{font-size:13px; font-weight:600; font-variant-numeric:tabular-nums}
.dc-dia.pasado{color:var(--apagado)}
.dc-dia.pasado .dc-num{font-weight:500}
.dc-dia.hoy .dc-num{color:var(--azul-punto)}
.dc-dia.hoy{border-color:var(--azul-punto)}
.dc-dia.elegido{background:var(--azul-fondo); border-color:var(--azul-punto)}
.dc-dia:focus-visible{outline:2px solid var(--azul-punto); outline-offset:1px}
/* Con citas: un número en un círculo arriba a la derecha. */
.dc-citas{position:absolute; top:2px; right:3px; min-width:15px; height:15px; padding:0 4px; border-radius:999px; background:var(--azul-punto); color:#fff;
  font-size:10px; font-weight:700; line-height:15px; text-align:center}
/* Horas libres: debajo del número, en verde. */
.dc-libre{font-size:10.5px; font-weight:600; color:var(--ok-texto); background:var(--ok-fondo); border-radius:5px; padding:0 4px; white-space:nowrap}
.dc-muestra{position:static; display:inline-block}
.dc-detalle{margin-top:16px}
.dc-detalle h3{margin:0 0 2px; font-size:16px}
.dc-franja{display:grid; grid-template-columns:110px minmax(0, 1fr) auto; align-items:center; gap:12px; padding:10px 16px; font-size:14px}
.dc-hora{font-weight:700; font-variant-numeric:tabular-nums}
.dc-que{display:flex; align-items:center; gap:8px; min-width:0}
.dc-que a{color:var(--tinta); font-weight:600; text-decoration:none; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.dc-que a:hover{text-decoration:underline}
.dc-franja.libre{background:var(--ok-fondo)}
.dc-franja.libre .dc-que{color:var(--ok-texto); font-weight:600}
.dc-dur{font-size:12.5px; color:var(--ok-texto)}
.dc-franja.cancelada .dc-hora, .dc-franja.cancelada .dc-que a{text-decoration:line-through; color:var(--apagado); font-weight:500}
@media (max-width:560px){ .dc-franja{grid-template-columns:90px minmax(0, 1fr); row-gap:4px} .dc-franja > :last-child{grid-column:2} }

/* ── Citas por cerrar, al final de las tareas ── */
.por-cerrar{margin-top:16px}
.por-cerrar h3{display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin:0 0 8px; font-size:14.5px}
.por-cerrar h3 .tenue{font-weight:400; font-size:12.5px}

/* ── El plan: paso 1 y revisión ── */
.plan-paso1, .plan-revision{display:flex; flex-direction:column; gap:14px}
.opciones-plantilla{grid-template-columns:repeat(2, minmax(0, 1fr))}
@media (max-width:640px){ .opciones-plantilla{grid-template-columns:1fr} }
.pie-paso{align-items:center; gap:14px}
.pie-paso .tenue{font-size:12.5px}
.rev-titulo{margin:16px 0 6px; font-size:14px; color:var(--tinta-suave); text-transform:uppercase; letter-spacing:.05em}
.plan-revision .perfil-datos{margin:0}
.plan-revision .perfil-fila{grid-template-columns:minmax(140px, 30%) 1fr}
.plan-revision .perfil-fila dd{white-space:pre-line}
.perfil-fila.falta{background:var(--mal-fondo)}
.articulos{display:grid; grid-template-columns:1fr 1fr; gap:0 18px; padding:6px 16px 12px; border-top:1px solid var(--linea)}
@media (max-width:640px){ .articulos{grid-template-columns:1fr} }
/* El número de citas, debajo del día, como las horas libres: arriba a la derecha pisaba el número. */
.dc-dia .dc-citas{position:static; display:inline-block; min-width:16px; height:16px; line-height:16px; font-size:10px}
.dc-dia{gap:2px}

/* ── Disponibilidades ── */
.disp-filtros{display:flex; flex-wrap:wrap; gap:10px}
.disp-filtros .conmutador{max-width:100%; overflow-x:auto; scrollbar-width:none}
.disp-filtros .conmutador a{white-space:nowrap}
.aviso-fuerte{padding:14px 18px; border-radius:12px; background:var(--esp-fondo); color:var(--esp-texto); border:1px solid var(--esp-punto)}
.aviso-fuerte h2{margin:0 0 6px; font-size:16px}
.aviso-fuerte ul{margin:0 0 6px; padding-left:20px}
.aviso-fuerte p{margin:6px 0 0}
.aviso-fuerte .tenue{color:var(--esp-texto); opacity:.8; font-size:13px}
.tabla-envoltorio{overflow-x:auto; background:var(--papel); border:1px solid var(--linea); border-radius:12px}
.tabla-semanas{width:100%; border-collapse:collapse; font-size:14px; font-variant-numeric:tabular-nums}
.tabla-semanas th, .tabla-semanas td{padding:9px 12px; text-align:right; border-top:1px solid var(--linea-suave); white-space:nowrap}
.tabla-semanas thead th{border-top:0; font-size:12px; text-transform:uppercase; letter-spacing:.05em; color:var(--tinta-suave)}
.tabla-semanas th[scope="row"], .tabla-semanas thead th:first-child{text-align:left; font-weight:500}
.tabla-semanas tr.pasada{color:var(--tinta-suave)}
.tabla-semanas tr.actual{background:var(--azul-fondo)}
.col-barra{width:30%; min-width:120px}
.reparto{display:flex; height:10px; border-radius:5px; overflow:hidden; background:var(--sup-mudo)}
.b-primera{background:var(--azul-punto)} .b-mant{background:var(--ok-punto)} .b-otra{background:var(--linea-fuerte)}
.b-muestra{display:inline-block; width:12px; height:10px; border-radius:3px; vertical-align:middle}
.sr{position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0)}
.dc-calendario.seis{grid-template-columns:repeat(3, minmax(0, 1fr))}
@media (max-width:900px){ .dc-calendario.seis{grid-template-columns:1fr} }
.dc-dia.sin-ranuras{background:var(--esp-fondo)}
.dc-dia.sin-ranuras.elegido{background:var(--azul-fondo)}
.dc-muestra-sin{display:inline-block; width:14px; height:12px; border-radius:4px; background:var(--esp-fondo); border:1px solid var(--esp-punto); vertical-align:middle}
.disp-dia{display:grid; grid-template-columns:1fr 1fr; gap:16px; margin-top:8px}
@media (max-width:900px){ .disp-dia{grid-template-columns:1fr} }
.disp-dia h4{margin:0 0 6px; font-size:13px; text-transform:uppercase; letter-spacing:.05em; color:var(--tinta-suave)}
.disp-prof{display:grid; grid-template-columns:150px 1fr; gap:12px; align-items:center; padding:10px 14px}
.disp-prof-nombre{display:flex; flex-direction:column}
.disp-prof-nombre small{font-size:12px; color:var(--tinta-suave)}
@media (max-width:560px){ .disp-prof{grid-template-columns:1fr} }

/* ── Entrar: la foto de la consulta de fondo y la tarjeta encima ──
 * La foto tiene la escena a la derecha (médico y paciente frente al «Senda Health» de la
 * pared) y la izquierda lisa: la tarjeta va a la izquierda, sobre la pared, y no tapa a nadie.
 * Un velo del color del fondo, más denso en la izquierda, mantiene el texto legible en los
 * dos temas. */
.pagina-entrar{min-height:100vh; background:var(--fondo-app) url(/img/entrar.jpg) center right / cover no-repeat fixed}
.pagina-entrar::before{content:''; position:fixed; inset:0; pointer-events:none;
  background:linear-gradient(90deg, color-mix(in srgb, var(--fondo-app) 78%, transparent) 0%, color-mix(in srgb, var(--fondo-app) 35%, transparent) 45%, transparent 70%)}
.pagina-entrar .barra-publica{background:color-mix(in srgb, var(--papel) 82%, transparent); backdrop-filter:blur(8px)}
.pagina-entrar .contenido{position:relative; max-width:1100px}
.pagina-entrar .entrar{margin:14vh 0 0 4vw; box-shadow:var(--sombra-alta); background:color-mix(in srgb, var(--papel) 94%, transparent); backdrop-filter:blur(6px)}
@media (max-width:760px){
  .pagina-entrar{background-position:72% center}
  .pagina-entrar::before{background:color-mix(in srgb, var(--fondo-app) 55%, transparent)}
  .pagina-entrar .entrar{margin:8vh auto 0}
}

/* ── Etiqueta de área ── */
.tag-area{display:inline-flex; align-items:center; margin-left:6px; padding:1px 7px; border-radius:6px; font-size:11px; font-weight:600; border:1px solid var(--linea); color:var(--tinta-suave); background:var(--papel)}
.ficha-cita-etiquetas{flex-wrap:wrap}
.ficha-cita-etiquetas .tag-area{margin-left:0}

/* ── Primera cita, como la ve una paciente ── */
.pc-dias{display:grid; grid-template-columns:repeat(10, minmax(0, 1fr)); gap:8px}
@media (max-width:900px){ .pc-dias{grid-template-columns:repeat(5, minmax(0, 1fr))} }
.pc-dia{display:flex; flex-direction:column; align-items:center; gap:1px; padding:8px 4px; border-radius:12px; background:var(--papel); border:1px solid var(--linea);
  text-decoration:none; color:var(--tinta)}
.pc-dia:hover{border-color:var(--azul-punto)}
.pc-dia b{font-size:20px; line-height:1.1}
.pc-sem, .pc-mes{font-size:11.5px; color:var(--tinta-suave); text-transform:capitalize}
.pc-dia small{margin-top:3px; font-size:11px; font-weight:600; color:var(--ok-texto)}
.pc-dia.elegido{background:var(--azul-punto); border-color:var(--azul-punto); color:#fff}
.pc-dia.elegido .pc-sem, .pc-dia.elegido .pc-mes, .pc-dia.elegido small{color:#fff}
.pc-horas{margin-top:14px}
.pc-horas h3{margin:0 0 8px; font-size:15px}
.pc-hora{display:grid; grid-template-columns:110px minmax(0, 1fr) auto; align-items:center; gap:12px; padding:10px 16px; font-size:14px}
.pc-hora .dc-que{gap:10px}
.pc-hora.raro{background:var(--esp-fondo)}


/* ── Primera cita: cambiar de día sin recargar ──
 * Los diez días llegan ya cargados. Cada uno es un botón de opción oculto (.pc-r) con su
 * etiqueta (.pc-dia); el panel del marcado se enseña con :has(). Diez reglas fijas, porque
 * la política de contenido no deja meter <style> en la página. */
.pc-r{position:absolute; opacity:0; pointer-events:none}
.pc-panel{display:none}
.pc-dia{cursor:pointer; user-select:none}
#primera:has(.pc-r:focus-visible) .pc-dias{outline:2px solid var(--azul-punto); outline-offset:4px; border-radius:12px}
#primera:has(#pc-0:checked) .pc-panel.n0{display:block}
#primera:has(#pc-0:checked) .pc-dia[for="pc-0"]{background:var(--azul-punto); border-color:var(--azul-punto); color:#fff}
#primera:has(#pc-0:checked) .pc-dia[for="pc-0"] :is(.pc-sem, .pc-mes, small){color:#fff}
#primera:has(#pc-1:checked) .pc-panel.n1{display:block}
#primera:has(#pc-1:checked) .pc-dia[for="pc-1"]{background:var(--azul-punto); border-color:var(--azul-punto); color:#fff}
#primera:has(#pc-1:checked) .pc-dia[for="pc-1"] :is(.pc-sem, .pc-mes, small){color:#fff}
#primera:has(#pc-2:checked) .pc-panel.n2{display:block}
#primera:has(#pc-2:checked) .pc-dia[for="pc-2"]{background:var(--azul-punto); border-color:var(--azul-punto); color:#fff}
#primera:has(#pc-2:checked) .pc-dia[for="pc-2"] :is(.pc-sem, .pc-mes, small){color:#fff}
#primera:has(#pc-3:checked) .pc-panel.n3{display:block}
#primera:has(#pc-3:checked) .pc-dia[for="pc-3"]{background:var(--azul-punto); border-color:var(--azul-punto); color:#fff}
#primera:has(#pc-3:checked) .pc-dia[for="pc-3"] :is(.pc-sem, .pc-mes, small){color:#fff}
#primera:has(#pc-4:checked) .pc-panel.n4{display:block}
#primera:has(#pc-4:checked) .pc-dia[for="pc-4"]{background:var(--azul-punto); border-color:var(--azul-punto); color:#fff}
#primera:has(#pc-4:checked) .pc-dia[for="pc-4"] :is(.pc-sem, .pc-mes, small){color:#fff}
#primera:has(#pc-5:checked) .pc-panel.n5{display:block}
#primera:has(#pc-5:checked) .pc-dia[for="pc-5"]{background:var(--azul-punto); border-color:var(--azul-punto); color:#fff}
#primera:has(#pc-5:checked) .pc-dia[for="pc-5"] :is(.pc-sem, .pc-mes, small){color:#fff}
#primera:has(#pc-6:checked) .pc-panel.n6{display:block}
#primera:has(#pc-6:checked) .pc-dia[for="pc-6"]{background:var(--azul-punto); border-color:var(--azul-punto); color:#fff}
#primera:has(#pc-6:checked) .pc-dia[for="pc-6"] :is(.pc-sem, .pc-mes, small){color:#fff}
#primera:has(#pc-7:checked) .pc-panel.n7{display:block}
#primera:has(#pc-7:checked) .pc-dia[for="pc-7"]{background:var(--azul-punto); border-color:var(--azul-punto); color:#fff}
#primera:has(#pc-7:checked) .pc-dia[for="pc-7"] :is(.pc-sem, .pc-mes, small){color:#fff}
#primera:has(#pc-8:checked) .pc-panel.n8{display:block}
#primera:has(#pc-8:checked) .pc-dia[for="pc-8"]{background:var(--azul-punto); border-color:var(--azul-punto); color:#fff}
#primera:has(#pc-8:checked) .pc-dia[for="pc-8"] :is(.pc-sem, .pc-mes, small){color:#fff}
#primera:has(#pc-9:checked) .pc-panel.n9{display:block}
#primera:has(#pc-9:checked) .pc-dia[for="pc-9"]{background:var(--azul-punto); border-color:var(--azul-punto); color:#fff}
#primera:has(#pc-9:checked) .pc-dia[for="pc-9"] :is(.pc-sem, .pc-mes, small){color:#fff}

/* ── Primera cita ── */
.tabla-primera .libres{color:var(--ok-texto)}
.ocupacion{display:flex; align-items:center; gap:8px; justify-content:flex-end}
.ocupacion .reparto{flex:1; min-width:60px}
.ocupacion > span:last-child{min-width:40px; text-align:right}
.ag-fecha{display:block; font-size:11px; font-weight:500; color:var(--tinta-suave)}
.tabla-primera th, .tabla-primera td{padding:8px 10px}
.tabla-primera .col-barra{width:auto; min-width:120px}
.tabla-primera thead th{font-size:11px}

/* ── Primeras citas: pestañas Próximas / Pasadas, sin recargar ── */
.pt-r{position:absolute; opacity:0; pointer-events:none}
.pt-pestanas{margin-bottom:10px}
.pt-pestanas label{display:inline-flex; align-items:center; gap:6px; padding:6px 14px; border-radius:8px; font-size:13.5px; font-weight:600; color:var(--tinta-suave); cursor:pointer}
.pt-panel{display:none}
#citas-primera:has(#pt-prox:checked) .panel-prox, #citas-primera:has(#pt-pas:checked) .panel-pas{display:block}
#citas-primera:has(#pt-prox:checked) label[for="pt-prox"], #citas-primera:has(#pt-pas:checked) label[for="pt-pas"]{background:var(--papel); color:var(--azul-punto); box-shadow:var(--sombra)}
#citas-primera:has(.pt-r:focus-visible) .pt-pestanas{outline:2px solid var(--azul-punto); outline-offset:3px}
.estados-pasadas{display:flex; flex-wrap:wrap; gap:6px; margin:0 0 12px}

/* Los estados de las pasadas, como filtro (por defecto, todas menos las canceladas). */
.estados-pasadas label.filtro{cursor:pointer; user-select:none}
#citas-primera:has(#pf-todas:checked) .lista-pasadas > li.est-cancelada{display:none}
#citas-primera:has(#pf-todas:checked) label[for="pf-todas"]{outline:2px solid var(--azul-punto); outline-offset:1px; color:var(--azul-texto)}
.estados-pasadas label[for="pf-todas"]{background:var(--papel); border:1px solid var(--linea)}
#citas-primera:has(#pf-interesada:checked) .lista-pasadas > li:not(.est-interesada){display:none}
#citas-primera:has(#pf-interesada:checked) label[for="pf-interesada"]{outline:2px solid currentColor; outline-offset:1px}
#citas-primera:has(#pf-no_interesada:checked) .lista-pasadas > li:not(.est-no_interesada){display:none}
#citas-primera:has(#pf-no_interesada:checked) label[for="pf-no_interesada"]{outline:2px solid currentColor; outline-offset:1px}
#citas-primera:has(#pf-hecha:checked) .lista-pasadas > li:not(.est-hecha){display:none}
#citas-primera:has(#pf-hecha:checked) label[for="pf-hecha"]{outline:2px solid currentColor; outline-offset:1px}
#citas-primera:has(#pf-no_vino:checked) .lista-pasadas > li:not(.est-no_vino){display:none}
#citas-primera:has(#pf-no_vino:checked) label[for="pf-no_vino"]{outline:2px solid currentColor; outline-offset:1px}
#citas-primera:has(#pf-sin_cerrar:checked) .lista-pasadas > li:not(.est-sin_cerrar){display:none}
#citas-primera:has(#pf-sin_cerrar:checked) label[for="pf-sin_cerrar"]{outline:2px solid currentColor; outline-offset:1px}
#citas-primera:has(#pf-cancelada:checked) .lista-pasadas > li:not(.est-cancelada){display:none}
#citas-primera:has(#pf-cancelada:checked) label[for="pf-cancelada"]{outline:2px solid currentColor; outline-offset:1px}
.lista-pasadas .ag-hora{font-size:14px}

/* ── Ocultar canceladas ──
 * La casilla esconde las canceladas del bloque en el que está, y los días que se quedan sin
 * nada. Las pasadas de Primera cita tienen su propio filtro y no las toca. */
.resumen-con-interruptor{display:flex; align-items:center; justify-content:space-between; gap:8px 14px; flex-wrap:wrap}
.resumen-con-interruptor .bloque-resumen{margin:0}
.interruptor{display:inline-flex; align-items:center; gap:8px; font-size:13px; font-weight:500; color:var(--tinta-suave); cursor:pointer; user-select:none; white-space:nowrap}
.interruptor input{position:absolute; opacity:0; pointer-events:none}
.interruptor-pista{position:relative; width:30px; height:18px; border-radius:999px; background:var(--linea-fuerte); transition:background .15s}
.interruptor-pista::after{content:''; position:absolute; top:2px; left:2px; width:14px; height:14px; border-radius:50%; background:var(--papel); box-shadow:0 1px 2px rgba(0,0,0,.2); transition:transform .15s}
.interruptor:has(input:checked) .interruptor-pista{background:var(--azul-punto)}
.interruptor:has(input:checked) .interruptor-pista::after{transform:translateX(12px)}
.interruptor:has(input:focus-visible) .interruptor-pista{outline:2px solid var(--azul-punto); outline-offset:2px}
@media (prefers-reduced-motion: reduce){ .interruptor-pista, .interruptor-pista::after{transition:none} }
.con-interruptor:has(.ocultar-canc:checked) :is(.lista:not(.lista-pasadas) > li.cancelada, .dc-franja.cancelada){display:none}
.con-interruptor:has(.ocultar-canc:checked) .ag-dia:not(:has(li:not(.cancelada))){display:none}

/* ── La ficha de una cita, por fases ──
 * Cabecera pequeña; debajo, la barra de fases (pestañas sin JS: radios ocultos) y solo el
 * panel de la fase marcada. */
.cita-cab{background:var(--papel); border:1px solid var(--linea); border-radius:14px; padding:14px 18px; display:flex; flex-direction:column; gap:6px}
.cita-cab.es-primera{border-left:4px solid var(--azul-punto)}
.cita-cab-fila{display:flex; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap}
.cita-cab-acciones{display:flex; align-items:center; gap:8px; flex-wrap:wrap}
.cita-cab h1{margin:0; font-size:19px; letter-spacing:-.01em}
.cita-cab.cancelada h1{text-decoration:line-through; color:var(--apagado)}
.cita-cab-cuando{margin:0; font-size:13.5px; color:var(--tinta-suave)}
.cita-cab .ficha-datos{margin:2px 0 0}
/* Pedir información: un desplegable en la cabecera. */
.pedir-info{position:relative}
.pedir-info > summary{list-style:none; cursor:pointer}
.pedir-info > summary::-webkit-details-marker{display:none}
.pedir-info > summary::after{content:' ▾'}
.pedir-info ul{position:absolute; right:0; top:calc(100% + 6px); z-index:20; min-width:290px; list-style:none; margin:0; padding:6px; background:var(--papel); border:1px solid var(--linea); border-radius:12px; box-shadow:var(--sombra-alta)}
.pedir-item{display:flex; align-items:flex-start; gap:8px; padding:9px 10px; border-radius:8px; color:var(--tinta); text-decoration:none; font-size:14px}
.pedir-item span{display:flex; flex-direction:column; gap:1px}
.pedir-item small{font-size:12.5px; color:var(--tinta-suave)}
a.pedir-item:hover, a.pedir-item:focus-visible{background:var(--azul-fondo)}
.pedir-item.hecho{color:var(--ok-texto)}
.pedir-item .icono{width:16px; height:16px; margin-top:2px}
/* Las fases. */
.fases{display:flex; flex-direction:column; gap:10px}
.ver-fase{position:absolute; opacity:0; pointer-events:none}
.cita-fases{display:flex; gap:6px; flex-wrap:wrap}
.cita-fases label{flex:1 1 0; min-width:92px; display:flex; align-items:center; gap:8px; padding:8px 10px; border-radius:10px; border:1px solid var(--linea); background:var(--papel); color:var(--tinta-suave); font-size:13px; font-weight:600; cursor:pointer}
.cita-fases label > span:last-child{min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.fase-num{display:inline-grid; place-items:center; width:22px; height:22px; flex:none; border-radius:50%; background:var(--linea-suave); color:var(--tinta-suave); font-size:12px; font-weight:700}
.cita-fases .hecha{color:var(--ok-texto)}
.cita-fases .hecha .fase-num, .fase-panel.hecha .fase-num{background:var(--ok-fondo); color:var(--ok-texto)}
.cita-fases .actual .fase-num, .fase-panel.actual .fase-num{background:var(--azul-punto); color:#fff}
.cita-fases .cerrada{opacity:.55}
.fases:has(#ver-previo:checked) label[for=ver-previo], .fases:has(#ver-video:checked) label[for=ver-video], .fases:has(#ver-notas:checked) label[for=ver-notas],
.fases:has(#ver-plan:checked) label[for=ver-plan], .fases:has(#ver-cierre:checked) label[for=ver-cierre],
.fases:has(#ver-recetas:checked) label[for=ver-recetas]{border-color:var(--azul-punto); background:var(--azul-fondo); color:var(--azul-texto)}
.fases:has(.ver-fase:focus-visible) .cita-fases{outline:2px solid var(--azul-punto); outline-offset:3px; border-radius:12px}
.fase-panel{display:none; flex-direction:column; gap:14px; background:var(--papel); border:1px solid var(--linea); border-radius:12px; padding:14px 16px 18px}
.fases:has(#ver-previo:checked) #fase-previo, .fases:has(#ver-video:checked) #fase-video, .fases:has(#ver-notas:checked) #fase-notas, .fases:has(#ver-plan:checked) #fase-plan,
.fases:has(#ver-cierre:checked) #fase-cierre, .fases:has(#ver-recetas:checked) #fase-recetas{display:flex}
.fase-panel-cab{display:flex; align-items:center; gap:10px}
.fase-panel-cab h2{margin:0; font-size:16px}
.fase-estado{margin-left:auto; font-size:12px; font-weight:600; color:var(--tinta-suave)}
.fase-panel.hecha .fase-estado{color:var(--ok-texto)}
.fase-panel.actual .fase-estado{color:var(--azul-texto)}
.fase-panel > .bloque{margin:0}
.fase-panel > .bloque > .bloque-cab{display:none}   /* el título ya lo dice la fase */
.previas h3, .video-resumen h3{margin:0 0 6px; font-size:14px}
.opciones-plan{display:grid; grid-template-columns:1fr 1fr; gap:12px}
.opcion-plan{display:flex; flex-direction:column; gap:6px; padding:16px; border:1px solid var(--linea); border-radius:12px; color:var(--tinta); text-decoration:none; background:var(--papel)}
.opcion-plan small{font-size:13px; color:var(--tinta-suave); line-height:1.45; flex:1}
.opcion-plan > .btn, .opcion-plan > .mini{align-self:flex-start; margin-top:4px}
.opcion-plan.principal{border-color:var(--azul-punto); background:var(--azul-fondo)}
.opcion-plan:hover{border-color:var(--azul-punto)}
@media (max-width:640px){ .opciones-plan{grid-template-columns:1fr} }
.pedir-sep{border-top:1px solid var(--linea-suave); margin-top:4px; padding-top:4px}
/* Recetas */
.recetas .receta{display:flex; align-items:center; gap:12px; padding:11px 14px}
.receta-que{flex:1; min-width:0; display:flex; flex-wrap:wrap; align-items:baseline; gap:0 4px; font-size:14px}
.receta-que small{flex-basis:100%; font-size:12.5px; color:var(--tinta-suave)}
.receta.anulada .receta-que{text-decoration:line-through; color:var(--apagado)}
.receta form{margin:0}
.receta-form{display:flex; flex-direction:column; gap:4px; padding:14px; border:1px solid var(--linea); border-radius:12px}
.receta-form h3{margin:0 0 6px; font-size:14px}
.rejilla-receta{display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:0 14px}
.receta-form input:not([type=hidden]), .receta-form select{width:100%; box-sizing:border-box}
.duracion{display:flex; gap:8px}
.duracion input{max-width:90px}
@media (max-width:640px){ .rejilla-receta{grid-template-columns:1fr} }
.notas-guardadas{display:flex; flex-direction:column; gap:8px}
.notas-guardadas h3{margin:0; font-size:14px}
.nota-guardada{border:1px solid var(--linea); border-radius:10px; overflow:hidden}
.nota-guardada header{display:flex; align-items:center; gap:6px; padding:9px 14px; font-size:13.5px; background:var(--linea-suave)}
.nota-guardada header .chip{margin-left:auto}
.nota-guardada .informe-texto{border-top:0}
.video-resumen{padding:12px 14px; border:1px dashed var(--linea-fuerte); border-radius:10px}
.video-resumen p{margin:0; font-size:13.5px}
.cita-fases label[for=ver-video]{flex-grow:2}
.docs-analitica{list-style:none; margin:10px 0 6px; padding:0; display:flex; flex-direction:column; gap:6px}
.docs-analitica li{display:flex; align-items:center; gap:10px; padding:9px 12px; border:1px solid var(--linea); border-radius:10px; font-size:13.5px}
.docs-analitica li > span{flex:1; min-width:0}
.docs-analitica .icono{width:16px; height:16px; color:var(--tinta-suave); flex:none}
.mini-pasos{margin:0; padding-left:20px; font-size:14px; color:var(--tinta-suave); display:flex; flex-direction:column; gap:4px}
.mini-pasos b{color:var(--tinta)}
.checks{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:8px}
.check{display:flex; align-items:center; gap:10px; font-size:14px}
.check.si{color:var(--ok-texto)}
.check.si .icono{width:18px; height:18px}
.check-vacio{width:16px; height:16px; flex:none; border:2px solid var(--linea-fuerte); border-radius:5px}
.check.no-se{color:var(--tinta-suave)}
@media (max-width:640px){
  .cita-fases label{min-width:calc(33% - 6px); padding:7px 8px; font-size:12.5px}
  .pedir-info ul{right:auto; left:0; min-width:min(290px, calc(100vw - 48px))}
}

/* ── Interesadas y sin cerrar, debajo de la tabla de semanas ── */
.dos-listas{display:grid; grid-template-columns:1fr 1fr; gap:18px}
@media (max-width:900px){ .dos-listas{grid-template-columns:1fr} }
.dos-listas h3{display:flex; align-items:center; gap:8px; margin:0 0 2px; font-size:15px}
.dos-listas .bloque-resumen{margin:0 0 8px}
a.cifra{font-weight:700; color:var(--azul-texto); text-decoration:underline; text-underline-offset:3px}
a.cifra.tarde{color:var(--esp-texto)}

/* ── Especialidades en el calendario de la Agenda ──
 * Un color por especialidad, el mismo en los dos temas (son marcas pequeñas sobre fondo
 * claro u oscuro y se ven en los dos). Llena: hay ranuras libres; hueca: no hay. */
.esp{display:inline-block; width:7px; height:7px; border-radius:50%; border:1.5px solid var(--c); background:transparent; flex:none}
.esp.hay{background:var(--c)}
.esp.medica{--c:var(--esp-medica)} .esp.psicologia{--c:var(--esp-psicologia)} .esp.nutricion{--c:var(--esp-nutricion)} .esp.af{--c:var(--esp-af)}
.esp:not(.hay){opacity:.45}
.dc-esp{display:flex; gap:2px; margin-top:auto; padding-bottom:1px}
.leyenda-esp{display:inline-flex; align-items:center; gap:4px; margin-left:8px}
.leyenda-esp .esp{width:9px; height:9px}
.esp-grupo + .esp-grupo{margin-top:10px}
.esp-grupo h5{display:flex; align-items:center; gap:7px; margin:0 0 6px; font-size:13.5px}
.esp-grupo h5 .esp{width:10px; height:10px}
.dc-esp .esp{width:8px; height:8px}

/* ── La ayuda: diapositivas verticales, una por paso ──
 * Cada paso ocupa la pantalla y el scroll encaja de uno en otro (scroll-snap). A la derecha,
 * los puntos para saltar. En móvil, apiladas y sin encajar. */
.pagina-ayuda .contenido{padding:0}
.ayuda-snap{height:calc(100dvh - 64px); overflow-y:auto; scroll-snap-type:y mandatory; scroll-behavior:smooth; overscroll-behavior:contain}
.diapo{min-height:100%; box-sizing:border-box; scroll-snap-align:start; scroll-snap-stop:always; display:grid; grid-template-columns:minmax(300px, 0.85fr) minmax(0, 1.15fr); align-items:center; gap:48px; padding:48px max(56px, calc((100vw - 1240px) / 2)) 48px; border-bottom:1px solid var(--linea-suave)}
.diapo.al-reves{grid-template-columns:minmax(0, 1.15fr) minmax(300px, 0.85fr)}
.diapo.al-reves .diapo-texto{order:2}
.diapo.sin-captura{grid-template-columns:minmax(0, 760px); justify-content:center}
.diapo:nth-child(even){background:var(--papel)}
.diapo-texto{font-size:16px; line-height:1.65; max-width:560px}
.diapo-texto p{margin:0 0 12px}
.diapo-texto ul, .diapo-texto ol{margin:0 0 12px; padding-left:22px}
.diapo-texto li{margin:5px 0}
.diapo-paso{display:flex; align-items:center; gap:10px; font-size:13px; font-weight:600; color:var(--tinta-suave); text-transform:uppercase; letter-spacing:.06em}
.diapo-texto h2{margin:6px 0 18px; font-size:34px; line-height:1.15; letter-spacing:-.02em}
.diapo-texto h2 small{display:block; margin-top:6px; font-size:17px; font-weight:500; letter-spacing:0; color:var(--tinta-suave)}
.ayuda-num{display:inline-grid; place-items:center; width:30px; height:30px; flex:none; border-radius:50%; background:var(--azul-punto); color:#fff; font-size:14px; font-weight:700; letter-spacing:0}
.diapo-siguiente{display:inline-block; margin-top:14px; font-size:14px; font-weight:600; color:var(--azul-texto); text-decoration:none}
.diapo-siguiente:hover{text-decoration:underline}
.diapo-captura{margin:0; border-radius:14px; overflow:hidden; border:1px solid var(--linea); box-shadow:var(--sombra-alta); background:var(--fondo-app); max-height:calc(100dvh - 64px - 96px)}
.diapo-captura img{display:block; width:100%; height:auto}
.diapo-captura.alta{position:relative}
.diapo-captura.alta::after{content:''; position:absolute; inset:auto 0 0 0; height:70px; background:linear-gradient(transparent, var(--fondo-app))}
/* La portada: título e índice */
.diapo-portada{grid-template-columns:minmax(0, 860px); justify-content:center; background:var(--azul-fondo) !important}
.diapo-antetitulo{margin:0 0 8px; font-size:13px; font-weight:700; text-transform:uppercase; letter-spacing:.08em; color:var(--azul-texto)}
.diapo-portada h1{margin:0 0 12px; font-size:clamp(34px, 5vw, 54px); line-height:1.05; letter-spacing:-.03em}
.diapo-entrada{margin:0 0 28px; font-size:19px; color:var(--tinta-suave)}
.diapo-indice{list-style:none; margin:0; padding:0; display:grid; grid-template-columns:1fr 1fr; gap:6px 18px}
.diapo-indice a{display:flex; align-items:center; gap:12px; padding:9px 12px; border-radius:10px; color:var(--tinta); text-decoration:none; background:var(--papel); border:1px solid var(--linea)}
.diapo-indice a:hover{border-color:var(--azul-punto)}
.diapo-indice small{color:var(--tinta-suave); font-size:13px}
.diapo-indice .ayuda-num{width:26px; height:26px; font-size:12.5px}
.diapo-sigue{margin:28px 0 0; font-size:14px; font-weight:600; color:var(--azul-texto)}
/* El recorrido de la portada: nueve pasos en orden, con cuándo */
.recorrido-ayuda{list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(2, 1fr); gap:10px; counter-reset:paso}
.recorrido-ayuda a{display:flex; align-items:center; gap:12px; height:100%; box-sizing:border-box; padding:12px 14px; border-radius:12px; background:var(--papel); border:1px solid var(--linea); color:var(--tinta); text-decoration:none}
.recorrido-ayuda a:hover{border-color:var(--azul-punto)}
.recorrido-ayuda a > span:last-child{display:flex; flex-direction:column; gap:1px}
.recorrido-ayuda small{font-size:12px; color:var(--tinta-suave)}
.recorrido-ayuda b{font-size:15px}
/* El texto de cada paso: una frase grande, puntos cortos y «Ver más» */
.diapo-frase{font-size:21px; line-height:1.45; margin:0 0 16px !important}
.diapo-puntos{list-style:none; padding:0 !important; margin:0 0 18px !important; display:flex; flex-direction:column; gap:8px}
.diapo-puntos li{position:relative; padding-left:28px; margin:0 !important}
.diapo-puntos li::before{content:''; position:absolute; left:4px; top:.55em; width:12px; height:7px; border-left:2.5px solid var(--azul-punto); border-bottom:2.5px solid var(--azul-punto); transform:rotate(-45deg) translateY(-3px)}
.diapo-mas{border:1px solid var(--linea); border-radius:12px; background:var(--papel); margin:0 0 8px}
.diapo-mas > summary{cursor:pointer; list-style:none; display:flex; align-items:center; gap:8px; padding:10px 14px; font-size:14px; font-weight:600; color:var(--azul-texto)}
.diapo-mas > summary::-webkit-details-marker{display:none}
.diapo-mas > summary::before{content:'+'; display:inline-grid; place-items:center; width:20px; height:20px; border-radius:50%; background:var(--azul-fondo); font-weight:700}
.diapo-mas[open] > summary::before{content:'−'}
.diapo-mas[open] > summary{border-bottom:1px solid var(--linea-suave)}
.diapo-mas-cuerpo{padding:12px 16px 14px; font-size:15px; line-height:1.6}
.diapo-mas-cuerpo ul{margin:0 0 10px}
.diapo-mas-cuerpo > :last-child{margin-bottom:0}
.diapo-mas-cuerpo .diapo-captura{max-height:340px; margin-top:12px; box-shadow:none}
.diapo-captura figcaption{padding:8px 12px; font-size:12.5px; color:var(--tinta-suave); background:var(--papel); border-top:1px solid var(--linea)}
.diapo:nth-child(even) .diapo-mas{background:var(--fondo-app)}
/* Los puntos de la derecha */
.ayuda-puntos{position:fixed; right:18px; top:50%; transform:translateY(-50%); z-index:5; display:flex; flex-direction:column; gap:10px}
.ayuda-puntos a{position:relative; display:block; width:11px; height:11px; border-radius:50%; background:var(--linea-fuerte); transition:transform .15s, background .15s}
.ayuda-puntos a:hover, .ayuda-puntos a:focus-visible{background:var(--azul-punto); transform:scale(1.3)}
.ayuda-puntos a span{position:absolute; right:20px; top:50%; transform:translateY(-50%); white-space:nowrap; padding:4px 9px; border-radius:7px; background:var(--tinta); color:var(--papel); font-size:12px; opacity:0; pointer-events:none; transition:opacity .15s}
.ayuda-puntos a:hover span, .ayuda-puntos a:focus-visible span{opacity:1}
/* Notas y leyenda (las usan las diapositivas) */
.ayuda-nota{padding:10px 14px; border-radius:10px; background:var(--linea-suave); font-size:14px; line-height:1.5}
.ayuda-nota.importante{background:var(--azul-fondo)}
.ayuda-nota.pronto{background:transparent; border:1px dashed var(--linea-fuerte); color:var(--tinta-suave)}
.ayuda-leyenda{list-style:none; padding:0 !important}
.ayuda-leyenda li{display:flex; align-items:center; gap:8px}
.ayuda-punto{width:14px; height:14px; border-radius:50%; flex:none; background:var(--linea-suave); border:1px solid var(--linea-fuerte)}
.ayuda-punto.hecha{background:var(--ok-punto); border-color:var(--ok-punto)}
.ayuda-punto.actual{background:var(--azul-punto); border-color:var(--azul-punto)}
.ayuda-punto.cerrada{opacity:.4}
.diapo .plegable{margin-top:8px}
.diapo .plegable p{margin:0; padding:0 16px 14px; font-size:14.5px}
@media (prefers-reduced-motion: reduce){ .ayuda-snap{scroll-behavior:auto} .ayuda-puntos a, .ayuda-puntos a span{transition:none} }
@media (max-width:900px){
  .ayuda-snap{height:auto; overflow:visible; scroll-snap-type:none}
  .diapo, .diapo.al-reves, .diapo.sin-captura{grid-template-columns:1fr; gap:22px; min-height:0; padding:36px 16px}
  .diapo{scroll-margin-top:58px}
  .diapo.al-reves .diapo-texto{order:0}
  .diapo-texto h2{font-size:27px}
  .diapo-captura{max-height:none}
  .diapo-indice, .recorrido-ayuda{grid-template-columns:1fr}
  .diapo-frase{font-size:18px}
  .ayuda-puntos{display:none}
}

/* ── La bienvenida al entrar: lleva al tutorial ── */
.bienvenida-fondo{position:fixed; inset:0; z-index:50; display:grid; place-items:center; padding:16px; background:rgba(16,24,40,.45); backdrop-filter:blur(3px)}
.bienvenida-fondo:has(.bienvenida:not([open])){display:none}
.bienvenida{position:static; margin:0; width:min(520px, 100%); box-sizing:border-box; padding:28px 28px 22px; border:1px solid var(--linea); border-radius:18px; background:var(--papel); color:var(--tinta); box-shadow:var(--sombra-alta)}
.bienvenida-ante{margin:0 0 6px; font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.08em; color:var(--azul-texto)}
.bienvenida h2{margin:0 0 8px; font-size:26px; letter-spacing:-.02em}
.bienvenida-texto{margin:0 0 16px; font-size:15.5px; line-height:1.55; color:var(--tinta-suave)}
.bienvenida-texto b{color:var(--tinta)}
.bienvenida-pasos{list-style:none; margin:0 0 20px; padding:0; display:grid; grid-template-columns:1fr 1fr; gap:6px 14px; font-size:13.5px}
.bienvenida-pasos li{display:flex; align-items:center; gap:8px}
.bienvenida-pasos span{display:inline-grid; place-items:center; width:20px; height:20px; flex:none; border-radius:50%; background:var(--azul-fondo); color:var(--azul-texto); font-size:11px; font-weight:700}
.bienvenida-acciones{display:flex; align-items:center; gap:10px; flex-wrap:wrap}
.bienvenida-acciones form{margin:0}
.bienvenida-pie{margin:16px 0 0; font-size:12.5px; color:var(--tinta-suave)}
.bienvenida-pie a{color:var(--tinta-suave)}
@media (max-width:480px){ .bienvenida-pasos{grid-template-columns:1fr} .bienvenida{padding:22px 18px 18px} }
/* El cierre de la ayuda: a la agenda del día */
.ayuda-cta{display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap; margin-top:22px; padding:20px 22px; border-radius:14px; background:var(--azul-fondo); border:1px solid var(--azul-punto)}
.ayuda-cta > div{display:flex; flex-direction:column; gap:2px}
.ayuda-cta b{font-size:18px}
.ayuda-cta span{font-size:14.5px; color:var(--tinta-suave)}
.ayuda-cta .btn{font-size:15px; padding:12px 18px}
/* ── Interesada: el siguiente paso es el plan ── */
.siguiente-plan{display:grid; grid-template-columns:auto minmax(0, 1fr) auto; gap:16px 20px; align-items:start; padding:20px 22px; border-radius:16px; background:var(--ok-fondo); border:1px solid var(--ok-punto)}
.siguiente-plan-ok{display:grid; place-items:center; width:40px; height:40px; border-radius:50%; background:var(--ok-punto); color:#fff}
.siguiente-plan-ok .icono{width:22px; height:22px}
.siguiente-plan-ante{margin:0 0 2px; font-size:12.5px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--ok-texto)}
.siguiente-plan h2{margin:0 0 6px; font-size:21px}
.siguiente-plan-texto p{margin:0 0 8px; font-size:14.5px; line-height:1.5}
.siguiente-plan ol{margin:0; padding-left:20px; font-size:14px; line-height:1.6}
.siguiente-plan-acciones{display:flex; flex-direction:column; gap:8px; align-items:stretch; min-width:210px}
.siguiente-plan-acciones .btn, .siguiente-plan-acciones .mini{text-align:center; justify-content:center}
@media (max-width:760px){ .siguiente-plan{grid-template-columns:auto 1fr} .siguiente-plan-acciones{grid-column:1 / -1; min-width:0} }
.toca-plan{display:flex; flex-direction:column; gap:3px; padding:12px 14px; border-radius:10px; background:var(--azul-fondo); border-left:4px solid var(--azul-punto)}
.toca-plan b{font-size:15px}
.toca-plan span{font-size:13.5px; color:var(--tinta-suave)}
/* La leyenda de las notas */
.leyenda-notas{margin:0 0 10px; padding:10px 14px; border-radius:10px; background:var(--linea-suave); font-size:13.5px; line-height:1.55; color:var(--tinta-suave)}
.leyenda-notas b{color:var(--tinta)}
/* Portada: pendientes de feedback, planes por crear y la pista del calendario */
#sin-feedback .bloque-cab .cuenta{margin-left:8px}
.tareas-ejemplo-titulo{display:flex; align-items:center; gap:8px; margin:18px 0 4px; font-size:14px; color:var(--tinta-suave)}
.planes-por-crear .ag-accion .btn{padding:7px 14px; font-size:13.5px}
.dc-pista{margin:12px 0 0; padding:12px 14px; border:1px dashed var(--linea-fuerte); border-radius:10px; font-size:14px; text-align:center}
/* El paginador de las listas de la portada */
.paginador{display:flex; align-items:center; justify-content:space-between; gap:10px; margin-top:10px}
.paginador-cuenta{font-size:13px; color:var(--tinta-suave); font-variant-numeric:tabular-nums}
.paginador .apagado{opacity:.4; pointer-events:none}
/* Mis NPS */
.nps-kpis{grid-template-columns:repeat(3, minmax(0, 1fr))}
.nps-lista .nps-fila{display:flex; gap:16px; padding:14px 16px; align-items:flex-start}
.nps-nota{display:grid; place-items:center; width:46px; height:46px; flex:none; border-radius:12px; font-size:20px; font-weight:800}
.nps-nota.si{background:var(--ok-fondo); color:var(--ok-texto)}
.nps-nota.neutro{background:var(--linea-suave); color:var(--tinta-suave)}
.nps-nota.mal{background:var(--mal-fondo); color:var(--mal-texto)}
.nps-cuerpo{flex:1; min-width:0; display:flex; flex-direction:column; gap:4px}
.nps-cab{display:flex; align-items:center; gap:8px; flex-wrap:wrap}
.nps-cita{margin:0; font-size:13.5px; color:var(--tinta-suave)}
.nps-texto{margin:2px 0 0; font-size:14.5px; line-height:1.5}
.nps-fecha{margin:2px 0 0; font-size:12.5px}
@media (max-width:640px){ .nps-kpis{grid-template-columns:1fr} }
/* Mi agenda: ¿le dan los huecos para el mes que viene? */
.huecos-mes-falta{display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap; padding:16px 18px; border-radius:14px; background:var(--mal-fondo); border:1px solid var(--mal-punto); color:var(--tinta); font-size:15px; line-height:1.5}
.huecos-mes-falta > div > b:first-child{color:var(--mal-texto)}
.huecos-mes-falta p{margin:4px 0 0; font-size:13.5px}
.huecos-mes{font-size:14px}
/* Mis pacientes */
.pacientes-lista .paciente-fila{display:grid; grid-template-columns:minmax(0, 1.4fr) minmax(0, 1fr) auto; gap:12px 18px; align-items:center; padding:13px 16px}
.paciente-quien{display:flex; flex-direction:column; gap:3px; min-width:0}
.paciente-quien b{font-size:15px}
.paciente-quien .tenue{font-size:12.5px}
.paciente-chips{display:flex; flex-wrap:wrap; gap:5px; margin-top:2px}
.paciente-citas{display:grid; grid-template-columns:1fr 1fr; gap:10px; font-size:13.5px}
.paciente-citas span{display:flex; flex-direction:column; gap:1px}
.paciente-citas small{font-size:11.5px; color:var(--tinta-suave); text-transform:uppercase; letter-spacing:.04em}
.paciente-fila.sin-suscripcion{opacity:.75}
@media (max-width:760px){ .pacientes-lista .paciente-fila{grid-template-columns:1fr} }
.paciente-nombre{color:inherit; text-decoration:none}
.paciente-nombre:hover b{text-decoration:underline}
.paciente-acciones{display:flex; flex-direction:column; gap:6px; align-items:stretch}
.paciente-acciones .mini{text-align:center}
@media (max-width:760px){ .paciente-acciones{flex-direction:row} }
/* Ficha de la paciente */
.ficha-paciente .ficha-cab{display:grid; grid-template-columns:1fr auto; gap:14px 20px; padding:20px 22px}
.ficha-cab-quien{display:flex; gap:16px; align-items:flex-start; min-width:0}
.ficha-cab-quien h1{margin:0; font-size:24px}
.ficha-cab-acciones{display:flex; flex-direction:column; gap:8px; align-items:flex-end}
.ficha-cab .preparacion, .ficha-indice{grid-column:1 / -1; margin:0}
.ficha-indice{display:flex; flex-wrap:wrap; gap:4px 14px; border-top:1px solid var(--linea); padding-top:12px; font-size:13.5px}
.ficha-indice a{color:var(--tinta-suave); text-decoration:none; font-weight:600}
.ficha-indice a:hover{color:var(--tinta)}
.ficha-rejilla{display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:16px}
.ficha-rejilla > .bloque{margin:0}
.ficha-paciente > .bloque, .ficha-paciente > .ficha-rejilla{margin-top:16px}
.ficha-citas .ficha-cita-fila{display:grid; grid-template-columns:minmax(0, 1fr) minmax(0, 1.2fr) auto; gap:8px 12px; align-items:center; padding:9px 12px; font-size:14px}
.grafica-peso{width:100%; height:120px; margin:14px 0 4px; color:var(--tinta)}
.grafica-peso circle{fill:var(--tinta)}
.tabla-scroll{overflow-x:auto}
.tabla-medidas{width:100%; border-collapse:collapse; font-size:13.5px; font-variant-numeric:tabular-nums}
.tabla-medidas th, .tabla-medidas td{text-align:left; padding:7px 10px; border-bottom:1px solid var(--linea-suave); white-space:nowrap}
.tabla-medidas th{font-size:11.5px; color:var(--tinta-suave); text-transform:uppercase; letter-spacing:.04em}
.evolutivo + .evolutivo{border-top:1px solid var(--linea-suave); margin-top:10px; padding-top:10px}
.evolutivo p{margin:0 0 4px}
.ficha-paciente [id]{scroll-margin-top:80px}
@media (max-width:900px){
  .ficha-rejilla{grid-template-columns:1fr}
  .ficha-paciente .ficha-cab{grid-template-columns:1fr}
  .ficha-cab-acciones{align-items:flex-start}
  .ficha-citas .ficha-cita-fila{grid-template-columns:1fr auto}
  .ficha-citas .ficha-cita-fila .tenue{grid-column:1 / -1; order:3}
}
/* ── Agenda del equipo: semanas por especialidad ── */
.b-esp{display:block; height:100%}
.b-esp.medica{background:var(--esp-medica)} .b-esp.psicologia{background:var(--esp-psicologia)} .b-esp.nutricion{background:var(--esp-nutricion)} .b-esp.af{background:var(--esp-af)}
.sem-desglose{display:block; font-size:11px; color:var(--tinta-suave); font-weight:500}
.tabla-semanas thead th .esp{width:8px; height:8px; vertical-align:middle}
/* ── Ficha de la paciente: farmacología, notas, valoraciones, registro ── */
.ficha-paciente h3.sub{margin:16px 0 8px; font-size:13px; text-transform:uppercase; letter-spacing:.05em; color:var(--tinta-suave)}
.en-linea{display:inline; margin-left:6px}
.en-linea .btn{padding:5px 12px; font-size:13px}
.ficha-seccion{margin:28px 0 -4px; font-size:13px; text-transform:uppercase; letter-spacing:.06em; color:var(--tinta-suave)}
.nota-nueva{display:flex; flex-direction:column; gap:8px; padding:14px; margin-bottom:14px; border:1px solid var(--linea); border-radius:12px; background:var(--sup-mudo)}
.nota-nueva-fila{display:flex; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap}
.nota-nueva label{display:flex; align-items:center; gap:8px; font-size:14px; font-weight:600}
.nota-nueva select{height:36px; padding:0 10px; border:1px solid var(--linea-fuerte); border-radius:8px; background:var(--papel); color:var(--tinta); font:inherit}
.nota-nueva textarea{width:100%; min-height:72px; padding:10px 12px; border:1px solid var(--linea-fuerte); border-radius:10px; background:var(--papel); color:var(--tinta); font:inherit; font-size:14.5px; resize:vertical}
.nota-nueva small{font-size:12.5px}
.nota-equipo{padding:12px 0; border-top:1px solid var(--linea-suave)}
.nota-equipo:first-of-type{border-top:0}
.nota-cab{display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin:0 0 6px; font-size:13.5px}
.nota-equipo .informe-texto{margin:0}
.nps-fila{display:grid; grid-template-columns:auto 1fr; gap:12px; align-items:start; padding:10px 12px; font-size:14px}
.registro-fila{display:grid; grid-template-columns:150px 1fr auto; gap:10px; padding:8px 12px; font-size:13.5px}
@media (max-width:640px){ .registro-fila{grid-template-columns:1fr auto} .registro-fila > span:first-child{grid-column:1 / -1; font-size:12px} }
.hueco-horas a.hora{text-decoration:none; color:inherit}
.hueco-horas a.hora:hover{background:var(--azul-fondo); color:var(--azul-texto)}
.hueco-horas a.hora small{font-size:11px; color:var(--tinta-suave)}
#citas .bloque-cab .btn, #notas .bloque-cab .cuenta{margin-left:auto}
/* ── Ficha de la paciente en dos columnas ──
 * Izquierda (ancha): el tratamiento médico. Derecha (estrecha y pegada al subir): acciones y
 * datos de la paciente. Por debajo de 1100 px, una columna con las acciones primero. */
.portada.ficha-paciente.ancha{max-width:1360px}
.ficha-columnas{display:grid; grid-template-columns:minmax(0, 1fr) minmax(320px, 400px); gap:24px; align-items:start}
.ficha-izq, .ficha-der{display:flex; flex-direction:column; gap:16px; min-width:0}
.ficha-izq > .bloque, .ficha-der > .bloque{margin:0}
.ficha-paciente .ficha-seccion{margin:10px 0 -6px}
.ficha-izq > .ficha-seccion:first-of-type, .ficha-der > .ficha-seccion:first-child{margin-top:0}
.ficha-indice.suelto{border-top:0; padding:0}
.ficha-cab{grid-template-columns:1fr auto}
.acciones-ficha{border:1px solid color-mix(in srgb, var(--azul-punto) 35%, var(--linea)); background:color-mix(in srgb, var(--azul-punto) 5%, var(--papel))}
.tareas-ficha{margin:0 0 12px}
.tareas-ficha li{display:flex; align-items:center; justify-content:space-between; gap:10px; padding:10px 12px; font-size:14px; font-weight:600}
.tareas-ficha li .en-linea{margin:0}
.acciones-siempre{display:flex; flex-wrap:wrap; gap:8px; align-items:center}
.ficha-der .ficha-citas .ficha-cita-fila{grid-template-columns:1fr auto}
.ficha-der .ficha-citas .ficha-cita-fila .tenue{grid-column:1 / -1; order:3; font-size:12.5px}
.ficha-der .registro-fila{grid-template-columns:1fr auto}
.ficha-der .registro-fila > span:first-child{grid-column:1 / -1; font-size:12px}
.ficha-der .perfil-datos .perfil-fila{grid-template-columns:110px 1fr}
@media (max-width:1100px){
  .ficha-columnas{grid-template-columns:1fr}
  .ficha-der{order:-1}
}
/* ── Tests y formularios: una fila por formulario, plegada ── */
.formularios{display:flex; flex-direction:column; border:1px solid var(--linea); border-radius:12px; overflow:hidden; background:var(--papel)}
.formulario{border-top:1px solid var(--linea-suave)}
.formulario:first-child{border-top:0}
.formulario > summary, .formulario.pendiente{display:flex; flex-wrap:wrap; align-items:center; gap:8px 10px; padding:12px 16px; font-size:14px}
.formulario > summary{cursor:pointer; list-style:none}
.formulario > summary::-webkit-details-marker{display:none}
.formulario > summary::before{content:'▸'; color:var(--tinta-suave); font-size:12px; width:10px}
.formulario[open] > summary::before{content:'▾'}
.formulario > summary:hover{background:var(--sup-mudo)}
.formulario > summary b{margin-right:auto}
.formulario .plegable-cuerpo{padding:0 16px 14px}
.formulario .perfil-datos{margin:0}
.formulario.pendiente b{margin-right:auto}
.formulario.pendiente small{flex-basis:100%}
/* ── Pendientes del equipo médico: widget oscuro con tarjetas ──
 * Mismo azul de la casa (logo y botones), en oscuro para que se lea como «lo que hay que
 * hacer» y no como un bloque más. En modo noche, un punto más claro que el fondo. */
.pendientes{background:var(--pend-fondo); color:#F5F6FA; border-radius:16px; padding:16px; box-shadow:var(--sombra-alta)}
.pend-cab{display:flex; align-items:center; gap:10px; margin:0 0 12px}
.pend-cab h2{margin:0; font-size:16px; color:#fff}
.pend-cuenta{min-width:24px; height:24px; padding:0 7px; border-radius:12px; display:inline-flex; align-items:center; justify-content:center; background:var(--azul-punto); color:#fff; font-size:12.5px; font-weight:700}
.pend-lista{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:8px}
.pend-tarjeta{display:grid; grid-template-columns:1fr auto; gap:2px 10px; align-items:center; padding:12px 14px; border-radius:12px; background:var(--pend-tarjeta); border:1px solid var(--pend-borde); border-left:3px solid var(--pc, #8098F9)}
.pend-tarjeta b{grid-column:1; font-size:14.5px; color:#fff}
.pend-tarjeta small{grid-column:1; font-size:12.5px; color:rgba(245,246,250,.72)}
.pend-tipo{grid-column:1; font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.07em; color:var(--pc, #8098F9)}
.pend-tarjeta > .pend-btn, .pend-tarjeta > form, .pend-tarjeta > .pend-nota{grid-column:2; grid-row:1 / span 3}
.pend-btn, .pendientes .en-linea .pend-btn{display:inline-flex; align-items:center; padding:7px 12px; border-radius:9px; border:0; background:#fff; color:#121A35; font:inherit; font-size:13px; font-weight:700; text-decoration:none; white-space:nowrap; cursor:pointer}
.pend-btn:hover{background:#E0E6FF}
.pendientes .en-linea{margin:0}
.pend-nota{font-size:12px; color:rgba(245,246,250,.6); max-width:110px; text-align:right}
.pend-vacio{margin:0; padding:12px 14px; border-radius:12px; background:var(--pend-tarjeta); color:rgba(245,246,250,.8); font-size:14px}
.tipo-cita{--pc:#8098F9} .tipo-plan{--pc:#47CD89} .tipo-rempe{--pc:#A48AFB} .tipo-recetas{--pc:#FDB022} .tipo-agenda{--pc:#53B1FD} .tipo-informacion{--pc:#98A2B3}
@media (max-width:420px){ .pend-tarjeta{grid-template-columns:1fr} .pend-tarjeta > .pend-btn, .pend-tarjeta > form, .pend-tarjeta > .pend-nota{grid-column:1; grid-row:auto; justify-self:start; margin-top:6px; text-align:left} }
/* La cabecera de la ficha: quién es, su médico, y los botones en fila. */
.ficha-paciente .ficha-cab-acciones{flex-direction:row; flex-wrap:wrap; justify-content:flex-end; align-items:flex-start; gap:8px; max-width:520px}
.ficha-medico{margin:8px 0 0; font-size:14px; color:var(--tinta-suave)}
.ficha-medico b{color:var(--tinta)}
@media (max-width:900px){ .ficha-paciente .ficha-cab-acciones{justify-content:flex-start; max-width:none} }
.opciones-traspaso{border:0; margin:0; padding:0; display:flex; flex-direction:column; gap:6px}
.opciones-traspaso .opcion{display:flex; align-items:center; gap:10px; padding:10px 12px; border:1px solid var(--linea); border-radius:10px; cursor:pointer; font-size:14.5px}
.opciones-traspaso .opcion:has(input:checked){border-color:var(--azul-punto); background:var(--azul-fondo)}
.opciones-traspaso .opcion.actual{opacity:.65; cursor:default}
/* ── Mis sesiones ── */
.mes-nav{display:flex; align-items:center; justify-content:space-between; gap:12px}
.mes-nav h2{margin:0; font-size:20px}
.sesion-kpis{grid-template-columns:repeat(3, minmax(0, 1fr))}
.sesion-kpi .kpi-valor{font-size:28px}
@media (max-width:640px){ .sesion-kpis{grid-template-columns:1fr} }
.grafica-meses{margin:0}
.grafica-meses svg{width:100%; height:auto; display:block}
.grafica-meses .b-primera{fill:var(--azul-punto)} .grafica-meses .b-mant{fill:var(--ok-punto)} .grafica-meses .b-otra{fill:var(--linea-fuerte)}
.grafica-meses rect{stroke:var(--papel); stroke-width:2px; paint-order:stroke}
.g-base{stroke:var(--linea); stroke-width:1}
.g-valor{font-size:12px; font-weight:700; fill:var(--tinta)}
.g-eje{font-size:11.5px; fill:var(--tinta-suave)}
.g-eje.actual{fill:var(--tinta); font-weight:700}
.tabla-sesiones td.mono{font-family:var(--mono); font-size:12.5px; color:var(--tinta-suave)}
.sesion-kpis{grid-template-columns:repeat(4, minmax(0, 1fr))}
@media (max-width:900px){ .sesion-kpis{grid-template-columns:repeat(2, minmax(0, 1fr))} }
.tabla-sesiones .acciones-fila{text-align:right}
.sesion-nueva{margin:16px 0 8px; padding:14px; border:1px solid var(--linea); border-radius:12px; background:var(--sup-mudo); display:flex; flex-direction:column; gap:10px}
.sesion-nueva h3{margin:0; font-size:14px}
.sesion-nueva-campos{display:flex; flex-wrap:wrap; gap:10px 14px}
.sesion-nueva-campos label{display:flex; flex-direction:column; gap:4px; font-size:12.5px; font-weight:600; color:var(--tinta-suave)}
.sesion-nueva-campos label.ancho{flex:1 1 100%}
.sesion-nueva-campos input, .sesion-nueva-campos select{height:36px; padding:0 10px; border:1px solid var(--linea-fuerte); border-radius:8px; background:var(--papel); color:var(--tinta); font:inherit; font-size:14px}
.sesion-nueva .btn{align-self:flex-start}


/* ASISTENTE CLÍNICO · 20 · ESTRUCTURA
 *
 *   ┌──────────┬────────────────────────────────────────┐
 *   │ .lateral │ .topbar  (buscador · persona)          │
 *   │  grupos  ├────────────────────────────────────────┤
 *   │  enlaces │ .contenido  (la página)                 │
 *   └──────────┴────────────────────────────────────────┘
 *
 * Escritorio (> 1024 px): barra lateral con los grupos de visibilidad.js, abierta.
 * Tablet (761–1024 px): la misma barra, plegada a iconos.
 * En los dos, el botón de la cabecera de la barra la pliega o la abre y se recuerda
 * (cookie `asistente_lateral` → clase `lateral-plegado` / `lateral-abierto` en <body>).
 * Móvil (≤ 760 px): sin lateral; pestañas abajo (.pestanas) con las cuatro principales y
 * «Más» (popover con el resto). Sin JavaScript: popovers, <details> y enlaces. */
.app{display:grid; grid-template-columns:var(--lateral-ancho) minmax(0, 1fr); min-height:100vh}
.app-principal{min-width:0; display:flex; flex-direction:column}

/* ── La barra lateral ── */
.lateral{position:sticky; top:0; height:100vh; overflow-y:auto; display:flex; flex-direction:column; gap:2px;
  padding:18px 14px 16px; background:var(--superficie); border-right:1px solid var(--borde); scrollbar-width:thin}
.marca{display:flex; align-items:center; gap:12px; padding:4px 10px 14px; color:var(--titulo); text-decoration:none; font-size:var(--t-xl); font-weight:700; letter-spacing:-.01em; white-space:nowrap}
.marca b{color:var(--acento); font-weight:700}
.logo{width:30px; height:22px; flex:none}
.lateral-enlace{position:relative; display:flex; align-items:center; gap:12px; padding:10px 12px; border-radius:var(--r-m);
  color:var(--texto-2); font-size:15.5px; font-weight:600; text-decoration:none}
.lateral-enlace svg{width:20px; height:20px; flex:none; color:var(--texto-3)}
.lateral-enlace:hover{background:var(--superficie-2); color:var(--texto)}
.lateral-enlace[aria-current="page"]{background:var(--superficie-3); color:var(--primario)}
.lateral-enlace[aria-current="page"] svg{color:var(--primario)}
.lateral-enlace[aria-current="page"]::before{content:""; position:absolute; left:-14px; top:8px; bottom:8px; width:3px; border-radius:0 3px 3px 0; background:var(--primario)}
.lateral-pie{margin-top:auto; padding:14px 12px 0; border-top:1px solid var(--borde-suave); display:flex; align-items:center; justify-content:space-between; gap:8px; font-size:var(--t-s); color:var(--texto-3)}

/* ── La barra superior ── */
.topbar{position:sticky; top:0; z-index:20; height:var(--barra-alto); display:flex; align-items:center; gap:16px; padding:0 32px;
  background:color-mix(in srgb, var(--superficie) 94%, transparent); backdrop-filter:blur(8px); border-bottom:1px solid var(--borde)}
.topbar .marca{display:none; padding:0}
.busqueda{position:relative; flex:0 1 580px; min-width:0; display:flex; align-items:center}
.busqueda svg{position:absolute; left:14px; width:19px; height:19px; color:var(--texto-3); pointer-events:none}
.busqueda input{width:100%; height:46px; padding:0 14px 0 44px; border:1px solid var(--borde-fuerte); border-radius:var(--r-m);
  background:var(--superficie-2); color:var(--texto); font:inherit; font-size:var(--t-m)}
.busqueda input::placeholder{color:var(--texto-3)}
.busqueda input:focus{outline:none; border-color:var(--acento); background:var(--superficie); box-shadow:0 0 0 3px var(--acento-fondo)}
.busqueda input::-webkit-calendar-picker-indicator{display:none !important}
.topbar-derecha{margin-left:auto; display:flex; align-items:center; gap:10px}
.persona-btn{display:flex; align-items:center; gap:10px; padding:4px 14px 4px 4px; border:1px solid var(--borde); border-radius:var(--r-pill);
  background:var(--superficie); color:var(--titulo); font:inherit; font-size:var(--t-m); font-weight:600; cursor:pointer; box-shadow:var(--sombra-1)}
.persona-btn:hover{background:var(--superficie-2)}
.persona-btn .avatar{width:36px; height:36px; background:var(--primario); color:var(--primario-texto); font-size:13px}
.persona-nombre{max-width:160px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}

/* El menú personal (popover bajo la persona) */
.menu-usuario{inset:auto; position:fixed; top:calc(var(--barra-alto) - 6px); right:24px; margin:0; width:280px; padding:6px;
  border:1px solid var(--borde); border-radius:14px; background:var(--superficie); color:var(--texto); box-shadow:var(--sombra-3)}
.menu-cab{padding:10px 12px 12px; border-bottom:1px solid var(--borde-suave); margin-bottom:4px}
.menu-cab b{display:block; font-size:var(--t-m); color:var(--titulo)}
.menu-cab span{font-size:var(--t-xs); color:var(--texto-3); word-break:break-all}
.menu-usuario a, .menu-usuario button{display:flex; align-items:center; gap:10px; width:100%; padding:10px 12px; border:0; border-radius:var(--r-s);
  background:none; color:var(--texto); font:inherit; font-size:var(--t-m); text-align:left; text-decoration:none; cursor:pointer}
.menu-usuario a:hover, .menu-usuario button:hover{background:var(--superficie-2)}
.menu-usuario svg{width:18px; height:18px; flex:none; color:var(--texto-3)}
.menu-usuario .salir{color:var(--mal-texto); border-top:1px solid var(--borde-suave); border-radius:0 0 var(--r-s) var(--r-s); margin-top:4px}
.menu-usuario .salir svg{color:var(--mal-texto)}
.menu-tema{display:flex; align-items:center; justify-content:space-between; gap:10px; padding:8px 12px; border-bottom:1px solid var(--borde-suave)}
.menu-tema span{font-size:var(--t-s); color:var(--texto-3)}

/* ── El contenido ── */
.contenido{width:100%; max-width:calc(1360px + 64px); padding:32px 32px 72px}
.portada{max-width:var(--contenido-max); margin:0; gap:24px}

/* ── Páginas sin sesión (entrar) ── */
.barra-publica{display:flex; align-items:center; height:var(--barra-alto); padding:0 28px; background:var(--superficie); border-bottom:1px solid var(--borde)}

/* ── Móvil y tablet: pestañas abajo ── */
.pestanas, .menu-mas{display:none}
@media (max-width:760px){
  .app{grid-template-columns:1fr}
  .lateral{display:none}
  .topbar{padding:0 16px; gap:10px; height:64px}
  .topbar .marca{display:flex}
  .topbar .marca > span{display:none}
  .busqueda{flex:1 1 auto}
  .busqueda input{height:42px; font-size:16px}   /* 16px: iOS no hace zoom al tocarlo */
  .persona-btn{padding:3px}
  .persona-nombre{display:none}
  .menu-usuario{top:58px; right:12px}
  .contenido{padding:20px 16px 104px}
  .pestanas{display:grid; grid-template-columns:repeat(5, 1fr); position:fixed; z-index:30; left:0; right:0; bottom:0;
    padding:6px 6px calc(6px + env(safe-area-inset-bottom)); background:var(--superficie); border-top:1px solid var(--borde); box-shadow:0 -4px 16px rgba(16,24,40,.06)}
  .pestana{display:flex; flex-direction:column; align-items:center; gap:3px; padding:4px 2px; border:0; background:none; font:inherit;
    font-size:12.5px; font-weight:600; color:var(--texto-3); text-decoration:none; cursor:pointer}
  .pestana svg{width:46px; height:32px; padding:5px 12px; border-radius:var(--r-pill); color:var(--texto-3)}
  .pestana[aria-current="page"]{color:var(--primario)}
  .pestana[aria-current="page"] svg{background:var(--superficie-3); color:var(--primario)}
  .menu-mas{inset:auto; position:fixed; left:12px; right:12px; bottom:calc(84px + env(safe-area-inset-bottom)); margin:0; padding:8px;
    border:1px solid var(--borde); border-radius:var(--r-l); background:var(--superficie); color:var(--texto); box-shadow:var(--sombra-3)}
  .menu-mas:popover-open{display:flex; flex-direction:column; gap:2px}
  .menu-mas .lateral-enlace[aria-current="page"]::before{display:none}
}
@media (min-width:1025px) and (max-width:1280px){ :root{--lateral-ancho:232px} .topbar, .contenido{padding-left:24px; padding-right:24px} }
@media (min-width:761px){ .menu-tema{display:none} }   /* en escritorio está en el pie de la barra lateral */

/* ── Plegar y abrir la barra lateral ── */
.lateral-cab{display:flex; align-items:center; justify-content:space-between; gap:6px}
.lateral-cab .marca{min-width:0}
.lateral-pliegue{display:inline-flex; align-items:center; justify-content:center; width:36px; height:36px; flex:none; border-radius:var(--r-s); color:var(--texto-3); margin-bottom:10px}
.lateral-pliegue:hover{background:var(--superficie-2); color:var(--primario)}
.lateral-pliegue svg{width:20px; height:20px}
.lateral-pliegue.a-abrir{display:none}
/* PLEGADA: solo iconos (el nombre sale al pasar el ratón, en el title). Se escribe dos veces
   porque se pliega por dos caminos: elegido (clase) o por ser tablet sin elección. */
body.lateral-plegado{--lateral-ancho:76px}
body.lateral-plegado .lateral{padding:18px 10px 16px; align-items:stretch}
body.lateral-plegado .lateral-cab{flex-direction:column}
body.lateral-plegado .lateral .marca > span, body.lateral-plegado .lateral-enlace > span, body.lateral-plegado .lateral-admin summary > span, body.lateral-plegado .lateral-pie > span{display:none}
body.lateral-plegado .lateral .marca{padding:4px 0 8px; justify-content:center}
body.lateral-plegado .lateral-enlace{justify-content:center; padding:11px 0}
body.lateral-plegado .lateral-enlace[aria-current="page"]::before{left:-10px}
body.lateral-plegado .lateral-pie{flex-direction:column; padding:12px 0 0}
body.lateral-plegado .lateral-pie .tema{flex-direction:column}
body.lateral-plegado .a-plegar{display:none}
body.lateral-plegado .a-abrir{display:inline-flex}
@media (min-width:761px) and (max-width:1024px){
  body:not(.lateral-abierto){--lateral-ancho:76px}
  body:not(.lateral-abierto) .lateral{padding:18px 10px 16px; align-items:stretch}
  body:not(.lateral-abierto) .lateral-cab{flex-direction:column}
  body:not(.lateral-abierto) .lateral .marca > span, body:not(.lateral-abierto) .lateral-enlace > span, body:not(.lateral-abierto) .lateral-admin summary > span, body:not(.lateral-abierto) .lateral-pie > span{display:none}
  body:not(.lateral-abierto) .lateral .marca{padding:4px 0 8px; justify-content:center}
  body:not(.lateral-abierto) .lateral-enlace{justify-content:center; padding:11px 0}
  body:not(.lateral-abierto) .lateral-enlace[aria-current="page"]::before{left:-10px}
  body:not(.lateral-abierto) .lateral-pie{flex-direction:column; padding:12px 0 0}
  body:not(.lateral-abierto) .lateral-pie .tema{flex-direction:column}
  body:not(.lateral-abierto) .a-plegar{display:none}
  body:not(.lateral-abierto) .a-abrir{display:inline-flex}
  .topbar, .contenido{padding-left:20px; padding-right:20px}
}


/* ── El menú: la lista general arriba y ADMINISTRACIÓN abajo, aparte ──
 * Administración es un <details>: cerrado se ve como un botón con escudo y su color
 * (azul petróleo); abierto, sus opciones van dentro de su propia caja, no mezcladas. */
.lateral > nav{display:flex; flex-direction:column; flex:1; min-height:0}
.lateral-lista{display:flex; flex-direction:column; gap:2px; margin-top:8px}
.lateral-admin{margin-top:auto; margin-bottom:12px; border:1px solid color-mix(in srgb, var(--admin) 35%, var(--borde)); border-radius:12px; background:var(--admin-fondo); overflow:hidden}
.lateral-admin > summary{display:flex; align-items:center; gap:10px; padding:11px 12px; list-style:none; cursor:pointer;
  color:var(--admin-texto); font-size:13px; font-weight:700; letter-spacing:.07em; text-transform:uppercase}
.lateral-admin > summary::-webkit-details-marker{display:none}
.lateral-admin > summary svg{width:18px; height:18px; flex:none; color:var(--admin)}
.lateral-admin > summary svg:last-child{width:16px; height:16px; margin-left:auto; transition:transform .15s}
.lateral-admin[open] > summary svg:last-child{transform:rotate(180deg)}
.lateral-admin > summary:hover{background:color-mix(in srgb, var(--admin) 10%, var(--admin-fondo))}
.lateral-admin-cuenta{min-width:20px; height:20px; padding:0 6px; border-radius:var(--r-pill); display:inline-flex; align-items:center; justify-content:center;
  background:var(--admin); color:#fff; font-size:11.5px; letter-spacing:0}
.lateral-admin-opciones{display:flex; flex-direction:column; gap:2px; padding:4px 6px 8px; border-top:1px solid color-mix(in srgb, var(--admin) 22%, transparent); background:var(--superficie)}
.lateral-admin .lateral-enlace{font-size:14.5px}
.lateral-admin .lateral-enlace[aria-current="page"]{background:var(--admin-fondo); color:var(--admin-texto)}
.lateral-admin .lateral-enlace[aria-current="page"] svg{color:var(--admin)}
.lateral-admin .lateral-enlace[aria-current="page"]::before{display:none}
.menu-mas .lateral-admin{margin:8px 0 0}
/* Plegada: el escudo solo; al abrir, los iconos debajo. */
body.lateral-plegado .lateral-admin > summary{justify-content:center; padding:11px 0}
body.lateral-plegado .lateral-admin > summary svg:last-child{display:none}
body.lateral-plegado .lateral-admin-opciones{padding:4px 2px 6px}
@media (min-width:761px) and (max-width:1024px){
  body:not(.lateral-abierto) .lateral-admin > summary{justify-content:center; padding:11px 0}
  body:not(.lateral-abierto) .lateral-admin > summary svg:last-child{display:none}
  body:not(.lateral-abierto) .lateral-admin-opciones{padding:4px 2px 6px}
}

/* El menú se desplaza si no cabe (antes lo que sobraba quedaba fuera de la vista). */
.lateral > nav{overflow-y:auto; overscroll-behavior:contain; scrollbar-width:thin}
.lateral-admin{flex:none}
/* Los bloques de Administración: cada uno plegable. */
.lateral-bloque{border-radius:var(--r-m)}
.lateral-bloque > summary{display:flex; align-items:center; gap:10px; padding:8px 10px; list-style:none; cursor:pointer; border-radius:var(--r-m);
  font-size:12.5px; font-weight:700; letter-spacing:.04em; text-transform:uppercase; color:var(--texto-3)}
.lateral-bloque > summary::-webkit-details-marker{display:none}
.lateral-bloque > summary:hover{background:var(--superficie-2); color:var(--texto-2)}
.lateral-bloque > summary svg{width:16px; height:16px; flex:none}
.lateral-bloque > summary svg:last-child{width:14px; height:14px; margin-left:auto; transition:transform .15s}
.lateral-bloque[open] > summary svg:last-child{transform:rotate(180deg)}
.lateral-bloque-n{font-size:11px; font-weight:600; color:var(--texto-4); letter-spacing:0}
.lateral-bloque-enlaces{display:flex; flex-direction:column; gap:2px; padding:0 0 6px 8px}
body.lateral-plegado .lateral-bloque > summary{justify-content:center; padding:8px 0}
body.lateral-plegado .lateral-bloque > summary > span, body.lateral-plegado .lateral-bloque > summary svg:last-child{display:none}
body.lateral-plegado .lateral-bloque-enlaces{padding-left:0}
@media (min-width:761px) and (max-width:1024px){
  body:not(.lateral-abierto) .lateral-bloque > summary{justify-content:center; padding:8px 0}
  body:not(.lateral-abierto) .lateral-bloque > summary > span, body:not(.lateral-abierto) .lateral-bloque > summary svg:last-child{display:none}
  body:not(.lateral-abierto) .lateral-bloque-enlaces{padding-left:0}
}
.menu-mas .lateral-bloque-enlaces{padding-left:4px}
@media (max-width:760px){ .menu-mas:popover-open{max-height:calc(100vh - 120px); overflow-y:auto; overscroll-behavior:contain} }

/* ── EL PREDICTIVO DE LA BÚSQUEDA (public/js/predictivo.js): avatar, nombre, id y estado ── */
.predictivo{position:absolute; top:calc(100% + 6px); left:0; right:0; z-index:60; margin:0; padding:6px; list-style:none;
  max-height:min(420px, 70vh); overflow-y:auto; background:var(--superficie, var(--papel)); border:1px solid var(--borde-fuerte, var(--linea));
  border-radius:var(--r-m, 12px); box-shadow:var(--sombra-alta)}
.predictivo-fila a.predictivo-enlace{display:flex; align-items:center; gap:10px; padding:8px 10px; border-radius:10px; color:inherit; text-decoration:none}
.predictivo-fila[aria-selected="true"] a, .predictivo-fila a:hover, .predictivo-fila a:focus-visible{background:var(--acento-fondo); outline:none}
.predictivo-fila .avatar{flex:none; width:34px; height:34px; font-size:13px}
.predictivo-quien{display:flex; flex-direction:column; min-width:0; flex:1}
.predictivo-quien b{white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.predictivo-id{color:var(--texto-3, var(--tinta-suave)); font-size:12px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; font-variant-numeric:tabular-nums}
.predictivo-fila .chip{flex:none; max-width:45%; overflow:hidden; text-overflow:ellipsis}
.predictivo-vacio{padding:10px 12px; color:var(--texto-3, var(--tinta-suave)); font-size:13.5px}
/* En el móvil: a lo ancho de la pantalla (bajo la barra) y la etiqueta debajo del nombre. */
@media (max-width:760px){
  .predictivo{position:fixed; top:68px; left:12px; right:12px; max-height:calc(100vh - 90px)}
  .predictivo-fila a.predictivo-enlace{flex-wrap:wrap; row-gap:4px}
  .predictivo-fila .chip.estado-pac{max-width:calc(100% - 44px); margin-left:44px; order:3}
  .predictivo-quien{flex-basis:calc(100% - 44px)}
}


/* ASISTENTE CLÍNICO · 30 · COMPONENTES
 *
 * Las piezas que se repiten en todas las páginas. Cada una, un bloque, con su clase de
 * siempre (las vistas no cambian de marcado). Catálogo y reglas de uso: DISENO.md.
 *
 *   Cabecera de página ... .saludo (h1 + p) · .migas
 *   Tarjeta .............. .bloque (con .bloque-cab / .bloque-resumen) · .tarjeta
 *   Botones .............. .btn (principal) · .mini (secundario) · .enlace-boton
 *   Etiquetas ............ .chip (+ .si .no .mal .neutro .azul) · .cuenta
 *   Cifras ............... .kpis > .kpi (.kpi-nombre, .kpi-valor, .kpi-pie)
 *   Pestañas ............. .conmutador (grupo segmentado)
 *   Listas y tablas ...... .lista · .tabla-medidas / .tabla-semanas / .tabla-sesiones
 *   Formularios .......... .campo · inputs, selects y textareas
 *   Avisos ............... .aviso (+ .bien .debug) · .vacio · .aviso-ejemplo-bloque
 *   Menús emergentes ..... .pedir-info · .modal
 */

/* ── Cabecera de página ── */
.saludo h1{margin:0; font-size:var(--t-3xl); font-weight:700; letter-spacing:-.015em; color:var(--titulo)}
.saludo p{margin:6px 0 0; font-size:var(--t-m); color:var(--texto-3)}
.migas{margin:0; font-size:var(--t-s)}
.migas a{color:var(--primario); font-weight:600; text-decoration:none}
.migas a:hover{text-decoration:underline}
.ficha-seccion, .seccion-titulo{margin:6px 0 -8px; font-size:13px; font-weight:700; letter-spacing:.09em; text-transform:uppercase; color:var(--texto-3)}

/* ── Tarjeta ── */
.bloque, .tarjeta{background:var(--superficie); border:1px solid var(--borde); border-radius:var(--r-l); padding:22px 24px; box-shadow:var(--sombra-1)}
.bloque-cab{display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap}
.bloque-cab h2{margin:0; display:flex; align-items:center; gap:10px; font-size:var(--t-xl); font-weight:700; letter-spacing:-.01em; color:var(--titulo)}
.h2-icono{width:34px; height:34px; border-radius:var(--r-m); display:inline-flex; align-items:center; justify-content:center; background:var(--acento-fondo); color:var(--primario)}
.h2-icono svg, .h2-icono .icono{width:18px; height:18px}
.bloque-resumen{margin:8px 0 14px; font-size:var(--t-s); color:var(--texto-3)}
.bloque-resumen b{color:var(--texto)}
.bloque-resumen b.tarde, .tarde{color:var(--aviso-texto)}
/* Dentro de una tarjeta, las listas y los vacíos no llevan su propia caja: filas planas. */
.bloque .lista{border:0; border-radius:0; box-shadow:none; background:none; margin:0 -8px}
.bloque .lista > li{border-top:1px solid var(--borde-suave)}
.bloque .lista > li:first-child{border-top:0}
.bloque .vacio{border:0; background:var(--superficie-2); border-radius:var(--r-m)}
.bloque .tabla-envoltorio, .bloque .tabla-scroll{border:1px solid var(--borde-suave); border-radius:var(--r-m); background:var(--superficie)}
.aviso-ejemplo-bloque{margin:14px 0 0; font-size:var(--t-xs); color:var(--texto-3)}

/* ── Botones ── */
.btn{display:inline-flex; align-items:center; justify-content:center; gap:8px; min-height:42px; padding:9px 18px;
  border:1px solid var(--primario); border-radius:var(--r-m); background:var(--primario); color:var(--primario-texto);
  font:inherit; font-size:var(--t-m); font-weight:600; text-decoration:none; cursor:pointer; white-space:nowrap}
.btn:hover{background:var(--primario-hover); border-color:var(--primario-hover); color:var(--primario-texto)}
.mini{display:inline-flex; align-items:center; justify-content:center; gap:6px; min-height:38px; padding:7px 14px;
  border:1px solid var(--borde-fuerte); border-radius:var(--r-m); background:var(--superficie); color:var(--primario);
  font:inherit; font-size:var(--t-s); font-weight:600; text-decoration:none; cursor:pointer; white-space:nowrap}
.mini:hover{background:var(--superficie-2); border-color:var(--primario)}
.mini.apagado, .btn[disabled], .mini[disabled]{opacity:.5; cursor:not-allowed; pointer-events:none}
.enlace-boton{border:0; background:none; padding:0; font:inherit; font-size:var(--t-s); font-weight:600; color:var(--primario); cursor:pointer; text-decoration:underline; text-underline-offset:2px}

/* ── Etiquetas: píldora con punto, el color dice el estado y la palabra lo nombra ── */
.chip{display:inline-flex; align-items:center; gap:6px; padding:3px 10px 3px 9px; border-radius:var(--r-pill);
  font-size:13px; font-weight:600; line-height:1.35; white-space:nowrap; background:var(--superficie-2); color:var(--texto-2)}
.chip::before{content:""; width:6px; height:6px; border-radius:50%; background:currentColor; flex:none; opacity:.85}
.chip.si, .chip.ok{background:var(--ok-fondo); color:var(--ok-texto)}
.chip.no, .chip.espera{background:var(--aviso-fondo); color:var(--aviso-texto)}
.chip.mal{background:var(--mal-fondo); color:var(--mal-texto)}
.chip.neutro{background:var(--superficie-2); color:var(--texto-3)}
.chip.azul{background:var(--acento-fondo); color:var(--acento-texto)}
.cuenta{display:inline-flex; align-items:center; justify-content:center; min-width:24px; height:24px; padding:0 8px; border-radius:var(--r-pill);
  background:var(--acento-fondo); color:var(--primario); font-size:13px; font-weight:700}

/* ── Cifras ── */
.kpis{list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(auto-fill, minmax(190px, 1fr)); gap:14px}
.kpi{display:flex; flex-direction:column; gap:4px; padding:18px 20px; background:var(--superficie); border:1px solid var(--borde); border-radius:var(--r-l); box-shadow:var(--sombra-1)}
.kpi-nombre{font-size:12px; font-weight:700; letter-spacing:.07em; text-transform:uppercase; color:var(--texto-3)}
.kpi-valor{font-size:30px; font-weight:700; line-height:1.15; color:var(--texto); font-variant-numeric:tabular-nums}
.kpi-valor small{margin-left:4px; font-size:14px; font-weight:600; color:var(--texto-3)}
.kpi-pie{font-size:13px; color:var(--texto-3)}
.kpi.fuera{border-color:color-mix(in srgb, var(--aviso) 45%, var(--borde)); background:color-mix(in srgb, var(--aviso-fondo) 60%, var(--superficie))}
.kpi.fuera .kpi-pie b{color:var(--aviso-texto)}

/* ── Pestañas (grupo segmentado) ── */
.conmutador{display:inline-flex; gap:2px; padding:4px; border:1px solid var(--borde); border-radius:12px; background:var(--superficie); box-shadow:var(--sombra-1); max-width:100%; overflow-x:auto; scrollbar-width:none}
.conmutador a{padding:7px 16px; border-radius:9px; font-size:var(--t-m); font-weight:600; color:var(--texto-2); text-decoration:none; white-space:nowrap}
.conmutador a:hover{color:var(--primario); background:var(--superficie-2)}
.conmutador a[aria-current="page"]{background:var(--superficie-3); color:var(--primario); box-shadow:none}

/* ── Listas y tablas ── */
.lista{list-style:none; margin:0; padding:0; background:var(--superficie); border:1px solid var(--borde); border-radius:var(--r-l); overflow:hidden; box-shadow:var(--sombra-1)}
.lista > li{border-top:1px solid var(--borde-suave)}
.lista > li:first-child{border-top:0}
.tabla-medidas, .tabla-semanas, .tabla-sesiones{width:100%; border-collapse:collapse; font-size:14.5px; font-variant-numeric:tabular-nums}
.tabla-medidas th, .tabla-semanas th, .tabla-sesiones th{padding:11px 14px; text-align:left; background:var(--superficie-2); border-bottom:1px solid var(--borde);
  font-size:12px; font-weight:700; letter-spacing:.07em; text-transform:uppercase; color:var(--texto-3); white-space:nowrap}
.tabla-medidas td, .tabla-semanas td, .tabla-sesiones td{padding:12px 14px; border-bottom:1px solid var(--borde-suave)}
.tabla-medidas tbody tr:last-child td, .tabla-sesiones tbody tr:last-child td{border-bottom:0}
.tabla-medidas tbody tr:hover, .tabla-sesiones tbody tr:hover{background:var(--superficie-2)}
.perfil-datos{border:1px solid var(--borde); border-radius:var(--r-m); background:var(--superficie)}
.perfil-fila dt{font-size:12px; letter-spacing:.07em; color:var(--texto-3)}

/* ── Formularios ── */
input[type="text"], input[type="search"], input[type="date"], input[type="time"], input[type="number"], input[type="email"], input:not([type]), select, textarea{
  font:inherit; color:var(--texto)}
.campo input, .campo select, .campo textarea, .sesion-nueva-campos input, .sesion-nueva-campos select, .nota-nueva textarea, .nota-nueva select, .buscar-grande input{
  border:1px solid var(--borde-fuerte); border-radius:var(--r-m); background:var(--superficie)}
.campo input:focus, .campo select:focus, .campo textarea:focus, .sesion-nueva-campos input:focus, .nota-nueva textarea:focus, .buscar-grande input:focus{
  outline:none; border-color:var(--acento); box-shadow:0 0 0 3px var(--acento-fondo)}
.campo{font-size:var(--t-s); color:var(--texto-2)}

/* ── Avisos ── */
.aviso{padding:12px 16px; border-radius:var(--r-m); border:1px solid color-mix(in srgb, var(--aviso) 30%, transparent); background:var(--aviso-fondo); color:var(--aviso-texto); font-size:var(--t-s)}
.aviso.bien{border-color:color-mix(in srgb, var(--ok) 30%, transparent); background:var(--ok-fondo); color:var(--ok-texto)}
.aviso.debug{border-color:color-mix(in srgb, var(--acento) 30%, transparent); background:var(--acento-fondo); color:var(--acento-texto)}
.vacio{padding:16px; border-radius:var(--r-m); color:var(--texto-3)}

/* ── Menús emergentes ── */
.pedir-info ul{border-radius:14px; box-shadow:var(--sombra-3); border-color:var(--borde)}
.modal{border-radius:var(--r-l); box-shadow:var(--sombra-3)}
.modal-cab h2{color:var(--titulo)}

/* ── Avatar ── */
.avatar{width:34px; height:34px; border-radius:50%; flex:none; display:flex; align-items:center; justify-content:center;
  background:var(--acento-fondo); color:var(--primario); font-size:13px; font-weight:700}

/* ── El selector de profesional (admin): tarjeta fina arriba ── */
.selector{background:var(--superficie); border:1px solid var(--borde); border-radius:var(--r-l); box-shadow:var(--sombra-1)}
.selector select{border:1px solid var(--borde-fuerte); border-radius:var(--r-m); background:var(--superficie)}

/* ── Zonas de administración (selector «Ver como», Debug): su color y su etiqueta ── */
.etiqueta-admin{display:inline-flex; align-items:center; gap:6px; padding:3px 10px; border-radius:var(--r-pill);
  background:var(--admin-fondo); color:var(--admin-texto);
  font-size:11.5px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; white-space:nowrap}
.etiqueta-admin::before{content:""; width:7px; height:7px; border-radius:2px; background:currentColor; transform:rotate(45deg)}
.zona-admin{border-color:color-mix(in srgb, var(--admin) 32%, var(--borde)); background:color-mix(in srgb, var(--admin) 5%, var(--superficie));
  box-shadow:inset 3px 0 0 var(--admin), var(--sombra-1)}
.selector.zona-admin{display:flex; flex-wrap:wrap; align-items:center; gap:10px 12px}


/* ASISTENTE CLÍNICO · 40 · PÁGINAS
 * Lo propio de cada página que tiene que mandar sobre los componentes. Lo migrado desde
 * 15-heredado.css viene aquí, por páginas y usando solo tokens. */

/* ── Mis sesiones ── */
.kpis.sesion-kpis{grid-template-columns:repeat(4, minmax(0, 1fr))}
@media (max-width:900px){ .kpis.sesion-kpis{grid-template-columns:repeat(2, minmax(0, 1fr))} }

/* ── Cabecera de página con acciones a la derecha (Profesionales…) ── */
.saludo-con-acciones{display:flex; align-items:flex-start; justify-content:space-between; gap:16px; flex-wrap:wrap}

/* ── Profesionales: añadir (boceto) ── */
.alta-rejilla{display:grid; grid-template-columns:minmax(0, 1.1fr) minmax(0, 1fr); gap:20px; align-items:start}
@media (max-width:1100px){ .alta-rejilla{grid-template-columns:1fr} }
.alta-form .fila-campos .campo{min-width:180px}
.pasos-alta{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:8px}
.paso-alta{display:grid; grid-template-columns:auto 1fr auto; gap:12px; align-items:center; padding:12px 14px; border:1px solid var(--borde-suave); border-radius:var(--r-m); background:var(--superficie)}
.paso-alta-num{width:28px; height:28px; border-radius:50%; display:inline-flex; align-items:center; justify-content:center; background:var(--superficie-3); color:var(--primario); font-weight:700; font-size:13px}
.paso-alta-texto{display:flex; flex-direction:column; gap:2px; min-width:0}
.paso-alta-texto small{font-size:var(--t-s); color:var(--texto-3)}
.paso-alta.aqui{border-color:color-mix(in srgb, var(--acento) 40%, var(--borde)); background:var(--acento-fondo)}
.paso-alta.despues{opacity:.7}
@media (max-width:560px){ .paso-alta{grid-template-columns:auto 1fr} .paso-alta .chip{grid-column:2; justify-self:start} }
.acciones-fila{display:flex; gap:6px; justify-content:flex-end; flex-wrap:wrap}

/* ── Ayuda: diapositivas a pantalla completa DENTRO del nuevo marco ──
 * La ayuda tiene su propio desplazamiento (paso a paso). Tiene que ocupar justo el hueco que
 * dejan la barra superior y, en el móvil, las pestañas: si no, hay dos barras de desplazamiento
 * y la diapositiva no cabe. El relleno lateral, del propio contenedor (no de 100vw, que
 * contaba también la barra lateral). */
.pagina-ayuda .contenido{padding:0; max-width:none}
@media (min-width:901px){ .pagina-ayuda .ayuda-snap{height:calc(100dvh - var(--barra-alto))} }
.pagina-ayuda .diapo{padding:44px clamp(24px, 5%, 72px); grid-template-columns:minmax(280px, 0.8fr) minmax(0, 1.2fr); gap:44px}
.pagina-ayuda .diapo.al-reves{grid-template-columns:minmax(0, 1.2fr) minmax(280px, 0.8fr)}
.pagina-ayuda .diapo.sin-captura, .pagina-ayuda .diapo-portada{grid-template-columns:minmax(0, 860px)}
.pagina-ayuda .diapo:nth-child(even){background:var(--superficie)}
.pagina-ayuda .diapo-captura{max-height:calc(100dvh - var(--barra-alto) - 88px); border-color:var(--borde); border-radius:var(--r-l); box-shadow:var(--sombra-3); background:var(--superficie)}
.pagina-ayuda .diapo-texto h2{color:var(--titulo)}
.pagina-ayuda .ayuda-num{background:var(--primario)}
@media (max-width:1100px){
  .pagina-ayuda .diapo, .pagina-ayuda .diapo.al-reves{grid-template-columns:1fr; gap:24px; align-content:start}
  .pagina-ayuda .diapo.al-reves .diapo-texto{order:0}
  .pagina-ayuda .diapo-captura{max-height:none}
}
/* Por debajo de 900 px la ayuda es una página normal (sin desplazamiento propio): 15-heredado. */
@media (max-width:900px){ .pagina-ayuda .diapo{padding:32px 16px} .pagina-ayuda .contenido{padding-bottom:96px} }

/* ── Buscar paciente: resultados ── */
.resultados-busqueda{margin-top:4px}
.resultado{position:relative; display:grid; grid-template-columns:auto minmax(0, 1fr) auto auto; gap:14px; align-items:center; padding:12px 16px}
.resultado:hover{background:var(--superficie-2)}
.resultado .avatar{width:40px; height:40px; font-size:14px}
.resultado-quien{display:flex; flex-direction:column; gap:2px; min-width:0}
.resultado-quien a{color:var(--titulo); text-decoration:none; font-size:var(--t-l)}
.resultado-quien a::after{content:""; position:absolute; inset:0}   /* toda la fila abre la ficha */
.resultado-quien .tenue{font-size:var(--t-s)}
.resultado-chips{display:flex; gap:6px; flex-wrap:wrap; justify-content:flex-end}
.resultado-accion .mini{pointer-events:none}
.resultados-busqueda mark{background:color-mix(in srgb, var(--aviso) 28%, transparent); color:inherit; border-radius:3px; padding:0 1px}
@media (max-width:640px){ .resultado{grid-template-columns:auto minmax(0, 1fr)} .resultado-chips, .resultado-accion{grid-column:2; justify-content:flex-start} .resultado-accion{display:none} }
.buscar-grande{display:flex; gap:10px}
.buscar-grande input{flex:1; min-width:0; height:46px; padding:0 14px; font-size:16px}

/* ── Ficha: contenidos en su app ── */
#contenidos .bloque-cab .btn{margin-left:auto}
.contenido-fila{display:grid; grid-template-columns:auto minmax(0, 1fr) auto; gap:14px; align-items:center; padding:12px 16px}
.contenido-mini{position:relative; width:72px; height:48px; flex:none; border-radius:var(--r-s); overflow:hidden; background:var(--superficie-3)}
.contenido-mini img{width:100%; height:100%; object-fit:cover; display:block}
.contenido-tipo{position:absolute; inset:auto auto 4px 4px; padding:1px 6px; border-radius:var(--r-pill); background:rgba(16,24,40,.7); color:#fff; font-size:10px}
.contenido-que{display:flex; flex-direction:column; gap:3px; min-width:0}
.contenido-que b{color:var(--titulo)}
.contenido-que small{font-size:var(--t-s); color:var(--texto-3)}
.contenido-chips{display:flex; gap:6px; flex-wrap:wrap; margin-top:2px}
.contenido-fila.elegible{padding:0}
.contenido-elegir{display:grid; grid-template-columns:auto auto minmax(0, 1fr); gap:14px; align-items:center; padding:12px 16px; cursor:pointer}
.contenido-elegir:hover{background:var(--superficie-2)}
.contenido-elegir:has(input:checked:not([disabled])){background:var(--acento-fondo)}
.contenido-elegir input{width:18px; height:18px; accent-color:var(--primario)}
.filtros-contenido{display:flex; flex-wrap:wrap; gap:10px 14px; align-items:flex-end}
.filtros-contenido .campo{margin:0}
.filtros-contenido .crece{flex:1 1 280px}
.filtros-contenido select, .filtros-contenido input{height:40px; padding:0 12px}
.envio-contenidos{position:sticky; bottom:0; padding:14px 0 4px; background:var(--superficie); justify-content:flex-end}

/* ── Ficha: el chat con la paciente ── */
.chat-hilo{list-style:none; margin:4px 0 12px; padding:12px; display:flex; flex-direction:column; gap:8px; max-height:420px; overflow-y:auto;
  background:var(--superficie-2); border-radius:var(--r-m)}
.chat-msg{max-width:85%; display:flex; flex-direction:column; gap:3px}
.chat-texto{padding:9px 12px; border-radius:14px; font-size:14.5px; line-height:1.45; white-space:pre-wrap; word-break:break-word}
.chat-msg small{font-size:11.5px; color:var(--texto-3); padding:0 4px}
.chat-msg.paciente{align-self:flex-start}
.chat-msg.paciente .chat-texto{background:var(--superficie); border:1px solid var(--borde); border-bottom-left-radius:4px}
.chat-msg.mio{align-self:flex-end; align-items:flex-end}
.chat-msg.mio .chat-texto{background:var(--primario); color:var(--primario-texto); border-bottom-right-radius:4px}
.chat-msg.equipo{align-self:flex-end; align-items:flex-end}
.chat-msg.equipo .chat-texto{background:var(--acento-fondo); color:var(--texto); border-bottom-right-radius:4px}
.chat-msg.sistema{align-self:center; max-width:95%; text-align:center}
.chat-msg.sistema .chat-texto{background:none; color:var(--texto-3); font-size:13px; padding:2px 6px}
.chat-form textarea{width:100%; min-height:76px; padding:10px 12px; border:1px solid var(--borde-fuerte); border-radius:var(--r-m); background:var(--superficie); resize:vertical; font-size:15px}
.chat-form textarea:focus{outline:none; border-color:var(--acento); box-shadow:0 0 0 3px var(--acento-fondo)}
.chat-form-pie{display:flex; justify-content:space-between; align-items:center; margin-top:8px}
.chat-otros{margin:10px 0 0}

/* ── Ficha: planes de tratamiento (plegables, con su contenido) ── */
.planes-lista{display:flex; flex-direction:column; border:1px solid var(--borde-suave); border-radius:var(--r-m); overflow:hidden}
.plan-item + .plan-item{border-top:1px solid var(--borde-suave)}
.plan-item > summary{display:flex; align-items:center; gap:10px; padding:12px 14px; cursor:pointer; list-style:none}
.plan-item > summary::-webkit-details-marker{display:none}
.plan-item > summary::before{content:'▸'; color:var(--texto-3); font-size:12px}
.plan-item[open] > summary::before{content:'▾'}
.plan-item > summary:hover{background:var(--superficie-2)}
.plan-que{display:flex; flex-direction:column; gap:2px; margin-right:auto; min-width:0}
.plan-que b{color:var(--titulo)}
.plan-que small{font-size:var(--t-s); color:var(--texto-3)}
.plan-cuerpo{padding:4px 16px 16px}
.plan-contenido .perfil-fila{grid-template-columns:200px 1fr}
.plan-contenido dd.informe-texto{white-space:pre-wrap}
@media (max-width:640px){ .plan-contenido .perfil-fila{grid-template-columns:1fr} }
.plan-rejilla{display:grid; grid-template-columns:minmax(0, 1.4fr) minmax(300px, 1fr); gap:20px; align-items:start}
@media (max-width:1100px){ .plan-rejilla{grid-template-columns:1fr} }
.versiones{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:8px}
.version details{border:1px solid var(--borde-suave); border-radius:var(--r-m); background:var(--superficie)}
.version summary{display:flex; align-items:flex-start; gap:12px; padding:10px 12px; cursor:pointer; list-style:none}
.version summary::-webkit-details-marker{display:none}
.version-n{flex:none; min-width:34px; height:26px; padding:0 8px; border-radius:var(--r-pill); display:inline-flex; align-items:center; justify-content:center; background:var(--superficie-3); color:var(--primario); font-weight:700; font-size:13px}
.version-que{display:flex; flex-direction:column; gap:2px; margin-right:auto; min-width:0}
.version-que small{font-size:12.5px; color:var(--texto-3)}
.version-cambios{color:var(--texto-2) !important}
.version-cuerpo{padding:0 12px 12px}

/* ── Ficha: contactar con el equipo ── */
.equipo-pro{display:flex; align-items:center; gap:10px; flex-wrap:wrap}
.contactos-pro{display:inline-flex; gap:4px; margin-left:8px; vertical-align:middle}
.contacto-pro{display:inline-flex; align-items:center; justify-content:center; width:30px; height:30px; border-radius:var(--r-s); border:1px solid var(--borde); background:var(--superficie); color:var(--primario)}
.contacto-pro:hover{background:var(--superficie-2); border-color:var(--primario)}
.contacto-pro svg{width:16px; height:16px}
/* «Su equipo»: área estrecha a la izquierda; nombre y contactos en UNA línea, contactos a la derecha. */
#equipo .perfil-fila{grid-template-columns:86px minmax(0, 1fr); align-items:center; gap:10px}
#equipo .perfil-fila dd{min-width:0}
#equipo .equipo-pro{flex-wrap:nowrap; justify-content:space-between; gap:8px; width:100%; min-width:0}
#equipo .equipo-nombre{min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
#equipo .contactos-pro{margin-left:auto; flex:none}

/* ── Ficha: wearable, dentro de Medidas ── */
.w-cab{margin-top:22px !important; padding-top:16px; border-top:1px solid var(--borde-suave)}
.w-estado{display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin:0 0 10px; font-size:var(--t-s)}
.w-grupo{margin:14px 0 8px; font-size:12px; font-weight:700; letter-spacing:.07em; text-transform:uppercase; color:var(--texto-3)}
.w-kpis{grid-template-columns:repeat(auto-fill, minmax(210px, 1fr))}
.w-kpi .kpi-valor{font-size:26px}
.w-barras{width:100%; height:34px; margin:6px 0 2px; display:block}
.w-barras rect{fill:var(--acento); opacity:.75}
.w-tend{font-weight:700; white-space:nowrap}
.w-tend{color:var(--texto-2)}   /* neutro: subir no siempre es bueno (la FC en reposo) */

/* ── Reporte de gestión ── */
.reporte .reporte-bloque h3.sub{margin:4px 0 10px}
.r-rejilla{display:grid; grid-template-columns:repeat(auto-fit, minmax(300px, 1fr)); gap:18px 28px}
.r-barras{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:8px}
.r-barras li{display:grid; grid-template-columns:minmax(110px, 38%) 1fr auto; gap:10px; align-items:center; font-size:var(--t-s)}
.r-etq{overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--texto-2)}
.r-pista{height:10px; border-radius:var(--r-pill); background:var(--superficie-3); overflow:hidden}
.r-pista span{display:block; height:100%; border-radius:var(--r-pill); background:var(--acento)}
.r-num{font-variant-numeric:tabular-nums; font-weight:700; white-space:nowrap}
.r-num small{font-weight:500; color:var(--texto-3)}
.r-grafica{margin:0}
.r-grafica svg{width:100%; height:auto; display:block}
.r-alta{fill:var(--acento)} .r-baja{fill:var(--aviso)}
.r-linea{fill:none; stroke:var(--primario); stroke-width:2.5}
.r-punto{fill:var(--primario); stroke:var(--superficie); stroke-width:2}
.r-alta-m{background:var(--acento)} .r-baja-m{background:var(--aviso)}
.r-linea-m{display:inline-block; width:18px; height:3px; border-radius:2px; background:var(--primario); vertical-align:middle}
.r-cohortes td, .r-cohortes th{text-align:center}
.r-cohortes th[scope="row"]{text-align:left}
.r-cohortes td[style]{background:color-mix(in srgb, var(--acento) calc(var(--r) * 70%), var(--superficie)); color:var(--texto)}
.r-cohortes .r-media td, .r-cohortes .r-media th{font-weight:700; border-top:2px solid var(--borde)}
.r-cohortes .r-poco{opacity:.55}
.r-apilada{display:flex; height:30px; border-radius:var(--r-m); overflow:hidden; margin-top:14px; font-size:12.5px; font-weight:700; color:#fff}
.r-apilada span{display:flex; align-items:center; justify-content:center; white-space:nowrap; overflow:hidden; min-width:0}
.r-prom{background:var(--ok)} .r-pas{background:var(--texto-4)} .r-det{background:var(--mal)}

/* ── Pacientes de prueba ── */
.zona-prueba{display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:8px 12px; border-style:dashed}
.zona-prueba .en-linea, .marca-prueba .en-linea{margin:0}
.marca-prueba{display:flex; gap:8px; justify-content:flex-end; margin:0 0 8px}
.tabla-sesiones tr.es-prueba td:first-child{box-shadow:inset 3px 0 0 var(--aviso-texto)}
.tabla-sesiones .acciones-fila .en-linea{margin:0}

/* ── Configuración (especialidades y tipos de cita) ── */
.cfg-lista{display:flex; flex-direction:column; border:1px solid var(--linea); border-radius:12px; overflow:hidden}
.cfg-fila{border-top:1px solid var(--linea)}
.cfg-fila:first-child{border-top:0}
.cfg-fila > summary{display:grid; grid-template-columns:minmax(160px, 1.3fr) 1.4fr 1fr auto; gap:12px; align-items:center; padding:12px 16px; cursor:pointer; list-style:none}
.cfg-fila > summary::-webkit-details-marker{display:none}
.cfg-fila > summary:hover{background:var(--fondo-suave, color-mix(in srgb, var(--primario) 4%, transparent))}
.cfg-fila[open] > summary{background:color-mix(in srgb, var(--primario) 6%, transparent)}
.cfg-nombre{display:flex; flex-direction:column}
.cfg-nombre small{color:var(--texto-2); font-size:var(--t-xs, 12px); font-family:ui-monospace, monospace}
.cfg-dato{font-size:var(--t-s)}
.cfg-tipo > summary{grid-template-columns:minmax(160px, 1.3fr) 90px 1fr 1fr auto}
.cfg-nueva > summary{grid-template-columns:1fr; color:var(--primario)}
.cfg-form{padding:14px 16px 16px; border-top:1px dashed var(--linea)}
.cfg-campos{display:grid; grid-template-columns:repeat(auto-fill, minmax(170px, 1fr)); gap:0 14px}
.cfg-unidad{display:flex; align-items:center; gap:6px}
.cfg-unidad input{width:90px}
.cfg-check{display:inline-flex; align-items:center; gap:6px; margin:0 14px 10px 0; font-size:var(--t-s)}
.cfg-roles{border:0; padding:0; margin:0 0 6px}
.cfg-roles legend{font-size:var(--t-s); font-weight:600; color:var(--texto-2); margin-bottom:6px}
.cfg-esp + .cfg-esp{margin-top:18px}
@media (max-width:700px){ .cfg-fila > summary{grid-template-columns:1fr auto} .cfg-fila > summary .cfg-dato{grid-column:1 / -1} }

/* ── Mi perfil ── */
.perfil-pagina .perfil-cab-bloque{margin-bottom:18px}
.perfil-pagina .perfil-cab{align-items:center}
.perfil-foto{width:72px; height:72px; border-radius:50%; object-fit:cover; flex:none}
.perfil-cab .avatar.perfil-foto{font-size:24px}
.perfil-chips{display:flex; flex-wrap:wrap; gap:6px; margin:8px 0 0}
.perfil-etq{font-size:var(--t-xs, 12px); text-transform:uppercase; letter-spacing:.07em}
.perfil-rejilla{display:grid; grid-template-columns:minmax(0, 1.15fr) minmax(0, 1fr); gap:18px; align-items:start}
.perfil-rejilla > div{display:flex; flex-direction:column; gap:18px; min-width:0}
.perfil-rejilla .bloque, .perfil-pagina > .bloque{margin:0}
.perfil-pagina > #avisos{margin-top:18px}
.perfil-pagina .perfil-datos{margin:0}
.perfil-pagina .perfil-fila{grid-template-columns:150px 1fr}
.perfil-pagina .perfil-fila dd small{display:block; margin-top:2px; color:var(--texto-3); font-size:12px}
.perfil-form{margin-top:4px}
.perfil-form .campo > span small{font-weight:400; color:var(--texto-3)}
.perfil-foto-campo{display:grid; grid-template-columns:auto 1fr; gap:6px 16px; align-items:center; margin:0 0 16px}
.perfil-foto-campo .campo{margin:0}
.perfil-foto-campo .cfg-check{grid-column:2; margin:0}
.perfil-pie{display:flex; justify-content:space-between; align-items:center; gap:12px; padding-top:14px; margin-top:4px; border-top:1px solid var(--linea)}
.avisos-rejilla{display:grid; grid-template-columns:repeat(auto-fill, minmax(260px, 1fr)); gap:10px; margin:8px 0 18px}
.aviso-opcion{display:flex; gap:10px; align-items:flex-start; padding:12px 14px; border:1px solid var(--linea); border-radius:12px; background:var(--superficie); cursor:pointer}
.aviso-opcion:has(input:checked){border-color:color-mix(in srgb, var(--primario) 45%, transparent); background:color-mix(in srgb, var(--primario) 5%, var(--superficie))}
.aviso-opcion input{margin-top:3px}
.aviso-opcion > span{display:flex; flex-direction:column; gap:2px}
.aviso-opcion small{color:var(--texto-2); font-size:var(--t-s)}
.avisos-canal{padding:14px 16px 2px; border-radius:12px; background:color-mix(in srgb, var(--primario) 4%, transparent)}
.mono{font-family:ui-monospace, monospace; letter-spacing:.04em}
@media (max-width:900px){ .perfil-rejilla{grid-template-columns:1fr} .perfil-pagina .perfil-fila{grid-template-columns:1fr; gap:4px} }
.perfil-valor{line-height:1.5}
.perfil-valor .chip{vertical-align:1px}
.perfil-plegable{margin-top:14px; border:1px solid var(--linea); border-radius:12px; padding:0 16px}
.perfil-plegable > summary{display:flex; justify-content:space-between; align-items:center; gap:10px; padding:12px 0; cursor:pointer; font-weight:600}
.perfil-plegable[open] > summary{border-bottom:1px solid var(--linea-suave, var(--linea)); margin-bottom:10px}
.perfil-plegable > .perfil-datos{margin:0 0 14px}
.oss-lista{list-style:none; margin:0 0 14px; padding:0; display:grid; grid-template-columns:repeat(auto-fill, minmax(190px, 1fr)); gap:8px}
.oss-lista li{display:flex; justify-content:space-between; align-items:center; gap:8px; padding:9px 12px; border:1px solid var(--linea); border-radius:10px; font-size:var(--t-s)}
.id-copiable{user-select:all; font-size:12.5px; word-break:break-all}

/* ── Biblioteca ── */
.bib-lista{list-style:none; margin:0; padding:0}
.bib-fila{display:flex; gap:12px; align-items:flex-start; padding:12px 0; border-top:1px solid var(--linea-suave, var(--linea))}
.bib-fila:first-child{border-top:0}
.bib-icono{flex:none; width:34px; height:34px; display:grid; place-items:center; border-radius:9px; background:color-mix(in srgb, var(--primario) 8%, transparent); font-size:15px}
.bib-que{flex:1; min-width:0; display:flex; flex-direction:column; gap:2px}
.bib-que small{color:var(--texto-2); font-size:var(--t-s)}
.bib-desc{font-size:var(--t-s); color:var(--texto-2); margin-top:4px}
.bib-acc{display:flex; gap:10px; align-items:center; flex:none}
.bib-admin > summary{grid-template-columns:auto minmax(0, 2fr) 1fr 1fr auto}
.bib-admin > summary .bib-que{flex:initial}
.bib-compartir > summary{list-style:none; cursor:pointer}
.bib-compartir > summary::-webkit-details-marker{display:none}
.bib-compartir[open]{flex-basis:100%}
.bib-elegir{flex-wrap:wrap}
.bib-compartir-form{margin-top:10px; padding:12px; border:1px solid var(--linea); border-radius:12px; min-width:280px}
.bib-ficha{margin-top:18px; padding-top:14px; border-top:1px dashed var(--linea)}
.bib-ficha-cab{display:flex; justify-content:space-between; align-items:center; gap:10px}
.bib-ficha-cab .sub{margin:0}
.contenidos-esp{margin:10px 0 2px; font-size:var(--t-xs, 12px); text-transform:uppercase; letter-spacing:.07em; color:var(--texto-3)}
@media (max-width:700px){ .bib-admin > summary{grid-template-columns:auto 1fr auto} .bib-admin > summary .cfg-dato{display:none} }
.bib-icono .icono{width:17px; height:17px; color:var(--primario)}
.nps-cuerpo{display:block; min-width:0}
.nps-cuerpo > *{display:block}
.nps-cuerpo .nps-cita{margin-bottom:2px; line-height:1.9}
.nps-cuerpo .nps-cita .chip{margin-right:2px}
.nps-cuerpo .nps-com{margin-top:6px}

/* ── REMPe ── */
.rempe-ficha{margin:16px 0 6px; padding:14px 16px; border:1px solid var(--linea); border-radius:12px; background:color-mix(in srgb, var(--primario) 3%, var(--superficie))}
.rempe-ficha .bib-ficha-cab{margin-bottom:6px}
.rempe-botones{margin-top:10px; flex-wrap:wrap}
.rempe-pruebas{margin:8px 0 0; border-style:dashed}
.receta-pauta{display:block; font-size:var(--t-s); color:var(--texto)}

/* Wearable: tarjetas que encienden/apagan series, y la gráfica conjunta */
.wearable{position:relative}
.w-toggle{position:absolute; opacity:0; pointer-events:none; width:1px; height:1px}
.w-kpis > li{list-style:none; display:flex}
.w-kpi{flex:1; cursor:pointer; user-select:none; border:1.5px solid transparent; transition:opacity .15s, border-color .15s}
.w-kpi:hover{border-color:color-mix(in srgb, var(--wc) 45%, transparent)}
.w-kpi .w-punto{display:inline-block; width:9px; height:9px; border-radius:50%; background:var(--wc); margin-right:6px; vertical-align:1px}
.w-kpi .kpi-pie + .kpi-pie{margin-top:2px}
.w-toggle:focus-visible + .w-toggle{outline:none}
.w-c1{--wc:#2f6fdf} .w-c2{--wc:#e0782f} .w-c3{--wc:#1f9d77} .w-c4{--wc:#9b51e0} .w-c5{--wc:#d64561} .w-c6{--wc:#0e8fae} .w-c7{--wc:#8a6d1f} .w-c8{--wc:#5a6b80}
.w-grafica-caja{margin:12px 0 6px; padding:8px 6px 0; border:1px solid var(--linea); border-radius:12px; background:var(--superficie)}
.w-grafica{display:block; width:100%; height:auto}
.w-grafica .w-base{stroke:var(--linea); stroke-width:1}
.w-serie polyline{fill:none; stroke:var(--wc); stroke-width:2; stroke-linejoin:round; stroke-linecap:round}
.w-serie circle{fill:var(--wc)}
.w-serie circle.w-hoy{fill:var(--superficie); stroke:var(--wc); stroke-width:2; stroke-dasharray:2 2}
.w-col{fill:transparent; cursor:crosshair}
.w-col:hover{fill:color-mix(in srgb, var(--primario) 10%, transparent)}
.w-ejes text{font-size:11px; fill:var(--texto-3)}
.wearable:has(#w-t1:not(:checked)) .w-s1{display:none}
.wearable:has(#w-t1:not(:checked)) label[for="w-t1"]{opacity:.45}
.wearable:has(#w-t1:checked) label[for="w-t1"]{border-color:color-mix(in srgb, var(--wc) 55%, transparent)}
.wearable:has(#w-t1:focus-visible) label[for="w-t1"]{outline:2px solid var(--primario); outline-offset:2px}
.wearable:has(#w-t2:not(:checked)) .w-s2{display:none}
.wearable:has(#w-t2:not(:checked)) label[for="w-t2"]{opacity:.45}
.wearable:has(#w-t2:checked) label[for="w-t2"]{border-color:color-mix(in srgb, var(--wc) 55%, transparent)}
.wearable:has(#w-t2:focus-visible) label[for="w-t2"]{outline:2px solid var(--primario); outline-offset:2px}
.wearable:has(#w-t3:not(:checked)) .w-s3{display:none}
.wearable:has(#w-t3:not(:checked)) label[for="w-t3"]{opacity:.45}
.wearable:has(#w-t3:checked) label[for="w-t3"]{border-color:color-mix(in srgb, var(--wc) 55%, transparent)}
.wearable:has(#w-t3:focus-visible) label[for="w-t3"]{outline:2px solid var(--primario); outline-offset:2px}
.wearable:has(#w-t4:not(:checked)) .w-s4{display:none}
.wearable:has(#w-t4:not(:checked)) label[for="w-t4"]{opacity:.45}
.wearable:has(#w-t4:checked) label[for="w-t4"]{border-color:color-mix(in srgb, var(--wc) 55%, transparent)}
.wearable:has(#w-t4:focus-visible) label[for="w-t4"]{outline:2px solid var(--primario); outline-offset:2px}
.wearable:has(#w-t5:not(:checked)) .w-s5{display:none}
.wearable:has(#w-t5:not(:checked)) label[for="w-t5"]{opacity:.45}
.wearable:has(#w-t5:checked) label[for="w-t5"]{border-color:color-mix(in srgb, var(--wc) 55%, transparent)}
.wearable:has(#w-t5:focus-visible) label[for="w-t5"]{outline:2px solid var(--primario); outline-offset:2px}
.wearable:has(#w-t6:not(:checked)) .w-s6{display:none}
.wearable:has(#w-t6:not(:checked)) label[for="w-t6"]{opacity:.45}
.wearable:has(#w-t6:checked) label[for="w-t6"]{border-color:color-mix(in srgb, var(--wc) 55%, transparent)}
.wearable:has(#w-t6:focus-visible) label[for="w-t6"]{outline:2px solid var(--primario); outline-offset:2px}
.wearable:has(#w-t7:not(:checked)) .w-s7{display:none}
.wearable:has(#w-t7:not(:checked)) label[for="w-t7"]{opacity:.45}
.wearable:has(#w-t7:checked) label[for="w-t7"]{border-color:color-mix(in srgb, var(--wc) 55%, transparent)}
.wearable:has(#w-t7:focus-visible) label[for="w-t7"]{outline:2px solid var(--primario); outline-offset:2px}
.wearable:has(#w-t8:not(:checked)) .w-s8{display:none}
.wearable:has(#w-t8:not(:checked)) label[for="w-t8"]{opacity:.45}
.wearable:has(#w-t8:checked) label[for="w-t8"]{border-color:color-mix(in srgb, var(--wc) 55%, transparent)}
.wearable:has(#w-t8:focus-visible) label[for="w-t8"]{outline:2px solid var(--primario); outline-offset:2px}

/* Medidas: la misma lógica que el wearable (casillas m-t1…m-t8) */
.medidas-graf{position:relative}
.w-serie polyline.m-segunda{stroke-dasharray:5 4}
.medidas-graf:has(#m-t1:not(:checked)) .m-s1{display:none}
.medidas-graf:has(#m-t1:not(:checked)) label[for="m-t1"]{opacity:.45}
.medidas-graf:has(#m-t1:checked) label[for="m-t1"]{border-color:color-mix(in srgb, var(--wc) 55%, transparent)}
.medidas-graf:has(#m-t1:focus-visible) label[for="m-t1"]{outline:2px solid var(--primario); outline-offset:2px}
.medidas-graf:has(#m-t2:not(:checked)) .m-s2{display:none}
.medidas-graf:has(#m-t2:not(:checked)) label[for="m-t2"]{opacity:.45}
.medidas-graf:has(#m-t2:checked) label[for="m-t2"]{border-color:color-mix(in srgb, var(--wc) 55%, transparent)}
.medidas-graf:has(#m-t2:focus-visible) label[for="m-t2"]{outline:2px solid var(--primario); outline-offset:2px}
.medidas-graf:has(#m-t3:not(:checked)) .m-s3{display:none}
.medidas-graf:has(#m-t3:not(:checked)) label[for="m-t3"]{opacity:.45}
.medidas-graf:has(#m-t3:checked) label[for="m-t3"]{border-color:color-mix(in srgb, var(--wc) 55%, transparent)}
.medidas-graf:has(#m-t3:focus-visible) label[for="m-t3"]{outline:2px solid var(--primario); outline-offset:2px}
.medidas-graf:has(#m-t4:not(:checked)) .m-s4{display:none}
.medidas-graf:has(#m-t4:not(:checked)) label[for="m-t4"]{opacity:.45}
.medidas-graf:has(#m-t4:checked) label[for="m-t4"]{border-color:color-mix(in srgb, var(--wc) 55%, transparent)}
.medidas-graf:has(#m-t4:focus-visible) label[for="m-t4"]{outline:2px solid var(--primario); outline-offset:2px}
.medidas-graf:has(#m-t5:not(:checked)) .m-s5{display:none}
.medidas-graf:has(#m-t5:not(:checked)) label[for="m-t5"]{opacity:.45}
.medidas-graf:has(#m-t5:checked) label[for="m-t5"]{border-color:color-mix(in srgb, var(--wc) 55%, transparent)}
.medidas-graf:has(#m-t5:focus-visible) label[for="m-t5"]{outline:2px solid var(--primario); outline-offset:2px}
.medidas-graf:has(#m-t6:not(:checked)) .m-s6{display:none}
.medidas-graf:has(#m-t6:not(:checked)) label[for="m-t6"]{opacity:.45}
.medidas-graf:has(#m-t6:checked) label[for="m-t6"]{border-color:color-mix(in srgb, var(--wc) 55%, transparent)}
.medidas-graf:has(#m-t6:focus-visible) label[for="m-t6"]{outline:2px solid var(--primario); outline-offset:2px}
.medidas-graf:has(#m-t7:not(:checked)) .m-s7{display:none}
.medidas-graf:has(#m-t7:not(:checked)) label[for="m-t7"]{opacity:.45}
.medidas-graf:has(#m-t7:checked) label[for="m-t7"]{border-color:color-mix(in srgb, var(--wc) 55%, transparent)}
.medidas-graf:has(#m-t7:focus-visible) label[for="m-t7"]{outline:2px solid var(--primario); outline-offset:2px}
.medidas-graf:has(#m-t8:not(:checked)) .m-s8{display:none}
.medidas-graf:has(#m-t8:not(:checked)) label[for="m-t8"]{opacity:.45}
.medidas-graf:has(#m-t8:checked) label[for="m-t8"]{border-color:color-mix(in srgb, var(--wc) 55%, transparent)}
.medidas-graf:has(#m-t8:focus-visible) label[for="m-t8"]{outline:2px solid var(--primario); outline-offset:2px}
.tabla-registros tr.anulada td{color:var(--texto-3); text-decoration:line-through}
.tabla-registros tr.anulada td.acciones-fila{text-decoration:none}
.tabla-registros td.corregido{font-weight:700; text-decoration:underline dotted; text-underline-offset:3px}
.r-equipo tr.r-grupo th{background:color-mix(in srgb, var(--primario) 6%, transparent); text-align:left; font-size:12px; letter-spacing:.06em; text-transform:uppercase; color:var(--texto-2)}

/* ── Avisos ── */
.aviso-opcion.pendiente{opacity:.6; cursor:not-allowed}
.aviso-notas{display:flex; flex-wrap:wrap; gap:4px 8px; margin-top:4px}
.aviso-nota{font-size:12px; color:var(--texto-3); font-style:italic}
.avisos-prueba{display:flex; flex-wrap:wrap; align-items:center; gap:10px; margin:14px 0 0}
.avisos-registro .registro-fila{grid-template-columns:120px 1fr auto}
.solo-lectura{border:0; padding:0; margin:0; min-width:0}
.solo-lectura input, .solo-lectura textarea, .solo-lectura select{background:var(--fondo-suave, transparent); cursor:default}
.nps-media.bien{color:var(--ok-texto, #1f7a4d)} .nps-media.medio{color:var(--texto)} .nps-media.mal{color:var(--aviso-texto, #a35200)}
/* Ficha: las dos columnas empiezan con su título de sección, a la misma altura. */
.ficha-paciente > .ficha-indice.suelto{margin:0 0 4px}
.ficha-der > .ficha-seccion:first-child, .ficha-izq > .ficha-seccion:first-child{margin-top:0}

/* ── Pie de todas las páginas: uso interno, acceso, legal y versión ── */
.pie-legal{margin:40px 0 8px; padding:18px 0 0; border-top:1px solid var(--linea); font-size:12.5px; line-height:1.55; color:var(--texto-3); max-width:1100px}
.pie-legal p{margin:0 0 8px}
.pie-legal b{color:var(--texto-2)}
.pie-legal a{color:inherit; text-decoration:underline; text-underline-offset:2px}
.pie-legal-fila{display:flex; flex-wrap:wrap; gap:4px 14px; align-items:center; margin-top:10px !important}
.pie-version{margin-left:auto; font-family:ui-monospace, monospace; font-size:11.5px; white-space:nowrap}
@media (max-width:700px){ .pie-version{margin-left:0} }

/* ── «Desde la última vez» (cita) ── */
.bloque.desde{border-left:4px solid var(--primario)}
.desde-datos{margin:0}
.desde-datos .perfil-fila{grid-template-columns:150px 1fr}
.desde-lista{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:6px}
.desde-lista details summary{cursor:pointer}
.desde-nota{margin:6px 0 0; padding:8px 10px; border-radius:8px; background:color-mix(in srgb, var(--primario) 5%, transparent); font-size:var(--t-s); white-space:pre-line}
.desde-bien{color:var(--ok-texto, #1f7a4d); font-weight:700}
.desde-mal{color:var(--aviso-texto, #a35200); font-weight:700}
@media (max-width:700px){ .desde-datos .perfil-fila{grid-template-columns:1fr} }

/* ── Notificaciones: campana, desplegable, aviso de portada y página ── */
.notif-btn{position:relative; display:inline-grid; place-items:center; width:38px; height:38px; border-radius:10px; border:1px solid var(--linea); background:var(--superficie); color:var(--texto-2); cursor:pointer}
.notif-btn svg{width:19px; height:19px}
.notif-btn:hover{color:var(--primario); border-color:color-mix(in srgb, var(--primario) 40%, transparent)}
.notif-cuenta{position:absolute; top:-6px; right:-6px; min-width:19px; height:19px; padding:0 5px; border-radius:10px; background:#d64561; color:#fff; font-size:11px; font-weight:700; display:grid; place-items:center; line-height:1}
.notif-menu{margin:0; inset:auto; position:fixed; top:62px; right:16px; width:min(380px, calc(100vw - 32px)); max-height:min(70vh, 560px); overflow:auto; padding:14px; border:1px solid var(--linea); border-radius:14px; background:var(--superficie); color:var(--texto); box-shadow:var(--sombra-alta, 0 12px 40px rgba(0,0,0,.18))}
.notif-cab{display:flex; justify-content:space-between; align-items:center; gap:10px; margin-bottom:8px}
.notif-cab .en-linea{margin:0}
.notif-lista{list-style:none; margin:0; padding:0}
.notif-fila{display:grid; grid-template-columns:10px 1fr auto; gap:10px; align-items:start; padding:10px 4px; border-top:1px solid var(--linea-suave, var(--linea))}
.notif-fila:first-child{border-top:0}
.notif-fila > span:nth-child(2){display:flex; flex-direction:column; gap:2px; min-width:0}
.notif-fila small{color:var(--texto-2); font-size:var(--t-s)}
.notif-fila time{font-size:12px; color:var(--texto-3); white-space:nowrap}
.notif-punto{width:8px; height:8px; border-radius:50%; margin-top:7px; background:transparent}
.notif-fila.nueva .notif-punto{background:#2f6fdf}
.notif-fila.nueva b{color:var(--primario)}
.notif-pie{margin:10px 0 0; font-size:var(--t-s)}
.notif-alerta{display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:8px 16px; margin:0 0 16px; border-left:4px solid #2f6fdf}
.notif-alerta-acc{display:flex; align-items:center; gap:12px}
.notif-alerta-acc .en-linea{margin:0}
.aviso.notif-alerta{background:color-mix(in srgb, #2f6fdf 8%, var(--superficie)); color:var(--texto); border-color:color-mix(in srgb, #2f6fdf 30%, transparent)}
.aviso.notif-alerta b{color:var(--primario)}

/* ── Transcripciones (protocolos) ── */
.tr-fila > summary{grid-template-columns:minmax(0, 1.4fr) 1fr 1fr auto}
.tr-secciones{display:flex; flex-direction:column; gap:8px; margin-bottom:14px}
.tr-seccion{display:grid; grid-template-columns:28px minmax(160px, 1fr) minmax(0, 2.2fr) auto; gap:10px; align-items:end; padding:10px; border:1px solid var(--linea); border-radius:10px}
.tr-seccion.nueva{border-style:dashed; opacity:.85}
.tr-seccion .campo{margin:0}
.tr-seccion .cfg-check{margin:0 0 10px}
.tr-num{font-weight:700; color:var(--texto-3); padding-bottom:10px}
.tr-versiones{padding:0 16px 14px}
@media (max-width:800px){ .tr-seccion{grid-template-columns:1fr} .tr-num{padding:0} }

/* ── Gestión de notificaciones ── */
.ng-tabla td{vertical-align:top}
.ng-tabla td:first-child{min-width:280px}
.ng-texto{display:block; font-weight:600}
.ng-texto a, .enlace-ej{color:var(--primario); text-decoration:underline; text-underline-offset:2px}
.ng-centro{text-align:center}
.ng-sw input{width:18px; height:18px}
.ng-destinos{display:flex; flex-direction:column; gap:2px}
.ng-destinos .cfg-check{margin:0; font-size:12.5px; white-space:nowrap}
.ng-fuente{display:block; margin-top:4px; font-size:12px; max-width:200px}
.ng-pie{position:sticky; bottom:0; background:var(--fondo, var(--superficie)); padding:12px 0}
.sr-only{position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0)}
.notif-texto a{color:var(--primario); font-weight:700} .notif-fila.importante .notif-punto{box-shadow:0 0 0 2px color-mix(in srgb, #d64561 40%, transparent)} .notif-alerta.obligatoria{border-left-color:#d64561}
.notif-alerta.obligatoria{align-items:flex-start} .notif-oblig-cuerpo p{margin:4px 0 0}


/* ── Historia (ficha): todo por fecha, con selector de tipos y quién lo ve ── */
.historia .bloque-resumen .hist-vis{margin-left:4px}
.hist-nueva{margin:10px 0 16px}
.hist-para{border:0; margin:0; padding:0; display:flex; flex-wrap:wrap; gap:4px 14px}
.hist-para .cfg-check{margin:0}
.hist-filtro-caja{position:relative}
.hist-sw{position:absolute; opacity:0; pointer-events:none; width:1px; height:1px}
.hist-filtros{display:flex; flex-wrap:wrap; gap:6px; margin:0 0 12px}
.hist-f{cursor:pointer; user-select:none; padding:5px 11px; border-radius:999px; border:1px solid var(--linea); font-size:var(--t-s); color:var(--texto-3); background:transparent}
.hist-f small{opacity:.7; margin-left:3px}
.hist-lista{list-style:none; margin:0; padding:0; border-left:2px solid var(--linea); margin-left:6px}
.hist-item{position:relative; padding:4px 0 16px 18px}
.hist-item::before{content:''; position:absolute; left:-7px; top:9px; width:12px; height:12px; border-radius:50%; background:var(--superficie); border:2px solid var(--primario)}
.hist-item.hist-t-plan::before{border-color:#1f9d77}
.hist-item.hist-t-informe::before{border-color:#8a6d1f}
.hist-item.hist-t-personal::before{border-color:#9b51e0}
.hist-item.hist-t-consulta::before{border-color:#0e8fae}
.hist-cab{display:flex; flex-wrap:wrap; align-items:center; gap:6px}
.hist-area{font-size:12.5px; font-weight:700; color:var(--texto-2)}
.hist-titulo{font-size:var(--t-s)}
.hist-meta{margin:2px 0 6px; font-size:12.5px; color:var(--texto-3)}
.hist-texto{margin:0; white-space:pre-line; font-size:var(--t-s); line-height:1.55}
.hist-largo > summary{list-style:none; cursor:pointer}
.hist-largo > summary::-webkit-details-marker{display:none}
.hist-prev{display:block; font-size:var(--t-s); line-height:1.55; color:var(--texto); white-space:pre-line}
.hist-mas{display:inline-block; margin-top:4px; font-size:12.5px; font-weight:700; color:var(--primario); text-decoration:underline; text-underline-offset:2px}
.hist-largo[open] .hist-prev, .hist-largo[open] .hist-mas{display:none}
.hist-todo .perfil-datos{margin:4px 0 0}
.hist-acc{display:flex; gap:10px; align-items:center; margin-top:8px}
.hist-acc .en-linea{margin:0}
.hist-vis{display:inline-flex; align-items:center; gap:4px; font-size:11.5px; font-weight:700; padding:2px 8px; border-radius:999px; margin-left:auto}
.hist-cab .hist-vis{margin-left:auto}
.hist-vis-paciente{background:color-mix(in srgb, #1f9d77 14%, transparent); color:#17785b}
.hist-vis-equipo{background:color-mix(in srgb, var(--primario) 10%, transparent); color:var(--primario)}
.hist-vis-personal{background:color-mix(in srgb, #9b51e0 14%, transparent); color:#7a3bb8}
.hist-filtro-caja:has(#hf-nota:checked) .hist-f-nota{background:color-mix(in srgb, var(--primario) 10%, transparent); color:var(--primario); border-color:color-mix(in srgb, var(--primario) 40%, transparent); font-weight:700}
.hist-filtro-caja:has(#hf-nota:not(:checked)) .hist-t-nota{display:none}
.hist-filtro-caja:has(#hf-consulta:checked) .hist-f-consulta{background:color-mix(in srgb, var(--primario) 10%, transparent); color:var(--primario); border-color:color-mix(in srgb, var(--primario) 40%, transparent); font-weight:700}
.hist-filtro-caja:has(#hf-consulta:not(:checked)) .hist-t-consulta{display:none}
.hist-filtro-caja:has(#hf-plan:checked) .hist-f-plan{background:color-mix(in srgb, var(--primario) 10%, transparent); color:var(--primario); border-color:color-mix(in srgb, var(--primario) 40%, transparent); font-weight:700}
.hist-filtro-caja:has(#hf-plan:not(:checked)) .hist-t-plan{display:none}
.hist-filtro-caja:has(#hf-informe:checked) .hist-f-informe{background:color-mix(in srgb, var(--primario) 10%, transparent); color:var(--primario); border-color:color-mix(in srgb, var(--primario) 40%, transparent); font-weight:700}
.hist-filtro-caja:has(#hf-informe:not(:checked)) .hist-t-informe{display:none}
.hist-filtro-caja:has(#hf-personal:checked) .hist-f-personal{background:color-mix(in srgb, var(--primario) 10%, transparent); color:var(--primario); border-color:color-mix(in srgb, var(--primario) 40%, transparent); font-weight:700}
.hist-filtro-caja:has(#hf-personal:not(:checked)) .hist-t-personal{display:none}

/* Su equipo: asignar o cambiar a un profesional (edición y administración) */
.equipo-cambiar { margin-left: 6px; font-size: .74rem; padding: 3px 9px; min-height: 0; line-height: 1.3; border-radius: 8px; white-space: nowrap; }
.ficha-medico .equipo-cambiar { vertical-align: middle; }
dd:has(> .equipo-cambiar) { display: flex; align-items: center; justify-content: flex-end; gap: 6px; flex-wrap: nowrap; }
dd:has(> .equipo-cambiar) > .equipo-pro { min-width: 0; }
/* Antes de crear un plan: planes anteriores y borradores */
.plan-previos p { margin: 0; }
.plan-previos p + p { margin-top: 6px; }
.hist-item.hist-t-formulario::before{border-color:#6b7a90}
.hist-filtro-caja:has(#hf-formulario:checked) .hist-f-formulario{background:color-mix(in srgb, var(--primario) 10%, transparent); color:var(--primario); border-color:color-mix(in srgb, var(--primario) 40%, transparent); font-weight:700}
.hist-filtro-caja:has(#hf-formulario:not(:checked)) .hist-t-formulario{display:none}
.hist-todo .perfil-datos.respuestas{margin:4px 0 0}
/* Historia: expandir todo */
.hist-barra{display:flex; align-items:flex-start; justify-content:space-between; gap:10px; margin:0 0 12px}
.hist-barra .hist-filtros{margin:0}
.hist-expandir{flex:none; min-height:32px; padding:5px 12px; cursor:pointer}
.hist-exp-no, .hist-completo{display:none}
.hist-filtro-caja:has(#hf-todo:checked) .hist-largo{display:none}
.hist-filtro-caja:has(#hf-todo:checked) .hist-completo{display:block}
.hist-filtro-caja:has(#hf-todo:checked) .hist-exp-si{display:none}
.hist-filtro-caja:has(#hf-todo:checked) .hist-exp-no{display:inline}
.hist-filtro-caja:has(#hf-todo:focus-visible) .hist-expandir{outline:2px solid var(--primario); outline-offset:2px}
@media (max-width:600px){ .hist-barra{flex-direction:column} }
/* Ficha: «Crear plan médico» junto al título de la columna; planes por área */
.ficha-seccion-fila{display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap}
.ficha-seccion-fila .ficha-seccion{margin:0}
.ficha-izq > .ficha-seccion-fila:first-child{margin:0 0 -6px}
.planes-areas{margin:0}
.planes-area{display:flex; align-items:center; justify-content:space-between; gap:10px; padding:10px 0; border-top:1px solid var(--borde)}
.planes-area:first-child{border-top:0}
.planes-nombre{display:flex; flex-direction:column; gap:2px; min-width:0}
.planes-nombre small{overflow-wrap:anywhere}
/* Primera cita: conversión por médico */
.tabla-conversion td, .tabla-conversion th{white-space:nowrap}
.tabla-conversion tbody th, .tabla-conversion tfoot th{text-align:left; font-weight:600}
.tabla-conversion tfoot th, .tabla-conversion tfoot td{border-top:2px solid var(--borde-fuerte)}
.tabla-conversion .conv-pct b{font-size:1.05em}
.conv-d{display:block; font-size:.72rem; font-weight:600}
.conv-d.sube{color:var(--bien, #1f9d77)}
.conv-d.baja{color:var(--mal, #c0392b)}
.conv-d.igual{color:var(--tinta-suave)}
#conversion .bloque-cab{flex-wrap:wrap; gap:10px}
.tabla-conversion tbody th, .tabla-conversion tfoot th{background:transparent; text-transform:none; letter-spacing:0; color:var(--tinta)}
.tabla-conversion tr[style] > *{background:color-mix(in srgb, var(--acento) calc(var(--r) * 70%), var(--superficie)); color:var(--texto)}
/* Embudo de la primera cita */
.emb-pasos{list-style:none; margin:0; padding:0; display:grid; gap:12px}
.emb-paso{display:grid; grid-template-columns:minmax(150px, 220px) 1fr minmax(120px, auto); align-items:center; gap:14px}
.emb-cab{display:flex; flex-direction:column}
.emb-barra{height:26px; border-radius:8px; background:var(--superficie-2); overflow:hidden}
.emb-barra span{display:block; height:100%; border-radius:8px; background:var(--acento)}
.emb-cifras{display:flex; align-items:baseline; gap:8px; justify-content:flex-end}
.emb-cifras .conv-d{display:inline}
.emb-n{font-size:1.3rem}
.emb-pct{font-weight:700; color:var(--primario)}
/* Salidas del embudo: a la derecha, entre los pasos */
.emb-salidas{display:grid; grid-template-columns:minmax(150px, 220px) 1fr; gap:14px}
.emb-salidas > ul{grid-column:2; list-style:none; margin:-4px 0; padding:8px 14px; border-left:3px solid var(--mal); background:var(--mal-fondo); border-radius:0 8px 8px 0; display:flex; flex-wrap:wrap; gap:4px 22px; justify-self:end; font-size:.9rem; color:var(--mal-texto)}
.emb-salidas .tenue{color:inherit; opacity:.8}
.emb-salidas .conv-d{display:inline; margin-left:6px}
.emb-flecha{margin-right:4px; font-weight:700}
.emb-limbo{color:var(--texto-2)}
.emb-global{margin:14px 0 0}
.emb-global .conv-d{display:inline; margin-left:6px}
@media (max-width:640px){ .emb-paso, .emb-salidas{grid-template-columns:1fr} .emb-salidas > ul{grid-column:1; justify-self:stretch} .emb-cifras{justify-content:flex-start} }
#embudo .bloque-cab{flex-wrap:wrap; gap:10px}
.tabla-conversion thead th{white-space:normal; vertical-align:bottom; line-height:1.25}
.tabla-conversion thead th:not(:first-child){max-width:120px; text-align:right}
/* Contrataron: por modalidad (mensual / 6 meses) */
.emb-modal{display:grid; grid-template-columns:minmax(150px, 220px) 1fr; gap:14px}
.emb-modal > ul{grid-column:2; list-style:none; margin:-4px 0 0; padding:0; display:grid; gap:6px}
.emb-modal li{display:grid; grid-template-columns:130px 1fr minmax(120px, auto); align-items:center; gap:12px; font-size:.9rem}
.emb-modal-etq{color:var(--texto-2)}
.emb-barra.fina{height:12px}
.emb-barra.fina span{background:color-mix(in srgb, var(--acento) 60%, var(--superficie))}
.emb-modal .conv-d{display:inline}
.conv-modal{display:block; font-size:.72rem; color:var(--texto-3); white-space:nowrap}
@media (max-width:640px){ .emb-modal{grid-template-columns:1fr} .emb-modal > ul{grid-column:1} .emb-modal li{grid-template-columns:1fr auto} .emb-modal .emb-barra{display:none} }
.emb-nps-fila > ul{border-left-color:var(--acento); background:var(--acento-fondo); color:var(--acento-texto)}
.emb-nps .conv-d{display:inline; margin:0 6px}
.emb-espera > ul{border-left-color:var(--texto-4); background:var(--superficie-2); color:var(--texto-2)}
.hist-item.hist-t-transcripcion::before{border-color:#5b6bd6}
.hist-filtro-caja:has(#hf-transcripcion:checked) .hist-f-transcripcion{background:color-mix(in srgb, var(--primario) 10%, transparent); color:var(--primario); border-color:color-mix(in srgb, var(--primario) 40%, transparent); font-weight:700}
.hist-filtro-caja:has(#hf-transcripcion:not(:checked)) .hist-t-transcripcion{display:none}
/* Transcripciones: etiqueta en las citas y página del resumen */
.chip-trans{text-decoration:none}
.chip-trans:hover{text-decoration:underline}
.ficha-cita-chips{display:inline-flex; gap:6px; flex-wrap:wrap; justify-content:flex-end}
.trans-texto{white-space:pre-wrap; line-height:1.6; font-size:.95rem}
.trans-completa{max-height:70vh; overflow:auto; padding:14px 16px; border:1px solid var(--borde); border-radius:10px; background:var(--superficie-2)}
/* Ficha: menú «⋯» de la cabecera (marcar como prueba) */
.ficha-mas{position:relative; display:inline-block}
.ficha-mas > summary{list-style:none; cursor:pointer; min-width:38px; font-size:18px; line-height:1}
.ficha-mas > summary::-webkit-details-marker{display:none}
.ficha-mas-panel{position:absolute; right:0; top:calc(100% + 6px); z-index:30; width:min(280px, calc(100vw - 32px)); padding:12px 14px; border:1px solid var(--borde); border-radius:12px; background:var(--superficie); box-shadow:0 12px 40px rgba(0,0,0,.16); text-align:left}
.ficha-mas-tit{margin:0 0 4px; font-weight:700}
.ficha-mas-panel .tenue{margin:0 0 10px; font-size:.85rem; white-space:normal}
.ficha-mas-acc{display:flex; flex-wrap:wrap; gap:8px; align-items:center}
/* Notas: «Avisar a» */
.hist-avisar{margin-top:12px; border-top:1px solid var(--borde); padding-top:10px}
.hist-avisar > summary{cursor:pointer}
.hist-avisar-cuerpo{margin-top:10px}
.hist-avisar-grupo{margin:10px 0 6px; font-size:.75rem; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--texto-3)}
.hist-avisar-lista{display:grid; grid-template-columns:repeat(auto-fill, minmax(230px, 1fr)); gap:4px 14px; max-height:260px; overflow:auto}
.hist-avisar-op{display:flex; align-items:center; gap:8px; padding:4px 0; font-size:.9rem; cursor:pointer}
.hist-avisar-op .chip{font-size:.7rem; padding:1px 7px}
.hist-avisar-nota{margin:10px 0 0; font-size:.8rem}
.lista-simple{margin:0; padding-left:18px}
/* Métricas adicionales (catálogo de la API) */
.met-bloque{margin-top:18px; padding-top:14px; border-top:1px solid var(--borde)}
.met-cab{display:flex; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap}
.met-cab .sub{margin:0}
.met-lista{margin-top:8px}
.met-fila{display:grid; grid-template-columns:1fr auto auto auto; align-items:center; gap:10px; padding:8px 0; border-top:1px solid var(--borde-suave)}
.met-fila:first-child{border-top:0}
.met-nombre{display:flex; flex-direction:column; text-decoration:none; color:inherit}
.met-valor{display:flex; flex-direction:column; align-items:flex-end; text-align:right}
.met-buscar{display:flex; gap:8px; margin:0 0 12px}
.met-buscar input{flex:1; min-width:0}
.met-resultados{margin:0 0 8px}
.met-res{display:flex; align-items:center; justify-content:space-between; gap:10px; padding:8px 0; border-top:1px solid var(--borde-suave)}
.met-res:first-child{border-top:0}
.met-res a{display:flex; flex-direction:column; text-decoration:none; color:inherit}
.met-res a:hover b{text-decoration:underline}
.met-pregunta{margin:12px 0 4px}
.met-nueva > summary{cursor:pointer; padding:2px 0}
.met-nueva[open] > summary{margin-bottom:10px}
@media (max-width:640px){ .met-fila{grid-template-columns:1fr auto} }
.medidas-acciones{display:inline-flex; gap:8px; flex-wrap:wrap; justify-content:flex-end}
/* Protocolos de marco clínico: lista · documento · asistente IA */
.prot-rejilla{display:grid; grid-template-columns:minmax(220px, 280px) minmax(0, 1fr) minmax(280px, 360px); gap:16px; align-items:start}
.prot-lateral, .prot-ia{position:sticky; top:12px; max-height:calc(100vh - 24px); overflow:auto}
.prot-filtro{display:flex; gap:6px; margin:0 0 8px}
.prot-filtro input{flex:1; min-width:0}
.prot-grupo{margin:14px 0 4px; font-size:.72rem; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--texto-3)}
.prot-lista{list-style:none; margin:0; padding:0}
.prot-lista li{margin:0}
.prot-lista .prot-enlace{display:block; width:100%; text-align:left; padding:6px 8px; border-radius:8px; font-size:.88rem; line-height:1.35; color:var(--texto); text-decoration:none; font-weight:500}
.prot-lista .prot-enlace:hover{background:var(--superficie-2)}
.prot-lista li.activo .prot-enlace{background:var(--acento-fondo); color:var(--acento-texto); font-weight:700}
.prot-lista .chip{font-size:.65rem; padding:0 6px; margin-left:4px}
.prot-cab{display:flex; justify-content:space-between; align-items:flex-start; gap:12px; flex-wrap:wrap; margin-bottom:10px}
.prot-cab h2{margin:2px 0 4px}
.prot-cat{margin:0; font-size:.75rem; font-weight:700; letter-spacing:.05em; text-transform:uppercase; color:var(--acento)}
.prot-resumen{font-size:1.02rem}
.prot-texto{line-height:1.65; font-size:.95rem; max-width:78ch}
.prot-texto p{margin:0 0 .8em}
.prot-vacio{padding:20px 4px; color:var(--texto-2)}
.ia-cab{display:flex; align-items:center; justify-content:space-between; gap:8px}
.ia-cab h2{margin:0; font-size:1.1rem}
.ia-nota{font-size:.8rem; margin:6px 0 10px}
.ia-conversacion{display:flex; flex-direction:column; gap:10px; margin-bottom:12px}
.ia-turno{padding:10px 12px; border-radius:12px; font-size:.9rem; line-height:1.5}
.ia-turno.usuario{align-self:flex-end; background:var(--acento-fondo); color:var(--acento-texto); max-width:90%}
.ia-turno.usuario p{margin:0}
.ia-turno.ia{background:var(--superficie-2); border:1px solid var(--borde)}
.ia-fuentes{margin:8px 0 0; font-size:.78rem; color:var(--texto-3)}
.ia-fuentes .enlace-boton, .ia-fuentes a{font-size:.78rem}
.ia-cita{font-size:.7rem; margin-left:1px}
.ia-cita .enlace-boton, .ia-cita a{font-size:.7rem; text-decoration:none; padding:0 3px; border-radius:4px; background:var(--acento-fondo)}
.ia-ejemplos form{margin:0 0 6px}
.ia-ejemplo{display:block; width:100%; text-align:left; padding:8px 10px; border:1px dashed var(--borde-fuerte); border-radius:10px; background:transparent; font:inherit; font-size:.85rem; color:var(--texto-2); cursor:pointer}
.ia-ejemplo:hover{border-color:var(--acento); color:var(--acento-texto)}
.ia-form textarea{width:100%}
.ia-acciones{display:flex; justify-content:space-between; align-items:center; margin-top:6px}
.md p{margin:0 0 .5em} .md ul, .md ol{margin:.2em 0 .6em; padding-left:1.2em} .md li{margin:.15em 0} .md .md-tit{font-weight:700; margin:.6em 0 .3em}
@media (max-width:1180px){ .prot-rejilla{grid-template-columns:minmax(200px, 250px) minmax(0, 1fr)} .prot-ia{grid-column:1 / -1; position:static; max-height:none} }
@media (max-width:760px){ .prot-rejilla{grid-template-columns:1fr} .prot-lateral{position:static; max-height:340px} }
.prot-html h2, .prot-html h3, .prot-html h4{margin:1.2em 0 .4em}
.prot-html ul, .prot-html ol{padding-left:1.3em}
.prot-html table{border-collapse:collapse; margin:.6em 0; font-size:.9rem}
.prot-html td, .prot-html th{border:1px solid var(--borde); padding:6px 8px; vertical-align:top}
.prot-html .callout{padding:10px 12px; border-radius:10px; background:var(--acento-fondo); margin:.6em 0}
.prot-html blockquote{margin:.6em 0; padding-left:12px; border-left:3px solid var(--borde-fuerte); color:var(--texto-2)}
.prot-html .adjunto{color:var(--texto-3); font-size:.85rem}
.hist-botones{display:inline-flex; gap:8px; align-items:center; flex-wrap:wrap}
.redactor-rejilla{display:grid; grid-template-columns:minmax(0, 1.6fr) minmax(240px, 1fr); gap:16px; align-items:start}
.redactor-rejilla textarea{width:100%; font-family:inherit; line-height:1.5}
.redactor-lado .hist-texto{white-space:pre-wrap; font-size:.9rem}
@media (max-width:800px){ .redactor-rejilla{grid-template-columns:1fr} }
.hist-item.hist-t-comunicacion::before{border-color:#c2410c}
.hist-filtro-caja:has(#hf-comunicacion:checked) .hist-f-comunicacion{background:color-mix(in srgb, var(--primario) 10%, transparent); color:var(--primario); border-color:color-mix(in srgb, var(--primario) 40%, transparent); font-weight:700}
.hist-filtro-caja:has(#hf-comunicacion:not(:checked)) .hist-t-comunicacion{display:none}
.pedir-tit{display:block; padding:8px 12px 2px; font-size:.7rem; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--texto-3)}
.export-opciones{display:grid; grid-template-columns:repeat(auto-fill, minmax(230px, 1fr)); gap:4px 16px; margin-bottom:6px}
.doc-meds .cfg-campos{margin-bottom:4px}
.doc-pasos{list-style:none; margin:0 0 14px; padding:0; display:grid; gap:8px}
.doc-pasos li{padding:8px 12px; border-radius:10px; border:1px solid var(--borde); color:var(--texto-3)}
.doc-pasos li.hecho{color:var(--texto); border-color:color-mix(in srgb, var(--bien, #1f9d77) 40%, var(--borde)); background:color-mix(in srgb, var(--bien, #1f9d77) 7%, transparent)}
.doc-pasos li.actual{color:var(--texto); border-color:var(--acento); background:var(--acento-fondo)}
.doc-revisar{margin-top:10px}
/* Cumplimiento normativo */
.cumpl-resumen{display:flex; flex-wrap:wrap; gap:6px 10px; align-items:center; margin:0 0 10px}
.tabla-cumpl th[scope="row"]{text-align:left; font-weight:600; text-transform:none; letter-spacing:0; color:var(--texto); min-width:180px}
.tabla-cumpl td{vertical-align:top; text-align:left; white-space:normal}
.tabla-cumpl .c-estado{white-space:nowrap}
/* Planes de la empresa */
.tabla-plan-areas input[type="number"]{width:5.5em}
.tabla-plan-areas input:not([type]){min-width:12em}
.tabla-plan-areas th[scope="row"]{text-align:left; text-transform:none; letter-spacing:0; color:var(--texto)}
/* Menú «⋯» de la ficha, compartir y mantenimiento */
.ficha-mas-item{display:flex; flex-direction:column; padding:8px 4px; border-bottom:1px solid var(--borde-suave); text-decoration:none; color:var(--texto)}
.ficha-mas-item:hover b{text-decoration:underline}
.ficha-mas-item small{color:var(--texto-3); font-size:.78rem}
.ficha-mas-prueba{padding-top:10px}
.comp-lista{max-height:320px}
.comp-dias{display:flex; gap:16px; border:0; padding:0; margin:12px 0}
.comp-dias legend{font-weight:600; margin-bottom:4px}
.comp-aviso{border-left:3px solid var(--acento)}
.fin-opciones{display:grid; grid-template-columns:repeat(auto-fit, minmax(280px, 1fr)); gap:16px}
.fin-opcion{text-decoration:none; color:inherit}
.fin-opcion:hover{border-color:var(--acento)}
.fin-opcion h2{margin:0 0 6px; font-size:1.1rem}
/* Comunicar un incidente (barra superior) */
.incidente-btn{display:inline-grid; place-items:center; width:38px; height:38px; border-radius:10px; border:1px solid var(--linea); color:var(--texto-2); background:var(--superficie)}
.incidente-btn:hover{color:var(--mal-texto); border-color:var(--mal)}
.incidente-btn svg{width:20px; height:20px}
.tabla-capa input:not([type]), .tabla-capa input[name^="acc_"]{min-width:16em; width:100%}
.tabla-capa td{vertical-align:middle}
/* Medicación de la paciente (Farmacología) */
.med-bloque{margin-top:18px; padding-top:14px; border-top:1px solid var(--borde)}
.med-cab{display:flex; justify-content:space-between; align-items:center; gap:10px; flex-wrap:wrap}
.med-cab .sub{margin:0}
.med-tit{margin:16px 0 6px; font-size:.95rem; display:flex; align-items:center; gap:8px}
.registro-fila.anulada > span:nth-child(2){text-decoration:line-through; color:var(--texto-3)}
/* Control documental de protocolos */
.prot-control{margin:4px 0 14px}
.prot-control-fila{display:flex; flex-wrap:wrap; gap:6px 10px; align-items:center; margin:0 0 8px; font-size:.88rem}
.prot-leer{display:flex; justify-content:space-between; align-items:center; gap:12px; flex-wrap:wrap}
.prot-pendientes a{font-weight:600}
.tabla-maestra th[scope="row"], .tabla-kpis-calidad th[scope="row"]{text-align:left; text-transform:none; letter-spacing:0; color:var(--texto); font-weight:600}
.tabla-maestra td, .tabla-kpis-calidad td{text-align:left; vertical-align:top}
.kq-valor{white-space:nowrap}
/* Novedades */
.novedad-lista{list-style:none; margin:0; padding:0; display:grid; gap:8px}
.novedad-lista li{line-height:1.5}
.novedad-lista .chip{margin-right:4px}
.med-ultima{margin:.25rem 0 .5rem; display:flex; flex-wrap:wrap; gap:.4rem; align-items:baseline}
.med-adherencia{margin:.25rem 0 .5rem; display:flex; flex-wrap:wrap; gap:.4rem; align-items:baseline}
.med-enlace{display:block; margin-top:.6rem}
.lista.tomas{list-style:none; padding:0; margin:.25rem 0 .5rem}
.lista.tomas > li{border-bottom:1px solid var(--borde, #e5e7eb)}
details.toma > summary{display:flex; flex-direction:column; gap:.25rem; padding:.5rem 0; cursor:pointer; list-style:none}
details.toma > summary::-webkit-details-marker{display:none}
.toma-fila{display:grid; grid-template-columns:7.5em minmax(0,1fr) auto auto 1em; gap:.6rem; align-items:center}
.toma-fila::after{content:"▸"; color:var(--texto-3)}
details.toma[open] .toma-fila::after{content:"▾"}
.toma-fecha{font-variant-numeric:tabular-nums; color:var(--texto-2, inherit)}
.toma-med{font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.toma-inc{display:flex; gap:.4rem; align-items:center; margin-left:8.1em; margin-right:1.6em; font-size:.88em; min-width:0; white-space:nowrap}
.toma-inc .chip{flex:none}
.toma-inc-texto{min-width:0; overflow:hidden; text-overflow:ellipsis}
.toma-inc > .tenue{flex:none; max-width:40%; overflow:hidden; text-overflow:ellipsis}
details.toma.anulada .toma-fecha, details.toma.anulada .toma-med, details.toma.anulada .toma-formato{text-decoration:line-through; color:var(--texto-3)}
.toma-cuerpo{padding:.1rem 0 .7rem 8.1em}
.toma-cuerpo p{margin:.2rem 0}
.toma-incs{margin:.2rem 0 .4rem; padding-left:1.1rem}
.toma-incs li{margin:.45rem 0}
.toma-resolver{display:flex; flex-wrap:wrap; gap:.4rem; margin-top:.35rem}
.toma-resolver input{flex:1; min-width:12em}
.med-sub{font-size:.8rem; text-transform:uppercase; letter-spacing:.04em; color:var(--texto-3); margin:.6rem 0 .2rem}
.med-acciones{display:flex; flex-wrap:wrap; gap:.4rem; align-items:center}
.med-nuevos{display:flex; flex-direction:column; gap:.4rem; margin-top:.5rem}
@media (max-width:640px){.toma-fila{grid-template-columns:auto minmax(0,1fr) auto 1em}.toma-formato{display:none}.toma-inc,.toma-cuerpo{margin-left:0; padding-left:0}}
.hist-item.hist-t-toma::before{border-color:#0f9f8f}
.hist-filtro-caja:has(#hf-toma:checked) .hist-f-toma{background:color-mix(in srgb, var(--primario) 10%, transparent); color:var(--primario); border-color:color-mix(in srgb, var(--primario) 40%, transparent); font-weight:700}
.hist-filtro-caja:has(#hf-toma:not(:checked)) .hist-t-toma{display:none}
.cumpl-cab{display:flex; flex-wrap:wrap; gap:10px; align-items:center; justify-content:space-between; margin:0 0 12px}
.cumpl-cab .cumpl-resumen{margin:0}
.cumpl-entornos{display:grid; grid-template-columns:repeat(auto-fit, minmax(260px, 1fr)); gap:12px; margin:0 0 16px}
.cumpl-entorno p{margin:.3rem 0}
.cumpl-lista{margin:.2rem 0; padding-left:1.1rem}
.cumpl-lista li{margin:.15rem 0}
.tabla-cumpl td .cumpl-lista{font-size:.92em}
.cumpl-proto{margin:0 0 8px}
.tabla-cumpl th[scope="row"]{white-space:normal; width:22%; vertical-align:top}
.tabla-cumpl .c-estado{white-space:normal; min-width:120px}
.tabla-cumpl .c-estado .chip{white-space:normal; text-align:left}
/* Modo showroom */
.showroom-barra{display:flex; flex-wrap:wrap; align-items:center; gap:8px 14px; padding:9px 18px; background:#7a3ff2; color:#fff; font-size:.88rem; line-height:1.35; position:sticky; top:0; z-index:30}
.showroom-etq{font-weight:800; text-transform:uppercase; letter-spacing:.06em; font-size:.74rem; background:rgba(255,255,255,.18); padding:3px 9px; border-radius:999px; white-space:nowrap}
.showroom-texto{flex:1; min-width:220px}
.showroom-enlaces{display:flex; gap:12px; flex-wrap:wrap}
.showroom-barra a{color:#fff; font-weight:700; text-decoration:underline; text-underline-offset:2px; white-space:nowrap}
.showroom-lista{list-style:none; padding:0; margin:0; display:grid; grid-template-columns:repeat(auto-fill, minmax(240px, 1fr)); gap:10px}
.showroom-paciente{display:flex; flex-direction:column; gap:4px; padding:14px 16px; border:1px solid var(--borde); border-radius:12px; text-decoration:none; color:var(--texto)}
.showroom-paciente:hover{border-color:var(--primario)}
@media (max-width:640px){.showroom-barra{padding:8px 16px; position:static}}
.showroom-paciente span{font-size:.92em}
.showroom-abrir{color:var(--primario); font-weight:600; margin-top:4px}
.showroom-pasos{margin:0; padding-left:1.3rem; display:flex; flex-direction:column; gap:10px}
.showroom-pasos li span{display:block; color:var(--texto-2, inherit); font-size:.92em}
.desde-cita > summary{cursor:pointer}
.desde-cita[open] > summary{margin-bottom:4px}
.desde-ia{font-size:.85em; margin:.2rem 0 .4rem}
.doc-borrar{display:inline-block}
.doc-borrar > summary{list-style:none; cursor:pointer; display:inline}
.doc-borrar > summary::-webkit-details-marker{display:none}
.doc-borrar[open] > form{display:flex; flex-wrap:wrap; gap:6px; align-items:center; margin-top:6px}
/* Vista previa del PDF en la página del documento */
.doc-previa{margin:0 0 16px}
.doc-previa iframe{width:100%; height:78vh; min-height:520px; border:1px solid var(--borde); border-radius:12px; background:#525659}
.doc-previa .tipos{margin-top:6px}
.evo-bloques{display:grid; grid-template-columns:repeat(auto-fill, minmax(320px, 1fr)); gap:6px 16px; margin-bottom:12px}
@media (max-width:640px){.doc-previa iframe{height:60vh; min-height:360px}}
.doc-firmar{margin:12px 0; padding:10px 14px; border:1px solid var(--borde); border-radius:12px}
.doc-firmar > summary{cursor:pointer}
.doc-firmar-pasos{margin:10px 0 6px; padding-left:1.3rem; display:flex; flex-direction:column; gap:8px}
.doc-subir{display:flex; flex-wrap:wrap; gap:8px; align-items:center}
/* Enviar un documento a la paciente */
.doc-enviar{margin:14px 0; padding:12px 14px; border:1px solid var(--borde); border-radius:12px}
.doc-canal{display:flex; flex-wrap:wrap; gap:8px 12px; align-items:center; padding:8px 0; border-top:1px solid var(--borde)}
.doc-canal > b{min-width:150px}
.doc-envio{margin:0}
.doc-correo > summary{list-style:none; display:inline-block; cursor:pointer}
.doc-correo > summary::-webkit-details-marker{display:none}
.doc-correo[open] .doc-correo-form{margin-top:10px}
.envio-fila{grid-template-columns:minmax(0,1fr) auto}
.ficha-cita-chips .mini{margin-left:6px}
.btn.peligro{background:#b3261e; border-color:#b3261e}
.fases:has(#ver-proxima:checked) label[for=ver-proxima]{border-color:var(--azul-punto); background:var(--azul-fondo); color:var(--azul-texto)}
.fases:has(#ver-proxima:checked) #fase-proxima{display:flex}

/* ── EL ESTADO DE LA PACIENTE: una etiqueta junto a su nombre que abre la ventana de estados ── */
.estado-pac{display:inline-flex; align-items:center; vertical-align:middle; font:inherit; font-size:12.5px; font-weight:700; line-height:1.4;
  padding:3px 11px; border-radius:999px; border:1px solid transparent; background:var(--sup-mudo); color:var(--tinta-suave); white-space:nowrap}
button.estado-pac{cursor:pointer; margin-left:6px}
button.estado-pac:hover{filter:brightness(.96); text-decoration:underline dotted}
button.estado-pac:focus-visible{outline:2px solid var(--acento); outline-offset:2px}
.estado-lead{background:var(--sup-mudo); color:var(--tinta-suave); border-color:var(--linea)}
.estado-interesado{background:var(--acento-fondo); color:var(--acento-texto)}
.estado-pendiente{background:var(--esp-fondo); color:var(--esp-texto)}
.estado-propuesto{background:var(--acento-fondo); color:var(--acento-texto); border-color:var(--acento)}
.estado-aceptado{background:var(--ok-fondo); color:var(--ok-texto); border-color:var(--ok)}
.estado-activo{background:var(--ok); color:#fff}
.estado-cancelado{background:var(--mal-fondo); color:var(--mal-texto)}
.estados-lista{list-style:none; margin:0; padding:0; display:grid; gap:10px}
.estados-lista li{padding:10px 12px; border:1px solid var(--linea-suave); border-radius:12px}
.estados-lista li.actual{border-color:var(--acento); box-shadow:0 0 0 1px var(--acento)}
.estados-lista p{margin:6px 0 0; font-size:13.5px}
.estados-lista i{font-style:normal; font-weight:500; opacity:.8}
.estado-pac.pequena{font-size:11.5px; font-weight:600; padding:1px 8px; margin-left:6px}
.ag-quien .estado-pac.pequena{position:relative; z-index:1}
/* En la agenda, con la misma forma que las chips de al lado */
.chip.estado-pac{font-size:12.5px; font-weight:600; padding:2px 10px; margin:0; line-height:inherit}
/* Contenido ya compartido con la paciente: un fondo suave para verlo de un vistazo */
.articulos .check.ya-compartido{background:var(--acento-fondo); border-radius:8px}

/* ── INSTANCIA DE PRUEBAS (API v2) ── */
.barra-pruebas{background:#7A1F1F; color:#fff; font-size:13px; padding:6px 16px; text-align:center; letter-spacing:.01em}
.barra-pruebas b{letter-spacing:.08em; margin-right:4px}
.v2-falta{display:flex; flex-wrap:wrap; align-items:center; gap:6px; margin:8px 0; background:var(--sup-mudo); border:1px dashed var(--linea-fuerte, var(--linea)); color:var(--tinta)}
.ficha-saltos{margin:10px 0 14px}
.tabla{width:100%; border-collapse:collapse; font-size:13.5px}
.tabla th, .tabla td{text-align:left; padding:6px 8px; border-bottom:1px solid var(--linea-suave, var(--linea)); vertical-align:top}
.tabla tr.fuera td{background:var(--mal-fondo)}
.tabla-scroll{overflow-x:auto}
details.emergencia > summary{display:inline-block; cursor:pointer; margin-top:10px}
