/* GERADO por scripts/juntar-css.mjs — NÃO EDITE. Edite as partes e rode o script. partes: home.css, immersao.css, cidades.css, tour.css, atendimento.css, segments.css, new-segments.css, booking-navigation.css, privacidade.css */
/* ===== home.css ===== */
/* Continuation of the approved sky / ceremony opening. */
.icon-arrow { display:inline-block; width:1em; height:1em; flex:none; vertical-align:-.12em; fill:none; stroke:currentColor; stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round; }
.booking-header { position:fixed; z-index:100; top:0; left:0; right:0; min-height:72px; padding:12px max(24px,4vw); display:flex; align-items:center; justify-content:space-between; gap:20px; background:rgba(247,246,242,.94); border-bottom:1px solid rgba(0,0,0,.09); backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px); }
.booking-brand { display:flex; flex:none; }
.booking-brand img { display:block; width:100px; height:auto; }
.booking-button { display:inline-flex; align-items:center; justify-content:center; gap:14px; min-height:44px; padding:11px 22px; border:1px solid #171717; border-radius:999px; background:#171717; color:#fff; font-size:.875rem; line-height:1.4; text-decoration:none; }
.booking-button:hover { background:#333; }
.booking-header a:focus-visible { outline:2px solid #171717; outline-offset:4px; }
body[data-experience] .opening .topbar { padding-top:100px; }
body[data-experience="casamentos"] .arrival-locations, body[data-experience] .tour-enhanced .tour-location { top:96px; }
/* O top:96px acima existe para o cabeçalho fixo do desktop, mas vencia — por especificidade, que
   media query não altera — a regra do celular no <style> da página. Resultado: no celular as
   cidades ficavam a 96px, por baixo de "INDAIÁ EVENTOS" e do título. Aqui elas voltam para onde a
   abertura sempre quis: 43% da altura da foto, sobre as árvores da montanha, aparecendo com a
   rolagem junto do título (--mobile-cities-top vem do opening.js). */
@media (max-width: 760px) {
  /* A conta do opening.js põe as cidades a 43% da foto; os 10% que tiramos aqui sobem a lista para
     o meio da mata e deixam as duas linhas acima do balão do chat — que sobe quando o aviso de
     cookies fica aberto. A sombra é um pouco mais fechada porque aqui o fundo tem céu e serra. */
  body[data-experience="casamentos"] .arrival-locations {
    top: calc(var(--mobile-cities-top, 55svh) - var(--photo-height, 0px) * .1);
    text-shadow: 0 1px 3px rgba(0,0,0,.5), 0 2px 14px rgba(0,0,0,.6);
  }
}
body[data-experience] .service-scroll-hint { top:88px; }
body[data-experience] .page-content [id] { scroll-margin-top:88px; }
body[data-experience] .proof-editorial { grid-template-columns:1fr 1fr; gap:clamp(36px,7vw,100px); padding-top:48px; padding-bottom:88px; border-top:0; }
.proof-photo { margin:0; overflow:hidden; }
.proof-photo picture, .plan-photo picture { display:block; height:100%; }
.proof-photo img { display:block; width:100%; height:auto; aspect-ratio:4/5; object-fit:cover; object-position:50% 38%; }
.proof-editorial .proof-copy .eyebrow { color:#b9b9b9; margin:0 0 22px; }
.proof-editorial .proof-copy > p { color:#b9b9b9; }
.proof-editorial .proof-tenure { display:flex; align-items:center; gap:20px; margin-top:36px; padding-top:26px; border-top:1px solid #373737; font-size:.875rem; }
.proof-tenure span { color:#fff; font-size:clamp(52px,6vw,80px); line-height:1; letter-spacing:-.06em; }
body[data-experience] .plan-box { padding:0; gap:28px 56px; grid-template-columns:.9fr 1.1fr; }
.plan-photo { grid-column:1; grid-row:1 / 3; margin:0; min-height:100%; overflow:hidden; }
.plan-photo img { display:block; width:100%; height:100%; object-fit:cover; object-position:50% 45%; }
body[data-experience] .plan-copy { grid-column:2; padding:48px 40px 0 0; }
body[data-experience] .plan-copy > p:not(.eyebrow) { max-width:440px; }
body[data-experience] .plan-box .event-form { grid-column:2; padding:0 40px 48px 0; }
@media (max-width:760px) {
  .booking-header { min-height:64px; padding:8px 16px; gap:12px; }
  .booking-brand img { width:76px; }
  .booking-button { padding:10px 14px; font-size:.75rem; gap:8px; }
  body[data-experience] .opening .topbar { padding-top:92px; }
  body[data-experience] .opening .brand { width:150px; }
  body[data-experience] .proof-editorial { grid-template-columns:1fr; gap:32px; padding-top:16px; padding-bottom:64px; }
  .proof-photo img { max-height:520px; aspect-ratio:4/5; }
  body[data-experience] .plan-section { padding-left:0; padding-right:0; }
  body[data-experience] .plan-box { display:flex; flex-direction:column; gap:0; margin:0; width:100%; }
  .plan-photo { min-height:0; height:clamp(320px,105vw,460px); }
  body[data-experience] .plan-copy { padding:36px 24px 0; }
  body[data-experience] .plan-box .event-form { padding:12px 24px 40px; }
}
.cities a { color: inherit; text-decoration: none; text-underline-offset: 5px; }
.cities a:hover { text-decoration: underline; }
.page-content { --cream: #f7f6f2; --line: #dcdcdc; --muted: #6b6b6b; position: relative; background: var(--cream); color: var(--ink); }
.page-content *, .site-footer * { min-width: 0; }
.page-content a, .site-footer a { color: inherit; }
.page-content a:focus-visible, .site-footer a:focus-visible, .page-content summary:focus-visible { outline: 2px solid #6d6d6d; outline-offset: 5px; }
.page-content h2, .page-content h3, .site-footer h2 { font-weight: 300; }
.page-content h2 { margin: 0; font-size: clamp(34px, 4.7vw, 66px); line-height: 1.13; letter-spacing: -.045em; text-wrap: balance; }
.page-content h3 { margin: 0; }
.page-content p { line-height: 1.8; }
.page-content [id], .site-footer [id] { scroll-margin-top: 24px; }
.page-shell { max-width: 1320px; margin: 0 auto; padding-left: 64px; padding-right: 64px; }
.page-section { padding-top: 112px; padding-bottom: 112px; }
.eyebrow { margin: 0 0 22px; color: var(--muted, #6b6b6b); font-size:.875rem; line-height: 1.5 !important; letter-spacing: .15em; text-transform: uppercase; }
.section-heading { display: grid; grid-template-columns: 1.15fr 1fr; align-items: end; gap: 80px; margin-bottom: 54px; }
.section-intro { max-width: 410px; margin: 0 0 5px auto; color: var(--muted); font-size:1rem; line-height: 1.85; }
.event-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 22px; padding-bottom: 36px; }
.event-card { text-decoration: none; display: block; }
.event-card:nth-child(even) { margin-top: 36px; }
.event-card figure { margin: 0 0 22px; overflow: hidden; background: #e8e8e8; }
.event-card img { display: block; width: 100%; aspect-ratio: 3 / 4; height: auto; object-fit: cover; object-position: var(--focus, 50% 50%); transition: transform 500ms ease; }
.event-card:hover img { transform: scale(1.025); }
.event-card h3 { font-size: clamp(21px, 2.1vw, 29px); letter-spacing: -.04em; }
.event-card p { margin: 10px 0 15px; color: var(--muted); font-size:.875rem; line-height: 1.7; }
.card-link { display: inline-block; padding: 5px 0; border-bottom: 1px solid #a3a3a3; font-size:.875rem; }
.card-link span { margin-left: 9px; }
.venues-section { background: #efefef; }
.unit-tabs { display: flex; flex-wrap: wrap; gap: 12px 36px; margin: 0 0 34px; padding: 0 0 17px; border-bottom: 1px solid #d0d0d0; }
.unit-tab { position: relative; min-height: 44px; padding: 10px 0; border: 0; background: transparent; color: #717171; font-size:1rem; }
.unit-tab::after { content: ''; position: absolute; left: 0; right: 0; bottom: -18px; height: 2px; background: #656565; opacity: 0; }
.unit-tab[aria-selected="true"] { color: var(--ink); }
.unit-tab[aria-selected="true"]::after { opacity: 1; }
.unit-panel { display: grid; grid-template-columns: 1.13fr 1fr; gap: 64px; align-items: start; }
.unit-photo { margin: 0; }
.unit-photo img { display: block; width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; background: #e3e3e3; }
.unit-photo figcaption { font-size:.875rem; line-height: 1.5; color: #6e6e6e; margin-top: 12px; }
.unit-info { padding: 10px 0 0; }
.unit-info .eyebrow { margin-bottom: 14px; }
.unit-info h3 { font-size: 37px; line-height: 1.1; letter-spacing: -.04em; }
.unit-description { font-size:1rem; margin: 20px 0 23px; color: #646464; }
.unit-address { margin: 19px 0; font-size:.875rem; font-style: normal; line-height: 1.7; }
.unit-address strong { display: block; font-weight: 300; font-size:1rem; margin-bottom: 4px; }
.map-link { display: inline-block; margin-top: 5px; padding: 3px 0; text-decoration-thickness: 1px; text-underline-offset: 4px; font-size:.875rem; }
.text-link { display: inline-flex; align-items: center; gap: 18px; margin-top: 12px; padding: 10px 0; font-size:.875rem; text-decoration: none; border-bottom: 1px solid #8b8b8b; }
.text-link span { flex-shrink:0; font-size: 20px; line-height: 1; }
.proof { display: grid; grid-template-columns: 1fr 1fr; align-items: center; gap: 80px; padding-top: 88px; padding-bottom: 88px; }
.proof-number { margin: 0; font-size: clamp(80px, 12vw, 155px); line-height: 1 !important; letter-spacing: -.075em; color: #7a7a7a; }
.proof-caption { display: block; font-size:.875rem; line-height: 1.6; letter-spacing: .06em; margin-top: 16px; }
.proof h2 { font-size: clamp(29px, 3vw, 41px); }
.proof-copy p { margin: 20px 0 0; color: var(--muted); font-size:1rem; max-width: 430px; }
.care-section { border-top: 1px solid var(--line); display: grid; grid-template-columns: 1fr 1fr; align-items: start; gap: 90px; }
.care-intro p:not(.eyebrow) { max-width: 430px; color: var(--muted); font-size:1rem; margin: 24px 0; }
.care-mark { margin-top: 32px; color: #c8c8c8; font-size: clamp(100px, 15vw, 185px); line-height: 1; letter-spacing: -.07em; }
.care-mark span { font-size: .26em; vertical-align: top; line-height: 1.4; }
.care-list details { border-bottom: 1px solid var(--line); }
.care-list details:first-child { border-top: 1px solid var(--line); }
.care-list summary, .faq-list summary { list-style: none; cursor: pointer; position: relative; padding: 26px 30px 26px 0; font-size: 20px; line-height: 1.4; letter-spacing: -.025em; }
.care-list summary::-webkit-details-marker, .faq-list summary::-webkit-details-marker { display: none; }
.care-list summary::after, .faq-list summary::after { content: '+'; position: absolute; right: 0; top: 50%; transform: translateY(-50%); font-size: 22px; color: #848484; }
.care-list details[open] summary::after, .faq-list details[open] summary::after { content: '−'; }
.care-list summary small { display: inline-block; width: 42px; font-size:.875rem; color: #848484; vertical-align: middle; letter-spacing: .04em; }
.care-list p { margin: -2px 0 25px 42px; font-size:1rem; color: var(--muted); }
.moments-section { padding-top: 0; }
.moments-grid { display: grid; grid-template-columns: 1.1fr .8fr 1fr; align-items: end; gap: 22px; }
.moments-grid figure { margin: 0; }
.moments-grid img { display: block; width: 100%; height: auto; aspect-ratio: 4 / 5; object-fit: cover; }
.moments-grid figure:nth-child(2) { padding-bottom: 55px; }
.moments-grid figure:nth-child(2) img { aspect-ratio: 1 / 1; }
.moments-grid figure:nth-child(3) img { aspect-ratio: 3 / 4; }
.moments-grid figcaption { padding-top: 12px; color: var(--muted); font-size:.875rem; line-height: 1.6; }
.process-section { background: #efefef; }
.steps { list-style: none; padding: 0; margin: 55px 0 0; display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 40px; }
.step-number { display: block; font-size: 40px; letter-spacing: -.06em; color: #8d8d8d; padding-bottom: 22px; border-bottom: 1px solid #d6d6d6; margin-bottom: 24px; }
.steps h3 { font-size: 18px; letter-spacing: -.02em; }
.steps p { color: #6a6a6a; font-size:.875rem; margin: 12px 0 0; }
.faq-section { display: grid; grid-template-columns: .8fr 1.2fr; gap: 90px; }
.faq-section h2 { font-size: clamp(34px, 4vw, 50px); }
.faq-list details { border-bottom: 1px solid var(--line); }
.faq-list details:first-child { border-top: 1px solid var(--line); }
.faq-list summary { padding-top: 22px; padding-bottom: 22px; font-size: 16px; letter-spacing: -.015em; }
.faq-list p { margin: -2px 0 22px; color: var(--muted); font-size:1rem; }
.plan-section { padding-top: 0; }
.plan-box { padding: 64px; background: #ebebeb; display: grid; grid-template-columns: .9fr 1.1fr; gap: 70px; }
.plan-copy h2 { font-size: clamp(34px,4.1vw,54px); }
.plan-copy > p:not(.eyebrow) { margin: 25px 0; color: #656565; font-size:1rem; max-width: 330px; }
.prototype-note { padding-top: 20px; border-top: 1px solid #cdcdcd; font-size:.875rem !important; }
.form-progress { display: flex; align-items: center; justify-content: space-between; color: #6b6b6b; font-size:.875rem; text-transform: uppercase; letter-spacing: .1em; padding-bottom: 20px; margin-bottom: 25px; border-bottom: 1px solid #cdcdcd; }
.event-form fieldset { margin: 0; padding: 0; border: 0; }
.event-form legend { font-size: 21px; letter-spacing: -.03em; margin-bottom: 28px; line-height: 1.3; }
.field-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 26px 22px; }
.form-field { display: grid; align-content: start; gap: 10px; font-size:.875rem; color: #5d5d5d; }
.form-field.full { grid-column: 1 / -1; }
.form-field input, .form-field select { width: 100%; min-height: 46px; border: 0; border-bottom: 1px solid #b7b7b7; border-radius: 0; background: transparent; font: inherit; font-size: 16px; font-weight: 300; line-height: 1.5; color: #171717; padding: 10px 3px; }
.form-field input:focus, .form-field select:focus { outline: 0; border-bottom-color: #464646; box-shadow: 0 1px #464646; }
.form-field input::placeholder { color: #7f7f7f; opacity: 1; }
.field-hint { color: #727272; font-size:.875rem; line-height: 1.5; }
.form-actions { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-top: 30px; }
.primary-button { display: inline-flex; align-items: center; justify-content: center; gap: 25px; min-height: 48px; border: 1px solid #404040; border-radius: 999px; background: #404040; color: #fff !important; padding: 13px 24px; font: inherit; font-size:.875rem; line-height: 1.4; text-decoration: none; cursor: pointer; }
.primary-button:hover { background: #555555; }
.back-step { min-height: 44px; border: 0; background: transparent; font: inherit; font-size:.875rem; text-decoration: underline; text-underline-offset: 4px; padding: 8px 0; }
.form-selection { margin: -4px 0 26px; font-size:.875rem; color: #6b6b6b; line-height: 1.7; }
.review-title { margin: 0 0 14px; font-size: 28px; letter-spacing: -.035em; line-height: 1.25; }
.review-message { color: #656565; font-size:.875rem; margin-bottom: 26px; }
.request-summary { margin: 0; display: grid; gap: 15px; }
.request-summary div { display: grid; grid-template-columns: 105px 1fr; gap: 10px; padding-bottom: 12px; border-bottom: 1px solid #cfcfcf; }
.request-summary dt { font-size:.875rem; color: #727272; }
.request-summary dd { font-size:.875rem; margin: 0; overflow-wrap: anywhere; }
.site-footer { background: #f7f6f2; color: var(--ink); padding: 0 0 28px; }
.footer-top { display: grid; grid-template-columns: 1.2fr 1fr 1fr; gap: 48px; border-top: 1px solid #dcdcdc; padding-top: 50px; padding-bottom: 42px; }
.footer-logo { width: 150px; height: 60px; }
.footer-brand p { max-width: 240px; font-size:.875rem; line-height: 1.8; color: #707070; margin-top: 22px; }
.footer-title { font-size:.875rem; letter-spacing: .12em; text-transform: uppercase; margin: 0 0 18px; }
.footer-links { display: grid; gap: 12px; font-size:.875rem; }
.footer-links a { text-decoration: none; }
.footer-links a:hover { text-decoration: underline; text-underline-offset: 4px; }
.footer-bottom { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 16px; padding-top: 22px; border-top: 1px solid #e2e2e2; color: #707070; font-size:.875rem; line-height: 1.6; }
@media (max-width: 1000px) {
  .page-shell { padding-left: 36px; padding-right: 36px; }
  .section-heading, .unit-panel, .care-section, .faq-section { gap: 40px; }
  .event-grid { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 36px 22px; padding-bottom: 0; }
  .event-card:nth-child(even) { margin-top: 0; }
  .event-card img { aspect-ratio: 5 / 4; }
  .event-card h3 { font-size: 27px; }
  .plan-box { padding: 42px; gap: 40px; }
  .steps { gap: 28px; }
}
@media (max-width: 760px) {
  .page-shell { padding-left: 24px; padding-right: 24px; }
  .page-section { padding-top: 72px; padding-bottom: 72px; }
  .page-content [id], .site-footer [id] { scroll-margin-top: 86px; }
  .page-content h2 { font-size: clamp(32px, 9vw, 44px); }
  .eyebrow { font-size:.875rem; margin-bottom: 18px; }
  .section-heading { grid-template-columns: 1fr; gap: 24px; margin-bottom: 36px; }
  .section-intro { margin: 0; font-size:1rem; }
  .event-grid { gap: 34px 16px; }
  .event-card figure { margin-bottom: 16px; }
  .event-card img { aspect-ratio: 3 / 4; }
  .event-card h3 { font-size: clamp(18px, 5.1vw, 23px); }
  .event-card p { margin: 10px 0; font-size:.875rem; line-height: 1.75; }
  .card-link { font-size:.875rem; }
  .card-link span { margin-left: 4px; }
  .unit-tabs { gap: 6px 23px; margin-bottom: 24px; padding-bottom: 8px; }
  .unit-tab { font-size:.875rem; }
  .unit-tab::after { bottom: 3px; }
  .unit-panel { grid-template-columns: 1fr; gap: 27px; }
  .unit-photo img { aspect-ratio: auto; object-fit: contain; }
  .unit-info { padding: 0; }
  .unit-info h3 { font-size: 33px; }
  .unit-description { font-size:1rem; margin-top: 16px; }
  .unit-address { margin: 21px 0; }
  .proof { grid-template-columns: 1fr; gap: 32px; padding-top: 70px; padding-bottom: 70px; }
  .proof-number { font-size: 100px; }
  .proof h2 { font-size: 31px; }
  .proof-copy p { font-size:1rem; }
  .care-section { grid-template-columns: 1fr; gap: 35px; }
  .care-mark { font-size: 110px; margin-top: 25px; }
  .care-list summary { padding: 23px 25px 23px 0; font-size: 19px; }
  .care-list summary small { width: 34px; }
  .care-list p { margin-left: 34px; font-size:.875rem; }
  .moments-section { padding-top: 0; }
  .moments-grid { grid-template-columns: 1fr 1fr; gap: 26px 16px; }
  .moments-grid figure:first-child { grid-column: 1 / -1; }
  .moments-grid figure:first-child img { aspect-ratio: 3 / 2; }
  .moments-grid figure:nth-child(2) { padding-bottom: 0; }
  .moments-grid figure:nth-child(2) img, .moments-grid figure:nth-child(3) img { aspect-ratio: 3 / 4; }
  .moments-grid figcaption { font-size:.875rem; }
  .steps { grid-template-columns: 1fr; margin-top: 35px; gap: 27px; }
  .steps li { display: grid; grid-template-columns: 43px 1fr; column-gap: 16px; padding-bottom: 23px; border-bottom: 1px solid #d6d6d6; }
  .step-number { grid-row: 1 / 3; padding: 0; margin: 0; border: 0; font-size: 30px; }
  .steps h3 { margin-top: 4px; }
  .steps p { font-size:1rem; }
  .faq-section { grid-template-columns: 1fr; gap: 30px; }
  .faq-list summary { font-size:1rem; }
  .faq-list p { font-size:1rem; }
  .plan-section { padding-top: 0; }
  .plan-box { grid-template-columns: 1fr; gap: 34px; padding: 34px 24px; margin-left: -4px; margin-right: -4px; }
  .plan-copy h2 { font-size: 33px; }
  .plan-copy > p:not(.eyebrow) { margin: 19px 0; }
  .prototype-note { margin-bottom: 0 !important; }
  .field-grid { grid-template-columns: 1fr; gap: 23px; }
  .form-progress { margin-bottom: 22px; }
  .event-form legend { font-size: 20px; margin-bottom: 24px; }
  .primary-button { gap: 16px; padding-left: 20px; padding-right: 20px; }
  .form-actions { flex-wrap: wrap; }
  .request-summary div { grid-template-columns: 80px 1fr; }
  .footer-top { grid-template-columns: repeat(auto-fit,minmax(min(100%,9rem),1fr)); gap: 32px 24px; padding-top: 38px; padding-bottom: 36px; }
  .footer-brand { grid-column: 1 / -1; }
  .footer-logo { width: 130px; height: 52px; }
  .footer-links { gap: 15px; font-size:.875rem; }
  .footer-bottom { font-size:.875rem; }
}
@media (prefers-reduced-motion: reduce) {
  .event-card img { transition: none; }
  .event-card:hover img { transform: none; }
}

/* ===== immersao.css ===== */
/* Scroll chapters inspired by the rhythm of the Aerodynamics reference. */
.page-content { --cream:#f7f6f2; }
.experience-intro { padding-top:125px; padding-bottom:85px; scroll-margin-top:0 !important; }
.experience-heading { display:grid; grid-template-columns:1.25fr 1fr; gap:90px; align-items:end; }
.page-content .experience-heading h2 { font-size:clamp(48px,5.4vw,78px); line-height:1.12; letter-spacing:-.05em; text-wrap:initial; }
.experience-heading h2 span { color:#171717; }
.experience-copy { max-width:390px; margin-left:auto; padding-bottom:8px; }
.experience-copy p { font-size:1rem; color:#6b6b6b; line-height:1.85; margin:0 0 20px; }
.experience-chapters { margin-top:70px; padding-top:26px; border-top:1px solid #dadada; display:flex; align-items:center; justify-content:space-between; gap:24px; }
.experience-chapters > span { font-size:.875rem; color:#666; text-transform:uppercase; letter-spacing:.09em; }
.experience-chapters > div { display:flex; flex-wrap:wrap; gap:28px; }
.experience-chapters a { padding:8px 0; font-size:.875rem; text-decoration:none; border-bottom:1px solid transparent; }
.experience-chapters a:hover { border-bottom-color:#838383; }
.service-story { position:relative; height:400svh; scroll-margin-top:0 !important; }
.service-stage { position:sticky; top:0; height:100svh; }
.service-viewport { position:relative; width:100%; height:100%; overflow:hidden; background:#111111; clip-path:inset(0 var(--service-inset,5%) 0); }
.service-slide { position:absolute; inset:0; overflow:hidden; }
.service-visual { position:absolute; inset:0; opacity:var(--service-alpha,0); }
.service-slide:first-of-type .service-visual { opacity:var(--service-alpha,1); }
.service-image { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:var(--image-focus,center); transform:scale(var(--service-scale,1.03)); }
.service-visual::after { content:''; position:absolute; inset:0; background:linear-gradient(180deg,rgba(10,10,10,.5),rgba(10,10,10,.08) 30%,rgba(10,10,10,.55) 60%,rgba(10,10,10,.88)); }
.service-caption { position:absolute; z-index:3; bottom:calc(160px + 4svh); left:max(6vw,24px); right:24px; width:min(600px,75%); color:#fff; opacity:var(--caption-alpha,1); }
.service-slide:not(.is-active) .service-caption { visibility:hidden; opacity:0; pointer-events:none; }
.service-caption .eyebrow { color:#e4e4e4; margin-bottom:20px; font-size:.875rem; }
.service-caption h3 { font-size:clamp(32px,3.6vw,50px); letter-spacing:-.04em; line-height:1.15; }
.service-caption > p:last-child { max-width:420px; margin:23px 0 0; color:#e3e3e3; font-size:1rem; line-height:1.8; }
.service-navigation { position:absolute; z-index:4; bottom:4svh; left:max(6vw,24px); display:flex; align-items:end; gap:4px; width:min(220px,calc(100% - 48px)); color:#fff; }
.service-progress-label { display:flex; flex-direction:column; align-items:start; gap:8px; margin:0 0 9px; font-size:.875rem; line-height:1.5 !important; text-shadow:0 1px 8px #000; }
.service-progress-count { flex-shrink:0; font-variant-numeric:tabular-nums; letter-spacing:.08em; }
.service-progress-track { display:flex; flex-direction:column; flex-shrink:0; order:-1; width:44px; }
.service-progress-track button { position:relative; width:44px; height:44px; padding:0; border:0; background:transparent; border-radius:4px; }
.service-progress-track button::before, .service-progress-track button > span { position:absolute; left:0; top:5px; width:4px; height:34px; border-radius:999px; }
.service-progress-track button::before { content:''; background:rgba(255,255,255,.38); }
.service-progress-track button > span { background:#fff; transform:scaleY(var(--service-fill,0)); transform-origin:center top; }
.service-progress-track button:hover::before { background:rgba(255,255,255,.6); }
.service-navigation button:focus-visible { outline:2px solid #fff; outline-offset:2px; }
.service-autoplay-toggle { min-height:44px; padding:0; border:0; background:transparent; color:#fff; font:inherit; text-align:left; text-decoration:underline; text-underline-offset:5px; text-shadow:0 1px 8px #000; }
.service-scroll-hint { position:absolute; z-index:4; top:34px; right:5vw; color:#fff !important; font-size:.875rem; letter-spacing:.05em; text-decoration:none; padding:10px 0; }
.service-scroll-hint span { margin-left:12px; }
/* The ceremony arrival photograph keeps the bride and her team clear of the
   caption. Mobile framing removes excess sky while retaining both people. */
@media (min-width:761px) {
  body[data-experience="casamentos"] #service-detalhes .service-caption { left:auto; right:max(6vw,24px); width:min(480px,40vw); margin-left:auto; }
}
@media (max-width:760px) {
  body[data-experience="casamentos"] #service-detalhes .service-image { top:-35%; height:135%; }
}
@media (max-width:760px) and (max-height:690px) {
  body[data-experience="casamentos"] #service-detalhes .service-image { top:-75%; height:175%; }
}
.city-section { padding-top:125px; padding-bottom:100px; background:var(--cream); scroll-margin-top:0 !important; }
.city-heading { display:flex; justify-content:space-between; align-items:end; gap:40px; margin-bottom:55px; }
.city-heading > p { font-size:1rem; line-height:1.8; color:#6b6b6b; margin:0 0 7px; }
.city-track.unit-tabs { display:flex; flex-wrap:nowrap; gap:24px; overflow-x:auto; overscroll-behavior-x:contain; scroll-snap-type:x mandatory; scrollbar-width:none; border:0; padding:0 max(5vw,24px) 4px; margin:0; scroll-padding-inline:max(5vw,24px); cursor:grab; }
.city-track::-webkit-scrollbar { display:none; }
.city-track.is-dragging { cursor:grabbing; scroll-snap-type:none; user-select:none; }
.city-card.unit-tab { position:relative; flex:0 0 min(37vw,490px); height:clamp(400px,60svh,590px); padding:0; overflow:hidden; border:0; background:#484848; color:#fff; text-align:left; scroll-snap-align:start; cursor:inherit; isolation:isolate; border-radius:2px; }
.city-card::before { content:''; position:absolute; inset:0; z-index:1; background:linear-gradient(180deg,rgba(15,15,15,.25),transparent 38%,rgba(15,15,15,.8)); pointer-events:none; }
.city-card.unit-tab::after { inset:0; height:auto; border:2px solid rgba(241,241,241,.8); background:transparent; z-index:3; pointer-events:none; }
.city-card img { display:block; width:100%; height:100%; object-fit:cover; object-position:var(--city-focus,center); pointer-events:none; transition:transform 700ms ease; }
.city-card:hover img { transform:scale(1.025); }
.city-card:focus-visible { outline:2px solid #5a5a5a; outline-offset:-5px; }
.city-number { position:absolute; z-index:2; top:25px; left:28px; font-size:.875rem; letter-spacing:.12em; color:#f1f1f1; }
.city-caption { position:absolute; z-index:2; bottom:30px; left:28px; right:72px; display:grid; gap:9px; }
.city-name { font-size:clamp(28px,2.5vw,38px); line-height:1.1; letter-spacing:-.04em; color:#fff; }
.city-region { font-size:.875rem; line-height:1.6; color:#dedede; }
.city-address-hint { margin-top:9px; color:#ededed; font-size:.875rem; }
.city-arrow { position:absolute; z-index:2; right:25px; bottom:32px; width:42px; height:42px; display:grid; place-items:center; background:#f4f4f4; color:#171717; border-radius:50%; font-size:19px; }
.city-navigation { padding-top:34px; }
.city-progress { height:1px; background:#dadada; position:relative; }
.city-progress span { display:block; height:2px; width:var(--city-progress,22%); background:#7d7d7d; }
.city-navigation-bottom { display:flex; align-items:center; justify-content:space-between; gap:24px; margin-top:16px; }
.city-gesture { font-size:.875rem; color:#666; margin:0; }
.gesture-mobile { display:none; }
.city-buttons { display:flex; flex-shrink:0; gap:10px; }
.city-buttons button { width:40px; height:40px; border-radius:50%; border:1px solid #c3c3c3; background:transparent; font-size:18px; }
.city-buttons button:disabled { opacity:.3; cursor:default; }
.city-details { padding-top:52px; }
.city-details .unit-panel { grid-template-columns:1fr 1fr; gap:100px; padding-top:35px; border-top:1px solid #dadada; }
.unit-overview h3 { font-size:38px; letter-spacing:-.045em; line-height:1.2; }
.unit-overview .eyebrow { margin-bottom:12px; }
.unit-overview .unit-description { max-width:440px; }
.unit-directions { display:grid; grid-template-columns:1fr 1fr; align-content:start; gap:22px; padding-top:3px; }
.unit-directions .unit-address { margin:0; }
.unit-directions .unit-address:only-of-type { grid-column:1 / -1; }
.unit-directions .text-link { grid-column:1 / -1; justify-self:start; margin-top:0; }
/* One fixed optical axis follows the glass aisle without resetting the zoom. */
.night-journey { position:relative; scroll-margin-top:0 !important; }
.night-intro { padding:90px 24px 60px; text-align:center; background:var(--cream); }
.night-intro .eyebrow { margin-bottom:20px; }
.night-intro h2 { font-size:clamp(30px,3.6vw,52px); }
.party-arrival { position:relative; margin:0; width:100%; height:115svh; min-height:650px; overflow:hidden; background:#000; }
.party-arrival img { display:block; width:100%; height:100%; object-fit:cover; object-position:50% 42%; }
.party-arrival::after { content:''; position:absolute; inset:0; pointer-events:none; background:linear-gradient(to bottom,#000 0%,rgba(0,0,0,.9) 8%,rgba(0,0,0,.45) 22%,transparent 42%,transparent 76%,#000 100%); }
.party-lights { position:absolute; z-index:1; inset:0; overflow:hidden; pointer-events:none; mix-blend-mode:screen; mask-image:linear-gradient(transparent, #000 16%, #000 82%, transparent); }
.party-lights i { position:absolute; left:var(--light-x); top:var(--light-y); width:var(--light-size); height:var(--light-size); border-radius:50%; background:radial-gradient(circle,rgba(255,234,165,.95) 0%,rgba(255,206,99,.68) 14%,rgba(248,176,62,.24) 40%,transparent 72%); opacity:var(--light-opacity); filter:blur(2px); transform:translate3d(-50%,-50%,0); animation:party-light-float var(--light-time) ease-in-out var(--light-delay) infinite alternate paused; }
.party-arrival.lights-visible .party-lights i { animation-play-state:running; }
.party-arrival.lights-paused .party-lights i { animation-play-state:paused; }
@keyframes party-light-float {
  from { transform:translate3d(-50%,calc(-50% + 12px),0) scale(.88); }
  to { transform:translate3d(calc(-50% + var(--light-drift)),calc(-50% - 22px),0) scale(1.1); }
}
.after-dark { background:#000000; color:#ededed; --muted:#b9b9b9; --line:#3b3b3b; scroll-margin-top:0 !important; }
.party-section { padding-top:95px; padding-bottom:110px; }
.party-intro { display:grid; grid-template-columns:1.2fr 1fr; gap:24px 90px; margin-bottom:100px; }
.party-intro .eyebrow { grid-column:1 / -1; margin:0; color:#aaaaaa; }
.party-intro h2 { font-size:clamp(64px,9vw,132px); line-height:1 !important; letter-spacing:-.065em; text-wrap:initial; }
.party-intro h2 span { color:#ffffff; }
.party-intro > p:last-child { max-width:310px; justify-self:end; align-self:end; margin:0 0 6px; font-size:16px; color:#bababa; }
.party-carousel { --gallery-height:clamp(380px,64svh,680px); margin-bottom:100px; }
.party-gallery-track { position:relative; display:flex; gap:22px; padding:0 max(5vw,24px); overflow-x:auto; overscroll-behavior-x:contain; scroll-snap-type:x mandatory; scroll-padding-inline:max(5vw,24px); scrollbar-width:none; }
.party-gallery-track::-webkit-scrollbar { display:none; }
.party-gallery-track:focus-visible { outline:1px solid #c4c4c4; outline-offset:-4px; }
.party-gallery-item { flex:0 0 auto; margin:0; height:var(--gallery-height); width:calc(var(--gallery-height) * .667); overflow:hidden; background:#151515; scroll-snap-align:start; }
.party-gallery-wide { width:min(86vw,calc(var(--gallery-height) * 1.5)); }
.party-gallery-item img { display:block; width:100%; height:100%; object-fit:cover; object-position:var(--party-focus,center); user-select:none; -webkit-user-drag:none; }
.party-carousel-controls { display:flex; align-items:center; justify-content:space-between; gap:24px; padding-top:25px; }
.party-gallery-count { color:#a6a6a6; font-size:.875rem; letter-spacing:.1em; }
.party-gallery-count > #party-gallery-current { color:#fff; }
.party-carousel-buttons { display:flex; gap:10px; }
.party-carousel-buttons button { display:grid; place-items:center; width:44px; height:44px; padding:0; background:transparent; border:1px solid #515151; border-radius:50%; color:#fff; font-size:18px; }
.party-carousel-buttons button:hover { border-color:#b9b9b9; }
.party-carousel-buttons button:disabled { opacity:.35; cursor:default; }
#party-gallery-toggle { font-size:.875rem; }
.party-to-experience { position:relative; margin:0; width:100%; height:100svh; min-height:720px; max-height:1100px; overflow:hidden; background:#000; }
.party-to-experience img { display:block; width:100%; height:100%; object-fit:cover; object-position:50% 0%; }
.party-to-experience::after { content:''; position:absolute; inset:0; pointer-events:none; background:linear-gradient(to bottom,#000 0%,rgba(0,0,0,.82) 6%,rgba(0,0,0,.18) 19%,transparent 30%,transparent 62%,rgba(0,0,0,.25) 75%,rgba(0,0,0,.8) 93%,#000 100%); }
.after-dark .party-to-experience + .proof { border-top:0; padding-top:48px; }
.party-editorial { display:grid; grid-template-columns:1.1fr 1fr; gap:95px; align-items:center; }
.drinks-figure { margin:0; }
.drinks-figure img { display:block; width:100%; height:auto; aspect-ratio:4/5; object-fit:cover; object-position:50% 38%; background:#242424; }
.drinks-figure figcaption { font-size:.875rem; letter-spacing:.05em; padding-top:18px; color:#a1a1a1; }
.party-copy h3 { font-size:clamp(34px,4vw,56px); line-height:1.12; letter-spacing:-.045em; }
.party-copy > p:not(.eyebrow) { font-size:1rem; max-width:340px; color:#b9b9b9; margin:25px 0; }
.party-note { border-top:1px solid #414141; margin-top:38px; padding-top:25px; }
.party-note h4 { font-size:1rem; font-weight:300; margin:0 0 12px; }
.party-note p { color:#b0b0b0; font-size:.875rem; margin:0; }
.after-dark .text-link { color:#ededed; border-color:#6d6d6d; }
.after-dark .proof { border-top:1px solid var(--line); padding-top:85px; padding-bottom:95px; }
.after-dark .proof-number { color:#ffffff; }
.after-dark .proof-caption { color:#b9b9b9; }
.after-dark .process-section { background:#111111; }
.after-dark .steps p { color:#b4b4b4; }
.after-dark .step-number { color:#979797; border-color:#424242; }
.after-dark .faq-list summary::after { color:#aeaeae; }
.after-dark .plan-box { background:#181818; }
.after-dark .plan-copy > p:not(.eyebrow), .after-dark .form-selection, .after-dark .review-message { color:#b9b9b9; }
.after-dark .prototype-note, .after-dark .form-progress { border-color:#4b4b4b; }
.after-dark .form-progress, .after-dark .form-field { color:#b9b9b9; }
.after-dark .form-field input, .after-dark .form-field select { border-color:#656565; color:#efefef; color-scheme:dark; }
.after-dark .form-field input::placeholder { color:#949494; }
.after-dark .form-field input:focus, .after-dark .form-field select:focus { border-color:#bdbdbd; box-shadow:0 1px #bdbdbd; }
.after-dark .field-hint { color:#a2a2a2; }
.after-dark .primary-button { background:#f7f6f2; color:#000000 !important; border-color:#f7f6f2; }
.after-dark .primary-button:hover { background:#ffffff; }
.after-dark .request-summary div { border-color:#444444; }
.after-dark .request-summary dt { color:#acacac; }
.footer-dark { background:#000000; color:#ededed; }
.footer-dark .footer-logo { filter:invert(1); }
.footer-dark .footer-top, .footer-dark .footer-bottom { border-color:#373737; }
.footer-dark .footer-brand p, .footer-dark .footer-bottom { color:#a9a9a9; }
@media (min-width:761px) {
  #service-detalhes .service-caption { width:min(420px,42vw); }
}
@media (max-width:1000px) {
  .experience-heading { gap:45px; }
  .experience-chapters { align-items:start; }
  .experience-chapters > div { gap:18px; }
  .city-details .unit-panel { gap:50px; }
  .unit-directions { grid-template-columns:1fr; }
  .party-editorial { gap:50px; }
}
@media (max-width:760px) {
  .experience-intro { padding-top:80px; padding-bottom:55px; }
  .experience-heading { grid-template-columns:1fr; gap:32px; }
  .page-content .experience-heading h2 { font-size:clamp(34px,9.8vw,58px); }
  .experience-copy { margin:0; max-width:none; padding:0; }
  .experience-copy p { font-size:1rem; margin-bottom:18px; }
  .experience-chapters { flex-direction:column; align-items:stretch; margin-top:42px; gap:18px; }
  .experience-chapters > span { font-size:.875rem; }
  .experience-chapters > div { display:flex; flex-wrap:wrap; gap:8px 22px; }
  .experience-chapters a { font-size:.875rem; justify-self:start; }
  .service-story { height:460svh; }
  .service-image { object-position:var(--image-focus-mobile,var(--image-focus,center)); }
  .service-caption { left:24px; right:24px; bottom:calc(160px + 4svh); width:auto; }
  .service-navigation { left:24px; }
  .service-caption .eyebrow { font-size:.875rem; margin-bottom:16px; }
  .service-caption h3 { font-size:clamp(27px,7.1vw,42px); }
  .service-caption > p:last-child { max-width:310px; font-size:1rem; margin-top:18px; }
  .service-scroll-hint { right:24px; top:22px; font-size:.875rem; }
  .service-visual::after { background:linear-gradient(180deg,rgba(10,10,10,.5),rgba(10,10,10,.12) 30%,rgba(10,10,10,.64) 58%,rgba(10,10,10,.9)); }
  #service-espaco .service-caption { top:12%; bottom:auto; }
  #service-espaco .service-visual::after { background:linear-gradient(180deg,rgba(10,10,10,.75),rgba(10,10,10,.65) 38%,rgba(10,10,10,.06) 65%,rgba(10,10,10,.34)); }
  .city-section { padding-top:80px; padding-bottom:65px; }
  .city-heading { display:block; margin-bottom:35px; }
  .city-heading > p { margin:22px 0 0; font-size:.875rem; }
  .city-heading > p br { display:initial; }
  .city-track.unit-tabs { gap:15px; padding-left:24px; padding-right:24px; scroll-padding-inline:24px; }
  .city-card.unit-tab { flex-basis:79vw; height:clamp(330px,53svh,460px); }
  .city-number { left:22px; top:22px; font-size:.875rem; }
  .city-caption { left:22px; bottom:26px; right:62px; gap:8px; }
  .city-name { font-size:clamp(25px,7vw,35px); }
  .city-region { font-size:.875rem; }
  .city-address-hint { font-size:.875rem; margin-top:8px; }
  .city-arrow { width:36px; height:36px; right:18px; bottom:27px; font-size:17px; }
  .city-navigation { padding-top:23px; }
  .city-gesture { font-size:.875rem; }
  .gesture-desktop { display:none; }
  .gesture-mobile { display:inline; }
  .city-details { padding-top:28px; }
  .city-details .unit-panel { grid-template-columns:1fr; gap:10px; padding-top:30px; }
  .unit-overview h3 { font-size:31px; }
  .unit-overview .unit-description { font-size:1rem; margin-bottom:15px; }
  .unit-directions { gap:20px; }
  .unit-directions .unit-address { font-size:.875rem; }
  .night-intro { padding:60px 24px 38px; }
  .night-intro .eyebrow { font-size:.875rem; }
  .night-intro h2 { font-size:clamp(29px,8.2vw,42px); }
  .party-arrival { height:100svh; min-height:600px; }
  .party-arrival img { object-position:53% 50%; }
  .party-arrival::after { background:linear-gradient(to bottom,#000 0%,rgba(0,0,0,.88) 7%,rgba(0,0,0,.3) 21%,transparent 36%,transparent 78%,#000 100%); }
  .party-section { padding-top:72px; padding-bottom:65px; }
  .party-intro { grid-template-columns:1fr; gap:24px; margin-bottom:50px; }
  .party-intro h2 { font-size:clamp(48px,15vw,92px); }
  .party-intro > p:last-child { justify-self:start; font-size:1rem; margin:0; max-width:290px; }
  .party-carousel { --gallery-height:105vw; margin-bottom:64px; }
  .party-gallery-track { gap:15px; padding-left:24px; padding-right:24px; scroll-padding-inline:24px; }
  .party-gallery-item { width:84vw; max-width:none; }
  .party-carousel-controls { padding-top:20px; }
  .party-to-experience { height:78svh; min-height:520px; }
  .party-to-experience img { object-position:51% 50%; }
  .after-dark .party-to-experience + .proof { padding-top:32px; }
  .party-editorial { grid-template-columns:1fr; gap:42px; }
  .drinks-figure img { aspect-ratio:4/5; }
  .party-copy h3 { font-size:35px; }
  .party-copy > p:not(.eyebrow) { font-size:1rem; }
  .party-note { margin-top:28px; }
  .after-dark .proof { padding-top:65px; padding-bottom:70px; }
  .after-dark .steps li { border-color:#424242; }
}
.service-story.is-linear { height:auto; }
.service-story.is-linear .service-stage { position:relative; height:auto; }
.service-story.is-linear .service-viewport { clip-path:none !important; }
.service-story.is-linear .service-slide { position:relative; min-height:85svh; display:flex; align-items:end; padding:80px max(6vw,24px); }
.service-story.is-linear .service-visual, .service-story.is-linear .service-caption { opacity:1 !important; }
.service-story.is-linear .service-caption { position:relative; inset:auto !important; visibility:visible; pointer-events:auto; width:min(600px,100%) !important; }
.service-story.is-linear .service-visual::after { background:linear-gradient(180deg,rgba(10,10,10,.7),rgba(10,10,10,.65) 35%,rgba(10,10,10,.9)) !important; }
.service-story.is-linear .service-image { transform:none !important; }
.service-story.is-linear .service-navigation, .service-story.is-linear .service-scroll-hint { display:none; }
@media (prefers-reduced-motion:reduce) {
  .service-story { height:auto; }
  .service-stage { position:relative; height:auto; }
  .service-viewport { clip-path:none !important; }
  .service-slide { position:relative; min-height:85svh; display:flex; align-items:end; padding:80px max(6vw,24px); }
  .service-slide .service-visual, .service-slide .service-caption { opacity:1 !important; }
  .service-story .service-slide .service-caption { position:relative; inset:auto !important; visibility:visible; pointer-events:auto; width:min(600px,100%) !important; }
  .service-story .service-slide .service-visual::after { background:linear-gradient(180deg,rgba(10,10,10,.7),rgba(10,10,10,.65) 35%,rgba(10,10,10,.9)) !important; }
  .service-image { transform:none !important; }
  .service-navigation, .service-scroll-hint { display:none; }
  .city-card img { transition:none; }
  .city-card:hover img { transform:none; }
  .party-lights i { animation:none !important; }
}

/* ===== cidades.css ===== */
/* Circular city selection, progressively enabled on approved experiences. */
.has-city-coverflow .city-carousel {
  --city-width:clamp(290px,28vw,400px);
  --city-height:max(24rem,clamp(400px,60svh,540px));
  position:relative;
}
.has-city-coverflow .city-track {
  position:relative; display:block; height:calc(var(--city-height) + 56px);
  padding:0; overflow:clip; perspective:1400px; touch-action:pan-y;
  scroll-snap-type:none; isolation:isolate; user-select:none; -webkit-user-select:none;
}
.has-city-coverflow .city-card {
  position:absolute; top:28px; left:50%; margin-left:calc(var(--city-width) / -2);
  width:var(--city-width); height:var(--city-height); min-height:0;
  border-radius:10px; transform-origin:center;
  /* Keep the rotated silhouette antialiased when the embedded browser composites it. */
  backface-visibility:hidden; outline:1px solid transparent;
  will-change:transform;
  transition:transform 800ms cubic-bezier(.25,1,.5,1), opacity 800ms, filter 800ms, box-shadow 800ms;
}
.has-city-coverflow .city-card[data-city-position="0"] {
  transform:translateX(var(--city-drag-x,0px)) scale(1) rotateY(0); opacity:1; z-index:3; filter:none;
  box-shadow:0 18px 28px -16px rgb(0 0 0 / .32);
}
.has-city-coverflow .city-card[data-city-position="1"] {
  transform:translateX(calc(86% + var(--city-drag-x,0px))) scale(.84) rotateY(-24deg); opacity:1; z-index:2; filter:none;
}
.has-city-coverflow .city-card[data-city-position="-1"] {
  transform:translateX(calc(-86% + var(--city-drag-x,0px))) scale(.84) rotateY(24deg); opacity:1; z-index:2; filter:none;
}
.has-city-coverflow .city-card[data-city-position="2"] {
  transform:translateX(calc(155% + var(--city-drag-x,0px))) scale(.68) rotateY(-38deg); opacity:.42; z-index:1; filter:brightness(.72);
}
.has-city-coverflow .city-card[data-city-position="-2"] {
  transform:translateX(calc(-155% + var(--city-drag-x,0px))) scale(.68) rotateY(38deg); opacity:.42; z-index:1; filter:brightness(.72);
}
.has-city-coverflow .city-track.is-dragging .city-card { transition:none; }
.has-city-coverflow .city-card::after { display:none; }
.has-city-coverflow .city-card::before { background:linear-gradient(180deg,rgba(15,15,15,.2),transparent 35%,rgba(15,15,15,.85)); }
.has-city-coverflow .city-card img, .has-city-coverflow .city-card:hover img { transform:none; transition:none; }
.has-city-coverflow .city-card:focus-visible { outline:3px solid #fff; outline-offset:-6px; }
.has-city-coverflow .city-caption { right:24px; left:24px; bottom:26px; gap:8px; }
.has-city-coverflow .city-number { top:24px; left:24px; }
.has-city-coverflow .city-name { font-size:clamp(26px,2.3vw,34px); }
.has-city-coverflow .city-caption, .has-city-coverflow .city-number { transition:opacity 250ms; }
.has-city-coverflow .city-card:not([data-city-position="0"]) .city-caption,
.has-city-coverflow .city-card:not([data-city-position="0"]) .city-number { opacity:0; }
.has-city-coverflow .city-card[data-city-position="-1"] .city-caption,
.has-city-coverflow .city-card[data-city-position="1"] .city-caption { opacity:1; }
.has-city-coverflow .city-card[data-city-position="1"] .city-caption { text-align:right; }
.has-city-coverflow .city-card:not([data-city-position="0"]) .city-region,
.has-city-coverflow .city-card:not([data-city-position="0"]) .city-address-hint { display:none; }
.has-city-coverflow .city-card[data-city-position="-1"] img,
.has-city-coverflow .city-card[data-city-position="1"] img { filter:brightness(.8); }
.has-city-coverflow .city-neighbor-name { display:none; }
.has-city-coverflow .city-arrow, .has-city-coverflow .city-progress,
.has-city-coverflow .city-buttons { display:none; }
.has-city-coverflow .city-carousel > button {
  position:absolute; top:50%; transform:translateY(-50%); z-index:4;
  width:48px; height:48px; border:1px solid #c3c3c3; border-radius:50%;
  background:var(--cream); color:var(--ink); font-size:22px; cursor:pointer;
  box-shadow:0 3px 16px rgb(0 0 0 / .1);
}
.has-city-coverflow #city-prev { left:max(24px,5vw); }
.has-city-coverflow #city-next { right:max(24px,5vw); }
.has-city-coverflow .city-navigation { padding-top:4px; }
.has-city-coverflow .city-dots { display:flex; justify-content:center; gap:2px; }
.has-city-coverflow .city-dots button { display:grid; place-items:center; width:44px; height:44px; padding:0; border:0; background:transparent; cursor:pointer; }
.has-city-coverflow .city-dots button::before { content:''; width:7px; height:7px; border-radius:10px; background:#9b9b9b; transition:width 300ms, background 300ms; }
.has-city-coverflow .city-dots button[aria-current="true"]::before { width:25px; background:#404040; }
.has-city-coverflow .city-navigation-bottom { justify-content:center; margin-top:0; gap:24px; flex-wrap:wrap; }
.has-city-coverflow .city-autoplay-toggle { min-height:44px; padding:0 8px; border:0; background:transparent; font:inherit; font-size:.875rem; color:#555; text-decoration:underline; text-underline-offset:4px; cursor:pointer; }
.has-city-coverflow .city-navigation button:focus-visible,
.has-city-coverflow .city-carousel > button:focus-visible { outline:2px solid #444; outline-offset:3px; }
.has-city-coverflow .city-details { padding-top:32px; }
@media (max-width:760px) {
  .has-city-coverflow .city-carousel { --city-width:min(76vw,320px); --city-height:max(24rem,calc(var(--city-width) * 1.42)); display:grid; grid-template-columns:1fr 1fr; column-gap:16px; }
  .has-city-coverflow .city-track { grid-column:1 / -1; }
  .has-city-coverflow .city-heading { margin-bottom:22px; }
  .has-city-coverflow #city-prev { margin-left:24px; justify-self:start; }
  .has-city-coverflow #city-next { margin-right:24px; justify-self:end; }
  .has-city-coverflow .city-carousel > button {
    position:static; transform:none; display:flex; align-items:center; gap:8px;
    width:auto; max-width:calc(100% - 24px); min-height:44px; height:auto;
    padding:6px 0; border:0; border-radius:0; box-shadow:none; font-size:20px;
  }
  .has-city-coverflow .city-neighbor-name { display:inline; font-size:.875rem; line-height:1.5; }
  .has-city-coverflow .city-card:not([data-city-position="0"]) .city-caption { opacity:0; }
  .has-city-coverflow .city-navigation-bottom { gap:0 16px; }
  .has-city-coverflow .city-gesture { text-align:center; }
}
@media (prefers-reduced-motion:reduce) {
  .has-city-coverflow .city-card, .has-city-coverflow .city-caption,
  .has-city-coverflow .city-number, .has-city-coverflow .city-dots button::before { transition:none; }
}

/* ===== tour.css ===== */
/* Natural document flow is the accessible fallback for the 3D walkthrough. */
.tour-canvas { display:none; }
.tour-decoder { position:absolute; width:1px; height:1px; opacity:0; pointer-events:none; }
.tour-player { display:none; }
.tour-status { display:none; }
.tour-unavailable .tour-status { display:block; margin:0; padding:28px max(6vw,24px); font-size:.875rem; line-height:1.6; }
.night-intro .tour-invitation { margin:26px auto 0; max-width:420px; font-size:1rem; color:#64615c; line-height:1.7; }
.night-intro .tour-project-note { margin:24px 0 0; font-size:.875rem; color:#706b64; }
.night-scroll { position:relative; background:#000; }
.night-stage { position:relative; color:#fff; isolation:isolate; background:#000; }
.tour-scene { position:relative; margin:0; background:#171511; scroll-margin-top:0 !important; }
.tour-visual { position:relative; overflow:hidden; }
.tour-visual img { display:block; width:100%; height:auto; aspect-ratio:16/9; object-fit:cover; }
.tour-caption { position:relative; padding:38px max(6vw,24px) 56px; }
.tour-caption .eyebrow { color:#f0d3ad; font-size:.875rem; letter-spacing:.12em; margin:0 0 18px; }
.tour-caption h3 { font-size:clamp(1.9rem,3.5vw,3.5rem); font-weight:300; letter-spacing:-.045em; line-height:1.14; margin:0; text-wrap:balance; }
.tour-caption > p:last-child { max-width:430px; font-size:1rem; line-height:1.75; color:#eeece8; margin:22px 0 0; }
.tour-location, .tour-controls, .tour-dusk { display:none; }
.tour-finale { margin:0; padding:100px 24px 60px; text-align:center; }
.tour-finale > span { display:block; font-size:1rem; margin-bottom:24px; }
.tour-finale strong { display:block; font-size:clamp(2.4rem,7.8vw,8rem); font-weight:300; line-height:1.05; letter-spacing:-.06em; }
.tour-skip { display:block; width:fit-content; padding:18px 0; margin:0 auto; color:#fff !important; font-size:.875rem; text-decoration:none; border-bottom:1px solid #71685c; }
.tour-skip > span { margin-left:18px; }
.tour-chapters button:focus-visible, .tour-skip:focus-visible { outline:2px solid #f6d1a0; outline-offset:4px; }

/* The native XV route has five chapters and a separately rendered portrait. */
[data-tour-timeline].tour-enhanced .night-scroll { height:850svh; }
[data-tour-timeline].tour-enhanced .tour-caption { bottom:calc(254px + 4svh); }
@media(max-width:760px) {
  [data-tour-timeline] .tour-visual img { aspect-ratio:9/16; }
  [data-tour-timeline].tour-enhanced .tour-caption { bottom:calc(270px + 4svh); }
}

/* Enhancement is enabled only when motion and available reading space allow it. */
.tour-enhanced .night-scroll { height:680svh; }
.tour-enhanced .night-stage { position:sticky; top:0; height:100svh; overflow:clip; }
.tour-enhanced .tour-canvas { display:block; position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.tour-enhanced .tour-player { display:block; position:absolute; z-index:0; inset:0; width:100%; height:100%; object-fit:cover; pointer-events:none; }
.tour-enhanced .night-stage::after { content:''; position:absolute; z-index:1; inset:0; background:linear-gradient(90deg,rgba(14,12,9,.64),transparent 67%),linear-gradient(0deg,rgba(0,0,0,.7),transparent 54%); pointer-events:none; }
.tour-enhanced .tour-status { display:block; position:absolute; top:76px; left:max(6vw,24px); z-index:5; font-size:.875rem; text-shadow:0 2px 12px #000; }
.tour-enhanced .tour-status:empty { display:none; }
.tour-enhanced .tour-scene { position:absolute; inset:0; z-index:2; background:transparent; pointer-events:none; }
.tour-enhanced .tour-visual { display:none; }
.tour-enhanced:not(.tour-3d-ready) .tour-scene:first-of-type .tour-visual { display:block; position:absolute; inset:0; }
.tour-enhanced .tour-visual img { height:100%; aspect-ratio:auto; object-fit:cover; }
.tour-enhanced .tour-caption { position:absolute; left:max(6vw,24px); bottom:calc(214px + 4svh); width:min(540px,47vw); padding:0; visibility:hidden; opacity:0; text-shadow:0 2px 24px rgba(0,0,0,.18); }
.tour-enhanced .tour-scene.is-current .tour-caption { visibility:visible; opacity:var(--tour-caption-alpha,1); }
.tour-enhanced .tour-location { display:flex; position:absolute; z-index:5; top:32px; left:max(6vw,24px); right:max(6vw,24px); justify-content:space-between; gap:20px; margin:0; font-size:.875rem; line-height:1.5; letter-spacing:.08em; opacity:var(--tour-ui-alpha,1); text-shadow:0 2px 12px #000; }
.tour-enhanced .tour-dusk { display:block; position:absolute; z-index:3; inset:0; background:#000; opacity:var(--tour-darken,0); pointer-events:none; }
.tour-enhanced .tour-finale { position:absolute; z-index:4; top:50%; left:5%; width:90%; padding:0; transform:translate3d(0,calc(-50% + var(--tour-text-y,50svh)),0); opacity:var(--tour-text-alpha,0); pointer-events:none; text-shadow:0 2px 35px rgba(0,0,0,.7); }
.tour-enhanced .tour-finale > span { font-size:clamp(1rem,1.6vw,1.5rem); }
.tour-enhanced .tour-controls { display:flex; align-items:end; gap:4px; position:absolute; z-index:6; left:max(6vw,24px); bottom:4svh; opacity:var(--tour-ui-alpha,1); }
.tour-chapters { display:flex; flex-direction:column; }
.tour-chapters button { position:relative; display:block; width:44px; height:44px; padding:0; border:0; background:none; color:#fff; cursor:pointer; }
.tour-chapters button::before, .tour-chapters button span { content:''; display:block; position:absolute; top:8px; left:0; width:4px; height:28px; border-radius:8px; background:rgba(255,255,255,.35); }
.tour-chapters button span { background:#f1d5ae; transform:scaleY(var(--tour-fill,0)); transform-origin:center top; }
.tour-chapters button[aria-current="step"]::before { background:rgba(255,255,255,.65); }
.tour-direction { display:flex; flex-direction:column; align-items:start; gap:10px; margin:0 0 9px; font-size:.875rem; line-height:1.5; text-shadow:0 1px 12px #000; }
.tour-direction > span:first-child { color:#f1d5ae; font-variant-numeric:tabular-nums; letter-spacing:.15em; }
.tour-direction > span:last-child > span { display:inline-block; margin-left:9px; }
.tour-enhanced .tour-skip { position:absolute; z-index:6; right:max(6vw,24px); bottom:calc(4svh + 4px); margin:0; padding:14px 0; text-shadow:0 1px 14px #000; }

@media (max-width:760px) {
  .night-intro .tour-invitation { max-width:300px; }
  .night-intro .tour-project-note { margin-top:18px; }
  .tour-enhanced .night-scroll { height:650svh; }
  .tour-enhanced .tour-caption { left:24px; bottom:calc(228px + 4svh); width:calc(100% - 48px); }
  .tour-caption h3 { font-size:clamp(1.8rem,7.7vw,2.5rem); }
  .tour-caption > p:last-child { line-height:1.65; margin-top:18px; }
  .tour-caption .eyebrow { margin-bottom:14px; }
  .tour-enhanced .tour-location { top:24px; left:24px; right:24px; }
  .tour-location > span:last-child { display:none; }
  .tour-enhanced .night-stage::after { background:linear-gradient(0deg,rgba(0,0,0,.9),rgba(10,8,5,.64) 35%,rgba(10,8,5,.05) 75%); }
  .tour-enhanced .tour-controls { left:24px; bottom:calc(4svh + 24px); }
  .tour-enhanced .tour-skip { right:24px; bottom:2svh; padding:10px 0; }
  .tour-finale strong { font-size:clamp(2.6rem,10.5vw,4.4rem); }
  .tour-finale > span { max-width:230px; margin:0 auto 24px; line-height:1.5; }
}

@media (max-width:760px) and (max-height:690px) {
  [data-tour-timeline].tour-enhanced .tour-caption { bottom:calc(228px + 2svh); }
  .tour-enhanced .tour-caption .eyebrow { font-size:.75rem; margin-bottom:10px; }
  .tour-enhanced .tour-caption h3 { font-size:1.5rem; }
  .tour-enhanced .tour-caption > p:last-child { font-size:.875rem; line-height:1.6; margin-top:12px; }
}

/* This guard also takes effect immediately if the OS preference changes. */
@media (prefers-reduced-motion:reduce) {
  .tour-player, .tour-loop-mask, .tour-enhanced .tour-player { display:none; }
  .tour-canvas, .tour-enhanced .tour-canvas, .tour-enhanced .tour-status, .tour-enhanced .night-stage::after { display:none; }
  .tour-enhanced .night-scroll { height:auto; }
  .tour-enhanced .night-stage { position:relative; height:auto; overflow:visible; }
  .tour-enhanced .tour-scene { position:relative; }
  .tour-enhanced .tour-visual { display:block; position:relative; opacity:1; }
  .tour-enhanced .tour-visual img { height:auto; transform:none; will-change:auto; }
  .tour-enhanced .tour-visual::after, .tour-enhanced .tour-controls, .tour-enhanced .tour-location, .tour-enhanced .tour-dusk { display:none; }
  .tour-enhanced .tour-caption { position:relative; inset:auto; visibility:visible; opacity:1; width:auto; padding:38px 24px 56px; }
  .tour-enhanced .tour-finale { position:relative; inset:auto; width:auto; padding:100px 24px 60px; transform:none; opacity:1; }
  .tour-enhanced .tour-skip { position:relative; inset:auto; margin:auto; }
}

/* ===== atendimento.css ===== */
/* atendimento.css — janela de conversa do Indaiá (docs/ATENDIMENTO.md).

   Layout de chat simplificado: cabeçalho escuro com identidade, fio da conversa com balões,
   respostas rápidas em pílula, barra de digitação única e uma linha honesta no rodapé.
   Sem IA: quem responde é o motor de regras do servidor.

   Paleta: só o que o site já usa — tinta #171717, botão #404040 (hover #555), creme #f7f6f2,
   branco #fff, linhas #dcdcdc/#e6e6e6, apoio #656565/#727272/#8a8a8a. Tipografia Montserrat 300
   herdada da página. Zero imagem nova: o avatar é um monograma e a seta do enviar é SVG embutido.

   Contraste conferido (WCAG AA, texto normal ≥ 4,5:1):
     #fff sobre #171717 = 17,4:1 · #dcdcdc sobre #171717 = 12,0:1 · #fff sobre #404040 = 9,0:1
     #171717 sobre #fff (balão) = 17,4:1 · #6d6d6d sobre #fff (hora) = 5,4:1
     #171717 sobre #ededed (fio) = 15,0:1 · #5f5f5f sobre #ededed (autor, marco, aviso) = 5,5:1
     #6e6e6e sobre #f4f3ef (placeholder) = 4,6:1 · #dcdcdc sobre #404040 = 5,4:1
     Os tons de apoio do fio são #5f5f5f, não #727272: sobre #ededed o #727272 dá 4,2:1. */

.atendimento { min-width: 0; }
.atendimento * { box-sizing: border-box; }

/* ---------- janela ---------- */
.chat {
  display: grid;
  grid-template-rows: auto 1fr auto auto;
  min-width: 0;
  background: #fff;
  border: 1px solid #dcdcdc;
  border-radius: 16px;
  overflow: hidden;
}

/* ---------- cabeçalho ---------- */
.chat-topo {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 16px 20px;
  background: #404040;
  color: #fff;
}
.chat-avatar {
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 42px;
  height: 42px;
  border-radius: 50%;
  background: #f7f6f2;
  color: #171717;
  font-size: 20px;
  font-weight: 300;
  letter-spacing: .02em;
  line-height: 1;
}
.chat-identidade { min-width: 0; display: grid; gap: 3px; }
.chat-nome { margin: 0; font-size: .9375rem; line-height: 1.3; color: #fff; }
.chat-estado {
  display: flex;
  align-items: center;
  gap: 7px;
  margin: 0;
  font-size: .75rem;
  line-height: 1.4;
  color: #dcdcdc;
}
.chat-ponto { width: 7px; height: 7px; border-radius: 50%; background: #f7f6f2; flex: 0 0 auto; }

/* ---------- fio da conversa ---------- */
.chat-fio {
  display: flex;
  flex-direction: column;
  height: clamp(340px, 46vh, 470px);
  overflow-y: auto;
  overscroll-behavior: contain;
  padding: 18px;
  background: #ededed;
  scroll-behavior: smooth;
}
/* margin-top:auto encosta a conversa curta embaixo (como num chat) sem cortar o topo quando cresce */
.chat-fluxo { margin-top: auto; display: flex; flex-direction: column; gap: 10px; }
/* pílulas e cartões: mesmo bloco visual, mas fora da região viva do leitor de tela */
.chat-acoes { display: flex; flex-direction: column; gap: 10px; margin-top: 10px; }
.chat-acoes:empty { display: none; }
.chat-marco {
  align-self: center;
  margin: 0 0 4px;
  padding: 2px 4px;
  color: #5f5f5f;   /* 5,45:1 sobre o #ededed do fio */
  font-size: .6875rem;
  letter-spacing: .04em;
}

/* ---------- falas ---------- */
.fala { display: grid; gap: 4px; max-width: 86%; min-width: 0; }
.fala-bot { justify-self: start; }
.fala-eu { justify-self: end; justify-items: end; }
.fala + .fala { margin-top: 0; }
.fala-seguida { margin-top: -6px; }
.fala-autor {
  margin: 0;
  padding-inline: 2px;
  font-size: .6875rem;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: #5f5f5f;   /* 5,45:1 sobre o #ededed do fio */
}
.balao {
  padding: 11px 14px;
  border-radius: 16px;
  font-size: .9375rem;
  line-height: 1.6;
  overflow-wrap: anywhere;
  white-space: pre-line;
  min-width: 0;
}
.chat-mapa-convite { margin: 12px 0 0; }
.chat-mapa { display: flex; align-items: center; min-height: 44px; color: inherit; font-weight: 500; text-decoration: underline; text-underline-offset: 3px; }
.chat-mapa:focus-visible { outline: 2px solid currentColor; outline-offset: 2px; border-radius: 3px; }
.fala-bot .balao { background: #fff; border: 1px solid #e0e0e0; color: #171717; border-bottom-left-radius: 5px; }
.fala-eu .balao { background: #404040; color: #fff; border-bottom-right-radius: 5px; }
.fala-seguida .fala-autor { display: none; }
.fala-bot.fala-seguida .balao { border-bottom-left-radius: 16px; border-top-left-radius: 5px; }
.fala-eu.fala-seguida .balao { border-bottom-right-radius: 16px; border-top-right-radius: 5px; }
.balao-hora { display: block; margin-top: 5px; font-size: .6875rem; line-height: 1; }
.fala-bot .balao-hora { color: #6d6d6d; }
.fala-eu .balao-hora { color: #dcdcdc; text-align: right; }
/* aviso do sistema (ex.: modo demonstração): sem balão, discreto e centralizado */
.fala-aviso { justify-self: center; max-width: 100%; }
.fala-aviso .balao {
  background: transparent;
  border: 1px dashed #b9b9b9;
  color: #5f5f5f;   /* 5,45:1 sobre o #ededed do fio */
  font-size: .8125rem;
  text-align: center;
  border-radius: 12px;
}

/* ---------- digitando ---------- */
.balao-digitando { display: flex; align-items: center; gap: 5px; padding: 15px 16px; }
.balao-digitando span { width: 6px; height: 6px; border-radius: 50%; background: #9a9a9a; animation: chat-pulo 1.25s infinite ease-in-out; }
.balao-digitando span:nth-child(2) { animation-delay: .18s; }
.balao-digitando span:nth-child(3) { animation-delay: .36s; }
@keyframes chat-pulo { 0%, 60%, 100% { transform: translateY(0); opacity: .45; } 30% { transform: translateY(-4px); opacity: 1; } }

/* ---------- respostas rápidas ---------- */
.chat-opcoes { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 2px; }
.chat-opcao {
  min-height: 44px;
  padding: 10px 17px;
  border: 1px solid #404040;
  border-radius: 999px;
  background: #fff;
  color: #171717;
  font: inherit;
  font-size: .875rem;
  font-weight: 300;
  line-height: 1.3;
  cursor: pointer;
  transition: background-color .18s, color .18s;
}
/* 12 meses precisam caber sem virar quatro linhas no celular */
.chat-opcoes-compacto .chat-opcao { padding: 10px 13px; font-size: .8125rem; }
.chat-opcao:hover { background: #404040; color: #fff; }
.chat-opcao:focus-visible { outline: 2px solid #171717; outline-offset: 3px; }
.chat-opcao[disabled] { opacity: .5; cursor: default; }

/* ---------- cartão (resumo e ações) ---------- */
.fala-cartao { max-width: 100%; width: 100%; }
.chat-cartao { background: #fff; border: 1px solid #e6e6e6; border-radius: 16px; overflow: hidden; }
.chat-cartao-corpo { padding: 15px 16px 13px; }
.chat-cartao-titulo { margin: 0 0 12px; font-size: .9375rem; line-height: 1.4; color: #171717; }
.chat-resumo { margin: 0; display: grid; gap: 9px; }
/* minmax acompanha o tamanho da letra: com zoom de 200% o rótulo não invade o valor */
.chat-resumo > div { display: grid; grid-template-columns: minmax(6rem, max-content) 1fr auto; gap: 10px; align-items: baseline; }
.chat-resumo dt { font-size: .8125rem; color: #727272; }
.chat-resumo dd { margin: 0; font-size: .875rem; color: #171717; overflow-wrap: anywhere; }
.chat-editar {
  min-height: 44px;
  min-width: 44px;
  padding: 2px 8px;
  border: 0;
  background: transparent;
  font: inherit;
  font-size: .75rem;
  color: #404040;
  text-decoration: underline;
  text-underline-offset: 3px;
  cursor: pointer;
}
.chat-editar:focus-visible { outline: 2px solid #171717; outline-offset: 2px; }
.chat-cartao-nota { margin: 12px 0 0; font-size: .75rem; line-height: 1.6; color: #727272; }
.chat-cartao-acoes { display: grid; }
.chat-cartao-acao {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 46px;
  padding: 12px 16px;
  border: 0;
  border-top: 1px solid #e6e6e6;
  background: transparent;
  font: inherit;
  font-size: .875rem;
  color: #171717;
  text-decoration: none;
  text-align: center;
  cursor: pointer;
}
.chat-cartao-acao:hover { background: #f7f6f2; }
.chat-cartao-acao:focus-visible { outline: 2px solid #171717; outline-offset: -2px; }
.chat-cartao-acao-forte { background: #404040; color: #fff !important; border-top-color: #404040; }
.chat-cartao-acao-forte:hover { background: #555555; }
.chat-cartao-acao[disabled] { color: #8a8a8a; cursor: default; }
.chat-cartao-acao-forte[disabled] { background: #8a8a8a; border-top-color: #8a8a8a; }

/* ---------- barra de digitação ---------- */
.chat-barra {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 14px;
  background: #fff;
  border-top: 1px solid #e6e6e6;
}
.chat-campo {
  flex: 1;
  min-width: 0;
  min-height: 44px;
  padding: 11px 17px;
  border: 1px solid #e2e2e2;
  border-radius: 999px;
  background: #f4f3ef;
  font: inherit;
  font-size: 1rem; /* 1rem = 16px na raiz padrão: evita o zoom do iOS e cresce com a fonte do usuário */
  font-weight: 300;
  line-height: 1.4;
  color: #171717;
}
.chat-campo::placeholder { color: #6b6b6b; opacity: 1; }   /* 4,6:1 sobre o fundo do campo */
.chat-campo:focus { outline: 0; border-color: #404040; background: #fff; }
.chat-enviar {
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  border: 0;
  border-radius: 50%;
  background: #404040;
  cursor: pointer;
  transition: background-color .18s;
}
.chat-enviar:hover { background: #555555; }
.chat-enviar:focus-visible { outline: 2px solid #171717; outline-offset: 2px; }
.chat-enviar svg { width: 19px; height: 19px; fill: none; stroke: #fff; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.chat-enviar[disabled] { background: #e6e6e6; cursor: default; }
.chat-enviar[disabled] svg { stroke: #9a9a9a; }

/* ---------- rodapé honesto ---------- */
.chat-rodape {
  margin: 0;
  padding: 10px 16px 12px;
  border-top: 1px solid #f0efea;
  background: #fff;
  color: #727272;
  font-size: .75rem;
  line-height: 1.5;
  text-align: center;
}

/* ---------- sem script ---------- */
.atendimento-noscript { margin: 0; color: #656565; font-size: 1rem; line-height: 1.7; }
.chat-oculto { position: absolute; left: -9999px; width: 1px; height: 1px; opacity: 0; }

/* ---------- celular ---------- */
@media (max-width: 760px) {
  .chat { border-radius: 14px; }
  .chat-topo { padding: 14px 16px; gap: 12px; }
  .chat-avatar { width: 38px; height: 38px; font-size: 18px; }
  .chat-fio { height: clamp(300px, 56vh, 430px); padding: 16px 14px; }
  .fala { max-width: 90%; }
  .chat-resumo > div { grid-template-columns: minmax(5.25rem, max-content) 1fr auto; }
  .chat-barra { padding: 10px 12px; }
}

/* telas muito estreitas: rótulo em cima, valor embaixo, Editar na linha do rótulo */
@media (max-width: 420px) {
  .chat-resumo > div { grid-template-columns: 1fr auto; gap: 2px 10px; }
  .chat-resumo dt { grid-column: 1; }
  .chat-resumo .chat-editar { grid-column: 2; grid-row: 1 / 3; align-self: center; }
  .chat-resumo dd { grid-column: 1; }
}

/* ---------- movimento reduzido ---------- */
@media (prefers-reduced-motion: reduce) {
  .chat-fio { scroll-behavior: auto; }
  .chat-opcao, .chat-enviar { transition: none; }
  .balao-digitando span { animation: none; opacity: .5; }
  .balao-digitando span:nth-child(2) { opacity: .7; }
  .balao-digitando span:nth-child(3) { opacity: .9; }
}

/* ---------- encaixe no bloco "Vamos planejar" ----------
   A regra de home.css mira `.event-form` (classe), mas o painel usa id="event-form" e
   class="atendimento": sem isto o bloco encosta na borda direita e no rodapé do cinza. */
body[data-experience] .plan-box .atendimento { grid-column: 2; padding: 0 40px 48px 0; }
@media (max-width: 760px) {
  body[data-experience] .plan-box .atendimento { padding: 12px 24px 40px; }
}

/* ---------- flutuante: disco + balão "Quer agendar…?" (flutuante.js) ----------
   Criado depois do load. position:fixed: fora do fluxo (CLS 0) e fora do LCP (ícone SVG inline;
   o balão só aparece depois do primeiro gesto). z-index 90 < 100 do cabeçalho: o menu do celular
   abre por cima. Nas páginas claras o disco é #171717 com anel #f7f6f2 — o anel só aparece sobre
   o tour e o rodapé pretos (#000/#181818); no XV e nas Formaturas é o inverso. Sem sombra.
   Contraste medido: #fff/#171717 17,9:1 · #171717/#f7f2f5 16,2:1 · texto #171717/#fff 17,9:1 ·
   X e borda #404040/#fff 10,4:1 · borda #404040/creme 9,6:1 · anel #f7f6f2 sobre #000 19,4:1 e
   sobre #181818 16,4:1 · hover #333/#fff 12,6:1 · hover #dedede/#171717 13,3:1. */
.flutuante {
  --flut-margem: 16px;
  --flut-disco: #171717; --flut-icone: #fff; --flut-disco-hover: #333333; --flut-anel: #f7f6f2;
  --flut-foco: #171717; --flut-halo: #f7f6f2;
  position: fixed;
  z-index: 90;
  right: var(--flut-margem);
  /* --flut-desvio: quanto o aviso de privacidade ocupa no rodapé (flutuante.js) */
  bottom: calc(var(--flut-margem) + env(safe-area-inset-bottom, 0px) + var(--flut-desvio, 0px));
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 10px;
  max-width: calc(100% - 2 * var(--flut-margem));
  transition: opacity .26s ease, visibility 0s linear 0s;
}
.flutuante * { box-sizing: border-box; }
.flutuante button { font: inherit; font-weight: 300; }
body:is([data-experience="xv"], [data-experience="formaturas"]) .flutuante {
  --flut-disco: #f7f2f5; --flut-icone: #171717; --flut-disco-hover: #dedede; --flut-anel: #020101;
  --flut-foco: #f7f2f5; --flut-halo: #020101;
}
@media (min-width: 761px) { .flutuante { --flut-margem: 24px; } }

.flutuante-botao {
  display: grid;
  place-items: center;
  width: 56px;
  height: 56px;
  padding: 0;
  border: 1px solid var(--flut-anel);
  border-radius: 50%;
  background: var(--flut-disco);
  color: var(--flut-icone);
  cursor: pointer;
  transition: background-color .18s;
}
.flutuante-botao:hover { background: var(--flut-disco-hover); }
.flutuante-botao { animation: flutuante-suave 4.5s ease-in-out infinite; }
.flutuante-botao:hover, .flutuante-botao:focus-visible,
.flutuante.is-oculto .flutuante-botao, .flutuante.is-aberta .flutuante-botao { animation-play-state: paused; }
@keyframes flutuante-suave {
  0%, 100% { transform: translate3d(0, 0, 0); }
  50% { transform: translate3d(0, -4px, 0); }
}
.flutuante-botao svg { width: 26px; height: 26px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.flutuante-botao:focus-visible { outline: 2px solid var(--flut-foco); outline-offset: 2px; box-shadow: 0 0 0 5px var(--flut-halo); }

/* balão: a pílula branca da Sara (.chat-opcao / .fala-bot .balao); o canto de 5 px aponta para o disco */
.flutuante-balao {
  display: flex;
  align-items: center;
  gap: 2px;
  max-width: 100%;
  padding: 0 2px 0 0;
  background: #fff;
  color: #171717;
  border: 1px solid #404040;
  border-radius: 22px 22px 5px 22px;
  transition: opacity .26s ease, transform .26s ease, visibility 0s linear 0s;
}
.flutuante-balao-texto {
  display: grid;
  align-items: center;
  min-height: 44px;
  margin: 0;
  padding: 11px 6px 11px 17px;
  border: 0;
  background: transparent;
  color: inherit;
  font-size: .875rem;
  line-height: 1.4;
  text-align: left;
  cursor: pointer;
}
.flutuante-balao-texto:hover { text-decoration: underline; text-underline-offset: 4px; }
.flutuante-frase, .flutuante-digitando { grid-area: 1 / 1; }
.flutuante-digitando { display: none; align-items: center; gap: 5px; }
.flutuante-ponto { width: 5px; height: 5px; border-radius: 50%; background: currentColor; animation: chat-pulo 1s ease-in-out infinite; }
.flutuante-ponto:nth-child(2) { animation-delay: .14s; }
.flutuante-ponto:nth-child(3) { animation-delay: .28s; }
.flutuante-balao.is-digitando .flutuante-frase { visibility: hidden; }
.flutuante-balao.is-digitando .flutuante-digitando { display: inline-flex; }
.flutuante-balao.is-digitando .flutuante-balao-texto:hover { text-decoration: none; }
.flutuante-fechar {
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: transparent;
  color: #404040;
  cursor: pointer;
}
.flutuante-fechar:hover { background: #f7f6f2; }
.flutuante-fechar svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; }
.flutuante-balao-texto:focus-visible, .flutuante-fechar:focus-visible { outline: 2px solid #171717; outline-offset: -3px; }

/* oculto: sai da árvore de acessibilidade e do foco; só opacity/transform/visibility (compostas) */
.flutuante-balao.is-oculto { transform: translateY(6px); }
.flutuante.is-oculto, .flutuante-balao.is-oculto {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity .2s ease-in, transform .2s ease-in, visibility 0s linear .2s;
}
@media (prefers-reduced-motion: reduce) {
  .flutuante, .flutuante-balao, .flutuante-botao, .flutuante.is-oculto, .flutuante-balao.is-oculto { transition: none; }
  .flutuante-botao { animation: none; transform: none; }
  .flutuante-balao.is-oculto { transform: none; }
  .flutuante-ponto { animation: none; opacity: .6; }
}

/* ---------- a janela flutuante da Sara (16/09/2026) ----------
   Hospeda o MESMO painel (#event-form) da seção "Vamos planejar" — o disco abre a conversa em vez
   de rolar até ela. Desktop: 380 px acima do disco. Celular, ou qualquer tela baixa (≤ 560 px de
   altura: celular deitado, zoom alto): tela inteira, com X próprio. O corte é o mesmo de flutuante.js. */
.flutuante-janela {
  position: relative;
  width: 380px;
  max-width: 100%;
  height: min(620px, calc(100vh - 180px));   /* 90 px do disco + margem embaixo, cabeçalho + folga em cima */
  background: #fff;
  border: 1px solid #404040;
  border-radius: 16px;
  overflow: hidden;
  opacity: 0;
  transform: translateY(6px);
  transition: opacity .26s ease, transform .26s ease;   /* só a entrada anima; a saída é imediata */
}
.flutuante-janela.is-visivel { opacity: 1; transform: none; }
.flutuante-janela.is-oculto { display: none; }   /* fora do fluxo do canto: o balão e o disco ficam no lugar de sempre */
.flutuante-janela .atendimento { height: 100%; padding: 0; }
.flutuante-janela .chat { height: 100%; border: 0; border-radius: 0; }
.flutuante-janela .chat-fio { height: auto; min-height: 0; overscroll-behavior: contain; }
.flutuante-janela .chat-topo { padding-right: 64px; }   /* espaço para o X sobre o cabeçalho escuro */
.flutuante-janela-fechar {
  position: absolute;
  z-index: 1;
  top: 15px;
  right: 12px;
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: transparent;
  color: #fff;
  cursor: pointer;
}
.flutuante-janela-fechar:hover { background: rgba(255, 255, 255, .14); }
.flutuante-janela-fechar:focus-visible { outline: 2px solid #fff; outline-offset: -3px; }
.flutuante-janela-fechar svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; }
.flutuante.is-aberta .flutuante-balao { display: none; }   /* oculto por visibility ainda ocuparia altura entre a janela e o disco */

/* o lugar do painel enquanto a conversa está na janela: mesma coluna, mesmo respiro, mesma altura */
.atendimento-lugar {
  box-sizing: border-box;
  display: grid;
  gap: 14px;
  align-content: center;
  justify-items: start;
  color: inherit;   /* a seção "Vamos planejar" é escura na home e clara/escura nos outros: herda */
  font-size: .9375rem;
  line-height: 1.6;
}
.atendimento-lugar > p { margin: 0; }
.atendimento-lugar-botao {
  min-height: 44px;
  padding: 11px 18px;
  border: 1px solid currentColor;
  border-radius: 999px;
  background: transparent;
  color: inherit;
  font: inherit;
  font-weight: 300;
  font-size: .875rem;
  cursor: pointer;
}
.atendimento-lugar-botao:hover { text-decoration: underline; text-underline-offset: 4px; }
.atendimento-lugar-botao:focus-visible { outline: 2px solid currentColor; outline-offset: 2px; }
body[data-experience] .plan-box .atendimento-lugar { grid-column: 2; padding: 0 40px 48px 0; }
@media (max-width: 760px) {
  body[data-experience] .plan-box .atendimento-lugar { padding: 12px 24px 40px; }   /* igual ao painel */
}

/* tela cheia: celular, ou qualquer tela baixa. O disco e o balão somem (o X é da janela); a página
   por baixo fica inerte (flutuante.js) e sem rolagem; o toque não atravessa para a página */
html.flutuante-travado { overflow: hidden; }
@media (max-width: 760px), (max-height: 560px) {
  .flutuante.is-aberta { z-index: 110; }   /* acima do cabeçalho (100): a janela cobre a tela */
  .flutuante.is-aberta .flutuante-janela {
    position: fixed;
    inset: 0;
    width: auto;
    max-width: none;
    height: auto;
    border: 0;
    border-radius: 0;
    touch-action: none;
  }
  .flutuante.is-aberta .flutuante-janela .chat-fio { touch-action: pan-y; }
  .flutuante.is-aberta .flutuante-botao { display: none; }
  .flutuante.is-aberta .flutuante-janela .chat-rodape { padding-bottom: calc(12px + env(safe-area-inset-bottom, 0px)); }
  .flutuante.is-aberta .flutuante-janela .chat-topo { padding-top: calc(14px + env(safe-area-inset-top, 0px)); }
  .flutuante.is-aberta .flutuante-janela-fechar { top: calc(11px + env(safe-area-inset-top, 0px)); right: 8px; }
}
@media (prefers-reduced-motion: reduce) {
  .flutuante-janela { transition: none; transform: none; }
}

/* Atendimento por segmento — revisão aprovada de 16/09/2026.
   Avatares raster locais, sem motor 3D; preserva a janela e o fluxo acessível existentes. */
@font-face { font-family: 'Montserrat Chat'; font-style: normal; font-weight: 400 500; font-display: swap; src: url('/assets/fonts/montserrat-chat-latin-v1.woff2') format('woff2'); }
.atendimento, .flutuante { font-family: 'Montserrat Chat', Montserrat, sans-serif; color: #252522; font-weight: 400; }
.chat { background: #fcfaf7; border-color: #dfdbd5; border-radius: 22px; }
.chat-topo { padding: 16px 20px; gap: 12px; background: #fff; color: #252522; border-bottom: 1px solid #eeeae4; }
.chat-avatar { display: block; width: 44px; height: 44px; object-fit: cover; background: #f8f4ed; }
.chat-nome { color: #252522; font-size: .9375rem; font-weight: 500; }
.chat-estado { color: #66635e; font-size: .75rem; line-height: 1.4; }
.chat-fio { background: #fcfaf7; padding: 22px 18px; scroll-behavior: auto; scrollbar-width: thin; scrollbar-color: #c8c1b8 transparent; }
.chat-fluxo { margin-top: 0; gap: 12px; }
.fala { max-width: 92%; }
.fala-bot { align-self: flex-start; }
.fala-eu { align-self: flex-end; }
.balao { font-size: 1rem; line-height: 1.55; padding: 12px 15px; }
.fala-bot .balao { border: 0; background: #f0ece6; color: #252522; }
.fala-eu .balao { background: #333630; color: #fff; }
.fala-seguida { margin-top: -4px; }
.chat-acoes { margin-top: 16px; }
.chat-opcao { font-weight: 400; border-color: #d3cec6; padding: 11px 15px; background: #fff; }
.chat-opcao:hover { background: #eee9e1; color: #252522; border-color: #aaa296; }
.chat-cartao { border-color: #dfdbd5; border-radius: 16px; }
.chat-cartao-titulo { font-weight: 500; }
.chat-cartao-nota, .chat-resumo dt { color: #68645e; }
.chat-editar, .chat-cartao-acao { font-weight: 400; }
.chat-cartao-acao-forte { background: #333630; border-color: #333630; }
.chat-campo { font-weight: 400; background: #f7f5f1; border-color: #ddd8d0; }
.chat-campo::placeholder { color: #706b63; }
.chat-barra { border-color: #eeeae4; padding: 14px; }
.chat-enviar { background: #333630; }
.chat-rodape { text-align: left; padding: 0 18px 14px; color: #68645e; border: 0; font-size: .75rem; }
.chat-rodape[hidden] { display: none; }
.chat-oculto { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.flutuante button { font-weight: 400; }
.flutuante-botao { width: 60px; height: 60px; border: 2px solid #fff; background: #f8f4ed !important; overflow: hidden; box-shadow: 0 4px 18px #00000026; }
.flutuante-avatar { display: block; width: 100%; height: 100%; object-fit: cover; border-radius: 50%; }
.flutuante-balao { border-color: #e3ddd5; border-radius: 18px 18px 5px 18px; box-shadow: 0 4px 20px #0000000d; }
.flutuante-balao-texto { font-size: .8125rem; }
.flutuante-janela { width: 400px; height: min(620px, calc(100dvh - 120px)); border-color: #ded9d1; border-radius: 22px; box-shadow: 0 12px 48px #00000024; }
.flutuante-janela-fechar { top: 16px; color: #55514b; }
.flutuante-janela-fechar:hover { background: #f0ece6; }
.flutuante-janela-fechar:focus-visible { outline-color: #333630; }
.flutuante.is-aberta .flutuante-botao { display: none; }
.flutuante.is-aberta { gap: 0; }
.flutuante-janela .chat-fio { min-height: 0; }
@media (max-width: 760px) {
  .flutuante { gap: 8px; }
  .flutuante-balao { max-width: min(248px, 100%); border-radius: 14px 14px 5px 14px; }
  .flutuante .flutuante-balao-texto { min-width: 0; padding: 7px 2px 7px 13px; font-size: .875rem; line-height: 1.45; }
  /* O convite de Casamentos aparece na abertura: mantém "Role para entrar" livre. */
  body[data-experience="casamentos"] .flutuante-balao { margin-bottom: 24px; }
  .chat-topo { padding: 14px 16px; }
  .chat-avatar { width: 44px; height: 44px; }
  .chat-fio { padding: 20px 16px; }
  .chat-barra { padding: 12px; }
  .chat-opcoes { gap: 8px; }
  .chat-opcoes-compacto .chat-opcao { padding: 10px 13px; }
}
@media (max-width: 760px), (max-height: 560px) {
  .flutuante.is-aberta .flutuante-janela { box-shadow: none; }
  .flutuante.is-aberta .chat-barra { padding-bottom: calc(12px + env(safe-area-inset-bottom, 0px)); }
  .flutuante.is-aberta .chat:has(.chat-rodape:not([hidden])) .chat-barra { padding-bottom: 10px; }
}

/* ===== segments.css ===== */
/* Shared limits; XV follows the wedding layout with a photographic night opening. */
.cloud-field { transition-duration:600ms; }
.city-card img { transition-duration:600ms; }
.segment-links { font-size:.875rem; line-height:1.8; }
.segment-links a { color:inherit; padding:8px; }
.photo-pending { display:block; min-height:240px; background:#171717; color:#fff; padding:32px; }

/* XV keeps its night palette throughout the page; shared wedding styles remain
   the default. Rose is reserved for selected words and interactive accents. */
body:is([data-experience="xv"],[data-layout="xv"]) { color-scheme:dark; --paper:#020101; --ink:#f7f2f5; --xv-rose:#f3b2cf; --xv-muted:#c1b8bd; --xv-line:#40363c; --accent:var(--xv-rose); }
body:is([data-experience="xv"],[data-layout="xv"]) .page-content { --cream:var(--paper); --muted:var(--xv-muted); --line:var(--xv-line); }
body:is([data-experience="xv"],[data-layout="xv"]) .after-dark { --muted:var(--xv-muted); --line:var(--xv-line); }
body:is([data-experience="xv"],[data-layout="xv"]) .page-content .xv-accent { color:var(--xv-rose); }
body:is([data-experience="xv"],[data-layout="xv"]) .city-heading > p,
body:is([data-experience="xv"],[data-layout="xv"]) .city-gesture,
body:is([data-experience="xv"],[data-layout="xv"]) .unit-description,
body:is([data-experience="xv"],[data-layout="xv"]) .night-intro .tour-invitation,
body:is([data-experience="xv"],[data-layout="xv"]) .night-intro .tour-project-note { color:var(--xv-muted); }
body:is([data-experience="xv"],[data-layout="xv"]) .city-progress { background:var(--xv-line); }
body:is([data-experience="xv"],[data-layout="xv"]) .city-progress span { background:var(--xv-rose); }
body:is([data-experience="xv"],[data-layout="xv"]) .city-details .unit-panel { border-color:var(--xv-line); }
body:is([data-experience="xv"],[data-layout="xv"]) .city-buttons button { border-color:#80737a; }
body:is([data-experience="xv"],[data-layout="xv"]) .city-card.unit-tab::after { border-color:var(--xv-rose); }
body:is([data-experience="xv"],[data-layout="xv"]) .city-arrow { background:#30242c; color:var(--xv-rose); }
body:is([data-experience="xv"],[data-layout="xv"]) .after-dark .primary-button { background:var(--xv-rose); border-color:var(--xv-rose); color:#20151b !important; }
body:is([data-experience="xv"],[data-layout="xv"]) .after-dark .primary-button:hover { background:#f8cce0; border-color:#f8cce0; }
body:is([data-experience="xv"],[data-layout="xv"]) .page-content :is(a,summary,button):focus-visible,
body:is([data-experience="xv"],[data-layout="xv"]) .site-footer a:focus-visible { outline-color:var(--xv-rose); }
body:is([data-experience="xv"],[data-layout="xv"]) .after-dark .form-field :is(input,select):focus { border-color:var(--xv-rose); box-shadow:0 1px var(--xv-rose); }

body:is([data-experience="xv"],[data-layout="xv"]) .scene { --night-sky:#020101; --photo-width:100vw; --photo-height:66.667vw; --night-sky-height:212vw; --night-track-height:278.667vw; --night-start-y:min(0px,calc(67svh - 134vw)); --pan-y:var(--night-start-y); background:var(--night-sky); color:#fff; }
body:is([data-experience="xv"],[data-layout="xv"]) .scene-photo { top:var(--night-sky-height,212vw); left:0; transform:none; mask-image:linear-gradient(to bottom,transparent,#000 8%,#000); will-change:auto; }
.night-panorama { position:absolute; top:0; left:50%; width:var(--photo-width,100vw); height:var(--night-track-height,278.67vw); transform:translate3d(-50%,var(--pan-y,var(--night-start-y,0px)),0); will-change:transform; }
.night-sky { position:absolute; inset:0 0 auto; height:calc(var(--night-sky-height,212vw) + var(--photo-height,66.67vw) * .08); overflow:hidden; }
.night-sky img, .night-light-bloom img, .night-wind-cord img { display:block; width:100%; height:auto; }
/* Only the highest strand is softened; the lower photograph remains opaque. */
.night-sky > picture, .night-light-bloom > picture, .night-cord-swing > picture { display:block; mask-image:linear-gradient(to bottom,rgba(0,0,0,.78) 45.5%,#000 49%); }
.night-sky > picture, .night-light-bloom > picture { clip-path:url(#night-cord-still); }
.night-light-filters { position:absolute; width:0; height:0; overflow:hidden; }
.night-light-bloom { position:absolute; inset:0 0 auto; height:204vw; overflow:hidden; pointer-events:none; mix-blend-mode:screen; opacity:.48; animation:lamp-warmth 4.8s ease-in-out infinite alternate; animation-play-state:paused; }
.night-light-bloom img, .night-cord-bloom img { filter:url(#night-lamp-bloom); }
.night-wind-cord { position:absolute; inset:0 0 auto; pointer-events:none; }
.night-cord-swing { position:relative; aspect-ratio:1 / 3; transform-origin:50% 44%; animation:cord-sway 5.6s ease-in-out infinite alternate; animation-play-state:paused; will-change:transform; }
.cord-high .night-cord-swing > picture { clip-path:url(#night-cord-high); }
.cord-low .night-cord-swing > picture { clip-path:url(#night-cord-low); }
.cord-low .night-cord-swing { transform-origin:50% 50%; animation-duration:6.8s; animation-delay:-2.1s; }
.night-cord-bloom { position:absolute; inset:0; mix-blend-mode:screen; opacity:.48; animation:lamp-warmth 4.8s ease-in-out infinite alternate; animation-play-state:paused; }
@keyframes cord-sway { from { transform:translate3d(0,-.6px,0) rotate(-.16deg); } to { transform:translate3d(0,1.1px,0) rotate(.16deg); } }
@keyframes lamp-warmth { from { opacity:.38; } to { opacity:.58; } }
/* The screen blend reveals stars over the black sky plate. The moving texture
   is masked out before foliage and the real photograph, keeping them opaque. */
.night-stars { position:absolute; inset:0 0 auto; height:100svh; overflow:hidden; pointer-events:none; mix-blend-mode:screen; mask-image:linear-gradient(to bottom,#000 calc(var(--pan-y) + var(--night-sky-height) * .5),transparent calc(var(--pan-y) + var(--night-sky-height) * .74)); }
.night-stars-depth { position:absolute; inset:-22% 0; transform:translate3d(0,var(--stars-scroll-y,0px),0); will-change:transform; }
.night-stars-drift { position:absolute; inset:0 -48px; animation:star-hour-drift 18s linear infinite alternate; animation-play-state:paused; will-change:transform; }
.night-stars-drift picture, .night-stars-drift img { display:block; width:100%; height:100%; }
.night-stars-drift img { object-fit:cover; object-position:60% 50%; }
.is-ready .night-stars-drift, .is-ready .night-light-bloom, .is-ready .night-cord-swing, .is-ready .night-cord-bloom { animation-play-state:running; }
.clouds-paused .night-stars-drift, .tab-hidden .night-stars-drift, .night-offscreen .night-stars-drift,
.clouds-paused .night-light-bloom, .tab-hidden .night-light-bloom, .night-offscreen .night-light-bloom,
.clouds-paused .night-cord-swing, .tab-hidden .night-cord-swing, .night-offscreen .night-cord-swing,
.clouds-paused .night-cord-bloom, .tab-hidden .night-cord-bloom, .night-offscreen .night-cord-bloom { animation-play-state:paused; }
/* Fixed pixel travel keeps the visible speed consistent on phones and desktop.
   The 48px overscan leaves a 12px margin at either 36px endpoint. */
@keyframes star-hour-drift { from { transform:translate3d(-36px,0,0); } to { transform:translate3d(36px,0,0); } }
/* A broad soft scrim keeps copy legible over individual stars, without a box. */
body:is([data-experience="xv"],[data-layout="xv"]) .opening::before { content:''; position:absolute; z-index:-1; inset:0; background:linear-gradient(rgba(0,0,0,.38),rgba(0,0,0,.62) 28%,rgba(0,0,0,.62) 52%,transparent 76%); }
body:is([data-experience="xv"],[data-layout="xv"]) .sky-extension { display:none; }
body:is([data-experience="xv"],[data-layout="xv"]) .brand { filter:brightness(0) invert(1); }
body:is([data-experience="xv"],[data-layout="xv"]) .event-label { color:#eee; }
body:is([data-experience="xv"],[data-layout="xv"]) .events { background:var(--night-sky); border-color:#64605a; }
body:is([data-experience="xv"],[data-layout="xv"]) .event { color:#eee; transition:none; }
body:is([data-experience="xv"],[data-layout="xv"]) .event[aria-pressed="true"] { color:#171717; background:#fff; }
body:is([data-experience="xv"],[data-layout="xv"]) .event:hover:not(:disabled) { color:#fff; background:#343942; }
body:is([data-experience="xv"],[data-layout="xv"]) .event:disabled { color:#b9bdc5; }
body:is([data-experience="xv"],[data-layout="xv"]) .event:focus-visible { outline-color:#fff; }
body:is([data-experience="xv"],[data-layout="xv"]) .event-select { color:#fff; }
body:is([data-experience="xv"],[data-layout="xv"]) .event-select:focus-visible { outline-color:#fff; }
body:is([data-experience="xv"],[data-layout="xv"]) .event-dropdown::after { border-color:#fff; }
body:is([data-experience="xv"],[data-layout="xv"]) .event-options { background:#191418; border-color:#80737a; }
body:is([data-experience="xv"],[data-layout="xv"]) .event-option { color:var(--ink); }
body:is([data-experience="xv"],[data-layout="xv"]) .event-option:hover:not([aria-disabled="true"]),
body:is([data-experience="xv"],[data-layout="xv"]) .event-option[aria-selected="true"] { background:#30242c; color:var(--xv-rose); }
body:is([data-experience="xv"],[data-layout="xv"]) .event-option[aria-disabled="true"] { color:var(--xv-muted); }
body:is([data-experience="xv"],[data-layout="xv"]) .event-option[aria-selected="true"]::after { border-color:var(--xv-rose); }
body:is([data-experience="xv"],[data-layout="xv"]) .event-option:focus-visible { outline-color:var(--xv-rose); }
body:is([data-experience="xv"],[data-layout="xv"]) .controls,
body:is([data-experience="xv"],[data-layout="xv"]) .arrival,
body:is([data-experience="xv"],[data-layout="xv"]) .arrival-locations { color:#fff; }
body:is([data-experience="xv"],[data-layout="xv"]) .arrival,
body:is([data-experience="xv"],[data-layout="xv"]) .arrival-locations { isolation:isolate; }
body:is([data-experience="xv"],[data-layout="xv"]) .arrival::before,
body:is([data-experience="xv"],[data-layout="xv"]) .arrival-locations::before { content:''; position:absolute; z-index:-1; inset:-24px -24px; pointer-events:none; background:linear-gradient(transparent,rgba(0,0,0,.65) 24px,rgba(0,0,0,.65) calc(100% - 24px),transparent); }

body:is([data-experience="xv"],[data-layout="xv"]) .service-caption p,
body:is([data-experience="xv"],[data-layout="xv"]) .tour-caption p,
body:is([data-experience="xv"],[data-layout="xv"]) .tour-direction > span:first-child { color:#fff; }
body:is([data-experience="xv"],[data-layout="xv"]) #unidades:not(.has-city-coverflow) .city-card::before { background:rgba(0,0,0,.60); }
body:is([data-experience="xv"],[data-layout="xv"]) .city-card .city-number,
body:is([data-experience="xv"],[data-layout="xv"]) .city-card .city-region,
body:is([data-experience="xv"],[data-layout="xv"]) .city-card .city-address-hint { color:#fff; }
.city-without-photo { background:#24272b !important; }
/* One common height, with each card following its photograph's real proportions. */
body:is([data-experience="xv"],[data-layout="xv"]) .party-carousel { --gallery-height:min(64svh,40vw,680px); }
body:is([data-experience="xv"],[data-layout="xv"]) .party-gallery-item { flex:0 0 auto; width:calc(var(--gallery-height) * var(--party-ratio,1.5)); height:var(--gallery-height); aspect-ratio:auto; background:transparent; }
body:is([data-experience="xv"],[data-layout="xv"]) .party-gallery-item > picture { display:block; width:100%; height:100%; }
body:is([data-experience="xv"],[data-layout="xv"]) .party-gallery-item img { object-fit:contain; }
body:is([data-experience="xv"],[data-layout="xv"]) .party-arrival > picture,
body:is([data-experience="xv"],[data-layout="xv"]) .party-to-experience > picture { display:grid; height:100%; align-items:center; }
body:is([data-experience="xv"],[data-layout="xv"]) .party-arrival img,
body:is([data-experience="xv"],[data-layout="xv"]) .party-to-experience img { height:auto; aspect-ratio:3/2; object-fit:contain; }
body:is([data-experience="xv"],[data-layout="xv"]) .drinks-figure img { height:auto; aspect-ratio:auto; object-fit:contain; }

/* Photo mode reuses the tour's scroll positions, captions and keyboard controls. */
.tour-photos.tour-enhanced .tour-visual,
.tour-photos.tour-enhanced.tour-3d-ready .tour-visual { display:block; position:absolute; inset:0; opacity:var(--tour-photo-alpha,0); }
.tour-photos.tour-enhanced .tour-scene:first-of-type .tour-visual { opacity:var(--tour-photo-alpha,1); }
.tour-photos.tour-enhanced .tour-visual img { transform:scale(var(--tour-photo-scale,1)); }
.tour-photos.tour-enhanced .night-stage::after { background:rgba(0,0,0,.60); }
.tour-photos.tour-enhanced .tour-visual::after { content:''; position:absolute; inset:0; background:rgba(0,0,0,.60); }
.tour-photos .tour-visual img { aspect-ratio:3/2; object-fit:contain; }
body:is([data-experience="xv"],[data-layout="xv"]) .tour-chapters button span { background:#fff; }
body:is([data-experience="xv"],[data-layout="xv"]) .tour-chapters button:focus-visible,
body:is([data-experience="xv"],[data-layout="xv"]) .tour-skip:focus-visible { outline-color:#fff; }
@media (max-width:760px) {
  /* Keep the photographed lights on phones without repeatedly rasterizing
     three SVG bloom passes and two full-height clipped duplicates in WebKit. */
  .night-light-bloom, .night-wind-cord { display:none; }
  .night-sky > picture { clip-path:none; mask-image:none; }
  /* The stars sit in the empty upper sky. A plain gradient over the texture
     replaces the nested alpha-mask/screen blend that WebKit kept repainting. */
  .night-stars { height:min(40svh,320px); mask-image:none; mix-blend-mode:normal; will-change:opacity; }
  .night-stars::after { content:''; position:absolute; inset:0; background:linear-gradient(transparent 48%,var(--night-sky)); }
  /* Crossfade the original castle photo over the extended sky. A black strip
     on an opaque photo made the foliage end in a hard horizontal cut. */
  body[data-experience="xv"] .night-sky { height:calc(var(--night-sky-height) + var(--photo-height) * .3); }
  body[data-experience="xv"] .scene-photo {
    -webkit-mask-image:linear-gradient(to bottom,transparent,#000 30%,#000);
    mask-image:linear-gradient(to bottom,transparent,#000 30%,#000);
  }
  body:is([data-experience="xv"],[data-layout="xv"]) .scene { --night-start-y:calc(min(0px,calc(67svh - 134vw)) - clamp(70px,12svh,110px)); }
  /* The longer XV heading takes two lines. Keep the wedding selector position. */
  body:is([data-experience="xv"],[data-layout="xv"]) .event-selector { margin-top:max(16px,calc(58px - 1.3 * clamp(1.5rem,6.7vw,2.25rem))); }
  body:is([data-experience="xv"],[data-layout="xv"]) .party-carousel { --gallery-height:calc((100vw - 48px) * .666666); }
}

/* Compact booking and experience blocks shared by the three event pages. */
body:is([data-experience="xv"],[data-experience="formaturas"]) .booking-header { background:rgba(2,1,1,.94); border-color:#40363c; color:#f7f2f5; }
body:is([data-experience="xv"],[data-experience="formaturas"]) .booking-brand img { filter:brightness(0) invert(1); }
body:is([data-experience="xv"],[data-experience="formaturas"]) .booking-button { background:transparent; border-color:var(--xv-rose); color:#f7f2f5; }
body:is([data-experience="xv"],[data-experience="formaturas"]) .booking-button:hover { background:#30242c; }
body:is([data-experience="xv"],[data-experience="formaturas"]) .booking-header a:focus-visible { outline-color:var(--xv-rose); }
body:is([data-experience="xv"],[data-layout="xv"]) .proof-editorial .proof-copy > p { color:var(--xv-muted); }
body:is([data-experience="xv"],[data-layout="xv"]) .proof-editorial .proof-tenure { border-color:var(--xv-line); }
body:is([data-experience="xv"],[data-layout="xv"]) .proof-tenure span { color:var(--ink); }
@media (max-width:760px) {
  body:is([data-experience="xv"],[data-layout="xv"]) .opening-copy { top:max(188px,27svh); }
}
@media (max-width:760px) and (max-height:690px) {
  body:is([data-experience="xv"],[data-layout="xv"]) .event-selector { margin-top:max(16px,calc(42px - 1.3 * clamp(1.5rem,6.7vw,2.25rem))); }
}
@media (prefers-reduced-motion:reduce) {
  .night-stars-depth, .night-stars-drift { animation:none !important; transform:none !important; will-change:auto; }
  .night-light-bloom, .night-cord-bloom { animation:none !important; }
  .night-cord-swing { animation:none !important; transform:none !important; will-change:auto; }
  body:is([data-experience="xv"],[data-layout="xv"]) .scene { height:auto; min-height:100svh; --pan-y:var(--night-start-y) !important; }
  body:is([data-experience="xv"],[data-layout="xv"]) .photo-frame { position:relative; height:calc(var(--night-track-height,278.67vw) + var(--night-start-y,0px)); }
  body:is([data-experience="xv"],[data-layout="xv"]) .night-panorama { top:var(--night-start-y,0px); transform:translateX(-50%); will-change:auto; }
  body:is([data-experience="xv"],[data-layout="xv"]) .scene-photo { width:100%; }
  body:is([data-experience="xv"],[data-layout="xv"]) .arrival,
  body:is([data-experience="xv"],[data-layout="xv"]) .arrival-locations { position:relative; inset:auto; margin:0; }
  body:is([data-experience="xv"],[data-layout="xv"]) .opening { bottom:auto; height:60svh; }
  .tour-photos.tour-enhanced .tour-visual { position:relative; opacity:1; }
  .tour-photos.tour-enhanced .tour-visual img { transform:none; }
  .segment-links * { animation:none !important; transition:none !important; }
}

/* Keep the arrival heading centered above the girl's head as the castle enters.
   Mobile places this copy near mid-screen, in the extended night sky. */
/* This scene caption contains no controls; its transparent layer must not block the event selector. */
body:is([data-experience="xv"],[data-layout="xv"]) .night-arrival-copy { position:absolute; z-index:3; left:52%; right:auto; top:calc(var(--pan-y) + var(--night-sky-height) + var(--photo-height) * .48 - 48px); width:min(680px,calc(100% - 48px)); transform:translate(-50%,-100%); pointer-events:none; }
body:is([data-experience="xv"],[data-layout="xv"]) .night-arrival-copy .arrival,
body:is([data-experience="xv"],[data-layout="xv"]) .night-arrival-copy .arrival-locations { position:relative; inset:auto; margin:0; text-align:center; text-shadow:none; }
body:is([data-experience="xv"],[data-layout="xv"]) .night-arrival-copy .arrival-locations { margin-top:10px; }
body:is([data-experience="xv"],[data-layout="xv"]) .night-arrival-copy .arrival h2 { font-size:clamp(22px,2.4vw,36px); }
body:is([data-experience="xv"],[data-layout="xv"]) .night-arrival-copy .cities { justify-content:center; gap:10px 20px; }
body:is([data-experience="xv"],[data-layout="xv"]) .arrival::before,
body:is([data-experience="xv"],[data-layout="xv"]) .arrival-locations::before { display:none; }
body:is([data-experience="xv"],[data-layout="xv"]) .night-arrival-copy::before,
body:is([data-experience="xv"],[data-layout="xv"]) .service-caption::before,
body:is([data-experience="xv"],[data-layout="xv"]) .service-navigation::before,
body:is([data-experience="xv"],[data-layout="xv"]) .service-scroll-hint::before,
body:is([data-experience="xv"],[data-layout="xv"]) .tour-photos.tour-enhanced .tour-caption::before,
body:is([data-experience="xv"],[data-layout="xv"]) .tour-photos.tour-enhanced .tour-controls::before,
body:is([data-experience="xv"],[data-layout="xv"]) .tour-photos.tour-enhanced .tour-location::before,
body:is([data-experience="xv"],[data-layout="xv"]) .tour-photos.tour-enhanced .tour-skip::before { display:none; }
body:is([data-experience="xv"],[data-layout="xv"]) :is(.service-caption,.service-progress-label,.service-autoplay-toggle,.tour-caption,.tour-location,.tour-direction,.tour-finale,.tour-skip) { text-shadow:none; }
/* The native XV film includes a white floor: keep captions readable as the
   camera moves, with a continuous gradient instead of text shadows or panels. */
body:is([data-experience="xv"],[data-layout="xv"]) .tour-enhanced[data-tour-mode="film"] .night-stage::after { background:linear-gradient(90deg,rgba(6,4,5,.80),rgba(6,4,5,.68) 34%,transparent 75%),linear-gradient(0deg,rgba(0,0,0,.72),transparent 60%); }
@media (max-width:760px) {
  body:is([data-experience="xv"],[data-layout="xv"]) .tour-enhanced[data-tour-mode="film"] .night-stage::after { background:linear-gradient(0deg,rgba(0,0,0,.90),rgba(6,4,5,.66) 32%,rgba(6,4,5,.64) 75%,rgba(6,4,5,.25)); }
}
body:is([data-experience="xv"],[data-layout="xv"]) .service-caption,
body:is([data-experience="xv"],[data-layout="xv"]) .service-navigation,
body:is([data-experience="xv"],[data-layout="xv"]) .service-scroll-hint,
body:is([data-experience="xv"],[data-layout="xv"]) .tour-caption,
body:is([data-experience="xv"],[data-layout="xv"]) .tour-controls,
body:is([data-experience="xv"],[data-layout="xv"]) .tour-location,
body:is([data-experience="xv"],[data-layout="xv"]) .tour-skip { isolation:isolate; }
body:is([data-experience="xv"],[data-layout="xv"]) .tour-photos.tour-enhanced .night-stage::after,
body:is([data-experience="xv"],[data-layout="xv"]) .tour-photos .tour-visual::after { display:none; }
body:is([data-experience="xv"],[data-layout="xv"]) .tour-photos .tour-visual img { transform:none; object-fit:contain; aspect-ratio:3/2; }
@media (min-width:1001px) and (prefers-reduced-motion:no-preference) {
  body:is([data-experience="xv"],[data-layout="xv"]) .tour-photos.tour-enhanced .tour-visual { inset:84px 3vw 108px 38vw; }
  body:is([data-experience="xv"],[data-layout="xv"]) .tour-photos.tour-enhanced .tour-visual img { height:100%; object-fit:contain; transform:none; }
  body:is([data-experience="xv"],[data-layout="xv"]) .tour-photos.tour-enhanced .tour-scene .tour-caption { left:5vw; right:auto; top:46%; bottom:auto; width:28vw; max-width:430px; transform:translateY(-50%); }
  body:is([data-experience="xv"],[data-layout="xv"]) .tour-photos.tour-enhanced .tour-controls { left:5vw; }
  body:is([data-experience="xv"],[data-layout="xv"]) .tour-photos.tour-enhanced .tour-location { left:5vw; right:3vw; }
}
body:is([data-experience="xv"],[data-layout="xv"]) .journey::after { display:none; }
/* Blend the photograph into the next section, below the copy layer. The frame
   also follows the complete photo in reduced-motion and no-JS layouts. */
body:is([data-experience="xv"],[data-layout="xv"]) .photo-frame::after { content:''; position:absolute; z-index:1; inset:auto 0 -1px; height:clamp(64px,12vw,180px); pointer-events:none; background:linear-gradient(to bottom,rgba(2,1,1,0),rgba(2,1,1,.08) 22%,rgba(2,1,1,.32) 48%,rgba(2,1,1,.72) 76%,#020101); }
body:is([data-experience="xv"],[data-layout="xv"]) .experience-intro { background:var(--paper); color:var(--ink); }
body:is([data-experience="xv"],[data-layout="xv"]) .service-story { background:#020101; }
body:is([data-experience="xv"],[data-layout="xv"]) .experience-copy p,
body:is([data-experience="xv"],[data-layout="xv"]) .experience-chapters > span { color:var(--xv-muted); }
body:is([data-experience="xv"],[data-layout="xv"]) .experience-chapters { border-color:var(--xv-line); }
body:is([data-experience="xv"],[data-layout="xv"]) .experience-intro .text-link { border-color:#89817a; }

/* City photographs keep their complete frame; all labels live underneath. */
body:is([data-experience="xv"],[data-layout="xv"]) #unidades:not(.has-city-coverflow) .city-card.unit-tab { display:flex; flex-direction:column; height:auto; background:#171717; }
body:is([data-experience="xv"],[data-layout="xv"]) #unidades:not(.has-city-coverflow) .city-card > picture { display:block; width:100%; aspect-ratio:3/2; }
body:is([data-experience="xv"],[data-layout="xv"]) #unidades:not(.has-city-coverflow) .city-card img { height:auto; aspect-ratio:3/2; object-fit:contain; transform:none; }
body:is([data-experience="xv"],[data-layout="xv"]) #unidades:not(.has-city-coverflow) .city-card::before { display:none; }
body:is([data-experience="xv"],[data-layout="xv"]) #unidades:not(.has-city-coverflow) .city-card.city-without-photo::before { display:block; position:relative; inset:auto; width:100%; aspect-ratio:3/2; background:#24272b; }
body:is([data-experience="xv"],[data-layout="xv"]) #unidades:not(.has-city-coverflow) .city-number { position:relative; inset:auto; margin:24px 24px 16px; }
body:is([data-experience="xv"],[data-layout="xv"]) #unidades:not(.has-city-coverflow) .city-caption { position:relative; inset:auto; padding:0 68px 28px 24px; }
body:is([data-experience="xv"],[data-layout="xv"]) #unidades:not(.has-city-coverflow) .city-arrow { bottom:28px; }

/* Shared coverflow, with XV's dark palette and readable neighboring names. */
body:is([data-experience="xv"],[data-layout="xv"]) .has-city-coverflow .city-carousel > button { color:var(--xv-rose); border-color:#80737a; }
body:is([data-experience="xv"],[data-layout="xv"]) .has-city-coverflow .city-dots button[aria-current="true"]::before { background:var(--xv-rose); }
body:is([data-experience="xv"],[data-layout="xv"]) .has-city-coverflow .city-autoplay-toggle { color:var(--xv-muted); }
body:is([data-experience="xv"],[data-layout="xv"]) .has-city-coverflow #tab-itapema { --city-focus:32% center; }

/* Photographs without captions need no fixed-height stage or dark text veil. */
body:is([data-experience="xv"],[data-layout="xv"]) .party-arrival,
body:is([data-experience="xv"],[data-layout="xv"]) .party-to-experience { height:auto; min-height:0; max-height:none; margin-block:clamp(32px,6vw,88px); }
body:is([data-experience="xv"],[data-layout="xv"]) .party-arrival > picture,
body:is([data-experience="xv"],[data-layout="xv"]) .party-to-experience > picture { display:block; height:auto; }
body:is([data-experience="xv"],[data-layout="xv"]) .party-arrival img,
body:is([data-experience="xv"],[data-layout="xv"]) .party-to-experience img { aspect-ratio:auto; }
body:is([data-experience="xv"],[data-layout="xv"]) .party-arrival::after,
body:is([data-experience="xv"],[data-layout="xv"]) .party-to-experience::after { display:none; }

@media (max-width:760px) {
  body:is([data-experience="xv"],[data-layout="xv"]) .night-arrival-copy { left:24px; right:24px; top:40svh; bottom:auto; width:auto; transform:none; }
  body:is([data-experience="xv"],[data-layout="xv"]) .night-arrival-copy .arrival { text-align:center; }
  body:is([data-experience="xv"],[data-layout="xv"]) .night-arrival-copy .cities { justify-content:center; max-width:100%; }
}
@media (max-width:1000px) {
  body:is([data-experience="xv"],[data-layout="xv"]) .service-caption::before,
  body:is([data-experience="xv"],[data-layout="xv"]) .service-navigation::before,
  body:is([data-experience="xv"],[data-layout="xv"]) .service-scroll-hint::before,
  body:is([data-experience="xv"],[data-layout="xv"]) .tour-photos.tour-enhanced .tour-caption::before,
  body:is([data-experience="xv"],[data-layout="xv"]) .tour-photos.tour-enhanced .tour-controls::before,
  body:is([data-experience="xv"],[data-layout="xv"]) .tour-photos.tour-enhanced .tour-location::before,
  body:is([data-experience="xv"],[data-layout="xv"]) .tour-photos.tour-enhanced .tour-skip::before { display:none; }
  body:is([data-experience="xv"],[data-layout="xv"]) .tour-photos.tour-enhanced .tour-visual { top:64px; bottom:auto; height:calc(100vw * 2 / 3); }
  body:is([data-experience="xv"],[data-layout="xv"]) .tour-photos.tour-enhanced .tour-scene .tour-caption { left:24px; top:calc(100vw * 2 / 3 + 88px); bottom:auto; width:calc(100% - 48px); }
}

@media (max-height:560px) {
  body:is([data-experience="xv"],[data-layout="xv"]) .journey { height:auto; }
  body:is([data-experience="xv"],[data-layout="xv"]) .scene { position:relative; height:auto; --pan-y:var(--night-start-y) !important; --opening-alpha:1 !important; --arrival-alpha:1 !important; --arrival-y:0px !important; }
  body:is([data-experience="xv"],[data-layout="xv"]) .photo-frame { position:relative; height:calc(var(--night-track-height) + var(--night-start-y)); }
  body:is([data-experience="xv"],[data-layout="xv"]) .night-panorama { top:var(--night-start-y); transform:translateX(-50%); will-change:auto; }
  body:is([data-experience="xv"],[data-layout="xv"]) .opening { height:100svh; bottom:auto; }
  body:is([data-experience="xv"],[data-layout="xv"]) .controls { display:none; }
  body:is([data-experience="xv"],[data-layout="xv"]) .night-stars-depth,
  body:is([data-experience="xv"],[data-layout="xv"]) .night-stars-drift,
  body:is([data-experience="xv"],[data-layout="xv"]) .night-cord-swing { animation:none; transform:none; will-change:auto; }
  body:is([data-experience="xv"],[data-layout="xv"]) .night-light-bloom,
  body:is([data-experience="xv"],[data-layout="xv"]) .night-cord-bloom { animation:none; }
}
/* Static mobile keeps arrival copy just above the real photograph, after the
   opening logo and headline in the extended sky. */
@media (max-width:760px) and (prefers-reduced-motion:reduce), (max-width:760px) and (max-height:560px) {
  body:is([data-experience="xv"],[data-layout="xv"]) .night-arrival-copy { top:calc(var(--night-sky-height) + var(--night-start-y) - 24px); transform:translateY(-100%); }
}

/* The three service chapters use the wedding's full-frame photo and caption
   layout. The bottom-up gradient supports copy without a separate text panel. */
body:is([data-experience="xv"],[data-layout="xv"]) #service-espaco { --image-focus:50% 32%; --image-focus-mobile:50% 50%; }
body:is([data-experience="xv"],[data-layout="xv"]) #service-mesa { --image-focus:50% 36%; --image-focus-mobile:50% 50%; }
body:is([data-experience="xv"],[data-layout="xv"]) #service-detalhes { --image-focus:50% 32%; --image-focus-mobile:50% 50%; }
body:is([data-experience="xv"],[data-layout="xv"]) .service-story .service-visual::after {
  background:linear-gradient(to top,rgba(2,1,1,.96),rgba(2,1,1,.86) 20%,rgba(2,1,1,.65) 48%,rgba(2,1,1,.08) 80%,rgba(2,1,1,0)) !important;
}
body:is([data-experience="xv"],[data-layout="xv"]) #service-espaco .service-caption { top:auto; bottom:calc(160px + 4svh); }
/* Static chapters retain the overlay and grow with the text when JavaScript is
   unavailable; short screens and reduced motion inherit the shared fallback. */
body:is([data-experience="xv"],[data-layout="xv"]) .service-story:not(.is-enhanced),
body:is([data-experience="xv"],[data-layout="xv"]) .service-story:not(.is-enhanced) .service-stage { position:relative; height:auto; }
body:is([data-experience="xv"],[data-layout="xv"]) .service-story:not(.is-enhanced) .service-viewport { clip-path:none; }
body:is([data-experience="xv"],[data-layout="xv"]) .service-story:not(.is-enhanced) .service-slide { position:relative; min-height:85svh; display:flex; align-items:end; padding:80px max(6vw,24px); }
body:is([data-experience="xv"],[data-layout="xv"]) .service-story:not(.is-enhanced) .service-visual { opacity:1; }
body:is([data-experience="xv"],[data-layout="xv"]) .service-story:not(.is-enhanced) .service-caption { position:relative; inset:auto !important; opacity:1; visibility:visible; width:min(600px,100%) !important; }
body:is([data-experience="xv"],[data-layout="xv"]) .service-story:not(.is-enhanced) .service-image { transform:none; }
body:is([data-experience="xv"],[data-layout="xv"]) .service-story:not(.is-enhanced) .service-navigation,
body:is([data-experience="xv"],[data-layout="xv"]) .service-story:not(.is-enhanced) .service-scroll-hint { display:none; }

/* ===== new-segments.css ===== */
/* New pages share XV's geometry and motion. Only palette and photo framing
   are defined here; Casamentos and XV never load this stylesheet. */
body[data-layout="xv"] .has-city-coverflow #tab-itapema { --city-focus:50% center; }
body[data-layout="xv"] .scene { --photo-height:66.667vw; }
/* Each upper image is clipped before the generated people/event details.
   Only the unchanged, supplied photograph appears in the arrival layer. */
body[data-layout="xv"] .night-stars { display:none; }
body[data-layout="xv"] .night-sky { height:calc(var(--night-sky-height) + var(--photo-height) * .16); }
body[data-layout="xv"] .night-sky > picture { clip-path:none; mask-image:none; }
body[data-layout="xv"] .night-sky img { height:calc(var(--photo-width) * 3.6); }
body[data-layout="xv"] .scene-photo { mask-image:linear-gradient(to bottom,transparent,#000 16%,#000); }
body[data-layout="xv"] .night-castle-photo::after { display:none; }
body[data-layout="xv"] .night-arrival-copy { color:#fff; text-shadow:0 2px 22px rgba(0,0,0,.8); }
body[data-experience="formaturas"] .scene { --night-sky:#130508; }
/* Hidden arrival copy must not intercept the mobile segment selector. */
body[data-layout="xv"] .night-arrival-copy { pointer-events:none; }
body[data-layout="xv"] .night-arrival-copy a { pointer-events:auto; }
body[data-layout="xv"] .night-arrival-copy [aria-hidden="true"] a { pointer-events:none; }
/* Preserve the top navigation's contrast over bright supplied photographs. */
body[data-layout="xv"] .service-viewport::after { content:''; position:absolute; z-index:3; inset:0 0 auto; height:130px; pointer-events:none; background:linear-gradient(rgba(0,0,0,.65),transparent); }

/* The photograph opens in its violet palette; the corporate body stays light. */
body[data-experience="corporativos"] {
  color-scheme:light; --paper:#f7f6f2; --ink:#171717; --accent:#171717;
  --xv-rose:#171717; --xv-muted:#646464; --xv-line:#dcdcdc;
}
body[data-experience="corporativos"] .scene { --night-sky:#080313; color:#fff; }
/* The corporate text palette is dark, so its dropdown needs a light surface. */
body[data-experience="corporativos"] .event-options { background:#f7f6f2; border-color:#c7c5c1; color-scheme:light; }
body[data-experience="corporativos"] .event-option { color:#171717; }
body[data-experience="corporativos"] .event-option:hover:not([aria-disabled="true"]),
body[data-experience="corporativos"] .event-option[aria-selected="true"] { background:#e7e5e1; color:#171717; }
body[data-experience="corporativos"] .event-option:focus-visible { outline-color:#171717; }
body[data-experience="corporativos"] .event-option[aria-selected="true"]::after { border-color:#171717; }
body[data-experience="corporativos"] .shade-bottom { display:none; }
/* The arrival title remains legible over the event photograph. */
@media (min-width:761px) {
  body[data-experience="corporativos"] .night-castle-photo::before { content:''; position:absolute; z-index:1; top:var(--night-sky-height); left:0; width:100%; height:var(--photo-height); background:linear-gradient(transparent,rgba(0,0,0,.66) 28%,rgba(0,0,0,.66) 45%,transparent 72%); }
}
body[data-experience="corporativos"] .photo-frame::after { background:linear-gradient(transparent,rgba(8,3,19,.32) 48%,#080313); }
body[data-experience="corporativos"] .service-story { background:var(--paper); }
body[data-experience="corporativos"] .service-caption .xv-accent { color:#fff; }
body[data-experience="corporativos"] .service-story .service-visual::after { background:linear-gradient(to top,rgba(0,0,0,.96),rgba(0,0,0,.86) 20%,rgba(0,0,0,.65) 48%,rgba(0,0,0,.08) 80%,transparent) !important; }
body[data-experience="corporativos"] .city-arrow { background:var(--paper); color:var(--ink); }
body[data-experience="corporativos"] #unidades:not(.has-city-coverflow) .city-card.unit-tab { background:var(--paper); color:var(--ink); }
body[data-experience="corporativos"] #unidades:not(.has-city-coverflow) :is(.city-number,.city-region,.city-address-hint) { color:var(--ink); }

body[data-experience="corporativos"] :is(.night-scroll,.night-stage,.tour-scene,.after-dark,.footer-dark,.party-arrival,.party-to-experience) { background:var(--paper); color:var(--ink); }
body[data-experience="corporativos"] .tour-enhanced .tour-scene { background:transparent; }
body[data-experience="corporativos"] .tour-enhanced .tour-dusk { background:var(--paper); }
body[data-experience="corporativos"] :is(.tour-caption p,.tour-direction > span:first-child) { color:var(--xv-muted); }
body[data-experience="corporativos"] .tour-chapters button span { background:#171717; }
body[data-experience="corporativos"] .tour-chapters button::before { background:#b9b9b9; }
body[data-experience="corporativos"] .tour-chapters button:focus-visible,
body[data-experience="corporativos"] .tour-skip:focus-visible { outline-color:#171717; }
body[data-experience="corporativos"] .tour-skip { color:#171717 !important; }
body[data-experience="corporativos"] :is(.party-intro > .eyebrow,.party-intro > p:last-child,.party-gallery-count,.party-copy > p:not(.eyebrow),.party-note p,.drinks-figure figcaption) { color:var(--xv-muted); }
body[data-experience="corporativos"] .party-gallery-count > #party-gallery-current,
body[data-experience="corporativos"] .party-carousel-buttons button,
body[data-experience="corporativos"] .after-dark .text-link,
body[data-experience="corporativos"] .after-dark .proof-number { color:var(--ink); }
body[data-experience="corporativos"] :is(.party-note,.party-carousel-buttons button) { border-color:#b9b9b9; }
body[data-experience="corporativos"] .after-dark :is(.proof-caption,.steps p,.plan-copy > p:not(.eyebrow),.form-selection,.review-message,.form-progress,.form-field,.field-hint,.request-summary dt) { color:var(--xv-muted); }
body[data-experience="corporativos"] .after-dark .process-section { background:#efeeea; }
body[data-experience="corporativos"] .after-dark .plan-box { background:#eeede9; }
body[data-experience="corporativos"] .after-dark :is(.steps li,.prototype-note,.form-progress,.request-summary div) { border-color:#cecdca; }
body[data-experience="corporativos"] .after-dark .step-number { color:#646464; border-color:#b9b9b9; }
body[data-experience="corporativos"] .after-dark .faq-list summary::after { color:#646464; }
body[data-experience="corporativos"] .after-dark .form-field :is(input,select) { color-scheme:light; color:#171717; border-color:#8a8a8a; }
body[data-experience="corporativos"] .after-dark .form-field input::placeholder { color:#666; }
body[data-experience="corporativos"] .after-dark .primary-button { background:#404040; border-color:#404040; color:#fff !important; }
body[data-experience="corporativos"] .after-dark .primary-button:hover { background:#555; border-color:#555; }
body[data-experience="corporativos"] .footer-dark .footer-logo { filter:none; }
body[data-experience="corporativos"] .footer-dark :is(.footer-top,.footer-bottom) { border-color:#dcdcdc; }
body[data-experience="corporativos"] .footer-dark :is(.footer-brand p,.footer-bottom) { color:#646464; }
/* Keep the full team photograph, and center the supplied venue in each card. */
body[data-experience="corporativos"] .proof-photo img { aspect-ratio:3 / 2; object-fit:contain; }
body[data-experience="corporativos"] .has-city-coverflow #tab-joinville { --city-focus:50% 50%; }
body[data-experience="corporativos"] .has-city-coverflow #tab-blumenau { --city-focus:50% 42%; }
body[data-experience="corporativos"] .has-city-coverflow #tab-nova-veneza { --city-focus:34% 50%; }

/* Keep the people photograph filling the shared tour frame. */
body[data-experience="corporativos"] .tour-photos #tour-recepcao .tour-visual img { object-fit:cover; object-position:50% 50%; }

/* Preserve the portrait's full frame above the form on mobile. */
@media (max-width:760px) {
  body[data-experience="corporativos"] .plan-photo,
  body[data-experience="corporativos"] .plan-photo picture,
  body[data-experience="corporativos"] .plan-photo img { height:auto; }
}

/* Graduation portraits keep faces, guests and glasses inside their frames. */
body[data-experience="formaturas"] .proof-photo img { height:auto; max-height:none; aspect-ratio:auto; object-fit:contain; }
body[data-experience="formaturas"] .tour-photos #tour-cerimonia .tour-visual img { object-fit:contain; object-position:center; }
@media (max-width:760px) {
  body[data-experience="formaturas"] .plan-photo,
  body[data-experience="formaturas"] .plan-photo picture,
  body[data-experience="formaturas"] .plan-photo img { height:auto; }
}

/* Formaturas uses neutral accents; XV retains its own rose palette. */
body[data-experience="formaturas"] { --ink:#f7f7f7; --xv-rose:var(--ink); --xv-muted:#bdbdbd; --xv-line:#404040; --accent:var(--ink); }
body[data-experience="formaturas"] .booking-header { color:var(--ink); border-color:var(--xv-line); }
body[data-experience="formaturas"] .booking-button { color:var(--ink); }
body[data-experience="formaturas"] .booking-button:hover { background:#303030; }
body[data-experience="formaturas"] .event-options { background:#191919; border-color:#808080; }
body[data-experience="formaturas"] .event-option:hover:not([aria-disabled="true"]),
body[data-experience="formaturas"] .event-option[aria-selected="true"] { background:#303030; }
body[data-experience="formaturas"] .event:hover:not(:disabled) { background:#343434; }
body[data-experience="formaturas"] .city-arrow { background:#242424; }
body[data-experience="formaturas"] .city-buttons button,
body[data-experience="formaturas"] .has-city-coverflow .city-carousel > button { border-color:#808080; }
body[data-experience="formaturas"] .after-dark .primary-button { color:#171717 !important; }
body[data-experience="formaturas"] .after-dark .primary-button:hover { background:#dedede; border-color:#dedede; }

/* Decorative mortarboards share the opening's scroll fade and stay behind copy. */
body[data-experience="formaturas"] .graduation-caps { position:absolute; inset:0; z-index:-1; pointer-events:none; transition:opacity 250ms ease; }
body[data-experience="formaturas"] .opening.is-selecting .graduation-caps { opacity:.4; }
.graduation-cap { position:absolute; display:block; width:var(--cap-size); opacity:var(--cap-opacity,.86); animation:graduation-cap-drift var(--cap-time,10s) ease-in-out var(--cap-delay,0s) infinite alternate paused; }
.graduation-cap picture { display:contents; }
.graduation-cap img { display:block; width:100%; height:auto; user-select:none; transform:rotate(var(--cap-angle,0deg)) scaleX(var(--cap-facing,1)); }
.graduation-cap.cap-1 { left:8%; top:16%; --cap-size:clamp(96px,10vw,150px); --cap-angle:-24deg; --cap-time:11s; --cap-delay:-3s; --cap-opacity:.72; }
.graduation-cap.cap-2 { right:8%; top:16%; --cap-size:clamp(84px,8vw,125px); --cap-angle:18deg; --cap-facing:-1; --cap-time:13s; --cap-delay:-8s; --cap-opacity:.62; }
.graduation-cap.cap-3 { left:21%; top:66%; --cap-size:clamp(128px,14vw,210px); --cap-angle:14deg; --cap-time:9s; --cap-delay:-5s; }
.graduation-cap.cap-4 { right:16%; top:68%; --cap-size:clamp(112px,12vw,180px); --cap-angle:-18deg; --cap-facing:-1; --cap-time:12s; --cap-delay:-1s; }
.graduation-cap.cap-5 { left:57%; top:83%; --cap-size:clamp(64px,6vw,90px); --cap-angle:26deg; --cap-time:14s; --cap-delay:-10s; --cap-opacity:.55; }
.is-ready .graduation-cap { animation-play-state:running; }
.scene.tab-hidden .graduation-cap,
.scene.night-offscreen .graduation-cap,
.opening[inert] .graduation-cap { animation-play-state:paused; }
@keyframes graduation-cap-drift {
  from { transform:translate3d(-6px,12px,0) rotate(-5deg); }
  to { transform:translate3d(8px,-18px,0) rotate(6deg); }
}
@media (max-width:760px) {
  .graduation-cap.cap-1 { left:1%; top:14%; --cap-size:clamp(64px,16vw,90px); }
  .graduation-cap.cap-2 { right:2%; top:15%; --cap-size:clamp(64px,14vw,86px); }
  .graduation-cap.cap-3 { left:7%; top:65%; --cap-size:clamp(96px,21vw,130px); }
  .graduation-cap.cap-4 { right:9%; top:75%; --cap-size:clamp(80px,18vw,112px); }
  .graduation-cap.cap-5 { display:none; }
}
@media (prefers-reduced-motion:reduce) {
  .graduation-cap { animation:none; }
}
@media (max-height:560px) {
  .graduation-cap { display:none; }
}

@media (min-width:761px) and (max-height:800px) {
  .graduation-cap.cap-1 { --cap-size:110px; }
  .graduation-cap.cap-2 { --cap-size:90px; }
}

/* ===== booking-navigation.css ===== */
/* Shared header only. Keep independent of tracking, forms and tour controllers. */
.booking-header {
  --booking-panel: #f7f6f2;
  --booking-line: rgba(23, 23, 23, .16);
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  gap: 20px;
}
.booking-header .booking-brand { justify-self: start; }
.booking-segments { display: flex; align-items: center; gap: clamp(14px, 1.6vw, 26px); }
.booking-segments a {
  display: inline-flex; align-items: center; min-height: 44px;
  color: inherit; text-decoration: none; font-size: .875rem;
  line-height: 1.4; white-space: nowrap; text-underline-offset: 7px;
}
.booking-segments a:hover, .booking-segments a[aria-current="page"] { text-decoration: underline; text-decoration-thickness: 1px; }
.booking-actions { display: flex; align-items: center; justify-self: end; gap: 12px; }
.booking-actions > a { white-space: nowrap; }
.booking-header .booking-client-link {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  min-height: 44px; padding: 10px 15px; border: 1px solid var(--booking-line);
  border-radius: 999px; color: inherit; background: transparent;
  text-decoration: none; font-size: .875rem; line-height: 1.4;
}
.booking-header .booking-client-link:hover { border-color: currentColor; }
.booking-client-link svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 1.5; }
.booking-header .booking-button { padding-inline: 16px; gap: 10px; }
.booking-mobile-menu { display: none; }
body:is([data-experience="xv"], [data-experience="formaturas"]) .booking-header {
  --booking-panel: #080607;
  --booking-line: rgba(247, 242, 245, .25);
}
.booking-header :is(a, summary):focus-visible { outline: 2px solid currentColor; outline-offset: 4px; }

@media (min-width: 1200px) and (max-width: 1399px) {
  .booking-header { padding-inline: 24px; }
  .booking-actions .booking-client-link svg { display: none; }
}

@media (max-width: 1199px) {
  .booking-header { display: flex; justify-content: space-between; gap: 12px; }
  .booking-header > .booking-brand, .booking-segments--desktop, .booking-actions > .booking-client-link { display: none; }
  .booking-mobile-menu { display: block; flex: none; }
  .booking-actions { min-width: 0; }
  .booking-actions > .booking-button { white-space: normal; text-align: center; }
  .booking-menu-toggle {
    display: flex; align-items: center; justify-content: center;
    width: 44px; height: 44px; margin: 0; padding: 10px;
    list-style: none; cursor: pointer; color: inherit; border-radius: 50%;
  }
  .booking-menu-toggle::-webkit-details-marker { display: none; }
  .booking-menu-toggle::marker { content: ''; }
  .booking-menu-toggle svg { width: 24px; height: 24px; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; }
  .booking-menu-toggle .booking-menu-close, .booking-mobile-menu[open] .booking-menu-bars { display: none; }
  .booking-mobile-menu[open] .booking-menu-close { display: block; }
  .booking-menu-panel {
    position: absolute; top: 100%; left: 0; right: 0;
    max-height: calc(100vh - 76px); max-height: calc(100dvh - 76px);
    overflow-y: auto; overscroll-behavior: contain;
    padding: 24px max(24px, 4vw) max(28px, env(safe-area-inset-bottom));
    background: var(--booking-panel); border-bottom: 1px solid var(--booking-line);
    box-shadow: 0 16px 24px rgba(0, 0, 0, .12);
  }
  .booking-menu-panel .booking-segments { display: flex; flex-direction: column; align-items: stretch; gap: 0; }
  .booking-menu-panel .booking-segments a {
    justify-content: space-between; min-height: 60px; padding-block: 14px;
    font-size: 1.25rem; border-bottom: 1px solid var(--booking-line); text-decoration: none;
  }
  .booking-menu-panel .booking-segments a[aria-current="page"]::after { content: ''; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
  .booking-menu-panel .booking-client-link { margin-top: 24px; min-height: 48px; padding-inline: 20px; font-size: .9375rem; }
}

@media (max-width: 359px) {
  .booking-header { padding-inline: 12px; gap: 8px; }
  .booking-header .booking-button { padding-inline: 12px; }
}

/* ===== privacidade.css ===== */
.privacidade-painel{position:fixed;z-index:105;left:20px;bottom:20px;width:min(430px,calc(100% - 40px));padding:20px;background:#f7f6f2;color:#222;border:1px solid #d4d2cb;border-radius:12px;font:14px/1.5 Arial,sans-serif;box-sizing:border-box}
.privacidade-painel[hidden]{display:none}
.privacidade-painel p{margin:0 0 12px;font:inherit;color:inherit}
.privacidade-painel .privacidade-titulo{font-weight:600;font-size:16px;margin-bottom:6px}
.privacidade-painel a{color:inherit;text-decoration:underline;text-underline-offset:3px}
.privacidade-acoes{display:flex;gap:8px}
.privacidade-acoes button{flex:1;min-height:44px;padding:10px 12px;border:1px solid #72716c;border-radius:6px;background:transparent;color:#222;cursor:pointer;font:inherit}
.privacidade-acoes button:hover{background:#e6e4de}
.privacidade-painel :focus-visible,.privacidade-opcoes:focus-visible{outline:2px solid currentColor;outline-offset:3px}
.privacidade-links{display:flex;flex-wrap:wrap;gap:12px 24px;margin-top:20px;font-size:13px}
.privacidade-links a{color:inherit;text-decoration:underline;text-underline-offset:4px;min-height:44px;display:inline-flex;align-items:center}
.chat-privacidade a{color:inherit;text-decoration:underline;text-underline-offset:3px}
.flutuante-travado .privacidade-painel{display:none}
@media(max-width:760px){.privacidade-painel{left:12px;bottom:calc(12px + env(safe-area-inset-bottom));width:calc(100% - 24px);padding:16px}}
