
html { scroll-behavior: smooth; }
.focus-ring:focus { outline: none; box-shadow: 0 0 0 4px rgba(228, 127, 39, .30); }

.bg-grid {
    background-image:
            linear-gradient(to right, rgba(15, 23, 42, 0.06) 1px, transparent 1px),
            linear-gradient(to bottom, rgba(15, 23, 42, 0.06) 1px, transparent 1px);
    background-size: 44px 44px;
}

/* ===== HOVERS (otimizados) ===== */
.card-hover{
    position: relative;
    overflow: hidden;
    transform: translateZ(0);
    will-change: transform;
    transition:
            transform .16s ease-out,
            box-shadow .16s ease-out,
            border-color .16s ease-out;
}
.card-hover::before{
    content:"";
    position:absolute;
    inset:0;
    background: #E47F27;
    opacity: 0;
    transition: opacity .14s ease-out;
    pointer-events:none;
}
.card-hover > *{
    position: relative;
    z-index: 1;
}
.card-hover:hover{
    border-color: rgba(228,127,39,.55);
    transform: translate3d(0,-2px,0);
    box-shadow: 0 18px 34px rgba(0,0,0,.18);
}
.card-hover:hover::before{
    opacity: 1;
}

.card-hover .hover-white{
    transition: color .14s ease-out;
}
.card-hover:hover .hover-white{
    color: #fff !important;
}

.reveal { opacity: 0; transform: translateY(18px) scale(.985); transition: opacity .65s ease, transform .65s cubic-bezier(.2,.8,.2,1), filter .65s ease; filter: blur(6px); will-change: opacity, transform, filter; }
.reveal.in { opacity: 1; transform: translateY(0) scale(1); filter: blur(0); }

.reveal-left { opacity: 0; transform: translateX(-22px) scale(.985); transition: opacity .65s ease, transform .65s cubic-bezier(.2,.8,.2,1), filter .65s ease; filter: blur(6px); will-change: opacity, transform, filter; }
.reveal-left.in { opacity: 1; transform: translateX(0) scale(1); filter: blur(0); }

.reveal-right { opacity: 0; transform: translateX(22px) scale(.985); transition: opacity .65s ease, transform .65s cubic-bezier(.2,.8,.2,1), filter .65s ease; filter: blur(6px); will-change: opacity, transform, filter; }
.reveal-right.in { opacity: 1; transform: translateX(0) scale(1); filter: blur(0); }

.reveal-zoom { opacity: 0; transform: scale(.96); transition: opacity .65s ease, transform .65s cubic-bezier(.2,.8,.2,1), filter .65s ease; filter: blur(8px); will-change: opacity, transform, filter; }
.reveal-zoom.in { opacity: 1; transform: scale(1); filter: blur(0); }

.reveal-pop { opacity: 0; transform: translateY(22px) scale(.96); transition: opacity .7s ease, transform .7s cubic-bezier(.17,.89,.24,1.12), filter .7s ease; filter: blur(8px); will-change: opacity, transform, filter; }
.reveal-pop.in { opacity: 1; transform: translateY(0) scale(1); filter: blur(0); }

.hero-pop { opacity: 0; transform: translateY(10px) scale(.985); animation: heroPop .85s cubic-bezier(.2,.9,.2,1) .12s forwards; }
@keyframes heroPop {
    0% { opacity: 0; transform: translateY(10px) scale(.985); filter: blur(10px); }
    100% { opacity: 1; transform: translateY(0) scale(1); filter: blur(0); }
}

/* Botões */
.btn-wiggle { position: relative; overflow: hidden; transform: translateZ(0); will-change: transform; }
.btn-wiggle::after {
    content: "";
    position: absolute;
    top: -60%;
    left: -40%;
    width: 35%;
    height: 220%;
    background: rgba(255,255,255,.28);
    transform: rotate(20deg) translateX(-140%);
    transition: transform .55s ease;
    pointer-events: none;
    filter: blur(1px);
}
.btn-wiggle:hover::after { transform: rotate(20deg) translateX(420%); }

.pulse-dot { position: relative; }
.pulse-dot::after{
    content:"";
    position:absolute;
    inset: -8px;
    border-radius: 999px;
    border: 2px solid rgba(228,127,39,.55);
    transform: scale(.7);
    opacity: 0;
    animation: pulseDot 1.7s ease-out infinite;
}
@keyframes pulseDot {
    0% { transform: scale(.7); opacity: .0; }
    20% { opacity: .65; }
    100% { transform: scale(1.35); opacity: 0; }
}

.floaty { animation: floaty 4.5s ease-in-out infinite; }
@keyframes floaty {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-8px); }
}

.anchor-offset { scroll-margin-top: calc(var(--topstrip-h, 40px) + var(--header-h, 88px) + 18px); }
#mapEmbed iframe { width: 100%; height: 100%; border: 0; }

/* Parallax fixo */
.fixed-parallax {
    position: relative;
    overflow: hidden;
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
}
@media (min-width: 1024px){
    .fixed-parallax { background-attachment: fixed; }
}
.fixed-parallax-overlay{
    position:absolute;
    inset:0;
    background: linear-gradient(90deg, rgba(255,255,255,.92) 0%, rgba(255,255,255,.78) 42%, rgba(255,255,255,.90) 100%);
}
@media (max-width: 1024px){
    .fixed-parallax-overlay{
        background: linear-gradient(180deg, rgba(255,255,255,.92) 0%, rgba(255,255,255,.84) 55%, rgba(255,255,255,.92) 100%);
    }
}

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    .reveal, .reveal-left, .reveal-right, .reveal-zoom, .reveal-pop { opacity: 1 !important; transform: none !important; filter: none !important; transition: none !important; }
    .hero-pop { opacity: 1 !important; transform: none !important; animation: none !important; filter: none !important; }
    .floaty { animation: none !important; }
    .pulse-dot::after { animation: none !important; }
    .btn-wiggle::after { display: none !important; }
    .card-hover { transition: none !important; }
    .card-hover::before { transition: none !important; }
}