:root{--ink:#182529;--blue:#173f4a;--aqua:#6bb8b0;--red:#e6533d;--cream:#f3efe5;--paper:#fffdf8;--line:rgba(24,37,41,.16)}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;color:var(--ink);background:var(--paper);font-family:"Noto Sans TC",sans-serif;line-height:1.8;text-align:center}
a{color:inherit;text-decoration:none}
.topbar{position:sticky;top:0;z-index:20;height:78px;padding:0 4vw;display:flex;align-items:center;justify-content:space-between;color:white;background:var(--blue);transition:.3s}
.topbar.scrolled{height:64px;background:rgba(23,63,74,.96);box-shadow:0 5px 25px rgba(0,0,0,.12)}
.brand{display:flex;align-items:baseline;gap:10px;font-weight:900;letter-spacing:.15em}
.brand small{font-size:11px;font-weight:500;opacity:.75}
.topbar nav{display:flex;gap:26px;align-items:center;justify-content:center;font-size:13px;font-weight:700}
.nav-gift{padding:9px 16px;border:1px solid rgba(255,255,255,.5);border-radius:99px}
.menu{display:none;background:transparent;border:0;color:white;font-size:24px}
.hero{position:relative;overflow:hidden;background:#000}
.hero-video{display:block;width:100%;height:auto;max-height:calc(100svh - 78px);aspect-ratio:16/9;object-fit:contain;background:#000}
.kicker,.section-heading>p,.gift-head>p{font-size:12px;font-weight:900;letter-spacing:.28em}
.section-pad{padding:120px max(6vw,28px)}
.intro{display:grid;grid-template-columns:100px 1.2fr .8fr;gap:5vw;align-items:start}
.intro-number{font-size:5rem;line-height:1;font-weight:900;color:transparent;-webkit-text-stroke:1px var(--aqua)}
.intro h1,.section-heading h2,.gift-head h2{font-family:"Noto Serif TC",serif;font-size:clamp(2.3rem,4.5vw,5rem);line-height:1.35;margin:10px auto 22px;text-wrap:balance;word-break:auto-phrase}
.intro h2{font-family:"Noto Serif TC",serif;font-size:clamp(1.25rem,2vw,1.9rem);font-weight:500;margin:0 0 30px;color:var(--red)}
.intro-copy>p:last-child{max-width:660px;margin-left:auto;margin-right:auto;font-size:1.05rem}
.gift-teaser{background:var(--blue);color:white;padding:36px;box-shadow:18px 18px 0 #d9e9e5}
.gift-teaser .tag{display:inline-block;color:#ffe270;font-size:11px;font-weight:900;letter-spacing:.18em;margin-bottom:20px}
.gift-teaser strong{font-family:"Noto Serif TC",serif;font-size:1.35rem;line-height:1.7}
.gift-teaser p{font-size:14px;color:rgba(255,255,255,.75)}
.gift-teaser a{font-weight:700;border-bottom:1px solid white}
.screenings{background:var(--red);color:white;padding:70px max(6vw,28px);display:grid;grid-template-columns:2fr 1fr;gap:50px;align-items:end}
.screening-title span{font-size:12px;letter-spacing:.2em}
.screening-title h2{font-family:"Noto Serif TC",serif;font-size:2.3rem;margin:8px 0}
.dates{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.dates>div{border-top:1px solid rgba(255,255,255,.55);padding-top:16px}
.dates time{font-size:1.55rem;font-weight:900}
.dates small{margin:0 5px}
.dates p{margin:3px 0}
.screen-note{font-family:"Noto Serif TC",serif;font-size:clamp(1.65rem,2.8vw,2.65rem);line-height:1.45;margin:0;font-weight:900;text-wrap:pretty}
.route{background:var(--cream)}
.section-heading{display:flex;justify-content:center;align-items:flex-start;border-top:1px solid var(--ink);padding-top:15px;text-align:center}
.section-heading h2{width:100%;margin-top:0;word-break:auto-phrase;text-wrap:pretty}
.section-heading>p{color:var(--red)}
.section-quote{margin:0 auto 38px;text-align:center;font-family:"Noto Serif TC",serif;font-size:clamp(1.1rem,2vw,1.5rem);font-weight:700;line-height:1.8;text-wrap:pretty}
.section-quote span{display:block;font-family:"Noto Sans TC",sans-serif;font-size:.75rem;font-weight:700;letter-spacing:.1em;margin-top:6px}
blockquote{max-width:780px;margin:10px auto 70px;font-family:"Noto Serif TC",serif;font-size:1.25rem;line-height:2;border-top:3px solid var(--red);border-bottom:1px solid rgba(24,37,41,.18);padding:28px;text-align:center;text-wrap:pretty}
blockquote cite{display:block;font-family:"Noto Sans TC",sans-serif;font-size:13px;font-style:normal;font-weight:700;margin-top:10px}
.campaign-visual{margin:0 0 80px;display:grid;grid-template-columns:minmax(280px,.78fr) 1.22fr;min-height:680px;background:#fff;box-shadow:0 20px 60px rgba(20,42,48,.11);overflow:hidden}
.campaign-visual.reverse{grid-template-columns:1.22fr minmax(280px,.78fr)}
.campaign-visual.reverse img{order:2}
.campaign-visual img{display:block;width:100%;height:100%;max-height:780px;object-fit:cover}
.campaign-visual figcaption{padding:clamp(40px,7vw,100px);display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center}
.campaign-visual figcaption span{font-size:11px;font-weight:900;letter-spacing:.22em;color:var(--red)}
.campaign-visual figcaption h3{font-family:"Noto Serif TC",serif;font-size:clamp(1.7rem,2.8vw,3rem);line-height:1.45;margin:20px 0 24px;word-break:auto-phrase;text-wrap:pretty}
.campaign-visual figcaption .accent-title{color:var(--red)}
.campaign-visual figcaption .single-line-title{white-space:nowrap}
.campaign-visual figcaption p{max-width:520px;font-size:1rem;text-wrap:pretty}
.shops .campaign-visual{background:#f3efe5;color:var(--ink)}
.shops .campaign-visual figcaption h3,.events .section-heading h2{color:var(--red)}
.events .campaign-visual{background:var(--blue);color:white}
.events .campaign-visual figcaption p{color:rgba(255,255,255,.75)}
.route-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.route-card{min-height:0;padding:0;background:var(--paper);display:flex;flex-direction:column;align-items:stretch;text-align:center;position:relative;overflow:hidden;color:var(--ink)}
.route-card::before{content:"";display:block;width:100%;aspect-ratio:4/3;background-size:cover;background-position:center}
.route-card span{font-weight:900;color:var(--red);font-size:12px}
.route-card p{margin:8px 0 2px;font-size:13px;font-weight:700}
.route-card h3{font-family:"Noto Serif TC",serif;font-size:1.65rem;line-height:1.55;margin:5px auto 14px;text-wrap:balance;word-break:auto-phrase}
.route-card small{font-size:13px;line-height:1.8}
.route-card.tall{grid-row:auto;min-height:0}
.route-card.wide{grid-column:span 2}
.route-card.dark{background:var(--blue);color:white}
.photo-a::before{background-image:url('assets/route-xinzhongshan-day.jpg')}
.photo-b::before{background-image:url('assets/route-dadaocheng-local.jpg')}
.photo-c::before{background-image:url('assets/route-chifeng-provided.png')}
.photo-d::before{background-image:url('assets/route-baoan.jpg')}
.photo-e::before{background-image:url('assets/route-xinyi-night.jpg');background-position:center}
.route-card>div{position:relative;padding:30px 28px 34px;flex:1}
.shops{background:var(--blue);color:white}
.section-heading.light{border-color:rgba(255,255,255,.45)}
.shop-list{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid rgba(255,255,255,.25)}
.shop-list article{display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px;padding:0 0 34px;overflow:hidden;border-right:1px solid rgba(255,255,255,.22);border-bottom:1px solid rgba(255,255,255,.22)}
.shop-list article:nth-child(3n){border-right:0}
.shop-list b{color:#7dd2c6}
.card-photo{display:block;width:100%;height:220px;object-fit:cover;object-position:center;filter:saturate(1.06) contrast(1.025) brightness(1.015);transition:transform .45s ease,filter .45s ease}
.shop-list article{overflow:hidden}
.shop-list article:hover .card-photo{transform:scale(1.025);filter:saturate(1.1) contrast(1.035) brightness(1.02)}
.shop-yaodehe,.shop-dahuahang,.shop-dumbo,.shop-r9,.shop-dintaifung,.shop-xinchao{object-position:center 48%}
.shop-aka{object-position:center 58%}
.shop-gardencity,.shop-traditional-market,.shop-yongle{object-position:center 52%}
.empty-photo{background:rgba(255,255,255,.035)}
.shop-list b{margin-top:8px}
.shop-list span{font-size:11px;color:#ffe270;letter-spacing:.14em}
.shop-list h3{font-family:"Noto Serif TC",serif;font-size:1.4rem;line-height:1.4;margin:7px auto;text-wrap:balance;word-break:auto-phrase}
.shop-list article>div{padding:0 28px}.shop-list p,.shop-list address{font-size:13px;color:rgba(255,255,255,.72);font-style:normal}
.shop-list address{color:#83c8c1}
.events{overflow:hidden}
.event-track{display:flex;gap:16px;overflow:auto;padding-bottom:25px;scroll-snap-type:x mandatory}
.event-track article{flex:0 0 min(360px,82vw);min-height:420px;padding:0 0 32px;background:var(--cream);scroll-snap-align:start;border-top:5px solid var(--red);overflow:hidden;text-align:center}
.event-track time{font-size:12px;font-weight:900;color:var(--red);letter-spacing:.18em}
.event-track time{display:block;margin:24px 20px 0;line-height:1.65;text-wrap:balance;word-break:auto-phrase}
.event-track h3{font-family:"Noto Serif TC",serif;font-size:1.55rem;margin:28px 24px 15px;text-wrap:balance;word-break:auto-phrase}
.event-track p{font-size:14px;margin:0 24px;text-wrap:pretty}
.gift{background:#f0c950;position:relative}
.gift-head{max-width:none}
.gift-head h2{font-size:clamp(1rem,4.5vw,5rem);white-space:nowrap}
.gift-head>p:last-child{max-width:680px}
.steps{display:flex;align-items:center;justify-content:space-between;margin:65px 0;padding:32px 38px;background:white}
.steps>div{display:flex;align-items:center;gap:18px;font-weight:700}
.steps b{display:grid;place-items:center;width:46px;height:46px;border-radius:50%;background:var(--red);color:white}
.steps i{font-style:normal;color:var(--red)}
.locations{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.locations details{background:rgba(255,255,255,.76);padding:0 25px}
.locations summary{cursor:pointer;list-style:none;padding:20px 0;font-weight:700;display:flex;justify-content:space-between;gap:15px}
.locations summary span{font-size:12px;color:#806800;white-space:nowrap}
.locations details p{border-top:1px solid rgba(0,0,0,.12);padding:15px 0;margin:0;font-size:14px}
footer{padding:70px max(6vw,28px);background:#102f37;color:white;display:flex;align-items:end;justify-content:center;text-align:center}
.footer-title{font-family:"Noto Serif TC",serif;font-size:clamp(2rem,4vw,4rem)}
footer p,footer a{font-size:12px;letter-spacing:.12em}
.credits{display:block;max-width:800px;margin:20px auto 0;color:rgba(255,255,255,.5);font-size:10px;line-height:1.6}
.credits a{text-decoration:underline;font-size:10px;letter-spacing:0}
.reveal{opacity:0;transform:translateY(24px);transition:opacity .7s ease,transform .7s ease}
.reveal.visible{opacity:1;transform:none}
@media(max-width:900px){.topbar nav{display:none}
.topbar nav.open{display:flex;position:absolute;top:64px;left:0;right:0;padding:20px 6vw;background:var(--blue);flex-direction:column;align-items:flex-start}
.menu{display:block}
.intro{grid-template-columns:1fr}
.intro-number{display:none}
.screenings{grid-template-columns:1fr}
.dates{grid-template-columns:1fr}
.screen-note{grid-column:1}
.route-grid{grid-template-columns:1fr}
.campaign-visual,.campaign-visual.reverse{grid-template-columns:1fr;min-height:0}
.campaign-visual.reverse img{order:0}
.campaign-visual img{height:auto;max-height:none}
.campaign-visual figcaption{padding:42px 28px 50px}
.route-card.tall{grid-row:auto;min-height:0}
.route-card.wide{grid-column:auto}
.shop-list{grid-template-columns:1fr}
.shop-list article{border-right:0}
.locations{grid-template-columns:1fr}
.steps{align-items:stretch}
.steps i{display:none}
.steps>div{flex-direction:column;text-align:center}
.section-heading{display:block}
.section-heading h2{width:100%}
.section-pad{padding-top:85px;padding-bottom:85px}
}
@media(max-width:600px){.intro h1,.section-heading h2,.gift-head h2{font-size:2.2rem}
.gift-head h2{font-size:clamp(1rem,4.5vw,5rem)}
.screenings{padding-top:55px;padding-bottom:55px}
.steps{flex-direction:column;gap:22px}
.steps>div{flex-direction:row;text-align:left}
.locations summary{display:block}
.locations summary span{display:block;margin-top:4px}
footer{display:block}
.footer-title{margin-bottom:35px}
}
/* September editorial refinements */
body{overflow-wrap:break-word;word-break:normal}
.intro-copy,.route-card,.shop-list article,.event-track article,.locations{text-wrap:pretty}
.intro .slogan{font-family:"Noto Serif TC",serif;color:var(--red);font-weight:700;font-size:clamp(1.35rem,2vw,2rem);line-height:1.5;margin:0 0 28px}
.gift-teaser{text-align:left}
.gift-teaser h2{font-family:"Noto Serif TC",serif;font-size:1.55rem;line-height:1.45;margin:0 0 18px;color:white}
.gift-teaser ol{margin:0;padding-left:1.5em;font-size:1rem;line-height:1.8}
.gift-teaser li+li{margin-top:9px}
.dates p{font-size:clamp(1.4rem,2.25vw,2.1rem);font-weight:900;line-height:1.35;margin-top:12px}
.screen-note{font-size:clamp(1.35rem,2vw,2rem)}
.route-card p{font-size:1.15rem;color:var(--red);line-height:1.45}
.route-card h3{font-size:clamp(1.4rem,2vw,1.8rem);padding:0 .2em;overflow-wrap:normal}
.route-card small{font-size:1rem;line-height:1.75}
.photo-b::before{background-position:center 45%}
.campaign-visual{min-height:0}
.campaign-visual img{max-height:680px;object-position:center}
.portrait-card,.shop-portrait{margin:0;overflow:hidden;position:relative;min-height:420px;background:#102f37;color:white}
.portrait-card img,.shop-portrait img{display:block;width:100%;height:100%;min-height:420px;object-fit:cover}
.portrait-card figcaption,.shop-portrait figcaption{position:absolute;left:20px;bottom:16px;font-size:.85rem;font-weight:700;text-shadow:0 2px 12px #000}
.shop-list .shop-portrait{grid-column:span 1}
.shop-list .shop-portrait img{min-height:100%;height:100%}
.shop-list article>div{width:100%;padding:0 22px}
.shop-list article>div>p{font-size:12pt;line-height:1.65}
.route-card>div{display:flex;flex-direction:column;align-items:center;padding:22px 22px 34px}
.route-card .route-number{color:var(--red);font-size:1rem;font-weight:900;margin:0 0 10px}
.route-card .route-place{display:inline-block;background:#e5c351;color:#142d34;font-size:1rem;font-weight:900;line-height:1.4;padding:7px 10px;margin:0 0 8px}
.route-card h3{margin:7px auto 10px}
.route-card .route-desc{font-size:12pt;font-weight:400;line-height:1.65;color:var(--ink);margin:0;text-wrap:pretty}
.bravo{background:var(--cream)}
.bravo-video{display:block;width:100%;height:auto;max-width:1100px;aspect-ratio:16/9;margin:0 auto;background:#000;object-fit:contain}
.screenings{grid-template-columns:1fr;gap:28px}
.screen-note{font-size:clamp(1.1rem,3.1vw,2rem);text-align:center}
.screen-note span{display:block;white-space:nowrap}
.event-track article>p,.locations details>p{font-size:12pt;line-height:1.65}
.shop-list .shop-area,.shop-list .shop-name{display:inline-block;font-size:1rem;line-height:1.4;letter-spacing:0;padding:7px 10px;margin:2px 2px 0}
.shop-list .shop-area{background:#e5c351;color:#142d34}
.shop-list .shop-name{background:#e8f2ee;color:#173f4a;font-weight:900}
.shop-list .pilgrim{display:inline-block;margin:8px auto 0;padding:4px 12px;border:1px solid #f3cf66;color:#ffe270;font-size:.88rem;font-style:normal;border-radius:99px}
.shop-dumbo{height:260px;object-fit:contain;object-position:center;background:#f1f0e8}
.shop-list .recommend{display:flex;flex-direction:column;align-items:center;margin:0 auto 8px}
.shop-list .recommend span{display:inline-block;padding:4px 12px;background:#e5c351;color:#142d34;font-size:.85rem;font-weight:900;letter-spacing:.08em}
.shop-list .recommend h3{margin:9px auto 0}
.event-track time{margin:20px 20px 0;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px;letter-spacing:0}
.month-badge{display:inline-flex;align-items:center;justify-content:center;min-width:90px;padding:7px 12px;background:var(--red);color:white;font-size:1rem;line-height:1.3;border-radius:4px}
.event-name{font-size:1.3rem;line-height:1.4;color:var(--ink);text-align:left}
.gift-head h2{white-space:normal;font-size:clamp(2rem,3.6vw,4rem)}
.locations{text-align:left;gap:8px}
.locations details{padding:0 18px}
.locations summary{justify-content:flex-start;align-items:center;padding:11px 0;font-size:1rem;line-height:1.4}
.locations details p{margin:0 0 0 43px;padding:2px 0;border:0;font-size:.95rem;line-height:1.55}
.locations details p:last-child{padding-bottom:11px}
.info-logo{display:inline-grid!important;place-items:center;flex:none;width:30px;height:30px;background:#f5c93d;border:2px solid #143e75;border-radius:3px;color:#143e75!important;font-family:Georgia,serif;font-size:1.55rem!important;font-style:italic;font-weight:900;letter-spacing:0!important;line-height:1}
@media(max-width:900px){.portrait-card,.shop-portrait{min-height:0}.portrait-card img,.shop-portrait img{min-height:0;height:auto;max-height:560px}.campaign-visual img{max-height:none}.shop-list .shop-portrait{grid-column:auto}}
@media(max-width:600px){.intro .slogan{font-size:1.45rem}.campaign-visual figcaption .single-line-title{white-space:normal}.locations summary{display:flex}.locations details p{margin-left:0}.event-name{text-align:center}.dates p{font-size:1.65rem}}

/* Equal alignment for every activity card; full-width photos avoid repeated copy. */
.campaign-visual.photo-only,.campaign-visual.reverse.photo-only{display:block;min-height:0;max-width:1100px;margin:0 auto 80px;background:transparent}
.campaign-visual.photo-only img{width:100%;height:auto;max-height:660px;object-fit:cover;object-position:center 42%}
.event-track time{display:grid;grid-template-columns:100px minmax(0,1fr);align-items:start;justify-content:stretch;gap:12px;text-align:left;margin:20px 20px 0}
.month-badge{width:100%;min-width:0;text-align:center}
.event-name{text-align:left;align-self:center;overflow-wrap:normal;word-break:normal}
@media(max-width:600px){.event-track time{display:grid;grid-template-columns:95px minmax(0,1fr);gap:10px}.event-name{text-align:left}}

/* Activity card reading order: month, event, short line, description. */
.event-track time{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:0;margin:20px 20px 0;text-align:center}
.event-track .month-badge{display:inline-block;width:auto;min-width:92px;padding:7px 14px;margin:0 auto;font-size:1rem}
.event-track .event-name{display:block;width:100%;min-height:3.1em;margin:13px 0 0;font-size:1.35rem;line-height:1.4;text-align:center;align-self:auto}
.event-track h3{margin:8px 24px 12px;font-size:1.4rem;line-height:1.45}
@media(max-width:600px){.event-track time{display:flex;flex-direction:column;align-items:center;text-align:center}.event-track .event-name{text-align:center}}

/* Show each supplied Fukushi photograph in full, including shoes. */
.campaign-visual.photo-only,.campaign-visual.reverse.photo-only{display:flex;justify-content:center;align-items:center;overflow:visible;max-width:1100px;background:transparent;box-shadow:none}
.campaign-visual.photo-only img{display:block;width:auto;max-width:100%;height:auto;max-height:760px;object-fit:contain;object-position:center;margin:0 auto}
.portrait-card,.shop-portrait{min-height:0;background:transparent}
.portrait-card img,.shop-portrait img,.shop-list .shop-portrait img{display:block;width:100%;height:auto;min-height:0;max-height:none;object-fit:contain}
@media(max-width:900px){.campaign-visual.photo-only img{width:100%;max-height:none;height:auto}.portrait-card img,.shop-portrait img{height:auto;max-height:none}}

.shop-lykke{object-fit:contain;background:#3b3036}

/* Outdoor placements and the supporting line form one balanced row. */
.screenings{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);align-items:center;gap:clamp(24px,4vw,64px)}
.dates{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 20px}
.dates time{font-size:clamp(1.05rem,1.5vw,1.35rem);white-space:nowrap}
.screen-note{font-size:clamp(1.35rem,2vw,2.25rem);color:#ffe270;text-align:left}

/* Center the final row after removing the extra portrait cards. */
@media(min-width:901px){
  .route-grid,.shop-list{grid-template-columns:repeat(6,minmax(0,1fr))}
  .route-grid>.route-card,.shop-list>article{grid-column:span 2}
  .route-grid>.route-card:nth-last-child(2),.shop-list>article:nth-last-child(2){grid-column:2/span 2}
}

/* Keep the month, name, short line and description aligned across activities. */
.event-track article{display:flex;flex-direction:column}
.event-track time{min-height:6.8rem}
.event-track h3{display:block;min-height:2.8em;margin:0 24px 8px;color:var(--red);font-weight:900}
.event-track .event-name{min-height:2.8em;margin-top:8px}
.event-track article>p{flex:1}
@media(max-width:900px){.screenings{grid-template-columns:1fr}.screen-note{text-align:center}}
@media(max-width:600px){.dates{grid-template-columns:1fr}.dates time{font-size:1.3rem}}

/* Editorial copy and Fukushi quotations. */
.intro-copy>p:not(.slogan){max-width:42em;margin-left:auto;margin-right:auto;text-align:left;text-wrap:pretty;word-break:auto-phrase;line-break:strict}
.section-quote{max-width:42em;font-size:18pt;line-height:1.7;letter-spacing:0;text-wrap:pretty;word-break:auto-phrase}
.section-quote span{font-size:18pt;line-height:1.5;margin-top:4px}
@media(max-width:600px){.screen-note{font-size:clamp(1.1rem,5vw,1.35rem)}.section-quote{font-size:18pt}}

/* Keep shop photos in the same frame while retaining the café seats. */
.shop-list .shop-lykke,.shop-list .shop-dumbo{height:220px;object-fit:cover;background:transparent}
.shop-list .shop-lykke{object-position:center}
.shop-list .shop-dumbo{object-position:center bottom}
.shop-list .shop-traditional-market{object-position:center 35%}

/* Additional unused portraits and reserved editorial copy space. */
footer.whispers{display:block;padding:80px max(6vw,28px);text-align:center}
.whispers-copy{max-width:1100px;margin:0 auto 36px}
.whispers .footer-title{margin:0}
.whispers-text{min-height:110px;margin-top:20px;border-top:1px solid rgba(255,255,255,.35)}
.whispers-gallery{display:grid;grid-template-columns:1fr 1.35fr 1fr;gap:18px;align-items:stretch;max-width:1100px;margin:0 auto}
.whispers-gallery img{display:block;width:100%;height:380px;object-fit:contain;background:#0b252c}
@media(max-width:700px){.whispers-gallery{grid-template-columns:1fr;gap:12px}.whispers-gallery img{height:auto;max-height:620px}.whispers-text{min-height:70px}}

/* Match the shop cards' colored copy panels below each route photo. */
.route-card>div{background:var(--blue);color:#fff}
.route-card .route-number{color:#7dd2c6}
.route-card h3{color:#fff}
.route-card .route-desc{color:rgba(255,255,255,.82)}

/* Show the closing portraits as photos without their padded color frames. */
.whispers-gallery{grid-template-columns:repeat(3,minmax(0,1fr));align-items:center;gap:12px}
.whispers-gallery img{height:auto;object-fit:initial;background:transparent;border:0;box-shadow:none}
@media(max-width:700px){.whispers-gallery{grid-template-columns:1fr}.whispers-gallery img{max-height:none}}

/* Five supplied portraits retain their full aspect ratios. */
.whispers-gallery{grid-template-columns:repeat(6,minmax(0,1fr));gap:16px;align-items:center}
.whispers-gallery img{grid-column:span 2}
.whispers-gallery img:nth-last-child(2){grid-column:2/span 2}
@media(max-width:700px){.whispers-gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.whispers-gallery img,.whispers-gallery img:nth-last-child(2){grid-column:auto}.whispers-gallery img:first-child{grid-column:1/-1;max-width:360px;justify-self:center}}

/* Align the introductory paragraphs and tighten the activity headings. */
.intro-copy>p:not(.slogan){max-width:none;margin-left:0;margin-right:0;text-align:left}
.event-track time{min-height:6rem;margin-top:16px}
.event-track .month-badge{font-size:1.2rem}
.event-track .event-name{min-height:2.5em;margin-top:5px;font-size:1.55rem;line-height:1.25}
.event-track h3{min-height:0;margin:0 24px 10px;font-size:1.6rem;line-height:1.3}
.route-card.photo-b h3{font-size:clamp(1.15rem,1.55vw,1.45rem);line-height:1.4;white-space:nowrap;padding:0}
@media(max-width:600px){.route-card.photo-b h3{font-size:clamp(1rem,4.5vw,1.35rem)}}

/* Preserve every shop photograph's full original proportions and frontage. */
.shop-list .card-photo{width:100%;height:auto;min-height:0;max-height:none;aspect-ratio:auto;object-fit:contain;object-position:center;background:transparent;transform:none;filter:none}
.shop-list article:hover .card-photo{transform:none;filter:none}

/* Equal photo and text rows, with complete photographs retained. */
.shop-list .card-photo{height:auto;aspect-ratio:4/3;object-fit:contain;background:#123640}
.shop-list article>div{display:block;width:100%}
.shop-list .shop-labels{display:flex;flex-wrap:wrap;justify-content:center;gap:4px}
.shop-list .shop-labels span{margin:0;max-width:100%}
.shop-list .shop-meta{display:flex;align-items:center;justify-content:center;margin:8px 0}
.shop-list .shop-meta .pilgrim,.shop-list .shop-meta .recommend{margin:0}
.shop-list .shop-address{display:flex;align-items:center;justify-content:center;margin:6px 0}
.shop-list .shop-meta:empty,.shop-list .shop-address:empty{display:none}
.shop-list .shop-address address{margin:0;font-size:12pt;line-height:1.5}
.shop-list article>div>h3{margin:7px auto}
.shop-list article>div>p{margin:8px 0 0;font-size:12pt;line-height:1.65}

/* Shop cards follow the date proposal's edge-to-edge photo and copy panel. */
.shops{background:var(--cream);color:var(--ink)}
.shops .section-heading.light{border-color:var(--ink)}
.shop-list{gap:18px;border:0}
.shop-list article{padding:0;gap:0;border:0;background:var(--blue);color:#fff}
.shop-list .card-photo{width:100%;aspect-ratio:4/3;height:auto;object-fit:cover;object-position:center;background:transparent;border:0;margin:0;padding:0}
.shop-list .shop-dumbo{object-position:center bottom}
.shop-list article>div{padding:22px 22px 28px}
.shop-list .shop-number{display:block;margin:0 0 10px;color:#7dd2c6;font-size:1rem;line-height:1.4}
.shop-list .shop-labels{gap:4px;margin:0 0 6px}
.shop-list .shop-meta{margin:4px 0}
.shop-list .pilgrim,.shop-list .local-pick{display:inline-block;margin:0;padding:3px 10px;border:1px solid #f3cf66;color:#ffe270;font-size:.88rem;font-style:normal;line-height:1.4;border-radius:99px}
.shop-list .local-pick{border-color:#83c8c1;color:#83c8c1}
.shop-list .shop-address{margin:4px 0}
.shop-list .shop-address address{font-size:12pt;line-height:1.4}
.shop-list article>div>h3{font-size:clamp(1.4rem,2vw,1.8rem);line-height:1.4;margin:7px auto 8px}
.shop-list article>div>p{margin:0;line-height:1.5;color:rgba(255,255,255,.82)}

/* Responsive typography and activity navigation. */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{font-family:"Noto Sans TC","Noto Sans CJK TC","Microsoft JhengHei",system-ui,sans-serif}
.intro-copy,.gift-teaser,.route-card,.shop-list article,.screen-note{min-width:0}
.event-controls{display:flex;justify-content:flex-end;gap:12px;margin:0 0 16px}
.event-controls button{display:grid;place-items:center;width:48px;height:48px;border:1px solid var(--blue);border-radius:50%;background:var(--blue);color:#fff;font-size:22px;cursor:pointer}
.event-controls button:disabled{opacity:.35;cursor:default}
.event-controls button:focus-visible{outline:3px solid var(--red);outline-offset:3px}
.event-track{overscroll-behavior-x:contain}
@media(max-width:900px){
 .event-controls{display:none}
 .event-track{display:flex;flex-direction:column;overflow:visible;scroll-snap-type:none;padding-bottom:0;gap:24px}
 .event-track article{flex:none;width:100%;min-width:0;min-height:0;scroll-snap-align:none}
 .event-track .card-photo{height:auto;aspect-ratio:4/3;object-fit:cover}
 .event-track time,.event-track .event-name{min-height:0}
 .event-track h3{margin-top:6px}
 .screen-note span,.route-card.photo-b h3{white-space:normal}
 .intro h1,.section-heading h2,.gift-head h2,.route-card h3,.shop-list h3,.event-track h3,.screen-note{overflow-wrap:normal;word-break:normal;line-break:strict}
 .shop-labels span{overflow-wrap:anywhere}
}

/* Trim the embedded screenshot edge in the Din Tai Fung photo. */
.shop-list .shop-photo-frame{position:relative;width:100%;aspect-ratio:4/3;overflow:hidden;margin:0;padding:0;border:0}
.shop-list .shop-photo-frame .shop-dintaifung{position:absolute;top:-2%;left:0;width:100%;height:104%;aspect-ratio:auto;object-fit:cover;object-position:center}

/* Hide the supplied market screenshot’s bottom white edge. */
.shop-list .shop-market-frame .shop-traditional-market{position:absolute;top:0;left:0;width:100%;height:102%;aspect-ratio:auto;object-fit:cover;object-position:center top;display:block}

.shop-list .shop-yongle-frame .shop-yongle{position:absolute;top:-1%;left:0;width:100%;height:102%;aspect-ratio:auto;object-fit:cover;object-position:65% center;display:block}
.shop-list .shop-yongle-frame .shop-yongle{top:0;height:108%;object-position:center top}

/* Justify the two introductory paragraphs while keeping final lines natural. */
.intro-copy>p:not(.slogan){text-align:justify;text-align-last:left;text-justify:inter-character;text-wrap:wrap}

/* Outdoor invitation: use one consistent heading size. */
.screenings .screen-note{font-size:clamp(1.65rem,2.8vw,2.65rem);line-height:1.25}
.screenings .screen-note span{display:block;white-space:normal}
.screenings .screen-note span+span{margin-top:0}

/* Language selection stays available on both desktop and mobile. */
.language-switch{display:flex;align-items:center;gap:4px;flex-shrink:0;font-size:13px;margin-left:16px}
.language-switch a{padding:5px 8px;border-radius:4px;white-space:nowrap}
.language-switch a[aria-current="page"]{background:rgba(255,255,255,.18);font-weight:700}
.language-switch a:focus-visible{outline:2px solid #ffe270;outline-offset:2px}
html[lang="ja"] body{font-family:"Noto Sans JP",sans-serif;line-break:strict;word-break:normal;overflow-wrap:anywhere}
html[lang="ja"] :is(.intro h1,.section-heading h2,.gift-head h2,.intro h2,.screen-note,.section-quote){font-family:"Noto Serif JP",serif}
html[lang="ja"] .topbar nav{gap:14px;font-size:12px}
html[lang="ja"] :is(.route-card h3,.shop-list h3,.event-track h3){white-space:normal;line-break:strict;word-break:normal;text-wrap:pretty}
html[lang="ja"] .route-place,html[lang="ja"] .shop-labels{white-space:normal}
html[lang="ja"] .event-name{white-space:normal;line-height:1.35}
html[lang="ja"] .shop-list p{height:auto;min-height:0;-webkit-line-clamp:unset;overflow:visible}
@media(max-width:1150px){html[lang="ja"] .topbar nav{display:none}html[lang="ja"] .menu{display:block}html[lang="ja"] .topbar nav.open{display:flex;position:absolute;top:100%;left:0;right:0;padding:20px 6vw;background:var(--blue);flex-direction:column;align-items:flex-start}}
@media(max-width:900px){.language-switch{margin-left:auto;margin-right:12px}html[lang="ja"] .section-heading h2{font-size:clamp(1.8rem,5vw,3rem)}}

html[lang="ja"] :is(.intro .slogan,.gift-teaser h2,.route-card h3,.shop-list h3,.event-track h3){font-family:"Noto Serif JP",serif}
html[lang="ja"] .shop-list article>div>p{height:auto;max-height:none;overflow:visible}

html[lang="ja"] .intro-copy>p.film-intro{text-align:left;text-align-last:left;line-height:1.8}
html[lang="ja"] .film-intro span{display:block}

html[lang="ja"] .gift-center-name{display:block;margin-top:.3em;font-size:clamp(1.1rem,2.5vw,2rem);line-height:1.5;font-weight:700;word-break:normal;line-break:strict}
