/* 羅東真理堂官網 — 節日版型（2026-11-15，Paul：節日要有特別、令人驚豔的風格）
   只改主視覺（.hero）；動畫只用 transform / opacity。預覽：網址加 ?fest=christmas 等（?fest=none 關閉）。
   深色節日由 JS 加上 tod-night（文字轉淺色）；淺色節日加 tod-day。 */
.fest, .fest__fx, .fa { position: absolute; pointer-events: none; }
.fest { inset: 0; overflow: hidden; }
.fest__fx { inset: 0; }
.fa { display: none; }
.fest__fx i { position: absolute; top: -40px; left: var(--x); display: none; }

/* 節日問候字卡 */
.festmsg { position: relative; display: flex; flex-direction: column; align-items: center; gap: 4px; margin: -8px auto 26px; padding: 12px 26px 14px; max-width: min(640px, 100%); border-radius: 18px; text-align: center;
  background: rgba(255,255,255,.62); border: 1px solid rgba(255,255,255,.8); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); box-shadow: 0 16px 36px -22px rgba(0,0,0,.45); animation: festIn 1.2s cubic-bezier(.2,.7,.2,1) both; }
.festmsg__t { font-family: var(--serif); font-weight: 700; font-size: clamp(19px, 2.4vw, 26px); letter-spacing: .12em; color: #7E2537; }
.festmsg__v { font-family: var(--serif); font-size: clamp(14px, 1.5vw, 16px); color: #45514A; line-height: 1.7; }
.festmsg__v:empty, .festmsg cite:empty { display: none; }
.festmsg cite { font-style: normal; font-size: 12.5px; letter-spacing: .14em; color: #8E6C2A; }
body.tod-night .festmsg { background: rgba(255,255,255,.08); border-color: rgba(255,255,255,.22); }
body.tod-night .festmsg__t { color: #F6DC8F; }
body.tod-night .festmsg__v { color: #E8E2D2; }
body.tod-night .festmsg cite { color: #E3C47E; }
@keyframes festIn { from { opacity: 0; transform: translateY(-12px) scale(.96); } to { opacity: 1; transform: none; } }
body.fest .hero { padding-top: clamp(104px, 14vh, 140px); }

/* 粒子共用動畫 */
@keyframes fFall { 0% { transform: translate3d(0, 0, 0) rotate(0); opacity: 0; } 8% { opacity: 1; } 100% { transform: translate3d(-60px, 105vh, 0) rotate(360deg); opacity: .2; } }
@keyframes fRise { 0% { transform: translate3d(0, 0, 0) scale(var(--s)); opacity: 0; } 10% { opacity: 1; } 100% { transform: translate3d(30px, -110vh, 0) scale(var(--s)); opacity: 0; } }
@keyframes fTw { 0%, 100% { opacity: .15; transform: scale(calc(var(--s) * .6)); } 50% { opacity: 1; transform: scale(var(--s)); } }
@keyframes fSway { 0%, 100% { transform: rotate(-4deg); } 50% { transform: rotate(4deg); } }
@keyframes fGlow { 0%, 100% { opacity: .75; transform: scale(.96); } 50% { opacity: 1; transform: scale(1.06); } }
@keyframes fSpin { to { transform: rotate(360deg); } }
@keyframes fFlick { 0%, 100% { transform: scaleY(1) skewX(0); } 25% { transform: scaleY(1.12) skewX(-3deg); } 50% { transform: scaleY(.92) skewX(2deg); } 75% { transform: scaleY(1.06) skewX(-1deg); } }

/* 雪（平安夜、聖誕） */
body.fest-eve .fest__fx i, body.fest-christmas .fest__fx i { display: block; width: calc(6px * var(--s)); height: calc(6px * var(--s)); border-radius: 50%; background: #fff; box-shadow: 0 0 6px rgba(255,255,255,.8); animation: fFall var(--t) linear var(--d) infinite; }
/* 金色閃光（主顯、過年、三一、父親節） */
body.fest-epiphany .fest__fx i, body.fest-newyear .fest__fx i, body.fest-trinity .fest__fx i, body.fest-fathers .fest__fx i, body.fest-reformation .fest__fx i {
  display: block; top: auto; bottom: calc(10% + var(--x) * .6); width: 12px; height: 12px; animation: fTw 3.4s ease-in-out var(--d) infinite;
  background: radial-gradient(circle, #FFF6D6 0 18%, transparent 20%), conic-gradient(from 45deg, transparent 0 20%, #F6D27A 20% 30%, transparent 30% 45%, #F6D27A 45% 55%, transparent 55% 70%, #F6D27A 70% 80%, transparent 80%); border-radius: 50%; }
/* 花瓣（復活節白色、母親節粉色） */
body.fest-easter .fest__fx i, body.fest-mothers .fest__fx i { display: block; width: calc(12px * var(--s)); height: calc(16px * var(--s)); border-radius: 14px 0 14px 0; background: linear-gradient(135deg, #FFFFFF, #F4EBD8); box-shadow: 0 2px 6px rgba(0,0,0,.08); animation: fFall var(--t) linear var(--d) infinite; }
body.fest-mothers .fest__fx i { background: linear-gradient(135deg, #FBD3DA, #E2687A); }
/* 火焰舌頭（五旬節） */
body.fest-pentecost .fest__fx i { display: block; top: auto; bottom: -30px; width: calc(14px * var(--s)); height: calc(22px * var(--s)); border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%; background: radial-gradient(ellipse at 50% 70%, #FFF3B0, #FFB347 45%, #E8452C 80%, transparent 82%); filter: drop-shadow(0 0 8px rgba(255,140,60,.8)); animation: fRise var(--t) ease-in var(--d) infinite; }
/* 落葉（感恩節） */
body.fest-thanksgiving .fest__fx i { display: block; width: calc(16px * var(--s)); height: calc(16px * var(--s)); border-radius: 0 70% 0 70%; background: linear-gradient(135deg, #E9A23B, #C2571E); animation: fFall var(--t) linear var(--d) infinite; }
body.fest-thanksgiving .fest__fx i:nth-child(3n) { background: linear-gradient(135deg, #D9C04A, #B07A1E); }
/* 天燈（元宵）、過年也有少量 */
body.fest-lantern .fest__fx i { display: block; top: auto; bottom: -60px; width: calc(22px * var(--s)); height: calc(30px * var(--s)); border-radius: 6px 6px 10px 10px; background: radial-gradient(ellipse at 50% 80%, #FFF1B8, #FFB347 50%, #E8692C 100%); box-shadow: 0 0 22px 6px rgba(255,170,80,.45); animation: fRise calc(var(--t) * 1.6) linear var(--d) infinite; }
/* 光點上升（升天節） */
body.fest-ascension .fest__fx i { display: block; top: auto; bottom: -20px; width: 5px; height: 5px; border-radius: 50%; background: #fff; box-shadow: 0 0 10px 3px rgba(255,255,255,.9); animation: fRise var(--t) ease-out var(--d) infinite; }

/* ===== 各節日 ===== */
/* 將臨期：紫色燭光，將臨燭依週數點亮 */
body.fest-advent .hero__art { background: radial-gradient(50% 45% at 50% 82%, rgba(255,190,110,.25), transparent 70%), linear-gradient(180deg, #160F20 0%, #24182F 55%, #33223D 100%); }
body.fest-advent .fa-candles { display: flex; gap: clamp(18px, 3vw, 34px); left: 50%; bottom: 7%; transform: translateX(-50%); align-items: flex-end; }
.fa-candles b { position: relative; display: block; width: clamp(18px, 2.2vw, 26px); height: clamp(90px, 12vw, 140px); border-radius: 4px 4px 2px 2px; background: linear-gradient(90deg, #5A2D82, #7B45A8 45%, #4A2470); box-shadow: inset 0 -10px 20px rgba(0,0,0,.25); }
.fa-candles b.c3 { background: linear-gradient(90deg, #B04A7C, #D8709E 45%, #8E3A64); }
.fa-candles b:nth-child(2) { height: clamp(100px, 13vw, 156px); } .fa-candles b:nth-child(3) { height: clamp(110px, 14.5vw, 172px); } .fa-candles b:nth-child(4) { height: clamp(96px, 12.5vw, 150px); }
.fa-candles i { position: absolute; left: 50%; bottom: 100%; width: 14px; height: 26px; margin-left: -7px; border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%; background: radial-gradient(ellipse at 50% 75%, #FFFDE8, #FFD36E 45%, #FF8A3D 80%, transparent 82%); transform-origin: 50% 100%; opacity: 0; filter: drop-shadow(0 0 12px rgba(255,190,90,.95)); animation: fFlick 1.4s ease-in-out infinite; }
.fa-candles i::after { content: ""; position: absolute; left: 50%; bottom: -40px; width: 140px; height: 140px; margin-left: -70px; border-radius: 50%; background: radial-gradient(closest-side, rgba(255,200,110,.28), transparent); }
.fa-candles[data-lit="1"] .c1 i, .fa-candles[data-lit="2"] .c1 i, .fa-candles[data-lit="2"] .c2 i,
.fa-candles[data-lit="3"] .c1 i, .fa-candles[data-lit="3"] .c2 i, .fa-candles[data-lit="3"] .c3 i, .fa-candles[data-lit="4"] i { opacity: 1; }
body.fest-advent .land, body.fest-advent .dust { opacity: .35; }

/* 平安夜：深夜藍、伯利恆之星光束、細雪 */
body.fest-eve .hero__art { background: radial-gradient(40% 40% at 76% 16%, rgba(255,231,163,.22), transparent 70%), linear-gradient(180deg, #050A1A 0%, #0C1733 55%, #15244A 100%); }
body.fest-eve .stars, body.fest-christmas .stars, body.fest-epiphany .stars, body.fest-lantern .stars, body.fest-midautumn .stars { opacity: 1 !important; }
body.fest-eve .fa-star, body.fest-christmas .fa-star, body.fest-epiphany .fa-star { display: block; right: 14%; top: 8%; width: clamp(120px, 14vw, 200px); animation: fGlow 4s ease-in-out infinite; }
.fa-star__glow { animation: fGlow 3s ease-in-out infinite; transform-origin: center; }
body.fest-eve .fa-beam, body.fest-epiphany .fa-beam { display: block; right: calc(14% + clamp(60px, 7vw, 100px) - 2px); top: calc(8% + clamp(60px, 7vw, 100px)); width: clamp(120px, 20vw, 300px); height: 80%; transform-origin: 50% 0; transform: translateX(50%) rotate(14deg); background: linear-gradient(180deg, rgba(255,240,190,.45), rgba(255,240,190,0) 90%); clip-path: polygon(48% 0, 52% 0, 100% 100%, 0 100%); filter: blur(2px); animation: fGlow 5s ease-in-out infinite; }
body.fest-eve .land .cross path { stroke: #FFF1C1; }

/* 聖誕節：酒紅＋金、金星、雪 */
body.fest-christmas .hero__art { background: radial-gradient(45% 40% at 78% 18%, rgba(255,215,130,.25), transparent 70%), radial-gradient(60% 50% at 10% 90%, rgba(30,90,60,.35), transparent 70%), linear-gradient(180deg, #2A070D 0%, #4A0E18 55%, #5E1420 100%); }
body.fest-christmas .land #gLine stop { stop-color: #F1D79A; }
body.fest-christmas .land #gLine stop:first-child, body.fest-christmas .land #gLine stop:last-child { stop-opacity: 0; }

/* 主顯節：靛藍、東方之星、光束 */
body.fest-epiphany .hero__art { background: radial-gradient(45% 40% at 78% 16%, rgba(255,215,130,.25), transparent 70%), linear-gradient(180deg, #0E1230 0%, #1C2050 55%, #2A2C60 100%); }

/* 大齋期：沉靜紫灰，簡約，小十字架 */
body.fest-lent .hero__art { background: linear-gradient(180deg, #EAE6EE 0%, #E3DDE8 55%, #EDE8EE 100%); }
body.fest-lent .fa-cross { display: block; color: rgba(94,62,120,.35); right: 12%; top: 16%; width: 70px; }
body.fest-lent .dust { display: none; }
body.fest-lent .festmsg__t { color: #5E3E78; }

/* 棕枝主日：嫩綠、棕櫚葉搖曳 */
body.fest-palm .hero__art { background: radial-gradient(60% 50% at 50% 80%, rgba(255,240,180,.5), transparent 70%), linear-gradient(180deg, #E4F1DE 0%, #F2F5E4 60%, #FBF6E6 100%); }
body.fest-palm .fa-palm { display: block; bottom: -2%; width: clamp(150px, 22vw, 320px); transform-origin: 50% 100%; animation: fSway 5s ease-in-out infinite; }
body.fest-palm .fa-palm.l { left: -2%; } body.fest-palm .fa-palm.r { right: -2%; transform: scaleX(-1); animation-name: fSwayR; animation-delay: -2.5s; }
@keyframes fSwayR { 0%, 100% { transform: scaleX(-1) rotate(-4deg); } 50% { transform: scaleX(-1) rotate(4deg); } }
body.fest-palm .festmsg__t { color: #2F6B4F; }

/* 受難週：肅穆炭灰、一個十字架、幾乎不動 */
body.fest-holyweek .hero__art { background: radial-gradient(40% 50% at 50% 30%, rgba(255,255,255,.06), transparent 70%), linear-gradient(180deg, #0D0D0E 0%, #17161A 60%, #1E1C1F 100%); }
body.fest-holyweek .fa-cross { display: block; color: rgba(230,224,210,.85); left: 50%; top: 9%; width: clamp(60px, 7vw, 96px); transform: translateX(-50%); filter: drop-shadow(0 0 18px rgba(255,255,255,.18)); }
body.fest-holyweek .land, body.fest-holyweek .dust, body.fest-holyweek .stars { opacity: 0 !important; }
body.fest-holyweek .hero__title { animation: none; }
body.fest-holyweek .festmsg__t { color: #E8E2D2; }

/* 復活節：破曉金光旋轉、白色花瓣、十字架 */
body.fest-easter .hero__art { background: radial-gradient(55% 55% at 50% 85%, rgba(255,214,120,.75), rgba(255,236,190,.35) 45%, transparent 75%), linear-gradient(180deg, #FFF8E6 0%, #FFF0D2 60%, #FDE4BC 100%); }
body.fest-easter .fa-burst { display: block; left: 50%; bottom: -55vmax; width: 130vmax; height: 130vmax; margin-left: -65vmax; border-radius: 50%; background: repeating-conic-gradient(from 0deg, rgba(255,222,140,.45) 0 6deg, transparent 6deg 18deg); -webkit-mask-image: radial-gradient(closest-side, #000 20%, transparent 70%); mask-image: radial-gradient(closest-side, #000 20%, transparent 70%); animation: fSpin 90s linear infinite; }
body.fest-easter .land .cross path { stroke: #C9902E; }
body.fest-easter .festmsg__t { color: #A0661A; }

/* 升天節：天藍、光往上 */
body.fest-ascension .hero__art { background: radial-gradient(45% 50% at 50% 0%, rgba(255,255,255,.9), transparent 70%), linear-gradient(180deg, #CFE3F5 0%, #E6F0F8 55%, #F6F8F6 100%); }
body.fest-ascension .festmsg__t { color: #2A5C8A; }

/* 五旬節：火焰、鴿子 */
body.fest-pentecost .hero__art { background: radial-gradient(60% 45% at 50% 100%, rgba(255,120,50,.45), transparent 70%), linear-gradient(180deg, #1C0A08 0%, #3A140E 55%, #561C12 100%); }
body.fest-pentecost .fa-dove { display: block; width: clamp(90px, 10vw, 140px); top: 12%; animation: fDove 18s ease-in-out infinite; filter: drop-shadow(0 0 16px rgba(255,255,255,.6)); }
@keyframes fDove { 0% { transform: translate(-20vw, 6vh) rotate(-6deg); opacity: 0; } 10% { opacity: 1; } 50% { transform: translate(55vw, -2vh) rotate(4deg); } 90% { opacity: 1; } 100% { transform: translate(120vw, 4vh) rotate(-4deg); opacity: 0; } }

/* 三一主日：三環交織慢轉 */
body.fest-trinity .hero__art { background: radial-gradient(50% 50% at 50% 40%, rgba(255,228,170,.45), transparent 70%), linear-gradient(180deg, #FBF7EE 0%, #F6EFE0 100%); }
body.fest-trinity .fa-rings { display: block; right: 10%; top: 14%; width: clamp(130px, 15vw, 210px); animation: fSpin 40s linear infinite; }

/* 宗教改革紀念日：路德玫瑰（信義會象徵） */
body.fest-reformation .hero__art { background: radial-gradient(40% 45% at 80% 25%, rgba(30,90,168,.35), transparent 70%), linear-gradient(180deg, #0B1220 0%, #121B2E 60%, #18233A 100%); }
body.fest-reformation .fa-rose { display: block; right: 11%; top: 11%; width: clamp(120px, 13vw, 190px); filter: drop-shadow(0 0 26px rgba(30,90,168,.6)); animation: fGlow 6s ease-in-out infinite; }

/* 感恩節：豐收金、落葉 */
body.fest-thanksgiving .hero__art { background: radial-gradient(55% 50% at 60% 85%, rgba(255,190,100,.55), transparent 70%), linear-gradient(180deg, #FBF0DC 0%, #F6DFBC 60%, #F0CF9E 100%); }
body.fest-thanksgiving .festmsg__t { color: #9A4A14; }

/* 母親節 / 父親節 */
body.fest-mothers .hero__art { background: radial-gradient(55% 50% at 70% 80%, rgba(255,190,200,.55), transparent 70%), linear-gradient(180deg, #FFF3F4 0%, #FCE6EA 60%, #FBEFE8 100%); }
body.fest-mothers .fa-flower { display: block; right: 9%; bottom: 8%; width: clamp(70px, 8vw, 110px); transform-origin: 50% 100%; animation: fSway 5s ease-in-out infinite; }
body.fest-fathers .hero__art { background: radial-gradient(55% 50% at 70% 80%, rgba(170,200,230,.5), transparent 70%), linear-gradient(180deg, #EEF3F8 0%, #E3ECF4 60%, #F3F2EC 100%); }
body.fest-fathers .festmsg__t { color: #2A4E78; }

/* 過年：朱紅漆金、燈籠、煙火 */
body.fest-newyear .hero__art { background: radial-gradient(60% 50% at 50% 100%, rgba(255,190,90,.35), transparent 70%), radial-gradient(40% 40% at 15% 15%, rgba(255,200,120,.18), transparent 70%), linear-gradient(180deg, #4A0606 0%, #7A0D0D 55%, #8E1414 100%); }
body.fest-newyear .fa-lanterns { display: block; inset: 0; }
.fa-lanterns b { position: absolute; top: 0; width: clamp(54px, 6vw, 84px); height: clamp(130px, 15vw, 200px); transform-origin: 50% 0; animation: fSway 4s ease-in-out infinite; }
.fa-lanterns b::before { content: ""; position: absolute; left: 50%; top: 0; width: 2px; height: 40%; background: #E3B23C; }
.fa-lanterns i { position: absolute; left: 0; right: 0; bottom: 14%; height: 52%; border-radius: 45%; background: radial-gradient(ellipse at 50% 45%, #FF6A3D, #D41F1F 55%, #9E0F0F); box-shadow: 0 0 40px 10px rgba(255,90,40,.35); }
.fa-lanterns i::before, .fa-lanterns i::after { content: ""; position: absolute; left: 30%; right: 30%; height: 8%; background: #E3B23C; border-radius: 3px; }
.fa-lanterns i::before { top: -4%; } .fa-lanterns i::after { bottom: -4%; }
.fa-lanterns .l1 { left: 7%; } .fa-lanterns .l2 { right: 7%; animation-delay: -2s; }
body.fest-newyear .fa-fw { display: block; inset: 0; }
.fa-fw i { position: absolute; width: 6px; height: 6px; border-radius: 50%; opacity: 0;
  box-shadow: 0 -60px #F6D27A, 42px -42px #FF9F6B, 60px 0 #F6D27A, 42px 42px #FF9F6B, 0 60px #F6D27A, -42px 42px #FF9F6B, -60px 0 #F6D27A, -42px -42px #FF9F6B, 0 -32px #FFF1C1, 32px 0 #FFF1C1, 0 32px #FFF1C1, -32px 0 #FFF1C1;
  animation: fBoom 3.6s ease-out infinite; }
.fa-fw .w1 { left: 24%; top: 22%; } .fa-fw .w2 { left: 72%; top: 16%; animation-delay: -1.2s; } .fa-fw .w3 { left: 50%; top: 30%; animation-delay: -2.4s; }
@keyframes fBoom { 0% { transform: scale(.1); opacity: 0; } 8% { opacity: 1; } 60% { transform: scale(1.4); opacity: .8; } 100% { transform: scale(1.7); opacity: 0; } }
body.fest-newyear .land #gLine stop { stop-color: #F6D27A; }
body.fest-newyear .land #gLine stop:first-child, body.fest-newyear .land #gLine stop:last-child { stop-opacity: 0; }
body.fest-newyear .festmsg__t { color: #FFE08A; }

/* 元宵：夜空滿天天燈 */
body.fest-lantern .hero__art { background: radial-gradient(60% 50% at 50% 100%, rgba(255,160,80,.25), transparent 70%), linear-gradient(180deg, #0A1024 0%, #142041 55%, #1E2B4F 100%); }

/* 端午：青綠河面、龍舟 */
body.fest-dragon .hero__art { background: radial-gradient(55% 45% at 60% 75%, rgba(255,230,160,.45), transparent 70%), linear-gradient(180deg, #DDEFE9 0%, #EEF5EC 55%, #F6F3E6 100%); }
body.fest-dragon .fa-boats { display: block; left: 0; right: 0; bottom: 6%; height: clamp(46px, 6vw, 80px); }
.fa-boats svg { width: 100%; height: 100%; overflow: visible; }
.fa-boats .boat { animation: fBoat 16s linear infinite; }
.fa-boats .b2 { animation-duration: 21s; animation-delay: -8s; }
@keyframes fBoat { from { transform: translateX(-220px); } to { transform: translateX(1500px); } }
.fa-boats .oar { animation: fRow .8s ease-in-out infinite; transform-box: fill-box; transform-origin: 50% 0; }
@keyframes fRow { 0%, 100% { transform: skewX(0); } 50% { transform: skewX(30deg); } }
body.fest-dragon .festmsg__t { color: #1E6A52; }

/* 中秋：明月、雲影（只有中秋才有月亮） */
body.fest-midautumn .hero__art { background: radial-gradient(35% 35% at 78% 22%, rgba(255,226,160,.28), transparent 70%), linear-gradient(180deg, #0B1428 0%, #16233F 55%, #213252 100%); }
body.fest-midautumn .fa-moon { display: block; right: 12%; top: 9%; width: clamp(110px, 12vw, 170px); aspect-ratio: 1; border-radius: 50%; background: radial-gradient(circle at 38% 36%, #FFF9E4, #F7E3A6 55%, #E8C77A); box-shadow: 0 0 60px 18px rgba(255,226,160,.35), 0 0 160px 60px rgba(255,226,160,.12); animation: fGlow 6s ease-in-out infinite; }
.fa-moon i { position: absolute; left: -40%; top: 55%; width: 120%; height: 22%; border-radius: 40px; background: linear-gradient(90deg, transparent, rgba(30,45,80,.75), transparent); animation: fCloud 14s ease-in-out infinite alternate; }
@keyframes fCloud { from { transform: translateX(-20%); } to { transform: translateX(40%); } }
body.fest-midautumn .festmsg__t { color: #FFE7A6; }

@media (max-width: 600px) {
  .festmsg { padding: 10px 16px 12px; margin-bottom: 20px; }
  body.fest-eve .fa-star, body.fest-christmas .fa-star, body.fest-epiphany .fa-star { right: 4%; top: 6%; width: 86px; }
  body.fest-eve .fa-beam, body.fest-epiphany .fa-beam { display: none; }
  .fa-lanterns .l1 { left: 2%; } .fa-lanterns .l2 { right: 2%; }
  body.fest-midautumn .fa-moon { right: 6%; top: 7%; width: 74px; }
  body.fest-reformation .fa-rose, body.fest-trinity .fa-rings { right: 4%; top: 7%; width: 70px; }
  body.fest-advent .fa-candles { bottom: 4%; }
}

/* 2026-11-15 第二輪：主角裝飾放進第一個畫面（以視窗高度定位，不受主視覺內容高度影響） */
body.fest-advent .fa-candles { bottom: auto; top: 56vh; left: 7%; transform: none; }
body.fest-palm .fa-palm { bottom: auto; top: 34vh; }
body.fest-dragon .fa-boats { bottom: auto; top: 72vh; }
body.fest-mothers .fa-flower { bottom: auto; top: 58vh; }
body.fest-easter .fa-burst { bottom: auto; top: calc(40vh - 65vmax); }
body.fest-holyweek .fa-cross { left: auto; right: 12%; top: 16%; transform: none; }
@media (max-width: 900px) {
  body.fest-advent .fa-candles { top: 84px; left: auto; right: 4%; gap: 8px; transform: scale(.42); transform-origin: 100% 0; }
  body.fest-palm .fa-palm { top: 52vh; width: 130px; }
  body.fest-dragon .fa-boats { top: auto; bottom: 1.5%; height: 44px; }   /* 手機：放在按鈕下方，避免躲在天氣小卡後面 */
  body.fest-mothers .fa-flower { top: 12vh; right: 4%; width: 56px; }
  body.fest-holyweek .fa-cross { right: 6%; top: 90px; width: 40px; }
}

/* ===== 淺色節日的夜晚版（2026-11-15，Paul 同意）：天黑後換同色系深色，節日裝飾照常 =====
   body.fest-night 由 JS 依羅東真實日出日落加上；文字轉淺色沿用 tod-night。 */
body.fest-night.fest-palm .hero__art { background: radial-gradient(55% 45% at 50% 85%, rgba(140,192,122,.18), transparent 70%), linear-gradient(180deg, #0B1610 0%, #12211A 60%, #18291F 100%); }
body.fest-night.fest-palm .fa-palm path { stroke: #9CCB86; }
body.fest-night.fest-palm .fa-palm { filter: drop-shadow(0 0 10px rgba(156,203,134,.35)); }
body.fest-night.fest-lent .hero__art { background: radial-gradient(40% 40% at 80% 25%, rgba(180,150,210,.12), transparent 70%), linear-gradient(180deg, #120F17 0%, #1B1622 60%, #221C2A 100%); }
body.fest-night.fest-lent .fa-cross { color: rgba(205,185,230,.5); }
body.fest-night.fest-easter .hero__art { background: radial-gradient(55% 55% at 50% 85%, rgba(255,200,110,.30), rgba(255,200,110,.08) 45%, transparent 75%), linear-gradient(180deg, #120D06 0%, #1E160B 60%, #2A1E0E 100%); }
body.fest-night.fest-easter .fa-burst { background: repeating-conic-gradient(from 0deg, rgba(255,210,120,.18) 0 6deg, transparent 6deg 18deg); }
body.fest-night.fest-easter .land .cross path { stroke: #F1D79A; }
body.fest-night.fest-ascension .hero__art { background: radial-gradient(45% 50% at 50% 0%, rgba(200,220,255,.22), transparent 70%), linear-gradient(180deg, #0A1328 0%, #122140 60%, #1A2C50 100%); }
body.fest-night.fest-trinity .hero__art { background: radial-gradient(50% 50% at 50% 40%, rgba(227,196,126,.14), transparent 70%), linear-gradient(180deg, #12100B 0%, #1B1810 60%, #231E13 100%); }
body.fest-night.fest-trinity .fa-rings { filter: drop-shadow(0 0 12px rgba(227,196,126,.5)); }
body.fest-night.fest-thanksgiving .hero__art { background: radial-gradient(55% 50% at 60% 85%, rgba(255,170,80,.22), transparent 70%), linear-gradient(180deg, #170F08 0%, #24180D 60%, #2E1E10 100%); }
body.fest-night.fest-mothers .hero__art { background: radial-gradient(55% 50% at 70% 80%, rgba(240,140,160,.20), transparent 70%), linear-gradient(180deg, #170C10 0%, #241318 60%, #2E1820 100%); }
body.fest-night.fest-mothers .fa-flower { filter: drop-shadow(0 0 12px rgba(240,140,160,.45)); }
body.fest-night.fest-fathers .hero__art { background: radial-gradient(55% 50% at 70% 80%, rgba(140,170,210,.18), transparent 70%), linear-gradient(180deg, #0B111C 0%, #131C2C 60%, #1A2538 100%); }
body.fest-night.fest-dragon .hero__art { background: radial-gradient(55% 45% at 60% 80%, rgba(120,200,180,.16), transparent 70%), linear-gradient(180deg, #071315 0%, #0D2022 60%, #112A2A 100%); }
body.fest-night.fest-dragon .fa-boats { filter: drop-shadow(0 0 10px rgba(255,200,120,.35)); }
/* 夜晚版：問候字卡一律用淺色字（蓋過各節日白天用的深色字） */
body.fest.fest-night .festmsg__t { color: #F6DC8F; }
body.fest.fest-night .festmsg__v { color: #E8E2D2; }
body.fest.fest-night .festmsg cite { color: #E3C47E; }
