/* Review surfaces: one editorial vocabulary, scoped away from game cases.
   Keep .badge/.value, row IDs and data attributes intact for editing/paging. */
/* Written content must fit beside scores, including in the shared profile feed. */
html body .gg-press :is(.feed-details, .feed-body, .feed-review-text) { min-width: 0; }
html body .gg-press .feed-details { flex: 1; }
html body :is(.gg-press .feed-review-text, .gg-article .review-prose) { overflow-wrap: anywhere; }
/* Rendered markup already contains its line breaks. Blank editor paragraphs
   contribute one blank line, without another paragraph margin. */
html body .gg-article .review-prose p { white-space: normal; margin: 0 0 .5em; }
html body .gg-article .review-prose p:has(> br:only-child) { margin: 0; line-height: 1; }
html body :is(.gg-press .feed-review-text, .gg-article .review-prose, .profile-page .review-text) pre {
  box-sizing: border-box; max-width: 100%; overflow-x: auto;
  white-space: pre; font-size: 14px; line-height: 1.5;
}
/* A grades-only article has no prose column to reserve beside its grade box. */
html body .gg-article .gg-acols.is-grades-only { grid-template-columns: minmax(0, 1fr); gap: 14px; }
html body .gg-article .is-grades-only .gg-gradebox { position: static; min-width: 0; }
@media (min-width: 901px) {
  html body .gg-article .is-grades-only .gg-gradebox {
    display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); gap: 0 24px;
    float: none; width: 100%; margin: 0;
  }
  html body .is-grades-only :is(.gg-gb-head, .gg-gb-comm, .gg-gb-attrs, .gg-gb-actions) { grid-column: 1 / -1; }
  html body .is-grades-only .gg-gb-row { align-self: stretch; align-items: center; }
  html body .is-grades-only .gg-gb-attrs { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 24px; }
}
html body.reviews-page :is(.gg-reviews-status, .gg-reviews-empty, .full-list)[hidden],
html body.reviews-page .gg-reviews-empty [hidden] { display: none !important; }
.gg-reviews-status { padding: 16px 24px; text-align: center; color: var(--gg-room-tx-2); }
.gg-reviews-status .btn { margin-left: 8px; }
.gg-reviews-empty { padding: 32px; text-align: center; background: var(--gg-paper); color: var(--gg-ink); border: 1px solid var(--gg-rule); border-radius: 4px; }
.gg-reviews-empty .btn { margin: 4px; }
html body .gg-review-entry,
html body.reviews-page .mobile-card {
  box-sizing: border-box;
  min-width: 0;
  background: var(--gg-paper);
  color: var(--gg-ink);
  border: 1px solid var(--gg-rule);
  border-radius: 8px;
}
html body .gg-review-entry .feed-header {
  align-items: start;
  padding-bottom: 0;
  margin-bottom: 0;
  border-bottom: 0;
}
html body .gg-review-entry :is(.feed-header-left, .feed-header-meta, .feed-details, .feed-body) { min-width: 0; }
html body .gg-review-entry .feed-username {
  max-width: none;
  white-space: normal;
  overflow-wrap: anywhere;
}
html body .gg-review-entry .feed-time { flex: none; letter-spacing: 0; }
html body .gg-review-entry .feed-name-row { gap: 4px 10px; }
html body .gg-review-entry .feed-scores,
html body.reviews-page .mobile-card-scores {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0;
  padding: 12px 0;
  margin: 0;
  border-block: 1px solid var(--gg-rule);
  background: none;
  border-radius: 0;
}
html body .gg-review-entry .feed-scores .score,
html body.reviews-page .mobile-card-score {
  min-width: 0;
  display: grid;
  justify-items: center;
  align-content: start;
  gap: 8px;
  padding: 0 4px;
  background: none;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}
html body .gg-review-entry .feed-scores .score + .score,
html body.reviews-page .mobile-card-score + .mobile-card-score { border-left: 1px solid var(--gg-rule); }
html body .gg-review-entry .feed-scores .score .label,
html body .gg-review-entry .feed-scores .score .label.overall-label,
html body.reviews-page .mobile-card-score .label {
  color: var(--gg-ink-2);
  font: 700 11px/1.3 var(--gg-font-case);
  letter-spacing: .02em !important;
  text-transform: uppercase;
}
html body .gg-review-entry .feed-scores .score .gg-pscore,
html body.reviews-page .mobile-card-score .value { font: 800 26px/1 var(--gg-font-case); }
html body.reviews-page .mobile-card-score .value,
html body.reviews-page :is(.full-list, .mobile-list-table) .badge.score-badge {
  color: hsl(var(--review-hue, 120), 60%, 34%) !important;
  -webkit-text-fill-color: currentColor !important;
  background: none !important;
  box-shadow: none;
}
html body.reviews-page .mobile-card-score.is-unrated .value,
html body.reviews-page :is(.full-list, .mobile-list-table) .badge.empty { color: var(--gg-ink-3) !important; -webkit-text-fill-color: currentColor !important; }
html body.reviews-page .mobile-card-score.is-perfect .value,
html body.reviews-page :is(.full-list, .mobile-list-table) .badge.gold-glow {
  color: var(--gg-ink) !important;
  background: var(--gg-paper-2) !important;
  border-bottom: 2px solid var(--gg-gold-strong);
  border-radius: 4px;
}
html body.reviews-page .mobile-card-score-bar { width: 34px; height: 3px; margin: 0; background: var(--gg-rule); }
html body.reviews-page .mobile-card-score[data-score-key="enjoyment_score"] .label { color: var(--gg-ink); }
html body.reviews-page .mobile-card-score:not(.is-perfect) .mobile-card-score-bar > i { background: hsl(var(--review-hue, 120), 60%, 34%) !important; }
.gg-review-attributes { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 20px; margin: 0; }
.gg-review-attributes > div { min-width: 0; }
.gg-review-attributes dt { margin: 0 0 5px; color: var(--gg-ink-2); font: 700 10px/1.4 var(--gg-font-case); letter-spacing: .06em; text-transform: uppercase; }
.gg-review-attributes dd { margin: 0; color: var(--gg-ink); font: 600 13px/1.4 var(--gg-font-case); overflow-wrap: anywhere; }
.gg-review-attributes .attr-toggle { max-width: 100%; }
.gg-review-attributes :is(.attr-word, .scale-word) { color: var(--gg-ink); }
html body .gg-review-attributes .attr-scale i { background: var(--gg-rule); }
html body .gg-review-attributes .attr-scale i.on { background: var(--gg-ink); }
html body .gg-review-entry .feed-content,
html body .gg-review-entry .feed-details { gap: 18px; }
html body .gg-review-entry .feed-body { font-size: 17px; line-height: 1.6; }
html body .gg-review-entry .feed-review-text { overflow-wrap: anywhere; }
html body .gg-review-entry .feed-review-text :is(p, ul, ol, blockquote) { margin: 0 0 12px; }
html body .gg-review-entry .feed-review-text > :last-child { margin-bottom: 0; }
html body .gg-review-entry .feed-review-text img { max-width: 100%; height: auto; }
html body .gg-review-entry .feed-review-text pre { max-width: 100%; overflow-x: auto; }
html body .gg-review-entry .feed-review-text.is-collapsed { -webkit-line-clamp: 4; }
html body .gg-review-entry .feed-actions { gap: 8px; padding-top: 14px; margin-top: 18px; }
html body .gg-review-entry :is(.share-btn, .view-link) { padding: 0 12px; border-radius: 6px; }
html body .gg-review-entry .view-link { margin-left: auto; border: 1px solid var(--gg-rule); letter-spacing: 0; text-transform: none; font-size: 13px; }
html body .gg-review-entry .feed-video-label { overflow-wrap: anywhere; font-size: 11px; }
.gg-review-excerpt { margin: 0; color: var(--gg-ink); font: 400 16px/1.55 var(--gg-font-serif); overflow-wrap: anywhere; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; overflow: hidden; }
.gg-review-excerpt.is-compact { -webkit-line-clamp: 2; font-size: 13px; }

/* Dense desktop chart and phone list keep their original interaction hooks. */
html body.reviews-page :is(.full-list, .mobile-list-table) { color: var(--gg-ink); border-spacing: 0 8px; }
html body.reviews-page :is(.full-list, .mobile-list-table) :is(th, td) { background: var(--gg-paper); color: var(--gg-ink); border-color: var(--gg-rule); }
html body.reviews-page .full-list thead tr:first-child { display: none; }
html body.reviews-page .full-list thead th { border-bottom: 1px solid var(--gg-rule); color: var(--gg-ink-2); }
html body.reviews-page .full-list thead tr.subheaders th.sub { color: var(--gg-ink-2); }
html body.reviews-page .full-list td { padding-block: 18px; }
html body.reviews-page .full-list .gamename { white-space: normal; font: 700 20px/1.25 var(--gg-font-serif); min-width: 200px; }
html body.reviews-page .full-list .gamename > a { display: inline; }
html body.reviews-page .full-list .gamename .gg-review-excerpt { margin-top: 8px; font-weight: 400; }
html body.reviews-page .full-list .scorecell .badge { padding: 10px 4px; min-width: 44px; background: none !important; }
html body.reviews-page .full-list .badge.active-sort { transform: none; filter: none; outline: 1px solid var(--gg-rule); border-radius: 4px; }
html body.reviews-page .full-list .rank-display { color: var(--gg-ink-2); }
html body.reviews-page :is(.full-list, .mobile-list-table) .badge::before { display: none; }
html body.reviews-page .full-list .scorecell { border-left: 0; }
html body.reviews-page .full-list :is(.rank, .playtimecol) { color: var(--gg-ink-2); }
html body.reviews-page .full-list .attributes-col { min-width: 180px !important; }
html body.reviews-page .full-list .gg-review-attributes { gap: 8px 12px; }
html body.reviews-page .genre-tag { background: var(--gg-paper-2); color: var(--gg-ink-2); border: 1px solid var(--gg-rule); border-radius: 4px; font-size: 11px; }
html body.reviews-page :is(.action-buttons .btn, .mobile-actions .btn, .rank-move, .mobile-rank-btn, .mobile-rank-move) { background: var(--gg-paper-2); color: var(--gg-ink); border: 1px solid var(--gg-rule); border-radius: 6px; box-shadow: none; }
html body.reviews-page :is(.action-buttons .btn.danger, .mobile-actions .btn.danger) { color: var(--gg-ink-danger); }
html body.reviews-page .full-list .gamename-platform { color: var(--gg-ink-2); }
html body.reviews-page .mobile-list-table .mobile-name a { color: var(--gg-ink); white-space: normal; font: 700 15px/1.25 var(--gg-font-serif); }
html body.reviews-page .gg-review-list-hours { color: var(--gg-ink-2); font: 500 11px/1.4 var(--gg-font-case); margin-top: 4px; }
html body.reviews-page .mobile-score-badge { background: var(--gg-paper-2) !important; color: var(--gg-ink) !important; }
html body.reviews-page .mobile-list-table .badge { min-width: 0; border: 0; border-radius: 0; padding: 6px 2px; }
html body.reviews-page .mobile-list-table .badge.empty { background: none !important; }

@media (max-width: 768px) {
  /* An overflow-x:auto wrapper also becomes the vertical sticky container.
     On phones that pushed the list heading over its first review. */
  html body.reviews-page .table-wrap { overflow: visible; }
  html body.reviews-page .mobile-card-hero-link { display: grid; grid-template-columns: 112px minmax(0, 1fr); grid-template-rows: auto auto; gap: 8px 14px; padding: 16px; align-items: center; }
  html body.reviews-page .mobile-card-hero-link :is(img, .mobile-card-hero-fallback) { width: 112px; height: 56px; grid-row: 1 / 3; border-radius: 4px; object-fit: cover; }
  html body.reviews-page .mobile-card-hero-scrim { display: none; }
  html body.reviews-page .mobile-card-hero-titles { position: static; grid-column: 2; padding: 0 !important; background: none; min-width: 0; }
  html body.reviews-page .mobile-card-title { margin: 0; font: 700 22px/1.15 var(--gg-font-serif); color: var(--gg-ink); text-shadow: none; overflow-wrap: anywhere; }
  html body.reviews-page .mobile-card-hero-aside { position: static; grid-column: 2; padding: 0; color: var(--gg-ink-2); }
  html body.reviews-page .mobile-card-hero-meta { color: var(--gg-ink-2); font-size: 12px; text-shadow: none; }
  html body.reviews-page .mobile-card-hero-meta :is(.pf-icon, .hero-hours) { color: var(--gg-ink-2); }
  html body.reviews-page .mobile-card-hero-meta .pf-row-item { filter: none; box-shadow: none; }
  html body.reviews-page .mobile-card-hero-meta .hero-hours { text-shadow: none; }
  html body.reviews-page .mobile-card-rank-controls { position: static; display: flex; gap: 6px; padding: 10px 16px 0; }
  html body.reviews-page .gg-review-card-byline { margin-right: auto; color: var(--gg-ink-2); font: 700 11px/1.3 var(--gg-font-case); letter-spacing: .04em; text-transform: uppercase; overflow-wrap: anywhere; }
  html body.reviews-page .mobile-card-rank-controls :is(.mobile-rank-btn, .mobile-rank-move) { min-height: 36px; min-width: 36px; }
  html body.reviews-page .mobile-card-rank-controls .mobile-rank-btn::before { color: var(--gg-ink-2); }
  html body.reviews-page .mobile-card-body { padding: 0 16px 16px; gap: 16px; }
  html body.reviews-page .mobile-card-actions { margin: 0; padding-top: 14px; border-top: 1px solid var(--gg-rule); }
  html body.reviews-page .mobile-card-actions .btn { background: none; color: var(--gg-ink); border: 1px solid var(--gg-rule); border-radius: 6px; box-shadow: none; }
  html body.reviews-page .mobile-card-actions .btn.primary { color: var(--gg-press-accent); }
  html body.reviews-page .mobile-card-actions .btn.danger { color: var(--gg-ink-danger); }
  html body.reviews-page .mobile-genre { color: var(--gg-ink-2); background: none; border: 1px solid var(--gg-rule); border-radius: 4px; }
  html body.reviews-page .mobile-list-table th { font-size: 10px; letter-spacing: 0; }
  html body.reviews-page .mobile-list-table th.mobile-score { font-size: 9px; overflow: visible; text-overflow: clip; }
  html body.reviews-page .mobile-list-table .mobile-rank { width: 42px; }
  html body.reviews-page .mobile-list-table .mobile-cover { width: 52px; }
  html body.reviews-page .mobile-list-table .mobile-score { width: 58px; }
  html body.reviews-page .mobile-list-table .mobile-actions { display: table-cell; width: 44px; text-align: center; vertical-align: middle; }
  html body.reviews-page .mobile-list-table .mobile-actions :is(form, .btn) { margin: 3px auto; }
  html body.reviews-page .mobile-list-table .mobile-actions form { display: block !important; }
  html body.reviews-page .mobile-list-table .mobile-name a { display: block; overflow: visible; max-height: none; -webkit-line-clamp: unset; overflow-wrap: anywhere; }
  html body.reviews-page .mobile-list-table .mobile-rank-move { min-width: 32px; min-height: 32px; width: 32px; height: 32px; padding: 0; }
  html body.reviews-page .mobile-list-table .mobile-cover-img { width: 46px; height: 64px; border-radius: 4px; }
}
@media (max-width: 480px) {
  html body .gg-review-entry .feed-header { flex-wrap: wrap; gap: 8px; }
  html body .gg-review-entry .feed-header-left { flex-basis: 100%; }
  html body .gg-review-entry .feed-time { margin-left: 52px; white-space: normal; }
  html body .gg-review-entry .view-link { margin-left: 0; flex: 1; justify-content: center; }
  html body .gg-review-entry .feed-scores .score .label { font-size: 10px !important; }
  html body .gg-review-entry .feed-scores .score .label.overall-label { font-size: 10px !important; }
}
.gg-desktop-review-views { display: none; }
@media (min-width: 769px) {
  html body.reviews-page #reviewsPageHeader { display: flex; flex-direction: row; align-items: center; justify-content: space-between; gap: 24px; }
  html body.reviews-page #reviewsPageHeader .gg-phead { width: auto; flex: 1; }
  .gg-desktop-review-views { display: flex; gap: 4px; padding: 4px; border: 1px solid var(--gg-rule); border-radius: 6px; background: var(--gg-paper); flex: none; }
  .gg-desktop-review-views button { padding: 9px 16px; background: none; color: var(--gg-ink-2); border: 0; border-radius: 4px; font: 700 13px var(--gg-font-case); cursor: pointer; }
  .gg-desktop-review-views button[aria-pressed="true"] { color: var(--gg-ink); background: var(--gg-paper-2); box-shadow: inset 0 0 0 1px var(--gg-rule); }
  .gg-desktop-review-views button:focus-visible { outline: 2px solid var(--gg-press-accent); outline-offset: 2px; }
  html body.reviews-page .full-list.is-desktop-list { display: block; width: 100%; min-width: 0; border-spacing: 0; }
  /* Keep the table's headings available to assistive technology. Sorting is
     also available from the shared control bar above the editorial list. */
  html body.reviews-page .full-list.is-desktop-list thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
  html body.reviews-page .full-list.is-desktop-list tbody { display: grid; gap: 10px; }
  html body.reviews-page .full-list.is-desktop-list tbody > tr {
    display: grid; grid-template-columns: 26px 112px minmax(118px, 1fr) repeat(4, minmax(58px, 76px)) 32px;
    grid-template-rows: auto auto auto; gap: 8px 8px; align-items: start;
    padding: 14px; background: var(--gg-paper); color: var(--gg-ink); border: 1px solid var(--gg-rule); border-radius: 4px;
  }
  html body.reviews-page .full-list.is-desktop-list tbody td { box-sizing: border-box; padding: 0 !important; margin: 0; border: 0; border-radius: 0; background: none; min-width: 0 !important; max-width: none; width: auto; }
  html body.reviews-page .full-list.is-desktop-list .rank { grid-column: 1; grid-row: 1 / 4; align-self: center; }
  html body.reviews-page .full-list.is-desktop-list .covercol { grid-column: 2; grid-row: 1; }
  html body.reviews-page .full-list.is-desktop-list :is(.rowcover, .nocover.small) { width: 112px !important; height: 56px !important; margin: 0 !important; max-height: none; object-fit: cover; border-radius: 3px; }
  html body.reviews-page .full-list.is-desktop-list .gamename { grid-column: 3; grid-row: 1; font-size: 21px; line-height: 1.2; }
  html body.reviews-page .full-list.is-desktop-list .gg-review-excerpt { font: 400 14px/1.45 var(--gg-font-serif); -webkit-line-clamp: 2; margin-top: 7px; }
  html body.reviews-page .full-list.is-desktop-list .playtimecol { grid-column: 2; grid-row: 2; text-align: left; font: 500 12px var(--gg-font-case); }
  html body.reviews-page .full-list.is-desktop-list .playtimecol::after { content: 'h played'; color: var(--gg-ink-2); font-size: 10px; margin-left: 3px; }
  html body.reviews-page .full-list.is-desktop-list td[id^="pv-"] { grid-column: 2; grid-row: 3; text-align: left !important; font: 500 12px var(--gg-font-case); }
  html body.reviews-page .full-list.is-desktop-list td[id^="pv-"] { color: var(--gg-ink-2); }
  html body.reviews-page .full-list.is-desktop-list .scorecell { grid-row: 1; text-align: center; align-self: start; margin-top: 2px; border-left: 1px solid var(--gg-rule); padding-left: 7px !important; }
  html body.reviews-page .full-list.is-desktop-list .scorecell::before { content: attr(data-score-label); display: block; color: var(--gg-ink-2); font: 700 10px/1.4 var(--gg-font-case); text-transform: uppercase; margin-bottom: 6px; letter-spacing: .02em; }
  html body.reviews-page .full-list.is-desktop-list .scorecell[data-score-key="enjoyment_score"] { grid-column: 4; }
  html body.reviews-page .full-list.is-desktop-list .scorecell[data-score-key="gameplay_score"] { grid-column: 5; }
  html body.reviews-page .full-list.is-desktop-list .scorecell[data-score-key="music_score"] { grid-column: 6; }
  html body.reviews-page .full-list.is-desktop-list .scorecell[data-score-key="narrative_score"] { grid-column: 7; }
  html body.reviews-page .full-list.is-desktop-list .scorecell .badge { font: 800 26px/1 var(--gg-font-case); width: auto; height: auto; min-width: 0; min-height: 0; max-width: none; max-height: none; padding: 4px 0; border: 0; border-radius: 0; outline: 0; box-shadow: none; }
  html body.reviews-page .full-list.is-desktop-list .scorecell .badge.empty { background: none !important; }
  html body.reviews-page .full-list.is-desktop-list .scorecell[data-score-key="enjoyment_score"]::before { color: var(--gg-ink); }
  html body.reviews-page .full-list.is-desktop-list .scorecell:has(.gold-glow)::before { color: var(--gg-gold-ink, #896510); }
  html body.reviews-page .full-list.is-desktop-list .attributes-col { grid-column: 3 / 8; grid-row: 2; padding-top: 8px !important; border-top: 1px solid var(--gg-rule); }
  html body.reviews-page .full-list.is-desktop-list .gg-review-attributes { display: flex; flex-wrap: wrap; gap: 5px 16px; }
  html body.reviews-page .full-list.is-desktop-list .gg-review-attributes > div { display: flex; align-items: baseline; gap: 5px; }
  html body.reviews-page .full-list.is-desktop-list .gg-review-attributes dt { margin: 0; font-size: 10px; letter-spacing: .02em; }
  html body.reviews-page .full-list.is-desktop-list .gg-review-attributes dd { font-size: 11px; font-weight: 500; }
  html body.reviews-page .full-list.is-desktop-list .genre-tag { padding: 0; border: 0; background: none; font-size: 11px; }
  html body.reviews-page .full-list.is-desktop-list .genre-tag + .genre-tag::before { content: '·'; margin-right: 5px; color: var(--gg-ink-3); }
  html body.reviews-page .full-list.is-desktop-list .action-buttons { gap: 5px; }
  html body.reviews-page .full-list.is-desktop-list .action-buttons .btn { width: 30px; height: 30px; padding: 0; background: none; }
  html body.reviews-page .full-list.is-desktop-list .action-buttons .btn:hover { background: var(--gg-paper-2); }
  html body.reviews-page .full-list.is-desktop-list .rank-move { min-width: 26px; min-height: 24px; }
  html body.reviews-page .full-list.is-desktop-list .genrescol { grid-column: 3; grid-row: 3; align-self: end; }
  html body.reviews-page .full-list.is-desktop-list td:last-child { grid-column: 8; grid-row: 1 / 4; align-self: center; }
  html body.reviews-page .full-list.is-desktop-list .inline-score-input { max-width: 100%; height: 36px !important; width: 52px !important; background: var(--gg-paper-2) !important; color: var(--gg-ink) !important; border: 1px solid var(--gg-rule) !important; border-radius: 3px !important; }
}
html[data-paper="carbon"] body.reviews-page .mobile-card-score .value,
html[data-paper="carbon"] body.reviews-page :is(.full-list, .mobile-list-table) .badge.score-badge { color: hsl(var(--review-hue, 120), 55%, 65%) !important; }
html[data-paper="carbon"] body.reviews-page .mobile-card-score:not(.is-perfect) .mobile-card-score-bar > i { background: hsl(var(--review-hue, 120), 55%, 65%) !important; }
html[data-paper="carbon"] body.reviews-page .mobile-card-score.is-unrated .value { color: var(--gg-ink-3) !important; }
html[data-paper="carbon"] body.reviews-page .mobile-card-score.is-perfect .value,
html[data-paper="carbon"] body.reviews-page :is(.full-list, .mobile-list-table) .badge.gold-glow { color: var(--gg-ink) !important; }

/* One restrained paper finish for editorial review surfaces. */
html body .feed-item.gg-paper.gg-press.gg-review-entry,
html body.reviews-page .mobile-card,
html body.reviews-page .full-list.is-desktop-list tbody > tr {
  background-color: var(--gg-paper);
  background-image: var(--gg-grain);
  border: 1px solid var(--gg-rule);
  border-radius: 4px;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.22), 0 2px 5px rgba(0,0,0,.12);
}
html body .gg-review-entry::before { content: none; }
html body.reviews-page :is(.full-list:not(.is-desktop-list), .mobile-list-table) td { background-image: var(--gg-grain); }
html body.reviews-page .full-list.is-desktop-list tbody > tr { position: relative; }
html body.reviews-page .full-list.is-desktop-list tbody > tr:has(.gg-review-more[open]) { z-index: 10; }
html body.reviews-page .full-list.is-desktop-list .gamename { overflow: visible; overflow-wrap: anywhere; }
html body.reviews-page .full-list.is-desktop-list .playtimecol[data-hours-present="false"]::after { content: ''; }
html body.reviews-page :is(.rank-move, .mobile-rank-move) { background: none; border-color: transparent; }
html body.reviews-page :is(tr, .mobile-card):not(.has-review-tie) :is(.rank-move, .mobile-rank-move) { display: none; }
html body.reviews-page :is(.rank-move, .mobile-rank-move):disabled { opacity: .3; cursor: default; }
html body.reviews-page .mobile-rank-btn:disabled,
html body.reviews-page .mobile-rank-number { border: 0; background: none; opacity: 1; color: var(--gg-ink-2); font: 700 13px var(--gg-font-case); cursor: default; padding: 6px; }
html body.reviews-page .action-buttons .btn { border-color: transparent; background: none; }
html body.reviews-page .action-buttons .btn:hover { background: var(--gg-paper-2); }
.gg-review-more { position: relative; flex: none; color: var(--gg-ink); }
.gg-review-more summary { list-style: none; width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; cursor: pointer; border: 1px solid transparent; border-radius: 4px; font: 700 13px var(--gg-font-case); letter-spacing: 1px; }
.gg-review-more summary::-webkit-details-marker { display: none; }
.gg-review-more summary:hover, .gg-review-more[open] summary { background: var(--gg-paper-2); border-color: var(--gg-rule); }
.gg-review-more-panel { position: fixed; z-index: 500; width: 184px; padding: 6px; box-sizing: border-box; background: var(--gg-paper-raised); color: var(--gg-ink); border: 1px solid var(--gg-rule); border-radius: 4px; box-shadow: 0 6px 18px rgba(0,0,0,.22); text-align: left; }
html body.reviews-page .gg-review-more-panel :is(a, button) { box-sizing: border-box; display: flex; align-items: center; justify-content: space-between; gap: 8px; width: 100%; height: auto; min-height: 38px; padding: 8px 10px; margin: 0; color: var(--gg-ink); background: none; border: 0; border-radius: 2px; font: 600 13px/1.3 var(--gg-font-case); text-decoration: none; cursor: pointer; }
html body.reviews-page .gg-review-more-panel :is(a, button):hover { background: var(--gg-paper-2); }
html body.reviews-page .gg-review-more-panel form { display: block !important; margin: 0 !important; }
html body.reviews-page .gg-review-more-panel .gg-review-delete { color: var(--gg-ink-danger); border-top: 1px solid var(--gg-rule); }
html body.reviews-page :is(.badge, .value)[role="button"] { cursor: pointer; }
html body.reviews-page :is(.badge, .value)[role="button"]:hover { text-decoration: underline; text-underline-offset: 4px; }
html body :is(.gg-review-more summary, .gg-review-more-panel a, .gg-review-more-panel button, .gg-review-entry button, .gg-review-entry a, .reviews-page .badge[role="button"], .reviews-page .value[role="button"]):focus-visible { outline: 2px solid var(--gg-press-accent); outline-offset: 3px; }
.gg-review-live { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
@media (max-width: 768px) {
  html body.reviews-page .mobile-card-actions { align-items: center; gap: 8px; }
  html body.reviews-page .mobile-card-actions .mobile-card-btn { flex: 1; min-height: 42px; }
  html body.reviews-page .mobile-card-actions .gg-review-more summary { width: 42px; height: 42px; }
  html body.reviews-page .mobile-list-table .mobile-actions .gg-review-more summary { margin: auto; width: 40px; height: 40px; }
  html body .gg-review-entry :is(.share-btn, .view-link) { min-height: 42px; }
  html body .gg-review-entry .feed-actions { align-items: center; }
  html body.reviews-page .mobile-card-rank-controls { align-items: center; }
}

@media (min-width: 769px) and (max-width: 1100px) {
  html body.reviews-page .full-list.is-desktop-list .scorecell::before { font-size: 9px; letter-spacing: 0; }
}
html body.reviews-page .full-list.is-desktop-list .nocover.small { min-height: 0; background: var(--gg-paper-2); color: var(--gg-ink-2); font: 500 11px var(--gg-font-case); }
html body.reviews-page .full-list .scorecell .badge[role="button"]:focus-visible,
html body.reviews-page .mobile-card-score .value[role="button"]:focus-visible { outline: 2px solid var(--gg-press-accent); outline-offset: 3px; }

@media (max-width: 768px) {
  html:has(body.reviews-page) { scroll-padding-bottom: 88px; }
  html body.reviews-page .mobile-card-actions { scroll-margin-bottom: 88px; }
}
html body.reviews-page .hours-cell[role="button"]:focus-visible { outline: 2px solid var(--gg-press-accent); outline-offset: 3px; }

/* Quiet, consistent accents and explicit interaction states. */
html body.reviews-page .mobile-card-score.is-perfect .value,
html body.reviews-page :is(.full-list, .mobile-list-table) .badge.gold-glow {
  color: var(--gg-gold-ink, #896510) !important;
  background: none !important;
  border-bottom: 0;
  border-radius: 0;
}
html[data-paper="carbon"] body.reviews-page .mobile-card-score.is-perfect .value,
html[data-paper="carbon"] body.reviews-page :is(.full-list, .mobile-list-table) .badge.gold-glow { color: var(--gg-gold-strong) !important; }
html[data-paper="carbon"] body.reviews-page .full-list.is-desktop-list .scorecell:has(.gold-glow)::before { color: var(--gg-gold-strong); }
html body.reviews-page [aria-busy="true"] .inline-score-input { opacity: .55; cursor: progress; }
@media (max-width: 768px) {
  html body.reviews-page .mobile-card-hero-link :is(img, .mobile-card-hero-fallback)[hidden] { display: none; }
  html body.reviews-page .mobile-card-hero-fallback { display: flex; align-items: center; justify-content: center; background: var(--gg-paper-2); color: var(--gg-ink-2); font: 500 11px var(--gg-font-case); border: 1px solid var(--gg-rule); box-sizing: border-box; }
  html body.reviews-page .mobile-card-title { text-align: left; }
}
html body.reviews-page :is(.mobile-card-actions .btn, .action-buttons .btn):focus-visible { outline: 2px solid var(--gg-press-accent); outline-offset: 3px; }
html body.reviews-page :is(.mobile-card-actions .btn, .action-buttons .btn, .gg-review-more summary):active { background: var(--gg-paper-2); }

/* A continuous score underline, coloured like its number. */
html body .gg-review-entry .gg-pscore .pb,
html body.reviews-page .mobile-card-score-bar,
html body.reviews-page .gg-score-ruler {
  display: block; width: 40px; height: 2px; margin: 0 auto;
  border-radius: 0; background: var(--gg-rule); overflow: hidden;
  -webkit-mask-image: none; mask-image: none;
}
html body .gg-review-entry .gg-pscore .pb i,
html body.reviews-page .mobile-card-score .mobile-card-score-bar > i,
html body.reviews-page .gg-score-ruler i { display: block; height: 100%; border-radius: 0; }
html body .gg-review-entry .gg-pscore .pb i { background: var(--cp) !important; }
html[data-paper="carbon"] body .gg-review-entry .gg-pscore .pb i { background: var(--c) !important; }
html body.reviews-page .mobile-card-score:not(.is-perfect) .mobile-card-score-bar > i,
html body.reviews-page .gg-score-ruler i { background: hsl(var(--review-hue, 120), 60%, 34%) !important; }
html[data-paper="carbon"] body.reviews-page .mobile-card-score:not(.is-perfect) .mobile-card-score-bar > i,
html[data-paper="carbon"] body.reviews-page .gg-score-ruler i { background: hsl(var(--review-hue, 120), 55%, 65%) !important; }
html body.reviews-page .full-list .gg-score-ruler { margin-top: 5px; }
html body .gg-review-entry .gg-pscore.na .pb,
html body.reviews-page .mobile-card-score.is-unrated .mobile-card-score-bar,
html body.reviews-page :is(.scorecell,.mobile-score):has(.badge.empty) .gg-score-ruler { visibility: hidden; }

/* Polished gold: a tonal sweep through the glyph, with a matching gold foil line.
   Burnished on cream stock; brighter metallic highlights on carbon stock. */
html body { --gg-review-gold: var(--gg-gold-burnished); --gg-review-gold-line: linear-gradient(90deg, #89631b, #d2a340 45%, #ead082 52%, #bd8d2d 70%, #89631b); }
html[data-paper="carbon"] body {
  --gg-review-gold: linear-gradient(180deg, #f8dfa2 0%, #e8bf58 30%, #b58b30 55%, #e5bd5b 75%, #f8dfa2 100%);
  --gg-review-gold-line: linear-gradient(90deg, #b58b30, #edc65f 45%, #f9df98 52%, #e0b44e 70%, #b58b30);
}
html body .gg-review-entry .gg-pscore.p10 b,
html body .gg-article .gg-pscore.p10 b,
html body.reviews-page .mobile-card-score.is-perfect .value,
html body.reviews-page .full-list .scorecell .badge.gold-glow,
html body.reviews-page .mobile-list-table .badge.gold-glow {
  color: var(--gg-gold-strong) !important;
  background: var(--gg-review-gold) !important;
  -webkit-background-clip: text !important; background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  -webkit-text-stroke: .2px rgba(109, 75, 14, .35);
  border-bottom: 0; border-radius: 0; box-shadow: none; text-shadow: none;
}
html[data-paper="carbon"] body .gg-review-entry .gg-pscore.p10 b,
html[data-paper="carbon"] body .gg-article .gg-pscore.p10 b,
html[data-paper="carbon"] body.reviews-page .mobile-card-score.is-perfect .value,
html[data-paper="carbon"] body.reviews-page .full-list .scorecell .badge.gold-glow,
html[data-paper="carbon"] body.reviews-page .mobile-list-table .badge.gold-glow { -webkit-text-stroke: 0; }
html body .gg-review-entry .gg-pscore.p10 .pb i,
html body .gg-article .gg-pscore.p10 .pb i,
html body.reviews-page .mobile-card-score.is-perfect .mobile-card-score-bar > i,
html body.reviews-page :is(.scorecell,.mobile-score):has(.gold-glow) .gg-score-ruler i { background: var(--gg-review-gold-line) !important; }

/* Tied reviews behave like movable editorial clippings. */
.gg-review-grip { display: block; font: 20px/16px var(--gg-font-case); color: var(--gg-ink-2); cursor: grab; user-select: none; }
.gg-review-grip[hidden], .gg-tie-hint[hidden] { display: none; }
.gg-tie-hint { margin-top: 8px; color: var(--gg-room-tx-3); font: 500 12px/1.4 var(--gg-font-case); }
html body.reviews-page .full-list.is-desktop-list tr.gg-tie-peer { outline: 1px dashed var(--gg-rule); outline-offset: 2px; }
html body.reviews-page .full-list tr.gg-review-dragging { opacity: .45; cursor: grabbing; }
html body.reviews-page .full-list tbody > tr.gg-drop-before { box-shadow: 0 -3px 0 var(--gg-press-accent); }
html body.reviews-page .full-list tbody > tr.gg-drop-after { box-shadow: 0 3px 0 var(--gg-press-accent); }
@media (max-width: 768px) { .gg-tie-hint { display: none; } }

html body.reviews-page #desktopReviewsBody[aria-busy="true"] .gg-review-grip { cursor: progress; opacity: .5; }
html[data-paper="carbon"] body .gg-review-entry .gg-pscore.p10 .pb i,
html[data-paper="carbon"] body.reviews-page .mobile-card-score.is-perfect .mobile-card-score-bar > i,
html[data-paper="carbon"] body.reviews-page :is(.scorecell,.mobile-score):has(.gold-glow) .gg-score-ruler i { background: var(--gg-review-gold-line) !important; }
/* Rank is a margin number; tie controls form one compact rail beside the art. */
@media (min-width: 769px) {
  html body.reviews-page .full-list.is-desktop-list tbody > tr { grid-template-columns: 44px 112px minmax(100px, 1fr) repeat(4, minmax(58px, 76px)) 32px; }
  html body.reviews-page .full-list.is-desktop-list .rank { grid-row: 1; align-self: start; min-height: 56px; display: flex; align-items: center; justify-content: center; }
  html body.reviews-page .full-list.is-desktop-list .rank-controls { display: grid; grid-template-columns: 16px 24px; grid-template-rows: 22px 12px 22px; gap: 0 4px; width: 44px; margin: 0; padding: 0; }
  html body.reviews-page .full-list.is-desktop-list .rank-display { grid-column: 1; grid-row: 1 / 4; align-self: center; width: auto; min-width: 0; margin: 0; font: 700 15px/1 var(--gg-font-case); }
  html body.reviews-page .full-list.is-desktop-list .gg-review-grip { grid-column: 2; grid-row: 2; justify-self: center; font-size: 17px; line-height: 12px; }
  html body.reviews-page .full-list.is-desktop-list .rank .rank-move { grid-column: 2; min-width: 24px; width: 24px; min-height: 22px; height: 22px; padding: 0; border: 0; background: none; border-radius: 3px; font-size: 9px; }
  html body.reviews-page .full-list.is-desktop-list .rank-move.up { grid-row: 1; }
  html body.reviews-page .full-list.is-desktop-list .rank-move.down { grid-row: 3; }
  html body.reviews-page .full-list.is-desktop-list .rank .rank-move:not(:disabled):hover { background: var(--gg-paper-2); }
  html body.reviews-page .full-list.is-desktop-list .rank .rank-move:focus-visible { outline: 2px solid var(--gg-press-accent); outline-offset: 1px; }
}
/* Artwork keeps 2:1 while matching the rendered score block height. */
@media (min-width: 769px) {
  html body.reviews-page .full-list.is-desktop-list tbody > tr { grid-template-columns: 44px var(--gg-review-art-w, 112px) minmax(100px, 1fr) repeat(4, minmax(58px, 76px)) 32px; }
  html body.reviews-page .full-list.is-desktop-list :is(.rowcover, .nocover.small) { width: var(--gg-review-art-w, 112px) !important; height: var(--gg-review-art-h, 56px) !important; box-sizing: border-box; }
  html body.reviews-page .full-list.is-desktop-list .rank { min-height: var(--gg-review-art-h, 56px); }
  html body.reviews-page .full-list.is-desktop-list .scorecell { align-self: stretch; display: flex; flex-direction: column; }
  html body.reviews-page .full-list.is-desktop-list .scorecell .badge { flex: none; }
  html body.reviews-page .full-list.is-desktop-list .scorecell .gg-score-ruler { margin-top: auto; flex-shrink: 0; }
}
@media (max-width: 768px) {
  html body.reviews-page .mobile-card-hero-link { grid-template-columns: var(--gg-review-art-w, 168px) minmax(0, 1fr); grid-template-rows: auto auto; gap: 8px 14px; padding: 16px; }
  html body.reviews-page .mobile-card-hero-link :is(img, .mobile-card-hero-fallback) { grid-column: 1; grid-row: 1 / 3; width: var(--gg-review-art-w, 168px); height: var(--gg-review-art-h, 84px); box-sizing: border-box; }
  html body.reviews-page .mobile-card-hero-titles { grid-column: 2; grid-row: 1; }
  html body.reviews-page .mobile-card-hero-aside { grid-column: 2; grid-row: 2; }
}
@media (max-width: 360px) {
  html body.reviews-page .mobile-card-hero-link { grid-template-columns: minmax(0, 1fr) auto; gap: 12px 10px; }
  html body.reviews-page .mobile-card-hero-link :is(img, .mobile-card-hero-fallback) { grid-column: 1 / -1; grid-row: 1; }
  html body.reviews-page .mobile-card-hero-titles { grid-column: 1; grid-row: 2; }
  html body.reviews-page .mobile-card-hero-aside { grid-column: 2; grid-row: 2; align-self: start; padding-top: 4px; }
}


/* The game page's Daily Grade: title, grades, then one compact attribute row. */
html body .gg-press-section .gg-review-entry :is(.feed-content, .feed-details) { gap: 12px; }
html body .gg-press-section .gg-review-entry .feed-header { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; }
html body .gg-press-section .gg-review-entry .feed-time { margin-left: 0; align-self: start; }
html body .gg-press-section .gg-daily-review-title { margin: 6px 0 0; color: var(--gg-ink); font: 650 clamp(20px, 2.2vw, 26px)/1.2 var(--gg-font-serif); overflow-wrap: anywhere; }
.gg-daily-review-title a { color: inherit; text-decoration: none; }
.gg-daily-review-title a:hover { color: var(--gg-press-accent); }
.gg-daily-review-title a:focus-visible { outline: 2px solid var(--gg-press-accent); outline-offset: 3px; }
html body .gg-press-section .gg-review-entry .feed-actions { margin-top: 14px; padding-top: 12px; }
/* Public reviews share section heights within each desktop pair, even when
   one has no prose or attributes. Expanded text grows only its own pair. */
@media (min-width: 901px) {
  html body .gg-press-section .gg-press-list { grid-template-columns: repeat(auto-fit, minmax(min(100%, 360px), 1fr)); }
  html body .gg-press-section .gg-review-entry { display: flex; flex-direction: column; min-width: 0; }
  html body .gg-press-section .gg-review-entry .feed-actions { margin-top: auto; }
}
@supports (grid-template-rows: subgrid) {
  @media (min-width: 901px) {
    html body .gg-press-section .gg-review-entry {
      display: grid; grid-row: span 6; grid-template-rows: subgrid;
      grid-template-columns: minmax(0, 1fr); row-gap: 12px;
    }
    html body .gg-press-section .gg-review-entry .feed-header { grid-row: 1; }
    html body .gg-press-section .gg-review-entry :is(.feed-content, .feed-details) {
      display: grid; grid-template-rows: subgrid; grid-template-columns: minmax(0, 1fr);
      row-gap: 12px;
    }
    html body .gg-press-section .gg-review-entry .feed-content { grid-row: 2 / 6; }
    html body .gg-press-section .gg-review-entry .feed-details { grid-row: 1 / -1; }
    html body .gg-press-section .gg-daily-review-title { grid-row: 1; margin: 0; }
    html body .gg-press-section .gg-review-entry .feed-scores { grid-row: 2; }
    html body .gg-press-section .gg-review-entry .gg-review-attributes { grid-row: 3; }
    html body .gg-press-section .gg-review-entry .feed-body { grid-row: 4; }
    html body .gg-press-section .gg-review-entry .feed-actions { grid-row: 6; margin-top: 0; align-self: end; }
  }
}
.gg-press-section#reviews { scroll-margin-top: calc(var(--header-h, 62px) + 76px); }
.gg-reviews-jump { flex: none; white-space: nowrap; }
.gg-press-section .gg-review-attributes { gap: 12px 0; }
.gg-press-section .gg-review-attributes > div { padding: 0 8px; text-align: center; }
@media (min-width: 769px) {
  .gg-press-section .gg-review-attributes { grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); }
}
@media (max-width: 768px) {
  .gg-press-section .gg-review-attributes > div:last-child:nth-child(odd) { grid-column: 1 / -1; }
}


/* Snippets share journal content and editing hooks with List and Table.
   Every card is the same eight rows, and subgrid lines each one up across
   the cards beside it, so a card with no write-up keeps the same shape as
   one with a long review.

     1 rank bar | played · PV     2 art     3 title     4 scores
     5 attributes (centred)       6 writing (3 lines)
     7 tie note (takes the slack) 8 menu | links */
@media (min-width: 769px) {
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid tbody {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr));
    gap: 16px; align-items: stretch;
  }
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid tbody > tr {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    grid-template-rows: auto auto auto auto auto auto 1fr auto;
    gap: 0 8px; padding: 16px; min-width: 0;
  }

  /* The details cell dissolves: its played line joins the top of the card,
     its attributes sit under the scores and its links close the card. */
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid td.gg-journal-footer-cell,
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid .gg-journal-footer { display: contents; }

  /* 1. Rank bar on the left, played and value on the right of the same line.
     Both fill the row and align to opposite edges; the meta wraps to two
     right-aligned lines before it can reach the arrows on a narrow card. */
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid .rank { grid-column: 1 / -1; grid-row: 1; justify-self: start; align-self: center; min-height: 32px; }
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid .rank-controls { flex-direction: row; justify-content: start; align-items: center; gap: 6px; width: auto; }
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid .rank .rank-move {
    width: 30px; height: 30px; min-height: 30px; display: inline-flex; align-items: center; justify-content: center;
    border: 1px solid var(--gg-rule); visibility: visible !important;
  }
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid .rank .rank-move:disabled,
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid .rank .rank-move[style*="hidden"] { border-color: var(--gg-rule); opacity: .3; pointer-events: none; }
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid .rank-display { min-width: 26px; text-align: center; font-size: 22px; line-height: 30px; font-variant-numeric: tabular-nums; }
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid .gg-review-grip { display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 30px; }
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid .gg-journal-meta {
    grid-column: 1 / -1; grid-row: 1; justify-self: end; align-self: center;
    display: flex; flex-wrap: wrap; justify-content: end; align-items: center; gap: 2px 14px;
    max-width: calc(100% - 150px);
  }
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid .gg-journal-played { gap: 6px; }
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid .gg-journal-played .pf-icon { width: 15px; height: 15px; flex: none; }
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid .gg-journal-pv { gap: 6px; }

  /* 2. Art. Steam's capsule is 460:215; any other box crops the logo off it. */
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid .covercol { grid-column: 1 / -1; grid-row: 2; margin-top: 14px; }
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid :is(.rowcover, .nocover.small) {
    width: 100% !important; height: auto !important; aspect-ratio: 460 / 215; object-fit: cover;
    display: flex; align-items: center; justify-content: center;
  }

  /* 3. Title: the title cell dissolves so its words take rows of their own. */
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid .gamename { display: contents; font-size: 24px; }
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid .gamename > a {
    grid-column: 1 / -1; grid-row: 3; display: block; min-width: 0; margin-top: 14px;
    overflow: hidden; white-space: nowrap; text-overflow: ellipsis;
  }

  /* 4. Scores */
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid .scorecell { grid-row: 4; margin-top: 14px !important; }
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid .scorecell[data-score-key="enjoyment_score"] { grid-column: 1; }
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid .scorecell[data-score-key="gameplay_score"] { grid-column: 2; }
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid .scorecell[data-score-key="music_score"] { grid-column: 3; }
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid .scorecell[data-score-key="narrative_score"] { grid-column: 4; }

  /* 5. Attributes: three fixed, centred columns, so each sits in the same
     place on every card whichever are missing. */
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid .gg-journal-attributes {
    grid-column: 1 / -1; grid-row: 5; margin-top: 14px; padding-top: 12px;
    border-top: 1px solid var(--gg-rule);
    display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 12px;
  }
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid .gg-journal-attributes > div { flex-direction: column; align-items: center; gap: 6px; min-width: 0; text-align: center; }
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid .gg-journal-attributes [data-attr="difficulty"] { grid-column: 1; }
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid .gg-journal-attributes [data-attr="replayability"] { grid-column: 2; }
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid .gg-journal-attributes [data-attr="completion"] { grid-column: 3; }
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid .gg-journal-attributes dt { font-size: 11px; line-height: 1; }
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid .gg-journal-attributes dd { display: flex; align-items: center; justify-content: center; min-height: 18px; line-height: 1; }
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid .gg-journal-attributes .scale-icons { display: inline-flex; align-items: center; gap: 4px; }
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid .gg-journal-attributes .scale-icons i { width: 13px; height: 14px; flex: none; }

  /* 6. Three lines, always: the headline runs into the excerpt and both clamp
     together; the fixed height holds the space when there is nothing to show. */
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid .gg-review-text {
    grid-column: 1 / -1; grid-row: 6; min-width: 0; margin-top: 14px;
    font: 400 15px/1.45 var(--gg-font-serif); color: var(--gg-ink-2);
    height: calc(3 * 1.45em); overflow: hidden;
    display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3;
  }
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid .gg-review-text > :is(p, .gg-editorial-headline, .gg-review-excerpt) {
    display: inline; margin: 0; font: inherit; color: inherit; -webkit-line-clamp: none;
  }
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid .gg-review-text > .gg-editorial-headline { font-weight: 650; color: var(--gg-ink); }
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid .gg-review-text > .gg-editorial-headline::after { content: " \2014  "; font-weight: 400; color: var(--gg-ink-3); }
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid .gg-review-text > .gg-review-none { display: inline; font-style: italic; color: var(--gg-ink-3); }
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid .gg-review-text > .gg-editorial-spoiler { display: block; margin: 0; }

  /* 7. The tie note takes the slack row, sitting just above the links. */
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid .gg-review-tie-note { grid-column: 1 / -1; grid-row: 7; align-self: end; justify-self: end; margin-top: 10px; }

  /* 8. The menu and the links share the last line, opposite edges; the links
     wrap before they can reach the menu. */
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid .gg-journal-links {
    grid-column: 1 / -1; grid-row: 8; justify-self: end; align-self: center; margin: 12px 0 0;
    display: flex; flex-wrap: wrap; align-items: center; justify-content: end; gap: 4px 18px;
    max-width: calc(100% - 44px); min-height: 32px;
  }
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid .gg-journal-read { margin-left: 0; }
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid .gg-journal-menu { grid-column: 1 / -1; grid-row: 8; justify-self: start; align-self: center; margin-top: 12px; }
  html body.reviews-page .full-list.is-desktop-list.is-snippet-grid .gg-journal-menu .gg-review-more summary { width: 32px; height: 32px; display: inline-flex; align-items: center; justify-content: center; }
}

@supports (grid-template-rows: subgrid) {
  @media (min-width: 769px) {
    html body.reviews-page .full-list.is-desktop-list.is-snippet-grid tbody > tr { grid-row: span 8; grid-template-rows: subgrid; }
  }
}


/* Match Library's pickup, animated gaps and touch press-and-hold. */
.gg-reviews-dragging, .gg-reviews-dragging * { cursor: grabbing !important; user-select: none; -webkit-user-select: none; }
.is-review-reorderable .has-review-tie { cursor: grab; -webkit-touch-callout: none; }
html body.reviews-page .gg-review-drop-slot { opacity: .22; outline: 2px dashed var(--gg-press-accent); outline-offset: -2px; }
html body.reviews-page .sortable-fallback.gg-review-lifted { opacity: 1 !important; transform: rotate(-2deg) scale(1.02); box-shadow: 0 18px 30px rgba(0,0,0,.4); z-index: 4000; pointer-events: none; }
html body.reviews-page .full-list.is-snippet-grid .sortable-fallback { grid-template-rows: auto auto auto auto auto auto 1fr auto !important; }
@media (prefers-reduced-motion: reduce) {
  html body.reviews-page .sortable-fallback.gg-review-lifted { transform: none; }
}

/* Overall is the headline grade wherever the four scores appear, independent
   of the selected sorting/category score. Override legacy font shorthands. */
html body :is(.gg-overall-label, .overall-label, .gg-spec.lead .k, .gg-gb-lead-k,
  .compare-metric-row.is-overall .compare-metric-label,
  .compare-mobile-row.is-overall .compare-mobile-label),
html body.reviews-page .mobile-card-score[data-score-key="enjoyment_score"] .label,
html body.reviews-page .full-list.is-desktop-list .scorecell[data-score-key="enjoyment_score"]::before {
  font-weight: 800 !important;
  text-decoration-line: underline;
  text-decoration-color: currentColor;
  text-decoration-thickness: 1px;
  text-underline-offset: 4px;
}
