@font-face{font-family:"Bagel Fat One";src:url(../fonts/bagel-fat-one.woff2) format("woff2");font-display:swap}
@font-face{font-family:"DM Sans";src:url(../fonts/dm-sans.woff2) format("woff2");font-weight:100 1000;font-display:swap}
:root{--bg:#fbf8ef;--ink:#1b1412;--red:#bd0a0a;--red-d:#8f0606;--blush:#f6ddd3;--mute:#6f625c;--card:#fffdf7;--redt:#bd0a0a;--sh:4px 4px 0 var(--ink)}
*{box-sizing:border-box;margin:0}
html{-webkit-text-size-adjust:100%}
body{background:var(--bg);color:var(--ink);font:400 17px/1.5 "DM Sans",system-ui,-apple-system,Segoe UI,sans-serif;min-height:100dvh;overflow-x:hidden}
[hidden]{display:none!important}
.wrap{max-width:560px;margin:0 auto;padding:0 20px}
.display{font-family:"Bagel Fat One","Arial Black",system-ui,sans-serif;font-weight:400;line-height:.95;letter-spacing:.01em}
a{color:inherit}

/* top bar */
.top{display:flex;align-items:center;justify-content:space-between;padding:16px 0}
.mark{font-size:1.15rem;color:var(--redt);text-decoration:none;transform:rotate(-2deg);display:inline-block}
.lang{font:700 .8rem "DM Sans",sans-serif;background:none;border:2px solid var(--ink);border-radius:99px;padding:6px 12px;color:var(--ink);cursor:pointer}

/* buttons */
.btn{display:block;width:100%;font:700 1.05rem "DM Sans",sans-serif;padding:16px 20px;border-radius:99px;border:2.5px solid var(--ink);background:var(--card);color:var(--ink);box-shadow:var(--sh);cursor:pointer;text-align:center;text-decoration:none;transition:transform .08s,box-shadow .08s}
.btn:active{transform:translate(3px,3px);box-shadow:1px 1px 0 var(--ink)}
.btn.red{background:var(--red);color:#fff}
.btn.big{font-family:"Bagel Fat One",sans-serif;font-weight:400;font-size:1.9rem;letter-spacing:.04em;padding:18px}
.btn.plain{border:0;box-shadow:none;background:none;text-decoration:underline;font-weight:500;color:var(--mute);padding:10px}
.btn:disabled{opacity:.6}
.stack{display:grid;gap:14px}

/* hero */
.hero{padding:28px 0 36px;text-align:center;position:relative}
.kicker{font-weight:700;font-size:.8rem;letter-spacing:.14em;text-transform:uppercase;color:var(--redt)}
.hero h1{font-size:clamp(3.4rem,17vw,5.6rem);color:var(--red);margin:14px 0 6px;transform:rotate(-3deg)}
.hero h1 span{display:block}
.hero h1 .ink{color:var(--ink)}
.loop{display:block;width:78%;max-width:340px;margin:-6px auto 10px}
.loop path{fill:none;stroke:var(--red);stroke-width:7;stroke-linecap:round;stroke-linejoin:round}
.lede{font-size:1.2rem;max-width:26ch;margin:0 auto 26px}
.lede b{background:linear-gradient(transparent 62%,var(--blush) 62%)}

section{padding:34px 0}
h2.display{font-size:2.2rem;margin-bottom:18px}
.sub{color:var(--mute);margin-bottom:18px}

/* steps */
.steps{display:grid;gap:16px;counter-reset:s}
.step{background:var(--card);border:2.5px solid var(--ink);border-radius:20px;padding:18px 18px 18px 74px;position:relative;box-shadow:var(--sh)}
.step:nth-child(2){transform:rotate(.8deg)}.step:nth-child(3){transform:rotate(-.6deg)}
.step::before{counter-increment:s;content:counter(s);position:absolute;left:16px;top:14px;width:44px;height:44px;border-radius:50%;background:var(--red);color:#fff;font:400 1.5rem/44px "Bagel Fat One",sans-serif;text-align:center}
.step h3{font-size:1.1rem;margin-bottom:2px}
.step p{color:var(--mute);font-size:.97rem}

/* quest chips */
.chips{display:flex;flex-wrap:wrap;gap:10px}
.chip{border:2px solid var(--ink);border-radius:14px;padding:9px 13px;font-size:.95rem;background:var(--card)}
.chip:nth-child(3n){background:var(--blush)}
.chip:nth-child(4n+1){transform:rotate(-1.2deg)}.chip:nth-child(5n+2){transform:rotate(1deg)}

/* waitlist */
.wlbox{background:var(--ink);color:var(--bg);border-radius:26px;padding:26px 22px}
.wlbox h2{color:#fff}
.wlbox .sub{color:#d9cdc6}
.wl{display:grid;gap:12px}
.wl input{font:500 1.05rem "DM Sans",sans-serif;padding:15px 18px;border-radius:99px;border:2.5px solid var(--bg);background:transparent;color:#fff;width:100%}
.wl input::placeholder{color:#a89a93}
.wl .btn{border-color:var(--bg);box-shadow:4px 4px 0 var(--red-d)}
.wlmsg{font-weight:700;font-size:1.1rem;padding:8px 0}
.wlerr{color:#ffb4a8;font-size:.9rem}
.demo{font-size:.75rem;color:#a89a93;margin-top:10px}
.light.wlbox{background:var(--card);color:var(--ink);border:2.5px solid var(--ink);box-shadow:var(--sh)}
.light.wlbox h2{color:var(--redt)}.light.wlbox .sub{color:var(--mute)}
.light .wl input{border-color:var(--ink);color:var(--ink)}
.light .wl .btn{border-color:var(--ink);box-shadow:var(--sh)}
.light .wlerr{color:var(--red)}.light .demo{color:var(--mute)}

footer{padding:30px 0 44px;text-align:center;color:var(--mute);font-size:.85rem}

/* ===== play page ===== */
.play{padding:6px 0 40px;text-align:center}
.play h1{font-size:clamp(2.3rem,11vw,3.2rem);color:var(--redt);margin:8px 0 10px;transform:rotate(-2deg)}
.play .sub{max-width:30ch;margin-left:auto;margin-right:auto}
.machine{background:var(--card);border:3px solid var(--ink);border-radius:26px;box-shadow:6px 6px 0 var(--ink);padding:14px;margin:20px 0 22px}
.machine .lbl{font-weight:700;font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--mute);margin-bottom:10px}
.window{border:2.5px solid var(--ink);border-radius:16px;background:var(--bg);min-height:150px;display:grid;place-items:center;padding:18px;overflow:hidden}
.reel{font-size:1.35rem;font-weight:700;line-height:1.25}
.reel.q{font-family:"Bagel Fat One",sans-serif;font-weight:400;font-size:3rem;color:var(--redt);letter-spacing:.1em}
.reel.tick{animation:tick .09s ease-out}
.reel.land{animation:land .45s cubic-bezier(.2,1.6,.4,1)}
@keyframes tick{from{transform:translateY(-60%);opacity:.2;filter:blur(3px)}to{transform:none;opacity:1;filter:none}}
@keyframes land{from{transform:scale(.8) rotate(-3deg)}to{transform:none}}
.devil{display:flex;align-items:center;justify-content:center;gap:10px;margin:0 0 18px;font-weight:700;font-size:.95rem;cursor:pointer;user-select:none}
.devil input{appearance:none;width:46px;height:26px;border-radius:99px;border:2.5px solid var(--ink);background:var(--card);position:relative;cursor:pointer;margin:0}
.devil input::after{content:"";position:absolute;top:2px;left:2px;width:17px;height:17px;border-radius:50%;background:var(--ink);transition:transform .15s}
.devil input:checked{background:var(--red)}
.devil input:checked::after{transform:translateX(20px);background:#fff}
body.hot{--bg:#171110;--ink:#fbf8ef;--card:#2a1d1a;--mute:#d6c8c1;--blush:#5a1410;--redt:#ff6a5c}
body.hot .btn.red{color:#fff}
.ticket{background:var(--red);color:#fff;border:3px solid var(--ink);border-radius:22px;box-shadow:6px 6px 0 var(--ink);padding:26px 20px;margin:18px 0;transform:rotate(-1.5deg)}
.ticket small{display:block;font-weight:700;letter-spacing:.16em;text-transform:uppercase;font-size:.72rem;opacity:.85;margin-bottom:10px}
.ticket div{font-size:1.5rem;font-weight:700;line-height:1.2}
.note{margin:0 auto 20px;max-width:30ch}
.trophy{font-size:4rem;line-height:1;margin-top:10px}
.shirtid{font-size:.75rem;color:var(--mute);margin-top:26px}
@media (prefers-reduced-motion:reduce){.reel.tick,.reel.land{animation:none}}

/* ===== v2: menu, views, wall, about ===== */
.top .right{display:flex;gap:10px;align-items:center}
.burger{width:42px;height:38px;border:2px solid var(--ink);border-radius:12px;background:none;cursor:pointer;display:grid;place-content:center;gap:5px}
.burger i{display:block;width:18px;height:2.5px;border-radius:2px;background:var(--ink)}
.menu{position:fixed;inset:0;z-index:20;background:var(--red);color:#fff;padding:22px 24px;display:flex;flex-direction:column;gap:6px;overflow:auto}
.menu .x{align-self:flex-end;background:none;border:0;color:#fff;font-size:2rem;line-height:1;cursor:pointer;padding:6px 10px}
.menu a{font-family:"Bagel Fat One",sans-serif;font-size:2.1rem;line-height:1.15;color:#fff;text-decoration:none;padding:10px 0;border-bottom:2px solid rgba(255,255,255,.25)}
.menu a small{display:block;font:500 .9rem "DM Sans",sans-serif;opacity:.85;margin-top:2px}
.menu .foot{margin-top:auto;padding-top:24px;font-size:.85rem;opacity:.85}
.how{display:grid;gap:8px;margin:26px 0 0;text-align:left;font-size:.95rem;color:var(--mute)}
.how div{display:flex;gap:10px;align-items:baseline}
.how b{flex:none;width:24px;height:24px;border-radius:50%;background:var(--ink);color:var(--bg);font-size:.8rem;display:inline-grid;place-items:center}
.page{padding:6px 0 40px}
.page h1{font-size:clamp(2.4rem,11vw,3.2rem);color:var(--redt);margin:8px 0 14px;transform:rotate(-2deg);transform-origin:left}
.page h2{font-size:1.25rem;margin:26px 0 8px}
.page p{margin-bottom:12px}
.page .big{font-size:1.25rem;font-weight:500;line-height:1.35}
.sig{font-family:"Bagel Fat One",sans-serif;font-size:1.6rem;color:var(--redt);transform:rotate(-3deg);display:inline-block;margin-top:6px}
.cards{display:grid;gap:14px;margin:18px 0 26px}
.cardx{background:var(--card);border:2.5px solid var(--ink);border-radius:20px;padding:16px 18px;box-shadow:var(--sh)}
.cardx .tag{display:inline-block;font-weight:700;font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;background:var(--blush);border-radius:99px;padding:3px 10px;margin-bottom:8px}
.cardx h3{font-size:1.15rem;margin-bottom:4px}
.cardx p{color:var(--mute);font-size:.97rem;margin:0}
.twist{font-weight:700;font-size:.8rem;letter-spacing:.14em;text-transform:uppercase;color:var(--redt);margin-bottom:6px}
.more{display:inline-block;margin-top:14px;font-weight:700}
.wallform{display:grid;gap:12px;margin-bottom:22px}
.wallform textarea{font:500 1.05rem "DM Sans",sans-serif;padding:14px 16px;border-radius:18px;border:2.5px solid var(--ink);background:var(--card);color:var(--ink);width:100%;resize:vertical}
.msgs{display:grid;gap:12px}
.msg{background:var(--card);border:2px solid var(--ink);border-radius:16px;padding:12px 14px;overflow-wrap:anywhere}
.msg:nth-child(3n+1){transform:rotate(-.7deg)}.msg:nth-child(3n+2){transform:rotate(.6deg);background:var(--blush)}
.msg small{display:block;color:var(--mute);font-size:.75rem;margin-top:4px}
.empty{color:var(--mute);text-align:center;padding:20px 0}
.smallnote{font-size:.75rem;color:var(--mute);margin-top:10px}

/* ===== v3: home + scan pages ===== */
@font-face{font-family:"Permanent Marker";src:url(../fonts/permanent-marker.woff2) format("woff2");font-display:swap}
.burger{position:relative}
.peek{position:absolute;top:-13px;right:-9px;font-size:1.15rem;line-height:1;animation:peek 2.6s ease-in-out infinite;pointer-events:none}
@keyframes peek{0%,70%,100%{transform:rotate(0) translateY(0)}78%{transform:rotate(-14deg) translateY(-3px)}86%{transform:rotate(12deg) translateY(-3px)}94%{transform:rotate(-6deg)}}
.menu a.cur{opacity:.6}

/* language + quote screens */
.gate{min-height:72dvh;display:grid;align-content:center;gap:18px;text-align:center;padding:20px 0}
.gate h1{font-size:clamp(3rem,15vw,4.6rem);color:var(--redt);transform:rotate(-3deg);margin-bottom:6px}
.gate h1 span{display:block}.gate h1 .ink{color:var(--ink)}
.gate .sub{margin:0 0 6px}
.quote{min-height:78dvh;display:grid;align-content:center;gap:16px;text-align:center;cursor:pointer;padding:20px 6px}
.quote p{font-family:"Bagel Fat One",sans-serif;font-size:clamp(2.2rem,10.5vw,3.2rem);line-height:1.05;color:var(--ink)}
.quote p em{font-style:normal;color:var(--redt)}
.quote cite{font-style:normal;color:var(--mute);font-size:.95rem}
.quote small{color:var(--mute);font-size:.8rem;margin-top:22px;animation:blink 1.6s ease-in-out infinite}
.quote p,.quote cite{animation:rise .7s ease-out both}.quote cite{animation-delay:.35s}
@keyframes rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes blink{50%{opacity:.35}}

/* quest map: leaving the usual night */
.machine{padding:12px}
.map{display:block;width:100%;height:auto;border:2.5px solid var(--ink);border-radius:16px 16px 0 0;background:var(--bg)}
.map .road{fill:none;stroke:var(--mute);stroke-width:3;stroke-dasharray:1 9;stroke-linecap:round;opacity:.7;transition:opacity .6s}
.map .lbl-usual{font:500 9px "DM Sans",sans-serif;fill:var(--mute);letter-spacing:.08em;text-transform:uppercase;transition:opacity .6s}
.map .lbl-side{font:400 13px "Bagel Fat One",sans-serif;fill:var(--redt);opacity:0;transition:opacity .4s}
.map.off .road,.map.off .lbl-usual{opacity:.28}
.map.off .lbl-side{opacity:1}
.map .walked{fill:none;stroke:var(--red);stroke-width:4.5;stroke-linecap:round;stroke-linejoin:round}
.map .pin circle{fill:var(--card);stroke:var(--ink);stroke-width:2.5;transition:fill .15s}
.map .pin text{font:700 11px "DM Sans",sans-serif;fill:var(--ink);text-anchor:middle;dominant-baseline:central}
.map .pin.on circle{fill:var(--red)}.map .pin.on text{fill:#fff}
.map .pin,.map .goal{transform-box:fill-box;transform-origin:center}
.map .pin.on{animation:pop .3s cubic-bezier(.2,1.8,.4,1)}
.map .goal .star{fill:var(--card);stroke:var(--ink);stroke-width:2.5;stroke-linejoin:round;transition:fill .2s}
.map .goal .rays{stroke:var(--redt);stroke-width:3;stroke-linecap:round;opacity:0}
.map .goal.on .star{fill:#ffc531}
.map .goal.on{animation:pop .6s cubic-bezier(.2,2.2,.4,1)}
.map .goal.on .rays{opacity:1;animation:rays 1.4s ease-in-out infinite}
.map .runner{fill:var(--red);stroke:var(--ink);stroke-width:2.5}
@keyframes pop{from{transform:scale(.4)}to{transform:scale(1)}}
@keyframes rays{50%{opacity:.35}}
.machine .window{border-radius:0 0 16px 16px;border-top:0;min-height:138px;align-content:center;gap:8px;transition:box-shadow .3s,background .3s}
.machine .lbl{display:none;margin:0;color:var(--redt)}
.machine.won .lbl{display:block;animation:rise .4s ease-out both}
.machine.won .window{background:var(--card);box-shadow:inset 0 0 0 3px var(--red)}
.machine.won{animation:glow 1.6s ease-in-out 2}
@keyframes glow{50%{box-shadow:6px 6px 0 var(--ink),0 0 0 6px rgba(255,197,49,.55)}}
.reel.sample{color:var(--mute);font-weight:500}

/* quote screen routes */
.quote{position:relative;z-index:1}
.routes{position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none}
.routes .r{fill:none;stroke:var(--ink);stroke-width:2;stroke-dasharray:2 9;stroke-linecap:round;opacity:.3}
.routes .r.red{stroke:var(--red);opacity:.55}
.routes .m{fill:none;stroke:#fff;stroke-width:8;stroke-dasharray:1;stroke-dashoffset:1;animation:draw 3.4s ease-out forwards}
.routes .m:nth-child(2){animation-delay:.4s}.routes .m:nth-child(3){animation-delay:.9s}.routes .m:nth-child(4){animation-delay:1.3s}
.routes .x{fill:none;stroke:var(--red);stroke-width:3;stroke-linecap:round;opacity:0;animation:rise .4s ease-out 3.2s forwards}
@keyframes draw{to{stroke-dashoffset:0}}
.quote .q2{font:700 1.15rem "DM Sans",sans-serif;color:var(--redt);animation:rise .7s ease-out 1.1s both;letter-spacing:.02em}
.wallform input{font:500 1rem "DM Sans",sans-serif;padding:13px 16px;border-radius:99px;border:2.5px solid var(--ink);background:var(--card);color:var(--ink);width:100%}
.wallbg .msg small a{color:inherit}
@media (prefers-reduced-motion:reduce){.routes .m{animation:none;stroke-dashoffset:0}}

/* brick wall */
.wallbg{margin:0 -20px;padding:22px 20px 30px;min-height:46dvh;background-color:#e2ded8;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='64'%3E%3Cg fill='%23ffffff'%3E%3Crect x='2' y='2' width='56' height='28' rx='2'/%3E%3Crect x='62' y='2' width='56' height='28' rx='2' fill='%23faf8f4'/%3E%3Crect x='-28' y='34' width='56' height='28' rx='2' fill='%23fcfbf8'/%3E%3Crect x='32' y='34' width='56' height='28' rx='2'/%3E%3Crect x='92' y='34' width='56' height='28' rx='2' fill='%23fcfbf8'/%3E%3C/g%3E%3C/svg%3E");background-size:120px 64px}
.wallbg .msgs{display:flex;flex-direction:column;gap:26px}
.wallbg .msg{background:none;border:0;padding:0;font-family:"Permanent Marker","Bagel Fat One",cursive;color:#c20c0c;font-size:1.65rem;line-height:1.15;text-shadow:0 0 1px rgba(194,12,12,.55),1px 2px 0 rgba(120,0,0,.12);max-width:92%}
.wallbg .msg:nth-child(odd){transform:rotate(-2.5deg);align-self:flex-start}
.wallbg .msg:nth-child(even){transform:rotate(2deg);align-self:flex-end;text-align:right}
.wallbg .msg:nth-child(3n){font-size:1.35rem}
.wallbg .msg small{font-family:"DM Sans",sans-serif;color:#6f625c;font-size:.7rem;text-shadow:none;margin-top:2px}
.wallbg .empty{font-family:"Permanent Marker",cursive;color:#8d8780;font-size:1.3rem}

/* ===== launch discount, map, coming-soon animations ===== */
.ctaq{font-weight:700;margin:0 0 10px}

/* launch-discount coupon */
.coupon{position:relative;display:grid;gap:1px;text-align:center;border:3px dashed var(--red);border-radius:14px;padding:12px 14px;margin:2px 0 16px;background:rgba(189,10,10,.08);transform:rotate(-1.5deg)}
.coupon b{font:400 1.45rem/1.05 "Bagel Fat One",sans-serif;color:#ff5a4d;letter-spacing:.01em}
.coupon small{font-size:.82rem;opacity:.85}
.coupon .sc{position:absolute;left:-13px;top:50%;transform:translateY(-50%) rotate(-90deg);font-size:1.1rem;color:var(--red);background:inherit}
.wlbox .coupon{color:#fff}
.light .coupon,.light.wlbox .coupon{color:var(--ink)}
.light .coupon b{color:var(--redt)}
.coupon::after{content:"🎟️";position:absolute;right:-10px;top:-14px;font-size:1.5rem;transform:rotate(14deg);animation:wob 2.4s ease-in-out infinite}
@keyframes wob{50%{transform:rotate(-6deg) scale(1.08)}}

/* spin page: both answers above the fold */
#v-spin h1{font-size:clamp(1.9rem,9vw,2.5rem);margin:4px 0 6px}
#v-spin .sub{margin-bottom:6px;font-size:.98rem}
#v-spin .machine{margin:12px 0 16px}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.row2 .btn{padding:15px 8px;font-size:1rem}
#v-spin .devil{margin:16px 0 4px}
.machine .window{min-height:118px;padding:14px}
.reel{font-size:1.25rem}

/* map labels: same small caps style, side quest in red */
.map .lbl-usual,.map .lbl-side{font:700 9px "DM Sans",sans-serif;letter-spacing:.12em;text-transform:uppercase}
.map .lbl-usual{fill:var(--mute)}
.map .lbl-side{fill:var(--redt);opacity:1}
.map.off .lbl-side{opacity:1}

/* wall report */
.wallbg .msg .rep{background:none;border:0;padding:0;font:inherit;color:inherit;text-decoration:underline;cursor:pointer}
.wallbg .msg.gone{font:500 .85rem "DM Sans",sans-serif;color:#6f625c;text-shadow:none}

/* ===== coming-soon card art ===== */
.cardx .art{height:150px;margin:-4px -6px 12px;border-radius:14px;background:var(--bg);border:0;overflow:hidden;position:relative;display:flex;align-items:center;justify-content:center}
.cardx .art svg{height:100%;width:auto}
/* shirt + scan */
.a-shirt .tee{fill:var(--red);stroke:var(--ink);stroke-width:2.5;stroke-linejoin:round}
.a-shirt .qbg{fill:#fff;stroke:var(--ink);stroke-width:2}
.a-shirt .qd{fill:var(--ink)}
.a-shirt .beam{fill:#ffc531;animation:beam 1.8s ease-in-out infinite;opacity:.9}
@keyframes beam{0%,100%{transform:translateY(0)}50%{transform:translateY(36px)}}
.a-shirt .phone rect{fill:var(--card);stroke:var(--ink);stroke-width:2.5}
.a-shirt .phone .scr{fill:var(--bg);stroke-width:1.5}
.a-shirt .pl{fill:var(--mute);stroke:none!important;opacity:.5}
.a-shirt .pstar{fill:#ffc531;stroke:var(--ink);stroke-width:2;transform-box:fill-box;transform-origin:center;animation:pstar 1.8s ease-in-out infinite}
@keyframes pstar{0%,40%{transform:scale(0)}60%{transform:scale(1.25)}75%,100%{transform:scale(1)}}
.a-shirt .ray{fill:none;stroke:var(--ink);stroke-width:2;stroke-dasharray:3 6;animation:march 1s linear infinite}
@keyframes march{to{stroke-dashoffset:-18}}
/* shirtless pass */
.art.pass{justify-content:space-around;padding:0 6px}
.art.pass svg{height:150px;flex:none}
.a-guy .skin{fill:#e9b48f;stroke:var(--ink);stroke-width:2.5;stroke-linejoin:round}
.a-guy .hair{fill:var(--ink)}
.a-guy .shades{fill:var(--ink);stroke:var(--ink);stroke-width:2;stroke-linejoin:round}
.a-guy .smile,.a-guy .line{fill:none;stroke:#7a3e22;stroke-width:2;stroke-linecap:round}
.a-guy .cord{fill:none;stroke:var(--red);stroke-width:3}
.a-guy .badge{fill:#fff;stroke:var(--ink);stroke-width:2}
.a-guy .bt{font:400 9px "Bagel Fat One",sans-serif;fill:var(--red);text-anchor:middle}
.a-guy .lanyard{transform-origin:75px 76px;animation:swing 2.6s ease-in-out infinite}
@keyframes swing{0%,100%{transform:rotate(-6deg)}50%{transform:rotate(6deg)}}
.a-guy .spark{fill:#ffc531;stroke:var(--ink);stroke-width:1.2;transform-box:fill-box;transform-origin:center;animation:twinkle 1.6s ease-in-out infinite}
.a-guy .s2{animation-delay:.8s}
@keyframes twinkle{0%,100%{transform:scale(.3);opacity:.3}50%{transform:scale(1.1);opacity:1}}
.lb{flex:1;max-width:150px;display:grid;gap:7px;font-size:.78rem;font-weight:700}
.lbh{font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--mute)}
.lr{display:grid;grid-template-columns:42px 1fr 16px;align-items:center;gap:6px}
.lr i{display:block;height:10px;border-radius:99px;background:var(--red);border:1.5px solid var(--ink);width:var(--w);animation:grow 3.2s ease-out infinite;animation-delay:var(--d)}
.lr:first-of-type i{background:#ffc531}
@keyframes grow{0%{width:4%}55%,100%{width:var(--w)}}
/* squad */
.art.squad{gap:6px;align-items:flex-end;padding-bottom:22px}
.art.squad svg{height:64px;width:auto;animation:hop 1.6s ease-in-out infinite}
.art.squad svg path{stroke:var(--ink);stroke-width:2.5;stroke-linejoin:round}
.art.squad svg rect{fill:#fff;stroke:var(--ink);stroke-width:1.5}
.art.squad svg:nth-of-type(1) path{fill:var(--red)}
.art.squad svg:nth-of-type(2) path{fill:var(--ink)}.art.squad svg:nth-of-type(2){animation-delay:.2s}
.art.squad svg:nth-of-type(3) path{fill:#ffc531}.art.squad svg:nth-of-type(3){animation-delay:.4s}
.art.squad svg:nth-of-type(4) path{fill:var(--blush)}.art.squad svg:nth-of-type(4){animation-delay:.6s}
@keyframes hop{0%,60%,100%{transform:translateY(0)}30%{transform:translateY(-18px)}}
.art.squad .crown{position:absolute;top:18px;left:calc(50% - 95px);font-size:1.5rem;animation:crown 6.4s steps(1) infinite}
@keyframes crown{0%{left:calc(50% - 95px)}25%{left:calc(50% - 35px)}50%{left:calc(50% + 28px)}75%{left:calc(50% - 35px)}}
/* quest packs */
.art.packs{perspective:600px}
.pk{position:absolute;width:86px;height:118px;border:2.5px solid var(--ink);border-radius:12px;display:grid;place-content:center;text-align:center;gap:2px;box-shadow:3px 3px 0 var(--ink);transform-origin:50% 120%;animation:fan 4s ease-in-out infinite}
.pk em{font-style:normal;font-size:1.6rem}
.pk b{font:400 1.05rem "Bagel Fat One",sans-serif}
.pk small{font-size:.65rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase}
.p1{background:#2a5bd7;color:#fff;--r:-24deg;--x:-66px}
.p2{background:var(--red);color:#fff;--r:-8deg;--x:-22px}
.p3{background:#ffc531;color:var(--ink);--r:8deg;--x:22px}
.p4{background:var(--card);color:var(--ink);--r:24deg;--x:66px}
@keyframes fan{0%,12%,100%{transform:translateX(0) rotate(0)}38%,80%{transform:translateX(var(--x)) rotate(var(--r))}}
@media (prefers-reduced-motion:reduce){.cardx .art *, .coupon::after{animation:none!important}.pk{transform:translateX(var(--x)) rotate(var(--r))}}
.pk{width:72px;height:104px}
.pk b{font-size:.92rem}
.pk em{font-size:1.4rem}
.p1{--r:-18deg;--x:-58px}.p2{--r:-6deg;--x:-19px}.p3{--r:6deg;--x:19px}.p4{--r:18deg;--x:58px}
.art.packs{align-items:flex-start;padding-top:10px}
.pk{transform-origin:50% 230%}
.p1{--r:-27deg;--x:0px}.p2{--r:-9deg;--x:0px}.p3{--r:9deg;--x:0px}.p4{--r:27deg;--x:0px}
.pk{width:64px;height:92px;transform-origin:50% 300%}
.pk b{font-size:.8rem}.pk em{font-size:1.25rem}.pk small{font-size:.58rem}
.p1{--r:-24deg}.p2{--r:-8deg}.p3{--r:8deg}.p4{--r:24deg}

/* ===== v6 ===== */
.light.wlbox{box-shadow:none}
.ticket{box-shadow:none}
/* map */
.map .trailpath{fill:none;stroke:none}
.map .road{opacity:.9}
.map .goal{transform-box:fill-box;transform-origin:center;will-change:transform}
.map .goal.on{animation:starpop .45s cubic-bezier(.2,1.8,.4,1) both}
@keyframes starpop{from{transform:scale(.5)}to{transform:scale(1)}}
.map .goal.on .rays{animation:rays 1.4s ease-in-out .45s infinite}
.machine.won{animation:glow 1.6s ease-in-out .3s 2}
/* squad QR */
.art.squad .mq .b{fill:#fff;stroke:var(--ink);stroke-width:1.2}
.art.squad .mq .d{fill:var(--ink);stroke:none}
/* the new guy */
.a-guy .skin{fill:#d9a27c;stroke:var(--ink);stroke-width:2;stroke-linejoin:round}
.a-guy .shade{fill:#bf8560;stroke:none}
.a-guy .stub{fill:#6b4a36;opacity:.22}
.a-guy .ln{fill:none;stroke:#7a4a2e;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.a-guy .hair{fill:#2a1a12;stroke:var(--ink);stroke-width:1.5;stroke-linejoin:round}
.a-guy .brow{fill:none;stroke:#2a1a12;stroke-width:2.2;stroke-linecap:round}
.a-guy .eye{fill:none;stroke:var(--ink);stroke-width:2;stroke-linecap:round}
.a-guy .smile{fill:none;stroke:var(--ink);stroke-width:1.8;stroke-linecap:round}
.a-guy .lanyard{transform-origin:75px 54px}
.igline{margin-top:10px;font-weight:700}
.igline a{color:var(--redt)}

/* ===== v7 =====*/
.cardx .art{border:0;background:rgba(27,20,18,.035)}
.coupon{transform:none}
.tagl{font-size:.85rem;font-weight:700;color:var(--redt)!important;margin:0 0 4px!important}
/* squad: each shirt carries its own crown */
.art.squad .sq{position:relative;display:block;animation:hop 1.6s ease-in-out infinite}
.art.squad .sq svg{animation:none;display:block}
.art.squad .sq:nth-child(2){animation-delay:.2s}.art.squad .sq:nth-child(3){animation-delay:.4s}.art.squad .sq:nth-child(4){animation-delay:.6s}
.art.squad .sq:nth-child(1) path:first-child{fill:var(--red)}
.art.squad .sq:nth-child(2) path:first-child{fill:var(--ink)}
.art.squad .sq:nth-child(3) path:first-child{fill:#ffc531}
.art.squad .sq:nth-child(4) path:first-child{fill:var(--blush)}
.art.squad .crown{position:absolute;top:-30px;left:50%;transform:translateX(-50%);font-size:1.5rem;line-height:1;opacity:0;animation:crownon 6.4s steps(1) infinite}
.art.squad .sq:nth-child(2) .crown{animation-delay:1.6s}.art.squad .sq:nth-child(3) .crown{animation-delay:3.2s}.art.squad .sq:nth-child(4) .crown{animation-delay:4.8s}
@keyframes crownon{0%{opacity:1}25%,100%{opacity:0}}
/* the guy */
.a-guy .skin{fill:#cf9670;stroke:var(--ink);stroke-width:2;stroke-linejoin:round}
.a-guy .sh{fill:#9a5d3c;opacity:.38;stroke:none}
.a-guy .hl{fill:#f0c4a2;opacity:.6;stroke:none}
.a-guy .ln{fill:none;stroke:#6e3f25;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.a-guy .stub{fill:#3d2a1f;opacity:.28}
.a-guy .hair{fill:#1d130e;stroke:var(--ink);stroke-width:1.5;stroke-linejoin:round}
.a-guy .curl{fill:none;stroke:#4a3428;stroke-width:1.3;stroke-linecap:round}
.a-guy .fade{fill:#1d130e;opacity:.45}
.a-guy .brow{stroke:#1d130e;stroke-width:2.6;stroke-linecap:round;fill:none}
.a-guy .lid{fill:none;stroke:var(--ink);stroke-width:2.2;stroke-linecap:round}
.a-guy .iris{fill:#2b1a12}
.a-guy .lip{fill:none;stroke:#6e3f25;stroke-width:1.8;stroke-linecap:round}
.a-guy .bt{font-size:6.5px}
.a-guy .lanyard{transform-origin:75px 52px}
.a-guy .nip{fill:#8a4f33}
.a-guy .bt{font-size:8px}
.a-guy .lanyard{transform-origin:100px 60px}
.a-guy .ln{stroke-width:1.8}
.a-guy .skin{stroke-width:2.4}
.a-guy .stub{opacity:.16}
/* Shirtless Pass guy: illustration + swinging pass on top */
.art.pass .guy{position:relative;height:150px;aspect-ratio:454/600;flex:none;align-self:flex-end}
.art.pass .guy img{display:block;height:100%;width:100%}
.art.pass .guy svg.a-guy{position:absolute;inset:0;height:100%;width:100%}
.a-guy .cord{fill:none;stroke:var(--red);stroke-width:14}
.a-guy .badge{fill:#fff;stroke:var(--ink);stroke-width:9}
.a-guy .bt{font:400 38px "Bagel Fat One",sans-serif;fill:var(--red);text-anchor:middle}
.a-guy .lanyard{transform-origin:457px 430px}
.a-guy .spark{stroke-width:5}
.art.pass{align-items:flex-end}
.art.pass .lb{align-self:center}

/* Dashed lines are used only for the launch-discount coupon and the map routes: never with a solid line or a shadow on the same element. */
/* the eyes peek out once every 30 seconds */
.peek{opacity:0;animation:peek30 30s ease-in-out 3s infinite}
@keyframes peek30{
  0%{opacity:0;transform:translateY(6px) rotate(0)}
  1.5%{opacity:1;transform:translateY(0) rotate(0)}
  3%{transform:rotate(-14deg) translateY(-3px)}
  4.5%{transform:rotate(12deg) translateY(-3px)}
  6%{opacity:1;transform:rotate(0)}
  7.5%,100%{opacity:0;transform:translateY(6px)}}
@media (prefers-reduced-motion:reduce){.peek{animation:none;opacity:1}}

/* ===== background routes ===== */
.bgmap{position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;opacity:.13}
.bgmap path{fill:none;stroke:var(--ink);stroke-width:2;stroke-dasharray:2 9;stroke-linecap:round;animation:wander 26s linear infinite}
.bgmap path.r{stroke:var(--red);animation-duration:34s;animation-direction:reverse}
.bgmap .x{stroke:var(--red);stroke-width:3;stroke-dasharray:none;animation:none}
@keyframes wander{to{stroke-dashoffset:-220}}
.wrap{position:relative;z-index:1}
.quote~*,#v-quote{position:relative}
@media (prefers-reduced-motion:reduce){.bgmap path{animation:none}}

/* ===== home ===== */
.hsub{max-width:32ch;margin:0 auto 6px;color:var(--mute)}
.heroart{display:flex;justify-content:center;margin:4px 0 14px}
.heroart svg{width:100%;max-width:330px;height:auto}
.tiles{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.tile{background:var(--card);border:2.5px solid var(--ink);border-radius:18px;padding:14px;box-shadow:var(--sh);display:grid;gap:4px}
.tile em{font-style:normal;font-size:1.7rem;line-height:1}
.tile b{font-size:1rem;line-height:1.2}
.tile span{font-size:.88rem;color:var(--mute);line-height:1.35}
.tile:nth-child(2){transform:rotate(.8deg)}.tile:nth-child(3){transform:rotate(-.8deg)}
.gets{display:grid;gap:10px;margin-bottom:6px}
.gets div{display:grid;gap:2px;padding:12px 14px 12px 44px;position:relative;background:var(--card);border:2.5px solid var(--ink);border-radius:16px}
.gets div::before{content:"★";position:absolute;left:14px;top:11px;color:var(--red);font-size:1.15rem}
.gets div:last-child{background:var(--blush)}
.gets b{font-size:1rem}.gets span{color:var(--mute);font-size:.93rem}
.faq{display:grid;gap:10px}
.faq details{background:var(--card);border:2.5px solid var(--ink);border-radius:16px;padding:0 16px}
.faq summary{cursor:pointer;font-weight:700;padding:14px 26px 14px 0;list-style:none;position:relative}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";position:absolute;right:0;top:9px;font:400 1.5rem "Bagel Fat One",sans-serif;color:var(--redt)}
.faq details[open] summary::after{content:"–"}
.faq details p{color:var(--mute);padding:0 0 14px;margin:0}
.light-q{color:#ffb4a8;margin-bottom:4px}
.footlinks{display:flex;justify-content:center;flex-wrap:wrap;gap:8px 20px;padding:10px 0 0;font-weight:700}
.footlinks a{color:var(--ink)}
