/* Shared catalogue and character stages. The validated scene lookup selects
   skin art, with one moving ball layer above each backdrop. */
@layer ballerClaudeHome {
 /* Store previews place their model to the right of a description column.
    Keep the same flat illustration's central light behind that model. */
 :root[data-baller-type] dialog.bc-skin-detail .bc-skin-backdrop>img {
  transform:translateX(18%)!important;
 }
 :root[data-baller-type].is-plaza-lobby #ballerPicker #ballerDossier :is(#dossierSkinName,#dossierRole) {
  -webkit-text-stroke:.5px #061028!important;
  paint-order:stroke fill!important;
  text-shadow:0 1px 1px #061028!important;
 }
 :root[data-baller-type].is-plaza-lobby #ballerPicker[open] .roster-shell:not(:has(#ballerDossier:not([hidden]))),
 :root[data-baller-type].is-plaza-lobby #ballerPicker[data-dossier-scene] .roster-shell:has(#ballerDossier:not([hidden])),
 :root[data-baller-type].is-plaza-lobby #ballerAbilities[data-dossier-scene] {
  --bc-flat-halo-x:49%;
  --bc-flat-halo-y:48%;
  --bc-flat-floor-y:90%;
  --bc-flat-ball-tile:240px;
  position:relative!important;
  isolation:isolate!important;
  background-color:#0753c3!important;
  background-image:var(--dossier-background)!important;
  background-position:center!important;
  background-size:cover!important;
  background-repeat:no-repeat!important;
 }
 :root[data-baller-type].is-plaza-lobby #ballerPicker[open] .roster-shell:not(:has(#ballerDossier:not([hidden]))) .roster-header {background:transparent!important;}
 /* Preserve the powers dialog's existing fixed positioning and inset. */
 :root[data-baller-type].is-plaza-lobby #ballerAbilities[data-dossier-scene] {
  position:fixed!important;
  --bc-flat-halo-x:18%;
  --bc-flat-halo-y:58%;
  --bc-flat-floor-y:91%;
 }
 :root[data-baller-type].is-plaza-lobby #ballerPicker[data-dossier-scene]:has(#ballerDossier.is-wardrobe) .roster-shell {
  --bc-flat-halo-x:39%;
 }
 /* The static SVG fallback is deliberately not painted here: it already has
    its own motifs, which would duplicate the moving foreground pattern. */
 :root[data-baller-type].is-plaza-lobby #ballerPicker[open] .roster-shell:not(:has(#ballerDossier:not([hidden]))),
 :root[data-baller-type].is-plaza-lobby #ballerPicker[data-dossier-classic=true] .roster-shell:has(#ballerDossier:not([hidden])),
 :root[data-baller-type].is-plaza-lobby #ballerAbilities[data-dossier-classic=true] {
  background-color:#0753c3!important;
  background-image:linear-gradient(115deg,#0639a5 0%,#0875dc 49%,#0642b7 100%)!important;
 }
 :root[data-baller-type].is-plaza-lobby #ballerPicker .roster-shell::before,
 :root[data-baller-type].is-plaza-lobby #ballerPicker .roster-shell::after,
 :root[data-baller-type].is-plaza-lobby #ballerAbilities::before,
 :root[data-baller-type].is-plaza-lobby #ballerAbilities::after {
  content:none!important;
  pointer-events:none!important;
 }
 /* The skin scene uses the spare after-layer; the model and UI remain in
    their own layout. Overscan keeps the transformed illustration covered. */
 :root[data-baller-type].is-plaza-lobby #ballerPicker[open][data-dossier-classic=false] .roster-shell:has(#ballerDossier:not([hidden]))::after,
 :root[data-baller-type].is-plaza-lobby #ballerAbilities[open][data-dossier-classic=false]::after {
  content:''!important;
  position:absolute!important;
  inset:-3%!important;
  z-index:-3!important;
  background:var(--dossier-background) center/cover no-repeat!important;
  transform:translate3d(-1%,.5%,0) scale(1.025);
  animation:bc-skin-scene-drift 36s ease-in-out infinite!important;
  will-change:transform;
 }
 :root[data-baller-type].is-plaza-lobby #ballerPicker[open] .roster-shell:not(:has(#ballerDossier:not([hidden])))::before,
 :root[data-baller-type].is-plaza-lobby #ballerPicker[open][data-dossier-scene] .roster-shell:has(#ballerDossier:not([hidden]))::before,
 :root[data-baller-type].is-plaza-lobby #ballerAbilities[open][data-dossier-scene]::before {
  content:''!important;
  position:absolute!important;
  inset:calc(-1 * var(--bc-flat-ball-tile))!important;
  z-index:-2!important;
  background:url('./football-tile.svg') 0 0 / var(--bc-flat-ball-tile) var(--bc-flat-ball-tile) repeat!important;
  opacity:.06!important;
  transform:translate(0,0);
  animation:bc-classic-balls-diagonal 32s linear infinite!important;
  will-change:transform;
 }
 :root[data-baller-type].is-plaza-lobby #ballerPicker[open][data-dossier-classic=false] .roster-shell:has(#ballerDossier:not([hidden]))::before,
 :root[data-baller-type].is-plaza-lobby #ballerAbilities[open][data-dossier-classic=false]::before {
  opacity:var(--bc-scene-ball-opacity,.025)!important;
 }
 :root[data-baller-type].is-plaza-lobby #ballerPicker[open] .roster-shell:not(:has(#ballerDossier:not([hidden])))::after,
 :root[data-baller-type].is-plaza-lobby #ballerPicker[open][data-dossier-classic=true] .roster-shell:has(#ballerDossier:not([hidden]))::after,
 :root[data-baller-type].is-plaza-lobby #ballerAbilities[open][data-dossier-classic=true]::after {
  content:''!important;
  position:absolute!important;inset:0!important;z-index:-1!important;
  background:radial-gradient(ellipse 16% 2.8% at var(--bc-flat-halo-x) var(--bc-flat-floor-y),#00308066 0%,#00308022 68%,transparent 100%),radial-gradient(ellipse 32% 66% at var(--bc-flat-halo-x) var(--bc-flat-halo-y),#6fd9ff99 0%,#35b4f144 48%,transparent 82%),linear-gradient(90deg,#021c6033,transparent 29%,transparent 72%,#021c6033)!important;
 }
 /* A powers/upgrade/confirmation dialog covers the underlying sheet. Its
    pattern remains at its current position until that top dialog closes. */
 :root[data-baller-type].is-plaza-lobby:has(dialog[open]:not(#ballerPicker)) #ballerPicker[open] .roster-shell:not(:has(#ballerDossier:not([hidden])))::before,
 :root[data-baller-type].is-plaza-lobby:has(dialog[open]:not(#ballerPicker)) #ballerPicker[open][data-dossier-scene] .roster-shell:has(#ballerDossier:not([hidden]))::before,
 :root[data-baller-type].is-plaza-lobby:has(dialog[open]:not(#ballerPicker)) #ballerPicker[open][data-dossier-classic=false] .roster-shell:has(#ballerDossier:not([hidden]))::after,
 :root[data-baller-type].is-plaza-lobby:has(dialog[open]:not(#ballerPicker,#ballerAbilities,#ballerDetails)) #ballerAbilities[open][data-dossier-classic=false]::after {
  animation-play-state:paused!important;
 }
 @keyframes bc-skin-scene-drift {
  0%,100% {transform:translate3d(-1%,.5%,0) scale(1.025);}
  50% {transform:translate3d(1%,-.5%,0) scale(1.045);}
 }
 @keyframes bc-classic-balls-diagonal {
  from {transform:translate(0,0);}
  to {transform:translate(var(--bc-flat-ball-tile),calc(-1 * var(--bc-flat-ball-tile)));}
 }
 /* The new scenery is built in three actual planes: painted sky, a slowly
    breathing disk, then the theme's foreground props and perspective floor.
    Keeping the floor above the disk anchors the live model to its scene. */
 :root[data-baller-type] [data-dossier-scene] {
  --bc-scene-core:#dbfbff;
  --bc-scene-edge:#68d5f5;
  --bc-scene-glow:#66dcff55;
 }
 :root[data-baller-type] :is([data-dossier-scene=ronin],[data-dossier-scene=flamenco],[data-dossier-scene=desert],[data-dossier-scene=pharaoh]) {
  --bc-scene-core:#fff6b3;--bc-scene-edge:#ffd985;--bc-scene-glow:#ffe78a77;
 }
 :root[data-baller-type] :is([data-dossier-scene=tea],[data-dossier-scene=jungle],[data-dossier-scene=district]) {
  --bc-scene-core:#efffc6;--bc-scene-edge:#9cdfb0;--bc-scene-glow:#a8ffc85c;
 }
 :root[data-baller-type] :is([data-dossier-scene=sakura],[data-dossier-scene=vice],[data-dossier-scene=ruby],[data-dossier-scene=comet],[data-dossier-scene=astral]) {
  --bc-scene-core:#ffe8fa;--bc-scene-edge:#d3b6fa;--bc-scene-glow:#ed9eff66;
 }
 :root[data-baller-type] :is([data-dossier-scene=storm],[data-dossier-scene=lunar],[data-dossier-scene=halloween-court]) {
  --bc-scene-core:#e6e7ff;--bc-scene-edge:#9b9de8;--bc-scene-glow:#9e8aff66;
 }
 :root[data-baller-type] [data-dossier-scene=space] {
  --bc-scene-core:#eef2ff;--bc-scene-edge:#8396f5;--bc-scene-glow:#8b91ff66;
 }
 :root[data-baller-type] [data-dossier-scene=pirate] {
  --bc-scene-core:#fff2c9;--bc-scene-edge:#8ce0d4;--bc-scene-glow:#8ff3dd55;
 }
 :root[data-baller-type] [data-dossier-scene=volcan] {
  --bc-scene-core:#fff2b0;--bc-scene-edge:#ff8a3b;--bc-scene-glow:#ff722577;
 }
 :root[data-baller-type] [data-dossier-scene=retro] {
  --bc-scene-core:#fff6c7;--bc-scene-edge:#ffb987;--bc-scene-glow:#ffc64c66;
 }
 :root[data-baller-type].is-plaza-lobby #ballerPicker .dossier-theme-stage {
  display:none!important;position:absolute!important;inset:0!important;
  z-index:-1!important;pointer-events:none!important;overflow:hidden!important;
 }
 :root[data-baller-type].is-plaza-lobby #ballerPicker[open][data-dossier-classic=false] .roster-shell:has(#ballerDossier:not([hidden]))>.dossier-theme-stage {display:block!important;}
 :root[data-baller-type].is-plaza-lobby #ballerPicker[open][data-dossier-classic=false] .roster-shell:has(#ballerDossier:not([hidden]))::after {content:none!important;animation:none!important;}
 :root[data-baller-type].is-plaza-lobby #ballerPicker .dossier-theme-orb,
 :root[data-baller-type] .bc-skin-backdrop>.bc-skin-scenery-orb {
  position:absolute!important;left:50%!important;top:46%!important;
  display:block!important;width:var(--bc-scene-orb-width,34%)!important;height:auto!important;aspect-ratio:1!important;
  border:0!important;border-radius:50%!important;
  background:radial-gradient(circle at 38% 30%,var(--bc-scene-core) 0 50%,var(--bc-scene-edge) 100%)!important;
  box-shadow:0 0 44px 18px var(--bc-scene-glow)!important;
  transform:translate(-50%,-50%) scale(.98);opacity:.85;
  animation:bc-skin-orb-breathe var(--bc-scene-orb-duration,8s) ease-in-out infinite!important;
  pointer-events:none!important;will-change:transform,opacity;
 }
 :root[data-baller-type].is-plaza-lobby #ballerPicker .dossier-theme-decor {
  display:block!important;position:absolute!important;inset:0!important;
  background:var(--dossier-decor,none) center/cover no-repeat!important;
  pointer-events:none!important;
 }
 :root[data-baller-type] dialog.bc-skin-detail .bc-skin-backdrop>.bc-skin-scenery-base {position:absolute!important;inset:0!important;}
 :root[data-baller-type] dialog.bc-skin-detail .bc-skin-backdrop>.bc-skin-scenery-orb {left:68%!important;}
 :root[data-baller-type] dialog.bc-skin-detail .bc-skin-backdrop>.bc-skin-scenery-decor {position:absolute!important;inset:0!important;}
 /* The theme stage is real DOM in every native model preview, including a
    locked skin offer. The model canvas stays above its floor and halo. */
 :root[data-baller-type].is-plaza-lobby :is(#ballerAbilities,#ballerSkinOfferModel)>.dossier-theme-stage {
  display:block!important;position:absolute!important;inset:0!important;
  z-index:-1!important;pointer-events:none!important;overflow:hidden!important;
 }
 :root[data-baller-type].is-plaza-lobby :is(#ballerAbilities,#ballerSkinOfferModel)>.dossier-theme-stage>.dossier-theme-orb {
  position:absolute!important;left:50%!important;top:46%!important;
  display:block!important;width:var(--bc-scene-orb-width,34%)!important;height:auto!important;aspect-ratio:1!important;
  border:0!important;border-radius:50%!important;
  background:radial-gradient(circle at 38% 30%,var(--bc-scene-core) 0 50%,var(--bc-scene-edge) 100%)!important;
  box-shadow:0 0 44px 18px var(--bc-scene-glow)!important;
  transform:translate(-50%,-50%) scale(.98);opacity:.85;
  animation:bc-skin-orb-breathe var(--bc-scene-orb-duration,8s) ease-in-out infinite!important;
 }
 :root[data-baller-type].is-plaza-lobby :is(#ballerAbilities,#ballerSkinOfferModel)>.dossier-theme-stage>.dossier-theme-decor {
  position:absolute!important;inset:0!important;background:var(--dossier-decor,none) center/cover no-repeat!important;
 }
 :root[data-baller-type].is-plaza-lobby #ballerSkinOfferModel[data-dossier-skin] {
  --bc-flat-ball-tile:240px;
  background:var(--dossier-background) center/cover no-repeat!important;
 }
 :root[data-baller-type] dialog.bc-skin-detail .bc-skin-backdrop {--bc-flat-ball-tile:240px;}
 :root[data-baller-type].is-plaza-lobby #ballerSkinOfferModel[data-dossier-skin]::before {
  content:''!important;position:absolute!important;inset:-240px!important;
  z-index:-2!important;pointer-events:none!important;
  background:url('./football-tile.svg') 0 0/240px 240px repeat!important;
  opacity:var(--bc-scene-ball-opacity,.025)!important;
  animation:bc-classic-balls-diagonal 32s linear infinite!important;
 }
 :root[data-baller-type] dialog.bc-skin-detail .bc-skin-backdrop::before {
  content:''!important;position:absolute!important;inset:-240px!important;pointer-events:none!important;
  background:url('./football-tile.svg') 0 0/240px 240px repeat!important;
  opacity:var(--bc-scene-ball-opacity,.025)!important;
  animation:bc-classic-balls-diagonal 32s linear infinite!important;
 }
 :root[data-baller-type].is-plaza-lobby:has(dialog[open]:not(#ballerPicker)) #ballerPicker .dossier-theme-orb {animation-play-state:paused!important;}
 @keyframes bc-skin-orb-breathe {
  0%,100% {transform:translate(-50%,-50%) scale(.98);opacity:.85;}
  50% {transform:translate(-50%,-50%) scale(1.035);opacity:1;}
 }
 @media(prefers-reduced-motion:reduce) {
  :root[data-baller-type].is-plaza-lobby #ballerPicker .dossier-theme-orb,
  :root[data-baller-type].is-plaza-lobby :is(#ballerAbilities,#ballerSkinOfferModel)>.dossier-theme-stage>.dossier-theme-orb,
  :root[data-baller-type] .bc-skin-backdrop>.bc-skin-scenery-orb {animation:none!important;transform:translate(-50%,-50%)!important;opacity:.92!important;will-change:auto!important;}
  :root[data-baller-type].is-plaza-lobby #ballerSkinOfferModel[data-dossier-skin]::before,
  :root[data-baller-type] dialog.bc-skin-detail .bc-skin-backdrop::before {animation:none!important;transform:none!important;}
  :root[data-baller-type].is-plaza-lobby #ballerPicker[open] .roster-shell:not(:has(#ballerDossier:not([hidden])))::before,
  :root[data-baller-type].is-plaza-lobby #ballerPicker[open][data-dossier-scene] .roster-shell:has(#ballerDossier:not([hidden]))::before,
  :root[data-baller-type].is-plaza-lobby #ballerAbilities[open][data-dossier-scene]::before,
  :root[data-baller-type].is-plaza-lobby #ballerPicker[open][data-dossier-classic=false] .roster-shell:has(#ballerDossier:not([hidden]))::after,
  :root[data-baller-type].is-plaza-lobby #ballerAbilities[open][data-dossier-classic=false]::after {
   animation:none!important;
   transform:none!important;
   will-change:auto!important;
  }
  :root[data-baller-type].is-plaza-lobby #ballerPicker[open][data-dossier-classic=false] .roster-shell:has(#ballerDossier:not([hidden]))::after,
  :root[data-baller-type].is-plaza-lobby #ballerAbilities[open][data-dossier-classic=false]::after {
   inset:0!important;
  }
 }
}
