/* Shared cover treatment for every game's entry screen. */
#visualHome .visualHero,
#arcadeHome .arcadeHero,
#partyHome .partyHero,
#connHome .hero,
#drawHome .hero,
#faithHome .faithHero,
#musicHome .musicHero,
#quizHome .quizHero,
#levelSelect .pz-hero,
#levelView .cwHero,
#maaApp .maa-hero,
#rudApp .panel.hero {
  position: relative;
  isolation: isolate;
  display: grid;
  grid-template-columns: minmax(0, 1.5fr) minmax(260px, .72fr);
  gap: 18px;
  align-items: stretch;
  min-height: 470px;
  overflow: hidden;
  border: 1px solid rgba(126, 167, 255, .28);
  border-radius: 28px;
  background-color: #081321;
  background-image:
    linear-gradient(90deg, rgba(5, 14, 27, .72) 0%, rgba(5, 14, 27, .59) 48%, rgba(5, 14, 27, .32) 100%),
    var(--entry-art);
  background-position: center;
  background-size: cover;
}

/* Leave the cover visible through the copy panel while keeping text readable. */
[data-game-cover] .heroMain,
[data-game-cover] .faithHeroCopy,
[data-game-cover] .musicHeroCopy,
[data-game-cover] .quizHeroCopy,
[data-game-cover] .pz-hero-copy,
[data-game-cover] .maa-hero-main {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  border-radius: 24px;
  background: rgba(5, 14, 27, .34);
}

[data-game-cover] .howCard,
[data-game-cover] .how,
[data-game-cover] .heroSide,
[data-game-cover] .faithHow {
  background: rgba(8, 19, 37, .76);
  border: 1px solid rgba(126, 167, 255, .27);
  backdrop-filter: blur(8px);
}

/* The solo DBV intro has no separate side panel, so its own card is the cover frame. */
#rudApp .panel.hero { grid-template-columns: minmax(0, 1fr); }
#rudApp .panel.hero .hero-art { display: none; }

@media (max-width: 860px) {
  #visualHome .visualHero,
  #arcadeHome .arcadeHero,
  #partyHome .partyHero,
  #connHome .hero,
  #drawHome .hero,
  #faithHome .faithHero,
  #musicHome .musicHero,
  #quizHome .quizHero,
  #levelSelect .pz-hero,
  #levelView .cwHero,
  #maaApp .maa-hero,
  #rudApp .panel.hero {
    grid-template-columns: minmax(0, 1fr);
    min-height: 0;
  }
}

@media (max-width: 620px) {
  #visualHome .visualHero,
  #arcadeHome .arcadeHero,
  #partyHome .partyHero,
  #connHome .hero,
  #drawHome .hero,
  #faithHome .faithHero,
  #musicHome .musicHero,
  #quizHome .quizHero,
  #levelSelect .pz-hero,
  #levelView .cwHero,
  #maaApp .maa-hero,
  #rudApp .panel.hero {
    background-image:
      linear-gradient(180deg, rgba(5, 14, 27, .42) 0%, rgba(5, 14, 27, .72) 50%, rgba(5, 14, 27, .86) 100%),
      var(--entry-art);
    background-position: center;
  }
}

/* Real image layer: keeps each project's own cover visible in its pre-game screen. */
[data-entry-cover-applied] {
  position: relative;
  isolation: isolate;
  overflow: hidden;
}
[data-entry-cover-applied] > .game-entry-cover-art {
  position: absolute;
  z-index: 0;
  inset: 0;
  margin: 0;
  pointer-events: none;
}
[data-entry-cover-applied] > .game-entry-cover-art img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}
[data-entry-cover-applied]::after {
  content: "";
  position: absolute;
  z-index: 0;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(90deg, rgba(5, 14, 27, .66), rgba(5, 14, 27, .24));
}
[data-entry-cover-applied] > :not(.game-entry-cover-art):not(.faithHeroGlow):not(.musicGlow):not(.quizGlow) {
  position: relative;
  z-index: 1;
}
@media (max-width: 620px) {
  [data-entry-cover-applied]::after {
    background: linear-gradient(180deg, rgba(5, 14, 27, .34), rgba(5, 14, 27, .82));
  }
}

#faithHome .faithHeroGlow { position: absolute; z-index: 1; }

/* UI Taste entry redesign: one illustrated opening screen shared by every game. */
body:has([data-game-cover]) {
  background: #07111f;
}
body:has([data-game-cover]) :is(
  #visualHome, #arcadeHome, #partyHome, #connHome, #drawHome, #faithHome,
  #musicHome, #quizHome, #levelSelect, #levelView, #maaApp
) {
  width: min(1480px, calc(100vw - 48px));
  max-width: none;
  margin-inline: auto;
}
body:has([data-game-cover]) .rud-shell {
  width: min(1480px, calc(100vw - 48px));
  max-width: none;
  margin-inline: auto;
}
body:has([data-game-cover]) .rud-shell #rudApp { width: 100%; }

body:has([data-game-cover]) :is(
  #visualHome .visualHero, #arcadeHome .arcadeHero, #partyHome .partyHero,
  #connHome .hero, #drawHome .hero, #faithHome .faithHero, #musicHome .musicHero,
  #quizHome .quizHero, #levelSelect .pz-hero, #levelView .cwHero,
  #maaApp .maa-hero, #rudApp .panel.hero
) {
  min-height: clamp(500px, 65vh, 620px);
  padding: clamp(24px, 3.2vw, 48px);
  grid-template-columns: minmax(0, 1fr) minmax(250px, 340px);
  gap: clamp(16px, 2.6vw, 38px);
  align-items: end;
  border: 1px solid rgba(167, 190, 232, .25);
  border-radius: 28px;
  box-shadow: 0 24px 70px rgba(0, 0, 0, .3);
}

/* Remove old game marks, duplicate emblems, and decorative emoji from the cover area. */
[data-entry-cover-applied] :is(
  .heroLogo, .faithLogo, .musicLogo, .quizLogo, .pz-logo, .heroIcon,
  .shieldBadge, .equalizer
) {
  display: none !important;
}

/* Treat the title, description, and actions as one lower-left overlay. */
[data-entry-cover-applied] :is(
  .heroMain, .faithHeroCopy, .musicHeroCopy, .quizHeroCopy,
  .pz-hero-copy, .maa-hero-main
) {
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  align-self: stretch;
  min-width: 0;
  padding: clamp(20px, 3.3vw, 48px);
  border: 0;
  border-radius: 20px;
  background: linear-gradient(90deg, rgba(4, 11, 22, .88), rgba(4, 11, 22, .56) 72%, rgba(4, 11, 22, .08));
  box-shadow: none;
}
[data-entry-cover-applied] :is(.heroMain, .faithHeroCopy, .musicHeroCopy, .quizHeroCopy, .pz-hero-copy, .maa-hero-main) h1 {
  max-width: 15ch;
  margin: 8px 0 14px;
  color: #f8fbff;
  font-size: clamp(2.6rem, 5vw, 5rem);
  line-height: .98;
  letter-spacing: -.045em;
  text-wrap: balance;
}
[data-entry-cover-applied] :is(.heroMain, .faithHeroCopy, .musicHeroCopy, .quizHeroCopy, .pz-hero-copy, .maa-hero-main) > p {
  max-width: 58ch;
  color: rgba(235, 242, 255, .9);
  font-size: clamp(1rem, 1.25vw, 1.15rem);
  line-height: 1.6;
}
[data-entry-cover-applied] :is(.heroMain, .faithHeroCopy, .musicHeroCopy, .quizHeroCopy, .pz-hero-copy, .maa-hero-main) :is(.heroActions, .actions, .faithHeroActions, .musicHeroActions, .quizHeroActions, .maa-actions) {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 22px;
}
[data-entry-cover-applied] :is(.heroActions, .actions, .faithHeroActions, .musicHeroActions, .quizHeroActions, .maa-actions) button {
  min-height: 48px;
  padding: 11px 18px;
  border-radius: 12px;
  font-weight: 850;
}

/* Give instructions and real progress a quiet, readable side panel. */
[data-entry-cover-applied] > :is(aside, .pz-hero-panel) {
  align-self: end;
  padding: clamp(20px, 2.2vw, 30px);
  border: 1px solid rgba(177, 199, 237, .24);
  border-radius: 20px;
  background: rgba(8, 17, 33, .88);
  box-shadow: 0 18px 48px rgba(0, 0, 0, .24);
  color: #f2f6ff;
}
[data-entry-cover-applied] > :is(aside, .pz-hero-panel) h2 {
  margin: 0 0 14px;
  color: #f7f9ff;
  font-size: clamp(1.2rem, 1.8vw, 1.65rem);
  letter-spacing: -.02em;
}
[data-entry-cover-applied] > :is(aside, .pz-hero-panel) ol {
  margin: 0;
  padding-left: 20px;
  color: rgba(222, 232, 250, .86);
  font-size: .94rem;
  line-height: 1.65;
}
[data-entry-cover-applied] .howCard li,
[data-entry-cover-applied] .how li { margin-block: 7px; }

/* Keep the actual game inventory/progress populated but remove duplicated hero clutter. */
[data-entry-cover-applied] :is(.statStrip, .stats, .catalogSummary, .levelMeta) {
  display: none !important;
}

/* Remove the old individual logo from each game header; keep a simple portal route. */
body:has([data-game-cover]) :is(
  .visualBrand, .arcadeBrand, .partyBrand, .portalBrand, .cwBrand,
  .pz-brand, .maa-brand, .rud-brand
) {
  display: none !important;
}
body:has([data-game-cover]) :is(
  .visualTop, .arcadeTop, .partyTop, .faithTopbar, .musicTopbar, .quizTopbar,
  .cwTop, .pz-topbar, .maa-topbar, .rud-top
) {
  min-height: 68px;
  height: auto;
  padding: 10px clamp(16px, calc((100vw - 1480px) / 2), 72px);
  justify-content: flex-start;
  gap: 12px;
  border-bottom: 1px solid rgba(255, 255, 255, .08);
  background: #07111f;
  box-shadow: none;
  backdrop-filter: none;
}
body:has([data-game-cover]) :is(
  .visualTop, .arcadeTop, .partyTop, .faithTopbar, .musicTopbar, .quizTopbar,
  .cwTop, .pz-topbar, .rud-top
) > a:last-child {
  min-height: 40px;
  padding: 8px 12px;
  border: 1px solid rgba(167, 190, 232, .18);
  border-radius: 10px;
  background: transparent;
  color: #dbe5f7;
  font-size: .9rem;
  text-decoration: none;
}
body:has([data-game-cover]) .maa-back {
  min-height: 40px;
  padding: 8px 12px;
  border: 1px solid rgba(167, 190, 232, .18);
  border-radius: 10px;
  color: #dbe5f7;
  text-decoration: none;
}
body:has([data-game-cover]) .maa-footer img { display: none; }

#faithHome .faithHero { padding: clamp(24px, 3.2vw, 48px); }
#faithHome .faithHeroGlow { pointer-events: none; }
#rudApp .panel.hero .hero-art { display: none !important; }

@media (max-width: 860px) {
  body:has([data-game-cover]) :is(
    #visualHome .visualHero, #arcadeHome .arcadeHero, #partyHome .partyHero,
    #connHome .hero, #drawHome .hero, #faithHome .faithHero, #musicHome .musicHero,
    #quizHome .quizHero, #levelSelect .pz-hero, #levelView .cwHero,
    #maaApp .maa-hero, #rudApp .panel.hero
  ) {
    min-height: 0;
    grid-template-columns: minmax(0, 1fr);
    padding: 16px;
  }
  [data-entry-cover-applied] > :is(aside, .pz-hero-panel) { max-width: 620px; }
}
@media (max-width: 620px) {
  body:has([data-game-cover]) :is(
    #visualHome, #arcadeHome, #partyHome, #connHome, #drawHome, #faithHome,
    #musicHome, #quizHome, #levelSelect, #levelView, #maaApp, .rud-shell
  ) { width: min(100% - 20px, 1480px); }
  body:has([data-game-cover]) :is(
    #visualHome .visualHero, #arcadeHome .arcadeHero, #partyHome .partyHero,
    #connHome .hero, #drawHome .hero, #faithHome .faithHero, #musicHome .musicHero,
    #quizHome .quizHero, #levelSelect .pz-hero, #levelView .cwHero,
    #maaApp .maa-hero, #rudApp .panel.hero
  ) { border-radius: 20px; padding: 12px; }
  [data-entry-cover-applied] :is(.heroMain, .faithHeroCopy, .musicHeroCopy, .quizHeroCopy, .pz-hero-copy, .maa-hero-main) {
    padding: 20px;
    border-radius: 14px;
    background: linear-gradient(0deg, rgba(4, 11, 22, .9), rgba(4, 11, 22, .46));
  }
  [data-entry-cover-applied] :is(.heroMain, .faithHeroCopy, .musicHeroCopy, .quizHeroCopy, .pz-hero-copy, .maa-hero-main) h1 {
    font-size: clamp(2.4rem, 11vw, 3.7rem);
  }
  [data-entry-cover-applied] :is(.heroActions, .actions, .faithHeroActions, .musicHeroActions, .quizHeroActions, .maa-actions) button { flex: 1 1 135px; }
}

body:has([data-game-cover]) :is(.musicGlow, .quizGlow) { position: absolute; z-index: 1; }

.rud-intro-side { align-self:end; padding:28px; border:1px solid rgba(177,199,237,.24); border-radius:20px; background:rgba(8,17,33,.88); }
.rud-intro-side h2 { margin:4px 0 18px; font-size:1.6rem; }
.rud-intro-side > div { display:grid; gap:5px; margin:12px 0; }
.rud-intro-side > div span,.rud-intro-side > p { color:rgba(222,232,250,.86); line-height:1.5; }

body:has([data-game-cover]) :is(.faithModalTitle img, .musicModalTitle img, .quizModalTitle img) { display: none !important; }

body:has([data-game-cover]) :is(#visualHome, #arcadeHome, #partyHome, #connHome, #drawHome, #levelSelect, #levelView, #maaApp) { padding-top: 12px; }
body:has([data-game-cover]) .pz-shell, body:has([data-game-cover]) .cwShell { padding-top: 12px; }
