/* HONEY B v6 / THE STORY: one fixed 3D stage behind a single scroll path. Loaded after site.css. */

/* ---------- stage layer ---------- */
.stage{position:fixed;inset:0;z-index:0;pointer-events:none} /* stage.js owns the fade (time-based), no CSS transition on top */
.stage canvas{display:block;width:100%;height:100%}
.stage::after{content:'';position:absolute;inset:0;pointer-events:none;background:radial-gradient(120% 90% at 64% 45%,transparent 45%,color-mix(in srgb,var(--bg) 82%,transparent) 100%)}
.stage-loading{position:absolute;left:64%;top:48%;transform:translate(-50%,-50%);font:600 11px/1 var(--mono);letter-spacing:.14em;color:var(--muted);display:flex;gap:10px}
.stage-loading b{color:var(--red);font-weight:600}
.jumbo-src{position:fixed;left:-10000px;top:0;width:640px;pointer-events:none;visibility:hidden}
.jumbo-src canvas{display:block;width:640px;height:320px}
main,.foot{position:relative;z-index:1}
.grid-bg,.grain{z-index:0}

/* ---------- header: logo, next show, switch, one booking button ---------- */
.top{background:linear-gradient(var(--bg),transparent)}
.top .next{position:absolute;left:50%;transform:translateX(-50%);font:500 10.5px/1.4 var(--mono);letter-spacing:.06em;color:var(--muted);white-space:nowrap}
.top .next b{color:var(--ink)}
.top .next i{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--red);margin-right:7px;vertical-align:1px;animation:pulse 1.6s infinite}
.top-r{display:flex;align-items:center;gap:10px}
@keyframes pulse{50%{opacity:.25}}
/* the summoner chapter flips the page to SYSTEM on its own: say so under the switch while it lasts */
html.auto-sys .mode::after{content:'X-RAY ON';position:absolute;top:calc(100% + 6px);left:50%;transform:translateX(-50%);padding:4px 8px;border:1px solid var(--red-d);border-radius:999px;background:var(--bg);font:600 9.5px/1 var(--mono);letter-spacing:.14em;color:var(--red);white-space:nowrap;pointer-events:none}

/* ---------- chapter rail (desktop) + progress bar (phone) ---------- */
.rail{position:fixed;right:calc(var(--pad) * .6);top:50%;transform:translateY(-50%);z-index:50}
.rail ol{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}
.rail a{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:6px 0;font:600 10px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--dim);transition:color .3s var(--ease)}
.rail a span{opacity:0;transform:translateX(6px);transition:opacity .3s var(--ease),transform .3s var(--ease)}
.rail a i{width:14px;height:2px;background:currentColor;transition:width .35s var(--ease),background .3s}
.rail:hover a span,.rail a:focus-visible span,.rail a.on span{opacity:1;transform:none}
.rail a:hover,.rail a:focus-visible{color:var(--ink)}
.rail a.on{color:var(--red)}
.rail a.on i{width:28px;background:var(--red)}
@media (min-width:1200px){.rail a span{opacity:1;transform:none;color:var(--muted)}.rail a.on span,.rail a:hover span,.rail a:focus-visible span{color:inherit}} /* wide screens: the whole route stays readable */
.progress{display:none}

/* ---------- chapters ---------- */
.ch{position:relative;min-height:165vh;padding:0 var(--pad)}
.ch-card{position:sticky;top:calc(var(--top) + 9vh);width:min(470px,36vw);padding:26px 28px 24px;background:color-mix(in srgb,var(--bg) 86%,transparent);border:1px solid var(--line);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.kicker{font:600 11px/1 var(--mono);letter-spacing:.12em;color:var(--muted);text-transform:uppercase}
.kicker b{color:var(--red);font-weight:600}
.ch-title{margin:14px 0 0;font:900 clamp(40px,4.6vw,76px)/.9 var(--wide);font-variation-settings:'wdth' 72;letter-spacing:-.03em;text-transform:uppercase}
.ch-line{margin:16px 0 0;font-size:16.5px;line-height:1.5;color:var(--ink)}
.ch-ach{list-style:none;margin:18px 0 0;padding:0;display:grid;gap:7px;font:500 12px/1.45 var(--mono);color:var(--muted)}
.ch-ach li{padding-left:18px;position:relative}
.ch-ach li::before{content:'';position:absolute;left:0;top:.55em;width:9px;height:1px;background:var(--red)}
.ch-crew{margin:16px 0 0;font:500 11.5px/1.5 var(--mono);color:var(--muted)}
.ch-crew span{display:block;color:var(--red);letter-spacing:.12em;font-size:10px;margin-bottom:4px}
.ch-gives{margin:18px 0 0;padding-top:14px;border-top:1px solid var(--line);font:italic 500 15px/1.45 var(--wide);color:var(--ink)}
.ch-poster{display:none;width:100%;margin-top:18px;border:1px solid var(--line)}

/* start: who, why, proof, two moves */
.ch-start{min-height:150vh}
.start-card{top:calc(var(--top) + 7vh);width:min(560px,42vw);background:none;border:0;backdrop-filter:none;-webkit-backdrop-filter:none;padding:0}
.start-card h1{margin:16px 0 0;font:900 clamp(46px,5.6vw,96px)/.88 var(--wide);font-variation-settings:'wdth' 72;letter-spacing:-.035em}
.start-line{margin:20px 0 0;max-width:34ch;font-size:clamp(17px,1.35vw,20px);line-height:1.45}
.cred{list-style:none;margin:20px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:6px 8px;max-width:520px}
.cred li{font:600 11px/1 var(--mono);letter-spacing:.06em;text-transform:uppercase;padding:8px 10px;border:1px solid var(--line);background:color-mix(in srgb,var(--bg) 70%,transparent)}
.worked{margin:18px 0 0;font:500 11.5px/1.6 var(--mono);color:var(--muted);max-width:520px}
.worked span{color:var(--red);letter-spacing:.12em;margin-right:6px}
.start-cta{display:flex;flex-wrap:wrap;gap:10px;margin-top:26px}
.cta{display:inline-flex;align-items:center;gap:10px;min-height:48px;padding:0 20px;background:var(--ink);color:var(--bg);font:850 15px/1 var(--wide);font-variation-settings:'wdth' 80;text-transform:uppercase;letter-spacing:.02em;border-bottom:3px solid var(--red);transition:transform .35s var(--ease)}
.cta:hover{transform:translateY(-2px)}
.cta.ghost{background:color-mix(in srgb,var(--bg) 60%,transparent);color:var(--ink);border:1px solid var(--line);border-bottom:3px solid var(--line)}
.start-hint{margin-top:22px;font:600 10px/1 var(--mono);letter-spacing:.2em;color:var(--muted);animation:hint 2.4s var(--ease) infinite}
@keyframes hint{0%,100%{transform:none;opacity:.75}50%{transform:translateY(6px);opacity:1}}
.past-start .start-hint{opacity:0;animation:none}

/* proof: the numbers ride in the card, the LED wall shows them big */
.ch-proof{min-height:160vh}
.proof-card{width:min(520px,40vw)}
.proof-card .numbers{padding:0;border:0;margin-top:20px;background:none}
.proof-card .numbers-row{display:grid;grid-template-columns:1fr 1fr;gap:0;border-top:1px solid var(--line)}
.proof-card .num{padding:16px 14px 16px 0;border-bottom:1px solid var(--line)}
.proof-card .num:nth-child(odd){border-right:1px solid var(--line)}
.proof-card .num:nth-child(even){padding-left:16px}
.proof-card .num b{font-size:clamp(34px,3.2vw,52px)}
.proof-card .num span{font-size:11px}
.proof-cta{margin-top:22px}

/* sections the stage steps back for get their own floor */
.off{position:relative;background:var(--bg);z-index:1}
@media (min-width:800px){
  .off{padding-right:calc(var(--pad) + 72px)} /* clear of the chapter rail */
  .off .marquee{margin-right:calc(-1 * (var(--pad) + 72px));-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 5%,#000 90%,transparent);mask-image:linear-gradient(90deg,transparent 0,#000 5%,#000 90%,transparent)} /* the brand rows bleed to both edges and fade under the rail */
}
.tour.off{padding-top:clamp(90px,12vw,170px)}

/* headliner frames flash their x-ray as they pass the middle of the screen */
.xr.passing .xr-tag{opacity:0}
/* the pass flash is a GPU filter on the video (red negative, lifted edges), not a per-frame canvas readback */
.xr video{transition:filter .35s var(--ease)}
.xr.passing video{filter:grayscale(1) contrast(2.4) invert(1) sepia(1) hue-rotate(-38deg) saturate(5) brightness(.8)}

/* ---------- booking finale: stage back on, one choice, a ticket ---------- */
.ch-book{position:relative;min-height:100vh;padding:clamp(90px,12vw,160px) var(--pad) 90px;background:none}
.book-card{position:relative;z-index:1;width:min(560px,44vw)}
.ch-book::before{content:'';position:absolute;inset:0;z-index:0;pointer-events:none;background:linear-gradient(90deg,var(--bg) 0 26%,transparent 46%)} /* the headline reads over a quiet floor, not the rig */
.ch-book .book-title{font-size:clamp(56px,6.2vw,104px)}
.book-note{margin:14px 0 0;color:var(--muted);font-size:15px}
.ch-book .asks{margin-top:24px}
.ticket{position:relative;display:flex;margin-top:26px;background:#eae7df;color:#161410;transform-origin:top center}
.ticket::before,.ticket::after{content:'';position:absolute;top:50%;width:18px;height:18px;border-radius:50%;background:var(--bg);transform:translateY(-50%)}
.ticket::before{left:-9px}.ticket::after{right:-9px}
.tk-main{flex:1;padding:18px 20px 16px;border-right:2px dashed rgba(22,20,16,.35)}
.tk-top,.tk-foot{display:flex;justify-content:space-between;gap:10px;font:600 10.5px/1 var(--mono);letter-spacing:.12em;color:#6d6558}
.tk-act{margin:12px 0 0;font:900 34px/.9 var(--wide);font-variation-settings:'wdth' 72;letter-spacing:-.02em}
.tk-act small{font:600 12px/1 var(--mono);letter-spacing:.1em;color:#b3261a;margin-left:6px}
.tk-need{margin:10px 0 0;font:700 17px/1.3 var(--wide)}
.ticket .rider-offer{margin:8px 0 0;font-size:13.5px;line-height:1.45;color:#403a31;min-height:0}
.tk-foot{margin-top:14px}
.tk-stub{width:92px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;font:600 10px/1 var(--mono);letter-spacing:.12em;color:#6d6558;writing-mode:vertical-rl;transform:rotate(180deg)}
.tk-stub b{font:900 26px/1 var(--wide);color:#b3261a;letter-spacing:0}
.ticket.empty .tk-need{color:#8a8173;font-weight:500}
.ticket.pre{clip-path:inset(0 0 100% 0)}
.ticket.print{animation:print .9s var(--ease)}
@keyframes print{0%{clip-path:inset(0 0 100% 0);transform:translateY(-14px)}60%{clip-path:inset(0 0 0 0)}100%{clip-path:inset(0 0 0 0);transform:none}}
.ch-book .rider .brief-label{margin-top:0} /* the send sits right under the ticket; the matched work follows it */
.ch-book .rider .panel-code{margin-top:26px}
.ch-book .rider{margin-top:22px;padding:18px;background:color-mix(in srgb,var(--bg) 78%,transparent);border:1px solid var(--line);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}

/* footer setlist link */
.setlist-link{color:var(--ink)}

/* ---------- system mode tints ---------- */
html[data-mode=system] .ch-card{background:color-mix(in srgb,var(--bg) 90%,transparent)}

/* ---------- phone: ape on top, the card rides the bottom, a thin progress bar instead of the rail ---------- */
@media (max-width:799px){
  .rail{display:none}
  .progress{display:block;position:fixed;top:var(--top);left:0;right:0;height:22px;z-index:90;pointer-events:none}
  .progress i{position:absolute;left:0;top:0;height:2px;width:100%;background:var(--red);transform-origin:left;transform:scaleX(0)}
  .progress span{position:absolute;right:var(--pad);top:7px;font:600 9.5px/1 var(--mono);letter-spacing:.14em;color:var(--muted);background:var(--bg);padding:3px 6px;margin-right:-6px}
  .top .next{display:none}
  .stage::after{background:linear-gradient(transparent 52%,color-mix(in srgb,var(--bg) 88%,transparent) 78%)}
  .stage-loading{left:50%;top:36%}
  .ch{min-height:160vh;padding:0 var(--pad);display:flow-root} /* flow-root: the card's 56vh margin stays inside its chapter, so chapters meet with no dead gaps */
  .ch-card{position:sticky;top:56vh;bottom:auto;width:auto;margin-top:56vh;padding:16px 18px 14px}
  .ch-title{font-size:40px;margin-top:10px}
  .ch-line{font-size:15px;margin-top:10px}
  .ch-ach{margin-top:12px;font-size:11px;gap:5px}
  .ch-ach li:nth-child(n+4){display:none}
  .ch-crew{display:none}
  .ch-crew.ch-summons{display:block;margin-top:10px;font-size:10.5px}
  .ch-gives{font-size:14px;margin-top:12px;padding-top:10px}
  .ch-start{min-height:150vh}
  .start-card{position:relative;top:auto;margin-top:54vh;background:color-mix(in srgb,var(--bg) 82%,transparent);border:1px solid var(--line);padding:18px}
  .start-card h1{font-size:44px}
  .start-line{font-size:15.5px;margin-top:12px}
  .cred{margin-top:12px}.cred li{font-size:10px;padding:7px 8px}
  .worked{margin-top:12px;font-size:10.5px}
  .start-cta{margin-top:16px}.cta{min-height:48px;padding:0 16px;font-size:14px}
  .start-hint{display:none}
  .proof-card{width:auto}
  .proof-card .num b{font-size:30px}
  .ch-book{padding-top:56vh}
  .ch-book::before{display:none}
  .proof-card .ch-line{display:none}
  .proof-card .num span{font-size:10px}
  .proof-cta{margin-top:14px}
  .book-card{width:auto;background:color-mix(in srgb,var(--bg) 95%,transparent);border:1px solid var(--line);padding:18px}
  .tk-act{font-size:28px}.tk-stub{width:64px}
  .tk-foot{flex-direction:column;gap:6px}
}
@media (min-width:800px) and (max-width:1100px){
  .ch-card{width:min(440px,44vw)}
  .start-card{width:min(520px,48vw)}
}

/* ---------- no WebGL: the posters stand in for the stage ---------- */
.no-webgl .stage{display:none}
.no-webgl .ch-poster{display:block}
.no-webgl .ch{min-height:0;padding-top:40px;padding-bottom:40px}
.no-webgl .ch-card{position:relative;top:auto;bottom:auto;margin-top:0}
.no-webgl .ch-start{padding-top:calc(var(--top) + 30px)}
.no-webgl .ch-book{padding-top:calc(var(--top) + 40px)}
.no-webgl .ch-book::before{display:none}

/* ---------- reduced motion ---------- */
@media (prefers-reduced-motion:reduce){
  .start-hint,.top .next i{animation:none}
  .ticket.print{animation:none}
}

/* the holo ticket carries the show on desktop; the page ticket steps back to a plain receipt of the pick (phone keeps the printed ticket) */
@media (min-width:800px){
  .holo .ticket{background:color-mix(in srgb,var(--bg) 82%,transparent);color:var(--ink);border:1px solid var(--line)}
  .holo .ticket::before,.holo .ticket::after,.holo .tk-stub,.holo .tk-act{display:none}
  .holo .tk-main{border-right:0}
  .holo .tk-top,.holo .tk-foot{color:var(--muted)}
  .holo .ticket .rider-offer{color:var(--muted)}
}

/* numbers on the first screen */
.start-nums{list-style:none;margin:18px 0 0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;max-width:560px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.start-nums li{padding:10px 10px 10px 0;display:flex;flex-direction:column;gap:3px}
.start-nums li+li{padding-left:10px;border-left:1px solid var(--line)}
.start-nums b{font:900 clamp(22px,2vw,30px)/1 var(--wide);font-variation-settings:'wdth' 72;color:var(--ink)}
.start-nums li:first-child b{color:var(--red)}
.start-nums span{font:500 10px/1.3 var(--mono);color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.ch-drake span{color:var(--muted)}
@media (max-width:799px){ .start-nums{grid-template-columns:repeat(2,minmax(0,1fr))} .start-nums li:nth-child(3){padding-left:0;border-left:0} .start-nums li:nth-child(n+3){border-top:1px solid var(--line)} }
/* keyboard focus always lands on something you can see */
.r:focus-within{opacity:1!important;transform:none!important}
.ch-card:focus-within{opacity:1!important}
/* lost the 3D mid-visit: keep the story's layout, swap the stage for the posters */
.gl-lost .stage{display:none}
.gl-lost .ch-poster{display:block}
