/* Telegram fullscreen: keep every screen below Telegram's own top controls. */
:root { --veil-fullscreen-top: 0px; }
:root[data-fullscreen="true"] .page-shell { padding-top: var(--veil-fullscreen-top); place-items: start center; }
:root[data-fullscreen="true"] .game { height: min(calc(100dvh - var(--veil-fullscreen-top)), 818px); }
.settings-row[hidden] { display: none; }

/* Launch weight: art of screens that were never opened is not downloaded.
   content-visibility alone does not stop CSS backgrounds or lazy images from
   loading. lazy-art.js marks a screen data-art-ready the first time it opens,
   so closing it later keeps its art (no flash during the fade-out). */
#game .overlay:not(.active):not([data-art-ready]),
#game .overlay:not(.active):not([data-art-ready]) *,
#game .overlay:not(.active):not([data-art-ready]) *::before,
#game .overlay:not(.active):not([data-art-ready]) *::after { background-image: none !important; }
#game .overlay:not(.active):not([data-art-ready]) img[loading="lazy"] { display: none; }
/* The battle scene sits under the city: no battle art before the first fight. */
#game:not([data-battle-art]) .scene { background-image: none !important; }
#game:not([data-battle-art]) .battle-stage { display: none; }
