/* gamingbroject.com s145 lab: platform layer (WS1). Lab only: /testqq/, manifest part 10-platform.json, every page.
 *
 * CASCADE. index.php prints "@layer s145, gbl, gbu;" before every stylesheet and links this file first, so everything here
 * sits in the first s145 sub-layer, s145.sys. For !important the order is s145.sys > s145.art-b > s145.art-a > s145 > gbl
 * (Day mode, humanize) > gbu (UI v2) > unlayered, so the fills, the focus ring and the reduced-motion stops below cannot be
 * undone by an area file. Normal declarations run the other way (sys loses to every live rule): only the --s145-* tokens
 * are written normal; every rule that must beat a live rule carries !important.
 *
 * OWNERSHIP (plan section 4). Other files read the tokens with var() and a fallback and never redefine them. Fill colour
 * for the selectors of section 1 lives only here.
 *
 * RULES. Dark is the default; Day mode is html[data-gb-theme="light"] and every colour rule gives its Day value.
 * Halloween (html.gb-hw) is never overridden: its card glow, its controls ([id^="gbhw-"], [class*="gbhw-"]), the logo
 * flicker, the fog, the bats and the music keep their own look. s145 motion sits only inside
 * (prefers-reduced-motion: no-preference) and never puts !important on transition. Any non-none display !important is
 * hidden-safe (:not([hidden]):not(.hz-hidden)). Keep this file free of the document-head tag text (cPanel rule).
 *
 * SECTIONS. 0 tokens, 1 red fills, 2 small-text AA, 3 focus ring and skip link (the early drop), 4 Day parity,
 * 5 Free Games Radar ended cards, 6 bars and phone chrome, 7 flat black ground (?s145black=1), 8 reduced motion,
 * 9 press feel. */

@layer s145.sys {

  /* 0. Tokens (plan contract 3.2). --s145-tabbar-h is nav.gl-bar measured on the phone home, 30/10 (58.5 px). */
  :root {
    --s145-red: #ff2948;             /* brand red: lines, dots, large text on dark */
    --s145-red-fill: #df1a3e;        /* fills under white text, 4.82:1 (the live --red-btn) */
    --s145-red-fill-hover: #c8163a;
    --s145-red-text: #ff5c78;        /* small red text on the violet ground, 5.0:1 */
    --s145-ink: #f7f5fb;
    --s145-ink-2: #c9c3d1;
    --s145-warm: #c9b8a6;            /* one quiet label colour (humanize --hz-warm) */
    --s145-focus: #21eaff;           /* focus ring, 14:1 */
    --s145-r-s: 6px;                 /* controls */
    --s145-r-l: 14px;                /* panels and media */
    --s145-bar: #07030c;             /* phone bars, today's colour made solid */
    --s145-bar-room: #05020a;        /* Room and newsroom header */
    --s145-surface-1: #0f0916;       /* panels on the violet ground */
    --s145-surface-2: #171021;       /* take, verdict, plates */
    --s145-hairline: rgba(255, 255, 255, .07);
    --s145-ok: #54e5a2;   --s145-ok-bg: rgba(84, 229, 162, .07);   --s145-ok-line: rgba(84, 229, 162, .34);   --s145-ok-fill: #3ccf7e;   --s145-ok-on: #06210f;
    --s145-wait: #ffcf7a; --s145-wait-bg: rgba(255, 181, 54, .07); --s145-wait-line: rgba(255, 181, 54, .34); --s145-wait-fill: #ffb536; --s145-wait-on: #1a1100;
    --s145-end: #b8afc2;  --s145-end-bg: rgba(255, 255, 255, .035); --s145-end-line: rgba(255, 255, 255, .14); --s145-end-fill: #2a2331; --s145-end-on: #ded8e4;
    --s145-press: .97;               /* one press scale site-wide (replaces ART-14's .96) */
    --s145-t-press: 140ms;
    --s145-ease: cubic-bezier(.23, 1, .32, 1);
    --s145-title-hub: clamp(40px, 1.6rem + 2.4vw, 60px);  /* hub and community H1s, search, archive names over 24 characters */
    --s145-title-poster: clamp(56px, 7.4vw, 112px);        /* short archive names (ART-15) and /top10/ */
    --s145-tabbar-bottom: calc(10px + env(safe-area-inset-bottom, 0px));
    --s145-tabbar-h: 58.5px;         /* nav.gl-bar on the phone home, measured 30/10 (390 x 844) */
  }
  html[data-gb-theme="light"] {
    --s145-red: #d1123a; --s145-red-fill: #d1123a; --s145-red-fill-hover: #b30f31; --s145-red-text: #b80d32;
    --s145-ink: #15121b; --s145-ink-2: #4f4958; --s145-warm: #7a6450; --s145-focus: #007385;
    --s145-bar: #ffffff; --s145-bar-room: #ffffff;
    --s145-surface-1: var(--gl-card, #ffffff); --s145-surface-2: #f4f2f7; --s145-hairline: var(--gl-line, #e4e0ea);
    --s145-ok: #0b7a46; --s145-ok-bg: #e9f7ef; --s145-ok-line: #a6dbbe; --s145-ok-fill: #0b7a46; --s145-ok-on: #ffffff;
    --s145-wait: #8a5a00; --s145-wait-bg: #fff4dc; --s145-wait-line: #efd08f; --s145-wait-fill: #ffb536; --s145-wait-on: #1a1100;
    --s145-end: #5f5852; --s145-end-bg: #f3f1f4; --s145-end-line: #dad5de; --s145-end-fill: #e6e2ea; --s145-end-on: #3d3741;
  }
  html.gb-hw:not([data-gb-theme="light"]) {    /* Halloween: pumpkin like live --gb-red, with AA-safe fills */
    --s145-red: #ff7a1a; --s145-red-text: #ff7a1a; --s145-red-fill: #c2410c; --s145-red-fill-hover: #a3360a;
  }
  html.s145-black:not(.gb-hw):not([data-gb-theme="light"]) {   /* only with ?s145black=1 (Panos decides) */
    --s145-bar: #000000; --s145-bar-room: #000000;
    --s145-surface-1: #0e0e0e; --s145-surface-2: #171717; --s145-hairline: transparent;
  }

  /* 1. Red fills under white text (plan section 4, WS1's fill list). White on the neon reds was 3.5 to 3.7:1; the fill
   *    token is 4.82:1 (dark), 5.4:1 (Day), 5.18:1 (Halloween). No glow, gradient or text-shadow. Not here: the consent
   *    buttons (WS3), .gl-badge and .gb-offer-pill.is-ended (offer status, WS3), and the Room search panel's "See all
   *    results" link (a.gbc-btn.gbc-allresults), which live shows as a quiet text link that already passes AA.
   *    Selector lists, not :is(), in the last compound: each rule then sits in a class, id, tag or attribute bucket and is
   *    not matched against every element on each of the Room's ~980 style recalculations (measured: +296 ms at 4x CPU). */
  html body #gbLatestMoreButton,
  html body .gb-latest-more-button,
  html body .gbrw-stamp,
  html body .gbc-btn:not(.gbc-btn-ghost):not(.gbc-btn-danger):not(.gbc-allresults),
  html body .gbc-follow:not([aria-pressed="true"]):not(.is-following),
  html body .gl-find button[type="submit"],
  html body details.gl-find form button,
  html body form[role="search"] button[type="submit"],
  html body .gbc-searchbar button,
  html body .gw-cta,
  html body .gw-featured,
  html body a.gw-skip,
  html body a.gb-top10-skip,
  html body .gbu-btn--primary,
  html body .pagination .page-numbers.current {
    background-color: var(--s145-red-fill, #df1a3e) !important;
    background-image: none !important;
    border-color: var(--s145-red-fill, #df1a3e) !important;
    color: #ffffff !important;
    box-shadow: none !important;
    text-shadow: none !important;
  }
  @media (hover: hover) and (pointer: fine) {
    html body #gbLatestMoreButton:hover,
    html body .gb-latest-more-button:hover,
    html body .gbc-btn:not(.gbc-btn-ghost):not(.gbc-btn-danger):not(.gbc-allresults):hover,
    html body .gbc-follow:not([aria-pressed="true"]):not(.is-following):hover,
    html body .gl-find button[type="submit"]:hover,
    html body details.gl-find form button:hover,
    html body form[role="search"] button[type="submit"]:hover,
    html body .gbc-searchbar button:hover,
    html body a.gw-skip:hover,
    html body a.gb-top10-skip:hover,
    html body .gbu-btn--primary:hover {
      background-color: var(--s145-red-fill-hover, #c8163a) !important;
      border-color: var(--s145-red-fill-hover, #c8163a) !important;
      filter: none !important;
    }
  }
  /* the arrow inside the /watch/ CTA kept Day ink on the red fill: it follows the white label */
  html body .gw-cta > span { color: inherit !important; }
  html body .gbc-follow { border-radius: var(--s145-r-s, 6px) !important; }
  html body .gbrw-stamp,
  html body .gw-featured {
    border-radius: var(--s145-r-s, 6px) !important;
    font: 700 12px/1.15 Inter, system-ui, sans-serif !important;
    letter-spacing: .01em !important;
    text-transform: none !important;
  }
  /* Without humanize (?gbhuman=0) the Room's photo badges are red pills again (3.71:1); humanize hides or darkens them. */
  html:not(.gb-human) body .article-card .card-badge:not(.gb-offer-badge) {
    background-color: var(--s145-red-fill, #df1a3e) !important;
    color: #ffffff !important;
    box-shadow: none !important;
  }

  /* 2. Small text at AA (plan section 4, WS1's small-text list). */
  /* Day "All news" (.gbu-sec-head a): #ff3158 on white was 3.26:1. */
  html[data-gb-theme="light"] body .gbu-sec-head a { color: var(--s145-red-text, #b80d32) !important; }
  /* "2 min read" on the dark free cards was 4.37:1. Day mode keeps its own grey (passes). */
  html:not([data-gb-theme="light"]) body div.gb-free-action small { color: #a49fab !important; }
  /* The 8-bit "10" on the Room's channel strip was 3.07:1 in dark mode. Dark only: in Day the box is light (#eceaf0) and
   * the label keeps its own Day red (#d1123a, 4.56:1). */
  html:not([data-gb-theme="light"]) body #channelStrip .channel-play.is-8bit:not(.gbu-has-img) { color: #ffc2cc !important; }
  /* Community inputs: the /deals/ filter and the search page bar kept the browser grey placeholder (4.08 to 4.47:1 on
   * the dark field). */
  html:not([data-gb-theme="light"]) body .gbc-deal-tools input::placeholder,
  html:not([data-gb-theme="light"]) body .gbc-searchbar input::placeholder { color: #9c97a6 !important; opacity: 1 !important; }
  html[data-gb-theme="light"] body .gbc-deal-tools input::placeholder,
  html[data-gb-theme="light"] body .gbc-searchbar input::placeholder { color: #6b6474 !important; opacity: 1 !important; }
  /* The Room's MORE BELOW cue sits on the dark room photo in both themes (Day: dark red, 1.3:1). Dark follows the red text
   * token, so Halloween turns it pumpkin like the rest of the red text. Humanize blinks the label down to opacity .25
   * (1.4:1) for 40% of each 1.2 s cycle: the s145 keyframes keep its rhythm and timing with a floor of .85 (5.2:1, pumpkin
   * 5.9:1). Only for no-preference, so humanize's reduced-motion stop still holds the label still. */
  html body button.hz-cue span { color: var(--s145-red-text, #ff5c78) !important; }
  html[data-gb-theme="light"] body button.hz-cue span { color: #ff5c78 !important; }
  @keyframes s145-cue-blink {
    0%, 100% { opacity: 1; }
    60% { opacity: .85; }
  }
  @media (prefers-reduced-motion: no-preference) {
    html body button.hz-cue span { animation-name: s145-cue-blink !important; }
  }

  /* 3. One focus ring and the skip link. The ring skips elements that draw their own: [data-s145-ring] (cards that move
   *    the ring onto the card), Halloween's controls and the arcade overlays (their own white ring). */
  html body a:focus-visible:not([data-s145-ring]):not([id^="gbhw-"]):not([class*="gbhw-"]):not(:is(#arcadeOverlay, #snakeOverlay, .gb3) *),
  html body button:focus-visible:not([data-s145-ring]):not([id^="gbhw-"]):not([class*="gbhw-"]):not(:is(#arcadeOverlay, #snakeOverlay, .gb3) *),
  html body summary:focus-visible:not([data-s145-ring]):not([id^="gbhw-"]):not([class*="gbhw-"]):not(:is(#arcadeOverlay, #snakeOverlay, .gb3) *),
  html body input:focus-visible:not([data-s145-ring]):not([id^="gbhw-"]):not([class*="gbhw-"]):not(:is(#arcadeOverlay, #snakeOverlay, .gb3) *),
  html body select:focus-visible:not([data-s145-ring]):not([id^="gbhw-"]):not([class*="gbhw-"]):not(:is(#arcadeOverlay, #snakeOverlay, .gb3) *),
  html body textarea:focus-visible:not([data-s145-ring]):not([id^="gbhw-"]):not([class*="gbhw-"]):not(:is(#arcadeOverlay, #snakeOverlay, .gb3) *),
  html body [role="button"]:focus-visible:not([data-s145-ring]):not([id^="gbhw-"]):not([class*="gbhw-"]):not(:is(#arcadeOverlay, #snakeOverlay, .gb3) *),
  html body [tabindex]:focus-visible:not([data-s145-ring]):not([id^="gbhw-"]):not([class*="gbhw-"]):not(:is(#arcadeOverlay, #snakeOverlay, .gb3) *) {
    outline: 2px solid var(--s145-focus, #21eaff) !important;
    outline-offset: 2px !important;
  }
  /* The newsroom header strip clips what is drawn outside its links (overflow), so the ring is drawn inside them, as live
   * does on the channel strip cards. The active underline sits 4 to 6 px above the links' bottom edge and stays clear. */
  html body header.gb-newsroom-header nav.gb-newsroom-nav > a:focus-visible:not([data-s145-ring]):not([id^="gbhw-"]):not([class*="gbhw-"]):not(:is(#arcadeOverlay, #snakeOverlay, .gb3) *) {
    outline-offset: -2px !important;
  }
  /* The skip link's target (#cards, #latest or main, marked by site.js) takes focus only to move the reading point: no
   * ring around the whole list. The next Tab rings the first story. gbu's own ring is !important, hence the explicit none. */
  html body [data-s145-ring="skip"]:focus-visible { outline: none !important; }
  /* Added by site.js where the template has none (Room home, phone lite pages). Hidden above the viewport until focused,
   * then a dark 6 px pill in both themes. Above Halloween's fixed layers (#gbhw-fx 2147483000, #gbhw-music 2147483001),
   * which come later in the page and would otherwise dim it. */
  html body a.s145-skip {
    position: fixed !important;
    top: 12px !important;
    left: max(16px, env(safe-area-inset-left, 0px)) !important;
    z-index: 2147483002 !important;
    padding: 15px 16px !important;
    border-radius: var(--s145-r-s, 6px) !important;
    background: #0c0712 !important;
    color: #f7f5fb !important;
    font: 700 14px/1 Inter, system-ui, sans-serif !important;
    letter-spacing: normal !important;
    text-transform: none !important;
    text-decoration: none !important;
    box-shadow: 0 8px 24px -8px rgba(0, 0, 0, .6) !important;
    transform: translateY(-200%) !important;
  }
  html body a.s145-skip:focus { transform: none !important; }
  @media (prefers-reduced-motion: no-preference) {
    html body a.s145-skip { transition: transform 160ms var(--s145-ease, cubic-bezier(.23, 1, .32, 1)); }
  }

  /* 4. Day parity. These templates keep their dark surfaces while their text turns Day ink (1.01 to 1.08:1). Each gets
   *    the Day surface steps; the dark look is unchanged (every rule here is Day only). */
  /* /watch/ video cards, /top10/ ranking cards and the /watch/ privacy buttons */
  html[data-gb-theme="light"] body a.gw-card,
  html[data-gb-theme="light"] body a.gb-top10-card {
    background: var(--s145-surface-1, #ffffff) !important;
    border-color: var(--s145-hairline, #e4e0ea) !important;
    color: var(--s145-ink, #15121b) !important;
    box-shadow: 0 1px 2px rgba(21, 18, 27, .06), 0 10px 28px -14px rgba(21, 18, 27, .22) !important;
  }
  html[data-gb-theme="light"] body a.gw-card h2,
  html[data-gb-theme="light"] body a.gw-card h3,
  html[data-gb-theme="light"] body a.gw-card p,
  html[data-gb-theme="light"] body a.gw-card .gw-game { color: var(--s145-ink, #15121b) !important; }
  html[data-gb-theme="light"] body a.gw-card .gw-thumb { background-color: #ece9f1 !important; }
  /* the play mark sits on its own dark disc over the photo in both themes: white, as in dark mode (it turned Day ink) */
  html[data-gb-theme="light"] body a.gw-card .gw-play { color: #ffffff !important; }
  html[data-gb-theme="light"] body .gw-privacy button {
    background-color: var(--s145-ink, #15121b) !important;
    border-color: var(--s145-ink, #15121b) !important;
    color: #ffffff !important;
  }
  /* /top10/ ranking cards: rank 01 on the red fill, the others on ink */
  html[data-gb-theme="light"] body a.gb-top10-card h2,
  html[data-gb-theme="light"] body a.gb-top10-card h3,
  html[data-gb-theme="light"] body a.gb-top10-card .gb-top10-cta { color: var(--s145-ink, #15121b) !important; }
  html[data-gb-theme="light"] body a.gb-top10-card .gb-top10-meta { color: var(--s145-ink-2, #4f4958) !important; }
  html[data-gb-theme="light"] body a.gb-top10-card .gb-top10-art { background-color: #ece9f1 !important; }
  html[data-gb-theme="light"] body .gb-top10-rank { background-color: var(--s145-ink, #15121b) !important; color: #ffffff !important; }
  html[data-gb-theme="light"] body li:first-child > a.gb-top10-card .gb-top10-rank { background-color: var(--s145-red-fill, #d1123a) !important; }
  /* FX02: the game library (hubs, /games/, /upcoming-games/) and the publisher pages (/about/, /editorial-policy/,
   * /free-games-this-week/): panel on surface 1, the cards and rows inside it on surface 2, pictures on a light placeholder. */
  html[data-gb-theme="light"] body main.gb-game-library,
  html[data-gb-theme="light"] body section.gb-game-library,
  html[data-gb-theme="light"] body article.gb-publisher-policy__article {
    background-color: var(--s145-surface-1, #ffffff) !important;
    background-image: none !important;
    border-color: var(--s145-hairline, #e4e0ea) !important;
    color: var(--s145-ink, #15121b) !important;
  }
  html[data-gb-theme="light"] body .gb-game-library a.gb-game-card,
  html[data-gb-theme="light"] body .gb-game-library aside.gb-game-facts,
  html[data-gb-theme="light"] body .gb-game-library ul.gb-cal-list > li {
    background-color: var(--s145-surface-2, #f4f2f7) !important;
    background-image: none !important;
    border-color: var(--s145-hairline, #e4e0ea) !important;
    color: var(--s145-ink, #15121b) !important;
  }
  html[data-gb-theme="light"] body .gb-game-library a.gb-game-card img { background-color: #ece9f1 !important; }

  /* 5. Free Games Radar (desktop home, /free-games/): an ended offer faded the whole card (gbu: opacity .55, saturate
   *    .35, keyed on data-offer-state), so its text fell to 2.0 to 2.7:1 in both themes. The card stays at full
   *    strength; only the picture fades. */
  html body article.gb-free-card[data-offer-state="ended"] {
    opacity: 1 !important;
    filter: none !important;
  }
  html body article.gb-free-card[data-offer-state="ended"] .gb-free-media,
  html body article.gb-free-card[data-offer-state="ended"] .card-art {
    filter: saturate(.35) brightness(.85);
    opacity: .72;
  }

  /* 6. Bars and phone chrome. Today's colours made solid (they were 90 to 97% with a blur, so headlines showed through the
   *    logo and the tab labels); opaque is also cheaper than a backdrop blur on every scroll frame. The phone tab bar
   *    clears the home indicator, and a swipe at the end of the section strip no longer drags the page or goes Back.
   *    No scroll snap on the strip (it would fight the centring of the current section). */
  html body header.gl-top,
  html body nav.gl-bar {
    background-color: var(--s145-bar, #07030c) !important;
    background-image: none !important;
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
  }
  html body header.site-header::before,
  html body header.gb-newsroom-header::before {
    background: var(--s145-bar-room, #05020a) !important;
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
  }
  html body nav.gl-bar {
    bottom: var(--s145-tabbar-bottom, calc(10px + env(safe-area-inset-bottom, 0px))) !important;
    left: max(10px, env(safe-area-inset-left, 0px)) !important;
    right: max(10px, env(safe-area-inset-right, 0px)) !important;
  }
  html body nav.gl-nav { overscroll-behavior-x: contain !important; }

  /* 7. Flat black ground, only with ?s145black=1 (html.s145-black, Panos decides). Dark only, never with Halloween. The
   *    surface tokens of section 0 follow; the live surface tokens and the Room's violet washes go flat. */
  html.s145-black:not(.gb-hw):not([data-gb-theme="light"]) {
    --surface-1: #0e0e0e !important;
    --surface-2: #171717 !important;
  }
  html.s145-black:not(.gb-hw):not([data-gb-theme="light"]),
  html.s145-black:not(.gb-hw):not([data-gb-theme="light"]) body {
    background-color: #000000 !important;
    background-image: none !important;
  }
  html.s145-black:not(.gb-hw):not([data-gb-theme="light"]) #contentHub,
  html.s145-black:not(.gb-hw):not([data-gb-theme="light"]) #freeGamesRadar,
  html.s145-black:not(.gb-hw):not([data-gb-theme="light"]) .gbu-rows,
  html.s145-black:not(.gb-hw):not([data-gb-theme="light"]) section.gb-game-library,
  html.s145-black:not(.gb-hw):not([data-gb-theme="light"]) main.gb-game-library {
    background-color: transparent !important;
    background-image: none !important;
  }
  html.s145-black:not(.gb-hw):not([data-gb-theme="light"]) #contentHub::before,
  html.s145-black:not(.gb-hw):not([data-gb-theme="light"]) #contentHub::after,
  html.s145-black:not(.gb-hw):not([data-gb-theme="light"]) #freeGamesRadar::before,
  html.s145-black:not(.gb-hw):not([data-gb-theme="light"]) #freeGamesRadar::after { background-image: none !important; }
  html.s145-black:not(.gb-hw):not([data-gb-theme="light"]) article.article-card,
  html.s145-black:not(.gb-hw):not([data-gb-theme="light"]) article.gb-post-card,
  html.s145-black:not(.gb-hw):not([data-gb-theme="light"]) article.gbc-deal,
  html.s145-black:not(.gb-hw):not([data-gb-theme="light"]) article.gbc-author,
  html.s145-black:not(.gb-hw):not([data-gb-theme="light"]) section.gbc-card,
  html.s145-black:not(.gb-hw):not([data-gb-theme="light"]) p.gbc-msg,
  html.s145-black:not(.gb-hw):not([data-gb-theme="light"]) div.gbc-deal-tools,
  html.s145-black:not(.gb-hw):not([data-gb-theme="light"]) a.gb-game-card,
  html.s145-black:not(.gb-hw):not([data-gb-theme="light"]) a.gb-top10-card,
  html.s145-black:not(.gb-hw):not([data-gb-theme="light"]) a.gw-card,
  html.s145-black:not(.gb-hw):not([data-gb-theme="light"]) article.gbrw,
  html.s145-black:not(.gb-hw):not([data-gb-theme="light"]) #channelStrip.channel-strip,
  html.s145-black:not(.gb-hw):not([data-gb-theme="light"]) ul.gb-cal-list > li,
  html.s145-black:not(.gb-hw):not([data-gb-theme="light"]) article.gb-publisher-policy__article {
    background-color: var(--s145-surface-1, #0e0e0e) !important;
    background-image: none !important;
    border-color: transparent !important;
    box-shadow: none !important;
  }
  html.s145-black:not(.gb-hw):not([data-gb-theme="light"]) nav.gl-bar { background-color: var(--s145-surface-1, #0e0e0e) !important; }
  html.s145-black:not(.gb-hw):not([data-gb-theme="light"]) footer.footer,
  html.s145-black:not(.gb-hw):not([data-gb-theme="light"]) footer.gb-site-footer,
  html.s145-black:not(.gb-hw):not([data-gb-theme="light"]) footer.gl-foot {
    background: var(--s145-surface-1, #0e0e0e) !important;
    border-top-color: transparent !important;
  }

  /* 8. Reduced motion. The live s121 logo pulse (infinite) stops; Halloween's logo flicker is left alone. */
  @media (prefers-reduced-motion: reduce) {
    html:not(.gb-hw) body #homeBtn.logo-btn img,
    html:not(.gb-hw) body .gb-newsroom-brand img,
    html:not(.gb-hw) body .gl-logo img,
    html:not(.gb-hw) body img.gb-top10-logo { animation: none !important; }
  }

  /* 9. Press feel (stretch). One press scale site-wide on an explicit allow-list of links and controls that do not press
   *    with transform: tags, pagination links, section and community filters, the /watch/ CTA, and the /deals/ filter
   *    buttons and .gbu-btn, which the lab's html.gbp polish already presses at the same scale (so reduced motion can
   *    switch them off). The separate scale property replaces that scale value instead of stacking. Left out on purpose:
   *    controls that already press with transform (the theme toggle, and .gbc-btn, .gbc-chip and .gbc-follow in
   *    community.css), the Room stage, the arcade and Halloween's controls. The 140 ms ease is a normal declaration, so it
   *    reaches only the items whose transition no other layer sets: the /deals/ filter buttons (home.css [H17]) and
   *    .gbu-btn (gbu, !important) press without it. Nothing scales for reduced motion. */
  @media (prefers-reduced-motion: no-preference) {
    html body span.gw-cta,
    html body .gb-tags > a,
    html body .pagination a.page-numbers,
    html body .gb-subcategory-nav > a,
    html body .gbc-filter > a { transition: scale var(--s145-t-press, 140ms) var(--s145-ease, cubic-bezier(.23, 1, .32, 1)); }
    html body span.gw-cta:active,
    html body .gb-tags > a:active,
    html body .pagination a.page-numbers:active,
    html body .gb-subcategory-nav > a:active,
    html body .gbc-filter > a:active,
    html body div.gbc-deal-tools button:active,
    html body .gbu-btn:active { scale: var(--s145-press, .97) !important; }
  }
  @media (prefers-reduced-motion: reduce) {
    html body span.gw-cta:active,
    html body .gb-tags > a:active,
    html body .pagination a.page-numbers:active,
    html body .gb-subcategory-nav > a:active,
    html body .gbc-filter > a:active,
    html body div.gbc-deal-tools button:active,
    html body .gbu-btn:active { scale: none !important; }
  }

}
