/* Final shared storefront component contract. Route styles define layout; this file owns visual primitives.
 * !important is intentional for invariants because older route styles carry higher selector specificity. */
body.gr-app {
  --gr-surface:#142738; --gr-surface-hover:#183246; --gr-surface-soft:#102332;
  --gr-border:#345269; --gr-border-strong:#5d819a; --gr-muted:#a9bdcc;
  --gr-radius-card:8px; --gr-radius-control:6px; --gr-action-height:38px;
  --gr-action-bg:#173248; --gr-action-hover:#244d67; --gr-action-border:#3d617a;
  --gr-primary:#3789b8; --gr-primary-hover:#55a9d5;
}
.gr-app :is(.gr-surface-card,.gr-game-card,.game-card,.upcoming-card,.gr-update-card,.availability-row,.insight-game-card,.command-card,.source-card,.gr-quick-event,.release-row,.event-row,.community-row) {
  border:1px solid var(--gr-border)!important; border-radius:var(--gr-radius-card)!important; background:var(--gr-surface)!important; box-shadow:none!important;
  transition:border-color 150ms ease,background 150ms ease,transform 150ms ease;
}
.gr-app :is(.gr-surface-card,.gr-game-card,.game-card,.upcoming-card,.gr-update-card,.availability-row,.insight-game-card,.command-card,.source-card,.gr-quick-event,.release-row,.event-row,.community-row):hover {
  border-color:var(--gr-border-strong)!important; background:var(--gr-surface-hover)!important; transform:none!important; box-shadow:none!important;
}
.gr-app :is(.gr-card-art,.game-cover,.upcoming-cover,.gr-update-art,.availability-poster,.insight-game-media) {
  overflow:hidden; border-radius:6px!important; background:#102534;
}
.gr-app :is(.gr-game-card .gr-card-art,.game-card .game-cover,.upcoming-card .game-cover) { aspect-ratio:460/215!important; }
.gr-app :is(.gr-card-art,.game-cover,.upcoming-cover,.gr-update-art,.availability-poster,.insight-game-media) img {
  width:100%; height:100%; object-fit:cover;
}
.gr-app :is(.game-card-body,.upcoming-body,.gr-update-card>div,.insight-game-copy) { min-height:0!important; padding:14px!important; }
.gr-app :is(.game-card-body,.upcoming-body) { gap:9px; }
.gr-app :is(.gr-game-card,.game-card,.upcoming-card,.gr-update-card,.insight-game-card) h3 { font-size:16px!important; line-height:1.3; letter-spacing:-.2px; }
.gr-app .gr-game-card-compact h3 { font-size:14px!important; line-height:1.25!important; }
.gr-app :is(.game-card,.upcoming-card) h3 { margin:0!important; }
.gr-app :is(.gr-filter-bar,.gr-search-form,.gr-browser-form,.gr-search-filters,.gr-daily-calendar) {
  border-color:var(--gr-border)!important; border-radius:var(--gr-radius-card)!important; background:var(--gr-surface-soft)!important; box-shadow:none!important;
}
.gr-app :is(.gr-filter-bar,.gr-search-form,.gr-browser-form,.gr-search-filters,.advanced-filters) :is(input:not([type=hidden]),select) {
  min-height:40px!important; border-radius:var(--gr-radius-control)!important; border-color:var(--gr-border)!important; background:#0d2030!important;
}
.gr-app :is(.gr-badge,.badge,.gr-source-pill,.gr-card-genres>span,.tag-chip) { border-radius:5px!important; }
.gr-app :is(.gr-section-heading,.section-heading) h2 { font-size:20px!important; line-height:1.25!important; letter-spacing:-.25px; }
.gr-app :is(.gr-section-heading,.section-heading) p { color:var(--gr-muted)!important; font-size:12px!important; line-height:1.45; }
.gr-app :is(.gr-section-heading,.section-heading)>a {
  display:inline-flex; align-items:center; gap:6px; min-height:34px; padding:0 9px; border:1px solid transparent;
  border-radius:var(--gr-radius-control); color:#9dd9f5; font-size:12px;
}
.gr-app :is(.gr-section-heading,.section-heading)>a:hover { border-color:var(--gr-action-border); background:var(--gr-action-bg); color:#e7f6ff; }
.gr-app :is(.gr-action,.gr-button,.gr-steam-action,.gr-availability-open,.gr-card-open,.game-action,.primary-button) {
  box-sizing:border-box; display:inline-flex; align-items:center; justify-content:center; gap:6px;
  min-height:var(--gr-action-height)!important; height:var(--gr-action-height)!important; padding:0 12px!important;
  border:1px solid var(--gr-action-border)!important; border-radius:var(--gr-radius-control)!important; background:var(--gr-action-bg)!important;
  color:#d6ecf8!important; font:600 12px/1.1 "Segoe UI",Arial,sans-serif!important; white-space:nowrap; box-shadow:none!important; text-decoration:none;
}
.gr-app :is(.gr-action,.gr-button,.gr-steam-action,.gr-availability-open,.gr-card-open,.game-action,.primary-button):hover {
  border-color:#71a9ca!important; background:var(--gr-action-hover)!important; color:#fff!important;
}
.gr-app :is(.gr-action-primary,.gr-button-primary,.gr-availability-open,.primary-button) {
  border-color:#4fa8d3!important; background:var(--gr-primary)!important; color:#fff!important; font-weight:650!important;
}
.gr-app :is(.gr-action-primary,.gr-button-primary,.gr-availability-open,.primary-button):hover { background:var(--gr-primary-hover)!important; border-color:#70bfe3!important; }
.gr-app :is(.gr-action-icon:not(.action-label-visible),.gr-card-open,.game-action:not(.action-label-visible):not(.game-action-similar)) {
  width:var(--gr-action-height)!important; min-width:var(--gr-action-height)!important; padding:0!important;
}
.gr-app :is(.gr-action,.gr-button,.gr-steam-action,.gr-availability-open,.gr-card-open,.game-action) .gr-icon { width:16px; height:16px; flex:none; }
.gr-app .game-action-label { font-size:11px; font-weight:600; }
.gr-app .game-action.action-label-visible .game-action-label,
.gr-app .game-action.game-action-similar .game-action-label { display:inline; }
.gr-app .game-action.action-label-visible { width:auto!important; min-width:var(--gr-action-height)!important; padding:0 12px!important; }
.gr-app :is(.gr-card-tools,.gr-availability-actions,.detail-actions,.gr-hero-actions,.game-quick-actions) { align-items:center; gap:6px; }
.gr-app .gr-game-card .gr-card-tools .game-quick-actions { flex:0 1 auto; }
.gr-app .gr-game-card .gr-card-tools { display:flex; flex-wrap:wrap; align-items:center; }
.gr-app .gr-card-extra { gap:8px; }
.gr-app .gr-daily-navigation a, .gr-app .gr-daily-picker button { border-radius:var(--gr-radius-control); border-color:var(--gr-action-border); background:var(--gr-action-bg); }
.gr-app .gr-daily-date { border-radius:var(--gr-radius-control); border-color:var(--gr-border); background:#173044; }
.gr-app .gr-daily-date[aria-current] { border-color:#6bb9dc; background:#265b78; }
.gr-app :is(.release-row,.event-row,.community-row,.availability-row) { border-radius:var(--gr-radius-card); background:var(--gr-surface); }
.gr-app :is(.radar-card,.intelligence-card,.review-panel,.insight-card,.review-sample,.intel-score-card,.intel-stat-card,.intel-chart-card,.expectation-reasons) { border-color:var(--gr-border)!important; border-radius:var(--gr-radius-card)!important; box-shadow:none!important; }
.gr-app :is(.game-mention-poster,.availability-poster) { border-radius:6px; }
@media (max-width:760px) {
  .gr-app :is(.gr-action,.gr-button,.gr-steam-action,.gr-availability-open,.gr-card-open,.game-action,.primary-button) { min-height:44px; height:44px; }
  .gr-app :is(.gr-action-icon:not(.action-label-visible),.gr-card-open,.game-action:not(.action-label-visible):not(.game-action-similar)) { width:44px!important; min-width:44px!important; }
}
