/* The entrance ticket (ticket.js). A full-page ivory stage over the explorer, z-index 50: above the
   header (20), the feedback button's usual band (25) and the plan viewer (30); below the enquiry form
   (55), the buyer-link notice (56) and the feedback dialog (60). The feedback button is raised above
   it while it is open, so a visitor can still report a problem with the ticket itself.
   Its colours are the ticket's own (the reference of 2026-10-23), not the site's chart. */
#ticket{
  --ticket-ink:#2a2521;--ticket-accent:#6c2224;--ticket-paper:#f4ede2;
  position:fixed;inset:0;z-index:50;overflow:hidden;color:var(--ticket-ink);
  background:radial-gradient(ellipse 80% 70% at 50% 38%,#fbf7f0 0%,var(--ticket-paper) 62%,#ebe2d5 100%);
  transition:opacity var(--ticket-fade,.6s) ease;
}
#ticket[hidden]{display:none!important}
#ticket.is-leaving{opacity:0;pointer-events:none}
html[data-ticket] #feedbackBtn{z-index:52}
/* The viewer off the screen while the ticket is whole (ticket.js arrive()): the browser stops drawing a
   cross-origin frame outside the viewport, and the ticket gets the GPU. A transform, so nothing re-lays out. */
html[data-ticket]:not([data-ticket-scene="shown"]) #playcanvas{transform:translateX(-300vw)}

.ticket-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;cursor:grab;outline:none}
.ticket-canvas.is-dragging{cursor:grabbing}
#ticket[data-phase="arriving"] .ticket-canvas,#ticket[data-phase="stage"] .ticket-canvas{cursor:default}
.ticket-canvas:focus-visible{box-shadow:none}
#ticket[data-keys] .ticket-canvas:focus-visible{box-shadow:inset 0 0 0 3px rgba(108,34,36,.45)}

.ticket-bar{position:absolute;z-index:2;top:max(10px,env(safe-area-inset-top));left:16px;right:16px;
  display:flex;justify-content:flex-end;align-items:center;gap:6px;pointer-events:none}
.ticket-bar>*{pointer-events:auto}
.ticket-skip{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 8px;border:0;background:none;
  color:#5d4a44;font:500 14px var(--brand-font,system-ui,sans-serif);text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.ticket-skip:hover{color:var(--ticket-accent)}
.ticket-sound{display:inline-grid;place-items:center;width:44px;height:44px;border-radius:50%;cursor:pointer;
  border:1px solid rgba(108,34,36,.22);background:rgba(255,255,255,.45);color:var(--ticket-accent)}
#ticket :focus-visible{outline:none}
#ticket[data-keys] :is(.ticket-skip,.ticket-sound,.ticket-visit,.ticket-replay):focus-visible{outline:3px solid rgba(108,34,36,.5);outline-offset:2px}

.ticket-hint{position:absolute;z-index:1;left:16px;right:16px;bottom:calc(30px + env(safe-area-inset-bottom));margin:0;
  text-align:center;font:400 19px/1.35 Georgia,"Times New Roman",serif;letter-spacing:.01em;color:#4a3b36;
  opacity:0;transform:translateY(6px);transition:opacity .5s ease,transform .5s ease;pointer-events:none}
.ticket-hint.is-shown{opacity:1;transform:none}

.ticket-actions,.ticket-status{position:absolute;z-index:2;left:50%;top:var(--ticket-actions-top,70%);
  width:min(340px,calc(100% - 32px));transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:10px}
.ticket-actions[hidden],.ticket-status[hidden]{display:none!important}
.ticket-actions{opacity:0;transform:translate(-50%,8px);transition:opacity .45s ease,transform .45s ease}
.ticket-actions.is-shown{opacity:1;transform:translate(-50%,0)}
.ticket-visit{display:inline-flex;justify-content:center;align-items:center;gap:10px;width:100%;min-height:52px;padding:0 22px;
  border:0;border-radius:999px;cursor:pointer;background:var(--ticket-accent);color:#fbf3e8;
  font:700 16px Rubik,var(--brand-font,system-ui),sans-serif;letter-spacing:.03em;box-shadow:0 12px 26px -14px rgba(108,34,36,.7)}
.ticket-visit:hover{background:#5a1b1d}
.ticket-replay{display:inline-flex;justify-content:center;align-items:center;gap:8px;min-height:44px;padding:0 18px;cursor:pointer;
  border:1px solid rgba(108,34,36,.32);border-radius:999px;background:rgba(255,255,255,.4);color:var(--ticket-accent);
  font:500 15px var(--brand-font,system-ui,sans-serif)}
.ticket-replay:hover{background:rgba(255,255,255,.75)}

.ticket-status{text-align:center;font:400 18px/1.4 Georgia,"Times New Roman",serif;color:#4a3b36}
.ticket-status-actions{display:flex;flex-direction:column;align-items:center;gap:10px;width:100%}
.ticket-spinner{width:24px;height:24px;border-radius:50%;border:2px solid rgba(108,34,36,.2);border-top-color:var(--ticket-accent);
  animation:ticket-spin .9s linear infinite}
@keyframes ticket-spin{to{transform:rotate(360deg)}}

@media (max-width:420px){.ticket-skip{font-size:13px}.ticket-hint{font-size:17px}}
@media (prefers-reduced-motion:reduce){
  .ticket-spinner{animation-duration:2.4s}
  .ticket-hint,.ticket-actions{transition-duration:.2s;transform:translateX(0)}
  .ticket-actions,.ticket-actions.is-shown{transform:translateX(-50%)}
}
