:root { --ink: #000; --paper: #fff; --gutter: clamp(1.25rem, 5vw, 5rem); --sans: Barlow, Arial, sans-serif; }
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; background: var(--paper); color: var(--ink); font: 400 17px/1.6 var(--sans); }
img { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-underline-offset: .25em; }
h1, h2, h3, p { margin: 0; }
h1, h2, h3 { font-weight: 700; text-transform: uppercase; line-height: .97; letter-spacing: -.045em; }
h1, h2, h3, .button, .play-link { overflow-wrap: anywhere; max-width: 100%; }
.wrap { width: min(100% - 2 * var(--gutter), 1328px); margin-inline: auto; }
.label { font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .18em; }
.skip-link { position: fixed; top: 1rem; left: 1rem; z-index: 20; transform: translateY(-200%); padding: .75rem 1rem; background: white; color: black; border: 2px solid black; }
.skip-link:focus { transform: none; }
.site-header { min-height: 100px; display: flex; align-items: center; justify-content: space-between; gap: 1rem; border-bottom: 1px solid; }
.brand { display: flex; align-items: center; gap: .65rem; text-decoration: none; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; font-size: .82rem; }
.brand img { width: 58px; }
nav { display: flex; align-items: center; gap: clamp(1rem, 3vw, 2.5rem); font-size: .75rem; font-weight: 700; text-transform: uppercase; letter-spacing: .14em; }
nav a { text-decoration: none; padding-block: .65rem; }
nav a:hover { text-decoration: underline; }
.button { display: inline-flex; justify-content: space-between; align-items: center; gap: 2.5rem; padding: .85rem 1.2rem; border: 1px solid; background: transparent; text-decoration: none; font-size: .8rem; font-weight: 700; text-transform: uppercase; letter-spacing: .16em; transition: transform .2s; }
.button--ink { color: white; background: black; border-color: black; }
.button:hover { transform: translateY(-3px); }
nav .button { padding: .65rem 1rem; }
.hero { padding-block: clamp(4rem, 7vw, 7rem) 3rem; }
.hero-copy { display: flex; align-items: center; flex-direction: column; text-align: center; }
h1 { font-size: clamp(3rem, 8.4vw, 8rem); }
.hero .label { margin-bottom: 2rem; }
.intro { max-width: 34rem; margin-top: 2rem; font-size: 1.1rem; }
.actions { margin-top: 2rem; }
.actions .button { min-width: 300px; padding: 1.1rem 1.5rem; }
.hero-stats { display: flex; justify-content: space-between; gap: 1rem; width: 100%; margin-top: 3rem; padding-top: 1rem; border-top: 1px solid; font-size: .72rem; font-weight: 700; text-align: left; text-transform: uppercase; letter-spacing: .14em; }
.hero-stats > span { min-width: 0; }
.hero-stats > span:last-child { text-align: right; }
.featured-game { display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding: 1.5rem 0; margin-top: 4rem; border-block: 1px solid; text-decoration: none; }
.featured-game > span:nth-child(2) { font-size: clamp(1.5rem, 4vw, 2.75rem); font-weight: 700; text-transform: uppercase; letter-spacing: -.04em; }
.featured-game:hover > span:last-child { text-decoration: underline; }
.games { padding-block: 4rem 6rem; scroll-margin-top: 2rem; }
.section-heading { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: end; gap: 1.25rem; margin-bottom: 2.5rem; }
h2 { font-size: clamp(2.4rem, 5vw, 4.5rem); }
.game-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: clamp(3rem, 8vw, 8rem); row-gap: 3.5rem; }
.game-card { display: flex; flex-direction: column; align-items: start; gap: 1.25rem; border-top: 1px solid; padding-top: 1.25rem; min-width: 0; }
.game-meta { display: flex; justify-content: space-between; align-items: center; width: 100%; }
.diamond { font-size: .8rem; font-weight: 700; }
.diamond::before { content: "0"; }
.game-icon { width: 72px; height: 72px; border-radius: 16px; margin-top: .5rem; }
.game-card h3 { font-size: clamp(2rem, 3.5vw, 3rem); }
.game-card p { max-width: 30rem; flex-grow: 1; }
.game-links { width: 100%; display: flex; flex-direction: column; gap: .5rem; padding-top: .5rem; }
.game-links a { font-size: .76rem; font-weight: 700; text-transform: uppercase; letter-spacing: .12em; }
.play-link { display: flex; align-items: center; justify-content: space-between; padding: .85rem 1rem; border: 1px solid; text-decoration: none; }
.play-link:hover { text-decoration: underline; }
.store-link { align-self: start; padding-block: .5rem; }
.upcoming { padding-block: 0 6rem; scroll-margin-top: 2rem; mix-blend-mode: difference; }
.upcoming-card { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 2rem; padding-block: 2rem; border-top: 1px solid; }
.upcoming-card:last-child { border-bottom: 1px solid; }
.upcoming-info { display: grid; gap: .85rem; }
.upcoming-info h3 { font-size: clamp(2rem, 3.5vw, 3.5rem); }
.upcoming-info > p:last-child { max-width: 52ch; }
.upcoming-card .play-link { gap: 2rem; font-size: .8rem; font-weight: 700; text-transform: uppercase; letter-spacing: .12em; }
.genre-strip { padding-block: 2rem; border-block: 1px solid; }
.genre-strip .wrap { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem; text-transform: uppercase; font-size: clamp(1rem, 2.5vw, 2rem); font-weight: 700; letter-spacing: .08em; }
.genre-strip i { width: 5px; height: 5px; border-radius: 50%; background: currentColor; }
.studio { padding-block: 6rem; display: grid; grid-template-columns: 1fr 2fr; align-items: center; gap: clamp(2rem, 6vw, 6rem); scroll-margin-top: 2rem; }
.studio img { max-width: 240px; }
.studio div { display: flex; flex-direction: column; gap: 1.5rem; }
.studio p { max-width: 42rem; font-size: 1.1rem; }
.studio a { align-self: start; overflow-wrap: anywhere; max-width: 100%; }
.site-footer { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 1rem; padding-block: 1.5rem 2rem; border-top: 1px solid; font-size: .72rem; text-transform: uppercase; letter-spacing: .08em; }
.footer-links { display: flex; flex-wrap: wrap; gap: 1rem; }
.footer-links button { padding: 0; border: 0; background: none; font: inherit; color: inherit; letter-spacing: inherit; text-transform: inherit; text-decoration: underline; cursor: pointer; }
.footer-links button[hidden] { display: none; }
/* Shared compositing space keeps all ink aligned with the shader's edge. */
/* Keep the canvas at z=0 and ink at z=1, without body isolation. WebKit can
   lose the blend backdrop with an isolated body / negative-z canvas. */
.home { position: relative; color: #fff; background: linear-gradient(90deg, #000 50%, #fff 50%); }
.home .wrap { width: min(100% - 2 * var(--gutter), clamp(1328px, 88vw, 2240px)); }
.worlds-backdrop { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; z-index: 0; }
.home > main { position: relative; }
.home .game-icon { position: relative; z-index: 1; }
.home .upcoming { position: relative; z-index: 1; }
/* Blend only ink, never an ancestor of the colourful game artwork. */
.home > .site-header, .home > .site-footer,
.home .hero-copy, .home .featured-game, .home .section-heading,
.home .game-meta, .home .game-card h3, .home .game-card p,
.home .game-links, .home .genre-strip, .home .studio { position: relative; z-index: 1; mix-blend-mode: difference; }
.home .game-card { position: relative; border-top-color: transparent; }
.home .game-card::before { content: ""; position: absolute; z-index: 1; top: -1px; left: 0; right: 0; height: 1px; background: white; mix-blend-mode: difference; }
.home .brand img, .home .studio img { filter: grayscale(1) invert(1); }
.home .button--ink { background: #fff; color: #000; border-color: #fff; }
.home nav .button { background: transparent; color: #fff; }
:focus-visible { outline: 3px solid currentColor; outline-offset: 5px; }
.home .button:focus-visible { outline-color: #fff; }
/* Privacy pages retain a single-colour reading surface. */
.policy { max-width: 820px; padding-block: 3rem 4rem; }
.policy h1 { font-size: clamp(2.5rem, 7vw, 5rem); }
.policy > .label { margin-top: 1rem; }
.policy h2 { margin-top: 2.75rem; font-size: 2rem; }
.policy h3 { margin-top: 1.75rem; font-size: 1.2rem; }
.policy p, .policy li { font-size: 1.08rem; line-height: 1.65; }
.policy p { margin-top: .9rem; }
.policy ul { margin: .9rem 0 0; padding-left: 1.25rem; }
.policy li + li { margin-top: .4rem; }
.policy a { overflow-wrap: anywhere; }
.policy-summary { margin-top: 2rem; padding: 1.5rem; border: 1px solid; }
.policy-summary h2 { margin-top: 0; }
/* Let large desktops use the screen instead of freezing at a 1328px column.
   Reading widths stay bounded while navigation, artwork and controls grow. */
@media (min-width: 1600px) {
  .home { font-size: clamp(17px, 1vw, 24px); }
  .home .site-header { min-height: clamp(100px, 5vw, 144px); }
  .home .brand { font-size: clamp(.82rem, .72vw, 1.15rem); }
  .home .brand img { width: clamp(58px, 3.5vw, 88px); }
  .home nav, .home .button, .home .game-links a,
  .home .label, .home .hero-stats, .home .site-footer,
  .home .diamond { font-size: clamp(.8rem, .7vw, 1.125rem); }
  .home nav { gap: clamp(2.5rem, 2.5vw, 5rem); }
  .home .hero { padding-top: clamp(4rem, 4vw, 6rem); }
  .home h1 { font-size: clamp(8rem, 5.7vw, 11rem); }
  .home .intro { font-size: clamp(1.1rem, 1vw, 1.5rem); max-width: 48ch; }
  .home .actions .button { min-width: clamp(300px, 18vw, 480px); padding: 1.2rem 1.75rem; }
  .home .featured-game { padding-block: clamp(1.5rem, 1.5vw, 2.5rem); }
  .home .featured-game > span:nth-child(2) { font-size: clamp(2.75rem, 2.2vw, 4rem); }
  .home h2 { font-size: clamp(4.5rem, 3.8vw, 6rem); }
  .home .game-card h3 { font-size: clamp(3rem, 2.7vw, 4.25rem); }
  .home .game-icon { width: clamp(72px, 4vw, 112px); height: auto; }
  .home .game-card p { max-width: 48ch; }
  .home .game-card { gap: 1.5rem; }
  .home .play-link { padding: 1.1rem 1.25rem; }
  .home .studio p { font-size: inherit; max-width: 55ch; }
  .home .studio img { max-width: clamp(240px, 17vw, 380px); }
}
@media (max-width: 800px) {
  .home .site-header { flex-wrap: wrap; padding-block: .75rem; }
  .upcoming-card { grid-template-columns: minmax(0, 1fr); gap: 1.25rem; }
  .upcoming-card .play-link { justify-self: start; }
}
@media (max-width: 600px) {
  .site-header { min-height: 84px; flex-wrap: wrap; padding-block: .75rem; }
  .brand { font-size: .65rem; gap: .25rem; }
  .brand img { width: 42px; }
  nav { gap: .6rem; }
  nav > a:not(.button) { display: none; }
  nav .button { font-size: .65rem; gap: .5rem; padding: .6rem; }
  .hero { padding-top: 3.5rem; }
  .hero .label { max-width: 17rem; font-size: .62rem; }
  .intro { font-size: 1rem; }
  .actions { width: 100%; }
  .actions .button { width: 100%; min-width: 0; }
  .featured-game { flex-wrap: wrap; margin-top: 3rem; }
  .featured-game > span:first-child { width: 100%; font-size: .6rem; }
  .game-grid { grid-template-columns: 1fr; }
  .games { padding-block: 2.5rem 4rem; }
  .upcoming { padding-bottom: 4rem; }
  .genre-strip .wrap { justify-content: center; }
  .genre-strip i { display: none; }
  .studio { grid-template-columns: 1fr; padding-block: 4rem; }
  .studio img { width: 120px; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition: none !important; }
}
