/* Sitewide navigation follows the current official site's information structure. */
.original-header{gap:1.5rem;padding-inline:3.5%}
.original-header .brand img{width:11.5625rem}
.original-header nav{gap:1.25rem}
.original-header nav>a,.nav-group>summary{font-size:0.75rem;font-weight:700;white-space:nowrap}
.original-header nav>a::before,.nav-group>summary::before{content:'›';margin-right:0.4375rem;color:#ece9d5;font-family:var(--latin)}
.original-header nav>a[aria-current=page]{color:var(--gold)}
.nav-group{position:relative}
.nav-group>summary{list-style:none;cursor:pointer;padding:0.625rem 0;transition:color .2s}
.nav-group>summary::-webkit-details-marker{display:none}
.nav-group[open]>summary,.nav-group>summary:hover{color:var(--gold)}
.nav-group[open]>summary::before{display:inline-block;transform:rotate(90deg)}
.nav-dropdown{position:absolute;left:-1.125rem;top:100%;width:16.25rem;padding:0.75rem;background:#17234ff5;backdrop-filter:blur(0.875rem);border:0.0625rem solid #d4c58a35;border-radius:0.8125rem;box-shadow:0 1.25rem 2.8125rem #03092270;max-height:calc(100svh - 7.5rem);overflow:auto}
.nav-group:last-of-type .nav-dropdown{left:auto;right:0}
.nav-dropdown>a,.nav-subgroup>a{display:block;font-size:0.75rem;padding:0.625rem 0.8125rem;border-radius:0.375rem;line-height:1.7;color:#e6e7f1;transition:background .2s,color .2s}
.nav-dropdown a:hover,.nav-dropdown a:focus-visible{background:#ffffff0e;color:var(--gold)}
.nav-subgroup{margin:0.125rem 0.625rem 0.4375rem 1.25rem;padding-left:0.4375rem;border-left:0.0625rem solid #c6d0f333}
.nav-subgroup>a{font-size:0.6875rem;padding-block:0.4375rem;color:#bfc8df}
.nav-social{display:flex;gap:1.0625rem;padding-left:1rem;border-left:0.0625rem solid #d7d9e945;align-items:center}
.nav-social a{font:1.1875rem/1 var(--latin);display:grid;place-items:center;width:1.25rem;height:1.75rem}
.nav-social svg{width:1.0625rem;height:1.0625rem;fill:none;stroke:currentColor;stroke-width:1.5}
.about-readmore{display:inline-flex;align-items:center;gap:2.1875rem;font-size:0.75rem;margin-top:1.5625rem;padding-bottom:0.375rem;border-bottom:0.0625rem solid #dacb9955;color:var(--gold)}
.about-readmore span{font:1.25rem var(--latin)}
/* Shared secondary-page atmosphere */
.subpage main{overflow-x:clip}
.breadcrumbs{display:flex;align-items:center;gap:0.875rem;font-size:0.625rem;letter-spacing:.05em;color:#bec7de;position:relative;z-index:2;padding-top:7.625rem}
.breadcrumbs a{font-family:var(--latin);color:var(--gold)}
.breadcrumbs>span:last-child{overflow-wrap:anywhere}
.subpage-stars{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.subpage-stars.offscreen .sky-star{animation-play-state:paused}
.subpage-motion{position:relative;text-align:center;padding:0.9375rem 0 1.5625rem;z-index:2}
.sub-motion-button{font-size:0.625rem;color:#a5b2d3;padding:0.625rem 0.875rem}
.subpage .site-footer{padding-top:2rem}
/* A theatrical interlude, not an error page. */
.waiting-world{position:relative;isolation:isolate;min-height:60rem;background:radial-gradient(ellipse at 50% 40%,#293369 0%,#132453 40%,#0b153b 80%);overflow:hidden}
.waiting-world::after{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,#18204e20 20%,#18204e00 52%,#18204e 100%)}
.waiting-skyline{position:absolute;bottom:0;left:0;width:100%;height:50%;object-fit:cover;object-position:center 70%;opacity:.48;z-index:-2;mask-image:linear-gradient(transparent,#000 45%)}
.waiting-content{position:relative;z-index:1;text-align:center;width:min(43.75rem,calc(100% - 2.75rem));margin:2.1875rem auto 0}
.waiting-content>.eyebrow{font-size:0.625rem;letter-spacing:.22em;color:#c8c0e4}
.lantern-emblem{height:12.5rem;width:16.25rem;position:relative;margin:1.125rem auto 1.5625rem}
.emblem-orbit{position:absolute;width:11.625rem;height:11.625rem;border:0.0625rem solid #ebdcbb30;border-radius:50%;top:0;left:2.3125rem}
.emblem-orbit::after{content:'';position:absolute;inset:0.875rem;border:0.0625rem dashed #ded0bf25;border-radius:50%}
.emblem-lantern{position:absolute;top:2.625rem;left:5.75rem;width:4.75rem;height:6.375rem;border-radius:30% 30% 24% 24% / 15% 15% 14% 14%;background:radial-gradient(ellipse at 50% 90%,#fffad4,#f9cd77 28%,#d18c47 70%,#9d543b);box-shadow:0 0 2.1875rem #ffb44938,inset 0.5rem 0 0.875rem #a34a352b,inset -0.5rem 0 0.875rem #a34a352b;transform:rotate(-8deg);animation:emblem-float 7s ease-in-out infinite}
.emblem-lantern::before{content:'';position:absolute;bottom:0.1875rem;left:18%;right:18%;height:0.75rem;border-radius:50%;background:#fff6ca;box-shadow:0 0 1.25rem #ffd274}
.emblem-lantern span{position:absolute;left:48%;width:0.0625rem;height:90%;background:#fff2cd30}
.emblem-caption{position:absolute;bottom:0;left:0;right:0;font:0.5rem var(--latin);letter-spacing:.24em;color:#d7be89}
.emblem-star{position:absolute;color:var(--gold);font-size:1.5625rem}
.star-one{left:2.0625rem;top:7.1875rem}.star-two{right:1.25rem;top:2.1875rem}
.emblem-moon{position:absolute;right:2.9375rem;top:7.5rem;color:#ede4c6;font:1.875rem var(--latin);transform:rotate(-20deg)}
.waiting-page-label{display:inline-block;font-size:0.6875rem;color:#d8d5ed;letter-spacing:.06em;border:0.0625rem solid #c7bdd341;border-radius:1.875rem;padding:0.3125rem 1.1875rem;max-width:100%}
.waiting-content h1{font-size:clamp(2.375rem,4.3vw,3.75rem);line-height:1.5;letter-spacing:.055em;margin:1.1875rem 0 1.125rem}
.waiting-message{font-size:0.875rem;color:#d2d7e8;line-height:2.15}
.waiting-english{font:0.75rem var(--latin);letter-spacing:.3em;color:#f3ce82;margin:1.375rem 0 1.625rem}
.waiting-english span{letter-spacing:.3em}
.waiting-actions{display:flex;justify-content:center;align-items:center;gap:2rem}
.waiting-actions .button{font-size:0.75rem;min-width:14.0625rem;min-height:3.4375rem}
.waiting-about{font-size:0.75rem;color:#dfe1ef;padding:0.75rem 0;border-bottom:0.0625rem solid #c4c8e14a}
.waiting-about span{margin-left:1.1875rem}
.waiting-note{font-size:0.625rem;color:#aeb9d1;margin-top:1.5625rem}
.waiting-world .subpage-motion{margin-top:1.75rem}
@keyframes emblem-float{0%,100%{transform:translateY(0) rotate(-8deg)}50%{transform:translateY(-0.75rem) rotate(2deg)}}
.motion-paused .emblem-lantern,.tab-hidden .emblem-lantern{animation-play-state:paused}
/* Simple introduction page */
.about-page-hero{position:relative;isolation:isolate;min-height:35.625rem;overflow:hidden}
.about-page-hero>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 46%;z-index:-2}
.about-page-hero::after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#18204edf,#18204e70),linear-gradient(0deg,#18204e,transparent 55%);z-index:-1}
.about-page-title{padding-top:4.0625rem;padding-bottom:5.9375rem}
.about-page-title h1{font-size:clamp(2.25rem,4.3vw,3.8125rem);line-height:1.6;margin-top:0.9375rem}
.about-page-title>p:last-child{font-size:0.875rem;letter-spacing:.12em;color:#d6d8e9;margin-top:1.375rem}
.about-manifesto{text-align:center;padding:4.0625rem 0 4.6875rem}
.about-manifesto h2{font-size:2.3125rem;margin:0.9375rem 0 1.6875rem}
.about-manifesto>p:not(.eyebrow){font-size:0.875rem;line-height:2.3;color:#ccd3e7;margin-top:1.375rem}
.about-pillars{display:grid;grid-template-columns:repeat(3,1fr);gap:2.1875rem;padding-bottom:5rem}
.pillar-image{position:relative;margin-bottom:1.5625rem}
.pillar-image img{width:100%;height:15.3125rem;object-fit:cover;border-radius:5.9375rem 5.9375rem 0.75rem 0.75rem}
.about-pillars article:nth-child(2) img{border-radius:0.75rem 5.9375rem 0.75rem 0.75rem}
.about-pillars article:nth-child(3) img{border-radius:5.9375rem 0.75rem 0.75rem 0.75rem}
.pillar-image>span{position:absolute;bottom:-1.0625rem;right:1.25rem;display:grid;place-items:center;width:2.6875rem;height:2.6875rem;border-radius:50%;background:var(--gold);color:#1b2450;font:500 1.125rem var(--latin)}
.about-pillars h2{font-size:1.5625rem;margin-bottom:0.9375rem}
.about-pillars article>p:last-child{font-size:0.8125rem;line-height:2.1;color:#bac4dd}
.about-future{position:relative;text-align:center;border-top:0.0625rem solid var(--line);padding:4.5rem 0 3.75rem}
.future-star{display:block;color:var(--gold);font-size:2rem;margin-bottom:0.9375rem}
.about-future h2{font-size:2.3125rem;margin:1.125rem 0 1.5625rem}
.about-future>p:not(.eyebrow):not(.section-note){font-size:0.875rem;line-height:2.3;color:#c8cfe3}
.about-page-actions{display:flex;justify-content:center;gap:1.25rem;margin-top:2rem}
.about-page-actions .button{font-size:0.75rem}
@media(max-width:1250px){.original-header{gap:1.25rem;padding-inline:1.5625rem}.original-header .brand img{width:9.875rem}.original-header nav{gap:0.75rem}.original-header nav>a,.nav-group>summary{font-size:0.65625rem}.nav-social{gap:0.625rem;padding-left:0.625rem}.original-header nav>a::before,.nav-group>summary::before{margin-right:0.3125rem}}
@media(max-width:1100px){.original-header .menu-toggle{display:flex;width:2.75rem;height:2.75rem;flex-direction:column;align-items:center;justify-content:center;gap:0.4375rem;border:0.0625rem solid #cbd2ef66;border-radius:50%;z-index:23}.original-header .menu-toggle span{width:1.125rem;height:0.0625rem;background:var(--cream)}.original-header .menu-toggle[aria-expanded=true] span:first-child{transform:translateY(0.25rem) rotate(45deg)}.original-header .menu-toggle[aria-expanded=true] span:last-child{transform:translateY(-0.25rem) rotate(-45deg)}.original-header nav{display:none;position:absolute;top:5.3125rem;left:1.25rem;right:1.25rem;background:#17234ffa;border:0.0625rem solid #52608670;border-radius:1.0625rem;padding:1.25rem 1.5625rem;max-height:calc(100svh - 6.75rem);overflow:auto;box-shadow:0 0.9375rem 2.1875rem #0005}.original-header nav.is-open{display:flex;flex-direction:column;align-items:stretch;gap:0}.original-header nav>a,.nav-group>summary{font-size:0.8125rem;padding:0.8125rem 0.1875rem}.nav-dropdown{position:static;width:100%;box-shadow:none;background:#ffffff04;border:0;border-radius:0.5rem;padding:0.3125rem 0.5rem;max-height:none;overflow:visible;margin-bottom:0.5625rem}.nav-dropdown>a{font-size:0.75rem}.nav-social{border-left:0;border-top:0.0625rem solid #cbd2ef22;margin-top:0.875rem;padding:1.125rem 0 0;gap:1.25rem}.about-pillars{gap:1.4375rem}.pillar-image img{height:12.8125rem}.about-pillars h2{font-size:1.375rem}}
@media(max-width:600px){.original-header{padding:1rem 1.375rem}.original-header .brand img{width:9.5625rem}.original-header .menu-toggle{height:2.5rem;width:2.5rem}.breadcrumbs{padding-top:6.4375rem;font-size:0.5625rem;gap:0.625rem}.waiting-world{min-height:56.25rem}.waiting-content{margin-top:2.25rem}.waiting-content>.eyebrow{font-size:0.5rem;letter-spacing:.12em}.lantern-emblem{transform:scale(.85);margin:-0.125rem auto 0;height:12.1875rem}.waiting-page-label{font-size:0.625rem}.waiting-content h1{font-size:2.0625rem;line-height:1.6;letter-spacing:.015em;margin:1.1875rem 0}.waiting-message{font-size:0.75rem;line-height:2.1}.waiting-english{font-size:0.625rem;margin-block:1.5rem}.waiting-actions{flex-direction:column;gap:0.625rem}.waiting-actions .button{min-width:14.8125rem}.waiting-about{font-size:0.6875rem}.waiting-note{font-size:0.5625rem;max-width:18.125rem;margin:1.375rem auto 0;line-height:1.9}.waiting-skyline{height:38%;width:155%;max-width:none;left:-27%;object-position:center bottom;opacity:.4}.waiting-world .subpage-motion{margin-top:0.9375rem}.about-page-hero{min-height:31.5625rem}.about-page-title{padding-top:4.1875rem;padding-bottom:4.375rem}.about-page-title h1{font-size:2rem;letter-spacing:.01em;line-height:1.7}.about-page-title>p:last-child{font-size:0.75rem}.about-manifesto{padding:2.5rem 0 3.125rem}.about-manifesto h2,.about-future h2{font-size:1.75rem}.about-manifesto>p:not(.eyebrow),.about-future>p:not(.eyebrow):not(.section-note){font-size:0.75rem;line-height:2.35}.about-pillars{grid-template-columns:1fr;gap:2.6875rem;padding-bottom:3.4375rem}.pillar-image img{height:15.3125rem}.about-pillars h2{font-size:1.5625rem}.about-pillars article>p:last-child{font-size:0.75rem}.about-future{padding:3rem 0 1.875rem}.about-page-actions{flex-direction:column;gap:0.875rem;align-items:center}.about-page-actions .button{min-width:15.625rem}.subpage .footer-top>p{font-size:0.625rem}}
@media(prefers-reduced-motion:reduce){.emblem-lantern{animation:none}.subpage-stars .sky-star{animation:none}}

/* Renewal brief: new name, visitor guidance, and partnership recruitment. */
.brand>.brand-name{font-family:var(--body);font-size:1.5625rem;font-weight:500;letter-spacing:.03em;color:var(--cream);line-height:1.5;margin:0;white-space:nowrap}
.brand-name>span{color:var(--gold)}
.brand>.brand-name+span{font-size:0.375rem;letter-spacing:.09em}
.original-header{gap:1.25rem}
.original-header nav{gap:0.875rem}
.original-header .brand>.brand-name{font-size:1.4375rem}
.original-header nav>.language-link{font-family:var(--latin);font-size:0.65625rem;font-weight:400}
.visitor-guide{padding:2.1875rem 0 2.8125rem;border-top:0.0625rem solid var(--line);border-bottom:0.0625rem solid var(--line)}
.visitor-guide h2{font-size:1.5625rem}
.visitor-links{display:grid;grid-template-columns:repeat(4,1fr);gap:1.125rem;margin-top:1.4375rem}
.visitor-links>a{position:relative;padding:1rem 1.25rem;border-radius:0.625rem;background:#ffffff06;border:0.0625rem solid #e4e6fc25;font-size:0.8125rem}
.visitor-links>a:hover{background:#ffffff0e;border-color:#e5c88088}
.visitor-links small{display:block;font:0.5625rem var(--latin);letter-spacing:.14em;color:var(--gold);margin-bottom:0.375rem}
.visitor-links span{position:absolute;right:1.0625rem;top:1.875rem;color:#d5c590}
.join-grid{grid-template-columns:repeat(3,1fr);max-width:none}
.join-grid>a{padding:1.5625rem}
.join-grid h3{font-size:1.375rem}
@media(min-width:1101px) and (max-width:1350px){.original-header nav{gap:0.5625rem}.original-header nav>a,.nav-group>summary{font-size:0.625rem}.original-header .brand>.brand-name{font-size:1.3125rem}.nav-social{gap:0.5rem;padding-left:0.5625rem}}
@media(max-width:900px){.join-grid{grid-template-columns:1fr}.visitor-links{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.original-header .brand>.brand-name{font-size:1.3125rem}.visitor-guide{padding-block:1.6875rem}.visitor-guide h2{font-size:1.4375rem}.visitor-links{gap:0.625rem;margin-top:1.1875rem}.visitor-links>a{padding:0.875rem 0.8125rem;font-size:0.6875rem}.visitor-links span{right:0.625rem;top:1.6875rem}.visitor-links small{font-size:0.5rem}.join-grid h3{font-size:1.4375rem}}

/* Representative message — the proposal's connected pieces, translated into the night-market world. */
.message-hero{position:relative;isolation:isolate;min-height:47.5rem;overflow:hidden;background:radial-gradient(circle at 76% 40%,#39447c 0%,#172858 37%,#18204e 72%)}
.message-hero::after{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,#18204e00 48%,#18204e 100%),radial-gradient(circle at 17% 70%,#d19b4620,transparent 26%)}
.message-hero-inner{display:grid;grid-template-columns:minmax(0,1fr) minmax(24.375rem,.82fr);align-items:center;gap:5.3125rem;padding-top:2.8125rem;padding-bottom:6.25rem}
.message-hero-copy{position:relative;z-index:2}
.message-page .breadcrumbs{font-size:0.6875rem}.message-hero-copy .eyebrow{font-size:0.75rem;letter-spacing:.24em;margin-bottom:1.5rem}
.message-hero-copy h1{font-size:1.375rem;line-height:1.5;letter-spacing:.12em;font-weight:500;color:#d8deed;margin-bottom:1rem}.message-statement{font-size:clamp(2.6875rem,4.7vw,4.375rem);line-height:1.48;letter-spacing:.045em}
.message-hero-copy>p:last-child{font-size:0.9375rem;line-height:2.15;color:#cbd2e5;margin-top:1.5rem;letter-spacing:.05em}
.message-portrait{position:relative;width:min(28.125rem,100%);aspect-ratio:1;margin:0 auto}
.message-portrait img{width:100%;height:100%;object-fit:cover;object-position:50% 32%;border-radius:50%;border:0.0625rem solid #ffdd8880;box-shadow:0 2.1875rem 5.625rem #02092080,0 0 0 1.125rem #c9bfd71a}
.message-orbit{position:absolute;inset:-2.75rem;border:0.0625rem solid #f6c76080;border-radius:50%;transform:rotate(-13deg)}
.message-orbit::before,.message-orbit::after{content:'';position:absolute;border-radius:50%;background:var(--gold);box-shadow:0 0 1.125rem #fff0a5}
.message-orbit::before{width:0.625rem;height:0.625rem;right:1.625rem;top:3.75rem}.message-orbit::after{width:0.375rem;height:0.375rem;left:1.0625rem;bottom:5.3125rem}
.portrait-placeholder{position:absolute;left:0.875rem;top:1.75rem;padding:0.3125rem 0.75rem;border-radius:2.5rem;background:#18204ed9;border:0.0625rem solid #f6c76080;font-size:0.625rem;letter-spacing:.12em;color:var(--gold)}
.message-portrait figcaption{position:absolute;right:-1.625rem;bottom:1.8125rem;min-width:14.6875rem;padding:0.75rem 1.125rem;border-radius:0.75rem;background:#18204ee8;border:0.0625rem solid #e3d7aa55;color:#f6edd3;text-align:left;box-shadow:0 0.875rem 2.1875rem #02082466}.message-portrait figcaption strong{display:block;font-size:1.0625rem;letter-spacing:.12em}.message-portrait figcaption small{display:block;font-size:0.5625rem;letter-spacing:.05em;color:#bfc8dd;margin-top:0.1875rem}
.message-piece{position:absolute;color:var(--gold);filter:drop-shadow(0 0 0.625rem #ffe49d);animation:night-sparkle-glow 5s ease-in-out infinite}.piece-one{font-size:1.875rem;left:8%;bottom:18%}.piece-two{font-size:1.3125rem;right:5%;top:23%;animation-delay:-2s}
.message-body{display:grid;grid-template-columns:minmax(14.375rem,.62fr) minmax(0,1.2fr);gap:9vw;padding-top:6.25rem;padding-bottom:7.1875rem}
.message-side{align-self:start;position:sticky;top:3.125rem;padding:1.75rem 0 2rem;border-top:0.0625rem solid #d5ca9755;border-bottom:0.0625rem solid #d5ca972e}
.message-side>p:nth-child(2){font-size:1.375rem;line-height:1.85;font-weight:700}
.message-contributors{display:flex;flex-wrap:wrap;gap:0.5rem;margin-top:1.75rem}
.message-contributors span{font-size:0.71875rem;color:#d4d9e8;border:0.0625rem solid #aeb8d33d;border-radius:2.5rem;padding:0.375rem 0.75rem;background:#ffffff05}
.message-contributors span:nth-child(odd){border-color:#e5c67166;color:#f0d78c}
.message-team-photo{margin-top:2.125rem;position:relative}.message-team-photo img{width:100%;height:12.1875rem;object-fit:cover;object-position:50% 52%;border-radius:5rem 0.875rem 5rem 0.875rem;opacity:.82}.message-team-photo figcaption{position:absolute;left:1.0625rem;bottom:0.8125rem;font:0.5rem var(--latin);letter-spacing:.18em;color:#fff5d4;text-shadow:0 0.125rem 0.625rem #000}
.message-letter{position:relative;padding-left:3.375rem;border-left:0.0625rem solid #d8c26d4a}
.message-letter::before{content:'“';position:absolute;left:1.5rem;top:-1.6875rem;font:4.625rem/1 Georgia,serif;color:#f6c7605c}
.message-letter>p{font-size:1rem;line-height:2.4;color:#d1d7e7;margin-bottom:2.0625rem;letter-spacing:.025em}
.message-letter .message-closing{font-size:1.125rem;font-weight:700;color:var(--cream);line-height:2.1;margin-top:3.0625rem}
.message-signature{display:flex;align-items:flex-end;justify-content:flex-end;gap:1.5625rem;margin-top:3.4375rem;text-align:right}
.message-signature span{font-size:0.78125rem;line-height:1.8;color:#b9c2d8}.message-signature strong{font-size:1.75rem;font-weight:500;letter-spacing:.1em;color:var(--cream)}
.message-cta{position:relative;text-align:center;padding:5rem 2.5rem 4.6875rem;border:0.0625rem solid #c8cdeb2c;border-radius:1.75rem;background:radial-gradient(circle at 50% 30%,#33407477,#1a2652 65%);overflow:hidden}
.message-cta::before{content:'';position:absolute;inset:0;background-image:radial-gradient(circle,#fff2c878 0.0625rem,transparent 0.09375rem);background-size:4.5625rem 3.8125rem;opacity:.45;pointer-events:none}
.message-cta>span{position:relative;display:block;color:var(--gold);font-size:1.9375rem;margin-bottom:0.8125rem}.message-cta h2{position:relative;font-size:2.375rem;margin:1rem 0 1.25rem}.message-cta>p:not(.eyebrow){position:relative;font-size:0.84375rem;line-height:2;color:#c7cee1}.message-cta .about-page-actions{position:relative}
@media(max-width:1100px){.message-hero-inner{grid-template-columns:1fr .8fr;gap:2.8125rem}.message-portrait{max-width:22.5rem}.message-body{gap:3.4375rem}.message-letter{padding-left:2.625rem}}
@media(max-width:760px){.message-hero{min-height:61.875rem}.message-hero-inner{grid-template-columns:1fr;gap:3rem;padding-top:3rem;padding-bottom:5.625rem}.message-hero-copy{text-align:center}.message-hero-copy h1{font-size:1.125rem;margin-bottom:0.9375rem}.message-hero-copy .message-statement{font-size:clamp(2.3125rem,10vw,3.25rem)}.message-hero-copy>p:last-child{font-size:0.75rem}.message-portrait{width:min(18.75rem,78vw)}.message-orbit{inset:-1.625rem}.portrait-placeholder{left:0.25rem;top:1.125rem;font-size:0.5rem}.message-portrait figcaption{right:-0.875rem;bottom:0.5625rem;min-width:12.8125rem;padding:0.625rem 0.875rem}.message-portrait figcaption strong{font-size:0.9375rem}.message-portrait figcaption small{font-size:0.5rem}.message-body{grid-template-columns:1fr;gap:2.875rem;padding-top:4.0625rem;padding-bottom:4.6875rem}.message-side{position:static;text-align:center;padding-inline:0.625rem}.message-side>p:nth-child(2){font-size:1.25rem}.message-contributors{justify-content:center}.message-team-photo{width:min(20.625rem,100%);margin-inline:auto}.message-team-photo img{height:11.875rem}.message-letter{padding-left:1.4375rem}.message-letter::before{left:0.1875rem}.message-letter>p{font-size:0.8125rem;line-height:2.35;margin-bottom:1.6875rem}.message-letter br{display:none}.message-letter .message-closing{font-size:0.9375rem}.message-signature{flex-direction:column;align-items:flex-end;gap:0.5rem}.message-signature strong{font-size:1.5rem}.message-cta{width:calc(100% - 2rem);padding:3.4375rem 1.25rem 3.125rem}.message-cta h2{font-size:1.75rem}.message-cta>p:not(.eyebrow){font-size:0.625rem;line-height:2}.message-cta .about-page-actions{flex-direction:column}.message-cta .button{min-width:15.3125rem}.piece-one{left:5%;bottom:8%}.piece-two{right:5%;top:15%}}
@media(prefers-reduced-motion:reduce){.message-piece{animation:none}}
/* Main navigation: a line of warm harbor lights floating over the night view. */
@media(min-width:68.8125rem){
  .original-header #main-nav{position:relative;isolation:isolate;gap:0.125rem;padding:0.4375rem 0.625rem 0.4375rem 0.8125rem;border:0.0625rem solid #f4cf7638;border-radius:62.4375rem;background:linear-gradient(135deg,#091538d9 0%,#15265cc7 54%,#0c183ed6 100%);box-shadow:inset 0 0.0625rem 0 #ffffff18,0 0.8125rem 2.375rem #02071d4f,0 0 2.125rem #f0bd4b0d;backdrop-filter:blur(1.0625rem) saturate(1.18)}
  .original-header #main-nav::before{content:'';position:absolute;left:1.75rem;right:1.75rem;top:0;height:0.0625rem;background:linear-gradient(90deg,transparent,#fff2c780,transparent);opacity:.72;pointer-events:none}
  .original-header #main-nav>a,.original-header #main-nav>.nav-group>summary{position:relative;display:flex;align-items:center;min-height:2.1875rem;padding:0.5rem 0.4375rem;color:#f4f0e7e8;font-size:0.6875rem;line-height:1;letter-spacing:.025em;border-radius:62.4375rem;transition:color .4s ease,background .4s ease,text-shadow .4s ease}
  .original-header #main-nav>a::before,.original-header #main-nav>.nav-group>summary::before{content:'';width:0.1875rem;height:0.1875rem;flex:none;margin-right:0.4375rem;border-radius:50%;background:#f3c45f;box-shadow:0 0 0.4375rem #ffd775;opacity:.5;transform:none;transition:opacity .4s ease,transform .45s cubic-bezier(.2,.75,.2,1),box-shadow .4s ease}
  .original-header #main-nav>a:hover,.original-header #main-nav>a:focus-visible,.original-header #main-nav>.nav-group>summary:hover,.original-header #main-nav>.nav-group>summary:focus-visible,.original-header #main-nav>.nav-group[open]>summary{color:#ffe8aa;background:#ffffff0a;text-shadow:0 0 1rem #ffd8756b;outline:0}
  .original-header #main-nav>a:hover::before,.original-header #main-nav>a:focus-visible::before,.original-header #main-nav>.nav-group>summary:hover::before,.original-header #main-nav>.nav-group>summary:focus-visible::before,.original-header #main-nav>.nav-group[open]>summary::before{opacity:1;transform:scale(1.8);box-shadow:0 0 0.75rem #ffd875,0 0 1.375rem #f4b73f8c}
  .original-header #main-nav>a[aria-current=page]{color:#ffdf8e;background:#ffffff0b;text-shadow:0 0 0.875rem #ffc95d55}
  .original-header #main-nav>a[aria-current=page]::before{opacity:1;transform:scale(1.65);box-shadow:0 0 0.6875rem #ffd875,0 0 1.25rem #f4b73f73}
  .original-header #main-nav>.language-link{font-size:0.625rem;letter-spacing:.055em;color:#dce3f5}
  .original-header #main-nav .nav-social{gap:0.375rem;margin-left:0.125rem;padding-left:0.5625rem;border-left:0.0625rem solid #f5d68238}
  .original-header #main-nav .nav-social a{width:1.8125rem;height:1.8125rem;border:0.0625rem solid #f4d4812b;border-radius:50%;color:#ecf0fa;background:#ffffff05;transition:color .35s ease,border-color .35s ease,background .35s ease,box-shadow .35s ease,transform .35s ease}
  .original-header #main-nav .nav-social a:hover,.original-header #main-nav .nav-social a:focus-visible{color:#ffdc83;border-color:#f3cb676b;background:#f6cf6810;box-shadow:0 0 1.0625rem #f7c75c2d;transform:translateY(-0.0625rem);outline:0}
  .original-header #main-nav .nav-dropdown{left:-0.9375rem;top:calc(100% + 0.75rem);padding:0.625rem;border:0.0625rem solid #f3ce7442;border-radius:1rem;background:linear-gradient(150deg,#111f4ff7,#091538f5);box-shadow:inset 0 0.0625rem #ffffff12,0 1.375rem 3.4375rem #02071d8a;backdrop-filter:blur(1.25rem) saturate(1.15)}
  .original-header #main-nav .nav-dropdown::before{content:'';position:absolute;left:1.875rem;top:-0.3125rem;width:0.5625rem;height:0.5625rem;transform:rotate(45deg);border-left:0.0625rem solid #f3ce7442;border-top:0.0625rem solid #f3ce7442;background:#111f4f}
  .original-header #main-nav .nav-group:last-of-type .nav-dropdown::before{left:auto;right:1.75rem}
  .original-header #main-nav .nav-dropdown>a,.original-header #main-nav .nav-subgroup>a{position:relative;padding:0.625rem 0.75rem 0.625rem 1.5625rem;border-radius:0.5625rem;color:#e9edf8;transition:color .35s ease,background .35s ease,padding-left .35s ease}
  .original-header #main-nav .nav-dropdown>a::before,.original-header #main-nav .nav-subgroup>a::before{content:'';position:absolute;left:0.75rem;top:50%;width:0.25rem;height:0.25rem;border-radius:50%;background:#e9bd59;box-shadow:0 0 0.5rem #f5cb6d;transform:translateY(-50%);opacity:.58}
  .original-header #main-nav .nav-dropdown a:hover,.original-header #main-nav .nav-dropdown a:focus-visible{padding-left:1.75rem;color:#ffe5a2;background:linear-gradient(90deg,#f5ca6514,transparent);outline:0}
  .original-header #main-nav .nav-subgroup{border-left-color:#eecb713b}
}

@media(max-width:1100px){
  .original-header #main-nav{background:linear-gradient(155deg,#111f50fa,#091538fa);border-color:#f1cc7240;box-shadow:inset 0 0.0625rem #ffffff14,0 1.25rem 3.4375rem #02071d85;backdrop-filter:blur(1.25rem) saturate(1.15)}
  .original-header #main-nav>a,.original-header #main-nav>.nav-group>summary{position:relative;color:#f1eee7;border-bottom:0.0625rem solid #ffffff0b}
  .original-header #main-nav>a::before,.original-header #main-nav>.nav-group>summary::before{content:'';display:inline-block;width:0.3125rem;height:0.3125rem;margin-right:0.6875rem;border-radius:50%;background:#edbd58;box-shadow:0 0 0.5625rem #f7cc68;transform:none}
  .original-header #main-nav>a[aria-current=page]{color:#ffdc82}
  .original-header #main-nav>.nav-group[open]>summary::before{transform:scale(1.45)}
  .original-header #main-nav .nav-dropdown{background:#ffffff06;border:0.0625rem solid #f4d47b1c}
  .original-header #main-nav .nav-dropdown>a,.original-header #main-nav .nav-subgroup>a{color:#dfe5f4}
  .original-header #main-nav .nav-social a{width:2.25rem;height:2.25rem;border:0.0625rem solid #f1cd7338;border-radius:50%;background:#ffffff06}
}

/* FAQ keeps its original typography and rules; motion is the only decoration. */
.faq-list{interpolate-size:allow-keywords}
.faq-list details{position:relative;overflow:clip}
.faq-list summary{position:relative;overflow:hidden;transition:color .48s ease,text-shadow .48s ease}
.faq-list summary::before{content:'';position:absolute;left:-36%;bottom:0;width:34%;height:0.0625rem;background:linear-gradient(90deg,transparent,#f6c760,#fff2b7,transparent);box-shadow:0 0 0.6875rem #f5c75d66;transform:skewX(-24deg);opacity:0;transition:left .85s cubic-bezier(.16,1,.3,1),opacity .25s ease;pointer-events:none}
.faq-list details:hover summary::before,.faq-list details:focus-within summary::before{left:106%;opacity:1}
.faq-list details:hover summary,.faq-list details:focus-within summary,.faq-list details[open] summary{color:#fff8e7;text-shadow:0 0 1.0625rem #f6c76024}
.faq-list summary>span{transition:color .45s ease,text-shadow .45s ease,transform .65s cubic-bezier(.16,1,.3,1)}
.faq-list details:hover summary>span,.faq-list details:focus-within summary>span,.faq-list details[open] summary>span{color:#ffda7d;text-shadow:0 0 0.75rem #f6c7607a;transform:translateX(0.1875rem)}
.faq-list summary>i{transition:transform .6s cubic-bezier(.16,1,.3,1)}
.faq-list summary>i::before,.faq-list summary>i::after{transition:transform .45s cubic-bezier(.16,1,.3,1),background .4s ease}
.faq-list details:hover summary>i::before,.faq-list details:hover summary>i::after,.faq-list details:focus-within summary>i::before,.faq-list details:focus-within summary>i::after,.faq-list details[open] summary>i::before,.faq-list details[open] summary>i::after{background:#f1d28a}
.faq-list details:hover summary>i,.faq-list details:focus-within summary>i{transform:translateX(-0.1875rem)}
.faq-list details[open] summary>i{transform:rotate(180deg)}
.faq-list details[open] summary>i::after{transform:rotate(0)}
.faq-list details::details-content{block-size:0;opacity:0;overflow:hidden;transition:block-size .65s cubic-bezier(.16,1,.3,1),opacity .38s ease,content-visibility .65s allow-discrete}
.faq-list details[open]::details-content{block-size:auto;opacity:1}
.faq-list details>p{animation:faq-copy-flow .65s cubic-bezier(.16,1,.3,1) both}
@keyframes faq-copy-flow{from{opacity:0;transform:translateY(-0.5rem);filter:blur(0.125rem)}to{opacity:1;transform:translateY(0);filter:blur(0)}}
@media(prefers-reduced-motion:reduce){.faq-list summary,.faq-list summary::before,.faq-list summary>span,.faq-list summary>i,.faq-list summary>i::before,.faq-list summary>i::after,.faq-list details::details-content{transition:none}.faq-list details>p{animation:none}}

/* Keep the desktop navigation quiet; only tiny lanterns carry the festival motif. */
@media(min-width:68.8125rem){
  .original-header #main-nav{gap:0.875rem;padding:0;border:0;border-radius:0;background:none;box-shadow:none;backdrop-filter:none}
  .original-header #main-nav::before{display:none}
  .original-header #main-nav>a,.original-header #main-nav>.nav-group>summary{min-height:0;padding:0.625rem 0;border-radius:0;background:none;color:#f0f1f7;font-size:0.75rem;letter-spacing:0;text-shadow:none}
  .original-header #main-nav>a::before,.original-header #main-nav>.nav-group>summary::before{width:0.375rem;height:0.5625rem;margin-right:0.4375rem;border-radius:0.125rem 0.125rem 0.1875rem 0.1875rem;clip-path:polygon(22% 0,78% 0,100% 20%,88% 100%,12% 100%,0 20%);background:linear-gradient(180deg,#fff2b3 0%,#f4c65f 38%,#d8903e 100%);box-shadow:0 0 0.4375rem #f5c75e8c;opacity:.64;transform:none}
  .original-header #main-nav>a:hover,.original-header #main-nav>a:focus-visible,.original-header #main-nav>.nav-group>summary:hover,.original-header #main-nav>.nav-group>summary:focus-visible,.original-header #main-nav>.nav-group[open]>summary{background:none;color:#ffe1ab;text-shadow:0 0 0.875rem #ffc95d4a}
  .original-header #main-nav>a:hover::before,.original-header #main-nav>a:focus-visible::before,.original-header #main-nav>.nav-group>summary:hover::before,.original-header #main-nav>.nav-group>summary:focus-visible::before,.original-header #main-nav>.nav-group[open]>summary::before{opacity:1;transform:translateY(-0.0625rem) scale(1.12);box-shadow:0 0 0.625rem #ffd875,0 0 1.0625rem #f4b73f78}
  .original-header #main-nav>a[aria-current=page]{background:none;color:#ffdf8e;text-shadow:0 0 0.75rem #ffc95d3d}
  .original-header #main-nav>a[aria-current=page]::before{opacity:1;transform:none;box-shadow:0 0 0.5625rem #ffd875,0 0 0.9375rem #f4b73f65}
  .original-header #main-nav .nav-social{gap:1.0625rem;margin-left:0;padding-left:1rem;border-left:0.0625rem solid #d7d9e945}
  .original-header #main-nav .nav-social a{width:1.25rem;height:1.75rem;border:0;border-radius:0;background:none;box-shadow:none}
  .original-header #main-nav .nav-social a:hover,.original-header #main-nav .nav-social a:focus-visible{border:0;background:none;box-shadow:none;color:#ffdc83;transform:translateY(-0.0625rem)}
  .original-header #main-nav .nav-dropdown>a::before,.original-header #main-nav .nav-subgroup>a::before{width:0.375rem;height:0.5625rem;border-radius:0.125rem 0.125rem 0.1875rem 0.1875rem;clip-path:polygon(22% 0,78% 0,100% 20%,88% 100%,12% 100%,0 20%);background:linear-gradient(180deg,#fff2b3,#e4a345);box-shadow:0 0 0.4375rem #f5cb6d99}
}
@media(min-width:1101px) and (max-width:1350px){.original-header #main-nav{gap:0.5625rem}.original-header #main-nav>a,.original-header #main-nav>.nav-group>summary{font-size:0.625rem}.original-header #main-nav .nav-social{gap:0.5rem;padding-left:0.5625rem}}
@media(max-width:1100px){
  .original-header #main-nav>a::before,.original-header #main-nav>.nav-group>summary::before{width:0.4375rem;height:0.6875rem;border-radius:0.125rem 0.125rem 0.1875rem 0.1875rem;clip-path:polygon(22% 0,78% 0,100% 20%,88% 100%,12% 100%,0 20%);background:linear-gradient(180deg,#fff2b3,#e39c43);box-shadow:0 0 0.5rem #f7cc6899}
}

.join-section::before{content:none}

/* Schedule tickets: seasonal color, grounded in the same Yokohama night sky. */
.schedule-tabs .season-tab{color:#f6f1e8;border-color:color-mix(in srgb,var(--season-accent) 48%,#566185);border-top-color:var(--season-accent);background:radial-gradient(ellipse at 88% 15%,color-mix(in srgb,var(--season-accent) 14%,transparent) 0 13%,transparent 14%),linear-gradient(145deg,#1c2a5c 0%,#111b45 100%);box-shadow:0 0.9375rem 2.125rem #0308244d,inset 0 0.0625rem #ffffff10}
.schedule-tabs .season-tab:nth-child(2){background:radial-gradient(circle at 88% 18%,#f3c45a1f 0 7%,transparent 7.5%),repeating-radial-gradient(ellipse at 100% 92%,transparent 0 1.0625rem,#49aeb416 1.125rem 1.25rem,transparent 1.3125rem 1.875rem),linear-gradient(145deg,#193058 0%,#101d46 100%)}
.schedule-tabs .season-tab:nth-child(3){background:radial-gradient(ellipse at 88% 17%,#d8964f22 0 8%,transparent 8.5%),radial-gradient(ellipse at 78% 29%,#ab653d1b 0 7%,transparent 7.5%),linear-gradient(145deg,#2b294e 0%,#151b42 100%)}
.schedule-tabs .season-tab::before,.schedule-tabs .season-tab::after,.schedule-tabs .season-tab[aria-selected=true]::before,.schedule-tabs .season-tab[aria-selected=true]::after{background:#18204e;border:0;box-shadow:inset 0 0 0 0.0625rem #7783a878}
.schedule-tabs .season-tab .season-top{color:#c7cde0}
.schedule-tabs .season-tab .season-top i{color:#e2deea;background:color-mix(in srgb,var(--season-accent) 18%,#111b45);border:0.0625rem solid color-mix(in srgb,var(--season-accent) 36%,transparent)}
.schedule-tabs .season-tab>b{color:#fff9eb;text-shadow:0 0.125rem 1.125rem #02061752}
.schedule-tabs .season-tab b>span{color:color-mix(in srgb,var(--season-accent) 72%,#e8def1)}
.schedule-tabs .season-tab>span:nth-last-child(2){color:#c9d0e3}
.schedule-tabs .season-tab .season-star{color:var(--season-accent);opacity:.58;filter:drop-shadow(0 0 0.5rem color-mix(in srgb,var(--season-accent) 60%,transparent))}
.schedule-tabs .season-tab:hover{border-color:color-mix(in srgb,var(--season-accent) 72%,#7180a9);box-shadow:0 1.25rem 2.625rem #02071e75,0 0 1.5rem color-mix(in srgb,var(--season-accent) 12%,transparent),inset 0 0.0625rem #ffffff14}
.schedule-tabs .season-tab[aria-selected=true],.schedule-tabs .season-tab[aria-selected=true]:hover{color:#fffaf0;border-color:var(--season-accent);border-top-color:var(--season-accent);background:radial-gradient(circle at 84% 18%,color-mix(in srgb,var(--season-accent) 28%,transparent),transparent 29%),linear-gradient(145deg,color-mix(in srgb,var(--season-accent) 16%,#233162),#111b45 74%);box-shadow:0 1.5rem 3.4375rem #02071e85,0 0 0 0.0625rem color-mix(in srgb,var(--season-accent) 38%,transparent),0 0 2.125rem color-mix(in srgb,var(--season-accent) 18%,transparent),inset 0 0.0625rem #ffffff1c}
.schedule-tabs .season-tab:nth-child(2)[aria-selected=true],.schedule-tabs .season-tab:nth-child(2)[aria-selected=true]:hover{background:radial-gradient(circle at 87% 17%,#f3c45a2b 0 7%,transparent 7.5%),repeating-radial-gradient(ellipse at 100% 92%,transparent 0 1.0625rem,#49aeb422 1.125rem 1.25rem,transparent 1.3125rem 1.875rem),linear-gradient(145deg,#1e455f,#111b45 76%)}
.schedule-tabs .season-tab:nth-child(3)[aria-selected=true],.schedule-tabs .season-tab:nth-child(3)[aria-selected=true]:hover{background:radial-gradient(ellipse at 88% 17%,#d8964f38 0 8%,transparent 8.5%),radial-gradient(ellipse at 78% 29%,#ab653d29 0 7%,transparent 7.5%),linear-gradient(145deg,#47334d,#141b43 76%)}
.schedule-tabs .season-tab[aria-selected=true] .season-top{color:#f2edf5}
.schedule-tabs .season-tab[aria-selected=true] .season-top i{color:#fff6e7;background:color-mix(in srgb,var(--season-accent) 25%,#111b45);border-color:color-mix(in srgb,var(--season-accent) 58%,transparent)}
.schedule-tabs .season-tab[aria-selected=true] b>span{color:var(--season-accent)}

.season-panel{color:#f7f2e9;border-color:color-mix(in srgb,var(--panel-accent) 46%,#526087);background:radial-gradient(ellipse at 92% 13%,color-mix(in srgb,var(--panel-accent) 16%,transparent) 0 11%,transparent 12%),linear-gradient(145deg,#1b2959f2,#101a45f5);box-shadow:0 1.875rem 4.5rem #02071f66,0 0.5rem 2.25rem color-mix(in srgb,var(--panel-accent) 11%,transparent),inset 0 0.0625rem #ffffff12;backdrop-filter:blur(0.75rem)}
.season-panel[data-active-season="1"]{background:radial-gradient(circle at 91% 13%,#f0ba4d25 0 6%,transparent 6.5%),repeating-radial-gradient(ellipse at 102% 89%,transparent 0 1.5625rem,#49aeb417 1.625rem 1.75rem,transparent 1.8125rem 2.625rem),linear-gradient(145deg,#183553f2,#101a45f5)}
.season-panel[data-active-season="2"]{background:radial-gradient(ellipse at 92% 14%,#d58b4a2e 0 10%,transparent 10.5%),radial-gradient(ellipse at 83% 27%,#9f5d3822 0 8%,transparent 8.5%),linear-gradient(145deg,#352948f2,#101a45f5)}
.season-panel::after{color:color-mix(in srgb,var(--panel-accent) 72%,#f4e7ca);opacity:.5}
.season-panel .outlined-label{color:#fff5e8;border-color:color-mix(in srgb,var(--panel-accent) 58%,transparent);background:color-mix(in srgb,var(--panel-accent) 18%,#111b45)}
.season-panel .season-intro h3{color:#fff9ed}
.season-panel .season-intro>p{color:#cbd2e4}
.season-panel .store-count>strong{color:color-mix(in srgb,var(--panel-accent) 64%,#fff1c8);text-shadow:0 0.25rem 1.375rem #02061766}
.season-panel .store-count>span{color:#f1edf0}
.season-panel .store-count small{color:#aeb9d2}
.season-panel .event-details>div{border-color:#9aa6c729}
.season-panel .event-details dt{color:#9eabc8}
.season-panel .event-details dd{color:#f3f0e9}
.season-panel .event-details dd small{color:#aeb8cf}
@media(max-width:600px){.schedule-tabs .season-tab{box-shadow:0 0.625rem 1.5rem #0308244d}.season-panel{backdrop-filter:blur(0.5rem)}}
/* Program dialog: lantern light gathers before the story appears. */
.program-dialog {
  opacity: 0;
  transform: translate3d(0, 2.125rem, 0) scale(.965);
  filter: blur(0.4375rem);
  transform-origin: 50% 42%;
  border-color: #f2cc6f4a;
  box-shadow:
    0 2.125rem 7.5rem #010516a8,
    0 0 3rem #f2bd4a17,
    inset 0 0.0625rem #ffffff14;
  transition:
    opacity .42s ease,
    transform .68s cubic-bezier(.16, 1, .3, 1),
    filter .52s ease,
    display .55s allow-discrete,
    overlay .55s allow-discrete;
}

.program-dialog[open] {
  opacity: 1;
  transform: translate3d(0, 0, 0) scale(1);
  filter: blur(0);
}

.program-dialog::backdrop {
  opacity: 0;
  background: #02061700;
  backdrop-filter: blur(0);
  transition:
    opacity .5s ease,
    background .5s ease,
    backdrop-filter .65s ease,
    display .55s allow-discrete,
    overlay .55s allow-discrete;
}

.program-dialog[open]::backdrop {
  opacity: 1;
  background:
    radial-gradient(circle at 50% 35%, #243a7b52 0, #10183e66 30%, #020617dc 76%);
  backdrop-filter: blur(0.5625rem) saturate(.82);
}

@starting-style {
  .program-dialog[open] {
    opacity: 0;
    transform: translate3d(0, 2.125rem, 0) scale(.965);
    filter: blur(0.4375rem);
  }

  .program-dialog[open]::backdrop {
    opacity: 0;
    background: #02061700;
    backdrop-filter: blur(0);
  }
}

.program-dialog[open] > img {
  animation: program-image-enter .9s cubic-bezier(.16, 1, .3, 1) both;
}

.program-dialog[open] .dialog-copy > * {
  animation: program-copy-enter .72s cubic-bezier(.16, 1, .3, 1) both;
}

.program-dialog[open] .dialog-copy > :nth-child(1) { animation-delay: .12s; }
.program-dialog[open] .dialog-copy > :nth-child(2) { animation-delay: .17s; }
.program-dialog[open] .dialog-copy > :nth-child(3) { animation-delay: .22s; }
.program-dialog[open] .dialog-copy > :nth-child(4) { animation-delay: .27s; }
.program-dialog[open] .dialog-copy > :nth-child(5) { animation-delay: .32s; }

.program-dialog[open] .dialog-close {
  animation: program-close-enter .64s .2s cubic-bezier(.16, 1, .3, 1) both;
}

@keyframes program-image-enter {
  from {
    opacity: .25;
    transform: translateY(-0.5rem) scale(1.06);
    filter: brightness(.66) blur(0.25rem);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
    filter: brightness(1) blur(0);
  }
}

@keyframes program-copy-enter {
  from {
    opacity: 0;
    transform: translateY(0.9375rem);
    filter: blur(0.1875rem);
  }
  to {
    opacity: 1;
    transform: translateY(0);
    filter: blur(0);
  }
}

@keyframes program-close-enter {
  from { opacity: 0; transform: rotate(-18deg) scale(.75); }
  to { opacity: 1; transform: rotate(0) scale(1); }
}

@media (prefers-reduced-motion: reduce) {
  .program-dialog,
  .program-dialog::backdrop {
    transition: none;
  }

  .program-dialog[open] > img,
  .program-dialog[open] .dialog-copy > *,
  .program-dialog[open] .dialog-close {
    animation: none;
  }
}

/* Venue map dialog */
.map-dialog-trigger {
  font-family: inherit;
  cursor: pointer;
}

.venue-map-dialog {
  width: min(56.25rem, calc(100% - 2.5rem));
  background:
    radial-gradient(circle at 86% 5%, #f2c76816, transparent 30%),
    linear-gradient(145deg, #1a2858 0%, #111b43 100%);
}

.venue-map-visual {
  position: relative;
  height: 22.5rem;
  overflow: hidden;
  background: #dfe7da;
  isolation: isolate;
}

.venue-map-visual::after {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background:
    linear-gradient(180deg, #0d17351f 45%, #111b4396 100%),
    radial-gradient(circle at 72% 25%, #f4ca680f, transparent 36%);
}

.venue-map-art {
  display: block;
  width: 100%;
  height: 100%;
}

.map-streets path {
  stroke: #ffffff;
  stroke-width: 11;
  stroke-linecap: round;
  opacity: .78;
}

.map-route {
  stroke: #d99b35;
  stroke-width: 5;
  stroke-linecap: round;
  stroke-dasharray: 4 13;
  animation: map-route-flow 1.8s linear infinite;
}

.map-station-dot {
  fill: #20305d;
  stroke: #ffffff;
  stroke-width: 4;
}

.map-venue-dot {
  fill: #efbd55;
  stroke: #fff5d4;
  stroke-width: 5;
  filter: drop-shadow(0 0 0.625rem #e9b84f);
}

.map-labels text {
  fill: #3a465f;
  font: 700 0.75rem var(--body);
  letter-spacing: .04em;
}

.map-labels .map-venue-name {
  fill: #172752;
  font-size: 1.0625rem;
}

.map-labels .map-water-name {
  fill: #eff8f9b8;
  font: 600 0.6875rem var(--latin);
  letter-spacing: .2em;
}

.venue-map-pin {
  position: absolute;
  z-index: 2;
  left: 69%;
  top: 27%;
  display: grid;
  place-items: center;
  width: 3.625rem;
  height: 3.625rem;
  transform: translate(-50%, -76%);
  border: 0.0625rem solid #fff0ba99;
  border-radius: 50% 50% 50% 0.5rem;
  rotate: -45deg;
  color: #14204d;
  background: linear-gradient(145deg, #ffe699, #efb84f);
  box-shadow: 0 0.5rem 1.75rem #06102c70, 0 0 0 0.5rem #f3c65e25, 0 0 2.125rem #f6ca6199;
}

.venue-map-pin .icon {
  width: 1.5625rem;
  height: 1.5625rem;
  rotate: 45deg;
}

.venue-map-label {
  position: absolute;
  z-index: 2;
  left: 1.5rem;
  bottom: 1.25rem;
  color: #fff7e8;
  font: 600 0.75rem/1.4 var(--latin);
  letter-spacing: .16em;
  text-shadow: 0 0.125rem 0.75rem #020617;
}

.venue-map-label small {
  color: #f2ca70;
  font-size: 0.5rem;
  letter-spacing: .24em;
}

.venue-map-copy {
  display: grid;
  grid-template-columns: minmax(0, .9fr) minmax(20.625rem, 1.1fr);
  gap: 0 3rem;
  padding-top: 2.125rem;
}

.venue-map-copy > .eyebrow,
.venue-map-copy > h2,
.venue-map-copy > p:not(.venue-map-note) {
  grid-column: 1;
}

.venue-map-copy > h2 {
  line-height: 1.45;
}

.venue-map-copy > p:not(.eyebrow):not(.venue-map-note) {
  color: #d7ddec;
  font-size: 0.8125rem;
  line-height: 2;
}

.venue-map-details {
  grid-column: 2;
  grid-row: 1 / span 4;
  margin: 0;
  border-top: 0.0625rem solid #ffffff1d;
}

.venue-map-details > div {
  display: grid;
  grid-template-columns: 5.125rem 1fr;
  gap: 1.125rem;
  padding: 0.875rem 0;
  border-bottom: 0.0625rem solid #ffffff1d;
}

.venue-map-details dt {
  color: #9faaca;
  font-size: 0.625rem;
  letter-spacing: .08em;
}

.venue-map-details dd {
  margin: 0;
  color: #f6f2ea;
  font-size: 0.8125rem;
  font-weight: 700;
  line-height: 1.7;
}

.venue-map-note {
  grid-column: 1 / -1;
  margin-top: 1.75rem;
  padding: 0.75rem 1rem;
  border: 0.0625rem solid #edc96f35;
  border-radius: 0.625rem;
  color: #c6cee3 !important;
  background: #ffffff07;
  font-size: 0.625rem !important;
  line-height: 1.8 !important;
}

.program-dialog[open] .venue-map-visual {
  animation: venue-map-enter .9s cubic-bezier(.16, 1, .3, 1) both;
}

@keyframes venue-map-enter {
  from { opacity: .3; transform: scale(1.045); filter: brightness(.7) blur(0.25rem); }
  to { opacity: 1; transform: scale(1); filter: brightness(1) blur(0); }
}

@keyframes map-route-flow {
  to { stroke-dashoffset: -34; }
}

@media (max-width: 700px) {
  .venue-map-dialog { width: calc(100% - 1.5rem); }
  .venue-map-visual { height: 16.5625rem; }
  .venue-map-pin { width: 3rem; height: 3rem; }
  .venue-map-pin .icon { width: 1.3125rem; height: 1.3125rem; }
  .venue-map-label { left: 1.125rem; bottom: 1rem; font-size: 0.625rem; }
  .venue-map-copy { display: block; padding: 1.5rem; }
  .venue-map-copy > p:not(.eyebrow):not(.venue-map-note) { font-size: 0.75rem; }
  .venue-map-details { margin-top: 1.5rem; }
  .venue-map-details > div { grid-template-columns: 4.5rem 1fr; gap: 0.75rem; padding: 0.75rem 0; }
  .venue-map-details dd { font-size: 0.75rem; }
}

/* Concept symbols: three glowing circles connected across the night. */
.concept-tags {
  justify-content: flex-start;
  gap: 0.75rem;
}

.concept-tags > span {
  position: relative;
  display: flex;
  flex: 0 0 6.375rem;
  width: 6.375rem;
  height: 6.375rem;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 0.125rem;
  border: 0.0625rem solid #f4d58480;
  border-radius: 50%;
  color: #fff7e7;
  background:
    radial-gradient(circle at 50% 30%, #f4c75a16, transparent 48%),
    #ffffff03;
  box-shadow:
    inset 0 0 1.5rem #f2c3580a,
    0 0 0 0.3125rem #f3ca6207,
    0 0.75rem 2rem #02071e35;
  transition:
    transform .65s cubic-bezier(.16, 1, .3, 1),
    border-color .45s ease,
    box-shadow .55s ease,
    background .45s ease;
}

.concept-tags > span::before {
  content: '';
  position: absolute;
  inset: 0.4375rem;
  border-top: 0.0625rem solid #fff0bd80;
  border-right: 0.0625rem solid transparent;
  border-bottom: 0.0625rem solid #7788be35;
  border-left: 0.0625rem solid transparent;
  border-radius: 50%;
  transform: rotate(-28deg);
  transition: transform .9s cubic-bezier(.16, 1, .3, 1), border-color .45s ease;
}

.concept-tags > span:hover {
  transform: translateY(-0.3125rem);
  border-color: #ffe4a5c7;
  background:
    radial-gradient(circle at 50% 30%, #f4c75a26, transparent 52%),
    #ffffff06;
  box-shadow:
    inset 0 0 1.75rem #f2c35812,
    0 0 0 0.375rem #f3ca620c,
    0 1.125rem 2.375rem #02071e52,
    0 0 1.75rem #efbd4a1e;
}

.concept-tags > span:hover::before { transform: rotate(28deg); }

.concept-tags small {
  display: block;
  color: #c8d0e4;
  font-size: 0.5rem;
  letter-spacing: .13em;
  line-height: 1.2;
}

.concept-tags > i {
  position: relative;
  color: #f2cc72a8;
  font: 400 0.9375rem/1 var(--latin);
  text-shadow: 0 0 0.75rem #f1c65c55;
}

.concept-tags > i::before,
.concept-tags > i::after {
  content: '';
  position: absolute;
  top: 50%;
  width: 0.5rem;
  height: 0.0625rem;
  background: linear-gradient(90deg, transparent, #f0ca6b82);
}

.concept-tags > i::before { right: calc(100% + 0.1875rem); }
.concept-tags > i::after { left: calc(100% + 0.1875rem); transform: scaleX(-1); }

@media (max-width: 600px) {
  .concept-tags {
    justify-content: center;
    gap: 0.3125rem;
    margin-inline: -0.3125rem;
  }
  .concept-tags > span {
    flex: 0 0 5.5rem;
    width: 5.5rem;
    height: 5.5rem;
    flex-direction: column;
    gap: 0.1875rem;
    font-size: 1.25rem;
  }
  .concept-tags small {
    display: block;
    font-size: 0.40625rem;
    line-height: 1;
    letter-spacing: .11em;
  }
  .concept-tags > i { font-size: 0.6875rem; }
  .concept-tags > i::before,
  .concept-tags > i::after { width: 0.25rem; }
}

@media (prefers-reduced-motion: reduce) {
  .concept-tags > span,
  .concept-tags > span::before { transition: none; }
}

@media (prefers-reduced-motion: reduce) {
  .program-dialog[open] .venue-map-visual { animation: none; }
  .map-route { animation: none; }
}

/* A lively food promenade before the three-season schedule. */
.food-ribbon-divider {
  position: relative;
  z-index: 2;
  height: 21.25rem;
  padding: 2.125rem 0 2.875rem;
  overflow: hidden;
  background: #18204e;
  isolation: isolate;
}

.food-ribbon-divider::before,
.food-ribbon-divider::after {
  content: '';
  position: absolute;
  z-index: 4;
  pointer-events: none;
}

.food-ribbon-divider::before {
  inset: 0;
  background:
    linear-gradient(90deg, #18204e 0, transparent 10%, transparent 90%, #18204e 100%),
    linear-gradient(180deg, #18204e 0, transparent 18%, transparent 76%, #18204e 100%);
}

.food-ribbon-divider::after {
  display: none;
}

.food-ribbon-track {
  display: flex;
  align-items: center;
  gap: 1.5rem;
  width: max-content;
  height: 15.9375rem;
  animation: food-ribbon-flow 42s linear infinite;
  will-change: transform;
}

.food-ribbon-set {
  display: flex;
  align-items: center;
  gap: 1.5rem;
  height: 100%;
}

.food-ribbon-item {
  --offset: 0rem;
  --tilt: 0deg;
  position: relative;
  flex: none;
  width: 13.125rem;
  height: 11.25rem;
  margin: 0;
  overflow: hidden;
  transform: translateY(var(--offset)) rotate(var(--tilt));
  border: 0.0625rem solid #ffe6a04a;
  border-radius: 1.0625rem;
  background: #18234e;
  box-shadow: 0 1.125rem 2.8125rem #02071e66, 0 0 1.75rem #f3be4a0d;
  transition: transform .65s cubic-bezier(.16, 1, .3, 1), border-color .45s ease, box-shadow .55s ease;
}

.food-ribbon-item:nth-child(odd) { --tilt: -1.4deg; }
.food-ribbon-item:nth-child(even) { --tilt: 1.1deg; }
.food-ribbon-item--tall { width: 11.25rem; height: 14.75rem; --offset: 0.25rem; border-radius: 4.375rem 4.375rem 1.0625rem 1.0625rem; }
.food-ribbon-item--wide { width: 17.375rem; height: 10.75rem; --offset: -1.3125rem; }
.food-ribbon-item--small { width: 9.875rem; height: 9.25rem; --offset: 2.125rem; border-radius: 50%; }
.food-ribbon-item--large { width: 14.375rem; height: 13.625rem; --offset: 0.625rem; border-radius: 1.375rem 4.375rem 1.375rem 1.375rem; }
.food-ribbon-item--low { --offset: 2.0625rem; }
.food-ribbon-item--high { --offset: -1.75rem; }

.food-ribbon-item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: saturate(.9) brightness(.85);
  transition: transform .9s cubic-bezier(.16, 1, .3, 1), filter .7s ease;
}

.food-ribbon-item::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, transparent 50%, #09102fb5 100%);
  transition: opacity .5s ease;
}

.food-ribbon-item > span {
  position: absolute;
  z-index: 2;
  left: 1.0625rem;
  bottom: 0.8125rem;
  color: #fff6df;
  font: 600 0.5625rem/1 var(--latin);
  letter-spacing: .19em;
  text-shadow: 0 0.125rem 0.75rem #030718;
}

.food-ribbon-item:hover {
  z-index: 3;
  transform: translateY(calc(var(--offset) - 0.5625rem)) rotate(0deg) scale(1.045);
  border-color: #ffe6a0b8;
  box-shadow: 0 1.625rem 3.75rem #02071e8c, 0 0 2.25rem #f3be4a30;
}

.food-ribbon-item:hover img {
  transform: scale(1.08);
  filter: saturate(1.13) brightness(1.04);
}

.food-ribbon-item:hover::after { opacity: .72; }

@keyframes food-ribbon-flow {
  to { transform: translateX(calc(-50% - 0.75rem)); }
}

body.motion-paused .food-ribbon-track,
body.tab-hidden .food-ribbon-track {
  animation-play-state: paused;
}

@media (max-width: 700px) {
  .food-ribbon-divider { height: 15.625rem; padding: 1.5625rem 0 2.1875rem; }
  .food-ribbon-track, .food-ribbon-set { gap: 0.9375rem; }
  .food-ribbon-track { height: 11.5rem; animation-duration: 36s; }
  .food-ribbon-item { width: 9.25rem; height: 7.9375rem; border-radius: 0.8125rem; }
  .food-ribbon-item--tall { width: 7.875rem; height: 10.5625rem; border-radius: 3rem 3rem 0.8125rem 0.8125rem; }
  .food-ribbon-item--wide { width: 12.25rem; height: 7.625rem; --offset: -0.75rem; }
  .food-ribbon-item--small { width: 6.75rem; height: 6.5625rem; --offset: 1.4375rem; border-radius: 50%; }
  .food-ribbon-item--large { width: 9.875rem; height: 9.75rem; border-radius: 0.9375rem 3rem 0.9375rem 0.9375rem; }
  .food-ribbon-item--low { --offset: 1.375rem; }
  .food-ribbon-item--high { --offset: -1.125rem; }
  .food-ribbon-item > span { left: 0.75rem; bottom: 0.625rem; font-size: 0.4375rem; }
  .food-ribbon-divider::after { bottom: 0.875rem; }
  @keyframes food-ribbon-flow { to { transform: translateX(calc(-50% - 0.46875rem)); } }
}

@media (prefers-reduced-motion: reduce) {
  .food-ribbon-track { animation: none; transform: translateX(-8%); }
}

/* Mobile menu: the night veil opens softly and the lantern links follow. */
@media (max-width: 68.75rem) {
  .original-header .menu-toggle {
    position: relative;
    overflow: visible;
    transition:
      border-color .45s ease,
      background .45s ease,
      box-shadow .55s ease,
      transform .45s cubic-bezier(.16, 1, .3, 1);
  }

  .original-header .menu-toggle::before {
    content: '';
    position: absolute;
    inset: -0.4375rem;
    z-index: -1;
    border-radius: 50%;
    background: radial-gradient(circle, #f4c85b35, transparent 68%);
    opacity: 0;
    transform: scale(.72);
    transition: opacity .5s ease, transform .65s cubic-bezier(.16, 1, .3, 1);
  }

  .original-header .menu-toggle span {
    transform-origin: center;
    transition:
      transform .62s cubic-bezier(.16, 1, .3, 1),
      width .42s ease,
      background .42s ease,
      box-shadow .42s ease;
  }

  .original-header .menu-toggle[aria-expanded=true] {
    border-color: #f3d4819c;
    background: #f2ca6810;
    box-shadow: 0 0 1.375rem #f0bd4d2c, inset 0 0 0 0.0625rem #fff5d021;
    transform: rotate(90deg);
  }

  .original-header .menu-toggle[aria-expanded=true]::before {
    opacity: 1;
    transform: scale(1);
  }

  .original-header .menu-toggle[aria-expanded=true] span {
    width: 1.25rem;
    background: #ffe39a;
    box-shadow: 0 0 0.5625rem #f6c85d8c;
  }

  .original-header #main-nav {
    display: flex !important;
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    isolation: isolate;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transform: translate3d(0, -0.9375rem, 0) scale(.975);
    transform-origin: 90% 0;
    filter: blur(0.5rem);
    clip-path: inset(0 0 100% 0 round 1.0625rem);
    transition:
      opacity .34s ease,
      transform .52s cubic-bezier(.4, 0, 1, 1),
      filter .38s ease,
      clip-path .52s cubic-bezier(.4, 0, 1, 1),
      visibility 0s linear .52s;
  }

  .original-header #main-nav::after {
    content: '';
    position: absolute;
    inset: 0;
    z-index: -1;
    border-radius: inherit;
    pointer-events: none;
    opacity: 0;
    background:
      radial-gradient(circle at 88% 4%, #f8ce6730 0 2%, transparent 22%),
      radial-gradient(circle at 12% 92%, #6084d71f, transparent 31%);
    transition: opacity .8s .12s ease;
  }

  .original-header #main-nav.is-open {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transform: translate3d(0, 0, 0) scale(1);
    filter: blur(0);
    clip-path: inset(0 0 0 0 round 1.0625rem);
    transition:
      opacity .48s ease,
      transform .72s cubic-bezier(.16, 1, .3, 1),
      filter .55s ease,
      clip-path .78s cubic-bezier(.16, 1, .3, 1),
      visibility 0s;
  }

  .original-header #main-nav.is-open::after { opacity: 1; }

  .original-header #main-nav > * {
    position: relative;
    z-index: 1;
    opacity: 0;
    transform: translate3d(0, -0.5625rem, 0);
    filter: blur(0.1875rem);
    transition:
      opacity .2s ease,
      transform .3s ease,
      filter .25s ease;
  }

  .original-header #main-nav.is-open > * {
    opacity: 1;
    transform: translate3d(0, 0, 0);
    filter: blur(0);
    transition:
      opacity .48s ease,
      transform .68s cubic-bezier(.16, 1, .3, 1),
      filter .48s ease;
  }

  .original-header #main-nav.is-open > :nth-child(1) { transition-delay: .08s; }
  .original-header #main-nav.is-open > :nth-child(2) { transition-delay: .12s; }
  .original-header #main-nav.is-open > :nth-child(3) { transition-delay: .16s; }
  .original-header #main-nav.is-open > :nth-child(4) { transition-delay: .20s; }
  .original-header #main-nav.is-open > :nth-child(5) { transition-delay: .24s; }
  .original-header #main-nav.is-open > :nth-child(6) { transition-delay: .28s; }
  .original-header #main-nav.is-open > :nth-child(7) { transition-delay: .32s; }
  .original-header #main-nav.is-open > :nth-child(8) { transition-delay: .36s; }
  .original-header #main-nav.is-open > :nth-child(9) { transition-delay: .40s; }
  .original-header #main-nav.is-open > :nth-child(10) { transition-delay: .44s; }

  .original-header #main-nav > a,
  .original-header #main-nav > .nav-group > summary {
    transition: color .42s ease, text-shadow .42s ease, padding-left .48s cubic-bezier(.16, 1, .3, 1);
  }

  .original-header #main-nav > a:active,
  .original-header #main-nav > .nav-group > summary:active {
    padding-left: 0.625rem;
    color: #ffe39a;
    text-shadow: 0 0 0.875rem #f5c75d60;
  }
}

@media (prefers-reduced-motion: reduce) and (max-width: 1100px) {
  .original-header .menu-toggle,
  .original-header .menu-toggle::before,
  .original-header .menu-toggle span,
  .original-header #main-nav,
  .original-header #main-nav::after,
  .original-header #main-nav > * {
    transition: none !important;
    filter: none;
  }
}

/* Hang Japanese punctuation outside the measured line on phones. */
@media (max-width: 37.5rem) {
  .hero-content .hero-title-proposal { width: 100%; }
  .hero-title-proposal .hero-title-line {
    position: relative;
    display: inline-block;
  }
  .hero-title-proposal .hero-punctuation {
    position: absolute;
    left: 100%;
    top: 0;
    width: .78em;
    text-align: left;
  }
}

/* Food ribbon refinement: larger photographs, one quiet rounded-rectangle language. */
.food-ribbon-divider {
  height: 29.375rem;
  padding: 3rem 0 3.75rem;
}

.food-ribbon-track {
  height: 22.125rem;
  gap: 2.125rem;
}

.food-ribbon-set { gap: 2.125rem; }

.food-ribbon-item,
.food-ribbon-item--tall,
.food-ribbon-item--wide,
.food-ribbon-item--small,
.food-ribbon-item--large {
  border: 0;
  border-radius: 1.375rem;
}

.food-ribbon-item { width: 19.875rem; height: 16.5rem; }
.food-ribbon-item--tall { width: 17.375rem; height: 21.25rem; --offset: 0.25rem; }
.food-ribbon-item--wide { width: 25.75rem; height: 15.875rem; --offset: -1.9375rem; }
.food-ribbon-item--small { width: 16.125rem; height: 13.625rem; --offset: 3.1875rem; }
.food-ribbon-item--large { width: 21.875rem; height: 19.5rem; --offset: 0.8125rem; }
.food-ribbon-item--low { --offset: 3.125rem; }
.food-ribbon-item--high { --offset: -2.375rem; }

.food-ribbon-item::after,
.food-ribbon-item > span { display: none; }

.food-ribbon-item img { filter: saturate(.96) brightness(.92); }

@keyframes food-ribbon-flow {
  to { transform: translateX(calc(-50% - 1.0625rem)); }
}

@media (max-width: 700px) {
  .food-ribbon-divider { height: 18.25rem; padding: 1.9375rem 0 2.5rem; }
  .food-ribbon-track { height: 13.625rem; gap: 1.125rem; animation-duration: 38s; }
  .food-ribbon-set { gap: 1.125rem; }
  .food-ribbon-item,
  .food-ribbon-item--tall,
  .food-ribbon-item--wide,
  .food-ribbon-item--small,
  .food-ribbon-item--large { border-radius: 1rem; }
  .food-ribbon-item { width: 11.25rem; height: 9.4375rem; }
  .food-ribbon-item--tall { width: 10rem; height: 12.8125rem; --offset: 0.1875rem; }
  .food-ribbon-item--wide { width: 14.75rem; height: 9.1875rem; --offset: -1.0625rem; }
  .food-ribbon-item--small { width: 9.375rem; height: 8rem; --offset: 1.9375rem; }
  .food-ribbon-item--large { width: 12.625rem; height: 11.5rem; --offset: 0.5rem; }
  .food-ribbon-item--low { --offset: 1.9375rem; }
  .food-ribbon-item--high { --offset: -1.375rem; }
  @keyframes food-ribbon-flow { to { transform: translateX(calc(-50% - 0.5625rem)); } }
}

/* Mobile schedule: readable tickets first, details in one calm vertical flow. */
@media (max-width: 37.5rem) {
  .schedule-section {
    overflow: clip;
    padding-block: 3.625rem 3.375rem;
  }

  .schedule-section .section-heading {
    margin-bottom: 1.6875rem;
  }

  .schedule-section .section-heading > p {
    max-width: 18.125rem;
    font-size: 0.6875rem;
    line-height: 1.85;
  }

  .schedule-tabs {
    display: flex;
    gap: 0.75rem;
    margin-inline: -1.375rem;
    padding: 0.4375rem 1.375rem 1.1875rem;
    overflow-x: auto;
    overflow-y: visible;
    scroll-padding-inline: 1.375rem;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
    -webkit-overflow-scrolling: touch;
  }

  .schedule-tabs::-webkit-scrollbar { display: none; }

  .schedule-tabs .season-tab {
    flex: 0 0 min(76vw, 18.375rem);
    min-height: 8.625rem;
    padding: 1.125rem 1.375rem 1.0625rem;
    border-radius: 1.125rem;
    scroll-snap-align: center;
    transform: scale(.96);
    transform-origin: center;
    opacity: .65;
  }

  .schedule-tabs .season-tab[aria-selected="true"],
  .schedule-tabs .season-tab[aria-selected="true"]:hover {
    transform: scale(1);
    opacity: 1;
  }

  .schedule-tabs .season-tab::before,
  .schedule-tabs .season-tab::after {
    width: 1.25rem;
    height: 1.25rem;
  }

  .schedule-tabs .season-tab::before { left: -0.6875rem; }
  .schedule-tabs .season-tab::after { right: -0.6875rem; }

  .schedule-tabs .season-top {
    flex-direction: row;
    align-items: center;
    gap: 0.625rem;
    font-size: 0.5625rem;
  }

  .schedule-tabs .season-top i {
    min-height: 0;
    padding: 0.1875rem 0.5rem;
    font-size: 0.4375rem;
    line-height: 1.2;
  }

  .schedule-tabs .season-tab > b {
    margin: 0.625rem 0 0.375rem;
    font-size: 1.875rem;
    line-height: 1.2;
    white-space: nowrap;
  }

  .schedule-tabs .season-tab b small {
    display: inline;
    margin-left: 0.1875rem;
    font-size: 0.4375rem;
  }

  .schedule-tabs .season-tab b > span {
    display: inline;
    padding-inline: 0.4375rem;
    font-size: 1.0625rem;
  }

  .schedule-tabs .season-tab > span:nth-last-child(2) {
    display: block;
    font-size: 0.625rem;
    line-height: 1.65;
  }

  .schedule-tabs .season-star {
    right: 1.0625rem;
    top: 1rem;
    font-size: 1.1875rem;
  }

  .season-panel {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 1.75rem;
    margin-top: 0.5rem;
    padding: 1.9375rem 1.25rem 1.25rem;
    border-radius: 1.3125rem;
  }

  .season-panel::before { width: 42%; }

  .season-panel::after {
    right: 1rem;
    top: 0.9375rem;
    font-size: 0.5rem;
    letter-spacing: .15em;
  }

  .season-panel .outlined-label {
    padding: 0.3125rem 0.625rem;
    font-size: 0.5625rem;
  }

  .season-panel .season-intro h3 {
    margin: 0.9375rem 0 0.625rem;
    font-size: 1.5rem;
    line-height: 1.45;
    letter-spacing: .02em;
    word-break: keep-all;
    overflow-wrap: anywhere;
  }

  .season-panel .season-intro > p {
    font-size: 0.75rem;
    line-height: 2;
  }

  .season-panel .store-count {
    gap: 0.875rem;
    margin-top: 1.25rem;
    padding: 1rem 0 0.125rem;
    border-top: 0.0625rem solid #9aa6c729;
  }

  .season-panel .store-count > strong {
    flex: 0 0 auto;
    font-size: 3.625rem;
  }

  .season-panel .store-count > span {
    min-width: 0;
    font-size: 0.6875rem;
    line-height: 1.65;
  }

  .season-panel .store-count small {
    display: block;
    margin-top: 0.125rem;
    font-size: 0.5rem;
  }

  .season-panel .event-details {
    margin: 0;
    padding: 0.1875rem 0.9375rem;
    border: 0.0625rem solid #9aa6c724;
    border-radius: 0.9375rem;
    background: #ffffff05;
  }

  .season-panel .event-details > div {
    grid-template-columns: 4.25rem minmax(0, 1fr);
    gap: 0.75rem;
    padding-block: 0.875rem;
  }

  .season-panel .event-details dt {
    font-size: 0.5625rem;
    line-height: 1.7;
  }

  .season-panel .event-details dd {
    min-width: 0;
    font-size: 0.75rem;
    line-height: 1.75;
    word-break: keep-all;
    overflow-wrap: anywhere;
  }

  .season-panel .event-details dd small {
    margin-top: 0.3125rem;
    font-size: 0.5625rem;
    line-height: 1.75;
  }

  .schedule-note {
    margin-top: 1.25rem;
    padding-inline: 0.125rem;
    line-height: 1.8;
  }
}

/* Mobile composition: 393px reference; type, spacing and images share one scale.
   Breakpoints remain in px; desktop keeps the browser's normal root size. */
@media (max-width: 600px) {
  html { font-size: calc(100vw * 16 / 393); }
  .hero-content .hero-title-proposal { font-size: 2.9475rem; }
  .hero-content .hero-title-line { white-space: nowrap; }
  .about-copy #about-title .about-title-lead { font-size: 1.375rem; letter-spacing: .025em; }
  .about-copy #about-title .gold-word { font-size: 2.2275rem; }
  .schedule-section .section-heading h2 { font-size: 1.9375rem; }
  .season-panel .season-intro h3 { font-size: 1.375rem; }
  .season-panel .event-details > div { grid-template-columns: 3.375rem minmax(0, 1fr); gap: .625rem; }
  .season-panel .event-details dd { word-break: normal; overflow-wrap: break-word; }
  .season-panel .store-count small { font-size: .625rem; }
  .concept-tags > span, .experience-small > span { min-width: 0; }
  .faq-list summary { min-width: 0; }
  .message-hero-copy .message-statement { font-size: 2.45625rem; }
  .program-dialog { max-height: calc(100dvh - 2rem); }
}

/* Modal backdrop: the hero's rising lanterns drift behind every open dialog. */
.program-dialog::backdrop,
.program-dialog[open]::backdrop { background: transparent; backdrop-filter: none; }

.dialog-sky {
  position: fixed;
  inset: 0;
  z-index: 50;
  overflow: hidden;
  pointer-events: none;
  opacity: 0;
  visibility: hidden;
  background: radial-gradient(circle at 50% 35%, #243a7b52 0, #10183e66 30%, #020617dc 76%);
  backdrop-filter: blur(0.5625rem) saturate(.82);
  transition: opacity .5s ease, visibility 0s linear .5s;
}

body.dialog-open .dialog-sky {
  opacity: 1;
  visibility: visible;
  transition: opacity .5s ease, visibility 0s;
}

.dialog-lantern-field { z-index: 1; }
body:not(.dialog-open) .dialog-lantern-field .lantern { animation-play-state: paused; }

/* Announcement site: the night is for visitors, so the recruitment block stays quiet. */
.follow-section { text-align: center; padding-block: 3.5rem 1rem; }
.follow-section h2 { font-size: 1.875rem; }
.follow-section > p { margin-top: 0.9375rem; font-size: 0.8125rem; line-height: 2; color: #c8cfe2; }
.follow-links { display: flex; justify-content: center; gap: 0.875rem; margin-top: 1.625rem; flex-wrap: wrap; }
.follow-links a {
  display: inline-flex; align-items: center; gap: 0.75rem;
  min-height: 3rem; padding: 0 1.625rem;
  border: 0.0625rem solid #cfcaef55; border-radius: 6.25rem;
  font-family: var(--latin); font-size: 0.9375rem; letter-spacing: .06em;
  transition: background .2s, border-color .2s;
}
.follow-links a:hover { background: #ffffff0d; border-color: #f6c76066; }
.follow-links i { font-style: normal; font-size: 1.0625rem; color: var(--gold); }

.join-section { padding: 3.25rem 0 3rem; }
.join-heading h2 { font-size: 1.625rem; }
.join-heading > p:last-child { margin-top: 0.75rem; font-size: 0.75rem; }
.join-grid { margin-top: 1.75rem; gap: 1rem; }
.join-grid > a { padding: 1.125rem 1.25rem; }
.join-grid .join-en { font-size: 0.5625rem; }
.join-grid h3 { font-size: 1.0625rem; margin: 0.375rem 0 0.75rem; }
.join-grid > a > span:last-child { font-size: 0.6875rem; }
.join-note { margin-top: 1.25rem; }

@media (max-width: 600px) {
  .follow-section { padding-block: 2.75rem 0.5rem; }
  .follow-section h2 { font-size: 1.5rem; }
  .follow-section > p { font-size: 0.75rem; }
  .follow-links a { min-height: 2.75rem; font-size: 0.875rem; padding: 0 1.375rem; }
  .join-section { padding: 2.75rem 0 2.25rem; }
  .join-heading h2 { font-size: 1.4375rem; }
  .join-grid h3 { font-size: 1rem; }
}

/* The flowing ribbon now opens the page, so it carries the food story itself. */
.food-ribbon-divider { padding-top: 2.25rem; }
.food-ribbon-item::after { display: block; }
.food-ribbon-item > span { display: block; font-size: 0.625rem; }
.food-ribbon-note {
  text-align: center;
  margin: 0.5rem auto 0;
  font-size: 0.8125rem;
  line-height: 2;
  color: #d4d3e6;
}
.food-ribbon-note small { display: block; margin-top: 0.375rem; font-size: 0.625rem; color: var(--muted); }
@media (max-width: 600px) {
  .food-ribbon-divider { padding-top: 1.5rem; }
  .food-ribbon-item > span { font-size: 0.5rem; }
  .food-ribbon-note { font-size: 0.75rem; }
  .food-ribbon-note small { font-size: 0.5625rem; }
}

/* Section labels: a plain Japanese name, so each section says what it is. */
.eyebrow-label { font-family: var(--body); font-weight: 700; font-size: 0.75rem; letter-spacing: .1em; }
@media (max-width: 600px) { .eyebrow-label { font-size: 0.6875rem; letter-spacing: .08em; } }

/* Headings stay white; gold is reserved for the small section labels. */
h2 .gold-word { color: var(--cream); }

/* Two ribbons under the hero: the top drifts right, the bottom drifts left. */
.food-ribbon-divider--double {
  height: auto;
  padding: 2.5rem 0 3rem;
  display: grid;
  gap: 1.25rem;
}
.food-ribbon-row { overflow: hidden; }
.food-ribbon-divider--double .food-ribbon-track {
  height: 10.625rem;
  gap: 1.25rem;
  align-items: stretch;
  animation: food-ribbon-flow 56s linear infinite;
}
.food-ribbon-divider--double .food-ribbon-track--reverse { animation-direction: reverse; }
.food-ribbon-divider--double .food-ribbon-set { gap: 1.25rem; align-items: stretch; }
.food-ribbon-divider--double .food-ribbon-item {
  --offset: 0rem;
  --tilt: 0deg;
  height: 100%;
  width: 14rem;
  transform: none;
  border-radius: 1.125rem;
}
.food-ribbon-divider--double .food-ribbon-item--wide { width: 18.75rem; }
.food-ribbon-divider--double .food-ribbon-item--large { width: 16.25rem; }
.food-ribbon-divider--double .food-ribbon-item--tall { width: 11.25rem; }
.food-ribbon-divider--double .food-ribbon-item--small { width: 10.625rem; border-radius: 50%; }
.food-ribbon-divider--double .food-ribbon-item:hover { transform: scale(1.035); }
.food-ribbon-divider--double .food-ribbon-item > span { left: 1rem; bottom: 0.75rem; }
.food-ribbon-divider--double .food-ribbon-item--small > span { left: 50%; translate: -50% 0; bottom: 1.125rem; }

@keyframes food-ribbon-flow { to { transform: translateX(calc(-50% - 0.625rem)); } }

@media (max-width: 700px) {
  .food-ribbon-divider--double { padding: 1.75rem 0 2.25rem; gap: 0.75rem; }
  .food-ribbon-divider--double .food-ribbon-track {
    height: 6.75rem;
    gap: 0.75rem;
    animation-duration: 40s;
  }
  .food-ribbon-divider--double .food-ribbon-set { gap: 0.75rem; }
  .food-ribbon-divider--double .food-ribbon-item { width: 9rem; border-radius: 0.875rem; }
  .food-ribbon-divider--double .food-ribbon-item--wide { width: 11.875rem; }
  .food-ribbon-divider--double .food-ribbon-item--large { width: 10.25rem; }
  .food-ribbon-divider--double .food-ribbon-item--tall { width: 7.25rem; }
  .food-ribbon-divider--double .food-ribbon-item--small { width: 6.75rem; }
  .food-ribbon-divider--double .food-ribbon-item > span { left: 0.6875rem; bottom: 0.5rem; }
  @keyframes food-ribbon-flow { to { transform: translateX(calc(-50% - 0.375rem)); } }
}
.food-ribbon-divider--double::before {
  background: linear-gradient(90deg, #18204e 0, transparent 9%, transparent 91%, #18204e 100%);
}

/* Bigger ribbon, and no hover reaction — it is a backdrop, not a control. */
.food-ribbon-divider--double { padding: 3rem 0 3.5rem; gap: 1.375rem; }
.food-ribbon-divider--double .food-ribbon-track { height: 13.75rem; gap: 1.375rem; }
.food-ribbon-divider--double .food-ribbon-set { gap: 1.375rem; }
.food-ribbon-divider--double .food-ribbon-item { width: 18.125rem; border-radius: 1.25rem; }
.food-ribbon-divider--double .food-ribbon-item--wide { width: 24.375rem; }
.food-ribbon-divider--double .food-ribbon-item--large { width: 21.25rem; }
.food-ribbon-divider--double .food-ribbon-item--tall { width: 14.5rem; }
.food-ribbon-divider--double .food-ribbon-item--small { width: 13.75rem; border-radius: 50%; }
.food-ribbon-divider--double .food-ribbon-item > span { font-size: 0.6875rem; left: 1.25rem; bottom: 0.9375rem; }

.food-ribbon-item:hover,
.food-ribbon-divider--double .food-ribbon-item:hover {
  transform: none;
  z-index: auto;
  border-color: inherit;
  box-shadow: none;
}
.food-ribbon-item:hover img { transform: none; filter: saturate(.96) brightness(.92); }
.food-ribbon-item:hover::after { opacity: 1; }

@keyframes food-ribbon-flow { to { transform: translateX(calc(-50% - 0.6875rem)); } }

@media (max-width: 700px) {
  .food-ribbon-divider--double { padding: 2rem 0 2.5rem; gap: 0.875rem; }
  .food-ribbon-divider--double .food-ribbon-track { height: 8.5rem; gap: 0.875rem; }
  .food-ribbon-divider--double .food-ribbon-set { gap: 0.875rem; }
  .food-ribbon-divider--double .food-ribbon-item { width: 11.25rem; border-radius: 1rem; }
  .food-ribbon-divider--double .food-ribbon-item--wide { width: 15rem; }
  .food-ribbon-divider--double .food-ribbon-item--large { width: 12.875rem; }
  .food-ribbon-divider--double .food-ribbon-item--tall { width: 9rem; }
  .food-ribbon-divider--double .food-ribbon-item--small { width: 8.5rem; }
  .food-ribbon-divider--double .food-ribbon-item > span { font-size: 0.5625rem; left: 0.8125rem; bottom: 0.625rem; }
  @keyframes food-ribbon-flow { to { transform: translateX(calc(-50% - 0.4375rem)); } }
}
.food-ribbon-divider--double .food-ribbon-item--small > span { left: 50%; translate: -50% 0; bottom: 1.25rem; }
@media (max-width: 700px) {
  .food-ribbon-divider--double .food-ribbon-item--small > span { left: 50%; translate: -50% 0; bottom: 0.8125rem; }
}

/* Featured menu: the slot is reserved, the content is honestly marked as pending. */
.menu-section { padding-block: 3.75rem 4.5rem; }
.menu-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.75rem; }
.menu-card { min-width: 0; }
.menu-card-visual {
  position: relative;
  overflow: hidden;
  border-radius: 5.625rem 5.625rem 0.875rem 0.875rem;
  isolation: isolate;
}
.menu-card-visual img {
  width: 100%;
  height: 16.25rem;
  object-fit: cover;
  filter: saturate(.55) brightness(.52) blur(0.1875rem);
  transform: scale(1.04);
}
.menu-card-visual::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, #18204e59, #18204eb5);
}
.menu-badge {
  position: absolute;
  z-index: 2;
  top: 50%;
  left: 50%;
  translate: -50% -50%;
  padding: 0.5625rem 1.375rem;
  border: 0.0625rem solid #f6c76080;
  border-radius: 6.25rem;
  background: #18204eb8;
  color: var(--gold);
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: .14em;
  white-space: nowrap;
}
.menu-number { font: 0.625rem var(--latin); color: var(--gold); letter-spacing: .14em; margin-top: 1.125rem; }
.menu-card h3 { font-size: 1.3125rem; margin: 0.3125rem 0 0.5rem; }
.menu-copy { font-size: 0.75rem; line-height: 1.95; color: var(--muted); }
.menu-status {
  margin-top: 0.875rem;
  padding-top: 0.75rem;
  border-top: 0.0625rem solid var(--line);
  font-size: 0.6875rem;
  color: #9aa4c6;
}

@media (max-width: 900px) {
  .menu-grid { gap: 1.25rem; }
  .menu-card-visual { border-radius: 4.375rem 4.375rem 0.875rem 0.875rem; }
  .menu-card-visual img { height: 13.125rem; }
  .menu-card h3 { font-size: 1.125rem; }
}
@media (max-width: 600px) {
  .menu-section { padding-block: 2.5rem 3rem; }
  .menu-grid { grid-template-columns: 1fr; gap: 1.75rem; }
  .menu-card-visual { border-radius: 8.75rem 8.75rem 0.875rem 0.875rem; }
  .menu-card-visual img { height: 15rem; }
  .menu-badge { font-size: 0.75rem; padding: 0.5rem 1.1875rem; }
  .menu-card h3 { font-size: 1.1875rem; }
}

/* Ribbon: square frames with room to breathe — no stretched landscape crops. */
.food-ribbon-divider--double { gap: 1.75rem; padding: 3.25rem 0 3.75rem; }
.food-ribbon-divider--double .food-ribbon-track { height: 13.75rem; gap: 2rem; }
.food-ribbon-divider--double .food-ribbon-set { gap: 2rem; }
.food-ribbon-divider--double .food-ribbon-item,
.food-ribbon-divider--double .food-ribbon-item--wide,
.food-ribbon-divider--double .food-ribbon-item--large,
.food-ribbon-divider--double .food-ribbon-item--tall { width: 13.75rem; border-radius: 1.25rem; }
.food-ribbon-divider--double .food-ribbon-item--small { width: 13.75rem; border-radius: 50%; }

@keyframes food-ribbon-flow { to { transform: translateX(calc(-50% - 1rem)); } }

@media (max-width: 700px) {
  .food-ribbon-divider--double { gap: 1rem; padding: 2.125rem 0 2.5rem; }
  .food-ribbon-divider--double .food-ribbon-track { height: 8.5rem; gap: 1rem; }
  .food-ribbon-divider--double .food-ribbon-set { gap: 1rem; }
  .food-ribbon-divider--double .food-ribbon-item,
  .food-ribbon-divider--double .food-ribbon-item--wide,
  .food-ribbon-divider--double .food-ribbon-item--large,
  .food-ribbon-divider--double .food-ribbon-item--tall,
  .food-ribbon-divider--double .food-ribbon-item--small { width: 8.5rem; border-radius: 0.9375rem; }
  .food-ribbon-divider--double .food-ribbon-item--small { border-radius: 50%; }
  @keyframes food-ribbon-flow { to { transform: translateX(calc(-50% - 0.5rem)); } }
}

/* One shape for every frame; the interest comes from how they sit, not how they are cropped. */
.food-ribbon-divider--double { gap: 1.25rem; padding: 2.75rem 0 3.25rem; }
.food-ribbon-divider--double .food-ribbon-track { height: 21.25rem; gap: 2.125rem; align-items: center; }
.food-ribbon-divider--double .food-ribbon-set { gap: 2.125rem; align-items: center; }
.food-ribbon-divider--double .food-ribbon-item,
.food-ribbon-divider--double .food-ribbon-item--wide,
.food-ribbon-divider--double .food-ribbon-item--large,
.food-ribbon-divider--double .food-ribbon-item--tall,
.food-ribbon-divider--double .food-ribbon-item--small {
  width: 18.75rem;
  height: 18.75rem;
  border-radius: 1.375rem;
  transform: translateY(var(--offset, 0rem));
}
.food-ribbon-divider--double .food-ribbon-item > span { left: 1.375rem; bottom: 1.125rem; font-size: 0.6875rem; }

@keyframes food-ribbon-flow { to { transform: translateX(calc(-50% - 1.0625rem)); } }

@media (max-width: 700px) {
  .food-ribbon-divider--double { gap: 0.8125rem; padding: 2rem 0 2.375rem; }
  .food-ribbon-divider--double .food-ribbon-track { height: 11rem; gap: 1.0625rem; }
  .food-ribbon-divider--double .food-ribbon-set { gap: 1.0625rem; }
  .food-ribbon-divider--double .food-ribbon-item,
  .food-ribbon-divider--double .food-ribbon-item--wide,
  .food-ribbon-divider--double .food-ribbon-item--large,
  .food-ribbon-divider--double .food-ribbon-item--tall,
  .food-ribbon-divider--double .food-ribbon-item--small {
    width: 9.5rem;
    height: 9.5rem;
    border-radius: 1rem;
  }
  .food-ribbon-divider--double .food-ribbon-item > span { left: 0.875rem; bottom: 0.6875rem; font-size: 0.5625rem; }
  @keyframes food-ribbon-flow { to { transform: translateX(calc(-50% - 0.53125rem)); } }
}

/* Slightly larger section labels; on phones the menu lead follows its headline. */
.eyebrow-label { font-size: 0.8125rem; }
@media (max-width: 600px) {
  .eyebrow-label { font-size: 0.75rem; }
  .menu-section .section-heading {
    flex-direction: column;
    align-items: flex-start;
    gap: 0.875rem;
    margin-bottom: 1.75rem;
  }
  .menu-section .section-heading > p { font-size: 0.75rem; line-height: 2.05; }
}

/* The visitor's one destination should close the page, not whisper under it. */
.follow-section {
  padding-block: 4.5rem 3.5rem;
  max-width: 48rem;
}
.follow-section h2 { font-size: 2.375rem; }
.follow-section > p { margin-top: 1.125rem; font-size: 0.875rem; color: #dcdcec; }
.follow-links { gap: 1.125rem; margin-top: 2.125rem; }
.follow-links a {
  min-height: 3.75rem;
  padding: 0 2rem;
  gap: 0.875rem;
  border-color: #f6c76099;
  background: #f6c7600f;
  font-size: 1rem;
  color: var(--gold);
  box-shadow: 0 0.625rem 2.25rem #f6c76014;
}
.follow-links a:hover {
  background: var(--gold);
  border-color: var(--gold);
  color: #1d2147;
  box-shadow: 0 0.75rem 2.5rem #f6c76033;
}
.follow-links b { font: 600 1rem/1 var(--latin); letter-spacing: .05em; }
.follow-links i { font-size: 1.125rem; color: inherit; }
.sns-icon { width: 1.375rem; height: 1.375rem; fill: none; stroke: currentColor; stroke-width: 1.6; }
.sns-icon--x { font-size: 1.25rem; line-height: 1; }

/* …and the recruitment block stays a quiet footnote. */
.join-section { padding: 2.5rem 0 2.25rem; }
.join-heading h2 { font-size: 1.3125rem; }
.join-heading > p:last-child { font-size: 0.6875rem; margin-top: 0.5rem; }
.join-grid { margin-top: 1.375rem; gap: 0.875rem; }
.join-grid > a { padding: 1rem 1.125rem; background: transparent; border-color: #cfcaef33; }
.join-grid .eyebrow, .join-grid .join-en { font-size: 0.5rem; }
.join-grid h3 { font-size: 0.9375rem; margin: 0.25rem 0 0.5rem; }
.join-grid > a > span:last-child { font-size: 0.625rem; }
.join-note { font-size: 0.5625rem; margin-top: 1rem; }

@media (max-width: 600px) {
  .follow-section { padding-block: 3.25rem 2.5rem; }
  .follow-section h2 { font-size: 1.75rem; }
  .follow-section > p { font-size: 0.8125rem; }
  .follow-links { gap: 0.75rem; }
  .follow-links a { min-height: 3.25rem; padding: 0 1.5rem; font-size: 0.9375rem; }
  .follow-links b { font-size: 0.9375rem; }
  .join-heading h2 { font-size: 1.1875rem; }
  .join-grid h3 { font-size: 0.9375rem; }
}
/* Order swapped: the quiet recruitment note now sits above the closing SNS block. */
.join-section { padding-block: 3rem 1.25rem; }
.follow-section { padding-block: 3rem 4rem; }
@media (max-width: 600px) {
  .join-section { padding-block: 2.25rem 0.75rem; }
  .follow-section { padding-block: 2.25rem 3rem; }
}

/* Under the ribbon: say it plainly, and put the opening date where nobody can miss it. */
.ribbon-lead { text-align: center; padding-bottom: 0.5rem; }
.ribbon-lead-copy { font-size: 1.5rem; font-weight: 700; line-height: 1.75; letter-spacing: .02em; }
.ribbon-lead-date {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 1.0625rem;
  margin-top: 1.375rem;
  font-family: var(--latin);
}
.ribbon-lead-place { margin-top: 0.9375rem; font-size: 0.8125rem; letter-spacing: .04em; color: #d4d3e6; }
.ribbon-lead-note { margin-top: 1.375rem; font-size: 0.625rem; color: var(--muted); }

/* Who is behind this — the one thing a 2027 announcement has to answer. */
.host-section {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 3.25rem;
  align-items: start;
  padding-block: 1.25rem 4rem;
}
.host-copy h2 { font-size: 2rem; }
.host-copy > p { margin-top: 1.125rem; font-size: 0.8125rem; line-height: 2.15; color: #ccd2e8; }
.host-details { margin: 0.375rem 0 0; font-size: 0.8125rem; }
.host-details > div {
  display: grid;
  grid-template-columns: 6.25rem 1fr;
  gap: 1rem;
  padding-block: 0.9375rem;
  border-bottom: 0.0625rem solid var(--line);
}
.host-details > div:first-child { border-top: 0.0625rem solid var(--line); }
.host-details dt { color: var(--gold); font-size: 0.75rem; font-weight: 700; }
.host-details dd { margin: 0; }
.host-details dd small { display: block; margin-top: 0.3125rem; font-size: 0.6875rem; color: var(--muted); }

@media (max-width: 900px) {
  .host-section { grid-template-columns: 1fr; gap: 2rem; }
  .host-copy h2 { font-size: 1.6875rem; }
}
@media (max-width: 600px) {
  .ribbon-lead-copy { font-size: 1.1875rem; line-height: 1.85; }
  .ribbon-lead-date { gap: 0.625rem; margin-top: 1.125rem; flex-wrap: wrap; row-gap: 0.5rem; }
  .ribbon-lead-place { font-size: 0.6875rem; }
  .ribbon-lead-note { font-size: 0.5625rem; margin-top: 1rem; }
  .host-section { padding-block: 0.5rem 2.75rem; gap: 1.625rem; }
  .host-copy h2 { font-size: 1.4375rem; }
  .host-copy > p { font-size: 0.75rem; }
  .host-details { font-size: 0.75rem; }
  .host-details > div { grid-template-columns: 4.5rem 1fr; gap: 0.75rem; padding-block: 0.8125rem; }
}
.host-pending {
  display: inline-block;
  padding: 0.1875rem 0.625rem;
  border: 0.0625rem solid #cfcaef4d;
  border-radius: 6.25rem;
  font-size: 0.6875rem;
  color: var(--muted);
}

/* The opening announcement, framed like a festival signboard. */
.ribbon-lead { padding-top: 1.25rem; }
.ribbon-lead-plate {
  position: relative;
  max-width: 44rem;
  margin: 0 auto;
  padding: 3rem 3rem 2.625rem;
  border: 0.0625rem solid #f6c76047;
  border-radius: 1.625rem;
  background:
    radial-gradient(ellipse at 50% 0%, #f6c7600f 0, transparent 62%),
    linear-gradient(180deg, #1a2555b3, #131e4ab3);
  box-shadow: 0 1.5rem 4.5rem #060d2a66, inset 0 0.0625rem #ffffff0f;
}
.ribbon-lead-seal {
  position: absolute;
  top: 0;
  left: 50%;
  translate: -50% -50%;
  width: 2.25rem;
  height: 2.25rem;
  display: grid;
  place-items: center;
  border-radius: 50%;
  border: 0.0625rem solid #f6c76066;
  background: #18204e;
  color: var(--gold);
  font-size: 0.875rem;
}
.ribbon-lead-copy {
  font-size: 1.8125rem;
  font-weight: 700;
  line-height: 1.7;
  letter-spacing: .015em;
}
.ribbon-lead-rule {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1rem;
  margin-top: 1.5rem;
}
.ribbon-lead-rule i { width: 3.75rem; height: 0.0625rem; background: linear-gradient(90deg, transparent, #f6c76080, transparent); }
.ribbon-lead-rule span { font: 500 0.5625rem var(--latin); letter-spacing: .3em; color: var(--gold); }
.ribbon-lead-date { margin-top: 1.25rem; }
.ribbon-lead-date .date-large { font-size: 3.5rem; }
.ribbon-lead-date .date-year { font-size: 1.5rem; }
.ribbon-lead-place {
  margin-top: 1.25rem;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.875rem;
  font-size: 0.8125rem;
  letter-spacing: .08em;
  color: #dcdcec;
}
.ribbon-lead-place i { font-style: normal; font-size: 0.5rem; color: var(--gold); }
.ribbon-lead-note { margin-top: 1.5rem; }

@media (max-width: 600px) {
  .ribbon-lead { padding-top: 0.75rem; }
  .ribbon-lead-plate { padding: 2.25rem 1.375rem 2rem; border-radius: 1.25rem; }
  .ribbon-lead-seal { width: 1.875rem; height: 1.875rem; font-size: 0.75rem; }
  .ribbon-lead-copy { font-size: 1.3125rem; line-height: 1.8; }
  .ribbon-lead-rule { margin-top: 1.125rem; gap: 0.75rem; }
  .ribbon-lead-rule i { width: 2.25rem; }
  .ribbon-lead-date { margin-top: 1rem; }
  .ribbon-lead-date .date-large { font-size: 2.375rem; }
  .ribbon-lead-date .date-year { font-size: 1.1875rem; }
  .ribbon-lead-place { flex-direction: column; gap: 0.4375rem; font-size: 0.6875rem; margin-top: 1rem; }
  .ribbon-lead-note { margin-top: 1.125rem; }
}

/* 601-768px (narrowed desktop window / small tablet): collapse before things get cramped. */
@media (max-width: 768px) {
  .ribbon-lead-plate { padding: 2.5rem 1.75rem 2.25rem; }
  .ribbon-lead-copy { font-size: 1.5rem; }
  .ribbon-lead-date .date-large { font-size: 2.75rem; }
  .ribbon-lead-date .date-year { font-size: 1.3125rem; }

  .menu-section .section-heading {
    flex-direction: column;
    align-items: flex-start;
    gap: 0.875rem;
    margin-bottom: 1.75rem;
  }
  .menu-section .section-heading > p { font-size: 0.8125rem; }
  .menu-grid { grid-template-columns: 1fr; gap: 1.625rem; }
  .menu-card-visual { border-radius: 7.5rem 7.5rem 0.875rem 0.875rem; }
  .menu-card-visual img { height: 14rem; }

  .join-grid { grid-template-columns: 1fr; gap: 0.75rem; }
  .follow-section h2 { font-size: 2rem; }
}

/* Language switch */
.lang-toggle {
  padding: 0.375rem 0.875rem;
  border: 0.0625rem solid #cfcaef66;
  border-radius: 6.25rem;
  font: 600 0.6875rem var(--latin);
  letter-spacing: .08em;
  color: var(--cream);
  transition: background .2s, border-color .2s, color .2s;
}
.lang-toggle:hover { background: var(--gold); border-color: var(--gold); color: #1d2147; }
.lang-en [data-ja-only],
.lang-en .original-header #main-nav > [data-ja-only] { display: none; }
.lang-en .eyebrow-label { font-family: var(--latin); font-weight: 600; letter-spacing: .16em; text-transform: uppercase; }
.lang-en .ribbon-lead-copy,
.lang-en h1,
.lang-en h2 { letter-spacing: 0; }
@media (max-width: 900px) {
  .lang-toggle { align-self: flex-start; margin-top: 0.75rem; }
}

/* Phones: one column means the only separation is vertical space — give it room,
   especially where no lantern divider marks the seam. */
@media (max-width: 600px) {
  .menu-section { padding-block: 3rem 3.5rem; }
  .experience-section { padding-block: 4.25rem 4.25rem; }
  .schedule-section { padding: 3.75rem 0 3.25rem; }
  .access-section { padding-block: 4rem 4.5rem; }
  .host-section { padding-block: 1.75rem 3.75rem; }
  .faq-section { padding-block: 2.25rem 4.25rem; }
  .join-section { padding-block: 2.5rem 2rem; }
  .follow-section { padding-block: 3.25rem 3.25rem; }
  .ribbon-lead { padding-bottom: 1.25rem; }
  .about-section { padding-block: 3rem 4.5rem; }
}

/* Sticky header */
.site-header {
  position: fixed;
  transition:
    transform .5s cubic-bezier(.16, 1, .3, 1),
    opacity .3s ease,
    text-shadow .3s ease;
  will-change: transform;
}
/* No background plate — only a soft shadow so the type stays legible over photos. */
.site-header.is-stuck { text-shadow: 0 0.125rem 0.75rem #060d2ab3; }
.site-header.is-hidden {
  transform: translateY(-100%);
  opacity: 0;
  pointer-events: none;
}
@media (prefers-reduced-motion: reduce) {
  .site-header { transition: none; }
  .site-header.is-hidden { transform: none; opacity: 1; pointer-events: auto; }
}
@media (max-width: 600px) { html { scroll-padding-top: 6.25rem; } }

/* Announcement plate: a pale signboard carrying the three facts about the night. */
.ribbon-lead-plate {
  padding: 2.875rem 3rem 2.625rem;
  border: 0;
  border-radius: 1.625rem;
  background: linear-gradient(180deg, #fffdf6 0%, #f4eddd 100%);
  box-shadow: 0 1.5rem 4.5rem #060d2a73, inset 0 0.0625rem #fff;
}
.ribbon-lead-seal {
  border-color: #c9a24a;
  background: var(--night);
}
.ribbon-lead-copy { color: #141d44; }
.ribbon-lead-rule {
  display: block;
  width: 3.75rem;
  height: 0.0625rem;
  margin: 1.5rem auto 0;
  background: linear-gradient(90deg, transparent, #b8893a, transparent);
}

.plate-highlights {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  list-style: none;
  padding: 0;
  margin: 1.625rem 0 0;
}
.plate-highlights li {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  gap: 0.4375rem;
  padding: 0 1rem;
  border-right: 0.0625rem solid #1a234c21;
}
.plate-highlights li:last-child { border-right: 0; }
.plate-highlights strong {
  font-size: 1.1875rem;
  line-height: 1.4;
  color: #141d44;
  white-space: nowrap;
}
.plate-highlights strong > span {
  font: 500 1.875rem/1 var(--latin);
  margin-right: 0.1875rem;
  color: #9a6f1e;
}
.plate-highlights small {
  font-size: 0.5625rem;
  line-height: 1.7;
  color: #5a6189;
  text-align: center;
}

@media (max-width: 768px) {
  .ribbon-lead-plate { padding: 2.5rem 1.75rem 2.25rem; }
  .plate-highlights li { padding: 0 0.625rem; }
  .plate-highlights strong { font-size: 1rem; }
  .plate-highlights strong > span { font-size: 1.5rem; }
}
@media (max-width: 600px) {
  .ribbon-lead-plate { padding: 2.25rem 1.125rem 2rem; border-radius: 1.25rem; }
  .ribbon-lead-rule { margin-top: 1.125rem; width: 2.75rem; }
  .plate-highlights { margin-top: 1.25rem; }
  .plate-highlights li { padding: 0 0.375rem; gap: 0.3125rem; }
  .plate-highlights strong { font-size: 0.8125rem; }
  .plate-highlights strong > span { font-size: 1.375rem; }
  .plate-highlights small { font-size: 0.5rem; line-height: 1.6; }
}

/* Hero: the logo itself carries the headline. */
.hero-logo {
  margin: 0.5rem auto 0;
  width: min(34rem, 82%);
}
.hero-logo img {
  width: 100%;
  height: auto;
  /* The wordmark is navy; a soft halo keeps it readable against the night photo. */
  /* Reversed wordmark reads on its own; only a gentle lift off the photo. */
  filter: drop-shadow(0 0.75rem 2.25rem #04091f8c) drop-shadow(0 0 1.5rem #0b163f66);
}
.hero-description { margin-top: 1.5rem; }

/* Date and venue, framed so they stay legible over the photograph. */
.hero-schedule-card {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  gap: 0.375rem;
  margin-top: 1.75rem;
  padding: 1.125rem 2.25rem 1rem;
  border: 0.0625rem solid #f6c76066;
  border-radius: 1.125rem;
  background: #0b1434b8;
  backdrop-filter: blur(0.375rem);
  box-shadow: 0 0.875rem 2.5rem #04091f59, inset 0 0.0625rem #ffffff14;
}
.hero-schedule-card .hero-date { margin-top: 0; }
.hero-schedule-card .hero-location { margin-top: 0.3125rem; }

@media (max-width: 900px) {
  .hero-logo { width: min(30rem, 86%); }
}
@media (max-width: 600px) {
  .hero-logo { width: 88%; margin-top: 0.25rem; }
  .hero-description { margin-top: 1.25rem; }
  .hero-schedule-card {
    margin-top: 1.375rem;
    padding: 0.9375rem 1.125rem 0.875rem;
    border-radius: 0.9375rem;
    width: 100%;
  }
}
.hero-content { padding-top: 11.5rem; }
@media (max-width: 900px) { .hero-content { padding-top: 10.5rem; } }
@media (max-width: 600px) { .hero-content { padding-top: 9.5rem; } }

/* Catch copy sits over the brightest part of the skyline — give it weight and a shadow. */
.hero-description {
  font-size: 1.0625rem;
  font-weight: 700;
  line-height: 2.1;
  letter-spacing: .04em;
  color: #fffdf6;
  text-shadow: 0 0.125rem 0.875rem #04091fcc, 0 0 2rem #04091f99;
}
@media (max-width: 600px) {
  .hero-description { font-size: 0.875rem; line-height: 2; letter-spacing: .02em; }
}

/* Phones: trim the dead photo space under the date card before the plate arrives. */
@media (max-width: 600px) {
  .hero { height: 38.5rem; min-height: 0; }
  .ribbon-lead { padding-top: 2rem; }
}

/* Stars: soft white dots instead of four-point diamonds. */
.sky-star { background: #ffffff; box-shadow: 0 0 0.5rem #ffffffa6; }
.sky-star.cross {
  border-radius: 50%;
  clip-path: none;
  width: 0.3125rem;
  height: 0.3125rem;
  background: #ffffff;
  box-shadow: 0 0 0.875rem #ffffffcc, 0 0 1.75rem #dfe7ff5e;
}
.sky-star:nth-child(7n):not(.cross) { box-shadow: 0 0 0.6875rem #ffffffb8; }

.night-sparkle { background: #ffffff; box-shadow: 0 0 0.375rem #ffffff73; }
.night-sparkle--cross {
  border-radius: 50%;
  clip-path: none;
  width: 0.25rem;
  height: 0.25rem;
  background: #ffffff;
  box-shadow: 0 0 0.6875rem #ffffffb3;
}
.night-sparkle:not(.night-sparkle--cross):nth-child(3n) { background: #f4f7ff; }
@media (max-width: 600px) {
  .night-sparkle--cross { width: 0.25rem; height: 0.25rem; }
}

/* About: copy first, then the three pillars — no side photo. */
.about-section {
  display: block;
  padding-block: 4.5rem 4.5rem;
}
.about-copy { max-width: 46rem; margin-inline: auto; text-align: center; padding: 0; }
.about-copy h2 { font-size: 2.375rem; line-height: 1.6; margin-bottom: 1.75rem; }
.about-copy > p:not(.eyebrow) { font-size: 0.875rem; line-height: 2.35; color: #d2d7ea; margin-top: 1.5rem; }
.about-section .about-pillars {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 2.1875rem;
  padding-bottom: 0;
  margin-top: 3.5rem;
}
.about-section .about-pillars h3 { font-size: 1.4375rem; margin-bottom: 0.875rem; }
.about-section .about-pillars article > p:last-child { font-size: 0.8125rem; line-height: 2.1; color: #bac4dd; }
.about-section .pillar-image img { height: 14.375rem; }

@media (max-width: 900px) {
  .about-copy h2 { font-size: 2rem; }
  .about-section .about-pillars { gap: 1.4375rem; margin-top: 2.75rem; }
  .about-section .pillar-image img { height: 12rem; }
  .about-section .about-pillars h3 { font-size: 1.25rem; }
}
@media (max-width: 600px) {
  .about-section { padding-block: 3rem 3.75rem; }
  .about-copy { text-align: left; }
  .about-copy h2 { font-size: 1.75rem; line-height: 1.7; margin-bottom: 1.375rem; }
  .about-copy > p:not(.eyebrow) { font-size: 0.8125rem; line-height: 2.25; margin-top: 1.25rem; }
  .about-section .about-pillars { grid-template-columns: 1fr; gap: 2.5rem; margin-top: 2.5rem; }
  .about-section .pillar-image img { height: 14rem; }
  .about-section .about-pillars h3 { font-size: 1.375rem; }
}
.eyebrow-label { font-size: 0.9375rem; letter-spacing: .12em; }
@media (max-width: 600px) { .eyebrow-label { font-size: 0.875rem; letter-spacing: .1em; } }

/* A gold rule marks where each section title begins. */
.eyebrow-label {
  display: inline-flex;
  align-items: center;
  gap: 0.6875rem;
}
/* A tiny lantern, the same motif the navigation uses. */
.eyebrow-label::before {
  content: '';
  flex: none;
  width: 0.625rem;
  height: 0.9375rem;
  border-radius: 0.1875rem 0.1875rem 0.25rem 0.25rem;
  clip-path: polygon(22% 0, 78% 0, 100% 20%, 88% 100%, 12% 100%, 0 20%);
  background: linear-gradient(180deg, #fff2b3 0%, #f4c65f 38%, #dd9a40 100%);
  box-shadow: 0 0 0.625rem #f7cc6899;
}
@media (max-width: 600px) {
  .eyebrow-label { gap: 0.5625rem; }
  .eyebrow-label::before { width: 0.5625rem; height: 0.8125rem; }
}
/* Sky lantern card: a quiet lead-in above the main line. */
.experience-lead {
  display: block;
  margin-top: 0.5rem;
  font-size: 0.9375rem;
  font-weight: 700;
  letter-spacing: .06em;
  color: #ffeec2;
}
@media (max-width: 600px) { .experience-lead { font-size: 0.8125rem; margin-top: 0.375rem; } }
/* Organiser block is now a heading plus the facts table. */
.host-section { align-items: center; }
@media (max-width: 900px) { .host-section { align-items: start; } }
/* Desktop-only prose: the two-column organiser block has room for it, phones do not. */
.pc-only { display: block; }
@media (max-width: 900px) { .pc-only { display: none; } }
.host-copy .pc-only { margin-top: 1.125rem; font-size: 0.8125rem; line-height: 2.15; color: #ccd2e8; }
.eyebrow-label { font-size: 1.0625rem; letter-spacing: .13em; gap: 0.8125rem; }
.eyebrow-label::before { width: 0.6875rem; height: 1.0625rem; }
@media (max-width: 600px) {
  .eyebrow-label { font-size: 0.9375rem; letter-spacing: .11em; gap: 0.625rem; }
  .eyebrow-label::before { width: 0.625rem; height: 0.9375rem; }
}

/* ===== Daylight sections: schedule (harbour morning) and menu (lantern amber) ===== */

/* --- 開催スケジュール: light ground, dark season passes on top --- */
.schedule-section {
  background:
    radial-gradient(circle at 87% 7%, #e7b85633 0, transparent 26%),
    radial-gradient(ellipse at 7% 78%, #6e94a522 0, transparent 32%),
    linear-gradient(155deg, #faf7ed 0%, #f2eee2 52%, #e6e9e4 100%);
  box-shadow: inset 0 0.0625rem 0 #fffdf7, 0 -1.375rem 5rem #050b242b;
  color: #20344f;
}
.schedule-section .night-sparkles { display: none; }
.schedule-section::before { color: #244d610d; }
.schedule-section::after {
  border: 0;
  box-shadow: none;
  background: repeating-linear-gradient(180deg, #64839320 0 0.0625rem, transparent 0.0625rem 0.75rem);
}
.schedule-section .eyebrow-label { color: #8a5a0f; }
.schedule-section .eyebrow-label::before {
  background: linear-gradient(180deg, #ffe09a 0%, #e0a43f 40%, #b2711f 100%);
  box-shadow: 0 0 0.5rem #c98f2e4d;
}
.schedule-section .section-heading h2 { color: #16213f; }
.schedule-section .section-heading > p,
.schedule-note { color: #5d6672; }
.schedule-gate { color: #7b8392; }
.schedule-section .hand-line::after { border-color: #c4963a; }
/* Ticket notches must match the pale ground, not the night sky. */
.season-tab::before,
.season-tab::after,
.season-tab[aria-selected=true]::before,
.season-tab[aria-selected=true]::after {
  background: #f1efe6;
  box-shadow: inset 0 0 0 0.0625rem #c9c5b98f;
}
/* Ease back into the night below the section. */
.section-divider--harbor-lanterns {
  background: linear-gradient(180deg, #e6e9e4 0%, #c4cbd0 26%, #52617f 66%, #18204e 100%);
}

/* --- 一押しメニュー: warm lantern amber, full bleed --- */
.menu-section {
  width: 100%;
  max-width: none;
  margin-inline: 0;
  padding-inline: max(3.125rem, calc((100% - 72.5rem) / 2));
  background:
    radial-gradient(ellipse at 18% 0%, #fffdf2 0, transparent 46%),
    linear-gradient(168deg, #fff4d6 0%, #ffe9b8 56%, #f9dc9f 100%);
  box-shadow: inset 0 0.0625rem 0 #fffdf4;
  color: #1b2550;
}
.menu-section .eyebrow-label { color: #8a5a0f; }
.menu-section .eyebrow-label::before {
  background: linear-gradient(180deg, #fff0c2 0%, #e0a43f 40%, #ab6c1c 100%);
  box-shadow: 0 0 0.5rem #b87c2659;
}
.menu-section h2 { color: #141d44; }
.menu-section .section-heading > p { color: #6d6047; }
.menu-card-visual img { filter: saturate(.62) brightness(1.04) blur(0.1875rem); }
.menu-card-visual::after { background: linear-gradient(180deg, #fff6dc4d, #ffeec2b3); }
.menu-badge {
  border-color: #1b255059;
  background: #1b2550e8;
  color: #ffe4a1;
}
.menu-number { color: #9a6f1e; }
.menu-card h3 { color: #16203f; }
.menu-copy { color: #6b6250; }
.menu-status { border-top-color: #1b25502b; color: #8a8070; }
.menu-section .section-note { color: #857b68; }

@media (max-width: 600px) {
  .menu-section { padding-inline: 1.375rem; }
}

/* Lanterns only frame the closing SNS block; the schedule band keeps its gradient
   but loses its lanterns, so it reads as a colour transition rather than a divider. */
.section-divider--harbor-lanterns > span,
.section-divider--harbor-lanterns > i { display: none; }
.section-divider--harbor-lanterns { height: 5.5rem; }
@media (max-width: 600px) { .section-divider--harbor-lanterns { height: 4rem; } }

/* Sections now meet directly, so each needs its own breathing room. */
.menu-section { padding-block: 4.5rem 5rem; }
.experience-section { padding-block: 5rem 4.5rem; }
.schedule-section { padding: 4.5rem 0 4rem; }
@media (max-width: 600px) {
  .menu-section { padding-block: 3.25rem 3.75rem; }
  .experience-section { padding-block: 3.5rem 3.5rem; }
  .schedule-section { padding: 3.5rem 0 3rem; }
}

/* 一押しメニュー: deep lantern amber with light type. */
.menu-section {
  background:
    radial-gradient(ellipse at 18% 0%, #c08f2c66 0, transparent 52%),
    linear-gradient(168deg, #9d7020 0%, #855b14 56%, #6f4a0f 100%);
  box-shadow: inset 0 0.0625rem 0 #ffdd9e3d;
  color: var(--cream);
}
.menu-section .eyebrow-label { color: #ffe3a0; }
.menu-section .eyebrow-label::before {
  background: linear-gradient(180deg, #fff6d6 0%, #ffd27a 42%, #e9a93c 100%);
  box-shadow: 0 0 0.625rem #ffd98a73;
}
.menu-section h2 { color: var(--cream); }
.menu-section .section-heading > p { color: #f0e0bd; }
.menu-card-visual img { filter: saturate(.65) brightness(.6) blur(0.1875rem); }
.menu-card-visual::after { background: linear-gradient(180deg, #3a240759, #2a1a04bf); }
.menu-badge {
  border-color: #ffdb9199;
  background: #2a1a0499;
  color: #ffe6a3;
}
.menu-number { color: #ffd98a; }
.menu-card h3 { color: var(--cream); }
.menu-copy { color: #ecd9b4; }
.menu-status { border-top-color: #ffeec42e; color: #d9c498; }
.menu-section .section-note { color: #d3bd92; }
/* Schedule now meets the night directly, like the amber section does. */
.schedule-section { padding-bottom: 4.5rem; }
@media (max-width: 600px) { .schedule-section { padding-bottom: 3.25rem; } }
.access-section { padding-top: 5rem; }
@media (max-width: 600px) { .access-section { padding-top: 3.5rem; } }
/* Venue stated on one line: label, colon, place name. */
.access-place-line { display: flex; align-items: baseline; flex-wrap: wrap; gap: 0; }
.access-place-line > b { font-size: 0.9375rem; font-weight: 700; color: #d6dcef; letter-spacing: .06em; }
.access-place-line > i { font-style: normal; font-size: 1.0625rem; color: var(--gold); margin: 0 0.1875rem; }
.access-place-line > span { font-size: 1.625rem; letter-spacing: .06em; color: var(--cream); font-weight: 700; }
@media (max-width: 600px) {
  .access-place-line > b { font-size: 0.8125rem; }
  .access-place-line > span { font-size: 1.4375rem; }
}

/* 一押しメニュー: lantern light pooling in the night, not a pasted-on panel. */
.menu-section {
  background:
    linear-gradient(180deg, #18204e 0, transparent 5.5rem),
    linear-gradient(0deg, #18204e 0, transparent 5.5rem),
    radial-gradient(ellipse 90% 70% at 50% 42%, #c2821f73 0, transparent 72%),
    radial-gradient(ellipse at 14% 6%, #e0a63a59 0, transparent 54%),
    linear-gradient(170deg, #7d4a12 0%, #68390d 55%, #4e2a0b 100%);
  box-shadow: none;
  color: var(--cream);
}
.menu-section .eyebrow-label { color: #ffd98a; }
.menu-card-visual::after { background: linear-gradient(180deg, #2c190459, #1d10029e); }
.menu-card-visual img { filter: saturate(.7) brightness(.62) blur(0.1875rem); }
.menu-badge { border-color: #ffd58699; background: #1f110299; color: #ffdf98; }
.menu-number { color: #ffcf78; }
.menu-copy { color: #eed9af; }
.menu-status { border-top-color: #ffe9b82e; color: #d6bf92; }
.menu-section .section-note { color: #cfb88c; }
.menu-section .section-heading > p { color: #f0dcb2; }

/* 一押しメニュー: one flat lantern amber. */
.menu-section { background: #8a4f12; }

/* 開催スケジュール: one flat white ground, dark season passes on top. */
.schedule-section {
  background: #ffffff;
  box-shadow: none;
  color: #20344f;
}
.schedule-section::before { color: #1c2b4a0f; }
.schedule-section::after { background: repeating-linear-gradient(180deg, #64839326 0 0.0625rem, transparent 0.0625rem 0.75rem); }
.season-tab::before,
.season-tab::after,
.season-tab[aria-selected=true]::before,
.season-tab[aria-selected=true]::after {
  background: #ffffff;
  box-shadow: inset 0 0 0 0.0625rem #d9d5cc99;
}
.schedule-section .section-heading > p,
.schedule-note { color: #5a6471; }
.schedule-gate { color: #8089969e; }

/* Amber muted a touch so it pairs with the warmer night instead of fighting it. */
.menu-section { background: #7d4a16; }
/* Embers rather than stars inside the amber band. */
.menu-section .night-sparkle { background: #ffe6b0; box-shadow: 0 0 0.5rem #ffd98a7a; opacity: .22; }
.menu-section .night-sparkle--cross { background: #fff1cd; box-shadow: 0 0 0.75rem #ffd98aa6; }

/* 一押しメニュー: the brand gold itself, with navy type — the logo's own pairing. */
.menu-section {
  background: var(--gold);
  color: #161d4b;
}
.menu-section .night-sparkles { display: none; }
.menu-section .eyebrow-label { color: #161d4b; }
.menu-section .eyebrow-label::before {
  background: linear-gradient(180deg, #2b3f72 0%, #16254c 45%, #0b1533 100%);
  box-shadow: 0 0 0.5rem #161d4b33;
}
.menu-section h2 { color: #0e1b3c; }
.menu-section .section-heading > p { color: #33436d; }

/* Pending photos blend into the gold rather than sitting on it as dark blocks. */
.menu-card-visual img { filter: saturate(.5) brightness(1.12) blur(0.1875rem); }
.menu-card-visual::after { background: linear-gradient(180deg, #f6c76073 0%, #f1be55d9 100%); }
.menu-badge {
  border: 0;
  padding: 0.625rem 1.5rem;
  background: #18204e;
  color: var(--gold);
  letter-spacing: .18em;
  box-shadow: 0 0.5rem 1.5rem #161d4b40;
}
.menu-number { color: #3b4b77; }
.menu-card h3 { color: #0e1b3c; }
.menu-copy { color: #3d4a70; }
.menu-status { border-top-color: #161d4b3d; color: #4e5a7d; }
.menu-section .section-note { color: #4e5a7d; }

/* More air between sections, top and bottom. */
.about-section { padding-block: 6.5rem 6.5rem; }
.menu-section { padding-block: 6.5rem 7rem; }
.experience-section { padding-block: 7rem 6.5rem; }
.schedule-section { padding: 6.5rem 0 6.5rem; }
.access-section { padding-block: 7rem 4.5rem; }
.host-section { padding-block: 3rem 5.5rem; }
.faq-section { padding-block: 3rem 6rem; }
.join-section { padding-block: 5rem 2rem; }
.follow-section { padding-block: 4.25rem 6rem; }
.ribbon-lead { padding-top: 3.25rem; padding-bottom: 2rem; }
.food-ribbon-divider--double { padding: 3.5rem 0 4.25rem; }

@media (max-width: 900px) {
  .about-section { padding-block: 5.5rem 5.5rem; }
  .menu-section { padding-block: 5.5rem 5.75rem; }
  .experience-section { padding-block: 5.75rem 5.5rem; }
  .schedule-section { padding: 5.5rem 0 5.5rem; }
  .access-section { padding-block: 5.75rem 4rem; }
  .host-section { padding-block: 2.5rem 4.75rem; }
  .faq-section { padding-block: 2.5rem 5rem; }
}
@media (max-width: 600px) {
  .about-section { padding-block: 4.5rem 5rem; }
  .menu-section { padding-block: 4.5rem 5rem; }
  .experience-section { padding-block: 5rem 4.75rem; }
  .schedule-section { padding: 4.75rem 0 4.5rem; }
  .access-section { padding-block: 5rem 3.25rem; }
  .host-section { padding-block: 2.5rem 4rem; }
  .faq-section { padding-block: 2.5rem 4.5rem; }
  .join-section { padding-block: 3.75rem 1.5rem; }
  .follow-section { padding-block: 3.25rem 4.25rem; }
  .ribbon-lead { padding-top: 2.5rem; padding-bottom: 1.5rem; }
  .food-ribbon-divider--double { padding: 2.5rem 0 3rem; }
}

/* ===== Greige panels: one paper tone shared by the menu and schedule sections ===== */
:root {
  --paper: #e8e2d6;
  --paper-ink: #16233f;
  --paper-muted: #5e6274;
  --paper-line: #16233f26;
}

/* --- 一押しメニュー --- */
.menu-section {
  background: var(--paper);
  color: var(--paper-ink);
}
.menu-section .eyebrow-label { color: #8a5a0f; }
.menu-section .eyebrow-label::before {
  background: linear-gradient(180deg, #ffeec0 0%, #e4a93f 42%, #a86d1c 100%);
  box-shadow: 0 0 0.5rem #b8832c40;
}
.menu-section h2 { color: var(--paper-ink); }
.menu-section .section-heading > p { color: var(--paper-muted); }
.menu-card-visual img { filter: saturate(.52) brightness(1.06) blur(0.1875rem); }
.menu-card-visual::after { background: linear-gradient(180deg, #e8e2d666 0%, #e8e2d6cc 100%); }
.menu-badge {
  border: 0;
  padding: 0.625rem 1.5rem;
  background: var(--paper-ink);
  color: var(--gold);
  letter-spacing: .18em;
  box-shadow: 0 0.5rem 1.5rem #16233f3d;
}
.menu-number { color: #8a5a0f; }
.menu-card h3 { color: var(--paper-ink); }
.menu-copy { color: var(--paper-muted); }
.menu-status { border-top-color: var(--paper-line); color: #777a89; }
.menu-section .section-note { color: #777a89; }

/* --- 開催スケジュール --- */
.schedule-section {
  background: var(--paper);
  box-shadow: none;
  color: var(--paper-ink);
}
.schedule-section::before { color: #16233f0f; }
.schedule-section::after { background: repeating-linear-gradient(180deg, #16233f1f 0 0.0625rem, transparent 0.0625rem 0.75rem); }
.schedule-section .eyebrow-label { color: #8a5a0f; }
.schedule-section .eyebrow-label::before {
  background: linear-gradient(180deg, #ffeec0 0%, #e4a93f 42%, #a86d1c 100%);
  box-shadow: 0 0 0.5rem #b8832c40;
}
.schedule-section .section-heading h2 { color: var(--paper-ink); }
.schedule-section .section-heading > p,
.schedule-note { color: var(--paper-muted); }
.schedule-gate { color: #8a8d9c; }
.season-tab::before,
.season-tab::after,
.season-tab[aria-selected=true]::before,
.season-tab[aria-selected=true]::after {
  background: var(--paper);
  box-shadow: inset 0 0 0 0.0625rem #c4bdae99;
}

/* Header over a greige section: flip the type to navy. */
.site-header.on-light { text-shadow: none; }
.site-header.on-light .brand-name,
.site-header.on-light .brand > span,
.site-header.on-light .original-header #main-nav > a,
.original-header.on-light #main-nav > a,
.site-header.on-light .nav-social a,
.site-header.on-light .lang-toggle { color: #16233f; }
.site-header.on-light .brand-name > span { color: #9a6a12; }
.site-header.on-light .lang-toggle { border-color: #16233f59; }
.site-header.on-light .lang-toggle:hover { background: #16233f; border-color: #16233f; color: var(--cream); }
.original-header.on-light #main-nav > a::before {
  background: linear-gradient(180deg, #ffe09a 0%, #d79a33 40%, #9a6a12 100%);
  box-shadow: 0 0 0.4375rem #9a6a1259;
  opacity: .85;
}
.site-header.on-light .menu-toggle { border-color: #16233f4d; }
.site-header.on-light .menu-toggle span { background: #16233f; }
.site-header,
.site-header .brand-name,
.site-header .brand > span,
.original-header #main-nav > a,
.site-header .nav-social a,
.site-header .lang-toggle { transition: color .35s ease, border-color .35s ease, background .2s ease; }
/* style.css pins .schedule-section .eyebrow to 0.75rem; match the other labels. */
.schedule-section .eyebrow-label { font-size: 1.0625rem; letter-spacing: .13em; }
@media (max-width: 600px) { .schedule-section .eyebrow-label { font-size: 0.9375rem; letter-spacing: .11em; } }
/* ID-based nav rules outrank the plain .on-light ones; match their specificity. */
.original-header.on-light #main-nav > a,
.original-header.on-light #main-nav .nav-social a { color: #16233f; }
.original-header.on-light #main-nav .nav-social { border-left-color: #16233f33; }
.original-header.on-light #main-nav .nav-social a:hover,
.original-header.on-light #main-nav .nav-social a:focus-visible { color: #9a6a12; }
.original-header.on-light #main-nav > a:hover { color: #9a6a12; }

/* ===== Back to one night sky: menu and schedule return to navy ===== */
.menu-section {
  background: none;
  color: var(--cream);
}
.menu-section .night-sparkles { display: block; }
.menu-section .night-sparkle { background: #ffffff; box-shadow: 0 0 0.375rem #ffffff73; opacity: .18; }
.menu-section .night-sparkle--cross { background: #ffffff; box-shadow: 0 0 0.6875rem #ffffffb3; }
.menu-section .eyebrow-label { color: var(--gold); }
.menu-section .eyebrow-label::before {
  background: linear-gradient(180deg, #fff2b3 0%, #f4c65f 38%, #dd9a40 100%);
  box-shadow: 0 0 0.625rem #f7cc6899;
}
.menu-section h2 { color: var(--cream); }
.menu-section .section-heading > p { color: var(--muted); }
.menu-card-visual img { filter: saturate(.55) brightness(.52) blur(0.1875rem); }
.menu-card-visual::after { background: linear-gradient(180deg, #18204e59, #18204eb5); }
.menu-badge {
  padding: 0.5625rem 1.375rem;
  border: 0.0625rem solid #f6c76080;
  background: #18204eb8;
  color: var(--gold);
  letter-spacing: .14em;
  box-shadow: none;
}
.menu-number { color: var(--gold); }
.menu-card h3 { color: var(--cream); }
.menu-copy { color: var(--muted); }
.menu-status { border-top-color: var(--line); color: #9aa4c6; }
.menu-section .section-note { color: var(--muted); }

.schedule-section {
  background: #18204e;
  box-shadow: none;
  color: var(--cream);
}
.schedule-section::before { color: #ffffff0a; }
.schedule-section::after { background: repeating-linear-gradient(180deg, #f6c76022 0 0.0625rem, transparent 0.0625rem 0.75rem); }
.schedule-section .eyebrow-label { color: var(--gold); }
.schedule-section .eyebrow-label::before {
  background: linear-gradient(180deg, #fff2b3 0%, #f4c65f 38%, #dd9a40 100%);
  box-shadow: 0 0 0.625rem #f7cc6899;
}
.schedule-section .section-heading h2 { color: var(--cream); }
.schedule-section .section-heading > p,
.schedule-note { color: #b9c3dc; }
.schedule-gate { color: #aeb8cf; }
.season-tab::before,
.season-tab::after,
.season-tab[aria-selected=true]::before,
.season-tab[aria-selected=true]::after {
  background: #18204e;
  box-shadow: inset 0 0 0 0.0625rem #7580a088;
}
/* Dividers carry some of the spacing again, so trim the section padding a little. */
.about-section { padding-block: 5.5rem 5.5rem; }
.menu-section { padding-block: 5rem 5.5rem; }
.experience-section { padding-block: 5.5rem 5rem; }
.schedule-section { padding: 5rem 0 5rem; }
.access-section { padding-block: 5.5rem 4.5rem; }
@media (max-width: 600px) {
  .about-section { padding-block: 3.75rem 4.25rem; }
  .menu-section { padding-block: 3.75rem 4.25rem; }
  .experience-section { padding-block: 4rem 4rem; }
  .schedule-section { padding: 4rem 0 3.75rem; }
  .access-section { padding-block: 4rem 3.25rem; }
}

/* ===== 一押しメニュー: three sealed tags, waiting to be opened ===== */
.menu-grid { gap: 2.25rem; padding-block: 1.25rem 0.5rem; align-items: start; }
.menu-card {
  position: relative;
  padding: 1.125rem 1.125rem 1.375rem;
  border: 0.0625rem dashed #f6c76066;
  border-radius: 1.25rem;
  background: #ffffff07;
  transition: transform .55s cubic-bezier(.2, .72, .22, 1), border-color .45s ease, background .45s ease, box-shadow .55s ease;
}
/* Hand-placed, not grid-stamped. */
.menu-grid > article:nth-child(1) { transform: translateY(0.75rem) rotate(-1.1deg); }
.menu-grid > article:nth-child(2) { transform: translateY(-0.875rem) rotate(0.8deg); }
.menu-grid > article:nth-child(3) { transform: translateY(1.25rem) rotate(-0.5deg); }
.menu-grid > article:hover {
  transform: translateY(-0.375rem) rotate(0deg);
  border-color: #f6c760b8;
  background: #ffffff0f;
  box-shadow: 0 1.375rem 3.25rem #04091f73, 0 0 1.75rem #f6c76017;
}

/* A lantern hangs over each tag. */
.menu-card::before {
  content: '';
  position: absolute;
  top: -1.5rem;
  left: 50%;
  translate: -50% 0;
  width: 0.0625rem;
  height: 1.5rem;
  background: linear-gradient(180deg, transparent, #f6c76073);
}
.menu-card::after {
  content: '';
  position: absolute;
  top: -1.9375rem;
  left: 50%;
  translate: -50% 0;
  width: 0.6875rem;
  height: 1.0625rem;
  border-radius: 0.1875rem 0.1875rem 0.25rem 0.25rem;
  clip-path: polygon(22% 0, 78% 0, 100% 20%, 88% 100%, 12% 100%, 0 20%);
  background: linear-gradient(180deg, #fff2b3 0%, #f4c65f 38%, #dd9a40 100%);
  box-shadow: 0 0 0.75rem #f7cc6899;
  transition: box-shadow .45s ease, transform .45s ease;
}
.menu-grid > article:hover::after {
  box-shadow: 0 0 1.25rem #ffd97ae0, 0 0 2.5rem #f6c76059;
  transform: translateY(-0.125rem);
}

.menu-card-visual { border-radius: 0.875rem; }
.menu-card-visual img {
  height: 13.75rem;
  filter: saturate(.5) brightness(.42) blur(0.3125rem);
  transition: filter .7s ease, transform .9s cubic-bezier(.18, .74, .2, 1);
}
/* A glimpse of what is behind the seal. */
.menu-grid > article:hover .menu-card-visual img {
  filter: saturate(.95) brightness(.78) blur(0.0625rem);
  transform: scale(1.04);
}
.menu-card-visual::after { background: linear-gradient(180deg, #18204e66, #18204ec4); transition: opacity .6s ease; }
.menu-grid > article:hover .menu-card-visual::after { opacity: .55; }

/* The badge becomes a stamp pressed on at an angle. */
.menu-badge {
  rotate: -7deg;
  padding: 0.625rem 1.25rem;
  border: 0.0625rem solid #f6c76099;
  border-radius: 0.375rem;
  background: #0c1838d9;
  color: var(--gold);
  font-size: 0.75rem;
  letter-spacing: .22em;
  box-shadow: 0 0 0 0.1875rem #0c183859, 0 0.5rem 1.25rem #04091f80;
  transition: rotate .5s cubic-bezier(.2, .72, .22, 1), opacity .5s ease;
}
.menu-grid > article:hover .menu-badge { rotate: -2deg; opacity: .85; }

.menu-number {
  position: absolute;
  top: 1.625rem;
  right: 1.625rem;
  z-index: 2;
  margin: 0;
  font: 500 1.0625rem/1 var(--latin);
  letter-spacing: .08em;
  color: #fff3cf;
  text-shadow: 0 0.125rem 0.75rem #04091fcc;
}
.menu-card h3 { margin: 1.125rem 0 0.5rem; }
.menu-status { margin-top: 0.75rem; padding-top: 0.6875rem; }

@media (max-width: 768px) {
  .menu-grid { gap: 2.5rem; }
  .menu-grid > article:nth-child(1),
  .menu-grid > article:nth-child(2),
  .menu-grid > article:nth-child(3) { transform: rotate(-0.6deg); }
  .menu-grid > article:nth-child(2) { transform: rotate(0.7deg); }
  .menu-card-visual img { height: 14rem; }
}

/* Lanterns drift up through the programmes section. */
.experience-lantern-field {
  position: absolute;
  inset: 0;
  z-index: -1;
  overflow: hidden;
  pointer-events: none;
}
.experience-lantern-field .lantern { opacity: .72; filter: drop-shadow(0 0 0.625rem #ffa54b59); }
.experience-section:not(.sparkles-visible) .experience-lantern-field .lantern { animation-play-state: paused; }
@media (prefers-reduced-motion: reduce) {
  .experience-lantern-field .lantern { opacity: .35; }
}
/* Keep the rising lanterns around the heading only, fading out before the cards. */
.experience-lantern-field {
  inset: 0 0 auto 0;
  height: 24rem;
  -webkit-mask-image: linear-gradient(180deg, transparent 0, #000 16%, #000 52%, transparent 100%);
  mask-image: linear-gradient(180deg, transparent 0, #000 16%, #000 52%, transparent 100%);
}
.experience-lantern-field .lantern:nth-child(2n) { display: none; }
@media (max-width: 600px) { .experience-lantern-field { height: 17rem; } }
/* Menu tags printed on warm paper. */
.menu-card {
  background: #fff3d6;
  border-color: #d2a44e8c;
  box-shadow: 0 0.875rem 2.25rem #04091f4d;
}
.menu-grid > article:hover {
  background: #fff8e4;
  border-color: #c9922f;
  box-shadow: 0 1.375rem 3.25rem #04091f80, 0 0 1.75rem #f6c76026;
}
.menu-card h3 { color: #16233f; }
.menu-copy { color: #5f5a4f; }
.menu-status { border-top-color: #16233f26; color: #847d6d; }
.menu-copy { color: #3b4668; }
.menu-status { color: #5a6382; border-top-color: #16233f2b; }
/* Announcement plate on the same warm paper as the menu tags. */
.ribbon-lead-plate { background: #fff3d6; }

/* ===== Season passes printed on the same warm paper ===== */
.schedule-tabs .season-tab {
  color: #16233f;
  border-color: color-mix(in srgb, var(--season-accent) 40%, #d9cdb2);
  border-top-color: var(--season-accent);
  background:
    radial-gradient(ellipse at 88% 15%, color-mix(in srgb, var(--season-accent) 18%, transparent) 0 13%, transparent 14%),
    linear-gradient(145deg, #fffaec 0%, #fff3d6 100%);
  box-shadow: 0 0.625rem 1.75rem #04091f4d;
}
.schedule-tabs .season-tab > b { color: #16233f; text-shadow: none; }
.schedule-tabs .season-tab b > span { color: color-mix(in srgb, var(--season-deep) 62%, #9a93a6); }
.schedule-tabs .season-tab .season-top { color: var(--season-deep); }
.schedule-tabs .season-tab .season-top i {
  color: var(--season-deep);
  background: color-mix(in srgb, var(--season-accent) 20%, #fff);
  border: 0.0625rem solid color-mix(in srgb, var(--season-accent) 44%, transparent);
}
.schedule-tabs .season-tab[aria-selected=true] {
  color: #16233f;
  border-color: var(--season-accent);
  border-top-color: var(--season-accent);
  background:
    radial-gradient(ellipse at 84% 18%, color-mix(in srgb, var(--season-accent) 22%, transparent) 0 14%, transparent 15%),
    linear-gradient(145deg, #fffdf4 0%, #fff6e0 100%);
  box-shadow: 0 1.125rem 2.75rem #04091f66;
}
.schedule-tabs .season-tab[aria-selected=true] .season-top { color: var(--season-deep); }
.schedule-tabs .season-tab[aria-selected=true] b > span { color: var(--season-deep); }
.schedule-tabs .season-tab .season-star { color: var(--season-accent); opacity: .5; }

.season-panel {
  color: #16233f;
  border-color: color-mix(in srgb, var(--panel-accent) 44%, #d9cdb2);
  background:
    radial-gradient(ellipse at 92% 13%, color-mix(in srgb, var(--panel-accent) 16%, transparent) 0 11%, transparent 12%),
    linear-gradient(145deg, #fffaec 0%, #fff3d6 100%);
  box-shadow: 0 1.875rem 4.5rem #04091f59;
  backdrop-filter: none;
}
.season-panel::after { color: var(--panel-deep); opacity: .4; }
.season-panel .season-intro h3 { color: #16233f; }
.season-panel .season-intro > p { color: #4a5270; }
.season-panel .outlined-label {
  color: var(--panel-deep);
  border-color: color-mix(in srgb, var(--panel-accent) 56%, transparent);
  background: color-mix(in srgb, var(--panel-accent) 14%, #fff);
}
.season-panel .store-count { border-top-color: #16233f1f; }
.season-panel .store-count > strong { color: var(--panel-deep); text-shadow: 0 0.25rem 0 #fff; }
.season-panel .store-count > span { color: #3b4668; }
.season-panel .store-count small { color: #6b7490; }
.season-panel .event-details { border-color: #16233f1a; background: #ffffff40; }
.season-panel .event-details > div { border-color: #16233f1f; }
.season-panel .event-details dt { color: #6b7490; }
.season-panel .event-details dd { color: #16233f; }
.season-panel .event-details dd small { color: #6b7490; }
/* Per-season backgrounds are set at nth-child specificity; give each a paper version. */
.schedule-tabs .season-tab:nth-child(2),
.schedule-tabs .season-tab:nth-child(3) {
  background:
    radial-gradient(ellipse at 88% 15%, color-mix(in srgb, var(--season-accent) 18%, transparent) 0 13%, transparent 14%),
    linear-gradient(145deg, #fffaec 0%, #fff3d6 100%);
}
.schedule-tabs .season-tab:nth-child(2)[aria-selected=true],
.schedule-tabs .season-tab:nth-child(2)[aria-selected=true]:hover,
.schedule-tabs .season-tab:nth-child(3)[aria-selected=true],
.schedule-tabs .season-tab:nth-child(3)[aria-selected=true]:hover {
  background:
    radial-gradient(ellipse at 84% 18%, color-mix(in srgb, var(--season-accent) 22%, transparent) 0 14%, transparent 15%),
    linear-gradient(145deg, #fffdf4 0%, #fff6e0 100%);
}
.schedule-tabs .season-tab > span:nth-last-child(2) { color: #4a5270; }
.schedule-tabs .season-tab:hover {
  border-color: color-mix(in srgb, var(--season-accent) 72%, #c7b58e);
  box-shadow: 0 1.25rem 2.625rem #04091f5c, inset 0 0.0625rem #fff;
}

/* ===== Season passes, redrawn as real tickets ===== */
.schedule-tabs .season-tab {
  position: relative;
  overflow: visible;
  padding: 0 0 0 0;
  min-height: 13.25rem;
  border-radius: 0.875rem;
  border-top-width: 0.3125rem;
  display: flex;
  flex-direction: column;
}
/* Coloured header band carrying the volume and season. */
.schedule-tabs .season-tab .season-top {
  margin: 0;
  padding: 0.8125rem 1.375rem 0.75rem;
  background: color-mix(in srgb, var(--season-accent) 26%, #fff8e6);
  border-bottom: 0.0625rem solid color-mix(in srgb, var(--season-accent) 32%, transparent);
  border-radius: 0.5rem 0.5rem 0 0;
  font-size: 0.6875rem;
  letter-spacing: .18em;
  color: var(--season-deep);
  justify-content: space-between;
  width: 100%;
}
.schedule-tabs .season-tab .season-top i {
  min-height: 0;
  padding: 0.1875rem 0.5625rem;
  background: #fff;
  border-color: color-mix(in srgb, var(--season-accent) 52%, transparent);
  font-size: 0.5rem;
}
.schedule-tabs .season-tab > b {
  margin: 0;
  padding: 1.3125rem 1.375rem 0;
  font-size: clamp(2rem, 3.1vw, 2.625rem);
  line-height: 1.2;
}
/* The stub below the perforation. */
.schedule-tabs .season-tab > span:nth-last-child(2) {
  margin-top: auto;
  padding: 1.0625rem 1.375rem 1.125rem;
  font-size: 0.6875rem;
  letter-spacing: .02em;
  color: #4a5270;
}
/* Perforation: a dashed rule with a punched hole at each end. */
.schedule-tabs .season-tab {
  background-image:
    repeating-linear-gradient(90deg, color-mix(in srgb, var(--season-accent) 62%, #b3a98f) 0 0.3125rem, transparent 0.3125rem 0.6875rem),
    radial-gradient(ellipse at 88% 15%, color-mix(in srgb, var(--season-accent) 18%, transparent) 0 13%, transparent 14%),
    linear-gradient(145deg, #fffaec 0%, #fff3d6 100%);
  background-size: 100% 0.0625rem, 100% 100%, 100% 100%;
  background-position: 0 calc(100% - 3.5rem), 0 0, 0 0;
  background-repeat: no-repeat, no-repeat, no-repeat;
}
.schedule-tabs .season-tab::before,
.schedule-tabs .season-tab::after {
  top: auto;
  bottom: calc(3.5rem - 0.6875rem);
  transform: none;
  width: 1.375rem;
  height: 1.375rem;
  background: #18204e;
  box-shadow: none;
  border: 0;
}
.schedule-tabs .season-tab::before { left: -0.6875rem; }
.schedule-tabs .season-tab::after { right: -0.6875rem; }
/* Season emblem, pressed on like a stamp. */
.schedule-tabs .season-tab .season-star {
  right: 1.125rem;
  top: 4.25rem;
  display: grid;
  place-items: center;
  width: 2.5rem;
  height: 2.5rem;
  border-radius: 50%;
  border: 0.0625rem dashed color-mix(in srgb, var(--season-accent) 70%, transparent);
  background: color-mix(in srgb, var(--season-accent) 16%, #fff);
  color: var(--season-deep);
  font-size: 1.125rem;
  opacity: 1;
  filter: none;
  rotate: -9deg;
  transition: rotate .5s cubic-bezier(.2, .72, .22, 1), background .35s ease;
}
.schedule-tabs .season-tab:hover .season-star { rotate: 0deg; background: color-mix(in srgb, var(--season-accent) 26%, #fff); }
.schedule-tabs .season-tab[aria-selected=true] .season-star { rotate: -4deg; }

@media (max-width: 900px) {
  .schedule-tabs .season-tab { min-height: 12rem; }
  .schedule-tabs .season-tab > b { padding-inline: 1rem; }
  .schedule-tabs .season-tab .season-top { padding-inline: 1rem; }
  .schedule-tabs .season-tab > span:nth-last-child(2) { padding-inline: 1rem; }
  .schedule-tabs .season-tab .season-star { width: 2.125rem; height: 2.125rem; font-size: 1rem; right: 0.75rem; }
}
@media (max-width: 600px) {
  .schedule-tabs .season-tab { min-height: 10.5rem; border-radius: 0.6875rem; }
  .schedule-tabs .season-tab .season-top { padding: 0.5625rem 0.625rem; font-size: 0.5rem; letter-spacing: .1em; flex-direction: row; }
  .schedule-tabs .season-tab .season-top i { padding: 0.125rem 0.3125rem; font-size: 0.375rem; }
  .schedule-tabs .season-tab > b { padding: 0.875rem 0.625rem 0; }
  .schedule-tabs .season-tab > span:nth-last-child(2) { display: block; padding: 0.625rem 0.625rem 0.75rem; font-size: 0.5rem; line-height: 1.7; }
  .schedule-tabs .season-tab { background-position: 0 calc(100% - 2.5rem), 0 0, 0 0; }
  .schedule-tabs .season-tab::before,
  .schedule-tabs .season-tab::after { bottom: calc(2.5rem - 0.5rem); width: 1rem; height: 1rem; }
  .schedule-tabs .season-tab::before { left: -0.5rem; }
  .schedule-tabs .season-tab::after { right: -0.5rem; }
  .schedule-tabs .season-tab .season-star { display: none; }
}
/* Perforation must survive the per-season background rules. */
.schedule-tabs .season-tab:nth-child(n) {
  background-image:
    repeating-linear-gradient(90deg, color-mix(in srgb, var(--season-deep) 45%, #b9ae92) 0 0.3125rem, transparent 0.3125rem 0.6875rem),
    radial-gradient(ellipse at 88% 15%, color-mix(in srgb, var(--season-accent) 18%, transparent) 0 13%, transparent 14%),
    linear-gradient(145deg, #fffaec 0%, #fff3d6 100%);
  background-size: 100% 0.09375rem, 100% 100%, 100% 100%;
  background-position: 0 calc(100% - 3.5rem), 0 0, 0 0;
  background-repeat: no-repeat;
}
.schedule-tabs .season-tab:nth-child(n)[aria-selected=true] {
  background-image:
    repeating-linear-gradient(90deg, color-mix(in srgb, var(--season-deep) 55%, #b9ae92) 0 0.3125rem, transparent 0.3125rem 0.6875rem),
    radial-gradient(ellipse at 84% 18%, color-mix(in srgb, var(--season-accent) 24%, transparent) 0 14%, transparent 15%),
    linear-gradient(145deg, #fffdf4 0%, #fff6e0 100%);
}
@media (max-width: 600px) {
  .schedule-tabs .season-tab:nth-child(n) { background-position: 0 calc(100% - 2.5rem), 0 0, 0 0; }
}

/* ===== The detail panel becomes the full ticket ===== */
.season-panel {
  background-image:
    repeating-linear-gradient(180deg, color-mix(in srgb, var(--panel-deep) 42%, #bdb196) 0 0.3125rem, transparent 0.3125rem 0.6875rem),
    radial-gradient(ellipse at 92% 13%, color-mix(in srgb, var(--panel-accent) 16%, transparent) 0 11%, transparent 12%),
    linear-gradient(145deg, #fffaec 0%, #fff3d6 100%);
  background-size: 0.09375rem 100%, 100% 100%, 100% 100%;
  background-position: 47.5% 0, 0 0, 0 0;
  background-repeat: no-repeat;
  overflow: visible;
}
/* Punched holes at both ends of the perforation. */
.season-panel .season-intro::before,
.season-panel .season-intro::after {
  content: '';
  position: absolute;
  left: 47.5%;
  translate: -50% 0;
  width: 1.5rem;
  height: 1.5rem;
  border-radius: 50%;
  background: #18204e;
  z-index: 2;
}
.season-panel .season-intro::before { top: -0.75rem; }
.season-panel .season-intro::after { bottom: -0.75rem; }
.season-panel .season-intro { position: static; }

@media (max-width: 900px) {
  .season-panel {
    background-size: 100% 0.09375rem, 100% 100%, 100% 100%;
    background-position: 0 47%, 0 0, 0 0;
    background-image:
      repeating-linear-gradient(90deg, color-mix(in srgb, var(--panel-deep) 42%, #bdb196) 0 0.3125rem, transparent 0.3125rem 0.6875rem),
      radial-gradient(ellipse at 92% 13%, color-mix(in srgb, var(--panel-accent) 16%, transparent) 0 11%, transparent 12%),
      linear-gradient(145deg, #fffaec 0%, #fff3d6 100%);
  }
  .season-panel .season-intro::before,
  .season-panel .season-intro::after {
    left: auto;
    top: 47%;
    translate: 0 -50%;
    width: 1.25rem;
    height: 1.25rem;
  }
  .season-panel .season-intro::before { left: -0.625rem; }
  .season-panel .season-intro::after { right: -0.625rem; bottom: auto; }
}

/* ===== Seasonal weather on the passes ===== */
.season-fx {
  position: absolute;
  inset: 0;
  z-index: 0;
  overflow: hidden;
  pointer-events: none;
  border-radius: inherit;
}
.schedule-tabs .season-tab > .season-top,
.schedule-tabs .season-tab > b,
.schedule-tabs .season-tab > span:nth-last-child(2),
.schedule-tabs .season-tab > .season-star { position: relative; z-index: 1; }
.season-panel > *:not(.season-fx) { position: relative; z-index: 1; }

/* Only the active season's weather plays inside the big panel. */
.season-panel > .season-fx { display: none; }
.season-panel[data-active-season="0"] > .season-fx--sakura,
.season-panel[data-active-season="1"] > .season-fx--fireworks,
.season-panel[data-active-season="2"] > .season-fx--leaf { display: block; }

.season-fx i {
  position: absolute;
  left: var(--x);
  width: var(--size);
  height: var(--size);
  will-change: transform, opacity;
}

/* 春 — 舞い散る桜 */
.season-fx--sakura i {
  top: -2rem;
  height: calc(var(--size) * 0.82);
  border-radius: 62% 18% 62% 18%;
  background: linear-gradient(140deg, #ffe3ee 0%, #f8b4cd 55%, #e98cb0 100%);
  box-shadow: 0 0 0.375rem #f6b9cf59;
  opacity: 0;
  animation: petal-fall var(--duration) linear var(--delay) infinite;
}
@keyframes petal-fall {
  0% { transform: translate3d(0, 0, 0) rotate(0deg); opacity: 0; }
  10% { opacity: .9; }
  85% { opacity: .75; }
  100% { transform: translate3d(calc(var(--drift) * 3rem), 18rem, 0) rotate(var(--spin)); opacity: 0; }
}

/* 夏 — 開く花火 */
.season-fx--fireworks i {
  top: var(--y);
  width: calc(var(--size) * 1.4);
  height: calc(var(--size) * 1.4);
  border-radius: 50%;
  border: 0.0625rem solid #a8e8ea;
  box-shadow: 0 0 0.75rem #7fd6dd73, inset 0 0 0.375rem #ffffff59;
  opacity: 0;
  animation: firework-burst var(--duration) ease-out var(--delay) infinite;
}
@keyframes firework-burst {
  0% { transform: scale(.12); opacity: 0; }
  14% { opacity: .95; }
  62% { opacity: .3; }
  100% { transform: scale(3.2); opacity: 0; }
}

/* 秋 — 散る紅葉 */
.season-fx--leaf i {
  top: -2rem;
  clip-path: polygon(50% 0, 62% 32%, 96% 28%, 70% 52%, 86% 88%, 50% 70%, 14% 88%, 30% 52%, 4% 28%, 38% 32%);
  background: linear-gradient(140deg, #f7c35f 0%, #e08a35 52%, #c2542a 100%);
  opacity: 0;
  animation: leaf-fall var(--duration) linear var(--delay) infinite;
}
@keyframes leaf-fall {
  0% { transform: translate3d(0, 0, 0) rotate(0deg); opacity: 0; }
  10% { opacity: .92; }
  85% { opacity: .78; }
  100% { transform: translate3d(calc(var(--drift) * 3.5rem), 18rem, 0) rotate(var(--spin)); opacity: 0; }
}

.schedule-section:not(.sparkles-visible) .season-fx i,
body.motion-paused .season-fx i,
body.tab-hidden .season-fx i { animation-play-state: paused; }
@media (prefers-reduced-motion: reduce) {
  .season-fx i { animation: none; opacity: .25; }
  .season-fx--sakura i, .season-fx--leaf i { top: 30%; }
}
/* The punched holes belong to the panel box, not to the intro column. */
.season-panel .season-intro { position: static; }
/* Ticket internals: keep the stub under the perforation and the stamp pinned. */
.schedule-tabs .season-tab > b { flex: 1 0 auto; display: block; }
.schedule-tabs .season-tab > span:nth-last-child(2) {
  margin-top: 0;
  padding: 0.875rem 1.375rem 0;
  height: 3.5rem;
  display: flex;
  align-items: center;
}
.schedule-tabs .season-tab .season-star { position: absolute; z-index: 2; }

/* ===== Night sky: more stars, wider range of sizes ===== */
.night-sparkle:nth-child(n+49) { display: block; }
.sky-star:nth-child(n+97) { display: block; }
.sky-star:nth-child(3n):not(.cross) { width: 0.09375rem; height: 0.09375rem; box-shadow: 0 0 0.3125rem #ffffff8c; }
.sky-star:nth-child(5n):not(.cross) { width: 0.1875rem; height: 0.1875rem; box-shadow: 0 0 0.5625rem #ffffffb8; }
.sky-star:nth-child(7n):not(.cross) { width: 0.3125rem; height: 0.3125rem; box-shadow: 0 0 0.9375rem #ffffffcc, 0 0 1.875rem #dfe7ff54; }
.sky-star:nth-child(11n):not(.cross) { width: 0.0625rem; height: 0.0625rem; box-shadow: none; opacity: .45; }
.sky-star.cross { width: 0.375rem; height: 0.375rem; }
.sky-star.cross:nth-child(4n) { width: 0.5rem; height: 0.5rem; box-shadow: 0 0 1.125rem #ffffffdb, 0 0 2.25rem #dfe7ff5e; }

.night-sparkle { opacity: .14; }
.night-sparkle:not(.night-sparkle--cross):nth-child(3n) { width: 0.1875rem; height: 0.1875rem; }
.night-sparkle:not(.night-sparkle--cross):nth-child(4n) { width: 0.0625rem; height: 0.0625rem; box-shadow: none; opacity: .1; }
.night-sparkle:not(.night-sparkle--cross):nth-child(5n) { width: 0.25rem; height: 0.25rem; box-shadow: 0 0 0.5625rem #ffffff8c; }
.night-sparkle:not(.night-sparkle--cross):nth-child(9n) { width: 0.3125rem; height: 0.3125rem; box-shadow: 0 0 0.75rem #ffffffa6; opacity: .2; }
.night-sparkle--cross { width: 0.3125rem; height: 0.3125rem; }
@media (max-width: 600px) {
  .night-sparkle:nth-child(n+73) { display: none; }
  .sky-star:nth-child(n+161) { display: none; }
}
/* Food ribbon runs edge to edge; no side fade. */
.food-ribbon-divider--double::before { background: none; }

/* ===== Ticket backgrounds, declared once and completely ===== */
.schedule-tabs .season-tab:nth-child(n),
.schedule-tabs .season-tab:nth-child(n)[aria-selected=true] {
  background-color: #fff3d6;
  background-image:
    repeating-linear-gradient(90deg, color-mix(in srgb, var(--season-deep) 48%, #b9ae92) 0 0.3125rem, transparent 0.3125rem 0.6875rem),
    radial-gradient(ellipse at 88% 15%, color-mix(in srgb, var(--season-accent) 20%, transparent) 0 13%, transparent 14%),
    linear-gradient(145deg, #fffaec 0%, #fff3d6 100%);
  background-size: 100% 0.09375rem, 100% 100%, 100% 100%;
  background-position: 0 calc(100% - 3.5rem), 0 0, 0 0;
  background-repeat: no-repeat, no-repeat, no-repeat;
  background-attachment: scroll;
}
.schedule-tabs .season-tab:nth-child(n)[aria-selected=true] {
  background-image:
    repeating-linear-gradient(90deg, color-mix(in srgb, var(--season-deep) 58%, #b9ae92) 0 0.3125rem, transparent 0.3125rem 0.6875rem),
    radial-gradient(ellipse at 84% 18%, color-mix(in srgb, var(--season-accent) 26%, transparent) 0 14%, transparent 15%),
    linear-gradient(145deg, #fffdf4 0%, #fff6e0 100%);
}
/* Unselected passes are quieter, not darker. */
.schedule-tabs .season-tab {
  opacity: 1;
  filter: none;
  transform: scale(.955);
}
.schedule-tabs .season-tab[aria-selected=true],
.schedule-tabs .season-tab[aria-selected=true]:hover { transform: scale(1); }
.schedule-tabs .season-tab:not([aria-selected=true]) .season-top,
.schedule-tabs .season-tab:not([aria-selected=true]) > b,
.schedule-tabs .season-tab:not([aria-selected=true]) > span:nth-last-child(2) { opacity: .82; }
.schedule-tabs .season-tab:hover { opacity: 1; transform: scale(.98); }
.schedule-tabs .season-tab[aria-selected=true]:hover { transform: scale(1); }

@media (max-width: 600px) {
  .schedule-tabs .season-tab:nth-child(n),
  .schedule-tabs .season-tab:nth-child(n)[aria-selected=true] {
    background-position: 0 calc(100% - 2.5rem), 0 0, 0 0;
  }
}

/* ===== Detail panel: paper for every season, declared without shorthands ===== */
.season-panel,
.season-panel[data-active-season="0"],
.season-panel[data-active-season="1"],
.season-panel[data-active-season="2"] {
  background-color: #fff3d6;
  background-image:
    repeating-linear-gradient(180deg, color-mix(in srgb, var(--panel-deep) 45%, #bdb196) 0 0.3125rem, transparent 0.3125rem 0.6875rem),
    radial-gradient(ellipse at 92% 13%, color-mix(in srgb, var(--panel-accent) 18%, transparent) 0 11%, transparent 12%),
    linear-gradient(145deg, #fffaec 0%, #fff3d6 100%);
  background-size: 0.09375rem 100%, 100% 100%, 100% 100%;
  background-position: 47.5% 0, 0 0, 0 0;
  background-repeat: no-repeat, no-repeat, no-repeat;
  color: #16233f;
  border-color: color-mix(in srgb, var(--panel-accent) 44%, #d9cdb2);
}
@media (max-width: 900px) {
  .season-panel,
  .season-panel[data-active-season="0"],
  .season-panel[data-active-season="1"],
  .season-panel[data-active-season="2"] {
    background-image:
      repeating-linear-gradient(90deg, color-mix(in srgb, var(--panel-deep) 45%, #bdb196) 0 0.3125rem, transparent 0.3125rem 0.6875rem),
      radial-gradient(ellipse at 92% 13%, color-mix(in srgb, var(--panel-accent) 18%, transparent) 0 11%, transparent 12%),
      linear-gradient(145deg, #fffaec 0%, #fff3d6 100%);
    background-size: 100% 0.09375rem, 100% 100%, 100% 100%;
    background-position: 0 47%, 0 0, 0 0;
  }
}
/* Recruitment heading given more presence. */
.join-heading h2 { font-size: 2.125rem; line-height: 1.6; }
.join-heading > p:last-child { font-size: 0.8125rem; margin-top: 1rem; }
@media (max-width: 900px) { .join-heading h2 { font-size: 1.875rem; } }
@media (max-width: 600px) { .join-heading h2 { font-size: 1.625rem; } .join-heading > p:last-child { font-size: 0.75rem; } }

/* Organiser block is now the fact table alone, two columns wide on desktop. */
.host-section { display: block; padding-block: 2.5rem 5rem; }
.host-details {
  display: grid;
  grid-template-columns: 1fr 1fr;
  column-gap: 4rem;
  margin: 0;
}
.host-details > div { border-bottom: 0.0625rem solid var(--line); }
.host-details > div:first-child { border-top: 0.0625rem solid var(--line); }
.host-details > div:nth-child(2) { border-top: 0.0625rem solid var(--line); }
@media (max-width: 900px) {
  .host-section { padding-block: 2rem 4.25rem; }
  .host-details { grid-template-columns: 1fr; column-gap: 0; }
  .host-details > div:nth-child(2) { border-top: 0; }
}
@media (max-width: 600px) {
  .host-section { padding-block: 1.75rem 3.5rem; }
}
/* Read the organiser facts as a continuation of the access block. */
.access-section { padding-bottom: 2.75rem; }
.host-section { padding-top: 0; }
@media (max-width: 900px) { .access-section { padding-bottom: 2.25rem; } }
@media (max-width: 600px) { .access-section { padding-bottom: 1.75rem; } }

/* Lanterns rise behind the closing SNS block. */
.follow-section { position: relative; isolation: isolate; }
.follow-lantern-field {
  position: absolute;
  inset: 0;
  z-index: -1;
  overflow: hidden;
  pointer-events: none;
  -webkit-mask-image: linear-gradient(180deg, transparent 0, #000 14%, #000 70%, transparent 100%);
  mask-image: linear-gradient(180deg, transparent 0, #000 14%, #000 70%, transparent 100%);
}
.follow-lantern-field .lantern { opacity: .68; filter: drop-shadow(0 0 0.625rem #ffa54b59); }
.follow-section:not(.sparkles-visible) .follow-lantern-field .lantern { animation-play-state: paused; }
@media (prefers-reduced-motion: reduce) { .follow-lantern-field .lantern { opacity: .32; } }

/* A denser sky: show every generated star on desktop, trim on phones. */
.night-sparkle { display: block; }
.sky-star { display: block; }
.night-sparkle:not(.night-sparkle--cross):nth-child(6n) { width: 0.125rem; height: 0.125rem; opacity: .12; box-shadow: none; }
.night-sparkle:not(.night-sparkle--cross):nth-child(13n) { width: 0.34375rem; height: 0.34375rem; box-shadow: 0 0 0.8125rem #ffffffb3; opacity: .22; }
.sky-star:nth-child(13n):not(.cross) { width: 0.375rem; height: 0.375rem; box-shadow: 0 0 1.125rem #ffffffd9, 0 0 2.25rem #dfe7ff54; }
.sky-star:nth-child(17n):not(.cross) { width: 0.09375rem; height: 0.09375rem; opacity: .4; box-shadow: none; }
@media (max-width: 900px) {
  .night-sparkle:nth-child(n+141) { display: none; }
  .sky-star:nth-child(n+261) { display: none; }
}
@media (max-width: 600px) {
  .night-sparkle:nth-child(n+97) { display: none; }
  .sky-star:nth-child(n+193) { display: none; }
}

/* Let the food ribbon peek into the first view. */
.hero { height: min(46rem, 84svh); min-height: 34rem; }
.hero-content { padding-top: 9.5rem; }
.food-ribbon-divider--double { padding-top: 2.25rem; }
@media (max-width: 900px) {
  .hero { height: min(42rem, 82svh); }
  .hero-content { padding-top: 8.5rem; }
}
@media (max-width: 600px) {
  .hero { height: 34rem; min-height: 0; }
  .hero-content { padding-top: 7.25rem; }
  .food-ribbon-divider--double { padding-top: 1.75rem; }
}

/* Push the skyline lower in the frame: taller crop, anchored at the sky. */
.hero-skyline {
  height: 135%;
  width: 100%;
  max-width: none;
  left: 0;
  top: 0;
  object-fit: cover;
  object-position: center top;
}
/* Slightly deeper scrim where the type sits. */
.hero::before {
  background:
    linear-gradient(180deg, #0b173b6b 0%, #10276514 34%, #101b4733 60%, #18204e 100%),
    radial-gradient(ellipse at 50% 34%, #0a123370 0, transparent 62%),
    radial-gradient(ellipse at 50% 30%, #212f6925, transparent 65%);
}
@media (max-width: 600px) {
  .hero-skyline {
    height: 128%;
    width: 150%;
    left: -25%;
    object-position: 54% top;
  }
}
/* The ribbon band had its own opaque fill, which masked the page's dot texture
   and showed up as a hard-edged rectangle. Let the page show through. */
.food-ribbon-divider--double { background: transparent; isolation: auto; }
/* The hero gradient only reached full navy at the very last pixel, so the bright
   water left a hard step where the hero met the page. Land it earlier. */
.hero::before {
  background:
    linear-gradient(180deg, #0b173b6b 0%, #10276514 32%, #101b4733 56%, #18204ee6 86%, #18204e 96%),
    radial-gradient(ellipse at 50% 34%, #0a123370 0, transparent 62%),
    radial-gradient(ellipse at 50% 30%, #212f6925, transparent 65%);
}
/* Ribbon photos sit flat on the night: no drop shadow, no border. */
.food-ribbon-divider--double .food-ribbon-item { box-shadow: none; border: 0; background: transparent; }

/* Container sections only reached the text column, so the page margins read as flat
   navy. Let each star field bleed out to the viewport edges. */
html, body { overflow-x: clip; }
.container > .night-sparkles {
  left: calc(-50vw + 50%);
  right: auto;
  width: 100vw;
  border-radius: 0;
}
/* Phones: keep more of the sky. */
@media (max-width: 600px) {
  .night-sparkle:nth-child(n+97) { display: block; }
  .sky-star:nth-child(n+193) { display: block; }
  .night-sparkle:nth-child(n+161) { display: none; }
  .sky-star:nth-child(n+301) { display: none; }
}
/* Bring the skyline back up a touch. */
.hero-skyline { height: 124%; }
@media (max-width: 600px) { .hero-skyline { height: 120%; } }

/* ===== Announcement plate: the loudest thing on the page ===== */
.ribbon-lead { padding-top: 3.5rem; padding-bottom: 3rem; }
.ribbon-lead-plate {
  position: relative;
  max-width: 58rem;
  padding: 4.25rem 4.5rem 3.5rem;
  border-radius: 2rem;
  background: #fff3d6;
  box-shadow:
    0 2.75rem 6.5rem #02061f8c,
    0 0 0 0.0625rem #ffe9b8,
    inset 0 0 0 0.4375rem #ffffffb3;
  opacity: 0;
  transform: translateY(2.25rem) scale(.965);
  transition: opacity .9s ease, transform 1.1s cubic-bezier(.16, 1, .3, 1);
}
.ribbon-lead-plate.is-live { opacity: 1; transform: none; }

/* A slow sheen travelling across the paper. */
.ribbon-lead-plate::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 0;
  border-radius: inherit;
  background: linear-gradient(104deg, transparent 40%, #ffffffcc 47%, transparent 56%);
  background-size: 260% 100%;
  background-repeat: no-repeat;
  background-position: 150% 0;
  pointer-events: none;
}
.ribbon-lead-plate.is-live::before { animation: plate-sheen 7.5s ease-in-out 1.1s infinite; }
@keyframes plate-sheen {
  0% { background-position: 150% 0; }
  38%, 100% { background-position: -70% 0; }
}
.ribbon-lead-plate > * { position: relative; z-index: 1; }

/* Seal, breathing. */
.ribbon-lead-seal {
  width: 3rem;
  height: 3rem;
  font-size: 1.125rem;
  border-width: 0.09375rem;
  box-shadow: 0 0 0 0.375rem #161d4b, 0 0 1.5rem #f6c76066;
}
.ribbon-lead-plate.is-live .ribbon-lead-seal { animation: seal-pulse 3.6s ease-in-out infinite; }
@keyframes seal-pulse {
  0%, 100% { transform: rotate(0deg) scale(1); }
  50% { transform: rotate(180deg) scale(1.08); }
}

/* Headline, considerably louder. */
.ribbon-lead-copy {
  font-size: clamp(1.75rem, 3.4vw, 2.625rem);
  line-height: 1.6;
  letter-spacing: .01em;
}
.ribbon-lead-rule { width: 5rem; margin-top: 1.875rem; height: 0.09375rem; }

.plate-highlights { margin-top: 2rem; }
.plate-highlights li { gap: 0.625rem; padding: 0 1.25rem; }
.plate-highlights strong { font-size: 1.375rem; }
.plate-highlights strong > span {
  font-size: 3rem;
  margin-right: 0.3125rem;
  font-variant-numeric: tabular-nums;
}
.plate-highlights small { font-size: 0.6875rem; }

@media (max-width: 900px) {
  .ribbon-lead-plate { padding: 3.25rem 2.5rem 2.75rem; }
  .plate-highlights strong { font-size: 1.125rem; }
  .plate-highlights strong > span { font-size: 2.375rem; }
}
@media (max-width: 600px) {
  .ribbon-lead { padding-top: 2.5rem; padding-bottom: 2rem; }
  .ribbon-lead-plate { padding: 2.625rem 1.25rem 2.25rem; border-radius: 1.5rem; box-shadow: 0 1.75rem 4rem #02061f8c, 0 0 0 0.0625rem #ffe9b8, inset 0 0 0 0.3125rem #ffffffb3; }
  .ribbon-lead-seal { width: 2.5rem; height: 2.5rem; font-size: 1rem; box-shadow: 0 0 0 0.3125rem #161d4b, 0 0 1.25rem #f6c76066; }
  .ribbon-lead-copy { font-size: 1.375rem; line-height: 1.75; }
  .ribbon-lead-rule { margin-top: 1.25rem; width: 3.25rem; }
  .plate-highlights { margin-top: 1.375rem; }
  .plate-highlights li { padding: 0 0.3125rem; gap: 0.375rem; }
  .plate-highlights strong { font-size: 0.8125rem; }
  .plate-highlights strong > span { font-size: 1.625rem; margin-right: 0.1875rem; }
  .plate-highlights small { font-size: 0.5rem; }
}
@media (prefers-reduced-motion: reduce) {
  .ribbon-lead-plate { opacity: 1; transform: none; transition: none; }
  .ribbon-lead-plate.is-live::before,
  .ribbon-lead-plate.is-live .ribbon-lead-seal { animation: none; }
}
/* The stacking rule above must not take the seal out of its pinned position. */
.ribbon-lead-plate > .ribbon-lead-seal { position: absolute; z-index: 2; }

/* ===== Lantern dividers: bigger lanterns, longer lines ===== */
.section-divider--lanterns {
  width: min(78rem, calc(100% - 3rem));
  height: 6.5rem;
  gap: 2.75rem;
  margin: -0.25rem auto 0.125rem;
}
.section-divider--lanterns > i { height: 0.09375rem; }
.section-divider--lanterns > span {
  width: 1.3125rem;
  height: 1.8125rem;
  border-radius: 0.375rem 0.375rem 0.5rem 0.5rem;
  box-shadow: 0 0 0.875rem #ffbe5b8c, 0 0 2.25rem #f2a84d4d;
}
.section-divider--lanterns > span::before {
  left: 0.1875rem;
  right: 0.1875rem;
  top: -0.3125rem;
  height: 0.3125rem;
  border-radius: 0.1875rem;
}
.section-divider--finale-lanterns { height: 6.5rem; margin-top: -1.25rem; }

@media (max-width: 900px) {
  .section-divider--lanterns { width: calc(100% - 2.5rem); height: 5.25rem; gap: 1.875rem; }
  .section-divider--lanterns > span { width: 1.125rem; height: 1.5625rem; }
  .section-divider--finale-lanterns { height: 5.25rem; }
}
@media (max-width: 600px) {
  .section-divider--lanterns { width: calc(100% - 1.75rem); height: 4.5rem; gap: 1.375rem; }
  .section-divider--lanterns > span { width: 1rem; height: 1.375rem; border-radius: 0.3125rem 0.3125rem 0.4375rem 0.4375rem; }
  .section-divider--lanterns > span::before { left: 0.15625rem; right: 0.15625rem; top: -0.25rem; height: 0.25rem; }
  .section-divider--finale-lanterns { height: 4.5rem; margin-top: -1rem; }
}

/* Keep the star field from showing through these reading blocks. */
.faq-section > div:not(.night-sparkles),
.faq-list,
.experience-small {
  position: relative;
  background-color: #18204e;
}
.experience-small { border-radius: inherit; }

/* ===== Hero date card: a special pass ===== */
.hero-schedule-card {
  position: relative;
  padding: 1.5rem 3rem 1.125rem;
  border: 0;
  border-radius: 1.25rem;
  gap: 0;
  background-color: #0b1434cc;
  background-image:
    linear-gradient(104deg, transparent 41%, #ffffff2e 47%, transparent 54%),
    repeating-linear-gradient(90deg, #f6c76080 0 0.25rem, transparent 0.25rem 0.5625rem),
    linear-gradient(180deg, #f6c76042 0, transparent 0.1875rem),
    radial-gradient(ellipse at 50% 0%, #f6c76014 0, transparent 68%);
  background-size: 280% 100%, calc(100% - 3rem) 0.0625rem, 100% 100%, 100% 100%;
  background-position: 160% 0, 1.5rem calc(100% - 3.125rem), 0 0, 0 0;
  background-repeat: no-repeat;
  backdrop-filter: blur(0.5rem) saturate(1.05);
  box-shadow:
    inset 0 0 0 0.0625rem #f6c76052,
    inset 0 0.1875rem 0 -0.0625rem #f6c760a6,
    0 1.75rem 4rem #02061fa6,
    0 0 2.5rem #f6c76014;
  animation: pass-sheen 9s ease-in-out 1.4s infinite;
}
@keyframes pass-sheen {
  0% { background-position: 160% 0, 1.5rem calc(100% - 3.125rem), 0 0, 0 0; }
  42%, 100% { background-position: -80% 0, 1.5rem calc(100% - 3.125rem), 0 0, 0 0; }
}
/* Punched notches, matching the season passes. */
.hero-schedule-card::before,
.hero-schedule-card::after {
  content: '';
  position: absolute;
  bottom: calc(3.125rem - 0.5625rem);
  width: 1.125rem;
  height: 1.125rem;
  border-radius: 50%;
  background: #18204e;
  z-index: 2;
}
.hero-schedule-card::before { left: -0.5625rem; }
.hero-schedule-card::after { right: -0.5625rem; }

.hero-schedule-card .hero-date { margin-top: 0; }
.hero-schedule-card .hero-location {
  margin-top: 0;
  padding-top: 1.0625rem;
  font-size: 0.75rem;
  letter-spacing: .08em;
  color: #e4e8f6;
}
.hero-schedule-card .date-large { font-size: 3rem; }
.hero-schedule-card .date-year { font-size: 1.4375rem; }
.hero-schedule-card .planned {
  border-color: #f6c760a6;
  background: #f6c76014;
  color: #ffe9b0;
  letter-spacing: .14em;
}

@media (max-width: 900px) {
  .hero-schedule-card { padding: 1.25rem 2.25rem 1rem; }
  .hero-schedule-card .date-large { font-size: 2.625rem; }
}
@media (max-width: 600px) {
  .hero-schedule-card {
    width: 100%;
    padding: 1.125rem 1.25rem 0.9375rem;
    border-radius: 1rem;
    background-size: 280% 100%, calc(100% - 1.75rem) 0.0625rem, 100% 100%, 100% 100%;
    background-position: 160% 0, 0.875rem calc(100% - 2.5rem), 0 0, 0 0;
  }
  @keyframes pass-sheen {
    0% { background-position: 160% 0, 0.875rem calc(100% - 2.5rem), 0 0, 0 0; }
    42%, 100% { background-position: -80% 0, 0.875rem calc(100% - 2.5rem), 0 0, 0 0; }
  }
  .hero-schedule-card::before,
  .hero-schedule-card::after { bottom: calc(2.5rem - 0.46875rem); width: 0.9375rem; height: 0.9375rem; }
  .hero-schedule-card::before { left: -0.46875rem; }
  .hero-schedule-card::after { right: -0.46875rem; }
  .hero-schedule-card .hero-location { padding-top: 0.8125rem; font-size: 0.6875rem; }
  .hero-schedule-card .date-large { font-size: 2.25rem; }
  .hero-schedule-card .date-year { font-size: 1.1875rem; }
}
@media (prefers-reduced-motion: reduce) { .hero-schedule-card { animation: none; } }

/* Hero sky thinned out; phone stars kept small. */
.sky-star:nth-child(n+181) { display: none; }
@media (max-width: 600px) {
  .sky-star:nth-child(n+141) { display: none; }
  .night-sparkle:nth-child(n+121) { display: none; }
  .sky-star { width: 0.09375rem; height: 0.09375rem; box-shadow: 0 0 0.3125rem #ffffff8c; }
  .sky-star:nth-child(3n):not(.cross) { width: 0.0625rem; height: 0.0625rem; box-shadow: none; opacity: .45; }
  .sky-star:nth-child(5n):not(.cross) { width: 0.125rem; height: 0.125rem; box-shadow: 0 0 0.375rem #ffffffa6; }
  .sky-star:nth-child(7n):not(.cross) { width: 0.1875rem; height: 0.1875rem; box-shadow: 0 0 0.5625rem #ffffffb8; }
  .sky-star:nth-child(13n):not(.cross) { width: 0.21875rem; height: 0.21875rem; box-shadow: 0 0 0.6875rem #ffffffc4; }
  .sky-star.cross { width: 0.1875rem; height: 0.1875rem; }
  .sky-star.cross:nth-child(4n) { width: 0.25rem; height: 0.25rem; box-shadow: 0 0 0.75rem #ffffffcc; }
  .night-sparkle { width: 0.09375rem; height: 0.09375rem; }
  .night-sparkle:not(.night-sparkle--cross):nth-child(3n) { width: 0.125rem; height: 0.125rem; }
  .night-sparkle:not(.night-sparkle--cross):nth-child(5n) { width: 0.15625rem; height: 0.15625rem; }
  .night-sparkle:not(.night-sparkle--cross):nth-child(9n) { width: 0.1875rem; height: 0.1875rem; }
  .night-sparkle:not(.night-sparkle--cross):nth-child(13n) { width: 0.21875rem; height: 0.21875rem; }
  .night-sparkle--cross { width: 0.1875rem; height: 0.1875rem; }
}

/* Header mark fades in once the hero has scrolled past. */
.site-header .brand {
  transition: opacity .5s ease, transform .6s cubic-bezier(.16, 1, .3, 1), visibility 0s;
}
.site-header.brand-hidden .brand {
  opacity: 0;
  visibility: hidden;
  transform: translateY(-0.5rem);
  pointer-events: none;
  transition: opacity .35s ease, transform .4s ease, visibility 0s linear .35s;
}
@media (prefers-reduced-motion: reduce) {
  .site-header .brand,
  .site-header.brand-hidden .brand { transition: none; }
}

/* ===== Announcement plate, redrawn as a festival notice board ===== */
.ribbon-lead-plate {
  max-width: 60rem;
  padding: 4rem 5.5rem 3.25rem 7rem;
  border-radius: 1.5rem;
  rotate: -0.5deg;
  background-color: #fff3d6;
  /* washi: four gold corner brackets over a faintly fibrous paper */
  background-image:
    linear-gradient(104deg, transparent 41%, #ffffffd1 47%, transparent 54%),
    linear-gradient(#c9992f 0 0), linear-gradient(#c9992f 0 0),
    linear-gradient(#c9992f 0 0), linear-gradient(#c9992f 0 0),
    linear-gradient(#c9992f 0 0), linear-gradient(#c9992f 0 0),
    linear-gradient(#c9992f 0 0), linear-gradient(#c9992f 0 0),
    repeating-linear-gradient(94deg, #00000005 0 0.0625rem, transparent 0.0625rem 0.3125rem),
    radial-gradient(ellipse at 22% 0%, #fffdf3 0, transparent 58%);
  background-size:
    260% 100%,
    2.5rem 0.09375rem, 0.09375rem 2.5rem,
    2.5rem 0.09375rem, 0.09375rem 2.5rem,
    2.5rem 0.09375rem, 0.09375rem 2.5rem,
    2.5rem 0.09375rem, 0.09375rem 2.5rem,
    100% 100%, 100% 100%;
  background-position:
    150% 0,
    1.25rem 1.25rem, 1.25rem 1.25rem,
    calc(100% - 1.25rem) 1.25rem, calc(100% - 1.25rem) 1.25rem,
    1.25rem calc(100% - 1.25rem), 1.25rem calc(100% - 1.25rem),
    calc(100% - 1.25rem) calc(100% - 1.25rem), calc(100% - 1.25rem) calc(100% - 1.25rem),
    0 0, 0 0;
  background-repeat: no-repeat;
  box-shadow: 0 2.75rem 6.5rem #02061f8c, 0 0 0 0.0625rem #e9c88b;
}
@keyframes plate-sheen {
  0% { background-position: 150% 0, 1.25rem 1.25rem, 1.25rem 1.25rem, calc(100% - 1.25rem) 1.25rem, calc(100% - 1.25rem) 1.25rem, 1.25rem calc(100% - 1.25rem), 1.25rem calc(100% - 1.25rem), calc(100% - 1.25rem) calc(100% - 1.25rem), calc(100% - 1.25rem) calc(100% - 1.25rem), 0 0, 0 0; }
  38%, 100% { background-position: -70% 0, 1.25rem 1.25rem, 1.25rem 1.25rem, calc(100% - 1.25rem) 1.25rem, calc(100% - 1.25rem) 1.25rem, 1.25rem calc(100% - 1.25rem), 1.25rem calc(100% - 1.25rem), calc(100% - 1.25rem) calc(100% - 1.25rem), calc(100% - 1.25rem) calc(100% - 1.25rem), 0 0, 0 0; }
}
.ribbon-lead-plate::before { display: none; }
.ribbon-lead-plate.is-live { animation: plate-sheen 8s ease-in-out 1.2s infinite; }

/* Vertical notice down the left edge. */
.plate-vertical {
  position: absolute;
  left: 2.75rem;
  top: 3.5rem;
  bottom: 3rem;
  display: flex;
  align-items: center;
  writing-mode: vertical-rl;
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: .42em;
  color: #9a6a12;
  border-left: 0.09375rem solid #c9992f66;
  padding-left: 0.9375rem;
  z-index: 1;
}

/* 落款 — a seal pressed in the lower corner. */
.plate-stamp {
  position: absolute;
  right: 2.5rem;
  bottom: 2.25rem;
  z-index: 1;
  display: grid;
  place-items: center;
  width: 3rem;
  height: 3rem;
  border: 0.15625rem solid #b4452f;
  border-radius: 0.375rem;
  color: #b4452f;
  font-size: 0.9375rem;
  font-weight: 700;
  line-height: 1.15;
  letter-spacing: .04em;
  writing-mode: vertical-rl;
  rotate: -6deg;
  opacity: .82;
}

.ribbon-lead-copy { text-align: left; }
.ribbon-lead-rule { margin-left: 0; margin-right: auto; }
.plate-highlights { justify-items: start; }
.plate-highlights li { align-items: flex-start; text-align: left; padding-left: 0; padding-right: 1.75rem; }
.plate-highlights li:first-child { border-left: 0; }
.plate-highlights small { text-align: left; }

@media (max-width: 900px) {
  .ribbon-lead-plate { padding: 3.25rem 2.5rem 2.75rem 5rem; }
  .plate-vertical { left: 1.875rem; font-size: 0.75rem; letter-spacing: .34em; }
  .plate-stamp { right: 1.5rem; bottom: 1.5rem; width: 2.5rem; height: 2.5rem; font-size: 0.8125rem; }
}
@media (max-width: 600px) {
  .ribbon-lead-plate { padding: 2.5rem 1.25rem 3.75rem 3rem; rotate: -0.4deg; border-radius: 1.125rem; }
  .plate-vertical { left: 1rem; top: 2.25rem; bottom: 4.25rem; font-size: 0.625rem; letter-spacing: .3em; padding-left: 0.625rem; }
  .plate-stamp { right: 1.125rem; bottom: 1.125rem; width: 2.125rem; height: 2.125rem; font-size: 0.6875rem; border-width: 0.125rem; }
  .plate-highlights li { padding-right: 0.5rem; }
}
/* Skyline up another notch. */
.hero-skyline { height: 114%; }
@media (max-width: 600px) { .hero-skyline { height: 112%; } }

/* ===== Plate back to centre, with a colourful headline ===== */
.ribbon-lead-plate {
  max-width: 58rem;
  padding: 4rem 4rem 3.5rem;
  text-align: center;
}
.ribbon-lead-copy { text-align: center; }
.ribbon-lead-rule { margin-left: auto; margin-right: auto; }
.plate-highlights { justify-items: stretch; }
.plate-highlights li { align-items: center; text-align: center; padding: 0 1.25rem; }
.plate-highlights small { text-align: center; }
.plate-stamp { right: 1.875rem; bottom: 1.5rem; }

/* Three festival colours already used elsewhere on the page. */
.ribbon-lead-copy > b { font-weight: 700; }
.ribbon-lead-copy .c-world { color: #c14a2b; }
.ribbon-lead-copy .c-local { color: #1f7a80; }
.ribbon-lead-copy .c-all   { color: #b8820f; }

@media (max-width: 900px) { .ribbon-lead-plate { padding: 3.25rem 2.25rem 2.75rem; } }
@media (max-width: 600px) {
  .ribbon-lead-plate { padding: 2.5rem 1.25rem 3.25rem; }
  .plate-highlights li { padding: 0 0.3125rem; }
  .plate-stamp { right: 1rem; bottom: 1rem; }
}
/* Desktop: skyline higher still. */
@media (min-width: 601px) { .hero-skyline { height: 104%; } }

/* ===== Countdown banner notched into the top of the plate ===== */
.plate-countdown {
  position: absolute;
  top: 0;
  left: 50%;
  translate: -50% -50%;
  z-index: 2;
  display: inline-flex;
  align-items: baseline;
  gap: 0.5rem;
  margin: 0;
  padding: 0.5625rem 1.75rem 0.625rem;
  border-radius: 6.25rem;
  background: linear-gradient(180deg, #ffe39a 0%, #f6c760 48%, #e0a434 100%);
  color: #16233f;
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: .14em;
  white-space: nowrap;
  box-shadow:
    0 0 0 0.3125rem #161d4b,
    0 0.75rem 1.75rem #02061f8c,
    inset 0 0.0625rem #fff6d6;
}
.plate-countdown b {
  font: 500 1.75rem/1 var(--latin);
  letter-spacing: -.02em;
  font-variant-numeric: tabular-nums;
}
.ribbon-lead-plate.is-live .plate-countdown { animation: countdown-beat 3.2s ease-in-out infinite; }
@keyframes countdown-beat {
  0%, 100% { translate: -50% -50%; box-shadow: 0 0 0 0.3125rem #161d4b, 0 0.75rem 1.75rem #02061f8c, inset 0 0.0625rem #fff6d6; }
  50% { translate: -50% -56%; box-shadow: 0 0 0 0.3125rem #161d4b, 0 1.125rem 2.5rem #02061fa6, 0 0 2.25rem #f6c76066, inset 0 0.0625rem #fff6d6; }
}
.ribbon-lead-plate { padding-top: 4.5rem; }

@media (max-width: 600px) {
  .plate-countdown { padding: 0.4375rem 1.125rem 0.5rem; font-size: 0.625rem; letter-spacing: .1em; gap: 0.375rem; box-shadow: 0 0 0 0.25rem #161d4b, 0 0.5rem 1.25rem #02061f8c, inset 0 0.0625rem #fff6d6; }
  .plate-countdown b { font-size: 1.3125rem; }
  .ribbon-lead-plate { padding-top: 3.25rem; }
}
@media (prefers-reduced-motion: reduce) { .ribbon-lead-plate.is-live .plate-countdown { animation: none; } }
/* Countdown badge toned down: no hard navy ring, gold closer to the paper. */
.plate-countdown {
  padding: 0.5rem 1.625rem 0.5625rem;
  background: linear-gradient(180deg, #fff6dc 0%, #f7e0ab 52%, #eccf8c 100%);
  border: 0.0625rem solid #d6ae63;
  color: #6b4d10;
  box-shadow: 0 0.625rem 1.5rem #02061f59;
}
.plate-countdown b { color: #a8761a; }
.ribbon-lead-plate.is-live .plate-countdown { animation: countdown-beat 3.6s ease-in-out infinite; }
@keyframes countdown-beat {
  0%, 100% { translate: -50% -50%; box-shadow: 0 0.625rem 1.5rem #02061f59; }
  50% { translate: -50% -54%; box-shadow: 0 1rem 2.125rem #02061f73, 0 0 1.5rem #f6c76040; }
}
@media (max-width: 600px) {
  .plate-countdown { padding: 0.375rem 1rem 0.4375rem; box-shadow: 0 0.5rem 1.125rem #02061f59; }
}

/* ===== Food photography brought forward ===== */
/* Ribbon: brighter, fuller colour. */
.food-ribbon-item img { filter: saturate(1.06) brightness(1.02); }
.food-ribbon-divider--double .food-ribbon-item::after {
  background: linear-gradient(180deg, transparent 58%, #09102f8c 100%);
}

/* Featured menu: the dishes read through the "coming soon" veil. */
.menu-card-visual img { filter: saturate(.92) brightness(.86) blur(0.09375rem); }
.menu-card-visual::after { background: linear-gradient(180deg, #18204e21, #18204e73); }
.menu-grid > article:hover .menu-card-visual img { filter: saturate(1.05) brightness(1) blur(0); }
.menu-grid > article:hover .menu-card-visual::after { opacity: .4; }
.menu-badge { background: #0c1838e0; }

/* ===== Arc of English drifting above the concept copy ===== */
.about-arc {
  display: block;
  width: min(44rem, 100%);
  margin: 0 auto 0.75rem;
  overflow: hidden;
}
.about-arc text {
  fill: #e7ecff;
  font-family: var(--latin);
  font-size: 1.375rem;
  font-weight: 500;
  letter-spacing: .02em;
  opacity: .17;
}
body.motion-paused .about-arc animate,
body.tab-hidden .about-arc animate { animation-play-state: paused; }
@media (prefers-reduced-motion: reduce) { .about-arc text { opacity: .12; } }

/* Centre the concept copy on phones too. */
@media (max-width: 600px) {
  .about-copy { text-align: center; }
  .about-arc { width: 100%; margin-bottom: 0.375rem; }
  .about-arc text { font-size: 1.5rem; }
}
/* Arc: larger, wider set, and dropping over the heading. */
.about-arc {
  width: min(58rem, 112%);
  max-width: none;
  margin: 0 auto -4.5rem;
  position: relative;
  z-index: 0;
}
.about-arc text { font-size: 1.75rem; opacity: .15; }
.about-copy { position: relative; z-index: 1; }
@media (max-width: 900px) {
  .about-arc { width: min(48rem, 118%); margin-bottom: -3.75rem; }
  .about-arc text { font-size: 1.875rem; }
}
@media (max-width: 600px) {
  .about-arc { width: 128%; margin-left: -14%; margin-bottom: -3rem; }
  .about-arc text { font-size: 2.25rem; opacity: .16; }
}
/* Arc: bigger again, with more air between letters. */
.about-arc { width: min(70rem, 126%); margin-bottom: -5.5rem; }
.about-arc text { font-size: 2.125rem; opacity: .14; }
@media (max-width: 900px) {
  .about-arc { width: 132%; margin-left: -16%; margin-bottom: -4.5rem; }
  .about-arc text { font-size: 2.375rem; }
}
@media (max-width: 600px) {
  .about-arc { width: 150%; margin-left: -25%; margin-bottom: -3.5rem; }
  .about-arc text { font-size: 2.75rem; opacity: .15; }
}

/* Desktop panorama continues behind the first food ribbon. */
@media (min-width: 901px) {
  .hero { height: max(64rem, calc(100dvh + 12rem)); min-height: 64rem; background: #081c53; }
  .hero .hero-skyline {
    inset: 12rem 0 auto;
    width: 100%;
    height: calc(100% - 12rem);
    object-position: center bottom;
    /* Extend the sky above the photograph without rearranging its scenery. */
    -webkit-mask-image: linear-gradient(to bottom, transparent, #000 16%);
    mask-image: linear-gradient(to bottom, transparent, #000 16%);
  }
  .hero::before {
    background: linear-gradient(180deg, #0b173b66 0%, #0b173b18 55%, #18204e22 88%, var(--night) 100%),
      radial-gradient(ellipse at 50% 38%, #0b173b30, transparent 48%);
  }
  .hero + .food-ribbon-divider--double {
    position: relative;
    z-index: 2;
    /* Show the first row within the viewport while the panorama extends below it. */
    margin-top: calc(max(46rem, calc(100dvh - 9rem)) - max(64rem, calc(100dvh + 12rem)) + 2rem);
    padding-top: 0;
  }
  .food-ribbon-divider--double .food-ribbon-track { animation-duration: 90s; }
}

/* An editorial event ticket: ivory stock, navy ink, a detachable countdown. */
.ribbon-lead .ribbon-ticket {
  display: grid; grid-template-columns: minmax(0, 1fr) 14rem;
  max-width: 68rem; padding: 0; margin-inline: auto; overflow: visible;
  background: #f5f1e7; color: #161d4b; border: 0;
  border-radius: .75rem; rotate: none; opacity: 1; transform: none;
  box-shadow: 0 1.5rem 3rem #070c2526; animation: none;
  text-align: left;
}
.ribbon-ticket::before, .ribbon-ticket::after { display: none; }
.ribbon-ticket__main { padding: 2rem 2.75rem; min-width: 0; }
.ribbon-ticket__heading, .ribbon-ticket__footer {
  display: flex; justify-content: space-between; gap: 1rem;
  font: 500 .6rem/1.6 var(--latin); letter-spacing: .14em;
}
.ribbon-ticket__heading { padding-bottom: 1.1rem; border-bottom: 1px solid #161d4b26; }
.ribbon-ticket__heading > span:last-child { color: #997135; }
.ribbon-ticket .ribbon-lead-copy { margin: 1.5rem 0; text-align: left; font-size: clamp(1.5rem, 2.2vw, 2.125rem); line-height: 1.65; letter-spacing: .025em; }
.ribbon-ticket .ribbon-lead-copy > b { color: #161d4b; font-weight: 700; }
.ribbon-ticket .ribbon-lead-copy .c-all { color: #987137; }
.ribbon-ticket .plate-highlights { display: grid; grid-template-columns: 1.2fr 1fr 1fr; margin: 1.75rem 0; gap: 1rem; }
.ribbon-ticket .plate-highlights li { padding: 0 0 0 1rem; align-items: flex-start; text-align: left; border: 0; border-left: 1px solid #161d4b26; gap: .3rem; }
.ribbon-ticket .plate-highlights li:first-child { padding-left: 0; border: 0; }
.ribbon-ticket .plate-highlights strong { color: #161d4b; font-size: 1.1rem; white-space: nowrap; }
.ribbon-ticket .plate-highlights strong > span { color: #161d4b; font: 500 2.25rem/1 var(--latin); }
.ribbon-ticket .plate-highlights small { color: #6a6d7d; text-align: left; font-size: .6rem; }
.ribbon-ticket__footer { padding-top: 1rem; border-top: 1px solid #161d4b26; color: #777887; font-size: .5rem; }
.ribbon-ticket__stub {
  position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center;
  padding: 2rem 1.5rem; border-left: 1px dashed #161d44; border-radius: 0 .75rem .75rem 0; background: #ebe5d6;
}
.ribbon-ticket__stub::before, .ribbon-ticket__stub::after { content: ''; position: absolute; left: -.75rem; width: 1.5rem; height: 1.5rem; border-radius: 50%; background: var(--night); }
.ribbon-ticket__stub::before { top: -.75rem; }
.ribbon-ticket__stub::after { bottom: -.75rem; }
.ribbon-ticket__edition { font: 500 .55rem/1.5 var(--latin); letter-spacing: .14em; }
.ribbon-ticket .plate-countdown {
  position: static; display: flex; flex-direction: column; align-items: center; gap: .3rem;
  margin: 1.25rem 0 .6rem; padding: 0; translate: none; background: none; border: 0; border-radius: 0;
  box-shadow: none; color: #676877; font-size: .625rem; letter-spacing: .12em; animation: none;
}
.ribbon-ticket .plate-countdown b { color: #161d4b; font: 400 4.5rem/1 var(--latin); letter-spacing: -.06em; }
.ribbon-ticket__spark { color: #a98140; font-size: 1.25rem; margin: .35rem 0 .75rem; }
.ribbon-ticket__date { font: 500 .8rem/1.5 var(--latin); letter-spacing: .05em; }
.ribbon-ticket__status { font-size: .55rem; color: #6a6d7d; margin-top: .3rem; }
.ribbon-ticket__barcode { width: 7rem; height: 1.5rem; margin-top: 1.25rem; opacity: .65; background: repeating-linear-gradient(90deg,#18204e 0 1px,transparent 1px 3px,#18204e 3px 5px,transparent 5px 6px,#18204e 6px 7px,transparent 7px 11px); }
.ribbon-ticket__serial { font: 400 .45rem/1.5 var(--latin); letter-spacing: .18em; margin-top: .4rem; }
@media(max-width: 900px) {
  .ribbon-lead .ribbon-ticket { grid-template-columns: minmax(0,1fr) 11rem; }
  .ribbon-ticket__main { padding: 1.75rem; }
  .ribbon-ticket .plate-highlights { gap: .6rem; }
  .ribbon-ticket .plate-highlights li { padding-left: .6rem; }
}
@media(max-width: 600px) {
  .ribbon-lead .ribbon-ticket { grid-template-columns: 1fr; }
  .ribbon-ticket__main { padding: 1.5rem 1.25rem; }
  .ribbon-ticket__heading { font-size: .48rem; letter-spacing: .08em; }
  .ribbon-ticket .ribbon-lead-copy { font-size: 1.4rem; }
  .ribbon-ticket .plate-highlights { gap: .5rem; }
  .ribbon-ticket .plate-highlights strong { font-size: .8rem; }
  .ribbon-ticket .plate-highlights strong > span { font-size: 1.7rem; }
  .ribbon-ticket .plate-highlights small { font-size: .48rem; }
  .ribbon-ticket__footer { flex-direction: column; gap: .2rem; }
  .ribbon-ticket__stub { border-left: 0; border-top: 1px dashed #161d4444; border-radius: 0 0 .75rem .75rem; padding: 1.25rem; }
  .ribbon-ticket__stub::before { top: -.75rem; left: -.75rem; }
  .ribbon-ticket__stub::after { top: -.75rem; bottom: auto; left: auto; right: -.75rem; }
  .ribbon-ticket .plate-countdown { flex-direction: row; align-items: baseline; margin: .75rem 0; gap: .75rem; }
  .ribbon-ticket .plate-countdown b { font-size: 3rem; }
  .ribbon-ticket__spark, .ribbon-ticket__barcode, .ribbon-ticket__serial { display: none; }
}
.ribbon-lead-plate.ribbon-ticket.is-live { animation: none; }
.ribbon-lead-plate.ribbon-ticket.is-live .plate-countdown { animation: none; translate: none; box-shadow: none; }

/* A colourful invitation, with centred typography and festive accents. */
.ribbon-lead .ribbon-ticket {
  background: #fff7e8;
  box-shadow: 0 1.5rem 3rem #070c2533;
}
.ribbon-ticket__main {
  position: relative; text-align: center;
  background: radial-gradient(circle at 8% 26%, #f1b93f24 0 3%, transparent 3.2%),
    radial-gradient(circle at 92% 73%, #27a49b18 0 4%, transparent 4.2%);
  border-top: .35rem solid #edb749; border-radius: .75rem 0 0 .75rem;
}
.ribbon-ticket__heading { align-items: center; justify-content: center; flex-wrap: wrap; color: #278b89; border-bottom-color: #dcaa583d; letter-spacing: .13em; }
.ribbon-ticket__heading > span:last-child { color: #c44d43; padding: .15rem .55rem; border: 1px solid #c44d4340; border-radius: 999px; }
.ribbon-ticket .ribbon-lead-copy { text-align: center; font-size: clamp(1.6rem, 2.3vw, 2.25rem); line-height: 1.8; margin: 1.5rem 0; }
.ribbon-ticket .ribbon-lead-copy .c-world { color: #ce5141; }
.ribbon-ticket .ribbon-lead-copy .c-local { color: #168b8a; }
.ribbon-ticket .ribbon-lead-copy .c-all { color: #bc801b; }
.ribbon-ticket .plate-highlights { grid-template-columns: repeat(3,minmax(0,1fr)); gap: .8rem; margin: 1.5rem 0; }
.ribbon-ticket .plate-highlights li, .ribbon-ticket .plate-highlights li:first-child {
  padding: .85rem .4rem; border: 1px solid #d35c4230; border-radius: .85rem;
  background: #fbe3d7; align-items: center; justify-content: center; text-align: center;
}
.ribbon-ticket .plate-highlights li:nth-child(2) { background: #dcefeb; border-color: #228d8530; }
.ribbon-ticket .plate-highlights li:nth-child(3) { background: #f8ebc3; border-color: #be891a30; }
.ribbon-ticket .plate-highlights li:nth-child(1) strong { color: #b94935; }
.ribbon-ticket .plate-highlights li:nth-child(2) strong, .ribbon-ticket .plate-highlights li:nth-child(2) strong > span { color: #137b78; }
.ribbon-ticket .plate-highlights li:nth-child(3) strong, .ribbon-ticket .plate-highlights li:nth-child(3) strong > span { color: #a76d13; }
.ribbon-ticket .plate-highlights small { text-align: center; color: #616477; }
.ribbon-ticket__footer { justify-content: center; flex-wrap: wrap; border-color: #dcaa583d; color: #7a7683; }
.ribbon-ticket__stub { background: #f6c760; border-left-color: #a873275e; color: #713d26; }
.ribbon-ticket__edition { color: #8e492d; text-align: center; }
.ribbon-ticket .plate-countdown { color: #8c4c30; }
.ribbon-ticket .plate-countdown b { color: #b94335; font-size: 5rem; }
.ribbon-ticket__spark { color: #fff9e9; font-size: 2rem; text-shadow: -1.2rem -.4rem 0 #cf5845, 1.2rem .25rem 0 #278d86; margin: .25rem 0 .65rem; }
.ribbon-ticket__date { color: #793b28; }
.ribbon-ticket__status { color: #845c36; }
.ribbon-ticket__barcode { opacity: .35; }
@media(max-width:600px) {
  .ribbon-ticket__main { border-radius: .75rem .75rem 0 0; padding: 1.5rem 1rem; }
  .ribbon-ticket .ribbon-lead-copy { font-size: 1.35rem; }
  .ribbon-ticket .plate-highlights { gap: .4rem; }
  .ribbon-ticket .plate-highlights li, .ribbon-ticket .plate-highlights li:first-child { padding: .8rem .2rem; border-radius: .6rem; }
  .ribbon-ticket .plate-highlights strong { font-size: .7rem; }
  .ribbon-ticket .plate-highlights small { font-size: .46rem; }
  .ribbon-ticket__footer { align-items: center; }
  .ribbon-ticket .plate-countdown b { font-size: 3.5rem; }
}

/* Grown-up festival ticket: restrained ink colours, expressive type. */
.ribbon-lead .ribbon-ticket { background: #f6f1e6; }
.ribbon-ticket__main {
  background: none; border-top: 0;
  padding-top: 2.25rem; padding-bottom: 2.25rem;
}
.ribbon-ticket__heading { color: #161d4b; border-bottom-color: #161d4b24; letter-spacing: .16em; }
.ribbon-ticket__heading > span:last-child { color: #161d4b; border: 0; padding: 0; }
.ribbon-ticket .ribbon-lead-copy {
  margin: 1.75rem 0 2rem;
  font-size: clamp(1.75rem, 2.5vw, 2.5rem);
  line-height: 1.65; letter-spacing: .025em;
}
.ribbon-ticket .ribbon-lead-copy .c-world,
.ribbon-ticket .ribbon-lead-copy .c-local,
.ribbon-ticket .ribbon-lead-copy .c-all { color: #161d4b; }
.ribbon-ticket .plate-highlights { gap: 0; align-items: stretch; margin: 1.5rem 0 2rem; }
.ribbon-ticket .plate-highlights li,
.ribbon-ticket .plate-highlights li:first-child,
.ribbon-ticket .plate-highlights li:nth-child(2),
.ribbon-ticket .plate-highlights li:nth-child(3) {
  background: none; border: 0; border-radius: 0;
  padding: .25rem .75rem; gap: .65rem;
}
.ribbon-ticket .plate-highlights li + li { border-left: 1px solid #161d4b26; }
.ribbon-ticket .plate-highlights li:nth-child(n) strong { color: #161d4b; font-size: 1.125rem; }
.ribbon-ticket .plate-highlights li:nth-child(n) strong > span {
  color: #161d4b; font: 500 3.25rem/.95 var(--latin); letter-spacing: -.045em;
}
.ribbon-ticket .plate-highlights small { color: #777681; font-size: .6rem; }
.ribbon-ticket__footer { border-color: #161d4b24; color: #73727a; }
.ribbon-ticket__stub { background: #eae3d6; color: #161d4b; border-left-color: #161d4b55; }
.ribbon-ticket__edition { color: #161d4b; letter-spacing: .16em; }
.ribbon-ticket .plate-countdown { margin: 1.75rem 0; gap: .5rem; color: #686675; }
.ribbon-ticket .plate-countdown b { color: #b64a3b; font: 500 5rem/1 var(--latin); letter-spacing: -.06em; }
.ribbon-ticket__spark { display: none; }
.ribbon-ticket__date { color: #161d4b; }
.ribbon-ticket__status { color: #74707a; }
.ribbon-ticket__barcode { opacity: .5; margin-top: 1.5rem; }
@media(max-width:900px) {
  .ribbon-ticket .plate-highlights li:nth-child(n) strong { font-size: .9rem; }
  .ribbon-ticket .plate-highlights li:nth-child(n) strong > span { font-size: 2.5rem; }
}
@media(max-width:600px) {
  .ribbon-ticket__main { padding: 1.5rem 1rem; }
  .ribbon-ticket .ribbon-lead-copy { font-size: 1.4rem; margin: 1.5rem 0; }
  .ribbon-ticket .plate-highlights li:nth-child(n) { padding: .25rem .3rem; }
  .ribbon-ticket .plate-highlights li:nth-child(n) strong { font-size: .7rem; }
  .ribbon-ticket .plate-highlights li:nth-child(n) strong > span { font-size: 2rem; }
  .ribbon-ticket .plate-highlights small { font-size: .46rem; }
  .ribbon-ticket .plate-countdown { margin: .9rem 0; }
  .ribbon-ticket .plate-countdown b { font-size: 3.5rem; }
}

/* Warm food accents belong in the headline, with the ticket kept restrained. */
.ribbon-ticket .ribbon-lead-copy .c-world { color: #a76a0b; }
.ribbon-ticket .ribbon-lead-copy .c-local {
  color: #161d4b;
  background: linear-gradient(transparent 66%, #f3c64f 66%, #f3c64f 94%, transparent 94%);
  padding-inline: .08em;
  box-decoration-break: clone;
  -webkit-box-decoration-break: clone;
}
.ribbon-ticket .ribbon-lead-copy .c-all { color: #a76a0b; }

/* Open-air gourmet invitation, integrated into the night sky. */
.ribbon-lead .gourmet-invitation {
  position: relative; isolation: isolate; display: block; max-width: 72rem;
  margin: 0 auto; padding: 2rem 2rem 1rem; overflow: visible;
  border: 0; border-radius: 0; background: none; box-shadow: none;
  color: var(--cream); text-align: center; rotate: none; transform: none; opacity: 1;
}
.ribbon-lead .gourmet-invitation.is-live { animation: none; }
.gourmet-invitation::before, .gourmet-invitation::after { display: none; }
.gourmet-invitation__intro { display: flex; justify-content: center; align-items: center; gap: 1.5rem; margin-bottom: 2rem; }
.gourmet-invitation__eyebrow { font: 500 .65rem/1.6 var(--latin); letter-spacing: .22em; color: #e3c68f; }
.gourmet-invitation .plate-countdown, .gourmet-invitation.is-live .plate-countdown {
  position: static; display: inline-flex; align-items: baseline; gap: .5rem; translate: none;
  margin: 0; padding: .5rem .9rem; border: 1px solid #edc76a45; border-radius: 999px;
  background: #f4ca6410; color: #eddbb4; box-shadow: none; animation: none;
  font-size: .6rem; letter-spacing: .08em;
}
.gourmet-invitation .plate-countdown b { font: 500 1.2rem/1 var(--latin); color: #f4cc69; }
.gourmet-invitation .ribbon-lead-copy {
  margin: 0; color: #fff9eb; text-align: center; font-size: clamp(2rem, 3.65vw, 3.6rem);
  font-weight: 700; line-height: 1.65; letter-spacing: .035em;
}
.gourmet-invitation .ribbon-lead-copy .c-world,
.gourmet-invitation .ribbon-lead-copy .c-local { color: #f5ca64; background: none; }
.gourmet-invitation .ribbon-lead-copy .c-all { color: #fff9eb; }
.gourmet-invitation__message { margin: 1.5rem 0 2.75rem; font-size: .875rem; line-height: 2; letter-spacing: .1em; color: #c9cadd; }
.gourmet-invitation .plate-highlights {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 0; max-width: 48rem;
  margin: 0 auto; padding: 1.75rem 0; border-top: 1px solid #dfc68e35; border-bottom: 1px solid #dfc68e35;
}
.gourmet-invitation .plate-highlights li { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .6rem; padding: .25rem 1rem; border: 0; text-align: center; }
.gourmet-invitation .plate-highlights li + li { border-left: 1px solid #dfc68e26; }
.gourmet-invitation .plate-highlights strong { font-size: 1.25rem; color: #fff6e5; }
.gourmet-invitation .plate-highlights strong > span { font: 500 3.25rem/1 var(--latin); color: #f5ca64; letter-spacing: -.04em; }
.gourmet-invitation .plate-highlights small { color: #b6b9cf; text-align: center; font-size: .625rem; }
.gourmet-invitation__signature { display: block; margin-top: 1.5rem; font: 400 .6rem/1.5 var(--latin); letter-spacing: .3em; color: #bca679; }
.ribbon-lead:has(.gourmet-invitation) { padding-top: 2rem; padding-bottom: 3rem; }
@media(max-width:600px) {
  .ribbon-lead .gourmet-invitation { padding: 1rem 0; }
  .gourmet-invitation__intro { flex-direction: column; gap: .8rem; margin-bottom: 1.5rem; }
  .gourmet-invitation__eyebrow { font-size: .5rem; letter-spacing: .16em; }
  .gourmet-invitation .ribbon-lead-copy { font-size: clamp(1.25rem,5.4vw,2rem); letter-spacing: 0; line-height: 1.85; }
  .gourmet-invitation__message { font-size: .75rem; margin: 1.25rem 0 2rem; }
  .gourmet-invitation .plate-highlights { padding: 1.25rem 0; }
  .gourmet-invitation .plate-highlights li { padding: .2rem .25rem; gap: .4rem; }
  .gourmet-invitation .plate-highlights strong { font-size: .7rem; }
  .gourmet-invitation .plate-highlights strong > span { font-size: 2rem; }
  .gourmet-invitation .plate-highlights small { font-size: .46rem; }
}

/* Schedule tickets share the site's ivory, midnight-blue and gold palette. */
.schedule-section .schedule-tabs .season-tab:nth-child(n) {
  --season-accent: #cfac61;
  --season-deep: #161d4b;
  --season-soft: #faf5e9;
  --season-glow: #edcf8a;
  color: #161d4b;
  border-color: #d9ccb1;
  border-top-color: #c5aa72;
  background-color: #fff0bf;
  background-image:
    repeating-linear-gradient(90deg, #18204e40 0 .3125rem, transparent .3125rem .6875rem),
    linear-gradient(145deg, #fff3c7, #f3ecd9);
  background-size: 100% .09375rem, 100% 100%;
  background-position: 0 calc(100% - 3.5rem), 0 0;
  background-repeat: no-repeat;
  box-shadow: 0 .625rem 1.75rem #070c2533;
}
.schedule-section .schedule-tabs .season-tab:nth-child(n)[aria-selected=true] {
  border-color: #e9c575; border-top-color: #f6c760;
  background-image:
    repeating-linear-gradient(90deg, #18204e50 0 .3125rem, transparent .3125rem .6875rem),
    linear-gradient(145deg, #ffecaa, #fff3d6);
  box-shadow: 0 .75rem 2rem #070c2544, 0 0 0 1px #f6c76055;
}
.schedule-section .season-tab .season-top { background: #18204e08; color: #161d4b; }
.schedule-section .season-tab .season-top i { background: #18204e; color: #fff6df; border-color: #161d4b; }
.schedule-section .season-tab[aria-selected=true] .season-top i { background: #f6c760; color: #161d4b; border-color: #d6af58; }
.schedule-section .season-panel[data-active-season] {
  --panel-accent: #d1af65;
  --panel-deep: #161d4b;
  --panel-soft: #faf5e9;
  background-color: #fff0bf;
  background-image:
    repeating-linear-gradient(180deg, #18204e40 0 .3125rem, transparent .3125rem .6875rem),
    linear-gradient(125deg, #fff3c7, #f6e4a6);
  background-size: .09375rem 100%, 100% 100%;
  background-position: 47.5% 0, 0 0;
  background-repeat: no-repeat;
  border-color: #dfcfab; color: #161d4b;
  box-shadow: 0 1rem 2.5rem #070c2533;
}
.schedule-section .season-panel .season-intro h3,
.schedule-section .season-panel .store-count strong { color: #161d4b; }
.schedule-section .season-panel .outlined-label { background: #f6c76029; border-color: #b9914555; color: #725522; }
.schedule-section .season-fx { filter: sepia(1) saturate(.5); opacity: .28; }
@media(max-width:900px) {
  .schedule-section .season-panel[data-active-season] {
    background-image:
      repeating-linear-gradient(90deg, #18204e40 0 .3125rem, transparent .3125rem .6875rem),
      linear-gradient(125deg, #fff3c7, #f6e4a6);
    background-size: 100% .09375rem, 100% 100%;
    background-position: 0 47%, 0 0;
  }
}
@media(max-width:600px) {
  .schedule-section .schedule-tabs .season-tab:nth-child(n) { background-position: 0 calc(100% - 2.5rem), 0 0; }
}

/* Seasonal inks on the same light stock: sakura, sea-glass and amber. */
.schedule-section .schedule-tabs .season-tab:nth-child(1) { --season-accent: #b97791; --season-soft: #f5dfe6; --season-deep: #884a65; }
.schedule-section .schedule-tabs .season-tab:nth-child(2) { --season-accent: #428d92; --season-soft: #dceee6; --season-deep: #24616d; }
.schedule-section .schedule-tabs .season-tab:nth-child(3) { --season-accent: #b87742; --season-soft: #f3dec3; --season-deep: #85502c; }
.schedule-section .schedule-tabs .season-tab:nth-child(n) {
  border-top-color: var(--season-accent);
  background-image: repeating-linear-gradient(90deg, #18204e40 0 .3125rem, transparent .3125rem .6875rem), linear-gradient(145deg, #fff3c7, #f7e5a6);
}
.schedule-section .schedule-tabs .season-tab:nth-child(n)[aria-selected=true] {
  border-color: var(--season-accent);
  background-image: repeating-linear-gradient(90deg, #18204e50 0 .3125rem, transparent .3125rem .6875rem), linear-gradient(145deg, #ffecaa, #f4d47a);
  box-shadow: 0 .75rem 2rem #070c2544, 0 0 0 1px color-mix(in srgb, var(--season-accent) 35%, transparent);
}
.schedule-section .season-tab:nth-child(n) .season-top { background: var(--season-soft); color: var(--season-deep); }
.schedule-section .season-tab:nth-child(n) .season-top i { background: var(--season-soft); color: var(--season-deep); border-color: var(--season-accent); }
.schedule-section .season-tab:nth-child(n)[aria-selected=true] .season-top i { background: var(--season-deep); color: #fffaed; border-color: var(--season-deep); }
.schedule-section .season-panel[data-active-season="0"] { --panel-accent: #b97791; --panel-deep: #884a65; --panel-soft: #f5dfe6; }
.schedule-section .season-panel[data-active-season="1"] { --panel-accent: #428d92; --panel-deep: #24616d; --panel-soft: #dceee6; }
.schedule-section .season-panel[data-active-season="2"] { --panel-accent: #b87742; --panel-deep: #85502c; --panel-soft: #f3dec3; }
.schedule-section .season-panel[data-active-season] { border-color: color-mix(in srgb,var(--panel-accent) 55%,#e3d7bd); }
.schedule-section .season-panel .outlined-label { background: var(--panel-soft); border-color: color-mix(in srgb,var(--panel-accent) 45%,transparent); color: var(--panel-deep); }
.schedule-section .season-panel .store-count strong { color: var(--panel-deep); }
.schedule-section .season-fx { filter: saturate(.55); opacity: .5; }

/* Keep decorative marks separate from the ticket background in every state. */
.schedule-section .schedule-tabs .season-tab .season-star { display: none; }
.schedule-section .season-fx { filter: saturate(.8); opacity: .8; }
.schedule-section .season-fx--fireworks i {
  border-color: #478f98;
  border-width: .09375rem;
  box-shadow: 0 0 .5rem #559fa63d, inset 0 0 .25rem #76bbc033;
}
.schedule-section .schedule-tabs .season-tab:nth-child(n),
.schedule-section .schedule-tabs .season-tab:nth-child(n):hover,
.schedule-section .schedule-tabs .season-tab:nth-child(n):active,
.schedule-section .schedule-tabs .season-tab:nth-child(n)[aria-selected=true],
.schedule-section .schedule-tabs .season-tab:nth-child(n)[aria-selected=true]:hover {
  background: linear-gradient(145deg, #fff3c7, #f7e5a6) 0 0 / 100% 100% no-repeat;
  transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease;
}
.schedule-section .schedule-tabs .season-tab:nth-child(n)[aria-selected=true],
.schedule-section .schedule-tabs .season-tab:nth-child(n)[aria-selected=true]:hover {
  background: linear-gradient(145deg, #ffecaa, #f4d47a) 0 0 / 100% 100% no-repeat;
}
.schedule-section .schedule-tabs .season-tab > span:nth-last-child(2) {
  border-top: 1px dashed #161d4b40;
}

/* Small food portraits frame the invitation like discoveries along a night walk. */
.ribbon-lead .gourmet-invitation { padding-top: 3rem; padding-bottom: 2rem; }
.gourmet-invitation__dish { position: absolute; width: 10rem; z-index: -1; }
.gourmet-invitation__dish--left { left: -3.5rem; top: 8rem; rotate: -9deg; }
.gourmet-invitation__dish--right { right: -3.5rem; top: 12rem; rotate: 8deg; }
.gourmet-invitation__dish img {
  width: 100%; aspect-ratio: 1; object-fit: cover; border-radius: 50%;
  border: 1px solid #f5ca644d; padding: .4rem;
  box-shadow: 0 0 0 .65rem #f5ca6407, 0 1rem 2rem #05092340;
}
.gourmet-invitation__dish span { display: block; margin-top: .9rem; color: #f1d797; font-size: .7rem; letter-spacing: .08em; white-space: nowrap; }
.gourmet-invitation__dish::after { content: '✦'; position: absolute; color: #f5ca64; font-size: 1.6rem; top: -.8rem; right: -.4rem; }
.gourmet-invitation__dish--right::after { top: auto; right: auto; left: -.7rem; bottom: 3rem; font-size: 1.1rem; }
.gourmet-invitation .ribbon-lead-copy .c-local { position: relative; display: inline-block; }
.gourmet-invitation .ribbon-lead-copy .c-local::after {
  content: ''; position: absolute; left: 0; right: -.03em; bottom: -.08em;
  height: .22em; border-top: 2px solid #f5ca6480; border-radius: 50%; rotate: -2deg;
}
.gourmet-invitation__message { margin-top: 2rem; }
.gourmet-invitation .plate-highlights { border-top-color: #dfc68e24; border-bottom: 0; padding-top: 2rem; }
.gourmet-invitation__signature { margin-top: .5rem; }
@media(min-width: 1400px) {
  .gourmet-invitation__dish { width: 11.5rem; }
  .gourmet-invitation__dish--left { left: -4.5rem; }
  .gourmet-invitation__dish--right { right: -4.5rem; }
}
@media(max-width:1100px) {
  .gourmet-invitation__dish { width: 7rem; }
  .gourmet-invitation__dish--left { left: -1rem; top: 13rem; }
  .gourmet-invitation__dish--right { right: -1rem; top: 14rem; }
  .gourmet-invitation__dish span { font-size: .5rem; }
  .gourmet-invitation__message { max-width: 60%; margin-inline: auto; }
}
@media(max-width:600px) {
  .ribbon-lead .gourmet-invitation { padding-top: 7rem; }
  .gourmet-invitation__dish { width: 5rem; top: 0; }
  .gourmet-invitation__dish--left { left: calc(50% - 6.75rem); rotate: -10deg; }
  .gourmet-invitation__dish--right { right: calc(50% - 6.75rem); top: .5rem; rotate: 9deg; }
  .gourmet-invitation__dish span { display: none; }
  .gourmet-invitation__message { max-width: none; }
}

/* More discoveries, with a varied scale around the central message. */
.gourmet-invitation__dish--sweet { width: 8rem; left: -1.5rem; top: 23rem; rotate: 8deg; }
.gourmet-invitation__dish--world { width: 8rem; right: -1rem; top: -.5rem; rotate: -7deg; }
.gourmet-invitation__dish--sweet::after,
.gourmet-invitation__dish--world::after { display: none; }
@media(min-width:1400px) {
  .gourmet-invitation__dish--sweet { width: 8.5rem; left: -1.5rem; }
  .gourmet-invitation__dish--world { width: 8.5rem; right: -1rem; }
}
@media(min-width:601px) and (max-width:1100px) {
  .gourmet-invitation__dish--sweet { width: 5.5rem; left: 0; top: 2rem; }
  .gourmet-invitation__dish--world { width: 5.5rem; right: 0; top: 2rem; }
  .gourmet-invitation__intro { flex-direction: column; gap: .6rem; }
}
@media(max-width:600px) {
  .ribbon-lead .gourmet-invitation { padding-top: 7.25rem; }
  .gourmet-invitation__dish--left { width: 4.5rem; left: 0; top: 1rem; }
  .gourmet-invitation__dish--sweet { width: 3.75rem; left: 27%; top: 0; rotate: 7deg; }
  .gourmet-invitation__dish--world { width: 3.75rem; right: 24%; top: 1.5rem; rotate: -8deg; }
  .gourmet-invitation__dish--right { width: 4.5rem; right: 0; top: .4rem; }
}

/* Warm lights sit around the invitation, leaving the centre clear. */
.ribbon-lead { position: relative; isolation: isolate; }
.ribbon-atmosphere { position: absolute; inset: 0 -3rem; z-index: -1; pointer-events: none; }
.ribbon-atmosphere::before {
  content: ''; position: absolute; inset: 0;
  background: radial-gradient(ellipse at 7% 32%, #f2b75814, transparent 25%), radial-gradient(ellipse at 91% 58%, #f2b75812, transparent 27%);
}
.ribbon-lantern {
  position: absolute; left: var(--x); top: var(--y); width: var(--size); height: calc(var(--size) * 1.45);
  border-radius: 35% 35% 30% 30% / 14% 14% 24% 24%;
  background: radial-gradient(ellipse at 50% 88%, #fff6cf 0%, #efc575 35%, #c58a4b9c 80%);
  border: 1px solid #ffe1a04d; box-shadow: 0 0 20px #efb34a22, inset 3px 0 5px #a0663522;
  rotate: -7deg; opacity: .7;
  animation: ribbon-lantern-drift 7s ease-in-out var(--delay) infinite alternate;
}
.ribbon-lantern:nth-child(even) { rotate: 8deg; }
.ribbon-lantern::after { content: ''; position: absolute; bottom: 4%; left: 25%; width: 50%; height: 8%; border-radius: 50%; background: #fff1b8; box-shadow: 0 0 8px #ffd58477; }
.ribbon-star { position: absolute; left: var(--x); top: var(--y); color: #f0ce8a; font-size: .8rem; opacity: .5; animation: ribbon-star-glow 4s ease-in-out var(--delay) infinite alternate; }
@keyframes ribbon-lantern-drift { from { translate: 0 .4rem; opacity: .5; } to { translate: .3rem -.6rem; opacity: .85; } }
@keyframes ribbon-star-glow { from { opacity: .25; } to { opacity: .7; } }
.motion-paused .ribbon-lantern, .motion-paused .ribbon-star,
.tab-hidden .ribbon-lantern, .tab-hidden .ribbon-star { animation-play-state: paused; }
@media(max-width:600px) {
  .ribbon-atmosphere { inset: 0 -.7rem; }
  .ribbon-lantern { scale: .7; }
  .ribbon-lantern:nth-child(2), .ribbon-lantern:nth-child(3), .ribbon-star:nth-last-child(2) { display: none; }
}
@media(prefers-reduced-motion:reduce) { .ribbon-lantern, .ribbon-star { animation: none; } }

/* Scroll-triggered food portraits; their individual tilt stays intact. */
.gourmet-invitation__dish.dish-reveal {
  opacity: 0; transform: translateY(2.25rem) scale(.9);
  transition: opacity .8s ease var(--dish-delay,0ms), transform 1s cubic-bezier(.16,1,.3,1) var(--dish-delay,0ms);
}
.gourmet-invitation__dish.dish-revealed { opacity: 1; transform: translateY(0) scale(1); }
.motion-paused .gourmet-invitation__dish.dish-reveal { opacity: 1; transform: none; transition: none; }
@media(prefers-reduced-motion:reduce) {
  .gourmet-invitation__dish.dish-reveal { opacity: 1; transform: none; transition: none; }
}

/* A quiet after-hours teaser, with one restrained mystery mark. */
.midnight-secret {
  display: grid; grid-template-columns: 4rem minmax(0,1fr) auto;
  gap: 2rem; align-items: center; margin-top: 2.5rem;
  padding: 2.25rem 2.5rem;
  border: 1px solid #e3c78e30; border-radius: .5rem;
  background: linear-gradient(110deg,#0d1438e6,#141b45b3);
  box-shadow: none;
}
.midnight-secret::after { display: none; }
.midnight-secret__mark {
  display: grid; place-items: center; width: 4rem; height: 4rem;
  border: 1px solid #d9be8140; border-radius: 50%;
  color: #d9be81; font: 400 2.25rem/1 Georgia,serif;
  text-shadow: none; box-shadow: none;
}
.midnight-secret__eyebrow { margin-bottom: .55rem; color: #bba57c; font-size: .55rem; letter-spacing: .23em; }
.midnight-secret h3 { color: #f4efdf; font-size: clamp(1.1rem,1.8vw,1.5rem); font-weight: 500; letter-spacing: .08em; line-height: 1.7; }
.midnight-secret__copy > p:last-child { margin-top: .65rem; color: #a9aec5; font-size: .75rem; line-height: 1.95; }
.midnight-secret__status {
  margin: 0; padding: .3rem 0 .3rem 1.75rem;
  border: 0; border-left: 1px solid #d9be8133; border-radius: 0;
  font-size: .625rem; letter-spacing: .12em; color: #bba57c;
}
@media(max-width:900px) {
  .midnight-secret { grid-template-columns: 3rem minmax(0,1fr); gap: 1.25rem; padding: 1.75rem; }
  .midnight-secret__mark { width: 3rem; height: 3rem; font-size: 1.8rem; }
  .midnight-secret__status { grid-column: 2; margin: 0; padding: 0; border: 0; }
}
@media(max-width:600px) {
  .midnight-secret { padding: 1.5rem 1.25rem; gap: 1rem; text-align: left; }
  .midnight-secret__copy { width: auto; }
  .midnight-secret__mark { align-self: start; margin-top: .25rem; }
  .midnight-secret h3 { font-size: 1.05rem; letter-spacing: .025em; }
  .midnight-secret__eyebrow { font-size: .45rem; letter-spacing: .14em; }
  .midnight-secret__copy > p:last-child { font-size: .7rem; }
}

/* A sealed midnight invitation, quietly illuminated from within. */
@property --secret-light-angle { syntax: '<angle>'; initial-value: 0deg; inherits: false; }
.midnight-secret {
  --secret-light-angle: 0deg;
  isolation: isolate; overflow: hidden;
  border: 1px solid transparent;
  background:
    linear-gradient(110deg,#0c1232,#171d43 65%,#101631) padding-box,
    conic-gradient(from var(--secret-light-angle),#b99a5430 0deg,#b99a5430 245deg,#f7d995c9 285deg,#b99a5430 325deg) border-box;
  animation: secret-border-orbit 14s linear infinite;
}
.midnight-secret::before {
  content: ''; position: absolute; inset: 0; z-index: -1; pointer-events: none;
  background: radial-gradient(ellipse at 8% 50%,#e5be5830,transparent 36%),radial-gradient(ellipse at 92% 85%,#847ad91a,transparent 45%);
  animation: secret-inner-glow 6s ease-in-out infinite alternate;
}
.midnight-secret::after {
  content: ''; display: block; position: absolute; inset: -70% -50%; z-index: -1;
  background: linear-gradient(110deg,transparent 43%,#ffebbc00 46%,#ffebbc12 50%,#ffebbc00 54%,transparent 57%);
  transform: translateX(-45%); pointer-events: none;
  animation: secret-light-sweep 11s ease-in-out infinite;
}
.midnight-secret__mark {
  position: relative; border-color: #e0c38566;
  background: radial-gradient(circle,#e8c36b15,transparent 70%);
  animation: secret-mark-glow 5s ease-in-out infinite alternate;
}
.midnight-secret__mark::after {
  content: ''; position: absolute; inset: -.4rem; border-radius: 50%;
  border: 1px solid #e0c38526; border-top-color: #e0c38599;
  animation: secret-ring-turn 18s linear infinite;
}
.midnight-secret__status { display: flex; align-items: center; gap: .65rem; color: #d9c08e; }
.midnight-secret__status::before {
  content: ''; flex: 0 0 .3rem; height: .3rem; border-radius: 50%;
  background: #eccc88; box-shadow: 0 0 .6rem #efcb7e88;
  animation: secret-inner-glow 3s ease-in-out infinite alternate;
}
@keyframes secret-border-orbit { to { --secret-light-angle: 360deg; } }
@keyframes secret-inner-glow { from { opacity: .4; } to { opacity: 1; } }
@keyframes secret-light-sweep { 0%,20% { transform: translateX(-45%); opacity: 0; } 35% { opacity: 1; } 70%,100% { transform: translateX(45%); opacity: 0; } }
@keyframes secret-mark-glow { from { color: #c6ab77; text-shadow: 0 0 .4rem #f2cf7420; } to { color: #fff0c8; text-shadow: 0 0 1rem #f2cf7477; } }
@keyframes secret-ring-turn { to { rotate: 360deg; } }
.motion-paused .midnight-secret,
.motion-paused .midnight-secret::before,
.motion-paused .midnight-secret::after,
.motion-paused .midnight-secret__mark,
.motion-paused .midnight-secret__mark::after,
.motion-paused .midnight-secret__status::before,
.tab-hidden .midnight-secret,
.tab-hidden .midnight-secret::before,
.tab-hidden .midnight-secret::after,
.tab-hidden .midnight-secret__mark,
.tab-hidden .midnight-secret__mark::after,
.tab-hidden .midnight-secret__status::before { animation-play-state: paused; }
@media(prefers-reduced-motion:reduce) {
  .midnight-secret,.midnight-secret::before,.midnight-secret::after,
  .midnight-secret__mark,.midnight-secret__mark::after,.midnight-secret__status::before { animation: none; }
  .midnight-secret::after { display: none; }
}

/* Oversized food portraits peek in from the viewport edges. */
@media(min-width:1101px) {
  .gourmet-invitation__dish--left { width: 11rem; left: -3.5rem; top: 8rem; }
  .gourmet-invitation__dish--right { width: 11rem; right: -3.5rem; top: 12rem; }
  .gourmet-invitation__dish--sweet { width: 9rem; left: -1.5rem; top: 23rem; }
  .gourmet-invitation__dish--world { width: 9rem; right: -1rem; top: -.5rem; }
}
@media(min-width:1400px) {
  .gourmet-invitation__dish--left { width: 13rem; left: -4.5rem; }
  .gourmet-invitation__dish--right { width: 13rem; right: -4.5rem; }
  .gourmet-invitation__dish--sweet, .gourmet-invitation__dish--world { width: 9.5rem; }
}
@media(min-width:601px) and (max-width:1100px) {
  .gourmet-invitation__dish--left { width: 10rem; left: calc(50% - 50vw - 2.5rem); top: 12rem; }
  .gourmet-invitation__dish--right { width: 10rem; right: calc(50% - 50vw - 2.5rem); top: 13rem; }
  .gourmet-invitation__dish--sweet { width: 7rem; left: calc(50% - 50vw - 1.5rem); top: 0; }
  .gourmet-invitation__dish--world { width: 7rem; right: calc(50% - 50vw - 1.5rem); top: 0; }
  .gourmet-invitation__dish span { display: none; }
}
@media(max-width:600px) {
  .ribbon-lead .gourmet-invitation { padding-top: 11rem; }
  .gourmet-invitation__dish--left { width: 8rem; left: calc(50% - 50vw - 1rem); top: 1.5rem; }
  .gourmet-invitation__dish--right { width: 8rem; right: calc(50% - 50vw - 1rem); top: 1.5rem; }
  .gourmet-invitation__dish--sweet { width: 4.5rem; left: calc(50% - 4.8rem); top: 0; }
  .gourmet-invitation__dish--world { width: 4.5rem; right: calc(50% - 4.8rem); top: 4.5rem; }
}

/* Keep the invitation continuous with the surrounding night background. */
.ribbon-atmosphere::before { background: none; }
.gourmet-invitation .plate-highlights { border-top: 0; border-bottom: 0; }

/* Mobile hero: clear sky behind the copy, waterfront below the date. */
@media(max-width:600px) {
  .hero { height: max(46rem, 92svh); min-height: 46rem; background: #081b50; }
  .hero .hero-skyline {
    top: 8rem; left: 0; width: 100%; height: calc(100% - 8rem);
    object-fit: cover; object-position: 52% bottom;
    -webkit-mask-image: linear-gradient(to bottom,transparent,#000 15%);
    mask-image: linear-gradient(to bottom,transparent,#000 15%);
  }
  .hero::before {
    background: linear-gradient(180deg,#0b173b55 0%,#0b173b18 55%,#18204e18 83%,var(--night) 100%);
  }
  .hero-content { padding-top: 6.5rem; width: 100%; max-width: calc(100% - 2rem); }
  .hero-logo { width: min(100%, 22rem); margin: .5rem auto 0; }
  .hero-description { font-size: .875rem; line-height: 2; letter-spacing: .025em; }
  .hero-schedule-card { max-width: 100%; margin-top: 1.5rem; }
  .hero + .food-ribbon-divider--double { position: relative; z-index: 2; margin-top: -5rem; padding-top: 0; }
}

/* Keep the waterfront stalls above the mobile food ribbon. */
@media(max-width:600px) {
  .hero .hero-skyline { height: calc(100% - 12rem); object-position: 85% bottom; }
}
@media(max-width:600px) {
  .hero .hero-skyline { top: 4rem; }
}
@media(max-width:600px) {
  .hero .hero-skyline { height: calc(100% - 4rem); }
  .hero-content { padding-top: 5.5rem; }
}
@media(max-width:600px) {
  .hero .hero-skyline { top: 0; height: 100%; }
}
@media(max-width:600px) {
  .hero .hero-skyline { transform: translateY(-3rem); }
}
@media(max-width:600px) {
  .hero .hero-skyline {
    top: auto; bottom: 8rem; height: 100%;
    object-position: 85% bottom; transform: none;
    -webkit-mask-image: linear-gradient(to bottom, #000 0%, #000 92%, transparent 100%);
    mask-image: linear-gradient(to bottom, #000 0%, #000 92%, transparent 100%);
  }
}

/* Mobile: make the food photography and invitation headline easier to notice. */
@media(max-width:600px) {
  .gourmet-invitation .ribbon-lead-copy {
    font-size: clamp(1.35rem, 6.2vw, 1.6rem);
    line-height: 1.65;
  }
  .gourmet-invitation__dish--left,
  .gourmet-invitation__dish--right { width: 9rem; }
  .gourmet-invitation__dish--sweet,
  .gourmet-invitation__dish--world { width: 5rem; }
}

/* Mobile outpainting extends the stalls while retaining the skyline scale. */
@media(max-width:600px) {
  .hero {
    --hero-scene-height: max(64rem, calc(100svh + 18rem));
    height: calc(var(--hero-scene-height) + 20rem);
    min-height: 64rem;
    background: var(--night);
  }
  .hero .hero-skyline {
    inset: 0 0 auto;
    width: 100%; height: calc(var(--hero-scene-height) * 1.5);
    object-fit: cover; object-position: 85% top;
    transform: none;
    -webkit-mask-image: linear-gradient(to bottom, #000 0, #000 calc(var(--hero-scene-height) - 6rem), #0009 calc(var(--hero-scene-height) + 8rem), transparent calc(var(--hero-scene-height) + 20rem));
    mask-image: linear-gradient(to bottom, #000 0, #000 calc(var(--hero-scene-height) - 6rem), #0009 calc(var(--hero-scene-height) + 8rem), transparent calc(var(--hero-scene-height) + 20rem));
  }
  .hero::before {
    bottom: auto; height: var(--hero-scene-height);
    background: linear-gradient(180deg,#0b173b55 0%,#0b173b18 45%,transparent 65%);
  }
  .hero + .food-ribbon-divider--double {
    margin-top: -26rem; padding-top: 0; background: transparent;
  }
}

/* Shared photographic grading: consistent colour across placements and hover states.
   Source-based variants also follow the image in the program dialog. */
:root {
  --photo-grade-night: saturate(.84) contrast(.96) brightness(.96);
  --photo-grade-food: saturate(.90) contrast(.96) brightness(1.02) sepia(.035);
  --photo-grade-people: saturate(.88) contrast(.96) brightness(1.01) sepia(.025);
}
img.photo-tone { --photo-grade: var(--photo-grade-night); --photo-blur: 0px; }
img.photo-tone:is([src$="dumpling.webp"], [src$="skewers.webp"], [src$="sweets.webp"], [src$="tacos.webp"], [src$="curry.webp"]) {
  --photo-grade: var(--photo-grade-food);
}
img.photo-tone:is([src$="representative.webp"], [src$="chairperson-placeholder.webp"]) {
  --photo-grade: var(--photo-grade-people);
}
img.photo-tone,
.food-ribbon-item img.photo-tone,
.food-ribbon-item:hover img.photo-tone,
.experience-small > img.photo-tone,
.experience-small:is(:hover, :focus-visible) > img.photo-tone,
.menu-card-visual img.photo-tone,
.menu-grid > article:hover .menu-card-visual img.photo-tone {
  filter: var(--photo-grade) blur(var(--photo-blur));
}
/* Keep the existing unreleased-menu veil without changing its colour on hover. */
.menu-card-visual img.photo-tone { --photo-blur: .09375rem; }
.menu-grid > article:hover .menu-card-visual img.photo-tone { --photo-blur: 0px; }

/* Straight, evenly spaced photo rows on mobile. */
@media (max-width: 700px) {
  .food-ribbon-divider--double { gap: 1.0625rem; }
  .food-ribbon-divider--double .food-ribbon-track { height: 9.5rem; }
  .food-ribbon-divider--double .food-ribbon-item { transform: none; }
}

.invitation-stop-mobile { display: none; }
@media (max-width: 600px) {
  html[lang="ja"] .gourmet-invitation .ribbon-lead-copy {
    font-size: clamp(1.75rem, 8.5vw, 3rem);
    font-weight: 900;
    line-height: 1.5;
    letter-spacing: -.025em;
    white-space: nowrap;
  }
  html[lang="ja"] .gourmet-invitation .ribbon-lead-copy .c-all {
    display: block;
    margin-top: .15em;
    font-size: 1.5em;
    line-height: 1.25;
    letter-spacing: .015em;
  }
  .invitation-stop-desktop { display: none; }
  .invitation-stop-mobile { display: inline; }
  .gourmet-invitation__message {
    font-size: 1rem;
    line-height: 2;
    letter-spacing: .04em;
    margin-top: 1.5rem;
  }
}

/* A folded gold ribbon for the opening countdown. */
.gourmet-invitation .plate-countdown,
.gourmet-invitation.is-live .plate-countdown {
  position: relative;
  inset: auto;
  display: inline-flex;
  align-items: center;
  gap: .65rem;
  padding: .75rem 1.45rem;
  isolation: isolate;
  border: 0;
  border-radius: .15rem;
  background: linear-gradient(120deg, #ffe5a1, #f5ca64);
  color: #161d4b;
  box-shadow: 0 .5rem 1.5rem #050b2429, inset 0 1px #fff5dc;
  font-size: .8rem;
  letter-spacing: .06em;
  translate: none;
  animation: none;
}
.gourmet-invitation .plate-countdown::before,
.gourmet-invitation .plate-countdown::after {
  content: "";
  position: absolute;
  z-index: -1;
  top: .25rem;
  width: 1.1rem;
  height: 100%;
  border-radius: 0;
  transform: none;
}
.gourmet-invitation .plate-countdown::before {
  left: -1.1rem;
  background: #dfb44e;
  clip-path: polygon(0 0,100% 0,100% 100%,0 100%,27% 50%);
}
.gourmet-invitation .plate-countdown::after {
  right: -1.1rem;
  background: #dfb44e;
  clip-path: polygon(0 0,100% 0,73% 50%,100% 100%,0 100%);
}
.gourmet-invitation .plate-countdown > span:first-child {
  display: flex;
  align-items: center;
  align-self: stretch;
  margin-right: .2rem;
  padding-right: 1rem;
  border-right: 0;
  font-weight: 700;
}
.gourmet-invitation .plate-countdown b {
  color: #161d4b;
  font: 600 3rem/1 var(--latin);
  font-variant-numeric: tabular-nums;
  letter-spacing: -.035em;
}
.gourmet-invitation .plate-countdown > span:last-child {
  align-self: flex-end;
  padding-bottom: .3rem;
  font-weight: 700;
}
@media (max-width: 600px) {
  .gourmet-invitation .plate-countdown,
  .gourmet-invitation.is-live .plate-countdown {
    padding: .5rem 1rem;
    gap: .45rem;
    font-size: .65rem;
  }
  .gourmet-invitation .plate-countdown b { font-size: 2rem; }
  .gourmet-invitation .plate-countdown > span:first-child { padding-right: .7rem; }
  .gourmet-invitation .plate-countdown > span:last-child { padding-bottom: .15rem; }
}

/* Light invitation cards against the night background. */
.join-grid > a {
  background: #fffaf0;
  color: #161d4b;
  border-color: #f1e6cd;
  box-shadow: 0 .4rem 1.2rem #070e2820;
}
.join-grid > a:is(:hover, :focus-visible) {
  background: #fff;
  border-color: #e4c57b;
}
.join-grid h3 { color: #161d4b; }
.join-grid .join-en,
.join-grid .eyebrow { color: #80602b; }
.join-grid > a > span:last-child { color: #515775; }
.join-grid i { color: #161d4b; }

/* One yellow palette for every schedule ticket. */
.schedule-section .schedule-tabs .season-tab:nth-child(n) {
  --season-accent: #d6aa3e;
  --season-soft: #f7df96;
  --season-deep: #161d4b;
  border-color: #e3be5e;
  border-top-color: #dfb443;
}
.schedule-section .schedule-tabs .season-tab:nth-child(n),
.schedule-section .schedule-tabs .season-tab:nth-child(n):hover,
.schedule-section .schedule-tabs .season-tab:nth-child(n):active {
  background: #f8df91;
}
.schedule-section .schedule-tabs .season-tab:nth-child(n)[aria-selected=true],
.schedule-section .schedule-tabs .season-tab:nth-child(n)[aria-selected=true]:hover {
  background: #f5cf65;
  border-color: #e8b942;
  box-shadow: 0 .75rem 2rem #070c2544, 0 0 0 1px #f5cf6566;
}
.schedule-section .season-panel[data-active-season] {
  --panel-accent: #d6aa3e;
  --panel-deep: #161d4b;
  --panel-soft: #f7df96;
  background: #f8df91;
  border-color: #e3be5e;
}
.schedule-section .season-tab:nth-child(n) .season-top {
  background: #f6d67b;
  color: #161d4b;
}
.schedule-section .season-tab:nth-child(n) .season-top i,
.schedule-section .season-tab:nth-child(n)[aria-selected=true] .season-top i {
  background: #f8df91;
  border-color: #bc9237;
  color: #161d4b;
}
.schedule-section .season-fx { filter: sepia(1) saturate(.8); }
.schedule-section .season-fx--fireworks i {
  border-color: #bb9135;
  box-shadow: 0 0 .5rem #d6aa3e3d, inset 0 0 .25rem #f5cf6433;
}

/* Mobile hero reset: keep the Yokohama skyline in the lower composition and let
   the food ribbon peek into the hero without enlarging or stretching the photo. */
@media (max-width: 600px) {
  .hero {
    height: max(48rem, 92svh);
    min-height: 48rem;
    background: var(--night);
  }
  .hero .hero-skyline {
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center 50%;
    transform: none;
    -webkit-mask-image: linear-gradient(to bottom, #000 0%, #000 78%, transparent 100%);
    mask-image: linear-gradient(to bottom, #000 0%, #000 78%, transparent 100%);
  }
  .hero::before {
    inset: 0;
    height: 100%;
    background: linear-gradient(180deg, #0b173b66 0%, #0b173b1c 52%, #18204e28 78%, var(--night) 100%);
  }
  .hero + .food-ribbon-divider--double {
    position: relative;
    z-index: 2;
    margin-top: -8rem;
    padding-top: 0;
    background: transparent;
  }
}

/* Preserve the natural seasonal colours on the ticket animations. */
.schedule-section .season-fx { filter: none; }
.schedule-section .season-fx--sakura i {
  background: linear-gradient(140deg, #fff0f5 0%, #f5a8c5 55%, #dc739c 100%);
  box-shadow: 0 0 .45rem #e985ae80;
}
.schedule-section .season-fx--fireworks i {
  border-color: #348596;
  box-shadow: 0 0 .75rem #4b9eac70, inset 0 0 .375rem #ffffff80;
}
.schedule-section .season-fx--fireworks i:nth-child(3n + 1) {
  border-color: #c96559;
  box-shadow: 0 0 .75rem #df81736e, inset 0 0 .375rem #ffffff80;
}
.schedule-section .season-fx--fireworks i:nth-child(3n + 2) {
  border-color: #6b6aa2;
  box-shadow: 0 0 .75rem #8582c66e, inset 0 0 .375rem #ffffff80;
}
.schedule-section .season-fx--leaf i {
  background: linear-gradient(140deg, #f8cf6a 0%, #e58b3e 52%, #bf5039 100%);
  filter: none;
}
