/* ==========================================================================
   GoDeca — hoja de estilo.
   Dirección de arte: sobria y distinguida. Azul noche (autoridad, confianza), latón (el sello
   de un documento oficial) y papel cálido. Titulares en serif (EB Garamond), texto en Inter.
   Todo por variables: ningún color suelto en los componentes. Sin CDN (fuentes en /assets/fuentes).
   ========================================================================== */

@font-face { font-family: 'Inter'; font-style: normal; font-weight: 100 900; font-display: swap; src: url(fuentes/inter.woff2) format('woff2'); }
@font-face { font-family: 'EB Garamond'; font-style: normal; font-weight: 400 800; font-display: swap; src: url(fuentes/garamond.woff2) format('woff2'); }

:root {
  --noche: #0F172A;
  --noche-2: #172036;
  --noche-3: #223052;
  --laton: #C9A24B;
  --laton-claro: #E3C77F;
  --laton-osc: #86661C;          /* latón sobre fondo claro: contraste 4.9:1 */
  --papel: #F6F3EC;
  --papel-2: #EFEADF;
  --tarjeta: #FFFFFF;
  --linea: #E6E0D2;
  --linea-2: #D8D0BE;
  --tinta: #14181F;
  --tenue: #5B6472;
  --ok: #1F7A4C;   --ok-fondo: #E6F4EC;
  --err: #B42318;  --err-fondo: #FDECEA;
  --aviso: #8E5200; --aviso-fondo: #FDF3DC;
  --info: #1F4E8C; --info-fondo: #E7EFFA;
  --r-s: 6px; --r-m: 10px; --r-l: 16px;
  --sombra: 0 1px 2px rgba(15,23,42,.05), 0 4px 16px rgba(15,23,42,.05);
  --sombra-l: 0 10px 40px rgba(15,23,42,.18);
  --serif: 'EB Garamond', Georgia, 'Times New Roman', serif;
  --sans: 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
  --h-ctl: 40px;
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; font: 400 14px/1.5 var(--sans); color: var(--tinta); background: var(--papel); font-feature-settings: 'cv11', 'tnum'; }
a { color: var(--noche-3); text-decoration-color: var(--linea-2); text-underline-offset: 3px; }
a:hover { color: var(--noche); text-decoration-color: var(--laton); }
h1, h2, h3 { font-family: var(--serif); font-weight: 600; letter-spacing: .005em; color: var(--noche); margin: 0 0 .4em; }
h1 { font-size: 32px; line-height: 1.15; }
h2 { font-size: 24px; }
h3 { font-size: 19px; }
.small { font-size: 12.5px; }
.muted { color: var(--tenue); }
.nowrap { white-space: nowrap; }
.num, td.num, th.num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.ml-auto { margin-left: auto; }
.mt-xs { margin-top: .25rem; } .mt-s { margin-top: .5rem; } .mt-m { margin-top: 1rem; } .mt-l { margin-top: 1.5rem; }
.mx-460 { max-width: 460px; } .mx-520 { max-width: 520px; }
:focus-visible { outline: 2px solid var(--laton); outline-offset: 2px; border-radius: 4px; }
[hidden] { display: none !important; }

/* ------------------------------------------------------------ estructura */
.app { display: grid; grid-template-columns: 252px minmax(0, 1fr); min-height: 100vh; }
.lateral {
  background: linear-gradient(180deg, var(--noche) 0%, #0B1222 100%); color: #C5CCDB;
  display: flex; flex-direction: column; padding: 22px 14px 16px; position: sticky; top: 0; height: 100vh; overflow-y: auto;
}
.lateral .marca { display: flex; align-items: center; gap: 12px; text-decoration: none; padding: 0 8px 22px; color: #fff; }
.lateral .marca svg { flex: none; }
.lateral .marca b { font: 600 25px/1 var(--serif); letter-spacing: .01em; color: #fff; }
.lateral .marca b i { font-style: normal; color: var(--laton); }
.lateral .marca span { display: block; font: 500 10.5px/1.2 var(--sans); letter-spacing: .14em; text-transform: uppercase; color: #8C97B0; margin-top: 3px; }
.lateral ul { list-style: none; margin: 0; padding: 0; flex: 1; }
.lateral li { margin: 1px 0; }
.lateral li.sep { height: 1px; background: #26314D; margin: 12px 10px; }
.lateral li.rotulo { font: 600 10.5px/1 var(--sans); letter-spacing: .14em; text-transform: uppercase; color: #6D7894; padding: 14px 12px 6px; }
.lateral a { display: flex; align-items: center; gap: 11px; min-height: 40px; padding: 0 12px; border-radius: var(--r-m); color: #C5CCDB; text-decoration: none; position: relative; transition: background .15s, color .15s; }
.lateral a:hover { background: #1A2440; color: #fff; }
.lateral a.act { background: #1C2745; color: #fff; }
.lateral a.act::before { content: ''; position: absolute; left: -14px; top: 9px; bottom: 9px; width: 3px; border-radius: 0 3px 3px 0; background: var(--laton); }
.lateral a.act .ico { color: var(--laton); }
.lateral .pie { border-top: 1px solid #26314D; padding: 14px 8px 0; font-size: 12.5px; color: #8C97B0; }
.lateral .pie .yo { display: block; color: #E6EAF4; font-weight: 600; margin-bottom: 6px; }
.lateral .pie a { display: inline; min-height: 0; padding: 0; color: #B8C1D6; text-decoration: underline; text-decoration-color: #3B4766; }
.lateral .pie form { display: inline; }
.lateral .pie button { background: none; border: 0; color: #B8C1D6; cursor: pointer; padding: 0; font: inherit; text-decoration: underline; text-decoration-color: #3B4766; }
.ico { flex: none; vertical-align: -3px; }
main { padding: 30px 40px 60px; min-width: 0; max-width: 1360px; width: 100%; }
.barra { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin: 0 0 18px; }
.barra h1 { margin: 0; }
.subtitulo { color: var(--tenue); margin: -2px 0 18px; max-width: 70ch; }
.rejilla { display: grid; gap: 18px; margin-bottom: 18px; }
.rejilla.c2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.rejilla.c3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.panel { background: var(--tarjeta); border: 1px solid var(--linea); border-radius: var(--r-l); padding: 22px 24px; margin-bottom: 18px; box-shadow: var(--sombra); }
.panel > h3 { padding-bottom: 10px; margin-bottom: 14px; border-bottom: 1px solid var(--linea); }
.panel.p0 { padding: 0; overflow: hidden; }
.panel.oscuro { background: var(--noche); color: #E6EAF4; border-color: var(--noche); }
.panel.oscuro h3 { color: #fff; border-color: #2B3756; }
.panel.laton { border-top: 3px solid var(--laton); }

/* ------------------------------------------------------------ avisos */
.aviso { display: flex; gap: 12px; align-items: flex-start; padding: 12px 16px; border-radius: var(--r-m); margin: 0 0 14px; border: 1px solid; font-size: 13.5px; }
.aviso .ico { margin-top: 2px; }
.aviso.ok { background: var(--ok-fondo); border-color: #B9DEC8; color: #14532D; }
.aviso.err { background: var(--err-fondo); border-color: #F3BDB7; color: #8C1A11; }
.aviso.aviso, .aviso.warn { background: var(--aviso-fondo); border-color: #EBD08E; color: #6E3F00; }
.aviso.info { background: var(--info-fondo); border-color: #BCD3F0; color: #173D6E; }
a.aviso { text-decoration: none; cursor: pointer; }
a.aviso:hover { filter: brightness(.97); }

/* ------------------------------------------------------------ botones y formularios */
.b, button.b {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: var(--h-ctl); padding: 0 16px;
  border-radius: var(--r-m); border: 1px solid var(--linea-2); background: var(--tarjeta); color: var(--noche);
  font: 600 13.5px/1 var(--sans); text-decoration: none; cursor: pointer; transition: background .15s, border-color .15s, transform .05s;
}
.b:hover { background: var(--papel-2); border-color: #C9BFA6; color: var(--noche); }
.b:active { transform: translateY(1px); }
.b.pri { background: var(--noche); border-color: var(--noche); color: #fff; }
.b.pri:hover { background: var(--noche-3); border-color: var(--noche-3); color: #fff; }
.b.acento { background: var(--laton); border-color: var(--laton); color: var(--noche); }
.b.acento:hover { background: var(--laton-claro); border-color: var(--laton-claro); color: var(--noche); }
.b.malo { background: var(--err); border-color: var(--err); color: #fff; }
.b.malo:hover { background: #8C1A11; }
.b.chico { min-height: 30px; padding: 0 11px; font-size: 12.5px; border-radius: var(--r-s); }
.b:disabled, .b[aria-disabled="true"] { opacity: .45; cursor: not-allowed; }
.campo { margin: 0 0 14px; }
.campo label { display: block; font-size: 12.5px; font-weight: 600; color: var(--noche-3); margin-bottom: 5px; letter-spacing: .01em; }
.campo small { display: block; color: var(--tenue); font-size: 12px; margin-top: 4px; }
input[type=text], input[type=password], input[type=email], input[type=number], input[type=date], input[type=search], input[type=tel], select, textarea {
  width: 100%; min-height: var(--h-ctl); padding: 0 12px; border: 1px solid var(--linea-2); border-radius: var(--r-m); background: #fff; color: var(--tinta);
  font: 400 14px/1.3 var(--sans); transition: border-color .15s, box-shadow .15s;
}
textarea { padding: 10px 12px; min-height: 84px; resize: vertical; }
input:hover, select:hover, textarea:hover { border-color: #C0B597; }
input:focus, select:focus, textarea:focus { outline: none; border-color: var(--laton); box-shadow: 0 0 0 3px rgba(201,162,75,.28); }
input[type=checkbox], input[type=radio] { width: 17px; height: 17px; accent-color: var(--noche); vertical-align: -3px; margin-right: 6px; }
.clave { -webkit-text-security: disc; }
.campos { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 18px; }
.campos .ancho { grid-column: 1 / -1; }
fieldset { border: 1px solid var(--linea); border-radius: var(--r-l); padding: 16px 20px 6px; margin: 0 0 18px; background: var(--tarjeta); }
legend { font: 600 11.5px/1 var(--sans); letter-spacing: .12em; text-transform: uppercase; color: var(--laton-osc); padding: 0 8px; }
.acciones { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin-top: 8px; }
.filtros { display: flex; flex-wrap: wrap; gap: 10px; align-items: end; margin: 0 0 16px; }
.filtros .campo { margin: 0; min-width: 160px; }
.filtros input[type=search] { min-width: 240px; }
.sw { display: inline-flex; gap: 8px; align-items: center; font-weight: 500; cursor: pointer; }
.sw-fila { display: flex; gap: 18px; flex-wrap: wrap; }

/* ------------------------------------------------------------ tablas */
.tabla-caja { overflow-x: auto; border-radius: var(--r-l); }
.tabla-caja.panel { padding: 0; }
table.datos { width: 100%; border-collapse: collapse; font-size: 13.5px; }
table.datos th { text-align: left; padding: 11px 14px; font: 600 11px/1.2 var(--sans); letter-spacing: .1em; text-transform: uppercase; color: var(--tenue); background: #FBF9F4; border-bottom: 1px solid var(--linea); white-space: nowrap; }
table.datos td { padding: 12px 14px; border-bottom: 1px solid #EFEADF; vertical-align: top; }
table.datos tbody tr:last-child td { border-bottom: 0; }
table.datos tbody tr:hover td { background: #FBF9F4; }
table.datos tr[data-href] { cursor: pointer; }
table.datos td.acc { text-align: right; white-space: nowrap; }
table.datos td .sub { display: block; color: var(--tenue); font-size: 12px; margin-top: 1px; }
table.datos tfoot td { font-weight: 600; background: #FBF9F4; }
.vacio { padding: 36px 20px; text-align: center; color: var(--tenue); }
.vacio b { display: block; font: 600 20px var(--serif); color: var(--noche); margin-bottom: 4px; }

/* ------------------------------------------------------------ etiquetas de estado */
.et { display: inline-block; padding: 2px 10px; border-radius: 99px; font-size: 11.5px; font-weight: 600; background: #ECE7DA; color: #4A4333; white-space: nowrap; letter-spacing: .01em; }
.et.ok, .et.validado { background: var(--ok-fondo); color: #14532D; }
.et.err, .et.anulada { background: var(--err-fondo); color: #8C1A11; }
.et.warn { background: var(--aviso-fondo); color: #6E3F00; }
.et.info { background: var(--info-fondo); color: #173D6E; }
.et.laton { background: #F4E9C9; color: #6B4F0F; }
.et.oscuro { background: var(--noche); color: var(--laton-claro); }

/* ------------------------------------------------------------ panel de control */
.kpis { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 14px; margin-bottom: 18px; }
.kpi { background: var(--tarjeta); border: 1px solid var(--linea); border-radius: var(--r-l); padding: 16px 18px; box-shadow: var(--sombra); position: relative; }
.kpi b { display: block; font: 600 34px/1.05 var(--serif); color: var(--noche); font-variant-numeric: lining-nums tabular-nums; }
.kpi span { display: block; color: var(--tenue); font-size: 12.5px; margin-top: 4px; }
.kpi.alerta b { color: var(--err); }
.kpi.alerta::after { content: ''; position: absolute; left: 0; top: 14px; bottom: 14px; width: 3px; background: var(--err); border-radius: 0 3px 3px 0; }
.pasos { counter-reset: p; list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 14px; }
.pasos li { counter-increment: p; position: relative; padding: 4px 0 0 46px; }
.pasos li::before { content: counter(p); position: absolute; left: 0; top: 0; width: 34px; height: 34px; border-radius: 50%; background: var(--noche); color: var(--laton); display: grid; place-items: center; font: 600 18px var(--serif); }
.pasos b { display: block; margin-bottom: 2px; }
.pasos span { color: var(--tenue); font-size: 13px; }
.datos-kv { display: grid; grid-template-columns: 150px 1fr; gap: 6px 14px; margin: 0; }
.datos-kv dt { color: var(--tenue); font-size: 12.5px; }
.datos-kv dd { margin: 0; font-weight: 500; }
.url { background: var(--papel-2); border: 1px solid var(--linea); border-radius: var(--r-m); padding: 9px 12px; font: 500 12.5px/1.4 ui-monospace, Consolas, monospace; overflow-wrap: anywhere; margin: 6px 0 10px; }
.qr svg { width: 168px; height: 168px; border: 1px solid var(--linea); border-radius: var(--r-m); padding: 6px; background: #fff; }
.secreto { font: 600 15px ui-monospace, Consolas, monospace; letter-spacing: .14em; background: var(--papel-2); padding: 10px 12px; border-radius: var(--r-m); overflow-wrap: anywhere; }
.codigo-2fa { font: 600 24px ui-monospace, Consolas, monospace; letter-spacing: .4em; text-align: center; }
.paginas { display: flex; gap: 6px; margin-top: 14px; flex-wrap: wrap; }

/* ------------------------------------------------------------ acceso */
body.limpio { background: var(--noche); }
.acceso { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); min-height: 100vh; }
.acceso-marca { position: relative; padding: 56px 64px; color: #E6EAF4; display: flex; flex-direction: column; justify-content: space-between; overflow: hidden;
  background: radial-gradient(1200px 600px at 10% -10%, #223052 0%, transparent 60%), linear-gradient(160deg, #0F172A 0%, #0B1222 100%); }
.acceso-marca::after { content: ''; position: absolute; right: -120px; bottom: -120px; width: 460px; height: 460px; border-radius: 50%; border: 1px solid rgba(201,162,75,.35); box-shadow: 0 0 0 40px rgba(201,162,75,.06), 0 0 0 90px rgba(201,162,75,.04); }
.acceso-marca .logo { display: flex; align-items: center; gap: 14px; }
.acceso-marca .logo b { font: 600 32px var(--serif); color: #fff; }
.acceso-marca .logo b i { color: var(--laton); font-style: normal; }
.acceso-marca h2 { font: 500 44px/1.1 var(--serif); color: #fff; max-width: 15ch; margin: 0 0 18px; }
.acceso-marca h2 em { color: var(--laton); font-style: italic; }
.acceso-marca p { max-width: 46ch; color: #AEB8CF; font-size: 15px; }
.acceso-marca ul { list-style: none; padding: 0; margin: 26px 0 0; display: grid; gap: 10px; color: #C5CCDB; position: relative; z-index: 1; }
.acceso-marca li { display: flex; gap: 10px; align-items: center; }
.acceso-marca li .ico { color: var(--laton); }
.acceso-marca .legal { font-size: 12px; color: #7C88A4; position: relative; z-index: 1; }
.acceso-form { background: var(--papel); display: grid; place-items: center; padding: 40px 28px; }
.caja-acceso { width: 100%; max-width: 400px; }
.caja-acceso h1 { font-size: 34px; margin-bottom: 6px; }
.caja-acceso .marca { margin-bottom: 18px; }
.caja-acceso .marca span { display: block; color: var(--tenue); }
.caja-acceso .b.pri { width: 100%; min-height: 46px; font-size: 15px; margin-top: 6px; }
.caja-acceso .pie { margin-top: 22px; color: var(--tenue); font-size: 12.5px; text-align: center; }
.caja-acceso.solo, body.limpio > .caja-acceso { background: var(--tarjeta); padding: 34px; border-radius: var(--r-l); box-shadow: var(--sombra-l); margin: 8vh auto; }
body.limpio > .caja-acceso .marca { display: flex; align-items: center; gap: 14px; }
.bloqueo { display: flex; gap: 10px; align-items: center; font-size: 12.5px; color: var(--tenue); margin-top: 14px; }

/* ------------------------------------------------------------ diálogos */
.dlg-fondo { position: fixed; inset: 0; background: rgba(15,23,42,.55); display: grid; place-items: center; z-index: 100; padding: 20px; }
.dlg { background: #fff; border-radius: var(--r-l); padding: 24px 26px; max-width: 440px; width: 100%; box-shadow: var(--sombra-l); }
.dlg p { margin: 0 0 18px; font-size: 15px; white-space: pre-line; }
.dlg-pie { display: flex; justify-content: flex-end; gap: 10px; margin-top: 8px; }
dialog.dlg-alta { border: 0; border-radius: var(--r-l); padding: 26px 28px; width: min(560px, calc(100vw - 28px)); box-shadow: var(--sombra-l); background: #fff; color: var(--tinta); }
dialog.dlg-alta::backdrop { background: rgba(15,23,42,.55); }
dialog.dlg-alta h3 { margin-bottom: 4px; }
dialog.dlg-alta .alta-error { margin-top: 10px; }
.dlg-cargando { padding: 24px; text-align: center; color: var(--tenue); }

/* ------------------------------------------------------------ copia del conductor y página pública */
body.publica { background: var(--papel); }
.publica main { max-width: 520px; margin: 0 auto; padding: 18px 16px 40px; }
.publica .tarjeta { background: #fff; border: 1px solid var(--linea); border-radius: var(--r-l); padding: 20px; margin-bottom: 14px; box-shadow: var(--sombra); }
.publica .cab { background: var(--noche); color: #fff; border-radius: var(--r-l); padding: 20px; margin-bottom: 14px; }
.publica .cab h1 { color: #fff; margin: 0; font-size: 26px; }
.publica .cab h1 i { color: var(--laton); font-style: normal; }
.publica .cab small { color: #AEB8CF; }
.publica .qr-grande { text-align: center; }
.publica .qr-grande svg { width: min(74vw, 330px); height: auto; border-radius: var(--r-m); border: 1px solid var(--linea); }
.publica .b { width: 100%; min-height: 50px; margin-top: 10px; font-size: 15px; }
.publica dt { color: var(--tenue); font-size: 12px; margin-top: 10px; }
.publica dd { margin: 0; font-weight: 600; }

/* ------------------------------------------------------------ responsive */
.solo-movil-li { display: none; }
@media (max-width: 1080px) { .acceso { grid-template-columns: 1fr; } .acceso-marca { display: none; } .rejilla.c3 { grid-template-columns: 1fr 1fr; } }
@media (max-width: 860px) {
  .app { grid-template-columns: 1fr; }
  .lateral { position: static; height: auto; flex-direction: row; flex-wrap: wrap; align-items: center; padding: 10px 12px; gap: 6px; }
  .lateral .marca { padding: 0 8px 0 0; } .lateral .marca span { display: none; }
  .lateral ul { display: flex; flex-wrap: wrap; flex: 1 1 100%; gap: 2px; order: 3; }
  .lateral li.sep, .lateral li.rotulo { display: none; }
  .lateral a.act::before { display: none; }
  .lateral .pie { display: none; }
  .solo-movil-li { display: list-item; }
  main { padding: 18px 14px 50px; }
  .rejilla.c2, .rejilla.c3, .campos { grid-template-columns: 1fr; }
  h1 { font-size: 27px; }
  table.datos.apila thead { display: none; }
  table.datos.apila tr { display: block; padding: 10px 14px; border-bottom: 1px solid var(--linea); }
  table.datos.apila td { display: flex; justify-content: space-between; gap: 14px; border: 0; padding: 4px 0; text-align: right; }
  table.datos.apila td::before { content: attr(data-t); color: var(--tenue); font-size: 12px; text-align: left; }
}
@media (pointer: coarse) {
  :root { --h-ctl: 46px; }
  input, select, textarea { font-size: 16px !important; }
  .b.chico { min-height: 40px; }
  .lateral a { min-height: 44px; }
}
@media (prefers-reduced-motion: reduce) { * { transition: none !important; animation: none !important; } }
@media print {
  .lateral, .no-imprimir, .barra .b { display: none !important; }
  .app { display: block; } main { padding: 0; max-width: none; }
  body { background: #fff; } .panel { box-shadow: none; border-color: #ccc; }
}

.en-linea { display: inline; }
.crece { flex: 1; min-width: 220px; }
.panel.oscuro .pasos span { color: #AEB8CF; }
.panel.oscuro { color: #E6EAF4; }
.panel.oscuro .pasos li::before { background: transparent; border: 1px solid var(--laton); }
table.datos td.acc { white-space: nowrap; }
table.datos th, table.datos td { padding-left: 12px; padding-right: 12px; }

.pad-14 { padding: 0 14px 12px; }

/* ------------------------------------------------------------ envío del DeCA (WhatsApp, correo, Drive) */
.envio { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 16px 22px; align-items: start; }
.envio-bloque { display: flex; flex-direction: column; gap: 8px; margin: 0; padding: 14px 16px; border: 1px solid var(--linea); border-radius: var(--r-m); background: var(--papel); }
.envio-bloque .en-linea { display: flex; gap: 8px; }
.envio-bloque .en-linea input { flex: 1; min-width: 0; }
.envio-bloque .b { align-self: flex-start; }
.b.wa { background: #157A3E; border-color: #157A3E; color: #fff; }
.b.wa:hover { background: #0F6130; border-color: #0F6130; color: #fff; }
fieldset.laton-fs { border-top: 3px solid var(--laton); background: #FFFDF6; }
.pasos-txt { margin: 0 0 14px; padding-left: 20px; display: grid; gap: 6px; }

/* ------------------------------------------------------------ repaso de alineación (6-oct) */
main { margin-inline: auto; }                                     /* el contenido se centra en el espacio útil, no se pega a la izquierda */
.grupo { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin-left: auto; }
.grupo form { margin: 0; display: flex; }
.barra > .b, .barra > form, .barra .grupo > * { align-self: center; }
.kpis { grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); }
.kpi { min-height: 92px; display: flex; flex-direction: column; justify-content: center; }
.filtros .campo { min-width: 150px; }
.filtros .sw { min-height: var(--h-ctl); align-items: center; }
.datos-kv { align-items: baseline; }
.datos-kv dt { padding-top: 0; }

table.datos th { white-space: normal; letter-spacing: .07em; vertical-align: bottom; line-height: 1.25; }
table.datos th.nw, table.datos td.nw { white-space: nowrap; }
table.datos th.ancha { min-width: 190px; }
table.datos td { padding-top: 11px; padding-bottom: 11px; }
table.datos th:first-child, table.datos td:first-child { padding-left: 16px; }
table.datos th:last-child, table.datos td:last-child { padding-right: 16px; }
table.datos input[type=checkbox] { margin: 0; vertical-align: middle; }
td.acc { text-align: right; }
.acc-grupo { display: inline-flex; gap: 6px; align-items: center; justify-content: flex-end; }
.acc-grupo form { margin: 0; display: inline-flex; }
.acc-grupo .b.chico { min-width: 30px; }

.envio { grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: stretch; }
.envio-bloque { gap: 10px; }
.envio-bloque h4 { margin: 0; font: 600 11px/1 var(--sans); letter-spacing: .12em; text-transform: uppercase; color: var(--laton-osc); }
.envio-bloque .en-linea { flex-direction: column; }
.envio-bloque .b { align-self: stretch; }
.envio-bloque small { margin-top: auto; }
@media (max-width: 1180px) { .envio { grid-template-columns: 1fr; } }

.panel > h3:last-child { margin-bottom: 0; }
.rejilla > .panel { margin-bottom: 0; }
.nw { white-space: nowrap; }

/* ------------------------------------------------------------ espaciado entre botones (todas las pantallas) */
.acciones { gap: 12px; margin-top: 16px; }
.panel form + form, .panel .acciones + form, .panel form + .acciones, .panel .b + form, .panel form + .b { margin-top: 12px; }
fieldset + .acciones { margin-top: 4px; }
.barra { gap: 12px; }
.menu-btn { display: none; }
.txt-m { display: none; }
.menu-btn .im-c { display: none; }
body.menu-abierto .menu-btn .im-a { display: none; }
body.menu-abierto .menu-btn .im-c { display: inline; }

/* ------------------------------------------------------------ MÓVIL (≤ 860 px): cajón de menú, objetivos de 44 px y sin desbordes */
@media (max-width: 860px) {
  html, body { overflow-x: hidden; }
  .lateral { position: sticky; top: 0; z-index: 60; height: auto; flex-direction: row; flex-wrap: wrap; align-items: center; justify-content: space-between;
             padding: 8px 14px; gap: 0; border-bottom: 1px solid #26314D; }
  .lateral .marca { padding: 0; }
  .lateral .marca b { font-size: 22px; }
  .menu-btn { display: inline-flex; align-items: center; justify-content: center; width: 46px; height: 46px; border-radius: var(--r-m); border: 1px solid #2B3756; background: transparent; color: #fff; cursor: pointer; }
  .menu-btn:hover { background: #1A2440; }
  .lateral ul, .lateral .pie { display: none; flex: 1 1 100%; }
  body.menu-abierto { overflow: hidden; }
  body.menu-abierto .lateral { position: fixed; inset: 0; height: 100dvh; overflow-y: auto; align-content: flex-start; padding-bottom: 28px; }
  body.menu-abierto .lateral ul { display: block; order: 3; margin-top: 8px; }
  body.menu-abierto .lateral li.rotulo { display: block; padding-top: 18px; }
  body.menu-abierto .lateral li.sep { display: block; }
  body.menu-abierto .lateral .pie { display: block; order: 4; margin-top: 16px; padding-top: 16px; font-size: 14px; }
  body.menu-abierto .lateral .pie a, body.menu-abierto .lateral .pie button { min-height: 44px; display: inline-flex; align-items: center; }
  .lateral a { min-height: 48px; }
  .lateral a.act::before { display: block; left: -14px; }

  main { padding: 16px 14px 56px; }
  h1 { font-size: 25px; }
  .subtitulo { margin-bottom: 14px; }
  .barra { gap: 10px; }
  .barra > .b, .barra .grupo { flex: 1 1 auto; }
  .barra > form { flex: 1 1 0; min-width: 140px; }
  .barra > form > .b { width: 100%; }
  .barra .grupo { margin-left: 0; width: 100%; }
  .barra .grupo > .b, .barra .grupo > form, .barra .grupo > form > .b { flex: 1 1 100%; width: 100%; }
  .barra .ml-auto { margin-left: 0; }
  .barra > form.ml-auto, .barra > a.ml-auto { width: 100%; }
  .barra > form.ml-auto .b { width: 100%; }

  .b, button.b { min-height: 46px; padding: 0 18px; }
  .b.chico { min-height: 44px; min-width: 44px; padding: 0 14px; }
  .panel > form > .b:only-child, .panel > form > button.b:last-child { width: 100%; }
  .acciones { flex-direction: column; align-items: stretch; gap: 12px; }
  .acciones .b, .acciones form, .acciones form .b { width: 100%; }
  input, select, textarea { font-size: 16px; min-height: 46px; }
  input[type=checkbox], input[type=radio] { width: 22px; height: 22px; }
  .sw { min-height: 44px; }

  .filtros { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; align-items: end; }
  .filtros .campo { min-width: 0; }
  .filtros .campo:has(input[type=search]) { grid-column: 1 / -1; }
  .filtros .sw { grid-column: auto; }
  .barra > .muted.small { flex: 1 1 100%; }
  .filtros input[type=search] { min-width: 0; }

  .panel { padding: 18px 16px; border-radius: var(--r-m); }
  fieldset { padding: 14px 14px 4px; }
  .kpis { grid-template-columns: 1fr 1fr; gap: 10px; }
  .kpi { padding: 14px; min-height: 84px; }
  .kpi b { font-size: 26px; }
  .datos-kv { grid-template-columns: 118px minmax(0, 1fr); }
  .rejilla { gap: 14px; }
  .envio { grid-template-columns: 1fr; }
  .qr svg { width: 100%; max-width: 240px; height: auto; }

  /* tablas: cada fila se convierte en una ficha */
  .tabla-caja { border-radius: var(--r-m); }
  table.datos.apila tr { padding: 12px 14px; }
  table.datos.apila tr { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); column-gap: 14px; }
  table.datos.apila td { grid-column: 1 / -1; }
  table.datos.apila td:is(.num, [data-t="Estado"], [data-t="DeCA"], [data-t="Fecha"], [data-t="Vence"], [data-t="Cobro"], [data-t="Veri*Factu"], [data-t="Versión"],
      [data-t="Envíos"], [data-t="Matrícula"], [data-t="Accesos"], [data-t="NIF"], [data-t="Enlace"], [data-t="Tamaño"], [data-t="Cifrada"]) { grid-column: auto; }
  table.datos.apila td { display: block; text-align: left; padding: 6px 0; }
  table.datos.apila td::before { display: block; margin-bottom: 3px; font: 600 10.5px/1 var(--sans); letter-spacing: .08em; text-transform: uppercase; }
  table.datos.apila td.num { text-align: left; }
  table.datos.apila td:not([data-t])::before { display: none; }
  table.datos.apila td:has(> input[type=checkbox]) { position: absolute; top: 10px; right: 12px; padding: 0; }
  table.datos.apila td:first-child, table.datos.apila td:last-child { padding-left: 0; padding-right: 0; }
  table.datos.apila td.acc { display: block; text-align: left; padding-top: 10px; }
  table.datos.apila td.acc::before { display: none; }
  table.datos.apila td.acc .acc-grupo { display: flex; flex-wrap: wrap; justify-content: flex-start; gap: 10px; width: 100%; }
  table.datos.apila td.acc .acc-grupo > a.b, table.datos.apila td.acc .acc-grupo > form:not(:has(.pri)) { flex: 1 1 calc(50% - 5px); }
  table.datos.apila td.acc .acc-grupo > form:has(.pri) { flex: 1 1 100%; }
  table.datos.apila td.acc .b { width: 100%; }
  .txt-m { display: inline; }
  table.datos.apila td input[type=checkbox] { width: 24px; height: 24px; }
  table.datos:not(.apila) { min-width: 560px; }

  dialog.dlg-alta { padding: 20px 16px; width: calc(100vw - 20px); }
  .dlg { padding: 20px 18px; }
  .dlg-pie { flex-direction: column-reverse; }
  .dlg-pie .b { width: 100%; }
  .caja-acceso.solo, body.limpio > .caja-acceso { margin: 4vh 12px; padding: 24px 18px; }
}
@media (max-width: 400px) {
  .kpis { grid-template-columns: 1fr 1fr; }
  h1 { font-size: 23px; }
}

/* ------------------------------------------------------------ tablas: filas uniformes y centradas (6-oct, 2.ª pasada) */
table.datos td { vertical-align: middle; }
table.datos td .sub { display: block; margin-top: 2px; }
table.datos td.acc { width: 1%; white-space: nowrap; }
.acc-grupo .b.pri { min-width: 98px; }
.acc-grupo .b.chico { height: 32px; }
table.datos tbody tr { height: 64px; }
table.datos td form { margin: 0; display: inline-flex; }
@media (max-width: 860px) { table.datos tbody tr { height: auto; } }
.filtros .checks { display: flex; gap: 18px; align-items: center; min-height: var(--h-ctl); white-space: nowrap; }
.acc-grupo .b.pri { min-width: 112px; }
.filtros .campo { min-width: 130px; }
.filtros input[type=search] { min-width: 200px; }
@media (max-width: 860px) { .filtros .checks { grid-column: 1 / -1; justify-content: space-between; } }
table.datos th, table.datos td { padding-left: 10px; padding-right: 10px; }
table.datos th.ancha { min-width: 160px; }
table.datos th.media { min-width: 140px; }
.acc-grupo .b.pri { min-width: 98px; }
@media (max-width: 860px) { table.datos th, table.datos td { padding-left: 0; padding-right: 0; } }
@media (min-width: 861px) { table.datos.compacta td .sub { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 135px; } }
@media (min-width: 861px) and (max-width: 1500px) { .app { grid-template-columns: 224px minmax(0, 1fr); } main { padding: 26px 26px 56px; } .lateral { padding-left: 10px; padding-right: 10px; } }
.acc-grupo .b.pri { min-width: 92px; }

/* logo en Parámetros */
.logo-fila { display: flex; flex-wrap: wrap; gap: 20px; align-items: flex-start; }
.logo-vista { flex: 0 0 280px; min-height: 120px; display: grid; place-items: center; padding: 14px; border: 1px dashed var(--linea-2); border-radius: var(--r-m); background: #fff; }
.logo-vista img { max-width: 100%; max-height: 110px; }
.logo-acciones { flex: 1 1 260px; display: grid; gap: 12px; }
input[type=file] { width: 100%; padding: 8px 10px; border: 1px solid var(--linea-2); border-radius: var(--r-m); background: #fff; font: 400 13.5px var(--sans); }
@media (max-width: 860px) { .logo-vista { flex-basis: 100%; } }
.clave.ver { -webkit-text-security: none; }
.total-vivo { min-height: var(--h-ctl); display: flex; align-items: center; font: 600 22px var(--serif); color: var(--noche); gap: 6px; }

/* nueva factura: líneas extra y total estimado */
.linea-extra { display: grid; grid-template-columns: minmax(0, 1fr) 84px 128px 118px 112px 40px; gap: 0 10px; align-items: end; padding-bottom: 4px; }
.linea-extra + .linea-extra { border-top: 1px dashed var(--linea); padding-top: 12px; }
.linea-extra .campo { margin-bottom: 10px; }
.importe-vivo { min-height: var(--h-ctl); display: flex; align-items: center; justify-content: flex-end; gap: 4px; font: 600 15px var(--sans); font-variant-numeric: tabular-nums; }
.quita-linea { margin-bottom: 10px; min-height: var(--h-ctl); width: 40px; padding: 0; }
.resumen-fac { display: flex; flex-wrap: wrap; gap: 8px 36px; align-items: baseline; justify-content: flex-end; }
.resumen-fac div { display: flex; flex-direction: column; align-items: flex-end; }
.resumen-fac b { font: 600 22px var(--serif); color: var(--noche); font-variant-numeric: tabular-nums; }
@media (max-width: 860px) {
  .linea-extra { grid-template-columns: 1fr 1fr; }
  .linea-extra .campo:first-child { grid-column: 1 / -1; }
  .linea-extra .quita-linea { grid-column: 1 / -1; width: 100%; margin-bottom: 14px; }
  .resumen-fac { justify-content: space-between; }
  .resumen-fac div { align-items: flex-start; }
}
