/* SpaceKey motion: one vocabulary, no layout animation.
   Não redefine tokens globais (--ease fica o de tokens.css): a curva própria é --ease-motion (tokens.css). */
:root {
    --motion-fast: 160ms;
    --motion-base: 260ms;
    --motion-reveal: 420ms;
    --motion-scene: 720ms;
    --motion-stagger: 75ms;
    --motion-out: var(--ease-motion);
    --motion-smooth: cubic-bezier(.45, 0, .55, 1);
}

/* Legacy reveals relinquish ownership; content remains readable if JS fails. */
.js .anim-up { opacity: 1; transform: none; transition: none; }
.hero-text > p, .hero .cta-buttons, .hero-bg img { animation: none; }
.pm-ready .hero .hero-illustration { transform: none; }
.pm-ready .pm-pending { opacity: 0; }
.pm-ready .pm-pending:focus-within { opacity: 1; }
/* Reveal da biblioteca FX (js/fx-site.js): foco por teclado nunca cai em bloco ainda escondido. */
.fx-reveal.is-pre:focus-within { opacity: 1; transform: none; clip-path: none; }
/* Texto legal sempre visível. */
.legal-content :is(.pm-pending, .fx-reveal.is-pre), .legal-content.fx-reveal.is-pre {
    opacity: 1 !important;
    transform: none !important;
    clip-path: none !important;
}
.pm-parallax { translate: var(--pm-x, 0px) var(--pm-y, 0px); }

/* State feedback: paint changes are immediate; only composited properties tween. */
:is(.btn, .cta-link, .site-nav__action, .site-nav-panel__action,
    .faq-question, .faq-icon, .price-availability-card, .size-guide__item,
    .contact-route, .feature-card, .site-nav__links a, .site-nav-panel__links a) {
    transition: transform var(--motion-base) var(--motion-out), opacity var(--motion-fast) var(--motion-smooth);
}
:is(.btn, .site-nav__action, .site-nav-panel__action):focus-visible {
    transform: translateY(-2px);
}
:is(.price-availability-card, .size-guide__item, .contact-route, .feature-card):focus-within {
    transform: translateY(-3px);
}
.faq-question:focus-visible { transform: translateX(3px); }
.pm-ready :is(.feature, .status-block, .page-flow article) {
    transition: transform var(--motion-base) var(--motion-out);
}
.pm-ready :is(.feature, .status-block, .page-flow article):focus-within { transform: translateY(-3px); }
.faq-icon { display: grid; }
.faq-answer.active { animation: none; }

/* Mobile hero text pad: above scene and scrim, below the copy itself. */
@media (max-width: 768px) {
    .home-cinema.home-cinema .hero-text,
    .page-hero.page-hero .page-hero__copy,
    .not-found.not-found .not-found__content {
        position: relative;
        isolation: isolate;
    }

    .home-cinema.home-cinema .hero-text::before,
    .page-hero.page-hero .page-hero__copy::before,
    .not-found.not-found .not-found__content::before {
        content: "";
        position: absolute;
        z-index: -1;
        pointer-events: none;
        left: calc(-1 * var(--gutter));
        right: calc(-1 * var(--gutter));
        top: -110px;
        bottom: -40px;
        background: linear-gradient(180deg, rgb(16 13 9 / 0) 0, rgb(16 13 9 / .72) 90px, rgb(16 13 9 / .9) 110px, rgb(16 13 9 / .92) 100%);
    }
}
.pm-faq .faq-answer { transform-origin: top; }
.pm-faq .faq-question:active { transform: translateX(3px); }

:is(.cta-link, .legal-nav a, .footer-section a, .footer-management, .site-nav-panel__links a) {
    position: relative;
    text-decoration: none;
}
:is(.cta-link, .legal-nav a, .footer-section a, .footer-management, .site-nav-panel__links a)::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 1px;
    background: currentColor;
    pointer-events: none;
    transform: scaleX(0);
    transform-origin: left;
    transition: transform var(--motion-base) var(--motion-out);
}
.site-nav__links a::after {
    transform-origin: left;
    transition: transform var(--motion-base) var(--motion-out), opacity var(--motion-fast) var(--motion-smooth);
}
:is(.cta-link, .legal-nav a, .footer-section a, .footer-management,
    .site-nav__links a, .site-nav-panel__links a):focus-visible::after {
    opacity: 1;
    transform: scaleX(1);
}
.cta-link > :is(svg, .arrow), .btn > :is(svg, .arrow) {
    transition: transform var(--motion-base) var(--motion-out);
}
:is(.cta-link, .btn):focus-visible > :is(svg, .arrow) { transform: translateX(3px); }

@media (hover: hover) and (pointer: fine) {
    :is(.btn, .site-nav__action, .site-nav-panel__action):hover { transform: translateY(-2px); }
    :is(.price-availability-card, .size-guide__item, .contact-route, .feature-card):hover { transform: translateY(-3px); }
    .faq-question:hover { transform: translateX(3px); }
    .pm-ready :is(.feature, .status-block, .page-flow article):hover { transform: translateY(-3px); }
    :is(.cta-link, .legal-nav a, .footer-section a, .footer-management, .site-nav-panel__links a):hover::after { transform: scaleX(1); }
    :is(.cta-link, .btn):hover > :is(svg, .arrow) { transform: translateX(3px); }
}
:is(.btn, .site-nav__action, .site-nav-panel__action):active { transform: scale(.98); }

/* Shrink the fixed header visually, without changing its flow box or hit targets. */
nav.site-nav {
    transition: transform var(--motion-base) var(--motion-out);
    will-change: auto;
}
.pm-ready nav.site-nav.is-hidden { transform: none; }
.pm-ready nav.site-nav.is-scrolled:not(.is-panel-open) { transform: translateY(-5px); }
nav.site-nav .site-nav__brand img {
    transition: transform var(--motion-base) var(--motion-out);
    transform-origin: left center;
}
.pm-ready nav.site-nav.is-scrolled .site-nav__brand img { transform: scale(.92); }
.site-nav-panel { transition: opacity var(--motion-base) var(--motion-smooth), transform var(--motion-base) var(--motion-out); }
.site-nav__toggle-lines, .site-nav__toggle-lines::before, .site-nav__toggle-lines::after {
    transition: transform var(--motion-base) var(--motion-out), opacity var(--motion-fast) var(--motion-smooth);
}

/* Reveal existing gradients, never animate their stops, masks or background position. */
.pm-surface::before, .pm-surface::after {
    transition: opacity var(--motion-scene) var(--motion-smooth);
}
.pm-surface:not(.pm-surface-seen)::before, .pm-surface:not(.pm-surface-seen)::after { opacity: 0; }
.pm-offscreen, .pm-offscreen *, .pm-offscreen::before, .pm-offscreen::after,
.pm-offscreen *::before, .pm-offscreen *::after,
.pm-suspended *, .pm-suspended *::before, .pm-suspended *::after {
    animation-play-state: paused !important;
}
.js .status-block .unit-light, .js .status-block .unit-box-out {
    transition: opacity var(--motion-scene) var(--motion-out), transform var(--motion-scene) var(--motion-out);
}
.footer-section ul a, .legal-nav a { transition: transform var(--motion-base) var(--motion-out); }
.pm-ready .hero { --e-in: var(--motion-out); }

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto !important; }
    *, *::before, *::after { transition: none !important; }
    .pm-pending { opacity: 1 !important; }
    .pm-parallax { translate: none !important; }
    .pm-surface::before, .pm-surface::after { transition: none; }
    .pm-ready nav.site-nav, .pm-ready nav.site-nav .site-nav__brand img { transform: none; }
    .pm-ready :is(.feature, .status-block, .page-flow article):is(:hover, :focus-within) { transform: none; }
    :is(.btn, .site-nav__action, .site-nav-panel__action, .faq-question,
        .price-availability-card, .size-guide__item, .contact-route, .feature-card):is(:hover, :focus-within, :active) { transform: none; }
}
