/* Shared media system: equal frames per component, proportional edge-to-edge art. */
.showcase .hero-slides>.hero-slide[data-art]>.visual{inset:0;width:100%;height:100%;background:transparent}
.showcase .hero-slides>.hero-slide[data-art]>.visual img,
.showcase .hero-slides>.hero-slide[data-art]>.visual video{object-fit:cover!important;object-position:center top!important;background:transparent}
/* Category tiles use the same image baseline, even while the project rotates. */
.category-grid{align-items:stretch}
.category-tile[data-category-carousel],.category-tile[data-category-carousel]:not(:has(.cat-carousel-controls)){min-height:480px;padding:26px 26px 264px;align-self:stretch}
.category-tile[data-category-carousel] .cat-image,.category-tile[data-category-carousel]:not(:has(.cat-carousel-controls)) .cat-image{position:absolute;inset:auto 0 0;width:100%;height:238px;margin:0;aspect-ratio:auto}
.category-tile .cat-image>.visual,.project-card .card-media>.visual{width:100%;height:100%}
.category-tile .cat-image img,.project-card .card-media img{width:100%;height:100%;object-fit:cover!important;object-position:center top!important;background:transparent;transform:none}
body[data-theme=b] .project-card .card-media{aspect-ratio:16/9}
/* Detail slides retain one stable frame, without contain-generated color bars. */
body[data-theme=b] .game-hero[data-art] .game-media-stage{aspect-ratio:16/9;max-height:620px;background:transparent}
.game-hero[data-art] .game-media-slide img,.game-hero[data-art] .hero-concept-video{object-fit:cover!important;object-position:center top!important;background:transparent}
/* Wide, portrait and square gallery groups each have a consistent native-format frame. */
.curated-gallery{align-items:start}
.curated-gallery .gallery-item{height:auto;aspect-ratio:auto;align-self:start}
.curated-gallery .gallery-item img{display:block;width:100%;height:auto;flex:none;aspect-ratio:3/4;object-fit:cover!important;object-position:center!important;background:transparent;transform:none!important}
.curated-gallery .gallery-item.media-wide img{aspect-ratio:16/9;object-position:center top!important}
.curated-gallery .gallery-item.media-square img{aspect-ratio:1/1}
.curated-gallery .gallery-label{flex:none;min-height:68px;align-items:center;border-radius:0}
.monkey-screenshot-grid img{object-fit:cover;background:transparent}
@media(max-width:720px){
 .showcase .hero-slides>.hero-slide[data-art]>.visual{height:280px;width:100%;aspect-ratio:auto}
 .category-tile[data-category-carousel],.category-tile[data-category-carousel]:not(:has(.cat-carousel-controls)){min-height:450px;padding:22px 22px 264px}
 body[data-theme=b] .game-hero[data-art] .game-media-stage{aspect-ratio:4/3}
 .curated-gallery .gallery-label{min-height:62px}
}
/* Portrait detail slides stay complete; a soft artwork backdrop fills the shared stage. */
.game-hero[data-art] .game-media-slide .portrait-media{isolation:isolate;overflow:hidden}
.game-hero[data-art] .game-media-slide .portrait-media .portrait-backdrop{position:absolute;inset:-24px;width:calc(100% + 48px);height:calc(100% + 48px);object-fit:cover!important;filter:blur(22px) brightness(.5);z-index:-1}
.game-hero[data-art] .game-media-slide .portrait-media img:not(.portrait-backdrop){position:relative;object-fit:contain!important;object-position:center!important}
/* The full-size artwork viewer follows the source ratio instead of letterboxing. */
.large-art{height:auto;min-height:0;aspect-ratio:auto;background:transparent}
.large-art img{width:100%;height:auto;max-height:none;object-fit:cover;background:transparent}
