:root{--c-bg:#fefafa;--c-surface:#ffffff;--c-surface-alt:#f8f0f0;--c-text:#261917;--c-text-muted:#695a58;--c-border:#e1d8d7;--c-primary:#941e1e;--c-on-primary:#ffffff;--c-primary-hover:#a8332f;--c-primary-soft:#ffe6e3;--c-accent:#b11b1b;--c-on-accent:#ffffff;--c-accent-hover:#c6342e;--c-dark:#290b09;--c-on-dark:#ffffff;--c-on-dark-muted:#c4b3b1;--c-grad-a:#941e1e;--c-grad-b:#b11b1b;--c-overlay:#290b09cc;--font-heading:"Manrope", system-ui, -apple-system, "Segoe UI", sans-serif;--font-body:"Manrope", system-ui, -apple-system, "Segoe UI", sans-serif;--radius:10px;--radius-sm:6px;--radius-lg:16px;--shadow-sm:0 1px 3px rgba(8,12,24,.07);--shadow-md:0 6px 18px -6px rgba(8,12,24,.12);--shadow-lg:0 18px 40px -16px rgba(8,12,24,.2);--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)}
.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(14px);transition:opacity .55s ease-out,transform .55s ease-out;will-change:opacity,transform}
html.js [data-reveal="left"]{transform:translateX(-22px)}
html.js [data-reveal="right"]{transform:translateX(22px)}
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-bold{position:sticky;top:0;z-index:70;background:var(--c-primary);color:var(--c-on-primary);transition:box-shadow .25s}
.hd-bold.is-scrolled{box-shadow:var(--shadow-md)}
.hd-bold .hd-inner{display:flex;align-items:center;gap:clamp(1rem,2.5vw,2.2rem);padding-top:var(--hd-vp);padding-bottom:var(--hd-vp)}
.hd-bold .brand-mark,.hd-bold .brand-name{color:var(--c-on-primary)}
.hd-bold .hd-nav{margin-left:auto}
.hd-bold .hd-nav>ul{display:flex;gap:clamp(.9rem,2vw,1.7rem);list-style:none;margin:0;padding:0;align-items:center}
.hd-bold .hd-nav a,.hd-bold .hd-nav summary{text-decoration:none;color:var(--c-on-primary);opacity:.88;font-weight:500;font-size:.95rem;padding:.35rem 0;border-bottom:2px solid transparent;transition:opacity .2s}
.hd-bold .hd-nav a:hover,.hd-bold .hd-nav summary:hover{opacity:1}
.hd-bold .hd-nav a[aria-current="page"]{opacity:1;border-bottom-color:var(--c-on-primary)}
.hd-bold .hd-actions{display:flex;align-items:center;gap:1rem}
.hd-bold .hd-phone{color:var(--c-on-primary)}
.hd-bold .hd-phone svg{color:var(--c-on-primary)}
.hd-bold .hd-phone:hover{color:var(--c-on-primary);opacity:.85}
.hd-bold-cta{background:var(--c-on-primary);color:var(--c-primary)}
.hd-bold-cta:hover{transform:translateY(-1px);box-shadow:var(--shadow-md);color:var(--c-primary)}
.hd-bold .nav-dd-list a{color:var(--c-text)}
.hd-bold .mobile-nav summary{color:var(--c-on-primary);border-color:color-mix(in srgb,var(--c-on-primary) 40%,transparent)}
@media(max-width:1023px){.hd-bold .hd-nav,.hd-bold .hd-actions{display:none}}


.hr-image{position:relative;overflow:hidden;color:#fff}
.hr-image-media,.hr-image-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.hr-image-veil{position:absolute;inset:0;background:linear-gradient(100deg,var(--c-overlay) 30%,color-mix(in srgb,var(--c-dark) 35%,transparent))}
.hr-image-inner{position:relative;padding-top:clamp(3.5rem,9vw,7rem);padding-bottom:clamp(3.5rem,9vw,7rem)}
.hr-image .hr-main{max-width:640px}
.hr-image .hr-eyebrow{color:rgba(255,255,255,.85)}
.hr-image .hr-intro,.hr-image .hr-intro p{color:rgba(255,255,255,.92)}
.hr-image .hr-intro strong{color:#fff}
.hr-image .breadcrumbs,.hr-image .breadcrumbs a{color:rgba(255,255,255,.75)}
.hr-image .btn-outline{color:#fff;border-color:rgba(255,255,255,.55)}
.hr-image .btn-outline:hover{border-color:#fff;color:#fff;background:rgba(255,255,255,.12)}
.hr-image .hr-facts li{color:rgba(255,255,255,.92)}
.hr-image .hr-facts svg{color:#fff}


.svc-cards-grid{display:grid;gap:1.2rem;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.svc-card{display:flex;flex-direction:column;gap:.8rem;background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius);padding:1.6rem;text-decoration:none;color:var(--c-text);box-shadow:var(--shadow-sm);transition:transform .25s,box-shadow .25s,border-color .25s}
.svc-card:hover{transform:translateY(-5px);box-shadow:var(--shadow-lg);border-color:color-mix(in srgb,var(--c-primary) 45%,var(--c-border))}
.svc-icon{display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:var(--radius-sm);background:linear-gradient(135deg,var(--c-grad-a),var(--c-grad-b));color:#fff;box-shadow:var(--shadow-sm)}
.svc-card h3{margin:0;font-size:1.12rem}
.svc-link{display:inline-flex;align-items:center;gap:.4rem;margin-top:auto;color:var(--c-primary);font-weight:600;font-size:.9rem}
.svc-card:hover .svc-link svg{transform:translateX(4px)}
.svc-link svg{transition:transform .25s}


.ct-zig{display:grid;gap:clamp(1.5rem,4vw,3.5rem);align-items:center;padding:calc(var(--block-pad)*.4) 0}
@media(min-width:900px){.ct-zig{grid-template-columns:1fr 1fr}.ct-zig-rev .ct-zig-text{order:2}.ct-zig-rev .ct-zig-media{order:1}}
.ct-zig-text h2{font-size:clamp(1.4rem,2.6vw,1.9rem);margin:0 0 .8rem;letter-spacing:-.01em}
.ct-zig-text{max-width:58ch}
.ct-zig-media{margin:0;border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-md)}
.ct-zig-media img{width:100%;height:100%;object-fit:cover;transition:transform .6s}
.ct-zig-media:hover img{transform:scale(1.03)}


.tr-stats{background:var(--c-primary-soft);padding-top:calc(var(--block-pad)*.6);padding-bottom:calc(var(--block-pad)*.6)}
.tr-stats-grid{display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
.tr-stat{display:flex;gap:.9rem;align-items:flex-start}
.tr-stat-bar{flex:none;width:4px;align-self:stretch;border-radius:999px;background:linear-gradient(var(--c-grad-a),var(--c-grad-b))}
.tr-stat p{margin:0;font-weight:600;line-height:1.45}


.cta-simple{background:var(--c-dark);color:var(--c-on-dark)}
.cta-simple .cta-sub{color:var(--c-on-dark-muted)}
.cta-simple .btn-outline{color:var(--c-on-dark);border-color:color-mix(in srgb,var(--c-on-dark) 45%,transparent)}
.cta-simple .btn-outline:hover{border-color:var(--c-on-dark);color:var(--c-on-dark);background:color-mix(in srgb,var(--c-on-dark) 12%,transparent)}


.zn-grid-list{display:grid;gap:.8rem;grid-template-columns:repeat(auto-fill,minmax(190px,1fr))}
.zn-cell{display:flex;align-items:center;justify-content:space-between;gap:.6rem;padding:.85rem 1.1rem;border:1px solid var(--c-border);border-radius:var(--radius-sm);background:var(--c-surface);text-decoration:none;color:var(--c-text);font-weight:500;transition:all .2s}
.zn-cell svg{color:var(--c-primary);opacity:0;transform:translateX(-6px);transition:all .2s}
.zn-cell:hover{border-color:var(--c-primary);box-shadow:var(--shadow-sm)}
.zn-cell:hover svg{opacity:1;transform: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-dark{background:var(--c-dark);color:var(--c-on-dark-muted)}
.ft-dark .ft-name{color:var(--c-on-dark)}
.ft-dark a{color:var(--c-on-dark);text-decoration:none;transition:opacity .2s}
.ft-dark a:hover{opacity:.8;color:var(--c-on-dark)}
.ft-dark .ft-bottom{border-top:1px solid color-mix(in srgb,var(--c-on-dark) 14%,transparent)}


.catalog-cards{background:var(--c-surface)}
.cat-grid{display:grid;gap:1.2rem;grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
.cat-card{display:flex;flex-direction:column;gap:.5rem;background:var(--c-bg);border:1px solid var(--c-border);border-radius:var(--radius);padding:1.5rem;box-shadow:var(--shadow-sm);transition:transform .25s,box-shadow .25s,border-color .25s}
.cat-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-md);border-color:color-mix(in srgb,var(--c-primary) 40%,var(--c-border))}
.cat-card-title{margin:0 0 .2rem;font-size:1.08rem;line-height:1.25;color:var(--c-text)}
.cat-card p{margin:0;color:var(--c-text-muted);font-size:.96rem}


.proc-list{list-style:none;margin:0 auto;padding:0;max-width:820px;display:grid;gap:1rem}
.proc-step{display:flex;gap:1rem;align-items:flex-start;background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius);padding:1.2rem 1.4rem;box-shadow:var(--shadow-sm)}
.proc-num{flex:none;font-family:var(--font-heading);font-weight:700;font-size:1.05rem;color:#fff;width:40px;height:40px;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))}
.proc-title{margin:0 0 .25rem;font-size:1.08rem}
.proc-body p{margin:0;color:var(--c-text-muted)}


.coverage-table{background:var(--c-surface)}
.cov-scroll{overflow-x:auto;border-radius:var(--radius-sm);max-width:980px;margin:0 auto}
.cov-table{width:100%;border-collapse:collapse;font-size:.96rem;min-width:560px;background:var(--c-bg)}
.cov-table th,.cov-table td{text-align:left;padding:.85rem 1rem;border-bottom:1px solid var(--c-border);vertical-align:top}
.cov-table thead th{background:var(--c-primary);color:var(--c-on-primary);font-size:.8rem;letter-spacing:.04em;text-transform:uppercase;border-bottom:0}
.cov-table tbody th{font-weight:700;color:var(--c-text);white-space:nowrap}
.cov-table td{color:var(--c-text-muted)}
.cov-table tbody tr:last-child th,.cov-table tbody tr:last-child td{border-bottom:0}
