*{box-sizing:border-box}body{margin:0;background:#eae7dc;font-family:"Songti SC","SimSun",serif;color:#354332;overflow:hidden}#stage{height:100vh;width:100vw;background-size:cover;background-position:center;position:relative;display:grid;place-items:center}#stage.cinnabar{color:#fff0d7}.stage-welcome{position:absolute;inset:15% 7% 16% 42%;text-align:center;display:flex;align-items:center;justify-content:center;flex-direction:column}.stage-welcome h1{font-size:clamp(30px,5.2vw,95px);font-weight:400;letter-spacing:.06em;margin:28px 0}.stage-welcome .label{font:12px sans-serif;letter-spacing:5px}.stage-welcome p{font-size:clamp(14px,1.6vw,30px);letter-spacing:.12em}.stage-welcome .date{font-size:clamp(18px,2.3vw,44px);letter-spacing:.25em}.stage-qr{position:absolute;bottom:4%;right:3%;padding:9px;background:#fffdf5;color:#4e5944;text-align:center;border-radius:4px;font:12px/1.6 sans-serif}.stage-qr img{width:clamp(70px,8vw,150px);display:block}.stage-card{background:#faf9f1f5;border:1px solid #dadfce;box-shadow:0 10px 80px #1f2f1712;color:#35462c;width:84%;max-height:85vh;padding:4vw 5vw;border-radius:5px;text-align:center;overflow:auto}.stage-card h1{font-size:clamp(26px,3.8vw,72px);font-weight:400;line-height:1.4;margin:10px 0 24px}.stage-card h2{font-size:clamp(18px,2vw,40px);font-weight:400}.options{display:grid;grid-template-columns:1fr 1fr;gap:16px}.options div{border:1px solid #cbd5bc;padding:14px 20px;font:clamp(16px,1.7vw,34px)/1.4 sans-serif}.options .correct{background:#e5edda;border-color:#799260}.story{font-size:clamp(18px,2vw,38px);line-height:1.8;margin-top:30px}.time{font:clamp(16px,2vw,38px) Georgia,serif;color:#6c8058}.winners{display:flex;flex-wrap:wrap;gap:25px;justify-content:center}.winner{font-size:clamp(28px,4vw,75px);padding:25px}.blessings{display:grid;gap:18px}.blessings p{font-size:clamp(18px,2.5vw,42px);padding:18px;border-bottom:1px solid #d8dfcc;margin:0}.blessings small{display:block;font:14px sans-serif;margin-top:8px;color:#819070}.photo-wall{display:flex;align-items:center;justify-content:center;gap:18px;flex-wrap:wrap;max-height:60vh;overflow:hidden}.photo-wall img{object-fit:contain;max-width:42%;max-height:52vh;background:#e9eddf}.pair{text-align:center;padding:40px;background:#faf9f1f5;border-radius:8px;color:#35462c;font-family:sans-serif}.pair h1{font-family:serif;font-weight:400;font-size:40px}.pair strong{font:70px/1.8 Georgia,serif;letter-spacing:14px}.pair p{color:#7c8970}.racer{display:flex;gap:24px;align-items:center;font:22px sans-serif;margin:12px 0}.racer .track{flex:1;background:#e7eddd;height:22px}.racer .fill{height:100%;background:#718b5e}.corner-label{position:absolute;top:18px;left:22px;font:13px sans-serif;opacity:.7}#connection{position:fixed;left:18px;bottom:14px;font:12px sans-serif;background:#faf9f1cc;color:#7b8970;padding:5px 10px;border-radius:3px}#fullscreen{position:fixed;top:14px;right:14px;background:#faf9f1d9;color:#6a795b;border:1px solid #d5ddc8;border-radius:4px;padding:8px 13px;opacity:.3;cursor:pointer}#fullscreen:hover,#fullscreen:focus{opacity:1}body:fullscreen #fullscreen{opacity:0}body:fullscreen #fullscreen:hover{opacity:1}@media(max-width:600px){.stage-welcome{inset:20% 10%}.stage-welcome h1{font-size:35px}.options{grid-template-columns:1fr}.stage-card{padding:25px}.stage-qr{display:none}}


.cinnabar .stage-card{color:#7e3030;border-color:#cfa39b}.cinnabar .options .correct{background:#f1ded7;border-color:#a86157}.cinnabar .racer .fill{background:#8a3d39}.cinnabar .time{color:#984b40}.story-photo{max-width:35vw;max-height:35vh;object-fit:contain;margin-top:18px}.stage-card:has(.story-photo) .story{font-size:clamp(16px,1.4vw,28px);margin:18px 0}

/* Blessings use their own stage so the host can switch away without resetting other screens. */
#stage.blessing-stage {
 --veil-top: #19251ee8;
 --veil-bottom: #111c16e8;
 --gold: #e9d9ae;
 --ivory: #fff8e9;
 display: block;
 isolation: isolate;
 color: var(--ivory);
 overflow: hidden;
}
#stage.blessing-stage.cinnabar { --veil-top: #3d1619ed; --veil-bottom: #281012e8; --gold: #f4cea2; }
#stage.blessing-stage.garden { --veil-top: #332b20eb; --veil-bottom: #241d14e8; --gold: #ecd5a2; }
.blessing-stage::before {
 content: "";
 position: absolute;
 inset: 0;
 z-index: -1;
 background: linear-gradient(180deg,var(--veil-top),#201a1852 50%,var(--veil-bottom)),
             radial-gradient(ellipse at 50% 40%,#211a1680,#100e0bc4);
}
.blessing-stage::after {
 content: "";
 position: absolute;
 inset: 2.5%;
 border: 1px solid #f4e5bf40;
 pointer-events: none;
 z-index: -1;
}
.blessing-heading {
 position: absolute;
 inset: 6% 4% auto;
 text-align: center;
 text-shadow: 0 2px 18px #140f0ab3;
}
.blessing-kicker {
 display: flex;
 align-items: center;
 justify-content: center;
 gap: 1.4em;
 margin: 0;
 color: var(--gold);
 font: 600 clamp(10px,1vw,16px)/1.2 Georgia,serif;
 letter-spacing: .32em;
}
.blessing-kicker span { width: clamp(20px,4vw,72px); height: 1px; background: currentColor; opacity: .55; }
.blessing-heading h1 {
 font-size: clamp(28px,4.4vw,82px);
 font-weight: 400;
 letter-spacing: .08em;
 margin: .25em 0 .14em;
}
.blessing-couple { margin: 0; color: var(--gold); font-size: clamp(14px,1.5vw,27px); letter-spacing: .17em; }
.blessing-flow {
 position: absolute;
 inset: 31% 0 18%;
 display: grid;
 grid-template-rows: repeat(3,minmax(0,1fr));
 overflow: hidden;
}
.blessing-lane { position: relative; display: grid; align-items: center; }
.blessing-empty {
 grid-area: 1 / 1 / 4 / 2;
 position: absolute;
 align-self: center;
 justify-self: center;
 margin: 0 1em;
 padding: .9em 1.5em;
 border-block: 1px solid #f5e4be55;
 background: #231e1766;
 text-align: center;
 font-size: clamp(16px,1.7vw,32px);
}
.blessing-bullet {
 position: absolute;
 left: calc(100% + 1rem);
 display: flex;
 align-items: center;
 gap: clamp(8px,1.4vw,24px);
 width: max-content;
 max-width: 70vw;
 padding: clamp(5px,.7vh,14px) clamp(12px,2vw,34px);
 border: 1px solid #e9d4a6;
 border-radius: 18px;
 background: linear-gradient(115deg,#fffdf4,#f3e8d0);
 box-shadow: 0 8px 22px #1a140b45;
 color: #33291d;
}
.blessing-bullet.is-playing { animation: blessing-cross var(--cross-time) linear both; }
.blessing-bullet p {
 margin: 0;
 font-size: clamp(14px,min(2vw,3.4vh),35px);
 line-height: 1.24;
 overflow-wrap: anywhere;
}
.blessing-bullet small { display: block; margin-top: .32em; color: #6e5940; font: 600 clamp(10px,1vw,17px)/1.15 sans-serif; }
.blessing-mark { flex: none; color: #8b6634; font-size: clamp(15px,1.9vw,34px); }
@keyframes blessing-cross { to { transform: translateX(calc(-100vw - 100% - 2rem)); } }
.blessing-footer {
 position: absolute;
 bottom: 6%;
 left: 50%;
 transform: translateX(-50%);
 font: clamp(11px,1vw,17px)/1.3 sans-serif;
 letter-spacing: .18em;
 color: var(--gold);
 white-space: nowrap;
}
.blessing-footer span { margin-right: .35em; }
.blessing-stage .stage-qr { z-index: 1; bottom: 4%; right: 4%; }
.blessing-stage .stage-qr img { width: clamp(62px, min(8vw,13vh),132px); }
.blessing-stage .corner-label { z-index: 1; top: 3.2%; left: 3.5%; color: var(--gold); font-size: clamp(9px,1vw,13px); opacity: 1; }
@media (max-width: 600px) {
 .blessing-heading { top: 12%; }
 .blessing-bullet { max-width: 85vw; }
 .blessing-stage .stage-qr { display: block; }
 .blessing-footer { left: 7%; transform: none; }
}
@media (prefers-reduced-motion: reduce) {
 .blessing-bullet { left: 50%; transform: translateX(-50%); }
 .blessing-bullet.is-playing { animation: none; }
}
.blessing-stage .stage-qr img[hidden] { display: none; }
