/* =================================================================
   MKL — CENTER OF EXCELLENCE
   Sistema de marca · hoja de estilo principal
   Tricromía estricta #000000 / #FFFFFF / #E51B20 · Michroma
   ================================================================= */

/* ---------- 1. TOKENS ---------- */
:root{
  /* La identidad MKL es monocroma por definición: la página se sirve
     siempre en negro, en cualquier esquema del sistema. */
  color-scheme:dark;

  --k:#000;
  --w:#fff;
  --r:#E51B20;

  --w-72:rgba(255,255,255,.72);
  --w-54:rgba(255,255,255,.54);
  --w-38:rgba(255,255,255,.38);
  --w-22:rgba(255,255,255,.22);
  --w-12:rgba(255,255,255,.12);
  --w-06:rgba(255,255,255,.06);
  --line:rgba(255,255,255,.09);

  /* El contenido llega casi al borde: tope muy alto y un filo de margen.
     Nada de bandas negras a los lados. */
  --max:2400px;
  --gut:clamp(16px,1.8vw,34px);
  --gap:20px;
  --hdr-h:68px;

  /* RITMO VERTICAL — cuatro escalones y nada más. Toda separación de la
     web sale de aquí; no hay clamps sueltos repartidos por la hoja. */
  --sec:clamp(72px,7.4vw,118px);        /* entre secciones            */
  --sec-tight:clamp(56px,5.8vw,92px);   /* secciones de apoyo         */
  --blk:clamp(38px,4.2vw,68px);         /* entre bloques de una misma */
  --itm:clamp(20px,2.2vw,34px);         /* entre elementos de un bloque */

  --head-gap:var(--blk);
  --eyebrow-gap:clamp(16px,1.8vw,28px);
  --lead-gap:clamp(20px,2.2vw,34px);

  --ease:cubic-bezier(.22,.61,.36,1);
  --ease-io:cubic-bezier(.76,0,.24,1);

  /* ESCALA TIPOGRAFICA — pequena y uniforme, como la cabecera.
     Solo cuatro pasos, de 9 a 14 px: la jerarquia la dan el color,
     el tracking y el aire, no el cuerpo de letra. */
  --fs-d :14px;   /* los pocos momentos de display */
  --fs-xl:12px;   /* titulos de seccion            */
  --fs-m :11px;   /* entradillas                   */
  --fs-b :10px;   /* cuerpo                        */
  --fs-s : 9px;   /* etiquetas                     */
}

/* ---------- 2. RESET ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:var(--hdr-h)}
html,body{margin:0;padding:0}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

body{
  background:var(--k);
  color:var(--w);
  font-family:"Michroma",ui-sans-serif,system-ui,sans-serif;
  font-size:var(--fs-b);
  line-height:2;
  letter-spacing:.02em;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
body.is-locked{overflow:hidden}
img,svg,video,canvas{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;letter-spacing:inherit}
ol,ul{margin:0;padding:0;list-style:none}
h1,h2,h3,p,dl,dd,figure,figcaption,blockquote{margin:0}
::selection{background:var(--r);color:var(--w)}
:focus-visible{outline:1px solid var(--r);outline-offset:4px}

/* ---------- 3. RETÍCULA ---------- */
/* `clip` y no `hidden`: recorta el desborde horizontal en pantallas muy
   estrechas sin crear un contenedor de scroll, así los position:sticky de
   dentro (la columna de datos, el anclaje de la galería) siguen vivos. */
main{overflow-x:clip}
.wrap{width:100%;max-width:var(--max);margin-inline:auto;padding-inline:var(--gut)}
.g12{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--gap);align-items:start}
.c3{grid-column:span 3}
.c4{grid-column:span 4}
.c5{grid-column:span 5}
.c6{grid-column:span 6}
.c7{grid-column:span 7}
.c8{grid-column:span 8}
.c12{grid-column:span 12}
.c-off{grid-column-end:13}
@media (max-width:1100px){
  .c3{grid-column:span 6}
  .c4,.c5,.c6,.c7,.c8{grid-column:span 12}
  .c-off{grid-column-end:auto}
}
@media (max-width:620px){ .c3{grid-column:span 12} }

.frame{position:relative;overflow:hidden;background:#070707}
.frame img{width:100%;height:100%;object-fit:cover;object-position:center;transform:scale(1.08);will-change:transform}
.frame--hero{aspect-ratio:16/11}
@media (max-width:1100px){ .frame--hero{aspect-ratio:4/3} }

/* ---------- 4. TIPOGRAFÍA ---------- */
.eyebrow{font-size:var(--fs-s);letter-spacing:.42em;color:var(--w);text-transform:uppercase;margin-bottom:var(--eyebrow-gap)}
.ttl-xl{font-size:var(--fs-xl);line-height:1.6;letter-spacing:.08em;font-weight:400;max-width:46ch}
.ttl-s{font-size:var(--fs-s);letter-spacing:.3em;text-transform:uppercase;color:var(--w);margin-bottom:16px;font-weight:400}
.lead{font-size:var(--fs-m);line-height:1.9;color:var(--w);max-width:62ch;margin-top:var(--lead-gap)}
.body{font-size:var(--fs-b);line-height:1.95;color:var(--w);max-width:42ch}
.body b,.lead b{color:var(--w);font-weight:400}
.sechead{margin-bottom:var(--head-gap)}

/* ---------- 5. EDITORIAL ----------
   Bloques de lectura larga: columnas, capitular y cita destacada.
   Sin cajas: el ritmo lo marcan el texto y el blanco. */
.ed__intro{font-size:var(--fs-d);line-height:1.7;color:var(--w);
  max-width:28ch;margin-bottom:var(--blk)}
/* Ancho de columna, no número de columnas: al llegar el contenido casi al
   borde, fijar "2 columnas" daba líneas de 760 px, ilegibles. Así el texto
   abre las columnas que quepan manteniendo la medida de lectura. */
.ed__cols{columns:30ch;column-gap:clamp(26px,3vw,56px)}
.ed__cols--wide{columns:28ch}
.ed__cols p{font-size:var(--fs-b);line-height:2.2;color:var(--w);margin-bottom:1.7em;break-inside:avoid}
.ed__cols p:last-child{margin-bottom:0}
.ed__drop::first-letter{
  float:left;font-size:4.2em;line-height:.78;color:var(--r);
  padding:.04em .16em 0 0;
}
@media (max-width:760px){ .ed__cols,.ed__cols--wide{columns:1} }

.pull{
  margin-block:var(--blk);padding-left:clamp(20px,3vw,46px);
  border-left:1px solid var(--r);
  font-size:var(--fs-d);line-height:1.7;color:var(--w);max-width:48ch;
}
.ed__after{margin-top:var(--itm);font-size:var(--fs-b);line-height:2.2;
  color:var(--w);max-width:52ch}

/* ---------- 6. SECCIONES ---------- */
.sec{position:relative;padding-block:var(--sec)}
.sec--tight{padding-block:var(--sec-tight)}
.sec--dark{background:#040404}
.cols{margin-top:var(--blk);row-gap:var(--itm)}

/* ---------- 6b. AMBIENTE ----------
   El fondo de la web es negro puro, sin excepción: el rojo solo aparece en
   el velo de la cabecera y en el índice. Estas reglas quedan para esos dos
   sitios; si alguna vez se quiere devolver el ambiente a una sección, basta
   con insertarle un <span class="aura"><i></i><i></i><i></i></span>.
   Son radial-gradient puros y NO filter:blur(): la suavidad ya está en el
   degradado, así el navegador solo compone transformaciones. */
.aura{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0}
.aura i{position:absolute;display:block;aspect-ratio:1;border-radius:50%;
  will-change:transform;animation-play-state:paused}
.aura.is-live i,.menu.is-open .aura i{animation-play-state:running}

/* El contenido siempre por encima del ambiente */
.sec>*:not(.aura),.sign>*:not(.aura),.menu>*:not(.aura){position:relative;z-index:1}

.aura i:nth-child(1){width:min(74vw,1020px);left:-20%;top:-18%;
  background:radial-gradient(circle,rgba(229,27,32,.2) 0%,rgba(229,27,32,.07) 38%,rgba(229,27,32,0) 66%);
  animation:aura1 28s ease-in-out infinite alternate}
.aura i:nth-child(2){width:min(56vw,780px);right:-16%;bottom:-20%;
  background:radial-gradient(circle,rgba(229,27,32,.15) 0%,rgba(142,8,12,.06) 42%,rgba(229,27,32,0) 68%);
  animation:aura2 37s ease-in-out infinite alternate}
.aura i:nth-child(3){width:min(44vw,620px);left:40%;top:26%;
  background:radial-gradient(circle,rgba(255,255,255,.045) 0%,rgba(255,255,255,0) 62%);
  animation:aura3 31s ease-in-out infinite alternate}

@keyframes aura1{
  0%{transform:translate3d(0,0,0) scale(1)}
  100%{transform:translate3d(28%,16%,0) scale(1.26)}
}
@keyframes aura2{
  0%{transform:translate3d(0,0,0) scale(1.12)}
  100%{transform:translate3d(-24%,-18%,0) scale(.92)}
}
@keyframes aura3{
  0%{transform:translate3d(-14%,8%,0) scale(.9)}
  100%{transform:translate3d(18%,-12%,0) scale(1.3)}
}

/* Variantes: dos secciones seguidas nunca se ven iguales */
.aura--r i:nth-child(1){left:auto;right:-22%;top:-12%;animation-duration:33s}
.aura--r i:nth-child(2){right:auto;left:-18%;bottom:-24%;animation-duration:25s}
.aura--r i:nth-child(3){left:12%;top:46%;animation-duration:35s}

.aura--soft i:nth-child(1){opacity:.45}
.aura--soft i:nth-child(2){opacity:.4}
.aura--soft i:nth-child(3){opacity:.6}

.aura--hot i:nth-child(1){
  background:radial-gradient(circle,rgba(229,27,32,.3) 0%,rgba(229,27,32,.1) 38%,rgba(229,27,32,0) 66%)}
.aura--hot i:nth-child(2){
  background:radial-gradient(circle,rgba(229,27,32,.21) 0%,rgba(229,27,32,0) 66%)}

.aura--menu{position:fixed}
.aura--menu i:nth-child(1){width:min(82vw,1150px);animation-duration:22s}
.aura--menu i:nth-child(2){width:min(64vw,900px);animation-duration:29s}
.aura--menu i:nth-child(3){animation-duration:26s}

/* ---------- 7. PRELOADER ---------- */
.loader{position:fixed;inset:0;z-index:999;background:var(--k);display:grid;place-items:center;
  transition:opacity .8s var(--ease),visibility .8s}
.loader.is-done{opacity:0;visibility:hidden}
.loader__inner{width:min(280px,64vw);text-align:center}
.loader__iso{width:78px;margin:0 auto 40px;overflow:visible}
.loader__fill{opacity:0;transition:opacity .5s .2s}
.loader.is-filled .loader__fill{opacity:1}

/* Arco eléctrico: un filamento blanco recorre el contorno del isotipo y
   parpadea en pasos irregulares. Muy corto, muy brillante, muy breve. */
.loader__spark{
  stroke-dasharray:4 164;
  filter:drop-shadow(0 0 4px rgba(255,255,255,.95));
  animation:spark 1.9s linear infinite, flick 2.6s steps(1) infinite;
}
@keyframes spark{ to{ stroke-dashoffset:-168 } }
@keyframes flick{
  0%,6%,9%,41%,45%,68%,100%{opacity:1}
  7%,43%,70%{opacity:.14}
}

.loader__bar{position:relative;height:1px;background:var(--w-12);overflow:hidden}
.loader__bar i{display:block;height:100%;width:0;background:var(--r);position:relative}
.loader__bar i::after{
  content:"";position:absolute;right:0;top:-1px;width:16px;height:3px;
  background:linear-gradient(90deg,transparent,#fff);
  filter:blur(.5px);animation:flick 1.7s steps(1) infinite;
}

/* ---------- 8. CURSOR ----------
   El puntero ES el isotipo. En reposo va en modo difference para que se lea
   igual sobre negro que sobre la muestra blanca; al entrar en una zona con
   acción pasa a rojo sólido y saca su etiqueta. */
.cursor{position:fixed;left:0;top:0;z-index:900;pointer-events:none;opacity:0;transition:opacity .35s}
.cursor.is-on{opacity:1}
.cursor__iso{position:absolute;left:0;top:0;display:block;width:24px;color:#fff;
  mix-blend-mode:difference;
  transition:width .45s var(--ease),color .35s,filter .35s,mix-blend-mode 0s .05s}
.cursor__iso svg{width:100%;height:auto;fill:currentColor}
.cursor__lbl{position:absolute;left:0;top:0;font-size:7px;letter-spacing:.3em;
  color:var(--r);text-transform:uppercase;white-space:nowrap;opacity:0;
  transition:opacity .3s var(--ease)}
.cursor.is-hover .cursor__iso{width:38px}
.cursor.is-txt .cursor__iso{width:48px;mix-blend-mode:normal;color:var(--r);
  filter:drop-shadow(0 0 16px rgba(229,27,32,.55))}
.cursor.is-txt .cursor__lbl{opacity:1}
body.has-cursor,body.has-cursor *{cursor:none}
@media (hover:none),(max-width:900px){.cursor{display:none}}

/* ---------- 8a. SONIDO DE MOTOR ---------- */
.snd{position:fixed;left:var(--gut);bottom:clamp(18px,2.6vw,32px);z-index:760;
  display:flex;align-items:center;gap:12px;padding:8px 0;
  font-size:var(--fs-s);letter-spacing:.26em;color:var(--w);
  text-transform:uppercase;transition:color .35s var(--ease)}
.snd:hover .snd__bars i{background:var(--r)}
.snd[aria-pressed="true"]{color:var(--w)}
.snd__bars{display:flex;align-items:flex-end;gap:2px;height:13px}
.snd__bars i{width:2px;height:3px;background:currentColor;transition:height .3s,background .3s}
.snd[aria-pressed="true"] .snd__bars i{background:var(--r);animation:sndBar 1.1s ease-in-out infinite}
.snd[aria-pressed="true"] .snd__bars i:nth-child(2){animation-delay:.14s}
.snd[aria-pressed="true"] .snd__bars i:nth-child(3){animation-delay:.28s}
.snd[aria-pressed="true"] .snd__bars i:nth-child(4){animation-delay:.42s}
@keyframes sndBar{0%,100%{height:3px}50%{height:13px}}
@media (max-width:620px){ .snd__lbl{display:none} }

/* ---------- 8b. AVISO ---------- */
.toast{position:fixed;left:50%;bottom:34px;z-index:880;padding:13px 22px;
  background:#000;border:1px solid var(--r);
  font-size:8px;letter-spacing:.3em;text-transform:uppercase;color:var(--w);
  opacity:0;pointer-events:none;transform:translate(-50%,14px);
  transition:opacity .35s var(--ease),transform .45s var(--ease)}
.toast.is-on{opacity:1;transform:translate(-50%,0)}

/* ---------- 9. HEADER ----------
   Permanente: nunca se oculta. Al despegar del origen se vuelve cristal
   con un degradado rojo que deriva por detrás del blur. */
.hdr{position:fixed;top:0;left:0;width:100%;z-index:700;height:var(--hdr-h);
  transition:height .5s var(--ease)}
.hdr.is-stuck{height:54px}

/* El velo es más alto que la cabecera y se desvanece hacia abajo con una
   máscara: el cristal, el negro y el resplandor rojo se funden con el
   contenido en lugar de cortarse en un filo. */
.hdr__veil{
  position:absolute;left:0;right:0;top:0;height:165%;pointer-events:none;
  opacity:0;transition:opacity .8s var(--ease);overflow:hidden;
  backdrop-filter:blur(22px) saturate(140%);
  -webkit-backdrop-filter:blur(22px) saturate(140%);
  background:linear-gradient(to bottom,
    rgba(0,0,0,.9) 0%,rgba(0,0,0,.74) 38%,rgba(0,0,0,.3) 72%,rgba(0,0,0,0) 100%);
  -webkit-mask-image:linear-gradient(to bottom,#000 0%,#000 44%,rgba(0,0,0,.42) 74%,transparent 100%);
  mask-image:linear-gradient(to bottom,#000 0%,#000 44%,rgba(0,0,0,.42) 74%,transparent 100%);
}
.hdr.is-stuck .hdr__veil{opacity:1}

.hdr__glow{position:absolute;inset:0;overflow:hidden;pointer-events:none}
/* Apenas un rubor: el rojo se intuye, no se mira. */
.hdr__glow i{position:absolute;top:50%;left:0;width:40vw;height:300%;border-radius:50%;
  filter:blur(52px);will-change:transform}
.hdr__glow i:nth-child(1){
  background:radial-gradient(ellipse at center,rgba(229,27,32,.22),rgba(229,27,32,0) 70%);
  animation:drift1 17s ease-in-out infinite alternate}
.hdr__glow i:nth-child(2){
  background:radial-gradient(ellipse at center,rgba(229,27,32,.12),rgba(229,27,32,0) 74%);
  animation:drift2 23s ease-in-out infinite alternate}
@keyframes drift1{
  0%{transform:translate(-32%,-50%) scale(1)}
  50%{transform:translate(52%,-50%) scale(1.34)}
  100%{transform:translate(132%,-50%) scale(.94)}
}
@keyframes drift2{
  0%{transform:translate(122%,-50%) scale(1.22)}
  100%{transform:translate(-26%,-50%) scale(.9)}
}

.hdr__in{position:relative;z-index:2;height:100%;max-width:var(--max);margin-inline:auto;
  padding-inline:var(--gut);display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:20px}
/* Todo el rótulo encoge para que el isotipo rojo mande aunque sea pequeño */
.hdr__word{justify-self:start;color:var(--w)}
.hdr__word svg{width:clamp(44px,3.4vw,56px);fill:currentColor;transition:opacity .35s}
.hdr__word:hover{opacity:.62}
.hdr__iso{justify-self:center;color:var(--r)}
.hdr__iso svg{width:clamp(24px,2.1vw,30px);fill:currentColor;transition:transform .55s var(--ease)}
.hdr__iso:hover svg{transform:translateY(-4px) scale(1.08)}
.hdr__r{justify-self:end;display:flex;align-items:center;gap:clamp(12px,1.6vw,26px)}

/* ---------- 11. ETIQUETA ROJA ELÉCTRICA ---------- */
.nav{position:relative;display:flex;gap:clamp(8px,1.2vw,22px);align-items:center;
  transition:opacity .35s var(--ease)}
.nav__link{position:relative;z-index:2;font-size:9px;letter-spacing:.24em;color:var(--w);
  padding:7px 11px;transition:color .4s var(--ease);white-space:nowrap}
.nav__link:hover,.nav__link.is-active{color:var(--w)}
/* Contorneada, no maciza: late sola con un brillo continuo */
.nav__tag{position:absolute;z-index:1;left:0;top:50%;height:25px;width:0;
  background:transparent;border:1px solid rgba(229,27,32,.7);
  transform:translateY(-50%) skewX(-20deg);opacity:0;pointer-events:none;overflow:hidden;
  transition:transform .6s var(--ease-io),width .6s var(--ease-io),left .6s var(--ease-io),opacity .35s;
  animation:tagGlow 2.8s ease-in-out infinite}
.nav__tag.is-on{opacity:1}
@keyframes tagGlow{
  0%,100%{border-color:rgba(229,27,32,.55);
    box-shadow:0 0 7px rgba(229,27,32,.2),inset 0 0 10px rgba(229,27,32,.05)}
  50%{border-color:rgba(229,27,32,1);
    box-shadow:0 0 22px rgba(229,27,32,.45),inset 0 0 18px rgba(229,27,32,.13)}
}
/* descarga que barre la etiqueta */
.nav__tag em{position:absolute;inset:0;overflow:hidden}
.nav__tag em::before{content:"";position:absolute;top:0;bottom:0;left:0;width:30%;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.92),transparent);
  filter:blur(1px);animation:tagArc 3.4s var(--ease-io) infinite}
/* filamento en el borde superior */
.nav__tag::after{content:"";position:absolute;left:0;right:0;top:0;height:1px;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.95),transparent);
  animation:flick 3.1s steps(1) infinite}
@keyframes tagArc{
  0%{transform:translateX(-140%)}
  48%,100%{transform:translateX(360%)}
}
@media (max-width:1040px){ .nav{display:none} }
body.menu-open .nav{opacity:0;pointer-events:none}

/* ---------- 12. BOTÓN DE ÍNDICE ---------- */
.mbtn{display:flex;align-items:center;gap:10px;padding:10px 0;position:relative;z-index:760}
.mbtn__lbl{position:relative;display:block;height:10px;width:70px;overflow:hidden}
.mbtn__lbl em{position:absolute;left:0;top:0;width:100%;font-style:normal;font-size:9px;
  letter-spacing:.2em;line-height:10px;color:var(--w);white-space:nowrap;
  transition:transform .5s var(--ease-io),color .4s}
@media (max-width:520px){ .mbtn__lbl{display:none} }
.mbtn__lbl em:nth-child(2){transform:translateY(130%)}
.mbtn:hover .mbtn__lbl em{color:var(--w)}
.mbtn[aria-expanded="true"] .mbtn__lbl em:nth-child(1){transform:translateY(-130%)}
.mbtn[aria-expanded="true"] .mbtn__lbl em:nth-child(2){transform:translateY(0)}
.mbtn__ln{position:relative;display:block;width:24px;height:11px}
.mbtn__ln i{position:absolute;left:0;height:1px;background:var(--w);
  transition:transform .5s var(--ease-io),width .4s var(--ease),background .4s}
.mbtn__ln i:nth-child(1){top:3px;width:24px}
.mbtn__ln i:nth-child(2){top:8px;width:14px}
.mbtn:hover .mbtn__ln i:nth-child(2){width:24px}
.mbtn[aria-expanded="true"] .mbtn__ln i{width:24px;background:var(--r)}
.mbtn[aria-expanded="true"] .mbtn__ln i:nth-child(1){transform:translateY(3px) rotate(45deg)}
.mbtn[aria-expanded="true"] .mbtn__ln i:nth-child(2){transform:translateY(-3px) rotate(-45deg)}

/* ---------- 13. MENÚ ÍNDICE ---------- */
.menu{position:fixed;inset:0;z-index:690;background:#000;
  clip-path:inset(0 0 100% 0);transition:clip-path .85s var(--ease-io);
  visibility:hidden;overflow-y:auto}
.menu.is-open{clip-path:inset(0 0 0 0);visibility:visible}
.menu__in{min-height:100%;max-width:var(--max);margin-inline:auto;
  padding:calc(var(--hdr-h) + clamp(26px,4vw,56px)) var(--gut) clamp(36px,5vw,70px);
  display:grid;grid-template-columns:1fr clamp(200px,24vw,330px);gap:clamp(30px,5vw,90px);align-items:center}
.menu__nav{display:grid;grid-template-rows:repeat(8,auto);grid-auto-flow:column;gap:2px clamp(24px,4vw,70px)}
.menu__nav a{position:relative;display:block;padding:clamp(6px,.8vw,11px) 0;
  font-size:var(--fs-xl);line-height:1.5;color:var(--w);
  transition:color .5s var(--ease),transform .6s var(--ease);
  opacity:0;transform:translateY(26px)}
.menu.is-open .menu__nav a{opacity:1;transform:none;
  transition:color .5s var(--ease),opacity .7s var(--ease) calc(var(--i) * 42ms),transform .8s var(--ease-io) calc(var(--i) * 42ms)}
.menu__nav a::before{content:"";position:absolute;left:-28px;top:50%;width:16px;height:1px;background:var(--r);
  transform:scaleX(0);transform-origin:left;transition:transform .45s var(--ease-io)}
.menu__nav a:hover,.menu__nav a.is-active{color:var(--r)}
.menu__nav a:hover{transform:translateX(26px)}
.menu__nav a:hover::before{transform:scaleX(1)}
.menu__nav a.is-active{color:var(--r)}
.menu__side{display:flex;flex-direction:column;gap:22px}
.menu__media{position:relative;aspect-ratio:3/4;overflow:hidden;background:#070707;
  opacity:0;transform:scale(1.06);transition:opacity .9s var(--ease) .25s,transform 1.1s var(--ease-io) .25s}
.menu.is-open .menu__media{opacity:1;transform:none}
.menu__media img{width:100%;height:100%;object-fit:cover;transition:opacity .45s var(--ease)}
.menu__meta{display:flex;flex-direction:column;gap:7px;font-size:8px;letter-spacing:.3em;color:var(--w)}
.menu__keys{color:var(--w)}
@media (hover:none){.menu__keys{display:none}}
@media (max-width:980px){
  .menu__in{grid-template-columns:1fr;align-items:start;gap:40px}
  .menu__nav{grid-auto-flow:row;grid-template-rows:none}
  .menu__side{display:none}
  .menu__nav a::before{display:none}
  .menu__nav a:hover{transform:none}
}

/* ---------- 14. PORTADA ---------- */
.hero{position:relative;overflow:hidden;
  padding-top:calc(var(--hdr-h) + var(--blk));padding-bottom:var(--itm)}
.hero__canvas{position:absolute;inset:0;width:100%;height:100%;opacity:.45;pointer-events:none}
/* La portada es la única que respira más por los lados: es la primera
   carta y necesita aire. El resto de la web sí llega al borde. */
.hero__grid{position:relative;z-index:2;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));
  gap:var(--gap);align-items:center;min-height:min(74vh,720px);
  padding-inline:clamp(10px,4.4vw,86px)}
.hero__txt{grid-column:1 / span 4}
/* El coche va recortado sobre el negro: nada de marco ni de recorte por
   relación de aspecto. Ocupa ocho columnas y sale por el margen derecho
   hasta el borde de pantalla, que es lo que le da presencia. Arranca en la
   columna 5 para no invadir nunca el bloque de texto. */
.hero__fig{grid-column:5 / 13}
/* El coche entra girado y se endereza con el scroll. El eje de giro va a la
   altura de las ruedas para que pivote como un coche sobre el suelo, no
   como una lámina. El JS es el único dueño de transform y opacity. */
.hero__car{width:100%;height:auto;display:block;opacity:0;
  transform-origin:46% 88%;backface-visibility:hidden;
  will-change:transform,opacity}
@media (prefers-reduced-motion:reduce){ .hero__car{opacity:1!important;transform:none!important} }
/* MKL del arranque: cada letra dibuja su contorno, se enciende y queda
   recorrida por una chispa. El orden lo marca el JS (M, K y luego L).
   El resplandor es un degradado detrás, no un filter sobre el SVG: un
   drop-shadow re-rasterizaría en cada fotograma de la animación. */
.hero__mkl{margin:0}
.hmkl{display:block;position:relative;width:min(100%,330px)}
.hmkl svg{position:relative;width:100%;height:auto;overflow:visible}
.hmkl__fill{fill:var(--r);opacity:0}
.hmkl__line{fill:none;stroke:#fff;stroke-width:.28;vector-effect:non-scaling-stroke}
/* La corriente va en dos capas: un rastro largo y tenue, y por delante un
   filamento corto y fino. Juntos leen como una descarga alargada que se
   desliza, no como un guion que corre. */
.hmkl__trail{fill:none;stroke:rgba(255,255,255,.3);stroke-width:.4;
  vector-effect:non-scaling-stroke;stroke-linecap:round;opacity:0}
.hmkl__spark{fill:none;stroke:#fff;stroke-width:.55;
  vector-effect:non-scaling-stroke;stroke-linecap:round;opacity:0;
  filter:drop-shadow(0 0 2px rgba(255,255,255,.75))}
.hmkl.is-static .hmkl__fill{opacity:1}
.hmkl.is-static .hmkl__line,
.hmkl.is-static .hmkl__trail,
.hmkl.is-static .hmkl__spark{display:none}
.hero__lead{font-size:var(--fs-m);line-height:1.9;color:var(--w);max-width:26ch;
  margin-top:var(--itm)}
.hero__cta{margin-top:var(--itm)}
.hero__foot{position:relative;z-index:2;padding-inline:clamp(10px,4.4vw,86px);display:flex;align-items:center;justify-content:space-between;
  gap:30px;margin-top:var(--blk);padding-top:28px;border-top:1px solid var(--line);flex-wrap:wrap}
.hero__scroll{display:flex;align-items:center;gap:14px;font-size:8px;letter-spacing:.36em;color:var(--w);text-transform:uppercase}
.hero__scroll i{display:block;width:52px;height:1px;background:var(--w-12);position:relative;overflow:hidden}
.hero__scroll i::after{content:"";position:absolute;inset:0;width:38%;background:var(--r);animation:slide 2.4s var(--ease) infinite}
@keyframes slide{0%{transform:translateX(-120%)}60%,100%{transform:translateX(280%)}}
.hero__place{font-size:8px;letter-spacing:.36em;color:var(--w);text-transform:uppercase}
@media (max-width:1100px){
  .hero__grid{min-height:0}
  .hero__txt{grid-column:1 / -1}
  .hero__fig{grid-column:1 / -1;margin-top:var(--blk);
    margin-inline:calc(-1 * var(--gut))}
}

/* ---------- 15. BOTONES ---------- */
.btn{position:relative;display:inline-flex;align-items:center;gap:16px;padding:18px 30px;
  border:1px solid var(--w-22);font-size:var(--fs-s);letter-spacing:.26em;overflow:hidden;
  transition:border-color .45s,color .45s;text-transform:uppercase}
.btn span,.btn i{position:relative;z-index:2}
.btn i{width:18px;height:1px;background:currentColor;transition:width .45s var(--ease)}
.btn::before{content:"";position:absolute;inset:0;background:var(--r);transform:scaleX(0);transform-origin:left;
  transition:transform .6s var(--ease-io)}
.btn:hover{border-color:var(--r);color:var(--w)}
.btn:hover::before{transform:scaleX(1)}
.btn:hover i{width:30px}

/* ---------- 16. TICKER ---------- */
.ticker{overflow:hidden;border-block:1px solid var(--line);padding-block:20px;background:#030303}
.ticker__track{display:flex;align-items:center;gap:38px;width:max-content;will-change:transform}
.ticker__track span{font-size:var(--fs-b);letter-spacing:.18em;color:var(--w);white-space:nowrap}
.ticker__track i{display:block;width:6px;height:6px;background:var(--r);transform:rotate(45deg);flex:none}

/* ---------- 16b. ENSAMBLAJE DEL ISOTIPO ----------
   Sección alta con el contenido anclado: el scroll de sus tres pantallas
   se traduce en el viaje de las dos palas y la entrada del logotipo. */
.asm{position:relative;height:210svh}
.asm__pin{position:sticky;top:0;height:100svh;display:grid;place-items:center;
  overflow:hidden}

/* La foto que irrumpe al final, a sangre sobre toda la pantalla */
.asm__photo{position:absolute;inset:0;opacity:0;will-change:opacity,transform}
.asm__photo img{width:100%;height:100%;object-fit:cover;object-position:center 42%}
.asm__photo::after{content:"";position:absolute;inset:0;
  background:linear-gradient(to top,rgba(0,0,0,.85),rgba(0,0,0,.1) 55%,rgba(0,0,0,.35))}

.asm__mark{position:relative;z-index:2;display:flex;flex-direction:column;
  align-items:center;gap:var(--blk);padding-inline:var(--gut);
  will-change:transform,opacity}
.asm__eyebrow,.asm__cap{font-size:var(--fs-s);letter-spacing:.34em;color:var(--w);
  text-transform:uppercase;text-align:center;margin:0}
.asm__cap{letter-spacing:.02em;text-transform:none;font-size:var(--fs-b);
  line-height:1.95;max-width:40ch;opacity:0}
.asm__stage{width:min(72vw,min(40vh,320px));display:grid;place-items:center}
.asm__svg{width:100%;height:auto;overflow:visible}
.asm__l,.asm__r,.asm__w{will-change:transform,opacity}
/* Entran contorneadas y se rellenan al unirse */
.asm__out{fill:none;stroke:#fff;stroke-width:.75;vector-effect:non-scaling-stroke}
.asm__sol{fill:#fff;opacity:0}
.asm__w{fill:#fff;opacity:0}

.asm__photoCap{position:absolute;z-index:3;left:0;right:0;bottom:clamp(40px,7vh,90px);
  margin:0;padding-inline:var(--gut);text-align:center;opacity:0;
  font-size:var(--fs-d);line-height:1.5;color:var(--w);
  will-change:opacity,transform}
@media (max-width:900px){ .asm{height:190svh} .asm__stage{width:min(76vw,280px)} }

/* ---------- 16d. PAREJAS VERTICALES 9:16 ----------
   De borde a borde: sin margen a los lados, solo un filo entre las dos. */
.duo{display:flex;flex-direction:column;gap:3px;margin-top:3px}
.duo__row{display:grid;grid-template-columns:1fr 1fr;gap:3px}
.duo__it{position:relative;overflow:hidden;aspect-ratio:9/16;background:#050505;margin:0}
.duo__it img{width:100%;height:100%;object-fit:cover;display:block}
@media (max-width:760px){
  .duo__row{grid-template-columns:1fr}
  .duo__it{aspect-ratio:4/5}
}

/* ---------- 16c. PIEZAS APILADAS ----------
   Cada tarjeta se queda fija bajo la cabecera y la siguiente se le monta
   encima, desplazada unos píxeles para que se vea el canto de la anterior. */
/* A sangre y en flujo normal: nada se queda clavado al hacer scroll */
.stack__set{display:flex;flex-direction:column;gap:var(--gap)}
.stack{padding-bottom:0}
.stack__it{margin:0}
.frame--wide{aspect-ratio:2/1;background:#000}
.stack__it figcaption{padding:14px var(--gut) 0;font-size:8px;letter-spacing:.32em;
  color:var(--w);text-transform:uppercase;background:var(--k)}
@media (max-width:900px){ .frame--wide{aspect-ratio:3/2} }

/* ---------- 17. SECCIONES A SANGRE ---------- */
.bleed{position:relative;min-height:100svh;display:flex;align-items:flex-end;overflow:hidden;
  padding-block:var(--blk)}
.bleed__media{position:absolute;inset:0}
.bleed__media img{width:100%;height:100%;object-fit:cover;object-position:center;transform:scale(1.12);will-change:transform}
.bleed__media::after{content:"";position:absolute;inset:0;
  background:linear-gradient(to top,rgba(0,0,0,.92) 0%,rgba(0,0,0,.35) 42%,rgba(0,0,0,.15) 100%)}
.bleed__txt{position:relative;z-index:2;width:100%}
.bleed__h{font-size:var(--fs-d);line-height:1.6;font-weight:400;letter-spacing:.08em;max-width:44ch}

/* LA FIRMA — la placa se muestra a su relación nativa, sin recorte */
/* A sangre y encadenada: arranca pegada a las fotos de arriba */
.sign{padding-block:0 var(--sec);text-align:center}
.sign__fig{margin:0}
.frame--sign{aspect-ratio:16/9}
@media (max-width:760px){ .frame--sign{aspect-ratio:4/3} }
.sign__h{margin-top:var(--blk);font-size:var(--fs-d);
  line-height:1.18;font-weight:400;letter-spacing:.01em}
.sign__p{margin:var(--itm) auto 0;font-size:var(--fs-b);line-height:2.1;
  color:var(--w);max-width:44ch}

/* ---------- 18. TERRITORIO VISUAL ----------
   Ocho cuadrados exactos en cuatro columnas: hoja de contactos. */
.frame--sq{aspect-ratio:1}
.mood{row-gap:var(--gap)}
.mood__note{margin-top:var(--itm);font-size:var(--fs-b);line-height:2;color:var(--w);max-width:52ch}
@media (max-width:620px){ .mood .c3{grid-column:span 6} }

/* ---------- 18b. REDES SOCIALES ---------- */
.soc{row-gap:var(--blk);align-items:start}
.soc__foot{margin-top:var(--blk);row-gap:var(--blk)}

/* Avatar: círculo negro con el isotipo rojo, a cuatro tamaños reales */
.ava{display:grid;place-items:center;flex:none;border-radius:50%;background:#000;
  box-shadow:inset 0 0 0 1px var(--w-12);color:var(--r)}
.ava svg{width:52%;height:auto;fill:currentColor}
.ava--l{width:76px;height:76px}
.ava--m{width:48px;height:48px}
.ava--s{width:32px;height:32px}
.ava--xs{width:22px;height:22px}
.avarow{display:flex;align-items:center;gap:18px;margin-bottom:var(--itm)}

/* Maqueta de móvil */
.phone{width:100%;max-width:300px;margin-inline:auto;background:#000;
  border:1px solid var(--w-12);border-radius:26px;padding:8px}
.phone__scr{background:#050505;border-radius:19px;overflow:hidden;padding:14px 12px 12px}
.phone__bar{display:flex;align-items:center;justify-content:space-between;
  font-size:9px;letter-spacing:.18em;color:var(--w);padding-bottom:14px}
.phone__bar i{width:12px;height:1px;background:var(--w);box-shadow:0 4px 0 var(--w),0 -4px 0 var(--w)}
.phone__top{display:flex;align-items:center;gap:12px}
.phone__top .ava{width:58px;height:58px}
.phone__st{display:flex;gap:6px;flex:1;min-width:0;justify-content:space-between;margin:0}
.phone__st>div{text-align:center;min-width:0}
.phone__st dd{margin:0;font-size:10px;color:var(--w);white-space:nowrap}
.phone__st dt{font-size:7px;letter-spacing:.1em;color:var(--w);margin-top:3px}
.phone__bio{margin:14px 0;display:flex;flex-direction:column;gap:4px}
.phone__bio b{font-size:10px;letter-spacing:.2em;font-weight:400;color:var(--w)}
.phone__bio span{font-size:8px;letter-spacing:.12em;color:var(--r)}
.phone__bio i{font-style:normal;font-size:8px;letter-spacing:.08em;color:var(--w)}
.phone__home{display:block;width:84px;height:3px;border-radius:2px;background:var(--w-22);
  margin:16px auto 4px}
.phone__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2px}
/* height:auto es obligatorio: el atributo height="420" del <img> entra como
   pista de presentación y, sin él, ganaría a la relación de aspecto. */
.phone__grid img{width:100%;height:auto;aspect-ratio:1;object-fit:cover;display:block}

/* Cuadrícula del perfil a tamaño de revisión */
.feed__g{display:grid;grid-template-columns:repeat(3,1fr);gap:4px}
.feed__g img{width:100%;height:auto;aspect-ratio:1;object-fit:cover;display:block}

/* ---------- 19. MARQUEE ---------- */
.mq{overflow:hidden;padding-block:var(--itm);border-block:1px solid var(--line)}
.mq__t{display:flex;align-items:center;gap:clamp(30px,4vw,70px);width:max-content;will-change:transform}
.mq__t span{font-size:22px;line-height:1;letter-spacing:.3em;
  color:transparent;-webkit-text-stroke:1px var(--w-12);white-space:nowrap}
.mq__t em{display:block;width:9px;height:9px;background:var(--r);transform:rotate(45deg);flex:none}

/* ---------- 20. MANIFIESTO ---------- */
.statement{font-size:var(--fs-d);line-height:1.75;font-weight:400;max-width:50ch;
  color:var(--w);margin-bottom:var(--blk)}
.statement b{font-weight:400;color:var(--w)}

/* ---------- 21. CONSTRUCCIÓN ---------- */
.build{row-gap:var(--blk)}
.stage{position:relative;transform-style:preserve-3d;transition:transform .6s var(--ease)}
.stage__svg{width:100%;height:auto;overflow:visible}
.lyr{transition:opacity .5s var(--ease)}
.lyr.is-off{opacity:0;pointer-events:none}
.grid-lines line{stroke:rgba(255,255,255,.055);stroke-width:.5}
.axis{stroke:rgba(255,255,255,.26);stroke-width:.6;stroke-dasharray:4 4}
.ext{stroke:var(--r);stroke-width:.6;stroke-dasharray:3 3;opacity:.85}
.ext--2{opacity:.42}
.vp{fill:none;stroke:var(--r);stroke-width:1}
.vp--2{stroke:rgba(229,27,32,.5)}
.box{fill:none;stroke:rgba(255,255,255,.18);stroke-width:.6}
.arc{fill:none;stroke:var(--r);stroke-width:1}
.ref{stroke:rgba(255,255,255,.34);stroke-width:.6;stroke-dasharray:3 3}
.lbl{font-size:7px;letter-spacing:.1em;fill:var(--w);font-family:"Michroma",sans-serif}
.lbl--r{text-anchor:end}
.lbl--red{fill:var(--r)}
.lyr--out polygon{fill:none;stroke:var(--w);stroke-width:1;vector-effect:non-scaling-stroke}
.lyr--solid{fill:var(--w);opacity:0;transition:opacity .5s var(--ease)}
.lyr--solid.is-on{opacity:1}

.toggles{display:flex;flex-wrap:wrap;gap:8px;margin-top:34px}
.tg{font-size:8px;letter-spacing:.24em;padding:11px 0;color:var(--w);margin-right:18px;
  transition:.35s var(--ease);text-transform:uppercase;position:relative}
.tg::after{content:"";position:absolute;left:0;right:0;bottom:4px;height:1px;background:var(--w-12);
  transition:background .35s,transform .4s var(--ease-io);transform:scaleX(.4);transform-origin:left}
.tg:hover::after{background:var(--w)}
.tg:hover::after{transform:scaleX(.75)}
.tg.is-on{color:var(--w)}
.tg.is-on::after{background:var(--r);transform:scaleX(1)}
.tg--alt.is-on::after{background:var(--w)}

.facts article{padding:var(--itm) 0;border-top:1px solid var(--line)}
.facts article:first-child{border-top:0;padding-top:0}
.facts__k{display:block;font-size:8px;letter-spacing:.34em;color:var(--r);margin-bottom:20px;text-transform:uppercase}
.facts__h{font-size:var(--fs-xl);font-weight:400;margin-bottom:16px;letter-spacing:.08em;line-height:1.5}
.build__data{position:sticky;top:calc(var(--hdr-h) + 30px)}
@media (max-width:1100px){.build__data{position:static}}

/* ---------- 22. LECTURAS ---------- */
.read{row-gap:var(--blk)}
.stage--read{display:grid;place-items:center}
.read__svg{width:100%;height:auto}
.read__iso{opacity:.15;transition:opacity .6s}
.stage--read:hover .read__iso{opacity:.25}
.read__ov{opacity:0;transition:opacity .55s var(--ease)}
.read__ov.is-on{opacity:1}
.ovl{fill:none;stroke:var(--r);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.ovl--d{stroke:var(--w);stroke-width:2.6;opacity:.55}
.ovl-dot{fill:var(--r)}
.read__ov.is-on .ovl{animation:draw 1.2s var(--ease) both}
@keyframes draw{from{stroke-dasharray:1000;stroke-dashoffset:1000}to{stroke-dasharray:1000;stroke-dashoffset:0}}
.rd{display:flex;gap:22px;width:100%;text-align:left;padding:var(--itm) 0;
  border-top:1px solid var(--line);transition:.45s var(--ease)}
.read__list .rd:first-child{border-top:0;padding-top:0}
.rd__i{flex:none;width:30px;height:1px;margin-top:11px;background:var(--w-22);transition:.45s var(--ease-io)}
.rd__b b{display:block;font-weight:400;font-size:var(--fs-b);letter-spacing:.24em;color:var(--w);margin-bottom:16px;transition:color .45s}
.rd__b i{display:block;font-style:normal;font-size:var(--fs-b);line-height:2.1;color:var(--w);max-width:42ch;transition:color .45s}
.rd:hover .rd__i{background:var(--w)}
.rd:hover .rd__i{width:44px;background:var(--w-38)}
.rd.is-on .rd__i{width:56px;background:var(--r)}
.rd.is-on .rd__b b{color:var(--w)}
.rd.is-on .rd__b i{color:var(--w)}

/* ---------- 23. TIPOGRAFÍA ---------- */
.compare{position:relative;height:clamp(190px,25vw,330px);background:#050505;
  overflow:hidden;cursor:ew-resize;user-select:none}
.compare__side{position:absolute;inset:0;display:grid;place-items:center}
.compare__side--a{color:#8d8d8d}
.compare__side--b{clip-path:inset(0 0 0 50%);background:#0a0202;color:var(--w)}
.compare__tag{position:absolute;top:20px;left:24px;font-size:8px;letter-spacing:.3em;color:var(--w);text-transform:uppercase}
.compare__side--b .compare__tag{left:auto;right:24px}
.compare__tag--red{color:var(--r)}
.compare__art{width:min(64%,540px)}
.compare__art svg{width:100%;height:auto;overflow:visible}
.compare__handle{position:absolute;top:0;bottom:0;left:50%;width:44px;transform:translateX(-50%);cursor:ew-resize}
.compare__handle i{position:absolute;left:50%;top:0;bottom:0;width:1px;background:var(--r);transform:translateX(-50%)}
.compare__handle b{position:absolute;left:50%;top:50%;width:7px;height:7px;
  transform:translate(-50%,-50%) rotate(45deg);background:var(--r)}

.type__grid{margin-block:var(--blk);row-gap:var(--itm)}
.glyph{height:150px;display:grid;place-items:center;margin-bottom:30px;overflow:hidden;position:relative}
.glyph svg{width:auto;height:76px;color:var(--w);fill:currentColor;transition:transform .7s var(--ease),color .45s}
.glyph::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--w-12);
  transition:background .5s,transform .55s var(--ease-io);transform:scaleX(1);transform-origin:left}
.gcard:hover .glyph svg{transform:scale(1.1);color:var(--r)}
.gcard:hover .glyph::after{background:var(--r)}

.scale{border-top:1px solid var(--line)}
.scale__row{display:flex;align-items:baseline;gap:clamp(18px,3vw,56px);
  padding-block:clamp(18px,2vw,28px);border-bottom:1px solid var(--line)}
.scale__k{flex:none;width:92px;font-size:8px;letter-spacing:.28em;color:var(--w);text-transform:uppercase}
.scale__s{font-size:var(--fs);line-height:1.2;color:var(--w);min-width:0;overflow:hidden;text-overflow:ellipsis}

/* ---------- 24. COLOR ---------- */
.ratio{display:flex;height:80px;margin-bottom:var(--blk)}
.ratio__seg{position:relative;width:var(--w);display:grid;place-items:center}
.ratio__seg b{font-size:9px;letter-spacing:.26em;font-weight:400}
.ratio__seg--k{background:#000;color:var(--w);box-shadow:inset 0 0 0 1px rgba(255,255,255,.1)}
.ratio__seg--w{background:var(--w);color:#000}
.ratio__seg--r{background:var(--r);color:var(--w)}

.swatches{row-gap:var(--blk)}
.sw__chip{height:220px;margin-bottom:34px;transition:transform .6s var(--ease)}
.sw__chip:focus-visible{outline:1px solid var(--r);outline-offset:5px}
.sw:hover .sw__chip{transform:translateY(-8px)}
.sw--k .sw__chip{background:#000;box-shadow:inset 0 0 0 1px rgba(255,255,255,.1)}
.sw--w .sw__chip{background:var(--w)}
.sw--r .sw__chip{background:var(--r)}
.sw__name{font-size:var(--fs-b);letter-spacing:.3em;font-weight:400;margin-bottom:26px;text-transform:uppercase}
.sw__data{margin-bottom:30px;border-top:1px solid var(--line)}
.sw__data>div{display:flex;justify-content:space-between;gap:16px;padding:11px 0;border-bottom:1px solid var(--w-06)}
.sw__data dt{font-size:8px;letter-spacing:.24em;color:var(--w);text-transform:uppercase}
.sw__data dd{margin:0;font-size:10px;letter-spacing:.1em;color:var(--w)}

.note{margin-top:var(--blk);padding-left:clamp(20px,3vw,46px);border-left:1px solid var(--r)}
.note__k{display:block;font-size:8px;letter-spacing:.34em;color:var(--r);margin-bottom:20px;text-transform:uppercase}
.note .body{max-width:74ch;color:var(--w)}

/* ---------- 25. SISTEMA ---------- */
.locks{margin-top:var(--itm);row-gap:var(--blk)}
.lock__box{position:relative;aspect-ratio:3/2;display:grid;place-items:center;background:#060606;
  padding:12%;transition:background .5s var(--ease)}
.lock__svg{width:100%;height:auto;color:var(--w);fill:currentColor;transition:color .5s}
.lock__svg--v{width:44%}
#locks.bg-w .lock__box{background:var(--w)}
#locks.bg-w .lock__svg{color:#000}
#locks.bg-r .lock__box{background:var(--r)}
#locks.bg-r .lock__svg{color:var(--w)}
.lock figcaption{margin-top:32px}
.lock figcaption .body{max-width:46ch}
.lock__guides{position:absolute;inset:0;opacity:0;transition:opacity .45s}
#locks.show-clear .lock__guides{opacity:1}
.lock__pad{position:absolute;background:rgba(229,27,32,.13);border:1px dashed rgba(229,27,32,.5)}
.lock__pad--t{top:0;left:0;right:0;height:12%}
.lock__pad--b{bottom:0;left:0;right:0;height:12%}
.lock__pad--l{left:0;top:12%;bottom:12%;width:12%}
.lock__pad--r{right:0;top:12%;bottom:12%;width:12%}
.lock__x{position:absolute;top:50%;left:4%;transform:translateY(-50%);font-size:8px;letter-spacing:.2em;color:var(--r)}

.minsize{margin-top:var(--blk);padding-top:var(--itm);border-top:1px solid var(--line);
  display:flex;align-items:flex-end;gap:clamp(28px,4vw,80px);flex-wrap:wrap}
.minsize__k{font-size:8px;letter-spacing:.3em;color:var(--w);flex:none;text-transform:uppercase}
.minsize__scale{display:flex;align-items:flex-end;gap:22px}
.minsize__scale span{display:grid;place-items:center;width:var(--s);height:var(--s);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.12);font-size:7px;color:var(--w)}
.minsize__scale .is-min{box-shadow:inset 0 0 0 1px var(--r);color:var(--r)}
.minsize .body{max-width:38ch;flex:1 1 260px}

/* ---------- 26. MERCADO ---------- */
.pos{row-gap:var(--blk)}
.map__svg{width:100%;height:auto;overflow:visible}
.map__grid line{stroke:rgba(255,255,255,.05);stroke-width:.5}
.map__axis{stroke:rgba(255,255,255,.22);stroke-width:.7}
.map__ax{font-size:7px;letter-spacing:.22em;fill:var(--w);font-family:"Michroma",sans-serif}
.map__ax--e{text-anchor:end}
.map__ax--v{text-anchor:middle}
.map__pts .pt circle{fill:var(--w-22);transition:fill .35s}
.map__pts .pt text{font-size:7px;letter-spacing:.2em;fill:var(--w);text-anchor:middle;font-family:"Michroma",sans-serif;transition:fill .35s}
.map__pts .pt:hover circle{fill:var(--w-72)}
.map__pts .pt:hover text{fill:var(--w)}
.pt--me circle{fill:var(--r)}
.pt--me text{fill:var(--w);font-size:10px;letter-spacing:.24em}
.pt__halo{fill:rgba(229,27,32,.13);stroke:var(--r);stroke-width:.6;transform-origin:330px 120px;animation:pulse 3.2s var(--ease) infinite}
@keyframes pulse{0%,100%{transform:scale(1);opacity:.9}50%{transform:scale(1.22);opacity:.42}}
.map__zone rect{fill:rgba(229,27,32,.035);stroke:rgba(229,27,32,.26);stroke-width:.6;stroke-dasharray:4 4}
.map__zone text{font-size:6.5px;letter-spacing:.22em;fill:var(--r);text-anchor:end;font-family:"Michroma",sans-serif}

/* ---------- 27. NORMAS ---------- */
.dont{row-gap:var(--blk)}
.dn__box{position:relative;aspect-ratio:4/3;display:grid;place-items:center;background:#060606;overflow:hidden}
.dn__box::after{content:"";position:absolute;width:150%;height:1px;background:rgba(229,27,32,.72);transform:rotate(-34deg)}
.dn__iso{width:42%;color:var(--w-38);fill:currentColor;transition:color .45s}
.dn:hover .dn__iso{color:var(--w-54)}
.dn__box--noise{background-image:repeating-linear-gradient(45deg,#111 0 6px,#2a2a2a 6px 12px)}
.dn__box--color .dn__iso{color:#1d6fd6}
.dn__crowd{display:flex;align-items:center;gap:4px}
.dn__crowd svg{width:56px;color:var(--w-38);fill:currentColor}
.dn__crowd span{font-size:11px;color:var(--w)}
.dn__swap{display:flex;align-items:center;gap:12px}
.dn__swap .dn__word{width:82px;color:var(--w-38);fill:currentColor}
.dn__iso--sm{width:32px}
.dn figcaption{margin-top:22px}
.dn figcaption b{display:block;font-size:9px;letter-spacing:.28em;font-weight:400;color:var(--r);margin-bottom:14px;text-transform:uppercase}
.dn figcaption i{display:block;font-style:normal;font-size:var(--fs-b);line-height:1.9;color:var(--w)}

/* ---------- 28. MOTOR ---------- */
.sec--motor{background:#020202}
.motor{row-gap:var(--blk)}
.gauge{position:relative}
.gauge svg{width:100%;height:auto}
.gauge__ticks line{stroke:var(--w-22);stroke-width:1.4}
.gauge__ticks line.is-red{stroke:var(--r)}
.gauge__ticks text{font-size:9px;fill:var(--w);text-anchor:middle;font-family:"Michroma",sans-serif}
.gauge__arc{stroke:var(--w-12);stroke-width:2}
.gauge__arc--red{stroke:var(--r);stroke-width:3}
.gauge__needle{transform-origin:150px 150px;transform:rotate(-125deg)}
.gauge__needle polygon{fill:var(--w)}
.gauge.is-red .gauge__needle polygon{fill:var(--r)}
.gauge__hub{fill:#000;stroke:var(--w-22)}
.gauge__iso{fill:var(--w-12);transition:fill .35s}
.gauge.is-red .gauge__iso{fill:var(--r)}
.gauge__read{position:absolute;left:50%;bottom:clamp(10px,3vw,34px);transform:translateX(-50%);text-align:center}
.gauge__read span{display:block;font-size:var(--fs-d);line-height:1;color:var(--w)}
.gauge.is-red .gauge__read span{color:var(--r)}
.gauge__read em{font-style:normal;font-size:7px;letter-spacing:.28em;color:var(--w)}
.motor__txt .lead{margin-top:0}
.motor__txt .body{margin-top:var(--itm);max-width:52ch}
.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));
  gap:var(--itm) var(--gap);margin-top:var(--blk)}
.stats>div{border-top:1px solid var(--line);padding-top:22px}
.stats dt{font-size:8px;letter-spacing:.3em;color:var(--w);margin-bottom:16px;text-transform:uppercase}
.stats dd{margin:0;font-size:var(--fs-xl);color:var(--w)}
@media (max-width:620px){.stats{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* ---------- 29. CIERRE ---------- */
.sec--cierre{text-align:center;padding-block:var(--sec) 0;overflow:hidden}
.cierre__iso{width:min(190px,36vw);margin:0 auto var(--blk);color:var(--w)}
.cierre__iso svg{width:100%;fill:currentColor}
.cierre__claim{font-size:var(--fs-d);letter-spacing:.3em;line-height:1.5;color:var(--w)}
.cierre__last{max-width:48ch;margin:var(--itm) auto 0;font-size:var(--fs-b);line-height:2.15;
  color:var(--w);padding-inline:var(--gut)}
.foot{display:flex;align-items:center;justify-content:space-between;gap:26px;flex-wrap:wrap;
  margin-top:var(--sec-tight);padding-block:30px;border-top:1px solid var(--line);text-align:left}
.foot__l{display:flex;align-items:center;gap:24px}
.foot__mark{width:86px;color:var(--w-38);fill:currentColor}
.foot__l span,.foot__r span{font-size:8px;letter-spacing:.3em;color:var(--w);text-transform:uppercase}
.foot__r{display:flex;gap:clamp(14px,2vw,34px);flex-wrap:wrap}
.foot__r .is-red{color:var(--r)}

/* ---------- 30. ANIMACIONES DE ENTRADA ----------
   El recorte se aplica al HIJO, nunca al elemento observado: un clip-path
   sobre el propio nodo anula su área de intersección y el
   IntersectionObserver no llegaría a dispararse nunca. */
[data-reveal]{opacity:0;transform:translateY(28px);
  transition:opacity 1s var(--ease),transform 1s var(--ease);
  transition-delay:calc(var(--d,0) * 110ms)}
[data-reveal].is-in{opacity:1;transform:none}

[data-reveal][data-reveal-type]{opacity:1;transform:none}
[data-reveal][data-reveal-type="clip"]>*{clip-path:inset(0 0 100% 0);
  transition:clip-path 1.2s var(--ease-io);transition-delay:calc(var(--d,0) * 110ms)}
[data-reveal][data-reveal-type="clip"].is-in>*{clip-path:inset(0 0 0 0)}
[data-reveal][data-reveal-type="clip"]>*+*{transition-delay:calc(var(--d,0) * 110ms + 190ms)}

[data-reveal][data-reveal-type="mask"]>*{clip-path:inset(0 100% 0 0);transition:clip-path 1.3s var(--ease-io)}
[data-reveal][data-reveal-type="mask"].is-in>*{clip-path:inset(0 0 0 0)}

/* El recorte de las imágenes a sangre no toca transform: el parallax de JS
   es el único dueño de esa propiedad. */
[data-reveal][data-reveal-type="scale"]>img{clip-path:inset(13% 15%);transition:clip-path 1.5s var(--ease-io)}
[data-reveal][data-reveal-type="scale"].is-in>img{clip-path:inset(0 0 0 0)}

.word{display:inline-block;overflow:hidden;vertical-align:top}
.word>i{display:inline-block;font-style:inherit;transform:translateY(105%);
  transition:transform .95s var(--ease-io);transition-delay:calc(var(--i) * 28ms)}
.is-in .word>i{transform:none}

@media (prefers-reduced-motion:reduce){
  [data-reveal],[data-reveal][data-reveal-type]{opacity:1!important;transform:none!important}
  [data-reveal][data-reveal-type]>*{clip-path:none!important}
  .compare__side--b{clip-path:inset(0 0 0 50%)!important}
  .word>i{transform:none!important}
  .frame img,.bleed__media img{transform:none!important}
  .pt__halo,.hero__scroll i::after,.loader__spark,.hdr__glow i,.nav__tag,
  .nav__tag em::before,.nav__tag::after,.loader__bar i::after,.aura i{animation:none}
  .nav__tag{border-color:var(--r)}
  .hmkl__fill{opacity:1}
  .hmkl__line,.hmkl__trail,.hmkl__spark{display:none}
}
