/* =========================================================
   PUBLIMPACTO · TOKENS GLOBALES Y SHELL
   Fuente canónica del shell común. Las copias idénticas que aún existen en
   CSS crítico de Home/style.css se conservan como fallback anti-FOUC.
   ========================================================= */
:root {
  --pi-red:#e3063b;
  --pi-green:#1e9e3f;
  --pi-blue:#009fe3;
  --pi-yellow:#f7b500;
  --pi-brand-live-color:var(--pi-red);
  --pi-accent:#e5b32a;
  --pi-black:#000;
  --pi-white:#fff;
  --pi-ink:#111;
  --pi-paper:#f5f5f2;
  --pi-line:rgba(0,0,0,.12);
  --pi-line-inverse:rgba(255,255,255,.13);
  --pi-focus-color:var(--pi-blue);
  --pi-ease:cubic-bezier(.16,1,.3,1);
  --pi-z-shell:100;
  --pi-z-menu:99;
}

/* La geometría base se genera en interior-shell.js. Cada contexto conserva
   su propia posición, tamaño, escala, opacidad, color y velocidad. */
.pi-geometry-primitive { pointer-events:none; }

/* Enlaces de navegación global. */
.mil-menu-list .pi-nav-local-link { font-size:12px!important;padding-left:14px!important;border-left:1px solid rgba(255,255,255,.28); }
.mil-menu-list .pi-nav-local-link[aria-current="page"] { color:#fff; }
.mil-footer-menu .pi-footer-local-link { font-size:.78em;line-height:1.3; }
.mobile-menu__services .pi-nav-local-link { padding-left:14px;border-left:1px solid currentColor; }
.pi-footer-fallback-link { display:block;font-size:14px;padding:15px 0;color:inherit; }

/* La plantilla oculta la columna de servicios en escritorios de poca altura.
   Este acceso alternativo sólo aparece en ese caso; no duplica el menú móvil. */
.pi-nav-local-compact { display:none!important; }
html.pi-menu-open,
body.pi-menu-open {
  overflow:hidden!important;
  overscroll-behavior:none;
}
.pi-skip-link {
  position:fixed;
  left:16px;
  top:-80px;
  z-index:20000;
  padding:12px 18px;
  background:#fff;
  color:#000;
  transition:top .2s ease;
}
.pi-skip-link:focus { top:16px; }
@media (min-width:1201px) and (max-height:800px) {
  .mil-main-menu ul li.pi-nav-local-compact { display:block!important; }
  .mil-main-menu ul li.pi-nav-local-compact a { font-size:22px;line-height:1.3;padding-left:16px;border-left:1px solid rgba(255,255,255,.28); }
}


/* =========================================================
   MENU OVERLAY PREMIUM · 2026-09-19
   Arquitectura inspirada en la plantilla original Ashley,
   adaptada a Publimpacto sin alterar el resto del sitio.
   ========================================================= */
.pi-menu-premium {
  background:#000;
}

.pi-menu-premium .mil-menu-content {
  min-height:100vh;
}

.pi-menu-premium .pi-menu-premium__layout {
  min-height:100vh;
  align-items:stretch;
}

.pi-menu-premium .mil-main-menu {
  min-height:100vh;
  height:auto;
}

.pi-menu-premium .mil-main-menu ul li {
  margin-bottom:28px;
}

.pi-menu-premium .mil-main-menu ul li a {
  font-size:clamp(27px,2.15vw,36px);
  line-height:1.08;
  color:rgba(255,255,255,.78);
  transition:
    color .34s ease,
    transform .48s cubic-bezier(.16,1,.3,1);
  transform:translateX(0);
  will-change:transform,color;
}

.pi-menu-premium .mil-main-menu ul li.mil-active > a {
  color:var(--pi-brand-live-color,var(--pi-accent,#e5b32a))!important;
}

@media (hover:hover) and (pointer:fine) {
  .pi-menu-premium .mil-main-menu ul li a:hover {
    color:var(--pi-brand-live-color,var(--pi-accent,#e5b32a))!important;
    transform:translateX(5px);
  }
}

.pi-menu-premium .mil-main-menu ul li a:focus-visible {
  color:var(--pi-brand-live-color,var(--pi-accent,#e5b32a))!important;
  transform:translateX(5px);
}

.pi-menu-premium .mil-menu-right-frame {
  position:relative;
  min-height:100vh;
  height:auto;
  padding-left:54px;
  align-items:stretch;
  overflow:hidden;
}

.pi-menu-premium .pi-menu-premium__right {
  position:relative;
  z-index:2;
  width:100%;
  min-height:100vh;
  padding:clamp(190px,22vh,260px) 0 52px;
  display:flex;
  flex-direction:column;
  justify-content:center;
}

.pi-menu-premium .pi-menu-premium__top,
.pi-menu-premium .pi-menu-premium__bottom {
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,.78fr);
  gap:clamp(48px,5vw,88px);
}

.pi-menu-premium .pi-menu-premium__heading {
  margin:0 0 22px;
  color:#fff;
  font-size:14px;
  line-height:1.2;
  font-weight:500;
}

.pi-menu-premium .pi-menu-premium__links {
  list-style:none;
  margin:0;
  padding:0;
}

.pi-menu-premium .pi-menu-premium__links li {
  margin:0 0 10px;
}

.pi-menu-premium .pi-menu-premium__links a {
  display:inline-block;
  color:rgba(255,255,255,.5);
  font-size:15px;
  line-height:1.42;
  transition:color .2s ease,transform .2s ease;
}

.pi-menu-premium .pi-menu-premium__links--featured a {
  color:rgba(255,255,255,.68);
  font-size:16px;
}

.pi-menu-premium .pi-menu-premium__links a:hover,
.pi-menu-premium .pi-menu-premium__links a:focus-visible,
.pi-menu-premium .pi-menu-premium__links a[aria-current="page"] {
  color:var(--pi-brand-live-color,var(--pi-accent,#e5b32a))!important;
  transform:translateX(4px);
}

.pi-menu-premium .pi-menu-premium__links--featured a[aria-current="page"] {
  color:var(--pi-brand-live-color,var(--pi-accent,#e5b32a))!important;
}

.pi-menu-premium .pi-menu-premium__divider {
  width:100%;
  height:1px;
  margin:38px 0 34px;
  background:rgba(255,255,255,.13);
}

.pi-menu-premium .pi-menu-premium__contact p {
  margin:0;
  color:rgba(255,255,255,.46);
  font-size:14px;
  line-height:1.65;
}

.pi-menu-premium .pi-menu-premium__contact strong {
  color:rgba(255,255,255,.72);
  font-weight:500;
}

.pi-menu-premium .pi-menu-premium__address-item + .pi-menu-premium__address-item {
  margin-top:13px;
}

.pi-menu-premium .pi-menu-premium__address-label {
  display:block;
  margin-bottom:3px;
  color:rgba(255,255,255,.72);
  font-size:11px;
  line-height:1.25;
  font-weight:600;
  letter-spacing:.12em;
  text-transform:uppercase;
}

.pi-menu-premium .pi-menu-premium__address-email {
  margin-top:14px;
}

.pi-menu-premium .pi-menu-premium__contact a {
  color:rgba(255,255,255,.58);
}

.pi-menu-premium .pi-menu-premium__contact a:hover,
.pi-menu-premium .pi-menu-premium__contact a:focus-visible {
  color:#fff;
}

.pi-menu-premium .pi-menu-premium__legal {
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin-top:30px;
  color:rgba(255,255,255,.3);
  font-size:12px;
  line-height:1.4;
}

.pi-menu-premium .pi-menu-premium__legal a:hover,
.pi-menu-premium .pi-menu-premium__legal a:focus-visible {
  color:rgba(255,255,255,.75);
}

/* Geometrías del mega menú: una grande acompaña la navegación principal
   y una segunda, más pequeña, equilibra la columna derecha. */
.pi-menu-premium .mil-menu-content {
  position:relative;
}

.pi-menu-premium .pi-menu-premium__layout {
  position:relative;
  z-index:2;
}

.pi-menu-premium .pi-menu-premium__geo {
  position:absolute;
  z-index:1;
  pointer-events:none;
  overflow:visible;
}

.pi-menu-premium .pi-menu-premium__geo .pi-menu-geometry {
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
}

.pi-menu-premium .pi-menu-premium__geo .mil-animation {
  top:0;
  right:auto;
  bottom:auto;
  left:0;
  transform-origin:center;
  filter:brightness(1.10);
}

/* Geometría principal: nace del borde izquierdo y acompaña el menú sin cubrirlo. */
.pi-menu-premium .pi-menu-premium__geo--left {
  top:78px;
  left:-220px;
  width:620px;
  height:620px;
  opacity:1;
}

.pi-menu-premium .pi-menu-premium__geo--left .mil-animation {
  width:520px;
  height:520px;
  opacity:.24;
  scale:1;
}

.pi-menu-premium .pi-menu-premium__geo--left .mil-dodecahedron {
  scale:2.2;
}

/* Contrapunto: geometría secundaria pequeña arriba/derecha. */
.pi-menu-premium .pi-menu-premium__geo--right {
  top:72px;
  right:82px;
  width:300px;
  height:300px;
  opacity:1;
}

.pi-menu-premium .pi-menu-premium__geo--right .mil-animation {
  width:280px;
  height:280px;
  opacity:.17;
  scale:1;
}

.pi-menu-premium .pi-menu-premium__geo--right .mil-dodecahedron {
  scale:1.28;
}

/* El overlay mantiene la información en pantallas de poca altura: puede desplazarse. */
@media (min-width:1201px) {
  .pi-menu-premium .mil-menu-content {
    overflow-y:auto;
    overscroll-behavior:contain;
  }
  .pi-menu-premium .mil-menu-right-frame {
    display:flex!important;
  }
}

@media (max-width:1200px) {
  .pi-menu-premium .mil-menu-content {
    height:100vh;
    overflow-y:auto;
    padding:110px 0 48px;
  }
  .pi-menu-premium .pi-menu-premium__layout {
    min-height:0;
  }
  .pi-menu-premium .mil-main-menu {
    min-height:0;
    height:auto;
    margin-bottom:48px;
    justify-content:flex-start;
  }
  .pi-menu-premium .mil-main-menu ul {
    align-items:flex-start;
  }
  .pi-menu-premium .mil-main-menu ul li {
    margin-bottom:20px;
  }
  .pi-menu-premium .mil-main-menu ul li a {
    justify-content:flex-start;
    font-size:28px;
  }
  .pi-menu-premium .mil-menu-right-frame {
    display:block!important;
    min-height:0;
    height:auto;
    padding:34px 0 0;
    border-left:0;
    border-top:1px solid rgba(255,255,255,.12);
    opacity:1;
    transform:none;
    overflow:visible;
  }
  .pi-menu-premium .pi-menu-premium__right {
    min-height:0;
    padding:0 0 24px;
  }
  .pi-menu-premium .pi-menu-premium__geo {
    display:none!important;
  }
}

@media (max-width:767px) {
  .pi-menu-premium .mil-menu-content {
    padding:100px 0 36px;
  }
  .pi-menu-premium .pi-menu-premium__top,
  .pi-menu-premium .pi-menu-premium__bottom {
    grid-template-columns:1fr;
    gap:30px;
  }
  .pi-menu-premium .pi-menu-premium__divider {
    margin:30px 0 28px;
  }
  .pi-menu-premium .pi-menu-premium__heading {
    margin-bottom:14px;
  }
  .pi-menu-premium .pi-menu-premium__links a,
  .pi-menu-premium .pi-menu-premium__links--featured a {
    font-size:14px;
  }
  .pi-menu-premium .pi-menu-premium__legal {
    margin-top:24px;
  }
}


/* =========================================================
   FOOTER PREMIUM · PÁGINA MAESTRA WEB / SEO / GEO CASTELLÓN
   ---------------------------------------------------------
   Hereda el rigor editorial del mega menú sin duplicarlo:
   CTA + frase rotatoria / navegación / sedes + contacto / cierre.
   La geometría reutiliza el dodecaedro existente de interior-shell.js.
   ========================================================= */
.pi-footer-premium {
  position:relative;
  overflow:hidden;
  background:#000;
  color:#fff;
  isolation:isolate;
}

.pi-footer-premium .mi-invert-fix {
  position:relative;
  z-index:2;
  height:auto;
}

.pi-footer-premium__container {
  position:relative;
  z-index:2;
  padding-top:clamp(88px,10vh,124px);
  padding-bottom:42px;
}

.pi-footer-premium__top {
  display:grid;
  grid-template-columns:minmax(0,5fr) minmax(0,7fr);
  gap:clamp(64px,7vw,118px);
  align-items:start;
}

.pi-footer-premium__statement {
  max-width:520px;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
}

.pi-footer-premium .pi-footer-premium__rotator {
  display:flex;
  align-items:flex-start;
  width:100%;
  max-width:520px;
  height:210px;
  min-height:210px;
  max-height:210px;
  margin:0 0 30px;
  overflow:hidden;
}

.pi-footer-premium .pi-footer-rotator__text {
  max-width:510px;
  color:rgba(255,255,255,.86);
  font-size:clamp(28px,2.15vw,36px);
  line-height:1.12;
  letter-spacing:-.038em;
  font-weight:400;
  text-wrap:balance;
}

.pi-footer-premium__cta {
  margin:0!important;
  color:#111!important;
}

.pi-footer-premium__cta span {
  color:#111!important;
}

.pi-footer-premium__cta svg {
  background:#000!important;
}

.pi-footer-premium__cta svg path {
  fill:#fff!important;
}

.pi-footer-premium__navigation {
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:clamp(48px,5vw,86px);
}

.pi-footer-premium__heading {
  margin:0 0 22px;
  color:#fff;
  font-size:14px;
  line-height:1.2;
  font-weight:500;
}

.pi-footer-premium__links {
  list-style:none;
  margin:0;
  padding:0;
}

.pi-footer-premium__links li {
  margin:0 0 10px;
}

.pi-footer-premium__links a {
  display:inline-block;
  color:rgba(255,255,255,.5);
  font-size:15px;
  line-height:1.42;
  transition:color .22s ease,transform .28s cubic-bezier(.16,1,.3,1);
}

.pi-footer-premium__links--primary a {
  color:rgba(255,255,255,.72);
  font-size:17px;
}

@media (hover:hover) and (pointer:fine) {
  .pi-site-footer.pi-footer-premium .pi-footer-premium__links a:hover,
  .pi-site-footer.pi-footer-premium .pi-footer-premium__contact-links a:hover,
  .pi-site-footer.pi-footer-premium .pi-footer-premium__legal a:hover {
    color:var(--pi-brand-live-color,var(--pi-accent,#e5b32a))!important;
    transform:translateX(4px);
  }
}

.pi-site-footer.pi-footer-premium .pi-footer-premium__links a:focus-visible,
.pi-site-footer.pi-footer-premium .pi-footer-premium__contact-links a:focus-visible,
.pi-site-footer.pi-footer-premium .pi-footer-premium__legal a:focus-visible,
.pi-site-footer.pi-footer-premium .pi-footer-premium__links a[aria-current="page"] {
  color:var(--pi-brand-live-color,var(--pi-accent,#e5b32a))!important;
}

.pi-footer-premium__divider {
  width:100%;
  height:1px;
  margin:clamp(48px,6vh,68px) 0 34px;
  background:rgba(255,255,255,.14);
}

.pi-footer-premium__bottom {
  display:grid;
  grid-template-columns:minmax(0,7fr) minmax(260px,5fr);
  gap:clamp(64px,7vw,118px);
  align-items:start;
}

.pi-footer-premium__addresses {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:clamp(28px,4vw,58px);
}

.pi-footer-premium__address p,
.pi-footer-premium__contact-links,
.pi-footer-premium__meta {
  color:rgba(255,255,255,.46);
  font-size:14px;
  line-height:1.65;
}

.pi-footer-premium__label {
  display:block;
  margin-bottom:5px;
  color:rgba(255,255,255,.72);
  font-size:11px;
  line-height:1.3;
  font-weight:600;
  letter-spacing:.11em;
  text-transform:uppercase;
}

.pi-footer-premium__contact-links {
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:2px;
}

.pi-footer-premium__contact-links a {
  display:inline-flex;
  align-items:center;
  gap:7px;
  color:rgba(255,255,255,.6);
  transition:color .22s ease,transform .28s cubic-bezier(.16,1,.3,1);
}

.pi-footer-premium__contact-links span:not([aria-hidden]) {
  margin-top:4px;
  color:rgba(255,255,255,.34);
}

.pi-footer-premium__meta {
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:32px;
  margin-top:36px;
  padding-top:27px;
  border-top:1px solid rgba(255,255,255,.12);
  font-size:12px;
  line-height:1.55;
}

.pi-footer-premium__meta > p {
  margin:0;
  max-width:650px;
}

.pi-footer-premium__legal {
  display:flex;
  flex-wrap:wrap;
  justify-content:flex-end;
  gap:8px;
  color:rgba(255,255,255,.3);
}

.pi-footer-premium__legal a {
  display:inline-block;
  transition:color .22s ease,transform .28s cubic-bezier(.16,1,.3,1);
}

/* Geometría de cierre: una sola, neutra, parcialmente fuera de cuadro.
   No participa en el ciclo cromático del 04 · SEO LOCAL. */
.pi-footer-premium > .pi-footer-geometry {
  position:absolute;
  inset:0;
  z-index:0;
  width:100%;
  height:100%;
  overflow:hidden;
  pointer-events:none;
  animation:piFooterPremiumFloat 28s ease-in-out infinite;
}

.pi-footer-premium > .pi-footer-geometry .mil-animation {
  width:430px;
  height:430px;
  top:54px;
  right:-118px;
  left:auto;
  bottom:auto;
  opacity:.2;
  filter:brightness(1.05);
  transform:none;
}

.pi-footer-premium > .pi-footer-geometry .mil-dodecahedron {
  left:50%;
  top:50%;
  translate:-50% -50%;
  scale:1.58;
  animation:rotate 156s linear infinite;
}

.pi-footer-premium > .pi-footer-geometry .mil-pentagon div {
  border-top-color:rgba(255,255,255,.38)!important;
}

@keyframes piFooterPremiumFloat {
  0%,100% { translate:0 -10px; }
  50% { translate:-15px 16px; }
}

@media (max-width:991px) {
  .pi-footer-premium__container {
    padding-top:82px;
    padding-bottom:36px;
  }

  .pi-footer-premium__top {
    grid-template-columns:1fr;
    gap:58px;
  }

  .pi-footer-premium__statement {
    max-width:620px;
  }

  .pi-footer-premium .pi-footer-premium__rotator {
    width:100%;
    height:190px;
    min-height:190px;
    max-height:190px;
    max-width:620px;
    margin-bottom:28px;
  }

  .pi-footer-premium .pi-footer-rotator__text {
    max-width:600px;
    font-size:clamp(28px,4.3vw,34px);
  }

  .pi-footer-premium__bottom {
    grid-template-columns:minmax(0,1.35fr) minmax(230px,.65fr);
    gap:44px;
  }

  .pi-footer-premium > .pi-footer-geometry .mil-animation {
    width:340px;
    height:340px;
    top:36px;
    right:-125px;
    opacity:.075;
  }
}

@media (max-width:767px) {
  .pi-footer-premium__container {
    padding-top:72px;
    padding-bottom:30px;
  }

  .pi-footer-premium__navigation,
  .pi-footer-premium__bottom,
  .pi-footer-premium__addresses {
    grid-template-columns:1fr;
  }

  .pi-footer-premium__navigation { gap:34px; }
  .pi-footer-premium__addresses { gap:20px; }
  .pi-footer-premium__bottom { gap:34px; }

  .pi-footer-premium__divider {
    margin:44px 0 30px;
  }

  .pi-footer-premium__meta {
    flex-direction:column;
    gap:15px;
  }

  .pi-footer-premium__legal {
    justify-content:flex-start;
  }

  .pi-footer-premium > .pi-footer-geometry .mil-animation {
    width:270px;
    height:270px;
    top:54px;
    right:-128px;
    opacity:.055;
  }
}

@media (max-width:575px) {
  .pi-footer-premium .pi-footer-premium__rotator {
    height:205px;
    min-height:205px;
    max-height:205px;
  }

  .pi-footer-premium .pi-footer-rotator__text {
    font-size:28px;
    line-height:1.12;
  }

  .pi-footer-premium__links--primary a { font-size:16px; }
  .pi-footer-premium__links a { font-size:14px; }
}

@media (prefers-reduced-motion:reduce) {
  .pi-footer-premium > .pi-footer-geometry,
  .pi-footer-premium > .pi-footer-geometry .mil-dodecahedron,
  .pi-footer-premium__links a,
  .pi-footer-premium__contact-links a,
  .pi-footer-premium__legal a {
    animation:none!important;
    transition:none!important;
  }
}
