:root{--c-bg:#150b09;--c-surface:#211512;--c-surface-alt:#2d1d1a;--c-text:#f4edeb;--c-text-muted:#aea19f;--c-border:#3f2e2b;--c-primary:#c23b24;--c-on-primary:#ffffff;--c-primary-hover:#d74f37;--c-primary-soft:#42170f;--c-accent:#860d04;--c-on-accent:#ffffff;--c-accent-hover:#9a261a;--c-dark:#0e0504;--c-on-dark:#ffffff;--c-on-dark-muted:#c4b3af;--c-grad-a:#c23b24;--c-grad-b:#860d04;--c-overlay:#0e0504cc;--font-heading:"Archivo", system-ui, -apple-system, "Segoe UI", sans-serif;--font-body:"Archivo", system-ui, -apple-system, "Segoe UI", sans-serif;--radius:16px;--radius-sm:10px;--radius-lg:24px;--shadow-sm:0 2px 6px rgba(8,12,24,.12);--shadow-md:0 10px 28px -8px rgba(8,12,24,.22);--shadow-lg:0 28px 60px -18px rgba(8,12,24,.35);--block-pad:clamp(2.75rem,6vw,5rem);--logo-h:40px}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;min-height:100vh;display:flex;flex-direction:column;font-family:var(--font-body);color:var(--c-text);background:var(--c-bg);line-height:1.65;font-size:1rem}
main{flex:1}
img{max-width:100%;height:auto;display:block}
figure{margin:0}
h1,h2,h3,h4{font-family:var(--font-heading);line-height:1.15;letter-spacing:-.015em;color:inherit}
a{color:var(--c-primary)}
a:hover{color:var(--c-primary-hover)}
:focus-visible{outline:3px solid var(--c-accent);outline-offset:2px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.skip-link{position:absolute;left:-999px;top:0;background:var(--c-dark);color:var(--c-on-dark);padding:.6rem 1.2rem;z-index:100;text-decoration:none}
.skip-link:focus{left:0}
.container{max-width:1200px;margin:0 auto;padding-left:clamp(1rem,4vw,2.5rem);padding-right:clamp(1rem,4vw,2.5rem)}

/* Marca */
.brand-mark{display:inline-flex;align-items:center;gap:.6rem;text-decoration:none;color:var(--c-text)}
.brand-mark img{width:auto;height:40px}
.brand-name{font-family:var(--font-heading);font-weight:700;font-size:1.15rem;letter-spacing:-.01em}

/* Botones */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.78rem 1.5rem;border-radius:var(--radius-sm);text-decoration:none;font-weight:600;font-size:.96rem;border:1.5px solid transparent;cursor:pointer;transition:transform .2s,box-shadow .2s,background .2s,color .2s,border-color .2s}
.btn-primary{background:var(--c-primary);color:var(--c-on-primary);box-shadow:var(--shadow-sm)}
.btn-primary:hover{background:var(--c-primary-hover);color:var(--c-on-primary);transform:translateY(-2px);box-shadow:var(--shadow-md)}
.btn-accent{background:var(--c-accent);color:var(--c-on-accent)}
.btn-accent:hover{background:var(--c-accent-hover);color:var(--c-on-accent);transform:translateY(-2px)}
.btn-outline{background:transparent;color:var(--c-primary);border-color:color-mix(in srgb,var(--c-primary) 45%,var(--c-border))}
.btn-outline:hover{border-color:var(--c-primary);color:var(--c-primary);background:var(--c-primary-soft)}
.cta-group{display:flex;gap:.8rem;flex-wrap:wrap;margin:1.4rem 0 0}

/* Cabeceras de sección y hero compartidos */
.sec-head{margin-bottom:clamp(1.5rem,3vw,2.5rem);max-width:640px}
.sec-title{font-size:clamp(1.5rem,3vw,2.1rem);margin:0 0 .5rem}
.sec-sub{margin:0;color:var(--c-text-muted)}
.hr-eyebrow{display:inline-block;font-size:.8rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--c-primary);margin:0 0 1rem}
.hr-title{font-size:clamp(2rem,5vw,3.4rem);line-height:1.06;margin:0 0 1.1rem;max-width:20ch}
.hr-intro{font-size:1.12rem;max-width:54ch;color:var(--c-text-muted)}
.hr-intro strong{color:var(--c-text)}
.hr-facts{display:flex;flex-wrap:wrap;gap:.6rem 1.4rem;list-style:none;margin:1.6rem 0 0;padding:0}
.hr-facts li{display:inline-flex;align-items:center;gap:.45rem;font-size:.92rem;font-weight:500}
.hr-facts svg{color:var(--c-accent);flex:none}

/* Migas */
.breadcrumbs ol{display:flex;flex-wrap:wrap;gap:.25rem;list-style:none;margin:0 0 1.1rem;padding:0;font-size:.82rem;color:var(--c-text-muted)}
.breadcrumbs li+li::before{content:"/";margin:0 .45rem;opacity:.5}
.breadcrumbs a{color:inherit;text-decoration:none}
.breadcrumbs a:hover{color:var(--c-primary)}

/* Formulario / contacto */
.form-block iframe{width:100%;height:560px;border:0;display:block;background:#fff;border-radius:var(--radius-sm)}
.form-title{margin:0 0 .8rem;font-size:1.1rem}
/* Tarjeta de formulario del hero (la usa hero-split-form y la inyección común) */
.hr-form-card{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);overflow:hidden}
.hr-form-head{padding:1rem 1.4rem;background:linear-gradient(120deg,var(--c-grad-a),var(--c-grad-b));color:#fff}
.hr-form-head p{margin:0;font-weight:600;font-size:.95rem}
.hr-form-card .form-block{padding:1.2rem 1.4rem 1.4rem}
/* La cabecera "Respuesta rápida y sin compromiso" ya titula la tarjeta del hero,
   así que el form-title interno sobra aquí (sí se mantiene en la página de contacto). */
.hr-form-card .form-title{display:none}
/* Formulario inyectado en heros que no lo traen de serie. En móvil la tarjeta
   va tras el contenido (apilada). En escritorio: grid con columnas fijas para
   contenido y formulario y márgenes elásticos (1fr) a los lados, de modo que el
   grupo contenido+formulario queda centrado (cap ~ contenedor) y no se separa en
   pantallas anchas. La columna de contenido puede encoger (sin recortes) y el
   formulario es una columna propia (no tapa nada). El fondo del hero sigue a
   sangre porque sus capas decorativas son position:absolute. */
.hr-form-injected{position:relative;z-index:3}
.hr-form-injected .hr-form-card{max-width:520px;margin:0 auto}
@media(max-width:1023px){
.hr-form-injected{padding:0 clamp(1rem,4vw,2.5rem) clamp(2.5rem,6vw,4rem)}
}
@media(min-width:1024px){
.hr-has-form{--hr-fw:clamp(320px,28vw,410px);--hr-gut:clamp(1rem,4vw,2.5rem)}
/* ── Heros SIN imagen propia: grid centrado (contenido | formulario) ───────── */
.hr-has-form{display:grid;align-items:center;grid-template-columns:minmax(var(--hr-gut),1fr) minmax(0,680px) clamp(1.5rem,3vw,2.5rem) var(--hr-fw) minmax(var(--hr-gut),1fr)}
.hr-has-form.hr-stage{display:grid}/* hero-stage es flex de serie; lo forzamos a grid */
/* Por defecto los hijos abarcan TODA la fila (1/-1): las capas decorativas de
   fondo (imagen, velo, blobs, partículas…) cubren el hero entero. */
.hr-has-form>*{grid-column:1/-1;grid-row:1;min-width:0}
/* El contenido va a la columna 2; puede encoger sin desbordar. */
.hr-has-form>.container{grid-column:2;max-width:none;width:auto;margin:0;padding-left:0;padding-right:0}
/* El formulario, columna 4. */
.hr-has-form>.hr-form-injected{grid-column:4;width:auto}
.hr-has-form>.hr-form-injected .hr-form-card{max-width:none}
/* hero-centered: alinear a la izquierda para que no quede descentrado en su columna. */
.hr-has-form.hr-centered .hr-centered-inner{justify-content:flex-start;text-align:left}
.hr-has-form.hr-centered .hr-title,.hr-has-form.hr-centered .hr-intro{margin-left:0;margin-right:0}
.hr-has-form.hr-centered .cta-group,.hr-has-form.hr-centered .hr-facts,.hr-has-form.hr-centered .breadcrumbs ol{justify-content:flex-start}
/* ── Heros con imagen propia (card/showcase/frame): el formulario NO se
   superpone sobre la imagen (eso la tapaba y se veía apretado). El hero conserva
   su layout nativo y, bajo él, una banda de captación full-bleed (filete + fondo
   de superficie) con copy a la izquierda y la tarjeta de formulario a la derecha. ── */
.hr-has-form.hr-cardhero,.hr-has-form.hr-showcase,.hr-has-form.hr-frame{display:block;position:relative}
/* En estos, el contenedor recupera su centrado (el reset de columna 2 no aplica). */
.hr-has-form.hr-cardhero>.container,.hr-has-form.hr-showcase>.container,.hr-has-form.hr-frame>.container{max-width:1200px;width:auto;margin:0 auto;padding-left:clamp(1rem,4vw,2.5rem);padding-right:clamp(1rem,4vw,2.5rem)}
/* La banda vuelve al flujo normal: full-bleed con fondo y filete superior. */
.hr-has-form.hr-cardhero>.hr-form-injected,.hr-has-form.hr-showcase>.hr-form-injected,.hr-has-form.hr-frame>.hr-form-injected{position:relative;width:auto;display:block;margin-top:0;padding:clamp(2.2rem,5vw,3.5rem) clamp(1rem,4vw,2.5rem);background:var(--c-surface-alt);border-top:1px solid var(--c-border)}
/* ── hero-bento: su rejilla ocupa todo el ancho (head/accent abarcan 2 cols), así
   que la superposición taparía contenido. Va al grid (contenido | formulario):
   ocultamos su imagen y dejamos la rejilla en 2 columnas dentro de su columna. ── */
.hr-has-form.hr-bento .hr-bento-media{display:none}
.hr-has-form.hr-bento .hr-bento-grid{grid-template-columns:1fr 1fr;grid-template-areas:"head head" "s1 s2" "accent accent"}
}
/* Maqueta interna de la banda de captación (copy | formulario), centrada a ancho
   de contenedor. En móvil se apila (copy arriba, formulario debajo). */
.hr-form-band{max-width:1100px;margin:0 auto;display:grid;gap:clamp(1.6rem,4vw,2.8rem);align-items:center}
@media(min-width:860px){.hr-form-band{grid-template-columns:1fr clamp(420px,40vw,560px)}}
.hr-form-band .hr-form-card{max-width:none;width:100%;margin:0}
.hr-form-copy{min-width:0}
.hr-form-copy-title{font-family:var(--font-heading);font-size:clamp(1.5rem,2.6vw,2.1rem);line-height:1.12;margin:0 0 .7rem;text-wrap:balance}
.hr-form-copy-text{margin:0;color:var(--c-text-muted);max-width:46ch;font-size:1.02rem}
.hr-form-copy .hr-facts{margin-top:1.2rem}
.hr-form-copy-call{margin-top:1.4rem}
.contact-card p{margin:.45rem 0}
.cta-banner{background:var(--c-primary-soft);border-radius:var(--radius);padding:1.6rem;margin:2.2rem 0 0}
.cta-banner-text{margin:0;font-weight:600;font-size:1.05rem}
.cta-banner .cta-group{margin-top:1rem}

/* Páginas interiores */
.pg{padding-top:clamp(1.75rem,4vw,3rem);padding-bottom:var(--block-pad)}
.pg-head h1{font-size:clamp(1.8rem,4vw,2.6rem);margin:0 0 .8rem;max-width:24ch}
.pg-body h2,.pg-measure h2{font-size:clamp(1.25rem,2.2vw,1.6rem);margin:1.8em 0 .6em}
.pg-measure{max-width:720px;font-size:1.05rem}
.pg-measure h3{font-size:1.18rem}
.article-meta{color:var(--c-text-muted);font-size:.88rem;margin:0 0 1.5rem}

/* ── Artículo de blog: cabecera y prosa cuidada (usa solo variables del tema) ── */
.pg-article .pg-head{max-width:760px;margin-bottom:clamp(1.4rem,3vw,2.2rem);padding-bottom:clamp(1.1rem,2.5vw,1.7rem);border-bottom:1px solid var(--c-border)}
.art-kicker{display:inline-block;font-size:.78rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--c-primary);text-decoration:none;margin:0 0 .9rem}
.art-kicker:hover{color:var(--c-primary-hover)}
.pg-article .pg-head h1{font-size:clamp(2rem,4.5vw,3.1rem);line-height:1.1;letter-spacing:-.02em;text-wrap:balance;margin:0 0 1rem;max-width:20ch}
.art-meta{color:var(--c-text-muted);font-size:.9rem;margin:0}
.art-meta .art-dot{margin:0 .5rem;opacity:.5}
.art-body{margin-top:clamp(1.4rem,3vw,2.2rem)}
.art-body>p:first-of-type{font-size:1.18rem;line-height:1.7;color:var(--c-text)}
.art-body p{text-wrap:pretty}
.art-body h2{position:relative;padding-top:.85em;text-wrap:balance}
.art-body h2::before{content:"";position:absolute;left:0;top:.1em;width:2.4rem;height:3px;border-radius:3px;background:linear-gradient(90deg,var(--c-grad-a),var(--c-grad-b))}
.art-body a{color:var(--c-primary);text-underline-offset:3px;text-decoration-thickness:1px}
.art-body a:hover{color:var(--c-primary-hover)}
.art-body ul,.art-body ol{padding-left:1.3rem;margin:1.1rem 0}
.art-body li{margin:.45rem 0}
.art-body ul li::marker{color:var(--c-primary)}
.art-body blockquote{margin:1.7rem 0;padding:.3rem 0 .3rem 1.3rem;border-left:3px solid var(--c-primary);color:var(--c-text-muted);font-style:italic;font-size:1.1rem}
.art-body img{border-radius:var(--radius);margin:1.5rem 0}
.art-back{max-width:720px;margin:clamp(1.6rem,3.5vw,2.6rem) 0 0}
.art-back a{display:inline-flex;align-items:center;gap:.45rem;font-weight:600;text-decoration:none;color:var(--c-primary);transition:gap .2s}
.art-back a:hover{gap:.7rem}
.page-intro{font-size:1.1rem;color:var(--c-text-muted);max-width:64ch}
.content-section{margin:2rem 0}
.content-section h2{margin-top:0}
.zone-province h2{font-size:1.2rem;margin:1.6em 0 .6em;padding-top:.8em;border-top:1px solid var(--c-border)}
.zone-list{list-style:none;margin:0 0 1.5rem;padding:0;columns:2;column-gap:1.5rem}
@media(min-width:720px){.zone-list{columns:3}}
@media(min-width:1024px){.zone-list{columns:4}}
.zone-list a{text-decoration:none;color:var(--c-text);line-height:2.1}
.zone-list a:hover{color:var(--c-primary)}
.zone-pending{color:var(--c-text-muted)}
/* ── Zonas cercanas (página de localidad): enlazado interno por cercanía ── */
.nearby{background:var(--c-surface);padding-top:calc(var(--block-pad)*.7);padding-bottom:calc(var(--block-pad)*.7)}
.nearby-title{font-size:clamp(1.25rem,2.4vw,1.6rem);margin:0 0 1.1rem;text-wrap:balance}
.nearby-list{list-style:none;margin:0 0 1.1rem;padding:0;display:flex;flex-wrap:wrap;gap:.6rem}
.nearby-list a{display:inline-block;text-decoration:none;color:var(--c-text);background:var(--c-bg);border:1px solid var(--c-border);border-radius:999px;padding:.45rem 1rem;font-size:.95rem;font-weight:500;transition:border-color .2s,color .2s,transform .2s}
.nearby-list a:hover{color:var(--c-primary);border-color:color-mix(in srgb,var(--c-primary) 45%,var(--c-border));transform:translateY(-2px)}
/* Capital de provincia: enlace destacado (hub del silo) en color de marca. */
.nearby-list .nearby-cap a{background:var(--c-primary-soft);border-color:color-mix(in srgb,var(--c-primary) 35%,var(--c-border));color:var(--c-primary);font-weight:600}
.nearby-list .nearby-cap a:hover{border-color:var(--c-primary)}
.nearby-all{margin:0}
.nearby-all a{display:inline-flex;align-items:center;gap:.45rem;color:var(--c-primary);font-weight:600;text-decoration:none;transition:gap .2s}
.nearby-all a:hover{gap:.7rem}
/* ── Bloques de profundidad (localidad): cabecera y espaciado compartidos.
   El CSS de cada variante (tarjetas, lista, mosaicos, línea de tiempo, tabla…)
   vive en su bloque (render/blocks/depth.ts). ── */
.catalog,.process,.coverage{padding-top:var(--block-pad);padding-bottom:var(--block-pad)}
.dep-head{max-width:640px;margin:0 auto clamp(1.5rem,3vw,2.5rem);text-align:center}
.dep-kicker{display:inline-block;font-size:.78rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--c-primary);margin:0 0 .6rem}
.dep-title{font-size:clamp(1.5rem,3vw,2.1rem);margin:0;text-wrap:balance}
/* ── Consejo local: dato real → consecuencia (lo que separa programmatic de doorway) ── */
.local-tip .container{padding-top:0;padding-bottom:0}
.local-tip-box{border-left:4px solid var(--c-primary);background:var(--c-primary-soft);border-radius:var(--radius-sm);padding:1.1rem 1.3rem;max-width:760px;margin:clamp(1.4rem,3vw,2.2rem) 0}
.local-tip-label{display:block;font-size:.74rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--c-primary);margin:0 0 .35rem}
.local-tip-box p{margin:0;color:var(--c-text)}
/* ── Índice de blog: destacado + rejilla (usa solo variables del tema) ── */
.blog-lead{font-size:1.1rem;color:var(--c-text-muted);max-width:60ch;margin:-.3rem 0 clamp(1.6rem,3.5vw,2.6rem)}
.blog-kicker{display:inline-block;font-size:.74rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--c-primary)}
.blog-meta{color:var(--c-text-muted);font-size:.84rem;margin:0}
.blog-meta .blog-dot{margin:0 .4rem;opacity:.5}
.blog-readmore{display:inline-flex;align-items:center;gap:.4rem;color:var(--c-primary);font-weight:600;font-size:.92rem}
.blog-readmore svg{transition:transform .25s}
.blog-feat{display:grid;gap:0;background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-sm);text-decoration:none;color:var(--c-text);transition:transform .3s,box-shadow .3s;margin-bottom:clamp(1.2rem,2.5vw,1.8rem)}
@media(min-width:760px){.blog-feat{grid-template-columns:5fr 7fr;align-items:stretch}}
.blog-feat:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}
.blog-feat:hover .blog-readmore svg{transform:translateX(4px)}
.blog-feat-art{position:relative;overflow:hidden;min-height:190px;isolation:isolate;background:linear-gradient(135deg,var(--c-grad-a),var(--c-grad-b))}
.blog-feat-body{display:flex;flex-direction:column;gap:.6rem;padding:clamp(1.5rem,3vw,2.4rem);justify-content:center}
.blog-feat-title{margin:0;font-family:var(--font-heading);font-weight:700;font-size:clamp(1.4rem,2.6vw,2rem);line-height:1.15;letter-spacing:-.01em;text-wrap:balance}
.blog-feat-ex{margin:0;color:var(--c-text-muted)}
.blog-feat .blog-readmore{margin-top:.3rem}
.blog-grid{display:grid;gap:1.2rem;grid-template-columns:repeat(auto-fill,minmax(290px,1fr))}
.blog-card{position:relative;display:flex;flex-direction:column;gap:.6rem;background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-lg);padding:1.6rem;box-shadow:var(--shadow-sm);text-decoration:none;color:var(--c-text);overflow:hidden;transition:transform .25s,box-shadow .25s,border-color .25s}
.blog-card::before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,var(--c-grad-a),var(--c-grad-b));opacity:0;transition:opacity .25s}
.blog-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-md);border-color:color-mix(in srgb,var(--c-primary) 40%,var(--c-border))}
.blog-card:hover::before{opacity:1}
.blog-card:hover .blog-readmore svg{transform:translateX(4px)}
.blog-card-title{margin:0;font-family:var(--font-heading);font-weight:700;font-size:1.2rem;line-height:1.25;text-wrap:balance}
.blog-card-ex{margin:0;color:var(--c-text-muted);font-size:.96rem}
.blog-card .blog-readmore{margin-top:auto;padding-top:.8rem}
.contact-layout{display:grid;gap:2rem}
@media(min-width:1024px){.contact-layout{grid-template-columns:7fr 5fr;align-items:start}}
.contact-layout .form-block{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius);padding:1.5rem;box-shadow:var(--shadow-sm)}
.contact-list{list-style:none;margin:0;padding:0}
.contact-list li{padding:.7rem 0;border-bottom:1px solid var(--c-border)}
.social-links ul{display:flex;gap:1rem;flex-wrap:wrap;list-style:none;margin:.8rem 0 0;padding:0}
.pending-notice{border:1px dashed var(--c-border);border-radius:var(--radius-sm);padding:1rem;color:var(--c-text-muted);background:var(--c-surface-alt)}
.notfound-links{list-style:none;margin:1.25rem 0;padding:0}
.notfound-links a{display:inline-block;padding:.45rem 0;text-decoration:none;font-weight:600}
.zones-block h2{font-size:clamp(1.4rem,2.6vw,1.8rem)}
.zones-links{display:flex;flex-wrap:wrap;gap:.6rem;list-style:none;margin:0 0 1rem;padding:0}
.zones-links a{display:inline-block;padding:.5rem 1rem;border-radius:999px;border:1px solid var(--c-border);background:var(--c-surface);text-decoration:none;color:var(--c-text);font-size:.92rem}
.zones-links a:hover{border-color:var(--c-primary);color:var(--c-primary)}

/* Botón flotante de llamada */
.floating-call{position:fixed;right:1rem;bottom:1rem;display:inline-flex;gap:.5rem;align-items:center;background:var(--c-accent);color:var(--c-on-accent);padding:.8rem 1.3rem;border-radius:999px;text-decoration:none;font-weight:700;z-index:90;box-shadow:var(--shadow-lg);transition:transform .2s}
.floating-call:hover{transform:translateY(-3px);color:var(--c-on-accent)}

/* Navegación móvil */
.mobile-nav{display:none}
.mobile-nav summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:.5rem;border:1px solid var(--c-border);border-radius:var(--radius-sm);padding:.5rem .85rem;font-weight:600;font-size:.85rem}
.mobile-nav summary::-webkit-details-marker{display:none}
.mnav-icon{display:inline-flex;flex-direction:column;gap:4px;width:20px}
.mnav-icon span{height:2px;background:currentColor;display:block;border-radius:2px}
.mnav-list{list-style:none;margin:0;padding:0}
.mnav-sub{list-style:none;margin:0;padding:0 0 .6rem 1rem}
@media(max-width:1023px){
.mobile-nav{display:block;margin-left:auto}
.mobile-nav nav{position:absolute;left:0;right:0;top:100%;background:var(--c-surface);border-bottom:1px solid var(--c-border);padding:1rem clamp(1rem,4vw,2.5rem) 1.25rem;z-index:80;box-shadow:var(--shadow-lg)}
.hd{position:relative}
.mnav-list>li{border-bottom:1px solid var(--c-border)}
.mnav-list a{display:block;padding:.85rem 0;text-decoration:none;color:var(--c-text);font-weight:600}
.mnav-sub a{font-weight:400;padding:.4rem 0;color:var(--c-text-muted)}
.mnav-call{display:block;margin-top:1rem;text-align:center;background:var(--c-primary);color:var(--c-on-primary);padding:.85rem;border-radius:var(--radius-sm);text-decoration:none;font-weight:700}
}
button:disabled,.btn[aria-disabled="true"]{opacity:.5;cursor:not-allowed}

/* ── Sistema de seguridad de espaciado ──────────────────────────────────────
   El padding vertical de cada slot de sección se define AQUÍ (CSS base, siempre
   cargado), no dentro de una variante concreta. Así CUALQUIER bloque —y por
   tanto cualquier combinación de plantilla— tiene margen garantizado y dos
   secciones nunca quedan pegadas. Una variante puede ajustar su propio padding
   (p. ej. cintas más finas), pero nunca quedarse a cero. */
.svc,.ct,.zn{padding-top:var(--block-pad);padding-bottom:var(--block-pad)}
.tr{padding-top:calc(var(--block-pad)*.6);padding-bottom:calc(var(--block-pad)*.6)}
.cta{padding-top:calc(var(--block-pad)*.55);padding-bottom:calc(var(--block-pad)*.55)}

/* Respeto global del movimiento reducido: neutraliza marquesinas, auroras y
   cualquier animación decorativa aunque las animaciones globales estén activas
   o desactivadas. */
@media(prefers-reduced-motion:reduce){
html{scroll-behavior:auto}
*,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
}


@keyframes nx-marquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@keyframes nx-marquee-rev{from{transform:translateX(-50%)}to{transform:translateX(0)}}
@keyframes nx-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-12px)}}
@keyframes nx-float-slow{0%,100%{transform:translateY(0)}50%{transform:translateY(-22px)}}
@keyframes nx-aurora{0%{transform:translate3d(0,0,0) rotate(0)}33%{transform:translate3d(6%,-4%,0) rotate(8deg)}66%{transform:translate3d(-5%,5%,0) rotate(-6deg)}100%{transform:translate3d(0,0,0) rotate(0)}}
@keyframes nx-shimmer{0%{background-position:0% 50%}100%{background-position:200% 50%}}
@keyframes nx-glow{0%,100%{opacity:.55;transform:scale(1)}50%{opacity:.9;transform:scale(1.12)}}
@keyframes nx-spin-slow{to{transform:rotate(360deg)}}
@keyframes nx-grain{0%{transform:translate(0,0)}10%{transform:translate(-5%,-5%)}20%{transform:translate(-10%,4%)}30%{transform:translate(4%,-10%)}40%{transform:translate(-4%,12%)}50%{transform:translate(-10%,4%)}60%{transform:translate(12%,0)}70%{transform:translate(0,8%)}80%{transform:translate(-12%,0)}90%{transform:translate(8%,4%)}100%{transform:translate(0,0)}}
/* Capa de grano de película reutilizable: profundidad táctil sin coste de WebGL.
   El padre debe ser position:relative;overflow:hidden. Decorativa: la salvaguarda
   global de prefers-reduced-motion congela su animación. */
.nx-grain{position:absolute;inset:-50%;z-index:0;pointer-events:none;opacity:.4;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.82' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");animation:nx-grain 8s steps(10) infinite}


html.js [data-reveal]{opacity:0;transform:translateY(26px) scale(.975);transition:opacity .7s cubic-bezier(.16,1,.3,1),transform .7s cubic-bezier(.16,1,.3,1);will-change:opacity,transform}
html.js [data-reveal="left"]{transform:translateX(-40px)}
html.js [data-reveal="right"]{transform:translateX(40px)}
html.js [data-reveal="scale"]{transform:scale(.92)}
html.js [data-reveal="fade"]{transform:none}
html.js [data-reveal].in{opacity:1;transform:none}
html.js [data-reveal][data-reveal-delay="1"]{transition-delay:.09s}
html.js [data-reveal][data-reveal-delay="2"]{transition-delay:.18s}
html.js [data-reveal][data-reveal-delay="3"]{transition-delay:.27s}
html.js [data-reveal][data-reveal-delay="4"]{transition-delay:.36s}
html.js [data-reveal][data-reveal-delay="5"]{transition-delay:.45s}
@media(prefers-reduced-motion:reduce){
html{scroll-behavior:auto}
html.js [data-reveal]{opacity:1;transform:none;transition:none}
*{transition-duration:.01ms!important;animation-duration:.01ms!important}
}

/* Padding vertical del header proporcional al alto del logo (--logo-h). Así, al
   ajustar el tamaño del logo, el margen sobre/bajo él escala con él en lugar de
   quedar un hueco fijo; el header "abraza" el logo. */
.hd{--hd-vp:clamp(.4rem,calc(var(--logo-h,40px) * .22),1.35rem)}
/* El CTA del header se compacta para no imponer una altura mayor que el logo:
   así el logo manda en la altura del header y no hay "zona muerta" al agrandarlo. */
.hd .hd-actions .btn{padding-top:.5rem;padding-bottom:.5rem;line-height:1.2}
.nav-dd{position:relative}
.nav-dd details>summary{cursor:pointer;list-style:none;display:inline-flex;align-items:center;gap:.3em}
.nav-dd details>summary::-webkit-details-marker{display:none}
.nav-dd details>summary::after{content:"";width:.55em;height:.55em;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translateY(-25%);transition:transform .2s}
.nav-dd details[open]>summary::after{transform:rotate(225deg) translateY(25%)}
.nav-dd-list{position:absolute;left:50%;transform:translateX(-50%);top:calc(100% + .65rem);min-width:230px;max-height:60vh;overflow:auto;background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);padding:.45rem;margin:0;list-style:none;z-index:80}
.nav-dd-list a{display:block;padding:.5rem .8rem;border-radius:calc(var(--radius-sm) - 2px);text-decoration:none;color:var(--c-text);font-size:.92rem}
.nav-dd-list a:hover{background:var(--c-primary-soft);color:var(--c-text)}

.hd-glass{position:sticky;top:.8rem;z-index:70;margin-bottom:-1px}
.hd-glass-bar{display:flex;align-items:center;gap:clamp(1rem,2.5vw,2rem);padding:var(--hd-vp) .9rem var(--hd-vp) 1.1rem;border-radius:var(--radius-lg);border:1px solid color-mix(in srgb,var(--c-border) 70%,transparent);background:color-mix(in srgb,var(--c-surface) 72%,transparent);backdrop-filter:blur(18px) saturate(1.4);-webkit-backdrop-filter:blur(18px) saturate(1.4);box-shadow:var(--shadow-sm);transition:box-shadow .25s,background .25s}
.hd-glass.is-scrolled .hd-glass-bar{box-shadow:var(--shadow-lg);background:color-mix(in srgb,var(--c-surface) 88%,transparent)}
.hd-glass .hd-nav{margin-left:auto}
.hd-glass .hd-nav>ul{display:flex;gap:.25rem;list-style:none;margin:0;padding:0;align-items:center}
.hd-glass .hd-nav a,.hd-glass .hd-nav summary{text-decoration:none;color:var(--c-text);font-weight:500;font-size:.92rem;padding:.45rem .85rem;border-radius:999px;transition:background .2s,color .2s}
.hd-glass .hd-nav a:hover,.hd-glass .hd-nav summary:hover{background:var(--c-primary-soft)}
.hd-glass .hd-nav a[aria-current="page"]{background:var(--c-primary);color:var(--c-on-primary)}
.hd-glass .hd-actions{display:flex;align-items:center;gap:.9rem}
@media(max-width:1023px){.hd-glass{top:0}.hd-glass-bar{border-radius:0;border-left:0;border-right:0;border-top:0}.hd-glass .hd-nav,.hd-glass .hd-actions{display:none}}


.hr-stage{position:relative;overflow:hidden;color:#fff;min-height:clamp(540px,88vh,860px);display:flex;align-items:center;isolation:isolate}
.hr-stage-media{position:absolute;left:0;right:0;top:-10%;height:120%;z-index:-2;will-change:transform}
.hr-stage-media img{width:100%;height:100%;object-fit:cover;animation:hr-stage-curtain 1.2s cubic-bezier(.77,0,.18,1) both}
@keyframes hr-stage-curtain{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}
.hr-stage-veil{position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,color-mix(in srgb,var(--c-dark) 30%,transparent),transparent 35%),linear-gradient(75deg,var(--c-overlay) 18%,color-mix(in srgb,var(--c-dark) 25%,transparent) 70%)}
.hr-stage-inner{position:relative;padding-top:clamp(4rem,10vw,7rem);padding-bottom:clamp(4rem,10vw,7rem)}
.hr-stage .hr-main{max-width:680px}
.hr-stage-title{text-wrap:balance;max-width:16ch;font-size:clamp(2.4rem,6vw,4.4rem)}
.hr-stage .hr-eyebrow{color:rgba(255,255,255,.85)}
.hr-stage .hr-intro,.hr-stage .hr-intro p{color:rgba(255,255,255,.92)}
.hr-stage .hr-intro strong{color:#fff}
.hr-stage .breadcrumbs,.hr-stage .breadcrumbs a{color:rgba(255,255,255,.75)}
.hr-stage .btn-outline{color:#fff;border-color:rgba(255,255,255,.55)}
.hr-stage .btn-outline:hover{border-color:#fff;color:#fff;background:rgba(255,255,255,.12)}
.hr-stage .hr-facts li{color:rgba(255,255,255,.92)}
.hr-stage .hr-facts svg{color:#fff}
.hr-stage-scroll{position:absolute;left:50%;bottom:1.4rem;width:26px;height:42px;margin-left:-13px;border:2px solid rgba(255,255,255,.55);border-radius:14px;z-index:1}
.hr-stage-scroll::before{content:"";position:absolute;left:50%;top:7px;width:3px;height:8px;margin-left:-1.5px;border-radius:2px;background:#fff;animation:nx-float 1.6s ease-in-out infinite}


.svc-rows{list-style:none;margin:0;padding:0;border-top:1px solid var(--c-border)}
.svc-row{display:grid;grid-template-columns:auto 1fr auto;gap:1.2rem;align-items:center;padding:1.2rem .4rem;border-bottom:1px solid var(--c-border);transition:background .2s,padding .2s}
.svc-row:hover{background:var(--c-surface-alt);padding-left:1rem}
.svc-row-no{font-size:.8rem;font-weight:700;letter-spacing:.12em;color:var(--c-primary)}
.svc-row h3{margin:0;font-size:1.15rem}
.svc-row-link{display:inline-flex;align-items:center;gap:.4rem;color:var(--c-primary);font-weight:600;font-size:.92rem;text-decoration:none;white-space:nowrap}
.svc-row-link:hover svg{transform:translateX(4px)}
.svc-row-link svg{transition:transform .25s}
@media(max-width:640px){.svc-row{grid-template-columns:auto 1fr}.svc-row-link{grid-column:2}}


.ct-stk-grid{display:grid;gap:clamp(1.5rem,4vw,3rem)}
@media(min-width:980px){.ct-stk-grid{grid-template-columns:5fr 7fr;align-items:start}}
.ct-stk-sticky{max-width:34ch}
@media(min-width:980px){.ct-stk-sticky{position:sticky;top:6rem}}
.ct-stk-sticky .cta-group{margin-top:1.4rem}
.ct-stk-flow{display:grid;gap:clamp(1.6rem,4vw,2.8rem)}
.ct-stk-sec{padding-bottom:clamp(1.4rem,3vw,2rem);border-bottom:1px solid var(--c-border)}
.ct-stk-sec:last-child{border-bottom:0;padding-bottom:0}
.ct-stk-no{display:inline-block;font-size:.78rem;font-weight:700;letter-spacing:.14em;color:var(--c-primary);margin-bottom:.6rem}
.ct-stk-sec h2{font-size:clamp(1.4rem,2.6vw,1.9rem);margin:0 0 .8rem;letter-spacing:-.01em}
.ct-stk-sec p{max-width:60ch}


.tr-marquee{padding-top:calc(var(--block-pad)*.4);padding-bottom:calc(var(--block-pad)*.4);background:var(--c-primary-soft)}
.tr-mq{overflow:hidden;-webkit-mask:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);mask:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent)}
.tr-mq-track{display:inline-flex;align-items:center;gap:1.6rem;white-space:nowrap;animation:nx-marquee 32s linear infinite;will-change:transform}
.tr-mq:hover .tr-mq-track{animation-play-state:paused}
.tr-mq-item{display:inline-flex;align-items:center;gap:.55rem;font-weight:600;font-size:1rem;color:var(--c-text)}
.tr-mq-item svg{color:var(--c-accent);flex:none}
.tr-mq-dot{color:var(--c-primary);opacity:.5;font-size:.6rem}


.cta-card{position:relative;text-align:center;background:var(--c-surface);border-radius:var(--radius-lg);padding:clamp(2rem,5vw,3.5rem);box-shadow:var(--shadow-lg)}
.cta-card::before{content:"";position:absolute;inset:0;border-radius:inherit;padding:1.5px;background:linear-gradient(135deg,var(--c-grad-a),var(--c-grad-b));-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude}
.cta-card .cta-sub{margin-bottom:1.4rem;color:var(--c-text-muted)}
.cta-card .cta-group{justify-content:center}


.zn-marquee .zn-mq{overflow:hidden;padding:.45rem 0;-webkit-mask:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);mask:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent)}
.zn-marquee .zn-mq-track{display:inline-flex;gap:.7rem;white-space:nowrap;animation:nx-marquee 40s linear infinite;will-change:transform}
.zn-marquee .zn-mq-rev{animation-name:nx-marquee-rev;animation-duration:46s}
.zn-marquee .zn-mq:hover .zn-mq-track{animation-play-state:paused}
.zn-mq-chip{display:inline-block;padding:.55rem 1.15rem;border-radius:999px;background:var(--c-surface);border:1px solid var(--c-border);text-decoration:none;color:var(--c-text);font-weight:500;font-size:.94rem;transition:background .2s,color .2s,border-color .2s}
.zn-mq-chip:hover{background:var(--c-primary);border-color:var(--c-primary);color:var(--c-on-primary)}
.zn-marquee .zn-all{margin:1.4rem 0 0}
.zn-marquee .zn-all a{font-weight:600;text-decoration:none}


.ft{margin-top:auto}
.ft-grid{display:grid;gap:2.2rem;padding-top:clamp(2.5rem,5vw,4rem);padding-bottom:1.8rem}
@media(min-width:720px){.ft-grid{grid-template-columns:1fr 1fr}}
@media(min-width:1024px){.ft-grid{grid-template-columns:4fr 3fr 3fr 2fr}}
.ft-name{font-family:var(--font-heading);font-weight:700;font-size:1.25rem;margin:0 0 .5rem}
.ft-desc{font-size:.94rem;max-width:38ch;margin:0 0 .6rem}
.ft-h{font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;margin:0 0 .9rem;font-weight:700;opacity:.7}
.ft-zones,.footer-legal-list{list-style:none;margin:0;padding:0}
.ft-zones li,.footer-legal-list li{margin:.4rem 0}
.ft-more{margin:.6rem 0 0}
.footer-contact{font-style:normal}
.footer-contact p{margin:.4rem 0}
.ft-bottom{display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;align-items:center;padding-top:1.2rem;padding-bottom:1.4rem;font-size:.85rem}
.ft-bottom p{margin:0}
.ft .social-links ul{display:flex;gap:.9rem;flex-wrap:wrap;list-style:none;margin:.8rem 0 0;padding:0}

.ft-gradient{position:relative;overflow:hidden;color:#fff;background:linear-gradient(150deg,var(--c-grad-a),var(--c-grad-b));isolation:isolate}
.ft-grad-glow{position:absolute;z-index:-1;top:-30%;right:-10%;width:520px;height:520px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.28),transparent 60%);filter:blur(40px)}
.ft-gradient .ft-name{color:#fff}
.ft-gradient .ft-h{color:#fff;opacity:.85}
.ft-gradient a{color:#fff;text-decoration:none;transition:opacity .2s}
.ft-gradient a:hover{opacity:.8;color:#fff}
.ft-gradient .ft-bottom{border-top:1px solid rgba(255,255,255,.22)}
.ft-grad-hero{text-align:center;padding-top:clamp(2.5rem,6vw,4.5rem);padding-bottom:.5rem}
.ft-grad-hero h2{color:#fff;font-size:clamp(1.6rem,3.5vw,2.4rem);letter-spacing:-.01em;margin:0 0 1.4rem}
.ft-grad-hero .cta-group{justify-content:center}
.ft-grad-hero .btn-primary{background:#fff;color:var(--c-grad-a)}
.ft-grad-hero .btn-primary:hover{background:#fff;transform:translateY(-2px)}
.ft-grad-hero .btn-outline{color:#fff;border-color:rgba(255,255,255,.55)}
.ft-grad-hero .btn-outline:hover{border-color:#fff;color:#fff;background:rgba(255,255,255,.12)}


.catalog-tiles{background:var(--c-surface)}
.cat-tiles{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(290px,1fr))}
.cat-tile{display:flex;gap:.9rem;align-items:flex-start;background:var(--c-bg);border:1px solid var(--c-border);border-radius:var(--radius);padding:1.3rem}
.cat-tile-no{flex:none;font-family:var(--font-heading);font-weight:700;font-size:.95rem;color:#fff;width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);background:linear-gradient(135deg,var(--c-grad-a),var(--c-grad-b))}
.cat-tile-title{margin:0 0 .25rem;font-size:1.02rem}
.cat-tile p{margin:0;color:var(--c-text-muted);font-size:.94rem}


.process-cards{background:var(--c-surface)}
.pc-grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.pc-card{background:var(--c-bg);border:1px solid var(--c-border);border-radius:var(--radius);padding:1.5rem 1.4rem 1.3rem;box-shadow:var(--shadow-sm)}
.pc-no{display:block;font-family:var(--font-heading);font-weight:800;font-size:1.9rem;line-height:1;background:linear-gradient(135deg,var(--c-grad-a),var(--c-grad-b));-webkit-background-clip:text;background-clip:text;color:transparent;margin:0 0 .5rem}
.pc-title{margin:0 0 .35rem;font-size:1.04rem}
.pc-card p{margin:0;color:var(--c-text-muted);font-size:.94rem}


.cov-grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
.cov-card{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius);padding:1.4rem;box-shadow:var(--shadow-sm)}
.cov-card-title{margin:0 0 .4rem;font-size:1.05rem;color:var(--c-primary)}
.cov-card-need{margin:0 0 .6rem;color:var(--c-text);font-size:.95rem}
.cov-card-serv{margin:0;color:var(--c-text-muted);font-size:.92rem}
.cov-card-serv span{font-weight:700;color:var(--c-text)}
