/* 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.06e851d3f1.woff2") format("woff2");font-display:swap;font-weight:400;}
@font-face{font-family:"Noto Sans SC";src:url("/assets/fonts/noto-sans-sc.0f39515813.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.1c7c69d8bb.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;
}
main:focus {
  outline: none;
}
main {
  position: relative;
  z-index: 2;
}
/* 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;
}
/* 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;
}
.ambient-glow {
  position: absolute;
  top: 80px;
  right: 0;
  width: 70vw;
  height: 760px;
  pointer-events: none;
  z-index: 0;
  background: radial-gradient(
    ellipse,
    rgba(255, 255, 255, 0.42),
    transparent 62%
  );
}
/* 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: 14px;
}
.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-henry {
  background: #b96b53;
  color: #fff4d6;
}
.art-henry .art-caption, .art-henry .art-footer {
  text-shadow: 0 1px 2px rgba(74, 32, 30, 0.6);
}
.art-henry .art-caption {
  opacity: 0.9;
}
.art-henry:before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(ellipse at 60% 20%, #dfaa7a, transparent 60%),
    linear-gradient(160deg, #af675c00, #743e40aa);
}
.table-ring {
  position: absolute;
  width: 80%;
  height: 78%;
  left: 12%;
  top: 10%;
  border: 1px solid #ffe8c333;
  border-radius: 50%;
  transform: rotateX(55deg) rotate(-16deg);
  box-shadow:
    0 0 0 18px #ffe8c308,
    0 0 0 48px #ffe8c30b;
}
.dice-scene {
  position: absolute;
  inset: 0;
  perspective: 800px;
  transform: translateY(-1%);
}
.die {
  position: absolute;
  width: 23cqw;
  height: 23cqw;
  top: 32%;
  left: 24%;
  transform-style: preserve-3d;
  transform: rotateX(-28deg) rotateY(30deg) rotateZ(-16deg);
  animation: die-float 9s ease-in-out infinite;
}
.die-b {
  left: 56%;
  top: 48%;
  width: 18cqw;
  height: 18cqw;
  transform: rotateX(-26deg) rotateY(-35deg) rotateZ(22deg);
  animation: die-float-b 11s ease-in-out infinite;
}
.face {
  position: absolute;
  inset: 0;
  background: #f0dfb3;
  border: 1px solid #cbb789;
  border-radius: 12%;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 9%;
  padding: 15%;
  backface-visibility: hidden;
  box-shadow: inset 0 0 15px #a27c4950;
}
.face.front {
  transform: translateZ(11.5cqw);
  flex-wrap: wrap;
}
.face.back {
  transform: rotateY(180deg) translateZ(11.5cqw);
}
.face.right {
  transform: rotateY(90deg) translateZ(11.5cqw);
  background: #d6c195;
  flex-direction: column;
}
.face.left {
  transform: rotateY(-90deg) translateZ(11.5cqw);
}
.face.top {
  transform: rotateX(90deg) translateZ(11.5cqw);
  background: #fff1cd;
}
.face.bottom {
  transform: rotateX(-90deg) translateZ(11.5cqw);
}
.face b {
  display: block;
  width: 20%;
  aspect-ratio: 1;
  background: #512e35;
  border-radius: 50%;
  box-shadow: inset 1px 2px 3px #0006;
}
.die-b .face.front {
  transform: translateZ(9cqw);
  background: #773c49;
}
.die-b .face.back {
  transform: rotateY(180deg) translateZ(9cqw);
}
.die-b .face.right {
  transform: rotateY(90deg) translateZ(9cqw);
  background: #542c36;
  flex-wrap: wrap;
}
.die-b .face.left {
  transform: rotateY(-90deg) translateZ(9cqw);
}
.die-b .face.top {
  transform: rotateX(90deg) translateZ(9cqw);
  background: #9b5160;
}
.die-b .face.bottom {
  transform: rotateX(-90deg) translateZ(9cqw);
}
.die-b .face b {
  background: #f5dba5;
}
.die-b .face.front b {
  width: 38%;
  border-radius: 3px;
  transform: rotate(45deg);
}
@keyframes die-float {
  50% {
    transform: translateY(-12px) rotateX(-19deg) rotateY(42deg) rotateZ(-10deg);
  }
}
@keyframes die-float-b {
  50% {
    transform: translateY(10px) rotateX(-35deg) rotateY(-25deg) rotateZ(15deg);
  }
}
.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: 14px;
  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: 14px;
  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: 13px;
  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: 510px;
  font-size: 14px;
  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 .dice-scene {
  width: 600px;
  height: 480px;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  container-type: inline-size;
}
.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 .table-ring {
  width: 55%;
  left: 22%;
  height: 90%;
}
.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: 12px;
}
.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-link > span {
  display: inline-block;
  font-size: 0.6em;
  margin-left: 26px;
  vertical-align: top;
  padding-top: 13px;
  transition: transform 0.3s;
}
.email-link:hover > span {
  transform: translate(5px, -5px);
}
.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));
  }
  .orbital-stage {
    right: max(2vw, calc((100vw - 1640px) / 2));
    width: 850px;
  }
  .home-hero {
    min-height: 940px;
  }
  .scene-caption {
    top: 730px;
  }
  .orbital-stage {
    top: 340px;
    height: 630px;
  }
}
@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: 13px;
    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: 13px;
  }
  .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: 13px;
    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: 13px;
  }
  .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: 13px;
    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 .dice-scene {
    width: 340px;
    height: 310px;
  }
  .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: 13px;
  }
  .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;
  }
  .email-link > span {
    margin-left: 6px;
    padding-top: 5px;
    font-size: 0.6em;
  }
  .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 .dice-scene {
    width: 310px;
    height: 275px;
  }
  .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; }
.ambient-glow { display: none; }
.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, .email-link > span, .round-link svg { transition: transform .4s var(--press-ease); }
.social-row:is(:hover,:focus-visible) .social-arrow, .email-link:is(:hover,:focus-visible) > span { 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; }
}

/* ==========================================================================
   television (merged; original cascade order preserved)
   ========================================================================== */
/* A useful miniature of the opening's ivory CRT: click through to the works channel. */
.television-link {
  flex: 0 0 238px; width: 238px; max-width: 100%; display: block;
  position: relative; padding-top: 24px; text-decoration: none;
  transform: perspective(900px) rotateX(calc(var(--rx, 0deg) * .4)) rotateY(calc(var(--ry, 0deg) * .5));
  transition: transform .65s cubic-bezier(.16,1,.3,1), scale .35s, filter .35s;
  transform-origin: 50% 70%;
}
.television-antenna { position: absolute; top: 0; left: 57%; width: 1px; height: 24px; }
.television-antenna::before, .television-antenna::after {
  content: ""; position: absolute; bottom: 0; width: 2px; height: 25px;
  background: linear-gradient(90deg, #777687, #e6e5ee); border-radius: 2px;
  transform-origin: bottom; transform: rotate(-42deg);
}
.television-antenna::after { transform: rotate(35deg); height: 23px; }
.television-case {
  height: 151px; padding: 11px 12px 17px; display: flex; gap: 10px;
  position: relative; border-radius: 17px;
  background: linear-gradient(140deg, #fffdf7, #eeedf2 58%, #d8d6e3);
  border: 1px solid #fffef8;
  box-shadow: inset 0 2px 2px #fff, inset -3px -4px 6px #aaa5bb2b,
    0 14px 28px #25203f13, 0 3px 4px #25203f0c;
}
.television-screen {
  position: relative; width: 170px; flex: 1; overflow: hidden;
  border: 5px solid #393646; border-radius: 16px / 18px;
  background: #b77e63;
  box-shadow: 0 0 0 2px #b4b0bf, 0 1px 0 3px #ffffffad;
  isolation: isolate;
}
#television-preview { width: 100%; height: 100%; }
.television-screen::before {
  content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background: radial-gradient(ellipse at center, transparent 43%, #1713254d),
    repeating-linear-gradient(transparent 0 2px, #17132526 2px 3px);
  box-shadow: inset 0 0 12px #1c14244d;
}
.television-screen::after {
  content: ""; position: absolute; inset: 0; z-index: 2; pointer-events: none;
  background: radial-gradient(ellipse at var(--light-x,20%) var(--light-y,0%),#ffffff45,transparent 72%),
    linear-gradient(145deg,#ffffff38,transparent 42%,transparent 85%,#ffffff17);
  opacity: .65; transition: opacity .45s;
}
.television-panel { width: 28px; display: flex; flex-direction: column; align-items: center; padding-top: 7px; gap: 10px; }
.television-dial {
  width: 25px; height: 25px; border-radius: 50%; position: relative;
  border: 1px solid #bdb9c7;
  background: repeating-conic-gradient(#9c97ad 0 2deg,#eeeaf1 2deg 30deg);
  box-shadow: inset 0 0 0 4px #edeaf0, 0 2px 3px #3d34421a;
  transition: rotate .7s cubic-bezier(.2,.8,.2,1);
}
.television-dial::after { content: ""; position: absolute; width: 2px; height: 9px; background: #bc7997; top: 2px; left: 11px; border-radius: 1px; }
.television-knob { width: 16px; height: 16px; border-radius: 50%; background: radial-gradient(circle at 35% 25%, #fff, #cecbd7); box-shadow: 0 1px 3px #5c536533; }
.television-grille { width: 24px; flex: 1; min-height: 29px; border-radius: 3px; background: repeating-linear-gradient(#b8b4c3 0 1px,#e7e4ed 1px 4px); opacity: .65; }
.television-plate { position: absolute; bottom: 4px; left: 16px; color: #777085; font: 8px var(--mono); letter-spacing: .12em; }
.television-led { position: absolute; bottom: 6px; right: 22px; width: 3px; height: 3px; border-radius: 50%; background: #df82a5; box-shadow: 0 0 4px #e795b8; }
.television-feet { height: 8px; position: relative; margin-inline: 22px; }
.television-feet::before, .television-feet::after { content: ""; position: absolute; top: -1px; width: 8px; height: 7px; background: #b5afc2; border-radius: 0 0 2px 2px; transform: skewX(12deg); }
.television-feet::after { right: 0; transform: skewX(-12deg); }
.television-caption { display: flex; justify-content: center; align-items: center; gap: 14px; margin-top: 12px; font-size: 12px; color: var(--glass-ink); }
.television-caption b { font-weight: 400; transition: transform .45s cubic-bezier(.2,.8,.2,1); }
.television-link:is(:hover,:focus-visible) { color: var(--glass-ink) !important; }
.television-link:is(:hover,:focus-visible) .television-screen::after { opacity: 1; }
.television-link:is(:hover,:focus-visible) .television-dial { rotate: 28deg; }
.television-link:is(:hover,:focus-visible) .television-caption b { transform: translate(3px,-3px); }
.television-link:focus-visible { outline-offset: 8px; border-radius: 12px; }
@media (max-width: 760px) {
  .home-hero .hero-lower { gap: 22px; }
  .television-link { flex: none; width: 210px; align-self: flex-end; padding-top: 20px; }
  .television-case { height: 134px; padding: 10px 11px 16px; gap: 9px; }
  .television-panel { width: 22px; gap: 7px; padding-top: 4px; }
  .television-dial { width: 22px; height: 22px; }
  .television-dial::after { left: 9px; }
  .television-grille { width: 20px; }
  .television-caption { font-size: 12px; margin-top: 9px; }
  .home-hero, html[data-lang="ja"] .home-hero { padding-top: 45px; padding-bottom: 155px; }
}

/* ==========================================================================
   channels (merged; original cascade order preserved)
   ========================================================================== */
/* Extra channels inherit the original broadcast identity and glass controls. */
html[data-page="games"] { --paper:#f2dfc8; --muted:#756052; --glass-tone:#c79a78; --glass-ink:#51382e; }
html[data-page="coming-soon"] { --paper:#dce9e8; --muted:#476268; --glass-tone:#7ea5aa; --glass-ink:#263f4b; }
html[data-page="game"] { --paper:#e5e1ef; --muted:#625b7c; --glass-tone:#a69ac9; --glass-ink:#393151; }
.project-grid.category-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
.category-heading { display:flex; align-items:center; justify-content:space-between; gap:24px; margin-bottom:30px; }
.category-heading h2 { font-size:clamp(24px,3.2vw,44px); letter-spacing:-.03em; }
.home-games { margin-top:90px; }
.home-games .next-programme { margin:0; min-height:100%; padding:clamp(24px,3vw,44px); }
.home-games .next-programme h2 { font-size:clamp(25px,3.5vw,49px); }
.home-games .heli-mark { position:absolute; right:4%; top:12%; width:30%; opacity:.18; }
.next-programme { position:relative; display:flex; align-items:center; justify-content:space-between; gap:30px; padding:clamp(30px,5vw,76px); margin:72px 0 0; border:1px solid #45636a40; border-radius:20px; overflow:hidden; background:linear-gradient(135deg,#f7f6e88c,#90b5b154); transition:box-shadow .4s,background .4s; }
.next-programme:before { content:""; position:absolute; inset:0; pointer-events:none; background:repeating-linear-gradient(0deg,transparent 0 3px,#30515d06 3px 4px); }
.next-programme h2 { font:800 clamp(32px,5.5vw,80px)/1 "Archivo",sans-serif; letter-spacing:-.045em; margin:24px 0 10px; }
.next-programme p { margin-bottom:30px; color:var(--muted); }
.next-programme .text-link { display:inline-flex; align-items:center; gap:12px; }
.next-programme .text-link svg { width:21px; stroke:currentColor; stroke-width:1.5; }
.heli-mark { width:28%; flex-shrink:0; color:var(--ink); transition:transform .6s cubic-bezier(.16,1,.3,1); }
.next-programme:hover { box-shadow:0 18px 40px #29434f12,inset 0 1px #fff; }
.next-programme:hover .heli-mark { transform:translate(6px,-7px) rotate(-3deg); }
.collection-entry { margin:30px 0 100px; padding:36px 0; border-top:1px solid var(--line); border-bottom:1px solid var(--line); display:flex; align-items:center; justify-content:space-between; gap:30px; }
.collection-entry h2 { margin:12px 0; font-size:30px; }
.collection-entry p { color:var(--muted); line-height:1.8; }
.collection-entry .button { gap:16px; flex-shrink:0; }
.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; }
.rotor-title { margin:50px 0 30px; font:850 clamp(70px,13vw,190px)/.84 "Archivo",sans-serif; letter-spacing:-.055em; }
.rotor-title > span { color:#527780; }
.rotor-title small { display:block; margin-top:25px; font:500 clamp(16px,2vw,24px)/1.5 var(--body, sans-serif); letter-spacing:.12em; }
.upcoming-intro { display:flex; align-items:flex-end; justify-content:space-between; gap:28px; }
.upcoming-intro p { max-width:660px; margin:0; }
.planned-label { font-size:12px; line-height:1.6; padding:9px 13px; border:1px solid #42616a35; border-radius:5px; white-space:nowrap; }
.flight-scene { position:relative; overflow:hidden; border-radius:18px; background:linear-gradient(#c5d6cd,#c6d3bb); box-shadow:inset 0 0 0 1px #41656d40; }
.flight-scene:after { content:""; position:absolute; inset:0; pointer-events:none; background:repeating-linear-gradient(0deg,transparent 0 3px,#10334009 3px 4px); box-shadow:inset 0 0 70px #1b3a4518; }
.flight-scene > svg { width:100%; height:auto; display:block; stroke:none; }
.heli-mark { height:auto; stroke:none; }
main > .next-programme, main > .collection-entry, main > .flight-scene, main > .preview-note, main > .standby-screen, main > .collection-actions { margin-left:var(--pad); margin-right:var(--pad); }
.flight-osd { position:absolute; z-index:1; top:22px; left:28px; right:28px; display:flex; justify-content:space-between; gap:15px; color:#28444b; font:12px var(--mono); letter-spacing:.06em; }
.flight-osd.bottom { top:auto; bottom:22px; color:#f7ebd5; font-size:11px; }
html[data-motion="on"] .flight-scene .heli-body { animation:hover-flight 6s ease-in-out infinite; }
html[data-motion="on"] .flight-scene .rotor { transform-origin:0 -38px; animation:rotor-pass .16s linear infinite alternate; }
@keyframes hover-flight { 50% { transform:translate(0,-6px) rotate(-1deg); } }
@keyframes rotor-pass { to { transform:scaleX(.55); opacity:.5; } }
.flight-features { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:40px; padding-top:70px; }
.flight-features article { border-top:1px solid var(--line); padding-top:24px; }
.flight-features .mono { color:var(--muted); font-size:12px; }
.flight-features h2 { font-size:clamp(22px,2vw,30px); margin:22px 0 16px; }
.flight-features p { line-height:1.9; color:var(--muted); }
.preview-note { margin:15px 0 80px; display:flex; align-items:center; justify-content:space-between; gap:40px; }
.preview-note p { max-width:640px; color:var(--muted); font-size:13px; line-height:1.8; }
.preview-note .button { flex-shrink:0; }
.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; }
.television-unit { width:238px; flex-shrink:0; }
.television-unit .television-link { width:100%; }
.television-programmes { display:none; align-items:center; justify-content:space-between; gap:9px; margin-top:12px; }
.js .television-programmes { display:flex; }
.television-programmes button { width:26px; height:23px; border-radius:4px; font:14px var(--mono); }
.programme-position { display:flex; gap:7px; align-items:center; }
.programme-position i { width:4px; height:4px; border-radius:1px; background:currentColor; opacity:.22; transition:opacity .25s,box-shadow .25s; }
.programme-position i.active { opacity:.85; box-shadow:0 0 5px #b5a5da99; }
.television-caption { min-height:30px; }
.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:900px) {.upcoming-intro, .preview-note {align-items:flex-start;flex-direction:column}.flight-features {gap:24px}.collection-entry {align-items:flex-start;flex-direction:column}}
@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:""}
  .category-heading {align-items:flex-start;gap:12px;flex-direction:column}.project-grid.category-grid {grid-template-columns:1fr}.home-games {margin-top:65px}
  .home-games .next-programme {min-height:250px}.next-programme {padding:28px;margin-top:40px;gap:14px}.next-programme h2 {font-size:34px}.next-programme .heli-mark {width:24%;opacity:.35}.next-programme .eyebrow {font-size:12px}
  .television-unit {width:210px}.rotor-title {margin-top:38px;font-size:clamp(65px,16vw,120px)}
  .flight-scene>svg {width:150%;max-width:none;margin-left:-25%}.flight-osd {top:16px;left:16px;right:16px;font-size:10px}.flight-osd.bottom {bottom:16px;font-size:10px}
  .flight-features {grid-template-columns:1fr;gap:35px;padding-top:45px}.flight-features h2 {margin-top:16px}.standby-screen {min-height:300px;border-width:8px}
  .collection-entry .button {flex-wrap:wrap;max-width:100%;gap:10px}.planned-label {white-space:normal}
}

/* ==========================================================================
   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 "; }
.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; }
/* Name and introduction form one column; the television gets a balanced second column. */
.home-hero, html[data-lang="ja"] .home-hero {
  display:grid; grid-template-columns:minmax(0,1fr) clamp(230px,25vw,350px);
  grid-template-rows:auto auto; align-content:center; align-items:start;
  column-gap:clamp(30px,4vw,65px); row-gap:30px; padding:60px 0 105px;
  min-height:calc(100svh - var(--header));
}
.home-hero .hero-name { grid-column:1; grid-row:1; width:max-content; max-width:100%; font-size:clamp(64px,9.6vw,160px); }
.home-hero .hero-lower { display:contents; }
.home-hero .hero-lower .hero-copy { grid-column:1; grid-row:2; max-width:100%; margin:0; }
.home-hero .hero-copy p { font-size:clamp(15px,1.4vw,20px); }
.home-hero .television-unit { grid-column:2; grid-row:1 / 3; align-self:center; justify-self:center; width:100%; max-width:320px; padding-top:16px; }
.home-hero .television-case { height:auto; aspect-ratio:238 / 151; }
.home-hero .television-caption { font-size:12px; margin-top:18px; }
.home-hero .television-programmes { max-width:200px; margin:13px auto 0; }
.home-hero .television-programmes button { width:30px; height:28px; }
.home-secondary { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:clamp(30px,5vw,80px); margin-top:95px; }
.home-secondary .home-games { margin:0; }
.home-secondary .category-heading { align-items:flex-start; flex-direction:column; gap:16px; min-height:116px; }
.home-secondary .project-grid { grid-template-columns:1fr; }
.home-upcoming .next-programme { margin:0; min-height:390px; height:calc(100% - 146px); padding:clamp(25px,3vw,44px); flex-direction:column; align-items:flex-start; }
.home-upcoming .next-programme h2 { font-size:clamp(30px,4vw,57px); }
.home-upcoming .heli-mark { width:48%; align-self:flex-end; opacity:.4; }
@media(max-width:900px) and (min-width:761px) {
  .home-hero .hero-name { font-size:8.7vw; }
  .home-hero .television-unit { max-width:230px; }
}
@media(max-width:760px) {
  .home-hero, html[data-lang="ja"] .home-hero { grid-template-columns:1fr; grid-template-rows:auto auto auto; row-gap:25px; padding:38px 0 95px; min-height:calc(100svh - var(--header)); }
  .home-hero .hero-name { font-size:14.6vw; }
  .home-hero .hero-copy { grid-row:2; }
  .home-hero .television-unit { grid-column:1; grid-row:3; width:230px; max-width:76vw; padding-top:6px; margin-top:5px; }
  .home-hero .television-link { width:100%; }
  .home-hero .television-caption { margin-top:11px; font-size:12px; }
  .home-hero .television-programmes { margin-top:8px; max-width:175px; }
  .home-secondary { grid-template-columns:1fr; gap:65px; margin-top:65px; }
  .home-secondary .category-heading { min-height:0; }
  .home-upcoming .next-programme { min-height:290px; height:auto; }
  .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; }
  .site-footer { padding-bottom:100px; }
}
@media(max-height:650px) and (min-width:761px) {
  .home-hero, html[data-lang="ja"] .home-hero { padding:30px 0 90px; }
  .home-hero .hero-name { font-size:min(9.6vw,22vh); }
  .home-hero .television-unit { max-width:240px; }
}
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; }
