/* Permanent lantern town; annual identity lives in annualTheme.ts. */
:root { --orange:#ee6b28; --yellow:#ffd58b; --ink:#280906; --cream:#fff3d6; --purple:#c25a50; }
body { background:#240704; color:var(--cream); }
body::before { background:#240704 url('hyakume-festival-city.webp') center/cover no-repeat; }
body::after { background:linear-gradient(180deg,rgba(25,4,2,.12),rgba(27,4,2,.18) 55%,rgba(25,4,2,.38)); box-shadow:inset 0 0 12vw #1b040266; }
.site-header { background:linear-gradient(#250502e8,#25050233,transparent); height:88px; }
.site-header nav { font-size:14px; gap:30px; }
.mini-logo { width:104px; }
.hero { min-height:1040px; min-height:max(920px,100svh); padding:110px 24px 60px; justify-content:flex-start; isolation:isolate; }
.hero::before { background:radial-gradient(ellipse at 50% 40%,#210502aa,transparent 58%),linear-gradient(transparent 70%,#240704); }
.eyebrow { top:120px; font-size:12px; color:#f9d494; }
.hero-logo { width:185px; margin:38px 0 0; transform:none; }
.hero-logo img { max-height:125px; }
.theme-prelude { margin:22px 0 18px; font-size:15px; letter-spacing:.3em; color:#ffe3a7; text-shadow:0 2px 15px #220806; }
.festival-title { margin:0; display:flex; flex-direction:column; align-items:center; font-family:"Zen Maru Gothic","Hiragino Kaku Gothic ProN","Yu Gothic",sans-serif; font-weight:900; font-size:clamp(64px,8.6vw,130px); line-height:1.2; letter-spacing:.12em; text-indent:.12em; color:#ffe1a5; text-shadow:0 4px 0 #61331b,0 0 45px #ffaf4b55,0 7px 24px #190200; }
.festival-title>span { font-size:25px; line-height:1.8; letter-spacing:.5em; text-indent:.5em; }
.festival-title>small { font:500 13px/2.5 "Zen Maru Gothic",sans-serif; letter-spacing:.55em; text-indent:.55em; margin-top:14px; color:#f4d4a8; }
.hero-copy { margin:25px 0 30px; font-size:20px; line-height:1.8; text-shadow:0 2px 15px #1e0402; }
.event-meta { margin-top:auto; width:min(920px,100%); border-radius:0; background:#250603dd; border:1px solid #dba46399; backdrop-filter:blur(8px); box-shadow:0 10px 60px #1a0604; }
.event-meta div { padding:20px; gap:12px; }
.event-meta small,.event-meta em { font-size:12px; }
.event-meta strong { font-size:14px; }
.festival-eye { position:absolute; right:8%; top:40%; width:clamp(150px,18vw,255px); z-index:3; text-align:center; }
.festival-eye button { cursor:pointer; border:0; padding:0; color:#ffe2ad; background:none; width:100%; }
.festival-eye img { display:block; width:100%; height:auto; filter:drop-shadow(0 0 28px #fc582969); animation:eye-float 5s ease-in-out infinite; transition:filter .4s; }
.festival-eye button span { display:block; font-size:12px; letter-spacing:.1em; margin-top:4px; text-shadow:0 2px 8px #1c0200; }
.festival-eye button:focus-visible { outline:2px solid #ffe2a3; outline-offset:8px; border-radius:50%; }
.festival-eye.is-awake img { filter:drop-shadow(0 0 45px #ff9140); }
.festival-eye p { position:absolute; top:100%; right:0; width:260px; font-size:15px; line-height:1.7; color:#ffeecb; text-shadow:0 2px 8px #1c0200; }
.festival-eye p:not(:empty) { padding:16px; background:#320c08f5; border:1px solid #d4a75e; }
.festival-eye p small { display:block; font-size:12px; }
@keyframes eye-float { 50% { transform:translateY(-12px) rotate(3deg); } }
.section { background:#240704ec; padding:110px max(7vw,24px); }
.section-heading p { color:#ffcc83; font-size:12px; }
.section-heading>span { font-size:14px; }
.section-heading h2 { color:#ffe0aa; }
.news-section { border-block:1px solid #d3a57033; gap:6vw; }
.news-list { border-color:#b7926399; }
.news-item { grid-template-columns:100px 110px 1fr 24px; border-color:#b7926355; }
.news-item time,.tag { font-size:12px; }
.news-item h3 { font-size:16px; }
.about-section { min-height:850px; background:linear-gradient(#240704dd,#24070477,#240704e8); }
.about-copy { width:min(750px,85vw); }
.about-copy .section-heading h2 { font-family:"Zen Maru Gothic","Hiragino Kaku Gothic ProN","Yu Gothic",sans-serif; font-weight:700; line-height:1.35; letter-spacing:.15em; }
.about-copy .lead { font-size:clamp(23px,3vw,34px); }
.about-copy>p:last-child { font-size:16px; line-height:2.4; text-shadow:0 2px 10px #1e0402; }
.program-section { background:linear-gradient(#240704ec,#2d0c09e8); }
.section-intro { font-size:16px; line-height:2; }
.program-card { filter:drop-shadow(0 15px 25px #19020066); }
.program-card-front { border-color:#c69b5b; }
.program-card-back { background:linear-gradient(135deg,#fff1ce,#dfc693); }
.program-back-text { font-size:16px; line-height:1.8; }
.program-facts strong,.program-facts i,.program-back-kicker,.program-turn-back { font-size:12px; }
.program-card-back>b { margin-top:18px; }
.program-top,.program-flip-hint,.program-secret-hint { font-size:12px; }
.access-section { background:#2e0b08eb; }
.map-card { border:6px solid #bc9256; }
.access-copy dt,.access-copy dd { font-size:14px; }
.access-caption,.note { font-size:12px; }
.history-section { background:linear-gradient(#2e0b08f2,#2e0b08b8); }
.closing { background:linear-gradient(#2e0b08b8,#220604aa); }
footer { background:#1f0503ed; border-color:#c4975144; }
.footer-links { font-size:14px; }
.footer-bottom,.footer-brand small { font-size:12px; }
.chapter-guide { background:#2d0b08eb; border-color:#d9ac67; }
.chapter-guide small { font-size:12px; }
.intro-paper { background:#240704 url('hyakume-festival-city.webp') center/cover no-repeat; }
.intro-skip { font-size:14px; }
.news-detail { background:linear-gradient(90deg,transparent,#250603c9 15% 85%,transparent); }
.news-detail-body p { font-size:16px; }
.news-detail-back,.news-detail-title>p,.news-detail-nav small { font-size:12px; }
.news-detail-nav span { font-size:14px; }
@media (max-width:1100px) and (min-width:801px) {
  .festival-eye { right:2%; top:48%; width:145px; }
  .news-section { grid-template-columns:1fr; }
}
@media (max-width:800px) {
  body::before { background-image:url('hyakume-festival-city.webp'); background-position:center; }
  .intro-paper { background-image:url('hyakume-festival-city.webp'); }
  .site-header { height:70px; }
  .mini-logo { width:80px; }
  .hero { min-height:1060px; padding:90px 20px 45px; }
  .eyebrow { top:88px; width:calc(100% - 40px); font-size:10px; letter-spacing:.15em; }
  .hero-logo { width:145px; margin-top:40px; }
  .theme-prelude { font-size:13px; letter-spacing:.15em; margin-top:20px; }
  .festival-title { font-size:clamp(52px,14vw,95px); }
  .festival-title>span { font-size:20px; }
  .festival-title>small { font-size:12px; letter-spacing:.3em; }
  .hero-copy { font-size:18px; margin-top:22px; }
  .festival-eye { position:relative; order:1; top:auto; right:auto; width:155px; margin:2px auto 85px; }
  .festival-eye p { top:92%; left:50%; right:auto; transform:translateX(-50%); }
  .event-meta { order:2; max-width:460px; margin-top:0; }
  .event-meta div { padding:12px 10px; }
  .event-meta strong { font-size:14px; }
  .section { padding:80px 24px; }
  .news-section { padding-bottom:140px; }
  .news-item { grid-template-columns:95px 1fr 24px; }
  .news-list { margin-top:12px; }
  .about-section { min-height:900px; }
  .about-copy { width:100%; }
  .about-copy .section-heading h2 { font-size:46px; }
  .about-copy .lead { font-size:23px; }
  .about-copy>p:last-child { font-size:16px; }
  .program-back-text { font-size:15px; }
  .program-facts { margin-top:14px; }
  .program-card-back { padding:24px; }
  .program-card-back>b { font-size:30px; margin-top:18px; }
  .program-back-text { margin-top:15px; }
  .section-heading>span { line-height:1.8; }
  .chapter-guide { right:12px; }
  .news-detail-body p { font-size:16px; }
}
@media (prefers-reduced-motion:reduce) { .festival-eye img { animation:none; } }

/* Walk through rows of lanterns, toward a warm opening in the town. */
.route-lantern-transition { position:fixed; inset:0; z-index:2000; overflow:hidden; visibility:hidden; pointer-events:none; background:#250906; isolation:isolate; }
.route-lantern-transition.is-active { visibility:visible; pointer-events:auto; animation:passage-appear .16s ease-out both; }
.lantern-passage-depth { position:absolute; inset:0; background:radial-gradient(ellipse at 50% 44%,#d88a4c80 0, #75432255 15%,#290906 58%,#180503 100%); }
.lantern-passage-row { position:absolute; inset:0; opacity:0; transform-origin:50% 44%; will-change:transform,opacity; }
.is-active .lantern-passage-row { animation:lantern-travel 1.03s cubic-bezier(.42,.05,.75,.48) var(--row-delay) both; }
.passage-lantern { position:absolute; width:clamp(65px,10vw,170px); height:auto; transform:translate(-50%,-50%) rotate(var(--tilt)); filter:drop-shadow(0 0 18px #ff7f2366); }
.lantern-passage-glow { position:absolute; inset:0; opacity:0; background:radial-gradient(ellipse at 50% 44%,#ffdca0,#d58c4e 52%,#68432b); }
.is-active .lantern-passage-glow { animation:passage-cover .28s .78s ease-in both; }
@keyframes lantern-travel { 0% { transform:scale(.12); opacity:0; } 12% { opacity:.6; } 30% { opacity:1; } 90% { opacity:1; } 100% { transform:scale(4); opacity:0; } }
@keyframes passage-appear { from { opacity:0; } to { opacity:1; } }
@keyframes passage-cover { to { opacity:1; } }
@media(max-width:800px) {
  .passage-lantern { width:22vw; max-width:115px; filter:none; }
  .passage-lantern:nth-child(2),.passage-lantern:nth-child(3),.passage-lantern:nth-child(7),.passage-lantern:nth-child(8) { display:none; }
}
@media(prefers-reduced-motion:reduce) { .route-lantern-transition { display:none; } }
/* Shared lantern passage for first arrival and route departures. */
.lantern-intro { position:fixed; inset:0; z-index:2100; overflow:hidden; background:#250906; animation:lantern-intro-out .5s 1s ease-out forwards; }
@keyframes lantern-intro-out { to { opacity:0; visibility:hidden; } }
.lantern-story .story-bat img { animation:lantern-sway 5s ease-in-out infinite; }
.lantern-story .chapter-guide img { filter:drop-shadow(0 0 10px #ff9b4155); object-fit:contain; }
.lantern-story .chapter-guide-leader { width:38px; height:46px; animation:lantern-sway 4s ease-in-out infinite; }
.lantern-story .chapter-guide { grid-template-columns:38px auto 22px; }
.lantern-story .chapter-guide-flock img { width:22px; height:30px; }
.not-found-bats img { animation:lantern-sway 5s ease-in-out infinite; }
.venue-canopy { position:absolute; top:-40px; left:0; width:100%; height:250px; z-index:-1; pointer-events:none; overflow:hidden; filter:drop-shadow(0 8px 22px #e4302733); }
.venue-canopy-row { position:absolute; inset:0; }
.venue-canopy-row img { position:absolute; width:8vw; max-width:120px; height:auto; transform:translateX(-50%); transform-origin:50% 0; animation:canopy-sway 7s var(--swing-delay) ease-in-out infinite; }
.canopy-row-1 { left:13%; width:74%; top:68px; opacity:.85; }
.canopy-row-1 img { width:5vw; }
.canopy-row-2 { left:27%; width:46%; top:119px; opacity:.7; }
.canopy-row-2 img { width:3vw; }
.hero::before { background:radial-gradient(ellipse at 50% 0,#db362138,transparent 40%),radial-gradient(ellipse at 50% 40%,#210502aa,transparent 58%),linear-gradient(transparent 70%,#240704); }
.about-section { flex-direction:column; justify-content:center; gap:70px; }
.venue-world { position:relative; width:min(1150px,100%); margin:0; border:1px solid #e3664055; background:#260b09; box-shadow:0 0 65px #e8402522; }
.venue-world>img { width:100%; height:auto; display:block; }
.venue-world figcaption { padding:30px 36px; text-align:left; background:linear-gradient(110deg,#431a22,#310b08); }
.venue-world figcaption>span { display:block; color:#efba83; font-size:12px; letter-spacing:.2em; }
.venue-world strong { display:block; font-size:clamp(21px,2.5vw,32px); margin-top:10px; color:#ffdfad; }
.venue-world p { font-size:16px; line-height:1.9; }
.venue-world small { display:block; color:#d0c8c5; font-size:12px; }
@keyframes lantern-sway { 50% { transform:rotate(5deg) translateY(-5px); } }
@keyframes canopy-sway { 50% { transform:translateX(-50%) rotate(3deg); } }
@media(max-width:800px) {
 .venue-canopy { top:-5px; height:190px; }
 .venue-canopy-row img { width:15vw; }
 .canopy-row-1 { top:52px; }
 .canopy-row-1 img { width:10vw; }
 .canopy-row-2 { top:97px; }
 .canopy-row-2 img { width:6vw; }
 .venue-canopy-row img:nth-child(even) { display:none; }
 .venue-world figcaption { padding:23px; }
 .about-section { gap:45px; }
}
@media(prefers-reduced-motion:reduce) {
 .lantern-intro { display:none; }
 .venue-canopy-row img,.lantern-story .story-bat img,.lantern-story .chapter-guide-leader,.not-found-bats img { animation:none; }
}
/* Chimney-town residents: shared cutouts retain the discovery interactions. */
.castle-window-arch.resident-town { --resident-y:8%; }
.castle-window-arch.resident-town img { width:100%; bottom:-12%; }
.castle-window-year { font-size:12px; white-space:nowrap; }
.news-pumpkin p,.graveyard-reveal p,.tiny-resident p,.castle-window-resident p { font-size:14px; }
.news-pumpkin p small,.graveyard-reveal p small,.castle-window-resident p small { font-size:12px; white-space:normal; }
.news-pumpkin { bottom:-56px; }
.news-pumpkin button { transform:translateY(28%); }
.tiny-resident img { object-fit:contain; }
@media(max-width:800px) {
 .news-pumpkin p,.graveyard-reveal p,.tiny-resident p,.castle-window-resident p { font-size:13px; max-width:190px; }
 .news-pumpkin p small,.graveyard-reveal p small,.castle-window-resident p small { font-size:12px; }
}

/* Permanent event title, with independently removable subtitle. */
.event-wordmark { display:flex; flex-direction:column; align-items:center; color:#fff0cd; font-family:"Kranky",Georgia,serif; font-weight:400; line-height:1.05; text-align:center; text-shadow:0 3px 0 #612a39,0 6px 22px #1d0402; }
.wordmark-place { font-size:.54em; letter-spacing:.2em; padding-left:.2em; }
.wordmark-name { display:block; font-size:1em; letter-spacing:.015em; }
.wordmark-year { font-size:.42em; letter-spacing:.24em; padding-left:.24em; color:#ffd58b; margin-top:.16em; }
.hero-logo.event-main-title { width:min(820px,94vw); margin:70px 0 0; font-size:clamp(40px,8.4vw,104px); transform:none; }
.event-subtitle { margin:25px 0 0; font-size:clamp(16px,2vw,21px); letter-spacing:.22em; color:#ffdda8; text-align:center; }
.mini-logo .event-wordmark { font-size:17px; }
.closing-logo .event-wordmark { font-size:clamp(35px,7vw,80px); }
@media(max-width:800px) { .hero-logo.event-main-title { margin-top:66px; } .mini-logo .event-wordmark { font-size:13px; } }

/* Illustrated event logo retains the original Halloween letterforms. */
.event-wordmark { display:block; width:100%; line-height:0; }
.event-wordmark-image { display:block; width:100%; height:auto; object-fit:contain; }
.hero-logo.event-main-title { width:min(540px,84vw); margin-top:36px; }
.hero-logo.event-main-title .event-wordmark-image { max-height:420px; filter:drop-shadow(-5px 4px 0 #622822) drop-shadow(0 0 22px #d8433730); }
.closing-logo .event-wordmark-image { max-height:380px; }
.mini-logo .event-wordmark-image { max-height:64px; }
@media(max-width:800px) { .hero-logo.event-main-title { margin-top:52px; } .hero-logo.event-main-title .event-wordmark-image { max-height:330px; } }
.event-wordmark { position:relative; }
.event-wordmark .event-wordmark-eye { position:absolute; left:46%; top:4%; width:8%; height:auto; max-height:none; filter:none; }
.mini-logo .event-wordmark-eye { display:none; }
