/* WattPass · reglas propias de la aplicación Django, encima de tokens.css y wattpass.css */

/* Mensajes de Django (messages framework) */
.msgs{display:grid;gap:var(--space-2);margin-bottom:var(--space-4)}

/* Formularios renderizados por Django */
.field ul.errorlist,ul.errorlist{list-style:none;margin:0;padding:0;font-size:13px;line-height:18px;color:var(--danger)}
.field input[type="file"]{height:auto;padding:var(--space-2) var(--space-3);box-shadow:none}
.field .req{color:var(--danger)}
.field input[disabled],.field select[disabled]{background:var(--surface-sunken);color:var(--ink-muted)}
.checks{display:grid;gap:var(--space-2)}

/* Botones que son formularios (salir, acciones POST) */
form.inline{display:inline}
button.linklike{background:none;border:0;padding:0;font:inherit;color:var(--link);cursor:pointer}
button.linklike:hover{text-decoration:underline}
.nav form{display:contents}
.nav button.navlink{display:flex;align-items:center;gap:var(--space-2);height:32px;padding:0 var(--space-2);border:0;border-radius:var(--radius-sm);background:none;color:var(--on-sidebar);font:inherit;font-size:14px;font-weight:500;cursor:pointer;width:100%;text-align:left}
.nav button.navlink svg{width:16px;height:16px;color:var(--ink-muted)}
.nav button.navlink:hover{background:var(--surface-sunken)}

/* HTMX */
.htmx-indicator{opacity:0;transition:opacity .15s}
.htmx-request .htmx-indicator,.htmx-request.htmx-indicator{opacity:1}

/* Asistente de alta de modelo (1.2): dato con su unidad, datos a lo ancho, pasos con enlace, columna de ayuda y acciones */
.asistente .form>*,.asistente .two>*{min-width:0}
.asistente .two>.ancho{grid-column:1/-1}
.asistente .por-defecto{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}
.field .row.unidad{flex-wrap:nowrap}
.field .row.unidad input,.field .row.unidad select{flex:1;min-width:0;width:auto}
.field .row.unidad .small{white-space:nowrap}
.field .row.unidad select.unidad,.field .row.unidad input.corto{flex:none;width:96px}
.checks.columnas{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}
.stepper.pasos a{display:flex;gap:var(--space-2);align-items:center;color:inherit;text-decoration:none}
.stepper.pasos a:hover span:last-child{text-decoration:underline}
.ayuda-paso{display:grid;gap:var(--space-4)}
.ayuda-paso .heading{margin-bottom:var(--space-2)}
.ayuda-paso p{margin:0}
.por-bateria .heading{margin-bottom:var(--space-1)}
.por-bateria>.small{margin:0 0 var(--space-3)}
.acciones-paso{justify-content:space-between}
/* Los pendientes de la ficha (1.3) enlazan a un dato del asistente (#c-<clave>): que no quede bajo la cabecera fija de 56 px */
.asistente .field[id^="c-"]{scroll-margin-top:calc(56px + var(--space-4))}
/* 3.1: los diez textos de residuos se leen enteros (crecen con el texto donde el navegador lo admite; si no, las filas que
   calcula el formulario) y la casilla «revisado» tiene un objetivo táctil de 44 px */
.asistente textarea.texto-entero{field-sizing:content;min-height:calc(3lh + var(--space-4))}
.asistente .check.revisado{min-height:44px}
@media (max-width: 600px){
  .asistente .two{grid-template-columns:1fr}
  .stepper.pasos{gap:var(--space-2);padding:var(--space-3)}
  .stepper.pasos li:not(.now) span:not(.n){display:none}
  .field .row.unidad{flex-wrap:wrap}
  /* 5.1: el paso actual se recorta con puntos suspensivos en vez de desbordar la página */
  .stepper.pasos li.now{min-width:0}
  .stepper.pasos li.now>span:not(.n){overflow:hidden;text-overflow:ellipsis}
}

/* Ficha del modelo (1.3): aviso de lo que falta, pestañas por grupo que se desplazan en móvil, filas de grupo de la tabla, nota, materiales y documentos */
.ficha-completitud{margin-top:var(--space-3)}
.aviso-ficha{margin-bottom:var(--space-6)}
.tabs.grupos{overflow-x:auto;overflow-y:hidden;border-bottom:0;box-shadow:inset 0 -1px 0 var(--line)}
.tabs.grupos a{flex:none;white-space:nowrap;margin-bottom:0}
.tbl tbody tr.grupo td{background:var(--surface-sunken);padding:var(--space-2) var(--space-3)}
.tbl.datos-ficha td:nth-child(4){white-space:nowrap}
.nota-ficha{margin:var(--space-3) 0 0}
.ficha-seccion{display:grid;gap:var(--space-4);margin-top:var(--space-8)}
.ficha-seccion .heading+.small{margin:var(--space-1) 0 0}
.subida .two>*{min-width:0}
.subida .two>.ancho{grid-column:1/-1}
@media (max-width: 600px){
  .subida .two{grid-template-columns:1fr}
}

/* Alta e importación de unidades (2.2): modo del alta, filas y celdas con error de la revisión (el lienzo las tiñe con un
   style= en la fila), desplegable del mapeo y motivo que parte en el móvil */
.seg.alta-modo{margin-bottom:var(--space-4)}
.mono.url{overflow-wrap:anywhere}
.tbl tbody tr.con-error td{background:color-mix(in srgb,var(--danger) 6%,transparent)}
.tbl td.celda-error{color:var(--danger);font-weight:500;text-decoration:underline wavy;text-underline-offset:3px}
.tbl.revision th{white-space:normal}
.tbl.revision td{white-space:nowrap}
.tbl.revision td.resultado{min-width:200px;white-space:normal}
.tbl.revision td .small{overflow-wrap:anywhere}
.tbl.mapeo select{width:100%;min-width:200px;height:var(--control-h);padding:0 var(--space-2);border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface-raised);font-size:14px}
.tbl.mapeo td:first-child label,.tbl.mapeo td:nth-child(2){white-space:nowrap}
.tbl.mapeo .err{font-size:13px;line-height:18px;color:var(--danger);display:flex;gap:var(--space-1);align-items:center;margin-top:var(--space-1);white-space:normal}
.tbl.mapeo .err svg{width:14px;height:14px;flex:none}
.kpis.cuenta{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:0}
@media (max-width: 900px){
  /* la regla general del móvil pone las KPI en una columna con !important; el resumen las deja de dos en dos */
  .kpis.cuenta{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}
@media (max-width: 600px){
  .tbl.mapeo thead{display:none}
  .tbl.mapeo tr{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--space-1) var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--line)}
  .tbl.mapeo tbody tr:last-child{border-bottom:0}
  .tbl.mapeo td{display:block;padding:0;border:0;min-width:0;overflow:hidden;text-overflow:ellipsis}
  .tbl.mapeo td:nth-child(3){grid-column:1/-1}
  .tbl.mapeo select{min-width:0;height:var(--control-h-touch)}
}

/* Ficha de la unidad (2.3): la URL del QR con «Copiar» en la cabecera, el QR del lateral (168 px, el lienzo) y el de su
   pestaña, los pasos de «qué pasa al guardar» de la corrección y, en el móvil, los datos propios en una columna */
.url-copiar{display:flex;gap:var(--space-2);align-items:center;flex-wrap:wrap;margin:var(--space-2) 0 0}
.url-copiar .mono{min-width:0}
/* «Copiar» sale oculto y lo enseña copiar.js: sin JavaScript no queda un botón que no hace nada */
.url-copiar .btn[hidden]{display:none}
.qr-ficha{width:168px;margin:0 auto var(--space-3)}
.qr-grande{width:min(320px,100%);margin:0 auto var(--space-4)}
.qr-ficha svg,.qr-grande svg{display:block;width:100%;height:auto;border:1px solid var(--line)}
.pasos-correccion{margin:0;padding-left:var(--space-4);display:grid;gap:var(--space-2)}
.tbl.historial-unidad td:last-child{overflow-wrap:anywhere}
/* siete pestañas en la columna de 640 px a 1280: el hueco de 16 px las deja caber; en el móvil se desplazan (.grupos) */
.tabs.pestanas-unidad{gap:var(--space-4)}
.correccion h3{margin:0}
@media (max-width: 900px){
  /* la regla general del móvil pone las KPI en una columna con !important; la salud de la batería, de dos en dos */
  .kpis.salud-unidad{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}
@media (max-width: 600px){
  .url-copiar .btn{height:var(--control-h-touch)}
  .kv.datos-unidad{grid-template-columns:1fr;row-gap:var(--space-1)}
  .kv.datos-unidad dd{margin-bottom:var(--space-3)}
  .correccion .two{grid-template-columns:1fr}
  .correccion .field input,.correccion .field select,.correccion .actions .btn{height:var(--control-h-touch)}
  .tbl.historial-unidad tr{display:block;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--line)}
  .tbl.historial-unidad tbody tr:last-child{border-bottom:0}
  .tbl.historial-unidad td{display:block;padding:0;border:0}
  .tbl.historial-unidad td:first-child{margin-bottom:var(--space-1)}
}

/* Alta guiada (empresas/configuracion_inicial.html, tarea 0.7): sin barra lateral y sin scroll a 1280×720.
   Sustituye los style= del lienzo que no son rejillas y compacta su espaciado (dibujado a 1280×1100). */
.alta{min-height:100vh}
.alta .topbar>.small{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.alta .topbar button.ic{border:0;background:none;padding:0;cursor:pointer}
.alta .page{max-width:1120px;margin:0 auto;padding-block:var(--space-3)}
.alta .head{margin-bottom:var(--space-3)}
.alta .lead{max-width:none}
.alta .stepper{margin-bottom:var(--space-3);padding-block:var(--space-2)}
.alta form.card>.heading{margin-bottom:var(--space-1)}
.alta form.card>.small{margin:0 0 var(--space-4)}
.alta .form{gap:var(--space-3)}
.alta .check{align-items:flex-start}
.alta .check input{margin-top:2px}
.alta .actions{margin-top:var(--space-2)}
.alta .actions>.row{margin-left:auto}
.alta aside.card>.heading{margin-bottom:var(--space-2)}
.alta aside.card>.small{margin:var(--space-4) 0 0}
.alta aside .kv .mono{font-size:12px}
.alta .alert .mono{overflow-wrap:anywhere}
@media (max-width: 900px){
  .alta .topbar>.vsep,.alta .topbar>.small{display:none}
  .alta .topbar .btn.sm,.alta .topbar .ic{height:var(--control-h-touch);min-width:var(--control-h-touch)}
  .alta .page>.grid2>div{display:contents}
  .alta .page>.grid2>div>.msgs{order:-1;margin-bottom:0}
  .alta .actions,.alta .actions>.row{flex-direction:column;align-items:stretch}
  .alta .actions>.row{margin-left:0}
  .alta .actions .btn{height:var(--control-h-touch)}
  .alta .actions>.btn.quiet{align-self:flex-start}
  .alta .stepper{gap:var(--space-2);padding:var(--space-2) var(--space-3)}
  .alta .stepper li:not(.now)>span:not(.n){position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
  .alta .stepper li.now{min-width:0}
  .alta .stepper li.now>span:not(.n){overflow:hidden;text-overflow:ellipsis}
}

/* Marca (0.8): los logotipos del acceso van como bloque, sin el hueco de la línea base */
.brandpanel .word img,.auth .logo img{display:block}

/* Móvil: la barra lateral se pliega en un menú */
.topbar .menu{display:none}
@media (max-width: 900px){
  .shell{display:block}
  .sidebar{display:none;position:fixed;inset:0 auto 0 0;z-index:20;box-shadow:var(--shadow-md);height:100vh}
  .shell.menu-open .sidebar{display:flex}
  .topbar .menu{display:grid}
  .topbar .search{display:none}
  .page{padding:var(--space-4)}
  .kpis,.grid2,.grid3{grid-template-columns:1fr!important}
  .auth{grid-template-columns:1fr}
  .brandpanel{display:none}
  /* 0.8: sin el panel oscuro, el logotipo en color encima del formulario (el .logo del lienzo) */
  .auth .logo{display:block;margin-bottom:var(--space-6)}
}

/* 4.2 portal: portal del profesional y app de taller, móvil primero. La «.phone» de los lienzos TallerInicio,
   TallerRevision y PortalProfesional, fluida hasta 560 px, con la cabecera oscura y la nav inferior de 48 px. */
body:has(>.phone.portal){background:var(--surface-sunken)}
.phone.portal{width:auto;max-width:560px;height:auto;min-height:100vh;min-height:100dvh;margin:0 auto;overflow:visible}
.portal>header{background:#0f2a1f;color:#e7f1ec;border:0}
.portal>header a{color:inherit}
.portal>header .cab{justify-content:space-between;flex-wrap:nowrap}
.portal>header .marca{display:inline-flex;align-items:center;gap:var(--space-2);font-weight:600;text-decoration:none;min-height:44px}
.portal>header .marca .mark{background:#4ade80;color:#052e16;width:28px;height:28px}
.portal>header .marca .mark svg{width:16px;height:16px}
.portal>header .volver{display:inline-flex;align-items:center;gap:var(--space-1);font-size:13px;font-weight:500;text-decoration:none;min-height:44px}
.portal>header .volver svg{width:16px;height:16px}
.portal>header .enlace{color:#9fc7b3;font-size:13px;min-height:44px;display:inline-flex;align-items:center}
.portal>header .titulo{font-size:18px;line-height:24px;font-weight:600;margin:var(--space-1) 0 0;letter-spacing:-.01em;overflow-wrap:anywhere}
.portal>header .titulo .mono{font-size:15px}
.portal>header .org{margin:var(--space-1) 0 0;font-size:16px;line-height:24px;font-weight:600;overflow-wrap:anywhere}
.portal>header .sub{font-size:13px;line-height:18px;color:#9fc7b3;margin-top:var(--space-1)}
.portal>header .badge{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.25);color:#fff;white-space:normal;height:auto;min-height:22px;padding:2px 8px}
.portal>header .badge svg{width:12px;height:12px}
.portal>header .estado{margin-top:var(--space-2)}
.portal .body{flex:1 0 auto;align-content:start}
.portal .card .caption{margin-bottom:var(--space-2)}
.portal .cabecera{display:flex;justify-content:space-between;align-items:center;gap:var(--space-2);margin-bottom:var(--space-2)}
.portal .cabecera .caption{margin:0}
.portal .lista{display:grid;gap:var(--space-2)}
.portal .item{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3)}
.portal .item>div{min-width:0;overflow-wrap:anywhere}
.portal .item .nombre{font-weight:500}
.portal .kvm dd{overflow-wrap:anywhere}
.portal .kvm dd a{font-weight:500}
.portal .btn,.portal .btn.sm{height:var(--control-h-touch)}
.portal .btn.grande{height:56px;font-size:16px;width:100%}
.portal .btn.grande svg{width:20px;height:20px}
.portal .field input,.portal .field select{height:var(--control-h-touch)}
.portal .field input[type="checkbox"]{height:16px}
.portal .check{min-height:var(--control-h-touch)}
.portal .doble{display:grid;grid-template-columns:minmax(0,1fr) 112px;gap:var(--space-2);align-items:start}
.portal .doble>*{min-width:0}
.portal .kpis{grid-template-columns:1fr 1fr!important;gap:var(--space-2);margin:0}
.portal .kpi{padding:var(--space-3)}
.portal .kpi .v{font-size:20px;line-height:26px;overflow-wrap:anywhere}
.portal .centro{margin:0;text-align:center}
.portal .sin-margen,.portal .alert{margin:0}
.portal .card .pie-card{margin-top:var(--space-3)}
.portal .card .nota{margin:var(--space-3) 0 var(--space-2)}
.portal [hidden]{display:none!important}
.portal .apagado{background:var(--surface-sunken)}
.portal .buscador{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--space-2)}
.portal .buscador input{width:100%;height:var(--control-h-touch);padding:0 var(--space-3);border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface-raised);font-size:16px}
.portal nav.abajo{display:flex;justify-content:space-around;border-top:1px solid var(--line);background:var(--surface-raised);position:sticky;bottom:0;margin-top:auto}
.portal nav.abajo a,.portal nav.abajo button{display:inline-flex;align-items:center;min-height:48px;padding:0 var(--space-3);font:inherit;font-size:13px;color:var(--ink-muted);background:none;border:0;cursor:pointer;text-decoration:none}
.portal nav.abajo [aria-current="page"]{color:var(--brand);font-weight:600}
.portal nav.abajo form{display:contents}
.portal .camara{border:0;border-radius:var(--radius-lg);padding:0;width:min(92vw,420px);background:#000;color:#fff}
.portal .camara::backdrop{background:rgba(0,0,0,.6)}
.portal .camara video{display:block;width:100%;aspect-ratio:1;object-fit:cover}
.portal .camara .en-oscuro{color:#e7f1ec}
.portal .camara .pie{display:flex;justify-content:space-between;align-items:center;gap:var(--space-2);padding:var(--space-3);background:#0f2a1f}
@media (min-width:600px){.phone.portal{border-left:1px solid var(--line);border-right:1px solid var(--line)}}
/* Pantallas de entrada del portal y de entrar con código (layout .auth de allauth) */
.entrada-portal>h1{margin-bottom:var(--space-1)}
.entrada-portal>.intro{margin:0 0 var(--space-6)}
.entrada-portal>.nota{margin:var(--space-4) 0 0}
.entrada-portal>.nota+.nota{margin-top:var(--space-2)}
.entrada-portal>.botones{margin-top:var(--space-3)}

/* 5.3 tandas del registro (pantalla 30, lienzo RegistroTareas): los cuatro KPI de la lista en una fila (dos en el móvil)
   y los tres del detalle siempre en una; bloques apilados con su hueco (el detalle y las confirmaciones); la cabecera de
   una tarjeta con su acción; la nota bajo una tabla; los mensajes del registro de una batería, uno por línea; una cifra
   con error; la casilla de cada batería, que se pulsa en 44 × 44 px sin hacer la fila más alta; «qué hacer» y el estado
   de la tanda con anchura para leerse; el estado de la batería bajo su serie; un botón de texto largo que en el móvil
   parte en dos líneas; la confirmación del reenvío, a la que lleva un ancla, sin quedar bajo la cabecera fija de 56 px,
   los datos de la tanda más estrechos en el móvil y el aviso del estado solo para lectores de pantalla (.solo-lector) */
.kpis.tandas{grid-template-columns:repeat(4,minmax(0,1fr))}
.kpis.cifras-tanda{grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:0}
.apilada{display:grid;gap:var(--space-4)}
.apilada>.stepper{margin:0}
.card-cab{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-3);flex-wrap:wrap}
.card-cab>div{flex:1 1 320px;min-width:0}
.card>.card-cab:not(:last-child){margin-bottom:var(--space-3)}
.apilada>.card-cab,.card.apilada>.card-cab{margin-bottom:0}
.nota-tabla{margin:var(--space-3) 0 0}
.mensajes-registro{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-2);min-width:240px}
.mensajes-registro .small{display:block}
.cifra-err{color:var(--danger);font-weight:600}
.tbl td>.elegir{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;margin:-14px;cursor:pointer}
.tbl td.que-hacer{min-width:200px}
.tbl td.estado-tanda{min-width:180px}
.estado-ahora{margin-top:var(--space-1)}
.solo-lector{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.btn.largo{white-space:normal;height:auto;min-height:var(--control-h);padding-block:var(--space-2);text-align:center;line-height:1.3}
.card.apilada[id]{scroll-margin-top:calc(56px + var(--space-4))}
@media (max-width: 900px){
  .kpis.tandas{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .kpis.cifras-tanda{grid-template-columns:repeat(3,minmax(0,1fr))!important}
}
@media (max-width: 600px){
  .kv.datos-tanda{grid-template-columns:112px minmax(0,1fr)}
}

/* 4.3 propietario: la entrada con el código y la página del propietario (lienzo «Mandato») sobre la base móvil del portal
   (4.2), con la cabecera clara del lienzo; y la página de códigos de propietario del panel. */
.portal.propietario>header{background:var(--surface-raised);color:var(--ink);border-bottom:1px solid var(--line)}
.portal.propietario>header .titulo{font-size:22px;line-height:28px;letter-spacing:-.02em;margin-top:var(--space-3)}
.portal.propietario>header .sub{color:var(--ink-muted)}
.portal.propietario>header .badge{color:var(--brand);border-color:color-mix(in srgb,var(--brand) 35%,transparent);background:var(--brand-tint)}
.portal.propietario .kpis{grid-template-columns:repeat(3,minmax(0,1fr))!important}
.portal.propietario .card.destacada{border-color:var(--brand)}
.portal.propietario .autorizar{margin-top:var(--space-4);gap:var(--space-3)}
.portal.propietario .card.form{gap:var(--space-3)}
.portal.propietario .salir{display:grid;gap:var(--space-2)}
.codigos{display:grid;gap:var(--space-4)}
.codigos .cabecera{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3);flex-wrap:wrap;margin-bottom:var(--space-3)}
.codigos .desc{margin-bottom:var(--space-4)}
.codigos .nota{margin:var(--space-3) 0 0}
.codigos .alert{margin:0}

/* 3.6 información voluntaria: el formulario de un modelo (un grupo por dato, con su situación junto al nombre) y su
   tabla en la ficha, donde la situación no parte de línea, el valor y la metodología no se estrechan en el móvil y un
   enlace largo parte para que la tabla quepa a 1280 px. */
.voluntaria-grid{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}
.voluntaria .voluntario{display:grid;gap:var(--space-3);min-width:0}
.voluntaria .voluntario+.voluntario{border-top:1px solid var(--line);padding-top:var(--space-4)}
.tbl.datos-voluntaria td:nth-child(2){min-width:200px;overflow-wrap:anywhere}.tbl.datos-voluntaria td:nth-child(3){min-width:240px}
.tbl.datos-voluntaria td:last-child{white-space:nowrap}

/* 5.6 envío automático tras publicar: la tarjeta de la organización (aviso, confirmación y botones) y, en el panel, los
   avisos de la primera fila y la tabla de los últimos envíos automáticos. */
.card.automatico{scroll-margin-top:calc(56px + var(--space-4))}
.card.automatico>.alert{margin:0}
.card.automatico>.alert+*{margin-top:var(--space-3)}
.card.automatico .acciones{margin-top:var(--space-3)}
.card.automatico .nota{margin:var(--space-2) 0 0}
.envios-auto{margin-top:var(--space-4)}
.envios-auto>.heading{font-size:14px;margin-bottom:var(--space-2)}

/* 7.0 · la página del 404 (templates/404.html), sin barra lateral y en los dos hosts: el estado vacío, centrado, con el
   logotipo encima. */
.no-encontrada{min-height:100vh;display:grid;place-content:center;justify-items:center;gap:var(--space-6);padding:var(--space-8) var(--space-4);background:var(--surface)}
.no-encontrada .logo{display:block}
.no-encontrada .empty{max-width:480px}

/* 7.0 · la tarjeta «Plazos y caducidades» del panel: la fecha y los días no parten y «Pendiente de acto delegado» (D-60)
   sí. En el móvil cada plazo ocupa dos renglones (qué vence arriba; la fecha y los días debajo) para que nada quede
   cortado en la tarjeta. */
.tbl.plazos .fecha,.tbl.plazos .dias{white-space:nowrap}
.tbl.plazos .pendiente{white-space:normal}
@media (max-width: 600px){
  .tbl.plazos,.tbl.plazos tbody{display:block}
  .tbl.plazos tr{display:grid;grid-template-columns:1fr auto;align-items:center;border-bottom:1px solid var(--line)}
  .tbl.plazos tr:last-child{border-bottom:0}
  .tbl.plazos td{padding-left:var(--space-3);padding-right:var(--space-3);border-bottom:0}
  .tbl.plazos td:first-child{grid-column:1/-1;padding-bottom:var(--space-1)}
  .tbl.plazos td:not(:first-child){padding-top:0}
  .tbl.plazos .pendiente{grid-column:1/-1}
}

/* 7.0 · el nombre de la empresa sin enlace (base.html, para quien no es admin) no se pinta como si llevara a algún sitio. */
.org:not([href]):hover{background:none}
.org:not([href]){cursor:default}

/* 6.2 segunda vida: el asistente (pantalla 38, lienzo «Segunda vida»), su resumen y su último paso, la lista y la tarjeta
   de la ficha. Los campos de las tablas del asistente (baterías sin pasaporte y ensayo) se ven como los de .field; en el
   móvil la tabla se desplaza dentro de .tblwrap y los botones miden 44 px. */
.asistente-sv>.heading{margin-bottom:var(--space-1)}
.asistente-sv>.intro{margin:0 0 var(--space-4)}
.radios-sv{border:0;margin:0;padding:0;min-width:0}
.radios-sv legend{font-size:14px;line-height:20px;font-weight:500;padding:0;margin-bottom:6px}
.field>.etiqueta{font-size:14px;line-height:20px;font-weight:500}
.tbl.tabla-sv td{vertical-align:top}
.tbl.tabla-sv input{width:100%;min-width:120px;height:var(--control-h);padding:0 var(--space-3);border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface-raised);font-size:14px;box-shadow:var(--shadow-sm)}
.tbl.tabla-sv input[type="checkbox"]{min-width:0;width:16px;height:16px;padding:0;box-shadow:none}
.tbl.tabla-sv .err{font-size:13px;line-height:18px;color:var(--danger);margin-top:var(--space-1)}
.medida-sv{display:inline-flex;align-items:center;gap:var(--space-2);white-space:nowrap}
.tbl.tabla-sv .medida-sv input,.medida-sv input{width:80px;min-width:0}
.externas-sv{display:grid;gap:var(--space-3)}
.externa-sv{border:1px solid var(--line);border-radius:var(--radius-lg);padding:var(--space-3);margin:0;min-width:0;display:grid;gap:var(--space-3)}
.externa-sv .two{gap:var(--space-3)}
.kv.kv-lateral{grid-template-columns:110px minmax(0,1fr);font-size:13px}
.apilada-sv{display:grid;gap:var(--space-4);min-width:0}
.apilada-sv>.alert{margin:0}
.faltan-sv{margin:var(--space-1) 0 0;padding-left:var(--space-4)}
.apilada-sv>.alert p{margin:var(--space-2) 0 0}
.kv.kv-resumen-sv{grid-template-columns:200px minmax(0,1fr)}
.nota-sv{margin:var(--space-3) 0 0}
.acciones-sv>.small{margin:0 0 var(--space-2)}
.vinculo-sv .heading{margin-bottom:var(--space-2)}
.vinculo-sv>.small{margin:0}
.vinculo-sv>.nota-sv{margin-top:var(--space-3)}
.origenes-sv{list-style:none;margin:var(--space-2) 0 var(--space-3);padding:0;display:grid;gap:var(--space-2)}
.origenes-sv li{padding-bottom:var(--space-2);border-bottom:1px solid var(--line);min-width:0;overflow-wrap:anywhere}
.origenes-sv li:last-child{border-bottom:0;padding-bottom:0}
.fila-sv{display:flex;gap:var(--space-2);align-items:center;flex-wrap:wrap}
.criterio-sv{display:block}
.publicar-sv>.small{margin:var(--space-3) 0 0}
.lista-sv .heading{margin-bottom:var(--space-3)}
.lista-sv+.lista-sv{margin-top:var(--space-4)}
.descartar-sv{display:grid;gap:var(--space-4);max-width:720px}
.descartar-sv>.alert{margin:0}
@media (max-width: 600px){
  .kv.kv-resumen-sv{grid-template-columns:1fr;row-gap:var(--space-1)}
  .kv.kv-resumen-sv dd{margin-bottom:var(--space-2)}
  .radios-sv .check,.quitar-sv{min-height:var(--control-h-touch)}
  .asistente-sv .actions .btn,.acciones-sv .btn,.publicar-sv .btn,.descartar-sv .btn{height:var(--control-h-touch)}
}
