/* Generated by tools/subset-fonts.mjs. Do not edit by hand. Fonts: SIL Open Font License. */
@font-face{font-family:"Archivo";src:url("/assets/fonts/archivo.31ca5316f4.woff2") format("woff2");font-display:swap;font-weight:400 900;font-stretch:75% 125%;unicode-range:U+0020-007E,U+00A0-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2010-2027,U+2030-205E,U+2190-21FF,U+2212,U+2715,U+2733;}
@font-face{font-family:"DM Mono";src:url("/assets/fonts/dm-mono-400.b853c983fb.woff2") format("woff2");font-display:swap;font-weight:400;unicode-range:U+0020-007E,U+00A0-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2010-2027,U+2030-205E,U+2190-21FF,U+2212,U+2715,U+2733;}
@font-face{font-family:"DM Mono";src:url("/assets/fonts/dm-mono-500.4faaa8923a.woff2") format("woff2");font-display:swap;font-weight:500;unicode-range:U+0020-007E,U+00A0-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2010-2027,U+2030-205E,U+2190-21FF,U+2212,U+2715,U+2733;}
@font-face{font-family:"DotGothic16";src:url("/assets/fonts/dotgothic16.50549ce7e0.woff2") format("woff2");font-display:swap;font-weight:400;}
@font-face{font-family:"Noto Sans SC";src:url("/assets/fonts/noto-sans-sc.b0fcc35249.woff2") format("woff2");font-display:swap;font-weight:100 900;unicode-range:U+2E80-2FFF,U+3000-303F,U+3040-30FF,U+3400-4DBF,U+4E00-9FFF,U+F900-FAFF,U+FE30-FE4F,U+FF00-FFEF;}
@font-face{font-family:"Noto Sans JP";src:url("/assets/fonts/noto-sans-jp.bcb5291bda.woff2") format("woff2");font-display:swap;font-weight:100 900;unicode-range:U+2E80-2FFF,U+3000-303F,U+3040-30FF,U+3400-4DBF,U+4E00-9FFF,U+F900-FAFF,U+FE30-FE4F,U+FF00-FFEF;}

/* ==========================================================================
   site (merged; original cascade order preserved)
   ========================================================================== */
@charset "UTF-8";
:root {
  --ink: #252432;
  --muted: #686574;
  --paper: #e9e6f5;
  --line: rgba(37, 36, 50, 0.19);
  --accent: #b8a2e8;
  --lime: #e1fa93;
  --pad: clamp(22px, 4vw, 72px);
  --sans: "Archivo", "Noto Sans SC", sans-serif;
  --mono: "DM Mono", monospace;
  --ease: cubic-bezier(0.22, 1, 0.36, 1);
  --header: 104px;
  color-scheme: light;
}
html[data-page="about"] {
  --paper: #f0e9de;
  --accent: #dd8d67;
  --muted: #73695e;
}
html[data-page="works"] {
  --paper: #e8eee8;
  --accent: #98b5aa;
  --muted: #5f7169;
}
html[data-page="contact"] {
  --paper: #f4e4e8;
  --accent: #d48ca6;
  --muted: #7d6370;
}
* {
  box-sizing: border-box;
}
html {
  scroll-behavior: smooth;
  scroll-padding-top: 110px;
}
body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--sans);
  font-size: 16px;
  line-height: 1.6;
  transition: background 0.8s ease;
  overflow-x: clip;
}
html[data-lang="ja"] {
  --sans: "Archivo", "Noto Sans JP", sans-serif;
}
button, a {
  -webkit-tap-highlight-color: transparent;
}
button, input {
  font: inherit;
}
button {
  color: inherit;
}
a {
  color: inherit;
  text-decoration: none;
}
button {
  cursor: pointer;
}
button:disabled {
  cursor: default;
}
img, svg, canvas {
  display: block;
}
svg {
  width: 24px;
  height: 24px;
  stroke: currentColor;
  stroke-width: 1.5;
  fill: none;
}
p, h1, h2, h3 {
  margin: 0;
}
p {
  line-height: 1.85;
}
h1, h2, h3 {
  font-weight: 600;
  line-height: 1.2;
  letter-spacing: -0.04em;
}
button {
  background: none;
  border: 0;
}
::selection {
  background: var(--ink);
  color: var(--paper);
}
:focus-visible {
  outline: 2px solid #6441b7;
  outline-offset: 6px;
}
/* A Japanese browser on a first visit: wait for the translation instead of flashing Chinese (see BOOT). */
html[data-lang-pending] body {
  visibility: hidden;
}
main:focus {
  outline: none;
}
main {
  position: relative;
  z-index: 2;
  /* Wide drawings may bleed past the screen edge; never let them widen the page. */
  overflow-x: clip;
}
/* Even out wrapped headings and keep a lone character off the last line of body copy. */
h1, h2, h3 {
  text-wrap: balance;
}
p {
  text-wrap: pretty;
}
/* Japanese wraps between phrases rather than inside words. A phrase too long for its line may still
   break anywhere, which also keeps narrow grid columns from being stretched by one long phrase. */
html[data-lang="ja"] :is(h1, h2, h3, p, dt, dd, li) {
  word-break: auto-phrase;
  overflow-wrap: anywhere;
}
/* Keep the Chinese game name in one piece inside English sentences. */
html[data-lang="en"] {
  word-break: keep-all;
}
a, button {
  touch-action: manipulation;
}
.mono, .eyebrow {
  font-family: var(--mono);
  font-weight: 400;
  font-size: 12px;
  line-height: 1.5;
  letter-spacing: 0.04em;
}
.eyebrow {
  display: block;
  margin-bottom: 24px;
  letter-spacing: 0.1em;
  font-family: var(--sans);
  font-weight: 500;
  font-size: 12px;
}
.skip-link {
  position: fixed;
  z-index: 200;
  top: 10px;
  left: 12px;
  padding: 12px 20px;
  background: var(--ink);
  color: white;
  transform: translateY(-200%);
}
.skip-link:focus {
  transform: none;
}
.signal-dot {
  display: inline-block;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #586c48;
  flex: none;
  box-shadow: 0 0 0 4px rgba(104, 132, 78, 0.1);
}
.star {
  width: 52px;
  height: 52px;
  stroke: none;
  fill: currentColor;
}
.page-progress {
  height: 2px;
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
  background: var(--ink);
  transform: scaleX(0);
  transform-origin: 0 0;
  z-index: 80;
  pointer-events: none;
}
/* The persistent broadcast frame. */
.site-header {
  height: var(--header);
  padding: 0 var(--pad);
  display: flex;
  align-items: center;
  justify-content: space-between;
  position: relative;
  z-index: 20;
  border-bottom: 1px solid var(--line);
  margin: 0 var(--pad);
  padding-inline: 0;
}
.brand {
  display: flex;
  gap: 14px;
  align-items: center;
  line-height: 1;
}
.brand-symbol {
  font-size: 34px;
  font-weight: 800;
  letter-spacing: -0.13em;
  position: relative;
  padding-right: 12px;
}
.brand-symbol > span {
  font-size: 15px;
  font-weight: 500;
  position: absolute;
  top: -4px;
  right: -3px;
}
.brand-caption {
  font-size: 12px;
  line-height: 1.65;
  letter-spacing: 0.12em;
  font-weight: 600;
}
.brand-caption > span {
  font-size: 11px;
  letter-spacing: 0.12em;
  font-weight: 400;
  color: var(--muted);
}
.header-center {
  display: flex;
  gap: 12px;
  align-items: center;
  margin-left: 10px;
}
.header-controls {
  display: flex;
  gap: 22px;
  align-items: center;
}
.language {
  display: flex;
  align-items: center;
  gap: 3px;
}
.language button {
  font-size: 12px;
  min-width: 34px;
  height: 34px;
  border-radius: 50%;
  transition:
    background 0.3s,
    color 0.3s;
}
.language button[aria-pressed="true"] {
  background: var(--ink);
  color: var(--paper);
}
.language button:hover {
  box-shadow: inset 0 0 0 1px var(--line);
}
.motion-toggle {
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  border: 1px solid var(--line);
  border-radius: 50%;
}
.motion-bars {
  display: flex;
  gap: 3px;
  align-items: center;
  height: 14px;
}
.motion-bars i {
  display: block;
  width: 2px;
  height: 12px;
  background: currentColor;
  animation: equalize 1.2s ease-in-out infinite alternate;
}
.motion-bars i:nth-child(2) {
  animation-delay: -0.7s;
  height: 6px;
}
.motion-bars i:nth-child(3) {
  animation-delay: -0.3s;
  height: 10px;
}
.motion-toggle[aria-pressed="true"] .motion-bars i {
  height: 8px;
  animation: none;
}
@keyframes equalize {
  to {
    transform: scaleY(0.35);
  }
}
.channel-dock {
  position: fixed;
  z-index: 50;
  bottom: 24px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  gap: 4px;
  padding: 7px;
  background: rgba(251, 250, 252, 0.78);
  border: 1px solid rgba(255, 255, 255, 0.85);
  box-shadow:
    0 4px 36px rgba(30, 24, 54, 0.1),
    0 0 0 1px rgba(50, 40, 60, 0.08);
  border-radius: 12px;
  backdrop-filter: blur(24px);
  -webkit-backdrop-filter: blur(24px);
}
.channel-dock a {
  display: flex;
  align-items: center;
  gap: 13px;
  justify-content: center;
  min-width: 110px;
  padding: 14px 18px;
  position: relative;
  z-index: 1;
  white-space: nowrap;
  font-size: 12px;
  transition: color 0.35s;
  border-radius: 7px;
}
.channel-dock a[aria-current="page"] {
  color: #f8f7fc;
}
.dock-number {
  font-family: var(--mono);
  font-size: 12px;
  opacity: 0.5;
}
.dock-led {
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: currentColor;
  opacity: 0;
}
.channel-dock a[aria-current="page"] .dock-led {
  opacity: 1;
  background: var(--lime);
}
.dock-indicator {
  position: absolute;
  inset: 7px auto 7px 7px;
  width: calc((100% - 26px) / 4);
  background: var(--ink);
  border-radius: 7px;
  transform: translateX(calc(var(--index) * (100% + 4px)));
  transition: transform 0.6s var(--ease);
  pointer-events: none;
}
/* Large type, generous space, a single living object. */
.hero {
  position: relative;
  margin: 0 var(--pad);
}
.hero-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-top: 38px;
  gap: 24px;
}
.hero-top .eyebrow {
  margin: 0;
}
.home-hero {
  min-height: 825px;
  padding-bottom: 80px;
}
.hero-name {
  position: relative;
  margin-top: 36px;
  font-size: clamp(64px, 12.4vw, 195px);
  line-height: 0.89;
  letter-spacing: -0.07em;
  font-weight: 700;
  font-variation-settings:
    "wdth" 94,
    "wght" 730;
  pointer-events: none;
  z-index: 3;
}
.name-line {
  display: block;
  transform-origin: 0 50%;
}
.name-line.second {
  margin-top: 8px;
}
.name-dot {
  color: var(--accent);
}
.hero-copy {
  margin-top: 42px;
  max-width: 450px;
  position: relative;
  z-index: 4;
}
.hero-copy h2 {
  font-size: clamp(20px, 2.2vw, 30px);
  letter-spacing: -0.02em;
  font-weight: 500;
}
.hero-copy p {
  font-size: 14px;
  margin-top: 17px;
  max-width: 380px;
  color: var(--muted);
}
.button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 27px;
  min-height: 50px;
  padding: 12px 23px;
  font-size: 12px;
  font-weight: 500;
  border-radius: 5px;
  position: relative;
  transition:
    background 0.3s,
    color 0.3s,
    box-shadow 0.3s;
  transform: translate3d(var(--mx, 0px), var(--my, 0px), 0);
  will-change: transform;
}
.button svg {
  width: 18px;
  height: 18px;
  transition: transform 0.4s var(--ease);
}
.button:hover svg {
  transform: translateX(4px);
}
.button.primary {
  background: var(--ink);
  color: #fff;
}
.button.primary:hover {
  background: #46415d;
  box-shadow: 0 6px 24px rgba(38, 30, 59, 0.18);
}
.button.outline {
  border: 1px solid var(--line);
  background: rgba(255, 255, 255, 0.12);
}
.button.outline:hover {
  background: rgba(255, 255, 255, 0.4);
}
.text-link {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  font-size: 12px;
  padding-block: 8px;
  position: relative;
}
.text-link:after {
  content: "";
  position: absolute;
  bottom: 3px;
  left: 0;
  width: 100%;
  height: 1px;
  background: currentColor;
  transform: scaleX(0.15);
  transform-origin: left;
  transition: transform 0.45s var(--ease);
}
.text-link:hover:after {
  transform: scaleX(1);
}
.text-link svg {
  width: 18px;
  height: 18px;
}
@keyframes nudge {
  0%,
  100% {
    transform: translateY(-3px);
  }
  50% {
    transform: translateY(3px);
  }
}
.section {
  margin-inline: var(--pad);
  padding-block: 100px;
}
.section-heading {
  display: flex;
  justify-content: space-between;
  align-items: end;
  gap: 32px;
  margin-bottom: 44px;
}
.section-heading .eyebrow {
  margin-bottom: 18px;
}
.section-heading h2 {
  font-size: clamp(28px, 3.5vw, 48px);
  font-weight: 500;
  letter-spacing: -0.035em;
}
.selected {
  border-top: 1px solid var(--line);
}
.project-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 26px;
}
.mini-project {
  min-width: 0;
  transform-style: preserve-3d;
}
.art-link {
  display: block;
  position: relative;
  overflow: hidden;
  border-radius: 6px;
  aspect-ratio: 1.27;
}
.project-open {
  position: absolute;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: var(--paper);
  right: 16px;
  bottom: 16px;
  display: grid;
  place-items: center;
  font-size: 21px;
  transform: translateY(65px);
  transition: transform 0.5s var(--ease);
}
.art-link:hover .project-open, .art-link:focus-visible .project-open {
  transform: translateY(0);
}
.mini-meta {
  padding-top: 20px;
}
.mini-meta > .mono {
  font-size: 12px;
  color: var(--muted);
  letter-spacing: 0.035em;
}
.mini-meta h3 {
  font-size: 22px;
  margin-top: 10px;
  font-weight: 500;
  letter-spacing: -0.035em;
}
.home-note {
  border-top: 1px solid var(--line);
  display: grid;
  grid-template-columns: 1fr 1.25fr;
  align-items: center;
  gap: 12%;
  padding-block: 125px;
}
.home-note h2 {
  font-size: clamp(34px, 4.5vw, 64px);
  line-height: 1.3;
  font-weight: 500;
}
.home-note p {
  max-width: 440px;
  color: var(--muted);
  margin-top: 28px;
  font-size: 15px;
}
.home-note .text-link {
  margin-top: 25px;
}
.note-symbol {
  position: relative;
  display: grid;
  place-items: center;
  width: 260px;
  height: 260px;
  margin: auto;
  border: 1px solid var(--line);
  border-radius: 50%;
}
.note-symbol:after {
  content: "";
  position: absolute;
  border: 1px solid var(--line);
  border-radius: 50%;
  inset: 16px;
}
.note-symbol .star {
  width: 135px;
  height: 135px;
  color: var(--accent);
  animation: spin 28s linear infinite;
}
.orbit-text {
  position: absolute;
  bottom: 42px;
  font-size: 12px;
  letter-spacing: 0.2em;
}
html[data-lang="en"] .orbit-text {
  letter-spacing: 0.08em;
}
@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}
/* Project art is built from real CSS volumes, not stock imagery. */
.art {
  width: 100%;
  height: 100%;
  position: relative;
  overflow: hidden;
  isolation: isolate;
  container-type: inline-size;
}
.art:after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: radial-gradient(
    circle at var(--px, 50%) var(--py, 20%),
    rgba(255, 255, 255, 0.22),
    transparent 60%
  );
  z-index: 6;
}
.art-caption, .art-footer {
  position: absolute;
  z-index: 5;
  left: 7%;
  right: 7%;
  font-family: var(--mono);
  font-size: clamp(11px, 2.1cqw, 13px);
  letter-spacing: 0.07em;
}
.art-caption {
  top: 8%;
  font-size: clamp(10px, 1.8cqw, 11px);
  opacity: 0.74;
}
.art-footer {
  bottom: 8%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-weight: 500;
}
.art-footer b {
  font-size: 2.5em;
  line-height: 1;
  font-weight: 400;
}
.art-calc {
  background: #a6b5e5;
  color: #253756;
}
.art-calc:before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 25% 15%, #dce3ff, transparent 58%);
}
.calc-orbit {
  position: absolute;
  inset: 10% 25%;
  border: 1px solid #25375638;
  border-radius: 50%;
  transform: rotate(-30deg);
  box-shadow:
    0 0 0 18px #25375608,
    0 0 0 40px #25375608;
}
.battle-panels {
  position: absolute;
  inset: 0;
  perspective: 900px;
  transform-style: preserve-3d;
}
.battle-panel {
  position: absolute;
  left: 11%;
  top: 23%;
  width: 45%;
  height: 48%;
  padding: 5%;
  background: #e9f0f4;
  border-radius: 8px;
  transform: rotateY(14deg) rotateZ(-14deg);
  box-shadow:
    5px 7px 0 #6881b4,
    15px 25px 35px #34508340;
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.battle-panel > span {
  font-family: var(--mono);
  font-size: 2cqw;
  letter-spacing: 0.12em;
}
.battle-panel strong {
  font-size: 12cqw;
  letter-spacing: -0.06em;
  font-weight: 500;
  line-height: 1.3;
}
.battle-panel small {
  font: 1.6cqw var(--mono);
  margin-top: 12%;
}
.stat-bar {
  height: 1.6cqw;
  background: #3c577620;
  border-radius: 5px;
}
.stat-bar i {
  display: block;
  width: 86%;
  height: 100%;
  background: #4767d5;
  border-radius: 5px;
}
.battle-panel.defense {
  left: 49%;
  top: 37%;
  height: 41%;
  width: 39%;
  transform: rotateY(-14deg) rotateZ(12deg);
  background: #e4f09e;
  box-shadow:
    4px 6px 0 #869653,
    10px 15px 25px #34508330;
}
.defense strong {
  font-size: 10cqw;
}
.defense .stat-bar i {
  width: 61%;
  background: #607539;
}
.battle-spark {
  position: absolute;
  font-size: 20cqw;
  line-height: 1;
  left: 41%;
  top: 23%;
  color: #ff6e55;
  transform: rotate(-15deg);
  text-shadow: 3px 3px #cd5745;
  animation: spark-breathe 5s ease-in-out infinite;
}
@keyframes spark-breathe {
  50% {
    transform: rotate(15deg) scale(1.07);
  }
}
.art-tracker {
  background: #cad8b2;
  color: #304b40;
}
.art-tracker:before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 45% 15%, #f1edbc, transparent 65%);
}
.sea-grid {
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(#53695517 1px, transparent 1px),
    linear-gradient(90deg, #53695517 1px, transparent 1px);
  background-size: 10% 10%;
  transform: perspective(600px) rotateX(55deg) scale(1.5);
  transform-origin: center 80%;
  mask-image: linear-gradient(transparent, #000);
}
.ship {
  position: absolute;
  left: 18%;
  top: 34%;
  width: 65%;
  height: 34%;
  transform: rotate(-12deg);
  filter: drop-shadow(10px 15px 9px #3a5f4633);
  animation: ship-float 7s ease-in-out infinite;
}
.hull {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 30%;
  background: #334e47;
  clip-path: polygon(0 0, 100% 0, 88% 100%, 9% 100%);
}
.hull:after {
  content: "";
  position: absolute;
  inset: 58% 0 25%;
  background: #f3f1c8;
}
.containers {
  position: absolute;
  inset: 4% 14% 30% 22%;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-template-rows: repeat(2, 1fr);
  gap: 2px;
}
.containers i {
  background: repeating-linear-gradient(90deg, #ddb468 0 12%, #bb9453 12% 15%);
  border: 1px solid #a6854e;
  box-shadow: inset 0 3px #f9dc99;
}
.containers i:nth-child(2n) {
  background: repeating-linear-gradient(90deg, #789688 0 12%, #577965 12% 15%);
  border-color: #456650;
  box-shadow: inset 0 3px #a1baaa;
}
.containers i:nth-child(3n) {
  background: repeating-linear-gradient(90deg, #bf7562 0 12%, #a76153 12% 15%);
  border-color: #925445;
  box-shadow: inset 0 3px #d9927b;
}
.ship-bridge {
  position: absolute;
  left: 6%;
  top: 10%;
  width: 15%;
  height: 66%;
  background: #f2f0d5;
  clip-path: polygon(
    15% 0,
    80% 0,
    80% 35%,
    100% 35%,
    100% 100%,
    0 100%,
    0 35%,
    15% 35%
  );
}
.ship-bridge:after {
  content: "";
  position: absolute;
  left: 14%;
  right: 15%;
  top: 45%;
  height: 14%;
  background: repeating-linear-gradient(
    90deg,
    #334e47 0 23%,
    transparent 23% 37%
  );
}
.route-line {
  position: absolute;
  left: 10%;
  right: 8%;
  bottom: 20%;
  height: 10%;
  border-bottom: 1px dashed #45665077;
  border-radius: 50%;
}
.route-line i {
  position: absolute;
  width: 7px;
  height: 7px;
  border: 1px solid #456650;
  border-radius: 50%;
  bottom: -4px;
}
.route-line i:last-child {
  right: 0;
  background: #456650;
  box-shadow: 0 0 0 5px #45665012;
}
@keyframes ship-float {
  50% {
    transform: translateY(-8px) rotate(-8deg);
  }
}
/* The three interior channels. */
.interior-hero {
  min-height: 730px;
  padding-bottom: 90px;
}
.page-title {
  font-size: clamp(54px, 6.4vw, 100px);
  font-weight: 500;
  line-height: 1.25;
  letter-spacing: -0.06em;
  margin-top: 75px;
  position: relative;
  z-index: 3;
  max-width: 75%;
}
.page-intro {
  margin-top: 42px;
  max-width: 470px;
}
.page-intro .large-copy {
  font-size: 19px;
  line-height: 1.8;
  margin-bottom: 22px;
  color: var(--ink);
}
.page-intro p {
  font-size: 15px;
  color: var(--muted);
}
.profile-section {
  border-top: 1px solid var(--line);
}
.profile-section .section-heading {
  align-items: start;
}
.profile-section .section-heading h2 {
  width: 62%;
  line-height: 1.35;
}
.profile-rows {
  margin-top: 65px;
}
.profile-row {
  display: grid;
  grid-template-columns: 0.17fr 1fr 1fr;
  gap: 38px;
  padding: 46px 0;
  border-top: 1px solid var(--line);
  align-items: start;
}
.row-number {
  color: var(--muted);
  padding-top: 5px;
}
.profile-row .eyebrow {
  font: 12px var(--mono);
  color: var(--muted);
  margin-bottom: 15px;
}
.profile-row h3 {
  font-size: 26px;
  font-weight: 500;
}
.profile-row p {
  font-size: 15px;
  color: var(--muted);
}
.approach {
  border-top: 1px solid var(--line);
}
.approach-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 28px;
}
.approach-card {
  padding: 28px 30px 35px;
  background: #ffffff2b;
  border: 1px solid var(--line);
  border-radius: 5px;
}
.approach-card > .mono {
  font-size: 12px;
  color: var(--muted);
}
.approach-card h3 {
  font-size: 27px;
  font-weight: 500;
  margin: 18px 0 15px;
}
.approach-card p {
  font-size: 14px;
  color: var(--muted);
}
.approach-icon {
  height: 130px;
  position: relative;
  width: 120px;
  margin-bottom: 24px;
  color: var(--accent);
}
.icon-0 i {
  position: absolute;
  inset: 20% 0;
  border: 2px solid var(--accent);
  border-radius: 90% 10%;
  transform: rotate(45deg);
}
.icon-0 b {
  position: absolute;
  left: 40px;
  top: 45px;
  width: 40px;
  height: 40px;
  background: var(--accent);
  border-radius: 50%;
}
.icon-1 i {
  position: absolute;
  width: 66px;
  height: 66px;
  border: 2px solid var(--accent);
  left: 0;
  top: 45px;
  transform: rotate(-12deg);
}
.icon-1 i:nth-child(2) {
  left: 28px;
  top: 26px;
  transform: rotate(8deg);
}
.icon-1 i:nth-child(3) {
  left: 46px;
  top: 4px;
  transform: rotate(20deg);
  background: var(--accent);
  opacity: 0.5;
}
.icon-2 i {
  position: absolute;
  left: 4px;
  top: 24px;
  width: 95px;
  height: 95px;
  border: 2px solid var(--accent);
  border-radius: 50%;
}
.icon-2 b {
  position: absolute;
  left: 29px;
  top: 0;
  width: 95px;
  height: 95px;
  background: var(--accent);
  clip-path: polygon(
    50% 0,
    62% 38%,
    100% 50%,
    62% 62%,
    50% 100%,
    38% 62%,
    0 50%,
    38% 38%
  );
}
.end-panel {
  position: relative;
  margin: 40px var(--pad) 100px;
  padding: 60px 0;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 30px;
}
.end-panel h2 {
  font-size: clamp(32px, 4.6vw, 65px);
  line-height: 1.3;
  font-weight: 500;
}
.end-panel > .star {
  position: absolute;
  top: 40px;
  right: 25%;
  color: var(--accent);
  width: 34px;
  height: 34px;
}
.round-link {
  width: 135px;
  height: 135px;
  border: 1px solid var(--line);
  border-radius: 50%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 16px;
  flex: none;
  font-size: 12px;
  transition:
    background 0.4s,
    color 0.4s;
  transform: translate(var(--mx, 0px), var(--my, 0px));
}
.round-link:hover {
  background: var(--ink);
  color: var(--paper);
}
.round-link svg {
  width: 30px;
  height: 30px;
  transform: rotate(-35deg);
}
.works-hero {
  min-height: 600px;
  padding-bottom: 65px;
}
.works-intro {
  display: flex;
  justify-content: space-between;
  align-items: end;
  margin-top: 40px;
  gap: 30px;
}
.works-intro p {
  max-width: 540px;
  font-size: 15px;
  color: var(--muted);
}
.project-count {
  font-size: 12px;
  white-space: nowrap;
}
.works-list {
  margin: 0 var(--pad);
}
.work-project {
  padding-top: 28px;
  padding-bottom: 90px;
  border-top: 1px solid var(--line);
}
.work-topline {
  display: flex;
  justify-content: space-between;
  margin-bottom: 26px;
  color: var(--muted);
  gap: 20px;
}
.work-topline > .mono {
  font-size: 12px;
}
.work-visual {
  display: block;
  height: 570px;
  position: relative;
  overflow: hidden;
  border-radius: 6px;
  perspective: 1200px;
}
.work-visual .art {
  container-type: normal;
}
.work-visual .art-caption {
  font-size: 11px;
  left: 5%;
  top: 9%;
}
.work-visual .art-footer {
  font-size: 20px;
  left: 5%;
  right: 5%;
  bottom: 9%;
}
.work-visual .battle-panels {
  width: 620px;
  height: 490px;
  left: 50%;
  top: 48%;
  transform: translate(-50%, -50%);
  container-type: inline-size;
}
.work-visual .ship {
  width: 490px;
  height: 210px;
  left: calc(50% - 245px);
  top: 35%;
}
.work-visual .calc-orbit {
  inset: 9% 35%;
}
.visual-label {
  position: absolute;
  z-index: 7;
  right: 32px;
  bottom: 30px;
  background: rgba(255, 255, 255, 0.8);
  backdrop-filter: blur(10px);
  border-radius: 50%;
  width: 95px;
  height: 95px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  font-size: 12px;
  transform: translate(0, 145px);
  transition: transform 0.6s var(--ease);
}
html[data-lang="ja"] .visual-label {
  width: 116px;
  height: 116px;
  transform: translate(0, 160px);
}
.work-visual:hover .visual-label, .work-visual:focus-visible .visual-label {
  transform: translate(0, 0);
}
.work-info {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 60px;
  padding-top: 35px;
}
.work-info h2 {
  font-size: clamp(32px, 3.5vw, 53px);
  max-width: 450px;
  font-weight: 500;
  letter-spacing: -0.05em;
}
.work-info p {
  font-size: 15px;
  max-width: 520px;
}
.work-info .work-detail {
  margin-top: 13px;
  color: var(--muted);
  font-size: 13px;
}
.work-actions {
  display: flex;
  gap: 25px;
  margin-top: 25px;
}
.project-note {
  font-size: 13px;
  color: var(--muted);
  padding: 0 0 60px;
}
.project-note .text-link {
  margin-left: 12px;
  white-space: nowrap;
}
.contact-hero {
  min-height: 645px;
}
.contact-hero .page-title {
  font-size: clamp(48px, 5.9vw, 88px);
  max-width: 74%;
}
.contact-hero .page-intro {
  max-width: 460px;
  margin-top: 35px;
}
.contact-hero .large-copy {
  font-size: 16px;
  color: var(--muted);
}
.contact-line {
  border-top: 1px solid var(--line);
  padding-top: 55px;
  padding-bottom: 65px;
}
.email-link {
  display: inline-block;
  font-size: clamp(28px, 6.1vw, 94px);
  line-height: 1.2;
  font-weight: 500;
  letter-spacing: -0.065em;
  border-bottom: 2px solid currentColor;
  padding-bottom: 9px;
  position: relative;
  transition: color 0.3s;
}
.email-link:hover {
  color: #9b4366;
}
.email-break {
  display: none;
}
.contact-actions {
  display: flex;
  gap: 14px;
  margin-top: 36px;
}
.copy-status {
  font-size: 12px;
  min-height: 26px;
  margin-top: 14px;
}
.elsewhere {
  padding-top: 35px;
  padding-bottom: 60px;
}
.social-row {
  display: grid;
  grid-template-columns: 1fr 1.6fr auto;
  align-items: center;
  gap: 30px;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  padding: 34px 0;
  transition: padding 0.4s var(--ease);
}
.social-row:hover {
  padding-inline: 15px;
}
.social-brand {
  font-size: 40px;
  letter-spacing: -0.06em;
}
.social-row > div > span {
  font-family: var(--mono);
  font-size: 13px;
}
.social-row p {
  font-size: 12px;
  color: var(--muted);
  margin-top: 6px;
}
.social-arrow {
  font-size: 43px;
  font-weight: 300;
}
.contact-note {
  padding-top: 35px;
  display: flex;
  align-items: center;
  gap: 26px;
}
.contact-note .star {
  width: 38px;
  height: 38px;
  color: var(--accent);
}
.contact-note p {
  font-size: 19px;
  line-height: 1.8;
}
/* The last frame is a quiet one. */
.site-footer {
  position: relative;
  z-index: 2;
  margin: 0 var(--pad);
  padding: 55px 0 135px;
  border-top: 1px solid var(--line);
}
.footer-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 25px;
}
.footer-name {
  font-size: clamp(25px, 3.5vw, 52px);
  line-height: 1;
  letter-spacing: -0.065em;
  font-weight: 600;
  display: flex;
  align-items: start;
  gap: 12px;
}
.footer-name > span {
  font-size: 0.55em;
  color: var(--accent);
}
.footer-top p {
  font-size: 12px;
  color: var(--muted);
}
.footer-bottom {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 24px;
  margin-top: 45px;
  color: var(--muted);
}
.footer-bottom > .mono {
  font-size: 12px;
}
.footer-bottom > div {
  display: flex;
  gap: 30px;
}
.plain-button {
  font-size: 12px;
  padding: 8px 0;
}
.plain-button:hover {
  text-decoration: underline;
}
/* Interaction layers never intercept content. */
#pointer-trail {
  position: fixed;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  z-index: 35;
}
.cursor-follower {
  position: fixed;
  left: 0;
  top: 0;
  width: 36px;
  height: 36px;
  border: 1px solid rgba(60, 47, 85, 0.3);
  border-radius: 50%;
  pointer-events: none;
  z-index: 70;
  opacity: 0;
  transition:
    width 0.25s,
    height 0.25s,
    opacity 0.25s,
    border-color 0.25s;
  will-change: transform;
  display: grid;
  place-items: center;
}
.cursor-follower i {
  width: 3px;
  height: 3px;
  background: var(--ink);
  border-radius: 50%;
}
.cursor-follower.over-link {
  width: 54px;
  height: 54px;
  border-color: var(--accent);
  background: rgba(255, 255, 255, 0.08);
}
[data-tilt] {
  transform: perspective(1000px) rotateX(var(--rx, 0deg))
    rotateY(var(--ry, 0deg));
  transition: transform 0.65s var(--ease);
  transform-style: preserve-3d;
}
.js .reveal {
  opacity: 0;
  transform: translateY(32px);
  transition:
    opacity 0.9s var(--ease),
    transform 1.05s var(--ease);
}
.js .reveal.visible {
  opacity: 1;
  transform: translateY(0);
}
.js [data-tilt].reveal.visible {
  transform: perspective(1000px) rotateX(var(--rx, 0deg))
    rotateY(var(--ry, 0deg));
}
.js .project-grid .reveal:nth-child(2), .js .approach-grid .reveal:nth-child(2) {
  transition-delay: 0.08s;
}
.js .project-grid .reveal:nth-child(3), .js .approach-grid .reveal:nth-child(3) {
  transition-delay: 0.16s;
}
#transition {
  position: fixed;
  inset: 0;
  background: #252432;
  color: #f1edf5;
  z-index: 95;
  display: none;
  pointer-events: none;
  overflow: hidden;
  will-change: transform;
}
#transition.active {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 30px;
}
.transition-number {
  font-size: clamp(140px, 24vw, 380px);
  font-weight: 500;
  line-height: 1;
  letter-spacing: -0.08em;
  opacity: 0.16;
}
.transition-label {
  font-family: var(--mono);
  font-size: 14px;
  letter-spacing: 0.3em;
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
}
.transition-line {
  position: absolute;
  top: 50%;
  left: var(--pad);
  right: var(--pad);
  height: 1px;
  background: #ffffff12;
}
#transition > i {
  position: absolute;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: var(--lime);
  right: var(--pad);
  top: var(--pad);
}
/* Responsive composition, not just a smaller desktop. */
@media (min-width: 1800px) {
  :root {
    --pad: max(72px, calc((100vw - 1640px) / 2));
  }
}
@media (max-width: 1100px) {
  .header-center {
    display: none;
  }
  .home-hero {
    min-height: 780px;
  }
  .hero-name {
    margin-top: 52px;
  }
  .hero-copy {
    max-width: 370px;
  }
  .hero-copy p {
    max-width: 320px;
  }
  .page-title {
    font-size: 7vw;
    max-width: 88%;
  }
  .interior-hero {
    min-height: 710px;
  }
  .page-intro {
    max-width: 440px;
  }
  .page-intro .large-copy {
    font-size: 17px;
  }
  .contact-hero {
    min-height: 620px;
  }
  .project-grid {
    gap: 18px;
  }
  .mini-meta h3 {
    font-size: 20px;
  }
  .work-visual {
    height: 510px;
  }
  .work-info {
    gap: 35px;
  }
  .work-info h2 {
    font-size: 36px;
  }
  .profile-row {
    gap: 20px;
    grid-template-columns: 40px 1fr 1.3fr;
  }
  .section {
    padding-block: 80px;
  }
  .home-note {
    gap: 8%;
  }
  .section-heading h2 {
    font-size: 34px;
  }
  .approach-card {
    padding: 25px 20px;
  }
  .approach-grid {
    gap: 18px;
  }
}
@media (max-width: 760px) {
  :root {
    --pad: 22px;
    --header: 88px;
  }
  .header-controls {
    gap: 13px;
  }
  .brand-caption {
    display: none;
  }
  .brand-symbol {
    font-size: 31px;
  }
  .site-header {
    height: 88px;
  }
  .language button {
    min-width: 31px;
    height: 32px;
    font-size: 12px;
  }
  .motion-toggle {
    width: 31px;
    height: 31px;
  }
  .hero-top {
    padding-top: 25px;
    gap: 15px;
  }
  .hero-top .eyebrow {
    font-size: 12px;
    letter-spacing: 0.04em;
  }
  .home-hero {
    min-height: 920px;
    padding-bottom: 70px;
  }
  .hero-name {
    margin-top: 42px;
    font-size: 12.4vw;
    line-height: 0.92;
    font-variation-settings:
      "wdth" 90,
      "wght" 730;
    letter-spacing: -0.065em;
  }
  .name-line.second {
    font-size: 1.5em;
    margin-top: 5px;
  }
  .hero-copy {
    margin-top: 365px;
    max-width: 100%;
  }
  .hero-copy h2 {
    font-size: 23px;
  }
  .hero-copy p {
    max-width: 100%;
    font-size: 13px;
    margin-top: 14px;
  }
  .button {
    min-height: 49px;
    padding: 12px 19px;
    gap: 24px;
    font-size: 12px;
  }
  .text-link {
    font-size: 12px;
    gap: 10px;
  }
  .selected {
    padding-top: 53px;
  }
  .section {
    padding-block: 60px;
  }
  .section-heading {
    gap: 20px;
    margin-bottom: 28px;
    align-items: end;
  }
  .section-heading h2 {
    font-size: 26px;
    line-height: 1.35;
  }
  .section-heading .eyebrow {
    font-size: 12px;
    margin-bottom: 12px;
  }
  .section-heading > .text-link {
    white-space: nowrap;
    font-size: 12px;
  }
  .section-heading > .text-link svg {
    width: 14px;
  }
  .project-grid {
    grid-template-columns: 1fr;
    gap: 35px;
  }
  .art-link {
    aspect-ratio: 1.3;
  }
  .mini-meta {
    padding-top: 14px;
  }
  .mini-meta h3 {
    font-size: 24px;
    margin-top: 6px;
  }
  .mini-meta > .mono {
    font-size: 12px;
  }
  .project-open {
    transform: none;
    width: 32px;
    height: 32px;
    font-size: 17px;
    right: 13px;
    bottom: 13px;
  }
  .home-note {
    grid-template-columns: 1fr;
    gap: 45px;
    padding-block: 55px;
  }
  .note-symbol {
    width: 160px;
    height: 160px;
    margin-bottom: 34px;
  }
  .note-symbol .star {
    width: 80px;
    height: 80px;
  }
  /* The ring is too small for a legible tagline inside it, so it sits underneath. */
  .orbit-text {
    font-size: 11px;
    bottom: -30px;
    white-space: nowrap;
  }
  .home-note h2 {
    font-size: 37px;
  }
  .home-note p {
    font-size: 14px;
    margin-top: 22px;
  }
  .home-note .text-link {
    margin-top: 17px;
  }
  .site-footer {
    padding-top: 35px;
    padding-bottom: 120px;
  }
  .footer-top {
    align-items: start;
    flex-direction: column;
    gap: 19px;
  }
  .footer-name {
    font-size: 36px;
  }
  .footer-top p {
    font-size: 13px;
  }
  .footer-bottom {
    align-items: start;
    margin-top: 28px;
    gap: 18px;
    flex-direction: column;
  }
  .footer-bottom > .mono {
    font-size: 12px;
  }
  .footer-bottom > div {
    width: 100%;
    justify-content: space-between;
    gap: 20px;
  }
  .plain-button {
    font-size: 12px;
  }
  .channel-dock {
    bottom: max(14px, env(safe-area-inset-bottom));
    padding: 5px;
    gap: 3px;
    max-width: calc(100vw - 26px);
    width: 390px;
    border-radius: 10px;
  }
  .channel-dock a {
    flex: 1;
    min-width: 0;
    padding: 12px 6px;
    gap: 7px;
    font-size: 12px;
    border-radius: 6px;
  }
  .dock-number {
    font-size: 12px;
  }
  .dock-led {
    width: 3px;
    height: 3px;
  }
  .dock-indicator {
    inset: 5px auto 5px 5px;
    width: calc((100% - 19px) / 4);
    transform: translateX(calc(var(--index) * (100% + 3px)));
    border-radius: 6px;
  }
  .interior-hero {
    min-height: 950px;
    padding-bottom: 55px;
  }
  .page-title {
    font-size: clamp(37px, 8.7vw, 66px);
    max-width: 100%;
    margin-top: 50px;
    line-height: 1.35;
    letter-spacing: -0.065em;
  }
  .page-intro {
    margin-top: 355px;
    max-width: 100%;
  }
  .page-intro .large-copy {
    font-size: 17px;
    margin-bottom: 20px;
  }
  .page-intro p {
    font-size: 14px;
  }
  .profile-section .section-heading {
    display: block;
  }
  .profile-section .section-heading h2 {
    width: 100%;
    font-size: 33px;
  }
  .profile-rows {
    margin-top: 40px;
  }
  .profile-row {
    grid-template-columns: 25px 1fr;
    gap: 10px;
    padding: 30px 0;
  }
  .profile-row > p {
    grid-column: 2;
    font-size: 14px;
    margin-top: 8px;
  }
  .profile-row h3 {
    font-size: 24px;
  }
  .profile-row .eyebrow {
    font-size: 12px;
    margin-bottom: 12px;
  }
  .approach-grid {
    grid-template-columns: 1fr;
    gap: 18px;
  }
  .approach-card {
    padding: 25px;
  }
  .approach-icon {
    height: 100px;
    width: 100px;
    margin-bottom: 20px;
    transform: scale(0.8);
    transform-origin: 0 50%;
  }
  .approach-card h3 {
    margin: 15px 0 13px;
    font-size: 27px;
  }
  .approach-card p {
    font-size: 14px;
  }
  .approach .section-heading > .star {
    width: 29px;
    height: 29px;
  }
  .end-panel {
    margin-block: 0 60px;
    padding: 35px 0;
    gap: 20px;
  }
  .end-panel .eyebrow {
    font-size: 12px;
    margin-bottom: 18px;
  }
  .end-panel h2 {
    font-size: 29px;
  }
  .end-panel > .star {
    display: none;
  }
  .round-link {
    width: 92px;
    height: 92px;
    font-size: 12px;
    gap: 9px;
  }
  .round-link svg {
    width: 23px;
    height: 23px;
  }
  .works-hero {
    min-height: 530px;
    padding-bottom: 40px;
  }
  .works-hero .page-title {
    max-width: 90%;
  }
  .works-intro {
    margin-top: 45px;
    flex-direction: column;
    align-items: start;
    gap: 28px;
  }
  .works-intro p {
    font-size: 14px;
    max-width: 90%;
  }
  .project-count {
    font-size: 12px;
  }
  .work-project {
    padding-top: 20px;
    padding-bottom: 52px;
  }
  .work-topline {
    margin-bottom: 20px;
    gap: 15px;
  }
  .work-topline > .mono {
    font-size: 12px;
  }
  .work-topline > .mono:last-child {
    display: none;
  }
  .work-visual {
    height: 330px;
  }
  .work-visual .battle-panels {
    width: 360px;
    height: 310px;
  }
  .work-visual .ship {
    width: 270px;
    height: 125px;
    left: calc(50% - 135px);
    top: 38%;
  }
  .work-visual .art-caption {
    font-size: 10px;
    top: 8%;
    left: 7%;
  }
  .work-visual .art-footer {
    font-size: 15px;
    left: 7%;
    bottom: 8%;
  }
  .work-visual .calc-orbit {
    inset: 12% 20%;
  }
  /* Always visible on touch screens, so a pill that fits every language. */
  .visual-label, html[data-lang="ja"] .visual-label {
    transform: none;
    width: auto;
    height: 34px;
    padding: 0 14px;
    border-radius: 999px;
    right: 15px;
    bottom: 18px;
    font-size: 12px;
    white-space: nowrap;
  }
  .work-info {
    grid-template-columns: 1fr;
    gap: 20px;
    padding-top: 24px;
  }
  .work-info h2 {
    font-size: 34px;
  }
  .work-info p {
    font-size: 14px;
  }
  .work-info .work-detail {
    font-size: 12px;
    margin-top: 11px;
  }
  .work-actions {
    margin-top: 22px;
    gap: 23px;
  }
  .project-note {
    font-size: 12px;
    padding-bottom: 40px;
  }
  .project-note .text-link {
    margin-left: 0;
    display: flex;
    width: max-content;
    margin-top: 12px;
  }
  .contact-hero {
    min-height: 795px;
  }
  .contact-hero .page-title {
    max-width: 100%;
    font-size: 8.7vw;
  }
  .contact-hero .page-intro {
    margin-top: 360px;
    max-width: 100%;
  }
  .contact-hero .large-copy {
    font-size: 14px;
  }
  .contact-line {
    padding-top: 35px;
    padding-bottom: 20px;
  }
  .contact-line .eyebrow {
    font-size: 12px;
    margin-bottom: 20px;
  }
  .email-link {
    font-size: 9vw;
    letter-spacing: -0.06em;
    max-width: 100%;
    padding-bottom: 8px;
  }
  .email-break {
    display: block;
  }
  .contact-actions {
    gap: 10px;
    flex-wrap: wrap;
    margin-top: 26px;
  }
  .contact-actions .button {
    gap: 16px;
    font-size: 12px;
    min-height: 46px;
    padding-inline: 16px;
  }
  .elsewhere {
    padding-top: 28px;
    padding-bottom: 25px;
  }
  .elsewhere .eyebrow {
    font-size: 12px;
  }
  .social-row {
    grid-template-columns: 1fr auto;
    gap: 15px;
    padding: 25px 0;
  }
  .social-brand {
    font-size: 33px;
  }
  .social-row > div {
    grid-column: 1;
    grid-row: 2;
  }
  .social-arrow {
    grid-column: 2;
    grid-row: 1/3;
    font-size: 38px;
  }
  .social-row > div > span {
    font-size: 12px;
  }
  .social-row p {
    font-size: 12px;
  }
  .contact-note {
    padding-top: 30px;
    gap: 18px;
  }
  .contact-note p {
    font-size: 15px;
  }
  .contact-note .star {
    width: 28px;
    height: 28px;
  }
  html[data-lang="en"] .page-title {
    font-size: clamp(37px, 9.2vw, 66px);
  }
  html[data-lang="en"] .contact-hero .page-title {
    font-size: 9vw;
  }
  html[data-lang="ja"] .home-hero {
    min-height: 950px;
  }
  html[data-lang="ja"] .hero-copy h2 {
    font-size: 21px;
  }
  html[data-lang="ja"] .page-title {
    font-size: 8.1vw;
  }
  html[data-lang="ja"] .channel-dock a {
    font-size: 12px;
    gap: 5px;
  }
}
@media (max-width: 380px) {
  :root {
    --pad: 18px;
  }
  .header-controls {
    gap: 8px;
  }
  .hero-top .eyebrow {
    font-size: 12px;
  }
  .hero-copy {
    margin-top: 345px;
  }
  .home-hero {
    min-height: 920px;
  }
  .hero-copy h2 {
    font-size: 21px;
  }
  .button {
    padding-inline: 16px;
    font-size: 12px;
    gap: 15px;
  }
  .end-panel h2 {
    font-size: 25px;
  }
  .round-link {
    width: 80px;
    height: 80px;
    font-size: 12px;
  }
  .section-heading h2 {
    font-size: 23px;
  }
  .channel-dock a {
    font-size: 12px;
    gap: 5px;
  }
  .work-visual {
    height: 285px;
  }
  .work-visual .battle-panels {
    width: 320px;
    height: 275px;
  }
  .contact-hero {
    min-height: 785px;
  }
  .page-title {
    font-size: 8.5vw;
  }
  .page-intro {
    margin-top: 345px;
  }
  .contact-hero .page-intro {
    margin-top: 350px;
  }
}
@media (pointer: coarse) {
  .cursor-follower, #pointer-trail {
    display: none;
  }
  .project-open, .visual-label {
    transform: none;
  }
  [data-tilt] {
    transform: none !important;
  }
  .button, .round-link {
    transform: none !important;
  }
}
html[data-motion="off"] *, html[data-motion="off"] *:before, html[data-motion="off"] *:after {
  animation: none !important;
  scroll-behavior: auto !important;
  transition-duration: 0s !important;
}
html[data-motion="off"] .reveal {
  opacity: 1;
  transform: none;
}
html[data-motion="off"] .cursor-follower, html[data-motion="off"] #pointer-trail {
  display: none;
}
html[data-motion="off"] [data-tilt] {
  transform: none !important;
}
html[data-motion="off"] .button, html[data-motion="off"] .round-link {
  transform: none !important;
}
.hero {
  touch-action: pan-y pinch-zoom;
}
.name-letter {
  display: inline-block;
  transition: transform 0.65s var(--ease);
  transform-origin: 50% 85%;
}
html[data-motion="off"] .name-letter {
  transform: none !important;
}
/* Keep decorative perspective geometry from expanding mobile layout viewports. */
html {
  overflow-x: clip;
}
body {
  position: relative;
  width: 100%;
  min-width: 0;
}
.channel-dock {
  isolation: isolate;
}
.channel-dock a {
  flex: 1;
  min-width: 110px;
}
.dock-indicator {
  z-index: 0;
}
@media (max-width: 760px) {
  .works-intro p {
    position: relative;
    z-index: 3;
  }
  .channel-dock a {
    min-width: 0;
  }
  .home-hero {
    min-height: 940px;
  }
}
html[data-lang="en"][data-page="about"] .page-title {
  font-size: clamp(45px, 5.7vw, 88px);
  max-width: 68%;
}
html[data-lang="en"][data-page="contact"] .page-title {
  font-size: clamp(45px, 5.2vw, 80px);
  max-width: 70%;
}
@media (max-width: 760px) {
  .home-hero {
    min-height: 850px;
  }
  .home-hero .hero-copy {
    margin-top: 310px;
  }
  html[data-lang="ja"] .home-hero {
    min-height: 880px;
  }
  html[data-lang="en"][data-page="about"] .page-title, html[data-lang="en"][data-page="contact"] .page-title {
    font-size: 9vw;
    max-width: 100%;
  }
  .work-topline > .mono, .mini-meta > .mono {
    font-size: 12px;
  }
  .art-caption {
    font-size: 10px;
  }
}
@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }
  html:not([data-motion="on"]) *, html:not([data-motion="on"]) *::before, html:not([data-motion="on"]) *::after {
    animation: none !important;
    transition-duration: 0s !important;
  }
  html:not([data-motion="on"]) .reveal {
    opacity: 1;
    transform: none;
  }
}

/* ==========================================================================
   intro (merged; original cascade order preserved)
   ========================================================================== */
/* Original ivory CRT geometry, retained and adapted to real pages. */
.tv, .tv-glass {
  position: fixed;
  z-index: 2;
  transform-origin: 50% 50%;
  display: none;
  will-change: transform;
  pointer-events: none;
}
.tv-glass {
  z-index: 4;
}
body.is-intro .tv, body.is-intro .tv-glass {
  display: block;
}
.tv-body {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: calc(var(--u) * 0.66);
  border-radius: calc(var(--u) * 0.05);
  background:
    linear-gradient(
      180deg,
      rgba(255, 255, 255, 0.85),
      rgba(255, 255, 255, 0) 26%
    ),
    linear-gradient(160deg, #fdfdfe 0%, #ecedf4 50%, #d6d9e5 100%);
  box-shadow:
    inset 0 calc(var(--u) * 0.004) 0 #fff,
    inset 0 calc(var(--u) * -0.012) calc(var(--u) * 0.02) rgba(23, 26, 63, 0.16),
    0 calc(var(--u) * 0.035) calc(var(--u) * 0.09) rgba(23, 26, 63, 0.32);
}
.tv-screen, .glass-screen {
  position: absolute;
  left: calc(var(--u) * 0.055);
  top: calc(var(--u) * 0.06);
  width: calc(var(--u) * 0.68);
  height: calc(var(--u) * 0.51);
  border-radius: calc(var(--u) * 0.035);
}
.tv-screen {
  background: #1b1e33;
  box-shadow:
    0 0 0 calc(var(--u) * 0.009) #12142a,
    0 0 0 calc(var(--u) * 0.014) #bfc3d2;
}
.glass-screen {
  overflow: hidden;
  box-shadow: inset 0 0 calc(var(--u) * 0.05) rgba(10, 12, 30, 0.6);
}
.glass-screen::before {
  /* scanlines */
  content: "";
  position: absolute;
  inset: 0;
  background: repeating-linear-gradient(
    180deg,
    rgba(10, 12, 30, 0.18) 0 1px,
    transparent 1px 3px
  );
}
.glass-screen::after {
  /* curved glass */
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(
      120% 90% at 22% 8%,
      rgba(255, 255, 255, 0.28),
      transparent 42%
    ),
    radial-gradient(
      140% 120% at 50% 50%,
      transparent 62%,
      rgba(10, 12, 30, 0.35) 100%
    );
}
#tv-static {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  opacity: 0;
}
.tv-panel {
  position: absolute;
  left: calc(var(--u) * 0.785);
  top: calc(var(--u) * 0.07);
  width: calc(var(--u) * 0.165);
  height: calc(var(--u) * 0.52);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: calc(var(--u) * 0.03);
}
.dial {
  width: calc(var(--u) * 0.115);
  aspect-ratio: 1;
  border-radius: 50%;
  background:
    radial-gradient(circle, #f3f4f8 0 38%, transparent 39%),
    repeating-conic-gradient(#c1c5d4 0 4deg, #edeef4 4deg 15deg);
  box-shadow:
    0 0 0 calc(var(--u) * 0.006) #c9cdda,
    inset 0 0 calc(var(--u) * 0.01) rgba(23, 26, 63, 0.25);
  position: relative;
}
.dial::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 12%;
  width: calc(var(--u) * 0.006);
  height: 30%;
  background: var(--pink);
  transform: translateX(-50%);
  border-radius: 2px;
}
.knob {
  width: calc(var(--u) * 0.07);
  aspect-ratio: 1;
  border-radius: 50%;
  background: radial-gradient(circle at 35% 30%, #ffffff, #c4c8d6 72%);
  box-shadow:
    0 0 0 calc(var(--u) * 0.005) #c9cdda,
    0 calc(var(--u) * 0.006) calc(var(--u) * 0.01) rgba(23, 26, 63, 0.2);
}
.grille {
  flex: 1;
  width: 100%;
  border-radius: calc(var(--u) * 0.012);
  background: repeating-linear-gradient(
    180deg,
    #c5c9d7 0 calc(var(--u) * 0.006),
    #eef0f5 calc(var(--u) * 0.006) calc(var(--u) * 0.014)
  );
}
.tv-plate {
  position: absolute;
  left: calc(var(--u) * 0.06);
  top: calc(var(--u) * 0.595);
  font-family: var(--osd);
  font-size: calc(var(--u) * 0.022);
  color: #8a8fa6;
  letter-spacing: 0.08em;
}
.tv-led {
  position: absolute;
  left: calc(var(--u) * 0.7);
  top: calc(var(--u) * 0.603);
  width: calc(var(--u) * 0.012);
  aspect-ratio: 1;
  border-radius: 50%;
  background: #e6d3dc;
}
.tv.powered .tv-led {
  background: var(--pink);
  box-shadow: 0 0 calc(var(--u) * 0.02) var(--pink);
}
.tv-legs {
  position: absolute;
  left: 0;
  right: 0;
  top: calc(var(--u) * 0.655);
  height: calc(var(--u) * 0.06);
}
.tv-legs::before, .tv-legs::after {
  content: "";
  position: absolute;
  top: 0;
  width: calc(var(--u) * 0.03);
  height: 100%;
  background: linear-gradient(180deg, #cfd2de, #a6abbe);
  border-radius: 0 0 4px 4px;
}
.tv-legs::before {
  left: 16%;
  transform: skewX(12deg);
}
.tv-legs::after {
  right: 16%;
  transform: skewX(-12deg);
}
.tv-ears {
  position: absolute;
  left: 50%;
  bottom: 100%;
  width: 0;
  height: 0;
}
.tv-ears::before, .tv-ears::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  width: calc(var(--u) * 0.006);
  height: calc(var(--u) * 0.28);
  background: linear-gradient(180deg, #b4b9c8, #5f6478);
  transform-origin: 50% 100%;
  border-radius: 4px;
}
.tv-ears::before {
  transform: rotate(-28deg);
}
.tv-ears::after {
  transform: rotate(24deg);
}

:root {
  --pink: #ff5c9a;
  --osd: "DM Mono", "Noto Sans SC", monospace;
}
#broadcast {
  position: relative;
  z-index: 3;
  background: var(--paper);
  transform-origin: 50% 50%;
}
body.is-intro #broadcast {
  position: fixed;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
  will-change: transform, opacity;
}
#intro {
  display: contents;
  position: static;
  padding: 0;
  background: none;
  color: var(--ink);
}
#intro[hidden] {
  display: none;
}
.kaleido-stage {
  position: fixed;
  inset: 0;
  z-index: 1;
  background: #e3e0ff;
  overflow: hidden;
  cursor: pointer;
}
#kaleido {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  display: block;
}
.kaleido-stage.no-gl {
  background:
    radial-gradient(
      circle at 50% 50%,
      transparent 0 40vmin,
      #171a3f 40vmin 44vmin,
      transparent 44vmin
    ),
    repeating-conic-gradient(
      from 0deg,
      #8a96ff 0 7deg,
      #ff7db0 7deg 13deg,
      #45e0c6 13deg 20deg,
      #b59bff 20deg 26deg,
      #f7f7ff 26deg 30deg
    );
}
.kaleido-stage.no-gl:after {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(circle, transparent 0 44vmin, #e3e0ff 44.2vmin);
}
.intro-ui {
  position: fixed;
  inset: 0;
  z-index: 100;
  pointer-events: none;
  font-family: var(--osd);
  color: #171a3f;
}
.intro-tuning {
  position: absolute;
  left: var(--pad);
  top: var(--pad);
  font-size: 12px;
  letter-spacing: 0.06em;
}
.intro-tuning:after {
  content: "▌";
  margin-left: 0.3em;
  animation: tuning-blink 1s steps(1) infinite;
}
.intro-enter {
  position: absolute;
  left: 50%;
  bottom: calc(var(--pad) * 1.6);
  transform: translateX(-50%);
  font-size: clamp(13px, 1.2vw, 17px);
  letter-spacing: 0.08em;
  white-space: nowrap;
  padding: 12px 20px;
  border-radius: 999px;
  background: rgba(247, 247, 252, 0.82);
  pointer-events: auto;
  backdrop-filter: blur(8px);
  animation: intro-breathe 2.4s ease-in-out infinite;
}
.intro-skip {
  position: absolute;
  right: var(--pad);
  bottom: var(--pad);
  pointer-events: auto;
  font: 12px var(--osd);
  letter-spacing: 0.04em;
  padding: 10px 14px;
  border: 1px solid rgba(23, 26, 63, 0.3);
  border-radius: 5px;
  color: #171a3f;
  background: rgba(247, 247, 252, 0.75);
}
.intro-skip:hover {
  background: #f7f7fc;
  border-color: #171a3f;
}
body.intro-run .intro-enter, body.intro-run .intro-tuning {
  opacity: 0;
  animation: none;
  transition: opacity 0.25s;
  pointer-events: none;
}
.tv-glass {
  z-index: 4;
}
.tv {
  z-index: 2;
}
@keyframes tuning-blink {
  50% {
    opacity: 0;
  }
}
@keyframes intro-breathe {
  0%,
  100% {
    opacity: 0.5;
  }
  50% {
    opacity: 1;
  }
}
@media (max-width: 760px) {
  .intro-enter {
    bottom: 90px;
    font-size: 12px;
  }
  .intro-tuning {
    font-size: 12px;
  }
  .intro-skip {
    bottom: 25px;
  }
  .tv-plate {
    font-size: calc(var(--u) * 0.018);
  }
}
@media (prefers-reduced-motion: reduce) {
  .intro-enter {
    animation: none;
  }
  .intro-tuning:after {
    animation: none;
  }
}

/* The broadcast retains the original glass palette and faint CRT texture. */
#broadcast:after {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 55;
  pointer-events: none;
  background: repeating-linear-gradient(
    transparent 0 3px,
    rgba(30, 24, 59, 0.025) 3px 4px
  );
  opacity: 0.45;
}
.transition-line {
  height: 5px;
  top: auto;
  bottom: 0;
  left: 0;
  right: 0;
  background: linear-gradient(
    90deg,
    #a6c4ff 0 14.3%,
    #ff92bb 14.3% 28.6%,
    #77e0ca 28.6% 42.9%,
    #c2a8ee 42.9% 57.2%,
    #ecdf98 57.2% 71.5%,
    #7e84b3 71.5% 85.8%,
    #e9e6f5 85.8%
  );
}
#transition:after {
  content: "";
  position: absolute;
  inset: 0;
  background: repeating-linear-gradient(transparent 0 3px, #f1eaff07 3px 4px);
  pointer-events: none;
}
#transition:before {
  content: "";
  position: absolute;
  width: min(55vw, 650px);
  aspect-ratio: 1;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%) rotate(30deg);
  border: 1px solid #ffffff16;
  border-radius: 50%;
  box-shadow:
    0 0 0 45px #ffffff04,
    0 0 0 90px #ffffff03;
}

/* Page navigation uses the original television-tuning vocabulary. */
#transition {
  background: transparent;
  z-index: 65;
  transform: none;
  will-change: auto;
}
#transition.active {
  display: block;
}
#transition:before {
  display: none;
}
#transition:after {
  background: repeating-linear-gradient(transparent 0 3px, #171a3f09 3px 4px);
  opacity: 0.25;
}
.transition-number, #transition > i {
  display: none;
}
.transition-label {
  position: absolute;
  left: var(--pad);
  top: 125px;
  transform: none;
  color: #171a3f;
  background: rgba(247, 247, 252, 0.86);
  padding: 12px 17px;
  border-radius: 4px;
  font: 15px var(--osd);
  letter-spacing: 0.1em;
  box-shadow: 0 4px 18px #171a3f12;
  backdrop-filter: blur(8px);
  z-index: 2;
}
.transition-line {
  top: 0;
  bottom: auto;
  height: 3px;
  opacity: 0.7;
}
.channel-noise {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  image-rendering: pixelated;
  pointer-events: none;
  opacity: 0;
}
@media (max-width: 760px) {
  .transition-label {
    top: 109px;
    font-size: 12px;
    padding: 9px 12px;
  }
}

/* ==========================================================================
   broadcast (merged; original cascade order preserved)
   ========================================================================== */
/* Restore the original television-channel identity. */
:root {
  --ink: #171a3f;
  --paper: #e3e0ff;
  --muted: #555674;
  --line: rgba(23, 26, 63, .2);
  --accent: #ff5c9a;
  --mono: "DotGothic16", "Noto Sans JP", monospace;
  --pad: clamp(16px, 2.4vw, 34px);
}
html[data-page="about"] { --paper: #f3ebda; --muted: #655f59; }
html[data-page="works"] { --paper: #cdf3e8; --muted: #45675f; }
html[data-page="contact"] { --paper: #ffdde9; --muted: #725365; }

.site-header { border: 0; }
.brand-symbol {
  width: 44px; height: 34px; display: grid; place-items: center;
  border: 2px solid currentColor; border-radius: 9px;
  font: 15px var(--mono); letter-spacing: .04em;
}
.brand-symbol > span, .brand-caption { display: none; }
.header-center { gap: 14px; }
.header-center .mono { font-size: 14px; }
.signal-dot { background: #ff5c9a; box-shadow: none; width: 8px; height: 8px; }
.language { gap: 4px; }
.language button {
  height: 34px; min-width: 40px; width: auto; border: 1px solid transparent;
  border-radius: 6px; color: var(--ink); font: 15px var(--mono); opacity: .6;
}
.language button[aria-pressed="true"] { background: none; color: var(--ink); border-color: currentColor; opacity: 1; }
.motion-toggle { border-radius: 6px; }
.home-hero, html[data-lang="ja"] .home-hero {
  min-height: calc(100svh - var(--header)); display: flex;
  flex-direction: column; justify-content: center;
  padding: 50px 0 150px;
}
.home-hero .hero-name {
  margin: 0; font-size: min(14.6vw, 30svh); font-weight: 800;
  font-variation-settings: "wdth" 100, "wght" 800;
  line-height: .84; letter-spacing: -.012em; width: max-content;
}
.home-hero .name-line { white-space: nowrap; padding-top: .05em; }
.home-hero .name-line.second { margin-top: 0; }
.home-hero .hero-copy {
  margin-top: clamp(18px, 3vh, 32px); max-width: 60%;
}
.home-hero .hero-copy p {
  margin: 0; color: var(--ink); max-width: 36ch;
  font-size: clamp(16px, 1.5vw, 21px); line-height: 1.6;
}
.channel-dock {
  left: var(--pad); right: auto; bottom: var(--pad); transform: none;
  padding: 0; gap: 8px; border: 0; border-radius: 0;
  background: none; box-shadow: none; backdrop-filter: none;
  -webkit-backdrop-filter: none;
}
.channel-dock a {
  flex-direction: column; align-items: flex-start; justify-content: center; gap: 6px;
  width: clamp(92px, 9vw, 128px); min-width: 0; padding: 10px 12px 11px;
  border: 1px solid rgba(23,26,63,.3); border-radius: 6px;
  background: color-mix(in srgb, var(--paper) 92%, transparent);
  font-size: 13px; font-weight: 700;
  transition: background .25s, color .25s;
}
.channel-dock a[aria-current="page"] { background: var(--ink); color: var(--paper); }
.dock-number { font-size: 13px; font-weight: 400; letter-spacing: .06em; opacity: 1; }
.dock-number::before { content: "CH "; }
.dock-led, .dock-indicator { display: none; }
.broadcast-controls {
  position: fixed; right: var(--pad); bottom: var(--pad); z-index: 50;
  display: flex; flex-direction: column; align-items: flex-end; gap: 10px;
  font: 13px var(--mono);
}
.broadcast-controls p { opacity: .7; }
.broadcast-controls button {
  padding: 7px 10px; border: 1px solid rgba(23,26,63,.3); border-radius: 6px;
  background: color-mix(in srgb, var(--paper) 92%, transparent);
}
.interior-hero, .about-hero, .works-hero, .contact-hero {
  min-height: 0; padding-bottom: 65px;
}
.interior-hero .page-title { margin-top: 55px; }
.interior-hero .page-intro, .contact-hero .page-intro { margin-top: 32px; max-width: 680px; }
.works-intro { margin-top: 32px; }
.interior-hero::after {
  content: ""; display: block; margin-top: 42px; width: 84px; height: 12px;
  background: linear-gradient(90deg,#f7f7fc 0 14.28%,#14bfae 14.28% 28.56%,#ff5c9a 28.56% 42.84%,#2a3bff 42.84% 57.12%,#6a3df0 57.12% 71.4%,#171a3f 71.4% 85.68%,#9aa0b5 85.68%);
}
.site-footer { padding-bottom: 145px; }
@media (max-width: 760px) {
  :root { --header: 86px; }
  .header-center { display: flex; position: absolute; left: 65px; transform: none; }
  .header-center #clock { display: none; }
  .header-center .mono { font-size: 12px; }
  .header-center .signal-dot { display: none; }
  .header-controls { gap: 8px; }
  .language button { min-width: 30px; padding: 0 6px; font-size: 12px; }
  .home-hero, html[data-lang="ja"] .home-hero {
    min-height: calc(100svh - var(--header)); justify-content: flex-end;
    padding: 250px 0 165px;
  }
  .home-hero .hero-name { font-size: min(14.6vw, 24vh); line-height: .86; }
  .home-hero .hero-copy { margin-top: 24px; max-width: 30ch; }
  .home-hero .hero-copy p { font-size: 16px; }
  .channel-dock { left: var(--pad); right: var(--pad); bottom: 62px; gap: 7px; }
  .channel-dock a, html[data-lang="ja"] .channel-dock a {
    flex: 1; width: auto; padding: 8px; gap: 4px; font-size: 12px;
  }
  .dock-number { font-size: 12px; }
  .broadcast-controls {
    left: var(--pad); right: var(--pad); bottom: 16px;
    flex-direction: row; align-items: center; justify-content: space-between;
    gap: 8px; font-size: 12px;
  }
  .broadcast-controls button { padding: 6px 8px; }
  .interior-hero, .about-hero, .works-hero, .contact-hero { min-height: 0; padding-bottom: 40px; }
  .interior-hero .page-intro, .contact-hero .page-intro { margin-top: 30px; }
  .works-intro { margin-top: 30px; }
  .hero-top { padding-top: 24px; }
  .interior-hero .page-title { margin-top: 36px; }
}
@media (max-height: 650px) and (min-width: 761px) {
  .home-hero { padding-top: 20px; padding-bottom: 115px; }
  .home-hero .hero-name { font-size: min(13vw, 25vh); }
}

/* ==========================================================================
   interactions (merged; original cascade order preserved)
   ========================================================================== */
/* Translucent controls: lit edges, shallow refraction and a tinted selection. */
@property --glass-tone { syntax: '<color>'; inherits: true; initial-value: #b5a5da; }
@property --glass-ink { syntax: '<color>'; inherits: true; initial-value: #29234b; }
@property --glass-fill { syntax: '<color>'; inherits: true; initial-value: #ece7ff99; }
:root {
  --glass-tone: #b5a5da; --glass-ink: #29234b;
  --glass-fill: color-mix(in srgb, var(--paper) 58%, transparent);
  --glass-reflection: #ffffff85;
  --glass-shadow: 0 4px 14px color-mix(in srgb,var(--glass-ink) 8%,transparent), inset 0 1px 0 #ffffffcf, inset 0 -1px 0 color-mix(in srgb,var(--glass-tone) 40%,transparent);
  --press-ease: cubic-bezier(.16,1,.3,1);
}
html[data-page="about"] { --glass-tone: #c6a574; --glass-ink: #49371e; }
html[data-page="works"] { --glass-tone: #78b49e; --glass-ink: #183e33; }
html[data-page="contact"] { --glass-tone: #cf94ae; --glass-ink: #4e293b; }
.glass-control[data-glass-context="dark"] { --glass-reflection: #ffffff24; }
#broadcast { transition: background-color .65s ease; }
.interactive-control {
  transition: color .24s ease, background-color .3s ease, border-color .3s ease,
    box-shadow .4s ease, filter .3s ease, scale .35s var(--press-ease),
    --glass-tone .5s ease, --glass-ink .5s ease, --glass-fill .5s ease;
  -webkit-tap-highlight-color: transparent;
}
.glass-control, .language button, .channel-dock a, .broadcast-controls button, .button.primary, .button.outline, .motion-toggle {
  background: radial-gradient(ellipse at var(--light-x, 25%) var(--light-y, 0%), var(--glass-reflection), #ffffff00 68%),
    linear-gradient(135deg, var(--glass-fill), color-mix(in srgb,var(--glass-fill) 75%,var(--glass-tone)) 100%);
  border: 1px solid #ffffffad;
  color: var(--glass-ink);
  box-shadow: var(--glass-shadow);
  backdrop-filter: blur(14px) saturate(1.35);
  -webkit-backdrop-filter: blur(14px) saturate(1.35);
  background-clip: padding-box;
}
.button.primary {
  background: radial-gradient(ellipse at var(--light-x, 25%) var(--light-y, 0%), color-mix(in srgb,var(--glass-tone) 50%,transparent), transparent 75%),
    linear-gradient(135deg, color-mix(in srgb,var(--glass-ink) 87%,var(--glass-tone)),var(--glass-ink));
  color: #fff;
  border-color: #ffffff82;
  box-shadow: 0 5px 18px #27204c20, inset 0 1px 0 #ffffff66, inset 0 -1px 0 #14133555;
}
.glass-control:focus-visible, .interactive-control:focus-visible {
  outline: 2px solid var(--glass-ink);
  outline-offset: 4px;
  box-shadow: var(--glass-shadow), 0 0 0 5px #ffffff66;
}
.interactive-control.is-pressed { scale: .975; filter: brightness(.98); }
.glass-control.is-pressed { box-shadow: inset 0 2px 8px #29224c24, inset 0 1px 0 #ffffff66; }
@media (hover: hover) and (pointer: fine) {
  .glass-control:hover {
    border-color: #fffffff0;
    box-shadow: 0 8px 22px color-mix(in srgb,var(--glass-ink) 12%,transparent), inset 0 1px 0 #fff, inset 0 -1px 0 color-mix(in srgb,var(--glass-tone) 45%,transparent);
    filter: brightness(1.035);
  }
  .button.primary:hover { background-color: var(--glass-ink); color: #fff; }
  a.interactive-control:not(.glass-control):hover { color: var(--glass-ink); }
  .brand:hover .brand-symbol { box-shadow: var(--glass-shadow), 0 4px 16px #6557b32a; }
}
.brand-symbol { transition: box-shadow .3s, background .3s; }
.broadcast-controls:has([data-glass-context="dark"]) p { color: #fff8ee; opacity: .85; text-shadow: 0 1px 3px #241d3355; }
.language button { opacity: .7; }
.language button[aria-pressed="true"] {
  background: linear-gradient(130deg, color-mix(in srgb,var(--glass-fill) 85%,white), color-mix(in srgb,var(--glass-tone) 60%,var(--glass-fill)));
  color: var(--glass-ink); border-color: #ffffffe6; opacity: 1;
  box-shadow: var(--glass-shadow), 0 3px 12px color-mix(in srgb,var(--glass-tone) 20%,transparent);
}
.motion-toggle[aria-pressed="true"] { background-color: #ffffff77; }
.channel-dock a { z-index: 2; }
.channel-dock a[aria-current="page"] {
  color: var(--glass-ink);
  border-color: #fffffff0;
  background: radial-gradient(ellipse at var(--light-x, 30%) var(--light-y, 0%), var(--glass-reflection), transparent 75%),
    linear-gradient(135deg, color-mix(in srgb,var(--glass-fill) 75%,var(--glass-tone)), color-mix(in srgb,var(--glass-tone) 70%,var(--glass-fill)));
  box-shadow: inset 0 1px 0 #fff, inset 0 -1px 0 color-mix(in srgb,var(--glass-tone) 55%,transparent);
}
.channel-dock a[aria-current="page"]::after {
  content: ""; position: absolute; top: 12px; right: 10px;
  width: 4px; height: 4px; border-radius: 1px; background: var(--glass-ink);
  box-shadow: 0 0 7px color-mix(in srgb,var(--glass-tone) 55%,transparent);
}
.dock-indicator {
  display: block; inset: 0 auto 0 0; z-index: 1;
  width: var(--selection-w, 128px); border-radius: 7px;
  transform: translateX(var(--selection-x, 0px));
  background: linear-gradient(135deg,#ffffff66,color-mix(in srgb,var(--glass-tone) 35%,transparent));
  border: 1px solid #fffffff0;
  box-shadow: 0 5px 20px color-mix(in srgb,var(--glass-ink) 10%,transparent), 0 1px 3px color-mix(in srgb,var(--glass-tone) 30%,transparent);
  transition: transform .48s var(--press-ease), width .48s var(--press-ease);
}
[data-pending="true"] { animation: pending-signal .75s ease-in-out infinite alternate; }
@keyframes pending-signal { to { filter: brightness(1.12); } }
.text-link::after { transition: transform .4s var(--press-ease), opacity .2s; }
.email-link, .social-row, .footer-name { transition: color .3s, text-shadow .3s, background .3s, scale .25s; }
.email-link:focus-visible, .email-link:hover { text-shadow: -1px 0 #ff8bb14d, 1px 0 #46bbac4d; }
.social-arrow, .round-link svg { transition: transform .4s var(--press-ease); }
.social-row:is(:hover,:focus-visible) .social-arrow { transform: translate(4px,-4px); }
.round-link:is(:hover,:focus-visible) svg { transform: translate(4px,-4px); }
.plain-button { border-radius: 5px; padding: 6px 9px; }
.plain-button:is(:hover,:focus-visible) { background: #ffffff4d; }
[data-copy] svg { transition: opacity .2s, transform .35s var(--press-ease); }
[data-copy][aria-busy="true"] svg { animation: copy-pending .7s ease-in-out infinite; }
@keyframes copy-pending { 50% { opacity: .3; transform: translateY(-2px); } }
[data-copy].is-success { background-color: #9de2c854; border-color: #ffffffeb; }
[data-copy].is-error { border-color: #d688a6; }
#copy-status { transition: opacity .3s, translate .35s var(--press-ease); }
#copy-status:empty { opacity: 0; translate: 0 5px; }
#copy-status:not(:empty) { opacity: 1; translate: 0 0; }
.hero { translate: var(--swipe-x, 0px) 0; transition: translate .4s var(--press-ease); }
.hero.is-swiping { transition-duration: .06s; }
.cursor-follower, .cursor-follower.over-link {
  width: 7px; height: 7px; border-radius: 2px;
  border: 1px solid #ffffffd9; background: #8b7bbd66;
  box-shadow: 0 0 0 1px #6d5f9926;
  transition: width .22s, height .22s, opacity .2s, background .2s;
}
.cursor-follower.over-link { width: 11px; height: 11px; background: #b1a2dc55; }
.cursor-follower i { display: none; }

/* The home ident has its own layout cell, so it cannot cover the name or lead. */
.home-hero .hero-lower {
  display: flex; align-items: center; justify-content: space-between;
  gap: 32px; margin-top: clamp(26px, 4vh, 40px);
}
.home-hero .hero-lower .hero-copy { margin: 0; max-width: 60%; }
@media (max-width: 760px) {
  .home-hero, html[data-lang="ja"] .home-hero { justify-content: center; padding: 70px 0 160px; }
  .home-hero .hero-lower { flex-direction: column; align-items: flex-start; gap: 28px; margin-top: 24px; }
  .home-hero .hero-lower .hero-copy { max-width: 100%; }
  .channel-dock a[aria-current="page"]::after { top: 10px; right: 7px; width: 3px; height: 3px; }
}
@media (prefers-reduced-motion: reduce) {
  html:not([data-motion="on"]) .interactive-control { scale: 1 !important; }
}
html[data-motion="off"] .interactive-control { scale: 1 !important; }
html[data-motion="off"] .hero { translate: none; }
@supports not (backdrop-filter: blur(1px)) {
  .glass-control { background-color: color-mix(in srgb, var(--paper) 75%, #fff); }
  .button.primary { background-color: #323052; }
}

/* ==========================================================================
   channels (merged; original cascade order preserved)
   ========================================================================== */
/* The standby test card (404) and the cursor's small CRT. */
.standby-screen { position:relative; min-height:380px; overflow:hidden; border:12px solid #eee9e1; border-radius:24px; background:#25273f; color:#f9f1e2; box-shadow:0 20px 50px #39315112,inset 0 0 35px #0007; }
.test-bars { display:flex; height:100%; position:absolute; inset:0; opacity:.2; }
.test-bars i { flex:1; background:#eee; }.test-bars i:nth-child(2) {background:#ece18c}.test-bars i:nth-child(3) {background:#7cdeca}.test-bars i:nth-child(4) {background:#7dba8a}.test-bars i:nth-child(5) {background:#c181b5}.test-bars i:nth-child(6) {background:#b7737f}.test-bars i:nth-child(7) {background:#6e84be}
.standby-caption { position:relative; text-align:center; padding:70px 20px; text-shadow:1px 0 #d88c9c55,-1px 0 #87cfce55; }
.standby-caption h2 { font:800 clamp(32px,7vw,90px)/1 "Archivo",sans-serif; margin:20px 0; letter-spacing:-.04em; }
.collection-actions { display:flex; flex-wrap:wrap; justify-content:center; gap:16px; margin:40px 0 100px; }
main > .standby-screen, main > .collection-actions { margin-left:var(--pad); margin-right:var(--pad); }
.cursor-follower, .cursor-follower.over-link { width:10px; height:8px; border-radius:2px; border:1px solid #fff9; background:repeating-linear-gradient(0deg,#68618f44 0 1px,#ffffff66 1px 2px); box-shadow:-1px 0 #d37d9955,1px 0 #6bc7b455,0 0 0 1px #5e557331; }
.cursor-follower.over-link { width:18px; height:14px; border-radius:3px; background:repeating-linear-gradient(0deg,#8981a944 0 1px,#ffffff77 1px 3px); }
.cursor-follower.over-link i { display:block; position:absolute; width:0; height:0; border-left:4px solid #514b70; border-top:3px solid transparent; border-bottom:3px solid transparent; left:6px; top:3px; }
@media(max-width:760px) {
  .channel-dock {gap:5px}.channel-dock a, html[data-lang="ja"] .channel-dock a {padding:8px 5px;font-size:12px}.dock-number {font-size:12px}.dock-number::before {content:""}
  .standby-screen {min-height:300px;border-width:8px}
}

/* ==========================================================================
   layout-refinement (merged; original cascade order preserved)
   ========================================================================== */
/* The broadcast controls occupy one small corner until the viewer opens them. */
.channel-switcher { position:relative; margin:0 var(--pad) 32px; z-index:60; }
.channel-toggle { display:none; }
.switcher-panel { padding:18px; border:1px solid #ffffffb8; border-radius:16px; background:color-mix(in srgb,var(--paper) 85%,white); }
.channel-dock, html[data-lang="ja"] .channel-dock {
  position:relative; display:grid; grid-template-columns:repeat(3,minmax(0,1fr));
  inset:auto; transform:none; width:100%; max-width:none; padding:0; gap:8px;
  background:none; border:none; box-shadow:none; backdrop-filter:none;
}
.channel-dock a, html[data-lang="ja"] .channel-dock a {
  width:auto; min-width:0; min-height:68px; padding:11px 13px; gap:7px; font-size:12px;
}
.dock-number { font-size:12px; }.dock-number::before { content:"CH "; }
/* A last channel that would sit alone on its row takes the whole row instead. */
.channel-dock a:last-of-type:nth-of-type(3n+1) { grid-column:1 / -1; }
.dock-indicator { top:0; bottom:auto; height:var(--selection-h,68px); transform:translate(var(--selection-x,0px),var(--selection-y,0px)); transition:transform .4s var(--press-ease),width .4s var(--press-ease),height .4s var(--press-ease); }
.switcher-heading { display:flex; align-items:center; justify-content:space-between; margin:0 0 14px; font-size:12px; letter-spacing:.08em; }
.switcher-heading .mono { opacity:.62; font-size:12px; }
.broadcast-controls { position:static; inset:auto; flex-direction:row; align-items:center; justify-content:space-between; gap:12px; margin-top:15px; padding-top:13px; border-top:1px solid var(--line); font-size:12px; }
.broadcast-controls p { margin:0; }.broadcast-controls button { font-size:12px; padding:7px 10px; }
.js .channel-switcher { position:fixed; left:var(--pad); bottom:max(20px,env(safe-area-inset-bottom)); margin:0; width:max-content; max-width:calc(100vw - 2 * var(--pad)); }
.js .channel-toggle { display:flex; align-items:center; gap:13px; height:48px; min-width:190px; padding:0 16px; border-radius:10px; cursor:pointer; color:var(--glass-ink); }
.channel-toggle .mono { font-size:12px; opacity:.72; letter-spacing:.03em; }
.channel-toggle [data-current-label] { font-size:12px; font-weight:600; }
.channel-toggle .switcher-icon { width:14px; height:14px; margin-left:auto; transition:transform .35s var(--press-ease); }
.channel-toggle .switcher-icon path { stroke-width:1.5; }
[data-open="true"] .switcher-icon { transform:rotate(180deg); }
.js .switcher-panel { position:absolute; bottom:62px; left:0; width:430px; max-width:calc(100vw - 2 * var(--pad)); box-shadow:0 20px 60px #29243d20,inset 0 1px #fff; backdrop-filter:blur(22px); -webkit-backdrop-filter:blur(22px); background:color-mix(in srgb,var(--paper) 82%,transparent); opacity:0; visibility:hidden; transform:translateY(12px) scale(.97); transform-origin:left bottom; transition:opacity .24s,transform .35s var(--press-ease),visibility .24s; }
.js [data-open="true"] .switcher-panel { opacity:1; visibility:visible; transform:none; }
.js .switcher-panel { max-height:calc(100svh - 100px); overflow-y:auto; overscroll-behavior:contain; }
.channel-toggle[aria-expanded="true"] { box-shadow:var(--glass-shadow),0 4px 18px #29243d18; }
.site-footer { padding-bottom:110px; }
@media(max-width:760px) {
  .js .channel-switcher { bottom:max(16px,env(safe-area-inset-bottom)); }
  .js .channel-toggle { height:46px; min-width:175px; }
  .js .switcher-panel { width:350px; padding:15px; bottom:59px; }
  .channel-dock, html[data-lang="ja"] .channel-dock { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .channel-dock a, html[data-lang="ja"] .channel-dock a { font-size:12px; padding:11px 12px; }
  .channel-dock a:last-of-type:nth-of-type(3n+1) { grid-column:auto; }
  .channel-dock a:last-of-type:nth-of-type(2n+1) { grid-column:1 / -1; }
  .site-footer { padding-bottom:100px; }
}
html[data-motion="off"] .switcher-panel, html[data-motion="off"] .switcher-icon { transition:none; }

/* ==========================================================================
   Self-hosted font fallbacks
   ========================================================================== */
/* Pixel-font labels fall back to the Chinese face on Chinese and English pages, and to the Japanese face on Japanese pages (each face only contains its own copy). */
html:not([data-lang="ja"]) { --mono: "DotGothic16", "Noto Sans SC", monospace; }

/* ==========================================================================
   Home: name, lead and the broadcast-gear wall around the big television
   ========================================================================== */
.home-hero, html[data-lang="ja"] .home-hero {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, clamp(420px, 44vw, 700px));
  grid-template-rows: auto auto;
  align-content: center;
  column-gap: clamp(24px, 3.4vw, 60px);
  row-gap: clamp(20px, 3vh, 34px);
  min-height: calc(100svh - var(--header));
  padding: 24px 0 96px;
}
.home-hero .hero-name {
  grid-column: 1; grid-row: 1; align-self: end;
  margin: 0; width: max-content; max-width: 100%;
  font-size: clamp(60px, 7.9vw, 138px); font-weight: 800;
  font-variation-settings: "wdth" 100, "wght" 800;
  line-height: .84; letter-spacing: -.012em;
}
.home-hero .name-line { white-space: nowrap; padding-top: .05em; }
.home-hero .hero-lower { display: contents; }
.home-hero .hero-lower .hero-copy { grid-column: 1; grid-row: 2; align-self: start; max-width: 25em; margin: 0; }
.home-hero .hero-copy p { margin: 0; color: var(--ink); font-size: clamp(15px, 1.35vw, 20px); line-height: 1.65; }
.home-hero .tv-wall { grid-column: 2; grid-row: 1 / 3; align-self: center; }

/* The gear is one drawing; the live set is laid over the gap left for it. 1 drawing unit = --u. */
.tv-wall {
  position: relative;
  width: 100%;
  container-type: inline-size;
  user-select: none;
  -webkit-user-select: none;
}
.tv-wall-art { display: block; width: 100%; height: auto; aspect-ratio: 720 / 600; overflow: visible; stroke: none; }
.tv-wall-art .wall-onair-text, .tv-wall-art .wall-deck-text { font-family: var(--mono); fill: #fff; font-size: 15px; letter-spacing: .14em; }
.tv-wall-art .wall-deck-text { fill: #9df5c8; font-size: 15px; letter-spacing: .08em; }
.tv-wall-art .wall-spark { fill: #b5adea; }
.tv-wall-art .wall-spark.pink { fill: #ff8fb7; }
.tv-wall-art .wall-spark.teal { fill: #7fd0c2; }
.tv-wall-art :is(.wall-spark, .wall-woofer, .wall-tweeter, .wall-dish-head, .wall-leaves, .wall-reel, .wall-tip, .wall-ring, .wall-needle, .wall-signal path, .wall-item) { transform-box: fill-box; }

/* Small lives of the gear. Paused when the wall is off screen or motion is off. */
@media (prefers-reduced-motion: no-preference) {
  html[data-motion="on"] .tv-wall-art .wall-signal path { animation: wall-signal 2.8s ease-out infinite; }
  html[data-motion="on"] .tv-wall-art .wall-signal path:nth-child(2) { animation-delay: .35s; }
  html[data-motion="on"] .tv-wall-art .wall-signal path:nth-child(3) { animation-delay: .7s; }
  html[data-motion="on"] .tv-wall-art .wall-spark { transform-origin: center; animation: wall-twinkle 4.2s ease-in-out infinite; }
  html[data-motion="on"] .tv-wall-art .wall-spark:nth-of-type(2n) { animation-delay: -1.6s; }
  html[data-motion="on"] .tv-wall-art .wall-spark:nth-of-type(3n) { animation-delay: -2.9s; }
  html[data-motion="on"] .tv-wall-art .wall-wave { stroke-dasharray: 6 4; animation: wall-wave 1.1s linear infinite; }
  html[data-motion="on"] .tv-wall-art .wall-needle { animation: wall-needle 7s ease-in-out infinite; }
  html[data-motion="on"] .tv-wall-art .wall-woofer { transform-origin: center; animation: wall-thump .9s cubic-bezier(.3,0,.2,1) infinite; }
  html[data-motion="on"] .tv-wall-art .wall-tweeter { transform-origin: center; animation: wall-thump .45s ease-in-out infinite alternate; }
  html[data-motion="on"] .tv-wall-art .wall-dish-head { transform-origin: 73% 90%; animation: wall-dish 9s ease-in-out infinite; }
  html[data-motion="on"] .tv-wall-art .wall-led, html[data-motion="on"] .tv-wall-art .wall-deck-dot { animation: wall-blink 1.6s steps(1) infinite; }
  html[data-motion="on"] .tv-wall-art .wall-onair-box { animation: wall-onair 3.6s ease-in-out infinite; }
  html[data-motion="on"] .tv-wall-art .wall-leaves { transform-origin: 50% 100%; animation: wall-sway 6s ease-in-out infinite; }
  html[data-motion="on"] .tv-wall-art .wall-reel { transform-origin: center; animation: wall-spin 2.4s linear infinite; }
  html[data-motion="on"] .tv-wall-art .wall-tip { transform-origin: center; animation: wall-bob 3.4s ease-in-out infinite; }
  html[data-motion="on"] .tv-wall-art .wall-ring { transform-origin: center; animation: spin 120s linear infinite; }
}
.tv-wall.is-paused * { animation-play-state: paused !important; }
@keyframes wall-signal { 0% { opacity: 0; transform: translate(-4px, 4px); } 30% { opacity: .9; } 100% { opacity: 0; transform: translate(4px, -4px); } }
@keyframes wall-twinkle { 50% { transform: scale(.55) rotate(25deg); opacity: .55; } }
@keyframes wall-wave { to { stroke-dashoffset: -20; } }
@keyframes wall-needle { 0%, 100% { transform: translateY(0); } 30% { transform: translateY(-22px); } 55% { transform: translateY(26px); } 75% { transform: translateY(8px); } }
@keyframes wall-thump { 0%, 100% { transform: scale(1); } 12% { transform: scale(1.07); } 40% { transform: scale(.98); } }
@keyframes wall-dish { 0%, 100% { transform: rotate(0); } 35% { transform: rotate(-7deg); } 70% { transform: rotate(5deg); } }
@keyframes wall-blink { 50% { opacity: .2; } }
@keyframes wall-onair { 0%, 100% { filter: none; } 50% { filter: drop-shadow(0 0 7px #ff5c9a) brightness(1.08); } }
@keyframes wall-sway { 0%, 100% { transform: rotate(-1.4deg); } 50% { transform: rotate(1.6deg); } }
@keyframes wall-spin { to { transform: rotate(360deg); } }
@keyframes wall-bob { 50% { transform: translateY(-3px); } }
/* Gadgets lean in when the cursor visits. */
@media (hover: hover) and (pointer: fine) {
  .tv-wall-art .wall-item { transition: transform .5s cubic-bezier(.16,1,.3,1); }
  .tv-wall-art .wall-item:hover { transform: translateY(-4px); }
}

/* ---------- the live television ---------- */
.television-unit {
  --u: calc(100cqw / 720);
  position: absolute;
  left: calc(var(--u) * 210);
  top: calc(var(--u) * 168);
  width: calc(var(--u) * 300);
  height: calc(var(--u) * 226);
}
.television-set { position: relative; width: 100%; height: 100%; }
.television-case {
  position: absolute; inset: 0;
  border-radius: calc(var(--u) * 22);
  background: linear-gradient(140deg, #fffdf8, #f0eef5 55%, #d9d6e4);
  box-shadow:
    inset 0 calc(var(--u) * 2) calc(var(--u) * 2) #fff,
    inset calc(var(--u) * -4) calc(var(--u) * -5) calc(var(--u) * 9) #a49eba33,
    0 calc(var(--u) * 16) calc(var(--u) * 30) #25203f24,
    0 calc(var(--u) * 3) calc(var(--u) * 5) #25203f12;
}
.television-screen {
  position: absolute;
  left: calc(var(--u) * 12); top: calc(var(--u) * 12);
  width: calc(var(--u) * 224); height: calc(var(--u) * 168);
  border-radius: calc(var(--u) * 20) / calc(var(--u) * 22);
  overflow: hidden; isolation: isolate;
  background: #1b1d36;
  box-shadow: 0 0 0 calc(var(--u) * 6) #34324a, 0 0 0 calc(var(--u) * 8) #bdb9cb, 0 calc(var(--u) * 1) 0 calc(var(--u) * 9) #ffffffb0;
  cursor: pointer;
  transform: perspective(900px) rotateX(calc(var(--rx, 0deg) * .4)) rotateY(calc(var(--ry, 0deg) * .5));
  transition: transform .65s cubic-bezier(.16,1,.3,1);
}
/* Scanlines, vignette and the curved glass. */
.television-screen::before {
  content: ""; position: absolute; inset: 0; z-index: 4; pointer-events: none;
  background: radial-gradient(ellipse at center, transparent 48%, #0c0a1a70),
    repeating-linear-gradient(transparent 0 2px, #0d0b1a2e 2px 3px);
  box-shadow: inset 0 0 calc(var(--u) * 16) #0c0a1a80;
}
.television-screen::after {
  content: ""; position: absolute; inset: 0; z-index: 5; pointer-events: none;
  background: radial-gradient(ellipse at var(--light-x, 22%) var(--light-y, 4%), #ffffff40, transparent 62%),
    linear-gradient(150deg, #ffffff2e, transparent 38%, transparent 84%, #ffffff12);
  opacity: .7; transition: opacity .45s;
}
.television-screen:hover::after { opacity: 1; }
.tv-slides { position: absolute; inset: 0; }
.tv-slide {
  position: absolute; inset: 0; opacity: 0; visibility: hidden;
  transition: opacity .55s ease, visibility 0s .55s;
}
.tv-slide.is-active { opacity: 1; visibility: visible; transition: opacity .55s ease, visibility 0s; }
.tv-still { width: 100%; height: 100%; object-fit: cover; transform-origin: 60% 50%; }
html[data-motion="on"] .tv-slide.is-active .tv-still { animation: tv-pan 9s ease-out both; }
@keyframes tv-pan { from { transform: scale(1.12) translate(2%, 1%); } to { transform: scale(1.02); } }
.tv-slide .art { position: absolute; inset: 0; border-radius: 0; }
.tv-ident {
  position: absolute; z-index: 3; left: 8%; bottom: 9%;
  color: #fff9ef; text-shadow: 0 1px 3px #0a081a99, 0 0 calc(var(--u) * 8) #0a081a66;
}
.tv-ident b { display: block; font: 800 calc(var(--u) * 21)/0.92 "Archivo", sans-serif; letter-spacing: .01em; font-variation-settings: "wdth" 112; }
.tv-calc .tv-ident, .tv-tracker .tv-ident { color: #1f2a4a; text-shadow: none; }
.tv-tracker .tv-ident { color: #263c2c; }
.tv-slide.tv-calc .art-calc .battle-panels { transform: scale(.92) translate(6%, -6%); }
.tv-next { background: #2c2b46; }
.tv-next .static-noise { position: absolute; inset: 0; width: 100%; height: 100%; opacity: .5; }
.tv-question {
  position: absolute; inset: 0; display: grid; place-items: center; z-index: 2;
  font: 800 calc(var(--u) * 96)/1 "Archivo", sans-serif; color: #f4f1ff;
  text-shadow: calc(var(--u) * -3) 0 #ff5c9a88, calc(var(--u) * 3) 0 #46c9b788;
  animation: tv-flicker 3.2s steps(1) infinite;
}
@keyframes tv-flicker { 0%, 100% { opacity: .92; } 40% { opacity: .7; transform: translateX(1px); } 42% { opacity: .95; transform: none; } 70% { opacity: .82; } }
.tv-static {
  position: absolute; inset: 0; z-index: 6; width: 100%; height: 100%;
  image-rendering: pixelated; pointer-events: none; opacity: 0; mix-blend-mode: screen;
}
.tv-osd {
  position: absolute; z-index: 6; top: 8%; left: 7%;
  display: flex; align-items: center; gap: calc(var(--u) * 5);
  font: calc(var(--u) * 11)/1 var(--mono); letter-spacing: .08em; color: #f6fff9;
  text-shadow: 0 0 calc(var(--u) * 4) #000a;
}
.tv-osd i { width: calc(var(--u) * 6); height: calc(var(--u) * 6); border-radius: 50%; background: #ff5c9a; box-shadow: 0 0 calc(var(--u) * 5) #ff5c9a; }
html[data-motion="on"] .tv-osd i { animation: wall-blink 1.4s steps(1) infinite; }

.television-panel {
  position: absolute; top: calc(var(--u) * 16); right: calc(var(--u) * 10);
  width: calc(var(--u) * 42); bottom: calc(var(--u) * 46);
  display: flex; flex-direction: column; align-items: center; gap: calc(var(--u) * 12);
}
.television-dial, .television-knob { padding: 0; border: 0; cursor: pointer; flex: none; }
.television-dial {
  width: calc(var(--u) * 36); height: calc(var(--u) * 36); border-radius: 50%; position: relative;
  background: radial-gradient(circle, #f6f4f9 0 42%, transparent 43%), repeating-conic-gradient(#a7a2b8 0 3deg, #efecf3 3deg 24deg);
  box-shadow: 0 0 0 calc(var(--u) * 2) #c5c1d1, 0 calc(var(--u) * 3) calc(var(--u) * 4) #3d344229;
  transition: rotate .7s cubic-bezier(.2,.8,.2,1), box-shadow .3s;
  rotate: var(--dial, 0deg);
}
.television-dial::after { content: ""; position: absolute; left: 50%; top: 9%; width: calc(var(--u) * 3); height: 32%; translate: -50% 0; border-radius: 2px; background: #ff5c9a; }
.television-knob {
  width: calc(var(--u) * 22); height: calc(var(--u) * 22); border-radius: 50%;
  background: radial-gradient(circle at 35% 28%, #fff, #cfcbd8);
  box-shadow: 0 0 0 calc(var(--u) * 1.5) #c5c1d1, 0 calc(var(--u) * 2) calc(var(--u) * 4) #5c536533;
  transition: transform .3s cubic-bezier(.16,1,.3,1);
}
.television-knob:active { transform: scale(.9); }
.television-dial:focus-visible, .television-knob:focus-visible { outline: 2px solid #6441b7; outline-offset: 3px; }
.television-grille { flex: 1; width: calc(var(--u) * 30); border-radius: calc(var(--u) * 5); background: repeating-linear-gradient(#bcb7c8 0 calc(var(--u) * 1.6), #ebe8f0 calc(var(--u) * 1.6) calc(var(--u) * 5)); opacity: .75; }
.television-plate { position: absolute; left: calc(var(--u) * 20); bottom: calc(var(--u) * 15); font: calc(var(--u) * 11)/1 var(--mono); letter-spacing: .14em; color: #8a8499; }
.television-led { position: absolute; right: calc(var(--u) * 26); bottom: calc(var(--u) * 17); width: calc(var(--u) * 6); height: calc(var(--u) * 6); border-radius: 50%; background: #ff5c9a; box-shadow: 0 0 calc(var(--u) * 6) #ff8fb7; }
.tv-wall.is-tuning .television-led { background: #9df5c8; box-shadow: 0 0 calc(var(--u) * 6) #9df5c8; }

/* Controls under the wall: previous / programme name / next, and where we are in the line-up. */
.television-programmes {
  display: none;
  grid-template-columns: auto minmax(0, 1fr) auto;
  grid-template-rows: auto auto;
  align-items: center; column-gap: 12px; row-gap: 9px;
  width: min(330px, 86%); margin: clamp(-34px, -3cqw, -10px) auto 0;
  position: relative; z-index: 2;
}
.js .television-programmes { display: grid; }
.television-programmes > button {
  width: 34px; height: 34px; border-radius: 10px; display: grid; place-items: center; padding: 0;
}
.television-programmes > button svg { width: 15px; height: 15px; stroke-width: 1.8; }
.television-caption {
  display: flex; align-items: center; justify-content: center; gap: 10px; min-width: 0; min-height: 34px;
  color: var(--glass-ink); font-size: 13px; font-weight: 600; text-decoration: none;
}
.tv-caption-kicker { opacity: .6; font-size: 11px; font-weight: 400; white-space: nowrap; }
.tv-caption-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.television-caption svg { width: 16px; height: 16px; flex: none; transition: transform .4s cubic-bezier(.16,1,.3,1); }
.television-caption:is(:hover, :focus-visible) svg { transform: translateX(3px); }
.television-caption[target="_blank"] svg { transform: rotate(-45deg); }
.television-caption[target="_blank"]:is(:hover, :focus-visible) svg { transform: rotate(-45deg) translateX(3px); }
.programme-position { grid-column: 1 / -1; display: flex; justify-content: center; gap: 7px; }
.programme-position i { width: 14px; height: 3px; border-radius: 2px; background: currentColor; opacity: .18; transition: opacity .3s, width .4s cubic-bezier(.16,1,.3,1), background .3s; }
.programme-position i.active { width: 26px; opacity: .85; background: var(--ink); }

/* ---------- home sections ---------- */
.home-block { margin-top: clamp(80px, 9vw, 120px); }
.project-grid.category-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.category-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; margin-bottom: 30px; }
.category-heading .eyebrow { margin-bottom: 14px; }
.category-heading h2 { font-size: clamp(26px, 3.2vw, 44px); letter-spacing: -.03em; font-weight: 600; }

/* The next project: static, a question mark, and three censor bars. */
.art-next { background: #34324f; color: #f1eeff; }
.static-noise { image-rendering: pixelated; }
.art-next .static-noise { position: absolute; inset: 0; width: 100%; height: 100%; opacity: .34; }
.art-next::before {
  content: ""; position: absolute; inset: 0; z-index: 1;
  background: radial-gradient(ellipse at 50% 45%, #6c5fb066, transparent 65%), repeating-linear-gradient(transparent 0 3px, #0006 3px 4px);
}
.next-glyph {
  position: absolute; z-index: 2; inset: 0; display: grid; place-items: center;
  font: 800 34cqw/1 "Archivo", sans-serif; color: #f3f0ff;
  text-shadow: -0.8cqw 0 #ff5c9a99, 0.8cqw 0 #46c9b799;
}
html[data-motion="on"] .next-glyph { animation: tv-flicker 3.6s steps(1) infinite; }
.next-bars { position: absolute; z-index: 3; left: 7%; bottom: 20%; display: grid; gap: 1.4cqw; width: 34%; }
.next-bars i { height: 2.4cqw; border-radius: 3px; background: #f1eeff; opacity: .85; }
.next-bars i:nth-child(2) { width: 72%; }
.next-bars i:nth-child(3) { width: 48%; opacity: .55; }

.next-card {
  display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); align-items: stretch;
  border-radius: 22px; overflow: hidden; color: var(--ink); text-decoration: none;
  background: color-mix(in srgb, var(--paper) 70%, white); border: 1px solid #ffffffb0;
  box-shadow: 0 24px 50px -30px #2a245066;
  transition: box-shadow .5s, transform .6s cubic-bezier(.16,1,.3,1);
}
.next-card .art { aspect-ratio: 16 / 9; height: 100%; }
.next-card-copy { padding: clamp(26px, 4vw, 56px); display: flex; flex-direction: column; justify-content: center; gap: 16px; }
.next-card-copy .mono { color: var(--muted); }
.next-card-copy h3 { font-size: clamp(30px, 3.6vw, 52px); font-weight: 700; letter-spacing: -.04em; line-height: 1.1; }
.next-card-copy p { color: var(--muted); font-size: 15px; max-width: 34ch; }
.next-card-copy .text-link { align-self: flex-start; margin-top: 6px; }
.next-card:is(:hover, :focus-visible) { box-shadow: 0 34px 70px -34px #2a245088; transform: translateY(-3px); }
.next-card:is(:hover, :focus-visible) .text-link::after { transform: scaleX(1); }

/* ---------- responsive ---------- */
@media (min-width: 1800px) {
  .home-hero, html[data-lang="ja"] .home-hero { grid-template-columns: minmax(0, 1fr) 760px; }
}
@media (max-width: 1100px) and (min-width: 901px) {
  .home-hero .hero-name { font-size: 7.3vw; }
}
@media (max-width: 900px) and (min-width: 761px) {
  .home-hero, html[data-lang="ja"] .home-hero { grid-template-columns: 1fr; grid-template-rows: auto auto auto; padding-top: 40px; }
  .home-hero .hero-name { font-size: 12.4vw; grid-row: 1; }
  .home-hero .hero-lower .hero-copy { grid-row: 2; }
  .home-hero .tv-wall { grid-column: 1; grid-row: 3; width: min(720px, 100%); justify-self: center; margin-top: 10px; }
}
@media (max-width: 760px) {
  .home-hero, html[data-lang="ja"] .home-hero {
    grid-template-columns: 1fr; grid-template-rows: auto auto auto; row-gap: 22px;
    padding: 34px 0 92px; min-height: 0;
  }
  .home-hero .hero-name { font-size: 15vw; grid-row: 1; }
  .home-hero .hero-lower .hero-copy { grid-row: 2; }
  .home-hero .hero-copy p { font-size: 16px; }
  /* The drawing is wider than a phone; let the edges bleed so the set stays large. */
  .home-hero .tv-wall { grid-column: 1; grid-row: 3; width: 118%; margin: 4px 0 0 -9%; }
  .television-programmes { width: min(330px, 70%); margin-top: -4px; }
  .project-grid.category-grid { grid-template-columns: 1fr; }
  .category-heading { align-items: flex-start; flex-direction: column; gap: 12px; }
  .next-card { grid-template-columns: 1fr; }
  .home-block { margin-top: 70px; }
}
@media (max-height: 700px) and (min-width: 1101px) {
  .home-hero, html[data-lang="ja"] .home-hero { grid-template-columns: minmax(0, 1fr) minmax(0, min(44vw, calc((100svh - var(--header)) * 1.02))); padding: 10px 0 70px; }
  .home-hero .hero-name { font-size: min(7.9vw, 17vh); }
}

/* ==========================================================================
   The two game channels (CH 04, CH 05) and CH 06 (the next project)
   ========================================================================== */
.sr-only { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }

/* Page colours: each special has its own light, like a different time of day on the same channel. */
html[data-page="henrys-tavern"] {
  --paper: #f1e5d4; --muted: #6c584a; --line: rgba(60, 38, 24, .17);
  --glass-tone: #c9996c; --glass-ink: #45301f; --accent: #c8792f;
  --gold-1: #ffe3a3; --gold-2: #e2a54c; --gold-3: #a5662a; --night: #1d1411; --night-2: #2c1d16;
}
html[data-page="rotor-trails"] {
  --paper: #e1eaee; --muted: #4c6170; --line: rgba(20, 44, 62, .16);
  --glass-tone: #8fb2c3; --glass-ink: #203d4c; --accent: #ef8344;
  --gold-1: #ffd9a8; --gold-2: #f39a55; --gold-3: #c4602b; --night: #111821; --night-2: #1c2632;
}
html[data-page="coming-soon"] { --paper: #dcdaee; --muted: #55536f; --glass-tone: #9c97c8; --glass-ink: #2c2a4c; --accent: #6a5fd0; }

/* ---------- shared pieces: icons and buttons on dark imagery ---------- */
.icon-out, .icon-arrow, .icon-play, .icon-pause { width: 18px; height: 18px; flex: none; }
.icon-play, .icon-pause { fill: currentColor; stroke: none; }
.button .icon-out { transition: transform .4s cubic-bezier(.16,1,.3,1); }
.button:hover .icon-out { transform: translate(2px, -2px); }
.on-dark {
  --glass-fill: #ffffff1c; --glass-tone: #ffffff40; --glass-ink: #fff8ee; --glass-reflection: #ffffff2e;
  color: #fff8ee;
}
.gp-play, .gp-nav-play {
  background: linear-gradient(135deg, var(--gold-1), var(--gold-2) 55%, var(--gold-3)) !important;
  color: #2a1608 !important; border-color: #fff3d699 !important;
  box-shadow: 0 10px 30px -10px color-mix(in srgb, var(--gold-3) 70%, transparent), inset 0 1px 0 #ffffffa6, inset 0 -1px 0 #0000001f !important;
  font-weight: 700;
}
.gp-play:hover, .gp-nav-play:hover { filter: brightness(1.06) saturate(1.05); }

/* ---------- home: each game is a channel of its own ---------- */
.channel-card {
  display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); align-items: center;
  gap: clamp(26px, 4vw, 64px);
}
.channel-card.is-reverse { grid-template-columns: minmax(0, 1fr) minmax(0, 1.35fr); }
.channel-card.is-reverse .channel-card-art { order: 2; }
.channel-card-art {
  position: relative; display: block; overflow: hidden; isolation: isolate;
  aspect-ratio: 16 / 10; border-radius: 24px; background: #2a2230;
  box-shadow: 0 40px 80px -46px #2a1a1488, 0 0 0 1px #ffffff40;
}
.channel-card-art img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.4s cubic-bezier(.16,1,.3,1), filter .6s; }
.channel-card--rotor .channel-card-art img { object-position: 62% 50%; }
.channel-card-art::after {
  content: ""; position: absolute; inset: 0; pointer-events: none; border-radius: inherit;
  background: repeating-linear-gradient(transparent 0 3px, #0000000d 3px 4px), radial-gradient(ellipse at center, transparent 55%, #0a081a55);
  box-shadow: inset 0 0 0 1px #ffffff26;
}
.channel-card-art:is(:hover, :focus-visible) img { transform: scale(1.045); filter: saturate(1.08); }
.channel-card-osd {
  position: absolute; z-index: 2; left: 20px; top: 18px; display: flex; align-items: center; gap: 9px;
  padding: 8px 12px; border-radius: 8px; background: #120d1866; backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
  color: #fff8ee; font: 12px var(--mono); letter-spacing: .08em;
}
.channel-card-osd i { width: 7px; height: 7px; border-radius: 50%; background: #ff5c9a; box-shadow: 0 0 8px #ff5c9a; }
html[data-motion="on"] .channel-card-osd i { animation: wall-blink 1.4s steps(1) infinite; }
.channel-card-copy { display: flex; flex-direction: column; align-items: flex-start; gap: 20px; container-type: inline-size; }
.channel-card-kicker { color: var(--muted); }
.channel-card-title { margin: 0; }
.channel-card .rotor-wordmark { font-size: min(9.6cqw, 60px); }
.channel-card .rotor-wordmark small { color: #c4602b; }
.channel-card .henry-wordmark svg { width: min(100%, 400px); }
.channel-card .logo-henry { --logo-fill: #3b2417; --logo-rule: #b0702f; }
.channel-card-copy p { color: var(--muted); font-size: 15px; max-width: 36ch; }
.channel-card-actions { display: flex; flex-wrap: wrap; gap: 12px; }

/* Word marks */
.rotor-wordmark {
  font-family: "Archivo", sans-serif; font-weight: 900; font-stretch: 125%;
  font-variation-settings: "wdth" 125, "wght" 880;
  font-size: clamp(40px, 5vw, 76px); line-height: .9; letter-spacing: -.012em; color: var(--ink);
}
.rotor-wordmark span { display: block; white-space: nowrap; }
.rotor-wordmark small {
  display: block; margin-top: .42em; font: 600 .26em/1.2 var(--sans); font-stretch: 100%;
  letter-spacing: .62em; color: var(--accent, #c4602b);
}
.henry-wordmark svg { display: block; width: clamp(260px, 30vw, 440px); height: auto; overflow: visible; }
.logo-henry .logo-title, .logo-henry .logo-sub, .logo-henry .logo-gem { fill: var(--logo-fill, #3a2416); }
.logo-henry .logo-rule { stroke: var(--logo-rule, #a5662a); stroke-width: 1.6; fill: none; }
.logo-henry .logo-gem { fill: var(--logo-rule, #a5662a); }

/* ---------- game specials: hero ---------- */
.gp-hero {
  position: relative; isolation: isolate; overflow: hidden;
  margin: 0 var(--pad); border-radius: clamp(20px, 2.4vw, 32px);
  min-height: max(600px, calc(100svh - var(--header) - 18px));
  display: flex; align-items: flex-end;
  background: var(--night); color: #fff8ee;
  --glass-fill: #ffffff1c; --glass-tone: #ffffff40; --glass-ink: #fff8ee; --glass-reflection: #ffffff2e;
}
.gp-hero-media { position: absolute; inset: 0; z-index: -2; overflow: hidden; }
.gp-hero-img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 50%; transform: translate3d(0, var(--hero-shift, 0px), 0) scale(1.06); transform-origin: 60% 40%; }
.gp-hero-rotor .gp-hero-img { object-position: 66% 50%; }
html[data-motion="on"] .gp-hero-img { animation: hero-settle 2.6s cubic-bezier(.16,1,.3,1) both; }
@keyframes hero-settle { from { scale: 1.08; filter: brightness(.55) saturate(.8); } to { scale: 1; filter: none; } }
.gp-hero::before {
  content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none;
  background:
    linear-gradient(90deg, #0b0710e6 0%, #0b0710b0 26%, #0b071040 52%, transparent 72%),
    linear-gradient(0deg, #0b0710d9 0%, transparent 46%),
    linear-gradient(180deg, #0b071080 0%, transparent 22%);
}
.gp-hero::after {
  content: ""; position: absolute; inset: 0; z-index: 3; pointer-events: none; border-radius: inherit;
  background: repeating-linear-gradient(transparent 0 3px, #00000012 3px 4px);
  box-shadow: inset 0 0 0 1px #ffffff1f, inset 0 0 120px #00000059;
}
.gp-osd {
  position: absolute; z-index: 2; top: clamp(18px, 2.4vw, 30px); left: clamp(20px, 3vw, 44px); right: clamp(20px, 3vw, 44px);
  display: flex; justify-content: space-between; gap: 18px; font: 12px var(--mono); letter-spacing: .1em; color: #fff8eecc;
}
.gp-osd > span:nth-child(2) { margin-right: auto; opacity: .8; }
.gp-osd-live { display: inline-flex; align-items: center; gap: 8px; color: #fff; }
.gp-osd-live i { width: 8px; height: 8px; border-radius: 50%; background: #ff3b6e; box-shadow: 0 0 10px #ff3b6e; }
html[data-motion="on"] .gp-osd-live i { animation: wall-blink 1.4s steps(1) infinite; }
.gp-osd-key { padding: 3px 8px; border: 1px solid #ffffff4d; border-radius: 5px; }
.gp-hero-content {
  position: relative; z-index: 2; width: min(640px, 100%);
  padding: clamp(28px, 4.2vw, 68px); padding-top: 120px;
  display: flex; flex-direction: column; align-items: flex-start;
}
.gp-kicker { font: 12px var(--mono); letter-spacing: .14em; color: var(--gold-1); margin-bottom: 20px; display: flex; align-items: center; gap: 12px; }
.gp-kicker::before { content: ""; width: 26px; height: 1px; background: currentColor; opacity: .7; }
.gp-logo { margin: 0 0 22px; }
.gp-hero .henry-wordmark svg { width: clamp(280px, 34vw, 500px); filter: drop-shadow(0 4px 18px #00000080); }
.gp-hero .logo-henry { --logo-fill: url(#none); }
.gp-hero .logo-henry .logo-title, .gp-hero .logo-henry .logo-sub { fill: #f6d58f; }
.gp-hero .logo-henry .logo-rule { stroke: #e2b062; }
.gp-hero .logo-henry .logo-gem { fill: #e2b062; }
.gp-hero .rotor-wordmark { color: #fffaf2; font-size: clamp(40px, 4.9vw, 84px); text-shadow: 0 6px 30px #00000066; }
.gp-hero .rotor-wordmark small { color: var(--gold-1); font-size: .21em; }
.gp-tagline { font-size: clamp(22px, 2.3vw, 34px); line-height: 1.35; font-weight: 650; letter-spacing: -.02em; margin-bottom: 14px; text-wrap: balance; }
.gp-lead { font-size: clamp(14px, 1.15vw, 16px); line-height: 1.85; color: #fff8eed9; max-width: 36em; margin-bottom: 30px; }
.gp-actions { display: flex; flex-wrap: wrap; gap: 12px; }
.gp-actions .button { min-height: 52px; padding-inline: 24px; gap: 16px; font-size: 13px; }
.gp-watch .icon-play { width: 15px; height: 15px; }
.gp-badges { list-style: none; margin: 28px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.gp-badges li { font: 12px/1 var(--mono); letter-spacing: .06em; padding: 8px 11px; border-radius: 999px; border: 1px solid #ffffff3d; background: #ffffff12; color: #fff8eee6; }

/* ---------- sticky page bar ---------- */
.gp-nav { position: sticky; top: 10px; z-index: 45; margin: 14px var(--pad) 0; pointer-events: none; }
.gp-nav-inner {
  pointer-events: auto; display: flex; align-items: center; gap: 18px;
  padding: 7px 7px 7px 20px; border-radius: 15px;
  background: color-mix(in srgb, var(--paper) 78%, transparent); border: 1px solid #ffffffb8;
  box-shadow: 0 10px 34px -14px #1d142644, inset 0 1px 0 #fff;
  backdrop-filter: blur(18px) saturate(1.3); -webkit-backdrop-filter: blur(18px) saturate(1.3);
}
.gp-nav-name { font-weight: 800; font-size: 14px; letter-spacing: .02em; white-space: nowrap; color: var(--ink); }
.gp-nav-links { display: flex; gap: 2px; overflow-x: auto; scrollbar-width: none; margin-right: auto; mask-image: linear-gradient(90deg, #000 92%, transparent); }
.gp-nav-links::-webkit-scrollbar { display: none; }
.gp-nav-links a { padding: 9px 12px; border-radius: 9px; font-size: 12px; color: var(--muted); white-space: nowrap; transition: background .25s, color .25s; }
.gp-nav-links a:hover { color: var(--ink); background: #ffffff70; }
.gp-nav-links a.is-current { color: var(--ink); background: #ffffffb3; box-shadow: inset 0 0 0 1px #ffffffe6, 0 2px 8px #1d142614; }
.gp-nav-play { min-height: 40px !important; padding: 8px 16px !important; gap: 10px !important; font-size: 12px !important; border-radius: 10px !important; white-space: nowrap; }
.gp-nav-play .icon-out { width: 15px; height: 15px; }

/* ---------- sections ---------- */
.gp-section { margin: 0 var(--pad); padding-block: clamp(84px, 10vw, 150px); }
.gp-section + .gp-section { border-top: 1px solid var(--line); }
.gp-head { max-width: 760px; margin-bottom: clamp(36px, 5vw, 64px); }
.gp-eyebrow { font: 12px var(--mono); letter-spacing: .14em; color: var(--accent); margin-bottom: 22px; display: flex; align-items: center; gap: 12px; }
.gp-eyebrow::before { content: ""; width: 22px; height: 1px; background: currentColor; }
.gp-title { font-size: clamp(34px, 4.4vw, 68px); font-weight: 650; line-height: 1.12; letter-spacing: -.045em; }
.gp-intro { margin-top: 22px; color: var(--muted); font-size: 15px; max-width: 46em; }
.gp-split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.08fr); gap: clamp(36px, 6vw, 100px); align-items: center; }
.gp-copy > p { color: var(--muted); font-size: 15px; margin-top: 20px; max-width: 40em; }
.gp-copy > .gp-title + p { margin-top: 28px; }
.gp-note { font-size: 12px !important; line-height: 1.8; opacity: .85; }
.gp-frame {
  position: relative; margin: 0; overflow: hidden; isolation: isolate;
  border-radius: clamp(14px, 1.6vw, 22px); background: var(--night, #222);
  box-shadow: 0 34px 70px -40px #1a100a99, 0 0 0 1px #ffffff40;
}
.gp-frame img { width: 100%; height: auto; display: block; }
.gp-frame::after { content: ""; position: absolute; inset: 0; pointer-events: none; box-shadow: inset 0 0 0 1px #ffffff1f; border-radius: inherit; background: linear-gradient(160deg, #ffffff17, transparent 35%); }
.gp-stats {
  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; margin: clamp(56px, 7vw, 100px) 0 0;
  border-top: 1px solid var(--line);
}
.gp-stats > div { padding: 26px 22px 0 0; border-right: 1px solid var(--line); }
.gp-stats > div + div { padding-left: 22px; }
.gp-stats > div:last-child { border-right: 0; }
.gp-stats dt { font: 800 clamp(38px, 5vw, 78px)/1 "Archivo", sans-serif; letter-spacing: -.04em; font-variation-settings: "wdth" 106; }
.gp-stats dd { margin: 10px 0 0; color: var(--muted); font-size: 13px; }
.gp-stats-band { margin: clamp(46px, 6vw, 80px) var(--pad) 0; }
.gp-stats-band .gp-stats { margin: 0; }

/* Theatre: a dark screen inside the page for the moving pictures. */
.gp-theater {
  position: relative; margin: clamp(20px, 3vw, 40px) var(--pad); border-radius: clamp(22px, 2.6vw, 34px); overflow: hidden;
  background: radial-gradient(ellipse at 50% -10%, var(--night-2), var(--night) 62%); color: #fff8ee;
  --muted: #fff8ee9e; --line: #ffffff1f; --glass-fill: #ffffff1c; --glass-tone: #ffffff40; --glass-ink: #fff8ee; --glass-reflection: #ffffff2e;
}
.gp-theater::after { content: ""; position: absolute; inset: 0; pointer-events: none; background: repeating-linear-gradient(transparent 0 3px, #0000001a 3px 4px); }
.gp-theater-inner { position: relative; z-index: 1; padding: clamp(60px, 8vw, 120px) clamp(22px, 5vw, 80px); }
.gp-theater .gp-eyebrow { color: var(--gold-1); }
.gp-theater .gp-head { margin-inline: auto; text-align: center; }
.gp-theater .gp-head .gp-eyebrow { justify-content: center; }
.gp-theater .gp-intro { margin-inline: auto; }
.gp-player {
  position: relative; max-width: 1180px; margin: 0 auto; aspect-ratio: 2 / 1; border-radius: 18px; overflow: hidden; background: #000;
  box-shadow: 0 50px 100px -40px #000c, 0 0 0 1px #ffffff26;
}
.gp-player video { width: 100%; height: 100%; object-fit: cover; display: block; }
.gp-player-toggle {
  position: absolute; left: 50%; top: 50%; translate: -50% -50%; z-index: 2;
  width: clamp(64px, 7vw, 92px); height: clamp(64px, 7vw, 92px); border-radius: 50%;
  display: grid; place-items: center; color: #fff;
  background: #ffffff26; border: 1px solid #ffffff73; backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
  box-shadow: 0 10px 40px #0007; transition: opacity .35s, scale .35s cubic-bezier(.16,1,.3,1), background .3s;
}
.gp-player-toggle svg { width: 34%; height: 34%; }
.gp-player-toggle .icon-play { translate: 6% 0; }
.gp-player-toggle .icon-pause, .gp-player.is-playing .gp-player-toggle .icon-play { display: none; }
.gp-player.is-playing .gp-player-toggle .icon-pause { display: block; }
.gp-player-toggle:hover { background: #ffffff3d; scale: 1.06; }
.gp-player.is-playing .gp-player-toggle { opacity: 0; }
.gp-player.is-playing:hover .gp-player-toggle, .gp-player-toggle:focus-visible { opacity: 1; }
.gp-player-caption { position: absolute; left: 20px; bottom: 18px; z-index: 2; color: #fff8eecc; text-shadow: 0 1px 4px #000; }
.gp-player-progress { position: absolute; left: 0; right: 0; bottom: 0; height: 3px; background: #ffffff1a; z-index: 2; }
.gp-player-progress i { display: block; height: 100%; width: 100%; transform-origin: left; transform: scaleX(var(--progress, 0)); background: linear-gradient(90deg, var(--gold-1), var(--gold-2)); }

/* ---------- opponents: in-game screenshots and who they are ---------- */
.opp-grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(18px, 2.4vw, 34px); }
.opp-card { display: grid; gap: 18px; align-content: start; }
.opp-card .shot { aspect-ratio: 16 / 9; border-radius: 18px; }
.opp-card .shot img { aspect-ratio: auto; }
.opp-card-info { display: grid; grid-template-columns: minmax(0, 1fr) auto; grid-template-rows: auto auto auto; column-gap: 20px; row-gap: 8px; align-items: start; }
.opp-card-info .opp-level { grid-column: 1; }
.opp-card-info h3 { grid-column: 1; font-size: clamp(21px, 2vw, 28px); font-weight: 650; letter-spacing: -.03em; line-height: 1.2; }
.opp-card-info p { grid-column: 1; color: var(--muted); font-size: 14px; }
.opp-card-info .opp-meta { grid-column: 2; grid-row: 1 / 4; display: grid; justify-items: end; gap: 8px; margin: 0; text-align: right; }
.opp-level { justify-self: start; font: 12px/1 var(--mono); letter-spacing: .1em; padding: 7px 10px; border-radius: 6px; color: #2a1608; background: linear-gradient(135deg, var(--gold-1), var(--gold-2)); }
.opp-meta dt { font: 11px var(--mono); letter-spacing: .1em; color: var(--muted); }
.opp-meta dd { margin: 4px 0 0; }
.opp-target { font: 800 clamp(22px, 2vw, 28px)/1 "Archivo", sans-serif; letter-spacing: -.02em; color: var(--gold-3); }
.stars { color: var(--gold-1); letter-spacing: .12em; font-size: 15px; white-space: nowrap; }
.stars > span { opacity: .22; }
.opp-card .stars { color: var(--gold-3); }

/* ---------- features ---------- */
.gp-features > .gp-head { margin-bottom: clamp(30px, 4vw, 50px); }
.gp-feature { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); gap: clamp(30px, 5vw, 90px); align-items: center; padding: clamp(36px, 5vw, 70px) 0; }
.gp-feature.is-reverse { grid-template-columns: minmax(0, 1fr) minmax(0, 1.3fr); }
.gp-feature.is-reverse .gp-feature-media { order: 2; }
.gp-feature-copy { max-width: 470px; }
.gp-num { display: block; color: var(--accent); margin-bottom: 18px; letter-spacing: .1em; }
.gp-feature-copy h3 { font-size: clamp(26px, 2.8vw, 42px); font-weight: 650; letter-spacing: -.035em; line-height: 1.2; margin-bottom: 18px; }
.gp-feature-copy p { color: var(--muted); font-size: 15px; }
.gp-frame-pair { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; align-items: start; }
.gp-frame-pair .gp-frame:nth-child(2) { margin-top: 18%; }

/* Toss the groschen: a coin you can flip. */
.coin-stage { position: relative; display: grid; justify-items: center; align-content: center; gap: 0; min-height: clamp(320px, 34vw, 460px); perspective: 1100px; }
.coin-stage::before { content: ""; position: absolute; inset: 6% 8%; border-radius: 50%; background: radial-gradient(circle, #fff3dc 0%, #f1e5d400 70%); z-index: -1; }
.coin {
  position: relative; width: clamp(190px, 21vw, 280px); aspect-ratio: 1; padding: 0; border-radius: 50%;
  transform-style: preserve-3d; transform: rotateX(var(--tilt-x, 10deg)) rotateY(calc(var(--spin, 0deg) + var(--tilt-y, -8deg))); cursor: pointer;
  transition: transform .8s cubic-bezier(.16,1,.3,1);
}
.coin-face { position: absolute; inset: 0; border-radius: 50%; overflow: hidden; backface-visibility: hidden; -webkit-backface-visibility: hidden; box-shadow: 0 0 0 3px #d8d2c8, 0 0 0 5px #a9a194; }
.coin-face img { width: 100%; height: 100%; filter: sepia(.22) saturate(.95) contrast(1.3) brightness(.98); }
.coin-face::after {
  content: ""; position: absolute; inset: 0; border-radius: 50%; mix-blend-mode: soft-light;
  background: radial-gradient(circle at var(--shine-x, 30%) var(--shine-y, 24%), #ffffffee, #ffffff00 46%), linear-gradient(135deg, #ffffff66, #5b513f55 70%);
}
/* The two faces sit either side of the rim, so neither can be covered by it. */
.coin-heads { transform: translateZ(2px); }
.coin-tails { transform: rotateY(180deg) translateZ(2px); }
.coin-edge { position: absolute; inset: 1px; border-radius: 50%; background: #8d8576; }
.coin-shadow { width: clamp(150px, 16vw, 220px); height: 20px; margin-top: 34px; border-radius: 50%; background: radial-gradient(ellipse, #3a2a1a40, transparent 70%); transition: transform .5s, opacity .5s; }
.coin.is-tossing { animation: coin-toss 1.5s cubic-bezier(.3,.05,.3,1) both; }
.coin-stage.is-tossing .coin-shadow { animation: coin-shadow 1.5s cubic-bezier(.3,.05,.3,1) both; }
@keyframes coin-toss {
  0% { transform: translateY(0) rotateX(var(--tilt-x, 10deg)) rotateY(var(--spin-from, 0deg)); }
  45% { transform: translateY(-46%) rotateX(calc(var(--tilt-x, 10deg) + 30deg)) rotateY(calc(var(--turns) * .55)); }
  78% { transform: translateY(0) rotateX(var(--tilt-x, 10deg)) rotateY(calc(var(--turns) * .96)); }
  88% { transform: translateY(-6%) rotateX(var(--tilt-x, 10deg)) rotateY(var(--turns)); }
  100% { transform: translateY(0) rotateX(var(--tilt-x, 10deg)) rotateY(var(--turns)); }
}
@keyframes coin-shadow { 45% { transform: scale(.55); opacity: .4; } 78%, 100% { transform: scale(1); opacity: 1; } }
.coin-result { margin-top: 18px; min-height: 26px; font: 13px var(--mono); letter-spacing: .06em; color: var(--muted); text-align: center; }
.coin-result strong { color: var(--ink); font-weight: 400; }

/* ---------- scoring ---------- */
.score-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.score-table th { text-align: left; font-weight: 500; padding: 14px 0; display: flex; align-items: center; gap: 16px; }
.score-table td { text-align: right; padding: 14px 0; font: 800 18px/1 "Archivo", sans-serif; letter-spacing: -.01em; white-space: nowrap; }
.score-table td[data-i18n] { font: 600 13px/1.4 var(--sans); color: var(--muted); }
.score-table tr { border-bottom: 1px dashed var(--line); }
.score-table tr:first-child { border-top: 1px solid var(--line); }
.score-dice { display: inline-flex; gap: 4px; width: 172px; flex: none; }
.die-face { width: 24px; height: 24px; stroke: none; }
.die-face rect { fill: #fbf2df; stroke: #c9b48e; stroke-width: 1.2; }
.die-face circle { fill: #3a2418; }

/* ---------- screenshot gallery and lightbox ---------- */
.shot-grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(10px, 1.2vw, 16px); }
.shot-item.is-wide { grid-column: span 2; grid-row: span 2; }
.shot {
  position: relative; display: block; height: 100%; border-radius: 14px; overflow: hidden; background: var(--night);
  box-shadow: 0 18px 40px -26px #1a100a80; isolation: isolate;
}
.shot img { width: 100%; height: 100%; aspect-ratio: 16 / 9; object-fit: cover; transition: transform 1s cubic-bezier(.16,1,.3,1), filter .5s; }
.shot::after { content: ""; position: absolute; inset: 0; background: linear-gradient(0deg, #0b0710d0, transparent 55%); opacity: 0; transition: opacity .4s; }
.shot-cap { position: absolute; z-index: 1; left: 14px; right: 14px; bottom: 12px; color: #fff8ee; font-size: 12px; line-height: 1.5; opacity: 0; translate: 0 6px; transition: opacity .35s, translate .45s cubic-bezier(.16,1,.3,1); }
.shot:is(:hover, :focus-visible)::after, .shot:is(:hover, :focus-visible) .shot-cap { opacity: 1; translate: 0 0; }
.shot:is(:hover, :focus-visible) img { transform: scale(1.04); }
.lightbox {
  position: fixed; inset: 0; z-index: 120; width: 100%; height: 100%; max-width: none; max-height: none; margin: 0; padding: 0; border: 0;
  background: #0b0a12f2; color: #fff8ee; display: grid; grid-template-rows: 1fr auto; place-items: center;
}
.lightbox:not([open]) { display: none; }
.lightbox::backdrop { background: transparent; }
.lightbox-figure { margin: 0; display: grid; place-items: center; padding: 64px 80px 0; width: 100%; height: 100%; min-height: 0; }
.lightbox img { max-width: 100%; max-height: 100%; width: auto; height: auto; object-fit: contain; border-radius: 10px; box-shadow: 0 30px 90px #000a; }
.lightbox-bar { width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 18px 28px 26px; }
.lightbox-caption { font-size: 14px; color: #fff8eed9; }
.lightbox-count { font: 12px var(--mono); color: #fff8ee8c; white-space: nowrap; }
.lightbox button { color: #fff8ee; border-radius: 12px; width: 48px; height: 48px; display: grid; place-items: center; background: #ffffff14; border: 1px solid #ffffff2e; transition: background .25s; }
.lightbox button:hover { background: #ffffff29; }
.lightbox button svg { width: 20px; height: 20px; stroke-width: 1.8; }
.lightbox-close { position: absolute; top: 18px; right: 22px; }
.lightbox-prev, .lightbox-next { position: absolute; top: 50%; translate: 0 -50%; }
.lightbox-prev { left: 18px; } .lightbox-next { right: 18px; }
html[data-motion="on"] .lightbox[open] img { animation: lb-in .45s cubic-bezier(.16,1,.3,1); }
@keyframes lb-in { from { opacity: 0; scale: .97; } }

/* ---------- specs, finale, channel pager ---------- */
.gp-specs .gp-split { align-items: start; }
.gp-specs .gp-head { margin: 0; position: sticky; top: 100px; }
.spec-list { margin: 0; display: grid; }
.spec-row { display: grid; grid-template-columns: 9.5em minmax(0, 1fr); gap: 20px; padding: 20px 0; border-top: 1px solid var(--line); }
.spec-row:last-child { border-bottom: 1px solid var(--line); }
.spec-row dt { font: 12px/1.9 var(--mono); letter-spacing: .08em; color: var(--muted); }
.spec-row dd { margin: 0; font-size: 15px; line-height: 1.75; }
.gp-making .gp-split { align-items: start; }
.gp-finale {
  position: relative; isolation: isolate; overflow: hidden; margin: 10px var(--pad) 0; border-radius: clamp(22px, 2.6vw, 34px);
  min-height: clamp(420px, 52vw, 620px); display: grid; place-items: center; text-align: center; color: #fff8ee;
  --glass-fill: #ffffff1c; --glass-tone: #ffffff40; --glass-ink: #fff8ee; --glass-reflection: #ffffff2e;
}
.gp-finale-media { position: absolute; inset: 0; z-index: -2; }
.gp-finale-media img { width: 100%; height: 100%; object-fit: cover; transform: translate3d(0, var(--finale-shift, 0px), 0) scale(1.08); }
.gp-finale::before { content: ""; position: absolute; inset: 0; z-index: -1; background: radial-gradient(ellipse 60% 70% at 50% 52%, #0b07108c, #0b071033 70%, #0b071073 100%); }
.gp-finale-inner { padding: 60px 24px; display: grid; justify-items: center; gap: 18px; }
.gp-finale h2 { font-size: clamp(38px, 5.6vw, 86px); font-weight: 700; line-height: 1.08; letter-spacing: -.045em; text-shadow: 0 6px 40px #0009; }
.gp-finale p { color: #fff8eed1; font-size: 16px; margin-bottom: 14px; }
/* Channel down / channel up at the end of a game channel. */
.channel-pager { margin: 34px var(--pad) 90px; display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.channel-pager a {
  display: flex; align-items: center; gap: 18px; padding: 22px 26px; border-radius: 18px; text-decoration: none; color: var(--ink);
  background: color-mix(in srgb, var(--paper) 60%, white); border: 1px solid #ffffffb3;
  box-shadow: 0 14px 34px -24px #1d142655; transition: transform .45s cubic-bezier(.16,1,.3,1), box-shadow .45s, background .3s;
}
.channel-pager .pager-next { justify-content: flex-end; text-align: right; }
.channel-pager .pager-next .pager-arrow { order: 2; }
.pager-text { display: grid; gap: 4px; }
.pager-text .mono { color: var(--muted); }
.pager-text strong { font-size: clamp(18px, 1.8vw, 24px); font-weight: 650; letter-spacing: -.02em; }
.pager-arrow { font-size: 24px; line-height: 1; transition: transform .45s cubic-bezier(.16,1,.3,1); }
.channel-pager a:is(:hover, :focus-visible) { background: color-mix(in srgb, var(--paper) 30%, white); box-shadow: 0 20px 40px -24px #1d142677; }
.channel-pager .pager-prev:is(:hover, :focus-visible) .pager-arrow { transform: translateX(-4px); }
.channel-pager .pager-next:is(:hover, :focus-visible) .pager-arrow { transform: translateX(4px); }
.button .icon-mail { transition: transform .4s cubic-bezier(.16,1,.3,1); }
.button:hover .icon-mail { transform: translateY(-2px) rotate(-6deg); }
.icon-arrow.back { width: 18px; }

/* ---------- Rotor Trails: worlds, modes, Grand Canyon, controls ---------- */
.world-select { display: grid; grid-template-columns: minmax(0, 1fr) minmax(220px, 280px); gap: 18px; align-items: stretch; }
.world-view { position: relative; }
.world-panel { position: relative; margin: 0; height: 100%; border-radius: clamp(18px, 2vw, 26px); overflow: hidden; background: var(--night); color: #fff8ee; box-shadow: 0 40px 90px -50px #0e1a2899; }
.world-panel[hidden] { display: none; }
.world-panel img { width: 100%; height: 100%; aspect-ratio: 16 / 9; object-fit: cover; display: block; }
.world-panel.is-active img { animation: opp-in 1s cubic-bezier(.16,1,.3,1) both; }
.world-panel::before { content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(0deg, #08101af0 0%, #08101a99 30%, transparent 62%); pointer-events: none; }
.world-info { position: absolute; z-index: 2; left: 0; right: 0; bottom: 0; padding: clamp(22px, 3vw, 44px); display: grid; gap: 10px; max-width: 680px; }
.world-region { font: 12px var(--mono); letter-spacing: .12em; color: var(--gold-1); }
.world-info h3 { font-size: clamp(28px, 3.4vw, 50px); font-weight: 700; letter-spacing: -.04em; line-height: 1.05; }
.world-info p { color: #fff8eed1; font-size: 15px; max-width: 38em; }
.world-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 22px; margin-top: 6px; }
.world-wx { color: #fff8eea6; }
.world-tabs { display: grid; align-content: start; gap: 6px; }
.world-tab {
  display: flex; align-items: center; gap: 14px; width: 100%; padding: 15px 16px; border-radius: 14px; text-align: left;
  color: var(--muted); border: 1px solid transparent; transition: background .3s, color .3s, border-color .3s, transform .35s cubic-bezier(.16,1,.3,1);
}
.world-tab-num { opacity: .6; }
.world-tab-name { font-size: 15px; font-weight: 600; }
.world-tab:hover { background: #ffffff66; color: var(--ink); }
.world-tab[aria-selected="true"] { background: #fffaf6; color: var(--ink); border-color: #ffffffe6; box-shadow: 0 12px 28px -18px #0e1a2866, inset 3px 0 0 var(--accent); transform: translateX(4px); }
.mode-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(22px, 2.6vw, 38px) clamp(16px, 2vw, 28px); }
.mode-media { position: relative; border-radius: 16px; overflow: hidden; margin-bottom: 20px; background: var(--night); box-shadow: 0 24px 50px -32px #0e1a2899; }
.mode-media img { width: 100%; height: auto; aspect-ratio: 16 / 9; object-fit: cover; display: block; transition: transform 1s cubic-bezier(.16,1,.3,1); }
.mode-card:hover .mode-media img { transform: scale(1.05); }
.mode-num { position: absolute; left: 14px; top: 12px; color: #fff; text-shadow: 0 1px 4px #000a; }
.mode-card h3 { font-size: clamp(20px, 1.8vw, 26px); font-weight: 650; letter-spacing: -.03em; margin-bottom: 10px; }
.mode-card p { color: var(--muted); font-size: 14px; line-height: 1.8; }
.gc-layout { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: clamp(36px, 5vw, 90px); align-items: center; }
.gc-copy > p { color: var(--muted); font-size: 15px; margin-top: 20px; }
.gc-copy .gp-title { font-size: clamp(32px, 3.4vw, 54px); }
.gc-copy .gp-title + p { margin-top: 28px; }
.gc-stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin: 40px 0 0; border-top: 1px solid var(--line); }
.gc-stats > div { padding: 20px 14px 0 0; }
.gc-stats dt { font: 800 clamp(20px, 2vw, 30px)/1.1 "Archivo", sans-serif; letter-spacing: -.02em; color: var(--gold-1); white-space: nowrap; }
.gc-stats dd { margin: 8px 0 0; font-size: 12px; color: var(--muted); }
.gc-media { position: relative; padding-bottom: 16%; }
.gc-media .gp-frame:nth-child(2) { position: absolute; width: 48%; right: -4%; bottom: 0; box-shadow: 0 30px 60px -20px #000c, 0 0 0 4px var(--night); }
.key-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 34px; }
.key-row { display: flex; align-items: center; gap: 16px; padding: 13px 0; border-bottom: 1px solid var(--line); font-size: 14px; }
.keys { display: flex; gap: 6px; flex: none; min-width: 102px; }
kbd {
  display: inline-grid; place-items: center; min-width: 38px; height: 38px; padding: 0 9px; border-radius: 9px;
  font: 600 13px/1 "Archivo", var(--sans); color: var(--ink);
  background: linear-gradient(#ffffff, #eef2f4); border: 1px solid #c7d2d8; box-shadow: 0 3px 0 #b9c6cd, 0 5px 10px -4px #0e1a2833;
}
kbd.wide { padding: 0 14px; font-size: 12px; }

/* ---------- CH 06: the next project ---------- */
.next-hero .on-air-dot.scrambled { background: #6a5fd0; box-shadow: 0 0 0 4px #6a5fd01f; }
.on-air-dot { display: inline-block; width: 7px; height: 7px; margin-right: 8px; border-radius: 50%; background: #a66d45; box-shadow: 0 0 0 4px #a66d4514; }
html[data-motion="on"] .on-air-dot.scrambled { animation: wall-blink 1.2s steps(1) infinite; }
.next-stage { margin: 0 var(--pad); padding: 20px 0 clamp(80px, 9vw, 130px); display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: clamp(30px, 5vw, 80px); align-items: center; }
.next-tv { display: grid; justify-items: center; gap: 26px; }
.next-tv-case {
  position: relative; width: 100%; display: grid; grid-template-columns: minmax(0, 1fr) 13%; gap: 4%; padding: 4.2%;
  border-radius: clamp(22px, 3vw, 40px); aspect-ratio: 1.42;
  background: linear-gradient(145deg, #4a4768, #2c2a45 60%, #1f1d33);
  box-shadow: inset 0 2px 1px #ffffff2e, inset -6px -8px 20px #0000004d, 0 40px 80px -40px #1d1b3399;
}
.next-tv-screen { position: relative; border-radius: 9% / 12%; overflow: hidden; background: #1a1930; box-shadow: 0 0 0 6px #17162a, 0 0 0 8px #5d5a80; }
.next-tv-screen .static-noise { position: absolute; inset: 0; width: 100%; height: 100%; opacity: .55; }
.next-tv-screen::after { content: ""; position: absolute; inset: 0; background: radial-gradient(ellipse at center, transparent 45%, #0c0b18aa), repeating-linear-gradient(transparent 0 3px, #0005 3px 4px); pointer-events: none; }
.next-tv-question { position: absolute; inset: 0; display: grid; place-items: center; font: 800 clamp(90px, 14vw, 210px)/1 "Archivo", sans-serif; color: #f1eeff; text-shadow: -4px 0 #ff5c9a99, 4px 0 #46c9b799; z-index: 1; transition: opacity .3s, filter .3s; }
html[data-motion="on"] .next-tv-question { animation: tv-flicker 3.2s steps(1) infinite; }
.next-tv-osd { position: absolute; z-index: 2; top: 7%; left: 6%; color: #f6fff9; text-shadow: 0 0 6px #000; }
.next-tv-message { position: absolute; z-index: 2; left: 6%; right: 6%; bottom: 8%; color: #9df5c8; text-shadow: 0 0 8px #000; min-height: 1.6em; font-size: 14px; }
.next-tv.is-tuning .next-tv-question { opacity: .25; filter: blur(3px); }
.next-tv-panel { display: flex; flex-direction: column; align-items: center; gap: 12%; padding-top: 6%; }
.next-dial { width: 92%; aspect-ratio: 1; border-radius: 50%; background: radial-gradient(circle, #5d5a80 0 40%, transparent 41%), repeating-conic-gradient(#8c88b6 0 4deg, #3a3858 4deg 22deg); box-shadow: 0 0 0 3px #5d5a80; transition: rotate .8s cubic-bezier(.2,.8,.2,1); }
.next-dial.small { width: 62%; }
.next-tv.is-tuning .next-dial { rotate: 160deg; }
.next-grille { flex: 1; width: 80%; border-radius: 6px; background: repeating-linear-gradient(#5d5a80 0 2px, transparent 2px 7px); opacity: .7; }
.next-tune { gap: 12px !important; }
.next-tune svg { width: 18px; height: 18px; transition: rotate .8s cubic-bezier(.2,.8,.2,1); }
.next-tv.is-tuning .next-tune svg { rotate: 200deg; }
.next-guide { border-radius: 22px; padding: clamp(22px, 3vw, 36px); background: color-mix(in srgb, var(--paper) 55%, white); border: 1px solid #ffffffc4; box-shadow: 0 30px 70px -40px #2c2a4c66; }
.guide-head { display: flex; justify-content: space-between; gap: 16px; padding-bottom: 16px; border-bottom: 1px solid var(--line); color: var(--muted); }
.guide-live { color: #e2486f; }
html[data-motion="on"] .guide-live { animation: wall-blink 1.6s steps(1) infinite; }
.next-guide dl { margin: 0; }
.guide-row { display: grid; grid-template-columns: 6.5em minmax(0, 1fr); gap: 16px; padding: 16px 0; border-bottom: 1px dashed var(--line); align-items: center; }
.guide-row dt { font: 12px var(--mono); letter-spacing: .06em; color: var(--muted); }
.guide-row dd { margin: 0; font-size: 15px; font-weight: 500; }
.redacted { display: inline-block; font-family: var(--mono); letter-spacing: -.12em; color: var(--ink); background: var(--ink); border-radius: 3px; line-height: 1.25; padding: 0 4px; user-select: none; }
html[data-motion="on"] .redacted { animation: redact 4s steps(1) infinite; }
@keyframes redact { 0%, 86%, 100% { clip-path: inset(0); } 88% { clip-path: inset(0 0 0 22%); } 91% { clip-path: inset(0 30% 0 0); } }
.guide-status::after { content: "▍"; margin-left: 3px; color: var(--accent); }
html[data-motion="on"] .guide-status::after { animation: tuning-blink 1s steps(1) infinite; }
.next-request { align-items: flex-end; }
.next-request h2 { margin-bottom: 18px; }
.next-request p { color: var(--muted); max-width: 40em; font-size: 15px; }
.next-request-actions { display: flex; flex-wrap: wrap; gap: 12px; flex: none; }

/* ---------- responsive ---------- */
@media (max-width: 1100px) {
  .mode-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .gp-nav-links { display: none; }
  .gp-nav-name { margin-right: auto; }
}
@media (max-width: 900px) {
  .channel-card, .channel-card.is-reverse { grid-template-columns: 1fr; }
  .channel-card.is-reverse .channel-card-art { order: 0; }
  .gp-split, .gc-layout, .next-stage { grid-template-columns: 1fr; }
  .gp-feature, .gp-feature.is-reverse { grid-template-columns: 1fr; gap: 26px; padding: 30px 0; }
  .gp-feature.is-reverse .gp-feature-media { order: 0; }
  .gp-feature-copy { max-width: none; }
  .world-select { grid-template-columns: 1fr; }
  .world-tabs { grid-auto-flow: column; grid-auto-columns: max-content; overflow-x: auto; scrollbar-width: none; padding-bottom: 4px; }
  .world-tabs::-webkit-scrollbar { display: none; }
  .world-tab[aria-selected="true"] { transform: none; box-shadow: 0 10px 24px -16px #0e1a2866, inset 0 -3px 0 var(--accent); }
  .gp-specs .gp-head { position: static; margin-bottom: 26px; }
  .key-list { grid-template-columns: 1fr; }
  .gc-media { padding-bottom: 12%; }
}
@media (max-width: 760px) {
  .gp-hero { min-height: max(560px, calc(100svh - var(--header) - 70px)); border-radius: 22px; }
  .gp-hero::before { background: linear-gradient(0deg, #0b0710f2 0%, #0b0710bf 42%, #0b071026 70%, #0b071066 100%); }
  .gp-hero-img { object-position: 70% 50%; }
  .gp-hero-rotor .gp-hero-img { object-position: 74% 50%; }
  .gp-osd > span:nth-child(2) { display: none; }
  .gp-hero-content { padding: 26px 22px 28px; padding-top: 140px; }
  .gp-hero .rotor-wordmark { font-size: 15vw; line-height: .86; }
  .gp-hero .rotor-wordmark span { white-space: normal; }
  .gp-hero .rotor-wordmark small { font-size: .2em; margin-top: .6em; }
  .gp-actions .button { min-height: 48px; padding-inline: 18px; }
  .gp-badges { margin-top: 22px; }
  .gp-nav { margin-top: 10px; }
  .gp-nav-inner { padding: 6px 6px 6px 16px; }
  .gp-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .gp-stats > div:nth-child(2) { border-right: 0; }
  .gp-stats > div:nth-child(3) { padding-left: 0; }
  .gp-stats > div:nth-child(n + 3) { border-top: 1px solid var(--line); margin-top: 22px; }
  /* Two columns on a phone: the widest figure ("41×41") must still fit a 320px screen. */
  .gp-stats > div { padding-right: 14px; }
  .gp-stats > div + div:nth-child(even) { padding-left: 14px; }
  .gp-stats dt { font-size: clamp(30px, 10vw, 44px); }
  .gp-theater-inner { padding: 56px 18px; }
  .gp-player { border-radius: 12px; }
  .opp-grid { grid-template-columns: 1fr; }
  .channel-card-art { border-radius: 18px; }
  .mode-grid { grid-template-columns: 1fr; }
  .shot-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .shot-cap { opacity: 1; translate: 0 0; font-size: 11px; }
  .shot::after { opacity: .9; }
  .score-dice { width: 132px; }
  .die-face { width: 18px; height: 18px; }
  .score-table th { gap: 10px; font-size: 13px; }
  .spec-row { grid-template-columns: 1fr; gap: 4px; }
  .gc-stats { grid-template-columns: 1fr; }
  .gc-media .gp-frame:nth-child(2) { width: 56%; right: -2%; }
  .lightbox-figure { padding: 60px 10px 0; }
  .lightbox-prev, .lightbox-next { top: auto; bottom: 18px; translate: none; }
  .lightbox-prev { left: auto; right: 80px; }
  .lightbox-bar { padding: 14px 18px 84px; }
  .next-tv-case { grid-template-columns: 1fr; aspect-ratio: auto; }
  .next-tv-screen { aspect-ratio: 4 / 3; }
  .next-tv-panel { display: none; }
  .next-request { flex-direction: column; align-items: flex-start; }
  .channel-pager { grid-template-columns: 1fr; margin-bottom: 70px; }
  .channel-pager a { padding: 18px 20px; }
}
@media (max-width: 420px) {
  .score-dice { width: 104px; gap: 2px; }
  .die-face { width: 15px; height: 15px; }
}

/* Without JavaScript the tabs cannot switch, so every world is shown in turn. */
html:not(.has-js) .world-panel[hidden] { display: block; }
html:not(.has-js) .world-tabs { display: none; }
html:not(.has-js) .world-view { display: grid; gap: 18px; }
html:not(.has-js) .world-select { grid-template-columns: 1fr; }
