/* Two atmospheric moments, with opaque cards and a legible, static fallback. */
.immersive-intent,.immersive-manifesto { position: relative; isolation: isolate; overflow: hidden; border-radius: var(--raio-xl); border: 0; background: var(--cor-tinta); }
.section-atmosphere { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center; z-index: -2; pointer-events: none; }
.immersive-intent::before,.immersive-manifesto::before { content: ''; position: absolute; inset: 0; z-index: -1; background: var(--cor-imersao); pointer-events: none; }
.immersive-intent { padding: var(--e-16); margin-block: var(--e-6) var(--e-8); gap: var(--e-12); }
.immersive-intent .intention-copy h2,.immersive-intent .intention-copy .eyebrow { color: var(--cor-sobre-foto); }
.immersive-intent .intention-copy h2 { max-width: 450px; font-size: clamp(2rem,3.4vw,3.25rem); }
.immersive-intent .intention-copy .eyebrow { margin-bottom: var(--e-5); }
.immersive-intent .intention-links { background: var(--cor-superficie); padding: var(--e-3) var(--e-6); border-radius: var(--raio-g); min-width: 0; }
.immersive-intent .intention-links a { border-color: var(--cor-borda); }
.immersive-intent .intention-links a:last-child { border-bottom: 0; }
.atmosphere-credit { position: absolute; left: var(--e-6); bottom: var(--e-3); font: 400 var(--texto-xxs)/1.4 var(--fonte-texto); color: var(--cor-sobre-foto-suave); z-index: 1; }
.immersive-manifesto { min-height: 440px; justify-content: center; padding: var(--e-16) var(--e-8); margin-block: var(--e-8) var(--e-16); }
.immersive-manifesto::before { background: var(--cor-imersao-final); }
.immersive-manifesto > p,.immersive-manifesto > p em,.immersive-manifesto > .eyebrow { color: var(--cor-sobre-foto); }
.immersive-manifesto > img:not(.section-atmosphere) { background: var(--cor-base); border-radius: var(--raio-m); padding: var(--e-3); width: 82px; height: 82px; }
.immersive-manifesto > p { max-width: 820px; }
.hero-line { display: block; white-space: nowrap; font-size: .94em; }
.word-cycle-inner { display: inline-flex; align-items: center; vertical-align: baseline; margin-inline-start: .08em; }
.word-window { display: inline-grid; min-width: 3.05em; text-align: left; }
.word-window em { grid-area: 1/1; }
.word-enter { animation: word-arrive 520ms var(--curva) both; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
@keyframes word-arrive { from { opacity: .12; transform: translateY(.2em); filter: blur(6px); } to { opacity: 1; transform: translateY(0); filter: blur(0); } }

/* The map is an optional service, not a loading gate for editorial content. */
.place-map-section { margin-block: var(--e-8) var(--e-12); }
.listing-map-section { margin-block: var(--e-8) var(--e-4); }
.listing-map-summary { display:flex; justify-content:space-between; align-items:flex-end; gap:var(--e-6); padding:var(--e-6); border:var(--borda); border-radius:var(--raio-g); background:var(--cor-superficie); }
.listing-map-summary h2 { margin-block:var(--e-2); }
.listing-map-summary p { max-width:560px; }
.listing-map-panel { margin-top:var(--e-4); }
.listing-map-close { margin-top:var(--e-3); }
.listing-map-fallback { padding:var(--e-5); border:var(--borda); border-radius:var(--raio-g); background:var(--cor-superficie); }
.listing-map-fallback summary { cursor:pointer; font:600 var(--texto-m)/1.3 var(--fonte-titulo); }
.listing-map-fallback summary span { font:400 var(--texto-xs)/1.3 var(--fonte-texto); color:var(--cor-tinta-suave); }
.listing-map-fallback > *:not(summary) { margin-top:var(--e-4); }
.place-map-section .section-heading { margin-bottom: var(--e-5); }
.place-map-section h2 { font-size: clamp(1.65rem,2.6vw,2.3rem); }
.map-count { font-size: var(--texto-xs); color: var(--cor-apoio); flex-shrink: 0; }
.place-map { display: grid; grid-template-columns: minmax(0,1fr) 300px; border: var(--borda); border-radius: var(--raio-g); overflow: hidden; background: var(--cor-superficie); }
.map-viewport { position: relative; min-width: 0; min-height: var(--altura-mapa); background: var(--cor-apoio-claro); isolation: isolate; }
.map-placeholder { min-height: var(--altura-mapa); display: flex; align-items: center; justify-content: center; flex-direction: column; gap: var(--e-4); padding: var(--e-8); text-align: center; }
.map-placeholder h3 { max-width: 390px; font-size: var(--texto-xl); }
.map-placeholder p:not(.eyebrow) { max-width: 390px; font-size: var(--texto-xs); }
.map-placeholder small { max-width: 320px; }
.map-canvas { height: var(--altura-mapa); width: 100%; background: var(--cor-apoio-claro); touch-action: pan-y !important; z-index: 0; }
.map-canvas.is-interactive { touch-action: none !important; }
.map-toolbar { position: absolute; top: var(--e-4); left: var(--e-4); z-index: 2; display: flex; border: var(--borda); border-radius: var(--raio-m); overflow: hidden; box-shadow: var(--sombra-suave); }
.map-toolbar button { min-width: 44px; min-height: 44px; padding-inline: var(--e-3); background: var(--cor-superficie); font-size: var(--texto-s); }
.map-toolbar button + button { border-left: var(--borda); }
.map-toolbar button:hover { background: var(--cor-apoio-claro); }
.map-interaction { position: absolute; bottom: var(--e-8); left: var(--e-4); z-index: 2; min-height: 44px; padding: var(--e-2) var(--e-4); border-radius: var(--raio-pill); background: var(--cor-superficie); border: var(--borda); font-size: var(--texto-xs); box-shadow: var(--sombra-suave); }
.map-interaction[aria-pressed=true] { background: var(--cor-acao); color: var(--cor-tinta); }
.map-inspector { padding: var(--e-6); display: flex; flex-direction: column; gap: var(--e-6); border-left: var(--borda); min-width: 0; }
.map-place-copy { display: grid; gap: var(--e-3); }
.map-place-copy h3 { font-size: var(--texto-l); }
.map-place-copy p:not(.eyebrow) { font-size: var(--texto-xs); }
.map-external,.map-reference { font-size: var(--texto-xs); }
.map-external,.map-reference a,.map-source-list a { text-decoration: underline; text-underline-offset: var(--e-1); }
.map-reference { display: grid; gap: var(--e-2); margin-top: auto; overflow-wrap: anywhere; }
.map-disclaimer { font-size: var(--texto-xs); margin-top: var(--e-3); max-width: 960px; }
.map-status { position: absolute; top: var(--e-20); left: var(--e-4); right: var(--e-4); font-size: var(--texto-xs); padding: var(--e-3); background: var(--cor-superficie); border-radius: var(--raio-s); z-index: 2; }
.map-error { grid-column: 1/-1; border-top: var(--borda); padding: var(--e-4); background: var(--cor-base); font-size: var(--texto-xs); }
.map-popup strong { font: 500 var(--texto-s)/1.3 var(--fonte-titulo); color: var(--cor-tinta); }
.map-popup p { font: 400 var(--texto-xs)/1.5 var(--fonte-texto); margin-block: var(--e-2); }
.map-popup a { color: var(--cor-tinta); font: 500 var(--texto-xs)/1.5 var(--fonte-texto); text-decoration: underline; }
.map-canvas .ba-map-pin { background: var(--cor-tinta); color: var(--cor-base); border: 2px solid var(--cor-base); border-radius: var(--raio-pill); box-shadow: var(--sombra-suave); display: grid; place-items: center; font: 600 var(--texto-xs)/1 var(--fonte-texto); }
.map-canvas .ba-map-pin.is-selected { background: var(--cor-acao); color: var(--cor-tinta); }
.map-canvas .leaflet-control-attribution { background: var(--cor-superficie); color: var(--cor-tinta); font: 400 11px/1.5 var(--fonte-texto); max-width: 100%; }
.map-canvas .leaflet-control-attribution a { color: var(--cor-tinta); }
@media(max-width:1024px) {
  .immersive-intent { padding: var(--e-10); gap: var(--e-8); }
  .place-map { grid-template-columns: minmax(0,1fr) 260px; }
  .map-inspector { padding: var(--e-5); }
}
@media(max-width:700px) {
  .hero h1 { font-size: clamp(2.35rem,10.5vw,4.4rem); }
  .immersive-intent { padding: var(--e-8) var(--e-5) var(--e-12); gap: var(--e-6); }
  .immersive-intent .intention-copy h2 { font-size: var(--texto-xl); }
  .immersive-intent .intention-links { padding: var(--e-2) var(--e-4); }
  .immersive-manifesto { min-height: 390px; padding: var(--e-10) var(--e-6) var(--e-12); margin-block: var(--e-6) var(--e-10); }
  .immersive-manifesto > p { font-size: 1.8rem; }
  .place-map { grid-template-columns: 1fr; }
  .map-viewport,.map-placeholder { min-height: var(--altura-mapa-movel); }
  .map-canvas { height: var(--altura-mapa-movel); }
  .map-inspector { border-left: 0; border-top: var(--borda); gap: var(--e-4); }
  .map-placeholder { padding: var(--e-6); }
  .map-placeholder h3 { font-size: var(--texto-l); }
}
@media(prefers-reduced-motion:reduce) { .word-enter { animation: none; } }

/* Compact, optional map inside the existing contact card. */
.location-card { margin-top: var(--e-5); }
.place-map.place-map-compact { display: block; border-radius: var(--raio-m); }
.place-map-compact .map-viewport,.place-map-compact .map-placeholder,.mini-map-fallback { min-height: 220px; }
.place-map-compact .map-canvas { height: 220px; }
.place-map-compact .map-placeholder { padding: var(--e-4); gap: var(--e-3); }
.contact-card .place-map-compact .button { margin: 0; width: auto; min-height: 44px; }
.place-map-compact .map-toolbar { top: var(--e-2); left: var(--e-2); }
.place-map-compact .map-toolbar button { font-size: var(--texto-xs); padding-inline: var(--e-2); }
.place-map-compact .map-interaction { bottom: var(--e-6); left: var(--e-2); font-size: var(--texto-xxs); min-height: 44px; }
.place-map-compact .leaflet-control-attribution { font-size: 11px; }
.place-map-compact .map-placeholder small { font-size: var(--texto-xxs); }
.mini-map-fallback { display: grid; place-content: center; gap: var(--e-3); padding: var(--e-5); text-align: center; background: var(--cor-apoio-claro); border-radius: var(--raio-m); }
.mini-map-fallback .icon { margin-inline: auto; }
.location-expand { min-height: 44px; display: flex; align-items: center; justify-content: flex-end; gap: var(--e-2); font-size: var(--texto-xxs); text-decoration: underline; text-underline-offset: var(--e-1); }
.location-expand .icon { width: 15px; height: 15px; transform: rotate(90deg); }
.location-apps { display: grid; gap: var(--e-2); margin-block: var(--e-2) var(--e-4); }
.location-app { display: flex; align-items: center; gap: var(--e-3); min-height: 52px; padding: var(--e-3); border: var(--borda); border-radius: var(--raio-m); font-size: var(--texto-xs); background: var(--cor-superficie); transition: background var(--t-micro) var(--curva),border-color var(--t-micro) var(--curva); }
.location-app > span:last-child { margin-left: auto; }
.location-app .icon { width: 20px; height: 20px; flex-shrink: 0; color: var(--cor-apoio); }
.location-app:hover { background: var(--cor-apoio-claro); border-color: var(--cor-apoio); }
.location-app:hover { border-color: var(--cor-acao); }
.location-app:first-of-type .icon{color:var(--cor-tinta);background:var(--cor-acao);padding:4px;border-radius:50%;box-sizing:content-box}
.location-note,.location-source { font-size: var(--texto-xxs); line-height: 1.55; color: var(--cor-tinta-suave); }
.location-source { margin-top: var(--e-3); }
.location-source summary { cursor: pointer; padding-block: var(--e-2); }
.location-source p { margin-top: var(--e-2); }
.location-source a { text-decoration: underline; }
#mapa-localizacao { scroll-margin-top: 112px; }
.location-map-dialog { width:min(960px,calc(100vw - var(--e-6))); max-height:min(860px,calc(100dvh - var(--e-6))); margin:auto; padding:var(--e-4); border:var(--borda); border-radius:var(--raio-g); background:var(--cor-superficie); color:var(--cor-tinta); box-shadow:var(--sombra-elevada); }
.location-map-dialog::backdrop { background:rgb(24 54 58 / .52); }
.location-map-dialog-head { display:flex; align-items:center; justify-content:space-between; gap:var(--e-4); padding:var(--e-2) var(--e-2) var(--e-4); }
.location-map-dialog-head h2 { font-size:var(--texto-l); }
@media(max-width:700px) { .listing-map-summary { align-items:flex-start; flex-direction:column; } .listing-map-summary .button { width:100%; } .location-map-dialog { width:100vw; max-height:100dvh; min-height:100dvh; border-radius:0; border:0; } }
@media(min-width:701px) { .contact-card:has(.location-card) { position: static; } }
