
/* V79 - Efeitos globais de hover e transição de página */
:root{
  --fx-duration:.22s;
  --fx-ease:cubic-bezier(.2,.8,.2,1);
  --fx-shadow:0 18px 42px rgba(15,23,42,.14);
  --fx-shadow-soft:0 12px 28px rgba(15,23,42,.10);
}

/* Entrada suave da página sem transform no body para não quebrar menu fixo/sticky */
html:not(.no-page-fx) body{
  animation:castturPageIn .24s ease both;
}

@keyframes castturPageIn{
  from{opacity:0}
  to{opacity:1}
}

/* Overlay de troca de página */
.page-transition-overlay{
  position:fixed;
  inset:0;
  z-index:9999999;
  display:grid;
  place-items:center;
  background:rgba(255,255,255,.82);
  backdrop-filter:blur(10px);
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transition:opacity .22s ease,visibility .22s ease;
}

html.casttur-dark .page-transition-overlay{
  background:rgba(7,17,31,.86);
}

.page-transition-overlay span{
  width:46px;
  height:46px;
  border-radius:999px;
  border:4px solid rgba(var(--primary-rgb,15,118,110),.18);
  border-top-color:var(--primary,#0f766e);
  animation:castturSpin .72s linear infinite;
}

body.is-page-leaving .page-transition-overlay{
  opacity:1;
  visibility:visible;
  pointer-events:auto;
}

@keyframes castturSpin{to{transform:rotate(360deg)}}

/* Efeito base */
a,
button,
.btn,
.button,
.card,
.event,
.partner,
.sidebox,
.content-page,
.news-article,
.route-item,
.region-category-card,
.region-local-card,
.region-profile-card,
.city-card,
.home-shortcut-card,
.attraction-card,
.establishment-card{
  transition:
    transform var(--fx-duration) var(--fx-ease),
    box-shadow var(--fx-duration) var(--fx-ease),
    border-color var(--fx-duration) var(--fx-ease),
    background var(--fx-duration) var(--fx-ease),
    color var(--fx-duration) var(--fx-ease),
    filter var(--fx-duration) var(--fx-ease),
    opacity var(--fx-duration) var(--fx-ease);
}

/* Cards com elevação */
.card:hover,
.event:hover,
.partner:hover,
.sidebox:hover,
.region-category-card:hover,
.region-local-card:hover,
.region-profile-card:hover,
.city-card:hover,
.home-shortcut-card:hover,
.attraction-card:hover,
.establishment-card:hover,
.route-item:hover{
  transform:translateY(-5px);
  box-shadow:var(--fx-shadow);
  border-color:rgba(var(--primary-rgb,15,118,110),.28)!important;
}

/* Páginas/cards grandes: efeito mais leve */
.content-page:hover,
.news-article:hover{
  box-shadow:var(--fx-shadow-soft);
}

/* Imagens dos cards */
.card-img,
.card img,
.event img,
.partner img,
.city-card img,
.region-local-card img,
.home-hero img,
.hero-slider img,
.banner img,
img.card-img{
  transition:transform .42s var(--fx-ease), filter .42s var(--fx-ease), opacity .42s var(--fx-ease);
}

.card:hover .card-img,
.card:hover img,
.event:hover img,
.partner:hover img,
.city-card:hover img,
.region-local-card:hover img{
  transform:scale(1.045);
  filter:saturate(1.08) contrast(1.03);
}

/* Evita imagem estourar fora do card */
.card,
.event,
.partner,
.city-card,
.region-local-card{
  overflow:hidden;
}

/* Botões */
.btn:hover,
.button:hover,
button:hover,
.account-trigger:hover,
.search-trigger:hover,
.city-switch:hover{
  transform:translateY(-2px);
  filter:brightness(1.04);
  box-shadow:0 12px 26px rgba(15,23,42,.14);
}

.btn:active,
.button:active,
button:active{
  transform:translateY(0) scale(.985);
}

/* Menus */
.nav a,
.account-dropdown a,
.mobile-nav-link,
.app-bottom-nav a,
.footer a{
  position:relative;
  transition:color .2s ease, background .2s ease, transform .2s ease;
}

.nav a:not(.mobile-menu-logo):not(.nav-sticky-logo)::after,
.footer a::after{
  content:"";
  position:absolute;
  left:0;
  right:100%;
  bottom:-3px;
  height:2px;
  border-radius:99px;
  background:currentColor;
  transition:right .22s var(--fx-ease);
  opacity:.72;
}

.nav a:not(.mobile-menu-logo):not(.nav-sticky-logo):hover::after,
.footer a:hover::after{
  right:0;
}

.nav a:hover,
.account-dropdown a:hover,
.mobile-nav-link:hover,
.app-bottom-nav a:hover{
  transform:translateY(-1px);
}

/* Formulários */
input,
textarea,
select{
  transition:border-color .2s ease, box-shadow .2s ease, background .2s ease, transform .2s ease;
}

input:focus,
textarea:focus,
select:focus{
  transform:translateY(-1px);
}

/* Badges e atalhos */
.badge,
.kicker,
.city-gate-pin,
.contato-info-item span,
.roteiro-ai-city,
.est-tab{
  transition:transform .22s var(--fx-ease), box-shadow .22s var(--fx-ease), background .22s var(--fx-ease);
}

.badge:hover,
.kicker:hover,
.est-tab:hover{
  transform:translateY(-2px);
}

/* Banners e slides */
.home-carousel-wrap,
.hero-slider,
.banner,
.top-banner,
.swiper,
.carousel{
  transition:transform .24s var(--fx-ease), box-shadow .24s var(--fx-ease);
}

.home-carousel-wrap:hover,
.hero-slider:hover,
.banner:hover,
.top-banner:hover{
  transform:translateY(-2px);
}

/* Efeito de brilho sutil em cards */
.card::before,
.event::before,
.partner::before,
.city-card::before,
.region-local-card::before{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(120deg,transparent 0%,rgba(255,255,255,.22) 45%,transparent 70%);
  transform:translateX(-120%);
  transition:transform .62s var(--fx-ease);
  pointer-events:none;
  z-index:1;
}

.card:hover::before,
.event:hover::before,
.partner:hover::before,
.city-card:hover::before,
.region-local-card:hover::before{
  transform:translateX(120%);
}

/* Garante contexto para brilho */
.card,
.event,
.partner,
.city-card,
.region-local-card{
  position:relative;
}

.card > *,
.event > *,
.partner > *,
.city-card > *,
.region-local-card > *{
  position:relative;
  z-index:2;
}

/* Respeita usuários que preferem menos animação */
@media (prefers-reduced-motion: reduce){
  *,
  *::before,
  *::after{
    animation:none!important;
    transition:none!important;
    scroll-behavior:auto!important;
  }
  .page-transition-overlay{
    display:none!important;
  }
}

/* Mobile: efeitos mais leves */
@media(max-width:760px){
  .card:hover,
  .event:hover,
  .partner:hover,
  .region-category-card:hover,
  .region-local-card:hover,
  .city-card:hover,
  .home-shortcut-card:hover,
  .route-item:hover{
    transform:translateY(-2px);
  }

  .btn:hover,
  .button:hover,
  button:hover{
    transform:none;
  }
}


/* V80 - Proteção do menu fixo/sticky original */
.site-header,
.nav,
.top-strip,
.app-bottom-nav,
.mobile-menu,
.mobile-nav,
.mobile-menu-panel{
  transform:none!important;
}

.site-header:hover,
.nav:hover,
.top-strip:hover,
.app-bottom-nav:hover,
.mobile-menu:hover,
.mobile-nav:hover,
.mobile-menu-panel:hover{
  transform:none!important;
  box-shadow:inherit;
}

/* Não aplicar underline animado/transform em elementos estruturais do menu que controlam posição */
.site-header *,
.nav *,
.top-strip *,
.app-bottom-nav *,
.mobile-menu *,
.mobile-nav *{
  backface-visibility:visible;
}

/* Garante que o overlay de transição nunca altere a camada do menu quando a página já carregou */
body:not(.is-page-leaving) .page-transition-overlay{
  display:none!important;
}
