/* =====================================================================
   Phantasialand Group — estilos do site
   Baseado no design system extraído de avenues.org (tokens, escala
   tipográfica, grid, componentes e movimento), adaptado à marca
   Phantasialand (azul-marinho #070E70 + vermelho #BB1717).
   ===================================================================== */

:root {
  /* ---------- Marca ---------- */
  --Brand-Navy-950: #050a4f;
  --Brand-Navy-900: #070e70;   /* azul do logotipo */
  --Brand-Navy-700: #2a3196;
  --Brand-Navy-50: #eceef8;
  --Brand-Red-900: #5a0a0a;
  --Brand-Red-800: #7d0f0f;
  --Brand-Red-700: #9c1313;
  --Brand-Red-600: #bb1717;    /* vermelho do logotipo — cor principal */
  --Brand-Red-100: #f6d5cf;
  --Brand-Red-50: #fbecec;

  /* ---------- Neutros quentes (Ash) ---------- */
  --Ash-50: #f9f8f6;
  --Ash-100: #eceae4;
  --Ash-200: #d4d0c4;
  --Ash-350: #b7b09c;

  /* ---------- Acentos (ciclo de cards) ---------- */
  --Sky-300: #a4c8f0;
  --Sky-50: #eef5fd;
  --Sand: #f5cd64;
  --Sand-50: #fdf6e3;
  --Pistachio-300: #c5d982;
  --Coral-300: #f2a48a;
  --Violet-300: #b1b0e0;

  /* ---------- Cinzas ---------- */
  --Black: #000;
  --Grey-800: #333;
  --Grey-600: #666;
  --Grey-300: #b2b2b2;
  --Grey-50: #f2f2f2;
  --White: #fff;
  --White-30: rgba(255, 255, 255, 0.3);
  --White-70: rgba(255, 255, 255, 0.7);
  --Black-10: rgba(0, 0, 0, 0.1);
  --Black-50: rgba(0, 0, 0, 0.5);
  --Error: #c3411e;

  /* ---------- Papéis ---------- */
  --c-brand: var(--Brand-Red-600);
  --c-detail: var(--Brand-Navy-900);
  --c-heading: var(--c-brand);
  --c-text: var(--Grey-800);
  --c-primary: var(--c-brand);
  --c-hover: var(--c-detail);
  --c-border: var(--Ash-200);
  --c-surface: var(--Ash-50);
  --focus-ring: 0 0 0 4px var(--Sand);

  --card-1: var(--Brand-Red-100);
  --card-2: var(--Sand);
  --card-3: var(--Pistachio-300);
  --card-4: var(--Sky-300);
  --card-5: var(--Violet-300);
  --card-6: var(--Ash-350);

  /* ---------- Tipografia ---------- */
  --font: "Hanken Grotesk", "Halyard Display", "SF Pro Display", -apple-system, BlinkMacSystemFont,
    "Helvetica Neue", Helvetica, Roboto, "Segoe UI", Arial, sans-serif;
  --fs-display-1: 80px; --lh-display-1: 80px;
  --fs-display-2: 60px; --lh-display-2: 60px;
  --fs-display-3: 44px; --lh-display-3: 48px;
  --fs-h1: 80px; --lh-h1: 80px;
  --fs-h2: 52px; --lh-h2: 56px;
  --fs-h3: 36px; --lh-h3: 40px;
  --fs-h4: 24px; --lh-h4: 28px;
  --fs-h5: 21px; --lh-h5: 24px;
  --fs-body-1: 21px; --lh-body-1: 30px;
  --fs-body-2: 18px; --lh-body-2: 26px;
  --fs-body-3: 16px; --lh-body-3: 22px;
  --fs-cta-1: 18px; --lh-cta-1: 24px;
  --fs-cta-2: 16px; --lh-cta-2: 20px;
  --fs-label-1: 16px; --lh-label-1: 16px;
  --fs-label-2: 13px; --lh-label-2: 16px;
  --fs-note: 13px; --lh-note: 16px;

  /* ---------- Layout / movimento ---------- */
  --nav-h: 81px;
  --section-y: 80px;
  --arch-h: 120px;
  --gutter: 3.90625%;
  --t-fast: 0.3s;
  --t-base: 0.4s;
  --t-slow: 0.6s;
  --ease: ease;
  --ease-panel: ease-in-out;
}

@media (max-width: 991px) {
  :root {
    --fs-display-1: 40px; --lh-display-1: 44px;
    --fs-display-2: 40px; --lh-display-2: 40px;
    --fs-display-3: 32px; --lh-display-3: 36px;
    --fs-h1: 48px; --lh-h1: 48px;
    --fs-h2: 34px; --lh-h2: 38px;
    --fs-h3: 26px; --lh-h3: 30px;
    --fs-h4: 22px; --lh-h4: 26px;
    --fs-h5: 19px; --lh-h5: 22px;
    --fs-body-1: 19px; --lh-body-1: 27px;
    --fs-body-2: 17px; --lh-body-2: 25px;
    --fs-body-3: 15px; --lh-body-3: 21px;
    --fs-cta-1: 17px;
    --fs-cta-2: 15px;
    --fs-label-1: 14px;
    --fs-label-2: 12px;
    --fs-note: 12px;
    --nav-h: 68px;
    --section-y: 56px;
    --arch-h: 42px;
    --gutter: 4.26667%;
  }
}

/* ===================== Base ===================== */
*, ::before, ::after { box-sizing: border-box; }
html { overflow-x: clip; scroll-behavior: smooth; scroll-padding-top: calc(var(--nav-h) + 16px); }
html, body { margin: 0; width: 100%; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
body {
  overflow-x: clip;
  font-family: var(--font);
  font-size: 1rem;
  line-height: 1.2;
  font-weight: 400;
  color: var(--c-text);
  background: var(--White);
}
h1, h2, h3, h4, h5, h6, p, ul, ol, dl, figure, blockquote { margin: 0; }
ul, ol { padding: 0; list-style: none; }
a { color: inherit; text-decoration: none; }
img, video, iframe { display: block; max-width: 100%; }
button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; }
:focus-visible { outline: none; box-shadow: var(--focus-ring); }
::selection { background: var(--Sand); color: var(--c-brand); }
.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: 16px; top: -100px; z-index: 10000; padding: 12px 20px; background: var(--c-brand); color: var(--White); border-radius: 48px; }
.skip-link:focus { top: 16px; }

/* ===================== Grid ===================== */
.container { width: 100%; margin: 0 auto; padding: 0 var(--gutter); }
@media (min-width: 1281px) { .container { padding: 0 80px; } }
@media (min-width: 1601px) { .container { max-width: 1760px; } }
.container--narrow { max-width: 1002px; }

.section { padding: var(--section-y) 0; position: relative; }
.section--flush-top { padding-top: 0; }
.bg-ash { background: var(--Ash-50); }
.bg-white { background: var(--White); }
.bg-red { background: var(--Brand-Red-600); color: var(--White); }
.bg-navy { background: var(--Brand-Navy-900); color: var(--White); }
.bg-sky { background: var(--Sky-300); }
.bg-sand { background: var(--Sand); }

/* ===================== Tipografia ===================== */
.display-1 { font-size: var(--fs-display-1); line-height: var(--lh-display-1); font-weight: 300; letter-spacing: 0.01em; color: var(--c-heading); }
.display-2 { font-size: var(--fs-display-2); line-height: var(--lh-display-2); font-weight: 500; letter-spacing: 0.01em; color: var(--c-heading); }
.display-3 { font-size: var(--fs-display-3); line-height: var(--lh-display-3); font-weight: 500; letter-spacing: 0.01em; color: var(--c-heading); }
h1, .h1 { font-size: var(--fs-h1); line-height: var(--lh-h1); font-weight: 500; letter-spacing: 0.01em; color: var(--c-heading); }
h2, .h2 { font-size: var(--fs-h2); line-height: var(--lh-h2); font-weight: 500; letter-spacing: 0.01em; color: var(--c-heading); }
h3, .h3 { font-size: var(--fs-h3); line-height: var(--lh-h3); font-weight: 500; letter-spacing: 0.01em; color: var(--c-heading); }
h4, .h4 { font-size: var(--fs-h4); line-height: var(--lh-h4); font-weight: 500; letter-spacing: 0.02em; color: var(--c-heading); }
h5, .h5 { font-size: var(--fs-h5); line-height: var(--lh-h5); font-weight: 500; letter-spacing: 0.02em; color: var(--c-heading); }
h1, h2, h3, .h1, .h2, .h3, .display-1, .display-2, .display-3 { text-wrap: balance; }
.body-1, .body-2 { text-wrap: pretty; }
.body-1 { font-size: var(--fs-body-1); line-height: var(--lh-body-1); font-weight: 300; letter-spacing: 0.01em; color: var(--c-text); }
.body-2 { font-size: var(--fs-body-2); line-height: var(--lh-body-2); font-weight: 400; letter-spacing: 0.01em; color: var(--c-text); }
.body-3 { font-size: var(--fs-body-3); line-height: var(--lh-body-3); font-weight: 400; letter-spacing: 0.01em; color: var(--c-text); }
.label-1 { display: block; font-size: var(--fs-label-1); line-height: var(--lh-label-1); font-weight: 500; letter-spacing: 0.1em; text-transform: uppercase; color: var(--Grey-800); }
.label-2 { display: block; font-size: var(--fs-label-2); line-height: var(--lh-label-2); font-weight: 500; letter-spacing: 0.1em; text-transform: uppercase; color: var(--Grey-800); }
.note { font-size: var(--fs-note); line-height: var(--lh-note); font-weight: 400; color: var(--Grey-600); }
.text-red { color: var(--Brand-Red-600) !important; }
.prose > * + * { margin-top: 16px; }
.prose strong { font-weight: 500; color: var(--c-heading); }

/* Texto sobre fundo escuro */
.on-dark, .on-dark h1, .on-dark h2, .on-dark h3, .on-dark h4, .on-dark h5,
.on-dark .display-1, .on-dark .display-2, .on-dark .display-3, .on-dark .body-1, .on-dark .body-2, .on-dark .body-3 { color: var(--White); }
.on-dark .label-1, .on-dark .label-2 { color: var(--White-70); }

/* Cabeçalho de seção (eyebrow → título → texto) */
.s-head { max-width: 838px; margin: 0 auto 56px; text-align: center; }
.s-head .label-1 { margin-bottom: 16px; }
.s-head > p:not(.label-1) { margin-top: 16px; }
.s-head--left { margin-left: 0; text-align: left; max-width: 760px; }
.s-head-row { display: flex; align-items: flex-end; justify-content: space-between; gap: 40px; margin-bottom: 48px; }
.s-head-row .s-head { margin-bottom: 0; }

/* ===================== Botões ===================== */
.btn {
  position: relative; display: inline-flex; align-items: center; justify-content: center; width: fit-content;
  font-size: var(--fs-cta-2); line-height: var(--lh-cta-2); font-weight: 500; letter-spacing: 0.05em; white-space: nowrap;
  border-radius: 48px; transition: background-color var(--t-base), color var(--t-base), box-shadow var(--t-base), border-color var(--t-base);
}
.btn .ico-arrow { position: absolute; right: 16px; width: 20px; height: 20px; transition: transform var(--t-base); }
.btn:hover .ico-arrow, .btn:focus-visible .ico-arrow { transform: translate3d(2px, 0, 0); }
.btn-primary { padding: 14px 44px 14px 20px; color: var(--White); background: var(--c-primary); }
.btn-primary:hover, .btn-primary:focus-visible { background: var(--c-hover); }
.btn-primary.btn-lg, .btn-light.btn-lg { padding: 16px 48px 16px 24px; border-radius: 56px; font-size: var(--fs-cta-1); line-height: var(--lh-cta-1); }
.btn-light { padding: 14px 44px 14px 20px; color: var(--c-brand); background: var(--White); }
.btn-light:hover, .btn-light:focus-visible { color: var(--c-hover); }
.btn-secondary { padding: 13px 20px; color: var(--c-brand); border: 1px solid currentColor; }
.btn-secondary:hover, .btn-secondary:focus-visible { box-shadow: inset 0 0 0 1px currentColor; }
.btn-secondary .ico { width: 20px; height: 20px; margin-right: 8px; }
.on-dark .btn-secondary { color: var(--White); }
.btn-row { display: flex; flex-wrap: wrap; gap: 16px; margin-top: 24px; }
.btn-row--center { justify-content: center; }

/* Botões ícone */
.icon-btn {
  position: relative; display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0;
  width: 48px; height: 48px; border-radius: 50%; color: var(--White); background: var(--c-primary);
  transition: background-color var(--t-fast), color var(--t-fast), border-color var(--t-fast);
}
.icon-btn svg { width: 20px; height: 20px; transition: transform var(--t-fast); }
.icon-btn:hover, .icon-btn:focus-visible { background: var(--c-hover); }
.icon-btn:hover .ico-arrow { transform: translateX(2px); }
.icon-btn--ghost { width: 56px; height: 56px; color: var(--c-brand); background: var(--White-70); border: 1px solid var(--Ash-200); }
.icon-btn--ghost:hover, .icon-btn--ghost:focus-visible { background: var(--White); border-color: var(--c-hover); color: var(--c-hover); }
.icon-btn--ghost[disabled] { opacity: 0.35; pointer-events: none; }
.icon-btn--grey { color: var(--c-brand); background: var(--Ash-100); }
.icon-btn--grey:hover, .icon-btn--grey:focus-visible { background: var(--Ash-200); color: var(--c-brand); }
.icon-btn--outline-light { width: 56px; height: 56px; background: transparent; border: 1px solid var(--White-30); }
.icon-btn--outline-light:hover, .icon-btn--outline-light:focus-visible { background: transparent; border-color: var(--White); }
.ico-prev { transform: rotate(180deg); }
.icon-btn:hover .ico-prev { transform: rotate(180deg) translateX(2px); }

/* Link de texto com sublinhado crescente */
.text-link {
  position: relative; display: inline-block; font-size: var(--fs-cta-1); line-height: var(--lh-cta-1); font-weight: 500; letter-spacing: 0.05em;
  color: var(--c-brand); border-bottom: 1px solid var(--Ash-200); transition: color var(--t-base);
}
.text-link::after { content: ""; position: absolute; left: 0; top: 100%; width: 0; height: 1px; background: var(--c-hover); transition: width var(--t-base); }
.text-link:hover, .text-link:focus-visible { color: var(--c-hover); }
.text-link:hover::after, .text-link:focus-visible::after { width: 100%; }
.on-dark .text-link { color: var(--White); border-color: var(--White-30); }
.on-dark .text-link::after { background: var(--White); }

/* Chips */
.chips { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 24px; }
.chip { display: inline-flex; align-items: center; padding: 8px 14px; border: 1px solid var(--Ash-200); background: var(--Ash-100); border-radius: 32px; font-size: var(--fs-body-3); line-height: 20px; color: var(--c-detail); }
.chip--sand { background: var(--Sand); border-color: var(--Sand); }
.chip--white { background: var(--White); }
.chip--dark { background: rgba(255,255,255,.12); border-color: var(--White-30); color: var(--White); }

/* Ícone + → − */
.plus { position: relative; display: inline-block; width: 12px; height: 12px; }
.plus::before, .plus::after { content: ""; position: absolute; background: currentColor; transition: transform var(--t-base) var(--ease); }
.plus::before { left: 0; top: 5.5px; width: 12px; height: 1px; }
.plus::after { left: 5.5px; top: 0; width: 1px; height: 12px; }
[aria-expanded="true"] .plus::after { transform: scaleY(0); }
.plus--sm { width: 9px; height: 9px; }
.plus--sm::before { top: 4px; width: 9px; }
.plus--sm::after { left: 4px; height: 9px; }

/* ===================== Navegação ===================== */
.nav { position: sticky; top: 0; z-index: 9000; background: var(--Ash-50); border-bottom: 1px solid var(--Ash-200); }
.nav__inner { display: flex; align-items: center; justify-content: space-between; gap: 24px; min-height: var(--nav-h); padding: 16px 2.77778%; }
.nav__logo img { width: 200px; height: auto; }
.nav__menu { display: flex; align-items: center; gap: 28px; }
.nav__link, .nav__drop-btn { position: relative; display: inline-flex; align-items: center; gap: 8px; font-size: var(--fs-cta-2); line-height: var(--lh-cta-2); font-weight: 500; letter-spacing: 0.05em; color: var(--c-brand); padding: 6px 0; }
.nav__link::after, .nav__drop-btn::after { content: ""; position: absolute; left: 0; bottom: 0; width: 0; height: 1px; background: currentColor; transition: width var(--t-base); }
.nav__link:hover::after, .nav__drop-btn:hover::after, .nav__link[aria-current="page"]::after, .nav__drop.is-current .nav__drop-btn::after { width: 100%; }
.nav__drop { position: relative; }
.nav__panel {
  position: absolute; top: calc(100% + 26px); left: -24px; min-width: 300px; padding: 24px; background: var(--Ash-50);
  border: 1px solid var(--Ash-200); border-top: 0; opacity: 0; visibility: hidden; transform: translateY(-4px);
  transition: opacity var(--t-base) 0.1s, visibility var(--t-base), transform var(--t-base);
}
.nav__drop.is-open .nav__panel { opacity: 1; visibility: visible; transform: none; transition: opacity var(--t-base), transform var(--t-base); }
.nav__panel a { display: flex; flex-direction: column; gap: 4px; padding: 14px 0; border-top: 1px solid var(--Ash-200); }
.nav__panel a:first-child { border-top: 0; padding-top: 0; }
.nav__panel a:last-child { padding-bottom: 0; }
.nav__panel a strong { font-weight: 500; font-size: var(--fs-body-2); color: var(--c-brand); transition: color var(--t-base); }
.nav__panel a:hover strong { color: var(--c-hover); }
.nav__panel a span { font-size: var(--fs-body-3); color: var(--Grey-600); }
.nav__right { display: flex; align-items: center; gap: 16px; flex-shrink: 0; }
.nav__cta { display: inline-flex; align-items: center; gap: 16px; font-size: var(--fs-cta-2); font-weight: 500; letter-spacing: 0.05em; color: var(--c-brand); }
.nav__cta:hover .icon-btn { background: var(--c-hover); }
.nav__cta:hover .ico-arrow { transform: translateX(2px); }
.nav__wa { color: var(--c-brand); background: var(--Ash-100); }
.nav__wa:hover { color: var(--White); }
.nav__toggle { display: none; width: 48px; height: 48px; border-radius: 50%; background: var(--Ash-100); align-items: center; justify-content: center; color: var(--c-brand); }
.nav__toggle .bars { position: relative; width: 18px; height: 12px; }
.nav__toggle .bars::before, .nav__toggle .bars::after, .nav__toggle .bars span { content: ""; position: absolute; left: 0; width: 100%; height: 1.5px; background: currentColor; transition: transform var(--t-base), opacity var(--t-fast), top var(--t-base); }
.nav__toggle .bars::before { top: 0; }
.nav__toggle .bars span { top: 5.25px; }
.nav__toggle .bars::after { top: 10.5px; }
.nav__toggle[aria-expanded="true"] .bars::before { top: 5.25px; transform: rotate(45deg); }
.nav__toggle[aria-expanded="true"] .bars span { opacity: 0; }
.nav__toggle[aria-expanded="true"] .bars::after { top: 5.25px; transform: rotate(-45deg); }

.mobile-menu {
  position: fixed; inset: var(--nav-h) 0 0 0; z-index: 8999; overflow-y: auto; padding: 24px var(--gutter) 40px;
  background: var(--Ash-50); opacity: 0; visibility: hidden; transform: translateY(-8px);
  transition: opacity var(--t-base), visibility var(--t-base), transform var(--t-base);
}
.mobile-menu.is-open { opacity: 1; visibility: visible; transform: none; }
.mobile-menu__list > li { border-bottom: 1px solid var(--Ash-200); }
.mobile-menu__list a, .mobile-menu__list button { display: flex; justify-content: space-between; align-items: center; width: 100%; padding: 18px 0; font-size: var(--fs-h4); line-height: var(--lh-h4); font-weight: 500; color: var(--c-brand); text-align: left; }
.mobile-menu__sub { overflow: hidden; height: 0; transition: height var(--t-base) var(--ease); }
.mobile-menu__sub a { padding: 10px 0 10px 16px; font-size: var(--fs-body-1); font-weight: 400; }
.mobile-menu__sub li:last-child a { padding-bottom: 20px; }
.mobile-menu .btn-row { margin-top: 32px; }
.mobile-menu__contact { margin-top: 32px; }

@media (max-width: 1180px) {
  .nav__menu { gap: 20px; }
  .nav__cta-text { display: none; }
}
@media (max-width: 991px) {
  .nav__inner { padding: 10px var(--gutter); }
  .nav__logo img { width: 160px; }
  .nav__menu, .nav__cta { display: none; }
  .nav__toggle { display: inline-flex; }
  .nav__wa { width: 48px; height: 48px; }
}
@media (min-width: 992px) { .mobile-menu { display: none; } }
body.menu-open { overflow: hidden; }

/* ===================== Hero ===================== */
.hero {
  position: relative; overflow: hidden; color: var(--White);
  background: radial-gradient(120% 90% at 78% 70%, #cf2a22 0%, var(--Brand-Red-600) 46%, var(--Brand-Red-700) 100%);
  min-height: clamp(700px, calc(100dvh - var(--nav-h)), 900px);
}
.hero__rings { position: absolute; right: -12vw; bottom: -38vw; width: 92vw; aspect-ratio: 1; pointer-events: none; }
.hero__rings span { position: absolute; inset: 0; border-radius: 50%; border: 1px solid rgba(255, 255, 255, 0.12); }
.hero__rings span:nth-child(2) { inset: 12%; border-color: rgba(255, 255, 255, 0.1); }
.hero__rings span:nth-child(3) { inset: 24%; border-color: rgba(255, 255, 255, 0.08); }
.hero__grid { position: relative; z-index: 2; display: grid; grid-template-columns: minmax(0, 46%) minmax(0, 54%); align-items: center; min-height: inherit; }
.hero__text { position: relative; z-index: 3; padding: 72px 0 80px; }
.hero__pill { display: inline-flex; align-items: center; gap: 10px; padding: 8px 16px 8px 10px; border-radius: 32px; background: rgba(255, 255, 255, 0.12); border: 1px solid var(--White-30); font-size: var(--fs-label-2); line-height: 16px; font-weight: 500; letter-spacing: 0.1em; text-transform: uppercase; color: var(--White); }
.hero__pill i { width: 24px; height: 24px; border-radius: 50%; background: var(--White) url("../img/favicon-red.png") center / 18px no-repeat; }
.hero__title { margin-top: 28px; font-size: clamp(56px, 7.6vw, 116px); line-height: 0.94; font-weight: 500; letter-spacing: -0.015em; color: var(--White); }
.hero__title .hl { position: relative; display: inline-block; }
.hero__title .hl svg { position: absolute; left: -2%; bottom: -0.16em; width: 104%; height: 0.32em; overflow: visible; color: var(--Sand); }
.hero__title .hl path { stroke-dasharray: 1; stroke-dashoffset: 1; animation: heroDraw 1.1s 0.7s var(--ease) forwards; }
.hero__lead { margin-top: 32px; max-width: 520px; color: var(--White) !important; opacity: 0.92; }
.hero .btn-row { margin-top: 36px; }
.hero__units { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 48px; max-width: 560px; }
.hero__unit { display: flex; align-items: center; gap: 12px; padding: 8px 16px 8px 8px; border-radius: 64px; background: rgba(255, 255, 255, 0.1); border: 1px solid var(--White-30); color: var(--White); transition: background-color var(--t-base), border-color var(--t-base), color var(--t-base); }
.hero__unit:hover, .hero__unit:focus-visible { background: var(--White); border-color: var(--White); color: var(--c-brand); }
.hero__unit .thumb { flex-shrink: 0; width: 52px; height: 52px; border-radius: 50%; overflow: hidden; }
.hero__unit .thumb img { width: 100%; height: 100%; object-fit: cover; }
.hero__unit strong { display: block; font-size: var(--fs-body-2); line-height: 22px; font-weight: 500; }
.hero__unit small { display: block; font-size: var(--fs-note); line-height: 16px; opacity: 0.8; }
.hero__unit .ico-arrow { margin-left: auto; transition: transform var(--t-base); }
.hero__unit:hover .ico-arrow { transform: translateX(3px); }

.hero__visual { position: relative; align-self: stretch; min-height: 620px; }
.hero__disc { position: absolute; right: 4%; bottom: -12%; width: min(41vw, 640px); aspect-ratio: 1; border-radius: 50%; background: var(--Sand); }
.hero__disc::after { content: ""; position: absolute; inset: -22px; border-radius: 50%; border: 2px dashed rgba(255, 255, 255, 0.35); animation: heroSpin 60s linear infinite; }
.hero__kids { position: absolute; z-index: 2; right: -3%; bottom: 0; width: min(50vw, 800px); height: auto; -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 9%); mask-image: linear-gradient(90deg, transparent 0, #000 9%); }
.bubble { position: absolute; z-index: 3; margin: 0; aspect-ratio: 1; border-radius: 50%; overflow: hidden; border: 6px solid var(--White); box-shadow: 0 12px 32px rgba(70, 6, 6, 0.28); background: var(--Ash-100); }
.bubble img { width: 100%; height: 100%; object-fit: cover; }
.bubble--1 { width: clamp(150px, 14.5vw, 220px); top: 8%; left: 2%; }
.bubble--2 { width: clamp(120px, 11vw, 170px); top: 3%; right: 6%; }
.bubble--3 { width: clamp(90px, 7.6vw, 116px); top: 33%; right: -1%; }
.hero__badge { position: absolute; z-index: 3; top: 21%; left: 40%; width: clamp(112px, 9.4vw, 140px); aspect-ratio: 1; border-radius: 50%; background: var(--c-detail); color: var(--White); box-shadow: 0 12px 32px rgba(7, 14, 112, 0.35); }
.hero__badge svg { position: absolute; inset: 6px; width: calc(100% - 12px); height: calc(100% - 12px); animation: heroSpin 22s linear infinite; }
.hero__badge text { font-size: 9.4px; font-weight: 500; letter-spacing: 0; fill: currentColor; }
.hero__badge img { position: absolute; left: 50%; top: 50%; width: 42%; height: auto; transform: translate(-50%, -50%); }
.hero__star { position: absolute; z-index: 3; color: var(--Sand); }
.hero__star svg { display: block; width: 100%; height: 100%; animation: heroTwinkle 3.2s ease-in-out infinite; }
.hero__star--1 { width: 40px; top: 44%; left: 10%; }
.hero__star--2 { width: 24px; top: 6%; left: 38%; }
.hero__star--3 { width: 30px; top: 52%; right: 4%; }
.hero__star--2 svg { animation-delay: 1.1s; }
.hero__star--3 svg { animation-delay: 2s; }

/* Entrada */
.hero__text > * { opacity: 0; transform: translateY(24px); animation: heroUp 0.8s var(--ease) forwards; }
.hero__text > *:nth-child(2) { animation-delay: 0.08s; }
.hero__text > *:nth-child(3) { animation-delay: 0.16s; }
.hero__text > *:nth-child(4) { animation-delay: 0.24s; }
.hero__text > *:nth-child(5) { animation-delay: 0.32s; }
.hero__disc { transform: scale(0.85); opacity: 0; animation: heroScale 1.1s cubic-bezier(0.22, 1, 0.36, 1) 0.1s forwards; }
.hero__kids { opacity: 0; transform: translateY(32px); animation: heroUp 1s cubic-bezier(0.22, 1, 0.36, 1) 0.3s forwards; }
.bubble, .hero__badge { opacity: 0; transform: scale(0); animation: heroPop 0.7s cubic-bezier(0.34, 1.56, 0.64, 1) forwards, heroFloat 6s ease-in-out infinite alternate; }
.bubble--1 { animation-delay: 0.55s, 1.3s; }
.bubble--2 { animation-delay: 0.7s, 1.5s; }
.bubble--3 { animation-delay: 0.85s, 1.7s; }
.hero__badge { animation-delay: 1s, 2s; }
@keyframes heroUp { to { opacity: 1; transform: none; } }
@keyframes heroScale { to { opacity: 1; transform: none; } }
@keyframes heroPop { from { opacity: 0; transform: scale(0); } to { opacity: 1; transform: scale(1); } }
@keyframes heroFloat { from { translate: 0 0; } to { translate: 0 -12px; } }
@keyframes heroSpin { to { transform: rotate(360deg); } }
@keyframes heroDraw { to { stroke-dashoffset: 0; } }
@keyframes heroTwinkle { 0%, 100% { transform: scale(1) rotate(0); opacity: 1; } 50% { transform: scale(0.72) rotate(18deg); opacity: 0.7; } }

@media (max-width: 1180px) {
  .hero__units { grid-template-columns: 1fr; max-width: 360px; }
}
@media (max-width: 991px) {
  .hero { min-height: 0; }
  .hero__rings { width: 180vw; right: -70vw; bottom: -90vw; }
  .hero__grid { grid-template-columns: minmax(0, 1fr); }
  .hero__kids { -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 7%, #000 93%, transparent 100%); mask-image: linear-gradient(90deg, transparent 0, #000 7%, #000 93%, transparent 100%); }
  .hero__text { padding: 44px 0 8px; }
  .hero__title { margin-top: 22px; font-size: clamp(52px, 15vw, 72px); }
  .hero__lead { margin-top: 22px; }
  .hero .btn-row { margin-top: 28px; }
  .hero__units { max-width: none; margin-top: 32px; }
  .hero__visual { min-height: 0; aspect-ratio: 1 / 0.98; margin: 24px calc(var(--gutter) * -1) 0; }
  .hero__disc { right: 50%; bottom: -16%; width: 84%; translate: 50% 0; }
  .hero__kids { right: 50%; width: 112%; translate: 50% 0; }
  .bubble--1 { width: 31%; top: 3%; left: 4%; }
  .bubble--2 { width: 24%; top: 0; right: 5%; }
  .bubble--3 { display: none; }
  .hero__badge { width: 92px; top: 18%; left: 40%; }
  .hero__star--1 { left: 6%; top: 40%; width: 26px; }
  .hero__star--2 { left: 70%; top: 34%; }
  .hero__star--3 { display: none; }
}

/* ===================== Intro com digitação ===================== */
.intro { background: var(--Ash-50); padding: 120px 0; }
.intro__inner { max-width: 1040px; margin: 0 auto; text-align: center; }
.intro .label-1 { margin-bottom: 24px; }
.typing { display: flex; flex-wrap: wrap; justify-content: center; column-gap: 0.22em; }
.typing .word { display: inline-flex; white-space: nowrap; }
.typing .char { color: var(--Ash-200); transition: color 0.12s linear; }
.typing .char.on { color: var(--c-brand); }
.intro .btn-row { margin-top: 40px; }
@media (max-width: 991px) { .intro { padding: 72px 0; } }

/* Fixação para o efeito "seção sobe por cima" */
.stack { position: relative; }
.stack > .pin { position: sticky; top: var(--pin-top, var(--nav-h)); z-index: 0; }
.stack > .over { position: relative; z-index: 2; }

/* ===================== Seção com arco ===================== */
.arch-section { --arch-color: var(--card-1); position: relative; z-index: 2; margin-top: calc(var(--arch-h) * -1); }
.arch { display: block; width: 100%; height: var(--arch-h); fill: var(--arch-color); transition: fill var(--t-base); }
.arch-section__body { margin-top: -1px; padding: 48px 0 var(--section-y); background: var(--arch-color); transition: background-color var(--t-base); overflow: hidden; }
.arch-section--plain { margin-top: 0; }

/* ===================== Carrossel centralizado ===================== */
.cc { --cc-w: min(800px, 56vw); --cc-gap: 158px; position: relative; }
.cc__viewport { overflow: hidden; touch-action: pan-y; }
.cc__track { display: flex; gap: var(--cc-gap); transition: transform var(--t-slow) var(--ease-panel); will-change: transform; }
.cc__track.no-anim, .cc__track.no-anim * { transition: none !important; }
.cc__slide { flex: 0 0 var(--cc-w); text-align: center; }
.cc__slide:not(.is-active) { cursor: pointer; }
.cc__slide .media { aspect-ratio: 16 / 9; border-radius: 600px; }
.cc__slide .label-2 { margin-top: 32px; }
.cc__slide h3 { margin-top: 8px; }
.cc__slide .body-2 { max-width: 640px; margin: 16px auto 0; }
.cc__slide:not(.is-active) .cc__txt { opacity: 0.35; }
.cc__txt { transition: opacity var(--t-base); }
.cc__nav { position: absolute; left: 50%; top: calc(var(--cc-w) * 0.28125); width: calc(var(--cc-w) + 160px); transform: translate(-50%, -50%); display: flex; justify-content: space-between; pointer-events: none; }
.cc__nav .icon-btn { pointer-events: auto; }
.cc__count { margin-top: 32px; text-align: center; font-size: var(--fs-body-3); color: var(--Grey-800); font-variant-numeric: tabular-nums; }
@media (max-width: 991px) {
  .cc { --cc-w: 84vw; --cc-gap: 16px; }
  .cc__nav { position: static; transform: none; width: auto; justify-content: center; gap: 16px; margin-top: 24px; }
  .cc__count { margin-top: 16px; }
}

/* ===================== Mídia em cápsula ===================== */
.media { position: relative; overflow: hidden; background: var(--Ash-100); transition: border-radius var(--t-base) var(--ease); }
.media img, .media iframe { width: 100%; height: 100%; object-fit: cover; }
.media--capsule { aspect-ratio: 16 / 9; border-radius: 600px; }
.media--wide { aspect-ratio: 21 / 9; border-radius: 600px; }
.media--tall { aspect-ratio: 3 / 4.4; border-radius: 1000px; }
.media--circle { aspect-ratio: 1; border-radius: 50%; }
.media--round { border-radius: 400px; aspect-ratio: 16 / 10; }
.media-hover:hover .media, .media.is-hoverable:hover { border-radius: 0; }
@media (max-width: 991px) { .media--wide { aspect-ratio: 4 / 3; border-radius: 300px; } }

/* ===================== Duas colunas ===================== */
.split { display: flex; align-items: center; }
.split__media { width: 46.875%; margin-right: 6.25%; flex-shrink: 0; }
.split__text { flex: 1; min-width: 0; }
.split--reverse { flex-direction: row-reverse; }
.split--reverse .split__media { margin: 0 0 0 6.25%; }
.split--top { align-items: flex-start; }
@media (max-width: 991px) {
  .split, .split--reverse { flex-direction: column; align-items: stretch; }
  .split__media, .split--reverse .split__media { width: 100%; margin: 0 0 32px; }
}

/* ===================== Página interna (masthead) ===================== */
.page-head { background: var(--Ash-50); padding: 96px 0 0; }
.page-head__text { max-width: 900px; margin: 0 auto; text-align: center; }
.page-head__text .label-1 { margin-bottom: 20px; }
.page-head__text .body-1 { margin: 24px auto 0; max-width: 760px; }
.page-head__media { margin-top: 56px; position: relative; }
.page-head__media::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 50%; background: var(--White); z-index: -1; }
.page-head--plain { padding-bottom: var(--section-y); }
.crumbs { display: flex; justify-content: center; gap: 8px; margin-bottom: 24px; font-size: var(--fs-body-3); color: var(--Grey-600); }
.crumbs a:hover { color: var(--c-hover); }
@media (max-width: 991px) { .page-head { padding-top: 56px; } .page-head__media { margin-top: 40px; } }

/* ===================== Unidades (colunas) ===================== */
.units { display: grid; grid-template-columns: 1fr 1fr; border-top: 1px solid var(--Ash-200); }
.unit { display: flex; flex-direction: column; align-items: center; text-align: center; padding: 56px 40px; border-right: 1px solid var(--Ash-200); }
.unit:last-child { border-right: 0; }
.unit .media { width: min(100%, 360px); margin: 32px 0; }
.unit h3 { margin-top: 8px; }
.unit .body-2 { max-width: 460px; }
.unit .btn-row { justify-content: center; }
@media (max-width: 991px) {
  .units { grid-template-columns: 1fr; }
  .unit { padding: 40px 0; border-right: 0; border-bottom: 1px solid var(--Ash-200); }
  .unit .media { width: 72%; }
}

/* ===================== Imagem full width ===================== */
.full-media { position: relative; display: flex; align-items: center; justify-content: center; min-height: 760px; overflow: hidden; }
.full-media > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.full-media__mask { position: absolute; inset: 0; background: linear-gradient(0deg, rgba(74, 8, 8, 0.62), rgba(74, 8, 8, 0.36)); }
.full-media__text { position: relative; z-index: 2; width: min(720px, 100%); padding: 0 var(--gutter); text-align: center; display: flex; flex-direction: column; align-items: center; }
.full-media__text h2 { margin: 16px 0; }
@media (max-width: 991px) { .full-media { min-height: 560px; } }

/* ===================== Números ===================== */
.stats { display: grid; grid-template-columns: repeat(5, 1fr); border-top: 1px solid var(--Ash-200); }
.stats--4 { grid-template-columns: repeat(4, 1fr); }
.stats--3 { grid-template-columns: repeat(3, 1fr); }
.stats--2 { grid-template-columns: repeat(2, 1fr); }
.stat { padding: 32px 24px 0; border-left: 1px solid var(--Ash-200); }
.stat:first-child { border-left: 0; padding-left: 0; }
.stat .display-2 { color: var(--c-brand); white-space: nowrap; }
.stat .display-2 small { font-size: 0.5em; font-weight: 500; }
.stat .body-3 { margin-top: 12px; max-width: 220px; }
.stats--compact .stat .display-2 { font-size: var(--fs-display-3); line-height: var(--lh-display-3); }
@media (max-width: 991px) {
  .stats, .stats--4, .stats--3 { grid-template-columns: 1fr 1fr; }
  .stat { padding: 24px 16px 24px 0; border-left: 0; border-bottom: 1px solid var(--Ash-200); }
  .stat:nth-child(even) { padding-left: 16px; border-left: 1px solid var(--Ash-200); }
  .stat .display-2 { font-size: 36px; line-height: 40px; }
}

/* ===================== Citação ===================== */
.quote { display: flex; align-items: center; padding: 0 9%; }
.quote__media { width: 38%; margin-right: 7.5%; flex-shrink: 0; }
.quote__media .media { background: var(--Sand); overflow: hidden; }
.quote__media .media img { position: absolute; left: 50%; bottom: 0; width: 150%; max-width: none; height: auto; transform: translateX(-50%); object-fit: initial; }
.quote__text { flex: 1; }
.quote__mark { width: 72px; height: 58px; margin-bottom: 24px; color: var(--Sand); }
.quote__text blockquote p { font-size: var(--fs-h3); line-height: var(--lh-h3); font-weight: 400; color: var(--White); }
.quote__author { margin-top: 40px; }
.quote__author strong { display: block; font-size: var(--fs-h5); font-weight: 500; color: var(--White); }
.quote__author span { display: block; margin-top: 8px; font-size: var(--fs-body-3); color: var(--White-70); }
@media (max-width: 991px) {
  .quote { flex-direction: column; padding: 0; align-items: stretch; }
  .quote__media { width: 72%; margin: 0 auto 40px; }
}

/* ===================== Cards de localização ===================== */
.locs { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; }
.loc .media { aspect-ratio: 16 / 10; border-radius: 32px; background: var(--Ash-100); }
.loc .media iframe { border: 0; filter: saturate(0.9); }
.loc__body { padding-top: 24px; }
.loc__body h3 { margin: 8px 0 12px; }
.loc__line { display: flex; align-items: flex-start; gap: 12px; margin-top: 12px; }
.loc__line svg { width: 20px; height: 20px; flex-shrink: 0; margin-top: 2px; color: var(--c-detail); }
.loc__line a:hover { color: var(--c-hover); }
@media (max-width: 991px) { .locs { grid-template-columns: 1fr; gap: 56px; } }

/* ===================== Grid de cards com divisórias ===================== */
.cols { display: grid; grid-template-columns: repeat(var(--cols, 4), 1fr); border-top: 1px solid var(--Ash-200); }
.cols > * { padding: 32px 24px 8px; border-left: 1px solid var(--Ash-200); }
.cols > *:first-child { border-left: 0; padding-left: 0; }
.cols--5 { --cols: 5; }
.cols--3 { --cols: 3; }
.cols--2 { --cols: 2; }
.feature__num { display: block; font-size: var(--fs-h4); font-weight: 500; color: var(--c-detail); margin-bottom: 16px; font-variant-numeric: tabular-nums; }
.feature h4, .feature h5 { margin-bottom: 12px; }
@media (max-width: 1200px) { .cols--5 { --cols: 3; } .cols--5 > *:nth-child(4) { border-left: 0; padding-left: 0; } .cols--5 > *:nth-child(n+4) { border-top: 1px solid var(--Ash-200); } }
@media (max-width: 991px) {
  .cols, .cols--5, .cols--3, .cols--2 { --cols: 1; }
  .cols > *, .cols--5 > *:nth-child(n) { padding: 24px 0; border-left: 0; padding-left: 0; border-top: 1px solid var(--Ash-200); }
  .cols > *:first-child { border-top: 0; }
}

/* Lista de espaços */
.spaces { display: grid; grid-template-columns: repeat(4, 1fr); column-gap: 24px; margin-top: 48px; counter-reset: sp; }
.spaces li { display: flex; align-items: center; gap: 16px; padding: 18px 0; border-top: 1px solid var(--Ash-200); font-size: var(--fs-body-2); line-height: 24px; color: var(--Grey-800); counter-increment: sp; }
.spaces li::before { content: counter(sp, decimal-leading-zero); flex-shrink: 0; width: 40px; height: 40px; display: inline-flex; align-items: center; justify-content: center; border-radius: 50%; background: var(--Ash-100); font-size: var(--fs-note); font-weight: 500; letter-spacing: 0.05em; color: var(--c-detail); }
@media (max-width: 1200px) { .spaces { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 991px) { .spaces { grid-template-columns: 1fr; } }

/* ===================== Tiles coloridos (Extra Service) ===================== */
.tiles { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0; }
.tiles--2 { grid-template-columns: repeat(2, 1fr); }
.tile { position: relative; display: flex; flex-direction: column; min-height: 340px; padding: 40px; background: var(--tile, var(--card-1)); overflow: hidden; }
.tile:nth-child(6n+1) { --tile: var(--card-1); }
.tile:nth-child(6n+2) { --tile: var(--card-2); }
.tile:nth-child(6n+3) { --tile: var(--card-3); }
.tile:nth-child(6n+4) { --tile: var(--card-4); }
.tile:nth-child(6n+5) { --tile: var(--card-5); }
.tile:nth-child(6n+6) { --tile: var(--card-6); }
.tile__icon { width: 64px; height: 64px; border-radius: 50%; background: var(--White); display: inline-flex; align-items: center; justify-content: center; color: var(--c-brand); margin-bottom: 40px; }
.tile__icon svg { width: 28px; height: 28px; }
.tile h3 { margin-bottom: 12px; }
.tile .body-2 { color: var(--Grey-800); }
.tile__tag { margin-top: auto; padding-top: 24px; }
.tile__tag span { display: inline-flex; padding: 6px 12px; border-radius: 32px; background: var(--White); font-size: var(--fs-label-2); line-height: 16px; font-weight: 500; letter-spacing: 0.1em; text-transform: uppercase; color: var(--c-brand); }
.tile__tag span.is-extra { background: var(--c-detail); color: var(--White); }
.tile::after { content: ""; position: absolute; right: -60px; bottom: -60px; width: 180px; height: 180px; border-radius: 50%; background: rgba(255, 255, 255, 0.22); transition: transform var(--t-slow) var(--ease-panel); }
.tile:hover::after { transform: scale(1.35); }
@media (max-width: 991px) { .tiles, .tiles--2 { grid-template-columns: 1fr; } .tile { min-height: 0; padding: 32px 24px; } .tile__icon { margin-bottom: 24px; } }

/* ===================== Lista com check ===================== */
.checklist { margin-top: 24px; border-top: 1px solid var(--Ash-200); }
.checklist li { display: flex; gap: 16px; align-items: flex-start; padding: 16px 0; border-bottom: 1px solid var(--Ash-200); font-size: var(--fs-body-2); line-height: var(--lh-body-2); color: var(--c-text); }
.checklist li svg { flex-shrink: 0; width: 24px; height: 24px; padding: 4px; border-radius: 50%; background: var(--c-detail); color: var(--White); margin-top: 1px; }
.badge { display: inline-flex; align-items: center; gap: 10px; margin-top: 32px; padding: 14px 20px; border-radius: 48px; background: var(--Sand); color: var(--c-detail); font-size: var(--fs-label-2); font-weight: 500; letter-spacing: 0.1em; text-transform: uppercase; }
.badge svg { width: 18px; height: 18px; }

/* ===================== Galeria (scroll horizontal) ===================== */
.scroller { position: relative; }
.scroller__track { display: flex; gap: 24px; overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth; scrollbar-width: none; padding: 0 var(--gutter); scroll-padding: 0 var(--gutter); }
@media (min-width: 1281px) { .scroller__track { padding: 0 80px; scroll-padding: 0 80px; } }
.scroller__track::-webkit-scrollbar { display: none; }
.scroller__item { flex: 0 0 auto; width: clamp(240px, 22vw, 340px); scroll-snap-align: start; }
.scroller__item .media { width: 100%; }
.scroller__item figcaption { margin-top: 16px; }
.scroller--square .scroller__item { width: clamp(240px, 26vw, 400px); }
.scroller__nav { display: flex; align-items: center; gap: 16px; flex-shrink: 0; }
.scroller__count { min-width: 56px; text-align: center; font-size: var(--fs-body-3); font-variant-numeric: tabular-nums; }
@media (max-width: 991px) { .scroller__item { width: 64vw; } .scroller--square .scroller__item { width: 72vw; } .scroller__track { gap: 16px; } }

/* ===================== Acordeão ===================== */
.acc { border-top: 1px solid var(--Ash-200); }
.acc__item { border-bottom: 1px solid var(--Ash-200); }
.acc__h { margin: 0; font: inherit; letter-spacing: normal; color: inherit; }
.acc__btn { display: flex; align-items: center; gap: 24px; width: 100%; padding: 24px 0; text-align: left; }
.acc__btn .acc__num { flex-shrink: 0; width: 40px; font-size: var(--fs-body-3); font-weight: 500; color: var(--c-detail); font-variant-numeric: tabular-nums; }
.acc__btn .acc__title { flex: 1; font-size: var(--fs-h5); line-height: var(--lh-h5); font-weight: 500; color: var(--c-brand); transition: color var(--t-base); }
.acc__btn:hover .acc__title { color: var(--c-hover); }
.acc__btn .icon-btn--grey { width: 48px; height: 48px; }
.acc__btn:hover .icon-btn--grey { background: var(--Ash-200); }
.acc__panel { height: 0; overflow: hidden; opacity: 0; visibility: hidden; transition: opacity var(--t-base) 0.1s, visibility var(--t-base), height var(--t-slow) var(--ease); }
.acc__item.is-open .acc__panel { opacity: 1; visibility: visible; transition: opacity var(--t-base), height var(--t-slow) var(--ease); }
.acc__content { padding: 0 72px 28px 64px; }
.acc--plain .acc__content { padding-left: 0; }
.acc__content p + p { margin-top: 12px; }
@media (max-width: 991px) {
  .acc__btn { gap: 12px; padding: 18px 0; }
  .acc__btn .acc__num { width: 28px; }
  .acc__btn .icon-btn--grey { width: 36px; height: 36px; }
  .acc__content { padding: 0 0 24px 40px; }
}

/* Layout de duas colunas com cabeçalho fixo */
.sticky-split { display: grid; grid-template-columns: 5fr 7fr; gap: 6.25%; align-items: start; }
.sticky-split__head { position: sticky; top: calc(var(--nav-h) + 40px); }
.sticky-split__head .label-1 { margin-bottom: 16px; }
.sticky-split__head .body-2 { margin-top: 16px; }
@media (max-width: 991px) { .sticky-split { grid-template-columns: 1fr; gap: 40px; } .sticky-split__head { position: static; } }

/* ===================== Promo (CTA final) ===================== */
.promo { background: var(--Brand-Red-600); color: var(--White); }
.promo__media { position: relative; aspect-ratio: 1.78; border-radius: 337px; overflow: hidden; background: var(--Sand); }
.promo__media img { position: absolute; left: 50%; bottom: 0; width: 84%; height: auto; transform: translateX(-50%); }
.promo__media .promo__ring { position: absolute; right: -12%; top: -30%; width: 70%; aspect-ratio: 1; border-radius: 50%; border: 2px solid rgba(255,255,255,.45); }
.promo .body-1 { margin-top: 16px; }

/* ===================== Formulário ===================== */
.form { display: grid; grid-template-columns: 1fr 1fr; gap: 20px 16px; }
.field { display: flex; flex-direction: column; gap: 10px; }
.field--full { grid-column: 1 / -1; }
.field label { font-size: var(--fs-body-3); font-weight: 500; color: var(--Grey-800); }
.field label small { font-weight: 400; color: var(--Grey-600); }
.input, .select, .textarea {
  width: 100%; height: 64px; padding: 0 24px; border: 1px solid var(--Ash-200); border-radius: 64px; background: var(--White);
  font: inherit; font-size: var(--fs-body-2); color: var(--Grey-800); transition: border-color var(--t-fast), box-shadow var(--t-fast);
}
.textarea { height: 140px; padding: 20px 24px; border-radius: 32px; resize: vertical; }
.select { appearance: none; padding-right: 56px; background: var(--White) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23bb1717' stroke-width='1.5'/%3E%3C/svg%3E") no-repeat right 24px center; }
.input::placeholder, .textarea::placeholder { color: var(--Grey-300); }
.input:hover, .select:hover, .textarea:hover { border-color: var(--Ash-350); }
.input:focus, .select:focus, .textarea:focus { outline: none; border-color: var(--c-brand); box-shadow: var(--focus-ring); }
.field.has-error .input, .field.has-error .select, .field.has-error .textarea { border-color: var(--Error); }
.field__error { display: none; font-size: var(--fs-body-3); color: var(--Error); }
.field.has-error .field__error { display: block; }
.form__foot { grid-column: 1 / -1; display: flex; align-items: center; justify-content: space-between; gap: 24px; flex-wrap: wrap; margin-top: 8px; }
.form__foot .note { max-width: 360px; }
.form-layout { display: grid; grid-template-columns: 7fr 5fr; gap: 6.25%; align-items: start; }
@media (max-width: 991px) { .form-layout { grid-template-columns: 1fr; gap: 56px; } }
.form-panel { padding: 48px; background: var(--White); border: 1px solid var(--Ash-200); border-radius: 32px; }
@media (max-width: 991px) { .form { grid-template-columns: 1fr; } .form-panel { padding: 28px 20px; } .input, .select { height: 56px; padding-left: 20px; } }

/* Lista de contatos */
.contact-list > li { display: flex; gap: 20px; padding: 24px 0; border-bottom: 1px solid var(--Ash-200); }
.contact-list > li:first-child { border-top: 1px solid var(--Ash-200); }
.contact-list .icon-btn { pointer-events: none; }
.contact-list .label-2 { margin-bottom: 8px; }
.contact-list a:hover { color: var(--c-hover); }
.contact-list p + p { margin-top: 8px; }

/* ===================== Rodapé ===================== */
.footer { background: var(--Brand-Red-900); color: var(--White); padding-top: 56px; }
.footer__top { display: flex; align-items: center; justify-content: space-between; gap: 24px; padding-bottom: 40px; }
.footer__logo img { width: 220px; height: auto; }
.footer__row { display: flex; border-top: 1px solid var(--White-30); }
.footer__col { padding: 24px 24px 48px; border-left: 1px solid var(--White-30); }
.footer__col:first-child { width: 40%; padding-left: 0; border-left: 0; padding-right: 8%; }
.footer__col--grow { flex: 1; }
.footer .label-1 { color: var(--Grey-50); margin-bottom: 20px; }
.footer p, .footer li { font-size: var(--fs-body-3); line-height: 24px; font-weight: 300; color: var(--White); }
.footer li + li { margin-top: 8px; }
.footer a:hover { text-decoration: underline; text-underline-offset: 3px; }
.footer__unit + .footer__unit { margin-top: 20px; }
.footer__unit strong { display: block; font-weight: 500; margin-bottom: 4px; }
.footer__social { display: flex; gap: 16px; margin-top: 24px; }
.footer__social a { width: 56px; height: 56px; border-radius: 50%; border: 1px solid var(--White-30); display: inline-flex; align-items: center; justify-content: center; transition: border-color var(--t-fast); }
.footer__social a:hover { border-color: var(--White); text-decoration: none; }
.footer__social svg { width: 20px; height: 20px; }
.footer__bottom { display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap; padding: 24px 0; border-top: 1px solid var(--White-30); }
.footer__bottom p { font-size: var(--fs-note); color: var(--White-70); }
@media (max-width: 991px) {
  .footer__top { flex-direction: column; align-items: flex-start; }
  .footer__row { flex-direction: column; }
  .footer__col, .footer__col:first-child { width: 100%; padding: 24px 0; border-left: 0; border-top: 1px solid var(--White-30); }
  .footer__col:first-child { border-top: 0; }
}

/* ===================== WhatsApp flutuante ===================== */
.wa-float {
  position: fixed; right: 24px; bottom: 24px; z-index: 8000; display: inline-flex; align-items: center; gap: 0;
  height: 56px; padding: 0 16px; border-radius: 56px; background: var(--c-brand); color: var(--White);
  box-shadow: 0 2px 21px 0 rgba(90, 10, 10, 0.28); transition: background-color var(--t-base), gap var(--t-base), transform var(--t-base), opacity var(--t-base);
}
.wa-float svg { width: 24px; height: 24px; }
.wa-float span { max-width: 0; overflow: hidden; white-space: nowrap; font-size: var(--fs-cta-2); font-weight: 500; letter-spacing: 0.05em; transition: max-width var(--t-slow) var(--ease); }
.wa-float:hover, .wa-float:focus-visible { background: var(--c-hover); gap: 10px; }
.wa-float:hover span, .wa-float:focus-visible span { max-width: 200px; }
.wa-float.is-hidden { opacity: 0; transform: translateY(16px); pointer-events: none; }
@media (max-width: 991px) { .wa-float { right: 16px; bottom: 16px; } }

/* ===================== Revelação ao rolar ===================== */
.reveal { opacity: 0; transform: translateY(24px); transition: opacity 0.8s var(--ease), transform 0.8s var(--ease); }
.reveal.is-in { opacity: 1; transform: none; }
.no-js .reveal { opacity: 1; transform: none; }

/* ===================== Utilidades ===================== */
.mt-16 { margin-top: 16px; } .mt-24 { margin-top: 24px; } .mt-40 { margin-top: 40px; } .mt-56 { margin-top: 56px; }
.mb-0 { margin-bottom: 0 !important; }
.center { text-align: center; }
.max-640 { max-width: 640px; }
.divider { border: 0; border-top: 1px solid var(--Ash-200); margin: 0; }
.ico, .ico-arrow { width: 20px; height: 20px; flex-shrink: 0; }
.mobile-menu__list .ico-arrow { color: var(--c-brand); transition: transform var(--t-base); }
.mobile-menu__list a:hover .ico-arrow { transform: translateX(2px); }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, ::before, ::after { transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; }
  .reveal, .hero__text > *, .hero__kids, .hero__disc, .bubble, .hero__badge { opacity: 1; transform: none; }
  .hero__title .hl path { stroke-dashoffset: 0; }
  .typing .char { color: var(--c-brand); }
}
