@font-face{font-family:'Caveat';font-style:normal;font-weight:500 700;font-display:swap;src:url(assets/fonts/caveat-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Fraunces';font-style:normal;font-weight:700 900;font-display:swap;src:url(assets/fonts/fraunces-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Nunito';font-style:normal;font-weight:400 800;font-display:swap;src:url(assets/fonts/nunito-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Special Elite';font-style:normal;font-weight:400;font-display:swap;src:url(assets/fonts/special-elite-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
:root{
  --cork:#C79A62;--paper:#FBF5E6;--ink:#2A1B3D;--purple:#5B2A9B;--purple-deep:#3A1768;
  --gold:#FFC83D;--red:#E23B30;--teal:#19A39B;--pink:#FF7EA8;
  --sticky-yellow:#FFE66D;--sticky-blue:#9AD6F5;--sticky-green:#B7E88A;
  --wood:#6E4224;--wood-dark:#4A2A14;
  --font-display:"Fraunces",Georgia,serif;
  --font-type:"Special Elite","Courier New",monospace;
  --font-hand:"Caveat","Comic Sans MS",cursive;
  --font-body:"Nunito",system-ui,sans-serif;
  --shadow:3px 7px 12px rgba(0,0,0,.33);
  --nav-h:72px;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--cork);color:var(--ink);font-family:var(--font-body)}
h1,h2,h3,p,ul,ol,figure,blockquote{margin:0}
ul,ol{padding:0}
img{display:block;max-width:100%;height:auto}
a{color:inherit}
button{font:inherit;color:inherit}
[hidden]{display:none!important}
.ico{width:1em;height:1em;flex:none}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ---------- Type ---------- */
.disp,.hand,.type,.body{margin:0}
.disp{font-family:var(--font-display);font-weight:900;line-height:1.05;font-size:clamp(18px,calc(var(--fs,16)*.62px + 2.2vw),calc(var(--fs,16)*1px))}
.hand{font-family:var(--font-hand);font-weight:500;line-height:1.05;font-size:clamp(18px,calc(var(--fs,16)*.7px + 1.6vw),calc(var(--fs,16)*1px))}
.type{font-family:var(--font-type);line-height:1.3;font-size:calc(var(--fs,16)*1px)}
.body{font-size:18px;line-height:1.55;color:#4A3B5C}
.stars{font-size:calc(var(--fs,18)*1px);letter-spacing:3px;color:#D08A00;line-height:1;white-space:nowrap}
.eyebrow{color:var(--purple)}

/* ---------- Nav ---------- */
.hall-nav{position:fixed;inset:0 0 auto 0;height:var(--nav-h);background:var(--wood-dark);display:flex;align-items:center;justify-content:space-between;padding:0 48px;z-index:50;box-shadow:0 6px 14px rgba(0,0,0,.4)}
.logo{display:flex;align-items:center;gap:10px;color:var(--gold);text-decoration:none;font:900 28px/1 var(--font-display)}
.logo img{width:60px;height:auto;margin:-2px 0;transition:transform .3s cubic-bezier(.3,1.6,.5,1)}
.logo:hover img{transform:rotate(-12deg) scale(1.15)}
.nav-links{display:flex;align-items:center;gap:36px}
.nav-links a{font:15px var(--font-type);color:var(--paper);text-decoration:none;padding:6px 0;border-bottom:2px solid transparent;transition:color .15s,border-color .15s}
.nav-links a:hover,.nav-links a[aria-current=true]{color:var(--gold);border-color:var(--gold)}
.nav-links .btn-nav{font:800 15px var(--font-body);background:var(--red);color:#fff;padding:11px 20px;border-radius:8px;border:0;box-shadow:0 3px 0 #9B1F17}
.nav-links .btn-nav:hover{color:#fff;background:#EF4A3F;transform:translateY(-1px)}

/* ---------- Board (flow layout by default) ---------- */
.board{position:relative}
.world{position:relative;background:var(--cork) url(assets/cork-tile.jpg) 0 0/688px auto}
.cork,.vignette,.trail,.barnaby,.minimap,.controls,.barnaby-counter{display:none}
.stage{display:flex;flex-direction:column;align-items:center;gap:34px;padding:56px 16px 64px}
#welcome{padding-top:calc(var(--nav-h) + 24px)}
.notice{position:relative;width:min(100%,560px,calc(var(--w,560)*1px));box-shadow:var(--shadow);rotate:calc(var(--r,0)*-1deg);translate:var(--dx,0) var(--dy,0);transform-origin:0 0;transition:transform .3s cubic-bezier(.2,.9,.3,1.3),rotate .3s cubic-bezier(.2,.9,.3,1.3),scale .2s}
.notice.rubber,.notice.plaque{width:max-content;max-width:100%}
.notice.peek{display:none}
.paper{background:var(--bg,var(--paper))}
.sticky{background:var(--c);padding:var(--pad,34px 24px 28px);display:flex;flex-direction:column;gap:10px}
.pin{position:absolute;top:var(--pt,-10px);left:var(--pl,calc(50% - 14px));width:28px;height:28px;border-radius:50%;background:var(--red);box-shadow:3px 5px 6px rgba(0,0,0,.4);z-index:2;pointer-events:none;transition:transform .2s}
.pin::after{content:"";position:absolute;left:6px;top:5px;width:9px;height:7px;border-radius:50%;background:rgba(255,255,255,.6)}
.tape{position:absolute;top:-12px;left:calc(50% - 44px);width:88px;height:26px;background:rgba(255,238,170,.78);box-shadow:0 1px 3px rgba(0,0,0,.2);rotate:calc(var(--r,0)*-1deg);z-index:2;pointer-events:none}
.band{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;background:var(--purple-deep);color:var(--gold);padding:13px 28px;font:14px var(--font-type);letter-spacing:2px}
.band span+span{color:var(--paper);letter-spacing:1px}
.pad{display:flex;flex-direction:column;gap:18px;padding:34px 40px 40px}
.sticky .stars,.paper .stars{color:#D08A00}

/* Hero poster */
.poster .band{padding:14px 40px;font-size:15px}
.poster-body{display:flex;flex-direction:column;gap:18px;padding:32px 70px 30px 40px}
.sub{font-size:19px;line-height:1.5;color:#4A3B5C}
.cta-row{display:flex;gap:16px;align-items:center;flex-wrap:wrap}
.btn{display:inline-flex;align-items:center;gap:10px;font:800 19px var(--font-body);padding:17px 30px;border-radius:10px;background:var(--red);color:#fff;text-decoration:none;box-shadow:0 4px 0 #9B1F17;transition:transform .12s,box-shadow .12s;cursor:pointer;border:0}
.btn:hover{transform:translateY(2px);box-shadow:0 2px 0 #9B1F17}
.btn .ico{width:20px;height:20px}
.btn-ghost{background:none;color:var(--ink);border:2px solid var(--ink);box-shadow:none;padding:15px 24px;font-size:18px}
.btn-ghost:hover{background:var(--ink);color:var(--paper);box-shadow:none;transform:none}
.btn-ghost .ico{width:18px;height:18px}
.btn-small{font-size:16px;padding:11px 20px;border-radius:8px;box-shadow:0 3px 0 #9B1F17;align-self:flex-start}
.chips{list-style:none;display:flex;flex-wrap:wrap;gap:8px}
.chips li{font:800 14px var(--font-body);padding:6px 13px;border-radius:999px;background:var(--sticky-yellow);color:var(--ink);transition:transform .2s cubic-bezier(.3,1.7,.5,1)}
.chips li:nth-child(2){background:var(--sticky-blue)}
.chips li:nth-child(3){background:var(--pink)}
.chips li:nth-child(4){background:var(--sticky-green)}
.chips li:hover{transform:rotate(-4deg) scale(1.1)}
.trust{display:flex;justify-content:space-between;align-items:center;gap:8px 24px;flex-wrap:wrap;background:var(--purple-deep);color:var(--paper);padding:15px 40px;font:14px var(--font-type)}
.trust .stars{color:var(--gold);font-size:18px}
.trust-stars{display:flex;align-items:center;gap:8px}

/* Photos */
.polaroid{background:#fff;padding:14px 14px 12px;display:flex;flex-direction:column;align-items:center;gap:10px}
.polaroid img{width:100%;aspect-ratio:1;object-fit:cover;object-position:center 58%}
.print{background:#fff;padding:14px 14px 10px;display:flex;flex-direction:column;gap:8px}
.print img{width:100%;height:auto}
.print figcaption,.polaroid figcaption{text-align:center}
.vid-play{position:relative;padding:0;border:0;background:none;cursor:pointer;display:block;width:100%}
.vid-play::after{content:"";position:absolute;left:50%;top:50%;width:62px;height:62px;margin:-31px 0 0 -31px;border-radius:50%;background:var(--red) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23fff'%3E%3Cpath d='M9 6v12l10-6z'/%3E%3C/svg%3E") 54% 50%/34px no-repeat;border:3px solid #fff;box-shadow:0 4px 10px rgba(0,0,0,.4);transition:transform .2s cubic-bezier(.3,1.6,.5,1)}
.vid-play:hover::after,.vid-play:focus-visible::after{transform:scale(1.12)}
.vid-cap{display:block;font:700 13px var(--font-body);letter-spacing:.5px;color:var(--red);margin-top:2px}
.zoomable{padding:0;border:0;background:none;cursor:zoom-in;display:block;width:100%}
.strip{background:#fff;padding:12px 14px 14px;display:flex;flex-direction:column;align-items:center;gap:7px}
.strip img{width:100%;height:auto;aspect-ratio:4/3;object-fit:cover}
.strip .zoomable{transition:transform .2s cubic-bezier(.3,1.6,.5,1)}
.strip .zoomable:hover{transform:rotate(-3deg) scale(1.06)}
.cutout{box-shadow:none;width:min(220px,60%)}
.cutout img{width:100%;height:auto;filter:drop-shadow(3px 0 0 #fff) drop-shadow(-3px 0 0 #fff) drop-shadow(0 3px 0 #fff) drop-shadow(0 -3px 0 #fff) drop-shadow(5px 9px 8px rgba(0,0,0,.4))}
.award{box-shadow:none;background:none;border:0;padding:0;cursor:pointer;width:min(150px,50%)}
.award img{width:100%;height:auto;filter:drop-shadow(4px 8px 7px rgba(0,0,0,.45))}
.award.spin img{animation:spin 1.3s cubic-bezier(.3,1.2,.4,1)}
@keyframes spin{to{transform:rotate(720deg) scale(1)}50%{transform:rotate(360deg) scale(1.25)}}

.meet{gap:16px}
.stamps{list-style:none;display:flex;gap:16px;flex-wrap:wrap;padding-top:6px}
.stamps li{width:104px;height:104px;border-radius:50%;border:3px solid var(--purple);color:var(--purple);font:13px/1.3 var(--font-type);text-align:center;display:grid;place-items:center;rotate:calc(var(--r)*-1deg);transition:transform .25s cubic-bezier(.3,1.7,.5,1)}
.stamps li:hover{transform:scale(1.12) rotate(8deg);background:rgba(91,42,155,.08)}
.steps .pad{padding:32px 30px 30px;gap:16px}
.steps ol{list-style:none;display:flex;flex-direction:column;gap:16px}
.steps li{display:flex;align-items:center;gap:14px;font-size:17px;line-height:1.4;color:#3A2D4C}
.steps b{width:40px;height:40px;border-radius:50%;background:var(--gold);display:grid;place-items:center;font:900 20px var(--font-display);color:var(--ink);flex:none}

/* Parties */
.plank{background:var(--wood);border:4px solid var(--wood-dark);border-radius:6px;display:flex;flex-direction:column;align-items:center;padding:16px 40px 14px;text-align:center}
.plank .disp{color:var(--gold)}
.plank .hand{color:var(--paper)}
.pkg .pad{padding:26px 28px 28px;gap:12px}
.pkg-hot{outline:4px solid var(--gold);outline-offset:-4px}
.ribbon{position:absolute;top:-20px;left:50%;translate:-50% 0;z-index:3;background:var(--gold);color:var(--ink);font:900 15px var(--font-display);padding:8px 16px;rotate:-6deg;box-shadow:2px 4px 6px rgba(0,0,0,.3)}
.price{color:var(--red);line-height:1}
.extras .pad{padding:14px 26px 16px;gap:10px}
.extras-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:18px}
.extras-list li{display:flex;flex-direction:column;gap:5px}
.extras-list h3{min-height:2.3em}
.extras-list .body{font-size:14px;line-height:1.35;color:#3A2D4C}
.extras-offer{margin:0;padding:9px 14px;border:2px dashed var(--purple);border-radius:6px;background:rgba(255,200,61,.28);font:700 15px/1.35 var(--font-body);color:var(--ink)}
.steps li a{color:var(--purple);font-weight:700}
.pkg h3 mark{background:linear-gradient(transparent 46%,var(--gold) 46% 94%,transparent 94%);color:var(--ink);font-size:1.28em;padding:0 .1em;margin-left:-.1em;white-space:nowrap}
.ticks{list-style:none;display:flex;flex-direction:column;gap:11px}
.ticks li{position:relative;padding-left:26px;font-size:16px;line-height:1.35;color:#3A2D4C}
.ticks li small{display:block;margin-top:2px;font-size:13px;line-height:1.3;color:#6a5c7c}
.ticks li small a{color:var(--purple);font-weight:700}
.ticks li::before{content:"✓";position:absolute;left:0;top:0;color:var(--teal);font-weight:800}
.rubber{display:flex;flex-direction:column;align-items:center;border:4px solid var(--red);border-radius:8px;padding:10px 18px;background:rgba(251,245,230,.96);color:var(--red);box-shadow:none;pointer-events:none;z-index:4}
.rubber b{font:900 24px/1.1 var(--font-display)}
.rubber small{font:13px var(--font-type)}

/* Reviews */
.plaque{background:var(--purple-deep);border:3px solid var(--gold);border-radius:6px;padding:14px 36px 10px;display:flex;flex-direction:column}
.plaque .disp{color:var(--gold)}
.plaque .hand{color:var(--paper)}
.quote1 .pad{padding:30px 36px;gap:14px}
.qmark{width:40px;height:40px;color:var(--red)}
.quote1 footer{color:var(--purple)}
.review .pad{padding:30px 28px 24px;gap:12px}
.review .body{font-size:17px}
.review footer{color:var(--purple)}
.rating{display:flex;flex-direction:column;align-items:center;gap:4px;padding:22px 16px 16px}
.rating b{color:var(--red);font-weight:400}

/* Map */
.mapn .map{position:relative;aspect-ratio:900/640;container-type:inline-size;overflow:hidden;background:#EDE5C3}
.map .patch,.map .zone{position:absolute;left:calc(var(--mx)/9*1%);top:calc(var(--my)/6.4*1%);width:calc(var(--mw)/9*1%);height:calc(var(--mh)/6.4*1%);border-radius:50%}
.map .zone{background:#FFC83D40;border:3px solid #D08A00}
.map .string{position:absolute;inset:0;width:100%;height:100%}
.map .string path{fill:none;stroke:var(--red);stroke-width:3;stroke-linecap:round;vector-effect:non-scaling-stroke}
.map .compass{position:absolute;left:calc(var(--mx)/9*1%);top:calc(var(--my)/6.4*1%);width:calc(var(--mw)/9*1%);height:auto;aspect-ratio:1;color:var(--ink)}
.mapn .map .ml,.mapn .map .zone-label{position:absolute;left:calc(var(--mx)/9*1%);top:calc(var(--my)/6.4*1%);white-space:nowrap;font-size:max(13px,3.556cqw);line-height:1.05}
.mapn .map .zone-label{font-size:max(12px,3.1cqw);color:#7A4F00}
.mapn .map .hq-label{font-size:max(12px,2.44cqw)}
.map .pin{top:calc(var(--my)/6.4*1%);left:calc(var(--mx)/9*1%);translate:-50% -50%;width:max(16px,3.1cqw);height:max(16px,3.1cqw);z-index:2}
.map .pin::after{left:22%;top:18%;width:32%;height:26%}
.map .hq{position:absolute;left:calc(var(--mx)/9*1%);top:calc(var(--my)/6.4*1%);width:calc(44/9*1%);aspect-ratio:1;border-radius:50%;background:var(--gold);border:3px solid var(--ink);display:grid;place-items:center;z-index:2;animation:pulse 2.4s ease-in-out infinite}
.map .hq .ico{width:58%;height:58%}
@keyframes pulse{50%{transform:scale(1.12)}}

/* Enquire */
.enquiry .pad{padding:24px 36px 30px;gap:12px}
.row{display:flex;gap:14px}
.field{flex:1;min-width:0;display:flex;align-items:center;gap:10px;background:#fff;border:2px solid var(--ink);border-radius:6px;padding:14px 16px;color:#7A6E8A;cursor:text}
.field .ico{width:18px;height:18px}
.field input{border:0;background:none;outline:none;font:16px var(--font-body);color:var(--ink);width:100%;min-width:0;padding:0}
.field input::placeholder{color:#6E6280;opacity:1}
.field input[type=date]{cursor:pointer}
.field input[type=date]:invalid{color:#6E6280}
.field:focus-within{outline:3px solid var(--gold);outline-offset:2px}
.field select,.field textarea{border:0;background:none;outline:none;font:16px var(--font-body);color:var(--ink);width:100%;min-width:0;padding:0;resize:none}
.field textarea::placeholder{color:#6E6280;opacity:1}
.field select{cursor:pointer}
.field-area{align-items:flex-start}
.hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}
.form-msg{padding:12px 16px;border-radius:6px;background:#FFF1B8;color:var(--ink);font-size:15px}
.form-msg.ok{background:#CFF3C0}
.form-msg a{font-weight:700}
.enquiry.sent .pad>:not(.form-msg){display:none}
.btn-wide{width:100%;justify-content:center;font-size:20px;padding:18px 30px}
.btn-wide .ico{width:22px;height:22px}
.tear .pad{padding:32px 30px 20px;gap:9px}
.phone{color:var(--red);text-decoration:none;font-size:clamp(24px,8vw,42px)}
.phone:hover,.mail:hover{text-decoration:underline}
.mail{text-decoration:none}
.tabs{display:flex;padding:0 16px}
.tab,.tab-gap{flex:1;max-width:56px;height:180px}
.tab{display:grid;place-items:center;text-decoration:none;color:var(--ink);border-left:1px solid var(--ink);border-right:1px solid var(--ink);transform-origin:50% 0;transition:transform .2s}
.tab span{writing-mode:vertical-rl;transform:rotate(180deg);font:17px var(--font-type);white-space:nowrap}
.tab:hover{transform:rotate(-3deg)}
.tab.torn{animation:tear .9s ease-in forwards;pointer-events:none}
@keyframes tear{25%{transform:rotate(-9deg) translateY(8px)}100%{transform:translate(50px,560px) rotate(38deg);opacity:0}}
.board-bottom{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:14px 28px;width:100%;background:var(--wood);border-top:8px solid var(--wood-dark);padding:22px 16px;color:var(--paper);font:14px var(--font-type);text-align:center;margin-top:20px}
.board-bottom p{margin:0}
.board-bottom .plate{background:#D6AE55;border:3px solid #8A6A22;border-radius:4px;padding:10px 26px;color:var(--ink);font-size:16px;letter-spacing:1px;box-shadow:inset 0 2px 4px rgba(0,0,0,.27)}

/* Hanging sign */
.hang{position:relative;width:min(470px,86%);margin:0 auto;container-type:inline-size}
.nails{position:absolute;left:0;top:0;width:100%;height:auto;pointer-events:none;z-index:3}
.hang-swing{display:block;position:relative;width:100%;margin-top:7cqw;padding:0;border:0;background:none;cursor:grab;transform-origin:50% 0;rotate:calc(var(--a,0)*1deg);filter:drop-shadow(0 12px 12px rgba(0,0,0,.4))}
.ropes{position:absolute;left:0;top:0;width:100%;height:auto;aspect-ratio:5/1;overflow:visible;pointer-events:none}
.hang-swing img{display:block;width:100%;height:auto;margin-top:18.7cqw;border-radius:3px}
.hang-swing:active{cursor:grabbing}

/* Fun bits */
.cartoon{position:relative;width:200px;border:0;background:none;padding:0;cursor:pointer;transition:transform .25s cubic-bezier(.3,1.7,.5,1)}
.cartoon img{width:100%;height:auto;filter:drop-shadow(4px 8px 7px rgba(0,0,0,.4))}
.cartoon:hover{transform:rotate(-5deg) scale(1.06)}
.cartoon:active{transform:scale(.94)}
.bubble{position:absolute;left:50%;bottom:92%;translate:-30% 0;background:#fff;color:var(--ink);border:3px solid var(--ink);border-radius:18px;padding:8px 16px;font:700 26px/1.05 var(--font-hand);white-space:nowrap;opacity:0;scale:.6;transform-origin:30% 100%;transition:opacity .2s,scale .25s cubic-bezier(.3,1.8,.5,1);pointer-events:none;z-index:8}
.bubble.show{opacity:1;scale:1}
.balloon{display:none}
.scroll-hint{display:inline-flex;align-items:center;gap:10px;background:var(--gold);color:var(--ink);padding:8px 22px;border-radius:4px;text-decoration:none;box-shadow:var(--shadow);rotate:calc(var(--r,0)*-1deg);font-size:28px;transition:scale .25s}
.scroll-hint .ico{width:24px;height:24px;animation:nudge 1.4s ease-in-out infinite}
.hint-wide{display:none}.camera-mode .hint-wide{display:inline}.camera-mode .hint-narrow{display:none}
html:not(.camera-mode) .scroll-hint .ico{rotate:90deg;animation:none}
@keyframes nudge{50%{transform:translateX(6px)}}

/* Ambient notices (rendered by script.js) */
.ambient{display:flex;flex-direction:column;align-items:center;gap:30px;padding:40px 16px 70px}
.ambient-title{color:var(--paper);text-shadow:0 3px 0 rgba(0,0,0,.35);font-size:clamp(24px,7vw,34px);text-align:center}
.amb{padding:20px 22px 18px;font:15px/1.4 var(--font-type);color:var(--ink)}
.amb h3{font:900 17px/1.1 var(--font-display);margin:0 0 8px}
.amb small{display:block;margin-top:8px;font-size:12px;opacity:.75}
.news{background:#EFE8D4;color:#2b2b2b;padding:14px 16px 16px;font-family:Georgia,serif}
.news .mast{font:900 17px/1 var(--font-display);text-align:center;border-bottom:3px double #222;padding-bottom:6px}
.news .date{font:11px var(--font-type);text-align:center;padding:4px 0 8px;border-bottom:1px solid #222}
.news h3{font:900 20px/1.1 var(--font-display);padding:10px 0 6px}
.news p{font-size:12.5px;line-height:1.45}
.crayon{background:#fff;padding:20px 18px;display:flex;flex-direction:column;align-items:center;gap:2px;font:700 30px/1 var(--font-hand)}
.tv{background:linear-gradient(#8a5a33,#5d3a1d);border-radius:22px;padding:16px 16px 12px;display:flex;flex-direction:column;gap:10px;border:3px solid #3a2310}
.tv-screen{position:relative;aspect-ratio:4/3;border-radius:14px/18px;overflow:hidden;background:#111;box-shadow:inset 0 0 24px rgba(0,0,0,.9);border:0;padding:0;cursor:pointer;display:block;width:100%}
.tv-screen img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;animation:tvon .5s ease-out}
.tv-screen::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(0deg,rgba(0,0,0,.18) 0 2px,transparent 2px 4px);pointer-events:none}
@keyframes tvon{0%{filter:brightness(3) contrast(0);transform:scaleY(.02)}60%{transform:scaleY(1.04);filter:brightness(1.6)}100%{filter:none;transform:none}}
.tv-row{display:flex;align-items:center;justify-content:space-between;gap:10px}
.tv-label{font:13px var(--font-type);color:#ffd88a;letter-spacing:2px}
.tv-dial{width:30px;height:30px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#e8d2a0,#9a7b3e);border:2px solid #3a2310;cursor:pointer;padding:0;transition:rotate .3s}
.tv-dial:hover{rotate:60deg}
.tv-hint{font:12px var(--font-type);color:#ffd88a;opacity:.8;text-align:center}

/* Overlays */
.reward,.lightbox{position:fixed;inset:0;z-index:120;display:grid;place-items:center;background:rgba(20,10,5,.7);padding:20px}
.reward-inner{background:var(--paper);border-radius:6px;padding:28px 32px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:12px;max-width:380px;rotate:-1.5deg;box-shadow:0 20px 50px rgba(0,0,0,.5)}
.reward-inner img{height:110px;width:auto}
.reward-inner .btn-small{align-self:center}
.code{background:var(--gold);padding:2px 10px;border-radius:4px;font-family:var(--font-display);font-weight:900;letter-spacing:1px}
.lightbox{cursor:zoom-out}
.lightbox figure{background:#fff;padding:16px 16px 10px;max-width:min(92vw,900px);rotate:-1deg;box-shadow:0 20px 50px rgba(0,0,0,.6)}
.lightbox img{max-height:76vh;width:auto;max-width:100%;margin:0 auto}
.lightbox figcaption{text-align:center;padding-top:6px}
.lightbox>button{position:absolute;top:18px;right:22px;width:44px;height:44px;border-radius:50%;border:2px solid var(--gold);background:var(--wood-dark);color:var(--gold);font-size:20px;cursor:pointer}
.toast{position:fixed;left:50%;bottom:28px;transform:translate(-50%,30px);background:var(--ink);color:var(--paper);font:16px var(--font-type);padding:12px 22px;border-radius:8px;z-index:130;opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;max-width:92vw;text-align:center}
.toast.show{opacity:1;transform:translate(-50%,0)}
.fx{position:fixed;inset:0;pointer-events:none;z-index:140;overflow:hidden}
.fx i{position:absolute;display:block}
.fx .spark{width:10px;height:10px;background:var(--c);clip-path:polygon(50% 0,62% 38%,100% 50%,62% 62%,50% 100%,38% 62%,0 50%,38% 38%)}
.fx .bit{width:var(--w);height:var(--h);background:var(--c);border-radius:var(--rad)}

@media (hover:hover){
  .notice:not(.rubber):not(.cutout):not(.award):hover{transform:translateY(-6px) scale(1.012);rotate:0deg;z-index:6}
  .notice:hover>.pin{transform:translateY(2px) scale(.92)}
  .scroll-hint:hover{rotate:0deg;scale:1.05}
}

/* ---------- Small screens: a stacked board ---------- */
@media (max-width:899px){
  .hall-nav{padding:0 16px;--nav-h:60px;height:60px}
  .nav-links a:not(.btn-nav){display:none}
  .logo{font-size:22px}
  .logo img{width:48px}
  .poster-body{padding:26px 24px}
  .poster .band,.trust{padding-left:24px;padding-right:24px}
  .pad,.enquiry .pad,.quote1 .pad{padding:26px 22px 30px}
  .row{flex-direction:column}
  .cta-row .btn{width:100%;justify-content:center}
  .tear .pad{padding:26px 22px 16px}
  .strip{flex-direction:row;flex-wrap:wrap;justify-content:center}
  .strip .type{width:100%;text-align:center}
  .strip .zoomable{width:44%}
}

/* ---------- Camera mode: one big 2D board, the camera travels around it ---------- */
.camera-mode,.camera-mode body{overflow:hidden;height:100%}
.camera-mode .board{height:100vh;--nav-h:72px}
.camera-mode .camera{position:relative;height:100vh;overflow:hidden;touch-action:none}
.camera-mode .world{position:absolute;left:0;top:0;width:0;height:0;overflow:visible;background:none;transform-origin:0 0}
.camera-mode .cork{display:block;position:absolute;left:-2500px;top:-2500px;width:9000px;height:10000px;background:var(--cork) url(assets/cork-tile.jpg) 0 0/688px auto}
.camera-mode .trail{display:block;position:absolute;left:-2500px;top:-2500px;width:9000px;height:10000px;pointer-events:none;overflow:visible}
.trail path{fill:none;stroke:rgba(255,200,61,.6);stroke-width:5;stroke-dasharray:1 18;stroke-linecap:round}
.camera-mode .vignette{display:block;position:absolute;inset:0;pointer-events:none;z-index:3;background:radial-gradient(ellipse at 50% 50%,transparent 50%,rgba(0,0,0,.5) 100%)}
.camera-mode .stage{position:absolute;left:calc(var(--sx)*1px);top:calc(var(--sy)*1px);width:1440px;height:972px;padding:0;display:block}
.camera-mode .notice,.camera-mode .scroll-hint,.camera-mode .hang,.camera-mode .cartoon,.camera-mode .balloon{position:absolute;left:calc(var(--x)*1px);top:calc((var(--y) + 72)*1px)}
.camera-mode .notice{width:calc(var(--w,560)*1px);z-index:2}
.camera-mode .notice.rubber,.camera-mode .notice.plaque{width:max-content}
.camera-mode .notice.peek{display:flex}
.camera-mode .disp{font-size:calc(var(--fs,16)*1px)}
.camera-mode .hand{font-size:calc(var(--fs,16)*1px)}
.camera-mode .poster-body{padding:32px 70px 30px 40px}
.camera-mode .cutout,.camera-mode .award{width:calc(var(--w)*1px)}
.camera-mode .cartoon{width:calc(var(--w)*1px);rotate:calc(var(--r,0)*-1deg);z-index:5}
.camera-mode .hang{width:calc(var(--w)*1px);margin:0;z-index:6}
.camera-mode .scroll-hint{z-index:4}
.camera-mode .notice.free{top:calc(var(--y)*1px)}
.camera-mode .ambient{position:absolute;left:0;top:0;width:0;height:0;display:block;padding:0}
.camera-mode .ambient-title{display:none}
.camera-mode .board-bottom{position:absolute;left:0;top:872px;width:1440px;height:100px;margin:0;padding:0 420px 0 210px;justify-content:space-between;flex-wrap:nowrap;text-align:left;z-index:1}
.camera-mode .board-bottom p{white-space:nowrap}
.camera-mode .board-bottom .plate{font-size:14px;padding:9px 16px;letter-spacing:.5px}
.camera-mode .board-bottom::after{content:"";position:absolute;left:100%;top:-8px;width:1500px;height:100px;background:var(--wood);border-top:8px solid var(--wood-dark)}
.camera-mode .stage:not(.seen) .notice:not(.peek),.camera-mode .stage:not(.seen) .cartoon,.camera-mode .stage:not(.seen) .balloon{opacity:0}
.camera-mode .stage.seen .notice:not(.peek):not(.main),.camera-mode .stage.seen .cartoon,.camera-mode .stage.seen .balloon{animation:slap .55s cubic-bezier(.2,1.4,.4,1) both;animation-delay:var(--delay,0s)}
.camera-mode .notice.pre{opacity:0;translate:0 -46px;scale:1.08;rotate:calc(var(--r,0)*-1deg - 4deg)}
.camera-mode .notice.settle{transition:translate .5s cubic-bezier(.2,.9,.3,1),rotate .5s cubic-bezier(.2,.9,.3,1),scale .5s cubic-bezier(.2,1.3,.4,1),opacity .2s}
@keyframes slap{0%{opacity:0;scale:1.45}100%{opacity:1;scale:1}}
.camera-mode .notice.dragging{z-index:60;cursor:grabbing;scale:1.04;transition:none;box-shadow:8px 18px 28px rgba(0,0,0,.45)}
.camera-mode .notice:not(.main):not(.rubber){cursor:grab}
.camera-mode .notice.dragging *{pointer-events:none}

/* balloons */
.camera-mode .balloon{display:block;width:62px;height:78px;padding:0;border:0;border-radius:50% 50% 48% 48%/55% 55% 45% 45%;cursor:pointer;z-index:5;background:radial-gradient(circle at 30% 26%,rgba(255,255,255,.7),transparent 32%),var(--c);box-shadow:inset -6px -8px 12px rgba(0,0,0,.18);animation:bob 4s ease-in-out infinite;animation-delay:var(--d,0s);transform-origin:50% 100%}
.camera-mode .balloon::after{content:"";position:absolute;left:50%;top:100%;width:2px;height:150px;background:linear-gradient(rgba(255,255,255,.75),rgba(255,255,255,.2));translate:-50% 0}
.camera-mode .balloon::before{content:"";position:absolute;left:50%;top:97%;width:10px;height:10px;background:var(--c);translate:-50% 0;clip-path:polygon(50% 0,100% 100%,0 100%)}
.camera-mode .stage.seen .balloon{animation:bob 4s ease-in-out infinite,slap .55s cubic-bezier(.2,1.4,.4,1) both}
@keyframes bob{50%{transform:translateY(-12px) rotate(3deg)}}
.camera-mode .balloon.popped{animation:pop .22s forwards!important;pointer-events:none}
@keyframes pop{to{transform:scale(1.7);opacity:0}}

.camera-mode .barnaby{display:block;position:absolute;z-index:1;padding:0;border:0;background:none;cursor:pointer;transform-origin:50% 100%;animation:peek .6s cubic-bezier(.3,1.5,.5,1) both}
.camera-mode .barnaby img{width:70px;height:auto;filter:drop-shadow(2px 4px 4px rgba(0,0,0,.4))}
.camera-mode .barnaby.flip img{transform:scaleX(-1)}
.camera-mode .barnaby.caught{animation:caught .7s ease-in forwards}
.camera-mode .barnaby[hidden]{display:none}
@keyframes peek{from{translate:-50px 0;opacity:0}to{translate:0 0;opacity:1}}
@keyframes caught{30%{transform:translateY(-30px) rotate(-12deg)}100%{transform:translateY(60px) scale(.4);opacity:0}}
.camera-mode .barnaby-counter{display:block;position:fixed;top:84px;right:16px;z-index:60;background:var(--wood-dark);color:var(--gold);padding:6px 12px;border-radius:999px;font-size:15px;border:2px solid var(--gold)}
.camera-mode .barnaby-counter[hidden]{display:none}

/* map + controls */
.camera-mode .minimap{display:block;position:fixed;left:14px;bottom:14px;z-index:60;width:136px;opacity:.6;transition:opacity .25s;background:var(--wood-dark);border:3px solid var(--wood);border-radius:6px;padding:8px 8px 10px;box-shadow:0 8px 18px rgba(0,0,0,.45)}
.camera-mode .minimap:hover{opacity:1}
.minimap-title{color:var(--gold);font-size:12px;letter-spacing:2px;margin:0 0 6px}
.minimap-inner{position:relative;width:100%;background:var(--cork) url(assets/cork-tile.jpg) 0 0/120px auto;border-radius:3px;overflow:hidden}
.mm-zone{position:absolute;display:grid;place-items:center;padding:0;border:2px solid var(--gold);background:rgba(255,255,255,.28);color:var(--ink);font:900 11px var(--font-display);cursor:pointer;transition:background .2s}
.mm-zone:hover{background:rgba(255,255,255,.6)}
.mm-zone[aria-current=true]{background:var(--gold)}
.minimap-vp{position:absolute;border:2px solid #fff;box-shadow:0 0 0 1px rgba(0,0,0,.5);pointer-events:none;z-index:2}
.camera-mode .controls{display:flex;align-items:center;gap:12px;position:fixed;right:16px;bottom:16px;z-index:60;background:var(--wood-dark);border:3px solid var(--wood);border-radius:999px;padding:8px 10px 8px 22px;box-shadow:0 8px 18px rgba(0,0,0,.45)}
.stop-label{color:var(--paper);min-width:150px;text-align:right}
.camera-mode .stop-label{font-size:30px}
.stop-count{color:var(--gold);font-size:14px}
.controls button{width:38px;height:38px;border-radius:50%;border:2px solid var(--gold);background:transparent;color:var(--gold);cursor:pointer;font-size:14px;padding:0;transition:background .15s,color .15s}
.controls button:hover:not(:disabled){background:var(--gold);color:var(--ink)}
.controls button:disabled{opacity:.35;cursor:default}
:focus-visible{outline:3px solid var(--gold);outline-offset:3px}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{transition:none!important;animation:none!important}
}

/* ---------- Map extras ---------- */
.mapn .map .stamp{position:absolute;left:calc(var(--mx)/9*1%);top:calc(var(--my)/6.4*1%);border:4px solid var(--red);border-radius:8px;color:var(--red);padding:.12em .5em;rotate:-7deg;font-size:max(15px,3.8cqw);white-space:nowrap;background:rgba(251,245,230,.88);letter-spacing:1px}
.mapn .map .edge{color:#7A4F00;font-size:max(12px,3.1cqw)}
.mapn .map .zone-label{color:#7A4F00}

/* ---------- Peeking kids and cut-out kids ---------- */
.peeker{position:absolute;bottom:100%;translate:0 calc(var(--sink,15%) + 1px);left:min(var(--px,18%),calc(100% - var(--pw,150px)));width:var(--pw,150px);height:auto;pointer-events:none;z-index:3;filter:drop-shadow(0 -1px 2px rgba(0,0,0,.18))}
.peeker.right{left:auto;right:min(var(--px,18%),calc(100% - var(--pw,150px)))}
.peeker[src*="kid-peek-girl"]{--sink:16.5%}
.peeker[src*="kid-peek-boy"]{--sink:29.5%}
.peeker[src*="kid-peek-plaits"]{--sink:13.5%}
.peeker[src*="kid-peek-curly"]{--sink:15.5%}
.leaner{position:absolute;left:100%;translate:calc(-13.75% - 1px) 0;top:var(--py,20%);width:var(--pw,96px);height:auto;pointer-events:none;z-index:3;filter:drop-shadow(2px 0 3px rgba(0,0,0,.18))}
.has-peek{margin-top:78px}
.camera-mode .has-peek{margin-top:0}
.kid{box-shadow:none;background:none;display:block;width:var(--kw,160px)}
.kid img{width:100%;height:auto;filter:drop-shadow(3px 0 0 #fff) drop-shadow(-3px 0 0 #fff) drop-shadow(0 3px 0 #fff) drop-shadow(0 -3px 0 #fff) drop-shadow(5px 9px 8px rgba(0,0,0,.4))}
.kid .say{position:absolute;left:var(--bx,60%);top:var(--by,-8%);background:#fff;color:var(--ink);border:3px solid var(--ink);border-radius:16px;padding:6px 12px;font:700 24px/1.05 var(--font-hand);white-space:nowrap;rotate:calc(var(--br,-4)*1deg)}
.kid .say::after{content:"";position:absolute;left:18px;bottom:-12px;width:16px;height:16px;background:#fff;border-right:3px solid var(--ink);border-bottom:3px solid var(--ink);rotate:45deg;translate:0 -3px}
.camera-mode .kid{width:calc(var(--w)*1px)}
@media (max-width:899px){
  .kid{width:min(var(--kw,160px),46%)}
  .kid .say{font-size:20px}
  .leaner{display:none}
}

/* ---------- Footer link ---------- */
.linkish{background:none;border:0;padding:0;color:var(--gold);font:inherit;text-decoration:underline;cursor:pointer}

/* ---------- Mobile tab bar (stacked mode only) ---------- */
.tabbar{display:none}
html:not(.camera-mode){scroll-padding-top:64px}
html:not(.camera-mode) body{padding-bottom:calc(68px + env(safe-area-inset-bottom))}
html:not(.camera-mode) .tabbar{display:grid;grid-template-columns:repeat(6,1fr);position:fixed;left:0;right:0;bottom:0;z-index:60;background:var(--wood-dark);border-top:3px solid var(--gold);padding:6px 4px calc(6px + env(safe-area-inset-bottom));box-shadow:0 -6px 16px rgba(0,0,0,.35)}
.tabbar a{display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 0 4px;border-radius:10px;color:var(--paper);text-decoration:none;font:700 11px/1 var(--font-body);letter-spacing:.2px;-webkit-tap-highlight-color:transparent}
.tabbar .ico{width:22px;height:22px}
.tabbar a[aria-current=true]{background:var(--gold);color:var(--ink)}
.tabbar .tab-book{background:var(--red);color:#fff}
.tabbar .tab-book[aria-current=true]{background:#fff;color:var(--red)}
@media (min-width:900px){html:not(.camera-mode) .tabbar{left:50%;right:auto;translate:-50% 0;width:min(560px,94vw);border-radius:16px 16px 0 0;border:3px solid var(--gold);border-bottom:0}}

/* ---------- Video modal ---------- */
.cinema{position:fixed;inset:0;z-index:125;display:grid;place-items:center;background:rgba(20,10,5,.82);padding:16px}
.cinema-inner{width:min(94vw,960px);background:var(--wood-dark);border:6px solid var(--wood);border-radius:14px;padding:12px 12px 8px;box-shadow:0 24px 60px rgba(0,0,0,.6)}
.cinema-frame{position:relative;aspect-ratio:16/9;background:#000;border-radius:6px;overflow:hidden}
.cinema-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.cinema-note{margin:8px 0 2px;text-align:center;color:#ffd88a;font-size:12px;opacity:.85}
.cinema-close{position:absolute;top:14px;right:16px;width:44px;height:44px;border-radius:50%;border:2px solid var(--gold);background:var(--wood-dark);color:var(--gold);font-size:20px;cursor:pointer}
.watch .ico{width:18px;height:18px}

/* ---------- Cookie notice ---------- */
.cookie{position:fixed;left:50%;bottom:20px;translate:-50% 0;z-index:110;width:min(600px,calc(100vw - 24px));background:var(--paper);box-shadow:4px 10px 24px rgba(0,0,0,.5);rotate:-.6deg;animation:cookie-in .6s cubic-bezier(.2,1.3,.4,1) both}
.cookie[hidden]{display:none}
.cookie .pin{top:-12px;left:calc(50% - 14px)}
.cookie-body{display:flex;gap:16px;align-items:center;padding:18px 22px 6px}
.cookie-pic{width:64px;height:64px;flex:none;rotate:-12deg;filter:drop-shadow(2px 4px 3px rgba(0,0,0,.3))}
.cookie-body .body{font-size:15px;line-height:1.45;margin-top:4px}
.cookie-actions{display:flex;gap:12px;flex-wrap:wrap;padding:8px 22px 18px}
.cookie-actions .btn-small{align-self:auto;flex:1 1 auto;justify-content:center}
@keyframes cookie-in{from{translate:-50% 140%;opacity:0}}
html:not(.camera-mode) .cookie{bottom:calc(76px + env(safe-area-inset-bottom))}
@media (max-width:560px){.cookie-pic{width:46px;height:46px}.cookie-body{padding:16px 16px 4px}.cookie-actions{padding:8px 16px 14px}}
@media (prefers-reduced-motion:reduce){.cookie{animation:none}}

/* map label placement */
.mapn .map .ml{font-size:max(12px,3cqw);background:#EDE5C3d9;padding:0 .18em;border-radius:5px}
.mapn .map .ml.l{translate:-100% -50%}
.mapn .map .ml.r{translate:0 -50%}
.mapn .map .hq-label{font-size:max(12px,2.3cqw)}
.mapn .map .edge{background:none}
.mapn .map .stamp{font-size:max(13px,2.7cqw)}
.mapn .map .key{position:absolute;left:calc(var(--mx)/9*1%);top:calc(var(--my)/6.4*1%);display:flex;align-items:center;gap:.4em;font-size:max(12px,2.9cqw);color:#7A4F00;white-space:nowrap;line-height:1}
.mapn .map .key i{width:1.2em;height:1.2em;border-radius:50%;background:#FFC83D40;border:3px solid #D08A00;flex:none}
.cookie .body{font-size:14.5px}

html:not(.camera-mode) body{overflow-x:clip}
@container (max-width:620px){
  .mapn .map .stamp,.mapn .map .edge{display:none}
  .mapn .map .ml:not(.maj):not(.hq-label){display:none}
  .mapn .map .key{white-space:normal;max-width:72%;font-size:12px;line-height:1.15;align-items:flex-start}
  .mapn .map .key i{width:14px;height:14px;margin-top:1px}
}

.cookie-prefs{display:flex;flex-direction:column;gap:8px;padding:6px 22px 4px}
.cookie-prefs[hidden]{display:none}
.pref{display:flex;gap:10px;align-items:flex-start;font-size:14px;line-height:1.35;color:#4A3B5C;cursor:pointer}
.pref input{margin-top:3px;width:18px;height:18px;accent-color:var(--red);flex:none}
.pref b{display:block;color:var(--ink)}
.cookie .body a{color:var(--purple);font-weight:700}
