@font-face{font-family:'Manrope';font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/Manrope-400-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Manrope';font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/Manrope-400-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Manrope';font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/Manrope-500-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Manrope';font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/Manrope-500-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Manrope';font-style:normal;font-weight:600;font-display:swap;src:url(../fonts/Manrope-600-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Manrope';font-style:normal;font-weight:600;font-display:swap;src:url(../fonts/Manrope-600-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Outfit';font-style:normal;font-weight:700;font-display:swap;src:url(../fonts/Outfit-700-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Outfit';font-style:normal;font-weight:700;font-display:swap;src:url(../fonts/Outfit-700-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Outfit';font-style:normal;font-weight:800;font-display:swap;src:url(../fonts/Outfit-800-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Outfit';font-style:normal;font-weight:800;font-display:swap;src:url(../fonts/Outfit-800-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}

/* EMA Metrologistics — site.css — dirección A "Puerto de noche" */
:root{
  --red:#d81f26;--red-2:#b70419;--blue:#1f5fb8;
  --font-head:"Outfit",system-ui,-apple-system,"Segoe UI",sans-serif;
  --font-body:"Manrope",system-ui,-apple-system,"Segoe UI",sans-serif;
  --wrap:1200px;--wrap-wide:1440px;--gutter:clamp(1rem,4vw,3.5rem);
  --r-xs:2px;--r-sm:6px;--r-md:10px;--r-lg:14px;
  --ease:cubic-bezier(.2,.7,.2,1);--t:220ms;--hdr-h:80px;--snap-h:0px;
}
/* tema oscuro (predeterminado); las zonas con foto, el pie y la cabecera sobre un hero lo conservan en el tema claro */
:root,.hero,.band,.card--photo,.product,.compliance,.ftr,.has-hero:not(.is-menu-open) .hdr:not(.hdr--compact){
  color-scheme:dark;
  --bg:#071426;--bg-2:#0b1f3f;--panel:#0f2547;--line:rgba(255,255,255,.12);--line-2:rgba(255,255,255,.22);--line-3:rgba(255,255,255,.5);
  --text:#eef3fb;--text-2:#c7d6ee;--muted:#9fb3d1;--sky:#8cc3ff;--strong:#fff;--error:#ff9aa0;--up:#4ade80;--down:#ff8a8f;--snap-bg:rgba(140,195,255,.06);
  --hdr-bg:rgba(7,20,38,.72);--hdr-bg-compact:rgba(7,20,38,.88);--chip-bg:rgba(255,255,255,.1);--focus-ring:rgba(140,195,255,.2);
  --shadow:0 20px 60px rgba(2,10,24,.55);--elev:none;
  --select-arrow:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9' viewBox='0 0 14 9'%3E%3Cpath d='M1 1l6 6 6-6' fill='none' stroke='%238cc3ff' stroke-width='2'/%3E%3C/svg%3E");
}
/* tema claro: solo con el conmutador (theme.js pone data-theme="light" en <html>) */
:root[data-theme="light"]{
  color-scheme:light;
  --bg:#f4f6fa;--bg-2:#e9eef6;--panel:#ffffff;--line:rgba(11,26,47,.12);--line-2:rgba(11,26,47,.22);--line-3:rgba(11,26,47,.5);
  --text:#0b1a2f;--text-2:#2a3b55;--muted:#4f607a;--sky:#1f5fb8;--strong:#0b1a2f;--error:#b3121b;--up:#15803d;--down:#b91c1c;--snap-bg:rgba(31,95,184,.05);
  --hdr-bg:rgba(244,246,250,.8);--hdr-bg-compact:rgba(244,246,250,.94);--chip-bg:rgba(11,26,47,.07);--focus-ring:rgba(31,95,184,.2);
  --shadow:0 18px 50px rgba(11,26,47,.12);--elev:0 1px 2px rgba(11,26,47,.05),0 10px 30px rgba(11,26,47,.06);
  --select-arrow:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9' viewBox='0 0 14 9'%3E%3Cpath d='M1 1l6 6 6-6' fill='none' stroke='%231f5fb8' stroke-width='2'/%3E%3C/svg%3E");
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--text);font:400 1.125rem/1.6 var(--font-body);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden}
img,picture{max-width:100%;display:block}
picture img{width:100%;height:auto}
a{color:var(--sky);text-decoration:none;transition:color var(--t)}
a:hover{color:var(--strong)}
:focus-visible{outline:2px solid var(--sky);outline-offset:3px;border-radius:2px}
h1,h2,h3,h4{font-family:var(--font-head);font-weight:700;line-height:1.05;letter-spacing:-.02em;margin:0 0 .5em;text-wrap:balance}
h1{font-weight:800}
p{margin:0 0 1em;max-width:62ch}
p:last-child{margin-bottom:0}
ul,ol{margin:0;padding:0}
dl,dd{margin:0}
b,strong{font-weight:600}
.sr{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip{position:absolute;left:1rem;top:-100px;z-index:200;background:var(--red);color:#fff;padding:.6rem 1rem;border-radius:var(--r-sm);font-weight:600}
.skip:focus{top:1rem}
.wrap{width:min(100% - 2*var(--gutter),var(--wrap));margin-inline:auto}
.wrap--wide{width:min(100% - 2*var(--gutter),var(--wrap-wide))}
.cover{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center}

/* grano */
.grain{position:fixed;inset:0;z-index:90;pointer-events:none;opacity:.045;mix-blend-mode:screen;background-size:200px 200px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
:root[data-theme="light"] .grain{opacity:.03;mix-blend-mode:multiply}

/* tipografía */
.eyebrow{font:600 .78rem/1.3 var(--font-body);letter-spacing:.2em;text-transform:uppercase;color:var(--sky);margin:0 0 1.25rem}
/* migas de las fichas y los artículos: ocupan el sitio del eyebrow y llevan su letra. El separador es un
   ángulo dibujado con bordes (un carácter en content lo leería un lector de pantalla); un nombre largo
   parte línea en vez de abrir scroll horizontal en un móvil de 320 px, con el ángulo a la altura de la
   primera línea. */
.crumbs{font:600 .78rem/1.5 var(--font-body);letter-spacing:.14em;text-transform:uppercase;margin:0 0 1.25rem}
.crumbs ol{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;align-items:center;gap:.3rem .75rem}
.crumbs li{display:inline-flex;align-items:flex-start;gap:.75rem;min-width:0;overflow-wrap:anywhere;color:var(--text-2)}
.crumbs li+li::before{content:"";flex:none;width:.4em;height:.4em;border-top:1.5px solid var(--muted);border-right:1.5px solid var(--muted);margin-top:.5em;transform:rotate(45deg)}
.crumbs a{color:var(--sky)}
.crumbs a:hover{color:var(--strong)}
/* en una ficha de servicio las migas van fuera de .prose (sus li llevan viñeta) pero con su mismo ancho: el
   nav toma la letra del texto para que 70ch midan lo mismo que en .prose, y la lista recupera la de .crumbs */
.crumbs--prose{font:inherit;letter-spacing:normal;max-width:70ch}
.crumbs--prose ol{font:600 .78rem/1.5 var(--font-body);letter-spacing:.14em}
.display{font-size:clamp(2.75rem,1.5rem + 5.2vw,5.5rem);line-height:.98;letter-spacing:-.025em;margin-bottom:.4em}
h2{font-size:clamp(2rem,1.2rem + 3vw,3.25rem)}
h3{font-size:1.375rem;letter-spacing:-.01em}
.lead{font-size:clamp(1.125rem,1rem + .5vw,1.375rem);line-height:1.5;color:var(--text-2);max-width:36em}
.muted{color:var(--muted)}

/* botones y enlaces */
.btn{display:inline-flex;align-items:center;gap:.5rem;padding:.95rem 1.4rem;border-radius:var(--r-sm);font:600 1rem/1 var(--font-body);color:#fff;border:1px solid transparent;cursor:pointer;white-space:nowrap;transition:background var(--t),border-color var(--t),transform var(--t),color var(--t)}
.btn--primary{background:var(--red);border-color:var(--red)}
.btn--primary:hover{background:var(--red-2);border-color:var(--red-2);color:#fff;transform:translateY(-1px)}
.btn--ghost{border-color:var(--line-2);background:transparent;color:var(--strong)}
.btn--ghost:hover{border-color:var(--strong);color:var(--strong);transform:translateY(-1px)}
.btn--sm{padding:.7rem 1.05rem;font-size:.9rem}
.btn:active{transform:scale(.98)}
.btn[disabled]{opacity:.6;cursor:wait;transform:none}
.link-arrow{display:inline-flex;align-items:center;gap:.4rem;font-weight:600;color:var(--sky)}
.link-arrow::after{content:"→";transition:transform var(--t)}
.link-arrow:hover::after{transform:translateX(4px)}
/* enlace de vuelta (a un índice): la flecha va delante y apunta al otro lado */
.link-arrow--back{flex-direction:row-reverse}
.link-arrow--back::after{content:"←"}
.link-arrow--back:hover::after{transform:translateX(-4px)}
.actions{display:flex;flex-wrap:wrap;gap:.9rem;align-items:center}

/* cabecera */
.hdr{position:fixed;inset:0 0 auto 0;z-index:100;background:var(--hdr-bg);border-bottom:1px solid var(--line);transition:background var(--t);isolation:isolate}
.hdr::before{content:"";position:absolute;inset:0;z-index:-1;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}
.hdr--compact{--hdr-h:64px;background:var(--hdr-bg-compact)}
.hdr__in{height:var(--hdr-h);display:flex;align-items:center;gap:1.5rem;transition:height var(--t) var(--ease)}
.brand{display:flex;align-items:center;gap:.75rem;color:var(--strong);font:700 1.2rem/1 var(--font-head);letter-spacing:.01em}
.brand:hover{color:var(--strong)}
.brand__logo{width:44px;height:44px;flex:none;filter:drop-shadow(0 2px 6px rgba(0,0,0,.5))}
.brand__logo img{width:44px;height:44px;object-fit:contain}
:root[data-theme="light"] .brand__logo{filter:drop-shadow(0 1px 3px rgba(11,26,47,.25))}
.brand__name span{font-weight:500;color:var(--text-2)}
.brand__name{white-space:nowrap}
/* Con la marca en una línea, en un móvil de 320-399px no cabían marca, conmutador y menú: el botón del menú se
   encogía hasta 14px y desaparecía. Por debajo de 400px la marca baja de tamaño y el botón no se encoge nunca. */
@media (max-width:399px){
  .brand{gap:.5rem;font-size:.9rem}
  .brand__logo,.brand__logo img{width:32px;height:32px}
}
.nav{margin-left:auto;display:flex;align-items:center;gap:1.5rem}
.nav__list{display:flex;gap:1.4rem;list-style:none}
.nav__list a{color:var(--text-2);font-weight:500;font-size:.95rem;padding:.4rem 0;border-bottom:2px solid transparent;transition:color var(--t),border-color var(--t)}
.nav__list a:hover,.nav__list a[aria-current]{color:var(--strong);border-bottom-color:var(--red)}
.nav__aside{display:flex;align-items:center;gap:1.25rem}
/* selector de idioma: bandera (decorativa) + código; el borde fino separa del fondo las franjas blancas
   de EE. UU. y Países Bajos en el tema claro. La bandera del idioma actual va a plena opacidad. */
.lang{display:flex;gap:.2rem;list-style:none}
.lang a{display:flex;align-items:center;gap:.4rem;font-size:.75rem;line-height:1;letter-spacing:.12em;color:var(--muted);padding:.35rem .45rem;border-radius:4px}
.lang a:hover,.lang a:focus-visible{color:var(--strong)}
.lang a[aria-current="true"]{color:var(--strong);background:var(--chip-bg)}
.lang__flag{flex:none;width:20px;height:14px;border-radius:var(--r-xs);box-shadow:0 0 0 1px var(--line-2);opacity:.85;transition:opacity var(--t)}
.lang a:hover .lang__flag,.lang a:focus-visible .lang__flag,.lang a[aria-current="true"] .lang__flag{opacity:1}
.burger{display:none;flex:none;margin-left:auto;width:44px;height:44px;border:1px solid var(--line-2);border-radius:var(--r-sm);background:transparent;cursor:pointer;position:relative}
.burger i{position:absolute;left:11px;right:11px;top:50%;height:2px;background:var(--strong);transform:translateY(-1px);transition:background var(--t)}
.burger i::before,.burger i::after{content:"";position:absolute;left:0;right:0;height:2px;background:var(--strong);transition:transform var(--t)}
.burger i::before{top:-7px}
.burger i::after{top:7px}
.is-menu-open .burger i{background:transparent}
.is-menu-open .burger i::before{transform:translateY(7px) rotate(45deg)}
.is-menu-open .burger i::after{transform:translateY(-7px) rotate(-45deg)}
.theme-toggle{display:grid;place-items:center;flex:none;width:40px;height:40px;margin-left:-.75rem;padding:0;border:1px solid var(--line-2);border-radius:var(--r-sm);background:transparent;color:var(--text-2);cursor:pointer;transition:color var(--t),border-color var(--t)}
.theme-toggle:hover{color:var(--strong);border-color:var(--strong)}
.theme-toggle svg{width:20px;height:20px}
.theme-toggle__moon,:root[data-theme="light"] .theme-toggle__sun,html:not(.theme-ready) .theme-toggle{display:none}
:root[data-theme="light"] .theme-toggle__moon{display:block}
/* Entre 1280 y 1339px el selector enseña solo las banderas: con el código visible, «EMA Metrologistics» no cabe en
   una línea (la marca necesita unos 1193px de contenido en español con códigos, 1086 sin ellos). El código sigue
   en el HTML, oculto a la vista y no a los lectores de pantalla, así que el nombre accesible no cambia. Medido en
   tests/test_build.py con las fuentes reales. */
@media (min-width:1280px) and (max-width:1339px){
  .lang a{gap:0;padding:.35rem}
  .lang__code{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
}
/* Solo en el dominio de pruebas (build.py --demo-seguimiento) el menú lleva una séptima entrada, la demo de
   seguimiento de embarques. Para que quepa con los mismos puntos de corte, en escritorio la letra y los huecos del
   menú bajan un poco y el selector enseña solo banderas hasta 1371px:
   unos 1132px de contenido en español con banderas y 1238 con código.
   Medido en tests/test_build.py; la web de producción no cambia. */
@media (min-width:1280px){.hdr--demo .nav__list{gap:1rem}.hdr--demo .nav__list a{font-size:.9rem}}
@media (min-width:1340px) and (max-width:1371px){
  .hdr--demo .lang a{gap:0;padding:.35rem}
  .hdr--demo .lang__code{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
}
/* Menú móvil hasta 1279px: con seis entradas en el menú, cuatro idiomas con bandera y la marca en una línea,
   .hdr__in no hace flex-wrap. Desde 1280px caben con el selector solo de banderas (unos 1086px de contenido
   en español, el idioma más largo; en 1041, pt 1070, nl 1044) y desde 1340px con banderas y código (unos
   1193px de contenido en español; en 1147, pt 1176, nl 1150). tests/test_build.py lo mide con las fuentes
   reales, y el menú de site.js cierra en el mismo punto. */
@media (max-width:1279px){
  .burger{display:block;margin-left:0}
  .hdr__in{gap:.6rem}
  .theme-toggle{margin-left:auto}
  .nav{position:fixed;inset:var(--hdr-h) 0 0 0;background:var(--bg);flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:2rem;padding:2rem var(--gutter);margin:0;transform:translateX(100%);transition:transform 300ms var(--ease),visibility 0s linear 300ms;overflow:auto;visibility:hidden}
  .is-menu-open .nav{transform:none;visibility:visible;transition:transform 300ms var(--ease),visibility 0s}
  .nav__list{flex-direction:column;gap:.25rem;width:100%}
  .nav__list a{display:block;font:700 2rem/1.2 var(--font-head);letter-spacing:-.02em;padding:.5rem 0;border-bottom:1px solid var(--line)}
  .nav__aside{flex-direction:column;align-items:flex-start;gap:1.5rem}
  /* en el menú: los idiomas en fila, con banderas algo mayores; con flex-wrap nunca hay scroll lateral
     (caben en una fila desde unos 350px de ancho; en un móvil más estrecho pasan a dos). */
  .lang{flex-wrap:wrap;gap:.4rem}
  .lang a{font-size:1rem;gap:.5rem;padding:.5rem .6rem}
  .lang__flag{width:24px;height:17px}
  .is-menu-open{overflow:hidden}
}

/* panorama del mercado energético: bajo la navegación, se pliega al bajar; sin JS no ocupa espacio */
html.has-js[data-market-bar]{--snap-h:48px}
.snapshot{display:none;height:var(--snap-h);overflow:hidden;border-top:1px solid var(--line);background:var(--snap-bg);transition:height var(--t) var(--ease),opacity var(--t),visibility 0s}
html.has-js .snapshot{display:block}
.hdr--compact .snapshot,.is-menu-open .snapshot{height:0;opacity:0;visibility:hidden;border-top-width:0;transition:height var(--t) var(--ease),opacity var(--t),visibility 0s linear var(--t)}
.snapshot__in{height:100%;display:flex;align-items:stretch}
.snapshot__head{flex:none;max-width:14rem;display:flex;flex-direction:column;justify-content:center;gap:.12rem;max-width:none;margin:0;padding-right:1rem;border-right:1px solid var(--line)}
.snapshot__title{font:600 .64rem/1.2 var(--font-body);letter-spacing:.16em;text-transform:uppercase;color:var(--text-2);white-space:nowrap}
.snapshot__status{font-size:.62rem;line-height:1.2;color:var(--muted);white-space:nowrap}
.snapshot__short{display:none}
.snapshot__demo{display:inline-block;margin-left:.5rem;font:700 .58rem/1 var(--font-body);letter-spacing:.1em;color:#fff;background:var(--red);border-radius:3px;padding:.18rem .32rem;vertical-align:1px}
.snapshot__rail{flex:1;min-width:0;display:flex}
.snapshot__rail.is-running{-webkit-mask-image:linear-gradient(90deg,transparent,#000 3%,#000 97%,transparent);mask-image:linear-gradient(90deg,transparent,#000 3%,#000 97%,transparent)}
.snapshot__rail.is-running .snapshot__list{width:max-content;overflow:visible;scroll-snap-type:none}
.snapshot.has-more .snapshot__rail{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 2.5rem),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - 2.5rem),transparent)}
.snapshot__list{flex:1;min-width:0;display:flex;list-style:none;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity;scrollbar-width:none}
.snapshot__list::-webkit-scrollbar{display:none}
.snapshot__item{flex:none;display:flex;flex-direction:column;justify-content:center;gap:.12rem;padding:0 .56rem;border-right:1px solid var(--line);scroll-snap-align:start}
.snapshot__item:last-child{border-right:0}
.snapshot__label{font:600 .6rem/1.2 var(--font-body);letter-spacing:.09em;color:var(--muted);white-space:nowrap}
.snapshot__quote{display:flex;align-items:baseline;gap:.35rem;white-space:nowrap}
.snapshot__price{font:600 .92rem/1.15 var(--font-body);font-variant-numeric:tabular-nums;color:var(--strong)}
.snapshot__unit{margin-left:.15rem;font-size:.66rem;font-weight:500;color:var(--muted)}
.snapshot__change{font-size:.72rem;font-weight:600;font-variant-numeric:tabular-nums}
.snapshot__change.is-up{color:var(--up)}
.snapshot__change.is-down{color:var(--down)}
.snapshot__change.is-flat{color:var(--muted)}
.snapshot__na{font:600 .92rem/1.15 var(--font-body);color:var(--muted)}
.snapshot__mark{color:var(--sky);margin-left:.1em;font-weight:700}
.snapshot__flag{font-size:.56rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);border:1px solid var(--line-2);border-radius:3px;padding:.05rem .25rem}
/* Botón de pausa de las cintas (WCAG 2.2.2), con el aspecto del conmutador de tema. 32px: por encima del
   mínimo de 24 de WCAG 2.5.8 y deja 8px arriba y abajo en la barra de 48, sitio para el anillo de foco que
   el overflow:hidden de .snapshot recortaría. El icono sigue a aria-pressed, que es lo que anuncia el estado.
   Borde --line-3 y no --line-2: un control que aparece y desaparece necesita un contorno de al menos 3:1 para
   encontrarlo (con .22 quedaba en 1,6:1 en claro y 2:1 en oscuro; con .5, ≥ 3:1 en los dos y en la cabecera sobre foto). */
.marquee-toggle{display:grid;place-items:center;flex:none;width:32px;height:32px;padding:0;border:1px solid var(--line-3);border-radius:var(--r-sm);background:transparent;color:var(--text-2);cursor:pointer;transition:color var(--t),border-color var(--t)}
.marquee-toggle[hidden]{display:none}
.marquee-toggle:hover{color:var(--strong);border-color:var(--strong)}
.marquee-toggle:focus-visible{outline:2px solid var(--sky);outline-offset:2px;border-radius:var(--r-sm);color:var(--strong)}
.marquee-toggle svg{width:16px;height:16px}
.marquee-toggle__play,.marquee-toggle[aria-pressed="true"] .marquee-toggle__pause{display:none}
.marquee-toggle[aria-pressed="true"] .marquee-toggle__play{display:block}
.snapshot__toggle{align-self:center;margin-left:.6rem}
@media (max-width:900px){.snapshot__head{max-width:8.5rem;padding-right:.8rem}.snapshot__title{white-space:normal}.snapshot__status{font-size:.6rem;white-space:normal}.snapshot__long{display:none}.snapshot__short{display:inline}.snapshot__item{padding:0 .8rem}}

/* hero */
.hero{position:relative;isolation:isolate;overflow:hidden;background:var(--bg);color:var(--text);display:flex;flex-direction:column;justify-content:flex-end;min-height:min(100dvh,960px);padding-top:calc(var(--hdr-h) + var(--snap-h))}
.hero--page{min-height:min(62vh,640px)}
.hero__bg{z-index:-2}
.hero__shade{position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,rgba(7,20,38,.96) 0%,rgba(7,20,38,.82) 38%,rgba(7,20,38,.35) 70%,rgba(7,20,38,.15) 100%),linear-gradient(180deg,rgba(7,20,38,.3) 0%,rgba(7,20,38,0) 40%,rgba(7,20,38,.94) 100%)}
.hero__in{padding-block:clamp(4rem,10vh,7rem) clamp(2.5rem,5vh,3.5rem);max-width:860px}
.hero__in .lead{margin-bottom:2rem}
.hero--page .hero__in{padding-block:clamp(3rem,8vh,5rem) clamp(2.5rem,6vh,4rem)}
/* credenciales del hero: tarjetas de cristal enlazadas, oscuras en los dos temas */
.creds{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;list-style:none;margin-bottom:clamp(1.75rem,4vh,3rem)}
.creds li{display:flex}
.cred{position:relative;isolation:isolate;overflow:hidden;flex:1;display:grid;grid-template-columns:1fr auto;grid-template-areas:"icon arrow" "body body";align-content:start;gap:1rem .75rem;padding:1.15rem 1.2rem 1.3rem;border:1px solid rgba(255,255,255,.14);border-radius:var(--r-md);background:rgba(7,20,38,.5);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:var(--text);transition:transform var(--t) var(--ease),border-color var(--t),background var(--t)}
.cred::before{content:"";position:absolute;inset:0 0 auto 0;height:2px;background:var(--red);transform:scaleX(.16);transform-origin:left;transition:transform 450ms var(--ease)}
.cred:hover,.cred:focus-visible{color:var(--text);transform:translateY(-3px);border-color:rgba(255,255,255,.32);background:rgba(7,20,38,.7)}
.cred:focus-visible{border-radius:var(--r-md)}
.cred:hover::before,.cred:focus-visible::before{transform:scaleX(1)}
.cred__icon{grid-area:icon;display:grid;place-items:center;width:42px;height:42px;border-radius:50%;color:var(--sky);background:rgba(140,195,255,.1);border:1px solid rgba(140,195,255,.24)}
.cred__icon svg{width:22px;height:22px}
.cred__arrow{grid-area:arrow;align-self:center;color:var(--muted);transition:transform var(--t) var(--ease),color var(--t)}
.cred__arrow svg{display:block;width:18px;height:18px}
.cred:hover .cred__arrow,.cred:focus-visible .cred__arrow{transform:translateX(4px);color:#fff}
.cred__body{grid-area:body;display:grid;gap:.3rem}
.cred__value{font:700 clamp(1.3rem,1.05rem + .7vw,1.55rem)/1.1 var(--font-head);letter-spacing:-.02em;color:#fff}
.cred__label{font-size:.95rem;font-weight:600;line-height:1.3;color:var(--text-2)}
.cred__text{font-size:.85rem;line-height:1.45;color:var(--muted)}
@media (max-width:1100px){.creds{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.creds{gap:.6rem}.cred{gap:.7rem .5rem;padding:.9rem .9rem 1rem}.cred__icon{width:34px;height:34px}.cred__icon svg{width:18px;height:18px}.cred__arrow{display:none}.cred__value{font-size:1.05rem}.cred__label{font-size:.8rem}.cred__text{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}}

/* secciones y retículas */
.section{position:relative;padding-block:clamp(4rem,8vw,7rem) clamp(4.5rem,9vw,8rem)}
.section--tight{padding-block:clamp(3rem,6vw,5rem)}
.section.section--first{padding-top:calc(var(--hdr-h) + var(--snap-h) + clamp(3rem,6vw,5rem))}
.section__head{display:grid;grid-template-columns:1.1fr .9fr;gap:1.5rem 3rem;align-items:end;margin-bottom:clamp(2rem,4vw,3.5rem)}
.section__head .eyebrow{grid-column:1/-1;margin-bottom:0}
.section__head h2{margin:0}
.section__head p{color:var(--muted);margin:0 0 .35rem}
.grid{display:grid;gap:1rem}
.grid--2{grid-template-columns:repeat(2,1fr)}
.grid--3{grid-template-columns:repeat(3,1fr)}
.grid--4{grid-template-columns:repeat(4,1fr)}
.two{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,5vw,5rem);align-items:center}
.two--top{align-items:start}
.section__more{margin-top:2rem}
.media{position:relative;border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow);aspect-ratio:4/3;background:var(--panel)}
.media picture{position:absolute;inset:0}
.media img{width:100%;height:100%;object-fit:cover}
.media--portrait{aspect-ratio:3/4}
.media--worker img{object-position:80% center}
@media (max-width:1000px){.grid--4,.grid--3{grid-template-columns:repeat(2,1fr)}}
@media (max-width:820px){.section__head{grid-template-columns:1fr}.two{grid-template-columns:1fr}}
@media (max-width:600px){.grid--4,.grid--3,.grid--2{grid-template-columns:1fr}}

/* tarjetas */
.card{position:relative;isolation:isolate;display:flex;flex-direction:column;color:inherit;background:linear-gradient(180deg,rgba(255,255,255,.045),rgba(255,255,255,.01)),var(--panel);border:1px solid var(--line);border-radius:var(--r-md);padding:1.6rem 1.5rem 1.7rem;box-shadow:var(--elev);transition:transform var(--t) var(--ease),border-color var(--t)}
.card:hover{transform:translateY(-2px);border-color:var(--line-2);color:inherit}
.card__title{font-size:1.25rem;margin:0 0 .5rem}
.short{color:var(--sky);font-weight:500;margin-bottom:.75rem}
.card__text{font-size:.95rem;color:var(--muted);margin:0}
.card--photo{padding:0;min-height:260px;justify-content:flex-end;overflow:hidden;border:0;color:var(--text)}
.card--photo:hover{color:var(--text)}
.card--photo .cover{z-index:-2;transition:transform 600ms var(--ease)}
.card--photo:hover .cover{transform:scale(1.04)}
.card--photo::after{content:"";position:absolute;inset:0;z-index:-1;
  background:linear-gradient(180deg,rgba(7,20,38,.2) 0%,rgba(7,20,38,.62) 45%,rgba(7,20,38,.95) 100%)}
.card--photo .card__body{display:grid;gap:.2rem;padding:1.4rem}
.card--photo .card__title{margin:0;padding:0}
.card--photo .card__text{color:rgba(255,255,255,.84)}

/* pilares y chips */
.pillars{display:grid;grid-template-columns:repeat(4,1fr);gap:1.5rem;margin-top:clamp(2.5rem,5vw,4rem);padding-top:2rem;border-top:1px solid var(--line)}
.pillar::before{content:"";display:block;width:36px;height:3px;background:var(--red);margin-bottom:1rem}
.pillar h3{font-size:1.1rem;margin:0 0 .35rem}
.pillar p{font-size:.95rem;color:var(--muted)}
.chips{display:flex;flex-wrap:wrap;gap:.6rem;list-style:none}
.chip{border:1px solid var(--line-2);border-radius:999px;padding:.45rem 1rem;font-size:.95rem;color:var(--text-2)}
@media (max-width:900px){.pillars{grid-template-columns:1fr 1fr}}
@media (max-width:520px){.pillars{grid-template-columns:1fr}}

/* bandas de foto */
.band{position:relative;isolation:isolate;overflow:hidden;background:var(--bg);color:var(--text);min-height:clamp(360px,45vw,560px);display:flex;align-items:center;padding-block:clamp(3rem,6vw,5rem)}
.band .cover{z-index:-2}
.band__video{opacity:0;transition:opacity 900ms var(--ease)}
.band__video.is-playing{opacity:1}
.band__shade{position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,rgba(7,20,38,.9) 0%,rgba(7,20,38,.6) 45%,rgba(7,20,38,.15) 100%)}
.band__in{max-width:720px}
.band__list{list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:.6rem 2.5rem;font-size:1.05rem;color:var(--text-2);margin:1.5rem 0 2rem}
.band__list li::before{content:"•";color:var(--sky);margin-right:.6rem}
.band--cta{min-height:clamp(320px,40vw,480px)}
.band--cta .lead{margin-bottom:1.75rem}
@media (max-width:600px){.band__list{grid-template-columns:1fr}}

/* compliance */
.compliance{isolation:isolate;overflow:hidden;background:var(--bg);color:var(--text)}
.compliance .cover{z-index:-2;opacity:.18}
.compliance::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,var(--bg),rgba(7,20,38,.55),var(--bg))}
.registry{display:grid;grid-template-columns:auto 1fr;gap:0 1.5rem;border-top:1px solid var(--line)}
.registry dt,.registry dd{padding:.8rem 0;border-bottom:1px solid var(--line)}
.registry dt{color:var(--muted);font-size:.8rem;letter-spacing:.06em;text-transform:uppercase;padding-top:1rem}
.registry dd{font-weight:600;color:var(--text)}
.doclist{list-style:none;display:grid;gap:.6rem;margin:0 0 1.75rem}
.doclist li{padding-left:1.75rem;position:relative;color:var(--text-2)}
.doclist li::before{content:"✓";position:absolute;left:0;top:0;color:var(--sky);font-weight:700}
@media (max-width:520px){.registry{grid-template-columns:1fr;gap:0}.registry dt{border-bottom:0;padding-bottom:.1rem}}

/* liderazgo */
.leader{display:grid;grid-template-columns:minmax(240px,340px) 1fr;gap:clamp(2rem,5vw,4rem);align-items:center}
.leader__roles{list-style:none;display:flex;flex-wrap:wrap;gap:.4rem .9rem;color:var(--muted);font-size:.9rem;margin:.25rem 0 1.5rem}
.leader__roles li+li::before{content:"·";margin-right:.9rem;color:var(--line-2)}
.quote{font:500 clamp(1.25rem,1rem + 1vw,1.6rem)/1.4 var(--font-head);letter-spacing:-.01em;margin:0 0 1.25rem;padding-left:1.25rem;border-left:3px solid var(--red);max-width:30em}
@media (max-width:760px){.leader{grid-template-columns:1fr}.leader .media{max-width:320px}}

/* asociados y clientes: carrusel infinito de logos (sin JS o con reduced-motion, fila estática centrada) */
.partners{isolation:isolate;overflow:hidden;text-align:center}
.partners::before{content:"";position:absolute;left:50%;top:-40%;z-index:-1;width:min(120vmin,1100px);aspect-ratio:1;border-radius:50%;background:radial-gradient(closest-side,rgba(140,195,255,.1),transparent);filter:blur(30px);transform:translateX(-50%);pointer-events:none}
:root[data-theme="light"] .partners::before{background:radial-gradient(closest-side,rgba(31,95,184,.08),transparent)}
.partners__head .eyebrow{margin:0 auto .9rem}
.partners__title{font-size:clamp(1.6rem,1.1rem + 2vw,2.5rem);max-width:24ch;margin:0 auto}
.partners__title span{display:block;color:var(--muted)}
.partners__rule{height:1px;max-width:30rem;margin:clamp(1.75rem,3.5vw,2.75rem) auto;background:linear-gradient(90deg,transparent,var(--line-2),transparent)}
.logo-cloud+.logo-cloud{margin-top:clamp(1.75rem,3.5vw,2.5rem)}
.logo-cloud__label{font:600 .72rem/1.3 var(--font-body);letter-spacing:.2em;text-transform:uppercase;color:var(--muted);margin:0 0 1rem}
.marquee{overflow:hidden;padding-block:.35rem}
.marquee__track{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:1.25rem 42px;list-style:none}
.marquee__item{flex:none}
.marquee__item img{height:44px;width:auto;max-width:none;opacity:.8;user-select:none;pointer-events:none}
.logo-cloud--partners .marquee__item img{height:52px}
:root[data-theme="light"] .marquee__item img{filter:brightness(0);opacity:.7}
.marquee.is-running{-webkit-mask-image:linear-gradient(90deg,transparent,#000 14%,#000 86%,transparent);mask-image:linear-gradient(90deg,transparent,#000 14%,#000 86%,transparent)}
.marquee.is-running .marquee__track{flex-wrap:nowrap;justify-content:flex-start;width:max-content;will-change:transform}
/* centrado bajo las dos cintas: es block (grid) con margen automático, y oculto no ocupa sitio */
.partners__toggle{margin:clamp(1.25rem,2.5vw,1.75rem) auto 0}
@media (max-width:600px){.marquee__item img{height:36px}.logo-cloud--partners .marquee__item img{height:42px}}

/* páginas interiores */
.story{list-style:none;display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1.5rem}
.story li{position:relative;padding-top:1.25rem;border-top:2px solid var(--line)}
.story li::before{content:"";position:absolute;left:0;top:-2px;width:48px;height:2px;background:var(--red)}
.story b{display:block;font:700 1.9rem/1 var(--font-head);letter-spacing:-.02em;margin-bottom:.5rem}
.story h3{font-size:1.15rem;margin-bottom:.4rem}
.story p{font-size:.95rem;color:var(--muted)}
.zig{display:grid;gap:clamp(3rem,6vw,5rem)}
.zig__row{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,5vw,4rem);align-items:center}
.zig__row:nth-child(even) .media{order:2}
.zig__row h3{font-size:clamp(1.6rem,1.2rem + 1.5vw,2.25rem);letter-spacing:-.02em}
.zig__row,.product{scroll-margin-top:calc(var(--hdr-h) + 1.5rem)}
.steps{list-style:none;display:grid;grid-template-columns:repeat(4,1fr);gap:1.5rem}
.steps--3{grid-template-columns:repeat(3,1fr)}
.steps li{padding:1.5rem;border:1px solid var(--line);border-radius:var(--r-md);background:var(--panel);box-shadow:var(--elev)}
.steps h3{font-size:1.1rem}
.steps p{font-size:.95rem;color:var(--muted)}
/* Productos: cada uno es una banda con su foto detrás; el lado del texto se alterna. */
.product{position:relative;isolation:isolate;display:flex;align-items:center;min-height:clamp(380px,52vw,520px);
  padding-block:clamp(2.5rem,5vw,4rem);overflow:hidden;color:var(--text)}
.product+.product{border-top:1px solid rgba(255,255,255,.08)}
.product .cover{z-index:-2}
.product__shade{position:absolute;inset:0;z-index:-1;
  background:linear-gradient(90deg,rgba(7,20,38,.94) 0%,rgba(7,20,38,.86) 38%,rgba(7,20,38,.35) 72%,rgba(7,20,38,.15) 100%)}
.product:nth-of-type(even) .product__shade{
  background:linear-gradient(270deg,rgba(7,20,38,.94) 0%,rgba(7,20,38,.86) 38%,rgba(7,20,38,.35) 72%,rgba(7,20,38,.15) 100%)}
.product__in{max-width:38rem}
.product:nth-of-type(even) .product__in{margin-left:auto}
.product h3{font-size:clamp(1.6rem,3vw,2.1rem);margin:.5rem 0 .3rem}
.product .short{color:var(--sky);font-weight:600;margin-bottom:.9rem}
.product dl{display:grid;grid-template-columns:auto 1fr;gap:.35rem 1.2rem;margin-top:1.2rem;align-items:baseline}
.product dt{font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);white-space:nowrap}
.product dd{margin:0;color:var(--text-2)}
/* el titular del índice es el enlace a la ficha: mantiene el color del titular y avisa al pasar por encima */
.product h3 a{color:inherit}
.product h3 a:hover{color:var(--sky)}
.product__more{margin-top:1.4rem}
/* Ficha de producto: el nombre es más largo que el titular de una página fija, y la <dl> de
   especificación y condiciones se pinta como tarjetas (la del índice depende del tema oscuro de .product). */
.hero--sheet .display{font-size:clamp(2.25rem,1.5rem + 3vw,3.75rem)}
.specs{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-top:clamp(2rem,4vw,3rem)}
.specs>div{padding:1.5rem;border:1px solid var(--line);border-radius:var(--r-md);background:var(--panel);box-shadow:var(--elev)}
.specs dt{font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:.6rem}
.specs dd{margin:0;color:var(--text-2)}
@media (max-width:900px){.story,.steps,.steps--3{grid-template-columns:1fr 1fr}}
@media (max-width:820px){.zig__row{grid-template-columns:1fr}.zig__row:nth-child(even) .media{order:0}
  .product{min-height:0}
  .product__shade,.product:nth-of-type(even) .product__shade{background:linear-gradient(180deg,rgba(7,20,38,.72),rgba(7,20,38,.94) 55%)}
  .product:nth-of-type(even) .product__in{margin-left:0}}
@media (max-width:520px){.story,.steps,.steps--3,.specs{grid-template-columns:1fr}}

/* por qué nosotros (Empresa) */
.why{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(1rem,3vw,2rem)}
.why__item{display:grid;grid-template-columns:auto 1fr;align-items:start;align-content:start;gap:.4rem 1.25rem;padding:clamp(1.5rem,3vw,2.25rem);border:1px solid var(--line);border-radius:var(--r-lg);background:var(--panel);box-shadow:var(--elev)}
.why__icon{grid-row:span 2;display:grid;place-items:center;width:52px;height:52px;border-radius:50%;color:var(--red);background:rgba(216,31,38,.1);border:1px solid rgba(216,31,38,.28)}
.why__icon svg{width:26px;height:26px}
.why__item h3{margin:.2rem 0 0;font-size:1.35rem}
.why__item p{margin:0;color:var(--muted)}
@media (max-width:760px){.why{grid-template-columns:1fr}}

/* contacto y formulario */
.contact{display:grid;grid-template-columns:1.2fr .8fr;gap:clamp(2rem,5vw,5rem);align-items:start}
.form{display:grid;gap:1.1rem}
.form__row{display:grid;grid-template-columns:1fr 1fr;gap:1.1rem}
.field{display:grid;gap:.4rem;align-content:start}
.field label{font-size:.85rem;font-weight:600;color:var(--text-2)}
.field input,.field select,.field textarea{width:100%;background:var(--panel);border:1px solid var(--line-2);border-radius:var(--r-sm);color:var(--text);font:inherit;font-size:1rem;padding:.8rem .95rem;transition:border-color var(--t),box-shadow var(--t)}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--sky);outline:none;box-shadow:0 0 0 3px var(--focus-ring)}
.field textarea{min-height:160px;resize:vertical}
.field select{appearance:none;padding-right:2.5rem;background-image:var(--select-arrow);background-repeat:no-repeat;background-position:right 1rem center}
.field select option{color:#0b1f3f;background:#fff}
.field.is-invalid input,.field.is-invalid select,.field.is-invalid textarea{border-color:var(--red)}
.field__error{display:none;font-size:.85rem;color:var(--error)}
.field.is-invalid .field__error{display:block}
.hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0;overflow:hidden}
.form__status{display:none;padding:1rem 1.2rem;border-radius:var(--r-md);border:1px solid var(--line-2);background:var(--panel)}
.form__status.is-ok{display:block;border-color:rgba(76,201,140,.6)}
.form__status.is-err{display:block;border-color:rgba(216,31,38,.7)}
.form__status b{display:block;margin-bottom:.25rem}
.form__note{font-size:.85rem;color:var(--muted)}
.form__note a{text-decoration:underline}
.details dl{display:grid;gap:1.25rem}
.details dt{font-size:.75rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:.25rem}
.details dd{color:var(--text)}
@media (max-width:900px){.contact{grid-template-columns:1fr}}
@media (max-width:600px){.form__row{grid-template-columns:1fr}}

/* legal, 404 */
.prose{max-width:70ch}
.prose h1{font-size:clamp(2.2rem,1.5rem + 2.5vw,3.25rem)}
.prose h2{font-size:1.5rem;margin-top:2.5rem}
.prose h3{font-size:1.15rem;margin-top:2rem}
.prose p{color:var(--text-2)}
.prose ul{list-style:none;display:grid;gap:.5rem;margin:0 0 1.5rem}
.prose li{position:relative;padding-left:1.2rem;color:var(--text-2)}
.prose li::before{content:"•";position:absolute;left:0;color:var(--sky)}
.prose blockquote{margin:1.5rem 0;padding-left:1.2rem;border-left:2px solid var(--line-2);color:var(--text-2)}
.prose blockquote p{margin:0}
/* AUD-2: en texto corrido el enlace no puede distinguirse solo por el color (WCAG 1.4.1); se excluye .btn
   porque service.html mete un botón dentro de un <p> de .prose y no debe llevar subrayado. */
.prose p a:not(.btn),.prose li a:not(.btn){text-decoration:underline;text-underline-offset:.15em}
.updated{color:var(--muted);font-size:.9rem;margin-bottom:2rem}
.notfound{min-height:100dvh;display:grid;place-items:center;text-align:center;padding:calc(var(--hdr-h) + var(--snap-h) + 2rem) var(--gutter) 3rem}
.notfound__langs{display:grid;gap:1.75rem;margin-top:2rem;justify-items:center}
.notfound picture{width:120px;margin:0 auto 1.5rem}
.notfound picture img{height:120px;object-fit:contain}
.notfound__langs p{margin:0 0 .5rem}

/* pie */
.ftr{border-top:1px solid var(--line);padding-block:clamp(3rem,6vw,5rem) 2rem;background:var(--bg-2);font-size:.95rem;color:var(--text-2)}
.ftr__grid{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:2.5rem}
.ftr h3{font:600 .8rem/1.3 var(--font-body);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin:0 0 1rem}
.ftr ul{list-style:none;display:grid;gap:.5rem}
.ftr a{color:var(--text-2)}
.ftr a:hover{color:var(--strong)}
.ftr__brand img{width:120px;height:120px;object-fit:contain;margin-bottom:1rem}
.ftr__brand p{color:var(--muted)}
.ftr__legal{display:flex;flex-wrap:wrap;gap:.5rem 1.5rem;justify-content:space-between;margin-top:3rem;padding-top:1.5rem;border-top:1px solid var(--line);font-size:.82rem;color:var(--muted)}
.ftr__legal ul{display:flex;gap:1.5rem}
@media (max-width:820px){.ftr__grid{grid-template-columns:1fr 1fr}}
@media (max-width:520px){.ftr__grid{grid-template-columns:1fr}}

/* aparición al hacer scroll (solo con JS y sin reduced-motion) */
@media (prefers-reduced-motion:no-preference){
  html.js [data-reveal],html.js [data-reveal-stagger]>*{opacity:0;transform:translateY(18px);transition:opacity 600ms var(--ease),transform 600ms var(--ease)}
  html.js [data-reveal].is-visible,html.js [data-reveal-stagger].is-visible>*{opacity:1;transform:none}
  html.js [data-reveal-stagger].is-visible>:nth-child(2){transition-delay:80ms}
  html.js [data-reveal-stagger].is-visible>:nth-child(3){transition-delay:160ms}
  html.js [data-reveal-stagger].is-visible>:nth-child(4){transition-delay:240ms}
  html.js [data-reveal-stagger].is-visible>:nth-child(5){transition-delay:320ms}
  html.js [data-reveal-stagger].is-visible>:nth-child(6){transition-delay:400ms}
  html.js [data-reveal-stagger].is-visible>:nth-child(7){transition-delay:480ms}
  html.js [data-reveal-stagger].is-visible>:nth-child(8){transition-delay:560ms}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .card--photo:hover .cover{transform:none}
  *,*::before,*::after{transition-duration:.01ms!important;transition-delay:0s!important;animation-duration:.01ms!important;animation-delay:0s!important}
}
