/*
 * Mobile stability and energy budget
 *
 * Phones keep the illustrated scene and one-shot action feedback, but avoid
 * continuous GPU layers. This prevents Android compositor flashing while a
 * fixed panel scrolls and substantially lowers idle power use.
 */
@media (max-width: 900px), (pointer: coarse) {
  .dynamic-world {
    display: none !important;
  }

  .panel-backdrop,
  .ritual-backdrop,
  .ritual-progress,
  .ritual-resolving,
  .settlement-backdrop,
  .world-omen,
  .vein-omen,
  .companion-ribbon,
  .world-node-card,
  .world-travel-overlay,
  .npc-cinematic__veil,
  .npc-cinematic__copy,
  .side-panel,
  .mobile-tabs,
  .action-dock {
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
  }

  .panel-backdrop {
    background: rgba(3, 24, 23, .72) !important;
    animation: none !important;
  }

  .side-panel {
    animation: panel-unroll .22s cubic-bezier(.2, .8, .2, 1) both !important;
    filter: none !important;
    transform: translateZ(0);
    backface-visibility: hidden;
    contain: layout paint style;
    isolation: isolate;
  }

  .side-panel__body {
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
  }

  .dungeon-card,
  .dungeon-ledger-summary,
  .dungeon-ledger-stats,
  .side-panel > header {
    transform: translateZ(0);
    backface-visibility: hidden;
  }

  .world-stage__light,
  .world-stage__mist,
  .world-stage__ornament,
  .qi-ribbons i,
  .spirit-petals i,
  .spirit-particles i,
  .world-node > i::before,
  .sound-button > .ui-icon,
  .scene-card__seal,
  .scene-card__rule > span,
  .action-dock button.is-ready > i,
  .resource > span i,
  .combat-visual__image,
  .combat-round::before,
  .ritual-art__image,
  .ritual-art__light,
  .ritual-art__orbit,
  .ritual-resolving i,
  .settlement-modal__halo,
  .item-art::after,
  .npc-cinematic__portrait,
  .world-travel-overlay i,
  .account-card,
  .account-card__seal,
  .character-avatar,
  .creation-intro > span,
  .creation-shell .choice-card.is-selected .choice-card__mark {
    animation: none !important;
  }

  .world-stage__art,
  .combat-visual__image,
  .ritual-art__image {
    transform: none !important;
    backface-visibility: hidden;
  }

  .landing__backdrop,
  .landing__sunbreath,
  .landing__clouds,
  .landing__veil,
  .landing__formation,
  .formation,
  .formation__sigils,
  .formation__core,
  .landing__blade-trails i,
  .landing__talismans i,
  .landing__particles i,
  .landing .seal > i,
  .landing h1::after,
  .landing h1 span,
  .landing-cta,
  .landing-cta::after,
  .landing-cta__aura,
  .landing__scroll-cue i::after,
  .landing__rift,
  .landing__rift i {
    animation: none !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  .dynamic-world {
    display: none !important;
  }
}
