/* Plan Your Fringe · 2026 programme-cover skin
   Palette lifted from the official Fringe 2026 cover:
   hot magenta field, white chunky type, kaleidoscope shards. */
:root{
  --mag:#E0057E;
  --mag-deep:#B8005F;
  --mag-hot:#FF2FA4;
  --plum:#2B0630;
  --cream:#FFF7EE;
  --blue:#2E6BF0;
  --purple:#7B2FBE;
  --gold:#FFB627;
  --white:#FFFFFF;
  --ease:cubic-bezier(.32,.72,0,1);
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  font-family:"Satoshi",system-ui,sans-serif;
  background:
    radial-gradient(120% 90% at 85% -10%, var(--mag-hot) 0%, transparent 55%),
    radial-gradient(120% 100% at 0% 110%, var(--mag-deep) 0%, transparent 60%),
    var(--mag);
  background-attachment:fixed;
  color:var(--white);
  line-height:1.55;
  min-height:100dvh;
  overflow-x:hidden;
}
::selection{background:var(--plum);color:var(--white)}
button{font-family:inherit;cursor:pointer}
h1,h2,.wordmark,.big-type{font-family:"Clash Display","Satoshi",sans-serif}

/* ---------- kaleidoscope shards (fixed, decorative) ---------- */
.shards{position:fixed;inset:0;pointer-events:none;z-index:0}
.shards svg{position:absolute;width:44vw;max-width:560px;height:auto;filter:saturate(1.2);transform:var(--tf);opacity:var(--op);animation:spinOut 1.15s cubic-bezier(.22,1,.36,1) var(--d,0s) both}
.shards .s1{top:-10vw;right:-8vw;--tf:rotate(14deg);--op:.95;--cx:-28vw;--cy:34vh;--d:.05s}
.shards .s2{bottom:-13vw;left:-10vw;--tf:rotate(-40deg) scale(.8);--op:.7;--cx:30vw;--cy:-30vh;--d:.14s}
.shards .s3{top:-8vw;left:-12vw;--tf:rotate(70deg) scale(.6);--op:.5;--cx:32vw;--cy:32vh;--d:.22s}
.shards .s4{top:38%;right:-14vw;--tf:rotate(-115deg) scale(.55);--op:.45;--cx:-30vw;--cy:0vh;--d:.3s}
.shards .s5{bottom:-6vw;right:22vw;--tf:rotate(160deg) scale(.4);--op:.4;--cx:-6vw;--cy:-34vh;--d:.38s}
@keyframes spinOut{from{transform:translate(var(--cx),var(--cy)) var(--tf) rotate(-560deg) scale(.04);opacity:0}60%{opacity:var(--op)}to{transform:var(--tf);opacity:var(--op)}}
@media(max-width:700px){.shards .s1{--op:.6}.shards .s2{--op:.4}.shards .s3,.shards .s4,.shards .s5{--op:.25}}
@media(prefers-reduced-motion:reduce){.shards svg{animation:none}}
/* hero content rises in behind the shards */
.hero__eyebrow,.hero__title,.hero__sub,.hero__ctas,.hero__indie{animation:riseIn .7s cubic-bezier(.22,1,.36,1) both}
.hero__eyebrow{animation-delay:.35s}
.hero__title{animation-delay:.45s}
.hero__sub{animation-delay:.58s}
.hero__ctas{animation-delay:.7s}
.hero__indie{animation-delay:.82s}
@keyframes riseIn{from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.hero__eyebrow,.hero__title,.hero__sub,.hero__ctas,.hero__indie{animation:none}}

/* ---------- screens ---------- */
.screen{position:relative;z-index:1;display:none;min-height:100dvh;padding:0 clamp(18px,4vw,44px)}
.screen.is-active{display:flex;flex-direction:column;animation:screenIn .5s var(--ease) both}
.screen.is-leaving{animation:screenOut .32s var(--ease) both}
@keyframes screenIn{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}
@keyframes screenOut{from{opacity:1}to{opacity:0;transform:translateY(-14px)}}
@media(prefers-reduced-motion:reduce){
  .screen.is-active,.screen.is-leaving{animation:none}
  html{scroll-behavior:auto}
}

/* ---------- top bar ---------- */
.top{position:relative;z-index:2;display:flex;align-items:center;justify-content:flex-end;gap:14px;padding:20px clamp(18px,4vw,44px) 0}
.startover{margin-right:auto;display:inline-flex;align-items:center;gap:6px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.3);color:var(--white);font-weight:700;font-size:12px;padding:7px 13px;border-radius:999px;opacity:.85;transition:opacity .3s,background .3s}
.startover:hover{opacity:1;background:rgba(255,255,255,.24)}
body.on-hero .startover{display:none}
body.on-thanks .startover{background:rgba(43,6,48,.05);border-color:rgba(43,6,48,.22);color:var(--plum)}
body.on-result .top__nav{display:none}
.wordmark{font-weight:700;font-size:clamp(1.15rem,2.6vw,1.5rem);letter-spacing:-.02em;color:var(--white);text-decoration:none;line-height:1}
.wordmark small{display:block;font-family:"Satoshi",sans-serif;font-weight:700;font-size:.5em;letter-spacing:.14em;text-transform:uppercase;opacity:.85;margin-top:3px}
.top__nav{display:none}
.navlink{background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.35);color:var(--white);font-weight:700;font-size:13px;padding:9px 16px;border-radius:999px;text-decoration:none;white-space:nowrap;transition:background .4s var(--ease),transform .4s var(--ease)}
@media(max-width:420px){.navlink{font-size:12px;padding:8px 12px}}
.hero__marquee{display:none}
body.on-hero{overflow:hidden;height:100dvh}
body.on-hero .top__nav{display:none}
body.on-hero #openMap{display:none}
body.on-hero .hero__factline{display:none}
.navlink:hover{background:rgba(255,255,255,.26)}
.navlink:active{transform:scale(.96)}
.navlink--solid{background:var(--plum);border-color:var(--plum)}
.navlink--solid:hover{background:#43104A}
.navlink[aria-current="true"]{background:var(--white);color:var(--mag-deep);border-color:var(--white)}

/* ---------- hero ---------- */
.hero__stage{flex:1;display:flex;flex-direction:column;justify-content:center;max-width:880px;margin:0 auto;width:100%;padding:6px 0 20px;text-align:center}
@media(max-height:760px){
  .hero__title{font-size:clamp(2rem,7vw,3.6rem);margin:12px 0 12px}
  .hero__sub{font-size:clamp(.9rem,1.3vw,1.05rem)}
  .hero__ctas{margin-top:20px}
  .hero__indie{margin-top:18px;padding:12px 18px}
}
.hero__eyebrow{font-weight:700;font-size:13px;letter-spacing:.16em;text-transform:uppercase;opacity:.9}
.hero__title{font-size:clamp(2.8rem,8.4vw,6rem);font-weight:700;line-height:.98;letter-spacing:-.03em;margin:18px 0 20px;text-wrap:balance}
.hero__title em{font-style:normal;color:var(--plum)}
.hero__sub{font-size:clamp(1rem,1.6vw,1.2rem);max-width:48ch;margin:0 auto;font-weight:500}
.hero__ctas{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;margin-top:32px}
@media(max-width:700px){
  #start{font-size:17.5px;padding:18px 18px 18px 29px;animation:ctaNudge 3.4s ease-in-out 2.2s infinite}
  #start .btn__disc{width:32px;height:32px}
}
@keyframes ctaNudge{0%,86%,100%{transform:none}88%{transform:rotate(-1.6deg) scale(1.03)}90%{transform:rotate(1.6deg) scale(1.03)}92%{transform:rotate(-1.1deg) scale(1.02)}94%{transform:rotate(.8deg)}96%{transform:none}}
@media(prefers-reduced-motion:reduce){#start{animation:none}}
.btn{display:inline-flex;align-items:center;gap:10px;border:none;border-radius:999px;font-weight:700;font-size:16px;padding:16px 16px 16px 26px;text-decoration:none;transition:transform .45s var(--ease),box-shadow .45s var(--ease)}
.btn:active{transform:scale(.97)}
.btn--primary{background:var(--plum);color:var(--white);box-shadow:0 10px 34px rgba(43,6,48,.35)}
.btn--primary:hover{box-shadow:0 14px 44px rgba(43,6,48,.5)}
.btn--ghost{background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.4);color:var(--white);padding:15px 24px}
.btn--ghost:hover{background:rgba(255,255,255,.28)}
.btn__disc{width:30px;height:30px;border-radius:50%;background:var(--mag-hot);color:var(--white);display:flex;align-items:center;justify-content:center;font-size:15px;transition:transform .45s var(--ease)}
.btn:hover .btn__disc{transform:translateX(3px)}
.hero__indie{position:relative;overflow:hidden;margin:30px auto 0;max-width:560px;background:rgba(43,6,48,.34);border:2px solid rgba(255,255,255,.4);border-radius:20px;padding:16px 22px;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.hero__indie::after{content:"";position:absolute;top:-10%;bottom:-10%;left:-70%;width:45%;background:linear-gradient(105deg,transparent,rgba(255,255,255,.5) 50%,transparent);transform:skewX(-20deg);animation:indieShine 3s ease-in-out infinite;pointer-events:none}
@keyframes indieWiggle{0%{transform:rotate(0)}6%{transform:rotate(-1.3deg) scale(1.015)}12%{transform:rotate(1.5deg) scale(1.015)}18%{transform:rotate(-1deg)}24%{transform:rotate(.7deg)}30%,100%{transform:rotate(0)}}
@keyframes indieShine{0%{left:-70%}45%,100%{left:135%}}
@media(prefers-reduced-motion:reduce){.hero__indie{animation:none}.hero__indie::after{animation:none;display:none}}
.hero__indie b{display:block;font-family:"Clash Display",sans-serif;font-size:clamp(1.05rem,2.2vw,1.35rem);letter-spacing:-.01em;margin-bottom:4px}
.hero__indie .tick{color:var(--gold);font-size:.78em;font-weight:700;margin:0 8px 0 4px;vertical-align:1px}
.hero__indie b .tick:last-child{margin-right:0}
.hero__indie span{font-size:13.5px;font-weight:500;opacity:.95;line-height:1.5}
.hero__indie .hero__by{display:block;font-size:6px;font-weight:700;color:var(--gold);margin-top:5px;letter-spacing:.05em;opacity:.95}
.hero__factline{margin-top:18px;font-weight:700;font-size:13px;opacity:.85}
.linklike{background:none;border:none;color:var(--white);font-weight:700;font-size:13px;text-decoration:underline;text-underline-offset:3px;opacity:.85;transition:opacity .3s}
.linklike:hover{opacity:1}

/* marquee */
.hero__marquee{overflow:hidden;margin:0 calc(-1 * clamp(18px,4vw,44px));padding:14px 0;border-top:1px solid rgba(255,255,255,.3)}
.marquee__track{display:inline-flex;white-space:nowrap;animation:marq 60s linear infinite;font-weight:700;font-size:13px;opacity:.85}
.marquee__track span{padding-right:10px}
.marquee__track i{font-style:normal;color:var(--gold);padding-left:10px}
@keyframes marq{to{transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){.marquee__track{animation:none}}

/* ---------- quiz ---------- */
.quiz__head{display:flex;align-items:center;gap:16px;max-width:820px;width:100%;margin:26px auto 0}
.quiz__back{background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.4);color:var(--white);width:40px;height:40px;border-radius:50%;font-size:17px;transition:background .3s}
.quiz__back:hover:not(:disabled){background:rgba(255,255,255,.3)}
.quiz__back:disabled{opacity:.35;cursor:default}
.quiz__progress{flex:1;height:8px;background:rgba(255,255,255,.25);border-radius:99px;overflow:hidden}
.quiz__progress-fill{height:100%;width:14%;background:var(--white);border-radius:99px;transition:width .5s var(--ease)}
.quiz__count{font-weight:700;font-size:13px;min-width:4.2em;text-align:right}
.quiz__body{max-width:820px;width:100%;margin:0 auto;padding:34px 0 20px;flex:1}
.quiz__kicker{font-weight:700;font-size:13px;letter-spacing:.16em;text-transform:uppercase;color:var(--plum)}
.quiz__question{font-size:clamp(1.7rem,4.4vw,2.7rem);font-weight:700;letter-spacing:-.02em;line-height:1.05;margin:10px 0 8px}
[tabindex="-1"]:focus{outline:none}
.quiz__hint{font-weight:500;opacity:.92;max-width:52ch}
.chips{display:flex;flex-wrap:wrap;gap:11px;margin-top:26px}
.chips--days{display:grid;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));max-width:640px}
.chip{background:var(--white);color:var(--plum);border:2px solid transparent;border-radius:16px;padding:12px 18px;font-weight:700;font-size:15px;text-align:left;animation:chipIn .5s var(--ease) both;transition:transform .3s var(--ease),background .3s,color .3s;box-shadow:0 4px 16px rgba(43,6,48,.15)}
.chip small{display:block;font-size:11.5px;font-weight:500;opacity:.68;margin-top:2px}
.chip:hover{transform:translateY(-2px)}
.chip[aria-pressed="true"]{background:var(--plum);color:var(--white);box-shadow:0 8px 22px rgba(43,6,48,.4)}
.chip[aria-pressed="true"] small{opacity:.75}
.chip--day{text-align:center;padding:10px 6px;border-radius:14px}
.chip--day small{margin:0 0 2px;font-size:10.5px}
@keyframes chipIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes shakeX{10%,90%{transform:translateX(-2px)}20%,80%{transform:translateX(4px)}30%,50%,70%{transform:translateX(-7px)}40%,60%{transform:translateX(7px)}}
.shake{animation:shakeX .45s var(--ease) both}
@media(prefers-reduced-motion:reduce){.shake{animation:none;outline:3px solid var(--gold);outline-offset:4px;border-radius:8px}}
@media(prefers-reduced-motion:reduce){.chip{animation:none}}
.quiz__notes{display:block;width:100%;max-width:640px;margin-top:18px;background:var(--white);color:var(--plum);border:2px solid transparent;border-radius:16px;padding:14px 16px;font:500 15px/1.5 "Satoshi",sans-serif;min-height:76px;resize:vertical;box-shadow:0 4px 16px rgba(43,6,48,.15)}
.quiz__notes:focus{outline:none;border-color:var(--plum)}
.quiz__notes::placeholder{color:#B08AA5}
.quiz__foot{position:fixed;left:0;right:0;bottom:0;z-index:20;display:flex;justify-content:flex-end;padding:14px max(18px,calc((100vw - 820px)/2)) calc(24px + env(safe-area-inset-bottom));background:linear-gradient(to top,var(--mag-deep) 55%,transparent);pointer-events:none}
.quiz__foot .btn{pointer-events:auto;box-shadow:0 12px 40px rgba(43,6,48,.55)}
.quiz__foot[hidden]{display:none}
.screen--quiz{padding-bottom:140px}
.quiz__foot .btn--primary{box-shadow:0 10px 34px rgba(43,6,48,.55)}

/* ---------- machine ---------- */
.screen--machine{align-items:center;justify-content:center;text-align:center}
.machine__stage{position:relative;display:flex;flex-direction:column;align-items:center;gap:14px;padding:60px 0}
.machine__kal{position:absolute;width:420px;top:50%;left:50%;transform:translate(-50%,-58%);opacity:.28;animation:kalSpin 40s linear infinite;pointer-events:none}
@keyframes kalSpin{to{transform:translate(-50%,-58%) rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.machine__kal{animation:none}}
.machine__ring{position:relative;width:220px;height:220px}
.machine__ring svg{transform:rotate(-90deg)}
.machine__ring circle{fill:none;stroke-width:10}
.ring-bg{stroke:rgba(255,255,255,.25)}
#ringFg{stroke:var(--white);stroke-linecap:round;stroke-dasharray:553;stroke-dashoffset:553}
.machine__num{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:"Clash Display",sans-serif;font-weight:700;font-size:2.4rem;letter-spacing:-.02em}
.machine__checked{font-weight:700;font-size:15px}
.machine__checked b{color:var(--gold);font-variant-numeric:tabular-nums}
.machine__fair{font-size:13px;font-weight:700;color:var(--gold);max-width:44ch}
.machine__phase{font-weight:700;font-size:clamp(1.05rem,2.2vw,1.35rem);min-height:1.6em}
.machine__ticker{font-weight:500;font-size:13px;opacity:.8;min-height:1.5em;max-width:60ch}

/* ---------- gate ---------- */
.screen--gate{align-items:center;justify-content:center;text-align:center}
.gate__card{background:var(--white);color:var(--plum);border-radius:28px;max-width:520px;width:100%;padding:clamp(28px,5vw,44px);box-shadow:0 24px 70px rgba(43,6,48,.45);margin:40px auto}
.gate__card h2{font-size:clamp(1.6rem,4vw,2.2rem);letter-spacing:-.02em;line-height:1.05}
.gate__card p{margin:12px 0 22px;font-weight:500;opacity:.8}
.gate__card label{display:block;text-align:left;font-weight:700;font-size:13px;margin:14px 0 6px}
.gate__card input{width:100%;border:2px solid #E8D9E5;border-radius:14px;padding:13px 16px;font-size:16px;font-family:inherit;color:var(--plum);background:#FDF9FB;transition:border-color .3s}
.gate__card input:focus{outline:none;border-color:var(--mag)}
.gate__card input.is-bad{border-color:#D0021B}
.gate__err{display:block;text-align:left;color:#D0021B;font-size:12.5px;font-weight:700;margin-top:4px}
.gate__card .btn{width:100%;justify-content:center;margin-top:22px}
.gate__small{font-size:12px;opacity:.6;margin-top:14px}

/* ---------- result ---------- */
.result__wrap{max-width:820px;width:100%;margin:0 auto;padding:36px 0 60px}
.result__hello{font-size:clamp(1.9rem,5vw,3rem);font-weight:700;letter-spacing:-.02em;line-height:1.02}
.result__summary{display:flex;gap:10px;flex-wrap:wrap;margin:16px 0 8px}
.result__summary span{background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.4);border-radius:999px;padding:7px 15px;font-weight:700;font-size:13.5px}
.result__actions{display:flex;gap:12px;flex-wrap:wrap;margin:16px 0 30px}
#itinerary{margin-top:24px}

/* ---------- thanks (step 1: bubble + the two shows) ---------- */
.screen--thanks{align-items:center}
body.on-thanks .top{display:none}
.thanks__wrap{max-width:680px;width:100%;margin:auto;padding:14px 0 40px;display:flex;flex-direction:column;gap:10px}
.thanks__head{position:relative;margin-top:16px}
.thanks__face{position:absolute;left:-8px;top:-16px;z-index:2;width:58px;height:58px;border-radius:50%;object-fit:cover;border:3px solid var(--gold);box-shadow:0 8px 22px rgba(43,6,48,.3)}
.thanks__bubble{position:relative;background:rgba(43,6,48,.34);border:2px solid rgba(255,255,255,.4);border-radius:18px;padding:12px 16px 11px 58px;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.thanks__note{font-style:italic;font-size:clamp(.85rem,1.8vw,.95rem);font-weight:500;line-height:1.45}
.thanks__sig{font-size:11px;font-weight:700;color:var(--gold);margin-top:4px}
.thanks__godown{display:flex;justify-content:center}
.thanks__shows{display:grid;grid-template-columns:1fr 1fr;gap:clamp(16px,4vw,28px)}
@media(max-width:560px){.thanks__shows{grid-template-columns:1fr;gap:30px}}
.thanks-show{display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px}
.thanks-show__genre{font-weight:700;font-size:12px;letter-spacing:.16em;text-transform:uppercase;opacity:.9}
.thanks-show__art,.dosflyer{position:relative;width:100%;max-width:280px;border-radius:18px;box-shadow:0 16px 44px rgba(43,6,48,.4);transition:transform .45s var(--ease)}
.thanks-show__art{background:#141414;padding:6px}
.thanks-show__art img{display:block;width:100%;height:auto;border-radius:12px}
.dosflyer{border:6px solid #141414;box-sizing:content-box;width:calc(100% - 12px);max-width:268px}
.thanks-show:hover .thanks-show__art,.thanks-show:hover .dosflyer{transform:translateY(-3px)}
.thanks-show__book{position:relative}
.book-tag{position:absolute;z-index:2;top:-7px;left:16px;background:var(--gold);color:var(--plum);font-weight:700;
  font-size:8px;letter-spacing:.07em;text-transform:uppercase;padding:2px 7px;border-radius:999px;white-space:nowrap;
  box-shadow:0 3px 10px rgba(43,6,48,.3);transform:rotate(-3deg);animation:tagPulse 2.4s ease-in-out infinite}
@keyframes tagPulse{0%,100%{transform:rotate(-3deg) scale(1)}50%{transform:rotate(-3deg) scale(1.08)}}
@media(prefers-reduced-motion:reduce){.book-tag{animation:none}}
.thanks-show__when{font-size:13px;font-weight:700;opacity:.92}
.thanks-show__book{width:100%;max-width:240px;justify-content:center;font-size:14px;padding:11px 14px}
.thanks__go{display:flex;flex-direction:column;align-items:center;margin-top:2px}
.btn--go{background:var(--white);color:var(--mag-deep);font-size:20px;padding:17px 22px 17px 32px;box-shadow:0 14px 44px rgba(43,6,48,.4)}
.btn--go .btn__disc{width:34px;height:34px;font-size:17px}
.btn--go:hover{box-shadow:0 18px 54px rgba(43,6,48,.55)}
.btn--go .btn__disc{background:var(--mag)}
.thanks__mailed{font-size:12.5px;font-weight:700;opacity:.85;text-align:center;margin-top:-4px}
body.on-thanks .top__nav{display:none}
/* thanks page goes white — same shards, everything else stays magenta */
body.on-thanks{background:var(--white)}
body.on-thanks .thanks__wrap{color:var(--plum)}
body.on-thanks .thanks__bubble{background:#fff;border-color:rgba(43,6,48,.14);box-shadow:0 14px 44px rgba(43,6,48,.12)}
body.on-thanks .thanks__bubble::before{border-right-color:rgba(43,6,48,.14)}
body.on-thanks .thanks__sig{color:var(--mag-deep)}
body.on-thanks .thanks-show__genre{color:var(--mag-deep);opacity:1}
body.on-thanks .btn--go{background:var(--mag);color:var(--white);box-shadow:0 14px 44px rgba(224,5,126,.35)}
body.on-thanks .btn--go:hover{box-shadow:0 18px 54px rgba(224,5,126,.5)}
body.on-thanks .btn--go .btn__disc{background:var(--white);color:var(--mag-deep)}
@media(max-width:700px){body.on-thanks .thanks__go{background:linear-gradient(to top,#fff 55%,transparent)}}
/* screenIn's retained transform would trap the fixed CTA inside the section */
.screen--thanks.is-active{animation-fill-mode:backwards}
@media(max-width:700px){
  .thanks__go .btn--go,.thanks__godown .btn--go{width:100%;max-width:420px;justify-content:center}
}
/* desktop: no top pill needed (everything's in view) — breathe instead */
@media(min-width:701px){
  .thanks__godown{display:none}
  .thanks__wrap{gap:16px;padding:18px 0 30px}
  .thanks__head{margin-top:14px}
  .thanks__shows{gap:clamp(28px,6vw,48px)}
  .thanks-show__art,.dosflyer{max-width:240px}
  .dosflyer{max-width:228px}
  .thanks__go{margin-top:4px}
  .thanks__mailed{margin-top:0}
}

/* the Dies On Stage panel, composed live in the show's own style.
   Everything is sized in cqw so the whole poster scales as one piece
   whatever width the column gives it (px values are the no-cq fallback). */
.dosflyer{position:relative;aspect-ratio:640/1049;overflow:hidden;container-type:inline-size;
  background:radial-gradient(120% 92% at 50% 26%,#C8431E 0%,#B4300F 52%,#A22508 100%)}
.dosflyer::after{content:"";position:absolute;inset:0;z-index:6;pointer-events:none;opacity:.07;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
.dosflyer__reaper{position:absolute;left:50%;bottom:27px;bottom:9cqw;transform:translateX(-48%);z-index:2;
  height:294px;height:98cqw;width:auto;max-width:none;filter:blur(2px);opacity:.75}
.dosflyer__david{position:absolute;left:50%;bottom:-9px;bottom:-3cqw;transform:translateX(-46%);z-index:3;
  height:315px;height:105cqw;width:auto;max-width:none;filter:drop-shadow(0 18px 30px rgba(30,4,0,.5))}
.dosflyer__top{position:absolute;top:0;left:0;right:0;z-index:5;padding:30px 0 0;padding:10cqw 0 0;color:#141414}
.dosflyer__name{font-weight:700;font-size:9px;font-size:3cqw;letter-spacing:.28em;text-transform:uppercase;color:#141414;white-space:nowrap}
.dosflyer__title{font-family:"Fraunces",serif;font-weight:900;font-style:italic;font-size:39px;font-size:13cqw;
  line-height:.98;letter-spacing:-.01em;margin-top:2cqw;color:#141414}
.dosflyer__sub{font-weight:700;font-size:9px;font-size:3cqw;letter-spacing:.14em;text-transform:uppercase;color:#141414;opacity:.85;margin-top:3cqw;white-space:nowrap}
.dosflyer__foot{position:absolute;left:0;right:0;bottom:8px;bottom:2.4cqw;z-index:5;text-align:center;font-weight:700;
  font-size:9px;font-size:3cqw;letter-spacing:.18em;text-transform:uppercase;color:rgba(20,20,20,.8);white-space:nowrap}
.screen--thanks.is-active .thanks__head{animation:riseIn .6s var(--ease) .08s both}
.screen--thanks.is-active .thanks__godown{animation:riseIn .6s var(--ease) .18s both}
.screen--thanks.is-active .thanks__shows{animation:riseIn .6s var(--ease) .28s both}
@media(prefers-reduced-motion:reduce){.screen--thanks.is-active .thanks__head,.screen--thanks.is-active .thanks__godown,.screen--thanks.is-active .thanks__shows{animation:none}}
.result__bookline{font-weight:700;font-size:14.5px;margin-top:18px}
.result__foot{display:flex;gap:12px;flex-wrap:wrap;margin-top:10px}
/* keep the floating nerd FAB clear of the PDF button at the page end */
@media(max-width:600px){.result__wrap{padding-bottom:150px}}
#nerdFab{position:fixed;right:18px;bottom:18px;z-index:40;display:flex;align-items:center;gap:10px;background:var(--gold);border:none;border-radius:999px;padding:10px 16px 10px 12px;box-shadow:0 10px 30px rgba(43,6,48,.45);cursor:pointer;animation:fabFloat 2.6s ease-in-out infinite}
#nerdFab[hidden]{display:none}
.nerdFab__face{font-size:26px;line-height:1}
.nerdFab__label{font-weight:700;font-size:13px;color:var(--plum)}
@keyframes fabFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}
@media(prefers-reduced-motion:reduce){#nerdFab{animation:none}}
@media(max-width:600px){.nerdFab__label{font-size:12px}#nerdFab{padding:9px 14px 9px 11px}.nerdFab__face{font-size:22px}}

/* itinerary days */
.day{background:var(--white);color:var(--plum);border-radius:22px;padding:clamp(16px,3vw,24px);margin-bottom:16px;box-shadow:0 10px 34px rgba(43,6,48,.22)}
.day__head{font-family:"Clash Display",sans-serif;font-size:1.15rem;display:flex;gap:10px;align-items:baseline;border-bottom:2px solid #F3E3EE;padding-bottom:10px;margin-bottom:6px}
.day__head span{color:var(--mag)}
.day__empty{font-weight:500;opacity:.65;padding:10px 0 4px}
.walk{font-size:12px;font-weight:700;color:var(--purple);padding:8px 0 2px 58px}
.slot{display:flex;gap:14px;padding:12px 0}
.slot + .slot{border-top:1px dashed #F0DCEA}
.slot__time{font-family:"Clash Display",sans-serif;font-weight:700;min-width:44px;font-size:15px;padding-top:2px}
.slot__body h4{font-size:15.5px;line-height:1.3}
.slot__meta{font-size:12.5px;font-weight:700;opacity:.7;margin:3px 0}
.slot__blurb{font-size:13px;opacity:.75}
.slot--pick{position:relative;background:linear-gradient(120deg,#FFF3D6 0%,#FFE9F5 100%);border-radius:16px;padding:14px;margin:8px 0;border:2px solid var(--gold);box-shadow:0 6px 22px rgba(226,116,11,.25)}
.slot--pick + .slot{border-top:none}
.slot--pick::before{content:"";position:absolute;top:-7px;right:14px;width:26px;height:26px;background:
  conic-gradient(from 0deg,#FF2FA4 0 60deg,#FFB627 0 120deg,#2E6BF0 0 180deg,#9B4DFF 0 240deg,#3FD8F0 0 300deg,#FF7AC8 0 360deg);
  clip-path:polygon(50% 0,64% 36%,100% 50%,64% 64%,50% 100%,36% 64%,0 50%,36% 36%);}
.slot__badge{display:inline-block;background:var(--gold);color:var(--plum);font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;border-radius:99px;padding:2px 9px;margin-bottom:5px}
.slot__link{font-weight:700;font-size:12.5px;color:var(--mag-deep);text-decoration:none}
.slot__link:hover{text-decoration:underline}
.slot__row{display:flex;gap:14px;align-items:center;margin-top:8px;flex-wrap:wrap}
.slot__book{display:inline-block;background:var(--plum);color:var(--white);font-weight:700;font-size:12.5px;padding:7px 16px;border-radius:999px;text-decoration:none;transition:transform .3s var(--ease),box-shadow .3s var(--ease)}
.slot__book:hover{box-shadow:0 6px 18px rgba(43,6,48,.4);transform:translateY(-1px)}
/* David's shows woven into the day, in time order */
.slot--house{background:var(--gold);border-radius:14px;padding:12px 14px;margin:8px 0;align-items:center}
.slot--house + .slot,.slot--house + .walk + .slot{border-top:none}
.slot--house .slot__body{flex:1;min-width:0}
.slot--house h4{font-size:15px}
.slot--house .slot__meta{opacity:.8}
.slot__housetag{display:inline-block;font-size:10px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--plum);opacity:.65;margin-bottom:2px}
.slot--house .slot__book{align-self:center}
.btn--route{margin-top:12px;background:#F6E9F2;border:2px solid var(--mag);color:var(--mag-deep);font-size:14px;padding:11px 12px 11px 20px}
.btn--route:hover{background:#FBDFF0}
.btn--route .btn__disc{width:26px;height:26px;background:var(--mag)}
/* route modal */
.route-modal{position:fixed;inset:0;z-index:100;background:rgba(43,6,48,.7);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:16px}
.route-card{background:var(--white);color:var(--plum);border-radius:24px;width:min(720px,100%);max-height:92dvh;overflow:auto;box-shadow:0 30px 90px rgba(0,0,0,.5)}
.route-head{display:flex;justify-content:space-between;align-items:center;padding:18px 20px 10px}
.route-head h3{font-family:"Clash Display",sans-serif;font-size:1.25rem}
.route-close{background:#F3E3EE;border:none;width:36px;height:36px;border-radius:50%;font-size:15px;color:var(--plum)}
.route-close:hover{background:#EBD2E3}
#routeMap{height:min(46dvh,380px);margin:0 12px;border-radius:16px}
#routeMap .leaflet-tile{filter:brightness(1.5) contrast(1.06) saturate(1.1)}
.route-dot{background:var(--mag);color:var(--white);border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;border:2px solid var(--white);box-shadow:0 2px 8px rgba(0,0,0,.4)}
.walk-tip{background:var(--gold);color:var(--plum);font-weight:700;font-size:11px;border:none;border-radius:99px;padding:2px 8px;box-shadow:0 2px 8px rgba(0,0,0,.3);white-space:nowrap}
.walk-tip::before{display:none}
.route-export{padding:14px 20px 0}
.route-export .btn{width:100%;justify-content:center}
.route-tips{padding:14px 20px 20px}
#moreInfo{margin-top:8px}
.route-leg{font-weight:700;font-size:13.5px;padding:3px 0}
.route-tip{font-size:13px;opacity:.75;padding:3px 0}

/* ---------- map ---------- */
.map__wrap{max-width:1100px;width:100%;margin:0 auto;padding:30px 0 60px;flex:1;display:flex;flex-direction:column}
.map__title{font-size:clamp(1.9rem,5vw,3rem);font-weight:700;letter-spacing:-.02em;line-height:1.02}
.map__sub{font-weight:500;max-width:56ch;margin:10px 0 14px}
.map__filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}
.mfilter{background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.4);color:var(--white);font-weight:700;font-size:12.5px;padding:7px 14px;border-radius:999px;transition:background .3s}
.mfilter[aria-pressed="true"]{background:var(--white);color:var(--mag-deep)}
.map__stage{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:16px;align-items:start}
@media(max-width:900px){.map__stage{grid-template-columns:1fr}}
.map__canvas{background:var(--plum);border-radius:24px;padding:6px;box-shadow:0 18px 60px rgba(43,6,48,.5);position:relative}
#leafletMap{height:min(62vh,560px);min-height:380px;border-radius:18px;background:#1a0a1e}
#leafletMap .leaflet-tile{filter:brightness(1.5) contrast(1.06) saturate(1.1)}
.leaflet-container{font-family:"Satoshi",system-ui,sans-serif}
.leaflet-tooltip.vtip{background:var(--white);color:var(--plum);font-weight:700;font-size:12px;border:none;border-radius:8px;box-shadow:0 4px 14px rgba(43,6,48,.4)}
.leaflet-control-attribution{background:rgba(43,6,48,.7)!important;color:rgba(255,255,255,.6)!important;font-size:9px!important}
.leaflet-control-attribution a{color:rgba(255,255,255,.75)!important}
.map__panel{background:var(--white);color:var(--plum);border-radius:22px;padding:20px;box-shadow:0 14px 44px rgba(43,6,48,.35);max-height:70vh;overflow:auto}
.map__panel h3{font-family:"Clash Display",sans-serif;font-size:1.2rem;line-height:1.15}
.map__panel .vmeta{font-size:12.5px;font-weight:700;opacity:.65;margin:4px 0 12px}
.vshow{padding:9px 0;border-top:1px dashed #F0DCEA}
.vshow b{display:block;font-size:13.5px;line-height:1.3}
.vshow span{font-size:12px;opacity:.7;font-weight:500}
.vmore{font-size:12px;font-weight:700;opacity:.6;padding-top:10px}
.map__hintrow{font-size:12px;font-weight:700;opacity:.75;margin-top:10px}

/* ---------- numbers ---------- */
.numbers__wrap{max-width:1020px;width:100%;margin:0 auto;padding:36px 0 70px}
.numbers__title{font-size:clamp(2rem,5.6vw,3.4rem);font-weight:700;letter-spacing:-.02em;line-height:1}
.numbers__sub{font-weight:500;max-width:56ch;margin:14px 0 30px}
.stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
@media(max-width:900px){.stat-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.stat-grid{grid-template-columns:1fr}}
.stat{border-radius:22px;padding:22px;color:var(--plum);background:var(--white);box-shadow:0 10px 34px rgba(43,6,48,.22);transition:transform .4s var(--ease)}
.stat:hover{transform:translateY(-3px)}
.stat--plum{background:var(--plum);color:var(--white)}
.stat--gold{background:var(--gold)}
.stat--blue{background:var(--blue);color:var(--white)}
.stat .stat__num{font-family:"Clash Display",sans-serif;font-weight:700;font-size:clamp(2rem,4vw,2.8rem);line-height:1;letter-spacing:-.02em}
.stat .stat__label{font-weight:700;font-size:14px;margin-top:8px;line-height:1.35}
.stat .stat__foot{font-size:12.5px;font-weight:500;opacity:.72;margin-top:6px}
.stat--wide{grid-column:span 3}
@media(max-width:900px){.stat--wide{grid-column:span 2}}
@media(max-width:560px){.stat--wide{grid-column:span 1}}
.daychart{display:flex;align-items:flex-end;gap:3px;height:120px;margin-top:16px}
.daychart i{flex:1;background:var(--mag);border-radius:4px 4px 0 0;min-height:3px}
.daychart i.hot{background:var(--plum)}
.daychart__axis{display:flex;justify-content:space-between;font-size:11px;font-weight:700;opacity:.6;margin-top:6px}
.numbers__cta{margin-top:34px;display:flex;gap:12px;flex-wrap:wrap}

/* ---------- print (itinerary fallback) ---------- */
@media print{
  body{background:#fff;color:#000;padding:0}
  .top,.shards,.result__actions,.hero__marquee{display:none!important}
  .screen{display:none}
  .screen--result{display:block!important}
  .day{box-shadow:none;border:1px solid #ddd}
}
