/* Solparquet Gestión · estilos de EQUIPO (fichaje, vehículos, pólizas, documentos), AJUSTES y pantallas del OPERARIO.
 * Solo tokens var(--…) del sistema de diseño (docs/12-DISENO.md). Contraste AA con los pares de Contraste::PARES.
 * Prefijos: .op-* operario (móvil, guantes: objetivos >= 48 px, texto >= 16 px) · .fx-* fichaje · .eq-* gestión de equipo · .aj-* ajustes.
 */

/* =========================================================== OPERARIO: base móvil (texto >= 16 px, objetivos >= 48 px) */
.op { font-size: var(--fs-base) }
.op .small, .op .hint, .op .muted, .op .faint, .op .badge, .op label, .op .op-sub, .op .crumbs, .op .breadcrumbs { font-size: var(--fs-base) }
.op .badge { padding: .2rem .7rem .2rem .55rem }
.op label { color: var(--ink); margin-top: 1rem }
.op .btn, .op .btn.sm { min-height: 48px; font-size: 1rem; padding: .6rem 1.1rem }
.op .btn.lg, .op .btn.big { min-height: var(--tap-lg) }
.op input:not([type=checkbox]):not([type=radio]):not([type=file]), .op select, .op textarea { min-height: 52px; font-size: 17px }
.op input[type=checkbox], .op input[type=radio] { width: 26px; height: 26px }
.op .check { min-height: 48px; gap: .8rem }
.op a:not(.btn):not(.tab):not(.op-parte-link):not(.op-obra):not(.th-sort) { text-decoration: underline; text-underline-offset: .2em }
.op-card h3 { margin-top: var(--s-4) }
.op .list li { min-height: 52px }
.op .pagehead { margin-bottom: var(--s-4) }
.op-sub { margin: .15rem 0 0 }
.op-persona { flex-wrap: wrap; min-width: 0 }
.op-persona .op-copiar-hores { grid-column: 1 / -1; margin-top: var(--s-2); white-space: normal }
.op-fieldset > .hint { margin: var(--s-2) 0 var(--s-3) }
.op-card > h2, .op-card .card-head h2 { font-size: var(--fs-xl); display: flex; align-items: center; gap: .5rem }
.op-card h2 .i { color: var(--terra-600) }
.op-fila { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--s-2) var(--s-3); margin-bottom: var(--s-2) }
.op-fila h2 { margin: 0 }
.op-dato { margin: 0 0 var(--s-3) }
.op-dato b { font: 600 1.25rem var(--font-head); font-variant-numeric: tabular-nums }
.op-enlace { margin: var(--s-3) 0 0 }
.op-enlace a { display: inline-flex; align-items: center; gap: .35rem; min-height: 44px; font-weight: 600 }
.op-acciones { display: flex; flex-wrap: wrap; gap: var(--s-2); margin-top: var(--s-3) }
.op-acciones .btn { flex: 1 1 200px }
.op-ayuda { margin: var(--s-4) 0 }
.op-ayuda a { display: inline-flex; align-items: center; gap: .45rem; min-height: 48px; font-weight: 600 }
.op-lista li { align-items: flex-start; gap: var(--s-3) }
.op-puntos { margin: 0 0 var(--s-4); padding-left: 1.2rem } .op-puntos li { margin: .5rem 0; line-height: 1.55 }
.op-summary { list-style: none; display: flex; flex-direction: column; gap: .15rem; min-height: 48px; justify-content: center; cursor: pointer; padding-right: 2.2rem; position: relative }
.op-summary::-webkit-details-marker { display: none }
.op-summary h2 { margin: 0; font-size: var(--fs-xl) }
.op-summary::after { content: ""; position: absolute; right: .3rem; top: 50%; width: 12px; height: 12px; border-right: 3px solid var(--ink-soft); border-bottom: 3px solid var(--ink-soft); transform: translateY(-70%) rotate(45deg); transition: transform var(--dur) }
details[open] > .op-summary::after { transform: translateY(-30%) rotate(-135deg) }
details[open] > .op-summary { margin-bottom: var(--s-3) }
/* Botón principal de la portada del operario */
.op-principal { display: flex; align-items: center; justify-content: center; gap: .6rem; min-height: 64px; font-size: 1.2rem; margin: 0 0 var(--s-4) }
.op-principal .i { width: 1.5em; height: 1.5em }

/* =========================================================== FICHAJE */
.op-fichar { text-align: center; padding: var(--s-6) var(--s-5) }
.op-fichar.estado-trabajando { border-top: 5px solid var(--ok) }
.op-fichar.estado-pausa { border-top: 5px solid var(--warn) }
.op-fichar.estado-fuera { border-top: 5px solid var(--field-border) }
.fx-reloj { font: 700 3.2rem/1 var(--font-head); letter-spacing: -.02em; font-variant-numeric: tabular-nums; color: var(--ink) }
.fx-estado { margin: var(--s-3) 0 var(--s-5); display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: .4rem }
.fx-botones { display: grid; gap: var(--s-3) }
.fx-form { margin: 0 }
.fx-btn { width: 100%; gap: .6rem }
.fx-btn .i { width: 1.4em; height: 1.4em }
.fx-big { min-height: 84px; font-size: 1.4rem; border-radius: var(--r) }
.fx-med { min-height: var(--tap-lg); font-size: 1.15rem }
.op .fx-big { min-height: 84px; font-size: 1.4rem }
.op .fx-med { min-height: var(--tap-lg); font-size: 1.15rem }
.fx-msg { margin-top: var(--s-3); text-align: left }
.fx-msg .flash { font-size: 1.05rem; font-weight: 600; margin: 0 }
.fx-trabajado { margin: var(--s-5) 0 0; display: flex; flex-direction: column; gap: .15rem }
.fx-hoy { font: 600 1.8rem/1.1 var(--font-head); font-variant-numeric: tabular-nums; color: var(--ink) }
.fx-sem { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: .3rem; text-align: center }
.fx-sem li { background: var(--cream); border-radius: var(--r-sm); padding: .45rem .1rem; display: flex; flex-direction: column; gap: .15rem; border: 2px solid transparent; min-width: 0 }
.fx-sem .fx-dia { font-size: .95rem; color: var(--ink-soft) }
.fx-sem abbr { text-decoration: none }
.fx-sem b { font-size: 1rem; font-variant-numeric: tabular-nums }
.fx-sem li.hoy { border-color: var(--terra-600); background: var(--terra-50) }
.fx-sem li.abierta { background: var(--err-bg) }
.fx-abierta { font-size: .8rem; color: var(--err-ink); font-weight: 600 }
.fx-total { margin: var(--s-3) 0 0; font-size: 1.05rem }
@media (max-width: 380px) { .fx-sem { gap: .15rem } .fx-sem .fx-dia { font-size: .85rem } .fx-sem b { font-size: .88rem } .fx-reloj { font-size: 2.8rem } }
.eq-nota { background: var(--cream); box-shadow: none }
.eq-nota h2 { font-size: var(--fs-lg); display: flex; gap: .5rem; align-items: center }
.eq-nota p { margin: 0 }
.eq-eventos tr.eq-anulado td { color: var(--ink-soft) }
.eq-lista-compacta { margin: .35rem 0 0; padding-left: 1.2rem } .eq-lista-compacta li { margin: .15rem 0 }
.eq-solicitudes li { flex-wrap: wrap; align-items: flex-start }
.eq-resolver { display: flex; flex-wrap: wrap; gap: var(--s-2); align-items: center; flex: 1 1 360px; justify-content: flex-end }
.eq-resolver input { flex: 1 1 220px; width: auto }
.eq-resolver .btn { min-height: var(--tap) }
.eq-form-fila { display: flex; flex-wrap: wrap; gap: 0 var(--s-3); align-items: flex-end }
.eq-form-fila > div { flex: 1 1 160px }
.eq-form-fila .btn { margin-top: var(--s-2); width: 100% }
.eq-resumen { padding: .7rem .9rem; background: var(--surface-2); border-radius: var(--r-sm); border: 1px solid var(--line) }
.eq-opciones { border: 0; padding: 0; margin: var(--s-3) 0 0 } .eq-opciones legend { padding: 0; margin-bottom: .3rem }
.eq-form.card { box-shadow: none }

/* =========================================================== Gestión de equipo: listas, fichas y vista rápida */
.eq-dl { display: grid; grid-template-columns: minmax(8rem, auto) 1fr; gap: .45rem 1rem; margin: 0 }
.eq-dl dt { color: var(--ink-soft) } .eq-dl dd { margin: 0; min-width: 0; overflow-wrap: anywhere }
@media (max-width: 520px) { .eq-dl { grid-template-columns: 1fr; gap: .1rem } .eq-dl dd { margin-bottom: .55rem } }
.eq-alertas { border-left: 4px solid var(--warn) }
.eq-alertas h2 { display: flex; align-items: center; gap: .5rem; font-size: var(--fs-lg) }
.eq-nombre { font-weight: 600 }
.eq-sub { display: block; font-size: var(--fs-sm); color: var(--ink-soft) }
.eq-vr .card { margin-bottom: var(--s-3) }
.eq-vr-cab { display: flex; flex-wrap: wrap; gap: var(--s-2); align-items: center; margin-bottom: var(--s-3) }
.eq-vr-cab .badge { font-size: .85rem }
.eq-acciones-fila { display: flex; flex-wrap: wrap; gap: var(--s-2); margin-top: var(--s-3) }
.eq-docs li { gap: var(--s-3) }
.eq-docs a[target=_blank]::after, .eq-ext::after { content: " ↗"; font-size: .85em }
.eq-grande { font: 600 1.5rem/1.2 var(--font-head); margin: 0; font-variant-numeric: tabular-nums }
.eq-historial li { font-size: var(--fs-sm) }
.eq-checks { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 0 var(--s-4) }
.card-head .muted { font-size: var(--fs-sm) }

/* =========================================================== OPERARIO: vehículos, obras, partes, agenda */
.op-vehiculo { border-left: 5px solid var(--ok) }
.op-vehiculo.hay-aviso { border-left-color: var(--err) }
.op-vehiculo h2 { flex-wrap: wrap }
.op-vehiculo .eq-dl { margin: var(--s-3) 0 }
.op-emergencia { margin: var(--s-4) 0 0; padding: var(--s-4); border-radius: var(--r); background: var(--warn-bg); border: 1px solid var(--warn-line) }
.op-emergencia h3 { margin: 0 0 .5rem; display: flex; gap: .5rem; align-items: center; color: var(--warn-ink) }
.op-emergencia p { margin: .25rem 0 }
.op-km-input { font: 600 2rem/1.1 var(--font-head) !important; text-align: center; letter-spacing: .02em; min-height: 72px !important }
.op-obra { display: block; color: var(--ink); text-decoration: none !important; border-left: 5px solid var(--terra) }
.op-obra:hover { border-color: var(--terra-600); box-shadow: var(--sh-2); color: var(--ink) }
.op-obra .op-fila b { font: 600 1.25rem var(--font-head) }
.op-obra p { margin: .25rem 0 }
.op-obra .op-ir { display: inline-flex; align-items: center; gap: .3rem; font-weight: 600; color: var(--link); margin-top: .4rem }
.op-obra-acciones { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: var(--s-2); margin-top: var(--s-3) }
.op-dia { margin: var(--s-5) 0 var(--s-2); font-size: var(--fs-lg); display: flex; align-items: center; gap: .5rem }
.op-dia.hoy { color: var(--terra-700) }
.op-cita { display: flex; gap: var(--s-3); align-items: flex-start; margin-bottom: var(--s-2); padding: var(--s-4) }
.op-cita-hora { font: 600 1.1rem var(--font-head); color: var(--terra-700); min-width: 5.2rem; font-variant-numeric: tabular-nums }
.op-cita .grow b { display: block; font-size: 1.05rem }
.op-cita a { display: inline-flex; min-height: 44px; align-items: center }
.op-parte-item { display: flex; align-items: center; justify-content: space-between; gap: var(--s-3); padding: var(--s-3) 0; border-bottom: 1px solid var(--line-soft); min-height: 64px }
.op-parte-item:last-child { border-bottom: 0 }
.op-parte-item a.op-parte-link { flex: 1; display: flex; flex-direction: column; min-height: 48px; justify-content: center; text-decoration: none; color: var(--ink) }
.op-parte-item a.op-parte-link b { color: var(--link) }
.op-parte-item .op-devuelto { color: var(--err-ink); font-weight: 600 }

/* Formulario del parte y de medidas: barra pegada que no tapa los campos */
.op-form input, .op-form select, .op-form textarea, .op-form button { scroll-margin-top: calc(var(--topbar-h) + 16px); scroll-margin-bottom: 170px }
html:has(.op-form) { scroll-padding-bottom: 170px }
.op-form .card > h2 { display: flex; align-items: center; gap: .6rem }
.op-paso { display: inline-grid; place-items: center; width: 34px; height: 34px; flex: 0 0 34px; border-radius: 50%; background: var(--terra-tint); color: var(--terra-700); font: 700 1rem var(--font-head) }
.op-horas { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 var(--s-3) }
.op-horas > div:first-child { grid-column: 1 / -1 }
@media (min-width: 721px) { .op-horas { grid-template-columns: repeat(3, minmax(0, 1fr)) } .op-horas > div:first-child { grid-column: auto } }
.op-persona { display: grid; grid-template-columns: 1fr 9rem; gap: var(--s-3); align-items: center; padding: .45rem 0; border-bottom: 1px solid var(--line-soft) }
.op-persona:last-of-type { border-bottom: 0 }
.op-persona label { margin: 0; font-weight: 600 }
.op-partida { border-bottom: 1px solid var(--line-soft); padding: var(--s-3) 0 }
.op-partida:last-child { border-bottom: 0 }
.op-partida .op-partida-t { font-weight: 600; display: flex; flex-wrap: wrap; gap: .35rem; align-items: center }
.op-partida .op-partida-d { color: var(--ink-soft) }
.op-partida .op-partida-campos { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.6fr); gap: var(--s-2) var(--s-3); margin-top: .35rem }
.op-partida .op-partida-campos label { margin: .2rem 0 .25rem }
@media (max-width: 480px) { .op-partida .op-partida-campos { grid-template-columns: minmax(0, 1fr) } .op-persona { grid-template-columns: 1fr 7.5rem } }
.op-zona { margin: var(--s-4) 0 .2rem; font-size: var(--fs-lg); color: var(--terra-700) }
.op-filas { width: 100% } .op-filas, .op-filas tbody, .op-filas tr, .op-filas td { display: block; width: 100% }
.op-fila-din { border: 1px solid var(--line); border-left: 4px solid var(--terra-soft); border-radius: var(--r); padding: var(--s-3); margin: var(--s-3) 0; background: var(--surface) }
.op-fila-din .op-fila-cab { display: flex; justify-content: space-between; align-items: center; gap: var(--s-2) }
.op-fila-din .op-fila-cab b { font-family: var(--font-head) }
.op-fila-din .op-fila-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 0 var(--s-3) }
.op-fila-din label { margin-top: .6rem }
.op-anadir { width: 100%; border-style: dashed }
.op-anadir { margin-top: var(--s-3) }
.op-form .op-card > .btn, .op-card > input + .btn, .op-card > textarea + .btn { margin-top: var(--s-3) }
.op-triar-obres { display: grid; gap: var(--s-3); grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)) }
.op-triar-obres .card { margin: 0 }
.legal-benvinguda { max-width: 680px }
.legal-benvinguda h2 { margin-top: 0 }
.legal-ampliar { margin: var(--s-3) 0; border-block: 1px solid var(--line); padding-block: var(--s-2) }
.legal-ampliar summary { cursor: pointer; min-height: 44px; display: flex; align-items: center; color: var(--link); font-weight: 600 }
.legal-confirmacions { border: 0; margin: var(--s-3) 0 0; padding: 0 }
.legal-confirmacions legend { font-weight: 600; margin-bottom: var(--s-2) }
.legal-confirmacions .check { display: block; line-height: 1.5; margin-top: var(--s-2); padding: var(--s-2) 0 }
.legal-confirmacions input { margin-right: var(--s-2); vertical-align: middle }
.legal-continuar { margin-top: var(--s-4) }
.legal-continuar .btn { min-height: 48px; width: 100% }
.op-form .stickybar { gap: var(--s-3); padding-top: .75rem; padding-bottom: .75rem }
.op-form .stickybar .btn { min-height: var(--tap-lg); font-size: 1.05rem }
.op-medtot { position: sticky; bottom: calc(var(--bottomnav-h) + env(safe-area-inset-bottom) + 104px); z-index: calc(var(--z-sticky) - 1); background: var(--ink); color: #FFFFFF; border-radius: var(--r); padding: .6rem 1rem; display: flex; justify-content: space-between; gap: var(--s-3); margin: var(--s-3) 0; font: 600 1.05rem var(--font-head); font-variant-numeric: tabular-nums }
@media (min-width: 1025px) { .op-medtot { bottom: 84px } }

/* =========================================================== AJUSTES */
.aj-intro { max-width: 70ch }
.aj-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: var(--s-3) }
.aj-card { display: flex; gap: .85rem; align-items: flex-start; padding: var(--s-4); border: 1px solid var(--line); border-radius: var(--r); background: var(--paper); color: var(--ink); text-decoration: none !important; min-height: 92px; transition: border-color var(--dur), box-shadow var(--dur), transform var(--dur) }
.aj-card:hover { border-color: var(--terra-soft); box-shadow: var(--sh-2); color: var(--ink) }
.aj-card:focus-visible { outline-offset: 3px }
.aj-card b { display: block; font-family: var(--font-head); font-weight: 600; font-size: 1.05rem }
.aj-card .small { display: block; margin-top: .2rem; color: var(--ink-soft) }
.aj-card .aj-estado-mini { display: inline-flex; margin-top: .45rem }
.aj-ico { width: 44px; height: 44px; flex: 0 0 44px; border-radius: 12px; display: grid; place-items: center; background: var(--terra-tint); color: var(--terra-700) }
.aj-grupo { margin: var(--s-6) 0 var(--s-3); font-size: var(--fs-sm); text-transform: uppercase; letter-spacing: .08em; color: var(--ink-faint); font-family: var(--font-head) }
.aj-barra { height: 12px; border-radius: var(--r-full); background: var(--cream-2); overflow: hidden; border: 1px solid var(--line) }
.aj-barra span { display: block; height: 100%; background: var(--ok); border-radius: var(--r-full) }
.aj-prog { display: grid; gap: .4rem }
.aj-prog h2 { margin: 0; font-size: var(--fs-lg) }
.aj-lista { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: var(--s-3) }
.aj-paso { margin: 0; display: flex; flex-direction: column; justify-content: space-between }
.aj-paso.falta { border-left: 4px solid var(--warn) } .aj-paso.ok { border-left: 4px solid var(--ok) }
.aj-cab { display: flex; gap: .8rem; align-items: flex-start }
.aj-num { flex: 0 0 auto; width: 34px; height: 34px; border-radius: 50%; background: var(--cream-2); display: grid; place-items: center; font-weight: 600 }
.aj-paso.ok .aj-num { background: var(--ok-bg); color: var(--ok-ink) }
.aj-txt h3 { margin: .2rem 0; font-size: 1.05rem } .aj-txt p { margin: 0 }
.aj-pie { display: flex; flex-wrap: wrap; gap: .6rem; align-items: center; justify-content: space-between; margin-top: .9rem }
.aj-pie .btn { min-width: 140px }
@media (max-width: 520px) { .aj-pie .btn { width: 100% } .aj-lista { grid-template-columns: minmax(0, 1fr) } }
.aj-aviso-copias { border-left-width: 6px; font-size: 1rem }
.aj-aviso-copias b { font-size: 1.05rem }
.aj-seccion { margin-top: var(--s-6) }
details.card > summary { cursor: pointer; min-height: 44px; display: flex; align-items: center; gap: .4rem; flex-wrap: wrap }
.aj-form-ancho { max-width: 900px }
.aj-tabla-campos input, .aj-tabla-campos select { min-width: 5rem }
.aj-tabla-campos td { vertical-align: middle }
.aj-nuevo { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 0 var(--s-4); align-items: end }
.aj-cert { display: grid; grid-template-columns: auto 1fr; gap: .35rem 1rem; margin: .6rem 0 }
.aj-cert dt { color: var(--ink-soft) } .aj-cert dd { margin: 0 }
@media (max-width: 520px) { .aj-cert { grid-template-columns: 1fr } .aj-cert dd { margin-bottom: .4rem } }
.aj-opts { border: 0; padding: 0; margin: 0 0 .6rem }
.aj-opt { display: flex; gap: .8rem; align-items: flex-start; padding: .9rem; border: 1px solid var(--field-border); border-radius: var(--r); margin: 0 0 .6rem; cursor: pointer; min-height: 48px; color: var(--ink); font-weight: 500; font-size: 1rem }
.aj-opt input { margin-top: .15rem }
.aj-opt:has(input:checked) { border-color: var(--terra-600); background: var(--terra-tint); box-shadow: inset 0 0 0 1px var(--terra-600) }
.aj-opt:has(input:focus-visible) { outline: 3px solid var(--focus); outline-offset: 2px }
.aj-opt .small { color: var(--ink-soft) }
.aj-conf { margin: .5rem 0; padding: var(--s-3) var(--s-4); border-radius: var(--r); background: var(--surface-2); border: 1px solid var(--line) }
.aj-legal { border: 1px solid var(--warn-line); background: var(--warn-bg); border-radius: var(--r); padding: var(--s-3) var(--s-4); margin: var(--s-3) 0 }
.aj-legal .check { color: var(--warn-ink); font-weight: 600 }
.ia-prov > summary { gap: .5rem }
.ia-prov .ia-usar { margin-top: 1rem; padding-top: .8rem; border-top: 1px solid var(--line) }
.ia-acciones { display: flex; flex-wrap: wrap; gap: var(--s-2); align-items: center }
.ia-msg { margin: .6rem 0; padding: .75rem .95rem; border-radius: 14px; max-width: 92%; line-height: 1.55 }
.ia-msg.u { background: var(--terra-tint); margin-left: auto }
.ia-msg.a { background: var(--cream-2) }
.ia-msg.e { background: var(--err-bg); color: var(--err-ink) }
.ia-chat { min-height: 220px }
.ia-chips { display: flex; flex-wrap: wrap; gap: var(--s-2); margin-top: .6rem }
.ia-chips .pill { border: 1px solid var(--field-border); cursor: pointer; min-height: 44px; font: inherit; font-size: .95rem }
.ia-form { position: sticky; bottom: calc(var(--bottomnav-h) + env(safe-area-inset-bottom)); z-index: var(--z-sticky) }
@media (min-width: 1025px) { .ia-form { bottom: 0 } }
.ia-form .ia-fila { display: flex; gap: var(--s-2); align-items: flex-end }
.ia-form textarea { min-height: 56px }
.ia-form .btn { flex: 0 0 auto; min-height: 56px }

/* Historial de cambios (auditoría) */
.aud-cambio { max-width: 460px; overflow-wrap: anywhere; font-size: var(--fs-sm); color: var(--ink-soft) }
.aud-cambio code { font-size: .85em }
.aud-accion { font-weight: 600 }

/* =========================================================== Entrar, páginas públicas y legales */
.loginwrap { background: linear-gradient(165deg, var(--terra) 0%, var(--terra-700) 100%) }
.logincard { padding: var(--s-8) var(--s-6) var(--s-6) }
.logincard h1 { font-size: var(--fs-xl); margin: 0 0 var(--s-2) }
.logincard .login-sub { color: var(--ink-soft); margin: 0 0 var(--s-4) }
.logincard label { color: var(--ink); font-size: .95rem }
.logincard input { min-height: 52px; font-size: 17px }
.logincard .btn.big { margin-top: var(--s-5) }
.logincard .login-pie { margin: var(--s-5) 0 0; padding-top: var(--s-4); border-top: 1px solid var(--line); font-size: var(--fs-sm); color: var(--ink-soft); display: flex; flex-wrap: wrap; gap: .25rem .9rem }
.logincard .login-pie a { display: inline-flex; min-height: 44px; align-items: center }
.logincard .flash { margin-top: var(--s-3) }
.login-verpw { display: flex; justify-content: flex-end; margin-top: .4rem }
.login-verpw .btn { min-height: 40px }
.legal-pub .topbar { position: sticky }
.legal-main { max-width: 880px; margin: 0 auto; padding: var(--s-6) var(--s-4) var(--s-12) }
.legal h2 { margin-top: 1.6rem; font-size: 1.15rem }
.legal p, .legal li { line-height: 1.65 }
.legal table { width: 100%; border-collapse: collapse; margin: var(--s-3) 0; font-size: .95rem }
.legal td, .legal th { border: 1px solid var(--line); padding: .5rem .7rem; text-align: left; vertical-align: top }
.legal th { background: var(--surface-2); font-weight: 600 }
.legal-indice { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: var(--s-2) }
.legal-indice a { display: flex; align-items: center; gap: .5rem; min-height: 52px; padding: .6rem .9rem; border: 1px solid var(--line); border-radius: var(--r); background: var(--paper); font-weight: 600 }
.legal-indice a:hover { border-color: var(--terra-soft); text-decoration: none }
.legal-aviso { font-size: var(--fs-sm); color: var(--ink-faint) }

@media print { .op-ayuda, .op-acciones, .fx-botones, .fx-msg { display: none !important } }

.op-fieldset { border: 0; padding: 0; margin: var(--s-3) 0 0 }
.op-fieldset legend { padding: 0; margin-bottom: .3rem; font: 600 1rem var(--font-body); color: var(--ink) }
.op-ancho { grid-column: 1 / -1 }
.op-widgets > div > .card { height: auto }
.eq-eventos .btn.sm, .eq-resolver .btn.sm { min-height: var(--tap) }
.op .btn { white-space: normal; text-align: center; line-height: 1.2 }
.op h2:has(> .i), .op h3:has(> .i) { display: flex; align-items: center; gap: .5rem }
.op h2 > .i { color: var(--terra-600); flex: 0 0 auto }
.op .badge { white-space: normal; max-width: 100% }
.op-fila h2 { min-width: 0; overflow-wrap: anywhere }
.eq-etq { display: block; font-size: .875rem; font-weight: 600; color: var(--ink-soft); margin: .8rem 0 .3rem }
.eq-sub-t { font-size: var(--fs-base); margin: var(--s-4) 0 .3rem }
@media (max-width: 720px) { table.eq-t td .badge, .eq-dl .badge { white-space: normal } }
.eq-fecha { display: block; font-variant-numeric: tabular-nums; margin-bottom: .2rem }
.aj-prog .aj-paso { box-shadow: none; background: var(--surface); padding: var(--s-4) }
.aj-prog .card-head b { font-family: var(--font-head) }
.aj-prog .card-head h2 .i { color: var(--ok) }
.aj-mas { margin-top: var(--s-4) } .aj-mas > summary { min-height: 44px; display: flex; align-items: center; gap: .35rem; flex-wrap: wrap; cursor: pointer }
.legal-privada { max-width: 900px }
.ia-usar { margin-top: 1rem; padding-top: .8rem; border-top: 1px solid var(--line) }
.eq-form .btn, .stickybar .btn { white-space: normal; text-align: center; line-height: 1.2 }
@media (max-width: 1024px) { .op-form .stickybar { padding-bottom: calc(.75rem + 10px) } }
.legal-pub .topbar .btn { min-height: var(--tap) }
.fx-franja { display: flex; gap: .4rem; align-items: center; flex-wrap: wrap }
.fx-franja input[type=time] { min-width: 100px; flex: 1 1 100px; max-width: 150px }
