:root {
  --bg: #F4F6F8; --panel: #FFFFFF; --texto: #18212B; --suave: #5B6573; --borde: #DCE2E8;
  --primario: #1F5FA8; --primario-osc: #174A84; --primario-claro: #E7F0FA;
  --ok: #1E7F4F; --ok-bg: #E4F4EB; --aviso: #A86400; --aviso-bg: #FCF1DE;
  --error: #B42318; --error-bg: #FDECEA; --pend: #6B7280; --pend-bg: #EEF0F3;
  --visor: #0E1116; --radio: 8px; --sombra: 0 1px 2px rgba(16,24,40,.06), 0 1px 3px rgba(16,24,40,.08);
}
* { box-sizing: border-box; }
[hidden] { display: none !important; }
html, body { margin: 0; }
body { font: 15px/1.45 system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; background: var(--bg); color: var(--texto); }
a { color: var(--primario); text-decoration: none; }
a:hover { text-decoration: underline; }
h1 { font-size: 20px; margin: 0 0 4px; }
h2 { font-size: 16px; margin: 0 0 10px; }
.suave { color: var(--suave); }
.peq { font-size: 13px; }
.mono { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; }

/* Barra superior */
.barra { background: #13283F; color: #fff; display: flex; align-items: center; gap: 18px; padding: 0 20px; height: 54px; }
.barra .marca { font-weight: 700; letter-spacing: .2px; color: #fff; }
.barra nav { display: flex; gap: 4px; flex: 1; }
.barra nav a { color: #C9D6E5; padding: 6px 10px; border-radius: 6px; font-size: 14px; }
.barra nav a:hover, .barra nav a.activo { background: rgba(255,255,255,.1); color: #fff; text-decoration: none; }
.barra .quien { font-size: 13px; color: #C9D6E5; display: flex; gap: 10px; align-items: center; }
.barra .quien button { background: none; border: 1px solid rgba(255,255,255,.3); color: #fff; border-radius: 6px; padding: 4px 10px; cursor: pointer; }

.contenido { max-width: 1400px; margin: 0 auto; padding: 20px; }
.panel { background: var(--panel); border: 1px solid var(--borde); border-radius: var(--radio); box-shadow: var(--sombra); padding: 16px; }

/* Mensajes */
.flash { padding: 10px 14px; border-radius: var(--radio); margin-bottom: 14px; }
.flash.ok { background: var(--ok-bg); color: var(--ok); }
.flash.error { background: var(--error-bg); color: var(--error); }

/* Formularios y botones */
label { display: block; font-size: 13px; color: var(--suave); margin-bottom: 4px; font-weight: 600; }
input[type=text], input[type=password], input[type=date], input[type=search], input[type=email], input[type=tel], input[type=number], input[type=url], select, textarea {
  width: 100%; font: inherit; color: inherit; padding: 8px 10px; border: 1px solid var(--borde); border-radius: 6px; background: #fff;
}
input:focus, select:focus, textarea:focus { outline: 2px solid var(--primario-claro); border-color: var(--primario); }
.btn { display: inline-flex; align-items: center; gap: 6px; font: inherit; font-weight: 600; font-size: 14px; padding: 8px 14px;
  border-radius: 6px; border: 1px solid var(--borde); background: #fff; color: var(--texto); cursor: pointer; white-space: nowrap; }
.btn:hover { background: #F2F4F7; text-decoration: none; }
.btn.prim { background: var(--primario); border-color: var(--primario); color: #fff; }
.btn.prim:hover { background: var(--primario-osc); }
.btn.ok { background: var(--ok); border-color: var(--ok); color: #fff; }
.btn.peligro { color: var(--error); }
.btn.grabando { background: var(--error); border-color: var(--error); color: #fff; animation: pulso 1.4s infinite; }
.btn:disabled { opacity: .55; cursor: not-allowed; }
@keyframes pulso { 50% { box-shadow: 0 0 0 6px rgba(180,35,24,.18); } }

/* Filtros */
.filtros { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 10px; align-items: end; margin-bottom: 14px; }
.filtros .f-q { grid-column: span 2; }
.chips { display: flex; gap: 8px; margin-bottom: 12px; flex-wrap: wrap; }
.chip { padding: 4px 12px; border-radius: 999px; border: 1px solid var(--borde); background: #fff; font-size: 13px; color: var(--texto); }
.chip.activo { background: var(--primario); color: #fff; border-color: var(--primario); }
.chip:hover { text-decoration: none; }

/* Tabla */
table.lista { width: 100%; border-collapse: collapse; background: #fff; }
table.lista th { text-align: left; font-size: 12px; text-transform: uppercase; letter-spacing: .4px; color: var(--suave); padding: 10px; border-bottom: 1px solid var(--borde); background: #FAFBFC; }
table.lista td { padding: 10px; border-bottom: 1px solid #EEF1F4; vertical-align: middle; }
table.lista tr:hover td { background: #F8FAFC; }
.tabla-wrap { border: 1px solid var(--borde); border-radius: var(--radio); overflow: auto; box-shadow: var(--sombra); }
.paciente { font-weight: 600; }

.badge { display: inline-block; padding: 2px 9px; border-radius: 999px; font-size: 12px; font-weight: 600; }
.badge.pendiente { background: var(--pend-bg); color: var(--pend); }
.badge.borrador { background: var(--aviso-bg); color: var(--aviso); }
.badge.firmado { background: var(--ok-bg); color: var(--ok); }
.mod { display: inline-block; font-size: 12px; font-weight: 700; padding: 2px 7px; border-radius: 4px; background: var(--primario-claro); color: var(--primario-osc); }

/* Pantalla de estudio */
.estudio { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); gap: 16px; align-items: start; }
.cabecera-estudio { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; margin-bottom: 14px; flex-wrap: wrap; }
.datos { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px 16px; font-size: 14px; }
.datos div span { display: block; font-size: 11px; text-transform: uppercase; letter-spacing: .4px; color: var(--suave); }
.acciones { display: flex; gap: 8px; flex-wrap: wrap; }

.editor-barra { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin-bottom: 10px; }
.editor-barra select { width: auto; min-width: 220px; }
#cuerpo { min-height: 460px; font: 15px/1.6 system-ui, sans-serif; resize: vertical; }
#cuerpo[readonly] { background: #FAFBFC; }
.interino { min-height: 22px; font-size: 13px; color: var(--primario); font-style: italic; margin: 6px 0; }
.estado-guardado { font-size: 12px; color: var(--suave); margin-left: auto; }
.ayuda-dictado { font-size: 12px; color: var(--suave); background: #F8FAFC; border: 1px dashed var(--borde); border-radius: 6px; padding: 8px 10px; margin-top: 10px; }

.caja-link { background: var(--ok-bg); border: 1px solid #B9E1C9; border-radius: var(--radio); padding: 12px; margin-top: 12px; }
.caja-link input { font-family: ui-monospace, monospace; font-size: 13px; }
.fila { display: flex; gap: 8px; align-items: center; }

/* Visor simple */
.visor { background: var(--visor); border-radius: var(--radio); overflow: hidden; color: #DDE3EA; }
.visor .series { display: flex; gap: 6px; padding: 8px; overflow-x: auto; background: #161B22; }
.visor .series button { flex: 0 0 auto; background: #232A33; color: #C9D1D9; border: 1px solid #2F3742; border-radius: 6px; padding: 4px; cursor: pointer; width: 92px; font-size: 11px; text-align: left; }
.visor .series button.activo { border-color: #58A6FF; }
.visor .series img { width: 100%; height: 64px; object-fit: contain; background: #000; display: block; border-radius: 3px; margin-bottom: 3px; }
.visor .lienzo { position: relative; height: 520px; display: flex; align-items: center; justify-content: center; background: #000; touch-action: none; user-select: none; }
.visor .lienzo img { max-width: 100%; max-height: 100%; }
.visor .info { position: absolute; left: 10px; top: 8px; font-size: 12px; text-shadow: 0 1px 2px #000; }
.visor .controles { display: flex; gap: 10px; align-items: center; padding: 8px 12px; background: #161B22; font-size: 13px; }
.visor .controles input[type=range] { flex: 1; }
.visor .vacio { padding: 40px; text-align: center; color: #8B949E; }

/* Página pública */
.pub { max-width: 920px; margin: 0 auto; padding: 20px 16px 40px; }
.pub-cab { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 16px; flex-wrap: wrap; }
.pub-cab .nombre-centro { font-weight: 700; font-size: 18px; color: #13283F; }
.texto-informe { white-space: pre-wrap; font-size: 15px; line-height: 1.65; }
.firma-pub { border-top: 1px solid var(--borde); margin-top: 16px; padding-top: 12px; font-size: 14px; }

.login { max-width: 380px; margin: 10vh auto; }
.login h1 { text-align: center; margin-bottom: 16px; }
.login .campo { margin-bottom: 12px; }

.grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
details.edit { border: 1px solid var(--borde); border-radius: var(--radio); padding: 10px 12px; margin-bottom: 8px; background: #fff; }
details.edit summary { cursor: pointer; font-weight: 600; }
.checks { display: flex; gap: 12px; flex-wrap: wrap; font-size: 14px; }
.checks label { display: inline-flex; gap: 4px; align-items: center; font-weight: 400; color: var(--texto); }

@media (max-width: 1000px) {
  .estudio { grid-template-columns: 1fr; }
  .datos { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .visor .lienzo { height: 60vh; }
}
@media (max-width: 640px) {
  .contenido { padding: 12px; }
  .barra { padding: 0 12px; gap: 10px; }
  .barra nav a { padding: 6px; }
  .grid2 { grid-template-columns: 1fr; }
  table.lista .ocultar-movil { display: none; }
}


/* ===================== v3: flujo de transcripción, asignación, entregas ===================== */
:root { --urgente: #B42318; --urgente-bg: #FEF0EE; --morado: #6941C6; --morado-bg: #F2EEFC; --azul-bg: #E8F1FB; }
.contador { display: inline-block; min-width: 20px; padding: 0 6px; border-radius: 999px; background: var(--error); color: #fff; font-size: 12px; font-weight: 700; text-align: center; line-height: 20px; }
h2 .contador { background: var(--pend-bg); color: var(--pend); }
.nowrap { white-space: nowrap; }
.num { text-align: right; font-variant-numeric: tabular-nums; }
.mt { margin-top: 8px; }
.crece { flex: 1 1 220px; min-width: 0; }
.espacio { flex: 1; }
.inline { display: inline; margin: 0; }
.enlace { background: none; border: 0; padding: 0; color: var(--primario); cursor: pointer; font: inherit; }
.enlace:hover { text-decoration: underline; }
.enlace.peligro, .btn.peligro { color: var(--error); }
.error-txt { color: var(--error); }
.btn.peq { padding: 5px 10px; font-size: 13px; }
.btn.ico { padding: 6px 10px; min-width: 38px; justify-content: center; }
.btn.deshabilitado { opacity: .5; pointer-events: none; }
.vacio-tabla { text-align: center; padding: 30px !important; }

/* Barra superior: perfil y menú */
.barra .quien a { color: inherit; }
.barra .quien .perfil { display: inline-block; margin-left: 4px; padding: 1px 7px; border-radius: 999px; background: rgba(255,255,255,.12); font-size: 11px; }
.barra .quien form { margin: 0; }
.barra nav { align-items: center; }
details.menu { position: relative; }
details.menu > summary { list-style: none; cursor: pointer; color: #C9D6E5; padding: 6px 10px; border-radius: 6px; font-size: 14px; }
details.menu > summary::-webkit-details-marker { display: none; }
details.menu > summary::after { content: " ▾"; font-size: 11px; }
details.menu[open] > summary, details.menu.activo > summary, details.menu > summary:hover { background: rgba(255,255,255,.1); color: #fff; }
.menu-lista { position: absolute; top: calc(100% + 6px); left: 0; z-index: 30; min-width: 250px; background: var(--panel); border: 1px solid var(--borde); border-radius: var(--radio); box-shadow: 0 8px 24px rgba(16,24,40,.18); padding: 6px; display: grid; }
.menu-lista a { color: var(--texto); padding: 8px 10px; border-radius: 6px; font-size: 14px; }
.menu-lista a:hover { background: var(--primario-claro); text-decoration: none; }

/* Lista de trabajo */
.barra-lista { display: flex; justify-content: space-between; gap: 10px; flex-wrap: wrap; align-items: center; margin-bottom: 10px; }
.barra-lista .chips { margin-bottom: 0; }
.chip.estado-pendiente b, .chip.estado-dictado b, .chip.estado-borrador b, .chip.estado-por_validar b, .chip.estado-firmado b { margin-left: 2px; }
.herramientas { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.filtro-guardado { display: inline-flex; align-items: center; gap: 4px; background: var(--primario-claro); border-color: transparent; }
.filtro-guardado form { margin: 0; display: inline; }
.filtro-guardado button { background: none; border: 0; cursor: pointer; color: var(--suave); font-size: 15px; line-height: 1; padding: 0 2px; }
details.pop { position: relative; }
details.pop > summary { list-style: none; }
details.pop > summary::-webkit-details-marker { display: none; }
.pop-cuerpo { position: absolute; right: 0; top: calc(100% + 6px); z-index: 20; width: 260px; background: var(--panel); border: 1px solid var(--borde); border-radius: var(--radio); box-shadow: 0 8px 24px rgba(16,24,40,.16); padding: 12px; display: grid; gap: 8px; }
.refresco { display: inline-flex; align-items: center; gap: 6px; font-weight: 400; margin: 0; }
.refresco span { font-size: 13px; color: var(--suave); }
.refresco select { width: auto; padding: 5px 8px; font-size: 13px; }
.acciones-lote, .confirmar-lote { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; padding: 10px 12px; margin-bottom: 10px; border-radius: var(--radio); background: var(--azul-bg); border: 1px solid #C7DBF2; }
.acciones-lote select { width: auto; min-width: 200px; }
.confirmar-lote { background: var(--ok-bg); border-color: #B9E1C9; }
.confirmar-lote p { margin: 0; flex: 1 1 300px; }
.col-sel { width: 36px; }
.col-sel input { width: 18px; height: 18px; }
tr.fila-urgente td { background: var(--urgente-bg); }
tr.fila-urgente:hover td { background: #FCE4E1; }
.tag-urgente { display: inline-block; font-size: 10px; font-weight: 800; letter-spacing: .5px; padding: 1px 6px; border-radius: 4px; background: var(--urgente); color: #fff; vertical-align: middle; margin-right: 4px; }
.tiempo.amarillo { color: var(--aviso); font-weight: 600; }
.tiempo.rojo { color: var(--error); font-weight: 700; }
.badge.dictado { background: var(--morado-bg); color: var(--morado); }
.badge.por_validar { background: var(--azul-bg); color: var(--primario-osc); }

/* Estudio */
.datos-panel { margin-bottom: 16px; display: grid; gap: 14px; }
.asignacion { display: flex; justify-content: space-between; align-items: center; gap: 10px; flex-wrap: wrap; border-top: 1px solid var(--borde); padding-top: 12px; }
.asignacion .etq { display: block; font-size: 11px; text-transform: uppercase; letter-spacing: .4px; color: var(--suave); }
.asignacion select { width: auto; }
.col-izq, .col-der { display: grid; gap: 16px; align-content: start; min-width: 0; }
.col-izq > p { margin: -8px 0 0; }
.panel h2 { display: flex; align-items: center; gap: 8px; }
.nota { border-bottom: 1px solid #EEF1F4; padding: 8px 0; position: relative; }
.nota-texto { white-space: pre-wrap; margin: 2px 0; }
.nota-borrar { position: absolute; right: 0; top: 8px; margin: 0; }
.form-nota { display: grid; gap: 6px; margin-top: 10px; }
.form-nota .fila { flex-wrap: wrap; }
.form-nota input[type=file] { flex: 1; min-width: 0; font-size: 13px; }
table.compacta td, table.compacta th { padding: 6px 8px; }
.tabla-wrap.sin-borde { border: 0; box-shadow: none; }
.bloque-dictados { border-bottom: 1px solid var(--borde); padding-bottom: 14px; margin-bottom: 14px; display: grid; gap: 10px; }
.dictado-item { border: 1px solid var(--borde); border-radius: var(--radio); padding: 10px; display: grid; gap: 8px; background: #FAFBFC; }
.dictado-item.activo { border-color: #D3C6F3; background: var(--morado-bg); }
.dictado-cab { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.reproductor { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.reproductor input[type=range] { flex: 1 1 140px; min-width: 100px; padding: 0; }
.reproductor select { width: auto; padding: 5px 6px; font-size: 13px; }
.tiempo-audio { font-size: 13px; min-width: 90px; }
.grabador { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; padding: 10px; border: 1px dashed var(--borde); border-radius: var(--radio); }
.grabador audio { max-width: 100%; flex: 1 1 260px; }
.grabador input[type=text] { flex: 1 1 260px; }
.rec-btn { color: var(--error); }
.punto-rec { width: 12px; height: 12px; border-radius: 50%; background: var(--suave); }
.punto-rec.vivo { background: var(--error); animation: pulso 1.2s infinite; }
.reloj-rec { font-size: 18px; font-weight: 600; min-width: 56px; }
.nivel { width: 120px; height: 8px; border-radius: 4px; background: var(--pend-bg); overflow: hidden; }
.nivel span { display: block; height: 100%; width: 0; background: var(--ok); transition: width .1s; }
.panel-frases { border: 1px solid var(--borde); border-radius: var(--radio); padding: 10px; margin-bottom: 10px; background: #FAFBFC; display: grid; gap: 8px; }
.lista-frases { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; max-height: 260px; overflow-y: auto; }
.lista-frases h3 { margin: 0 0 6px; font-size: 12px; text-transform: uppercase; letter-spacing: .4px; color: var(--suave); }
.frase { display: block; width: 100%; text-align: left; background: var(--panel); border: 1px solid var(--borde); border-radius: 6px; padding: 6px 8px; margin-bottom: 5px; cursor: pointer; font: inherit; font-size: 13px; color: var(--texto); }
.frase:hover, .frase:focus-visible { border-color: var(--primario); background: var(--primario-claro); }
.atajo { font-family: ui-monospace, monospace; font-size: 11px; color: var(--primario-osc); background: var(--primario-claro); border-radius: 4px; padding: 0 4px; margin-right: 6px; }
.campo-solicitante { margin-bottom: 10px; }
.botones-informe { flex-wrap: wrap; margin-top: 4px; }
.confirmar { margin-top: 10px; padding: 12px; border-radius: var(--radio); background: var(--ok-bg); border: 1px solid #B9E1C9; }
.confirmar p { margin: 0 0 8px; }
.confirmar.error { background: var(--error-bg); border-color: #F5C2BC; color: var(--error); }
.cab-informe { justify-content: space-between; }
.cab-informe h2 { margin: 0; }
.version { border-top: 1px solid var(--borde); padding-top: 8px; margin-top: 8px; }
details.edit { margin-top: 12px; }
#entrega { display: grid; gap: 12px; }
#entrega h2 { margin-bottom: 0; }
#entrega .fila { flex-wrap: wrap; align-items: flex-end; }
#entrega .caja-link { margin-top: 0; }
tr.anulada td { opacity: .55; text-decoration: line-through; }
tr.anulada td:last-child { text-decoration: none; }

/* Páginas de administración */
.cab-pagina { display: flex; justify-content: space-between; align-items: flex-end; gap: 12px; flex-wrap: wrap; margin-bottom: 8px; }
.cab-pagina .fila { flex-wrap: wrap; align-items: flex-end; }
.segmentos { display: inline-flex; border: 1px solid var(--borde); border-radius: 8px; overflow: hidden; background: var(--panel); }
.segmentos a { padding: 7px 14px; color: var(--texto); font-size: 14px; border-right: 1px solid var(--borde); }
.segmentos a:last-child { border-right: 0; }
.segmentos a.activo { background: var(--primario); color: #fff; }
.segmentos a:hover { text-decoration: none; }
.grid2, .grid3 { display: grid; gap: 12px; margin: 10px 0; }
.grid2 { grid-template-columns: 1fr 1fr; }
.grid3 { grid-template-columns: 1fr 2fr 1fr; }
.permisos { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 12px; margin: 10px 0; }
.permisos fieldset { border: 1px solid var(--borde); border-radius: var(--radio); padding: 8px 12px 10px; margin: 0; }
.permisos legend { font-weight: 700; font-size: 13px; padding: 0 4px; }
label.permiso { display: flex; gap: 8px; align-items: flex-start; font-weight: 400; color: var(--texto); font-size: 14px; text-transform: none; letter-spacing: 0; margin: 5px 0; }
label.permiso input { margin-top: 3px; }
label.permiso.destacado { background: var(--aviso-bg); border-radius: 6px; padding: 8px 10px; }
.acciones-perfil { margin-top: 10px; gap: 8px; }
.acciones-perfil form { margin: 0; }
.aviso-info { background: var(--azul-bg); border-radius: 6px; padding: 8px 10px; }
.aviso-ok { background: var(--ok-bg); color: var(--ok); border-radius: 6px; padding: 8px 10px; }
.ajustes { display: grid; gap: 16px; max-width: 860px; }
.ajustes .panel { display: grid; gap: 6px; }
.ajustes label { margin-top: 6px; }
.buscar-auditoria { flex-wrap: wrap; align-items: flex-end; margin: 10px 0; }

/* Estadísticas */
.kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 12px; margin: 12px 0 16px; }
.kpi { background: var(--panel); border: 1px solid var(--borde); border-radius: var(--radio); padding: 12px 14px; }
.kpi span { display: block; font-size: 12px; color: var(--suave); }
.kpi b { font-size: 24px; font-variant-numeric: tabular-nums; }
.estad { margin-bottom: 16px; }
.barras { display: grid; gap: 6px; }
.barra-fila { display: grid; grid-template-columns: minmax(80px, 160px) 1fr 44px; gap: 8px; align-items: center; font-size: 13px; }
.barra-nombre { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.barra-pista { height: 12px; background: var(--pend-bg); border-radius: 6px; overflow: hidden; }
.barra-relleno { display: block; height: 100%; background: var(--primario); border-radius: 6px; }
.barra-n { text-align: right; font-variant-numeric: tabular-nums; }

@media (max-width: 1000px) {
  .lista-frases { grid-template-columns: 1fr; }
}
@media (max-width: 640px) {
  .filtros { grid-template-columns: 1fr 1fr; }
  .filtros .f-q { grid-column: 1 / -1; }
  .grid2, .grid3 { grid-template-columns: 1fr; }
  .barra { height: auto; flex-wrap: wrap; padding-block: 8px; }
  .barra nav { order: 3; flex: 1 0 100%; overflow-x: auto; }
  .menu-lista { position: fixed; left: 12px; right: 12px; top: auto; }
  .pop-cuerpo { right: auto; left: 0; }
}

.badge { white-space: nowrap; }
td.mono { white-space: nowrap; }
#entrega .caja-link .fila { flex-wrap: nowrap; }
#entrega .caja-link .fila input { flex: 1; min-width: 0; }
.config-equipo { margin-bottom: 14px; }
.config-equipo .datos b.mono { font-size: 16px; }
.mt-grande { margin-top: 18px; }

/* ---- Visor dentro de la pantalla del informe ---- */
.visor-caja { display: grid; gap: 6px; }
.visor-pestanas { display: flex; gap: 4px; align-items: center; flex-wrap: wrap; }
.visor-pestanas [role=tab], .btn-visor { border: 1px solid var(--borde, #D0D7DE); background: var(--panel, #fff); color: inherit;
  border-radius: 6px; padding: 5px 10px; font-size: 13px; cursor: pointer; }
.visor-pestanas [role=tab][aria-selected=true] { background: var(--primario); color: #fff; border-color: var(--primario); }
.btn-visor[aria-pressed=true] { background: var(--primario-claro); border-color: var(--primario); }
.visor-pestanas .espacio { flex: 1; }
.visor-marco { height: calc(100vh - 140px); min-height: 480px; background: #000; border-radius: var(--radio, 8px); overflow: hidden; }
.visor-marco iframe { width: 100%; height: 100%; border: 0; display: block; }
.visor-marco:fullscreen, .visor:fullscreen { height: 100vh; border-radius: 0; }
.visor-ayuda { margin: 0; }
/* Con el visor completo, la columna de imágenes queda fija mientras se escribe el informe */
.estudio.con-visor .col-izq { position: sticky; top: 8px; max-height: calc(100vh - 16px); overflow-y: auto; }
.estudio.ampliado { grid-template-columns: minmax(0, 1.9fr) minmax(360px, 1fr); }
.datos .corregir { display: flex; align-items: end; }
@media (max-width: 900px) {
  .estudio.con-visor .col-izq { position: static; max-height: none; overflow: visible; }
  .estudio.ampliado { grid-template-columns: 1fr; }
  .visor-marco { height: 70vh; min-height: 0; }
  #visor-ampliar { display: none; }
}

/* ---- Ventana para corregir datos del paciente ---- */
.dialogo { border: 0; border-radius: 12px; padding: 0; width: min(640px, calc(100vw - 32px));
  box-shadow: 0 20px 60px rgba(0,0,0,.35); }
.dialogo::backdrop { background: rgba(15, 23, 42, .45); }
.dialogo form { padding: 20px; display: grid; gap: 12px; }
.dialogo h2 { margin: 0; }
.campos-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 14px; }
.campos-2 label { display: grid; gap: 4px; font-size: 13px; }
.campos-2 .ancho { grid-column: 1 / -1; }
.campos-2 input, .campos-2 select { width: 100%; }
.dialogo .aviso { background: var(--aviso-bg); border: 1px solid var(--aviso); border-radius: 6px; padding: 8px 10px; margin: 0; }
.fila.fin { justify-content: flex-end; }
tr.editable { cursor: default; }
@media (max-width: 600px) { .campos-2 { grid-template-columns: 1fr; } }

/* ---- Pantalla de dictado: datos y grabadora a la izquierda, imágenes en el resto ---- */
body.modo-dictado { height: 100vh; overflow: hidden; display: flex; flex-direction: column; background: var(--bg); }
.dict-barra { display: flex; align-items: center; gap: 10px; padding: 6px 14px; background: #1A2B3C; color: #fff; flex: 0 0 auto; }
.dict-barra a.dict-volver { color: #fff; text-decoration: none; font-weight: 600; }
.dict-barra .dict-titulo { font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dict-barra .espacio { flex: 1; }
.dict-flash { margin: 6px 14px 0; }
.dict { flex: 1; min-height: 0; display: grid; grid-template-columns: 360px minmax(0, 1fr); }
.dict-izq { overflow-y: auto; padding: 10px; display: flex; flex-direction: column; gap: 10px; border-right: 1px solid var(--borde); }
.dict-caja { background: var(--panel); border: 1px solid var(--borde); border-radius: var(--radio); padding: 10px 12px; display: grid; gap: 8px; }
.dict-caja .etq { display: block; font-size: 10px; letter-spacing: .04em; text-transform: uppercase; color: var(--suave); }
.dict-caja .fila { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.dict-caja .espacio { flex: 1; }
.dict-asig select { flex: 1 1 120px; min-width: 0; }
.dict-nombre { font-size: 17px; font-weight: 700; }
.dict-datos { display: grid; grid-template-columns: 1fr 1fr; gap: 6px 12px; font-size: 13px; }
.dict-pestanas { display: flex; gap: 4px; border-bottom: 1px solid var(--borde); margin: -2px -4px 0; }
.dict-pestanas [role=tab] { border: 0; background: none; padding: 6px 8px; font-size: 13px; cursor: pointer; color: var(--suave); border-bottom: 2px solid transparent; }
.dict-pestanas [role=tab][aria-selected=true] { color: var(--primario); border-bottom-color: var(--primario); font-weight: 600; }
.dict-estudio { display: grid; gap: 8px; background: var(--primario-claro); border-radius: 6px; padding: 10px; }
.dict-notas { display: grid; gap: 6px; }
.dict-previo { display: grid; gap: 4px; padding: 8px 0; border-bottom: 1px solid var(--borde); }
.dict-audio { margin-top: auto; }
.dict-audio .reproductor { flex-wrap: wrap; }
.grabador-grande { justify-content: center; border-style: solid; background: var(--bg); }
.grabador-grande .rec-btn { font-size: 18px; padding: 14px 22px; border-radius: 40px; border: 2px solid var(--error); background: #fff; width: 100%; }
.grabador-grande > .peq.suave { text-align: center; }
.dict-atajo { margin: 0; text-align: center; }
.dict-visor { position: relative; background: #000; min-width: 0; }
.dict-visor iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.dict-visor-pestanas { position: absolute; z-index: 2; right: 8px; bottom: 8px; display: flex; gap: 4px; opacity: .85; }
.dict-visor-pestanas [role=tab], .dict-visor-pestanas .btn-visor { border: 1px solid #3A4654; background: #1E2733; color: #C9D1D9; border-radius: 6px; padding: 3px 9px; font-size: 12px; cursor: pointer; }
.dict-visor-pestanas [role=tab][aria-selected=true] { background: var(--primario); border-color: var(--primario); color: #fff; }
@media (max-width: 900px) {
  body.modo-dictado { height: auto; overflow: auto; }
  .dict { grid-template-columns: 1fr; }
  .dict-visor { height: 70vh; }
  .dict-izq { border-right: 0; }
}

/* ---- Panel inferior de la lista (clic en un paciente): audio, series y minivisor ---- */
table.lista tbody tr[data-url] { cursor: pointer; }
table.lista tbody tr.sel > td { background: var(--aviso-bg) !important; }
.panel-lista { position: sticky; bottom: 0; z-index: 5; margin-top: 12px; height: 270px; display: grid;
  grid-template-columns: minmax(260px, 1fr) minmax(320px, 1.4fr) 260px; gap: 10px; padding: 10px;
  background: var(--panel); border: 1px solid var(--borde); border-radius: var(--radio); box-shadow: 0 -6px 20px rgba(15, 23, 42, .12); }
.pl-col { min-width: 0; min-height: 0; display: flex; flex-direction: column; gap: 6px; }
.pl-tit { display: flex; align-items: center; gap: 6px; font-size: 13px; color: var(--suave); }
.pl-tit b { color: var(--texto); font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pl-tit .espacio { flex: 1; }
#pl-audios { overflow-y: auto; display: grid; gap: 8px; align-content: start; }
.pl-audio-item { display: grid; gap: 4px; padding-bottom: 6px; border-bottom: 1px solid var(--borde); }
.pl-audio-item .reproductor { flex-wrap: wrap; }
.pl-tabla { overflow: auto; flex: 1; border: 1px solid var(--borde); border-radius: 6px; }
#pl-series td, #pl-series th { padding: 4px 8px; font-size: 12px; }
#pl-series tbody tr { cursor: pointer; }
#pl-series tbody tr.sel td { background: var(--aviso-bg); }
.pl-visor { background: #000; border-radius: 6px; overflow: hidden; color: #C9D1D9; }
.pl-visor img { flex: 1; min-height: 0; width: 100%; object-fit: contain; }
.pl-controles { display: flex; align-items: center; gap: 6px; padding: 4px 8px; background: #161B22; }
.pl-controles input { flex: 1; }
@media (max-width: 1100px) {
  .panel-lista { position: static; height: auto; grid-template-columns: 1fr; }
  .pl-visor { height: 260px; }
  .pl-tabla { max-height: 200px; }
}

/* Orden que viene de la agenda (en la pantalla del estudio) */
.orden-agenda{grid-column:1/-1;display:flex;flex-direction:column;gap:2px;padding:8px 10px;border-left:3px solid var(--primario);background:var(--primario-claro);border-radius:6px}
.orden-agenda>span:first-child{font-size:12px;opacity:.75}
.orden-agenda span:not(:first-child),.orden-agenda b{text-transform:none;letter-spacing:normal}
.orden-agenda.sin-orden{border-left-color:var(--aviso);background:var(--aviso-bg)}
.orden-agenda.sin-orden summary{cursor:pointer;font-weight:600;font-size:13px}
.orden-agenda .cand{display:flex;gap:8px;align-items:flex-start;padding:6px 0;border-bottom:1px solid var(--borde);font-size:13px}
.orden-agenda .cand span .suave{display:block}

/* Logo del centro */
.barra .marca { display: inline-flex; align-items: center; gap: 10px; }
.marca-logo { display: inline-flex; align-items: center; background: #fff; border-radius: 6px; padding: 3px 6px; height: 38px; }
.marca-logo img { max-height: 32px; max-width: 120px; object-fit: contain; display: block; }
.login-logo { text-align: center; margin-bottom: 10px; }
.login-logo img { max-width: 220px; max-height: 100px; object-fit: contain; }
.pub-marca { display: flex; align-items: center; gap: 14px; }
.pub-marca img { max-height: 56px; max-width: 150px; object-fit: contain; }
.logo-fila { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; }
.logo-muestra { width: 180px; height: 90px; border: 1px dashed var(--borde); border-radius: var(--radio); display: flex; align-items: center; justify-content: center; background: #fff; }
.logo-muestra img { max-width: 170px; max-height: 80px; object-fit: contain; }
@media (max-width: 640px) { .barra .marca-logo + span { display: none; } }
