@font-face { font-family: 'Mona Sans'; src: url('fonts/MonaSans.ttf') format('truetype'); font-weight: 200 900; font-stretch: 75% 125%; font-style: normal; font-display: swap; }
@font-face { font-family: 'Mona Sans'; src: url('fonts/MonaSans-Italic.ttf') format('truetype'); font-weight: 200 900; font-stretch: 75% 125%; font-style: italic; font-display: swap; }
@font-face { font-family: 'Martian Mono'; src: url('fonts/MartianMono.ttf') format('truetype'); font-weight: 100 800; font-stretch: 75% 112.5%; font-display: swap; }

/* Two reds that sit side by side, and the one colour opposite them. */
:root {
  --red: #d8301a;
  --ember: #ff6a1f;
  --teal: #35e3cf;
  --ink: #fff6ef;
  --soft: #e7cfc2;
  --ground: #120403;
  --panel: #1f0906;
  --line: rgba(255, 170, 130, .16);
  --mono: 'Martian Mono', ui-monospace, Consolas, monospace;
  --disp: 'Mona Sans', 'Segoe UI', system-ui, sans-serif;
  --ease: cubic-bezier(.16, 1, .3, 1);
  --side: clamp(20px, 5vw, 96px);
}

html { background: var(--ground); }
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
body { overflow-x: clip !important; font-family: var(--disp); font-size: 18px; line-height: 1.6; color: var(--ink); -webkit-font-smoothing: antialiased; }
@media (hover: hover) and (pointer: fine) { body.has-cursor, body.has-cursor a, body.has-cursor summary, body.has-cursor video { cursor: none; } }
a { color: inherit; }
img, video { display: block; max-width: 100%; }
:focus-visible { outline: 2px solid var(--teal); outline-offset: 3px; }

/* ---- Loader ---- */
#loader { position: fixed; inset: 0; z-index: 90; background: var(--ground); display: grid; place-content: center; justify-items: center; gap: 18px; transition: opacity .7s, visibility .7s; }
#loader p { font: 500 11px var(--mono); letter-spacing: .34em; text-transform: uppercase; color: var(--soft); margin: 0; }
.load-rope { width: 2px; height: 90px; background: rgba(255,255,255,.1); overflow: hidden; }
.load-rope i { display: block; height: 100%; background: var(--teal); transform-origin: top; animation: drop 1.2s var(--ease) infinite; }
@keyframes drop { 0% { transform: scaleY(0); } 60%, 100% { transform: scaleY(1); } }
body.ready #loader { opacity: 0; visibility: hidden; }

/* ---- Nav ---- */
#nav { position: fixed; z-index: 50; top: 0; left: 0; right: 0; display: flex; align-items: center; gap: 32px; padding: 18px var(--side); transition: background .3s, padding .3s; }
#nav.solid { background: rgba(18, 4, 3, .82); backdrop-filter: blur(14px); padding-top: 12px; padding-bottom: 12px; }
.brand { font: italic 900 15px var(--disp); font-stretch: 125%; letter-spacing: .01em; text-decoration: none; white-space: nowrap; }
#nav nav { display: flex; gap: 28px; margin-left: auto; }
#nav nav a { font: 500 11px var(--mono); letter-spacing: .14em; text-transform: uppercase; text-decoration: none; color: var(--ink); opacity: .78; transition: opacity .2s, color .2s; }
#nav nav a:hover { opacity: 1; color: var(--teal); }

/* ---- The button. Teal appears for this, and for very little else. ---- */
.btn { --glow: rgba(53, 227, 207, .45); position: relative; display: inline-flex; align-items: center; gap: 12px; background: var(--teal); color: #042220; font-family: var(--disp); font-weight: 900; font-stretch: 112%; text-decoration: none; text-transform: uppercase; letter-spacing: .02em; border-radius: 4px; overflow: hidden; box-shadow: 0 0 0 0 var(--glow), 0 12px 44px -10px var(--glow); transition: box-shadow .3s, transform .3s var(--ease); will-change: transform; }
.btn::after { content: ''; position: absolute; top: 0; bottom: 0; left: -60%; width: 40%; background: linear-gradient(100deg, transparent, rgba(255,255,255,.65), transparent); transform: skewX(-20deg); animation: shine 4.5s var(--ease) infinite; }
@keyframes shine { 0%, 62% { left: -60%; } 100% { left: 130%; } }
.btn:hover { box-shadow: 0 0 0 5px rgba(53, 227, 207, .22), 0 16px 60px -8px var(--glow); }
.btn svg { width: 1.15em; height: 1.15em; flex: none; }
.btn-sm { padding: 10px 18px; font-size: 13px; }
.btn-lg { padding: 20px 34px; font-size: clamp(16px, 1.25vw, 20px); }
.btn-xl { padding: 26px 48px; font-size: clamp(18px, 1.7vw, 26px); }
.meta { font: 400 12px/1.7 var(--mono); letter-spacing: .04em; color: var(--ink); margin: 0; }

/* ---- Title, over the opening frames ---- */
#top { position: fixed; z-index: 15; left: var(--side); top: 0; bottom: 0; right: var(--side); display: flex; flex-direction: column; justify-content: flex-start; align-items: flex-start; padding-top: 13vh; pointer-events: none; will-change: opacity, transform; }
#top a { pointer-events: auto; }
.logo { position: relative; margin: 0; font: italic 900 clamp(52px, min(7.4vw, 15vh), 164px)/.86 var(--disp); font-stretch: 125%; letter-spacing: -.012em; }
.logo .ln { display: block; opacity: 0; transform: translateX(-34px); animation: inx 1s var(--ease) .25s forwards; }
.logo .ln2 { margin-left: .42em; animation-delay: .4s; }
@keyframes inx { to { opacity: 1; transform: none; } }
.rope-o { position: absolute; left: var(--ox, 0); top: .07em; width: 2px; height: 100vh; background: linear-gradient(to top, var(--teal), rgba(53, 227, 207, .15)); transform: translateY(-100%) scaleY(0); transform-origin: bottom; animation: rope 1s var(--ease) .15s forwards; }
.rope-o::after { content: ''; position: absolute; left: -5px; bottom: -6px; width: 12px; height: 12px; border-radius: 50%; background: var(--teal); box-shadow: 0 0 22px 4px rgba(53, 227, 207, .8); }
@keyframes rope { to { transform: translateY(-100%) scaleY(1); } }
.tag { margin: 24px 0 26px; font-size: clamp(17px, 1.4vw, 24px); font-weight: 500; opacity: 0; animation: inx 1s var(--ease) .6s forwards; }
.cta-row { display: flex; flex-direction: column; align-items: flex-start; gap: 14px; opacity: 0; animation: inx 1s var(--ease) .75s forwards; }

/* ---- Telemetry and the rope down the side ---- */
#hud { position: fixed; z-index: 14; left: var(--side); bottom: 26px; display: flex; gap: 34px; opacity: 0; transition: opacity .4s; }
#hud.on { opacity: 1; }
#hud span { display: block; font: 500 9px var(--mono); letter-spacing: .24em; text-transform: uppercase; color: var(--soft); }
#hud b { font: 600 24px/1.3 var(--mono); font-variant-numeric: tabular-nums; }
#rail { position: fixed; z-index: 45; right: 22px; top: 18vh; bottom: 18vh; width: 2px; background: rgba(255,255,255,.14); opacity: 0; transition: opacity .4s; }
#rail.on { opacity: 1; }
#rail-fill { position: absolute; left: 0; right: 0; top: 0; height: 100%; background: var(--teal); transform-origin: top; transform: scaleY(0); }
#rail-hook { position: absolute; left: -4px; top: 0; width: 10px; height: 10px; border: 2px solid var(--teal); border-radius: 50%; background: var(--ground); }

/* ---- Copy over the film ---- */
#scroll-container { overflow-x: clip; }
.section-content a { background: var(--teal) !important; color: #042220 !important; font-weight: 900 !important; font-stretch: 112%; text-transform: uppercase; padding: 20px 38px !important; font-size: 18px !important; box-shadow: 0 14px 60px -10px rgba(53, 227, 207, .55); }
.eyebrow, .section-content .eyebrow { font: 500 12px var(--mono) !important; letter-spacing: .28em !important; text-transform: uppercase; color: var(--teal) !important; margin: 0 0 16px; }
.sc-display { font-style: italic; font-stretch: 125%; }
.section-content { position: relative; }
.section-content::before { content: ''; position: absolute; z-index: -1; inset: -30% -24%; background: radial-gradient(closest-side, rgba(14, 3, 2, .86), rgba(14, 3, 2, .74) 62%, rgba(14, 3, 2, 0)); pointer-events: none; }
.section-content p { color: #fff6ef !important; }
.section-sticky { will-change: opacity; overflow: visible !important; }
.section-content[data-reveal], .section-content[data-reveal].visible { clip-path: none !important; }

/* ---- After the film ---- */
#after { position: relative; z-index: 20; background: var(--ground); }
#after h2 { font: italic 900 clamp(38px, 5.4vw, 92px)/.95 var(--disp); font-stretch: 125%; letter-spacing: -.012em; text-transform: uppercase; margin: 0 0 22px; }
.band { padding: clamp(80px, 11vw, 180px) 0; position: relative; }
.wrap { padding: 0 var(--side); max-width: 1500px; margin: 0 auto; }
.lead { font-size: clamp(18px, 1.5vw, 23px); line-height: 1.5; color: var(--soft); max-width: 40em; margin: 0; }

#gameplay { padding-bottom: 0; background: linear-gradient(var(--ground), #240805 60%, var(--ground)); }
.screen { --r: 22deg; --s: .86; position: relative; margin: clamp(40px, 6vw, 80px) var(--side) 0; aspect-ratio: 16 / 9; perspective: 1400px; }
.screen video { width: 100%; height: 100%; object-fit: cover; border-radius: 6px; background: #000; box-shadow: 0 50px 140px -30px rgba(255, 80, 20, .55); transform: rotateX(var(--r)) scale(var(--s)); transform-origin: 50% 100%; }
.screen-tag { position: absolute; left: 22px; bottom: 18px; font: 500 12px var(--mono); letter-spacing: .08em; text-shadow: 0 1px 8px #000; }
.screen-tag span { color: var(--teal); margin-right: 8px; }

/* Worlds: the page pins and the worlds pass in perspective. */
#worlds { height: 520vh; position: relative; }
.pin { position: sticky; top: 0; height: 100vh; overflow: hidden; perspective: 1500px; display: flex; flex-direction: column; justify-content: center; }
.pin-head { position: absolute; left: var(--side); top: clamp(76px, 11vh, 120px); z-index: 2; }
.pin-head h2 { font-size: clamp(30px, 3.5vw, 60px) !important; margin: 0 !important; }
.track { position: absolute; top: 0; bottom: 0; left: 0; display: flex; align-items: center; gap: 4vw; padding: 15vh 18vw 0 12vw; transform-style: preserve-3d; will-change: transform; }
.world { position: relative; flex: none; width: min(60vw, 100vh); aspect-ratio: 16 / 9; transform-style: preserve-3d; will-change: transform; }
.world video, .world img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; border-radius: 6px; }
.world::after { content: ''; position: absolute; inset: 0; border-radius: 6px; background: linear-gradient(to top, rgba(0,0,0,.72), transparent 50%); pointer-events: none; }
.world-text { position: absolute; z-index: 2; left: 26px; right: 26px; bottom: 20px; transform: translateZ(50px); }
.world-text small { display: block; font: 500 11px var(--mono); letter-spacing: .24em; text-transform: uppercase; color: var(--teal); }
.world-text h3 { font: italic 900 clamp(26px, 3vw, 50px)/1 var(--disp); font-stretch: 125%; text-transform: uppercase; margin: 6px 0 4px; }
.world-text p { margin: 0; font-size: 15px; color: var(--ink); }
.pin-count { position: absolute; right: var(--side); bottom: 28px; font: 500 12px var(--mono); letter-spacing: .1em; color: var(--soft); }
.pin-count b { color: var(--ink); font-size: 26px; font-weight: 600; font-variant-numeric: tabular-nums; }

.stats { list-style: none; padding-top: 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; }
#numbers { padding: clamp(60px, 7vw, 110px) 0; background: linear-gradient(100deg, var(--red), var(--ember)); color: #1a0502; overflow: hidden; }
.stats b { display: block; font: italic 900 clamp(60px, 8.4vw, 150px)/.95 var(--disp); font-stretch: 125%; color: #1a0502; }
.stats span { font-size: 16px; font-weight: 600; }

#create { background: radial-gradient(60% 70% at 78% 50%, rgba(216, 48, 26, .34), transparent 70%); }
#updates { background: radial-gradient(50% 80% at 12% 40%, rgba(255, 106, 31, .16), transparent 70%); }
#support { background: radial-gradient(50% 70% at 92% 60%, rgba(216, 48, 26, .18), transparent 70%); }
.split { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(30px, 5vw, 90px); align-items: center; padding-left: var(--side); padding-right: var(--side); }
.ticks { list-style: none; padding: 0; margin: 26px 0 0; }
.ticks li { position: relative; padding: 11px 0 11px 26px; border-top: 1px solid var(--line); }
.ticks li::before { content: ''; position: absolute; left: 2px; top: 22px; width: 8px; height: 8px; border-radius: 50%; background: var(--ember); }
.soon { font: 400 12px/1.7 var(--mono); color: var(--soft); margin-top: 20px; }
.tilt { margin: 0; perspective: 1200px; }
.tilt img { width: 100%; border-radius: 6px; box-shadow: 0 40px 120px -30px rgba(255, 80, 20, .5); transform: rotateY(var(--ry, -12deg)) rotateX(var(--rx, 4deg)); transition: transform .5s var(--ease); }

.two { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(30px, 6vw, 110px); align-items: start; }
.log { background: var(--panel); border: 1px solid var(--line); border-radius: 6px; padding: 28px 30px; }
.log header { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; padding-bottom: 14px; border-bottom: 1px solid var(--line); }
.log header b { font: italic 900 22px var(--disp); font-stretch: 125%; text-transform: uppercase; }
.log header span { font: 400 11px var(--mono); color: var(--soft); }
.log ul { margin: 14px 0 0; padding: 0 0 0 18px; }
.log li { padding: 5px 0; }
.log li::marker { color: var(--ember); }

.faq { margin-top: 34px; border-top: 1px solid var(--line); max-width: 1000px; }
.faq details { border-bottom: 1px solid var(--line); padding: 4px 0; }
.faq summary { list-style: none; padding: 18px 40px 18px 0; font-size: clamp(18px, 1.5vw, 23px); font-weight: 700; position: relative; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: '+'; position: absolute; right: 6px; top: 12px; font: 400 26px var(--mono); color: var(--ember); transition: transform .3s var(--ease); }
.faq details[open] summary::after { transform: rotate(45deg); }
.faq p { margin: 0 0 20px; max-width: 46em; color: var(--soft); }
.faq a { color: var(--teal); }

.final { position: relative; min-height: 92vh; display: grid; place-items: center; text-align: center; overflow: hidden; }
.final .kb { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transform-origin: 62% 58%; animation: push 26s ease-in-out infinite alternate; }
@keyframes push { from { transform: scale(1); } to { transform: scale(1.09); } }
#embers { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 1; }
.final::after { content: ''; position: absolute; inset: 0; z-index: 1; background: linear-gradient(var(--ground), rgba(18,4,3,.15) 22%, rgba(18,4,3,.15) 60%, var(--ground)), radial-gradient(ellipse 60% 44% at 50% 46%, rgba(14,3,2,.8), rgba(14,3,2,0)); }
.final-in { position: relative; z-index: 2; padding: 40px var(--side); }
.final .meta { margin-top: 22px; color: var(--ink); }

#foot { position: relative; z-index: 3; display: flex; gap: 28px; align-items: center; padding: 26px var(--side); border-top: 1px solid var(--line); font: 400 12px var(--mono); color: var(--soft); }
#foot .brand { margin-right: auto; color: var(--ink); }
#foot a { text-decoration: none; }
#foot a:hover { color: var(--teal); }

/* ---- Cursor: the game's crosshair ---- */
#cursor { position: fixed; z-index: 100; left: 0; top: 0; width: 26px; height: 26px; margin: -13px 0 0 -13px; border: 1.5px solid var(--ink); border-radius: 50%; pointer-events: none; opacity: 0; transition: width .2s, height .2s, margin .2s, border-color .2s; mix-blend-mode: difference; }
#cursor::after { content: ''; position: absolute; left: 50%; top: 50%; width: 3px; height: 3px; margin: -1.5px; border-radius: 50%; background: var(--ink); }
body.has-cursor #cursor { opacity: 1; }
#cursor.hot { width: 46px; height: 46px; margin: -23px 0 0 -23px; border-color: var(--teal); }

#toast { position: fixed; z-index: 60; left: 50%; bottom: 32px; transform: translate(-50%, 16px); background: var(--panel); border: 1px solid var(--teal); border-radius: 4px; padding: 13px 20px; font-size: 15px; opacity: 0; pointer-events: none; transition: opacity .3s, transform .3s var(--ease); max-width: calc(100vw - 40px); }
#toast.on { opacity: 1; transform: translate(-50%, 0); }

#scroll-hint { color: var(--ink); z-index: 16; }

@media (max-width: 900px) {
  body { font-size: 17px; }
  #nav { gap: 12px; padding-top: 12px; padding-bottom: 12px; }
  #nav nav { display: none; }
  #nav .btn { margin-left: auto; }
  #top { padding-top: 12vh; }
  .logo { font-size: clamp(44px, 13.5vw, 100px); }
  .cta-row { gap: 16px; }
  #hud, #rail { display: none; }
  #worlds { height: auto; }
  .pin { position: relative; height: auto; overflow: visible; display: block; padding: 80px 0 40px; perspective: none; }
  .pin-head { position: static; padding: 0 var(--side) 24px; }
  .track { position: static; overflow-x: auto; scroll-snap-type: x mandatory; gap: 14px; padding: 0 var(--side) 14px; transform: none !important; }
  .world { width: 84vw; transform: none !important; scroll-snap-align: center; }
  .world-text p { font-size: 13px; }
  .pin-count { display: none; }
  .stats { grid-template-columns: 1fr 1fr; }
  .split, .two { grid-template-columns: minmax(0, 1fr); }
  .screen { --r: 0deg; --s: 1; }
  .btn-lg, .btn-xl { padding: 18px 26px; font-size: 16px; }
  .section-content a { padding: 16px 22px !important; font-size: 15px !important; }
  #foot { flex-wrap: wrap; gap: 14px 22px; }
  #foot .brand { flex-basis: 100%; }
}

@media (prefers-reduced-motion: reduce) {
  .btn::after, .load-rope i, .final .kb { animation: none; }
  .logo .ln, .tag, .cta-row, .rope-o { animation-duration: .01s; animation-delay: 0s; }
  .screen video, .tilt img { transform: none; }
  #worlds { height: auto; }
  .pin { position: relative; height: auto; overflow: visible; display: block; padding: 80px 0 40px; perspective: none; }
  .pin-head { position: static; padding: 0 var(--side) 24px; }
  .track { position: static; overflow-x: auto; padding: 0 var(--side) 14px; }
  .world { transform: none !important; }
}
