@font-face {
  font-family: 'Cormorant Garamond';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/cormorant-garamond-600.ttf) format('truetype');
}
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/cormorant-garamond-700.ttf) format('truetype');
}
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/manrope-400.ttf) format('truetype');
}
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/manrope-600.ttf) format('truetype');
}
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/manrope-700.ttf) format('truetype');
}

:root {
  color-scheme: dark;
  --bg: #0b141a;
  --bg-raised: #101d24;
  --panel: #13222a;
  --panel-edge: #ecdebe1f;
  --text: #ede6d4;
  --muted: #a9b3af;
  --gold: #d4ae69;
  --gold-bright: #efcd88;
  --gold-ink: #1d150a;
  --teal: #86bcba;
  --amber: #f0a64f;
  --serif: 'Cormorant Garamond', Georgia, serif;
  --sans: 'Manrope', system-ui, sans-serif;
  --gutter: clamp(16px, 4vw, 48px);
  --content: 1180px;
  --radius: 14px;
  font-family: var(--sans);
  font-synthesis: none;
  color: var(--text);
  background: var(--bg);
}
*,
*::before,
*::after {
  box-sizing: border-box;
}
html {
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
}
body {
  margin: 0;
  background: var(--bg);
  overflow-x: hidden;
}
h1,
h2,
h3,
p,
figure {
  margin: 0;
}
a {
  color: inherit;
}
img,
svg {
  display: block;
}
button {
  font: inherit;
  color: inherit;
}
a,
button {
  -webkit-tap-highlight-color: transparent;
}
:focus-visible {
  outline: 2px solid var(--gold-bright);
  outline-offset: 4px;
}
.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}
.skip-link {
  position: absolute;
  left: var(--gutter);
  top: 12px;
  z-index: 20;
  padding: 10px 16px;
  border-radius: 8px;
  background: var(--gold);
  color: var(--gold-ink);
  font-weight: 700;
  text-decoration: none;
  transform: translateY(-160%);
}
.skip-link:focus {
  transform: none;
}

/* Top bar */
.topbar {
  position: absolute;
  inset: 0 0 auto;
  z-index: 5;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  padding: 20px var(--gutter);
}
.wordmark {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-family: var(--serif);
  font-size: 1.35rem;
  font-weight: 700;
  letter-spacing: 0.01em;
  text-decoration: none;
}
.wordmark img {
  width: 32px;
  height: 32px;
}
.topbar nav {
  display: flex;
  gap: 2px;
  padding: 4px;
  border: 1px solid var(--panel-edge);
  border-radius: 999px;
  background: #0b141ab8;
  backdrop-filter: blur(10px);
}
.topbar nav a {
  padding: 8px 14px;
  border-radius: 999px;
  color: #d9d4c4;
  font-size: 0.875rem;
  font-weight: 600;
  text-decoration: none;
  transition: background 0.2s;
}
.topbar nav a:hover {
  background: #ffffff14;
}

/* Hero */
.hero {
  position: relative;
  display: flex;
  align-items: center;
  min-height: 100vh;
  min-height: 100svh;
  padding: 112px var(--gutter) 96px;
  overflow: hidden;
  isolation: isolate;
}
.hero-art,
.hero-art img,
.hero-shade,
.hero-motes {
  position: absolute;
  inset: 0;
}
.hero-art {
  z-index: -3;
}
.hero-art img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 40% 50%;
  animation: hero-settle 2.4s cubic-bezier(0.2, 0.7, 0.2, 1) both;
}
.hero-shade {
  z-index: -2;
  background:
    linear-gradient(180deg, transparent 72%, var(--bg) 100%),
    linear-gradient(
      90deg,
      #081016f2 0%,
      #081016c7 28%,
      #08101659 46%,
      #08101600 58%
    );
}
.hero-motes {
  z-index: -1;
  pointer-events: none;
}
.hero-motes span {
  position: absolute;
  left: var(--x);
  top: var(--y);
  width: var(--s, 4px);
  height: var(--s, 4px);
  border-radius: 50%;
  background: #ffd79a;
  box-shadow: 0 0 10px 3px #f0a64f88;
  opacity: 0;
  animation: mote var(--d, 9s) ease-in-out var(--delay, 0s) infinite;
}
.hero-motes span:nth-child(1) {
  --x: 80%;
  --y: 52%;
  --d: 9s;
}
.hero-motes span:nth-child(2) {
  --x: 84%;
  --y: 46%;
  --s: 3px;
  --d: 11s;
  --delay: -3s;
}
.hero-motes span:nth-child(3) {
  --x: 77%;
  --y: 56%;
  --s: 5px;
  --d: 10s;
  --delay: -6s;
}
.hero-motes span:nth-child(4) {
  --x: 86%;
  --y: 40%;
  --d: 13s;
  --delay: -1s;
}
.hero-motes span:nth-child(5) {
  --x: 82%;
  --y: 36%;
  --s: 3px;
  --d: 12s;
  --delay: -8s;
}
.hero-motes span:nth-child(6) {
  --x: 74%;
  --y: 48%;
  --s: 2px;
  --d: 8s;
  --delay: -4s;
}
.hero-motes span:nth-child(7) {
  --x: 88%;
  --y: 50%;
  --s: 3px;
  --d: 10s;
  --delay: -2s;
}
.hero-motes span:nth-child(8) {
  --x: 79%;
  --y: 42%;
  --s: 2px;
  --d: 9s;
  --delay: -7s;
}
.hero-motes span:nth-child(9) {
  --x: 90%;
  --y: 34%;
  --s: 4px;
  --d: 14s;
  --delay: -5s;
}
.hero-motes span:nth-child(10) {
  --x: 76%;
  --y: 38%;
  --s: 3px;
  --d: 11s;
  --delay: -9s;
}
.hero-copy {
  position: relative;
  width: min(100%, var(--content));
  margin: 0 auto;
}
.hero-copy > * {
  max-width: min(34rem, 52vw);
  animation: rise 1s cubic-bezier(0.2, 0.7, 0.2, 1) both;
}
.hero-copy > :nth-child(2) {
  animation-delay: 0.12s;
}
.hero-copy > :nth-child(3) {
  animation-delay: 0.24s;
}
.hero-copy > :nth-child(4) {
  animation-delay: 0.36s;
}
.eyebrow {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 14px;
  color: var(--gold);
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}
.badge {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 6px 12px 6px 10px;
  border: 1px solid #d4ae6966;
  border-radius: 999px;
  background: #0b141acc;
  color: var(--gold-bright);
  letter-spacing: 0.14em;
}
.badge::before {
  content: '';
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--amber);
  box-shadow: 0 0 0 0 #f0a64f99;
  animation: pulse 2.4s ease-out infinite;
}
h1 {
  margin-top: 18px;
  font-family: var(--serif);
  font-size: clamp(3.6rem, 9vw, 7.6rem);
  font-weight: 700;
  line-height: 0.88;
  letter-spacing: -0.012em;
  text-shadow: 0 4px 40px #000a;
}
h1::after {
  content: '';
  display: block;
  width: 168px;
  height: 12px;
  margin-top: 22px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='168' height='12'%3E%3Cpath d='M0 6h72m24 0h72' stroke='%23d4ae69'/%3E%3Cpath d='M84 1l5 5-5 5-5-5z' fill='%23d4ae69'/%3E%3C/svg%3E")
    no-repeat;
}
.lede {
  margin-top: 22px;
  color: #ddd7c7;
  font-size: clamp(1.02rem, 1.4vw, 1.18rem);
  line-height: 1.7;
  text-shadow: 0 2px 18px #000c;
}
.actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 32px;
}
.button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 48px;
  padding: 0 24px;
  border: 1px solid transparent;
  border-radius: 999px;
  font-size: 0.95rem;
  font-weight: 700;
  text-decoration: none;
  transition:
    background 0.2s,
    border-color 0.2s,
    transform 0.2s,
    box-shadow 0.2s;
}
.button:hover {
  transform: translateY(-1px);
}
.button-primary {
  background: var(--gold);
  color: var(--gold-ink);
  box-shadow: 0 10px 30px -10px #d4ae69aa;
}
.button-primary:hover {
  background: var(--gold-bright);
}
.button-ghost {
  border-color: #ede6d466;
  background: #0b141a80;
  backdrop-filter: blur(6px);
}
.button-ghost:hover {
  border-color: #ede6d4;
  background: #ffffff1a;
}
.scroll-cue {
  position: absolute;
  bottom: 28px;
  left: 50%;
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  margin-left: -22px;
  border-radius: 50%;
}
.scroll-cue span {
  width: 12px;
  height: 12px;
  border-right: 2px solid var(--gold);
  border-bottom: 2px solid var(--gold);
  transform: rotate(45deg);
  animation: nudge 2.2s ease-in-out infinite;
}

/* Sections */
.section {
  padding: clamp(72px, 10vw, 128px) var(--gutter);
}
.section-head {
  max-width: 44rem;
  margin: 0 auto;
  text-align: center;
}
.kicker {
  color: var(--gold);
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
}
h2 {
  margin-top: 12px;
  font-family: var(--serif);
  font-size: clamp(2.3rem, 4.6vw, 3.6rem);
  font-weight: 700;
  line-height: 1;
}
.section-head p:not(.kicker) {
  margin-top: 18px;
  color: var(--muted);
  font-size: 1.05rem;
  line-height: 1.75;
}

/* Shelf */
.shelf-section {
  position: relative;
  padding-top: clamp(40px, 6vw, 72px);
  background: radial-gradient(
    60rem 28rem at 50% 62%,
    #f0a64f1c,
    transparent 70%
  );
}
.shelf-scene {
  --k: 1;
  position: relative;
  max-width: 940px;
  margin: 56px auto 0;
  padding-top: 28px;
  border-radius: 18px 18px 6px 6px;
  background:
    radial-gradient(28rem 12rem at 50% 0%, #f0a64f24, transparent 70%),
    repeating-linear-gradient(90deg, #ffffff05 0 2px, transparent 2px 140px),
    linear-gradient(180deg, #1c140f, #130e0b);
  box-shadow:
    inset 0 12px 40px #000a,
    inset 0 -30px 40px -20px #000c,
    0 40px 80px -40px #000;
}
.shelf-scroll {
  overflow-x: auto;
  overscroll-behavior-x: contain;
  scrollbar-width: thin;
  scrollbar-color: #d4ae6955 transparent;
}
.shelf {
  display: flex;
  align-items: flex-end;
  justify-content: center;
  gap: 5px;
  min-width: max-content;
  min-height: calc(300px * var(--k));
  margin: 0;
  padding: 24px clamp(16px, 4vw, 40px) 0;
  list-style: none;
}
.book-slot {
  display: flex;
  align-items: flex-end;
}
.book,
.book-gap {
  --lift: 0px;
  --tilt: 0deg;
  position: relative;
  display: block;
  flex: none;
  width: calc(var(--w, 52px) * var(--k));
  height: calc(var(--h, 220px) * var(--k));
  padding: 0;
  border: 0;
  cursor: pointer;
  transform: translateY(var(--lift)) rotate(var(--tilt));
  transform-origin: 50% 100%;
  transition:
    transform 0.28s cubic-bezier(0.3, 1.4, 0.5, 1),
    box-shadow 0.28s,
    filter 0.28s;
}
.book {
  border-radius: 4px 4px 2px 2px;
  background:
    linear-gradient(
      90deg,
      #00000080 0%,
      #ffffff1a 14%,
      #ffffff08 34%,
      transparent 52%,
      #00000033 82%,
      #00000080 100%
    ),
    linear-gradient(
      180deg,
      transparent 7%,
      var(--band) 7% 8.4%,
      transparent 8.4% 10.4%,
      var(--band) 10.4% 11.2%,
      transparent 11.2% 88.8%,
      var(--band) 88.8% 89.6%,
      transparent 89.6% 91.6%,
      var(--band) 91.6% 93%,
      transparent 93%
    ),
    var(--leather);
  box-shadow:
    inset 0 1px 0 #ffffff1f,
    6px 0 10px -4px #0009;
  --band: #d4ae69b0;
}
.book:hover,
.book:focus-visible,
.book-gap:hover,
.book-gap:focus-visible {
  --lift: -12px;
  --tilt: -1.5deg;
  filter: brightness(1.12);
}
.book.is-wiggling {
  animation: wiggle 0.5s ease-in-out;
}
.book-origin {
  --w: 66px;
  --h: 262px;
  --leather: #1f4b50;
  --tilt: -3deg;
  margin-right: 4px;
  text-decoration: none;
}
.book-origin:hover,
.book-origin:focus-visible {
  --tilt: -4.5deg;
}
.book-title {
  position: absolute;
  inset: 13% 0;
  display: grid;
  place-items: center;
  color: var(--gold-bright);
  font-family: var(--serif);
  font-size: calc(1.12rem * var(--k));
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  text-shadow: 0 1px 0 #0008;
  writing-mode: vertical-rl;
}
.book-ribbon {
  position: absolute;
  bottom: -18px;
  left: 18px;
  width: 9px;
  height: 30px;
  background: linear-gradient(90deg, #7e1e22, #a8332f 60%, #6b1619);
  clip-path: polygon(0 0, 100% 0, 100% 100%, 50% 78%, 0 100%);
}
.bookend {
  width: calc(26px * var(--k));
  height: calc(118px * var(--k));
  margin: 0 10px 0 2px;
  border-radius: 14px 14px 2px 2px;
  background:
    linear-gradient(
      90deg,
      #0000004d,
      #ffffff2e 30%,
      transparent 55%,
      #0000004d
    ),
    linear-gradient(180deg, #c99a52, #8c6431);
  box-shadow: 4px 0 10px -3px #000a;
}
.book-sealed {
  --w: 56px;
  --h: 232px;
  --leather: #6b2521;
}
.seal {
  position: absolute;
  top: 42%;
  left: 50%;
  display: grid;
  place-items: center;
  width: calc(36px * var(--k));
  height: calc(36px * var(--k));
  margin: calc(-18px * var(--k)) 0 0 calc(-18px * var(--k));
  border-radius: 46% 54% 50% 50% / 52% 48% 52% 48%;
  background: radial-gradient(circle at 35% 30%, #e05a48, #a3261d 55%, #6e1510);
  box-shadow:
    0 2px 4px #0009,
    inset 0 0 0 3px #00000026;
  color: #f2c6a8;
  font-family: var(--serif);
  font-size: calc(1.1rem * var(--k));
  font-weight: 700;
  line-height: 1;
}
.book-string {
  --w: 50px;
  --h: 214px;
  --leather: #22334f;
}
.string {
  position: absolute;
  top: 56%;
  left: -2px;
  right: -2px;
  height: 3px;
  background: #cbb68b;
  box-shadow: 0 1px 1px #0008;
}
.string::before,
.string::after {
  content: '';
  position: absolute;
  top: -7px;
  width: 12px;
  height: 9px;
  border: 2px solid #cbb68b;
  border-radius: 50%;
}
.string::before {
  left: 10px;
  transform: rotate(-24deg);
}
.string::after {
  left: 24px;
  transform: rotate(24deg);
}
.book-thick {
  --w: 84px;
  --h: 206px;
  --leather: #2d4a2b;
  --band: #d4ae69d0;
}
.book-ink {
  --w: 48px;
  --h: 244px;
  --leather: #4b2a51;
}
.drip {
  position: absolute;
  top: 0;
  left: 30%;
  width: 9px;
  height: 44px;
  border-radius: 0 0 6px 6px;
  background: linear-gradient(90deg, #233e9a, #3b62d6 50%, #1d3384);
}
.drip::after {
  content: '';
  position: absolute;
  top: 40px;
  left: 1px;
  width: 7px;
  height: 9px;
  border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%;
  background: #3557c4;
  animation: drop 5s ease-in 1s infinite;
}
.book-slim {
  --w: 34px;
  --h: 196px;
  --leather: #8b6a27;
  --band: #2a1d0bb0;
  animation: hum 3.6s ease-in-out infinite;
}
.book-blank {
  --w: 52px;
  --h: 226px;
  --leather: #cbbd9b;
  --band: #5a4426b0;
}
.book-gap {
  --w: 62px;
  --h: 196px;
  margin-left: 6px;
  border: 1px dashed #d4ae6959;
  border-radius: 4px;
  background: transparent;
}
.book-gap:hover,
.book-gap:focus-visible {
  background: #d4ae690f;
}
.plank {
  position: relative;
  height: 26px;
  border-radius: 3px;
  background:
    linear-gradient(180deg, #ffffff26 0 1px, transparent 1px),
    repeating-linear-gradient(
      90deg,
      #ffffff06 0 3px,
      transparent 3px 11px,
      #0000000d 11px 13px,
      transparent 13px 29px
    ),
    linear-gradient(180deg, #7a5130, #573620 55%, #3a2314);
  box-shadow:
    0 22px 34px -10px #000d,
    0 2px 0 #2a190e;
}
.verb-panel {
  max-width: 720px;
  margin: 28px auto 0;
  text-align: center;
}
.verb-line {
  min-height: 1.6em;
  color: var(--teal);
  font-family: var(--serif);
  font-size: 1.3rem;
  font-weight: 600;
}
.verb-line .verb {
  color: var(--gold);
}
.remark {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-top: 14px;
  padding: 14px 22px 14px 14px;
  border: 1px solid var(--panel-edge);
  border-radius: 999px;
  background: linear-gradient(180deg, #152831, #101e25);
  box-shadow: 0 18px 40px -24px #000;
  text-align: left;
}
.remark-portrait {
  flex: none;
  width: 64px;
  height: 64px;
  border: 2px solid #d4ae6999;
  border-radius: 50%;
  background: #0b141a;
  object-fit: cover;
}
.remark p {
  font-family: var(--serif);
  font-size: 1.32rem;
  font-weight: 600;
  line-height: 1.3;
}
.remark .speaker {
  display: block;
  margin-bottom: 2px;
  color: var(--gold);
  font-family: var(--sans);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}
.remark.is-new .remark-text {
  animation: rise 0.45s cubic-bezier(0.2, 0.7, 0.2, 1) both;
}

/* How it plays */
.how-section {
  background: linear-gradient(180deg, transparent, var(--bg-raised) 40%);
}
.steps {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
  max-width: var(--content);
  margin: 56px auto 0;
  padding: 0;
  list-style: none;
  counter-reset: step;
}
.steps li {
  position: relative;
  padding: 34px 28px 30px;
  border: 1px solid var(--panel-edge);
  border-radius: var(--radius);
  background: linear-gradient(180deg, #15262e, #111e25);
}
.step-mark {
  display: grid;
  place-items: center;
  width: 52px;
  height: 52px;
  border: 1px solid #d4ae6980;
  border-radius: 50%;
  color: var(--gold-bright);
  font-family: var(--serif);
  font-size: 1.7rem;
  font-weight: 700;
}
.steps h3 {
  margin-top: 22px;
  font-family: var(--serif);
  font-size: 1.75rem;
  font-weight: 700;
  line-height: 1.1;
}
.steps p,
.features p {
  margin-top: 10px;
  color: var(--muted);
  line-height: 1.7;
}

/* Features */
.features-section {
  padding-top: 0;
  background: var(--bg-raised);
}
.features {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 20px;
  max-width: var(--content);
  margin: 0 auto;
  padding: 0;
  list-style: none;
}
.features li {
  padding: 26px 24px;
  border-top: 1px solid #d4ae6966;
}
.features svg {
  width: 30px;
  height: 30px;
  fill: none;
  stroke: var(--gold);
  stroke-width: 1.5;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.features h3 {
  margin-top: 18px;
  font-size: 1.05rem;
  font-weight: 700;
}
.features p {
  font-size: 0.95rem;
}

/* Where it began */
.origin-section {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr);
  align-items: center;
  gap: clamp(32px, 6vw, 72px);
  max-width: calc(var(--content) + 2 * var(--gutter));
  margin: 0 auto;
}
.origin-art {
  padding: 10px;
  border: 1px solid #d4ae6959;
  border-radius: 18px;
  background: linear-gradient(160deg, #1c2d35, #0f1a20);
  box-shadow: 0 40px 80px -40px #000;
  transform: rotate(-1.2deg);
}
.origin-art img {
  width: 100%;
  height: auto;
  border-radius: 10px;
}
.origin-copy p:not(.kicker) {
  margin: 18px 0 30px;
  color: var(--muted);
  font-size: 1.05rem;
  line-height: 1.75;
}

/* Footer */
.footer {
  padding: 56px var(--gutter) 64px;
  border-top: 1px solid var(--panel-edge);
  color: var(--muted);
  font-size: 0.92rem;
  line-height: 1.7;
  text-align: center;
}
.footer-mark {
  margin-bottom: 8px;
  color: var(--gold);
  font-family: var(--serif);
  font-size: 1.6rem;
  font-weight: 700;
}
.footer-links {
  display: flex;
  justify-content: center;
  gap: 10px;
  margin-top: 14px;
}
.footer-links a {
  color: var(--text);
  text-underline-offset: 4px;
}

/* Not found */
.missing {
  display: grid;
  justify-items: center;
  align-content: center;
  gap: 18px;
  min-height: 100vh;
  min-height: 100svh;
  padding: 48px var(--gutter);
  text-align: center;
}
.missing img {
  width: 96px;
  height: 96px;
  border: 2px solid #d4ae6999;
  border-radius: 50%;
}
.missing h1 {
  margin: 0;
  font-size: clamp(3rem, 8vw, 4.6rem);
}
.missing h1::after {
  margin-inline: auto;
}
.missing p:not(.kicker) {
  margin-bottom: 12px;
  color: var(--muted);
  font-size: 1.05rem;
}

/* Animation */
@keyframes rise {
  from {
    opacity: 0;
    transform: translateY(14px);
  }
}
@keyframes hero-settle {
  from {
    opacity: 0.4;
    transform: scale(1.06);
  }
}
@keyframes mote {
  0% {
    opacity: 0;
    transform: translate(0, 0);
  }
  20% {
    opacity: 0.9;
  }
  100% {
    opacity: 0;
    transform: translate(18px, -160px);
  }
}
@keyframes pulse {
  70% {
    box-shadow: 0 0 0 8px #f0a64f00;
  }
  100% {
    box-shadow: 0 0 0 0 #f0a64f00;
  }
}
@keyframes nudge {
  50% {
    transform: translate(3px, 3px) rotate(45deg);
  }
}
@keyframes wiggle {
  25% {
    transform: translateY(var(--lift)) rotate(-4deg);
  }
  50% {
    transform: translateY(var(--lift)) rotate(3deg);
  }
  75% {
    transform: translateY(var(--lift)) rotate(-2deg);
  }
}
@keyframes drop {
  0%,
  55% {
    opacity: 0;
    transform: translateY(-6px) scale(0.4);
  }
  70% {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
  100% {
    opacity: 0;
    transform: translateY(150px) scale(0.8);
  }
}
@keyframes hum {
  50% {
    box-shadow:
      inset 0 1px 0 #ffffff1f,
      6px 0 10px -4px #0009,
      0 0 26px 2px #f0a64f55;
  }
}

/* Layout breakpoints */
@media (min-width: 1000px) {
  .shelf-scene {
    --k: 1.2;
  }
}
@media (max-width: 960px) {
  .steps {
    grid-template-columns: 1fr;
    max-width: 640px;
  }
  .features {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    max-width: 760px;
  }
  .origin-section {
    grid-template-columns: 1fr;
    max-width: 680px;
  }
}
@media (max-width: 720px) {
  .topbar nav {
    display: none;
  }
  .hero {
    display: block;
    min-height: 0;
    padding: 0 0 56px;
  }
  .hero-art,
  .hero-shade {
    position: relative;
    display: block;
    height: min(66svh, 128vw);
  }
  .hero-shade {
    position: absolute;
    inset: 0 0 auto;
    background: linear-gradient(
      180deg,
      #081016a6 0%,
      transparent 20%,
      transparent 52%,
      #0b141acc 80%,
      var(--bg) 100%
    );
  }
  .hero-art img {
    object-position: 28% 22%;
  }
  .hero-copy {
    margin-top: -72px;
    padding: 0 var(--gutter);
  }
  .hero-copy > * {
    max-width: none;
  }
  .hero-motes {
    display: none;
  }
  .scroll-cue {
    display: none;
  }
  .button {
    flex: 1 1 auto;
  }
  .remark {
    border-radius: 18px;
  }
  .remark p {
    font-size: 1.15rem;
  }
  .shelf-scene {
    --k: 0.68;
    margin-top: 40px;
  }
  .shelf {
    gap: 3px;
    padding-inline: 12px;
  }
}
@media (max-width: 480px) {
  .shelf-scene {
    --k: 0.64;
  }
  .book-slot:has(.book-gap) {
    display: none;
  }
}
@media (max-width: 520px) {
  .features {
    grid-template-columns: 1fr;
  }
  .remark-portrait {
    width: 52px;
    height: 52px;
  }
}
@media (max-height: 640px) and (min-width: 721px) {
  .scroll-cue {
    display: none;
  }
}
@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }
  *,
  *::before,
  *::after {
    animation: none !important;
    transition: none !important;
  }
  .hero-motes {
    display: none;
  }
}
