:root {
  /* CSS viewport size keeps the controls legible on large displays; DPR sharpens their pixels. */
  --ride-ui-unit: clamp(1px, min(0.0520833333vw, 0.0925925926vh), 2px);
  --ride-ground: oklch(14% 0.015 310);
  --ride-ink: oklch(91% 0.025 75);
  --ride-secondary: oklch(76% 0.026 70);
  --ride-muted: oklch(64% 0.025 285);
  --ride-cyan: oklch(83% 0.07 210);
  --ride-line: oklch(65% 0.035 70 / 0.28);
  --ride-panel: oklch(16% 0.015 300 / 0.94);
}
html:has(body.ride-on) {
  scroll-behavior: auto;
}
body.ride-on {
  background: var(--ride-ground);
}
body.ride-on::before,
body.ride-on::after {
  display: none;
}
body.ride-on #content,
body.ride-on #bg-canvas,
body.ride-on .liminal-floor {
  display: none;
}
#ride-canvas {
  position: fixed;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: 1;
}
#ride-track {
  pointer-events: none;
}
#ride-ui {
  position: fixed;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  color: var(--ride-ink);
  font-family: var(--f-display);
}
#ride-ui a,
#ride-ui button {
  pointer-events: auto;
}
#ride-ui button,
#ride-ui a {
  -webkit-tap-highlight-color: transparent;
}
#ride-ui [hidden] {
  display: none !important;
}
.ride-header {
  position: absolute;
  top: calc(28 * var(--ride-ui-unit));
  left: calc(36 * var(--ride-ui-unit));
  right: calc(36 * var(--ride-ui-unit));
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.ride-brand {
  color: var(--ride-ink);
  text-decoration: none;
  font-size: calc(17 * var(--ride-ui-unit));
  letter-spacing: 0.12em;
}
.ride-brand span {
  color: var(--ride-secondary);
  font: calc(10 * var(--ride-ui-unit)) monospace;
  letter-spacing: 0.1em;
  margin-left: calc(16 * var(--ride-ui-unit));
}
.ride-flat {
  color: var(--ride-secondary);
  font: calc(11 * var(--ride-ui-unit)) monospace;
  text-decoration: none;
  border-bottom: 1px solid var(--ride-line);
  padding-bottom: calc(4 * var(--ride-ui-unit));
}
.ride-nav {
  position: absolute;
  right: calc(24 * var(--ride-ui-unit));
  top: 50%;
  transform: translateY(-50%);
  display: flex;
  flex-direction: column;
  gap: calc(7 * var(--ride-ui-unit));
}
.ride-nav button {
  width: calc(36 * var(--ride-ui-unit));
  height: calc(28 * var(--ride-ui-unit));
  background: transparent;
  border: 0;
  cursor: pointer;
  color: var(--ride-secondary);
  position: relative;
}
.ride-nav button::after {
  content: "";
  display: block;
  width: calc(4 * var(--ride-ui-unit));
  height: calc(4 * var(--ride-ui-unit));
  border: 1px solid var(--ride-line);
  border-radius: 50%;
  margin: auto;
}
.ride-nav button[aria-current]::after {
  background: var(--ride-cyan);
  border-color: var(--ride-cyan);
}
.ride-nav span {
  position: absolute;
  right: calc(36 * var(--ride-ui-unit));
  white-space: nowrap;
  font-size: calc(11 * var(--ride-ui-unit));
  visibility: hidden;
}
.ride-nav button:hover span,
.ride-nav button:focus-visible span {
  visibility: visible;
}
.ride-heading {
  position: absolute;
  top: calc(90 * var(--ride-ui-unit));
  left: calc(36 * var(--ride-ui-unit));
  max-width: calc(330 * var(--ride-ui-unit));
}
.ride-kicker {
  margin: 0 0 calc(12 * var(--ride-ui-unit));
  color: var(--ride-secondary);
  font: calc(10 * var(--ride-ui-unit)) monospace;
  letter-spacing: 0.15em;
}
.ride-heading h1 {
  margin: 0;
  font-weight: 400;
  font-size: calc(29 * var(--ride-ui-unit));
  letter-spacing: 0.18em;
  color: var(--ride-ink);
}
.ride-subtitle {
  color: var(--ride-secondary);
  font-size: calc(12 * var(--ride-ui-unit));
  font-style: italic;
  margin-top: calc(12 * var(--ride-ui-unit));
}
#ride-ui[data-station="window"] .ride-heading {
  display: none;
}
.ride-reader {
  position: absolute;
  bottom: calc(54 * var(--ride-ui-unit));
  left: 5vw;
  width: min(calc(315 * var(--ride-ui-unit)), 27vw);
  padding: calc(20 * var(--ride-ui-unit)) calc(22 * var(--ride-ui-unit));
  background: transparent;
  border-left: 1px dashed var(--ride-line);
  pointer-events: auto;
}
.ride-reader h2 {
  margin: calc(10 * var(--ride-ui-unit)) 0;
  font: 400 calc(21 * var(--ride-ui-unit)) var(--f-display);
  letter-spacing: 0.02em;
  color: var(--ride-ink);
}
.ride-description {
  font-size: calc(13 * var(--ride-ui-unit));
  line-height: 1.65;
  color: var(--ride-secondary);
  margin: 0 0 calc(14 * var(--ride-ui-unit));
}
.ride-destination {
  color: var(--ride-cyan);
  font: calc(11 * var(--ride-ui-unit)) monospace;
  text-decoration: none;
  letter-spacing: 0.07em;
}
.ride-details {
  padding: 0;
  margin-left: calc(18 * var(--ride-ui-unit));
  color: var(--ride-secondary);
  background: none;
  border: 0;
  font: calc(11 * var(--ride-ui-unit)) monospace;
  cursor: pointer;
}
.ride-item-controls {
  display: flex;
  align-items: center;
  gap: calc(14 * var(--ride-ui-unit));
  color: var(--ride-secondary);
  font: calc(10 * var(--ride-ui-unit)) monospace;
}
.ride-item-controls button {
  color: var(--ride-ink);
  background: none;
  border: 0;
  cursor: pointer;
  font: calc(15 * var(--ride-ui-unit)) serif;
  min-width: calc(28 * var(--ride-ui-unit));
  min-height: calc(28 * var(--ride-ui-unit));
}
.ride-hint {
  position: absolute;
  bottom: calc(38 * var(--ride-ui-unit));
  left: 50%;
  transform: translateX(-50%);
  color: var(--ride-ink);
  font: calc(11 * var(--ride-ui-unit)) monospace;
  letter-spacing: 0.14em;
}
.ride-hint span {
  display: block;
  text-align: center;
  font-size: calc(20 * var(--ride-ui-unit));
  margin-top: calc(16 * var(--ride-ui-unit));
}
.ride-progress {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 1px;
  background: var(--ride-cyan);
  transform-origin: left;
}
.ride-dialog {
  width: min(calc(720 * var(--ride-ui-unit)), 85vw);
  max-height: 80vh;
  background: var(--ride-ground);
  color: var(--ride-ink);
  border: 1px solid var(--ride-line);
  padding: calc(50 * var(--ride-ui-unit)) calc(32 * var(--ride-ui-unit)) calc(32 * var(--ride-ui-unit));
  pointer-events: auto;
}
.ride-dialog::backdrop {
  background: oklch(8% 0.01 300 / 0.8);
}
.ride-close {
  position: absolute;
  top: calc(10 * var(--ride-ui-unit));
  right: calc(16 * var(--ride-ui-unit));
  border: 0;
  background: none;
  color: var(--ride-ink);
  font-size: calc(28 * var(--ride-ui-unit));
  cursor: pointer;
}
.ride-dialog-content {
  zoom: calc(var(--ride-ui-unit) / 1px);
}
.ride-dialog-content article,
.ride-dialog-content .post-card {
  width: 100%;
  max-width: 100%;
  margin: 0;
  transform: none;
}
.ride-dialog-content .fragment {
  opacity: 1;
  transform: none;
}
.ride-dialog-content .slip {
  max-height: none;
}
#ride-ui :focus-visible {
  outline: 2px solid var(--ride-cyan);
  outline-offset: 5px;
}
#ride-ui[data-station="cosmos"] .ride-heading {
  left: 50%;
  top: 39%;
  transform: translate(-50%, -50%);
  text-align: center;
  max-width: none;
}
#ride-ui[data-station="cosmos"] .ride-heading h1 {
  font-size: calc(52 * var(--ride-ui-unit));
}
#ride-ui[data-station="cosmos"] .ride-reader {
  bottom: 18%;
  left: 50%;
  transform: translateX(-50%);
  width: calc(420 * var(--ride-ui-unit));
  max-width: 60vw;
  text-align: center;
  background: transparent;
  border: 0;
}
@media (max-height: 760px) {
  .ride-heading {
    top: calc(78 * var(--ride-ui-unit));
  }
  .ride-heading h1 {
    font-size: calc(32 * var(--ride-ui-unit));
  }
  .ride-reader {
    bottom: calc(30 * var(--ride-ui-unit));
    padding: calc(14 * var(--ride-ui-unit)) calc(18 * var(--ride-ui-unit));
  }
  .ride-description {
    font-size: calc(12 * var(--ride-ui-unit));
  }
}

.ride-pan-hint {
  position: absolute;
  bottom: calc(24 * var(--ride-ui-unit));
  left: 50%;
  transform: translateX(-50%);
  color: var(--ride-secondary);
  font: calc(10 * var(--ride-ui-unit)) monospace;
  letter-spacing: 0.06em;
}
html:has(body.ride-loading) {
  overflow: hidden;
}
body.ride-loading #content,
body.ride-loading #bg-canvas {
  visibility: hidden;
}
#ride-loading {
  position: fixed;
  inset: 0;
  z-index: 50;
  background: var(--ride-ground) var(--ride-opening-still) center/cover;
  pointer-events: none;
}
#ride-loading a {
  pointer-events: auto;
  position: absolute;
  right: calc(36 * var(--ride-ui-unit));
  top: calc(28 * var(--ride-ui-unit));
  color: var(--ride-secondary);
  font: calc(11 * var(--ride-ui-unit)) monospace;
  text-decoration: none;
}
#ride-loading p {
  position: absolute;
  bottom: calc(38 * var(--ride-ui-unit));
  left: 50%;
  transform: translateX(-50%);
  color: var(--ride-ink);
  font: calc(11 * var(--ride-ui-unit)) monospace;
  letter-spacing: 0.14em;
}

body.ride-loading > :not(#ride-loading):not(#ride-canvas):not(#ride-display):not(#site-pages) {
  visibility: hidden;
}
.ride-landing-links {
  position: absolute;
  top: 82%;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  font: calc(16 * var(--ride-ui-unit)) var(--f-digital);
  gap: calc(28 * var(--ride-ui-unit));
  align-items: center;
  white-space: nowrap;
}
.ride-landing-links a {
  color: var(--ride-ink);
  font: calc(16 * var(--ride-ui-unit)) var(--f-digital);
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: calc(8 * var(--ride-ui-unit));
  padding: calc(12 * var(--ride-ui-unit)) 0;
}
.ride-landing-links svg {
  width: 1em;
  height: 1em;
}
.ride-landing-links .hero-links-sep {
  font-size: calc(11.2 * var(--ride-ui-unit));
}
.ride-landing-links a:hover {
  color: var(--ride-cyan);
}
.ride-fragments p {
  position: absolute;
  transform: translateX(-50%);
  margin: 0;
  font-family: var(--f-display);
  line-height: 1.6;
  color: var(--ride-ink);
  text-shadow: 0 2px 8px var(--ride-ground);
}
#ride-ui[data-station="divider"] .ride-subtitle {
  font-style: normal;
}

.ride-route {
  position: absolute;
  top: calc(75 * var(--ride-ui-unit));
  right: calc(36 * var(--ride-ui-unit));
  background: none;
  border: 0;
  color: var(--ride-secondary);
  font: calc(12 * var(--ride-ui-unit)) var(--f-digital);
  cursor: pointer;
}
.ride-route-open .ride-nav {
  background: var(--ride-panel);
  padding: calc(18 * var(--ride-ui-unit)) calc(12 * var(--ride-ui-unit)) calc(18 * var(--ride-ui-unit)) calc(225 * var(--ride-ui-unit));
  max-height: calc(100dvh - calc(180 * var(--ride-ui-unit)));
  overflow-y: auto;
  border: 1px dashed var(--ride-line);
}
.ride-route-open .ride-nav button {
  height: calc(38 * var(--ride-ui-unit));
  flex-shrink: 0;
}
.ride-stop-label {
  top: 50%;
  transform: translateY(-50%);
  text-align: right;
}
.ride-stop-label b {
  display: block;
  font-weight: normal;
  font-size: calc(13 * var(--ride-ui-unit));
}
.ride-stop-label small {
  display: block;
  margin-top: 3px;
  color: var(--ride-secondary);
  font: calc(11 * var(--ride-ui-unit)) var(--f-digital);
}
.ride-route-open .ride-nav span {
  visibility: visible;
  font-family: var(--f-display);
}
.ride-warning {
  position: absolute;
  left: 13%;
  top: 22%;
  color: var(--cyan);
  background: transparent;
  border: 1px solid var(--ride-line);
  padding: calc(10 * var(--ride-ui-unit)) calc(14 * var(--ride-ui-unit));
  font: calc(17 * var(--ride-ui-unit)) var(--f-digital);
  transform: rotate(-7deg);
  cursor: pointer;
}
.ride-music {
  position: absolute;
  left: 7%;
  bottom: 10%;
  transform: rotate(-8deg);
  color: var(--pink);
  font: calc(11 * var(--ride-ui-unit)) var(--f-digital);
  text-decoration: none;
}
.ride-music img {
  display: block;
  width: calc(115 * var(--ride-ui-unit));
  height: calc(86 * var(--ride-ui-unit));
  object-fit: cover;
  filter: saturate(0.6);
  border: 3px solid var(--ride-line);
}
.ride-music span {
  display: block;
  margin-top: calc(8 * var(--ride-ui-unit));
}
.ride-whisper {
  position: absolute;
  left: 13%;
  bottom: 12%;
  width: min(calc(460 * var(--ride-ui-unit)), 38vw);
  font: clamp(calc(18 * var(--ride-ui-unit)), 1.5vw, calc(22 * var(--ride-ui-unit))) var(--f-frag);
  color: var(--ride-secondary);
  line-height: 1.6;
  transform: rotate(-2deg);
}
.ride-whisper:lang(ja) {
  font-family: var(--f-frag-ja);
}
.ride-ticker {
  font-size: calc(11.52 * var(--ride-ui-unit));
  padding-block: calc(8 * var(--ride-ui-unit));
  pointer-events: auto;
  color: var(--ink-soft);
}
.ride-ticker:focus .ticker__track {
  animation-play-state: paused;
}
.ride-inside .ride-header {
  top: calc(48 * var(--ride-ui-unit));
}
.ride-overheard {
  position: absolute;
  left: 59%;
  top: 23%;
  width: min(calc(420 * var(--ride-ui-unit)), 32vw);
  max-width: none;
  margin: 0;
  padding: 0;
  background: transparent;
  border: 0;
  box-shadow: none;
  font-size: clamp(calc(16 * var(--ride-ui-unit)), 1.2vw, calc(20 * var(--ride-ui-unit)));
  line-height: 1.75;
  transform: rotate(1.5deg);
}
.ride-overheard .oh-line {
  display: block;
}
.ride-fragments p {
  font-family: var(--f-frag);
}
.ride-fragments p:lang(ja) {
  font-family: var(--f-frag-ja);
}
.ride-fragments p:nth-child(2) {
  color: var(--ink-pink, var(--ride-ink));
}
.ride-fragments p:nth-child(3) {
  font-style: italic;
}
#ride-ui[data-station="shelf"] .ride-reader h2,
#ride-ui[data-station="slips"] .ride-reader h2 {
  color: var(--pink);
  font-family: var(--f-digital);
}
#ride-ui[data-station="shelf"] .ride-destination,
#ride-ui[data-station="slips"] .ride-destination {
  border: 1px dashed var(--pink);
  padding: calc(5 * var(--ride-ui-unit)) calc(10 * var(--ride-ui-unit));
  border-radius: 18px;
}
#ride-ui[data-station="shelf"] .ride-kicker,
#ride-ui[data-station="slips"] .ride-kicker {
  color: var(--pink);
}
@media (max-width: 1100px) {
  #ride-ui[data-station="divider"] .ride-subtitle {
    display: none;
  }
}
@media (max-height: 760px) {
  .ride-hint {
    bottom: calc(18 * var(--ride-ui-unit));
  }
}

body.ride-opening #ride-loading { background: transparent; }
#ride-loading .ride-landing-links a { position: static; font: inherit; }
#ride-loading .hero-links-sep { color: var(--ride-secondary); }

html.site-page-open { overflow: hidden; }
html.site-page-open body > :not(#site-pages) { visibility: hidden; }
#site-pages { position: fixed; inset: 0; z-index: 1000; background: var(--ride-ground); }
#site-pages[hidden], .site-page[hidden] { display: none; }
.site-page { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; background: var(--ride-ground); }
