/* Copyright (c) 2026 Bc. Jan Krejčí. All rights reserved.                   */
/* Proprietary and confidential. See LICENSE in the project root.            */

/* Kruhové odhalení při přepnutí motivu — View Transitions API.
   Skutečný pohyb (růst kruhu) dodává `kp-theme-transition.js` přes
   `animate()` na `::view-transition-new(root)`. Tenhle soubor jen VYPÍNÁ
   výchozí chování prohlížeče (plochý křížový prolnutí, ~250 ms, vlastní
   `animation`) — bez `animation: none` by se obě animace praly o tutéž
   vrstvu a výsledek by probliknul, ne odhalil.

   Prohlížeče bez podpory (starší Safari/Firefox) tenhle blok nezasáhne
   vůbec — `::view-transition-*` tam nic neselektuje a
   `kp-theme-transition.js` v nich rovnou spadne na okamžité přepnutí
   (`kp-theme-instant`, kritický styl v App.razor). */
/* Zúženo na `kp-vt-active` (nasazuje kp-theme-transition.js kolem
   `startViewTransition`): od v92 mají root pseudoprvky i NAVIGAČNÍ
   přechody (kp-view-transitions.css) a globální `animation: none` by
   je dusil. Kruh značku nese vždy, takže se chování kruhu nemění. */
html.kp-vt-active::view-transition-old(root),
html.kp-vt-active::view-transition-new(root) {
    animation: none;
    mix-blend-mode: normal;
}

/* Nový motiv nad starým — kruh (JS) roste NAD statickým snímkem starého
   motivu a postupně ho zakrývá, ne naopak. */
html.kp-vt-active::view-transition-old(root) {
    z-index: 1;
}

html.kp-vt-active::view-transition-new(root) {
    z-index: 2;
}

/* Bez tohohle by prohlížeč mezi „starým" a „novým" snímkem sám vložil
   krátký přechod skupiny (group), přes který by kruh běžel jako druhý,
   nezávislý efekt navrch. */
html.kp-vt-active::view-transition-group(root) {
    animation-duration: 0s;
}

/* Uzavřený balíček (`forge-dashboard.css`) při KAŽDÉM `ApplySnapshotAsync`
   vynutí `transition: background-color, border-color, color, fill,
   stroke, box-shadow … !important` na `:root.forge-theme-anim *` — tedy
   doslova na každém prvku stránky. Po dobu View Transition je ale živý
   strom schovaný za statickým snímkem („před") až do `transition.
   finished` (kp-theme-transition.js) — tahle práce se tedy odehraje
   NEVIDITELNĚ a jen bere výkon kruhovému odhalení, které mezitím běží
   navrch. Na homepage to je citelné: desítky prvků s vícevrstvým
   `box-shadow` (AI panel, statistiky karty) dostanou přechod navíc, který
   nikdo neuvidí — přesně ten „sekaný začátek", který si zákazník všiml.

   `.kp-vt-active` (přidává/odebírá `kp-theme-transition.js` kolem
   `startViewTransition`) tenhle vynucený přechod PŘEBÍJÍ vyšší specificitou
   (dvě třídy na kořeni místo jedné, obojí `!important` — mezi `!important`
   pravidly rozhoduje specificita, ne pořadí v souboru). Jediné viditelné
   plynutí barev tak má na starosti kruh sám. */
:root.kp-vt-active.forge-theme-anim,
:root.kp-vt-active.forge-theme-anim * {
    transition: none !important;
}
