/* ====================================================================
   view-transitions.css — reguły View Transitions API
   --------------------------------------------------------------------
   Zob. ARCHITEKTURA_INICJACYJNA.md §11. Współczesne przeglądarki
   obsługują View Transitions API (Chrome 111+, Edge 111+, Safari 18+).
   Fallback dla starszych — efekt liminalia działa normalnie przez
   CSS animations + opacity transitions.
   ==================================================================== */

/* Same-document transitions — domyślnie */
@view-transition {
    navigation: auto;
}

/* Cross-document — wolniejsze, dla bram inicjacyjnych */
::view-transition-old(root),
::view-transition-new(root) {
    animation-duration: 600ms;
    animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}

::view-transition-old(root) {
    animation-name: rust-fade-out;
}

::view-transition-new(root) {
    animation-name: void-fade-in;
}

@keyframes rust-fade-out {
    0%   { opacity: 1; filter: none; }
    60%  { opacity: 0.6; filter: hue-rotate(-25deg) saturate(0.5); }
    100% { opacity: 0; filter: hue-rotate(-25deg) saturate(0.3); }
}

@keyframes void-fade-in {
    0%   { opacity: 0; }
    100% { opacity: 1; }
}

/* Litery strażników — view-transition-name nadawany dynamicznie przez gate-engine.js */
.gate-letter-active {
    view-transition-name: gate-letter;
}

@media (prefers-reduced-motion: reduce) {
    ::view-transition-old(root),
    ::view-transition-new(root) {
        animation-duration: 0.001s;
    }
}
