@font-face {
  font-family: Bricolage;
  src: url('/assets/fonts/bricolage-grotesque.woff2') format('woff2');
  font-weight: 200 800;
  font-display: swap;
}
:root {
  --bg: #000;
  --surface: #151515;
  --ink: #f7f7f5;
  --muted: #b8b8b6;
  --paper: #ececea;
  --dark-ink: #141414;
  --accent: #fff;
  --small: 14px;
  --body: 18px;
  --lead: 24px;
  --heading: clamp(30px, 3vw, 42px);
  --display: clamp(38px, 4.4vw, 68px);
  --gutter: 32px;
  --ease: cubic-bezier(.16, 1, .3, 1);
  color: var(--ink);
  background: var(--bg);
  font-family: Bricolage, Arial, sans-serif;
  font-synthesis: none;
  scroll-behavior: smooth;
  scroll-padding-top: 30px;
}
* { box-sizing: border-box; }
body, h1, h2, h3, p, figure { margin: 0; }
a { color: inherit; text-decoration: none; }
button { font: inherit; cursor: pointer; }
a, button { -webkit-tap-highlight-color: transparent; touch-action: manipulation; }
img { display: block; width: 100%; height: auto; }
h1, h2, h3 { font-weight: 650; letter-spacing: -.045em; text-wrap: balance; }
h2 { font-size: var(--heading); line-height: 1.05; }
p { text-wrap: pretty; }
a:focus-visible, button:focus-visible { outline: 3px solid currentColor; outline-offset: 6px; }
.frame { width: calc(100% - var(--gutter) * 2); max-width: 1680px; margin-inline: auto; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.skip-link { position: fixed; top: 16px; left: 16px; z-index: 20; padding: 14px 24px; background: var(--ink); color: var(--bg); transform: translateY(-200%); }
.skip-link:focus { transform: none; }
.site-header { display: flex; align-items: center; justify-content: space-between; height: 100px; }
.small-brand { position: relative; display: block; width: 122px; height: 54px; overflow: hidden; }
.small-brand img { position: absolute; top: 50%; transform: translateY(-50%); }
.site-header nav { display: flex; gap: 38px; font-size: var(--small); }
.site-header nav a, .footer-top nav a { display: inline-block; padding: 12px 0; transition: opacity 180ms, transform 240ms var(--ease); }
.site-header nav a:hover, .footer-top nav a:hover { transform: translateY(-3px); }
.hero { padding-bottom: 80px; }
.monument { position: relative; font-size: var(--display); line-height: 1; overflow: hidden; }
.monument img { width: 100%; aspect-ratio: 2.5; object-fit: contain; }
.hero-intro { display: flex; justify-content: space-between; align-items: center; gap: 40px; padding-top: 12px; }
.hero-intro > p { font-size: var(--body); line-height: 1.5; max-width: 510px; }
.button { display: inline-flex; align-items: center; justify-content: space-between; gap: 48px; min-height: 56px; padding: 16px 22px; background: var(--accent); color: var(--bg); font-size: var(--small); font-weight: 650; border: 0; transition: transform 240ms var(--ease); }
.button:hover { transform: translateY(-4px); }
.button:active { transform: translateY(0) scale(.97); }
.button > span { font-size: var(--lead); line-height: 1; }
.games-section { padding-block: 64px 144px; }
.games-heading { display: flex; align-items: baseline; gap: 26px; margin-bottom: 48px; }
.games-heading p { color: var(--muted); font-size: var(--small); }
.work-browser { display: grid; grid-template-columns: 1fr 1.15fr; gap: 5vw; align-items: start; }
.game-list { min-width: 0; }
.game-entry + .game-entry { margin-top: 16px; }
.game-link { display: grid; grid-template-columns: 96px 1fr; gap: 22px; align-items: center; padding-block: 13px; position: relative; transition: transform 240ms var(--ease); }
.game-link:hover { transform: translateX(6px); }
.entry-thumb { aspect-ratio: 1.5; object-fit: cover; }
.entry-copy { min-width: 0; }
.entry-copy h3 { font-size: var(--display); line-height: 1; font-weight: 550; color: var(--muted); transition: color 180ms; }
.game-entry.is-current h3, .game-link:hover h3, .game-link:focus-visible h3 { color: var(--ink); }
.entry-copy p { font-size: var(--small); color: var(--muted); line-height: 1.4; margin-top: 11px; }
.entry-action { display: none; }
.game-preview { position: sticky; top: 54px; margin-top: 13px; }
.preview-frame { display: block; width: 100%; aspect-ratio: 1.5; position: relative; overflow: hidden; }
.preview-image { position: absolute; inset: 0; height: 100%; object-fit: cover; opacity: 0; transition: opacity 250ms; }
.preview-image.is-active { opacity: 1; animation: picture-drift 16s ease-in-out infinite alternate; }
@keyframes picture-drift { from { transform: scale(1); } to { transform: scale(1.025); } }
.game-preview figcaption { display: flex; align-items: baseline; justify-content: space-between; margin-top: 20px; gap: 20px; }
.game-preview figcaption p { font-size: var(--lead); }
.game-preview figcaption a { font-size: var(--small); padding-block: 10px; }
.game-preview figcaption a:hover { text-decoration: underline; text-underline-offset: 5px; }
.studio-section { background: var(--paper); color: var(--dark-ink); }
.studio-inner { display: grid; grid-template-columns: 1fr 1.75fr; column-gap: 7vw; row-gap: 70px; padding-block: 104px 74px; }
.studio-heading > p { font-size: var(--body); line-height: 1.5; margin-top: 32px; }
.studio-statement { font-size: var(--lead); line-height: 1.45; max-width: 750px; letter-spacing: -.02em; }
.studio-detail { display: grid; grid-template-columns: 1fr 1fr; gap: 40px; margin-top: 32px; }
.studio-detail > p { font-size: var(--body); line-height: 1.6; }
.studio-portrait { height: 275px; overflow: hidden; }
.studio-portrait img { width: 100%; height: auto; max-width: 320px; margin-inline: auto; object-position: top; }
.studio-footnote { display: flex; align-self: center; justify-content: space-between; gap: 30px; align-items: end; }
.studio-footnote > p { font-size: var(--lead); line-height: 1.3; }
.plain-link { display: inline-block; font-size: var(--small); padding-block: 10px; text-decoration: underline; text-underline-offset: 5px; }
.plain-link:hover { text-decoration-thickness: 2px; }
.contact-section { padding-block: 125px 84px; display: grid; grid-template-columns: 1fr 1.75fr; gap: 7vw; align-items: end; }
.contact-section p { font-size: var(--body); line-height: 1.5; margin-top: 30px; }
.contact-link { font-size: clamp(40px, 6.5vw, 108px); line-height: 1; letter-spacing: -.055em; font-weight: 550; padding-bottom: 5px; transition: transform 240ms var(--ease); }
.contact-link:hover { transform: translateY(-5px); }
.site-footer { padding-block: 62px 26px; }
.footer-top { display: flex; justify-content: space-between; align-items: start; gap: 40px; font-size: var(--small); line-height: 1.5; }
.footer-top nav { display: flex; gap: 32px; }
.back-top { padding-block: 12px; }
.footer-wordmark { position: relative; display: block; width: 100%; height: 32vw; max-height: 460px; overflow: hidden; margin-block: 34px 30px; }
.footer-wordmark img { position: absolute; top: 50%; transform: translateY(-50%); }
.footer-legal { display: flex; justify-content: space-between; gap: 20px; font-size: var(--small); color: var(--muted); }
.game-dialog { width: min(960px, calc(100% - 48px)); max-height: 92dvh; overflow-y: auto; border: 0; padding: 0; background: var(--paper); color: var(--dark-ink); overscroll-behavior: contain; }
.game-dialog::backdrop { background: #000d; }
body:has(.game-dialog[open]) { overflow: hidden; }
.dialog-close { position: absolute; top: 18px; right: 18px; min-width: 76px; min-height: 44px; padding: 10px 16px; z-index: 1; background: var(--paper); color: var(--dark-ink); border: 0; font-size: var(--small); }
.dialog-close:hover { transform: translateY(-2px); }
#dialog-image { aspect-ratio: 1.5; object-fit: cover; }
.dialog-content { padding: 32px 40px 38px; }
.dialog-content > p { font-size: var(--body); line-height: 1.6; margin-block: 20px; max-width: 680px; }
@media (min-width: 1800px) { .hero { padding-top: 20px; } }
@media (max-width: 1100px) {
  :root { --gutter: 24px; --display: clamp(35px, 4.7vw, 50px); }
  .site-header { height: 88px; }
  .hero { padding-block: 12px 64px; }
  .hero-intro > p { max-width: 430px; }
  .work-browser { grid-template-columns: 1fr 1fr; gap: 32px; }
  .game-link { grid-template-columns: 70px 1fr; gap: 16px; }
  .games-section { padding-block: 58px 100px; }
  .studio-inner { column-gap: 40px; }
  .studio-detail { grid-template-columns: 1fr; gap: 20px; }
  .studio-footnote { align-items: start; flex-direction: column; }
  .contact-section { grid-template-columns: 1fr 1.5fr; gap: 30px; }
  .contact-link { font-size: 7.5vw; }
}
@media (max-width: 700px) {
  :root { --gutter: 20px; --small: 14px; --body: 18px; --lead: 22px; --heading: 32px; --display: clamp(35px, 8.8vw, 60px); }
  .site-header { height: 82px; }
  .small-brand { width: 96px; height: 48px; }
  .site-header nav { gap: 23px; }
  .hero { padding-top: 12px; padding-bottom: 64px; }
  .monument { margin-inline: -10px; }
  .monument img { min-height: 190px; object-fit: contain; }
  .hero-intro { flex-direction: column; align-items: start; gap: 26px; padding-top: 12px; }
  .hero-intro > p { max-width: 330px; font-size: var(--body); }
  .button { min-height: 54px; gap: 42px; }
  .games-section { padding-block: 20px 80px; }
  .games-heading { align-items: start; gap: 12px; flex-direction: column; margin-bottom: 34px; }
  .work-browser { display: block; }
  .game-preview { display: none; }
  .game-entry + .game-entry { margin-top: 42px; }
  .game-link { display: grid; grid-template-columns: 1fr auto; padding: 0; gap: 18px 10px; }
  .game-link:hover { transform: none; }
  .entry-thumb { grid-column: 1 / -1; width: 100%; }
  .entry-copy h3 { color: var(--ink); font-size: var(--display); }
  .entry-copy p { margin-top: 9px; }
  .entry-action { display: block; font-size: var(--small); padding-block: 14px; align-self: start; }
  .studio-inner { grid-template-columns: 1fr; row-gap: 30px; padding-block: 62px 0; }
  .studio-heading { display: flex; justify-content: space-between; align-items: start; gap: 20px; }
  .studio-heading > p { margin-top: 0; font-size: var(--small); }
  .studio-statement { font-size: var(--lead); }
  .studio-detail { gap: 20px; margin-top: 28px; }
  .studio-detail > p { font-size: var(--body); }
  .studio-portrait { grid-row: 4; height: 260px; width: 90%; margin-inline: auto; }
  .studio-portrait img { max-width: 270px; }
  .studio-footnote { gap: 12px; }
  .studio-footnote > p { font-size: var(--body); }
  .studio-footnote br { display: none; }
  .contact-section { grid-template-columns: 1fr; gap: 32px; padding-block: 70px 50px; }
  .contact-section p { margin-top: 24px; }
  .contact-link { font-size: 11.7vw; letter-spacing: -.045em; }
  .site-footer { padding-top: 30px; }
  .footer-top { flex-wrap: wrap; gap: 22px; }
  .footer-top nav { gap: 22px; }
  .back-top { padding: 0; }
  .footer-wordmark { height: 36vw; margin-block: 20px 30px; }
  .footer-legal { align-items: start; flex-direction: column; gap: 10px; }
  .game-dialog { width: calc(100% - 24px); }
  .dialog-close { top: 10px; right: 10px; }
  .dialog-content { padding: 26px 24px 30px; }
}
@media (prefers-reduced-motion: reduce) {
  :root { scroll-behavior: auto; }
  *, *::before, *::after { animation: none !important; transition: none !important; }
}

/* Game pages share the studio's art direction and navigation. */
.availability, .entry-status, .preview-status, .related-status {
  font-size: var(--small);
  line-height: 1.5;
  color: var(--muted);
}
.is-live { color: #b8e6b6; }
.entry-copy p.entry-status.is-live { color: #b8e6b6; }
.preview-status { display: block; margin-top: 7px; }
.game-page-hero {
  display: grid;
  grid-template-columns: 1fr 1.18fr;
  gap: 6vw;
  align-items: center;
  padding-block: 48px 112px;
}
.game-page-copy { min-width: 0; }
.game-page-copy h1 { font-size: clamp(64px, 7vw, 108px); line-height: .95; max-width: 10ch; }
.game-page-copy > .availability { margin-top: 24px; }
.game-page-intro { font-size: var(--lead); line-height: 1.4; margin-top: 22px; max-width: 28ch; }
.game-page-action { margin-top: 30px; }
.game-page-art { width: 100%; overflow: hidden; }
.game-page-art figcaption { font-size: var(--small); line-height: 1.5; color: var(--muted); margin-top: 14px; }
.game-page-art img { aspect-ratio: 1.5; object-fit: cover; animation: picture-drift 16s ease-in-out infinite alternate; }
.game-world { background: var(--paper); color: var(--dark-ink); }
.game-world-inner { display: grid; grid-template-columns: 1fr 1.75fr; gap: 7vw; padding-block: 96px; }
.game-world-inner h2 { max-width: 12ch; }
.game-world-story p { font-size: var(--body); line-height: 1.6; max-width: 65ch; }
.game-world-story p + p { margin-top: 24px; }
.game-world-story p.world-description { font-size: var(--lead); line-height: 1.45; }
.more-games { padding-block: 96px 58px; }
.more-games h2 { margin-bottom: 42px; }
.more-games-list { display: grid; grid-template-columns: 1fr 1fr; gap: 32px 5vw; }
.related-game { display: grid; grid-template-columns: minmax(110px, 34%) 1fr; gap: 24px; align-items: center; min-width: 0; transition: transform 240ms var(--ease); }
.related-game:hover { transform: translateX(6px); }
.related-game img { aspect-ratio: 1.5; object-fit: cover; }
.related-game h3 { font-size: var(--heading); line-height: 1.05; }
.related-game p { margin-top: 10px; }
.not-found { padding-block: 100px; }
.not-found h1 { font-size: var(--display); }
.not-found p { font-size: var(--body); margin-block: 28px; }
@media (max-width: 1100px) {
  .game-page-hero { gap: 36px; padding-block: 32px 80px; }
  .game-page-copy h1 { font-size: clamp(56px, 7vw, 78px); }
  .game-world-inner { gap: 40px; padding-block: 72px; }
  .related-game { gap: 18px; }
  .related-game h3 { font-size: var(--lead); }
}
@media (max-width: 700px) {
  .game-page-hero { grid-template-columns: 1fr; gap: 36px; padding-block: 16px 56px; }
  .game-page-copy h1 { font-size: clamp(56px, 15.8vw, 90px); max-width: none; }
  .game-page-copy > .availability { margin-top: 20px; }
  .game-page-intro { margin-top: 18px; }
  .game-page-action { margin-top: 24px; }
  .game-world-inner { grid-template-columns: 1fr; gap: 30px; padding-block: 58px; }
  .game-world-inner h2 { max-width: none; }
  .game-world-story p.world-description { font-size: var(--body); line-height: 1.6; }
  .more-games { padding-block: 60px 32px; }
  .more-games h2 { margin-bottom: 32px; }
  .more-games-list { grid-template-columns: 1fr; gap: 28px; }
  .related-game { grid-template-columns: 36% 1fr; gap: 22px; }
  .related-game h3 { font-size: var(--lead); }
  .related-game p { margin-top: 7px; }
}

/* Factual game and studio information follows the existing type and space system. */
.collection-intro { max-width: 72ch; font-size: var(--body); line-height: 1.55; margin: -22px 0 40px; }
.collection-intro a, .game-credit a, .game-facts a, .about-hero p a, .game-world-story a { text-decoration: underline; text-underline-offset: 4px; }
.collection-intro > a:last-child { display: inline-block; margin-left: .3em; }
.breadcrumbs { padding-block: 22px 8px; font-size: var(--small); line-height: 1.5; }
.breadcrumbs ol { display: flex; flex-wrap: wrap; gap: 10px; list-style: none; padding: 0; margin: 0; }
.breadcrumbs li + li::before { content: '/'; color: var(--muted); margin-right: 10px; }
.breadcrumbs a { text-decoration: underline; text-underline-offset: 4px; }
.game-credit { margin-top: 16px; font-size: var(--small); line-height: 1.5; }
.game-facts { padding-block: 90px 30px; }
.game-facts dl { display: grid; grid-template-columns: repeat(4, 1fr); gap: 30px; margin: 38px 0 0; }
.game-facts dt { font-size: var(--small); color: var(--muted); margin-bottom: 10px; }
.game-facts dd { font-size: var(--lead); line-height: 1.35; margin: 0; }
.facts-note { margin-top: 32px; max-width: 70ch; font-size: var(--small); line-height: 1.6; color: var(--muted); }
.questions-section { display: grid; grid-template-columns: 1fr 1.75fr; gap: 7vw; padding-block: 90px; }
.questions-heading > p { font-size: var(--body); line-height: 1.5; max-width: 25ch; margin-top: 26px; }
.questions-list { display: grid; gap: 38px; }
.question h3 { font-size: var(--lead); line-height: 1.25; font-weight: 600; letter-spacing: -.025em; }
.question > p { font-size: var(--body); line-height: 1.6; margin-top: 14px; max-width: 65ch; }
.editorial-intro { padding-block: 56px 78px; }
.editorial-intro h1, .about-hero h1 { font-size: var(--display); line-height: 1; max-width: 16ch; }
.editorial-intro > p { font-size: var(--lead); line-height: 1.5; max-width: 54ch; margin-top: 30px; }
.editorial-intro > p.collection-status { font-size: var(--body); max-width: 65ch; }
.collection { display: grid; gap: 88px; padding-bottom: 40px; }
.collection-game { display: grid; grid-template-columns: 1.05fr 1fr; gap: 7vw; align-items: center; }
.collection-art { overflow: hidden; }
.collection-art img { aspect-ratio: 1.5; object-fit: cover; transition: transform 450ms var(--ease); }
.collection-art:hover img { transform: scale(1.025); }
.collection-game .availability { margin-top: 18px; }
.collection-game p:not(.availability) { font-size: var(--body); line-height: 1.6; margin-top: 24px; max-width: 55ch; }
.collection-game .plain-link { display: inline-block; margin-top: 28px; }
.about-hero { display: grid; grid-template-columns: 1.4fr 1fr; gap: 7vw; align-items: center; padding-block: 56px 96px; }
.about-hero p { font-size: var(--body); line-height: 1.6; margin-top: 26px; max-width: 60ch; }
.about-hero p.editorial-lead { font-size: var(--lead); line-height: 1.4; }
.about-hero .button { margin-top: 32px; }
.about-hero figure { max-height: 700px; overflow: hidden; }
.about-hero figure img { object-fit: contain; max-height: 700px; }
.studio-facts { background: var(--paper); color: var(--dark-ink); }
@media (max-width: 1100px) {
  .questions-section, .collection-game, .about-hero { gap: 40px; }
  .game-facts dl { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 700px) {
  .collection-intro { margin: -6px 0 34px; font-size: var(--body); }
  .collection-intro > a:last-child { margin: 12px 0 0; }
  .breadcrumbs { padding-block: 14px 20px; }
  .game-facts { padding-block: 58px 10px; }
  .game-facts dl { gap: 30px 18px; margin-top: 30px; }
  .game-facts dd { font-size: var(--body); }
  .questions-section { grid-template-columns: 1fr; gap: 34px; padding-block: 58px; }
  .questions-heading > p { max-width: none; margin-top: 20px; }
  .questions-list { gap: 32px; }
  .question h3 { font-size: 22px; }
  .editorial-intro { padding-block: 28px 52px; }
  .editorial-intro h1, .about-hero h1 { font-size: 48px; }
  .editorial-intro > p { font-size: var(--body); margin-top: 24px; }
  .collection { gap: 56px; }
  .collection-game { grid-template-columns: 1fr; gap: 26px; }
  .collection-game h2 { font-size: var(--display); }
  .about-hero { grid-template-columns: 1fr; gap: 36px; padding-block: 28px 58px; }
  .about-hero figure { max-height: 400px; }
  .about-hero figure img { max-height: 400px; }
}
