@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Playfair+Display:ital,wght@0,500;0,600;0,700;1,500;1,600&display=swap');
:root{--red:#b92525;--cream:#fff4df;--ink:#292923;--line:#dcd8cb}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:90px}body{margin:0;font-family:'DM Sans',sans-serif;color:var(--ink);background:#faf8f1}button,input,a{-webkit-tap-highlight-color:transparent}button,a,input{touch-action:manipulation}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #e7a838;outline-offset:4px}header{height:96px;display:flex;align-items:center;justify-content:space-between;padding:0 5%;background:var(--cream)}.brand{display:flex;gap:12px;align-items:center;font-size:17px;font-weight:700;letter-spacing:1px}.brand-mark{font-family:serif;border:1px solid currentColor;font-size:31px;width:46px;height:46px;display:grid;place-items:center;color:var(--red)}.brand small{display:block;font-size:10px;letter-spacing:1.5px;margin-top:5px}nav{display:flex;gap:34px;font-size:14px}nav a:last-child{border-bottom:1px solid var(--red);padding-bottom:7px}nav span{margin-left:14px}.location{font-size:12px;letter-spacing:1px}.hero{background:var(--red);color:var(--cream);padding:28px 5% 0;overflow:hidden}.hero-top,.hero-footer{display:flex;justify-content:space-between;font-size:12px;letter-spacing:1.7px}.hero-top{border-top:1px solid #ffffff45;padding-top:20px}.hero-top span:last-child{font-size:22px;letter-spacing:12px}h1{font-family:'Playfair Display',Georgia,serif;font-size:clamp(80px,10.5vw,160px);line-height:.97;letter-spacing:-6px;font-weight:500;margin:24px 0 -60px;position:relative;z-index:2;pointer-events:none}h1 em{font-weight:500} .hero-bottom{display:grid;grid-template-columns:1fr 1.65fr .25fr;gap:40px;align-items:end}.intro{padding:100px 0 45px}.eyebrow{font-size:12px;letter-spacing:2px;font-weight:600}.intro p{font-size:22px;line-height:1.5;margin:20px 0 25px}.primary{display:flex;justify-content:space-between;gap:25px;padding:19px 22px;background:var(--cream);color:var(--red);font-size:15px;font-weight:600;max-width:285px}.primary:hover{background:white}.intro small{font-size:12px;display:block;margin-top:20px;opacity:.8}.gateway{margin:0;transform:rotate(-3deg);position:relative;background:var(--cream);padding:10px 10px 0;box-shadow:0 15px 40px #5d0b2040;max-width:640px;will-change:transform}.gateway img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover}.gateway figcaption{display:flex;justify-content:space-between;color:var(--red);font-size:10px;letter-spacing:1px;padding:14px 5px}.side-note{writing-mode:vertical-rl;font-size:12px;letter-spacing:2px;line-height:1.8;padding-bottom:45px}.side-note span{font-size:40px;display:block;margin-top:30px}.hero-footer{padding:45px 0 22px;margin-top:25px}.explore{padding:85px 5% 70px}.section-heading{display:flex;align-items:end;justify-content:space-between;margin-bottom:35px}.section-heading .eyebrow{color:var(--red)}h2{font-family:'Playfair Display',Georgia,serif;font-weight:500;font-size:60px;letter-spacing:-2px;line-height:1.05;margin:18px 0 0}h2 em{color:var(--red)}.section-heading p{line-height:1.8;font-size:16px}.demo-note{font-size:13px;line-height:1.6;padding:15px 0;border-top:1px solid var(--line);color:#666255}.demo-note span{color:var(--red);font-size:11px;letter-spacing:1px;font-weight:bold;margin-right:12px}.explorer{display:grid;grid-template-columns:340px 1fr;border:1px solid var(--line);background:#fffdf7;min-height:640px}aside{padding:25px 22px;border-right:1px solid var(--line)}aside label{font-family:'Playfair Display',serif;font-size:24px}.search-wrap{display:flex;align-items:center;border:1px solid var(--line);background:#fff;margin-top:18px;padding:0 13px;gap:8px}.search-wrap>span{font-size:27px}input{font:inherit;font-size:14px;width:100%;border:0;outline:none;padding:15px 0;background:transparent}.filters{display:flex;flex-wrap:wrap;gap:7px;margin-top:15px}.filters button{border:1px solid var(--line);border-radius:20px;background:transparent;padding:8px 11px;font-size:12px}.filters button.active{background:var(--red);border-color:var(--red);color:white}.results-heading{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:#6d695f;margin:25px 0 10px}.text-button{background:none;border:0;text-decoration:underline;color:var(--red);font-size:12px}#results{max-height:375px;overflow:auto}.result{border:0;border-top:1px solid var(--line);padding:17px 3px;background:none;text-align:left;width:100%;display:flex;gap:13px;align-items:center}.result:hover{background:#f5f0e7}.result .number{color:var(--red);font:italic 25px Georgia;min-width:29px}.result strong{display:block;font-size:15px;margin-bottom:5px}.result small{font-size:12px;color:#706d60}.result .chevron{margin-left:auto;color:var(--red)}.empty{font-size:15px;line-height:1.7;padding:25px 0}.map-wrap{position:relative;overflow:hidden;background:#e8ecdf;min-width:0;display:flex;flex-direction:column}.map-top{padding:20px;display:flex;justify-content:space-between;font-size:11px;letter-spacing:1px;background:#f4f4e9;border-bottom:1px solid #d9ddce}.map{flex:1;overflow:hidden;min-height:485px;touch-action:pan-y;cursor:grab}.map svg{width:100%;height:100%;min-height:485px;display:block}.map svg text{font-family:'DM Sans',sans-serif}.pin{cursor:pointer}.pin:hover circle,.pin:focus circle{fill:#7c1616;stroke:#fff;stroke-width:4}.pin:focus{outline:none}.pin.dim{opacity:.17;pointer-events:none}.map-controls{position:absolute;right:15px;bottom:64px;display:flex;flex-direction:column;box-shadow:0 2px 9px #0001}.map-controls button{width:38px;height:38px;border:1px solid var(--line);background:#fffdf7;font-size:23px}.map-legend{padding:17px;display:flex;gap:15px;flex-wrap:wrap;align-items:center;background:#f4f4e9;font-size:11px;border-top:1px solid #d9ddce}.map-legend span:last-child{margin-left:auto;color:#6c6b60}.map-legend i{display:inline-block;background:var(--red);width:9px;height:9px;border-radius:50%;margin-right:5px}footer{background:var(--cream);padding:35px 5%;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:25px}footer p,footer>a:last-child{font-size:13px}dialog{border:0;padding:0;width:min(500px,calc(100% - 28px));max-height:85dvh;color:var(--ink);background:#fffdf7;box-shadow:0 20px 100px #0004}dialog::backdrop{background:#22291dd0;backdrop-filter:blur(4px)}.close-dialog{position:absolute;right:17px;top:15px;background:transparent;border:1px solid #ffffff70;border-radius:50%;width:36px;height:36px;font-size:25px;color:white}.detail-head{background:var(--red);color:var(--cream);padding:45px 30px 30px}.detail-head h3{font:40px/1.1 'Playfair Display',serif;margin:20px 0 15px}.detail-head p{font-size:14px;line-height:1.6}.detail-body{padding:26px 30px}.detail-body h4{font-size:13px;letter-spacing:2px;margin:0 0 10px}.menu-item{display:flex;justify-content:space-between;gap:15px;padding:18px 0;border-bottom:1px solid var(--line);font-size:15px}.menu-item span:last-child{white-space:nowrap;color:var(--red);font-weight:600}.menu-note{font-size:12px;line-height:1.7;color:#706d60}.locate{margin-top:16px;background:var(--red);color:white;width:100%;padding:16px;border:0}.zone-label{font-size:15px;fill:#6d715f;font-weight:600}.street-label{font-size:12px;fill:#777969;letter-spacing:1px}
@media(min-width:1500px){.hero-bottom{max-width:1400px;margin:auto}}@media(max-width:1000px){.location{display:none}.hero-bottom{gap:20px;grid-template-columns:1fr 1.35fr}.side-note{display:none}.intro p{font-size:18px}.explorer{grid-template-columns:290px 1fr}.section-heading h2{font-size:50px}.map-top span:last-child{display:none}}
@media(max-width:680px){header{height:78px;padding:0 5%}.brand{font-size:13px;gap:8px}.brand-mark{width:35px;height:38px;font-size:25px}.brand small{font-size:8px;letter-spacing:1px}nav{font-size:12px}nav a:first-child{display:none}nav span{margin-left:5px}.hero{padding-top:15px}.hero-top{font-size:9px;letter-spacing:1px}.hero-top span:last-child{font-size:16px;letter-spacing:4px}h1{font-size:clamp(62px,17vw,108px);letter-spacing:-3px;margin:30px 0 20px}.hero-bottom{display:flex;flex-direction:column;gap:0;align-items:stretch}.gateway{order:-1;width:86%;align-self:flex-end;margin:0 9px 15px}.intro{padding:25px 0 10px}.intro .eyebrow{font-size:10px}.intro p{font-size:20px;margin:13px 0 20px}.primary{max-width:none}.intro small{font-size:11px}.gateway figcaption{font-size:8px;padding:11px 0}.hero-footer{padding-top:15px;font-size:8px;letter-spacing:1px;gap:20px}.hero-footer span:last-child{white-space:nowrap}.explore{padding:48px 5%}.section-heading{display:block;margin-bottom:20px}.section-heading h2{font-size:43px}.section-heading p{font-size:14px;margin-top:20px}.demo-note{font-size:12px}.demo-note span{display:block}.explorer{display:flex;flex-direction:column}aside{padding:20px;border-right:0}.filters button{font-size:13px}#results{max-height:250px}.map{min-height:390px}.map svg{min-height:390px}.map-top{font-size:10px}.map-legend span:last-child{margin:0;width:100%}footer{align-items:start;flex-direction:column;gap:14px}footer p{margin:0}dialog{max-height:90dvh}.detail-head{padding:40px 25px 25px}.detail-body{padding:25px}.detail-head h3{font-size:35px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.gateway{will-change:auto}}

/* Immersive gateway entrance */
body{background:#faf8f1}.scene-header{position:absolute;z-index:5;top:0;left:0;right:0;height:98px;padding:0 4%;color:#fff4df;background:linear-gradient(#071f22c9,transparent);gap:20px}.scene-header .brand-mark{color:#f2cb87;border-color:#d0b78680}.scene-header nav{background:#103331b5;backdrop-filter:blur(12px);border:1px solid #dfd9b832;border-radius:40px;gap:0;padding:6px;box-shadow:0 8px 25px #0002}.scene-header nav a{padding:10px 23px;font-size:14px;border:0}.scene-header nav a:last-child{background:#eee7d5;color:#123f3c;border-radius:25px}.scene-header .location{font-size:12px;letter-spacing:1.5px}.portal-hero{height:100svh;min-height:720px;max-height:1250px;position:relative;isolation:isolate;background:#102f2c;color:#fff5dc;overflow:hidden}.scene-stage{position:absolute;inset:0;transform-origin:50% 56%;will-change:transform}.scene-art{position:absolute;width:100%;height:100%;object-fit:cover;object-position:50% 50%;user-select:none;pointer-events:none}.scene-stage canvas{position:absolute;inset:0;width:100%;height:100%;touch-action:pan-y;outline:none}.scene-shade{position:absolute;inset:0;background:linear-gradient(0deg,#061b1de8 0%,#09252438 21%,transparent 45%,#0622260a 70%,#031c2350);pointer-events:none}.scene-kicker{position:absolute;top:125px;left:4%;font-size:11px;letter-spacing:2.5px;writing-mode:vertical-rl;opacity:.8;pointer-events:none}.scene-copy{position:absolute;bottom:13%;left:4%;pointer-events:none;text-shadow:0 2px 30px #071e20cc;max-width:440px}.scene-copy .eyebrow{font-size:11px;letter-spacing:2px;color:#f2cc8f}.scene-copy h1{font-family:'Playfair Display',Georgia,serif;font-weight:500;font-size:clamp(45px,5.4vw,88px);line-height:1.02;letter-spacing:-2.5px;margin:15px 0 17px}.scene-copy p{font-size:14px;line-height:1.6;max-width:275px;color:#efe9d8}.curtain-hint{position:absolute;right:4%;bottom:17%;text-align:right;font-size:12px;letter-spacing:.2px;color:#e2e8d9;max-width:230px}.curtain-hint>span{line-height:1.6;display:block;text-shadow:0 1px 6px #000}.curtain-hint button{display:flex;align-items:center;justify-content:space-between;gap:28px;margin:16px 0 0 auto;padding:13px 18px;border:1px solid #d7ddc266;background:#0d343399;color:#fff5dc;border-radius:30px;backdrop-filter:blur(12px);font-size:14px}.curtain-hint button:hover{background:#e6d9b9;color:#123b37}.curtain-hint .touch-hint{display:none}.scene-scroll{position:absolute;bottom:30px;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:10px;font-size:11px;letter-spacing:2px;white-space:nowrap}.scroll-arrow{font:26px Georgia;animation:scroll-cue 2.4s ease-in-out infinite}.scene-coordinate{position:absolute;bottom:36px;left:4%;font-size:10px;letter-spacing:2px;color:#d7dcc8}.explore{position:relative;z-index:2;box-shadow:0 -20px 50px #081e2010}.portal-hero:focus-within .curtain-hint button{border-color:#ead19c}@keyframes scroll-cue{0%,100%{transform:translateY(0)}50%{transform:translateY(6px)}}
@media(max-width:1000px){.scene-header .location{display:none}.scene-copy{max-width:280px;bottom:14%}.scene-copy h1{font-size:58px}.curtain-hint{bottom:16%;max-width:180px}.scene-kicker{top:110px}.scene-header{height:85px}.portal-hero{min-height:690px}}
@media(max-width:680px){.scene-header{height:82px;padding:0 5%;align-items:center}.scene-header nav a:first-child{display:none}.scene-header nav a:last-child{padding:10px 15px;font-size:12px}.scene-header .brand small{font-size:8px}.scene-header nav{padding:4px}.portal-hero{height:100svh;min-height:760px;max-height:1050px}.scene-kicker{top:103px;left:50%;transform:translateX(-50%);writing-mode:horizontal-tb;white-space:nowrap;font-size:9px;letter-spacing:1.8px}.scene-copy{bottom:104px;left:6%;max-width:100%;}.scene-copy .eyebrow{font-size:9px;letter-spacing:1.5px}.scene-copy h1{font-size:48px;margin:10px 0;line-height:1;letter-spacing:-1.5px}.scene-copy h1 br{display:none}.scene-copy h1 em{display:block}.scene-copy p{font-size:12px;margin:12px 0 0;max-width:220px}.scene-coordinate{display:none}.scene-scroll{bottom:18px;font-size:9px;gap:7px}.curtain-hint{right:5%;bottom:112px;max-width:135px}.curtain-hint>span{font-size:10px}.curtain-hint button{font-size:12px;padding:11px 12px;gap:10px;margin-top:10px}.scene-shade{background:linear-gradient(0deg,#061b1dfa 0%,#092524b3 18%,transparent 41%,transparent 74%,#031c2390)}.scene-stage{transform-origin:50% 48%}}
@media(pointer:coarse){.curtain-hint .mouse-hint{display:none}.curtain-hint .touch-hint{display:block}}
@media(max-width:360px){.scene-copy h1{font-size:41px}.scene-copy p{max-width:175px}.curtain-hint{max-width:118px}}
@media(prefers-reduced-motion:reduce){.scroll-arrow{animation:none}.scene-stage{will-change:auto}}
@media(max-width:680px){.portal-hero{background:radial-gradient(ellipse at 50% 35%,#275658 0%,#102f32 45%,#061b1d 90%)}.scene-stage{width:175%;height:calc(175vw * 941 / 1672);left:-37.5%;right:auto;top:clamp(120px,18svh,180px);bottom:auto;mask-image:linear-gradient(to bottom,transparent 0%,black 7%,black 84%,transparent 100%)}.scene-art{object-fit:cover}.scene-copy{bottom:104px}.scene-shade{background:linear-gradient(0deg,#061b1d 0%,transparent 30%,transparent 85%,#031c2340)}}

/* A festival map inspired by red seals, gold ink and paper street guides. */
.explore{--red:#9f2028;--line:#dfceb0;background:#791b22;color:#fff0d1;padding:65px 4% 38px;box-shadow:none;scroll-margin-top:0}.explore .section-heading{margin-bottom:30px;align-items:center;gap:20px}.map-title-lockup{display:flex;gap:23px;align-items:center}.festival-seal{border:1px solid #eac180;outline:1px solid #eac18070;outline-offset:-5px;min-width:52px;padding:12px 12px;color:#f4ce88;text-align:center;font:24px/1.12 serif}.explore .eyebrow{color:#f0c38a;font-size:11px;letter-spacing:2px}.explore h2{color:#fff0d1;font-size:52px;letter-spacing:-1.5px;margin:10px 0}.explore .section-heading p{color:#f0d7bb;font-size:15px;margin:10px 0 0}.map-calligraphy{font:52px serif;letter-spacing:7px;color:#ddb879;white-space:nowrap}.explorer{display:block;min-height:0;border:1px solid #e0bb79;padding:7px;background:#65171e;box-shadow:0 20px 70px #34080d30}.food-toolbar{display:flex;gap:30px;align-items:center;justify-content:space-between;background:#fff7e7;padding:23px 25px;border-bottom:1px solid #dac19b;color:#63212a}.search-block{width:320px;min-width:240px}.search-block label{font-size:14px;font-weight:600}.food-toolbar .search-wrap{margin-top:8px;background:#fffdf7;border-color:#ceaf80;border-radius:3px}.food-toolbar input{padding:12px 0;font-size:14px}.food-toolbar .filters{margin:0;gap:8px;justify-content:flex-end}.filters button{font-size:14px;min-height:42px;border-radius:4px;padding:10px 14px;background:#fffaf0;border-color:#d9c4a1;color:#78353a}.filters button.active{background:#a1252b;border-color:#a1252b;box-shadow:inset 0 0 0 3px #a1252b,inset 0 0 0 4px #d5a35d;color:#fff0d0}.map-workbench{display:grid;grid-template-columns:300px minmax(0,1fr);background:#fcf4e3;color:#49272a}.map-workbench aside{padding:0 20px 15px;border-right:1px solid #ddc6a0}.results-heading{margin:0;padding:20px 0 15px;font-size:13px;color:#74484a}.text-button{font-size:13px;color:#952730}.result{padding:18px 0;border-color:#e5d5ba;gap:13px}.result:hover{background:#f3e5cb}.result .number{min-width:34px;height:36px;border:1px solid #ac3e3f;color:#9f252c;font:18px/34px Georgia;text-align:center;border-radius:3px;background:#fff9ea}.result strong{font-size:15px}.result small{font-size:12px;color:#82645a;display:block;line-height:1.5}.result .chevron{color:#9f252c}#results{max-height:500px}.map-wrap{background:#f2e4c7;min-height:580px}.map-top{background:#f4e8cd;border-color:#dcc193;color:#7c292d;padding:17px 22px;align-items:center;gap:15px;min-height:65px;letter-spacing:1px}.map-top b{font:24px serif;letter-spacing:3px;padding-right:13px;border-right:1px solid #b18e5e}.map-top-title{margin-left:10px;font-size:11px}.map{min-height:450px}.map svg{min-height:450px}.map-controls{bottom:74px;border:1px solid #b4834d;box-shadow:0 4px 15px #5c281025}.map-controls button{background:#fff7e7;color:#87262b;border:0;border-bottom:1px solid #ddc6a0;width:44px;height:44px}.map-controls button:hover{background:#edd6af}.map-legend{background:#f4e8cd;border-color:#d3b787;color:#70423c;font-size:12px;padding:16px 20px}.map-legend span:last-child{color:#806859}.map-legend i{background:#a4242b}.zone-label{font-size:15px;fill:#7b3633;font-weight:600;letter-spacing:.2px}.street-label{font-size:12px;fill:#926c4c;letter-spacing:1px}.pin:hover circle,.pin:focus circle{fill:#6f101e;stroke:#ffe5a5;stroke-width:3}.pin.dim{opacity:.12}.explore .demo-note{color:#edd2b8;border-top:0;font-size:12px;padding:18px 0 0}.explore .demo-note span{color:#e9bb7c;font-size:11px}footer{background:#58161f;color:#f3d8af;border-color:#af744f}footer .brand-mark{color:#efc183}.detail-head{background:#7b1e28;border-bottom:4px double #d2ab6c}.detail-body{background:#fff7e5}.close-dialog{border-color:#e8b675}.locate{background:#8c2029}.menu-item{border-color:#e0c9a0}.menu-item span:last-child{color:#92252c}
.gateway-journey{position:relative;background:#102f2c}.journey-wash{position:absolute;inset:0;pointer-events:none;background:#791b22;opacity:0;z-index:3}.journey-caption{position:absolute;z-index:4;top:48%;width:100%;text-align:center;font-size:12px;letter-spacing:4px;opacity:0;pointer-events:none}.scene-copy,.curtain-hint,.scene-kicker,.scene-scroll,.scene-coordinate{will-change:opacity}
@media(max-width:1050px){.map-calligraphy{font-size:36px}.food-toolbar{gap:20px}.food-toolbar .filters{gap:6px}.filters button{padding:9px 10px;font-size:13px}.map-workbench{grid-template-columns:260px minmax(0,1fr)}.map-top>span:last-child{display:none}.explore h2{font-size:44px}}
@media(max-width:680px){html{scroll-padding-top:0}.gateway-journey.scroll-journey{height:250svh}.scroll-journey .portal-hero{position:sticky;top:0;height:100svh;min-height:0;max-height:none}.scroll-journey .scene-stage{transform-origin:50% 76%}.scroll-journey .scene-shade{background:linear-gradient(0deg,#061b1d 0%,transparent 34%,transparent 85%,#031c2340)}.explore{padding:35px 14px 20px}.explore .section-heading{margin-bottom:24px}.map-title-lockup{gap:14px}.festival-seal{font-size:18px;min-width:38px;padding:10px 8px}.explore h2{font-size:33px;letter-spacing:-1px;line-height:1.1}.explore .eyebrow{font-size:9px;letter-spacing:1.2px}.explore .section-heading p{font-size:13px;line-height:1.6;max-width:255px}.map-calligraphy{display:none}.explorer{padding:4px}.food-toolbar{display:block;padding:16px 14px 14px}.search-block{width:100%;min-width:0}.food-toolbar .search-wrap{margin-top:7px}.food-toolbar input{font-size:16px}.food-toolbar .filters{justify-content:flex-start;flex-wrap:nowrap;overflow:auto;margin-top:13px;padding-bottom:4px}.filters button{flex:none;font-size:12px;min-height:38px;padding:8px 11px;white-space:nowrap}.map-workbench{display:flex;flex-direction:column}.map-wrap{order:-1;min-height:0}.map-top{padding:13px 12px;min-height:51px}.map-top b{font-size:21px;padding-right:7px}.map-top-title{font-size:9px;margin-left:5px;letter-spacing:1px}.map{min-height:340px}.map svg{min-height:340px}.map-legend{font-size:11px;padding:12px;gap:10px}.map-legend span:last-child{width:auto;margin:0}.map-controls{right:10px;bottom:75px}.map-controls button{width:42px;height:42px}.map-workbench aside{padding:0 16px;border-right:0;border-top:1px solid #cfb586}#results{max-height:320px}.results-heading{font-size:13px;padding-top:18px}.result .number{min-width:34px}.result small{font-size:12px}.explore .demo-note{font-size:11px;line-height:1.7;padding:16px 4px 0}.explore .demo-note span{display:inline;font-size:10px}.scene-scroll{font-size:10px}}
@media(prefers-reduced-motion:reduce){.gateway-journey.scroll-journey{height:auto}.scroll-journey .portal-hero{position:relative}.journey-wash,.journey-caption{display:none}.scene-copy,.curtain-hint,.scene-kicker,.scene-scroll,.scene-coordinate{will-change:auto}}

/* Full-screen sky-blue gateway, with a direct map link. */
.portal-hero,.gateway-journey{background:#77bde4}.scene-header{background:linear-gradient(#1735488c,transparent)}.scene-header nav{background:#28495877}.food-map-cta{display:flex;align-items:center;justify-content:space-between;gap:28px;padding:14px 22px;border:1px solid #e6c48b;background:#fff0d6;color:#7b2426;border-radius:30px;font-size:14px;box-shadow:0 5px 24px #27150828}.food-map-cta:hover{background:#fff9ea}.scene-shade{background:linear-gradient(0deg,#241d20d9 0%,#1d20224d 20%,transparent 45%,transparent 80%,#193a4e33)}
@media(max-width:680px){.portal-hero,.scroll-journey .portal-hero{height:100svh;min-height:0;max-height:none;background:#77bde4}.scene-stage,.scroll-journey .scene-stage{inset:0;width:100%;height:100%;mask-image:none;transform-origin:50% 76%}.scene-art{width:100%;height:100%;object-fit:cover;object-position:50% 50%}.scene-shade,.scroll-journey .scene-shade{background:linear-gradient(0deg,#261719db 0%,#2e211c77 20%,transparent 43%,transparent 85%,#193a4e44)}.scene-kicker{top:94px;font-size:9px;text-shadow:0 1px 8px #183d5c}.scene-copy{left:6%;bottom:100px}.scene-copy h1{font-size:46px}.scene-copy p{max-width:220px}.curtain-hint{right:6%;bottom:113px;max-width:none}.food-map-cta{font-size:13px;gap:18px;padding:13px 17px}.scene-scroll{bottom:21px}.scene-header{height:80px}.scene-copy .eyebrow{color:#ffe5a1}}
@media(max-width:380px){.scene-copy h1{font-size:40px}.scene-copy p{max-width:185px;font-size:11px}.food-map-cta{padding:12px 14px;gap:12px}.scene-copy .eyebrow{font-size:8px}}

@media(max-width:680px){.scene-header nav{display:none}}

/* Sponsor acknowledgement and event program. */
.program-trigger{padding:12px 20px;background:#fff0d6;color:#77212a;border:1px solid #e8ca93;border-radius:28px;font-size:14px;white-space:nowrap;box-shadow:0 4px 20px #291b1520}.program-trigger span{margin-left:15px}.program-trigger:hover{background:#fff9e9}.sponsor-screen{background:#791b22;color:#fff0d1;padding:65px 24px;text-align:center;position:relative;border-bottom:1px solid #c0925945}.sponsor-inner{max-width:800px;margin:auto}.sponsor-kicker{font-size:11px;letter-spacing:2.5px;color:#e9bf85}.sponsor-thanks{display:block;font:34px serif;letter-spacing:8px;color:#e3b678;margin:20px 0 10px}.sponsor-screen h2{font:500 49px/1.06 'Playfair Display',Georgia,serif;letter-spacing:-1px;margin:0}.sponsor-screen h2 em{color:#f4cf96}.sponsor-intro{font-size:14px;line-height:1.7;color:#efcfae;margin:16px 0 26px}.sponsor-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;max-width:740px;margin:auto}.sponsor-tile{min-height:95px;background:#fff5df;color:#66202a;border:1px solid #e7cda4;display:grid;place-items:center;padding:16px;box-shadow:inset 0 0 0 4px #fff5df,inset 0 0 0 5px #ddc39a;border-radius:3px}.sponsor-tile span{font:600 20px/1.2 'DM Sans',sans-serif}.sponsor-actions{display:flex;justify-content:center;gap:16px;margin:26px 0 20px;align-items:center}.sponsor-actions button,.sponsor-actions a{font:500 14px 'DM Sans',sans-serif;border:1px solid #d8ad73;color:#fff0d1;background:none;border-radius:30px;padding:13px 18px;min-height:46px}.sponsor-actions span{margin-left:14px}.sponsor-actions button:hover,.sponsor-actions a:hover{background:#fff0d1;color:#791b22}.sponsor-preview{font-size:12px;line-height:1.6;color:#e3b798;margin:0}.festival-dialog{width:min(620px,calc(100% - 28px));max-height:88dvh}.festival-dialog .detail-head{padding-top:40px}.program-body{text-align:center;padding:30px}.program-body h4{font:28px/1.2 'Playfair Display',serif;letter-spacing:0;margin:20px 0}.program-body p{font-size:15px;line-height:1.7;color:#795e51}.program-seal{display:inline-grid;place-items:center;border:1px solid #a33634;outline:1px solid #a3363455;outline-offset:4px;width:56px;height:56px;color:#9b2a32;font:38px serif}.all-partners{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:10px}.all-partners li{border:1px solid #ddcaa8;padding:16px 12px;text-align:center;font-size:14px;background:#fffdf3;display:grid;place-items:center;min-height:60px}
@media(max-width:680px){.program-trigger{font-size:12px;padding:11px 14px}.program-trigger span{margin-left:8px}.sponsor-screen{padding:44px 22px}.sponsor-screen.journey-sponsors{position:absolute;inset:0;z-index:5;display:flex;align-items:center;justify-content:center;overflow-y:auto;padding:28px 22px;border:0;opacity:0;pointer-events:none}.journey-sponsors .sponsor-inner{width:100%;margin:auto;max-width:450px}.sponsor-kicker{font-size:9px;letter-spacing:1.8px}.sponsor-thanks{font-size:28px;margin:15px 0 12px}.sponsor-screen h2{font-size:37px}.sponsor-intro{font-size:12px;margin:15px auto 21px;max-width:260px}.sponsor-grid{grid-template-columns:1fr 1fr;gap:9px}.sponsor-tile{min-height:70px;padding:12px 10px}.sponsor-tile span{font-size:16px}.sponsor-actions{gap:9px;flex-wrap:wrap;margin:21px 0 17px}.sponsor-actions button,.sponsor-actions a{font-size:12px;padding:12px 14px}.sponsor-actions span{margin-left:7px}.sponsor-preview{font-size:11px}.festival-dialog .detail-head h3{font-size:34px}.all-partners li{font-size:13px}}
@media(max-width:680px) and (max-height:720px){.sponsor-screen.journey-sponsors{padding:20px}.sponsor-thanks{margin:8px 0;font-size:23px}.sponsor-screen h2{font-size:31px}.sponsor-intro{margin:11px auto 14px}.sponsor-tile{min-height:58px}.sponsor-actions{margin:15px 0 12px}.sponsor-preview{font-size:10px}}

/* Supporting partners circulate beneath the stationary central sponsors. */
.sponsor-inner{min-width:0;width:100%}.partner-banner{margin:24px auto 0;max-width:740px;min-width:0}.partner-banner-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;color:#e9bf85;font-size:9px;letter-spacing:2px}.partner-motion{background:none;color:#f4cf96;border:1px solid #e9bf8560;border-radius:20px;padding:6px 10px;font:11px 'DM Sans',sans-serif;letter-spacing:0}.partner-motion:hover{background:#fff0d118}.partner-window{overflow:hidden;mask-image:linear-gradient(to right,transparent,#000 5%,#000 95%,transparent)}.partner-track{display:flex;width:max-content;animation:partner-drift 120s linear infinite}.partner-row{list-style:none;display:flex;gap:12px;flex:none;align-items:stretch;margin:0;padding:0 12px 0 0}.partner-row li{display:grid;place-items:center;width:155px;min-height:62px;padding:10px 15px;background:#fff4de;color:#75242a;border:1px solid #dec195;border-radius:3px;font:600 14px/1.3 'DM Sans',sans-serif}.partner-banner.is-paused .partner-track{animation-play-state:paused}@media(hover:hover){.partner-window:hover .partner-track{animation-play-state:paused}}@keyframes partner-drift{to{transform:translateX(-50%)}}
@media(max-width:680px){.partner-banner{margin-top:18px}.partner-row li{width:135px;min-height:52px;font-size:12px}.partner-banner-heading{font-size:8px;letter-spacing:1.5px}.sponsor-screen.journey-sponsors{overflow-x:hidden}.sponsor-thanks{margin:10px 0}.sponsor-intro{margin:12px auto 16px}.sponsor-actions{margin:18px 0 14px}}
@media(prefers-reduced-motion:reduce){.partner-track{animation:none}.partner-row[aria-hidden]{display:none}.partner-window{overflow-x:auto;mask-image:none}.partner-motion{display:none}}

/* Follow the changing mobile viewport as browser chrome collapses. */
.gateway-journey{background:#791b22}.map-program{flex:none;margin:18px 18px 0}.map-program:focus-visible{outline-color:#ffe3a1}
@media(max-width:680px){.portal-hero,.scroll-journey .portal-hero{height:100dvh;background:#791b22}.map-program{margin:8px 0 0;min-height:44px;padding:12px 20px}.gateway-journey.scroll-journey{height:calc(150svh + 100dvh)}}

/* Reference-based parking map with semantic zoom. */
.map{touch-action:none;min-height:0;aspect-ratio:1200/560;flex:none;background:#eed3a5;cursor:grab}.map:active{cursor:grabbing}.map svg{height:100%;min-height:0;user-select:none;touch-action:none}.food-area{cursor:zoom-in}.food-area:hover .lot-ground,.food-area:focus .lot-ground{stroke:#7c1925;stroke-width:3;fill:#ffeccc}.food-area:focus{outline:none}.booth,.lot-detail-label{display:none}.show-booths .booth,.show-booths .lot-detail-label{display:block}.show-booths .area-overview{display:none}.booth:hover rect,.booth:focus rect{fill:#ffe0a4;stroke-width:2}.map-gesture-hint{margin:0;padding:12px 16px;background:#f7eacb;color:#7b342b;font-size:12px;line-height:1.6;border-bottom:1px solid #d7bb8c}.map-wrap{justify-content:flex-start}.map-controls{bottom:70px}.map svg .pin.dim{display:none}
@media(max-width:680px){.map{aspect-ratio:1.1;min-height:0}.map svg{min-height:0}.map-gesture-hint{font-size:11px}.map-controls{bottom:78px}.map-controls button{width:36px;height:36px}}

/* Supplied main sponsor logos, with a centred final row. */
.sponsor-grid{grid-template-columns:repeat(6,minmax(0,1fr))}
.sponsor-tile{grid-column:span 2;background:#fff;min-height:150px;padding:18px;box-shadow:inset 0 0 0 4px #fff,inset 0 0 0 5px #ddc39a;align-content:center;gap:10px}
.sponsor-tile:nth-child(4){grid-column:2 / span 2}
.sponsor-tile img{display:block;width:100%;height:108px;object-fit:contain;min-width:0}
.sponsor-chamber img{object-fit:cover}
.sponsor-captioned img{height:78px}
.sponsor-tile span{font:600 10px/1.4 'DM Sans',sans-serif;letter-spacing:.5px;color:#66202a;max-width:210px}
@media(max-width:680px){.sponsor-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}.sponsor-tile{min-height:102px;padding:12px;gap:7px}.sponsor-tile:nth-child(4){grid-column:span 2}.sponsor-tile:last-child{grid-column:2 / span 2}.sponsor-tile img{height:76px}.sponsor-captioned img{height:54px}.sponsor-tile span{font-size:8px;letter-spacing:.3px}.sponsor-nrj img{height:84px}}
@media(max-width:680px) and (max-height:720px){.sponsor-tile{min-height:86px;padding:10px}.sponsor-tile img{height:62px}.sponsor-captioned img{height:42px}.sponsor-nrj img{height:70px}}

/* All supplied supporting logos repeat seamlessly at a readable pace. */
.partner-track{animation-duration:240s}.partner-row li{width:170px;min-height:90px;padding:12px 15px;background:#fff}.partner-row img{display:block;width:140px;height:66px;object-fit:contain}.partner-row li.partner-dark{background:#791b22;border-color:#d8ad73}
@media(max-width:680px){.partner-row li{width:145px;min-height:76px;padding:10px 12px}.partner-row img{width:119px;height:56px}}

/* Compensate for the generous margins in these six supplied logo files. */
.partner-row li.partner-enlarged{overflow:hidden}
.partner-row .partner-enlarged img{transform:scale(1.45)}


/* Keep the map introduction together on narrow phone screens. */
.explore .section-heading p{max-width:none;white-space:nowrap;font-size:clamp(11px,3.2vw,15px)}
.map-top .map-top-title{display:inline;margin-left:0}

/* Sponsor screen shares the page scroll; one upward swipe advances to the map. */
@media(max-width:680px){
 .sponsor-screen.journey-sponsors{overflow:clip;padding:16px 22px;touch-action:pan-y}
 .journey-sponsors .sponsor-inner{flex:none;margin:0;transform-origin:center}
}

/* Festival-video palette: illuminated lanterns, lacquer red and a gold key border. */
.sponsor-screen,.explore,.festival-title{position:relative;isolation:isolate;background-color:#98080f;background-image:url('assets/festival-key-border.svg'),radial-gradient(ellipse at 50% 12%,#c51b2080,transparent 65%),linear-gradient(115deg,#79050b,#a30911 48%,#74050b);background-repeat:repeat-x,no-repeat,no-repeat;background-position:center bottom,center,center;background-size:40px 24px,100% 100%,100% 100%;border-bottom:0}
.sponsor-screen::before,.sponsor-screen::after,.explore::before,.explore::after,.festival-title::before,.festival-title::after{content:"";position:absolute;top:0;width:clamp(100px,22vw,260px);height:250px;background:url('assets/festival-lanterns.svg') left top/100% auto no-repeat;pointer-events:none;z-index:-1}
.sponsor-screen::before,.explore::before,.festival-title::before{left:0}
.sponsor-screen::after,.explore::after,.festival-title::after{right:0;transform:scaleX(-1)}
.sponsor-screen{padding-top:75px;padding-bottom:50px}
.explore{padding-top:70px;padding-bottom:48px}
.journey-wash,.gateway-journey{background-color:#98080f}
@media(max-width:680px){.sponsor-screen{padding-top:54px}.sponsor-screen.journey-sponsors{padding:26px 22px}.explore{padding-top:65px;padding-bottom:42px}.sponsor-screen::before,.sponsor-screen::after,.explore::before,.explore::after{width:105px;opacity:.8}.sponsor-kicker{position:relative;display:block;max-width:210px;margin:auto}}

/* Exact lion artwork extracted from the supplied festival video. */
.festival-lions{position:absolute;inset:0;pointer-events:none;z-index:-1;overflow:hidden}
.festival-lions span{position:absolute;bottom:23px;left:0;width:clamp(80px,22vw,286px);aspect-ratio:286/262;background:url('assets/festival-lion.svg') center/contain no-repeat}
.festival-lions span:last-child{left:auto;right:0;transform:scaleX(-1)}
@media(max-width:680px){.festival-lions span{width:67px}.explore{padding-bottom:90px}}

/* Festival identity appears after entering the gateway, before the sponsors. */
.festival-title{display:none}
@media(max-width:680px){
 .gateway-journey.scroll-journey{height:calc(230svh + 100dvh)}
 .scroll-journey .festival-title{display:flex;position:absolute;inset:0;z-index:4;align-items:center;justify-content:center;text-align:center;opacity:0;pointer-events:none;color:#ffe6a0;padding:40px 22px}
 .festival-title-content{width:100%;max-width:440px;position:relative}
 .festival-edition{font:64px/1 Georgia,serif;color:#f8d57b;margin-bottom:20px}
 .festival-edition sup{font-size:24px;vertical-align:super;margin-left:3px}
 .festival-gateway-logo{display:block;width:125px;height:auto;margin:0 auto 20px}
 .festival-chinatown-logo{display:block;width:100%;height:auto;margin:0 auto 22px}
 .festival-title h2{font:700 clamp(23px,6.5vw,34px)/1.15 Georgia,serif;letter-spacing:-.5px;margin:0;text-shadow:0 2px 0 #6e120c}
 .festival-date{display:inline-block;background:linear-gradient(100deg,#ffdf75,#fff0ac,#ffdc72);color:#b31920;font:700 clamp(23px,6.7vw,34px)/1.2 Georgia,serif;padding:14px 18px;border-radius:32px;margin:28px 0 0;white-space:nowrap}
 .festival-title::before,.festival-title::after{width:120px}
 .festival-title .festival-lions span{width:110px}
}
@media(max-width:680px) and (max-height:650px){.festival-edition{font-size:44px;margin-bottom:10px}.festival-gateway-logo{width:95px;margin-bottom:14px}.festival-chinatown-logo{max-width:280px;margin-bottom:14px}.festival-date{margin-top:18px}.festival-title .festival-lions span{width:75px}}

/* Organiser credit and auspicious cloud flourishes on the festival title. */
.festival-clouds{position:absolute;inset:0;z-index:-1;pointer-events:none;background:url('assets/festival-clouds.svg') left 18%/420px auto no-repeat,url('assets/festival-clouds.svg') right 72%/480px auto no-repeat}
@media(max-width:680px){
 .scroll-journey .festival-title{padding:36px 24px 80px}
 .festival-title-content{max-width:360px}
 .festival-gateway-logo{width:105px;margin:0 auto 28px}
 .festival-wordmark{position:relative;padding-top:12px}
 .festival-wordmark .festival-edition{position:absolute;left:4px;top:-23px;font-size:32px;margin:0;line-height:1}
 .festival-edition sup{font-size:14px}
 .festival-chinatown-logo{margin-bottom:15px}
 .festival-title h2{font-size:clamp(22px,6vw,29px)}
 .festival-date{font-size:clamp(22px,6vw,29px);padding:11px 17px;margin:20px 0 0}
 .festival-organiser{margin-top:24px;color:#ffe6a0;text-align:center}
 .festival-organiser>span{display:block;font:18px Georgia,serif;margin-bottom:10px}
 .festival-organiser img{display:block;width:160px;height:70px;object-fit:cover;margin:auto;background:white;border:1px solid #f1d38b;border-radius:3px}
 .festival-organiser p{font:600 13px/1.4 'DM Sans',sans-serif;margin:10px 0 0}
 .festival-clouds{background-size:300px auto,320px auto;opacity:.8}
}
@media(max-width:680px) and (max-height:700px){
 .scroll-journey .festival-title{padding:24px 24px 60px}
 .festival-gateway-logo{width:75px;margin-bottom:24px}
 .festival-chinatown-logo{max-width:270px;margin-bottom:10px}
 .festival-title-content{max-width:290px}
 .festival-title h2{font-size:22px}
 .festival-date{margin-top:13px;font-size:23px;padding:9px 16px}
 .festival-organiser{margin-top:15px}
 .festival-organiser img{width:140px;height:60px}
 .festival-organiser>span{font-size:16px;margin-bottom:7px}
 .festival-organiser p{font-size:12px;margin-top:7px}
}

/* Curled auspicious clouds stay at the edges, clear of the central content. */
.festival-clouds{overflow:hidden;background:none;opacity:1}
.festival-clouds::before,.festival-clouds::after{content:"";position:absolute;top:0;bottom:0;width:clamp(110px,18vw,250px);background-image:url('assets/festival-clouds.svg'),url('assets/festival-clouds.svg');background-repeat:no-repeat;background-size:100% auto,80% auto;background-position:left 27%,left 69%;opacity:.58}
.festival-clouds::before{left:-40px}
.festival-clouds::after{right:-40px;transform:scaleX(-1);background-position:left 38%,left 78%}
@media(max-width:680px){
 .festival-wordmark .festival-edition{left:-13px}
 .festival-organiser p{font-size:17px;line-height:1.35;max-width:310px;margin:12px auto 0}
 .festival-clouds::before,.festival-clouds::after{width:130px;opacity:.46}
 .festival-clouds::before{left:-63px}
 .festival-clouds::after{right:-63px}
}
@media(max-width:680px) and (max-height:700px){.festival-organiser p{font-size:16px}}

/* Lead sponsor centred above the three supporting institutions. */
.sponsor-grid{grid-template-columns:repeat(3,minmax(0,1fr));max-width:650px}
.sponsor-grid .sponsor-tile{grid-column:auto;min-width:0}
.sponsor-grid .sponsor-lead{grid-column:2;grid-row:1}
.sponsor-grid .sponsor-tile:nth-child(n+2){grid-row:2}
.sponsor-collaboration{margin:24px auto 0;text-align:center}
.sponsor-collaboration .sponsor-kicker{display:block;max-width:none}
.sponsor-collaboration p{font:500 14px/1.7 'DM Sans',sans-serif;color:#fff0d1;margin:10px 0 0}
@media(max-width:680px){
 .sponsor-grid{gap:8px}
 .sponsor-grid .sponsor-lead{grid-column:1/-1;width:52%;justify-self:center;min-height:100px}
 .sponsor-grid .sponsor-tile:nth-child(n+2){min-height:112px;padding:9px 6px;gap:7px}
 .sponsor-grid .sponsor-lead img{height:76px}
 .sponsor-grid .sponsor-captioned img{height:43px}
 .sponsor-grid .sponsor-nrj img{height:80px}
 .sponsor-grid .sponsor-tile span{font-size:7px;letter-spacing:0;line-height:1.35}
 .sponsor-collaboration{margin-top:19px}
 .sponsor-collaboration p{font-size:12px;margin-top:8px}
}

/* Official separate PNGs retain the previous outlined presentation on red. */
.festival-gateway-logo,.festival-chinatown-logo{filter:drop-shadow(1px 0 0 #fff0d1) drop-shadow(-1px 0 0 #fff0d1) drop-shadow(0 1px 0 #fff0d1) drop-shadow(0 -1px 0 #fff0d1)}

.festival-gateway-logo{width:180px;margin-bottom:24px}
@media(max-width:680px) and (max-height:700px){.festival-gateway-logo{width:140px;margin-bottom:20px}}

/* Official festival branding in the homepage header and footer. */
.brand-official{display:block;line-height:0}
.brand-official img{display:block;width:310px;max-width:100%;height:auto}
.scene-header .brand-official img{filter:drop-shadow(0 1px 1px #fff1d4) drop-shadow(0 -1px 1px #fff1d4)}
footer .brand-official img{width:280px}
@media(max-width:680px){.scene-header .brand-official img{width:260px}footer .brand-official img{width:235px}}

footer .brand-official img{filter:drop-shadow(0 1px 0 #fff1d4) drop-shadow(0 -1px 0 #fff1d4)}

/* Match the main sponsor frame and position the footer return link. */
footer>a:last-child{margin-left:auto;align-self:flex-end;text-align:right}
.festival-organiser .organiser-logo-card{width:190px;min-height:94px;padding:12px;margin:0 auto;grid-column:auto}
.festival-organiser .organiser-logo-card img{width:160px;height:70px;object-fit:cover;border:0;border-radius:0;background:white}
@media(max-width:680px) and (max-height:700px){
 .festival-organiser .organiser-logo-card{width:170px;min-height:80px;padding:10px}
 .festival-organiser .organiser-logo-card img{width:140px;height:60px}
}

/* The festival identity is now the opening screen. */
.festival-home{display:flex;min-height:100svh;align-items:center;justify-content:center;text-align:center;color:#ffe6a0;padding:70px 24px 100px}
.festival-home .festival-title-content{width:100%;max-width:360px}
.festival-home .festival-gateway-logo{display:block;height:auto;margin:0 auto 24px}
.festival-home .festival-wordmark{position:relative;padding-top:12px}
.festival-home .festival-edition{position:absolute;left:-13px;top:-23px;font:32px/1 Georgia,serif;color:#f8d57b;margin:0}
.festival-home .festival-edition sup{font-size:14px;vertical-align:super}
.festival-home .festival-chinatown-logo{display:block;width:100%;height:auto;margin:0 auto 15px}
.festival-home h2{font:700 29px/1.15 Georgia,serif;letter-spacing:-.5px;margin:0;text-shadow:0 2px 0 #6e120c}
.festival-home .festival-date{display:inline-block;background:linear-gradient(100deg,#ffdf75,#fff0ac,#ffdc72);color:#b31920;font:700 29px/1.2 Georgia,serif;padding:11px 17px;border-radius:32px;margin:20px 0 0;white-space:nowrap}
.festival-home .festival-organiser{margin-top:24px}
.festival-home .festival-organiser>span{display:block;font:18px Georgia,serif;margin-bottom:10px}
.festival-home .festival-organiser p{font:600 17px/1.4 'DM Sans',sans-serif;margin:10px auto 0;max-width:310px}
@media(max-width:680px){.festival-home{padding:36px 24px 80px}.festival-home h2{font-size:clamp(22px,6vw,29px)}.festival-home .festival-date{font-size:clamp(22px,6vw,29px)}}
@media(max-width:680px) and (max-height:700px){.festival-home{padding:30px 24px 75px}.festival-home .festival-title-content{max-width:290px}.festival-home h2{font-size:22px}.festival-home .festival-date{font-size:23px;margin-top:13px}.festival-home .festival-organiser{margin-top:15px}}

/* Organiser credit below the festival map. */
.explore .map-organiser{position:relative;z-index:1;margin:32px auto 40px;text-align:center;color:#ffe6a0}
.explore .map-organiser>span{display:block;font:18px Georgia,serif;margin-bottom:12px}
.explore .map-organiser p{font:600 17px/1.4 "DM Sans",sans-serif;max-width:310px;margin:12px auto 0}

/* Direct map navigation and balanced opening-screen actions. */
html:has(.festival-home){scroll-padding-top:0}
.festival-home .sponsor-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;width:100%;max-width:340px;margin:24px auto 0}
.festival-home .sponsor-actions>button,.festival-home .sponsor-actions>a{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:48px;padding:12px 8px;font-size:13px;white-space:nowrap}
.festival-home .sponsor-actions span{margin-left:0}

/* Give phone landscape the full map width, with stands underneath. */
@media (orientation:landscape) and (max-height:600px) and (max-width:1200px){
 .map-workbench{display:flex;flex-direction:column}
 .map-workbench .map-wrap{order:-1;width:100%;min-width:0;min-height:0}
 .map-workbench aside{width:100%;border-right:0;border-top:1px solid #cfb586;padding:0 20px 15px}
}

/* A restrained organiser signature: the gateway already carries the emblem. */
.home-organiser-credit{margin:24px auto 0;text-align:center;font-family:"DM Sans",sans-serif;color:#fff0cf}
.home-organiser-credit>span{display:block;font-size:10px;font-weight:500;line-height:1.5;letter-spacing:2px;text-transform:uppercase;color:#e6c58e}
.home-organiser-credit>p{margin:6px 0 0;font-size:16px;font-weight:500;line-height:1.45;letter-spacing:.15px}
.festival-home .home-organiser-credit+.sponsor-actions{margin-top:22px}
@media(max-width:360px){.home-organiser-credit>p{font-size:14px}}

/* Match the sans-serif lettering in the Chamber logo. */
.home-organiser-credit>p{font-family:Arial,Helvetica,sans-serif;font-weight:700;letter-spacing:0}

.home-organiser-credit .chamber-name-lettering{display:block;width:290px;max-width:100%;height:auto;margin:0 auto}

/* Event geography follows the supplied north-up reference, without horizontal stretching. */
.map{min-height:0;aspect-ratio:950/1050}
.map svg{display:block;width:100%;height:100%;min-height:0;aspect-ratio:950/1050}
.map-wrap{min-height:0}
.road-label{font:13px Arial,sans-serif;fill:#786044;text-anchor:middle;paint-order:stroke;stroke:#fffdf5;stroke-width:3px;stroke-linejoin:round}
.context-label{font:14px Arial,sans-serif;fill:#6b634f;text-anchor:middle;paint-order:stroke;stroke:#f5edda;stroke-width:3px}
.event-label{font:700 16px Arial,sans-serif;fill:#76222c;text-anchor:middle;paint-order:stroke;stroke:#fff6e1;stroke-width:4px;stroke-linejoin:round}
.area-number{font:700 22px Arial,sans-serif;fill:#fff7e4;text-anchor:middle}
.food-label{font:700 12px Arial,sans-serif;fill:#743523;text-anchor:middle;paint-order:stroke;stroke:#f5ce79;stroke-width:2px}
.map-location{cursor:pointer}.map-location:focus{outline:none}.map-location:focus>rect,.map-location.selected>rect{stroke:#521926;stroke-width:4px;stroke-dasharray:none}
@media(min-width:681px){.map-workbench{grid-template-columns:260px minmax(0,1fr)}.map-wrap{max-width:100%}.explorer{max-width:1250px;margin:auto}}
@media(orientation:landscape) and (max-height:600px) and (max-width:1200px){.map-workbench{display:flex}}

/* Reference-style illustrated event map. */
.map,.map svg{aspect-ratio:1200/550;background:#a5adb2}
.illustrated-road{font:12px Arial,sans-serif;fill:#50595d;text-anchor:middle}
.building-label{font:8px Arial,sans-serif;fill:#858580;text-anchor:middle}
.parking-name{font:bold 14px Georgia,serif;fill:#635742;text-anchor:middle}
.stage-name{font:bold 16px Georgia,serif;fill:white;text-anchor:middle}
.arch-name{font:bold 11px Arial,sans-serif;fill:#55473a;text-anchor:middle;paint-order:stroke;stroke:#f2d18d;stroke-width:2px}
.illustrated-parking.selected>rect,.illustrated-parking:focus>rect{fill:#fff5d8;fill-opacity:.35;stroke:#c74436;stroke-width:2px}
.map-workbench{display:flex;flex-direction:column}.map-workbench .map-wrap{order:-1;width:100%;max-width:none}.map-workbench aside{width:100%;border-right:0;border-top:1px solid #cfb586}
@media(min-width:681px){#results{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));max-height:290px}.result{min-width:0}.map-controls{bottom:18px}}

@media(min-width:681px){.map-controls{bottom:60px}}

/* Top-view relief, outlined food areas and raised performance decks. */
.parking-name{font:bold 12px Georgia,serif;fill:#634d35;paint-order:stroke;stroke:#f5dfa7;stroke-width:2px;stroke-linejoin:round}
.podium-model .stage-name{font:bold 10px Arial,sans-serif}
.building-label{fill:#646b66;paint-order:stroke;stroke:#edeee5;stroke-width:1.6px;stroke-linejoin:round}
.illustrated-parking.selected>rect:first-child,.illustrated-parking:focus>rect:first-child{stroke:#9f2728;stroke-width:3px;fill-opacity:.4}

@font-face{font-family:'Podium Brush';src:url('assets/fonts/main-podium.ttf') format('truetype');font-style:normal;font-weight:400;font-display:swap}
.main-podium-title{font:400 20px 'Podium Brush',KaiTi,serif;fill:#fff2bc;text-anchor:middle;paint-order:stroke;stroke:#8d1520;stroke-width:.6px}

.parking-stalls{opacity:0;pointer-events:none}.stalls-visible .parking-stalls{opacity:1;pointer-events:auto}.stalls-visible .illustrated-parking .parking-name{opacity:0}
.food-stall{cursor:pointer}.food-stall:focus{outline:none}.food-stall:focus .stall-hit,.food-stall:hover .stall-hit{fill:#fff7d0;stroke:#a64031;stroke-width:1}
.passage-label{font:6px Arial,sans-serif;fill:#596d65;text-anchor:middle}.hall-title{font:400 18px 'Podium Brush',KaiTi,serif;fill:#fff1b9;text-anchor:middle;paint-order:stroke;stroke:#883728;stroke-width:.7px}.hall-shows{font:bold 7px Arial,sans-serif;fill:#fff1c7;text-anchor:middle}.stall-note{font-size:13px;opacity:.7}

.lam-po-tang.selected>.parking-outline,.lam-po-tang:focus>.parking-outline{stroke:#9f2728;stroke-width:2.5px;fill-opacity:.5}

.stalls-visible .food-area-icon{opacity:0;pointer-events:none}
.hall-title{fill:#fff1ce;stroke:#65181e;stroke-width:.5px;font-size:17px}.hall-shows{fill:#f5dfbb}

/* Show only the selected visitor destinations while retaining the street network. */
#map[data-category="Food areas"] .map-scenery,
#map[data-category="Food areas"] .map-stage,
#map[data-category="Stages"] .map-scenery,
#map[data-category="Stages"] .illustrated-parking{display:none}
.illustrated-parking.selected>rect:first-child,.illustrated-parking:focus>rect:first-child,
.lam-po-tang.selected>.parking-outline,.lam-po-tang:focus>.parking-outline{fill:#bce0cc;fill-opacity:1;stroke:#285f4c}
.map-controls #map-landscape{height:50px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:21px}
#map-landscape small{font-size:8px;line-height:1}
#landscape-close{display:none}
body.map-landscape-open{overflow:hidden}
.map-wrap.landscape-viewer{position:fixed!important;z-index:10000;inset:0 auto auto 0;margin:0!important;width:var(--viewer-width)!important;height:var(--viewer-height)!important;max-width:none;display:flex;flex-direction:column;background:#f2d18d;transform-origin:0 0;overflow:hidden;padding:0}
.map-wrap.landscape-viewer.landscape-rotated{transform:translateX(100vw) rotate(90deg)}
.landscape-viewer .map-top,.landscape-viewer .map-gesture-hint,.landscape-viewer .map-legend{display:none}
.landscape-viewer #map{flex:1;width:100%;height:100%;min-height:0;aspect-ratio:auto}
.landscape-viewer #map svg{display:block;width:100%;height:100%;min-height:0}
.landscape-viewer .map-controls{bottom:14px;right:14px}
.landscape-viewer .map-controls button{width:42px;height:42px}
.landscape-viewer #map-landscape{display:none}
.landscape-viewer #landscape-close{display:block;position:absolute;top:12px;right:14px;z-index:2;border:1px solid #b49460;border-radius:6px;background:#fff4df;color:#722831;padding:9px 14px;font-size:18px;min-height:44px}
#landscape-close span{font-size:13px}

.food-stall:focus .vendor-square,.food-stall:hover .vendor-square{stroke:#143f2d;stroke-width:1}.vendor-label{pointer-events:none}.stalls-visible .site-number{opacity:.75}

/* Parking borders keep the same weight, including focused and selected sites. */
#map .illustrated-parking>.parking-outline{fill:#bce0cc;fill-opacity:.9;stroke:#4c8670;stroke-width:2;stroke-dasharray:none}
#map .illustrated-parking>.parking-inset{fill:none;stroke:#e3f4e9;stroke-opacity:.65;stroke-width:1;pointer-events:none}
#map .abc-site:focus>rect,#map .abc-site.selected>rect{stroke-width:1}

#map-landscape img{width:25px;height:25px;object-fit:contain}.vendor-name{pointer-events:none}

#results .vendor-result{grid-template-columns:1fr auto}

.vendor-selected .stall-hit{fill:#fff4a8;stroke:#9c3028;stroke-width:1.3}.vendor-selected .vendor-name{font-weight:700}

.search-block{position:relative;z-index:5}
#search-suggestions{position:absolute;top:100%;left:0;right:0;z-index:20;margin:5px 0 0;padding:4px;list-style:none;background:#fff9ed;border:1px solid #cbb388;box-shadow:0 8px 22px #52192625;max-height:280px;overflow:auto}
#search-suggestions[hidden]{display:none}
#search-suggestions button{display:flex;align-items:center;justify-content:space-between;gap:14px;width:100%;padding:12px;text-align:left;border:0;background:transparent;color:#68232a;min-height:44px}
#search-suggestions button:hover,#search-suggestions button:focus{background:#f3e5cb}
#search-suggestions strong{font-size:14px}#search-suggestions small{font-size:11px;color:#7d705f}
#map-landscape img{filter:invert(19%) sepia(49%) saturate(2207%) hue-rotate(330deg) brightness(87%) contrast(91%)}

.stage-icon{display:inline-block;width:22px;height:22px;object-fit:contain;vertical-align:middle}.result .number .stage-icon{width:24px;height:24px}.map-legend .stage-icon{width:18px;height:18px;margin-right:4px}

@media(max-width:680px) and (orientation:portrait){.map{aspect-ratio:1.1;height:auto;min-height:0;max-height:none}.map-controls{bottom:65px}.map-gesture-hint{padding-right:14px}.vendor-result strong{font-size:15px}}
.vendor-caption{pointer-events:none}.vendor-caption .vendor-name{stroke:none;font-family:'DM Sans',sans-serif}

#landscape-search,.filter-short{display:none}
.landscape-viewer .food-toolbar{position:absolute;z-index:6;top:12px;left:14px;right:116px;display:flex;align-items:center;justify-content:flex-start;gap:8px;padding:0;border:0;background:none;pointer-events:none}
.landscape-viewer .food-toolbar>*{pointer-events:auto}
.landscape-viewer #landscape-search{display:grid;place-items:center;flex:none;width:44px;height:44px;padding:10px;border:1px solid #b49460;border-radius:6px;background:#fff4df;color:#87262b}
#landscape-search svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
.landscape-viewer .filters{display:flex;flex-wrap:nowrap;margin:0;padding:0;gap:4px;overflow:visible}
.landscape-viewer .filters button{min-height:44px;padding:8px 14px;font-size:13px;background:#fff4df;border:1px solid #b49460;color:#87262b;border-radius:6px;white-space:nowrap}
.landscape-viewer .filters button.active{background:#87262b;color:#fff4df}
.landscape-viewer .filter-full{display:none}.landscape-viewer .filter-short{display:inline}
.landscape-viewer .search-block{display:none;position:absolute;top:52px;left:0;width:min(360px,100%);min-width:0;background:#fff7e7;border:1px solid #b49460;border-radius:6px;padding:8px;box-shadow:0 6px 20px #49272a25}
.landscape-viewer .search-open .search-block{display:block}
.landscape-viewer .search-block>label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.landscape-viewer .search-wrap{margin:0}.landscape-viewer .search-wrap input{font-size:16px;padding:11px 0}
.landscape-viewer #search-suggestions{max-height:min(220px,45vh);margin-top:4px}

#landscape-destinations{display:none}
.landscape-viewer #landscape-destinations{position:absolute;z-index:3;top:68px;left:14px;bottom:14px;display:flex;flex-direction:column;justify-content:flex-start;gap:8px;width:150px;height:fit-content;max-height:calc(100% - 82px);overflow-y:auto;padding:10px;background:#fff4dff2;border:1px solid #b49460;border-radius:6px;box-shadow:0 3px 12px #49272a15}
.destination-heading{font-size:11px;font-weight:600;letter-spacing:.5px;color:#87262b}
.destination-areas{display:grid;grid-template-columns:repeat(3,1fr);gap:4px}.destination-stages{display:grid;gap:4px}
#landscape-destinations button{min-height:40px;border:1px solid #c9ae87;border-radius:4px;background:#fff9ed;color:#87262b;font-size:15px}
#landscape-destinations .destination-stages button{display:flex;align-items:center;gap:6px;padding:5px;font-size:12px;text-align:left}
#landscape-destinations .stage-icon{width:19px;height:19px;flex:none}
#landscape-destinations button[aria-pressed="true"]{background:#f1d5b4;border-color:#87262b;box-shadow:inset 0 0 0 1px #87262b}

.vendor-caption{visibility:hidden}.vendor-labels-visible .vendor-caption{visibility:visible}

/* Compact overview; retain portrait exploration space once the visitor zooms in. */
@media(max-width:680px) and (orientation:portrait){
 .map-wrap:not(.landscape-viewer):not(.map-zoomed) .map{aspect-ratio:1200/550}
 .map-wrap:not(.landscape-viewer):not(.map-zoomed) .map-controls{position:static;align-self:flex-end;flex-direction:row;margin:7px 10px;background:#fff7e7;box-shadow:none}
 .map-wrap:not(.landscape-viewer):not(.map-zoomed) .map-controls button{width:40px;height:40px;border-bottom:0;border-right:1px solid #ddc6a0}
 .map-wrap:not(.landscape-viewer):not(.map-zoomed) .map-controls #map-landscape{height:40px;border-right:0}
}

/* Festival programme: day and venue navigation with an editorial schedule. */
#program-dialog{width:min(940px,calc(100% - 32px));max-height:92svh;padding:0;background:#fff7e7;border:1px solid #d1a15b;color:#49272a}
#program-dialog .close-dialog{position:sticky;float:right;top:14px;right:auto;margin:14px 16px -52px 0;z-index:8;background:#7b1e28;color:#fff4df;width:38px;height:38px}
.programme-header{height:auto;display:flex;justify-content:flex-start;align-items:center;gap:22px;padding:34px 70px 30px 30px;background:#7b1e28;color:#fff1cf;border-bottom:5px double #d6a85d}
.programme-header p{font-size:13px;margin:0 0 9px;color:#ebc385}.programme-header h3{font:36px/1.1 'Playfair Display',Georgia,serif;margin:0 0 10px}.programme-header span{font-size:13px;color:#edd3ad}.programme-lion{width:64px;height:64px;filter:brightness(0) saturate(100%) invert(86%) sepia(24%) saturate(595%)}
.programme-content{padding:24px 30px 32px}.programme-days{display:grid;grid-template-columns:1fr 1fr;gap:12px}.programme-days button{text-align:left;padding:16px 20px;background:#fffdf5;border:1px solid #d6bd94;color:#7b1e28;border-radius:4px}.programme-days strong{display:block;font:25px 'Playfair Display',Georgia,serif}.programme-days span{display:block;font-size:12px;margin-top:6px}.programme-days button[aria-pressed="true"]{background:#9f252c;color:#fff4df;border-color:#9f252c;box-shadow:inset 0 0 0 3px #9f252c,inset 0 0 0 4px #d7a15a}
.programme-venues{display:flex;gap:8px;flex-wrap:wrap;margin:18px 0}.programme-venues button,.programme-options button{background:#fffaf0;border:1px solid #cdb48d;border-radius:4px;padding:10px 14px;color:#7b1e28;min-height:42px;font-size:13px}.programme-venues button[aria-pressed="true"],.programme-options button[aria-pressed="true"]{background:#7b1e28;color:#fff4df;border-color:#7b1e28}
.programme-search label{display:block;font-size:13px;font-weight:600;margin-bottom:7px}.programme-search input{width:100%;border:1px solid #ccb18a;border-radius:4px;background:#fffdf8;padding:12px 14px;font-size:16px;color:#49272a}
.programme-options{display:flex;justify-content:space-between;align-items:end;gap:12px;margin:16px 0}.programme-options>div{display:flex;gap:6px}.programme-options>label{font-size:12px;color:#70534a}.programme-options select{display:block;border:1px solid #cdb48d;border-radius:4px;background:#fffaf0;color:#7b1e28;font:13px 'DM Sans',sans-serif;padding:10px;min-height:42px;margin-top:5px}
.programme-note{font-size:12px;color:#82604e;margin:14px 0}.programme-content #programme-summary{font-size:13px;color:#7b1e28;font-weight:600;margin:22px 0 0;padding-bottom:14px;border-bottom:2px solid #b8894e}
.programme-event{display:grid;grid-template-columns:100px minmax(0,1fr);gap:22px;padding:21px 0;border-bottom:1px solid #ddc9a8}.programme-time{font-variant-numeric:tabular-nums;color:#922630;padding-top:3px}.programme-time time{display:block;font-size:23px;font-weight:600}.programme-time span{font-size:13px;display:block;margin-top:4px;color:#886457}.programme-place{display:inline-block;font-size:10px;font-weight:600;letter-spacing:.3px;color:#972630;background:#f3dfcb;padding:4px 7px;border-radius:3px}.programme-place.hall{color:#6d3432;background:#eadbc4}.programme-performance h4{font-size:18px;line-height:1.4;margin:9px 0 7px;color:#49272a}.programme-performance ul{margin:0;padding:0;list-style:none;color:#74594e;font-size:14px;line-height:1.65}.programme-performance li+li{margin-top:3px}.programme-street{font-size:12px;line-height:1.6;color:#87644c;margin:10px 0 0}.programme-interlude .programme-performance h4{font-size:16px;font-weight:500}.programme-artist-heading{font:24px/1.4 'Playfair Display',Georgia,serif;margin:26px 0 0;padding:10px 0;border-bottom:2px solid #b8894e;color:#7b1e28}.programme-empty{padding:24px 0;line-height:1.7}
@media(max-width:600px){#program-dialog{width:calc(100% - 16px);max-height:94svh}.programme-header{padding:26px 52px 24px 18px;gap:12px}.programme-lion{width:38px;height:38px}.programme-header h3{font-size:27px}.programme-header span{font-size:11px}.programme-content{padding:18px 16px 24px}.programme-days{gap:8px}.programme-days button{padding:13px}.programme-days strong{font-size:22px}.programme-venues{gap:5px}.programme-venues button{padding:9px;font-size:12px}.programme-options{align-items:start;flex-wrap:wrap}.programme-options>label{display:flex;align-items:center;gap:8px}.programme-options select{margin:0}.programme-event{grid-template-columns:69px minmax(0,1fr);gap:13px;padding:18px 0}.programme-time time{font-size:19px}.programme-time span{font-size:12px}.programme-performance h4{font-size:16px}.programme-performance ul{font-size:13px}}

.programme-performance li{font-weight:600;color:#59332d}.programme-search-field{position:relative}.programme-search-field input{padding-right:48px}.programme-search-field input::-webkit-search-cancel-button{display:none}#programme-clear{position:absolute;right:3px;top:50%;transform:translateY(-50%);width:40px;height:40px;background:transparent;border:0;color:#87262b;font-size:25px;display:grid;place-items:center}

/* Keep program navigation in consistently spaced single rows. */
.programme-venues{flex-wrap:nowrap;gap:8px;overflow-x:auto;padding:4px 2px 8px;margin:14px -2px;scrollbar-width:thin}
.programme-venues button{flex:0 0 auto;white-space:nowrap}
.programme-options{display:flex;flex-wrap:nowrap;align-items:center;gap:8px}
.programme-options>div{flex:none;gap:8px}
.programme-options>label{display:flex;align-items:center;gap:8px;margin-left:auto;min-width:0}
.programme-options select{margin:0;max-width:100%}
@media(max-width:600px){
 .programme-venues button{padding:9px 12px;min-height:44px}
 .programme-options>div{display:contents}
 .programme-options button{flex:0 0 auto;font-size:12px;padding:9px 8px;min-height:44px}
 .programme-options>label{flex:1;min-width:94px;margin-left:0}
 .programme-options select{width:100%;font-size:12px;padding:9px 5px;min-height:44px}
 .programme-time-label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
}

html.festival-modal-open{overflow:hidden;overscroll-behavior:none}html.festival-modal-open body{position:fixed;top:var(--dialog-scroll-top);left:var(--dialog-scroll-left);width:100%;overflow:hidden}.festival-dialog{overscroll-behavior:contain;-webkit-overflow-scrolling:touch}

/* Restored arch introduction; the existing festival sections remain in normal flow. */
@media(max-width:680px){#gateway.scroll-journey{height:180svh}}
@media(prefers-reduced-motion:reduce){#gateway.scroll-journey{height:auto}}

/* Crossfade straight from the arch into the actual festival home. */
@media(max-width:680px){.scroll-journey .festival-home.gateway-home-reveal{position:absolute;inset:0;z-index:4;display:flex;min-height:100%;padding:36px 24px 80px;opacity:0;will-change:opacity}.gateway-home-reveal .festival-title-content{max-width:360px}}
@media(max-width:680px) and (max-height:700px){.scroll-journey .festival-home.gateway-home-reveal{padding:30px 24px 75px}.gateway-home-reveal .festival-title-content{max-width:290px}}

#gateway .portal-hero{overflow:clip}
