/* The curtain call: artwork stays still while typography and credits carry the scene. */
.theater-ui.ending-screen { --encore-ivory:#f9edcc; --encore-gold:#e4bc77; max-width:720px; }
.ending-screen .ending-sequence { background:#09080c; isolation:isolate; }
.ending-screen .ending-sequence::before { display:none; }
.ending-screen .ending-frame { isolation:isolate; }
.ending-screen .ending-frame::before { content:"";position:absolute;inset:0;z-index:-1;background:url('/assets/theater/stage.webp') center/100% 100% no-repeat;opacity:.24; }
.ending-screen .ending-act { padding:80px 28px 70px;min-height:max(740px,100svh);background:none;animation:encore-arrive .55s ease-out both; }
.ending-screen .ending-act h1 { font-size:34px;line-height:1.25;color:var(--encore-ivory);text-shadow:none;overflow-wrap:anywhere; }
.ending-screen .ending-act p { color:#e5d9c9; }
.ending-scene-label { position:absolute;z-index:3;top:max(50px,env(safe-area-inset-top));left:24px;right:24px;text-align:center;font:12px var(--display-font);color:#d7bc92;border-bottom:1px solid #d7bc9233;padding-bottom:15px; }
.ending-screen .ending-paused { color:#ebd8b0;border-color:#bfa57b66;background:#100d12; }
.ending-screen .ending-control-hint { color:#d7c9b2; }
.ending-screen .ending-sequence[data-act^="fakeEnd"] .ending-frame::before,
.ending-screen .ending-sequence[data-act="missionComplete"] .ending-frame::before,
.ending-screen .ending-sequence[data-act="saving"] .ending-frame::before,
.ending-screen .ending-sequence[data-act="postCredit"] .ending-frame::before { display:none; }
.ending-screen .ending-sequence[data-act="missionComplete"],.ending-screen .ending-sequence[data-act="saving"],.ending-screen .ending-sequence[data-act^="fakeEnd"],.ending-screen .ending-sequence[data-act="postCredit"] { background:#050507; }
.ending-screen .ending-quiet .glitch-title { max-width:310px;font-size:44px;animation:encore-arrive .7s .7s both; }
.ending-screen .ending-quiet .glitch-title::before,.ending-screen .ending-quiet .glitch-title::after { display:none; }
.ending-screen .quiet-dots { display:none; }
.ending-screen .ending-subtitle { font-size:15px;animation:encore-arrive .6s 1.3s both; }
.ending-screen .ending-save { gap:24px; }
.ending-screen .ending-save h1 { font-size:24px;animation:encore-arrive .5s .2s both; }
.ending-screen .save-meter { height:7px;width:220px;max-width:80%;padding:0;border:0;background:#34302c;animation:encore-arrive .4s .3s both; }
.ending-screen .save-meter i { background:var(--encore-gold);animation:saveFill 1.6s steps(24) .4s both; }
.ending-screen .ending-save p { color:#c9ba9e;font-size:12px;animation:encore-arrive .4s both; }
.ending-screen .ending-save b { color:#b7e8cc;font-size:14px;animation:encore-arrive .5s 2s both; }
.ending-screen .ending-sequence[data-act="finalFrame"] .ending-frame::before,
.ending-screen .ending-sequence[data-act="specialThanks"] .ending-frame::before { opacity:.65; }
.ending-screen .ending-character { display:flex;flex-direction:column;justify-content:center;gap:32px; }
.ending-screen .ending-liu { order:2;animation:encore-arrive 1s both; }
.ending-screen .ending-character .liu-animated { width:210px; }
.ending-screen .ending-lines { order:1;background:none;padding:0;gap:16px; }
.ending-screen .ending-lines p { font:18px/1.75 var(--display-font);animation:encore-arrive .7s both; }
.ending-screen .ending-lines p:nth-child(2) { animation-delay:1.8s; }
.ending-screen .ending-lines p:nth-child(3) { animation-delay:4s;color:var(--encore-gold);font-size:25px; }
.ending-screen .credits-viewport { inset:100px 0 70px;mask-image:linear-gradient(transparent,#000 12%,#000 88%,transparent); }
.ending-screen .credits-track { width:calc(100% - 64px);gap:56px; }
.ending-screen .credit-block { padding-bottom:30px;border-bottom:1px solid #e0c89b26; }
.ending-screen .credit-block h2 { font-size:26px;line-height:1.6;margin:8px 0;color:#ffebc5;overflow-wrap:anywhere; }
.ending-screen .credit-block p { color:#9bcac9;font-size:12px; }
.ending-screen .credit-block span { font:14px/1.7 sans-serif;color:#c7bcae; }
.ending-screen .credit-memory-photo { width:210px;max-width:100%;height:250px;aspect-ratio:auto;border:6px solid #e8dec7;border-bottom-width:22px;border-radius:0;background:#18161c;box-shadow:0 12px 35px #0008; }
.ending-screen .credit-memory-photo img { height:100%;width:100%;object-fit:contain; }
.ending-screen .credit-memory-card h2 { margin:8px 0 0;font-size:25px;color:var(--encore-ivory); }
.ending-screen .credit-memory-card span { font:16px/1.7 sans-serif;color:#e8ded0; }
.ending-screen .stat-reel { max-width:100%; }
.ending-screen .stat-reel strong { color:var(--encore-gold);font-size:78px;text-shadow:none; }
.ending-screen .ending-last-save h1 { font-size:28px; }
.ending-screen .last-save-reel { width:100%;max-width:380px; }
.ending-screen .last-save-reel article p { font-size:22px;line-height:1.8; }
.ending-screen .message-constellation { min-height:320px; width:calc(100% - 32px); }
.ending-screen .message-constellation article { inset:20px 8px; padding:18px; border:1px solid #d6b16d55; background:#160f1beb; animation:memoryAppear var(--memory-duration) ease both; animation-delay:var(--memory-delay); }
.ending-screen .message-constellation article.is-last-memory { animation-name:memoryFinal; }
@keyframes memoryFinal { 0% { opacity:0; transform:translate(var(--message-x),24px) scale(.9) rotate(var(--message-tilt)); } 15%,100% { opacity:1; transform:translate(var(--message-x),0) scale(1) rotate(var(--message-tilt)); } }
.ending-screen .message-constellation article p { font-size:20px; line-height:1.7; overflow-wrap:anywhere; }
@keyframes memoryAppear { 0% { opacity:0; transform:translate(var(--message-x),30px) scale(.85) rotate(var(--message-tilt)); } 18%,75% { opacity:1; transform:translate(var(--message-x),0) scale(1) rotate(var(--message-tilt)); } 100% { opacity:0; transform:translate(var(--message-x),-20px) scale(.96); } }
.ending-together p { font-size:22px; line-height:1.9; }
.ending-screen .ending-together h1 { font-size:28px; line-height:1.6; }
.ending-together strong { color:#ffe3a8; font-size:40px; }
.ending-together small { font-size:12px; color:#c5bdae; }
.together-cast { color:#e9c883; font-size:28px; margin-top:30px; }
.ending-fake-next h2 { font-size:22px; line-height:1.7; color:#ffe3a8; }
.ending-screen .ending-last-save>b { color:#a4c8c9;font-size:13px;line-height:1.8; }
.ending-screen .ending-thanks { display:flex;flex-direction:column;justify-content:center;gap:12px; }
.ending-screen .ending-thanks p { margin:0;font-size:15px; }
.ending-screen .ending-thanks h1 { font-size:27px;margin:0 0 8px; }
.ending-screen .ending-thanks h2 { font-size:23px;line-height:1.6;color:var(--encore-gold);margin:12px 0; }
.ending-screen .thanks-liu { order:9;margin:14px 0 0;animation:none; }
.ending-screen .thanks-liu .liu-animated { width:160px; }
.ending-screen .ending-fake { align-content:center; }
.ending-screen .ending-fake h1,.ending-screen .ending-fake h2 { font-size:48px;color:#fff1cd;text-shadow:none; }
.ending-screen .ending-fake-no b { color:#e8bd79;font-size:80px; }
.ending-screen .ending-fake-next p { color:#ade1cc;font-size:30px;line-height:1.6; }
.ending-screen .ending-award { align-content:center;gap:16px; }
.ending-screen .ending-award.is-pending h1 { font-size:29px; }
.ending-screen .award-photo { width:160px;height:200px;border:2px solid var(--encore-gold);background:#17141b;border-radius:0; }
.ending-screen .award-photo img { width:100%;height:100%;object-fit:contain; }
.ending-screen .award-liu { display:none; }
.ending-screen .ending-item { display:flex;flex-direction:column;justify-content:center;gap:24px; }
.ending-screen .ending-item>.eyebrow { font:15px var(--display-font);color:var(--encore-gold);margin:0; }
.ending-ticket-stage { display:grid;width:280px;max-width:100%;min-height:440px; }
.ending-ticket-outline,.ending-screen .encore-ticket { grid-area:1/1;width:100%;height:440px;box-sizing:border-box; }
.ending-ticket-outline { border:2px solid #e8c77e;display:grid;place-items:center;background:#0a1014;box-shadow:0 0 32px #cdb76925;animation:encore-outline 3.5s both; }
.ending-ticket-outline span { font:86px var(--display-font);color:#e8c77e; }
.ending-screen .encore-ticket { padding:22px 18px;gap:8px;align-content:center;justify-items:center;border:2px solid #f1d79e;border-radius:0;background:#1b1820 url('/assets/theater/stage.webp') center/cover;box-shadow:inset 0 0 0 200px #0e0d17b8,0 15px 45px #0008;animation:encore-arrive .9s 3s both; }
.ending-screen .encore-ticket>span { font-size:10px;color:#decfad; }
.ending-screen .encore-ticket h2 { font-size:30px;color:#fff0bd; }
.ending-screen .encore-ticket p { font:14px/1.6 var(--display-font);color:#eee2cf; }
.ending-screen .encore-ticket img { width:110px;height:130px;object-fit:contain; }
.ending-screen .encore-ticket strong { font:24px var(--display-font);color:#b6edd3;max-width:100%;overflow-wrap:anywhere; }
.ending-screen .encore-ticket small { font:10px/1.5 monospace;color:#d9d3cd; }
.ending-screen .encore-ticket b { font:24px var(--display-font);color:#ffe3aa; }
.ending-screen .encore-ticket footer { font-size:10px;color:#cabf9f;padding-top:8px;border-top:1px dashed #cabf9f66;width:100%; }
.ending-screen .collectible-reveal { padding:0; border:0; background:transparent; box-shadow:none; height:auto; align-self:center; }
.collectible-reveal canvas { display:block; width:100%; height:auto; aspect-ratio:4/5; }
.ending-screen .item-cta { margin:0;animation:encore-action .6s 4.8s both;min-height:48px; }
.ending-screen .ending-sequence.is-paused *,.ending-screen .ending-sequence.is-paused *::before,.ending-screen .ending-sequence.is-paused *::after { animation-play-state:paused!important;transition:none!important; }
@keyframes encore-arrive { from{opacity:0}to{opacity:1} }
@keyframes encore-outline { 0%,75%{opacity:1}100%{opacity:0} }
@keyframes encore-action { from{opacity:0;pointer-events:none}to{opacity:1;pointer-events:auto} }
@media(max-width:360px){.ending-screen .ending-act{padding-inline:20px}.ending-screen .ending-act h1{font-size:29px}.ending-screen .ending-quiet .glitch-title{font-size:39px}.ending-screen .credits-track{width:calc(100% - 44px)}.ending-screen .credit-block h2{font-size:23px}}
@media(prefers-reduced-motion:reduce){.ending-screen .ending-act{animation:none}.ending-screen .encore-ticket{animation-duration:.01ms}.ending-screen .item-cta{animation-duration:.01ms}}

/* Private recovery UI is separate from every public share/export surface. */
.recovery-reminder { margin:20px 0;padding:20px 0;border-block:1px solid #d7bc8044; }
.recovery-reminder strong { color:#e8d4a9;font-family:var(--display-font);font-size:20px; }
.recovery-reminder p { color:#c9c3bc;font-size:14px;line-height:1.7; }
.recovery-entry { display:block;position:relative;z-index:4;margin:18px auto 36px;padding:12px;background:#141216;border:1px solid #c7ad7655;color:#e8d4a9;font-size:14px; }
.route-story .recovery-entry,.route-boot .recovery-entry { position:absolute;top:max(12px,env(safe-area-inset-top));right:12px;left:auto;margin:0;min-height:36px;width:auto;padding:8px;font-size:12px; }
.restore-stage { min-height:80svh;display:flex;flex-direction:column;justify-content:center;gap:18px;text-align:center; }
.restore-stage p { line-height:1.8;color:#c9c3bc; }
.recovery-dialog { width:min(440px,calc(100% - 32px));max-height:85svh;box-sizing:border-box;overflow:auto;padding:28px 24px;background:#17151c;color:#f1e7d6;border:1px solid #d7bc80;border-radius:4px; }
.recovery-dialog::backdrop { background:#000c; }
.recovery-dialog h2 { font:27px/1.4 AdventurePixel,sans-serif;margin:10px 0; }
.recovery-dialog p { font:14px/1.8 sans-serif; }
.recovery-dialog .eyebrow { color:#e8b9a4; }
.recovery-dialog .btn { width:100%;margin:10px 0;min-height:48px;font-size:16px; }
.recovery-dialog .recovery-close { display:block;margin:-8px -8px 4px auto;width:40px;height:40px;background:transparent;color:#e1cfac;border:0;font-size:30px; }
.recovery-dialog input { width:100%;box-sizing:border-box;min-height:50px;font-size:16px;padding:12px;background:#0e1017;color:#fff;border:1px solid #b1baa3; }
.recovery-secret output { display:block;padding:20px 0;overflow-wrap:anywhere;user-select:all;font:22px/1.7 monospace;color:#b8e7c8; }
.recovery-image { width:100%;height:auto; }
.recovery-notice { color:#e8d4a9;min-height:28px; }
.recovery-secret[hidden],.recovery-image[hidden] { display:none; }

/* Completion travels along the existing level positions; camera follows the actor. */
.map-traveller { position:absolute;z-index:12;transform:translate(-50%,-50%);pointer-events:none;display:grid;justify-items:center;width:140px; }
.map-traveller .liu-animated { width:100px;height:100px;transform:scaleX(var(--facing,1));animation:map-walk-steps .32s steps(1,end) infinite;filter:drop-shadow(0 5px 2px #0008); }
.map-travel-caption { padding:5px 8px;background:#151a1f;color:#ffedbb;border:1px solid #e9c77a;font:12px/1.5 var(--display-font);text-align:center;max-width:150px; }
.map-travel-skip { position:fixed;right:18px;top:max(64px,env(safe-area-inset-top));z-index:30;background:#16151def;color:#ecdcba;padding:10px 14px;border:1px solid #cfb879;font-size:13px; }
.is-travelling .map-node { pointer-events:none; }
.map-traveller.has-arrived .liu-animated { animation:liu-wave 2s steps(1,end) infinite; }
@keyframes map-walk-steps { 0%,100%{background-position:0 100%;translate:0 0;rotate:-3deg}50%{background-position:50% 0;translate:0 -5px;rotate:3deg} }
.route-hall .voting-console { border:1px solid #edd095;background:#222127;padding:22px 18px; }
.route-hall .voting-console>strong { display:block;color:#ffe5a5;font:23px/1.5 var(--display-font); }
.route-hall .voting-console>p { font-size:16px;line-height:1.7;color:#eee6d7; }
.route-hall .hall-feedback { border-left:3px solid #b4e6c5;padding:14px;background:#1d3029;color:#d0f6df; }
.vote-notice-dialog h2 { color:#ffe5a5; }
.ending-screen .ending-sequence[data-act^="credits"] .ending-frame::before { opacity:.78; }
.ending-screen .ending-credits::before { content:"";position:absolute;inset:10% 10%;background:#08070bd9;box-shadow:0 0 45px 20px #08070bb3;pointer-events:none; }
.ending-screen .credits-scene-players::before { background:#08070bbd; }
.ending-screen .ending-records { display:grid;gap:20px;width:100%;max-width:380px; }
.ending-records article { display:grid;gap:8px;text-align:center;border-bottom:1px solid #dfc89444;padding:8px 0 22px; }
.ending-screen .ending-records h2 { font:20px/1.9 var(--display-font);color:#f5e3bf;margin:0;overflow-wrap:anywhere; }
.ending-screen .ending-records h2 strong { font:30px/1.2 var(--display-font);color:#edc87d;white-space:nowrap; }
.ending-screen .ending-records p { font-size:13px;line-height:1.7;margin:0;max-width:none; }
.closing-curtains { position:absolute;inset:0;z-index:5;pointer-events:none;overflow:hidden; }
.closing-curtains i { position:absolute;top:0;bottom:0;width:50.5%;background:repeating-linear-gradient(90deg,#320c16 0,#751b30 12%,#46101f 23%,#8b2941 33%,#350c18 45%);border-bottom:8px solid #bd9557;box-shadow:0 10px 22px #000;animation:curtain-close 2.8s cubic-bezier(.45,0,.2,1) var(--curtain-delay) both; }
.closing-curtains i:first-child { left:0;--curtain-from:-103%; }
.closing-curtains i:last-child { right:0;--curtain-from:103%; }
.closed-theater-curtain { position:absolute;inset:0;background:repeating-linear-gradient(90deg,#320c16 0,#751b30 6%,#46101f 11.5%,#8b2941 16.5%,#350c18 22.5%);animation:encore-curtain-darken 1.7s both; }
.ending-screen [data-act="fakeEndTitle"] .ending-act { animation:none; }
.ending-screen .ending-fake-title h1 { animation:encore-arrive 1s .75s both; }
.ending-screen [data-act="creditsFinal"] .ending-scene-label { animation:encore-label-away .6s var(--credits-close-delay) both; }
@keyframes encore-label-away { from{opacity:1}to{opacity:0} }
@keyframes curtain-close { from{transform:translateX(var(--curtain-from))}to{transform:translateX(0)} }
@keyframes encore-curtain-darken { from{filter:brightness(1)}to{filter:brightness(.1)} }
@media(prefers-reduced-motion:reduce){.map-traveller .liu-animated{animation:none!important}.closing-curtains i{animation-duration:.01ms}.closed-theater-curtain{animation-duration:.01ms}}
