/* Fables: scroll is the timeline. Artwork remains at a bounded scale. */
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}
[hidden] {
  display: none !important;
}
.page-index {
  background: #050e17;
}
.global-motion-control {
  position: fixed;
  z-index: 100;
  right: 22px;
  bottom: 15px;
}
.global-motion-control button {
  background: #08141be8;
  border: 1px solid #b6c3c17a;
  color: #f7f0dc;
  border-radius: 20px;
  padding: 7px 15px;
  font-size: 0.8125rem;
  backdrop-filter: blur(12px);
}
.scroll-chapter {
  position: relative;
  height: auto;
}
.scene-stage {
  position: relative;
  height: 100svh;
  min-height: 680px;
  overflow: clip;
  isolation: isolate;
  background: #07121a;
  color: #f7f0df;
}
.immersion-ready[data-motion="on"] .scene-stage {
  position: sticky;
  top: 0;
}
.immersion-ready[data-motion="on"] .portal-journey {
  height: 850svh;
}
.immersion-ready[data-motion="on"] .social-journey {
  height: 490svh;
}
.immersion-ready[data-motion="on"] .theme-journey {
  height: 340svh;
}
.immersion-ready[data-motion="on"] .memory-journey {
  height: 420svh;
}
.immersion-ready[data-motion="on"] .travel-journey {
  height: 590svh;
}
.scene-art {
  position: absolute;
  inset: -2%;
  width: 104%;
  height: 104%;
  object-fit: cover;
  max-width: none;
  pointer-events: none;
}
.scene-shade {
  position: absolute;
  inset: 0;
  background:
    linear-gradient(90deg, #030b16c9 0%, #030b1633 65%),
    linear-gradient(0deg, #030b16dd 0%, transparent 25%);
  pointer-events: none;
}
.scene-chapter-label {
  position: absolute;
  z-index: 20;
  left: 4%;
  right: 4%;
  top: 28px;
  display: flex;
  justify-content: space-between;
  gap: 20px;
  align-items: center;
  font-size: 0.8125rem;
  letter-spacing: 0.16em;
  color: #f2e6cf;
}
.scene-chapter-label a {
  font-size: 0.875rem;
  letter-spacing: 0;
  border-bottom: 1px solid #e6d7bd60;
  padding-bottom: 5px;
}
.scene-copy {
  position: absolute;
  z-index: 8;
  left: 5%;
  top: 24%;
  width: 36%;
  max-width: 550px;
}
.scene-copy h2 {
  font-size: clamp(3.3rem, 5.6vw, 6.6rem);
  line-height: 1.03;
  margin: 22px 0 25px;
  text-shadow: 0 3px 28px #0008;
}
.scene-copy > p:not(.eyebrow) {
  max-width: 395px;
  font-size: 1rem;
  line-height: 1.8;
  color: #d7dece;
}
.scene-copy .eyebrow {
  color: #ffb883;
}
.chapter-track {
  position: absolute;
  bottom: 28px;
  left: 5%;
  right: 5%;
  display: flex;
  gap: 18px;
  z-index: 25;
}
.chapter-track button {
  background: transparent;
  border: 0;
  border-top: 1px solid #e4d4b24f;
  color: #adb6b4;
  flex: 1;
  padding: 13px 2px;
  text-align: left;
  font-size: 0.8125rem;
  display: flex;
  gap: 12px;
  align-items: center;
}
.chapter-track button span {
  font-size: 0.875rem;
}
.chapter-track button[aria-current="true"] {
  color: #ffd5a6;
  border-color: #ffc78d;
}
.chapter-track button:hover {
  color: #fff;
}
.scene-action {
  background: #122638d6;
  border: 1px solid #d5b98a;
  color: #ffe5ba;
  padding: 11px 18px;
  font-size: 0.875rem;
  border-radius: 2px;
}
.scene-action:hover {
  background: #365565;
}
.scene-pill {
  font-size: 0.75rem;
  letter-spacing: 0.12em;
  display: inline-block;
  border-bottom: 1px solid #daae6d80;
  padding-bottom: 10px;
  color: #fbc08c;
}
/* Artwork breaks into depth, then the next world assembles. */
.portal-stage {
  --portal-rgb: 255, 182, 112;
}
.journey-background,
.journey-vignette,
.category-field {
  position: absolute;
  inset: 0;
  pointer-events: none;
}
.journey-origin {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 65% center;
  max-width: none;
}
.journey-vignette {
  background:
    linear-gradient(90deg, #030c12f5 1%, #030c1280 47%, #030c1210 80%),
    linear-gradient(0deg, #030c12 0%, transparent 38%);
  z-index: 1;
}
.journey-intro {
  position: absolute;
  z-index: 8;
  left: 0;
  right: 0;
  top: 21%;
  pointer-events: none;
}
.journey-intro h1 {
  font-size: clamp(4.2rem, 6.8vw, 7.5rem);
  line-height: 1.02;
  margin: 22px 0 25px;
  max-width: 720px;
}
.journey-intro > p:not(.eyebrow) {
  font-size: 1rem;
  color: #cbd5cc;
  line-height: 1.7;
}
.journey-intro-link {
  display: inline-block;
  pointer-events: auto;
  margin-top: 23px;
  border-bottom: 1px solid #a7bbae;
  padding-bottom: 8px;
  font-size: 0.875rem;
}

.journey-top-controls {
  position: absolute;
  top: 120px;
  right: 4%;
  z-index: 30;
  display: flex;
  gap: 8px;
}
.portal-stage.travelling .journey-top-controls {
  top: 28px;
}
.journey-control {
  background: #07131cbf;
  color: #f9e8cc;
  border: 1px solid #eed1a985;
  border-radius: 2px;
  padding: 8px 12px;
  font-size: 0.8125rem;
  backdrop-filter: blur(12px);
}
.journey-control:disabled {
  opacity: 0.5;
  cursor: default;
}
.journey-hud {
  position: absolute;
  bottom: 30px;
  left: 0;
  right: 0;
  z-index: 30;
}
.journey-instruction {
  display: flex;
  align-items: center;
  gap: 18px;
  margin-bottom: 20px;
}
.journey-instruction > span:first-child {
  display: grid;
  place-items: center;
  width: 36px;
  height: 48px;
  border: 1px solid #b1b79b;
  border-radius: 20px;
}
.journey-instruction p {
  font-size: 0.75rem;
  letter-spacing: 0.12em;
  line-height: 1.5;
  color: #f1eddb;
}
.journey-instruction small {
  font-size: 0.75rem;
  display: block;
  letter-spacing: 0;
  color: #bdcbbd;
}
.journey-instruction > span:last-child {
  margin-left: auto;
  font-size: 0.75rem;
  letter-spacing: 0.16em;
}
.journey-world-nav {
  display: grid;
  grid-template-columns: repeat(8, 1fr);
  gap: 10px;
}
.journey-world-nav button {
  display: flex;
  gap: 8px;
  align-items: center;
  border: 0;
  border-top: 1px solid #b6bc9459;
  padding: 13px 7px;
  background: #04101380;
  color: #c8d4c4;
  font-size: 0.875rem;
  backdrop-filter: blur(8px);
}
.journey-world-nav button span {
  font-size: 0.75rem;
  color: #8f9e93;
}
.journey-world-nav button[aria-current="true"] {
  color: #fff0d3;
  border-color: #f5b477;
  background: #b97b3b20;
}
.journey-progress-track {
  height: 2px;
  background: #9daf8935;
  margin-top: 7px;
}
.journey-progress-track span {
  display: block;
  height: 100%;
  width: 100%;
  transform: scaleX(0);
  transform-origin: left;
  background: #e4ac73;
}
.experience-intro {
  background: #071724;
  padding: 95px 25px;
  text-align: center;
  border-block: 1px solid #47677950;
}
.experience-intro h2 {
  font-size: clamp(3rem, 4.4vw, 5rem);
  max-width: 950px;
  margin: 20px auto;
}
.experience-intro p:last-child {
  max-width: 600px;
  margin: 25px auto 0;
  font-size: 1rem;
  color: #bbc8cd;
}
/* A title travels through the social graph. */
.social-stage {
  background: #071326;
}
.social-scene-art {
  opacity: 0.78;
}
.social-universe {
  position: absolute;
  left: 39%;
  top: 13%;
  width: 60%;
  height: 73%;
  transform-origin: 55% 50%;
  will-change: transform;
}
.connection-paths {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  overflow: visible;
  fill: none;
  stroke: #dcad73;
  stroke-width: 1.5;
}
.connection-base {
  opacity: 0.18;
  stroke-dasharray: 5 9;
}
.connection-active {
  stroke: #f4c288;
  stroke-width: 2;
  filter: drop-shadow(0 0 5px #eeaa72);
  stroke-dasharray: 1;
  stroke-dashoffset: 1;
}
.friend-node {
  position: absolute;
  z-index: 3;
  transform: translate(-50%, -50%);
  text-align: center;
}
.friend-node > span {
  display: grid;
  place-items: center;
  width: 68px;
  height: 68px;
  border: 1px solid #fac98e70;
  background: #162634ed;
  border-radius: 50%;
  font-family: var(--serif);
  font-size: 2rem;
  color: #f4cf97;
  box-shadow:
    0 0 0 8px #b79b6710,
    0 0 35px #f6bf6320;
}
.friend-node small {
  display: block;
  font-size: 0.8125rem;
  white-space: nowrap;
  margin-top: 13px;
  color: #d4daca;
}
.node-you {
  left: 10%;
  top: 54%;
}
.node-ava {
  left: 51%;
  top: 34%;
}
.node-jas {
  left: 89%;
  top: 51%;
}
.node-mira {
  left: 24%;
  top: 79%;
}
.travelling-title {
  position: absolute;
  z-index: 8;
  width: clamp(125px, 13vw, 180px);
  left: 12%;
  top: 24%;
  transform: translate(-50%, -50%) rotate(-7deg);
  padding: 7px 7px 14px;
  background: #f1e9d8;
  color: #2b2d29;
  box-shadow: 7px 18px 35px #0009;
  border-radius: 2px;
}
.travelling-title .world-art {
  width: 100%;
  border-radius: 1px;
}
.travelling-title > span {
  display: block;
  font-size: 0.75rem;
  letter-spacing: 0.1em;
  margin: 10px 7px 4px;
  color: #796245;
}
.travelling-title strong {
  display: block;
  font-family: var(--serif);
  font-weight: 400;
  font-size: 1.35rem;
  line-height: 1.1;
  margin: 0 7px;
}
.title-trail {
  position: absolute;
  width: 95px;
  opacity: 0.7;
  padding: 5px;
  background: #e6dcc8;
  border-radius: 2px;
  box-shadow: 0 10px 30px #0009;
}
.trail-one {
  left: 64%;
  top: 16%;
  transform: rotate(9deg);
}
.trail-two {
  left: 46%;
  top: 63%;
  transform: rotate(-7deg);
}
.social-caption {
  position: absolute;
  left: 37%;
  top: 55%;
  width: 55%;
  z-index: 12;
  opacity: 0;
  visibility: hidden;
  transform: translateY(15px);
  transition:
    opacity 0.35s,
    transform 0.35s;
}
.social-caption p {
  font-family: var(--serif);
  font-size: 2rem;
  line-height: 1.15;
  color: #f1e4ce;
  margin: 15px 0;
}
.social-caption small {
  font-size: 0.8125rem;
  color: #ced3c4;
}
.social-stage[data-step="0"] .social-caption-feed,
.social-stage[data-step="1"] .social-caption-chat,
.social-stage[data-step="2"] .social-caption-party,
.social-stage[data-step="3"] .social-caption-news {
  opacity: 1;
  visibility: visible;
  transform: none;
}
.social-caption-party {
  top: 46%;
  left: 35%;
  width: 57%;
  padding: 18px;
  background: #071a29dd;
  border-top: 1px solid #dfb57e;
}
.social-caption-party p {
  font-family: var(--sans);
  font-size: 0.875rem;
}
.party-vote > span {
  font-size: 0.8125rem;
  color: #ced3bd;
}
.party-vote button {
  display: flex;
  justify-content: space-between;
  width: 100%;
  border: 0;
  border-bottom: 1px solid #bbae8870;
  background: transparent;
  color: #f9e8cb;
  padding: 8px 0;
  font-size: 0.875rem;
  text-align: left;
}
.party-vote button[aria-pressed="true"] {
  color: #ffbe70;
}
.party-reactions {
  display: flex;
  gap: 8px;
  align-items: center;
  margin-top: 10px;
}
.party-reactions button {
  color: #eaceb0;
  border: 1px solid #9fafaa70;
  background: #244456;
  padding: 4px 10px;
  border-radius: 25px;
}
.party-reactions button[aria-pressed="true"] {
  background: #a86b37;
  color: #fff;
}
.party-reactions small {
  font-size: 0.75rem;
  margin-left: 6px;
}
.social-universe.is-sharing .travelling-title {
  animation: share-glow 0.9s ease;
}
@keyframes share-glow {
  50% {
    box-shadow: 0 0 50px #e0bb6a;
    filter: brightness(1.2);
  }
}
/* The entire room changes theme through a spatial wipe. */
.theme-stage {
  background: #eee8d8;
  color: #1e3439;
}
.theme-room {
  position: absolute;
  inset: 0;
  overflow: clip;
  padding: 100px 6% 145px;
  --room-ink: #26373a;
  --room-muted: #55686b;
  --room-accent: #a15430;
  --room-line: #354f513b;
  background: #e9e7dc;
  color: var(--room-ink);
  clip-path: inset(0 0 0 0);
}
.theme-room-atmosphere {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: radial-gradient(ellipse at 70% 60%, #fffbec 0%, transparent 70%);
}
.theme-room-title {
  position: relative;
  z-index: 2;
  text-align: center;
}
.theme-room-title h2 {
  font-size: clamp(4rem, 6.4vw, 7rem);
  margin: 15px 0;
}
.theme-room-title h2 em {
  font-size: 0.65em;
  color: var(--room-accent);
}
.theme-room-title .eyebrow {
  color: var(--room-accent);
}
.theme-room-title p {
  font-size: 1rem;
  color: var(--room-muted);
}
.theme-world-shelf {
  position: absolute;
  left: 50%;
  top: 43%;
  transform: translateX(-50%);
  width: 68%;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 45px;
  max-width: 920px;
  border-bottom: 1px solid var(--room-line);
  padding-bottom: 28px;
}
.theme-world-shelf > div {
  will-change: transform, opacity;
}
.theme-world-shelf .world-art {
  width: 100%;
  max-height: 29svh;
  aspect-ratio: 1;
  box-shadow: 0 20px 30px #10262c22;
  border-radius: 2px;
}
.theme-world-shelf h3 {
  font-size: 1.65rem;
  margin-top: 7px;
  color: var(--room-ink);
}
.theme-world-shelf span {
  font-size: 0.75rem;
  letter-spacing: 0.12em;
  color: var(--room-muted);
  display: block;
  margin-top: 16px;
}
.theme-room-foot {
  position: absolute;
  bottom: 115px;
  left: 6%;
  right: 6%;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 20px;
  color: var(--room-muted);
  font-size: 0.75rem;
  letter-spacing: 0.08em;
}
.theme-room-foot p {
  font-size: 0.875rem;
  color: var(--room-muted);
  letter-spacing: 0;
}
.theme-futuristic {
  z-index: 2;
  background: #041823;
  --room-ink: #defff5;
  --room-muted: #a4ccc7;
  --room-accent: #5de2cb;
  --room-line: #50ceb960;
  clip-path: inset(0 0 0 100%);
}
.theme-futuristic .theme-room-atmosphere {
  background-image:
    linear-gradient(#2ba99820 1px, transparent 1px),
    linear-gradient(90deg, #2ba99820 1px, transparent 1px),
    radial-gradient(ellipse at 60% 55%, #103f49, transparent 70%);
  background-size:
    80px 80px,
    80px 80px,
    100% 100%;
  transform: perspective(700px) rotateX(24deg) scale(1.2);
  transform-origin: center bottom;
}
.theme-futuristic h2,
.theme-futuristic h3 {
  font-family: var(--sans);
  font-weight: 500;
  letter-spacing: -0.05em;
}
.theme-futuristic .world-art {
  border: 1px solid #57e1c280;
  box-shadow: 0 0 22px #41cfb920;
  border-radius: 0;
}
.theme-retro {
  z-index: 3;
  background: #ba5c37;
  --room-ink: #fbe7b8;
  --room-muted: #f4d7a4;
  --room-accent: #ffd476;
  --room-line: #f5d6a777;
  clip-path: inset(0 0 0 100%);
  font-family:
    Courier New,
    monospace;
}
.theme-retro .theme-room-atmosphere {
  background: repeating-linear-gradient(
    0deg,
    transparent 0px,
    transparent 3px,
    #5d2e1712 4px
  );
  opacity: 0.8;
}
.theme-retro h2,
.theme-retro h3 {
  font-family:
    Courier New,
    monospace;
  font-weight: 700;
  letter-spacing: -0.06em;
}
.theme-retro h2 {
  font-size: clamp(3.5rem, 5.8vw, 6rem);
}
.theme-retro .theme-world-shelf .world-art {
  border: 7px solid #ffe4b0;
  box-shadow: 9px 9px 0 #753922;
  border-radius: 0;
  filter: sepia(0.18);
}
.theme-stage .scene-chapter-label,
.theme-stage .chapter-track {
  z-index: 15;
}
.theme-stage[data-theme="simple"] .scene-chapter-label {
  color: #40545a;
}
.theme-stage[data-theme="simple"] .chapter-track button {
  color: #566364;
  border-color: #6d827b70;
}
.theme-stage[data-theme="simple"] .chapter-track button[aria-current="true"] {
  color: #994721;
  border-color: #994721;
}
.theme-stage[data-theme="retro"] .chapter-track button {
  color: #eed3af;
}
.theme-stage[data-theme="retro"] .chapter-track button[aria-current="true"] {
  color: #fff4cf;
  border-color: #fff4cf;
}
.theme-seam {
  position: absolute;
  inset: 0 auto 0 100%;
  width: 2px;
  background: #d1fff2;
  box-shadow: 0 0 25px #83f3d8;
  z-index: 10;
  opacity: 0;
  pointer-events: none;
}
.theme-demo-note {
  position: absolute;
  bottom: 8px;
  left: 5%;
  font-size: 0.75rem;
  color: inherit;
  z-index: 20;
  opacity: 0.7;
}
/* A real page-opening movement, then the thought appears on paper. */
.memory-stage {
  background: #090e15;
}
.memory-scene-art {
  opacity: 0.8;
}
.memory-stage .scene-shade {
  background:
    linear-gradient(90deg, #030b12d9, transparent 80%),
    linear-gradient(0deg, #030b12 0%, transparent 35%);
}
.memory-copy {
  top: 25%;
  width: 34%;
}
.memory-copy h2 {
  font-size: clamp(3.3rem, 5vw, 5.8rem);
}
.memory-space {
  position: absolute;
  inset: 0;
  perspective: 1600px;
  pointer-events: none;
}
.memory-book {
  position: absolute;
  left: 67%;
  top: 22%;
  width: min(26vw, 345px);
  height: min(57svh, 505px);
  transform-style: preserve-3d;
  transform: rotateX(7deg) rotateY(-13deg);
  pointer-events: auto;
  will-change: transform;
}
.memory-page,
.memory-cover,
.memory-sharing {
  position: absolute;
  inset: 0;
  padding: 28px;
  background: #f1e8d4;
  color: #263b36;
  box-shadow:
    inset 7px 0 15px #4a382728,
    4px 6px 0 #cbbd9e,
    5px 7px 0 1px #79694b;
  transform-style: preserve-3d;
  backface-visibility: hidden;
  border-radius: 2px 8px 8px 2px;
  overflow: hidden;
}
.memory-cover {
  z-index: 10;
  transform-origin: left center;
  backface-visibility: hidden;
  background: linear-gradient(90deg, #103439, #1d5153 12%, #103337);
  border: 1px solid #ac925c;
  padding: 45px 30px;
  text-align: center;
  color: #e8c88e;
  display: flex;
  align-items: center;
  flex-direction: column;
  justify-content: center;
  box-shadow:
    inset 0 0 0 12px #123b3e,
    inset 0 0 0 13px #bca16c90,
    8px 9px 0 #c2b28e,
    9px 10px 0 1px #5a644d;
}
.memory-cover img {
  height: 85px;
  width: auto;
  margin-bottom: 25px;
}
.memory-cover > span {
  font-size: 0.75rem;
  letter-spacing: 0.25em;
}
.memory-cover h3 {
  font-size: 2.8rem;
  line-height: 1.05;
  margin: 18px 0 28px;
  color: #f3d9a5;
}
.memory-cover small {
  font-size: 0.75rem;
  letter-spacing: 0.1em;
  line-height: 1.5;
}
.left-page {
  transform: translateX(-100%);
  border-radius: 8px 2px 2px 8px;
  opacity: 0;
  box-shadow:
    inset -7px 0 15px #4a38271f,
    -3px 6px 0 #cbbd9e;
}
.right-page {
  z-index: 3;
  transform-origin: left center;
}
.paper-meta {
  font-size: 0.75rem;
  letter-spacing: 0.12em;
  color: #806441;
  display: block;
  border-bottom: 1px solid #b6a784;
  padding-bottom: 14px;
}
.memory-poster {
  margin-top: 24px;
  width: 100%;
  max-height: 265px;
}
.left-page h3 {
  font-size: 2rem;
  line-height: 1.05;
  margin-top: 20px;
}
.left-page > p {
  font-size: 0.8125rem;
  color: #768375;
  margin-top: 10px;
}
.paper-foot {
  position: absolute;
  bottom: 24px;
  left: 28px;
  right: 28px;
  font-size: 0.75rem;
  color: #8f8c70;
  line-height: 1.5;
}
.memory-writing {
  clip-path: inset(0 0 100% 0);
}
.memory-quote {
  font-family: var(--serif);
  font-size: 2rem;
  line-height: 1.15;
  color: #38574b;
  margin: 30px 0 22px;
}
.memory-rating {
  display: flex;
  gap: 4px;
  margin-bottom: 23px;
}
.memory-rating button {
  background: none;
  border: 0;
  color: #a76839;
  padding: 1px;
  font-size: 1.5rem;
  line-height: 1;
}
.memory-writing label {
  font-size: 0.8125rem;
  color: #776c4e;
  display: block;
  margin-bottom: 8px;
}
.memory-writing textarea {
  width: 100%;
  background: #fffbef60;
  border: 0;
  border-bottom: 1px solid #b3a886;
  resize: none;
  color: #3e5347;
  padding: 8px;
  font-size: 1rem;
  line-height: 1.5;
}
.memory-writing > small {
  font-size: 0.75rem;
  color: #858772;
  display: block;
  margin-top: 6px;
}
.memory-sharing {
  z-index: 1;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 18px;
}
.memory-sharing h3 {
  font-size: 2.5rem;
  line-height: 1.05;
}
.memory-sharing p {
  font-size: 0.875rem;
  color: #617762;
}
.memory-sharing small {
  font-size: 0.75rem;
  color: #8b805f;
}
.paper-button {
  border: 1px solid #7b805a;
  background: #d9dfc9;
  color: #334b38;
  font-size: 0.875rem;
  padding: 12px;
  text-align: left;
}
.shared-memory-title {
  position: absolute;
  left: 72%;
  top: 35%;
  width: 130px;
  opacity: 0;
  pointer-events: none;
  background: #f0e5d0;
  padding: 7px;
  box-shadow: 0 15px 35px #0006;
}
.shared-memory-title span {
  font-family: var(--serif);
  font-size: 1.2rem;
  color: #29432f;
  display: block;
  margin: 8px 0;
}
.memory-space.is-sharing .shared-memory-title {
  animation: memory-share 1.5s ease both;
}
@keyframes memory-share {
  0% {
    opacity: 0;
    transform: translate(0, 0) rotate(-5deg);
  }
  25% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    transform: translate(240px, -250px) rotate(14deg);
  }
}
/* Touring is a lateral field trip, with Bao moving along its route. */
.travel-stage {
  background: #173528;
}
.travel-landscape {
  position: absolute;
  inset: 0;
  overflow: clip;
}
.travel-landscape img {
  position: absolute;
  width: auto;
  max-width: none;
  height: 100%;
  min-width: 100%;
  object-fit: cover;
  will-change: transform;
}
.travel-shade {
  position: absolute;
  inset: 0;
  background:
    linear-gradient(0deg, #06180fee 0%, #07161220 55%, #0718209c),
    linear-gradient(90deg, #06180f95, transparent 65%);
  pointer-events: none;
}
.travel-intro {
  position: absolute;
  z-index: 8;
  top: 22%;
  left: 5%;
  width: 60%;
  max-width: 690px;
}
.travel-intro h2 {
  font-size: clamp(3.6rem, 6vw, 6.5rem);
  margin: 20px 0 28px;
  line-height: 1.02;
  text-shadow: 0 4px 30px #122418;
}
.travel-intro h2 em {
  color: #ffd697;
}
.travel-intro > p:not(.eyebrow) {
  color: #ecdfc4;
  font-size: 1rem;
  line-height: 1.8;
  margin-bottom: 24px;
}
.travel-stop-copy {
  position: absolute;
  top: 20%;
  left: 5%;
  z-index: 8;
  opacity: 0;
  pointer-events: none;
}
.travel-stop-copy h2 {
  font-size: clamp(4rem, 6.5vw, 7.2rem);
  margin: 18px 0 22px;
  text-shadow: 0 4px 25px #0008;
}
.travel-stop-copy > p {
  color: #fbe8bf;
  font-family: var(--serif);
  font-size: 1.8rem;
  text-shadow: 0 3px 8px #0009;
}
.travel-route {
  position: absolute;
  left: 4%;
  right: 4%;
  height: 24%;
  bottom: 19%;
  opacity: 0.6;
  z-index: 4;
}
.travel-route svg {
  width: 100%;
  height: 100%;
  overflow: visible;
  fill: none;
  stroke-width: 2;
}
.trail-base {
  stroke: #fce3b975;
  stroke-dasharray: 4 8;
}
.trail-progress {
  stroke: #ffdea3;
  stroke-width: 3;
  stroke-dasharray: 1;
  stroke-dashoffset: 1;
  filter: drop-shadow(0 0 4px #d9ae55);
}
.route-dot {
  position: absolute;
  top: 50%;
  transform: translate(-50%, -50%);
  width: 32px;
  height: 32px;
  display: grid;
  place-items: center;
  border: 1px solid #eacd8d;
  background: #183c28db;
  color: #eed8a3;
  border-radius: 50%;
  font-size: 0.75rem;
}
.bao-traveller {
  position: absolute;
  bottom: 20%;
  left: 7%;
  display: flex;
  align-items: center;
  z-index: 10;
  will-change: left, transform;
}
.bao-traveller #bao-animation {
  width: 210px;
  height: 210px;
  filter: drop-shadow(0 8px 10px #0005);
  flex-shrink: 0;
}
.bao-speech {
  max-width: 215px;
  margin-left: -12px;
  background: #fbefcde8;
  padding: 15px 19px;
  border-radius: 18px 18px 18px 2px;
  box-shadow: 0 9px 25px #0003;
}
.bao-speech > span {
  font-size: 0.75rem;
  letter-spacing: 0.16em;
  color: #7f714c;
}
.bao-speech p {
  font-family: var(--serif);
  font-size: 1.55rem;
  line-height: 1.15;
  color: #325336;
  margin-top: 5px;
}
.travel-passport {
  position: absolute;
  width: min(46%, 600px);
  right: 7%;
  top: 18%;
  z-index: 15;
  background: #f4e6c8;
  color: #3b4e3b;
  padding: 35px;
  border: 1px solid #bba878;
  box-shadow:
    8px 9px 0 #d3c3a0,
    9px 10px 0 1px #7f8965,
    0 30px 60px #0005;
  border-radius: 3px;
  transform: translateY(100svh) rotate(8deg);
  will-change: transform;
}
.passport-heading {
  display: flex;
  gap: 20px;
  align-items: center;
  justify-content: space-between;
  border-bottom: 1px solid #ac986b;
  padding-bottom: 24px;
}
.passport-heading .eyebrow {
  color: #907039;
  font-size: 0.75rem;
}
.passport-heading h3 {
  font-size: 2.75rem;
  margin-top: 14px;
  line-height: 1.05;
}
.passport-heading > span {
  font-size: 0.875rem;
  color: #8c774b;
  white-space: nowrap;
}
.paw-stamp-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 15px;
  justify-content: center;
  padding: 26px 0;
}
.paw-stamp {
  width: 30%;
  min-height: 120px;
  text-align: center;
  opacity: 0.15;
  transform: scale(0.85) rotate(-6deg);
  transition:
    opacity 0.35s,
    transform 0.45s;
  position: relative;
  border-bottom: 1px dashed #aaa078;
  padding-bottom: 9px;
}
.paw-stamp.collected {
  opacity: 1;
  transform: scale(1) rotate(-5deg);
}
.paw-stamp:nth-child(even).collected {
  transform: rotate(6deg);
}
.paw-stamp img {
  width: 55px;
  height: 55px;
  margin: 0 auto 8px;
  object-fit: contain;
  opacity: 0.85;
}
.paw-stamp strong {
  display: block;
  font-family: var(--serif);
  font-weight: 400;
  font-size: 1.25rem;
  line-height: 1.1;
  color: #5e643e;
}
.paw-stamp small {
  font-size: 0.75rem;
  letter-spacing: 0.1em;
  color: #8c7850;
}
.travel-passport > p {
  font-size: 0.8125rem;
  color: #7c764f;
  border-top: 1px solid #beaa7e;
  padding-top: 17px;
}
.travel-passport > button {
  background: none;
  border: 0;
  border-bottom: 1px solid #8d815a;
  color: #5c673d;
  font-size: 0.8125rem;
  padding: 7px 0;
  margin-top: 8px;
}
.travel-track {
  bottom: 36px;
}
.travel-track button {
  font-size: 0.75rem;
}
.travel-track button span {
  font-size: 0.8125rem;
}
.travel-note {
  position: absolute;
  bottom: 10px;
  left: 5%;
  font-size: 0.75rem;
  color: #cfdbbd;
  z-index: 25;
}
/* Compact scenes retain scroll storytelling instead of becoming static cards. */
@media (min-width: 1600px) {
  .memory-book {
    width: 350px;
  }
  .journey-intro h1 {
    font-size: 7.8rem;
  }
  .scene-copy h2 {
    font-size: 6.4rem;
  }
  .theme-world-shelf {
    top: 40%;
  }
}
@media (max-width: 1100px) {
  .scene-copy {
    width: 36%;
    left: 4%;
  }
  .scene-copy h2 {
    font-size: 4rem;
  }
  .scene-copy > p:not(.eyebrow) {
    font-size: 0.9375rem;
  }
  .journey-world-nav {
    gap: 5px;
  }
  .journey-world-nav button {
    font-size: 0.75rem;
    padding: 11px 4px;
    gap: 5px;
  }
  .journey-intro h1 {
    font-size: 5.8rem;
  }
  .memory-book {
    left: 68%;
    width: 27vw;
    height: 52svh;
    top: 25%;
  }
  .memory-page,
  .memory-sharing {
    padding: 22px;
  }
  .memory-quote {
    font-size: 1.7rem;
    margin: 22px 0 18px;
  }
  .memory-cover h3 {
    font-size: 2.4rem;
  }
  .memory-sharing h3 {
    font-size: 2.05rem;
  }
  .paper-foot {
    left: 22px;
    right: 22px;
    bottom: 17px;
  }
  .theme-world-shelf {
    gap: 28px;
    width: 73%;
  }
  .theme-world-shelf h3 {
    font-size: 1.45rem;
  }
  .bao-traveller #bao-animation {
    width: 180px;
    height: 180px;
  }
  .bao-speech {
    max-width: 175px;
  }
  .bao-speech p {
    font-size: 1.3rem;
  }
  .travel-passport {
    width: 48%;
    right: 5%;
    padding: 26px;
  }
  .passport-heading h3 {
    font-size: 2.2rem;
  }
  .paw-stamp {
    min-height: 110px;
  }
}
@media (max-width: 800px) {
  .scene-stage {
    height: 100svh;
    min-height: 620px;
  }
  .scene-chapter-label {
    top: 20px;
    left: 6%;
    right: 6%;
    font-size: 0.75rem;
    letter-spacing: 0.08em;
  }
  .scene-chapter-label a {
    font-size: 0.75rem;
  }
  .scene-copy {
    left: 6%;
    top: 12%;
    width: 88%;
    max-width: 600px;
  }
  .scene-copy h2 {
    font-size: 3.3rem;
    margin: 14px 0 15px;
    line-height: 1.03;
  }
  .scene-copy h2 br {
    display: none;
  }
  .scene-copy > p:not(.eyebrow) {
    max-width: 420px;
    font-size: 0.9375rem;
    line-height: 1.65;
  }
  .scene-copy .eyebrow {
    font-size: 0.75rem;
    letter-spacing: 0.1em;
  }
  .chapter-track {
    left: 6%;
    right: 6%;
    bottom: 43px;
    gap: 10px;
  }
  .chapter-track button {
    display: block;
    font-size: 0.75rem;
    padding: 10px 0;
  }
  .chapter-track button span {
    display: block;
    font-size: 0.75rem;
    line-height: 1.35;
    margin-top: 5px;
  }
  .global-motion-control {
    bottom: 10px;
    right: 15px;
  }
  .global-motion-control button {
    font-size: 0.75rem;
    padding: 5px 12px;
  }
  .journey-origin {
    object-position: 62% center;
  }
  .journey-vignette {
    background:
      linear-gradient(90deg, #030c12e8 0%, #030c1280 60%, #030c1220),
      linear-gradient(0deg, #030c12 0%, transparent 45%);
  }
  .journey-intro {
    top: 22%;
  }
  .journey-intro h1 {
    font-size: 4.4rem;
    margin: 20px 0;
    max-width: 500px;
  }
  .journey-intro .eyebrow {
    font-size: 0.75rem;
  }
  .journey-intro > p:not(.eyebrow) {
    font-size: 0.9375rem;
  }
  .journey-intro-link {
    margin-top: 17px;
  }
  .journey-top-controls {
    top: 99px;
    right: 6%;
  }
  .portal-stage.travelling .journey-top-controls {
    top: 22px;
  }
  .journey-control {
    font-size: 0.75rem;
    padding: 6px 10px;
  }
  .journey-hud {
    bottom: 43px;
  }
  .journey-world-nav {
    grid-template-columns: repeat(4, 1fr);
    gap: 4px 8px;
  }
  .journey-world-nav button {
    font-size: 0.75rem;
    padding: 8px 4px;
    min-height: 35px;
  }
  .journey-instruction {
    margin-bottom: 13px;
    gap: 12px;
  }
  .journey-instruction > span:first-child {
    height: 37px;
    width: 29px;
  }
  .journey-instruction p {
    font-size: 0.75rem;
  }
  .journey-instruction small {
    font-size: 0.75rem;
  }

  .experience-intro {
    padding-block: 65px;
  }
  .experience-intro h2 {
    font-size: 3rem;
  }
  .social-universe {
    left: 0;
    top: 34%;
    width: 100%;
    height: 55%;
    transform: none !important;
  }
  .social-caption {
    left: 39%;
    top: 52%;
    width: 54%;
  }
  .social-caption p {
    font-size: 1.65rem;
  }
  .social-caption .scene-pill {
    font-size: 0.75rem;
  }
  .friend-node > span {
    width: 45px;
    height: 45px;
    font-size: 1.4rem;
  }
  .friend-node small {
    font-size: 0.75rem;
    margin-top: 8px;
  }
  .travelling-title {
    width: 105px;
    padding: 5px 5px 10px;
  }
  .travelling-title strong {
    font-size: 1rem;
    margin-inline: 4px;
  }
  .travelling-title > span {
    font-size: 0.75rem;
    margin: 7px 4px 4px;
  }
  .title-trail {
    width: 58px;
    padding: 3px;
  }
  .social-caption-party {
    left: 37%;
    width: 59%;
    top: 42%;
    padding: 11px;
  }
  .social-caption-party p {
    font-size: 0.75rem;
    margin-block: 10px;
  }
  .party-vote > span {
    font-size: 0.75rem;
  }
  .party-vote button {
    font-size: 0.75rem;
    padding-block: 7px;
  }
  .party-reactions small {
    font-size: 0.75rem;
  }
  .party-reactions button {
    padding: 2px 8px;
  }
  .social-caption .scene-action {
    font-size: 0.75rem;
    padding: 7px 12px;
  }
  .social-stage[data-step="2"] .node-jas {
    top: 20%;
  }
  .social-stage[data-step="2"] .node-mira {
    top: 78%;
    left: 14%;
  }
  .theme-room {
    padding-top: 100px;
  }
  .theme-room-title h2 {
    font-size: 3.7rem;
    line-height: 1.02;
    margin: 18px 0;
  }
  .theme-room-title h2 em {
    display: block;
    font-size: 0.65em;
    margin-top: 10px;
  }
  .theme-room-title .eyebrow {
    font-size: 0.75rem;
  }
  .theme-room-title p {
    font-size: 0.875rem;
    max-width: 310px;
    margin: auto;
  }
  .theme-world-shelf {
    left: 6%;
    top: 44%;
    width: 88%;
    transform: none;
    gap: 13px;
    padding-bottom: 24px;
  }
  .theme-world-shelf .world-art {
    border-width: 4px;
    max-height: none;
  }
  .theme-world-shelf h3 {
    font-size: 1.1rem;
    line-height: 1.1;
    margin-top: 8px;
  }
  .theme-world-shelf span {
    font-size: 0.75rem;
    letter-spacing: 0.02em;
    margin-top: 14px;
  }
  .theme-room-foot {
    bottom: 155px;
    left: 6%;
    right: 6%;
    font-size: 0.75rem;
  }
  .theme-room-foot p {
    display: none;
  }
  .theme-retro h2 {
    font-size: 3.15rem;
  }
  .theme-retro .theme-world-shelf .world-art {
    box-shadow: 5px 5px 0 #753922;
  }
  .theme-demo-note {
    bottom: 16px;
    left: 6%;
    font-size: 0.75rem;
    width: 58%;
    line-height: 1.5;
  }
  .theme-stage .chapter-track {
    bottom: 58px;
  }
  .memory-copy {
    top: 11%;
    width: 88%;
  }
  .memory-copy h2 {
    font-size: 3.1rem;
    margin-bottom: 13px;
  }
  .memory-copy > p:not(.eyebrow) {
    font-size: 0.875rem;
    max-width: 380px;
  }
  .memory-book {
    left: 50%;
    top: 42%;
    width: 40vw;
    max-width: 260px;
    height: 39svh;
    min-height: 300px;
    transform: none;
  }
  .memory-cover {
    padding: 25px 15px;
  }
  .memory-cover img {
    height: 55px;
    margin-bottom: 15px;
  }
  .memory-cover h3 {
    font-size: 1.8rem;
    margin: 16px 0 19px;
  }
  .memory-cover > span,
  .memory-cover small {
    font-size: 0.75rem;
  }
  .memory-page,
  .memory-sharing {
    padding: 15px 12px;
  }
  .paper-meta {
    font-size: 0.75rem;
    letter-spacing: 0.04em;
    padding-bottom: 9px;
  }
  .memory-poster {
    margin-top: 15px;
    max-height: 145px;
  }
  .left-page h3 {
    font-size: 1.35rem;
    margin-top: 15px;
  }
  .left-page > p {
    font-size: 0.75rem;
  }
  .paper-foot {
    font-size: 0.75rem;
    left: 12px;
    right: 12px;
    bottom: 15px;
  }
  .memory-quote {
    font-size: 1.38rem;
    margin: 17px 0 13px;
  }
  .memory-rating {
    gap: 1px;
    margin-bottom: 15px;
  }
  .memory-rating button {
    font-size: 1.2rem;
  }
  .memory-writing label {
    font-size: 0.75rem;
    line-height: 1.4;
    margin-bottom: 5px;
  }
  .memory-writing textarea {
    font-size: 0.8125rem;
    padding: 5px;
    line-height: 1.35;
    height: 65px;
  }
  .memory-writing > small {
    font-size: 0.75rem;
    line-height: 1.3;
  }
  .memory-sharing h3 {
    font-size: 1.65rem;
  }
  .memory-sharing p {
    font-size: 0.75rem;
    line-height: 1.5;
  }
  .memory-sharing small {
    font-size: 0.75rem;
    line-height: 1.5;
  }
  .paper-button {
    font-size: 0.75rem;
    padding: 8px;
  }
  .shared-memory-title {
    width: 85px;
    top: 48%;
    left: 55%;
  }
  .travel-intro {
    left: 6%;
    top: 17%;
    width: 88%;
  }
  .travel-intro h2 {
    font-size: 3.55rem;
    margin: 17px 0 22px;
  }
  .travel-intro > p:not(.eyebrow) {
    font-size: 0.9375rem;
    max-width: 380px;
  }
  .travel-intro .eyebrow {
    font-size: 0.75rem;
  }
  .travel-stop-copy {
    top: 18%;
    left: 6%;
    right: 6%;
  }
  .travel-stop-copy h2 {
    font-size: 3.5rem;
  }
  .travel-stop-copy > p {
    font-size: 1.5rem;
    max-width: 310px;
  }
  .travel-route {
    bottom: 25%;
    height: 23%;
    left: 6%;
    right: 6%;
  }
  .route-dot {
    width: 25px;
    height: 25px;
    font-size: 0.75rem;
  }
  .bao-traveller {
    bottom: 28%;
    left: 4%;
  }
  .bao-traveller #bao-animation {
    width: 155px;
    height: 155px;
  }
  .bao-speech {
    max-width: 150px;
    padding: 11px 14px;
    margin-left: -15px;
  }
  .bao-speech p {
    font-size: 1.2rem;
  }
  .bao-speech > span {
    font-size: 0.75rem;
  }
  .travel-passport {
    top: 33%;
    right: 7%;
    width: 86%;
    padding: 22px;
  }
  .passport-heading {
    padding-bottom: 15px;
  }
  .passport-heading .eyebrow {
    font-size: 0.75rem;
  }
  .passport-heading h3 {
    font-size: 2rem;
    margin-top: 10px;
  }
  .passport-heading > span {
    font-size: 0.75rem;
  }
  .paw-stamp-grid {
    gap: 12px;
    padding: 17px 0;
  }
  .paw-stamp {
    width: 28%;
    min-height: 90px;
    padding-bottom: 6px;
  }
  .paw-stamp img {
    width: 36px;
    height: 36px;
    margin-bottom: 6px;
  }
  .paw-stamp strong {
    font-size: 1rem;
  }
  .paw-stamp small {
    font-size: 0.75rem;
  }
  .travel-passport > p {
    font-size: 0.75rem;
    padding-top: 11px;
    line-height: 1.5;
  }
  .travel-passport > button {
    font-size: 0.75rem;
    padding: 3px 0;
    margin-top: 7px;
  }
  .travel-track {
    gap: 8px;
    bottom: 48px;
  }
  .travel-track button span {
    font-size: 0.75rem;
    word-break: normal;
  }
  .travel-note {
    bottom: 16px;
    left: 6%;
    font-size: 0.75rem;
    max-width: 58%;
    line-height: 1.5;
  }
}
@media (max-height: 760px) and (min-width: 801px) {
  .scene-stage {
    min-height: 600px;
  }
  .scene-copy {
    top: 22%;
  }
  .scene-copy h2 {
    font-size: 3.6rem;
  }
  .journey-intro {
    top: 20%;
  }
  .journey-intro h1 {
    font-size: 4.6rem;
    margin-block: 15px;
  }
  .journey-intro > p:not(.eyebrow) {
    font-size: 0.875rem;
  }
  .journey-intro-link {
    margin-top: 14px;
  }
  .journey-top-controls {
    top: 107px;
  }
  .journey-hud {
    bottom: 27px;
  }
  .journey-instruction {
    margin-bottom: 12px;
  }

  .theme-room {
    padding-top: 80px;
  }
  .theme-room-title h2 {
    font-size: 4rem;
  }
  .theme-world-shelf {
    top: 40%;
    width: 60%;
    max-width: 770px;
  }
  .theme-world-shelf .world-art {
    max-height: 25svh;
  }
  .theme-world-shelf span {
    margin-top: 10px;
  }
  .theme-world-shelf h3 {
    font-size: 1.3rem;
  }
  .theme-room-foot {
    bottom: 102px;
  }
  .memory-book {
    top: 18%;
    height: 63svh;
    min-height: 360px;
    width: 285px;
  }
  .memory-quote {
    font-size: 1.6rem;
    margin: 18px 0 14px;
  }
  .memory-cover h3 {
    font-size: 2.2rem;
  }
  .memory-cover img {
    height: 62px;
  }
  .memory-poster {
    max-height: 205px;
  }
  .memory-rating {
    margin-bottom: 15px;
  }
  .memory-writing textarea {
    height: 60px;
  }
  .left-page h3 {
    font-size: 1.6rem;
    margin-top: 15px;
  }
  .travel-intro {
    top: 19%;
  }
  .travel-intro h2 {
    font-size: 4.5rem;
  }
  .travel-passport {
    top: 12%;
    width: 44%;
    max-width: 530px;
    padding: 25px;
  }
  .passport-heading h3 {
    font-size: 2rem;
  }
  .paw-stamp-grid {
    padding: 18px 0;
    gap: 10px;
  }
  .paw-stamp {
    min-height: 85px;
  }
  .paw-stamp img {
    width: 36px;
    height: 36px;
  }
  .paw-stamp strong {
    font-size: 1.05rem;
  }
  .paw-stamp small {
    font-size: 0.75rem;
  }
  .bao-traveller {
    bottom: 24%;
  }
}
@media (max-width: 800px) and (max-height: 740px) {
  .scene-stage {
    min-height: 600px;
  }
  .journey-intro {
    top: 21%;
  }
  .journey-intro h1 {
    font-size: 3.45rem;
    margin: 15px 0;
  }
  .journey-intro > p:not(.eyebrow) {
    font-size: 0.8125rem;
  }
  .journey-intro-link {
    margin-top: 12px;
    font-size: 0.8125rem;
  }
  .scene-copy {
    top: 12%;
  }
  .scene-copy h2 {
    font-size: 2.6rem;
    margin: 11px 0;
  }
  .scene-copy > p:not(.eyebrow) {
    font-size: 0.8125rem;
    line-height: 1.5;
  }
  .social-universe {
    top: 35%;
    height: 53%;
  }
  .social-caption p {
    font-size: 1.3rem;
  }
  .social-caption-party {
    top: 34%;
    padding: 9px;
  }
  .party-reactions small {
    display: none;
  }
  .theme-room {
    padding-top: 78px;
  }
  .theme-room-title h2 {
    font-size: 3rem;
  }
  .theme-retro h2 {
    font-size: 2.6rem;
  }
  .theme-room-title p {
    font-size: 0.8125rem;
  }
  .theme-world-shelf {
    top: 43%;
  }
  .theme-room-foot {
    bottom: 133px;
  }
  .memory-book {
    top: 41%;
    height: 40svh;
    min-height: 255px;
    width: 39vw;
  }
  .memory-page,
  .memory-sharing {
    padding: 12px 10px;
  }
  .memory-poster {
    max-height: 104px;
    margin-top: 11px;
  }
  .memory-quote {
    font-size: 1.1rem;
    margin: 12px 0;
  }
  .memory-rating {
    margin-bottom: 10px;
  }
  .memory-writing textarea {
    height: 45px;
  }
  .memory-cover img {
    height: 38px;
  }
  .memory-cover h3 {
    font-size: 1.5rem;
  }
  .paper-foot {
    font-size: 0.75rem;
    bottom: 10px;
  }
  .memory-sharing {
    gap: 12px;
  }
  .memory-sharing h3 {
    font-size: 1.3rem;
  }
  .travel-intro {
    top: 16%;
  }
  .travel-intro h2 {
    font-size: 2.9rem;
  }
  .travel-intro > p:not(.eyebrow) {
    font-size: 0.8125rem;
  }
  .travel-passport {
    top: 29%;
    padding: 18px;
  }
  .passport-heading h3 {
    font-size: 1.65rem;
  }
  .paw-stamp {
    min-height: 73px;
  }
  .paw-stamp img {
    width: 29px;
    height: 29px;
  }
  .paw-stamp strong {
    font-size: 0.875rem;
  }
  .paw-stamp-grid {
    padding: 12px 0;
    gap: 8px;
  }
  .bao-traveller #bao-animation {
    width: 125px;
    height: 125px;
  }
  .bao-speech {
    max-width: 125px;
  }
  .bao-speech p {
    font-size: 1rem;
  }
  .travel-stop-copy h2 {
    font-size: 2.9rem;
  }
}
html[data-motion="off"] {
  scroll-behavior: auto;
}
html[data-motion="off"] .scroll-chapter {
  height: auto;
}
html[data-motion="off"] .scene-stage {
  position: relative;
}

html[data-motion="off"] .theme-seam {
  display: none;
}
html[data-motion="off"] .memory-space.is-sharing .shared-memory-title,
html[data-motion="off"] .social-universe.is-sharing .travelling-title {
  animation: none;
}
html[data-motion="off"] .scene-art {
  transform: none !important;
}
html:not(.immersion-ready) .memory-cover {
  display: none;
}
html:not(.immersion-ready) .left-page {
  opacity: 1;
}
html:not(.immersion-ready) .memory-writing {
  clip-path: none;
}
@media (prefers-reduced-motion: reduce) {
  html:not([data-motion="on"]) * {
    scroll-behavior: auto !important;
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
  }
}

.bao-traveller {
  display: block;
}
.bao-speech {
  position: absolute;
  top: -10px;
  left: 90%;
  width: 215px;
  margin: 0;
}
.bao-traveller.speech-left .bao-speech {
  left: auto;
  right: 90%;
  border-radius: 18px 18px 2px 18px;
}
@media (max-width: 1100px) {
  .bao-speech {
    width: 175px;
  }
}
@media (max-width: 800px) {
  .bao-speech {
    width: 150px;
    top: 0;
  }
}
@media (max-width: 800px) and (max-height: 740px) {
  .bao-speech {
    width: 135px;
  }
}

.travel-book-shortcut {
  position: absolute;
  z-index: 25;
  right: 5%;
  bottom: 119px;
  background: #122d20ce;
  border: 1px solid #e4d0a27a;
  color: #f8e5bd;
  font-size: 0.8125rem;
  padding: 8px 13px;
  border-radius: 2px;
}
@media (max-width: 800px) {
  .travel-book-shortcut {
    bottom: 145px;
    right: 6%;
    font-size: 0.75rem;
    padding: 7px 10px;
  }
}
@media (max-width: 800px) {
  .scene-copy h2 em {
    display: block;
  }
  .memory-book {
    top: 40%;
    height: 43svh;
  }
  .memory-page .paper-foot {
    display: none;
  }
  .memory-quote {
    font-size: 1.25rem;
    margin: 12px 0 10px;
  }
  .memory-rating {
    margin-bottom: 9px;
  }
  .memory-writing textarea {
    height: 52px;
  }
  .memory-writing > small {
    margin-top: 5px;
  }
}
@media (max-width: 800px) and (max-height: 740px) {
  .memory-book {
    top: 42%;
    height: 40svh;
  }
  .memory-quote {
    display: none;
  }
  .memory-rating {
    margin-top: 12px;
  }
}

@media (max-width: 800px) {
  .paw-stamp small {
    display: none;
  }
  .travel-stage.travel-complete .travel-track {
    visibility: hidden;
  }
  .paw-stamp strong {
    line-height: 1.2;
  }
}

@media (max-width: 800px) {
  .social-universe {
    top: 42%;
    height: 46%;
  }
  .social-caption {
    top: 46%;
  }
  .social-caption-party {
    top: 30%;
  }
  .social-caption-party .scene-pill {
    letter-spacing: 0.03em;
    padding-bottom: 6px;
  }
  .social-caption-party p {
    margin-block: 6px;
  }
  .party-vote button {
    padding-block: 5px;
  }
  .party-reactions small {
    display: none;
  }
  .social-stage[data-step="2"] .travelling-title {
    width: 85px;
  }
  .social-stage[data-step="2"] .node-ava {
    visibility: hidden;
  }
  .social-stage[data-step="2"] .title-trail {
    opacity: 0.15;
  }
}
@media (max-width: 800px) and (max-height: 740px) {
  .social-universe {
    top: 40%;
    height: 48%;
  }
  .social-caption-party {
    top: 23%;
  }
  .social-caption-party > p {
    display: none;
  }
  .social-stage[data-step="2"] .travelling-title {
    width: 72px;
  }
}

/* Each category is a flat source image split into 32 textured fragments. */
.category-field {
  position: absolute;
  inset: 0;
  z-index: 3;
  perspective: 1200px;
  pointer-events: none;
}
.category-scene {
  position: absolute;
  inset: 0;
  visibility: hidden;
  transform-style: preserve-3d;
}
.category-artwork {
  --world-size: min(43vw, 59svh, 580px);
  position: absolute;
  left: 69%;
  top: 46%;
  width: var(--world-size);
  height: var(--world-size);
  transform: translate(-50%, -50%);
  transform-style: preserve-3d;
}
.category-whole,
.category-fragments,
.category-edge {
  position: absolute;
  inset: 0;
}
.category-whole {
  box-shadow: 0 30px 80px #0008;
}
.category-fragments {
  transform-style: preserve-3d;
}
.category-fragment {
  position: absolute;
  width: 25%;
  height: 25%;
  background-image: var(--fragment-image);
  background-size: 800% 800%;
  background-repeat: no-repeat;
  will-change: transform, opacity;
  backface-visibility: visible;
}
.category-edge {
  border: 1px solid #ffe7c699;
  pointer-events: none;
}
.category-coordinate {
  position: absolute;
  top: calc(100% + 23px);
  left: 0;
  right: 0;
  text-align: center;
  color: #e8c4a3;
  font-size: 0.75rem;
  letter-spacing: 0.23em;
}
.category-atmosphere {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  opacity: 0;
  background: radial-gradient(
    ellipse at 70% 45%,
    rgba(var(--portal-rgb), 0.12),
    transparent 57%
  );
}
.category-copy {
  position: absolute;
  z-index: 8;
  left: 5%;
  top: 32%;
  width: 49%;
  visibility: hidden;
  pointer-events: none;
}
.category-copy h2 {
  font-size: clamp(5.4rem, 10vw, 11rem);
  line-height: 1.05;
  margin: 17px 0 25px;
  white-space: nowrap;
  perspective: 900px;
}
.category-letter {
  display: inline-block;
  will-change: transform, opacity;
}
.category-copy > p {
  max-width: 330px;
  color: #d7ddd3;
  font-size: 1.125rem;
  line-height: 1.7;
}
.category-copy .eyebrow {
  color: #edc4a0;
}
.memory-leaf {
  position: absolute;
  inset: 0;
  z-index: 10;
  transform-style: preserve-3d;
  transform-origin: left center;
}
.memory-leaf .left-page {
  transform: rotateY(180deg);
  opacity: 1;
  visibility: hidden;
  transform-origin: center center;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
}
.memory-leaf .memory-cover {
  transform: none;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
}
@media (max-width: 800px) {
  .category-artwork {
    --world-size: min(68vw, 34svh, 340px);
    left: 50%;
    top: 53%;
  }
  .category-copy {
    left: 6%;
    top: 13%;
    width: 88%;
  }
  .category-copy h2 {
    font-size: clamp(4rem, 17vw, 5.4rem);
    margin: 10px 0 12px;
  }
  .category-copy > p {
    font-size: 1rem;
    max-width: 290px;
    line-height: 1.55;
  }
  .category-copy .eyebrow {
    font-size: 0.75rem;
  }
  .category-coordinate {
    top: calc(100% + 15px);
    letter-spacing: 0.16em;
  }
}
@media (max-width: 800px) and (max-height: 740px) {
  .category-artwork {
    --world-size: min(57vw, 31svh, 255px);
    top: 54%;
  }
  .category-copy {
    top: 11%;
  }
  .category-copy h2 {
    font-size: 3.8rem;
  }
  .category-copy > p {
    font-size: 0.9375rem;
  }
  .category-coordinate {
    top: calc(100% + 10px);
  }
}
html[data-motion="off"] .category-fragments {
  display: none;
}
html:not(.immersion-ready) .memory-leaf {
  transform: rotateY(-180deg);
}
html:not(.immersion-ready) .memory-leaf .left-page {
  visibility: visible;
}
