/* app.css — styles specific to the signed-in app (dashboard, radar, rival
 * watch, rivals, wishlists, API settings). Built on theme.css tokens and
 * components; only adds what those pages need. */

/* Grid children must be allowed to shrink below their content (wide tables
 * scroll inside .table-wrap instead of widening the page). */
.app-main .grid > * { min-width: 0; }

/* Absolutely positioned bits (.sr-only labels) inside a scrolling table must
 * be contained by the scroll box, or they widen the page on phones. */
.app-main .table-wrap, .app-main .tabs { position: relative; }


/* Dashboard (overview) */
.page--dashboard { display: flex; flex-direction: column; gap: 1.1rem; }
.page--dashboard > * { margin: 0; }
.dash-hero { display: flex; align-items: center; gap: 1.25rem; flex-wrap: wrap; }
.dash-hero__art { width: 184px; height: 86px; border-radius: var(--radius); object-fit: cover; background: var(--surface-2); box-shadow: var(--shadow); flex: none; }
.dash-hero__body { flex: 1; min-width: 220px; }
.dash-hero__body .eyebrow { margin-bottom: .2rem; }
.dash-hero__title { margin: 0 0 .5rem; font-size: clamp(1.5rem, 2.4vw, 2rem); letter-spacing: -.03em; line-height: 1.1; }
.dash-hero__facts { gap: .4rem; align-items: center; }
.dash-hero__link { font-size: .82rem; margin-left: .25rem; }
.dash-hero__actions { display: flex; gap: .5rem; flex-wrap: wrap; }

.setup__bar { height: 4px; margin: .9rem 1.25rem .25rem; border-radius: 2px; background: var(--surface-2); overflow: hidden; }
.setup__bar > span { display: block; height: 100%; border-radius: 2px; background: var(--primary); }
.setup__list { list-style: none; margin: 0; padding: .5rem 0; }
.setup__step { display: flex; align-items: center; gap: .85rem; padding: .7rem 1.25rem; }
.setup__step + .setup__step { border-top: 1px solid var(--border); }
.setup__check { width: 22px; height: 22px; border-radius: 999px; border: 1.5px solid var(--border-strong); display: grid; place-items: center; flex: none; }
.setup__step.is-done .setup__check { background: var(--success); border-color: var(--success); color: #fff; }
.setup__step.is-done .setup__check svg { stroke-width: 3; }
.setup__step.is-done strong { color: var(--muted); text-decoration: line-through; text-decoration-color: var(--border-strong); }
.setup__text { display: flex; flex-direction: column; flex: 1; min-width: 0; line-height: 1.35; }
.setup__text strong { font-size: .92rem; font-weight: 600; }

.launch__body { display: flex; flex-direction: column; gap: 1rem; }
.launch__headline { margin: 0; font-size: 1.05rem; color: var(--text-2); }
.launch__headline strong { color: var(--text); }
.launch__label { padding: .05rem .45rem; border-radius: 5px; }
.launch__picks { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .6rem; }
.pick { display: flex; flex-direction: column; gap: .15rem; padding: .75rem .9rem; border: 1px solid color-mix(in srgb, var(--success) 35%, var(--border)); border-radius: var(--radius); background: color-mix(in srgb, var(--success-soft) 70%, var(--surface)); color: var(--text); }
.pick:hover { text-decoration: none; border-color: var(--success); }
.pick__rank { font-size: .72rem; font-weight: 700; color: var(--success); }
.pick__date { font-weight: 650; }
.pick__meta { font-size: .8rem; color: var(--muted); }
.strip__cell, .strip__key, .launch__label { background: var(--heat, var(--surface-2)); color: var(--heat-fg, var(--text)); }
.strip { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 4px; }
.strip__week { display: flex; flex-direction: column; gap: .3rem; color: var(--muted); }
.strip__week:hover { text-decoration: none; color: var(--text); }
.strip__cell { position: relative; display: block; height: 44px; border-radius: 6px; }
.strip__cell.is-best { box-shadow: inset 0 0 0 2px var(--success); }
.strip__cell.is-own { box-shadow: inset 0 0 0 2px var(--text); }
.strip__event { position: absolute; top: 5px; right: 5px; width: 6px; height: 6px; border-radius: 999px; background: var(--text); opacity: .7; }
.strip__fest { position: absolute; top: 3px; right: 3px; width: 9px; height: 9px; background: var(--success); clip-path: polygon(50% 0, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%); }
.strip__date { font-size: .7rem; text-align: center; white-space: nowrap; font-variant-numeric: tabular-nums; }
.strip__legend { display: flex; flex-wrap: wrap; gap: .4rem 1rem; }
.strip__legend span { display: inline-flex; align-items: center; gap: .35rem; }
.strip__key { width: 12px; height: 12px; border-radius: 3px; display: inline-block; }
.strip__key--best { box-shadow: inset 0 0 0 2px var(--success); }
.strip__key--own { box-shadow: inset 0 0 0 2px var(--text); }

.dash-stats { margin: 0; }
.dash-stats .stat__delta { color: var(--muted); }
.dash-stats .stat__delta.delta--up { color: var(--up); }
.dash-stats .stat__delta.delta--down { color: var(--down); }

.dash-grid { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 2fr); gap: 1.1rem; align-items: start; }
.dash-side { display: flex; flex-direction: column; gap: 1.1rem; }
.dash-paused { margin: .75rem 1.25rem 1.25rem; }
.board { list-style: none; margin: 0; padding: .25rem 0; }
.board__row { display: grid; grid-template-columns: 1.6rem 64px minmax(0, 1fr) 80px 5.5rem; align-items: center; gap: .75rem; padding: .6rem 1.25rem; }
.board__row + .board__row { border-top: 1px solid var(--border); }
.board__row.is-own { background: var(--primary-soft); }
.board__rank { font-size: .8rem; font-weight: 650; color: var(--muted); text-align: center; font-variant-numeric: tabular-nums; }
.board__capsule { width: 64px; height: 30px; border-radius: 4px; object-fit: cover; background: var(--surface-2); }
.board__game { display: flex; flex-direction: column; min-width: 0; line-height: 1.3; }
.board__name { font-weight: 600; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.board__meta { font-size: .78rem; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.board__meta .badge { padding: 0 .35rem; font-size: .68rem; }
.board__trend { color: var(--muted); }
.board__num { display: flex; flex-direction: column; align-items: flex-end; line-height: 1.25; font-variant-numeric: tabular-nums; }
.board__delta { font-size: .76rem; color: var(--muted); }
.moves { list-style: none; margin: 0; padding: .25rem 0; }
.moves__item { display: grid; grid-template-columns: 46px minmax(0, 1fr) auto; align-items: center; gap: .7rem; padding: .65rem 1.25rem; }
.moves__item + .moves__item { border-top: 1px solid var(--border); }
.moves__capsule { width: 46px; height: 22px; border-radius: 4px; object-fit: cover; background: var(--surface-2); }
.moves__text { font-size: .88rem; line-height: 1.35; }
.moves__time { font-size: .75rem; color: var(--muted); white-space: nowrap; }
.empty--compact { padding: 1.5rem 1.25rem; }
.card--soft { background: var(--bg-subtle); border-style: dashed; }
.card--soft .card__body { display: flex; flex-direction: column; align-items: flex-start; gap: .4rem; }
.card--soft .card__title { font-size: .95rem; }
.card--soft p { margin: 0; }

@media (max-width: 1100px) {
    .dash-grid { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 620px) {
    .dash-hero { gap: .85rem; }
    .dash-hero { display: grid; grid-template-columns: 96px minmax(0, 1fr); align-items: center; }
    .dash-hero__art { width: 96px; height: 45px; border-radius: 6px; }
    .dash-hero__body { min-width: 0; }
    .dash-hero__title { font-size: 1.35rem; margin-bottom: .35rem; }
    .dash-hero__body .eyebrow { display: none; }
    .dash-hero__actions { grid-column: 1 / -1; }
    .setup__step.is-done { display: none; }
    .dash-hero__actions { width: 100%; }
    .dash-hero__actions .btn { flex: 1; }
    .launch__picks { grid-template-columns: minmax(0, 1fr); }
    .strip { grid-template-columns: repeat(6, minmax(0, 1fr)); row-gap: .6rem; }
    .strip__cell { height: 36px; }
    .board__row { grid-template-columns: 1.2rem 52px minmax(0, 1fr) auto; gap: .6rem; padding: .6rem 1rem; }
    .board__capsule { width: 52px; height: 24px; }
    .board__trend { display: none; }
    .setup__step { padding: .7rem 1rem; flex-wrap: wrap; }
    .setup__step .btn { margin-left: calc(22px + .85rem); }
    .moves__item { padding: .65rem 1rem; grid-template-columns: 40px minmax(0, 1fr); }
    .moves__capsule { width: 40px; height: 19px; }
    .moves__time { grid-column: 2; }
}

/* Onboarding */
.page--onboarding .card__body.form { padding: 1.25rem; }
.onboard-check { width: 18px; height: 18px; accent-color: var(--primary); cursor: pointer; }
.page--onboarding label { cursor: pointer; }
.page--onboarding .table td:first-child { width: 44px; }

/* Rivals */
.own-game { display: flex; align-items: center; justify-content: space-between; gap: .5rem; }
.own-game .game { min-width: 0; flex: 1; }
.page--rivals .table form { margin: 0; }

/* Rival Watch */
.page--watch { display: flex; flex-direction: column; gap: 1.1rem; }
.page--watch > * { margin: 0; min-width: 0; }
.watch-filters > *, .watch-day { min-width: 0; }
.page--watch .page__header { margin-bottom: 0; }
.watch-summary { display: flex; flex-wrap: wrap; gap: .75rem; }
.watch-summary__item { display: flex; align-items: center; gap: .65rem; padding: .65rem .9rem; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); font-size: .9rem; color: var(--text-2); min-width: 0; }
.watch-summary__item > strong:first-child { font-size: 1.35rem; line-height: 1; color: var(--text); font-variant-numeric: tabular-nums; }
.watch-summary__item img { width: 46px; height: 22px; object-fit: cover; border-radius: 3px; flex: none; background: var(--surface-2); }
.watch-summary__item strong { color: var(--text); }
.watch-filters { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem; }
.watch-filters__game { display: flex; gap: .5rem; margin: 0; }
.watch-filters__game .field__select { min-width: 220px; }
.chips { display: flex; flex-wrap: wrap; gap: .4rem; }
.chip { display: inline-flex; align-items: center; height: 32px; padding: 0 .8rem; border-radius: 999px; border: 1px solid var(--border); background: var(--surface); color: var(--text-2); font-size: .84rem; font-weight: 500; white-space: nowrap; text-decoration: none; transition: border-color .15s var(--ease), background .15s var(--ease); }
.chip:hover { border-color: var(--border-strong); color: var(--text); text-decoration: none; }
.chip.is-active { background: var(--primary); border-color: var(--primary); color: #fff; }
.watch-day { display: flex; flex-direction: column; gap: .6rem; }
.watch-day__title { margin: .4rem 0 0; font-size: .78rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); }
.moves-feed { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .6rem; }
.move { padding: .9rem 1rem; margin: 0; }
.move__head { display: flex; align-items: center; gap: .85rem; }
.move__capsule { width: 92px; height: 43px; object-fit: cover; border-radius: 4px; flex: none; background: var(--surface-2); }
.move__text { display: flex; flex-direction: column; gap: .3rem; min-width: 0; }
.move__title { color: var(--text); font-weight: 600; line-height: 1.35; overflow-wrap: anywhere; }
.move__title:hover { color: var(--accent); }
.move__meta { display: flex; flex-wrap: wrap; align-items: center; gap: .45rem; font-size: .8rem; color: var(--muted); }
.move__kind { display: inline-flex; align-items: center; height: 20px; padding: 0 .45rem; border-radius: 4px; font-size: .72rem; font-weight: 600; background: var(--surface-2); color: var(--text-2); }
.move__kind--release_date, .move__kind--coming_soon { background: var(--primary-soft); color: var(--primary-soft-fg); }
.move__kind--price, .move__kind--discount { background: var(--success-soft); color: var(--success); }
.move__kind--trailers, .move__kind--header, .move__kind--capsule, .move__kind--screenshots { background: var(--info-soft); color: var(--info); }
.move__kind--tags, .move__kind--name, .move__kind--description { background: var(--warning-soft); color: var(--warning); }
.move__kind--build, .move__kind--patch { background: var(--info-soft); color: var(--info); }
.move__kind--price_region { background: var(--success-soft); color: var(--success); }
.region-moves { list-style: none; margin: .6rem 0 0; padding: 0; display: grid; gap: .35rem; }
.region-moves__item { display: flex; align-items: center; flex-wrap: wrap; gap: .45rem; font-size: .88rem; }
.region-moves__flag { width: 18px; height: 18px; border-radius: 50%; object-fit: cover; box-shadow: 0 0 0 1px var(--border); }
.region-moves__name { min-width: 10rem; font-weight: 550; }
.region-moves__pct { font-variant-numeric: tabular-nums; font-weight: 600; }
.move .diff { margin-top: .75rem; }
.move__note { margin: .4rem 0 0; }
.diff--inline { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; font-size: .92rem; }
.diff__was { color: var(--muted); text-decoration: line-through; text-decoration-color: color-mix(in srgb, var(--muted) 60%, transparent); overflow-wrap: anywhere; }
.diff__arrow { color: var(--muted); }
.diff__now { font-weight: 600; color: var(--text); background: var(--success-soft); padding: .1rem .45rem; border-radius: 4px; overflow-wrap: anywhere; }
.tag--removed { text-decoration: line-through; opacity: .7; }
.feed__title { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem; }
.feed__title a { color: var(--text); }
.feed__title a:hover { color: var(--accent); }
.diff--image .diff__side { padding: .45rem; }
.diff--image img { aspect-ratio: 460 / 215; object-fit: cover; background: var(--surface-2); }

/* Radar */
.page--radar { display: flex; flex-direction: column; gap: 1.25rem; }
.page--radar > * { margin: 0; }
.page--radar .page__header { margin-bottom: 0; }
.radar-method > summary { cursor: pointer; list-style: none; border-bottom: 0; }
.radar-method > summary::-webkit-details-marker { display: none; }
.radar-method[open] > summary { border-bottom: 1px solid var(--border); }
.radar-method > summary::after { content: "+"; color: var(--muted); font-size: 1.1rem; }
.radar-method[open] > summary::after { content: "−"; }

/* Wishlists */
.page--wishlists .stats, .page--wishlists > .card, .page--wishlists .lock { margin-bottom: 1rem; }
.wishlist-help { margin: 0; padding-left: 1.1rem; }
.wishlist-help li + li { margin-top: .25rem; }
.wishlist-file { max-width: 180px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.field__input--file { height: auto; padding: .45rem .55rem; }
.field__input--file::file-selector-button { margin-right: .75rem; border: 1px solid var(--border); background: var(--surface-2); color: var(--text); border-radius: var(--radius-sm); padding: .3rem .7rem; font: inherit; font-size: .85rem; cursor: pointer; }

/* Settings → API */
.page--settings .card--accent { margin-bottom: 1rem; }
.page--settings .lock { margin-bottom: 1rem; }
.api-endpoints td:first-child { white-space: nowrap; }
.api-endpoints td { font-size: .84rem; }

@media (max-width: 900px) {
    .app-main .grid--sidebar { grid-template-columns: minmax(0, 1fr); }
    .page__actions { width: 100%; }
    .page__actions { flex-wrap: wrap; }
}

@media (max-width: 620px) {
    .watch-filters { flex-direction: column; flex-wrap: nowrap; align-items: stretch; }
    .watch-filters__game .field__select { min-width: 0; flex: 1; }
    .chips { flex-wrap: nowrap; overflow-x: auto; margin: 0 -1rem; padding: 0 1rem .2rem; scrollbar-width: none; }
    .chips::-webkit-scrollbar { display: none; }
    .move { padding: .8rem; }
    .move__capsule { width: 72px; height: 34px; }
    .move .diff:not(.diff--inline) { grid-template-columns: minmax(0, 1fr); }
    .page__actions .btn { flex: 1; }
    .api-endpoints td:first-child { white-space: normal; word-break: break-all; }
}

/* Rivals: the "Your games" column drops below the tables on laptop widths,
   so the rival tables keep room for every column. */
@media (max-width: 1440px) {
    .page--rivals .grid--sidebar { grid-template-columns: minmax(0, 1fr); }
}

/* Overview: Steam dates ahead (SteamEvents::upcoming). */
.steam-dates { list-style: none; margin: 0; padding: .25rem 1.25rem 1rem; display: flex; flex-direction: column; }
.steam-dates__item { display: grid; grid-template-columns: 8.2rem minmax(0, 1fr); gap: .75rem; padding: .7rem 0; }
.steam-dates__item + .steam-dates__item { border-top: 1px solid var(--border); }
.steam-dates__when { font-family: var(--font-mono); font-size: .76rem; color: var(--muted); padding-top: .15rem; white-space: nowrap; }
.steam-dates__what { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem .5rem; min-width: 0; font-size: .92rem; }
.steam-dates__what strong { font-weight: 600; }
.steam-dates__deadline { flex-basis: 100%; font-size: .82rem; color: var(--muted); }
.steam-dates__deadline.is-soon { color: var(--accent); font-weight: 600; }
.steam-dates__hint { flex-basis: 100%; }

/* Store check (components/store-check.php): app page and the public tool. */
.tag-gaps { list-style: none; margin: 0; padding: .25rem 1.25rem 1rem; display: flex; flex-direction: column; }
.card__body .tag-gaps { padding: 0; }
.tag-gaps__item { display: flex; flex-direction: column; gap: .4rem; padding: .75rem 0; }
.tag-gaps__item + .tag-gaps__item { border-top: 1px solid var(--border); }
.tag-gaps__head { display: flex; align-items: baseline; justify-content: space-between; gap: .75rem; flex-wrap: wrap; }
.tag-gaps__head strong { font-weight: 600; }
.tag-gaps .bar { width: 100%; }
.price-points .is-own .bar__fill { background: var(--accent); }
.price-points .is-own .tag-gaps__head strong { color: var(--accent); }
.store-check__note { padding: 0 1.25rem 1rem; margin: 0; }
.store-check .lock { margin: 0 1.25rem 1.25rem; }
.store-check__verdict { font-size: 1.02rem; margin: 0; }
.store-check .chips { flex-wrap: wrap; overflow: visible; margin: 0; padding: 0; }
.chip--yes { border-color: color-mix(in srgb, var(--success) 40%, transparent); background: var(--success-soft); color: var(--success); }
.store-check .stats--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
@media (max-width: 620px) {
    .store-check .stats--3 { grid-template-columns: 1fr; }
    .store-check .card__header { flex-wrap: wrap; row-gap: .2rem; }
    .store-check .card__header > span { flex-basis: 100%; }
}
.store-check .card__header { align-items: baseline; }

/* Comparable launches (app/launches.php). */
.page--launches { display: flex; flex-direction: column; gap: 1.25rem; }
.page--launches > * { margin: 0; }
.page--launches .page__header { margin-bottom: 0; }
.launch-outlook__headline { font-size: 1.05rem; margin: 0; }
.launch-outlook .stats--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.launches__lock { margin: 1rem 1.25rem 1.25rem; }
@media (max-width: 620px) {
    .launch-outlook .stats--3 { gap: .5rem; }
    .launch-outlook .stat { padding: .75rem; min-width: 0; }
    .launch-outlook .stat__value { font-size: 1.35rem; }
    .launch-outlook .stat__label { font-size: .64rem; }
    .page--launches .game__name { white-space: normal; }
    .page--launches .card__header { flex-wrap: wrap; row-gap: .2rem; }
    .page--launches .card__header > span { flex-basis: 100%; }
}

/* Give a month, get a month (settings/referrals.php). */
.page--referrals .stats--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.referral-steps h3 { margin: 0; font-size: 1rem; }
.referral-steps .card__body { height: 100%; }
@media (max-width: 620px) { .page--referrals .stats--3 { grid-template-columns: 1fr; } }

/* Radar: "Show off your launch" (LaunchCard). */
.share-card__body { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: 1.25rem; align-items: center; }
.share-card__image { width: 100%; height: auto; border-radius: var(--radius); border: 1px solid var(--border); display: block; }
@media (max-width: 900px) { .share-card__body { grid-template-columns: 1fr; } }
.share-card__badge { border-top: 1px solid var(--border); display: flex; flex-direction: column; gap: .6rem; }
.share-card__badge .badge-embed { grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (max-width: 900px) { .share-card__badge .badge-embed { grid-template-columns: 1fr; } }

/* -- Sales (Steamworks connect) ------------------------------------------- */
.sales-own td { background: var(--primary-soft); }
.sales-note { margin: 0; padding: .75rem 1rem 1rem; }

/* Settings → Steamworks: games on the account to add */
.sw-import__list { list-style: none; margin: 0; padding: 0; display: grid; gap: .6rem; }
.sw-import__item { display: flex; align-items: center; justify-content: space-between; gap: .75rem; }
.sw-import__item .game { min-width: 0; }
.sw-import .card__header form { margin: 0; }
.notice--action { display: flex; align-items: center; justify-content: space-between; gap: .75rem 1rem; flex-wrap: wrap; }

/* Overview: studio page followers */
.studios { list-style: none; margin: 0; padding: 0; }
.studios__row { display: grid; grid-template-columns: 28px minmax(0, 1fr) auto; align-items: center; gap: .65rem; padding: .55rem 1.25rem; }
.studios__row + .studios__row { border-top: 1px solid var(--border); }
.studios__row.is-own { background: var(--primary-soft); }
.studios__avatar { width: 28px; height: 28px; border-radius: 6px; border: 1px solid var(--border); }
.studios__avatar--blank { display: block; background: var(--surface-2); }
.studios__name { display: flex; align-items: center; gap: .4rem; min-width: 0; font-size: .9rem; }
.studios__name a { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--text); }
.studios__num { display: flex; flex-direction: column; align-items: flex-end; line-height: 1.25; font-variant-numeric: tabular-nums; }

/* Store check: prices around the world (components/store-check.php) */
.region-prices { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: .4rem .9rem; }
.region-price { display: grid; grid-template-columns: 20px minmax(0, 1fr) auto auto; align-items: center; gap: .15rem .6rem; padding: .55rem .7rem; border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface); }
.region-price__flag { width: 20px; height: 20px; border-radius: 50%; object-fit: cover; box-shadow: 0 0 0 1px var(--border); }
.region-price__flag--multi { display: grid; place-items: center; background: var(--surface-2); color: var(--muted); }
.region-price__name { font-weight: 550; font-size: .9rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.region-price__own { font-weight: 650; font-variant-numeric: tabular-nums; }
.region-price__typical { grid-column: 2 / 4; }
.region-price__gap { grid-row: 1 / 3; grid-column: 4; align-self: center; padding: .15rem .5rem; border-radius: 999px; background: var(--surface-2); color: var(--text-2); font-size: .78rem; font-weight: 600; font-variant-numeric: tabular-nums; }
.region-price.is-high .region-price__gap { background: var(--warning-soft); color: var(--warning); }
.region-price.is-low .region-price__gap { background: var(--info-soft); color: var(--info); }

/* Suggested rivals: 👍 / 👎 / Watch in one row (RivalFeedback). */
.rival-actions { display: inline-flex; align-items: center; gap: .25rem; }
.rival-actions form { margin: 0; }
.rival-vote { min-width: 34px; padding: 0 .4rem; font-size: .95rem; line-height: 1; filter: grayscale(.6); opacity: .75; }
.rival-vote:hover, .rival-vote.is-on { filter: none; opacity: 1; }
.rival-vote.is-on { background: var(--success-soft); border-color: transparent; }
.rival-feedback-note { display: flex; align-items: center; justify-content: space-between; gap: .75rem; flex-wrap: wrap; }
.rival-feedback-note form { margin: 0; }

/* Rival Watch: a rival's patch notes in a few lines (PatchNotes). */
.patch-gist { margin: .35rem 0 .2rem; padding: .6rem .8rem; border-radius: var(--radius-sm); background: var(--bg-subtle); border: 1px solid var(--border); }
.patch-gist__summary { margin: 0; font-size: .92rem; }
.patch-gist__summary .badge { margin-right: .3rem; vertical-align: 1px; }
.patch-gist__list { margin: .4rem 0 0; padding-left: 1.1rem; font-size: .88rem; color: var(--text-2); }
.patch-gist__list li + li { margin-top: .15rem; }

/* Overview: rising games, events worth joining, ask box. */
.rising { list-style: none; margin: 0; padding: .25rem 1.25rem 1rem; display: grid; gap: .65rem; }
.rising__item { display: grid; gap: .1rem; }
.rising__name { font-weight: 600; }
.rising__gain { font-family: var(--font-mono); font-size: .8rem; color: var(--up); }
.event-picks { margin: 0 1.25rem .5rem; padding: .75rem .9rem; border-radius: var(--radius); background: var(--success-soft); display: grid; gap: .45rem; }
.event-picks__label { font-family: var(--font-mono); font-size: .7rem; letter-spacing: .06em; text-transform: uppercase; color: var(--success); }
.event-picks__item { margin: 0; line-height: 1.4; }
.ask__form { display: grid; gap: .6rem; }
.ask__examples { display: flex; flex-wrap: wrap; gap: .4rem; margin: 0; }
.ask__examples .chip { cursor: pointer; font: inherit; font-size: .8rem; height: 30px; }
.ask__answers { display: grid; gap: .6rem; }
.ask__answers:empty { display: none; }
.ask__item { padding: .85rem 1rem; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg-subtle); }
.ask__item--note { border-style: dashed; }
.ask__item.is-pending { opacity: .7; }
.ask__q { margin: 0 0 .35rem; font-weight: 600; }
.ask__a { margin: 0; color: var(--text-2); line-height: 1.5; }
.ask__links { display: flex; flex-wrap: wrap; gap: .4rem; margin: .6rem 0 0; }

/* Launch forecast (components/forecast.php). */
.forecast__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: .75rem; }
.forecast__cell { display: grid; gap: .15rem; padding: .85rem 1rem; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg-subtle); }
.forecast__label { font-family: var(--font-mono); font-size: .7rem; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); }
.forecast__value { font-size: 1.5rem; font-weight: 650; letter-spacing: -.02em; }
.forecast__value small { font-size: .85rem; font-weight: 500; color: var(--text-2); }
.forecast__note { margin: .75rem 0 0; }

/* Store check: suggested regional price list. */
.price-list { border: 1px solid var(--border); border-radius: var(--radius); padding: .75rem 1rem; background: var(--bg-subtle); }
.price-list summary { cursor: pointer; }
.price-list__text { margin: .75rem 0; max-height: 280px; overflow: auto; padding: .75rem; border-radius: var(--radius-sm); background: var(--surface); border: 1px solid var(--border); font-family: var(--font-mono); font-size: .8rem; line-height: 1.6; white-space: pre-wrap; }

/* Onboarding: the quietest weeks right after the game is added. */
.first-look { padding: 1.1rem 1.25rem; display: grid; gap: .35rem; border-color: color-mix(in srgb, var(--success) 35%, var(--border)); background: var(--success-soft); }
.first-look .eyebrow { margin: 0; color: var(--success); }
.first-look__line { margin: 0; font-size: 1.05rem; }
.first-look__week { display: inline-block; margin: .15rem .2rem 0 0; padding: .1rem .55rem; border-radius: 999px; font-family: var(--font-mono); font-size: .85rem; background: var(--heat, var(--surface-2)); color: var(--heat-fg, var(--text)); }
.first-look p.muted { margin: 0; }
