/* Read-only cover-card finish. Titles keep their existing clamp and height. */
:root {
    --game-divider-s1: oklch(0.78 0.12 210);
    --game-divider-s2: oklch(0.67 0.21 20);
    --game-divider-neutral: oklch(0.67 0.02 250);
}
.bsp-card[data-pf="switch-1"] { --game-divider-accent: var(--cover-light, var(--game-divider-s1)); }
.bsp-card[data-pf="switch-2"] { --game-divider-accent: var(--cover-light, var(--game-divider-s2)); }
:is(.game-card, .bs-game-card) { --game-divider-accent: var(--pf-c, var(--game-divider-neutral)); }
:is(.game-card, .bs-game-card)[data-pf="switch-1"] { --game-divider-accent: var(--game-divider-s1); }
:is(.game-card, .bs-game-card)[data-pf="switch-2"] { --game-divider-accent: var(--game-divider-s2); }

/* Anchor to facts/metrics, never to hidden list excerpts or chips.
   The first information block gets one line, even when release/size are absent.
   No cover, card-ring, metrics, trophy or query styles are overridden. */
body .bsp-card:has(.bsp-cover) .bsp-card-body > h3 ~ :is(.bsh-card-facts, .bsh-card-metrics, .bs-catalog-metrics):not(.bsh-card-facts ~ *, .bsh-card-metrics ~ *, .bs-catalog-metrics ~ *),
body .game-card .game-card-title-wrap > .game-card-title + *,
body .bs-game-card .bs-game-card-info > .bs-game-card-title + * {
    position: relative;
    padding-top: 9px;
}
body .bsp-card:has(.bsp-cover) .bsp-card-body > h3 ~ :is(.bsh-card-facts, .bsh-card-metrics, .bs-catalog-metrics):not(.bsh-card-facts ~ *, .bsh-card-metrics ~ *, .bs-catalog-metrics ~ *)::before,
body .game-card .game-card-title-wrap > .game-card-title + *::before,
body .bs-game-card .bs-game-card-info > .bs-game-card-title + *::before {
    content: "";
    position: absolute;
    inset: 0 0 auto;
    height: 1px;
    display: block;
    pointer-events: none;
    background: linear-gradient(90deg,
        color-mix(in oklab, var(--game-divider-accent, var(--game-divider-neutral)) 10%, transparent),
        color-mix(in oklab, var(--game-divider-accent, var(--game-divider-neutral)) 48%, transparent) 28%,
        color-mix(in oklab, var(--game-divider-accent, var(--game-divider-neutral)) 20%, transparent) 76%,
        transparent);
}

/* Horizontal rows and square library tiles retain their original composition. */
body :is([data-catalog-view="az"], [data-catalog-view="list"], [data-catalog-view="library"], .list-view)
    :is(.bsp-card-body, .game-card-title-wrap, .bs-game-card-info) > :is(h3, .game-card-title, .bs-game-card-title) ~ * {
    padding-top: 0;
}
body :is([data-catalog-view="az"], [data-catalog-view="list"], [data-catalog-view="library"], .list-view)
    :is(.bsp-card-body, .game-card-title-wrap, .bs-game-card-info) > :is(h3, .game-card-title, .bs-game-card-title) ~ *::before {
    content: none;
}

/* Centered information rows on grid cover cards (release/size and the counter row).
   Horizontal rows and square library tiles keep their own alignment. */
body .bsp-card:has(.bsp-cover) .bsh-card-facts,
body .bsp-card:has(.bsp-cover) .bsh-card-metrics,
body .bsp-card:has(.bsp-cover) .bs-catalog-metrics {
    justify-content: center;
    text-align: center;
}
body .bsp-card:has(.bsp-cover) .bsh-card-facts > span {
    justify-content: center;
}
body :is([data-catalog-view="az"], [data-catalog-view="list"], [data-catalog-view="library"], .list-view)
    :is(.bsh-card-facts, .bsh-card-metrics, .bs-catalog-metrics) {
    justify-content: flex-start;
    text-align: left;
}
body :is([data-catalog-view="az"], [data-catalog-view="list"], [data-catalog-view="library"], .list-view)
    .bsh-card-facts > span {
    justify-content: flex-start;
}
