/* Magicians Keep: Gimbly’s Chamber, the belfry at the top of the tower: where Gimbly will be, and how to book a show. */
.nav .here{opacity:1;text-decoration:underline;text-decoration-color:var(--glow);text-underline-offset:6px}
.chip{display:inline-block;padding:6px 12px;background:rgba(8,8,15,.55);border:1px solid rgba(236,227,207,.22);border-radius:10px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:var(--text-primary);text-shadow:0 1px 3px rgba(5,5,10,.85)}
@keyframes rise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
@keyframes candle{0%,100%{opacity:.18}45%{opacity:.75}62%{opacity:.5}}

/* ===== The first picture: the belfry ===== */
.entry{position:relative;z-index:1;min-height:calc(100vh - 60px);min-height:calc(100svh - 60px);display:grid;align-items:end;padding:calc(var(--nav-h) + 24px) var(--gutter) clamp(44px,9vh,96px);overflow:hidden;isolation:isolate}
.entry picture,.entry picture img{position:absolute;inset:0;width:100%;height:100%;z-index:-3}
.entry picture img{object-fit:cover;object-position:60% 50%;max-width:none;animation:stepIn 2.8s var(--ease-out) both}
@keyframes stepIn{from{transform:scale(1.07)}to{transform:none}}
.entry::before{content:"";position:absolute;inset:0;z-index:-2;background:
  linear-gradient(to top,rgba(14,16,22,.95) 0%,rgba(14,16,22,.6) 30%,rgba(14,16,22,0) 60%),
  linear-gradient(to right,rgba(14,16,22,.84) 0%,rgba(14,16,22,.4) 38%,rgba(14,16,22,0) 62%)}
.entry-copy{position:relative;z-index:2;max-width:640px;text-shadow:var(--tshadow);animation:rise 1.1s var(--ease-out) .25s both}
.entry .chip{margin-bottom:20px}
.entry h1{font-size:clamp(3rem,6.6vw,6.2rem);max-width:11ch}
.entry .sub{margin-top:20px;max-width:38ch;font-size:clamp(1.12rem,1.5vw,1.32rem);line-height:1.5}
.entry .ctas{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}
/* the bell on the button swings when it rings */
.bell-ico{width:20px;height:20px;flex:none;transform-origin:50% 8%}
.ringing .bell-ico{animation:swing 1.2s cubic-bezier(.3,.6,.3,1)}
@keyframes swing{0%{transform:rotate(0)}15%{transform:rotate(22deg)}35%{transform:rotate(-16deg)}55%{transform:rotate(10deg)}75%{transform:rotate(-5deg)}100%{transform:rotate(0)}}
.entry.rung::after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(ellipse var(--bell-rx,30%) var(--bell-ry,40%) at var(--bell-x,63%) var(--bell-y,32%),rgba(255,214,150,.22),rgba(255,214,150,0) 70%);animation:ring 1.6s var(--ease-out) forwards}
@keyframes ring{0%{opacity:0}15%{opacity:1}100%{opacity:0}}
/* on a phone the words would cover the bell rope, so the picture gets the screen to itself and the words follow below it */
@media (max-width:720px){
  .entry{display:block;min-height:0;padding:0 0 clamp(36px,8vw,56px)}
  .entry picture{position:relative;display:block;height:min(74svh,620px)}
  /* a slice of the computer painting: the arches, with the bell and its rope */
  .entry picture img{position:absolute;inset:0}
  html body .entry picture img{object-position:70% 50%}
  .entry::before{bottom:auto;height:min(74svh,620px);background:linear-gradient(to top,rgba(23,27,36,1) 0%,rgba(23,27,36,.55) 16%,rgba(14,16,22,0) 34%)}
  .entry-copy{margin-top:-44px;padding:0 var(--gutter)}
}

/* ===== I. Where Gimbly will be ===== */
.show-tabs{display:flex;flex-wrap:wrap;gap:8px;margin-top:clamp(24px,3vw,32px)}
.show-tabs[hidden]{display:none}
.show-tabs .pill{display:inline-flex;align-items:baseline;gap:8px;padding:.5em 1.05em;border-radius:999px;border:1px solid var(--line-strong);background:transparent;color:var(--text-primary);font:inherit;font-weight:700;font-size:.98rem;line-height:1.2;cursor:pointer;transition:border-color .35s var(--ease-out),background-color .35s var(--ease-out)}
.show-tabs .pill span{font-family:var(--f-mono);font-weight:400;font-size:.8rem;color:var(--text-secondary)}
.show-tabs .pill:hover{border-color:var(--text-primary)}
.show-tabs .pill[aria-pressed="true"]{border-color:var(--glow);background:rgba(227,168,90,.12);color:#f3d9a8}
@media (pointer:coarse){.show-tabs .pill{min-height:44px;align-items:center}}
.show-list{list-style:none;margin:clamp(24px,3.4vw,36px) 0 0;padding:0;display:grid;gap:16px}
.show-list>.show{display:grid;grid-template-columns:92px minmax(0,1fr) auto;gap:clamp(16px,3vw,32px);align-items:center;padding:clamp(18px,2.6vw,26px);border-radius:16px;
  background:linear-gradient(165deg,rgba(42,48,68,.72),rgba(28,33,48,.55));border:1px solid var(--line);animation:rise .6s var(--ease-out) both;animation-delay:calc(var(--i,0) * 70ms)}
.show-list>.show.festival{border-color:rgba(95,211,196,.3)}
.when{display:flex;flex-direction:column;align-items:center;justify-content:center;width:92px;min-height:98px;padding:8px 4px;border-radius:12px;text-align:center;color:#2a211a;
  background:radial-gradient(120% 70% at 20% 0%,rgba(255,255,255,.45),transparent 60%),#ecdfc2;box-shadow:0 10px 24px rgba(0,0,0,.35),inset 0 0 18px rgba(120,90,50,.2)}
.when .mon{font-family:var(--f-mono);font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:#8a2a1f}
.when .day{font-family:var(--f-display);font-size:2.3rem;line-height:1.05}
.show-list>.show.festival .when .day{font-size:1.45rem;line-height:1.2}
.when .dow{font-family:var(--f-mono);font-size:.72rem;letter-spacing:.06em;color:#6a5a48}
.what{min-width:0}
.what .kind{display:inline-flex;align-items:center;gap:8px;font-family:var(--f-mono);font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;color:var(--glow)}
.show-list>.show.festival .what .kind{color:var(--teal)}
.what .sample{padding:.1em .5em;border-radius:6px;border:1px dashed rgba(236,227,207,.45);color:var(--text-secondary);letter-spacing:.06em}
.what h3{margin-top:6px;font-size:clamp(1.6rem,2.6vw,2.1rem)}
.what .where{margin-top:6px;color:var(--text-secondary)}
.what .times{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:12px}
.what .days{margin-right:4px;font-size:.98rem;color:var(--text-secondary)}
.what .time{padding:.22em .7em;border-radius:999px;border:1px solid rgba(227,168,90,.45);background:rgba(227,168,90,.08);font-family:var(--f-mono);font-size:.82rem;color:#f3d9a8}
.what .note{margin-top:10px;font-size:.98rem;color:var(--text-secondary);max-width:56ch}
.act{display:flex;flex-direction:column;align-items:flex-end;gap:10px;text-align:right}
.act .price{font-family:var(--f-display);font-size:1.7rem;line-height:1}
.act .soon{font-family:var(--f-mono);font-size:.82rem;letter-spacing:.04em;color:var(--text-secondary)}
.act .btn{white-space:nowrap}
.linkish{padding:0;border:0;background:none;color:var(--glow);font:inherit;font-size:.96rem;text-decoration:underline;text-decoration-color:rgba(227,168,90,.5);text-underline-offset:4px;cursor:pointer}
.linkish:hover{color:#f3d9a8}
.linkish:focus-visible{outline:2px solid var(--accent-bright);outline-offset:3px;border-radius:2px}
.show-empty{margin-top:28px;padding:30px 24px;text-align:center;border-radius:16px;border:1px dashed var(--line-strong);background:rgba(14,16,22,.4)}
.show-empty[hidden]{display:none}
.show-empty p{font-family:var(--f-display);font-size:1.7rem}
.show-empty .fine2{margin-top:6px;font-family:var(--f-body);font-size:1.04rem;color:var(--text-secondary)}
@media (max-width:720px){
  .show-list>.show{grid-template-columns:76px minmax(0,1fr);align-items:start}
  .when{width:76px;min-height:84px}
  .when .day{font-size:2rem}
  .show-list>.show.festival .when .day{font-size:1.2rem}
  .act{grid-column:1 / -1;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:space-between;text-align:left;gap:10px 16px;padding-top:14px;border-top:1px solid var(--line)}
}

/* ===== II. The packages ===== */
.sec-book{background:linear-gradient(to bottom,transparent,rgba(28,33,48,.55) 16%,rgba(28,33,48,.55) 84%,transparent)}
.book{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:clamp(36px,6vw,88px);align-items:center;margin-top:clamp(40px,6vw,64px)}
.portrait{position:relative;aspect-ratio:4/5;border-radius:999px 999px 18px 18px;overflow:hidden;background:var(--panel);box-shadow:0 30px 80px rgba(0,0,0,.45),inset 0 0 0 1px var(--line)}
.portrait img{width:100%;height:100%;object-fit:cover}
.portrait::after{content:"";position:absolute;inset:0;background:radial-gradient(55% 45% at 50% 55%,rgba(227,168,90,.22),transparent 70%);opacity:.3;animation:candle 6s ease-in-out -2s infinite;animation-play-state:paused}
.sec.alive .portrait::after{animation-play-state:running}
.portrait .seal-small{position:absolute;right:22px;bottom:22px;width:64px;height:64px;z-index:1;filter:drop-shadow(0 6px 14px rgba(0,0,0,.6))}
.packages{list-style:none;margin:0;padding:0}
.pkg{display:grid;grid-template-columns:1fr auto;column-gap:24px;row-gap:6px;align-items:baseline;padding:26px 0;border-top:1px solid var(--line)}
.pkg:last-child{border-bottom:1px solid var(--line)}
.pkg .for{grid-column:1 / -1;font-family:var(--f-mono);font-size:.8rem;letter-spacing:.08em;text-transform:uppercase;color:var(--glow)}
.pkg h3{font-size:clamp(2rem,3.2vw,2.6rem)}
.pkg .from{font-family:var(--f-mono);font-size:1rem;white-space:nowrap}
.pkg .from b{font-family:var(--f-display);font-size:1.7rem;font-weight:700;margin-left:6px}
.pkg p{grid-column:1 / -1;color:var(--text-secondary);max-width:52ch}
.pkg .btn{grid-column:1 / -1;justify-self:start;margin-top:10px;padding:.7em 1.2em;font-size:.95rem}
.every{margin-top:22px;font-family:var(--f-mono);font-size:.84rem;letter-spacing:.04em;color:var(--text-secondary)}
/* each promise stays whole; the line only breaks between them */
.every span{white-space:nowrap}
@media (max-width:900px){.book{grid-template-columns:1fr}.portrait{max-width:380px}}

/* ===== II. How booking works ===== */
.label svg path{stroke-dashoffset:0}
.steps{--sg:clamp(24px,4vw,56px);position:relative;list-style:none;margin:clamp(48px,7vw,80px) 0 0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sg)}
.steps .thread{position:absolute;pointer-events:none;overflow:visible}
.steps .thread path{fill:none;stroke:var(--glow);stroke-width:1.5;opacity:.55}
.steps .thread.h{left:27px;top:26px;height:2px;width:calc((100% - 2*var(--sg))/3*2 + 2*var(--sg))}
.steps .thread.v{display:none}
.step{position:relative}
.step .mk{position:relative;z-index:1;display:grid;place-items:center;width:54px;height:54px}
.step .mk svg{position:absolute;inset:0;width:100%;height:100%}
.step .mk b{position:relative;font-family:var(--f-body);font-weight:700;font-size:1.05rem;letter-spacing:.04em;color:var(--text-primary);text-shadow:0 1px 2px rgba(60,0,0,.8)}
.step .icon{width:64px;height:64px;margin-top:28px;color:var(--glow)}
.step .icon *{fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.step h3{font-size:1.9rem;margin-top:18px}
.step p{margin-top:10px;color:var(--text-secondary);max-width:34ch}
@media (max-width:820px){
  .steps{grid-template-columns:1fr;gap:44px;padding-left:76px}
  .steps .thread.h{display:none}
  .steps .thread.v{display:block;left:27px;top:27px;bottom:27px;width:2px;height:calc(100% - 54px)}
  .step .mk{position:absolute;left:-76px;top:0}
  .step .icon{margin-top:0}
}

/* ===== III. Request a date ===== */
.sec-commission{padding-bottom:clamp(80px,9vw,128px);background:linear-gradient(to bottom,transparent,rgba(28,33,48,.6) 20%)}
.commission{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:clamp(36px,6vw,88px);align-items:start}
.door{position:relative;margin-top:36px;max-width:420px;aspect-ratio:3/4;border-radius:999px 999px 18px 18px;overflow:hidden;background:var(--panel);box-shadow:0 30px 80px rgba(0,0,0,.45),inset 0 0 0 1px var(--line)}
.door img{width:100%;height:100%;object-fit:cover;object-position:50% 50%}
.door::after{content:"";position:absolute;inset:0;background:radial-gradient(60% 50% at 50% 60%,rgba(227,168,90,.22),transparent 70%);opacity:.3;animation:candle 6s ease-in-out -3s infinite;animation-play-state:paused}
.sec.alive .door::after{animation-play-state:running}
.door .seal-small{position:absolute;right:22px;bottom:22px;width:64px;height:64px;z-index:1;filter:drop-shadow(0 6px 14px rgba(0,0,0,.6))}
.sec-commission{scroll-margin-top:calc(var(--nav-h) - 40px)}
@media (max-width:900px){.commission{grid-template-columns:1fr}.door{max-width:340px}}

/* ===== IV. Questions ===== */
.faq{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.3fr);gap:clamp(32px,6vw,96px);align-items:start}
.faq-head{position:sticky;top:calc(var(--nav-h) + 40px)}
.faq-list{border-top:1px solid var(--line)}
.faq-list details{border-bottom:1px solid var(--line)}
.faq-list summary{list-style:none;display:flex;align-items:baseline;justify-content:space-between;gap:20px;padding:24px 0;cursor:pointer;font-family:var(--f-display);font-weight:500;font-size:clamp(1.4rem,2.2vw,1.8rem);line-height:1.2}
.faq-list summary::-webkit-details-marker{display:none}
.faq-list summary .mk{flex:none;width:18px;height:18px;position:relative;transform:translateY(-2px);transition:transform .45s var(--ease-out)}
.faq-list summary .mk::before,.faq-list summary .mk::after{content:"";position:absolute;left:0;right:0;top:50%;height:2px;margin-top:-1px;background:var(--glow);border-radius:2px}
.faq-list summary .mk::after{transform:rotate(90deg);transition:transform .45s var(--ease-out)}
.faq-list details[open] summary .mk{transform:translateY(-2px) rotate(180deg)}
.faq-list details[open] summary .mk::after{transform:rotate(0deg)}
.faq-list .ans{padding:0 0 26px;max-width:58ch;color:var(--text-secondary)}
.faq-list details[open] .ans{animation:ansIn .55s var(--ease-out) both}
@keyframes ansIn{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
@media (max-width:860px){.faq{grid-template-columns:1fr}.faq-head{position:static}}

/* Reduced motion: final states, nothing moves */
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition:none!important;transition-delay:0s!important}
  [data-reveal] .rv{opacity:1;transform:none}
}
