/* ══════════════════════════════════════════════════════════════════════════
   Factor 18 — sistema visual único del sitio
   Fuente de verdad: manual de identidad, secciones 01–11.
   Archivo Expanded (titulares) · Inter (texto) · JetBrains Mono (datos)
   Azul Factor 18 #3275b4 como único acento de interfaz.
   Este archivo lo usan las nueve páginas: index, blog, proyectos, legal y
   los cuatro artículos. Cualquier cambio de marca se hace aquí y solo aquí.
   ══════════════════════════════════════════════════════════════════════════ */
/* Fuentes del sistema tipográfico del manual (SIL OFL 1.1), servidas localmente. */
@font-face{font-family:"Archivo";font-style:normal;font-weight:400;font-display:swap;src:url("../fonts/archivo-400.woff2") format("woff2")}
@font-face{font-family:"Archivo";font-style:normal;font-weight:500;font-display:swap;src:url("../fonts/archivo-500.woff2") format("woff2")}
@font-face{font-family:"Archivo";font-style:normal;font-weight:600;font-display:swap;src:url("../fonts/archivo-600.woff2") format("woff2")}
@font-face{font-family:"Archivo";font-style:normal;font-weight:700;font-display:swap;src:url("../fonts/archivo-700.woff2") format("woff2")}
@font-face{font-family:"Archivo Expanded";font-style:normal;font-weight:600;font-display:swap;src:url("../fonts/archivo-exp-600.woff2") format("woff2")}
@font-face{font-family:"Archivo Expanded";font-style:normal;font-weight:700;font-display:swap;src:url("../fonts/archivo-exp-700.woff2") format("woff2")}
@font-face{font-family:"Inter";font-style:normal;font-weight:400;font-display:swap;src:url("../fonts/inter-400.woff2") format("woff2")}
@font-face{font-family:"Inter";font-style:normal;font-weight:500;font-display:swap;src:url("../fonts/inter-500.woff2") format("woff2")}
@font-face{font-family:"Inter";font-style:normal;font-weight:600;font-display:swap;src:url("../fonts/inter-600.woff2") format("woff2")}
@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:400;font-display:swap;src:url("../fonts/jbmono-400.woff2") format("woff2")}
@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:500;font-display:swap;src:url("../fonts/jbmono-500.woff2") format("woff2")}
@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:700;font-display:swap;src:url("../fonts/jbmono-700.woff2") format("woff2")}

/* ═══════════════════════════════════════════════════════════════════════
   TOKENS — Manual de identidad Factor 18 (espejo de tokens/tokens.css)
   Todo valor hexadecimal de este archivo vive en este bloque y en el
   bloque de tema oscuro inmediato. En el resto del CSS, cada color es
   var(--…) o un color-mix() de esas variables.
   ═══════════════════════════════════════════════════════════════════════ */
:root{
  /* marca */
  --blanco:#ffffff;
  --azul:#3275b4;--azul-50:#f1f8ff;--azul-100:#e0eefb;--azul-200:#cbddf1;--azul-300:#adc7e3;
  --azul-400:#74a0cc;--azul-500:#3275b4;--azul-600:#2b6093;--azul-700:#234c74;--azul-800:#1c3b59;--azul-900:#152c42;
  /* neutros */
  --neutro-25:#f8f9f9;--neutro-100:#e9f0f3;--neutro-200:#d6dcdf;--neutro-300:#bcbec0;--neutro-400:#8f9396;
  --neutro-500:#707579;--neutro-600:#565f65;--neutro-700:#40464b;--neutro-800:#242b31;--neutro-900:#0a131a;
  --ink:#0a131a;--hueso:#f6f9fc;--niebla:#e9f0f3;--papel:#f3f8fa;
  /* ternas de estado — claro */
  --exito:#1c8742;--exito-bg:#e2f6e5;--exito-borde:#b4e6bd;--exito-txt:#006229;--exito-tinte:#84d195;
  --aviso:#c37f00;--aviso-bg:#ffeedb;--aviso-borde:#f9d2a1;--aviso-txt:#7e4f00;--aviso-tinte:#f5bb70;
  --alerta:#c53829;--alerta-bg:#ffebe7;--alerta-borde:#ffc7be;--alerta-txt:#972216;--alerta-tinte:#ffa191;
  /* ternas de estado — valores para fondo oscuro */
  --exito-bg-osc:#0f2a19;--exito-borde-osc:#1c8742;--exito-txt-osc:#84d195;
  --aviso-bg-osc:#2c2008;--aviso-borde-osc:#c37f00;--aviso-txt-osc:#f5bb70;
  --alerta-bg-osc:#2e1210;--alerta-borde-osc:#c53829;--alerta-txt-osc:#ffa191;
  /* divisiones — parada 500 compartida, sólo cambia el tono */
  --div-sistemas:#3275b4;--div-sistemas-bg:#dfefff;--div-sistemas-txt:#134f83;--div-sistemas-claro:#8bc3fc;
  --div-nomina:#7961ae;--div-nomina-bg:#eee9ff;--div-nomina-txt:#543e7f;--div-nomina-claro:#c4b0f7;
  --div-limpieza:#008284;--div-limpieza-bg:#d7f4f3;--div-limpieza-txt:#00595a;--div-limpieza-claro:#65d2d3;
  /* divisiones — fondos para tema oscuro */
  --div-sistemas-bg-osc:#14293d;--div-nomina-bg-osc:#221c33;--div-limpieza-bg-osc:#0d2a2b;
  /* roles claros */
  --bg:var(--papel);--sup:var(--blanco);--sup-2:var(--niebla);--fg:var(--ink);
  --muted:var(--neutro-600);--borde:var(--neutro-200);--foco:var(--azul);--acento:var(--azul);
  --tinte:var(--azul);--tinte-bg:var(--azul-50);--tinte-txt:var(--azul-700);
  /* tinta sobre oscuro */
  --tinta-sup:#141d24;--tinta-borde:var(--neutro-800);--tinta-txt:var(--neutro-300);--tinta-fuerte:var(--hueso);
  /* tipografía */
  --f-display:"Archivo Expanded","Archivo",system-ui,sans-serif;
  --f-body:"Inter",system-ui,-apple-system,"Segoe UI",sans-serif;
  --f-mono:"JetBrains Mono",ui-monospace,"SF Mono",Menlo,monospace;
  --t-display-2xl:clamp(38px,5.6vw,70px);--t-display-xl:clamp(30px,4.2vw,48px);
  --t-display-l:clamp(23px,2.9vw,32px);--t-display-m:clamp(20px,2.1vw,25px);
  --t-h3:19px;--t-h4:16px;--t-lead:19px;--t-body:16px;--t-body-s:15px;--t-small:14px;
  --t-caption:13px;--t-micro:12px;--t-label:11px;--t-data:13px;
  /* espacio en base 4 */
  --sp-4:4px;--sp-8:8px;--sp-12:12px;--sp-16:16px;--sp-20:20px;--sp-24:24px;--sp-32:32px;--sp-40:40px;
  --sp-48:48px;--sp-64:64px;--sp-80:80px;--sp-96:96px;--sp-128:128px;
  /* radios y retícula */
  --r-xs:4px;--r-sm:6px;--r-md:10px;--r-lg:16px;--r-xl:24px;--r-full:999px;
  --wrap:1200px;--medida:72ch;
  /* elevación en dos capas: una corta y nítida, una larga y difusa */
  --e1:0 1px 2px color-mix(in oklab,var(--ink) 7%,transparent),0 1px 1px color-mix(in oklab,var(--ink) 5%,transparent);
  --e2:0 2px 4px color-mix(in oklab,var(--ink) 7%,transparent),0 4px 10px color-mix(in oklab,var(--ink) 5%,transparent);
  --e3:0 4px 8px color-mix(in oklab,var(--ink) 8%,transparent),0 12px 24px color-mix(in oklab,var(--ink) 7%,transparent);
  /* movimiento — una sola curva para toda la marca */
  --ease:cubic-bezier(.22,.61,.36,1);--dur-fast:120ms;--dur:200ms;--dur-slow:320ms;
}

/* Tema oscuro: se reinterpretan los mismos nombres, nunca su significado. */
[data-theme="oscuro"]{
  --bg:var(--neutro-900);--sup:var(--tinta-sup);--sup-2:var(--neutro-800);--fg:var(--hueso);
  --muted:var(--neutro-300);--borde:var(--neutro-800);--foco:var(--azul-300);--acento:var(--azul-400);
  --tinte:var(--azul-400);--tinte-bg:var(--div-sistemas-bg-osc);--tinte-txt:var(--azul-300);
  --exito-bg:var(--exito-bg-osc);--exito-borde:var(--exito-borde-osc);--exito-txt:var(--exito-txt-osc);
  --aviso-bg:var(--aviso-bg-osc);--aviso-borde:var(--aviso-borde-osc);--aviso-txt:var(--aviso-txt-osc);
  --alerta-bg:var(--alerta-bg-osc);--alerta-borde:var(--alerta-borde-osc);--alerta-txt:var(--alerta-txt-osc);
  --div-sistemas:var(--div-sistemas-claro);--div-sistemas-bg:var(--div-sistemas-bg-osc);--div-sistemas-txt:var(--div-sistemas-claro);
  --div-nomina:var(--div-nomina-claro);--div-nomina-bg:var(--div-nomina-bg-osc);--div-nomina-txt:var(--div-nomina-claro);
  --div-limpieza:var(--div-limpieza-claro);--div-limpieza-bg:var(--div-limpieza-bg-osc);--div-limpieza-txt:var(--div-limpieza-claro);
}

/* ═══════════════════════════════════ BASE ═══════════════════════════════ */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:88px}
body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--f-body);
  font-size:var(--t-body);line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img,svg{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button{font:inherit;cursor:pointer;border:none;background:none;color:inherit}
ul,ol{margin:0;padding:0;list-style:none}
p,li,dd,dt,figcaption,td,th,small,label{text-wrap:pretty}
p{margin:0}
h1,h2,h3,h4{margin:0;text-wrap:balance}
:focus-visible{outline:2px solid var(--foco);outline-offset:2px;border-radius:var(--r-sm)}
.wrap{max-width:var(--wrap);margin-inline:auto;padding-inline:var(--sp-32)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}

/* ═══════════════════════════════ TIPOGRAFÍA ═════════════════════════════ */
.h1{font-family:var(--f-display);font-size:var(--t-display-2xl);font-weight:700;line-height:1.02;letter-spacing:-.030em}
.h2{font-family:var(--f-display);font-size:var(--t-display-xl);font-weight:600;line-height:1.06;letter-spacing:-.026em}
.h3{font-family:var(--f-display);font-size:var(--t-display-l);font-weight:600;line-height:1.12;letter-spacing:-.020em}
.h4{font-family:var(--f-display);font-size:var(--t-display-m);font-weight:600;line-height:1.2;letter-spacing:-.014em}
.sub{font-size:var(--t-h3);font-weight:600;line-height:1.35;letter-spacing:-.008em}
.mini{font-size:var(--t-h4);font-weight:600;line-height:1.4;letter-spacing:-.005em}
.lead{font-size:var(--t-lead);line-height:1.55;color:var(--muted);max-width:var(--medida)}
.body-s{font-size:var(--t-body-s);line-height:1.58;color:var(--muted)}
.caption{font-size:var(--t-caption);line-height:1.45;color:var(--muted);font-weight:500}
.dato{font-family:var(--f-mono);font-size:var(--t-data);font-weight:500;letter-spacing:.01em;font-variant-numeric:tabular-nums}
.etq{display:block;font-family:var(--f-mono);font-size:var(--t-label);font-weight:500;line-height:1.2;
  letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.kicker{display:block;font-family:var(--f-mono);font-size:var(--t-label);font-weight:500;line-height:1.2;
  letter-spacing:.08em;text-transform:uppercase;color:var(--tinte-txt);margin-bottom:var(--sp-16)}

/* ═════════════════════════════════ BARRA SUPERIOR ══════════════════════ */
.barra{position:sticky;top:0;z-index:60;background:color-mix(in oklab,var(--bg) 93%,transparent);
  backdrop-filter:blur(12px);border-bottom:1px solid var(--borde)}
.barra-in{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-24);height:68px}
.marca{display:flex;align-items:center;gap:var(--sp-12);flex-shrink:0}
.marca img{height:23px;width:auto}
.marca-txt{font-family:var(--f-display);font-weight:700;font-size:18px;letter-spacing:-.01em;line-height:1}
.marca-txt small{display:block;font-family:var(--f-mono);font-size:9px;font-weight:500;letter-spacing:.1em;
  text-transform:uppercase;color:var(--muted);margin-top:5px}
.marca-clara{display:block}.marca-oscura{display:none}
[data-theme="oscuro"] .marca-clara{display:none}
[data-theme="oscuro"] .marca-oscura{display:block}
.nav-links{display:flex;align-items:center;gap:var(--sp-20)}
.nav-links a:not(.btn){font-size:var(--t-small);color:var(--muted);transition:color var(--dur) var(--ease)}
.nav-links a:not(.btn):hover{color:var(--fg)}
.nav-links a:not(.btn)[aria-current="true"]{color:var(--fg);font-weight:500}
/* el botón de la barra conserva su propio par texto/fondo: blanco sobre azul */
.nav-links a.btn{font-size:var(--t-small)}
.tema{display:inline-flex;align-items:center;gap:var(--sp-8);min-height:44px;padding:0 var(--sp-12);
  border:1px solid var(--borde);border-radius:var(--r-md);background:var(--sup);
  font-family:var(--f-mono);font-size:var(--t-micro);font-weight:500;letter-spacing:.06em;
  text-transform:uppercase;color:var(--muted);transition:color var(--dur) var(--ease),border-color var(--dur) var(--ease)}
.tema:hover{color:var(--fg);border-color:var(--fg)}
.tema svg{width:15px;height:15px}
.burger{display:none;width:44px;height:44px;align-items:center;justify-content:center;
  border:1px solid var(--borde);border-radius:var(--r-md);background:var(--sup)}
.burger svg{width:20px;height:20px}

/* ══════════════════════════════════ BOTONES ═════════════════════════════ */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-8);min-height:44px;
  padding:11px 20px;border-radius:var(--r-md);border:1px solid transparent;font-size:var(--t-body-s);
  font-weight:500;letter-spacing:-.005em;
  transition:background var(--dur) var(--ease),border-color var(--dur) var(--ease),color var(--dur) var(--ease)}
.btn-primario{background:var(--azul-500);color:var(--blanco);border-color:var(--azul-500)}
.btn-primario:hover{background:var(--azul-600);border-color:var(--azul-600)}
.btn-primario:active{background:var(--azul-700);border-color:var(--azul-700)}
.btn-sec{background:transparent;color:var(--fg);border-color:var(--borde)}
.btn-sec:hover{border-color:var(--fg)}
.btn-fantasma{background:transparent;color:var(--fg);padding-inline:var(--sp-8)}
.btn-fantasma:hover{color:var(--azul-700)}
[data-theme="oscuro"] .btn-fantasma:hover{color:var(--azul-300)}
.btn-flecha::after{content:"→";transition:transform var(--dur) var(--ease)}
.btn-flecha:hover::after{transform:translateX(3px)}
.btn-claro{background:transparent;color:var(--hueso);border-color:var(--neutro-800)}
.btn-claro:hover{border-color:var(--azul-300);color:var(--blanco)}
.btn:disabled{background:var(--niebla);color:var(--neutro-400);border-color:var(--niebla);cursor:not-allowed}
[data-theme="oscuro"] .btn:disabled{background:var(--neutro-800);color:var(--neutro-500);border-color:var(--neutro-800)}

/* ══════════════════════════════════ SECCIONES ══════════════════════════ */
.sec{padding-block:clamp(56px,7vw,96px)}
.sec + .sec{border-top:1px solid var(--borde)}
.sec-blanco{background:var(--sup)}
.sec-niebla{background:var(--sup-2)}
/* cabecera editorial: título a la izquierda, entrada a la derecha */
.cab{display:grid;grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);gap:var(--sp-64);
  align-items:end;margin-bottom:var(--sp-64)}
.cab .lead{max-width:62ch}
.grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--sp-24)}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-24)}
.fichas{display:grid;grid-template-columns:repeat(2,1fr);gap:0 var(--sp-48)}
.fichas-3{display:grid;grid-template-columns:repeat(3,1fr);gap:0 var(--sp-40)}
.regla{border:0;border-top:1px solid var(--borde);margin:0}

/* ════════════════════════════════ PORTADA ══════════════════════════════ */
.portada{padding-block:clamp(48px,6vw,88px) clamp(56px,7vw,96px);border-top:0}
.portada-grid{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(300px,.78fr);
  gap:clamp(32px,5vw,72px);align-items:start}
.portada h1{margin-bottom:var(--sp-24);max-width:16ch}
.portada .lead{margin-bottom:var(--sp-32)}
.portada-cta{display:flex;gap:var(--sp-12);flex-wrap:wrap;align-items:center}
.portada-pie{margin-top:var(--sp-40);padding-top:var(--sp-20);border-top:1px solid var(--borde);
  display:flex;gap:var(--sp-40);flex-wrap:wrap}
.portada-pie div{max-width:34ch}
.portada-pie p{font-size:var(--t-small);line-height:1.5;margin-top:var(--sp-4)}

/* expediente: ficha técnica con puntos conductores */
.expediente{background:var(--sup);border:1px solid var(--borde);border-radius:var(--r-lg);
  padding:var(--sp-32);box-shadow:var(--e2)}
.exp-cab{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-16);
  padding-bottom:var(--sp-16);border-bottom:1px solid var(--borde);margin-bottom:var(--sp-8)}
.exp-fila{display:flex;align-items:baseline;gap:var(--sp-8);padding-block:var(--sp-12);
  border-bottom:1px solid color-mix(in oklab,var(--borde) 60%,transparent)}
.exp-fila .etq{white-space:nowrap}
.exp-fila .puntos{flex:1 1 auto;border-bottom:1px dotted var(--borde);transform:translateY(-3px)}
.exp-val{margin-left:auto;font-size:var(--t-small);font-weight:500;line-height:1.45;text-align:right}
.exp-pie{margin-top:var(--sp-16);font-size:var(--t-caption);line-height:1.5;color:var(--muted)}
.sello{display:inline-flex;align-items:center;gap:var(--sp-8);padding:6px 12px;border-radius:var(--r-sm);
  background:var(--exito-bg);border:1px solid var(--exito-borde);color:var(--exito-txt);
  font-family:var(--f-mono);font-size:var(--t-micro);font-weight:500;letter-spacing:.06em;text-transform:uppercase}
.sello svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}

/* ═══════════════════════════════ DIVISIONES ════════════════════════════ */
.div-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-24)}
.dossier{display:flex;flex-direction:column;background:var(--sup);border:1px solid var(--borde);
  border-radius:var(--r-lg);padding:var(--sp-32);box-shadow:var(--e1);position:relative;overflow:hidden;
  transition:box-shadow var(--dur-slow) var(--ease),border-color var(--dur) var(--ease)}
.dossier::before{content:"";position:absolute;inset:0 0 auto;height:3px;background:var(--tinte)}
[data-div="sistemas"]{--tinte:var(--div-sistemas);--tinte-bg:var(--div-sistemas-bg);--tinte-txt:var(--div-sistemas-txt)}
[data-div="nomina"]{--tinte:var(--div-nomina);--tinte-bg:var(--div-nomina-bg);--tinte-txt:var(--div-nomina-txt)}
[data-div="limpieza"]{--tinte:var(--div-limpieza);--tinte-bg:var(--div-limpieza-bg);--tinte-txt:var(--div-limpieza-txt)}
.dossier:hover{box-shadow:var(--e3);border-color:var(--tinte)}
.dossier-cab{display:flex;align-items:center;gap:var(--sp-12);margin-bottom:var(--sp-20)}
.chip{display:inline-flex;align-items:center;gap:var(--sp-8);padding:5px 12px;border-radius:var(--r-full);
  background:var(--tinte-bg);color:var(--tinte-txt);font-family:var(--f-mono);font-size:var(--t-micro);
  font-weight:500;letter-spacing:.06em;text-transform:uppercase}
.chip::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.num-div{font-family:var(--f-mono);font-size:var(--t-caption);font-weight:500;letter-spacing:.08em;
  font-variant-numeric:tabular-nums;color:var(--tinte-txt)}
.dossier h3{margin-bottom:var(--sp-12)}
.dossier > p{font-size:var(--t-body-s);line-height:1.58;color:var(--muted)}
.dossier ul{margin-top:var(--sp-24);padding-top:var(--sp-20);border-top:1px solid var(--borde);
  display:flex;flex-direction:column;gap:var(--sp-12);flex:1 1 auto}
.dossier li{display:flex;gap:var(--sp-8);align-items:flex-start;font-size:var(--t-small);line-height:1.5;color:var(--muted)}
.dossier li::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--tinte);flex-shrink:0;margin-top:7px}
.dossier-pie{margin-top:var(--sp-24)}

/* ════════════════════════════════ LIBRO MAYOR ══════════════════════════ */
.ledger{display:flex;flex-direction:column;border-top:1px solid var(--borde)}
.fila{display:grid;grid-template-columns:52px minmax(0,1.25fr) minmax(240px,.85fr);gap:var(--sp-40);
  padding-block:var(--sp-24);border-bottom:1px solid var(--borde);align-items:start}
.fila-num{font-family:var(--f-mono);font-size:var(--t-caption);font-weight:500;letter-spacing:.08em;
  font-variant-numeric:tabular-nums;color:var(--tinte-txt);padding-top:3px}
.fila-t{margin-bottom:var(--sp-8)}
.fila-txt p{font-size:var(--t-body-s);line-height:1.58;color:var(--muted);max-width:62ch}
.fila-meta{display:flex;flex-direction:column;gap:var(--sp-12)}
.fila-meta .etq{margin-bottom:-6px}
.fila-dato{font-size:var(--t-small);line-height:1.5;font-weight:500;color:var(--fg)}
.ledger-nota{margin-top:var(--sp-32)}

/* lista de características y panel de producto */
.lista{display:flex;flex-direction:column;gap:var(--sp-12);margin-top:var(--sp-24)}
.lista li{display:flex;gap:var(--sp-8);align-items:flex-start;font-size:var(--t-small);line-height:1.5;color:var(--fg)}
.lista li::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--tinte);flex-shrink:0;margin-top:7px}
.panel{background:var(--sup);border:1px solid var(--borde);border-radius:var(--r-xl);padding:var(--sp-40);box-shadow:var(--e1)}
.panel-cab{display:flex;align-items:center;gap:var(--sp-16);flex-wrap:wrap;margin-bottom:var(--sp-24)}
.panel h2{margin-bottom:var(--sp-16)}
.panel > p{max-width:64ch;margin-bottom:var(--sp-32)}
.panel-pie{margin-top:var(--sp-32);padding-top:var(--sp-24);border-top:1px solid var(--borde);
  display:flex;align-items:center;gap:var(--sp-16);flex-wrap:wrap}
.panel-pie .caption{max-width:52ch}

/* tarjetas de modalidad y pasos */
.mod-card{background:var(--sup);border:1px solid var(--borde);border-radius:var(--r-lg);
  padding:var(--sp-32);box-shadow:var(--e1)}
.mod-card + .mod-card{margin-top:var(--sp-16)}
.mod-card h3{margin-bottom:var(--sp-12)}
.mod-card p{font-size:var(--t-body-s);line-height:1.58;color:var(--muted)}
.mod-card p + p{margin-top:var(--sp-12)}
.prestaciones{display:flex;flex-wrap:wrap;gap:var(--sp-8);margin-top:var(--sp-24);
  padding-top:var(--sp-20);border-top:1px solid var(--borde)}
.tag{display:inline-flex;align-items:center;padding:4px 10px;border:1px solid var(--borde);
  border-radius:var(--r-full);font-family:var(--f-mono);font-size:var(--t-micro);font-weight:500;
  letter-spacing:.02em;color:var(--muted)}
.prestaciones .tag{border-color:var(--tinte-bg);background:var(--tinte-bg);color:var(--tinte-txt)}
.pasos{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-24);counter-reset:paso}
.paso{border-top:2px solid var(--tinte);padding-top:var(--sp-16);counter-increment:paso}
.paso::before{content:"0" counter(paso);font-family:var(--f-mono);font-size:var(--t-label);font-weight:500;
  letter-spacing:.08em;color:var(--muted);display:block;margin-bottom:var(--sp-8)}
.paso h4{margin-bottom:var(--sp-8)}
.paso p{font-size:var(--t-small);line-height:1.55;color:var(--muted)}

/* fichas de servicio y método */
.ficha{padding-block:var(--sp-24);border-top:1px solid var(--borde)}
.ficha h4{margin-bottom:var(--sp-8)}
.ficha p{font-size:var(--t-body-s);line-height:1.58;color:var(--muted);max-width:52ch}
.ficha-datos{display:flex;flex-wrap:wrap;gap:var(--sp-8);margin-top:var(--sp-12)}
.metodo{display:flex;flex-direction:column;border-top:1px solid var(--borde)}
.metodo-fila{display:grid;grid-template-columns:64px minmax(0,1fr);gap:var(--sp-24);padding-block:var(--sp-20);
  border-bottom:1px solid var(--borde);align-items:baseline}
.metodo-fila .dato{color:var(--muted)}
.metodo-fila h4{margin-bottom:var(--sp-4)}
.metodo-fila p{font-size:var(--t-body-s);line-height:1.58;color:var(--muted);max-width:78ch}

/* tablas y notas */
.tabla-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.tabla{width:100%;border-collapse:collapse;font-size:var(--t-small)}
.tabla th,.tabla td{padding:var(--sp-12) var(--sp-16);text-align:left;border-bottom:1px solid var(--borde);vertical-align:top}
.tabla th{font-family:var(--f-mono);font-size:var(--t-label);font-weight:500;letter-spacing:.08em;
  text-transform:uppercase;color:var(--muted);white-space:nowrap}
.tabla tbody tr:hover{background:var(--sup-2)}
.tabla td.num{text-align:right;font-family:var(--f-mono);font-variant-numeric:tabular-nums;white-space:nowrap}
.tabla caption{caption-side:bottom;text-align:left;padding-top:var(--sp-12);font-size:var(--t-caption);color:var(--muted)}
.nota{background:var(--tinte-bg);border:1px solid var(--borde);border-top:2px solid var(--tinte);
  border-radius:var(--r-md);padding:var(--sp-20) var(--sp-24)}
.nota-aviso{background:var(--aviso-bg);border-color:var(--aviso-borde);border-top-color:var(--aviso)}
.nota p{font-size:var(--t-body-s);line-height:1.58;color:var(--tinte-txt)}
.nota-aviso p{color:var(--aviso-txt)}
.nota .mini{color:var(--fg);margin-bottom:var(--sp-4)}
.nota-aviso .mini{color:var(--aviso-txt)}
.nota ul{margin-top:var(--sp-12);display:flex;flex-direction:column;gap:var(--sp-8)}
.nota li{font-size:var(--t-small);line-height:1.5;color:var(--tinte-txt);display:flex;gap:var(--sp-8)}
.nota-aviso li{color:var(--aviso-txt)}
.nota li::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0;margin-top:7px}

/* fotografía con crédito */
.foto{margin:0}
.foto img{width:100%;height:auto;border-radius:var(--r-lg);border:1px solid var(--borde)}
.foto figcaption{display:flex;justify-content:space-between;gap:var(--sp-16);flex-wrap:wrap;
  margin-top:var(--sp-12);font-size:var(--t-caption);line-height:1.45;color:var(--muted)}
.foto figcaption a{text-decoration:underline;text-underline-offset:3px}
.foto figcaption a:hover{color:var(--fg)}
.foto-lado{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:var(--sp-48);align-items:center}
.foto-lado img{width:auto;height:auto;max-height:440px;margin-inline:auto;border-radius:var(--r-lg);border:1px solid var(--borde)}
.foto-lado figcaption{display:block;margin-top:var(--sp-12);font-size:var(--t-caption);line-height:1.45;color:var(--muted)}

/* lista editorial de proyectos */
.log-row{display:grid;grid-template-columns:170px minmax(0,1fr);gap:var(--sp-40);padding-block:var(--sp-24);
  border-top:1px solid var(--borde);align-items:start}
.log-row:last-of-type{border-bottom:1px solid var(--borde)}
.log-row h3{margin-bottom:var(--sp-8);font-size:var(--t-h3);font-family:var(--f-body);font-weight:600;letter-spacing:-.008em}
.log-row p{font-size:var(--t-body-s);line-height:1.58;color:var(--muted);max-width:62ch}
.log-meta{display:flex;flex-direction:column;gap:var(--sp-8);align-items:flex-start}
.estado{display:inline-flex;align-items:center;gap:var(--sp-8);padding:4px 10px;border-radius:var(--r-sm);
  font-family:var(--f-mono);font-size:var(--t-micro);font-weight:500;letter-spacing:.06em;text-transform:uppercase;border:1px solid}
.estado-ok{background:var(--exito-bg);border-color:var(--exito-borde);color:var(--exito-txt)}
.estado-proc{background:var(--aviso-bg);border-color:var(--aviso-borde);color:var(--aviso-txt)}

/* preguntas frecuentes */
.faq-list{max-width:82ch;border-top:1px solid var(--borde)}
.faq-item{border-bottom:1px solid var(--borde)}
.faq-q{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-24);width:100%;
  min-height:44px;padding:var(--sp-20) 0;text-align:left;font-family:var(--f-body);font-size:var(--t-h3);
  font-weight:600;letter-spacing:-.008em;color:var(--fg);transition:color var(--dur) var(--ease)}
.faq-q:hover{color:var(--fg)}
.faq-q:hover .faq-txt{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px}
.faq-q:focus-visible{outline-offset:-2px}
.faq-txt{flex:1 1 auto;min-width:0;text-align:left}
.faq-q svg{width:20px;height:20px;flex-shrink:0;stroke:var(--muted);stroke-width:1.75;fill:none;
  stroke-linecap:round;transition:transform var(--dur-slow) var(--ease)}
.faq-item[data-abierto="si"] .faq-q svg{transform:rotate(45deg)}
.faq-a{overflow:hidden;max-height:0;transition:max-height var(--dur-slow) var(--ease)}
.faq-item[data-abierto="si"] .faq-a{max-height:40rem}
.faq-a > div{padding-bottom:var(--sp-24)}
.faq-a p{font-size:var(--t-body-s);line-height:1.65;color:var(--muted);max-width:74ch}
.faq-a p + p{margin-top:var(--sp-12)}
.faq-a b{color:var(--fg);font-weight:600}

/* ═══════════════════════════ CIERRE Y CONTACTO ═════════════════════════ */
.cierre{background:var(--ink);color:var(--tinta-txt);padding-block:clamp(56px,7vw,96px);position:relative;overflow:hidden}
.cierre-in{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr);
  gap:var(--sp-64);align-items:center}
.cierre .kicker{color:var(--azul-300)}
.cierre h2{color:var(--hueso);margin-bottom:var(--sp-16)}
.cierre p{font-size:var(--t-lead);line-height:1.55;color:var(--neutro-300);max-width:52ch;margin-bottom:var(--sp-32)}
.cierre-cta{display:flex;gap:var(--sp-12);flex-wrap:wrap;align-items:center}
.cierre .marca-agua{width:min(240px,70%);height:auto;opacity:.16;justify-self:end}
/* en oscuro, el bloque de tinta se separa del fondo con la superficie elevada */
[data-theme="oscuro"] .cierre,[data-theme="oscuro"] .pie{background:var(--tinta-sup)}
.contacto-grid{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:var(--sp-64);align-items:start}
.canales{display:flex;flex-direction:column;gap:var(--sp-12)}
.canal{display:flex;gap:var(--sp-16);align-items:flex-start;padding:var(--sp-16);border:1px solid var(--borde);
  border-radius:var(--r-md);background:var(--sup);transition:border-color var(--dur) var(--ease)}
.canal:hover{border-color:var(--azul-400)}
.canal svg{width:20px;height:20px;flex-shrink:0;margin-top:2px;stroke:var(--muted);stroke-width:1.75;fill:none;
  stroke-linecap:round;stroke-linejoin:round;transition:stroke var(--dur) var(--ease)}
.canal:hover svg{stroke:var(--azul-700)}
[data-theme="oscuro"] .canal:hover svg{stroke:var(--azul-300)}
.canal span{display:block;font-size:var(--t-body-s);font-weight:500}
.canal small{display:block;font-size:var(--t-caption);color:var(--muted);margin-top:2px;line-height:1.45}
.form-card{background:var(--sup);border:1px solid var(--borde);border-radius:var(--r-lg);padding:var(--sp-40);box-shadow:var(--e1)}
.form-card h3{margin-bottom:var(--sp-4)}
.form-card > p{font-size:var(--t-body-s);color:var(--muted);margin-bottom:var(--sp-24)}
.campo{display:flex;flex-direction:column;gap:6px;margin-bottom:var(--sp-16)}
.campo label{font-size:var(--t-caption);color:var(--muted)}
.campo input,.campo select,.campo textarea{width:100%;padding:11px 14px;border:1px solid var(--borde);
  border-radius:var(--r-md);background:var(--bg);color:var(--fg);font:inherit;font-size:var(--t-body-s);
  transition:border-color var(--dur) var(--ease)}
.campo input:hover,.campo select:hover,.campo textarea:hover{border-color:var(--neutro-400)}
.campo input:focus,.campo select:focus,.campo textarea:focus{outline:2px solid var(--foco);outline-offset:2px;
  border-color:var(--azul)}
.campo textarea{min-height:104px;resize:vertical;line-height:1.55}
.campo input::placeholder,.campo textarea::placeholder{color:var(--muted);opacity:1}
.fila-2{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-16)}
.form-aviso{margin-top:var(--sp-16);font-size:var(--t-caption);color:var(--muted)}
.form-aviso a{text-decoration:underline;text-underline-offset:3px}
.form-exito{display:none;background:var(--exito-bg);border:1px solid var(--exito-borde);border-top:2px solid var(--exito);
  border-radius:var(--r-md);padding:var(--sp-20) var(--sp-24)}
.form-exito p{font-size:var(--t-body-s);color:var(--exito-txt)}
.form-exito .mini{color:var(--exito-txt);margin-bottom:var(--sp-4)}
.form-error{display:none;margin-top:var(--sp-12);font-size:var(--t-caption);color:var(--alerta-txt)}
.form-error a{text-decoration:underline}

/* ══════════════════════════════════ PIE ════════════════════════════════ */
.pie{background:var(--ink);color:var(--neutro-300);padding:var(--sp-64) 0 var(--sp-32)}
.pie-grid{display:grid;grid-template-columns:1.7fr 1fr 1fr 1fr 1fr;gap:var(--sp-32)}
.pie-marca-col{min-width:0}
.pie-marca-col p{max-width:34ch}
.pie-dir{font-size:var(--t-caption)!important;line-height:1.5;color:var(--neutro-300)}
.pie-marca-col .sello{margin-top:var(--sp-20)}
.pie-marca-col .sello svg{stroke:currentColor;fill:none;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}
/* el pie sobre tinta: el sello usa la terna de éxito oscura para mantener el par */
.pie .sello{background:color-mix(in oklab,var(--exito) 24%,transparent);
  border-color:color-mix(in oklab,var(--exito) 46%,transparent);color:var(--exito-tinte)}
.pie h4{color:var(--hueso);font-family:var(--f-body);font-size:var(--t-small);font-weight:600;
  letter-spacing:.02em;margin-bottom:var(--sp-16)}
.pie p{font-size:var(--t-small);line-height:1.55;color:var(--neutro-300)}
.pie li{margin-bottom:var(--sp-12)}
.pie li a{font-size:var(--t-small);color:var(--neutro-300);transition:color var(--dur) var(--ease)}
.pie li a:hover{color:var(--hueso)}
.pie .marca-txt{color:var(--hueso)}
.pie .marca-txt small{color:var(--neutro-300)}
.pie-marca{display:flex;align-items:center;gap:var(--sp-12);margin-bottom:var(--sp-16)}
.pie-marca img{width:44px;height:auto}
.f-dato{display:flex;align-items:flex-start;gap:var(--sp-8);min-width:0;
  font-family:var(--f-mono);font-size:var(--t-micro);letter-spacing:.02em;color:var(--neutro-300);
  margin-bottom:var(--sp-12);overflow-wrap:anywhere}
.f-dato svg{width:14px;height:14px;flex-shrink:0;margin-top:2px;stroke:var(--azul-300);fill:none;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}
.pie-legal{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-16);flex-wrap:wrap;
  margin-top:var(--sp-48);padding-top:var(--sp-24);border-top:1px solid var(--neutro-800);
  font-size:var(--t-caption);color:var(--neutro-300)}
.pie-legal a{color:var(--neutro-300);text-decoration:underline;text-underline-offset:3px}
.pie-legal a:hover{color:var(--hueso)}

/* ═════════════════════════════ AVISO DE COOKIES ════════════════════════ */
.cookies{position:fixed;left:0;right:0;bottom:0;z-index:80;display:flex;align-items:center;
  gap:var(--sp-24);justify-content:space-between;padding:var(--sp-16) var(--sp-32);background:var(--sup);
  border-top:1px solid var(--borde);box-shadow:0 -4px 20px color-mix(in oklab,var(--ink) 8%,transparent);
  transform:translateY(110%);transition:transform var(--dur-slow) var(--ease)}
.cookies[data-visible="si"]{transform:translateY(0)}
.cookies p{font-size:var(--t-caption);color:var(--muted);max-width:76ch}
.cookies p a{color:var(--azul-700);text-decoration:underline;text-underline-offset:3px}
.cookies p a:hover{color:var(--azul-900)}
[data-theme="oscuro"] .cookies p a{color:var(--azul-300)}
[data-theme="oscuro"] .cookies p a:hover{color:var(--hueso)}
.cookies-acciones{display:flex;gap:var(--sp-12);flex-shrink:0}

/* ═════════════════════════ APARICIÓN AL DESPLAZARSE ════════════════════ */
.rv{opacity:0;transform:translateY(18px);transition:opacity 600ms var(--ease),transform 600ms var(--ease)}
.rv.v{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  .rv{opacity:1;transform:none;transition:none}
  *,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}
  html{scroll-behavior:auto}
}

/* ══════════════════════════════════ ADAPTACIÓN ═════════════════════════ */
@media (max-width:1200px){
  .nav-links{display:none}
  .nav-links.abierto{display:flex;position:absolute;top:68px;left:0;right:0;flex-direction:column;
    align-items:stretch;gap:0;background:var(--sup);border-bottom:1px solid var(--borde);
    padding:var(--sp-16) var(--sp-32) var(--sp-24);box-shadow:var(--e3)}
  .nav-links.abierto a{padding:var(--sp-12) 0;font-size:var(--t-body-s);border-bottom:1px solid var(--borde)}
  .nav-links.abierto .tema{margin-top:var(--sp-16);justify-content:center}
  .nav-links.abierto .btn{margin-top:var(--sp-12)}
  .burger{display:inline-flex}
  .portada-grid{grid-template-columns:minmax(0,1fr) minmax(280px,.8fr);gap:var(--sp-40)}
  .cab{grid-template-columns:1fr;gap:var(--sp-24);align-items:start;margin-bottom:var(--sp-48)}
  .div-grid{grid-template-columns:1fr 1fr;gap:var(--sp-16)}
  .fila{grid-template-columns:48px minmax(0,1fr);gap:var(--sp-24)}
  .fila-meta{grid-column:2;margin-top:var(--sp-16)}
  .fichas-3{grid-template-columns:repeat(2,1fr)}
  .contacto-grid,.cierre-in{grid-template-columns:1fr;gap:var(--sp-40)}
  .cierre .marca-agua{justify-self:start;width:160px}
  .pie-grid{grid-template-columns:1fr 1fr;gap:var(--sp-32)}
  .pie-marca-col{grid-column:1/-1}
  .foto-lado{grid-template-columns:1fr;gap:var(--sp-32)}
}
@media (max-width:920px){
  .portada-grid{grid-template-columns:1fr;gap:var(--sp-40)}
  .portada h1{max-width:20ch}
  .div-grid{grid-template-columns:1fr}
  .fichas,.fichas-3{grid-template-columns:1fr}
  .pasos{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:600px){
  .wrap{padding-inline:var(--sp-20)}
  .barra-in{height:60px}
  .nav-links.abierto{top:60px}
  .marca img{height:21px}
  .marca-txt{font-size:16px}
  .marca-txt small{display:none}
  .sec{padding-block:var(--sp-48)}
  .portada{padding-block:var(--sp-48)}
  .portada-cta{flex-direction:column;align-items:stretch}
  .portada-cta .btn{width:100%}
  .portada-pie{gap:var(--sp-20)}
  .expediente{padding:var(--sp-24)}
  .exp-fila{flex-wrap:wrap}
  .exp-fila dd{text-align:left;flex:1 1 100%}
  .exp-fila .puntos{display:none}
  .cab{margin-bottom:var(--sp-32)}
  .grid-2,.grid-3,.fila-2{grid-template-columns:1fr}
  .pasos{grid-template-columns:1fr}
  .fila{grid-template-columns:1fr;gap:var(--sp-12)}
  .fila-meta{grid-column:1}
  .fila-num{order:-1}
  .log-row{grid-template-columns:1fr;gap:var(--sp-12)}
  .log-meta{flex-direction:row;align-items:center;flex-wrap:wrap}
  .form-card{padding:var(--sp-24)}
  .mod-card{padding:var(--sp-24)}
  .dossier{padding:var(--sp-24)}
  .cookies{flex-direction:column;align-items:stretch;text-align:center;padding:var(--sp-16) var(--sp-20)}
  .cookies-acciones{justify-content:center}
  .pie-grid{grid-template-columns:1fr}
  .pie-legal{flex-direction:column;align-items:flex-start}
  .tabla th,.tabla td{padding:var(--sp-12) var(--sp-8)}
  .tabla-scroll .tabla{min-width:520px}
  .foto-lado img{max-height:none}
}
