/*
 * Souvenir Brasil — camada final de consistência visual
 * Carregada por último para neutralizar regras antigas conflitantes sem
 * alterar conteúdo, dados, carrinho, autenticação ou integrações.
 */

:root {
  color-scheme: light;
  --sb-bg: #f4efe6;
  --sb-surface: #ffffff;
  --sb-surface-soft: #f8f3ea;
  --sb-surface-strong: #e9f0ec;
  --sb-ink: #102832;
  --sb-muted: #5e6e73;
  --sb-border: #d3dfda;
  --sb-accent: #0c684f;
  --sb-accent-hover: #08543f;
  --sb-action: #0c684f;
  --sb-action-text: #ffffff;
  --sb-gold: #d3a744;
  --sb-danger: #aa3f3c;
  --sb-radius-sm: 14px;
  --sb-radius-md: 20px;
  --sb-radius-lg: 28px;
  --sb-shadow: 0 14px 34px rgba(16, 40, 50, .10);
  --sb-focus: #e5b84f;
}

@media (prefers-color-scheme: dark) {
  :root {
    color-scheme: dark;
    --sb-bg: #091b20;
    --sb-surface: #14292f;
    --sb-surface-soft: #1a3238;
    --sb-surface-strong: #213b41;
    --sb-ink: #f3f7f5;
    --sb-muted: #bcc9c8;
    --sb-border: #3a555b;
    --sb-accent: #83e1c2;
    --sb-accent-hover: #a1ebd2;
    --sb-action: #0d6b52;
    --sb-action-text: #ffffff;
    --sb-gold: #e6c269;
    --sb-danger: #ff9b97;
    --sb-shadow: 0 18px 42px rgba(0, 0, 0, .28);
    --sb-focus: #f0ca72;
  }
}

html {
  background: var(--sb-bg);
  color: var(--sb-ink);
  overflow-x: clip;
}

body {
  background: var(--sb-bg) !important;
  color: var(--sb-ink);
  overflow-x: clip;
}

body,
button,
input,
select,
textarea {
  -webkit-font-smoothing: antialiased;
}

img,
svg,
video,
iframe {
  max-width: 100%;
}

button,
a,
select,
input,
textarea {
  -webkit-tap-highlight-color: transparent;
}

:where(a, button, input, select, textarea, summary):focus-visible {
  outline: 3px solid var(--sb-focus) !important;
  outline-offset: 3px;
}

/* Navigation */
.navbar {
  background: color-mix(in srgb, var(--sb-bg) 90%, transparent) !important;
  border-color: var(--sb-border) !important;
}

.navbar-inner {
  background: color-mix(in srgb, var(--sb-surface) 94%, transparent) !important;
  border: 1px solid var(--sb-border) !important;
  color: var(--sb-ink) !important;
  box-shadow: 0 8px 24px rgba(8, 31, 36, .08) !important;
}

.navbar-name,
.nav-link,
.nav-dropdown-trigger,
.nav-toggle {
  color: var(--sb-ink) !important;
}

.nav-link:hover,
.nav-link.is-active,
.nav-dropdown-trigger:hover,
.nav-dropdown-trigger[aria-expanded="true"] {
  background: var(--sb-surface-strong) !important;
  color: var(--sb-accent) !important;
}

.nav-dropdown-menu,
.nav-links.is-open {
  background: var(--sb-surface) !important;
  border: 1px solid var(--sb-border) !important;
  box-shadow: var(--sb-shadow) !important;
}

.dropdown-item {
  color: var(--sb-ink) !important;
}

.dropdown-item:hover,
.dropdown-item:focus-visible {
  background: var(--sb-surface-soft) !important;
  color: var(--sb-accent) !important;
}

.nav-weather,
.nav-cart,
.nav-login,
.nav-language,
.navbar-action-pill {
  background: var(--sb-surface-soft) !important;
  border-color: var(--sb-border) !important;
  color: var(--sb-ink) !important;
}

.nav-signup,
.nav-create-account {
  background: var(--sb-action) !important;
  border-color: var(--sb-action) !important;
  color: var(--sb-action-text) !important;
}

.nav-cart-count,
#nav-cart-count {
  background: var(--sb-action) !important;
  color: var(--sb-action-text) !important;
}

/* O contador real da navbar usa ID; manter o zero legível no tema escuro. */
@media (prefers-color-scheme: dark) {
  #nav-cart-count {
    background: #a8e6c9 !important;
    color: #08241d !important;
    border: 1px solid #d5f7e8 !important;
  }
}

/* Surfaces and repeated cards */
:where(
  .product-card,
  .product-card-home,
  .spot-card,
  .catalog-card,
  .music-destination-card,
  .destination-body,
  .tip-card,
  .food-card,
  .itinerary-card,
  .route-card,
  .faq-item,
  .auth-card,
  .profile-card,
  .store-card
) {
  border-color: var(--sb-border) !important;
  box-shadow: var(--sb-shadow);
}

:where(
  .product-card-body,
  .product-card-body-home,
  .spot-card-body,
  .catalog-card-body,
  .destination-body,
  .tip-card-body,
  .food-card-body,
  .store-card-body
) {
  background: var(--sb-surface) !important;
  color: var(--sb-ink) !important;
}

:where(
  .product-card h2,
  .product-card h3,
  .product-card-name-home,
  .spot-card-title,
  .catalog-card-body h3,
  .destination-heading,
  .music-track-title,
  .tip-card h3,
  .food-card h3,
  .store-card h3
) {
  color: var(--sb-ink) !important;
  opacity: 1 !important;
}

:where(
  .product-card p,
  .spot-card-city,
  .spot-card-meta,
  .catalog-card-body p,
  .track-count,
  .music-track-subtitle,
  .tip-card p,
  .food-card p,
  .store-card p
) {
  color: var(--sb-muted) !important;
  opacity: 1 !important;
}

.product-card .product-category,
.product-card-home .product-category,
.catalog-card .catalog-card-label,
.music-card-label,
.spot-card .spot-card-eyebrow {
  color: var(--sb-accent) !important;
  opacity: 1 !important;
}

.add-cart-btn,
.product-card button,
.product-card-home button,
.cart-drawer-checkout,
.auth-submit,
.primary-btn,
.btn-primary {
  background: var(--sb-action) !important;
  border-color: var(--sb-action) !important;
  color: var(--sb-action-text) !important;
}

/* Link de produto para o pré-atendimento do ManyChat/WhatsApp. */
.product-whatsapp-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 38px;
  padding: 8px 12px;
  border: 1px solid var(--sb-border);
  border-radius: 10px;
  color: var(--sb-accent) !important;
  background: transparent;
  font-size: .78rem;
  font-weight: 800;
  text-align: center;
  text-decoration: none;
  transition: background .15s ease, border-color .15s ease, transform .15s ease;
}

.product-whatsapp-btn:hover,
.product-whatsapp-btn:focus-visible {
  background: rgba(123, 224, 190, .10);
  border-color: var(--sb-accent);
  transform: translateY(-1px);
}

.add-cart-btn:hover,
.cart-drawer-checkout:hover,
.auth-submit:hover,
.primary-btn:hover,
.btn-primary:hover {
  background: var(--sb-accent-hover) !important;
}

/* Shop filters */
.loja-filters {
  background: var(--sb-surface) !important;
  border: 1px solid var(--sb-border) !important;
  border-radius: var(--sb-radius-lg) !important;
  box-shadow: var(--sb-shadow) !important;
  color: var(--sb-ink) !important;
}

.loja-filter-toggle {
  min-height: 48px !important;
  padding: 0 18px !important;
  background: var(--sb-surface-soft) !important;
  border: 1px solid var(--sb-border) !important;
  border-radius: 999px !important;
  color: var(--sb-ink) !important;
  font: inherit !important;
  font-weight: 800 !important;
  line-height: 1.2 !important;
}

.loja-filters-row {
  gap: 14px !important;
  align-items: end !important;
}

.loja-filter-label,
.loja-filters label {
  color: var(--sb-accent) !important;
  opacity: 1 !important;
}

.loja-filters :where(select, input) {
  width: 100% !important;
  min-width: 0 !important;
  min-height: 48px !important;
  padding: 10px 14px !important;
  background: var(--sb-surface-soft) !important;
  border: 1px solid var(--sb-border) !important;
  border-radius: 12px !important;
  color: var(--sb-ink) !important;
  font: inherit !important;
  line-height: 1.25 !important;
}

.loja-results-count {
  color: var(--sb-muted) !important;
}

/* Region pills and local selectors */
.region-pill,
.region-selector,
.region-switcher {
  background: var(--sb-surface) !important;
  border-color: var(--sb-border) !important;
  color: var(--sb-ink) !important;
}

.region-pill-label,
.region-pill-label strong,
.region-pill-toggle,
.region-pill-option {
  color: var(--sb-ink) !important;
}

.region-pill-toggle,
.region-pill-option.is-active,
.region-pill-option[aria-selected="true"] {
  background: var(--sb-surface-soft) !important;
  border-color: var(--sb-border) !important;
}

.region-pill-menu {
  background: var(--sb-surface) !important;
  border-color: var(--sb-border) !important;
  box-shadow: var(--sb-shadow) !important;
}

/* Tourist spots, tips and food cards */
.spot-card-actions,
.spot-card-footer {
  background: var(--sb-surface-soft) !important;
  border-color: var(--sb-border) !important;
}

.spot-card :where(a, button),
.catalog-card :where(a, button),
.destination-catalog-link {
  color: var(--sb-accent) !important;
}

.tips-section,
.food-section,
.spots-section,
.catalogs-section,
.home-section,
.itinerary-section {
  color: var(--sb-ink);
}

.tips-section h2,
.food-section h2,
.spots-section h2,
.catalogs-section h2,
.itinerary-section h2,
.section-title {
  color: var(--sb-ink) !important;
  opacity: 1 !important;
}

.tip-card,
.food-card {
  background: var(--sb-surface) !important;
  color: var(--sb-ink) !important;
}

/* Music */
.music-filter-bar,
.music-filters,
.music-summary-card,
.music-stat {
  background: var(--sb-surface) !important;
  border-color: var(--sb-border) !important;
  color: var(--sb-ink) !important;
}

.music-filter-bar :where(input, select),
.music-filters :where(input, select) {
  background: var(--sb-surface-soft) !important;
  border-color: var(--sb-border) !important;
  color: var(--sb-ink) !important;
}

.music-destination-card {
  background: var(--sb-surface) !important;
  color: var(--sb-ink) !important;
  overflow: hidden;
}

.music-track-list {
  border-color: var(--sb-border) !important;
}

/* Catalogs */
.catalog-card {
  background: var(--sb-surface) !important;
  color: var(--sb-ink) !important;
  overflow: hidden;
}

.catalog-card-actions a {
  color: var(--sb-accent) !important;
}

/* Authentication */
.auth-page {
  background: var(--sb-bg) !important;
  color: var(--sb-ink) !important;
}

.auth-form-wrap {
  background: var(--sb-bg) !important;
}

.auth-card {
  background: var(--sb-surface) !important;
  color: var(--sb-ink) !important;
  border: 1px solid var(--sb-border) !important;
}

.auth-card h1,
.auth-card label,
.auth-switch {
  color: var(--sb-ink) !important;
}

.auth-card .auth-lead,
.auth-options label,
.auth-help,
.auth-card small {
  color: var(--sb-muted) !important;
}

.auth-card :where(input, select, textarea) {
  background: var(--sb-surface-soft) !important;
  border-color: var(--sb-border) !important;
  color: var(--sb-ink) !important;
}

.auth-card :where(input, textarea)::placeholder {
  color: color-mix(in srgb, var(--sb-muted) 80%, transparent) !important;
  opacity: 1;
}

.auth-card a {
  color: var(--sb-accent) !important;
}

/* Cart drawer */
.cart-drawer {
  background: var(--sb-surface) !important;
  border-color: var(--sb-border) !important;
  color: var(--sb-ink) !important;
}

.cart-drawer-hd,
.cart-drawer-ft {
  background: var(--sb-surface-soft) !important;
  border-color: var(--sb-border) !important;
  color: var(--sb-ink) !important;
}

.cart-drawer-close {
  background: var(--sb-surface-strong) !important;
  color: var(--sb-ink) !important;
}

.cart-drawer-empty strong,
.cart-item-info strong,
.cart-drawer-total,
.cart-drawer-total strong {
  color: var(--sb-ink) !important;
}

.cart-drawer-empty p,
.cart-drawer-assurance,
.cart-item-info small {
  color: var(--sb-muted) !important;
}

.cart-drawer-item,
.cart-item-qty,
.cart-qty-btn {
  border-color: var(--sb-border) !important;
  background: var(--sb-surface-soft) !important;
  color: var(--sb-ink) !important;
}

/* FAQ, routes and utility panels */
.faq-section,
.faq-panel,
.route-day,
.route-stop,
.itinerary-day,
.itinerary-stop,
.map-card,
.map-panel,
.stores-map {
  border-color: var(--sb-border) !important;
}

.faq-item,
.route-stop,
.itinerary-stop {
  background: var(--sb-surface) !important;
  color: var(--sb-ink) !important;
}

.faq-item :where(summary, h3, strong),
.route-stop :where(h3, strong),
.itinerary-stop :where(h3, strong) {
  color: var(--sb-ink) !important;
}

.faq-item p,
.route-stop p,
.itinerary-stop p {
  color: var(--sb-muted) !important;
}

.route-day-header,
.itinerary-day-header {
  background: var(--sb-action) !important;
  color: var(--sb-action-text) !important;
}

/* Embedded maps: keep a visible, intentional state even if a provider fails. */
.map-card,
.map-panel,
.stores-map,
.spot-map {
  min-height: 360px;
  background: var(--sb-surface-soft) !important;
  border: 1px solid var(--sb-border) !important;
  border-radius: var(--sb-radius-md) !important;
  overflow: hidden;
}

.map-card iframe,
.map-panel iframe,
.stores-map iframe,
.spot-map iframe {
  display: block;
  width: 100%;
  min-height: 360px;
  border: 0;
}

/* Footer */
.site-footer {
  background: #061b1d !important;
  color: #f2f7f5 !important;
  margin-top: clamp(28px, 5vw, 64px) !important;
  padding-block: clamp(20px, 3vw, 38px) !important;
}

.footer-shell {
  padding: clamp(22px, 3vw, 38px) !important;
  border-color: rgba(164, 211, 197, .18) !important;
}

.site-footer :where(h2, h3, .footer-brandmark span) {
  color: #f4f8f7 !important;
}

.site-footer :where(p, li, small, .footer-copy) {
  color: #b9c9c6 !important;
}

.site-footer a,
.footer-contact-copy strong {
  color: #91e4c8 !important;
  overflow-wrap: anywhere;
}

.site-footer .footer-content {
  gap: clamp(22px, 4vw, 58px) !important;
}

.footer-bottom {
  margin-top: 24px !important;
  padding-top: 18px !important;
}

/* Notification opt-in remains anchored to the viewport. */
.push-optin {
  position: fixed !important;
  inset: calc(env(safe-area-inset-top, 0px) + 82px) max(16px, env(safe-area-inset-right, 0px)) auto auto !important;
  width: min(440px, calc(100vw - 32px)) !important;
  z-index: 1300 !important;
  background: linear-gradient(135deg, #0b2a31, #0b4d3f) !important;
  border: 1px solid rgba(135, 225, 195, .28) !important;
  color: #f4f8f7 !important;
  box-shadow: 0 18px 46px rgba(0, 0, 0, .28) !important;
}

.push-optin-title-wrap strong,
.push-optin-title-wrap span {
  color: #f4f8f7 !important;
}

/* Dark mode needs explicit surfaces instead of white cards with faded text. */
@media (prefers-color-scheme: dark) {
  :where(
    .page-section,
    .section-panel,
    .content-panel,
    .profile-selector,
    .nearby-section,
    .shop-cta,
    .reseller-cta
  ) {
    background: var(--sb-surface) !important;
    border-color: var(--sb-border) !important;
    color: var(--sb-ink) !important;
  }

  :where(
    .page-section,
    .section-panel,
    .content-panel,
    .profile-selector,
    .nearby-section,
    .shop-cta,
    .reseller-cta
  ) :where(h1, h2, h3, h4, strong) {
    color: var(--sb-ink) !important;
    opacity: 1 !important;
  }

  :where(
    .page-section,
    .section-panel,
    .content-panel,
    .profile-selector,
    .nearby-section,
    .shop-cta,
    .reseller-cta
  ) :where(p, small) {
    color: var(--sb-muted) !important;
    opacity: 1 !important;
  }
}

/* Tablet: switch before the desktop row starts overflowing. */
@media (min-width: 769px) and (max-width: 1180px) {
  .navbar-inner {
    min-width: 0 !important;
    gap: 10px !important;
  }

  .navbar-name {
    max-width: 170px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .navbar-actions {
    margin-left: auto;
    min-width: 0;
  }

  .nav-weather,
  .nav-login,
  .nav-signup,
  .nav-language {
    min-width: 44px !important;
  }
}

/* Mobile browser: compact top navigation. The bottom app dock remains PWA-only. */
@media (max-width: 768px) {
  body {
    width: 100%;
  }

  .navbar {
    padding: max(6px, env(safe-area-inset-top, 0px)) 8px 6px !important;
  }

  .navbar-inner {
    height: 56px !important;
    border-radius: 16px !important;
    padding: 6px 10px !important;
  }

  .navbar-logo {
    width: 40px !important;
    height: 40px !important;
  }

  .nav-toggle {
    min-width: 44px !important;
    min-height: 44px !important;
  }

  .nav-links {
    top: calc(max(6px, env(safe-area-inset-top, 0px)) + 62px) !important;
    left: 8px !important;
    right: 8px !important;
    width: auto !important;
    max-height: calc(100dvh - 86px) !important;
    overflow-y: auto !important;
    border-radius: 18px !important;
  }

  .loja-filters {
    padding: 12px !important;
    border-radius: 20px !important;
  }

  .loja-filter-toggle {
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    width: 100% !important;
  }

  .loja-filters-row {
    grid-template-columns: 1fr !important;
    margin-top: 12px !important;
  }

  .loja-filter-toggle[aria-expanded="false"] + .loja-filters-row,
  .loja-filters-row[hidden] {
    display: none !important;
  }

  .push-optin {
    inset: calc(env(safe-area-inset-top, 0px) + 72px) 10px auto 10px !important;
    width: auto !important;
  }

  .map-card,
  .map-panel,
  .stores-map,
  .spot-map,
  .map-card iframe,
  .map-panel iframe,
  .stores-map iframe,
  .spot-map iframe {
    min-height: 300px;
  }

  .site-footer {
    padding-block: 16px !important;
  }

  .footer-shell {
    padding: 20px 16px !important;
  }

  .site-footer .footer-content {
    gap: 18px !important;
  }

  .footer-bottom {
    margin-top: 18px !important;
    padding-top: 14px !important;
  }
}

@media (max-width: 420px) {
  .push-optin-title-wrap span {
    display: none !important;
  }

  .push-optin {
    border-radius: 18px !important;
  }

  .product-card,
  .spot-card,
  .catalog-card,
  .music-destination-card {
    border-radius: 18px !important;
  }
}

/* Loja: o CTA dourado do catálogo precisa manter texto escuro nos dois temas. */
.loja-catalog-feature-btn,
html[data-theme="dark"] .loja-catalog-feature-btn {
  background: #e7c977 !important;
  border-color: #e7c977 !important;
  color: #153326 !important;
  -webkit-text-fill-color: #153326 !important;
}

.loja-catalog-feature-btn:hover,
html[data-theme="dark"] .loja-catalog-feature-btn:hover {
  background: #f0d78e !important;
  border-color: #f0d78e !important;
  color: #10251c !important;
  -webkit-text-fill-color: #10251c !important;
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    scroll-behavior: auto !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }
}
