:root {
  --paper: #f2efe7;
  --ink: #0b0b0a;
  --muted: rgba(242, 239, 231, 0.58);
  --line: rgba(242, 239, 231, 0.18);
  --coral: #ff624d;
  --acid: #d8ff62;
  --cyan: #63e5ff;
  --violet: #9c7dff;
  --design-bg: #071d2b;
  --design-color: #8ee1d1;
  --design-highlight: #d8fff3;
  --design-accent: #164f64;
  --origin-x: 50%;
  --origin-y: 50%;
  --from-x: 0%;
  --from-y: 110%;
  --to-x: 0%;
  --to-y: -110%;
  --design-rotation: 0deg;
  --step-delay: 0.04s;
  --play-duration: 1100ms;
  color-scheme: dark;
}

* { box-sizing: border-box; }

html {
  scroll-behavior: smooth;
  background: var(--ink);
}

body {
  min-width: 320px;
  min-height: 100vh;
  margin: 0;
  overflow-x: hidden;
  color: var(--paper);
  background:
    radial-gradient(circle at 89% 4%, rgba(99, 229, 255, 0.08), transparent 23rem),
    var(--ink);
  font-family: "Noto Sans JP", sans-serif;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

button,
input,
a { font: inherit; }

button,
a { -webkit-tap-highlight-color: transparent; }

button { cursor: pointer; }

.site-header {
  position: absolute;
  z-index: 20;
  top: 0;
  left: 0;
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  width: 100%;
  padding: 1.2rem clamp(1.2rem, 4vw, 4.8rem);
  border-bottom: 1px solid rgba(242, 239, 231, 0.1);
}

.index-brand {
  display: inline-flex;
  align-items: center;
  justify-self: start;
  gap: 0.72rem;
  color: var(--paper);
  font-family: "DM Mono", monospace;
  font-size: 0.63rem;
  font-weight: 500;
  letter-spacing: 0.12em;
  text-decoration: none;
  text-transform: uppercase;
}

.index-brand__mark {
  display: grid;
  width: 2.1rem;
  height: 2.1rem;
  place-items: center;
  border: 1px solid rgba(242, 239, 231, 0.42);
  border-radius: 50%;
  color: var(--coral);
  font-size: 0.5rem;
  letter-spacing: -0.06em;
}

.site-nav {
  display: flex;
  gap: 1.65rem;
}

.site-nav a,
.sound-toggle {
  color: rgba(242, 239, 231, 0.58);
  font-family: "DM Mono", monospace;
  font-size: 0.54rem;
  letter-spacing: 0.1em;
  text-decoration: none;
  text-transform: uppercase;
  transition: color 180ms ease;
}

.site-nav a:hover,
.sound-toggle:hover { color: var(--paper); }

.sound-toggle {
  justify-self: end;
  padding: 0.55rem 0.7rem;
  border: 1px solid rgba(242, 239, 231, 0.16);
  border-radius: 999px;
  background: transparent;
}

.hero {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1.16fr) minmax(18rem, 0.52fr);
  align-items: end;
  min-height: 100dvh;
  gap: clamp(2rem, 9vw, 10rem);
  padding: clamp(7rem, 12vh, 9rem) clamp(1.25rem, 6vw, 7rem) clamp(3rem, 7vh, 5.5rem);
  overflow: hidden;
}

.hero::before {
  position: absolute;
  inset: 18% auto auto 56%;
  width: 28rem;
  height: 28rem;
  border: 1px solid rgba(99, 229, 255, 0.09);
  border-radius: 50%;
  box-shadow: 0 0 0 5rem rgba(99, 229, 255, 0.012), 0 0 0 11rem rgba(99, 229, 255, 0.008);
  content: "";
}

.hero__number {
  position: absolute;
  z-index: 0;
  top: 6%;
  left: 50%;
  display: flex;
  color: rgba(242, 239, 231, 0.025);
  font-family: "Playfair Display", serif;
  font-size: min(54vw, 46rem);
  font-weight: 600;
  letter-spacing: -0.18em;
  line-height: 0.8;
  transform: translateX(-50%);
  pointer-events: none;
  -webkit-text-stroke: 1px rgba(242, 239, 231, 0.07);
}

.hero__number span:nth-child(1) { color: rgba(255, 98, 77, 0.07); }
.hero__number span:nth-child(2) { color: rgba(99, 229, 255, 0.035); }

.hero__copy,
.hero-reel { position: relative; z-index: 2; }

.section-kicker {
  margin: 0;
  color: var(--acid);
  font-family: "DM Mono", monospace;
  font-size: 0.59rem;
  letter-spacing: 0.14em;
  line-height: 1.7;
}

.hero h1 {
  max-width: 59rem;
  margin: 1.3rem 0 0;
  font-family: "Playfair Display", "Noto Sans JP", serif;
  font-size: clamp(3.6rem, 7.2vw, 7.8rem);
  font-weight: 500;
  letter-spacing: -0.075em;
  line-height: 0.98;
}

.hero h1 span {
  display: block;
  width: fit-content;
  max-width: 100%;
  white-space: nowrap;
}

.hero h1 span:nth-child(2) { padding-left: clamp(1.5rem, 7vw, 7rem); }
.hero h1 em { color: var(--coral); font-weight: 500; }

.hero__intro {
  max-width: 37rem;
  margin: clamp(1.8rem, 4vw, 3.6rem) 0 0 clamp(0.1rem, 2vw, 1.6rem);
  color: var(--muted);
  font-size: clamp(0.83rem, 1.15vw, 1rem);
  letter-spacing: 0.045em;
  line-height: 2.05;
  line-break: strict;
}

.hero__intro strong { color: var(--paper); font-weight: 500; }

.hero__cta {
  display: inline-flex;
  align-items: center;
  gap: 2.2rem;
  margin-top: 2.1rem;
  padding: 0.85rem 0;
  border-bottom: 1px solid rgba(242, 239, 231, 0.58);
  color: var(--paper);
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-decoration: none;
  transition: gap 200ms ease, color 200ms ease;
}

.hero__cta:hover { gap: 2.8rem; color: var(--acid); }

.hero-reel {
  align-self: end;
  width: min(100%, 24rem);
  padding: 1rem;
  border: 1px solid rgba(242, 239, 231, 0.2);
  background: rgba(242, 239, 231, 0.03);
}

.hero-reel__label,
.hero-reel p {
  font-family: "DM Mono", monospace;
  font-size: 0.54rem;
  letter-spacing: 0.12em;
}

.hero-reel__label { color: rgba(242, 239, 231, 0.46); }

.hero-reel__canvas {
  position: relative;
  height: clamp(12rem, 22vw, 18rem);
  margin: 0.8rem 0;
  overflow: hidden;
  background:
    linear-gradient(145deg, color-mix(in srgb, var(--design-color) 13%, transparent), transparent 56%),
    var(--design-bg);
}

.hero-reel__canvas::before,
.hero-reel__canvas::after,
.hero-reel__canvas span {
  position: absolute;
  display: block;
  content: "";
}

.hero-reel p { display: flex; justify-content: space-between; gap: 1rem; margin: 0; color: rgba(242, 239, 231, 0.7); }
.hero-reel p span:first-child { color: var(--design-color); }

.hero-reel__canvas.fx-ripple::before { left: var(--origin-x); top: var(--origin-y); width: 2rem; height: 2rem; border: 1px solid var(--design-color); border-radius: 50%; box-shadow: 0 0 0 2rem color-mix(in srgb, var(--design-color) 26%, transparent), 0 0 0 5rem color-mix(in srgb, var(--design-color) 12%, transparent); transform: translate(-50%, -50%); }
.hero-reel__canvas.fx-fracture span { width: 40%; height: 42%; background: color-mix(in srgb, var(--design-color) 35%, transparent); clip-path: polygon(15% 0, 100% 18%, 73% 100%, 0 69%); }
.hero-reel__canvas.fx-fracture span:nth-child(1) { left: 3%; top: 5%; transform: rotate(-16deg); }
.hero-reel__canvas.fx-fracture span:nth-child(2) { right: 1%; top: 9%; transform: rotate(14deg); }
.hero-reel__canvas.fx-fracture span:nth-child(3) { left: 28%; bottom: 2%; transform: rotate(31deg); }
.hero-reel__canvas.fx-iris::before { inset: 14%; border: 1px solid var(--design-color); border-radius: 50%; box-shadow: inset 0 0 0 2rem color-mix(in srgb, var(--design-accent) 64%, transparent); }
.hero-reel__canvas.fx-sweep::before { inset: -20%; background: var(--design-color); transform: translateX(44%) rotate(var(--design-rotation)); opacity: 0.74; }
.hero-reel__canvas.fx-blinds span,
.hero-reel__canvas.fx-fold span,
.hero-reel__canvas.fx-wave span { top: 0; width: 20%; height: 100%; background: color-mix(in srgb, var(--design-color) 62%, transparent); }
.hero-reel__canvas.fx-blinds span:nth-child(1), .hero-reel__canvas.fx-fold span:nth-child(1), .hero-reel__canvas.fx-wave span:nth-child(1) { left: 0; }
.hero-reel__canvas.fx-blinds span:nth-child(2), .hero-reel__canvas.fx-fold span:nth-child(2), .hero-reel__canvas.fx-wave span:nth-child(2) { left: 20%; }
.hero-reel__canvas.fx-blinds span:nth-child(3), .hero-reel__canvas.fx-fold span:nth-child(3), .hero-reel__canvas.fx-wave span:nth-child(3) { left: 40%; }
.hero-reel__canvas.fx-blinds span:nth-child(4), .hero-reel__canvas.fx-fold span:nth-child(4), .hero-reel__canvas.fx-wave span:nth-child(4) { left: 60%; }
.hero-reel__canvas.fx-blinds span:nth-child(5), .hero-reel__canvas.fx-fold span:nth-child(5), .hero-reel__canvas.fx-wave span:nth-child(5) { left: 80%; }
.hero-reel__canvas.fx-fold span:nth-child(odd) { transform: perspective(15rem) rotateY(48deg); transform-origin: left; }
.hero-reel__canvas.fx-wave span:nth-child(odd) { height: 64%; top: 18%; }
.hero-reel__canvas.fx-pixel { background-image: linear-gradient(rgba(255,255,255,.09) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.09) 1px, transparent 1px); background-size: 12.5% 12.5%; }
.hero-reel__canvas.fx-pixel::before { inset: 25%; background: var(--design-color); clip-path: polygon(0 0, 76% 0, 76% 25%, 100% 25%, 100% 100%, 24% 100%, 24% 75%, 0 75%); }
.hero-reel__canvas.fx-glitch span { left: 4%; width: 92%; height: 5%; background: var(--design-color); }
.hero-reel__canvas.fx-glitch span:nth-child(1) { top: 20%; transform: translateX(8%); }
.hero-reel__canvas.fx-glitch span:nth-child(2) { top: 37%; transform: translateX(-8%); }
.hero-reel__canvas.fx-glitch span:nth-child(3) { top: 58%; transform: translateX(14%); }
.hero-reel__canvas.fx-glitch span:nth-child(4) { top: 72%; transform: translateX(-4%); }
.hero-reel__canvas.fx-bloom span { width: 10rem; height: 10rem; border-radius: 50%; background: var(--design-color); filter: blur(1rem); opacity: 0.36; }
.hero-reel__canvas.fx-bloom span:nth-child(1) { left: -2rem; top: -2rem; }
.hero-reel__canvas.fx-bloom span:nth-child(2) { right: -2rem; bottom: -3rem; background: var(--design-highlight); }
.hero-reel__canvas.is-changing { animation: reel-change 680ms ease both; }

.marquee {
  overflow: hidden;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  background: var(--acid);
  color: var(--ink);
}

.marquee div {
  display: flex;
  width: max-content;
  align-items: center;
  gap: 1.4rem;
  padding: 0.72rem 0;
  font-family: "DM Mono", monospace;
  font-size: 0.58rem;
  letter-spacing: 0.13em;
  animation: marquee-slide 28s linear infinite;
}

.marquee i { color: var(--coral); font-style: normal; }

.motion-promo {
  position: relative;
  display: grid;
  grid-template-columns: minmax(10rem, 0.5fr) minmax(20rem, 1.15fr) minmax(16rem, 0.75fr);
  align-items: center;
  min-height: 78vh;
  gap: clamp(2rem, 5vw, 6rem);
  padding: clamp(5rem, 9vw, 9rem) clamp(1.25rem, 6vw, 7rem);
  overflow: hidden;
  color: var(--ink);
  background: var(--paper);
}

.motion-promo::before {
  position: absolute;
  inset: 0;
  background-image: linear-gradient(rgba(11, 11, 10, 0.055) 1px, transparent 1px), linear-gradient(90deg, rgba(11, 11, 10, 0.055) 1px, transparent 1px);
  background-size: 3.5rem 3.5rem;
  content: "";
  mask-image: linear-gradient(to right, transparent, black 35%, black 72%, transparent);
}

.motion-promo__number {
  position: relative;
  z-index: 1;
  color: var(--coral);
  font-family: "Playfair Display", serif;
  font-size: clamp(8rem, 17vw, 18rem);
  font-weight: 600;
  letter-spacing: -0.12em;
  line-height: 0.7;
}

.motion-promo__copy { position: relative; z-index: 2; }
.motion-promo .section-kicker { color: #4c58e8; }
.motion-promo h2 {
  margin: 1.2rem 0 0;
  font-family: "Playfair Display", "Noto Sans JP", serif;
  font-size: clamp(2.8rem, 5.6vw, 6.2rem);
  font-weight: 500;
  letter-spacing: -0.07em;
  line-height: 0.98;
}

.motion-promo h2 span { display: block; width: fit-content; max-width: 100%; white-space: nowrap; }
.motion-promo h2 b { font-weight: 500; }
.motion-promo h2 span:nth-child(2) { padding-left: clamp(0.8rem, 6vw, 5rem); }
.motion-promo h2 em { color: #3249e8; font-weight: 500; }
.motion-promo__copy > p:not(.section-kicker) { max-width: 36rem; margin: 2rem 0 0; color: rgba(11, 11, 10, 0.58); font-size: 0.82rem; letter-spacing: 0.04em; line-break: strict; line-height: 2; }
.motion-promo__copy > a { display: inline-flex; align-items: center; gap: 2.6rem; margin-top: 2rem; padding: 0.9rem 0; border-bottom: 1px solid var(--ink); color: var(--ink); font-size: 0.7rem; font-weight: 600; letter-spacing: 0.08em; text-decoration: none; }
.motion-promo__copy > a b { font-weight: 400; transition: transform 180ms ease; }
.motion-promo__copy > a:hover b { transform: translate(0.25rem, -0.25rem); }

.motion-promo__mark {
  position: relative;
  z-index: 2;
  display: grid;
  width: min(100%, 24rem);
  aspect-ratio: 1;
  place-items: center;
  border: 1px solid rgba(11, 11, 10, 0.28);
  border-radius: 50%;
}

.motion-promo__mark span,
.motion-promo__mark b { position: absolute; font-family: "Playfair Display", serif; font-size: clamp(5rem, 9vw, 9rem); line-height: 1; }
.motion-promo__mark span { left: -12%; color: #3249e8; }
.motion-promo__mark b { right: -10%; color: var(--coral); }
.motion-promo__mark i { width: 18%; aspect-ratio: 1; border-radius: 50%; background: var(--acid); }
.motion-promo__mark em { position: absolute; width: 115%; height: 1px; background: rgba(11, 11, 10, 0.3); transform: rotate(-35deg); }
.motion-promo__mark { animation: motion-promo-orbit 8s linear infinite; }

.index-section { padding: clamp(5rem, 11vw, 10rem) clamp(1.25rem, 4vw, 4.8rem); }

.index-heading {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 2rem;
  max-width: 105rem;
  margin: 0 auto 4rem;
}

.index-heading h2 {
  margin: 0.9rem 0 0;
  font-family: "Playfair Display", serif;
  font-size: clamp(4.2rem, 8.5vw, 9rem);
  font-weight: 500;
  letter-spacing: -0.07em;
  line-height: 0.78;
}

.index-heading h2 em { color: var(--coral); font-weight: 500; }

.index-heading__aside {
  padding: 0 0 0.5rem;
  color: rgba(242, 239, 231, 0.43);
  font-family: "DM Mono", monospace;
  font-size: 0.58rem;
  letter-spacing: 0.13em;
  line-height: 1.8;
  text-align: right;
}

.index-heading__aside p { margin: 0; }

.catalog-toolbar {
  position: sticky;
  z-index: 12;
  top: 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  align-items: center;
  gap: 1rem;
  max-width: 105rem;
  margin: 0 auto 1.4rem;
  padding: 0.85rem 0;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  background: rgba(11, 11, 10, 0.9);
  backdrop-filter: blur(16px);
}

.filter-list {
  display: flex;
  gap: 0.45rem;
  min-width: 0;
  padding: 0.1rem 0;
  overflow-x: auto;
  scrollbar-width: none;
}

.filter-list::-webkit-scrollbar { display: none; }

.filter-button {
  flex: none;
  padding: 0.52rem 0.72rem;
  border: 1px solid rgba(242, 239, 231, 0.14);
  border-radius: 999px;
  color: rgba(242, 239, 231, 0.52);
  background: transparent;
  font-family: "DM Mono", monospace;
  font-size: 0.51rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  transition: border-color 180ms ease, background 180ms ease, color 180ms ease;
}

.filter-button:hover { border-color: rgba(242, 239, 231, 0.48); color: var(--paper); }
.filter-button.is-active { border-color: var(--acid); color: var(--ink); background: var(--acid); }

.search-field {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  min-width: 11rem;
  padding: 0.45rem 0.65rem;
  border-bottom: 1px solid rgba(242, 239, 231, 0.3);
  color: rgba(242, 239, 231, 0.46);
}

.search-field input {
  width: 9rem;
  border: 0;
  outline: 0;
  color: var(--paper);
  background: transparent;
  font-size: 0.7rem;
}

.search-field input::placeholder { color: rgba(242, 239, 231, 0.36); }

.result-count {
  margin: 0;
  color: var(--coral);
  font-family: "DM Mono", monospace;
  font-size: 0.54rem;
  letter-spacing: 0.1em;
  white-space: nowrap;
}

.catalog-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1px;
  max-width: 105rem;
  margin: 0 auto;
  background: var(--line);
  border: 1px solid var(--line);
}

.transition-card {
  position: relative;
  display: grid;
  min-width: 0;
  min-height: 25rem;
  grid-template-rows: auto 1fr auto;
  padding: 1rem;
  overflow: hidden;
  border: 0;
  color: var(--paper);
  background: #0d0d0c;
  text-align: left;
  transition: background 240ms ease;
}

.transition-card[hidden] { display: none; }
.transition-card:hover { z-index: 2; background: #151514; }

.transition-card__top {
  position: relative;
  z-index: 2;
  display: flex;
  justify-content: space-between;
  color: rgba(242, 239, 231, 0.47);
  font-family: "DM Mono", monospace;
  font-size: 0.53rem;
  letter-spacing: 0.11em;
}

.transition-card__top span:first-child { color: var(--design-color); }

.card-art {
  position: relative;
  display: block;
  align-self: center;
  height: 13.5rem;
  margin: 1rem 0;
  overflow: hidden;
  background:
    linear-gradient(135deg, color-mix(in srgb, var(--design-color) 9%, transparent), transparent 58%),
    var(--design-bg);
}

.card-art::before,
.card-art::after,
.card-art > span { position: absolute; display: block; content: ""; }

.transition-card__copy {
  position: relative;
  z-index: 2;
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 1rem;
  padding-top: 0.85rem;
  border-top: 1px solid rgba(242, 239, 231, 0.16);
}

.transition-card__copy strong {
  font-family: "Playfair Display", "Noto Sans JP", serif;
  font-size: clamp(1.3rem, 1.8vw, 1.9rem);
  font-weight: 500;
  letter-spacing: -0.045em;
  white-space: nowrap;
}

.transition-card__copy > span {
  color: rgba(242, 239, 231, 0.35);
  font-family: "DM Mono", monospace;
  font-size: 0.45rem;
  letter-spacing: 0.08em;
  white-space: nowrap;
}

.transition-card__action {
  position: absolute;
  z-index: 3;
  right: 1.1rem;
  top: 48%;
  display: grid;
  width: 3rem;
  height: 3rem;
  place-items: center;
  border-radius: 50%;
  color: var(--design-bg);
  background: var(--design-highlight);
  font-family: "DM Mono", monospace;
  font-size: 0.45rem;
  opacity: 0;
  transform: translateY(0.7rem) rotate(-15deg);
  transition: opacity 220ms ease, transform 220ms ease;
}

.transition-card:hover .transition-card__action { opacity: 1; transform: translateY(0) rotate(0); }

.card-ripple .card-art::before { left: var(--origin-x); top: var(--origin-y); width: 1.2rem; height: 1.2rem; border: 1px solid var(--design-color); border-radius: 50%; box-shadow: 0 0 0 1.8rem color-mix(in srgb, var(--design-color) 23%, transparent), 0 0 0 4rem color-mix(in srgb, var(--design-color) 12%, transparent), 0 0 0 7rem color-mix(in srgb, var(--design-color) 6%, transparent); transform: translate(-50%, -50%); }
.card-ripple:hover .card-art::before { animation: card-ripple 1000ms ease-out infinite; }

.card-fracture .card-art > span { width: 44%; height: 44%; background: color-mix(in srgb, var(--design-color) 32%, transparent); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--design-highlight) 34%, transparent); clip-path: polygon(8% 0, 100% 15%, 76% 100%, 0 72%); }
.card-fracture .card-art > span:nth-child(1) { left: 2%; top: 1%; transform: rotate(-13deg); }
.card-fracture .card-art > span:nth-child(2) { right: 0; top: 4%; transform: rotate(18deg); }
.card-fracture .card-art > span:nth-child(3) { left: 20%; bottom: -4%; transform: rotate(31deg); }
.card-fracture .card-art > span:nth-child(4) { right: 8%; bottom: -8%; transform: rotate(-24deg); }
.card-fracture:hover .card-art > span { animation: card-fracture 800ms ease-in-out infinite alternate; }

.card-iris .card-art::before { inset: 16%; border: 1px solid var(--design-color); border-radius: 50%; box-shadow: inset 0 0 0 1.6rem color-mix(in srgb, var(--design-color) 16%, transparent), 0 0 0 3rem color-mix(in srgb, var(--design-accent) 34%, transparent); }
.card-iris .card-art::after { left: 50%; top: 50%; width: 1.1rem; height: 1.1rem; border-radius: 50%; background: var(--design-highlight); transform: translate(-50%, -50%); }
.card-iris:hover .card-art::before { animation: card-iris 900ms ease-in-out infinite alternate; }

.card-sweep .card-art::before { inset: -35%; background: var(--design-color); opacity: 0.72; transform: translate(var(--from-x), var(--from-y)) rotate(var(--design-rotation)); }
.card-sweep .card-art::after { inset: 15%; border: 1px solid color-mix(in srgb, var(--design-highlight) 56%, transparent); }
.card-sweep:hover .card-art::before { animation: card-sweep 1150ms cubic-bezier(.65,0,.35,1) infinite; }

.card-blinds .card-art > span { top: 0; width: 12.5%; height: 100%; background: var(--design-color); opacity: 0.62; transform: scaleY(calc(0.24 + (var(--cell-index) * 0.07))); transform-origin: bottom; }
.card-blinds .card-art > span:nth-child(1) { left: 0; } .card-blinds .card-art > span:nth-child(2) { left: 12.5%; } .card-blinds .card-art > span:nth-child(3) { left: 25%; } .card-blinds .card-art > span:nth-child(4) { left: 37.5%; } .card-blinds .card-art > span:nth-child(5) { left: 50%; } .card-blinds .card-art > span:nth-child(6) { left: 62.5%; } .card-blinds .card-art > span:nth-child(7) { left: 75%; } .card-blinds .card-art > span:nth-child(8) { left: 87.5%; }
.card-blinds:hover .card-art > span { animation: card-blind 820ms calc(var(--cell-index) * 45ms) ease-in-out infinite alternate; }

.card-fold .card-art { perspective: 25rem; }
.card-fold .card-art > span { top: 12%; width: 21%; height: 76%; background: linear-gradient(90deg, var(--design-color), var(--design-accent)); transform: rotateY(calc(-52deg + (var(--cell-index) * 12deg))); transform-origin: left; }
.card-fold .card-art > span:nth-child(1) { left: 2%; } .card-fold .card-art > span:nth-child(2) { left: 14%; } .card-fold .card-art > span:nth-child(3) { left: 26%; } .card-fold .card-art > span:nth-child(4) { left: 38%; } .card-fold .card-art > span:nth-child(5) { left: 50%; } .card-fold .card-art > span:nth-child(6) { left: 62%; } .card-fold .card-art > span:nth-child(7) { left: 74%; } .card-fold .card-art > span:nth-child(8) { left: 86%; }
.card-fold:hover .card-art > span { animation: card-fold 960ms calc(var(--cell-index) * 36ms) ease-in-out infinite alternate; }

.card-pixel .card-art { display: grid; grid-template-columns: repeat(4, 1fr); grid-template-rows: repeat(2, 1fr); gap: 1px; background: var(--design-bg); }
.card-pixel .card-art > span { position: relative; background: var(--design-color); opacity: calc(0.18 + (var(--cell-index) * 0.09)); transform: scale(calc(0.62 + (var(--cell-index) * 0.04))); }
.card-pixel:hover .card-art > span { animation: card-pixel 700ms calc(var(--cell-index) * 55ms) steps(2) infinite alternate; }

.card-wave .card-art > span { top: 50%; width: 12.5%; height: 78%; background: linear-gradient(var(--design-highlight), var(--design-color)); transform: translateY(-50%) scaleY(calc(0.28 + (var(--cell-index) * 0.07))); }
.card-wave .card-art > span:nth-child(1) { left: 0; } .card-wave .card-art > span:nth-child(2) { left: 12.5%; } .card-wave .card-art > span:nth-child(3) { left: 25%; } .card-wave .card-art > span:nth-child(4) { left: 37.5%; } .card-wave .card-art > span:nth-child(5) { left: 50%; } .card-wave .card-art > span:nth-child(6) { left: 62.5%; } .card-wave .card-art > span:nth-child(7) { left: 75%; } .card-wave .card-art > span:nth-child(8) { left: 87.5%; }
.card-wave:hover .card-art > span { animation: card-wave 760ms calc(var(--cell-index) * 65ms) ease-in-out infinite alternate; }

.card-glitch .card-art > span { left: 5%; width: 90%; height: 4%; background: var(--design-color); mix-blend-mode: screen; }
.card-glitch .card-art > span:nth-child(1) { top: 13%; transform: translateX(8%); } .card-glitch .card-art > span:nth-child(2) { top: 25%; transform: translateX(-6%); } .card-glitch .card-art > span:nth-child(3) { top: 38%; transform: translateX(11%); } .card-glitch .card-art > span:nth-child(4) { top: 49%; transform: translateX(-9%); } .card-glitch .card-art > span:nth-child(5) { top: 61%; transform: translateX(4%); } .card-glitch .card-art > span:nth-child(6) { top: 72%; transform: translateX(-12%); } .card-glitch .card-art > span:nth-child(7) { top: 83%; transform: translateX(9%); } .card-glitch .card-art > span:nth-child(8) { top: 91%; transform: translateX(-4%); }
.card-glitch .card-art::before { inset: 0; background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--design-color) 18%, transparent), transparent); }
.card-glitch:hover .card-art > span { animation: card-glitch 420ms calc(var(--cell-index) * 20ms) steps(2) infinite; }

.card-bloom .card-art > span { width: 8rem; height: 8rem; border-radius: 50%; background: var(--design-color); filter: blur(0.7rem); opacity: 0.24; }
.card-bloom .card-art > span:nth-child(1) { left: -2rem; top: -2rem; } .card-bloom .card-art > span:nth-child(2) { right: -1rem; top: 1rem; background: var(--design-highlight); } .card-bloom .card-art > span:nth-child(3) { left: 25%; bottom: -4rem; background: var(--design-accent); } .card-bloom .card-art > span:nth-child(4) { right: 12%; bottom: -2rem; } .card-bloom .card-art > span:nth-child(5) { left: 34%; top: 20%; width: 5rem; height: 5rem; background: var(--design-highlight); }
.card-bloom:hover .card-art > span { animation: card-bloom 1300ms calc(var(--cell-index) * 70ms) ease-in-out infinite alternate; }

.empty-state { max-width: 105rem; margin: 3rem auto 0; color: var(--muted); text-align: center; }
noscript { display: block; margin-top: 2rem; color: var(--coral); text-align: center; }

.closing-section {
  display: grid;
  grid-template-columns: 0.4fr minmax(0, 1fr) 0.7fr;
  align-items: end;
  gap: clamp(2rem, 6vw, 7rem);
  padding: clamp(5rem, 12vw, 11rem) clamp(1.25rem, 6vw, 7rem);
  color: var(--ink);
  background: var(--paper);
}

.closing-section .section-kicker { align-self: start; color: #8b2830; }

.closing-section h2 {
  margin: 0;
  font-family: "Playfair Display", "Noto Sans JP", serif;
  font-size: clamp(3.5rem, 7vw, 7.5rem);
  font-weight: 500;
  letter-spacing: -0.075em;
  line-height: 0.98;
}

.closing-section h2 span { display: block; width: fit-content; max-width: 100%; white-space: nowrap; }
.closing-section h2 span:nth-child(2) { padding-left: clamp(1.5rem, 7vw, 7rem); color: #a52d37; font-style: italic; }

.closing-links { display: grid; gap: 0.65rem; }

.closing-links a {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 0.75rem;
  align-items: center;
  padding: 1rem 0;
  border-top: 1px solid rgba(11, 11, 10, 0.28);
  color: #171715;
  font-size: 0.72rem;
  text-decoration: none;
}

.closing-links a:last-child { border-bottom: 1px solid rgba(11, 11, 10, 0.28); }
.closing-links span { color: #a52d37; font-family: "DM Mono", monospace; font-size: 0.55rem; }
.closing-links b { font-weight: 400; transition: transform 180ms ease; }
.closing-links a:hover b { transform: translate(0.2rem, -0.2rem); }

.site-footer {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  padding: 1.2rem clamp(1.25rem, 4vw, 4.8rem);
  color: rgba(242, 239, 231, 0.4);
  background: #070706;
  font-family: "DM Mono", monospace;
  font-size: 0.52rem;
  letter-spacing: 0.1em;
}

.site-footer p { margin: 0; }
.site-footer a { color: inherit; text-decoration: none; }

.preview-dialog {
  width: min(96vw, 94rem);
  max-width: none;
  height: min(94dvh, 58rem);
  max-height: none;
  margin: auto;
  padding: 0;
  overflow: hidden;
  border: 1px solid rgba(242, 239, 231, 0.24);
  color: var(--paper);
  background: #090908;
}

.preview-dialog::backdrop { background: rgba(0, 0, 0, 0.78); backdrop-filter: blur(10px); }

.preview-shell {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr) auto auto;
  height: 100%;
  padding: 1rem;
}

.preview-header {
  display: flex;
  align-items: start;
  justify-content: space-between;
  gap: 1rem;
  padding-bottom: 0.75rem;
}

.preview-header > div { display: flex; align-items: baseline; gap: 0.75rem; }
.preview-header span { color: var(--design-color); font-family: "Playfair Display", serif; font-size: 1.7rem; }
.preview-header p { margin: 0; color: rgba(242, 239, 231, 0.43); font-family: "DM Mono", monospace; font-size: 0.54rem; letter-spacing: 0.11em; }

.preview-close {
  display: grid;
  width: 2.3rem;
  height: 2.3rem;
  place-items: center;
  border: 1px solid rgba(242, 239, 231, 0.2);
  border-radius: 50%;
  color: var(--paper);
  background: transparent;
  font-size: 1rem;
}

.preview-stage {
  position: relative;
  min-height: 0;
  overflow: hidden;
  background: var(--design-bg);
  transition: --design-bg 200ms ease;
}

.preview-scene {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding: clamp(1.2rem, 3vw, 3rem);
  transition: opacity 240ms ease;
}

.preview-scene p {
  margin: 0;
  font-family: "DM Mono", monospace;
  font-size: 0.56rem;
  letter-spacing: 0.13em;
}

.preview-scene > div { display: grid; }
.preview-scene span { font-family: "DM Mono", monospace; font-size: 0.66rem; letter-spacing: 0.16em; }
.preview-scene strong { font-family: "Playfair Display", serif; font-size: clamp(4rem, 10vw, 10rem); font-weight: 500; letter-spacing: -0.08em; line-height: 0.72; }

.preview-scene--before { color: var(--design-highlight); background: radial-gradient(circle at var(--origin-x) var(--origin-y), color-mix(in srgb, var(--design-color) 23%, transparent), transparent 29rem), var(--design-bg); opacity: 1; }
.preview-scene--after { align-items: flex-end; color: var(--design-bg); background: linear-gradient(145deg, var(--design-highlight), color-mix(in srgb, var(--design-color) 64%, var(--design-highlight))); opacity: 0; text-align: right; }
.preview-stage.is-next .preview-scene--before { opacity: 0; }
.preview-stage.is-next .preview-scene--after { opacity: 1; }

.transition-fx { position: absolute; z-index: 5; inset: 0; visibility: hidden; overflow: hidden; pointer-events: none; }
.transition-fx.is-playing { visibility: visible; }
.fx-core,
.fx-ring,
.fx-word { position: absolute; display: block; opacity: 0; }
.fx-cells { position: absolute; inset: 0; }
.fx-cell { display: none; }

.fx-ripple .fx-core { left: var(--origin-x); top: var(--origin-y); width: 3rem; height: 3rem; border-radius: 50%; background: var(--design-color); transform: translate(-50%, -50%) scale(0); }
.fx-ripple .fx-ring { left: var(--origin-x); top: var(--origin-y); width: 4rem; height: 4rem; border: 1px solid var(--design-highlight); border-radius: 50%; transform: translate(-50%, -50%) scale(0); }
.fx-ripple.is-playing .fx-core { animation: fx-ripple-core var(--play-duration) cubic-bezier(.18,.72,.2,1) both; }
.fx-ripple.is-playing .fx-ring--one { animation: fx-ripple-ring calc(var(--play-duration) * .72) 40ms ease-out both; }
.fx-ripple.is-playing .fx-ring--two { animation: fx-ripple-ring calc(var(--play-duration) * .72) 140ms ease-out both; }
.fx-ripple.is-playing .fx-ring--three { animation: fx-ripple-ring calc(var(--play-duration) * .72) 240ms ease-out both; }

.fx-fracture .fx-cells,
.fx-pixel .fx-cells { display: grid; grid-template-columns: repeat(8, 1fr); grid-template-rows: repeat(8, 1fr); }
.fx-fracture .fx-cell { display: block; opacity: 0; background: linear-gradient(135deg, color-mix(in srgb, var(--design-highlight) 32%, transparent), color-mix(in srgb, var(--design-color) 58%, transparent)); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--design-highlight) 46%, transparent); clip-path: polygon(5% 0, 100% 12%, 82% 100%, 0 77%); }
.fx-fracture .fx-cell:nth-child(3n+2) { clip-path: polygon(18% 0, 100% 31%, 71% 100%, 0 68%); }
.fx-fracture .fx-cell:nth-child(3n+3) { clip-path: polygon(0 19%, 82% 0, 100% 81%, 23% 100%); }
.fx-fracture.is-playing .fx-cell { animation: fx-fracture var(--play-duration) calc(var(--cell-index) * 3ms) cubic-bezier(.2,.7,.35,1) both; }

.fx-iris .fx-core { inset: -1px; background: var(--design-color); clip-path: circle(0 at var(--origin-x) var(--origin-y)); }
.fx-iris .fx-ring { left: var(--origin-x); top: var(--origin-y); width: 12rem; height: 12rem; border: 1px solid var(--design-highlight); border-radius: 50%; transform: translate(-50%, -50%) scale(0); }
.fx-iris.is-playing .fx-core { animation: fx-iris var(--play-duration) cubic-bezier(.65,0,.2,1) both; }
.fx-iris.is-playing .fx-ring--one { animation: fx-iris-ring calc(var(--play-duration) * .8) ease both; }
.fx-iris.is-playing .fx-ring--two { animation: fx-iris-ring calc(var(--play-duration) * .8) 100ms ease both; }

.fx-sweep .fx-core { inset: -35%; background: var(--design-color); transform: translate(var(--from-x), var(--from-y)) rotate(var(--design-rotation)); }
.fx-sweep.is-playing .fx-core { animation: fx-sweep var(--play-duration) cubic-bezier(.72,0,.22,1) both; }

.fx-blinds .fx-cells,
.fx-fold .fx-cells,
.fx-wave .fx-cells { perspective: 60rem; }
.fx-blinds .fx-cell,
.fx-fold .fx-cell,
.fx-wave .fx-cell { position: absolute; top: 0; display: block; width: 12.5%; height: 100%; left: calc(var(--cell-column) * 12.5%); background: var(--design-color); opacity: 0; }
.fx-blinds .fx-cell:nth-child(n+9), .fx-fold .fx-cell:nth-child(n+9) { display: none; }
.fx-blinds .fx-cell { transform: scaleY(0); transform-origin: bottom; }
.fx-blinds.is-playing .fx-cell { animation: fx-blinds var(--play-duration) calc(var(--cell-column) * var(--step-delay)) cubic-bezier(.62,0,.2,1) both; }

.fx-fold .fx-cell { background: linear-gradient(90deg, var(--design-accent), var(--design-color), var(--design-highlight)); transform: rotateY(92deg); transform-origin: left; }
.fx-fold.is-playing .fx-cell { animation: fx-fold var(--play-duration) calc(var(--cell-column) * var(--step-delay)) cubic-bezier(.58,0,.2,1) both; }

.fx-pixel .fx-cell { display: block; opacity: 0; background: var(--design-color); transform: scale(0); }
.fx-pixel.is-playing .fx-cell { animation: fx-pixel var(--play-duration) calc((var(--cell-row) + var(--cell-column)) * var(--step-delay)) steps(3) both; }

.fx-wave .fx-cell { width: 6.25%; left: calc(var(--cell-index) * 6.25%); background: linear-gradient(var(--design-highlight), var(--design-color)); transform: scaleY(0); transform-origin: bottom; }
.fx-wave .fx-cell:nth-child(n+17) { display: none; }
.fx-wave.is-playing .fx-cell { animation: fx-wave var(--play-duration) calc(var(--cell-index) * 28ms) ease-in-out both; }

.fx-glitch .fx-cell { position: absolute; left: 0; display: block; width: 100%; height: 6.25%; top: calc(var(--cell-index) * 6.25%); opacity: 0; background: var(--design-color); }
.fx-glitch .fx-cell:nth-child(n+17) { display: none; }
.fx-glitch.is-playing .fx-cell { animation: fx-glitch var(--play-duration) calc(var(--cell-index) * 11ms) steps(2) both; }
.fx-glitch .fx-word { left: 50%; top: 50%; color: var(--design-highlight); font-family: "DM Mono", monospace; font-size: min(29vw, 24rem); font-weight: 500; letter-spacing: -0.12em; transform: translate(-50%, -50%); mix-blend-mode: difference; }
.fx-glitch.is-playing .fx-word { animation: fx-glitch-word var(--play-duration) steps(2) both; }

.fx-bloom .fx-cell { position: absolute; display: block; width: 22vw; height: 22vw; left: calc((var(--cell-column) - 1) * 13%); top: calc((var(--cell-row) - 1) * 17%); border-radius: 50%; opacity: 0; background: var(--design-color); filter: blur(1.2rem); transform: scale(0); }
.fx-bloom .fx-cell:nth-child(n+25) { display: none; }
.fx-bloom .fx-cell:nth-child(3n) { background: var(--design-highlight); }
.fx-bloom .fx-cell:nth-child(4n) { background: var(--design-accent); }
.fx-bloom.is-playing .fx-cell { animation: fx-bloom var(--play-duration) calc(var(--cell-index) * 14ms) ease-in-out both; }
.fx-bloom .fx-word { left: 50%; top: 50%; color: var(--design-bg); font-family: "Playfair Display", serif; font-size: min(18vw, 14rem); transform: translate(-50%, -50%); }
.fx-bloom.is-playing .fx-word { animation: fx-bloom-word var(--play-duration) ease both; }

.preview-info {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: end;
  gap: 2rem;
  padding-top: 1rem;
}

.preview-info h2 { margin: 0.3rem 0 0; font-family: "Playfair Display", "Noto Sans JP", serif; font-size: clamp(2.2rem, 4vw, 4.2rem); font-weight: 500; letter-spacing: -0.06em; line-height: 1; }
.preview-info > div > p:last-child { max-width: 39rem; margin: 0.65rem 0 0; color: rgba(242, 239, 231, 0.5); font-size: 0.7rem; letter-spacing: 0.03em; line-height: 1.8; }

.preview-actions { display: grid; justify-items: end; gap: 0.65rem; }
.play-button { display: flex; align-items: center; justify-content: space-between; gap: 3rem; min-width: 15rem; padding: 0.8rem 0.85rem 0.8rem 1rem; border: 0; border-radius: 999px; color: var(--design-bg); background: var(--design-highlight); font-size: 0.7rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; }
.play-button span:last-child { display: grid; width: 2rem; height: 2rem; place-items: center; border-radius: 50%; color: var(--design-highlight); background: var(--design-bg); }
.play-button:disabled { cursor: wait; opacity: 0.58; }
.preview-pagination { display: flex; align-items: center; gap: 0.7rem; color: rgba(242, 239, 231, 0.45); font-family: "DM Mono", monospace; font-size: 0.52rem; }
.preview-pagination button { display: grid; width: 1.9rem; height: 1.9rem; place-items: center; border: 1px solid rgba(242, 239, 231, 0.18); border-radius: 50%; color: var(--paper); background: transparent; }

.dedicated-link { justify-self: start; margin-top: 0.65rem; color: var(--design-color); font-family: "DM Mono", monospace; font-size: 0.55rem; letter-spacing: 0.09em; text-decoration: none; }
.dedicated-link[hidden] { display: none; }

.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }

:focus-visible { outline: 2px solid var(--acid); outline-offset: 4px; }

@keyframes reel-change { 0% { opacity: 0.3; filter: blur(5px); } 100% { opacity: 1; filter: none; } }
@keyframes marquee-slide { to { transform: translateX(-50%); } }
@keyframes motion-promo-orbit { to { transform: rotate(360deg); } }
@keyframes card-ripple { from { opacity: .9; transform: translate(-50%, -50%) scale(.65); } to { opacity: .1; transform: translate(-50%, -50%) scale(1.25); } }
@keyframes card-fracture { to { transform: translate(calc((var(--cell-index) - 3) * 0.16rem), calc((var(--cell-index) - 4) * -0.12rem)) rotate(calc(var(--cell-index) * 8deg)); } }
@keyframes card-iris { to { inset: 7%; transform: rotate(13deg); } }
@keyframes card-sweep { 0% { transform: translate(var(--from-x), var(--from-y)) rotate(var(--design-rotation)); } 52% { transform: translate(0, 0) rotate(var(--design-rotation)); } 100% { transform: translate(var(--to-x), var(--to-y)) rotate(var(--design-rotation)); } }
@keyframes card-blind { to { transform: scaleY(1); } }
@keyframes card-fold { to { transform: rotateY(8deg); } }
@keyframes card-pixel { to { opacity: 1; transform: scale(1); } }
@keyframes card-wave { to { transform: translateY(-50%) scaleY(1); } }
@keyframes card-glitch { 0%, 100% { opacity: .2; } 40% { opacity: .9; transform: translateX(calc((var(--cell-index) - 4) * .4rem)); } }
@keyframes card-bloom { to { opacity: .52; transform: translate(calc((var(--cell-index) - 2) * .4rem), calc((var(--cell-index) - 3) * -.35rem)) scale(1.2); } }

@keyframes fx-ripple-core { 0% { opacity: 1; transform: translate(-50%, -50%) scale(0); } 56% { opacity: 1; transform: translate(-50%, -50%) scale(70); } 82% { opacity: 1; } 100% { opacity: 0; transform: translate(-50%, -50%) scale(92); } }
@keyframes fx-ripple-ring { 0% { opacity: .8; transform: translate(-50%, -50%) scale(0); } 100% { opacity: 0; transform: translate(-50%, -50%) scale(18); } }
@keyframes fx-fracture { 0% { opacity: 0; transform: translate3d(0,0,0) rotate(0); } 16%, 46% { opacity: .92; transform: translate3d(0,0,0) rotate(0); } 100% { opacity: 0; transform: translate3d(calc((var(--cell-column) - 3.5) * 7vw), calc((var(--cell-row) - 3.5) * 6vh), 0) rotate(calc((var(--cell-index) - 32) * .9deg)); } }
@keyframes fx-iris { 0% { opacity: 1; clip-path: circle(0 at var(--origin-x) var(--origin-y)); } 58%, 82% { opacity: 1; clip-path: circle(150vmax at var(--origin-x) var(--origin-y)); } 100% { opacity: 0; clip-path: circle(150vmax at var(--origin-x) var(--origin-y)); } }
@keyframes fx-iris-ring { 0% { opacity: .8; transform: translate(-50%, -50%) scale(0); } 100% { opacity: 0; transform: translate(-50%, -50%) scale(6); } }
@keyframes fx-sweep { 0% { opacity: 1; transform: translate(var(--from-x), var(--from-y)) rotate(var(--design-rotation)); } 46%, 67% { opacity: 1; transform: translate(0,0) rotate(var(--design-rotation)); } 100% { opacity: 0; transform: translate(var(--to-x), var(--to-y)) rotate(var(--design-rotation)); } }
@keyframes fx-blinds { 0% { opacity: 1; transform: scaleY(0); } 48%, 69% { opacity: 1; transform: scaleY(1); } 100% { opacity: 0; transform: scaleY(0); transform-origin: top; } }
@keyframes fx-fold { 0% { opacity: 1; transform: rotateY(92deg); } 48%, 68% { opacity: 1; transform: rotateY(0); } 100% { opacity: 0; transform: rotateY(-92deg); transform-origin: right; } }
@keyframes fx-pixel { 0% { opacity: 0; transform: scale(0); } 42%, 65% { opacity: 1; transform: scale(1); } 100% { opacity: 0; transform: scale(0); } }
@keyframes fx-wave { 0% { opacity: 1; transform: scaleY(0); } 43%, 66% { opacity: 1; transform: scaleY(1); } 100% { opacity: 0; transform: scaleY(0); transform-origin: top; } }
@keyframes fx-glitch { 0% { opacity: 0; transform: translateX(var(--from-x)); } 24% { opacity: 1; } 48%, 65% { opacity: 1; transform: translateX(0); } 100% { opacity: 0; transform: translateX(var(--to-x)); } }
@keyframes fx-glitch-word { 0%, 16% { opacity: 0; transform: translate(-45%, -50%); } 35%, 65% { opacity: 1; transform: translate(-50%, -50%); } 100% { opacity: 0; transform: translate(-55%, -50%); } }
@keyframes fx-bloom { 0% { opacity: 0; transform: scale(0); } 45%, 72% { opacity: .9; transform: scale(1.65); } 100% { opacity: 0; transform: scale(2); } }
@keyframes fx-bloom-word { 0%, 25% { opacity: 0; transform: translate(-50%, -50%) scale(.7); } 50%, 72% { opacity: 1; transform: translate(-50%, -50%) scale(1); } 100% { opacity: 0; transform: translate(-50%, -50%) scale(1.2); } }

@media (max-width: 1120px) {
  .motion-promo { grid-template-columns: 0.4fr 1fr 0.62fr; }
  .catalog-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .site-nav { gap: 0.85rem; }
  .closing-section { grid-template-columns: 1fr 1.7fr; }
  .closing-section .section-kicker { grid-column: 1 / -1; }
  .closing-links { align-self: end; }
}

@media (max-width: 820px) {
  .site-header { grid-template-columns: 1fr auto; }
  .site-nav { display: none; }
  .hero { grid-template-columns: 1fr; align-content: end; }
  .hero-reel { width: min(100%, 32rem); }
  .motion-promo { grid-template-columns: 0.45fr 1fr; min-height: auto; }
  .motion-promo__mark { display: none; }
  .catalog-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .catalog-toolbar { grid-template-columns: 1fr auto; }
  .filter-list { grid-column: 1 / -1; grid-row: 2; }
  .search-field { grid-column: 1; grid-row: 1; }
  .result-count { grid-column: 2; grid-row: 1; }
  .preview-info { grid-template-columns: 1fr; }
  .preview-actions { grid-template-columns: 1fr auto; justify-items: stretch; }
  .preview-pagination { justify-self: end; }
  .closing-section { grid-template-columns: 1fr; }
  .closing-links { width: min(100%, 30rem); }
}

@media (max-width: 560px) {
  .site-header { padding: 1rem 1.2rem; }
  .index-brand { font-size: 0.56rem; }
  .sound-toggle { font-size: 0.48rem; }
  .hero { min-height: 100dvh; padding: 7.5rem 1.35rem 2.2rem; gap: 2rem; }
  .hero::before { left: 40%; top: 27%; width: 18rem; height: 18rem; }
  .hero__number { top: 13%; font-size: 62vw; }
  .hero h1 { font-size: clamp(3rem, 13.7vw, 4rem); line-height: 1; }
  .hero h1 span:nth-child(2) { padding-left: 0.6rem; }
  .hero__intro { margin: 1.5rem 0 0; font-size: 0.8rem; line-height: 1.9; }
  .hero__intro strong { display: block; }
  .hero-reel { display: grid; grid-template-columns: auto 1fr; align-items: center; gap: 0.65rem; padding: 0.75rem; }
  .hero-reel__canvas { grid-column: 1 / -1; height: 9.5rem; margin: 0; }
  .hero-reel p { justify-content: flex-end; }
  .motion-promo { display: block; padding: 5rem 1.35rem; }
  .motion-promo__number { position: absolute; top: 5rem; right: 1rem; color: rgba(255, 98, 77, 0.15); font-size: 11rem; }
  .motion-promo h2 { font-size: clamp(2.65rem, 12vw, 3.8rem); }
  .motion-promo h2 b { display: block; }
  .motion-promo h2 span:nth-child(2) { padding-left: 0.6rem; }
  .motion-promo__copy > p:not(.section-kicker) { max-width: 24rem; }
  .index-section { padding: 5rem 1.15rem; }
  .index-heading { align-items: start; margin-bottom: 2.5rem; }
  .index-heading h2 { font-size: clamp(3.9rem, 20vw, 5.2rem); }
  .index-heading__aside { display: none; }
  .catalog-toolbar { top: 0; }
  .catalog-grid { grid-template-columns: 1fr; }
  .transition-card { min-height: 25rem; }
  .transition-card__copy strong { font-size: 1.8rem; }
  .closing-section { padding: 5.5rem 1.35rem; }
  .closing-section h2 { font-size: clamp(3rem, 13vw, 4rem); }
  .closing-section h2 span:nth-child(2) { padding-left: 0.8rem; }
  .site-footer { display: grid; gap: 0.35rem; }
  .site-footer a { margin-top: 0.45rem; }
  .preview-dialog { width: 100vw; height: 100dvh; border: 0; }
  .preview-shell { padding: 0.75rem; }
  .preview-stage { min-height: 44vh; }
  .preview-scene strong { font-size: 18vw; }
  .preview-info { gap: 0.8rem; }
  .preview-info h2 { font-size: 2.5rem; }
  .preview-info > div > p:last-child { display: none; }
  .preview-actions { grid-template-columns: 1fr; }
  .play-button { width: 100%; min-width: 0; }
  .preview-pagination { justify-self: center; }
  .dedicated-link { margin-top: 0.45rem; }
}

.motion-off *,
.motion-off *::before,
.motion-off *::after { animation-play-state: paused !important; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; }
}
