@import url('/assets/fonts-local.css?v=1');
:root{--gold:#d6b477;--ivory:#f9f3e8}*{box-sizing:border-box}html,body{margin:0;height:100%;background:#102a3a;color:var(--ivory);font-family:'DM Sans',Arial,sans-serif}button{cursor:pointer;font:inherit}#slides{height:100dvh;overflow-y:auto;scroll-snap-type:y mandatory;scroll-behavior:smooth;scrollbar-width:none}#slides::-webkit-scrollbar{display:none}.slide{height:100dvh;min-height:550px;scroll-snap-align:start;scroll-snap-stop:always;position:relative;display:flex;align-items:flex-end;isolation:isolate;overflow:hidden;background:radial-gradient(circle at 80% 25%,#6e6c58 0%,transparent 48%),linear-gradient(135deg,#142d3b,#0c1827)}.slide[data-theme=red]{background:radial-gradient(circle at 75% 20%,#a85640,transparent 50%),linear-gradient(125deg,#531b23,#230e1a)}.slide[data-theme=pine]{background:radial-gradient(circle at 80% 20%,#7b7c4c,transparent 50%),linear-gradient(130deg,#183c3b,#091b26)}.slide[data-theme=gold]{background:radial-gradient(circle at 78% 15%,#b99054,transparent 50%),linear-gradient(130deg,#43332a,#0c2030)}.slide:before{content:'';position:absolute;inset:0;background-image:var(--photo);background-size:cover;background-position:center;z-index:-2;transform:scale(1.04);transition:transform 2s}.slide:after{content:'';position:absolute;inset:0;background:linear-gradient(0deg,rgba(7,17,26,.92),rgba(7,17,26,.25) 75%,rgba(7,17,26,.55));z-index:-1}.slide.active:before{transform:scale(1)}.ornament{position:absolute;right:-15vw;top:9%;width:72vw;height:72vw;max-width:560px;max-height:560px;border:1px solid #f5d59a3a;border-radius:50%;box-shadow:0 0 0 35px #f5d59a08,0 0 0 80px #f5d59a06;pointer-events:none}.content{width:min(100%,960px);padding:100px clamp(24px,7vw,90px) clamp(100px,12vh,145px);transition:opacity .7s,transform .7s;opacity:.4;transform:translateY(25px)}.slide.active .content{opacity:1;transform:none}.eyebrow{letter-spacing:.3em;font-size:11px;font-weight:700;color:#e9c58a;text-transform:uppercase}.line{height:1px;width:65px;background:#e9c58a;margin:24px 0}h1,h2{font-family:'Playfair Display',Georgia,serif;font-weight:500}h1{font-size:clamp(46px,8vw,105px);line-height:1.06;margin:14px 0 24px;max-width:850px;text-wrap:balance}.description{font-size:clamp(15px,1.7vw,19px);max-width:540px;line-height:1.7;color:#f1e8dc}.meta{display:flex;flex-wrap:wrap;gap:12px 28px;color:#eed4a7;font-size:13px;margin:25px 0}.explore{border:1px solid #dfc89d;background:#dfc89d;color:#192a34;padding:15px 24px;letter-spacing:.09em;font-weight:700;font-size:12px}.top{position:fixed;z-index:10;left:0;right:0;top:0;padding:25px clamp(22px,5vw,70px);display:flex;align-items:center;justify-content:space-between;background:linear-gradient(#0715239c,transparent)}.logo{display:flex;align-items:center;gap:12px;color:#f3d59d;text-decoration:none;font:28px Georgia,serif}.logo span{font:700 12px 'DM Sans',sans-serif;letter-spacing:.16em;color:#fff}.logo small{display:block;font-size:8px;letter-spacing:.2em;margin-top:4px}.controls{display:flex;gap:10px}.controls button{border:1px solid #ffffff75;background:#102a3a55;color:white;padding:10px 14px;border-radius:2px}#progress{position:fixed;right:22px;top:50%;transform:translateY(-50%);z-index:9;display:flex;flex-direction:column;gap:12px}#progress button{width:7px;height:7px;border-radius:50%;border:1px solid #fff9;background:transparent;padding:0}#progress button.active{background:#e9c58a;border-color:#e9c58a;transform:scale(1.5)}#hint{position:fixed;bottom:28px;left:50%;transform:translateX(-50%);z-index:5;font-size:10px;letter-spacing:.25em;white-space:nowrap;color:#f0d9b2}#hint span{margin-left:12px}dialog{border:1px solid #e6c78a44;background:#102532;color:#fff;max-height:90dvh;max-width:min(640px,calc(100vw - 24px));width:100%;padding:35px;box-shadow:0 25px 100px #0009}dialog::backdrop{background:#020b12c9;backdrop-filter:blur(8px)}dialog h2{font-size:clamp(28px,5vw,48px);margin:12px 0}dialog p{line-height:1.75;white-space:pre-wrap}dialog .close{position:absolute;right:15px;top:10px;border:0;background:transparent;color:white;font-size:30px}dialog img{max-width:100%;max-height:250px;object-fit:cover}#menuContent{display:grid;gap:10px}#menuContent button{text-align:left;border:1px solid #fff3;background:#ffffff0a;color:white;padding:14px}#menuContent small{display:block;color:#e9c58a;margin-top:5px}#marketSchedule{padding-left:20px;line-height:1.9}@media(min-width:900px){.content{padding-bottom:15vh}}@media(max-width:600px){.slide{min-height:0}.content{padding:110px 28px 110px}h1{font-size:clamp(43px,12vw,70px)}#progress{right:11px}#hint{bottom:20px}dialog{padding:26px 20px}.top{padding:19px 20px}.logo{font-size:23px}.logo span{font-size:10px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

.slide[data-layout="left"] .content{text-align:left;margin-left:8%;margin-right:auto}.slide[data-layout="right"] .content{text-align:right;margin-left:auto;margin-right:8%}.slide .content{animation-duration:var(--animation-speed,900ms)!important}.slide:before{opacity:var(--overlay-opacity,.45)}.event-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:18px}.event-gallery img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:8px}@media(prefers-reduced-motion:reduce){.slide .content{animation:none!important}}

/* V2.4 – Bright seasonal identity. Existing event photos remain supported. */
:root{--heading-font:'Playfair Display',Georgia,serif}
html,body{background:#f8f0e4;color:#253745}
.slide{color:#233e35;background:radial-gradient(circle at 80% 22%,#f6d5a9 0%,transparent 48%),linear-gradient(135deg,#fff9ed,#f0e1c9)}
.slide[data-theme="pine"]{color:#204838;background:radial-gradient(circle at 80% 24%,#d5e2c8,transparent 52%),linear-gradient(130deg,#fffaf0,#f3dfd4)}
.slide[data-theme="navy"]{color:#143956;background:radial-gradient(circle at 80% 22%,#c8ddeb,transparent 52%),linear-gradient(130deg,#f7f5ec,#d8e8f2)}
.slide[data-theme="red"]{color:#8a2630;background:radial-gradient(circle at 80% 22%,#f5c4ad,transparent 50%),linear-gradient(130deg,#fff6e9,#f8d9cd)}
.slide[data-theme="gold"]{color:#715332;background:radial-gradient(circle at 80% 20%,#f7dba8,transparent 50%),linear-gradient(130deg,#fffaf0,#efe0c6)}
.slide.custom-background{background:var(--custom-bg)}
.slide.custom-text{color:var(--custom-text)}
.slide:before{z-index:-2;opacity:1;background-image:var(--photo)}
.slide:after{z-index:-1;background:linear-gradient(90deg,rgba(255,250,241,.94) 0%,rgba(255,250,241,.83) 40%,rgba(255,250,241,.28) 100%);opacity:var(--overlay-opacity,.28)}
.slide[data-theme="navy"]:after{background:linear-gradient(90deg,rgba(235,246,252,.95),rgba(235,246,252,.68),rgba(235,246,252,.18))}
.slide[data-theme="red"]:after{background:linear-gradient(90deg,rgba(255,247,234,.94),rgba(255,236,224,.65),rgba(255,236,224,.12))}
.eyebrow,.meta,.description{color:inherit}.eyebrow{opacity:.8}.description{opacity:.9}.line{background:currentColor;opacity:.45}
h1,h2{font-family:var(--heading-font)}
.explore{background:#ac7f2d;color:#fff;border-color:#ac7f2d;border-radius:3px}
.top{background:linear-gradient(rgba(255,250,241,.92),rgba(255,250,241,0));pointer-events:none}
.top>*{pointer-events:auto}
.logo,.logo span{color:#244338}
.controls button{background:#fff9;color:#263c46;border-color:#b6a486}
#progress button{border-color:#ac7f2d;background:#ac7f2d44}#progress button.active{background:#ac7f2d}
#hint{color:#715c42}
.ornament{border-color:#b8945750;box-shadow:0 0 0 35px #b8945709,0 0 0 80px #b8945708}
.event-logo{position:absolute;top:92px;left:clamp(22px,7vw,90px);max-width:min(34vw,180px);max-height:85px;object-fit:contain;z-index:3}
dialog{background:#fffaf1;color:#263d45;border:1px solid #c9b18a;box-shadow:0 25px 100px #10202b55}
dialog .close{color:#263d45}dialog::backdrop{background:#081927b3}
#menuContent button{color:#263d45;border-color:#d7c6aa;background:#f8f0e3}#menuContent small{color:#7e5c2b}
.detail-description p{white-space:pre-wrap;margin:0 0 1.2em;line-height:1.85}
@media(max-width:600px){.event-logo{top:77px;max-height:55px;max-width:125px}.content{padding-top:160px}.slide:after{background:linear-gradient(0deg,rgba(255,248,238,.92),rgba(255,248,238,.6) 65%,rgba(255,248,238,.24))}}

/* V2.5 Cinematic Reveal – accessible, restrained, no bounce */
#slides{scroll-behavior:auto;overscroll-behavior-y:contain}
.slide{scroll-snap-align:start;contain:paint}
.slide:before{transform:scale(1.04);transition:transform 850ms cubic-bezier(.22,1,.36,1)}
.slide.active:before{transform:scale(1)}
.slide .content{opacity:0;transform:translate3d(0,32px,0);transition:opacity 650ms cubic-bezier(.22,1,.36,1),transform 850ms cubic-bezier(.22,1,.36,1)}
.slide.active .content{opacity:1;transform:translate3d(0,0,0)}
.slide .content>*{opacity:0;transform:translate3d(0,24px,0);transition:opacity 540ms ease,transform 760ms cubic-bezier(.22,1,.36,1)}
.slide.active .content>*{opacity:1;transform:translate3d(0,0,0)}
.slide.active .content>.eyebrow{transition-delay:100ms}
.slide.active .content>.line{transition-delay:145ms}
.slide.active .content>h1{transition-delay:190ms}
.slide.active .content>.description{transition-delay:270ms}
.slide.active .content>.meta{transition-delay:340ms}
.slide.active .content>.explore{transition-delay:390ms}
.slide.leaving .content{opacity:.18;transform:translate3d(0,-12px,0)}
@media(prefers-reduced-motion:reduce){#slides{scroll-behavior:auto!important}.slide:before,.slide .content,.slide .content>*{transition:none!important;animation:none!important}.slide.active .content,.slide.active .content>*{opacity:1;transform:none}}


/* V2.6 Luxury Invitation: layered paper envelope, user-triggered opening */
.invitation-intro{--intro-bg:#faf1e2;--intro-paper:#f5e5ca;--intro-gold:#ac7f2d;position:fixed;inset:0;z-index:1000;display:grid;place-items:center;overflow:hidden;background:var(--intro-bg);color:#433728;isolation:isolate;transition:opacity .4s ease,visibility .4s ease}
.invitation-intro[hidden]{display:none!important}
.invitation-intro.intro-complete{opacity:0;visibility:hidden;pointer-events:none}
.invitation-glow{position:absolute;inset:-15%;pointer-events:none;background:radial-gradient(ellipse at 50% 40%,#fffdf6 0%,transparent 65%);opacity:.9}
.invitation-inner{position:relative;z-index:1;width:min(92vw,520px);display:flex;flex-direction:column;align-items:center;text-align:center;padding:20px 8px 30px}
.invitation-kicker{font-size:11px;letter-spacing:.29em;font-weight:700;color:#866b45;margin:0 0 22px}
.invitation-scene{position:relative;width:min(78vw,390px);height:min(57vw,275px);max-height:275px;perspective:1100px;filter:drop-shadow(0 20px 24px #72502a33);margin:12px auto 30px;transition:transform .7s cubic-bezier(.22,1,.36,1),opacity .5s ease;transform-style:preserve-3d}
.invitation-envelope-back{position:absolute;inset:0;background:var(--intro-paper);border:1px solid #c6a675;clip-path:polygon(0 0,100% 0,100% 100%,0 100%)}
.invitation-card{position:absolute;z-index:2;left:8%;right:8%;top:9%;height:85%;background:linear-gradient(145deg,#fffdf8,#fff6e7);border:1px solid var(--intro-gold);box-shadow:0 5px 18px #573d1a24;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:11px;padding:20px;box-sizing:border-box;transform:translateY(6%);transition:transform .7s cubic-bezier(.22,1,.36,1),opacity .4s ease;color:#6c512d}
.invitation-card img{max-width:120px;max-height:42px;object-fit:contain}
.invitation-card span{display:block;font-family:Georgia,serif;font-size:clamp(14px,2.5vw,21px);line-height:1.25}
.invitation-card #invitationCardSubtitle{font-family:system-ui,sans-serif;font-size:9px;letter-spacing:.15em;text-transform:uppercase}
.invitation-card-rule{width:56px;height:1px;background:var(--intro-gold)}
.invitation-envelope-front{position:absolute;z-index:4;inset:0;background:linear-gradient(140deg,#ffffff35,transparent 48%),var(--intro-paper);clip-path:polygon(0 0,50% 47%,100% 0,100% 100%,0 100%);border-bottom:1px solid #c6a675;pointer-events:none}
.invitation-flap{position:absolute;z-index:5;inset:0;background:linear-gradient(155deg,#fff8e9,var(--intro-paper));clip-path:polygon(0 0,100% 0,50% 54%);transform-origin:50% 0%;backface-visibility:visible;transition:transform .55s cubic-bezier(.22,1,.36,1),z-index 0s linear .55s;filter:drop-shadow(0 3px 2px #5c442b33)}
.invitation-seal{position:absolute;z-index:6;left:50%;top:49%;transform:translate(-50%,-50%);width:50px;height:50px;border-radius:50%;display:grid;place-items:center;background:var(--intro-gold);border:3px double #f9e4ad;color:#fff9e8;font-family:Georgia,serif;font-size:18px;letter-spacing:.08em;box-shadow:0 3px 10px #5d442944;transition:opacity .3s ease,transform .35s ease}
#invitationTitle{font-family:Georgia,serif;font-size:clamp(25px,5vw,38px);font-weight:400;line-height:1.2;margin:0 0 10px;max-width:490px}
#invitationSubtitle{font-size:clamp(12px,2.6vw,15px);line-height:1.7;color:#75644e;max-width:390px;margin:0 0 25px}
.invitation-open{border:1px solid var(--intro-gold);background:var(--intro-gold);color:white;letter-spacing:.12em;text-transform:uppercase;padding:16px 29px;min-height:50px;cursor:pointer;font-size:12px;transition:filter .2s,transform .2s}
.invitation-open:hover{filter:brightness(1.09);transform:translateY(-2px)}
.invitation-open:focus-visible,.invitation-skip:focus-visible{outline:3px solid #284e69;outline-offset:4px}
.invitation-skip{border:0;background:transparent;color:#76634b;cursor:pointer;padding:14px 18px;margin-top:8px;font-size:12px;text-decoration:underline;text-underline-offset:4px}
.invitation-intro[data-state=opening] .invitation-seal{opacity:0;transform:translate(-50%,-50%) scale(.7)}
.invitation-intro[data-state=opening] .invitation-flap{transform:rotateX(180deg);z-index:1}
.invitation-intro[data-state=opening] .invitation-card{transform:translateY(-72%);transition-delay:.55s}
.invitation-intro[data-state=opening] .invitation-scene{animation:invitation-reveal 2.15s cubic-bezier(.22,1,.36,1) forwards}
@keyframes invitation-reveal{0%,60%{transform:scale(1);opacity:1}80%{transform:scale(1.25);opacity:1}100%{transform:scale(3);opacity:0}}
body.intro-active{overflow:hidden}
@media(max-width:480px){.invitation-scene{height:53vw;margin-bottom:28px}.invitation-kicker{font-size:9px}.invitation-card{padding:10px}.invitation-card img{max-height:29px}.invitation-seal{width:42px;height:42px}}
@media(prefers-reduced-motion:reduce){.invitation-intro,.invitation-intro *, .invitation-intro *:before,.invitation-intro *:after{animation:none!important;transition:none!important}}

/* V2.6.1: immersive portrait invitation; keep V2.6 CMS and event swipes intact. */
.invitation-intro{height:100vh;height:100dvh;overscroll-behavior:none;touch-action:none}
.invitation-inner{width:100%;height:100%;min-height:0;box-sizing:border-box;padding:env(safe-area-inset-top, 0px) 0 env(safe-area-inset-bottom, 0px);display:flex;align-items:center;justify-content:center;position:relative}
.invitation-kicker{position:absolute;top:max(4%,calc(env(safe-area-inset-top) + 12px));left:0;right:0;z-index:9;margin:0;text-align:center;font-size:clamp(9px,2.4vw,12px)}
.invitation-scene{width:min(96vw,640px);height:min(77dvh,860px);max-height:none;aspect-ratio:3/4;flex:none;margin:0;filter:drop-shadow(0 24px 34px #72502a35)}
.invitation-envelope-back{background:linear-gradient(155deg,#fff8ea,var(--intro-paper))}
.invitation-envelope-front{background:linear-gradient(140deg,#ffffff55,transparent 46%),var(--intro-paper)}
.invitation-flap{background:linear-gradient(155deg,#fffaf0,var(--intro-paper))}
.invitation-card{top:5%;height:90%;padding:clamp(12px,4vw,35px);gap:clamp(12px,3vw,24px)}
.invitation-card span{font-size:clamp(20px,4.6vw,35px)}
.invitation-card img{max-height:75px;max-width:65%}
.invitation-card #invitationCardSubtitle{font-size:clamp(9px,1.7vw,13px)}
.invitation-seal{top:50%;width:clamp(48px,12vw,72px);height:clamp(48px,12vw,72px)}
.invitation-message{position:absolute;left:0;right:0;bottom:max(3%,calc(env(safe-area-inset-bottom) + 10px));z-index:10;display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none}
#invitationTitle,#invitationSubtitle{display:none}
.invitation-open{pointer-events:auto;min-height:44px;border:0;background:transparent;color:#74552c;padding:8px 16px;font-size:clamp(10px,2.6vw,13px);font-weight:700;letter-spacing:.15em;animation:invitation-prompt 2s ease-in-out infinite}
.invitation-open span:first-child{display:block;font-size:25px;line-height:1.2}
.invitation-skip{pointer-events:auto;margin:0;padding:6px 12px;font-size:11px;opacity:.8}
@keyframes invitation-prompt{0%,100%{transform:translateY(3px);opacity:.72}50%{transform:translateY(-5px);opacity:1}}
.invitation-intro[data-state=opening] .invitation-message{opacity:0;transition:opacity .2s}
.invitation-intro[data-state=opening] .invitation-card{transform:translateY(-66%);transition-delay:.5s}
.invitation-intro[data-state=opening] .invitation-scene{animation:invitation-reveal-full 2.15s cubic-bezier(.22,1,.36,1) forwards}
@keyframes invitation-reveal-full{0%,58%{transform:scale(1);opacity:1}82%{transform:scale(1.15);opacity:1}100%{transform:scale(2.7);opacity:0}}
@media (max-width:600px){.invitation-scene{width:96vw;height:min(77dvh,128vw);margin:0}.invitation-kicker{top:max(5%,calc(env(safe-area-inset-top) + 10px))}.invitation-card{padding:18px}.invitation-card img{max-height:60px}.invitation-message{bottom:max(4%,calc(env(safe-area-inset-bottom) + 8px))}}
@media (max-height:650px){.invitation-scene{height:70dvh;width:min(86vw,530px)}.invitation-message{bottom:1%}}
@media (prefers-reduced-motion:reduce){.invitation-open{animation:none}}

/* V2.6.2 — independently configurable invitation wax seal */
.invitation-seal{width:var(--seal-size,64px)!important;height:var(--seal-size,64px)!important;background:var(--seal-bg,#ac7f2d)!important;border:3px double var(--seal-border,#f9e4ad)!important;overflow:hidden}
.invitation-seal img{display:block;width:var(--seal-logo-scale,78%);height:var(--seal-logo-scale,78%);object-fit:contain;max-width:100%;max-height:100%}
.invitation-seal img[hidden],.invitation-seal span[hidden]{display:none!important}
.invitation-skip{display:none!important}

/* V2.7 Hero Slide: independent editable cover */
.hero-slide{background:var(--hero-bg,#f2e7d5);color:var(--hero-text,#fff)}
.hero-slide .hero-photo{position:absolute;inset:0;z-index:-2;display:block;overflow:hidden}
.hero-slide .hero-photo img{width:100%;height:100%;object-fit:cover;object-position:var(--hero-img-pos-desktop,50%) center;display:block;transform:scale(1.04);transition:transform 1.6s cubic-bezier(.22,1,.36,1)}
.hero-slide.active .hero-photo img{transform:scale(1)}
.hero-slide:before{display:none}
.hero-slide:after{background:linear-gradient(0deg,rgba(0,0,0,calc(var(--hero-overlay,.25) + .12)),rgba(0,0,0,var(--hero-overlay,.25)))}
.hero-slide .content{color:var(--hero-text,#fff)}
.hero-slide .content h1{font-size:clamp(34px,7vw,var(--hero-title-size,64px));color:inherit}
.hero-slide .description{color:inherit;opacity:.95}
.hero-slide .eyebrow,.hero-slide .hero-year{color:var(--hero-accent,#e4c389)}
.hero-slide .hero-year{font:500 clamp(22px,4vw,42px) Georgia,serif;letter-spacing:.1em;margin-bottom:12px}
.hero-slide[data-hero-align=center] .content{text-align:center;margin-inline:auto}
.hero-slide[data-hero-align=right] .content{text-align:right;margin-left:auto}
.hero-slide[data-hero-align=center] .line,.hero-slide[data-hero-align=center] .description{margin-left:auto;margin-right:auto}
.hero-slide[data-hero-align=right] .line,.hero-slide[data-hero-align=right] .description{margin-left:auto}
@media(max-width:700px){.hero-slide .hero-photo img{object-position:var(--hero-img-pos-mobile,50%) center}.hero-slide .content h1{font-size:clamp(34px,9vw,var(--hero-title-size,64px))}}

.empty-slides{display:grid;place-items:center;min-height:100vh;padding:24px;text-align:center;color:#fff;background:#16344a;font-size:1.1rem}


/* V2.7.2: isolated Hero text controls. Other event slides are unchanged. */
.hero-slide:after{background:
  linear-gradient(0deg,rgba(0,0,0,calc(var(--hero-overlay,.25) + .12)),rgba(0,0,0,var(--hero-overlay,.25))),
  linear-gradient(to right,rgba(0,0,0,var(--hero-gradient-opacity,0)) 0%,transparent var(--hero-gradient-width,75%));
  pointer-events:none;
}
.hero-slide[data-hero-align=right]:after{background:
  linear-gradient(0deg,rgba(0,0,0,calc(var(--hero-overlay,.25) + .12)),rgba(0,0,0,var(--hero-overlay,.25))),
  linear-gradient(to left,rgba(0,0,0,var(--hero-gradient-opacity,0)) 0%,transparent var(--hero-gradient-width,75%));
}
.hero-slide[data-hero-align=center]:after{background:
  linear-gradient(0deg,rgba(0,0,0,calc(var(--hero-overlay,.25) + .12)),rgba(0,0,0,var(--hero-overlay,.25))),
  radial-gradient(ellipse var(--hero-gradient-width,75%) 75% at center,rgba(0,0,0,var(--hero-gradient-opacity,0)),transparent);
}
.hero-slide .content h1{color:var(--hero-title-color,var(--hero-text,#fff));font-weight:var(--hero-title-weight,500)}
.hero-slide .hero-year{color:var(--hero-year-color,var(--hero-accent,#e4c389));font-size:clamp(18px,4vw,var(--hero-year-size-desktop,42px))}
.hero-slide .description{color:var(--hero-subtitle-color,var(--hero-text,#fff));font-size:var(--hero-subtitle-size-desktop,19px);opacity:1}
.hero-slide .eyebrow{color:var(--hero-tagline-color,var(--hero-accent,#e4c389));font-size:var(--hero-tagline-size-desktop,11px)}
.hero-slide .content :is(h1,.hero-year,.description,.eyebrow){text-shadow:var(--hero-text-shadow,none)}
.hero-slide .content .explore{background:var(--hero-button-bg,#ac7f2d);border-color:var(--hero-button-bg,#ac7f2d);color:var(--hero-button-text,#fff)}
.hero-slide .content .line{background:var(--hero-year-color,var(--hero-accent,#e4c389))}
@media(max-width:700px){
 .hero-slide .content h1{font-size:clamp(26px,9vw,var(--hero-title-size-mobile,44px))}
 .hero-slide .hero-year{font-size:clamp(16px,6vw,var(--hero-year-size-mobile,28px))}
 .hero-slide .description{font-size:var(--hero-subtitle-size-mobile,15px)}
 .hero-slide .eyebrow{font-size:var(--hero-tagline-size-mobile,10px)}
}

/* V2.8: particles stay inside the active slide and never intercept gestures. */
.festive-particles{position:absolute;inset:0;display:block;z-index:1;pointer-events:none;user-select:none;contain:strict}
.festive-particles[data-layer="front"]{z-index:4}
.slide .content{position:relative;z-index:3}
.festive-sound{font-size:12px;min-width:67px;white-space:nowrap}
.festive-sound[hidden]{display:none!important}
.festive-sound:disabled{opacity:.52;cursor:default}
@media(prefers-reduced-motion:reduce){.festive-particles{display:none!important}}



/* V2.9.1 – layered vector character scenes for seasonal chapter slides. */
.season-hero-slide{
 --season-hero-bg:#193b42;--season-hero-text:#fff9ed;--season-hero-accent:#e8c488;
 --enter-x:115%;--enter-y:85px;--entrance-time:1150ms;--entrance-delay:0ms;
 background:radial-gradient(ellipse at 78% 38%,rgba(255,226,159,.14),transparent 50%),
 linear-gradient(135deg,var(--season-hero-bg),#091a28);
 color:var(--season-hero-text);isolation:isolate;
}
.season-hero-slide[data-theme="pine"]{--season-hero-bg:#174d42;--season-hero-accent:#efd09a;}
.season-hero-slide[data-theme="navy"]{--season-hero-bg:#102d49;--season-hero-accent:#f0d48d;}
.season-hero-slide[data-theme="red"]{--season-hero-bg:#812539;--season-hero-accent:#f9df9d;}
.season-hero-slide:after{background:linear-gradient(90deg,rgba(4,19,27,.68),rgba(4,19,27,.37) 45%,rgba(4,19,27,.04));opacity:1}
.season-hero-slide:before{opacity:.16}
.season-hero-slide .content{position:relative;z-index:3;max-width:min(58vw,790px);padding-bottom:clamp(105px,14vh,165px)}
.season-hero-slide .content h1{font-size:clamp(48px,7.4vw,100px);color:var(--season-hero-text);text-shadow:0 4px 24px #0004}
.season-hero-slide .eyebrow,.season-hero-slide .description,.season-hero-slide .seasonal-description{color:var(--season-hero-text)}
.season-hero-slide .eyebrow{color:var(--season-hero-accent)}
.season-hero-slide .line{background:var(--season-hero-accent);opacity:.65}
.season-hero-slide .description{font-weight:600;line-height:1.5;max-width:580px}
.seasonal-description{font-size:clamp(13px,1.25vw,16px);line-height:1.8;max-width:545px;opacity:.88;margin:8px 0 28px}
.season-hero-slide .explore{border:1px solid var(--season-hero-accent);background:var(--season-hero-accent);color:#172a34}
.seasonal-character-scene{position:absolute;inset:0;z-index:2;pointer-events:none;overflow:hidden;contain:paint}
.season-scene-halo{position:absolute;right:-4%;top:8%;width:63%;height:85%;background:radial-gradient(ellipse,rgba(254,223,154,.16),transparent 68%);filter:blur(14px);opacity:0;transform:scale(.78)}
.season-object{position:absolute;pointer-events:none;opacity:0;transform-origin:center bottom;will-change:transform,opacity;filter:drop-shadow(0 18px 22px rgba(3,15,23,.28));}
.season-object-image{display:block;width:100%;height:100%;object-fit:contain;user-select:none;-webkit-user-drag:none}
/* A deliberate open arc on the right side leaves the left text area unobstructed. */
.season-santa{width:clamp(155px,23vw,330px);height:clamp(215px,55vh,510px);left:48%;bottom:5%;z-index:3}
.season-tree-art{width:clamp(180px,26vw,365px);height:clamp(245px,67vh,560px);right:1%;bottom:5%;z-index:2}
.season-gifts-art{width:clamp(175px,21vw,320px);height:clamp(135px,34vh,300px);right:16%;bottom:-1%;z-index:4}
.season-clock-art{width:clamp(230px,37vw,515px);height:clamp(280px,68vh,600px);right:8%;top:12%;z-index:3}
.season-champagne-art{width:clamp(140px,18vw,260px);height:clamp(210px,55vh,460px);right:0;bottom:-1%;z-index:4}
.season-ribbon-art{width:clamp(180px,28vw,410px);height:clamp(170px,38vh,370px);right:27%;top:6%;z-index:2}
.season-branch-left{width:clamp(200px,30vw,440px);height:clamp(255px,65vh,600px);left:43%;bottom:-2%;z-index:2;}
.season-branch-right{width:clamp(200px,29vw,420px);height:clamp(255px,65vh,600px);right:-4%;top:-7%;transform-origin:center bottom;z-index:2;}
.season-branch-right .season-object-image{transform:scaleX(-1)}
.season-lantern-left{width:clamp(86px,12vw,165px);height:clamp(135px,34vh,310px);right:24%;top:0;z-index:4}
.season-lantern-right{width:clamp(75px,9vw,140px);height:clamp(120px,29vh,260px);right:2%;top:-1%;z-index:3}
.season-envelope-art{width:clamp(180px,23vw,340px);height:clamp(190px,42vh,375px);right:9%;bottom:-4%;z-index:3}
/* Entrance only on the active slide: removing the active class resets the animation
   so returning to a seasonal chapter plays it once again. */
.season-hero-slide.active .season-scene-halo{animation:season-halo 1100ms ease-out both}
.season-hero-slide.active .season-object{animation-duration:var(--entrance-time);animation-fill-mode:both;animation-timing-function:cubic-bezier(.18,.78,.22,1);animation-delay:var(--entrance-delay)}
.season-hero-slide.active .enter-left{animation-name:season-enter-left}
.season-hero-slide.active .enter-right{animation-name:season-enter-right}
.season-hero-slide.active .enter-top{animation-name:season-enter-top}
.season-hero-slide.active .enter-bottom{animation-name:season-enter-bottom}
.season-hero-slide.active .enter-center{animation-name:season-enter-center}
.season-tree-art{--entrance-delay:130ms}.season-santa{--entrance-delay:80ms}.season-gifts-art{--entrance-delay:390ms}
.season-ribbon-art{--entrance-delay:70ms}.season-clock-art{--entrance-delay:190ms}.season-champagne-art{--entrance-delay:360ms}
.season-branch-left{--entrance-delay:100ms}.season-branch-right{--entrance-delay:180ms}.season-lantern-left{--entrance-delay:300ms}.season-lantern-right{--entrance-delay:390ms}.season-envelope-art{--entrance-delay:470ms}
@keyframes season-enter-left{from{opacity:0;translate:calc(-1 * var(--enter-x)) 20px;rotate:-8deg;scale:.9}to{opacity:1;translate:0 0;rotate:0deg;scale:1}}
@keyframes season-enter-right{from{opacity:0;translate:var(--enter-x) 20px;rotate:7deg;scale:.92}to{opacity:1;translate:0 0;rotate:0deg;scale:1}}
@keyframes season-enter-top{from{opacity:0;translate:0 calc(-1 * var(--enter-y));scale:.9}to{opacity:1;translate:0 0;scale:1}}
@keyframes season-enter-bottom{from{opacity:0;translate:0 var(--enter-y);scale:.8}to{opacity:1;translate:0 0;scale:1}}
@keyframes season-enter-center{from{opacity:0;translate:0 28px;scale:.72}to{opacity:1;translate:0 0;scale:1}}
@keyframes season-halo{from{opacity:0;transform:scale(.78)}to{opacity:1;transform:scale(1)}}
/* Rich moves farther/faster; Soft is shorter/slower. */
.season-hero-slide[data-intensity="soft"]{--enter-x:55%;--enter-y:35px;--entrance-time:1500ms}
.season-hero-slide[data-intensity="rich"]{--enter-x:160%;--enter-y:135px;--entrance-time:900ms}
/* Disable moving objects without losing illustration. */
.season-hero-slide[data-moving-objects="off"] .season-object,
.season-hero-slide[data-moving-objects="off"].active .season-object{animation:none!important;opacity:1!important;translate:0!important;rotate:0deg!important;transform:none!important}
.season-hero-slide[data-moving-objects="off"] .season-scene-halo{animation:none!important;opacity:1}
/* Elegant is quieter; minimal shows just the centerpiece with ample negative space. */
.season-hero-slide[data-hero-style="elegant"] .season-object{filter:drop-shadow(0 16px 20px #0003);opacity:.92}
.season-hero-slide[data-hero-style="elegant"] .season-santa,
.season-hero-slide[data-hero-style="elegant"] .season-champagne-art,
.season-hero-slide[data-hero-style="elegant"] .season-envelope-art{scale:.83}
.season-hero-slide[data-hero-style="minimal"] .season-santa,
.season-hero-slide[data-hero-style="minimal"] .season-gifts-art,
.season-hero-slide[data-hero-style="minimal"] .season-ribbon-art,
.season-hero-slide[data-hero-style="minimal"] .season-champagne-art,
.season-hero-slide[data-hero-style="minimal"] .season-branch-left,
.season-hero-slide[data-hero-style="minimal"] .season-lantern-right,
.season-hero-slide[data-hero-style="minimal"] .season-envelope-art{display:none}
/* A group chapter does not hard-disable ambient snowfall/fireworks/blossoms:
   V2.8 Atmosphere remains the ambient animation engine. */
@media(max-width:1000px){
 .season-hero-slide .content{max-width:64vw}
 .season-santa{left:48%;width:26vw}
 .season-tree-art{right:-3%;width:30vw}
 .season-clock-art{right:1%;width:42vw}
 .season-branch-left{left:43%;width:32vw}
}
@media(max-width:700px){
 .season-hero-slide .content{max-width:100%;padding:130px 28px max(95px,calc(11vh + 8px));align-self:flex-end}
 .season-hero-slide .content h1{font-size:clamp(43px,11vw,70px);margin-bottom:12px}
 .season-hero-slide .description{font-size:14px;line-height:1.45}
 .seasonal-description{font-size:12px;line-height:1.55;max-width:90%;margin-bottom:20px}
 .season-hero-slide:after{background:linear-gradient(0deg,rgba(7,19,27,.91) 0%,rgba(7,19,27,.83) 43%,rgba(7,19,27,.08) 82%)}
 .season-santa{width:37vw;height:36vh;left:18%;bottom:43%;}
 .season-tree-art{width:43vw;height:43vh;right:1%;bottom:41%}
 .season-gifts-art{width:32vw;height:21vh;right:24%;bottom:42%}
 .season-clock-art{width:61vw;height:48vh;right:17%;top:11%}
 .season-champagne-art{width:25vw;height:31vh;right:1%;bottom:42%}
 .season-ribbon-art{width:44vw;height:23vh;right:49%;top:10%}
 .season-branch-left{width:54vw;height:42vh;left:-7%;bottom:42%}
 .season-branch-right{width:51vw;height:41vh;right:-13%;top:6%}
 .season-lantern-left{width:22vw;height:27vh;right:16%;top:10%}
 .season-lantern-right{width:16vw;height:22vh;right:2%;top:7%}
 .season-envelope-art{width:44vw;height:25vh;right:27%;bottom:43%}
}
@media(max-height:680px) and (max-width:700px){
 .season-hero-slide .content{padding-top:95px;padding-bottom:75px}
 .seasonal-description{max-height:75px;overflow:hidden}
 .season-santa,.season-tree-art,.season-clock-art{height:32vh}
}
@media(prefers-reduced-motion:reduce){
 .season-hero-slide .season-object,.season-hero-slide.active .season-object{animation:none!important;opacity:1!important;translate:0!important;rotate:0deg!important;scale:1!important;transition:none!important}
 .season-hero-slide .season-scene-halo{animation:none!important;opacity:1!important}
}
/* Specificity guard: seasonal chapter art always uses its own dark premium palette,
   regardless of the bright event theme background rules from V2.4. */
.slide.season-hero-slide{
 background:radial-gradient(ellipse at 77% 40%,rgba(255,226,159,.14),transparent 52%),
 linear-gradient(135deg,var(--season-hero-bg,#183647),#081b27);
}

/* Override legacy red/navy/pine overlay selectors, including the mobile rule. */
.slide.season-hero-slide::after{background:linear-gradient(90deg,rgba(4,19,27,.67),rgba(4,19,27,.28) 48%,rgba(4,19,27,.06));opacity:1}
@media(max-width:700px){.slide.season-hero-slide::after{background:linear-gradient(0deg,rgba(7,19,27,.91),rgba(7,19,27,.81) 44%,rgba(7,19,27,.08) 82%)}}

/* V3.0 Smart Multilingual, countdown, responsive – adapt to content, never hide text */
.language-select{max-width:178px;min-width:82px;min-height:40px;border-radius:4px;border:1px solid #c2ad86;background:rgba(255,250,241,.95);color:#203c49;padding:8px 9px;font:600 12px system-ui,sans-serif;cursor:pointer}
.language-select:focus-visible{outline:3px solid #b5893b;outline-offset:2px}
.event-countdown{margin:14px 0 18px;padding:11px 16px;max-width:min(100%,550px);border:1px solid currentColor;border-radius:8px;background:rgba(250,244,227,.14);backdrop-filter:blur(5px);font-weight:600;font-size:clamp(12px,1.4vw,16px);line-height:1.55;letter-spacing:.015em;overflow-wrap:anywhere}
.season-hero-slide .event-countdown{color:var(--season-hero-accent,#e9c58a);background:rgba(11,24,30,.34)}
.hero-slide .event-countdown{color:var(--hero-subtitle,#fff);background:rgba(10,18,24,.25)}
.event-gallery .gallery-item{min-width:0;margin:0;display:flex;flex-direction:column;gap:6px}
.event-gallery .gallery-item img{width:100%;height:auto;aspect-ratio:4/3;object-fit:cover}
.event-gallery figcaption{font-size:12px;line-height:1.5;color:inherit;overflow-wrap:anywhere}
#detailContent .event-countdown{background:rgba(190,156,98,.1)}
.slide .content{min-width:0;max-width:min(100%,1050px);overflow-wrap:anywhere;hyphens:auto}
.slide h1{font-size:clamp(34px,6vw,88px);line-height:1.08;overflow-wrap:anywhere;hyphens:auto}
.season-hero-slide .seasonal-description{font-size:clamp(12px,1.2vw,17px);line-height:1.65;max-width:610px}
.slide .description{font-size:clamp(14px,1.45vw,19px);line-height:1.55}
.meta{flex-wrap:wrap;row-gap:5px;overflow-wrap:anywhere}
#menuContent button{white-space:normal;overflow-wrap:anywhere}
dialog{overflow:auto;max-height:calc(100dvh - 24px)}
@media(max-width:720px){
 .top{padding:calc(12px + env(safe-area-inset-top,0px)) 12px 10px;gap:8px}
 .top .controls{gap:6px;align-items:center}
 .top .controls button{min-height:39px;padding:7px 9px;font-size:12px}
 .language-select{max-width:118px;font-size:11px;padding:8px 4px}
 .slide .content{padding:140px clamp(18px,5vw,32px) max(94px,calc(env(safe-area-inset-bottom,0px) + 76px));margin:0!important;width:100%}
 .slide h1{font-size:clamp(29px,8.7vw,60px);line-height:1.1}
 .slide .description{font-size:clamp(13px,3.6vw,16px)}
 .slide .seasonal-description{font-size:clamp(12px,3.3vw,14px);line-height:1.5}
 .meta{margin:12px 0;font-size:12px}
 .event-countdown{font-size:12px;margin:8px 0 12px;padding:8px 10px}
 .slide .explore{padding:11px 14px;min-height:40px;font-size:11px;white-space:normal;text-align:center}
 #hint{font-size:9px;bottom:max(12px,env(safe-area-inset-bottom,0px));letter-spacing:.08em;max-width:85vw;overflow-wrap:anywhere;white-space:normal;text-align:center}
 .event-gallery{grid-template-columns:1fr 1fr}
}
@media(max-width:400px){
 .top .logo{font-size:19px}.top .logo span{font-size:8px}
 .language-select{max-width:102px;min-width:0}.top .controls button{padding:6px 7px}
 .season-hero-slide .seasonal-character-scene{opacity:.65}
}
@media(max-height:620px) and (orientation:landscape){
 .slide{align-items:flex-start;min-height:100dvh;height:auto;min-height:max(100dvh,430px)}
 .slide .content{padding-top:92px;padding-bottom:76px}
 .slide h1{font-size:clamp(28px,4vw,58px);margin:7px 0 10px}
 .slide .description,.slide .seasonal-description{margin:6px 0;font-size:13px;line-height:1.45}
 .slide .meta{margin:8px 0}
 .seasonal-character-scene{opacity:.62}
}
@media(prefers-reduced-motion:reduce){.event-countdown{backdrop-filter:none}}

/* V3.0.1 – unified dual image backgrounds: >=768px Desktop/Tablet, <=767px Mobile.
   The browser switches image by CSS without reloading slides, audio, or animation. */
.slide::before{background-image:var(--photo-desktop,none)!important;background-position:var(--focal-desktop,50% 50%)!important;background-repeat:no-repeat!important;background-size:cover!important}
.slide.hero-slide::before{display:block!important}
@media(max-width:767px), (max-width:950px) and (max-height:500px) and (orientation:landscape){.slide::before{background-image:var(--photo-mobile,var(--photo-desktop,none))!important;background-position:var(--focal-mobile,50% 50%)!important}}

/* V3.0.2 – Blur Behind Content: one immersive full-bleed photo, a soft veil only behind copy. */
.slide .content.with-glass{z-index:3;box-sizing:border-box}
.slide .glass-panel{
 --glass-rgb:255,249,237;--glass-blur:16px;--glass-opacity:.74;
 --glass-mobile-blur:18px;--glass-mobile-opacity:.84;
 position:relative;isolation:isolate;box-sizing:border-box;
 width:min(100%,var(--glass-panel-width,690px));
 max-width:100%;padding:clamp(17px,2.6vw,30px) clamp(19px,2.7vw,33px);
 border-radius:clamp(18px,2vw,30px);overflow-wrap:anywhere;
}
.slide .glass-panel::before{
 content:"";position:absolute;z-index:-1;inset:-18px -25px;pointer-events:none;
 border-radius:inherit;
 background:linear-gradient(96deg,
 rgba(var(--glass-rgb),var(--glass-opacity)) 0%,
 rgba(var(--glass-rgb),calc(var(--glass-opacity)*.94)) 67%,
 rgba(var(--glass-rgb),calc(var(--glass-opacity)*.45)) 88%,
 rgba(var(--glass-rgb),0) 100%);
 -webkit-backdrop-filter:blur(var(--glass-blur));backdrop-filter:blur(var(--glass-blur));
 -webkit-mask-image:radial-gradient(ellipse 67% 78% at 48% 50%,#000 57%,rgba(0,0,0,.9) 77%,transparent 100%);
 mask-image:radial-gradient(ellipse 67% 78% at 48% 50%,#000 57%,rgba(0,0,0,.9) 77%,transparent 100%);
}
.slide .glass-panel[data-tone="light"]{color:#203139}
.slide .glass-panel[data-tone="dark"]{color:#fff9ed}
.slide:not(.hero-slide):not(.season-hero-slide) .glass-panel[data-tone="light"] :is(h1,.description,.meta,.event-countdown){color:#203139!important}
.slide:not(.hero-slide):not(.season-hero-slide) .glass-panel[data-tone="dark"] :is(h1,.description,.meta,.event-countdown){color:#fff9ed!important}
.slide .glass-panel[data-tone="light"] .eyebrow{color:#806028!important}
.slide .glass-panel[data-tone="dark"] .eyebrow{color:#e8c78b!important}
.slide .glass-panel[data-tone="light"] .event-countdown{background:rgba(255,255,255,.32);border-color:rgba(40,57,65,.48)}
.slide .glass-panel[data-tone="dark"] .event-countdown{background:rgba(4,20,30,.3);border-color:rgba(255,255,255,.42)}
.slide .glass-panel .line{margin:clamp(12px,2vh,23px) 0}
.slide .glass-panel h1{font-size:clamp(30px,4.8vw,76px);margin:10px 0 15px}
.slide.season-hero-slide .glass-panel h1{font-size:clamp(34px,5.1vw,82px)}
.slide .glass-panel .meta{margin:15px 0}
.slide .glass-panel .event-countdown{margin:12px 0 16px;max-width:100%}
.slide .content.with-glass[data-layout="right"] .glass-panel{margin-left:auto}
.slide[data-layout="right"] .glass-panel,.slide.hero-slide[data-hero-align="right"] .glass-panel{margin-left:auto}
.slide.hero-slide[data-hero-align="center"] .glass-panel{margin-inline:auto}
/* Respect the previous reveal while keeping the new panel's elements softly staggered. */
.slide .content.with-glass .glass-panel>*{opacity:0;transform:translateY(14px);transition:opacity .54s ease,transform .7s cubic-bezier(.22,1,.36,1)}
.slide.active .content.with-glass .glass-panel>*{opacity:1;transform:none}
.slide.active .content.with-glass .glass-panel>*:nth-child(1){transition-delay:.10s}
.slide.active .content.with-glass .glass-panel>*:nth-child(2){transition-delay:.15s}
.slide.active .content.with-glass .glass-panel>*:nth-child(3){transition-delay:.19s}
.slide.active .content.with-glass .glass-panel>*:nth-child(n+4){transition-delay:.24s}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
 .slide .glass-panel::before{background:rgba(var(--glass-rgb),var(--glass-opacity))}
}
@media (max-width:767px){
 .slide .content.with-glass{width:100%;padding-inline:clamp(13px,4.5vw,26px)!important}
 .slide .glass-panel{
  width:100%;padding:clamp(16px,4.6vw,25px);
  max-height:calc(100dvh - 205px);overflow-y:auto;overscroll-behavior-y:contain;
  scrollbar-width:thin;scrollbar-color:#ffffff55 transparent;
  -webkit-overflow-scrolling:touch;
 }
 .slide .glass-panel::before{
  inset:-10px -9px;
  background:linear-gradient(180deg,rgba(var(--glass-rgb),var(--glass-mobile-opacity)) 0%,
    rgba(var(--glass-rgb),calc(var(--glass-mobile-opacity)*.95)) 86%,
    rgba(var(--glass-rgb),calc(var(--glass-mobile-opacity)*.74)) 100%);
  -webkit-backdrop-filter:blur(var(--glass-mobile-blur));backdrop-filter:blur(var(--glass-mobile-blur));
  -webkit-mask-image:radial-gradient(ellipse 69% 78% at 50% 50%,#000 60%,rgba(0,0,0,.93) 81%,transparent 100%);
  mask-image:radial-gradient(ellipse 69% 78% at 50% 50%,#000 60%,rgba(0,0,0,.93) 81%,transparent 100%);
 }
 .slide .glass-panel h1,.slide.season-hero-slide .glass-panel h1{font-size:clamp(27px,8vw,48px);margin:7px 0 10px}
 .slide .glass-panel .description{font-size:clamp(13px,3.6vw,16px)}
 .slide .glass-panel .meta{font-size:12px;margin:10px 0}
 .slide .glass-panel .event-countdown{margin:9px 0 12px}
 .slide .glass-panel .line{margin:10px 0}
 .slide .glass-panel .explore{min-height:43px}
}
@media(max-height:620px) and (orientation:landscape){
 .slide .glass-panel{max-height:calc(100dvh - 100px);overflow-y:auto;overscroll-behavior:contain}
 .slide .content.with-glass{padding-top:95px;padding-bottom:70px}
}
@media(prefers-reduced-motion:reduce){
 .slide .content.with-glass .glass-panel>*{opacity:1!important;transform:none!important;transition:none!important}
 .slide .glass-panel::before{-webkit-backdrop-filter:none;backdrop-filter:none}
}
/* GPU/battery: only the visible slide performs the expensive backdrop filtering. */
.slide:not(.active) .glass-panel::before{-webkit-backdrop-filter:none;backdrop-filter:none}
@media(max-width:767px) and (max-height:700px){
 .slide .content.with-glass{padding-top:88px!important;padding-bottom:61px!important}
 .slide .glass-panel{max-height:calc(100dvh - 160px)}
}


/* V3.0.4 — Event Activities Showcase (inside the event detail modal only). */
#detail:has(.event-activities) {max-width:min(1040px,calc(100vw - 28px));width:100%;}
.event-activities{margin:28px 0;padding-top:20px;border-top:1px solid rgba(148,117,74,.25)}
.event-activities-kicker{font-size:10px;letter-spacing:.22em;color:#a67c3e;font-weight:700}
.event-activities-heading{font-family:var(--heading-font,Georgia,serif);font-size:clamp(24px,4vw,36px);font-weight:500;margin:10px 0 24px}
.activity-category{margin-bottom:29px}.activity-category-title{font-size:14px;letter-spacing:.05em;text-transform:uppercase;margin:0 0 12px;color:#946d36}
.activity-card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:start}
.activity-card{border:1px solid rgba(172,127,45,.25);border-radius:13px;overflow:hidden;background:#fffdfa;min-width:0;box-shadow:0 8px 23px rgba(34,37,32,.045)}
.activity-card[open]{grid-column:1/-1;box-shadow:0 12px 35px rgba(34,37,32,.12)}
.activity-card-head{display:flex;gap:14px;align-items:center;cursor:pointer;list-style:none;padding:12px;min-height:110px}
.activity-card-head::-webkit-details-marker{display:none}.activity-card-head:focus-visible{outline:3px solid #ac7f2d;outline-offset:-4px}
.activity-card-photo{width:120px;min-width:120px;aspect-ratio:4/3;overflow:hidden;border-radius:9px;background:#f0e7d9;display:block}
.activity-card-photo img{width:100%;height:100%;max-height:none;object-fit:cover;display:block}
.activity-card-info{min-width:0;overflow-wrap:anywhere}.activity-card-info h5{font-family:var(--heading-font,Georgia,serif);font-size:clamp(16px,2vw,22px);line-height:1.3;margin:0 0 7px;color:#253c3a}
.activity-card-teaser{font-size:13px;line-height:1.55;margin:0 0 8px;color:#53645f;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;white-space:normal!important}
.activity-card-cta{font-size:11px;color:#92702f;font-weight:700;text-transform:uppercase;letter-spacing:.03em}
.activity-card-expanded{padding:4px clamp(14px,3vw,24px) 20px;border-top:1px solid #f0e8db}
.activity-card-meta{color:#806639;font-size:13px;line-height:1.7;margin:14px 0}
.activity-card-description p{white-space:pre-wrap;line-height:1.8;margin:10px 0;color:#3b4d4a}
.activity-photo-gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:15px}.activity-photo-gallery figure{margin:0;min-width:0}.activity-photo-gallery picture{width:100%;display:block}.activity-photo-gallery img{width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;border-radius:9px;max-height:none}.activity-photo-gallery figcaption{font-size:12px;line-height:1.5;margin-top:5px;overflow-wrap:anywhere}
.activity-load-warning{font-size:13px;color:#936e32;line-height:1.6}
@media(max-width:720px){#detail:has(.event-activities){max-width:calc(100vw - 10px);max-height:calc(100dvh - 10px);margin:auto;padding:24px 14px;border-radius:18px}.event-activities{margin-top:22px}.activity-card-grid{grid-template-columns:1fr;gap:12px}.activity-card[open]{grid-column:auto}.activity-card-head{padding:9px;gap:11px;min-height:102px}.activity-card-photo{width:105px;min-width:105px;aspect-ratio:4/5}.activity-card-info h5{font-size:19px}.activity-card-teaser{-webkit-line-clamp:2}.activity-photo-gallery{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:390px){.activity-card-photo{width:87px;min-width:87px}.activity-card-info h5{font-size:17px}}
@media(prefers-reduced-motion:reduce){.activity-card,.activity-card *{animation:none!important;transition:none!important}}

/* V3.0.4.1: clear status when events API fails or returns no published events. */
.event-load-notice{position:fixed;bottom:72px;left:50%;transform:translateX(-50%);z-index:20;width:min(92vw,600px);padding:14px 20px;border-radius:12px;background:#fff8e9;color:#5b3023;border:1px solid #c89d78;box-shadow:0 10px 36px #0003;text-align:center;font-size:14px;line-height:1.55;pointer-events:none}


/* V3.1 - Guest UX / performance: consistent title sizes, readable long languages. */
.slide:not(.hero-slide):not(.season-hero-slide) .content h1,
.slide:not(.hero-slide):not(.season-hero-slide) .glass-panel h1{
 font-size:clamp(30px,4.5vw,var(--event-title-desktop,54px));
 font-weight:500;line-height:1.12;max-width:100%;overflow-wrap:anywhere;hyphens:auto;
 text-wrap:pretty;
}
.slide[data-event-font="sans"]:not(.hero-slide):not(.season-hero-slide) .content h1{font-family:Arial,Helvetica,sans-serif}
.slide[data-event-font="system"]:not(.hero-slide):not(.season-hero-slide) .content h1{font-family:system-ui,-apple-system,sans-serif}
.slide[data-event-font="serif"]:not(.hero-slide):not(.season-hero-slide) .content h1{font-family:Georgia,serif}
.slide:not(.hero-slide):not(.season-hero-slide) .eyebrow:empty{display:none}
.slide:not(.hero-slide):not(.season-hero-slide) .eyebrow:empty + .line{display:none}
.event-highlights{display:flex;flex-wrap:wrap;gap:7px;margin:10px 0 13px;max-width:100%}
.event-highlight{display:inline-flex;align-items:center;max-width:100%;padding:6px 11px;border-radius:30px;background:rgba(255,251,241,.20);border:1px solid currentColor;font-size:12px;line-height:1.35;overflow-wrap:anywhere}
.glass-panel[data-tone="light"] .event-highlight{background:rgba(255,255,255,.56)}
.glass-panel[data-tone="dark"] .event-highlight{background:rgba(4,17,27,.32)}
.detail-highlights,.detail-timeline{margin:22px 0}.detail-highlights h3,.detail-timeline h3{font-size:20px;margin-bottom:8px}
.detail-highlights li,.detail-timeline li{padding:6px 0;line-height:1.65;overflow-wrap:anywhere}
.detail-timeline ol{border-left:2px solid #bb985e;padding-left:26px;list-style:decimal}
.event-contact{display:inline-flex;text-decoration:none;min-height:44px;align-items:center;justify-content:center;margin:14px 0;padding:11px 17px;background:#a87d32;color:white;border-radius:6px;font-weight:700}
@media(max-width:767px){
 .slide:not(.hero-slide):not(.season-hero-slide) .content h1,
 .slide:not(.hero-slide):not(.season-hero-slide) .glass-panel h1{font-size:clamp(24px,8vw,var(--event-title-mobile,34px));line-height:1.15}
 .event-highlight{font-size:11px;padding:5px 9px}
 .event-highlights{gap:5px}
 .slide .glass-panel::before{backdrop-filter:blur(min(var(--glass-mobile-blur),12px));-webkit-backdrop-filter:blur(min(var(--glass-mobile-blur),12px))}
}
/* Data saving and lower-end devices retain readable panels without GPU backdrop blur. */
html.perf-lite .slide .glass-panel::before{backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
html.perf-lite .seasonal-character-scene img{animation-duration:0s!important}
@media(prefers-reduced-motion:reduce){.event-highlight{transition:none!important}}
