/* ═══════════════════════════════════════════════════════════════════════════
   COSMERIUM ERA III · NCRT-3
   print.css — MODO COPIA IMPRESA

   Última hoja de la cadena. Se carga siempre, sin `media="print"` en el
   <link>: dentro hay dos cosas distintas y sólo una es del medio impreso.

        tokens.css → reset.css → chrome.css → components.css → print.css

   QUÉ ES ESTO (DESIGN §3.6)
   No es «modo claro». Es la ficción de que has despegado el overlay y ves el
   documento oficial que hay debajo: papel térmico amarilleado, tinta índigo,
   sello de Night Corp, código de barras y marca de agua de registro.
   EL MISMO DATO, CONTADO POR EL PODER.

   DOS DISPARADORES, UN SOLO ASPECTO
   · `:root[data-medio="papel"]`  — el operador ha pulsado COPIA IMPRESA en la
     cabecera y está viendo el documento en pantalla. Lo resuelve tokens.css
     entero: cambia la paleta y apaga --fx-scan-alpha, --fx-grain-alpha,
     --fx-halo y --fx-vignette. Ni una regla de efecto se toca.
   · `@media print` — el papel de verdad. Aquí sí hay trabajo propio: mobiliario
     de imprenta, saltos de página, cabecera de tabla repetida y todo el chasis
     de terminal fuera.

   LA ÚNICA DUPLICACIÓN AUTORIZADA DEL PROYECTO
   El bloque de paleta de `@media print` repite los valores que tokens.css ya
   declara en `:root[data-medio="papel"]`. No hay forma en CSS de hacer que una
   media query active un selector de atributo, y este fichero tiene que
   funcionar sin una línea de JavaScript: si la impresión dependiera de un
   `beforeprint`, imprimir desde el menú del sistema con los scripts caídos
   sacaría cuarenta hojas negras. Los valores son idénticos a propósito y
   cambian JUNTOS. Si tocas uno, tocas el otro.

   VOZ
   El encabezado, la marca de agua y el pie son VOZ DEL SISTEMA: mono,
   mayúsculas, institucional. La voz de calle sigue existiendo en el papel, y
   está donde tiene que estar — en las notas del Oficial Verificador (`.ri`),
   que se imprimen en caja normal y a plena tinta. Las dos voces, en la misma
   hoja, como en la misma pantalla.
   ═══════════════════════════════════════════════════════════════════════════ */


/* ═══════════════════════════════════════════════════════════════════════════
   1 · LA HOJA

   A4 vertical. Márgenes anchos porque un impreso oficial respira por los
   bordes, y la primera página deja hueco arriba para el membrete.
   ═══════════════════════════════════════════════════════════════════════════ */

@page{
  size: A4 portrait;
  margin: 16mm 14mm 18mm;
}
@page :first{
  margin-top: 26mm;
}

/* Los expedientes muy anchos (el catálogo del Mercado Nocturno, la tabla de
   las 65 habilidades con las cuatro columnas de la fórmula) se imprimen
   apaisados poniendo `class="copia--apaisada"` en el <html>. */
@page apaisada{ size: A4 landscape; margin: 14mm }
.copia--apaisada{ page: apaisada }


/* ═══════════════════════════════════════════════════════════════════════════
   2 · MOBILIARIO DE IMPRENTA

   Estilado siempre, visible sólo en papel o en COPIA IMPRESA. Son clases de
   uso explícito: sólo aparecen en la plantilla del expediente imprimible, así
   que estilarlas fuera de la media query no ensucia nada y permite escribir
   las reglas UNA vez.

   CONTRATO DE MARCADO (bloque imprimible del expediente)
   <div class="copia" data-id="NC-RG-2077-0447-K">
     <i class="copia__marks" aria-hidden="true"></i>
     <div class="copia__wm" aria-hidden="true">NC-RG-2077-0447-K</div>
     <header class="copia__head">
       <span class="copia__org">NIGHT CORP · REGISTRO CIUDADANO · SECCIÓN III</span>
       <span class="copia__doc">EXPEDIENTE DE ALTA CIUDADANA</span>
       <span class="copia__id">NC-RG-2077-0447-K · COPIA 03</span>
     </header>
     … contenido …
     <footer class="copia__foot">
       <i class="copia__barcode" aria-hidden="true"></i>
       <span>EMITIDO 14.03.2077 · OFICIAL VERIFICADOR: SECCIÓN III</span>
       <i class="copia__stamp">NIGHT<br>CORP</i>
     </footer>
   </div>
   ═══════════════════════════════════════════════════════════════════════════ */

.copia{ position: relative }

.copia__head,
.copia__foot,
.copia__wm,
.copia__marks,
.copia__barcode,
.copia__stamp,
.print-only{ display: none }

/* ─── MEMBRETE ──────────────────────────────────────────────────────────── */

.copia__head{
  align-items: baseline;
  gap: var(--sp-3);
  padding-bottom: var(--sp-2);
  margin-bottom: var(--sp-5);
  border-bottom: var(--bw-3) solid var(--k-indigo);
  font-family: var(--ff-mono);
  font-size: 8pt;
  letter-spacing: var(--tr-wider);
  text-transform: uppercase;
  color: var(--k-indigo);
}
.copia__org{ font-weight: 600 }
.copia__doc{
  font-family: var(--ff-display);
  font-weight: 700;
  font-size: 16pt;
  letter-spacing: var(--tr-snug);
  text-transform: uppercase;
  color: var(--k-ink);
  flex: 1;
  text-align: center;
}
.copia__id{
  margin-left: auto;
  font-variant-numeric: tabular-nums;
}

/* ─── MARCA DE AGUA DE REGISTRO ─────────────────────────────────────────
   El número de expediente en diagonal, a tinta muy baja, FIJO: en impresión
   un elemento fijo se repinta en TODAS las hojas. Así ninguna página suelta
   de una copia deja de estar identificada, que es exactamente para lo que
   sirve una marca de agua de registro.
   El texto sale de `data-id`: es el mismo checksum que emite el backend, no
   una cadena escrita a mano en la plantilla. */
.copia__wm{
  position: fixed;
  inset: 0;
  z-index: 0;
  place-items: center;
  pointer-events: none;
  font-family: var(--ff-display);
  font-weight: 700;
  font-size: 64pt;
  letter-spacing: var(--tr-wider);
  white-space: nowrap;
  color: var(--k-indigo);
  opacity: .055;
  transform: rotate(-32deg);
  -webkit-print-color-adjust: exact;
          print-color-adjust: exact;
}

/* ─── MARCAS DE REGISTRO EN LAS CUATRO ESQUINAS ─────────────────────────
   Cruces de registro de imprenta. No son adorno: son la señal de que esto
   salió de una máquina y no de un navegador. Se dibujan con un solo SVG
   repetido en las cuatro esquinas por `background-position`. */
.copia__marks{
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg stroke='%231B2461' stroke-width='.75' fill='none'%3E%3Cpath d='M12 0v8M12 16v8M0 12h8M16 12h8'/%3E%3Ccircle cx='12' cy='12' r='5'/%3E%3C/g%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: left top, right top, left bottom, right bottom;
  background-size: 24px 24px;
  -webkit-print-color-adjust: exact;
          print-color-adjust: exact;
}

/* ─── PIE, CÓDIGO DE BARRAS Y SELLO ─────────────────────────────────────── */

.copia__foot{
  align-items: flex-end;
  gap: var(--sp-4);
  margin-top: var(--sp-6);
  padding-top: var(--sp-2);
  border-top: var(--bw-hair) solid var(--k-indigo);
  font-family: var(--ff-mono);
  font-size: 7.5pt;
  letter-spacing: var(--tr-wide);
  text-transform: uppercase;
  color: var(--k-indigo);
}

/* Código de barras: barras de anchura irregular a tinta plena. No codifica
   nada legible por un escáner y no pretende hacerlo — es el pie de un
   impreso, no un producto de supermercado. */
.copia__barcode{
  width: 48mm;
  height: 12mm;
  background-image: repeating-linear-gradient(90deg,
    var(--k-ink) 0 1px, transparent 1px 3px,
    var(--k-ink) 3px 5px, transparent 5px 6px,
    var(--k-ink) 6px 7px, transparent 7px 10px,
    var(--k-ink) 10px 13px, transparent 13px 14px);
  -webkit-print-color-adjust: exact;
          print-color-adjust: exact;
}

/* Sello de Night Corp: cuadro girado, doble filete, tinta índigo. */
.copia__stamp{
  margin-left: auto;
  place-items: center;
  width: 26mm; height: 26mm;
  padding: 2mm;
  border: 2px solid var(--k-indigo);
  outline: 1px solid var(--k-indigo);
  outline-offset: 2px;
  transform: rotate(-8deg);
  font-family: var(--ff-display);
  font-weight: 700;
  font-size: 11pt;
  line-height: 1.05;
  letter-spacing: var(--tr-wide);
  text-align: center;
  text-transform: uppercase;
  color: var(--k-indigo);
  font-style: normal;
  opacity: .78;
  -webkit-print-color-adjust: exact;
          print-color-adjust: exact;
}


/* ═══════════════════════════════════════════════════════════════════════════
   3 · VISTA PREVIA EN PANTALLA · `data-medio="papel"`

   El operador ha pulsado COPIA IMPRESA sin salir de la web. La paleta ya la
   ha cambiado tokens.css; aquí sólo se enciende el mobiliario de imprenta y
   se le da al lienzo el aire de una hoja.
   ═══════════════════════════════════════════════════════════════════════════ */

:root[data-medio="papel"] .copia__head,
:root[data-medio="papel"] .copia__foot{ display: flex }
:root[data-medio="papel"] .copia__wm,
:root[data-medio="papel"] .copia__stamp{ display: grid }
:root[data-medio="papel"] .copia__marks,
:root[data-medio="papel"] .copia__barcode{ display: block }
:root[data-medio="papel"] .print-only{ display: revert }
:root[data-medio="papel"] .screen-only{ display: none }

/* La hoja, en pantalla, es una hoja: fondo blanco, sombra de imprenta corta
   (tokens.css ya rebajó --sh-lift a 2px de tinta gris) y medida de página. */
:root[data-medio="papel"] .copia{
  max-width: 210mm;
  margin-inline: auto;
  padding: 16mm 14mm;
  background: #FFFFFF;
  box-shadow: var(--sh-lift);
}

/* En papel el texto es texto. Se quitan los tratamientos de fósforo que en
   tinta sólo ensucian: la aberración cromática, el halo y el grano ya están
   apagados por token, pero el `text-shadow` de los rótulos de OSD no. */
:root[data-medio="papel"] *{ text-shadow: none !important }

/* La redacción NO se levanta al imprimir. Lo clasificado sigue clasificado:
   se imprime la barra, tramada, con el rótulo al lado. Un expediente cuyo
   material reservado se desclasifica sólo con darle a imprimir no es un
   expediente, es un agujero. */
:root[data-medio="papel"] .redact::after{
  background-color: var(--k-indigo);
  background-image: repeating-linear-gradient(45deg,
    rgba(255,255,255,.22) 0 2px, transparent 2px 4px);
  border-bottom-color: var(--k-ink);
  -webkit-print-color-adjust: exact;
          print-color-adjust: exact;
}


/* ═══════════════════════════════════════════════════════════════════════════
   4 · PAPEL DE VERDAD · `@media print`
   ═══════════════════════════════════════════════════════════════════════════ */

@media print{

/* ─── 4.1 · PALETA ──────────────────────────────────────────────────────────
   MIRROR AUTORIZADO de tokens.css `:root[data-medio="papel"]`. Ver la nota
   de cabecera: los dos bloques cambian juntos, siempre.
   Las primitivas (--k-*) NO se tocan: se consumen tal cual. */

  :root{
    color-scheme: light;

    --bg:          var(--k-paper);
    --bg-deep:     var(--k-paper-2);
    --surface:     #FFFFFF;
    --surface-2:   var(--k-paper-2);
    --field:       #FFFFFF;
    --line:        var(--k-paper-3);
    --line-strong: #A9A294;
    --grid:        rgba(11,14,18,.06);
    --grid-major:  rgba(11,14,18,.12);
    --text:        var(--k-ink);
    --text-2:      #3A4048;
    /* 7,34 / 8,43 / 6,40:1 sobre --bg, --surface y --surface-2. El valor
       anterior (#6A7078) medía 3,79:1 sobre --surface-2: por debajo de AA. */
    --text-3:      #484E56;
    --text-off:    #A9A294;
    --accent:      #B00F24;
    /* En papel «brillante» es «más tinta»: ver la nota de tokens.css. */
    --accent-brt:  var(--k-red-deep);
    --accent-deep: #7A0817;
    --accent-ink:  #F7E6E8;
    --accent-on:   #FFFFFF;
    --accent-fill: var(--accent);
    --alert:       #514A00;
    --alert-ink:   #FBF6C8;
    --focus:       #514A00;
    --system:      #044B51;
    --ok:          #085139;
    --danger:      var(--k-red-deep);
    --danger-ink:  #F7E6E8;
    --warn:        #853400;
    --classif:     #7A0817;

    --fx-scan-alpha:  0;
    --fx-grain-alpha: 0;
    --fx-halo:        0;
    --fx-vignette:    0;

    /* Sobre papel una sombra negra profunda delata que esto es una pantalla.
       tokens.css las rebaja a marca de imprenta y aquí se copia igual. */
    --sh-sunk:  inset 0 1px 0 rgba(11,14,18,.10);
    --sh-lift:  0 2px 0 rgba(11,14,18,.18);
    --sh-modal: 0 6px 0 rgba(11,14,18,.22);
    --sh-hard:  4px 4px 0 rgba(11,14,18,.18);
  }

  /* FIN DEL MIRROR. Lo que sigue son ajustes que SÓLO tienen sentido en papel
     de verdad y que por eso no existen en la vista previa de pantalla: en un
     impreso la rejilla milimetrada es tóner tirado, la marca de imprenta que
     en pantalla simula relieve sale como una mancha gris, y el resplandor de
     acento no se puede imprimir de ninguna manera. */
  :root{
    --grid:        transparent;
    --grid-major:  transparent;
    --fx-noise-fps: 0;
    --sh-flat:  none;
    --sh-sunk:  none;
    --sh-lift:  none;
    --sh-modal: none;
    --sh-hard:  none;
    --glow-accent: none;
    --glow-alert:  none;
    --glow-system: none;
  }

  /* GESTO DE IMPRENTA (§3.4.5): sobre relleno amarillo, ÍNDIGO. Nunca negro.
     Es la diferencia entre un PDF y un impreso oficial, y es la única razón
     por la que la zona calle impresa se reconoce a un metro de distancia. */
  :root[data-zona="calle"]{
    --accent:    var(--k-amber);
    --accent-on: var(--k-indigo);
    --accent-brt: var(--k-amber-2);
    --accent-deep: var(--k-amber-3);
  }

  /* Los rellenos de acento, las bandas y los sellos TIENEN que salir: sin
     esto el navegador descarta los fondos y la cabecera de la tabla imprime
     texto blanco sobre blanco. */
  html{
    -webkit-print-color-adjust: exact;
            print-color-adjust: exact;
    background: #FFFFFF;
  }

/* ─── 4.2 · TIPOGRAFÍA DE PAPEL ─────────────────────────────────────────────
   La escala de pantalla está pensada para 96 dpi. En papel se mide en puntos
   y se aprieta: 10 pt de prosa con interlineado de 1,45 es una hoja oficial;
   17 px con 1,65 son tres páginas de más. El suelo de 11 px de §11.2 protege
   una PANTALLA; en papel el equivalente honesto es 7 pt. */

  body{
    background: #FFFFFF;
    color: var(--k-ink);
    font-size: 10pt;
    line-height: 1.45;
  }
  .dossier__b,
  .inject__body,
  .ri__b,
  p{ font-size: 10pt; line-height: 1.45 }

  h1,h2,h3{ break-after: avoid-page }

/* ─── 4.3 · FUERA EL CHASIS DE TERMINAL ─────────────────────────────────────
   En papel no hay raíl, ni barra de comandos, ni texturas, ni avisos, ni
   botones: un botón impreso es una mancha que no hace nada. */

  #texture,
  #gridbg,
  .rail,
  .appbar,
  .cmdbar,
  .skip,
  .osd-stack,
  .inject,
  .picker__pop,
  .audio-tgl,
  .term-tgl,
  .btn,
  .tag__x,
  .marker-layer,
  .marker__pin,
  .classif--bot,
  .screen-only,
  .mugshot__nosig{ display: none !important }

  /* La banda de clasificación SUPERIOR sí se imprime: en un documento oficial
     la clasificación no es cromo de interfaz, es parte del acta. Deja de ser
     una banda fija flotante y se convierte en el filete de cabecera. */
  .classif--top{
    position: static;
    height: auto;
    padding: 1mm 0;
    background: var(--classif);
    color: #FFFFFF;
    border: 0;
    -webkit-print-color-adjust: exact;
            print-color-adjust: exact;
  }

  /* El lienzo pierde los huecos que reservaba para cabecera, raíl y barra. */
  .stage,
  .stage--head,
  .stage--cmd{
    margin: 0;
    padding: 0;
    max-width: none;
    min-height: 0;
  }

  /* Todas las pantallas ocultas por el enrutador se imprimen: el papel no
     tiene navegación, tiene páginas. */
  .screen{ display: block !important; animation: none !important }

/* ─── 4.4 · MOBILIARIO ENCENDIDO ────────────────────────────────────────── */

  .copia__head,
  .copia__foot{ display: flex }
  .copia__wm,
  .copia__stamp{ display: grid }
  .copia__marks,
  .copia__barcode{ display: block }
  .print-only{ display: revert }

  /* La marca de agua y las marcas de registro van detrás de todo. */
  .copia > *:not(.copia__wm):not(.copia__marks){ position: relative; z-index: 1 }

/* ─── 4.5 · SALTOS DE PÁGINA ────────────────────────────────────────────────
   Lo que se parte mal en una hoja no se lee: un sello a caballo entre dos
   páginas deja de ser un sello. */

  .dossier,
  .seal,
  .seal-ring,
  .ri,
  .mugshot,
  .comb,
  .copia__foot,
  .reg-group,
  .reg-table tr{ break-inside: avoid }

  .copia__head{ break-after: avoid }
  .page-break{ break-before: page }

/* ─── 4.6 · TABLA `.reg-table` ──────────────────────────────────────────────
   LA CABECERA SE REPITE EN CADA PÁGINA. Es la diferencia entre una tabla
   impresa y una lista de números huérfanos: en la página 4 del catálogo de
   744 objetos hay que seguir sabiendo qué columna es el precio. Lo hace
   `display: table-header-group`, y por eso `thead` deja de ser pegajoso. */

  .reg-scroll{
    max-height: none;
    overflow: visible;
    -webkit-mask-image: none;
            mask-image: none;
  }
  .reg-table thead{ display: table-header-group }
  .reg-table tfoot{ display: table-footer-group }
  .reg-table thead th{
    position: static;
    background: var(--k-indigo);
    color: #FFFFFF;
    font-size: 8pt;
    -webkit-print-color-adjust: exact;
            print-color-adjust: exact;
  }
  /* La cabecera-fórmula conserva la aritmética, con los operadores apagados
     pero legibles: en tinta un 55% de blanco se pierde. */
  .reg-formula .op{ color: rgba(255,255,255,.72) }

  .reg-table tbody tr{ height: auto }
  .reg-table tbody td{
    padding: 1.2mm var(--sp-2);
    font-size: 9pt;
    border-bottom: .3pt solid var(--k-paper-3);
    border-left: 0;
  }
  /* La cebra de pantalla en papel sale como sombra sucia: se sustituye por
     un gris de trama muy claro, que es lo que hace un impreso de verdad. */
  .reg-table tbody tr:nth-child(odd)  > td{ background: #FFFFFF }
  .reg-table tbody tr:nth-child(even) > td{ background: #F1EFEA }
  .reg-table tbody tr:hover > td{ background: inherit; color: inherit }
  .reg-group th{
    position: static;
    background: #E4E0D6;
    font-size: 8.5pt;
  }
  .chip-stat{ background: var(--k-ink); color: #FFFFFF }
  .reg-table td.is-empty::after{ opacity: .28 }

/* ─── 4.7 · COMPONENTES EN TINTA ────────────────────────────────────────── */

  /* Tarjeta: sin superficies grises, con filete. La ménsula se queda: es la
     firma de la tarjeta y en papel se lee todavía mejor. */
  .dossier{ margin-bottom: 14px }
  .dossier::before{ background: #FFFFFF; border-color: var(--k-paper-3) }
  .dossier__h{ background: #FFFFFF; border-bottom: .6pt solid var(--k-indigo); color: var(--k-indigo) }
  .dossier__h::before{ transform: scaleX(1); background: var(--k-indigo) }
  .dossier__peel{ display: none }

  /* Pestañas: en papel no hay pestañas. Se imprimen TODOS los paneles, uno
     detrás de otro, y cada uno recupera su rótulo desde `data-title`. */
  .slots{ display: none }
  .slots__panel[hidden]{ display: block !important }
  .slots__panel::before{
    content: attr(data-title);
    display: block;
    margin-bottom: var(--sp-3);
    padding-bottom: 1mm;
    border-bottom: .6pt solid var(--k-indigo);
    font-family: var(--ff-display);
    font-weight: 700;
    font-size: 13pt;
    letter-spacing: var(--tr-snug);
    text-transform: uppercase;
    color: var(--k-ink);
  }

  /* Campos: el hueco de pantalla se convierte en la casilla rellena del
     impreso. Sombra fuera, filete inferior dentro. */
  .field__in,
  .picker__btn{
    height: auto;
    min-height: 8mm;
    background: #FFFFFF;
    box-shadow: none;
    border: .3pt solid var(--k-paper-3);
    border-bottom: .8pt solid var(--k-ink);
    clip-path: none;   /* el chaflán a 6px en tinta se ve como un defecto */
    font-size: 10pt;
  }
  .field:focus-within::before,
  .field:focus-within::after,
  .picker__btn::after{ display: none }
  .field__lbl{ color: var(--k-indigo); font-size: 7.5pt }
  .field__msg{ color: var(--k-ink) }

  /* Peines: cada ranura, un cuadro. Gastada, a tinta plena. Un peine impreso
     es una casilla de recuento de toda la vida, y se cuenta con el dedo. */
  .comb{ --seg: 3mm; --comb-h: 4mm; flex-wrap: wrap; row-gap: 1mm }
  .comb__seg{
    background: #FFFFFF;
    border: .4pt solid var(--k-ink);
    box-shadow: none;
  }
  .comb__seg:checked,
  .comb__seg.is-spent{ background: var(--k-ink); border-color: var(--k-ink) }
  .comb__tab{ background: var(--k-indigo); color: #FFFFFF }

  /* Chips: en tinta, filete y texto. El relleno al 8% desaparece al imprimir
     y dejaría un borde suelto sin motivo. */
  .tag{
    background: #FFFFFF;
    border-color: var(--k-ink);
    color: var(--k-ink);
    clip-path: none;
  }
  .tag-row > .tag:nth-child(n+5){ display: inline-flex }   /* en papel caben todos */

  /* Sellos: se imprimen con su color de estado y su leyenda. El sangrado del
     tinte no: en papel, la tinta que cala de verdad es la de la impresora. */
  .seal,
  .seal--stamp{ background: #FFFFFF; color: var(--k-ink) }
  .seal--stamp.is-hit{ animation: none; transform: rotate(-3deg) }
  .seal-ring.is-hit::before,
  .seal-ring:has(.is-hit)::before{ display: none }

  /* Retrato: escala de grises y tamaño de ficha. Las scanlines locales y la
     banda de tracking se van; el marco y las tres miras se quedan, porque
     son lo que hace que la foto parezca sacada de un archivo. */
  .mugshot__frame{
    width: 34mm;
    border-color: var(--k-ink);
    clip-path: none;
    filter: grayscale(1) contrast(1.08);
  }
  .mugshot__frame::after,
  .mugshot__frame::before{ display: none }
  .mugshot__cbr{ opacity: 1; border-color: var(--k-ink) }
  .mugshot--empty .mugshot__frame{
    background-image: repeating-linear-gradient(45deg,
      var(--k-paper-3) 0 1px, transparent 1px 5px);
    filter: none;
  }

  /* Notas del Verificador — LA VOZ DE CALLE EN EL PAPEL. Se imprimen enteras,
     en caja normal y a plena tinta, con la barra de 6px reducida a filete
     grueso. Es la única parte del impreso escrita por una persona, y tiene
     que notarse. */
  .ri{
    border-left-width: 3pt;
    border-left-color: var(--k-ink);
    background: #FFFFFF;
    padding: 3mm 4mm;
  }
  .ri__h{ color: var(--k-ink) }
  .ri__b{ font-size: 10.5pt; line-height: 1.5 }

  /* LO CLASIFICADO SIGUE CLASIFICADO. Igual que en la vista previa: la barra
     se imprime tramada. Imprimir no es un nivel de acceso. */
  .redact{ color: transparent !important }
  .redact::after{
    clip-path: inset(0) !important;
    opacity: 1 !important;
    background-color: var(--k-indigo);
    background-image: repeating-linear-gradient(45deg,
      rgba(255,255,255,.22) 0 2px, transparent 2px 4px);
    border-bottom-color: var(--k-ink);
  }
  .redact-label{ color: var(--k-ink) }

/* ─── 4.8 · ENLACES ─────────────────────────────────────────────────────────
   Un enlace impreso sin destino es tinta gastada. Se anota la dirección
   detrás, en mono, y con la ficción intacta: lo que se imprime es la
   dirección NETdir, que es como se llaman aquí las direcciones. */

  a[href^="http"]::after,
  a[href^="//"]::after{
    content: ' ‹' attr(href) '›';
    font-family: var(--ff-mono);
    font-size: 7.5pt;
    letter-spacing: 0;
    color: var(--k-indigo);
    word-break: break-all;
  }
  /* Los anclas internas y los `mailto:` no se anotan: dentro del propio
     documento la referencia ya está impresa dos centímetros más abajo. */
  a[href^="#"]::after,
  a[href^="mailto:"]::after{ content: '' }
  a{ color: var(--k-ink); text-decoration: underline }

/* ─── 4.9 · SIN MOVIMIENTO ──────────────────────────────────────────────────
   Nada anima en papel. Y sobre todo: nada se queda en su estado INICIAL. Un
   `row-stagger` sin resolver imprime una tabla al 0% de opacidad, es decir,
   imprime una tabla en blanco. */

  *,
  *::before,
  *::after{
    animation: none !important;
    transition: none !important;
    opacity: 1;
    transform: none;
    filter: none;
  }
  /* Excepciones deliberadas: el sello va girado, la marca de agua va en
     diagonal y a tinta baja, el cuño de Night Corp va torcido. Sin esto, el
     impreso pierde justo lo que lo hace parecer un impreso. */
  .copia__wm{ opacity: .055; transform: rotate(-32deg) }
  .copia__stamp{ opacity: .78; transform: rotate(-8deg) }
  .seal--stamp.is-hit{ transform: rotate(-3deg) }
  .mugshot__frame{ filter: grayscale(1) contrast(1.08) }
  .redact::after{ opacity: 1 }

}
