/* ============================================================
   Strict-mode gate
   ============================================================
   Гарантия читаемости строгих тем: один флаг data-theme-kind="strict"
   отключает ВСЕ рискованные визуальные эффекты, что бы ни определял
   файл темы.

   Каскад (не ломать!):
   - этот файл обязан быть UNLAYERED и стоять в <head> ПОСЛЕ
     <link id="theme-stylesheet"> — тогда он побеждает файл темы
     по source order + специфичности (html[...] 0-1-1 > :root 0-1-0),
     без !important;
   - не переносить в index.css: правило внутри @layer проиграет
     unlayered-файлу темы.

   Атрибут ставится на <html> И <body> (см. index.html anti-FOUC и
   shared/theme/theme_select.rs); дубль по body страхует старые кэши,
   где атрибут успел встать только на body.
   ============================================================ */

html[data-theme-kind="strict"],
body[data-theme-kind="strict"] {
  /* Фоновая картинка приложения */
  --app-bg-image: none;

  /* Каменная мозаика (--header-noise-opacity, .app-layout::after) здесь
     НЕ гасится: это поверхность строгой темы, не эффект поверх фото.
     Fancy-темы обнуляют токен правилом ниже и не монтируют слой. */

  /* Система читаемости fancy-тем: одно размытие на весь хром + тень текста.
     `none` вместо blur(0px) — иначе браузер всё равно заводит
     stacking context и слой композитинга.

     Цветов здесь нет намеренно: --sheet-bg, --tabs-bar-bg и прочие
     поверхности строгая тема задаёт сама (непрозрачными), а полноту
     набора стережёт UI-023 (раздел «Theme drift» в UI_REGISTRY.md). */
  --glass-filter: none;
  --text-on-image-shadow: none;
}

/* Фотофон fancy-темы не перекрывается гранитной мозаикой — ни токеном,
   ни слоем (.app-layout::after вешается только на strict). */
html[data-theme-kind="fancy"],
body[data-theme-kind="fancy"] {
  --header-noise-opacity: 0;
}
