/* ============================================================
   INSOLATUM — estilos
   COLORES, TIPOGRAFÍA Y RITMO: edítalos en :root.
   Las fuentes están en ../fonts/
   ============================================================ */

:root {
  /* Paleta 2025. No uses el amarillo ni el naranja para texto pequeño. */
  --sun: #fed967;
  --heat: #ed6826;
  --flare: #d118cd;
  --wine: #5f0566;
  --night: #29094c;
  --cobalt: #190093;
  --ink: #10061f;
  --paper: #f6f3ec;
  --field: #fffcf8;
  --quiet: #3e3556;
  --line: #e3dcd0;

  --sans: "Inter", ui-sans-serif, system-ui, sans-serif;
  --display: "Ethnocentric", ui-sans-serif, sans-serif;

  /* EFECTO: velocidad de la cinta de texto */
  --marquee-duration: 32s;

  --header: 5.5rem;
  --wrap: 72rem;
}

@font-face {
  font-family: "Ethnocentric";
  src: url("../fonts/Ethnocentric-Regular.otf") format("opentype");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Ethnocentric";
  src: url("../fonts/Ethnocentric-Bold.otf") format("opentype");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Changeling Neo";
  src: url("../fonts/Changeling Neo Bold.otf") format("opentype");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Changeling Neo";
  src: url("../fonts/Changeling Neo Bold.otf") format("opentype");
  font-weight: 800;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Inter";
  src: url("../fonts/Inter-Regular.ttf") format("truetype");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Inter";
  src: url("../fonts/Inter-Medium.ttf") format("truetype");
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Inter";
  src: url("../fonts/Inter-SemiBold.ttf") format("truetype");
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Inter";
  src: url("../fonts/Inter-Bold.ttf") format("truetype");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}

*,
*::before,
*::after { box-sizing: border-box; }

html {
  scroll-padding-top: var(--header);
  background: var(--paper);
}

body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--sans);
  font-size: 1.0625rem;
  line-height: 1.55;
  text-rendering: optimizeLegibility;
}

img { max-width: 100%; height: auto; display: block; }
button, [role="button"] { cursor: pointer; }
a { color: inherit; }

::selection { background: var(--flare); color: var(--paper); }
:focus-visible { outline: 2px solid var(--cobalt); outline-offset: 3px; }

#inicio { scroll-margin-top: 0; }
#inblock,
#inblock-15,
#inblock-20,
#thermowall,
#flat-panel,
#galeria,
#obra,
#marca,
#contacto { scroll-margin-top: var(--header); }

.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;
}
.sr-only:focus {
  position: fixed;
  left: 1rem;
  top: 1rem;
  z-index: 80;
  width: auto;
  height: auto;
  margin: 0;
  clip: auto;
  padding: 0.5rem 0.75rem;
  background: var(--paper);
}

.wrap {
  width: min(var(--wrap), calc(100% - 2.5rem));
  margin-inline: auto;
}
@media (min-width: 48rem) {
  .wrap { width: min(var(--wrap), calc(100% - 4rem)); }
}

.kicker {
  margin: 0;
  font-family: var(--display);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  line-height: 1.4;
  text-transform: uppercase;
}
.display {
  font-family: var(--display);
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.02em;
  line-height: 1.12;
}
.hero-title {
  margin: 1rem 0 0;
  font-size: clamp(2.15rem, 5.1vw, 4.4rem);
  line-height: 1.05;
  letter-spacing: 0.01em;
  color: var(--cobalt);
}
.section-title {
  margin: 0.75rem 0 0;
  font-size: clamp(1.55rem, 3.2vw, 2.7rem);
}
.quiet { color: var(--quiet); }
.wine { color: var(--wine); }
.sun { color: var(--sun); }
.cobalt { color: var(--cobalt); }
.paper { color: var(--paper); }
.ink { color: var(--ink); }

.temp-gradient {
  background-image: linear-gradient(
    118deg,
    var(--sun) 0%,
    var(--heat) 18%,
    var(--flare) 44%,
    var(--wine) 64%,
    var(--night) 82%,
    var(--cobalt) 100%
  );
}
.temp-bar {
  background-image: linear-gradient(
    90deg,
    var(--sun) 0%,
    var(--heat) 20%,
    var(--flare) 42%,
    var(--wine) 62%,
    var(--night) 80%,
    var(--cobalt) 100%
  );
}

/* ---------- Botones y menú ---------- */
.btn {
  display: inline-flex;
  min-height: 2.75rem;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 0.65rem 1.15rem;
  border: 0;
  font-family: var(--display);
  font-size: 0.62rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  line-height: 1;
  text-decoration: none;
  text-transform: uppercase;
  transition: background-color 180ms ease, color 180ms ease, transform 180ms ease;
}
.btn svg { width: 1rem; height: 1rem; }
.btn:hover { transform: translateY(-1px); }
.btn-primary { background: var(--cobalt); color: var(--paper); }
.btn-primary:hover { background: var(--night); }
.btn-ghost {
  background: transparent;
  color: var(--cobalt);
  box-shadow: inset 0 0 0 1.5px var(--cobalt);
}
.btn-ghost:hover { background: var(--cobalt); color: var(--paper); }
.btn-paper { background: var(--paper); color: var(--ink); }
.btn-paper:hover { background: var(--sun); }
.btn-block { width: 100%; }
@media (min-width: 40rem) { .btn-block { width: auto; } }

.nav-link {
  font-family: var(--display);
  font-size: 0.62rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-decoration: none;
  text-transform: uppercase;
  color: var(--ink);
  white-space: nowrap;
}
.nav-link:hover { color: var(--wine); }

.header {
  position: fixed;
  inset: 0 0 auto 0;
  z-index: 40;
  background: var(--paper);
  border-bottom: 1px solid var(--line);
}
.header-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 0.75rem 1.25rem;
}
@media (min-width: 48rem) { .header-bar { padding-inline: 2rem; } }
.logo { height: 2rem; width: auto; }
@media (min-width: 48rem) { .logo { height: 2.25rem; } }
.nav-desktop { display: none; align-items: center; gap: 1rem; }
.header-cta { display: none; }
.menu-toggle {
  position: relative;
  display: inline-flex;
  width: 2.75rem;
  height: 2.75rem;
  align-items: center;
  justify-content: center;
  border: 0;
  background: transparent;
  color: var(--ink);
  padding: 0;
}
.menu-toggle svg {
  position: absolute;
  width: 1.5rem;
  height: 1.5rem;
}
.menu-toggle [data-icon-cerrar] { display: none; }
.menu-toggle.is-open [data-icon-abrir] { display: none; }
.menu-toggle.is-open [data-icon-cerrar] { display: block; }
@media (min-width: 80rem) {
  .nav-desktop { display: flex; gap: 0.7rem; }
  .header-cta { display: inline-flex; }
  .menu-toggle { display: none; }
}
.scroll-progress {
  height: 0.25rem;
  transform: scaleX(var(--scroll-progress, 0));
  transform-origin: 0 50%;
}
.menu {
  border-top: 1px solid var(--line);
  background: var(--paper);
  padding: 1rem 1.25rem;
}
.menu ul { list-style: none; margin: 0; padding: 0; }
.menu a { display: flex; min-height: 2.75rem; align-items: center; }
@media (min-width: 80rem) { .menu { display: none !important; } }

/* ---------- Inicio ----------
   El alto de .hero es el recorrido del scroll.
   Más alto = el video avanza más despacio. */
.hero {
  --hero-recorrido: 460vh;
  position: relative;
  height: var(--hero-recorrido);
  background: #fff;
}
.hero-sticky {
  position: sticky;
  top: 0;
  height: 100vh;
  height: 100svh;
  overflow: hidden;
  background: #fff;
}
.hero-video-frame {
  position: absolute;
  inset: 0;
  z-index: 0;
  opacity: 0;
  overflow: hidden;
}
.hero-video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  max-width: none;
  object-fit: cover;
  object-position: center center;
  pointer-events: none;
  background: #fff;
}
/* Capa de texto y foto. Cubre el video hasta que empieza el scroll. */
.hero-stage {
  position: absolute;
  inset: 0;
  z-index: 1;
  overflow: hidden;
  background: #e7e4de;
}
.hero-wall {
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 100%;
  z-index: 0;
}
.hero-wall img {
  width: 100%;
  height: 100%;
  max-width: none;
  object-fit: cover;
  object-position: left bottom;
}
.hero-copy {
  position: absolute;
  z-index: 1;
  top: auto;
  right: 0;
  bottom: 0;
  left: 0;
  width: 100%;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding: 1.5rem 1.25rem 1.75rem;
  background: none;
}
.hero-copy::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 100%);
  pointer-events: none;
}
@media (min-width: 64rem) {
  .hero-copy {
    top: 0;
    bottom: 0;
    left: 0;
    right: auto;
    width: 60%;
    justify-content: center;
    padding: 6.5rem 3.25rem 3rem 3.5rem;
    background: none;
  }
  .hero-copy::before {
    background: linear-gradient(90deg, rgba(255, 255, 255, 0.9) 0%, rgba(255, 255, 255, 0) 100%);
  }
}
.hero-title {
  margin: 0;
  font-size: clamp(2rem, 3.6vw, 3.55rem);
  line-height: 1.08;
}
.lede { margin: 1rem 0 0; max-width: none; font-size: 1.2rem; line-height: 1.45; }
.hero-points {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem 1.25rem;
  margin: 1.5rem 0 0;
  padding: 0;
  list-style: none;
}
.hero-point {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 0.75rem;
  align-items: center;
}
.hero-point svg { width: 3.35rem; height: 3.35rem; flex: none; }
.hero-point p { margin: 0; font-size: 1.05rem; line-height: 1.3; color: var(--ink); }
@media (max-width: 63.99rem) {
  .hero-wall img { object-position: right center; }
  .hero-copy { padding: 1.5rem 1.25rem 6.25rem; }
  .hero-copy::before {
    background: linear-gradient(180deg, rgba(255, 255, 255, 0.5) 0%, #fff 100%);
  }
  .hero-points { display: none; }
}
.hero-scroll {
  position: absolute;
  left: 50%;
  bottom: 1.35rem;
  z-index: 2;
  display: grid;
  width: 3rem;
  height: 3rem;
  place-items: center;
  transform: translateX(-50%);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.9);
  color: var(--ink);
  text-decoration: none;
}
.hero-scroll svg { width: 1.35rem; height: 1.35rem; }
.hero-actions { display: flex; flex-wrap: wrap; gap: 0.75rem; margin-top: 1.5rem; }
.caption { margin: 0.75rem 0 0; }

/* ---------- Cinta ---------- */
.marquee {
  overflow: hidden;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  background: var(--paper);
  padding: 0.75rem 0;
}
.marquee-track {
  display: flex;
  width: max-content;
  animation: insolatum-marquee var(--marquee-duration) linear infinite;
}
.marquee p { margin: 0; padding: 0 1rem; color: var(--cobalt); }

/* ---------- Cartel INBLOCK ---------- */
.poster {
  position: relative;
  min-height: 100svh;
  overflow: hidden;
}
.poster-type {
  position: absolute;
  inset: 5.5rem 0 auto 0;
  height: 10.5rem;
  padding: 0.2rem 1.25rem 0;
  overflow: hidden;
  pointer-events: none;
}
@media (max-width: 63.99rem) {
  .poster { min-height: 0; }
  .poster-type { height: auto; min-height: 0; overflow: visible; }
  .mega { line-height: 1.28; }
  .mega + .mega { margin-top: 0.55rem; }
  .poster-copy .checks-icons { gap: 1.45rem; }
  .ficha-photo { width: 100%; margin: 0; }
  .ficha-photo img { width: 100%; max-width: none; height: auto; }
}
@media (min-width: 48rem) {
  .poster-type { top: 6rem; height: 13.5rem; padding-inline: 2.5rem; }
}
.mega {
  margin: 0;
  font-family: var(--display);
  font-size: clamp(1.45rem, 8.2vw, 4.35rem);
  font-weight: 800;
  letter-spacing: 0.01em;
  line-height: 1.14;
  white-space: nowrap;
}
.mega-fill {
  color: var(--paper);
  -webkit-text-stroke: 1.25px var(--ink);
  paint-order: stroke fill;
}
.mega-stroke {
  color: transparent;
  -webkit-text-stroke: 1.5px var(--sun);
}
.seal {
  display: none;
  position: absolute;
  top: 10%;
  right: 5%;
  width: 9rem;
  opacity: 0.9;
  pointer-events: none;
}
@media (min-width: 40rem) { .seal { display: block; } }
@media (min-width: 48rem) { .seal { width: 13rem; } }
.poster-scrim {
  position: relative;
  display: flex;
  min-height: 100svh;
  align-items: flex-end;
  background: linear-gradient(
    to top,
    color-mix(in srgb, var(--ink) 82%, transparent) 0%,
    color-mix(in srgb, var(--ink) 42%, transparent) 34%,
    transparent 62%
  );
}
@media (max-width: 63.99rem) {
  .poster-scrim {
    min-height: 0;
    align-items: stretch;
    background: linear-gradient(
      to top,
      color-mix(in srgb, var(--ink) 55%, transparent) 0%,
      color-mix(in srgb, var(--ink) 18%, transparent) 55%,
      transparent 100%
    );
  }
}
.poster-copy { max-width: 36rem; padding-bottom: 3.5rem; color: var(--paper); }
@media (min-width: 48rem) { .poster-copy { padding-bottom: 5rem; } }
@media (max-width: 63.99rem) {
  .poster-copy { padding-top: 60px; padding-bottom: 60px; }
}
.poster .mega,
#inblock-20 .section-title,
#inblock-15 .section-title {
  font-family: "Changeling Neo", var(--display);
}
.poster-copy p { margin: 1rem 0 0; max-width: 32rem; }
.poster-copy .checks {
  grid-template-columns: 1fr;
  margin-top: 1.25rem;
  color: var(--paper);
}
.checks-icons { gap: 0.85rem; }
.checks-icons li {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 0.7rem;
  align-items: center;
}
.checks-icons svg { width: 2.35rem; height: 2.35rem; flex: none; }
.poster-links {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  margin-top: 1.75rem;
}

.rise { opacity: 1; transform: none; }
html.has-scroll .rise {
  opacity: 0;
  transform: translateY(1.25rem);
  transition: opacity 700ms cubic-bezier(0.22, 1, 0.36, 1), transform 700ms cubic-bezier(0.22, 1, 0.36, 1);
}
html.has-scroll .rise.is-inview { opacity: 1; transform: none; }

/* ---------- Oficio y fichas ---------- */
.band { padding: 5rem 0; }
@media (min-width: 48rem) { .band { padding: 7rem 0; } }
.band-paper { background: var(--paper); }
.band-field { background: var(--field); }
.split {
  display: grid;
  gap: 2.5rem;
}
@media (min-width: 64rem) {
  .split { grid-template-columns: 5fr 6fr; gap: 2.5rem; align-items: start; }
  .split-wide { grid-template-columns: 5fr 7fr; }
}
.prose { margin: 0; font-size: 1.125rem; }
#thermowall .section-title + .prose { margin-top: 30px; }
.traits {
  display: grid;
  gap: 1.5rem;
  margin: 2.5rem 0 0;
}
@media (min-width: 40rem) { .traits { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 64rem) { #thermowall .traits { grid-template-columns: repeat(4, 1fr); } }
#thermowall .ficha-photo { margin: 1.25rem 0 0; }
.traits div { border-top: 1px solid var(--line); padding-top: 1rem; }
.traits-icons > div {
  display: grid;
  grid-template-columns: auto 1fr;
  column-gap: 0.75rem;
  align-items: start;
}
.traits-icons svg {
  width: 2.6rem;
  height: 2.6rem;
  grid-row: 1 / span 2;
}
.traits-icons dd { grid-column: 2; }
.traits dt {
  font-family: var(--display);
  font-size: 0.85rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.traits dd { margin: 0.5rem 0 0; font-size: 0.875rem; color: var(--quiet); }

.ficha-head { display: flex; align-items: flex-end; gap: 1rem; margin-top: 0.75rem; }
.ficha-num {
  margin: 0;
  font-family: "Changeling Neo", var(--display);
  font-size: clamp(3.4rem, 8vw, 6.4rem);
  font-weight: 700;
  line-height: 0.85;
  letter-spacing: 0.01em;
  background-image: linear-gradient(
    118deg,
    var(--sun) 0%,
    var(--heat) 18%,
    var(--flare) 44%,
    var(--wine) 64%,
    var(--night) 82%,
    var(--cobalt) 100%
  );
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
}
.ficha-valor {
  margin: 0 0 0.25rem;
  font-family: var(--display);
  font-size: 0.85rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--cobalt);
}
.checks {
  display: grid;
  gap: 0.5rem;
  margin: 1.5rem 0 0;
  padding: 0;
  list-style: none;
  font-size: 0.875rem;
}
@media (min-width: 40rem) { .checks { grid-template-columns: 1fr 1fr; } }
.spec {
  margin: 2rem 0 0;
  border-top: 1px solid var(--line);
}
.spec div {
  display: grid;
  gap: 0.25rem;
  border-bottom: 1px solid var(--line);
  padding: 0.75rem 0;
}
@media (min-width: 40rem) {
  .spec div { grid-template-columns: 1fr auto; align-items: baseline; }
}
.spec dt { font-size: 0.875rem; color: var(--quiet); }
.spec dd { margin: 0; font-size: 0.875rem; font-weight: 600; }
.note { margin: 0.5rem 0 0; font-size: 0.75rem; color: var(--quiet); }
.mods {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
  margin: 1.5rem 0 0;
}
@media (min-width: 40rem) { .mods { grid-template-columns: repeat(4, 1fr); } }
.mods dd {
  margin: 0.25rem 0 0;
  font-family: var(--display);
  font-size: 0.85rem;
  font-weight: 700;
}
@media (min-width: 64rem) {
  .ficha-flip .ficha-photo { grid-column: 2; grid-row: 1; }
  .ficha-flip .ficha-copy { grid-column: 1; grid-row: 1; }
}

/* ---------- Galería ---------- */
.gallery-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 1.5rem;
}
.icon-btn {
  display: inline-flex;
  width: 2.75rem;
  height: 2.75rem;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--ink);
  background: transparent;
  color: var(--ink);
  padding: 0;
}
.icon-btn svg { width: 1.35rem; height: 1.35rem; }
.gallery-nav { display: flex; gap: 0.5rem; }
.carousel {
  display: flex;
  gap: 0.75rem;
  margin-top: 2.5rem;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scroll-behavior: smooth;
  scrollbar-width: none;
  touch-action: pan-x;
  overscroll-behavior-x: contain;
  cursor: grab;
}
.carousel.is-dragging { cursor: grabbing; scroll-snap-type: none; scroll-behavior: auto; }
.carousel::-webkit-scrollbar { display: none; }
.carousel-slide {
  flex: 0 0 min(86vw, 34rem);
  margin: 0;
  scroll-snap-align: start;
}
.carousel-slide img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }

/* ---------- Obra (fondo líquido) ---------- */
.obra {
  position: relative;
  overflow: hidden;
  background: var(--cobalt);
  color: var(--paper);
}
.marca {
  position: relative;
  min-height: 100svh;
  overflow: hidden;
  background: #190093;
}
.marca-fondo,
.marca-fondo canvas {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  display: block;
}
.marca-logo {
  position: relative;
  z-index: 1;
  display: flex;
  min-height: 100svh;
  align-items: center;
  justify-content: center;
  padding: 6rem 1.5rem;
  pointer-events: none;
}
.marca-logo img {
  width: min(52vw, 18rem);
  height: auto;
}
.obra-copy {
  position: relative;
  z-index: 1;
  padding: 3.5rem 0;
}
.obra-list {
  list-style: none;
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.25rem;
  margin: 1.75rem 0 0;
  padding: 0;
}
.obra-list li {
  margin: 0;
  padding: 1rem 0 0;
  border-top: 1px solid color-mix(in srgb, var(--paper) 25%, transparent);
}
.obra-list article { display: grid; gap: 0.65rem; }
.obra-list h3 {
  margin: 0;
  font-family: var(--display);
  font-size: 1.05rem;
  font-weight: 700;
  text-transform: uppercase;
}
.obra-list p { margin: 0.4rem 0 0; font-size: 0.92rem; }
@media (min-width: 64rem) {
  .obra-list {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1.5rem;
  }
  .obra-list li { border-top: 0; padding-top: 0; }
}
.index {
  font-family: var(--display);
  font-size: 0.85rem;
  font-weight: 700;
  color: var(--sun);
}

/* ---------- Contacto ---------- */
.contact { background: var(--field); }
.contact-bar { height: 0.5rem; }
.contact-grid {
  display: grid;
  gap: 3rem;
  padding: 5rem 0;
}
@media (min-width: 48rem) { .contact-grid { padding: 7rem 0; } }
@media (min-width: 64rem) { .contact-grid { grid-template-columns: 5fr 6fr; gap: 3rem; } }
.form { display: grid; gap: 1.25rem; }
.form label { display: block; }
.field {
  display: block;
  width: 100%;
  min-height: 2.75rem;
  margin-top: 0.35rem;
  border: 0;
  border-bottom: 1.5px solid var(--line);
  background: transparent;
  color: var(--ink);
  padding: 0.7rem 0;
  font: inherit;
}
textarea.field { min-height: 8rem; resize: vertical; }
.field:focus { outline: none; border-bottom-color: var(--cobalt); }
.form-error { margin: 0; color: var(--wine); font-size: 0.875rem; }
.thanks {
  border: 1px solid var(--line);
  background: var(--paper);
  padding: 2rem;
}
.thanks .display { margin: 0.75rem 0 0; font-size: 1.5rem; color: var(--cobalt); }

.contact-address {
  margin: 1.25rem 0 0.35rem;
  font-size: 1.2rem;
  line-height: 1.4;
  color: var(--ink);
}
.contact-actions { display: flex; flex-wrap: wrap; gap: 0.75rem; margin-top: 1.75rem; }
.mapa {
  width: 100%;
  height: 22rem;
  border: 0;
  background: var(--paper);
}
@media (min-width: 64rem) { .mapa { height: 100%; min-height: 26rem; } }

/* ---------- Pie ---------- */
.footer { background: var(--cobalt); color: var(--paper); }
.footer-bar { height: 0.375rem; }
.footer-center {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 1.25rem;
  padding: 3.5rem 0 2.5rem;
}
.footer-logo { height: 2.5rem; width: auto; }
.footer p { margin: 0; }
.footer-seal { width: 7rem; height: auto; }
@media (min-width: 48rem) { .footer-seal { width: 8.5rem; } }
.footer-link {
  font-family: var(--display);
  font-size: 1.125rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-decoration: none;
}
.footer-legal {
  max-width: 40rem;
  font-size: 0.875rem;
  line-height: 1.5;
}

@keyframes insolatum-marquee {
  from { transform: translateX(0); }
  to { transform: translateX(-50%); }
}

@media (prefers-reduced-motion: reduce) {
  .marquee-track { animation: none; }
  .carousel { scroll-behavior: auto; }
  html.has-scroll .rise { opacity: 1; transform: none; transition: none; }
  .btn:hover { transform: none; }
}
