.episode-cinema{position:absolute;inset:0;z-index:12;pointer-events:none;color:#f5dce9;background:linear-gradient(#08070e66,transparent 48%,#08070e44)}
.episode-cinema #episodeHeading{position:absolute;left:50%;top:var(--story-title-top,clamp(68px,9dvh,105px));transform:translateX(-50%);width:min(88vw,430px);text-align:center;animation:episode-soft-in .7s ease both}
.episode-cinema #episodeNumber{font-size:9px;line-height:1.8;letter-spacing:2px;color:#bd92b2;margin:0 0 14px}
.episode-cinema #episodeTitle{font-family:LittlePixel,monospace;font-weight:400;font-size:clamp(23px,6vw,34px);line-height:1.5;letter-spacing:0;color:#f0bfdf;margin:0;text-wrap:balance}
.episode-cinema .episode-location{font-size:8px;line-height:1.8;letter-spacing:1.2px;color:#d7aa83;margin:15px 0 0}
.episode-cinema .episode-seen{font-size:10px;line-height:1.7;color:#a8cbbd;text-align:right;margin:14px 5px 0;animation:episode-soft-in .4s ease both}
.episode-cinema .episode-attachment{display:flex;flex-direction:column;gap:12px;min-height:90px;justify-content:center;align-items:center;text-align:center}
.episode-cinema .episode-attachment img{display:block;max-width:100%;max-height:24dvh;object-fit:contain;border:1px solid #87647e;image-rendering:auto}
.episode-cinema .episode-attachment span{font-size:11px;color:#dbc2d4}
.episode-cinema #episodeControls,.episode-cinema #episodeEnd{position:absolute;left:16px;right:16px;top:auto;bottom:max(27px,env(safe-area-inset-bottom));transform:none;display:flex;flex-direction:row;justify-content:center;align-items:center;gap:14px;pointer-events:auto;z-index:13}
.episode-cinema #episodeEnd{animation:episode-soft-in .7s ease both}
.episode-cinema #episodeEnd button{border:1px solid #87647e;background:#190f21ed;padding:12px 16px;min-height:46px;color:#e8c9de;font-size:11px;line-height:1.5;letter-spacing:0}
.episode-cinema #episodeEnd #episodeReturn{background:#603451;border-color:#d6a3c3;color:#ffe4f3}
@keyframes episode-soft-in{from{opacity:0}to{opacity:1}}
@media(max-height:650px){.episode-cinema #episodeHeading{top:var(--story-title-top,clamp(68px,9dvh,105px))}.episode-cinema #episodeControls,.episode-cinema #episodeEnd{bottom:max(18px,env(safe-area-inset-bottom));gap:10px}.episode-cinema #episodeEnd button{font-size:10px;padding:11px 12px}}

@media(prefers-reduced-motion:reduce){.episode-cinema *,.episode-cinema *::before,.episode-cinema *::after{animation:none!important;transition:none!important}}

/* Shared compact rolling lane: bounds are supplied by the active scene. */
.episode-cinema #episodeHeading{width:min(88vw,430px);left:50%}
.episode-cinema #episodeConversation{top:var(--story-talk-top,14dvh);height:var(--story-talk-height,40dvh);max-height:var(--story-talk-height,40dvh);width:min(88vw,350px);display:flex;flex-direction:column;box-sizing:border-box;overflow:hidden;pointer-events:none;padding:0 4px 6px;animation:none}
.episode-cinema .phone-contact{flex:0 0 auto;font-size:7px;line-height:1.5;letter-spacing:2px;margin:0 0 8px;gap:8px}
.episode-cinema #episodeMessages{display:flex;flex:1 1 auto;min-height:0;flex-direction:column;justify-content:flex-end;overflow:hidden;padding:2px 3px 4px}
.episode-cinema .story-message{flex:0 0 auto;width:fit-content;max-width:100%;box-sizing:border-box;margin-top:8px;opacity:.58}
.episode-cinema .story-message.latest{opacity:1;animation:message-arrive .36s ease both}
.episode-cinema .from-alex{align-self:flex-end;margin-left:0;margin-right:0;text-align:right}
.episode-cinema .from-amber{align-self:flex-start;margin-left:0;margin-right:0;text-align:left}
.episode-cinema .from-alex .message-speaker{text-align:right}
.episode-cinema .from-amber .message-speaker{text-align:left}
.episode-cinema .from-alex p{text-align:left;border-radius:9px 9px 0 9px}
.episode-cinema .from-amber p{text-align:left;border-radius:9px 9px 9px 0}
.episode-cinema .message-speaker{font-size:7px;line-height:1.4;letter-spacing:1.2px;padding:0 7px 3px}
.episode-cinema .story-message p{width:fit-content;max-width:100%;box-sizing:border-box;font-size:clamp(11px,3.05vw,12px);line-height:1.55;letter-spacing:0;padding:8px 11px;overflow-wrap:normal;word-break:normal;text-wrap:pretty;box-shadow:2px 2px #050b13a8}
.episode-cinema .message-tail{white-space:nowrap}
.episode-cinema .story-message p.episode-attachment{display:block;gap:0;min-height:0;padding:6px;width:fit-content}
.episode-cinema .episode-attachment img{max-width:172px;max-height:65px}
.episode-cinema .ticket-illustration{position:relative;display:flex;width:172px;height:44px;min-height:0;box-sizing:border-box;align-items:stretch;border:1px solid #8ba6bd;border-radius:3px;background:#132638;color:#d8ecf7;box-shadow:1px 1px #090f18;text-align:left}
.episode-cinema .ticket-face{display:flex;flex:1;min-width:0;flex-direction:column;justify-content:center;padding:5px 7px;gap:2px}
.episode-cinema .ticket-title{font-size:10px;line-height:1.3;letter-spacing:.45px;color:#e1f3ff;white-space:nowrap}
.episode-cinema .ticket-caption{font-size:8px;line-height:1.3;color:#9cb5c9}
.episode-cinema .ticket-stub{display:grid;place-items:center;flex:0 0 34px;border-left:1px dashed #8ba6bd;background:#1b3449}
.episode-cinema .ticket-stub::before,.episode-cinema .ticket-stub::after{content:"";position:absolute;width:6px;height:6px;right:31px;border:1px solid #8ba6bd;background:#101d2e;border-radius:50%}
.episode-cinema .ticket-stub::before{top:-4px;clip-path:inset(50% 0 0)}
.episode-cinema .ticket-stub::after{bottom:-4px;clip-path:inset(0 0 50%)}
.episode-cinema .ticket-stub svg{width:23px;height:23px;fill:#e3b68e;transform:rotate(-12deg)}
@media(max-height:540px){.episode-cinema .phone-contact{font-size:6px;margin-bottom:4px}.episode-cinema .story-message{margin-top:5px}.episode-cinema .story-message p{font-size:11px;padding:6px 9px}.episode-cinema .message-speaker{font-size:6px;padding-bottom:2px}}
.episode-cinema[data-reduced="true"] *{animation:none!important;transition:none!important}

/* The episode label sits above the shared title anchor, never pushing it down. */
#world .episode-cinema #episodeHeading{top:var(--story-title-top,clamp(68px,9dvh,105px));left:50%;display:flex;flex-direction:column;align-items:center}
#world .episode-cinema #episodeNumber{position:absolute;left:0;right:0;bottom:calc(100% + 14px);margin:0;line-height:1.4}
#world .episode-cinema #episodeTitle{line-height:1;margin:0;text-align:center}
#world .episode-cinema .episode-location{text-align:center;text-wrap:balance}

/* Spoken dialogue has its own warm speech treatment, separate from Instagram. */
.episode-cinema #episodeConversation[data-channel="local"]{background:transparent;border:0;box-shadow:none}
.episode-cinema .from-laifu{align-self:flex-end;margin-left:0;margin-right:0;text-align:right}
.episode-cinema .local-speech{max-width:86%}
.episode-cinema .local-speech p{background:#291a18f2;color:#ffe8cf;border:1px solid #b3896f;border-radius:12px 12px 12px 3px;box-shadow:2px 3px #08050bad}
.episode-cinema .from-laifu p{background:#302017f2;color:#ffe8c0;border-color:#d2a36d;border-radius:12px 12px 3px 12px}
.episode-cinema .local-speech .message-speaker{color:#d9b79d}
.episode-cinema .from-laifu .message-speaker{text-align:right;color:#efbf7e}
.episode-cinema .episode-seen{align-self:flex-end;flex:0 0 auto;margin:5px 5px 0;font-size:9px;line-height:1.5}
.episode-cinema .episode-missing{position:absolute;top:var(--story-talk-top,23dvh);left:50%;transform:translateX(-50%);box-sizing:border-box;width:min(84vw,340px);padding:18px 16px;border:1px dashed #af8c7377;background:#100e1ce8;color:#dfb99a;font-size:12px;line-height:1.7;text-align:center;text-wrap:balance}
.episode-cinema[data-day="21"] #episodeEnd #episodeReturn{background:#253b49;border-color:#91b1bc;color:#e0edf4}
.episode-cinema[data-reduced="true"] *{animation:none!important;transition:none!important}
