body.ending-active .topbar,body.ending-active #map-labels,body.ending-active .map-tools,body.ending-active .compass,body.ending-active .city-card,body.ending-active .footer-hint,body.ending-active .map-legend,body.ending-active .walk-hud,body.ending-active .berth-board,body.ending-active .tz-back,body.ending-active .tz-hint,body.ending-active .dock-back,body.ending-active .dock-hint,body.ending-active .temple-back,body.ending-active .temple-hint,body.ending-active .taian-fair-close,body.ending-active .taian-fair-hint,body.ending-active #story-ui>:not(.story-pause):not(.story-curtain){display:none!important}
body.ending-active .pause-controls,body.ending-active .pause-options>.pause-secondary:last-child:not([data-home]){display:none}
#ending-screen{position:fixed;inset:0;z-index:90;overflow:hidden;color:#f1e5c9;font-family:'Songti SC','SimSun',serif;text-shadow:0 2px 10px #050f15;isolation:isolate}
#ending-screen[hidden],#ending-screen [hidden]{display:none!important}
#ending-screen button{font:inherit;color:inherit;cursor:pointer;border:1px solid #d5b77a66;background:#132e32cc;padding:.8em 1.6em;transition:background 180ms ease-out,border-color 180ms ease-out}
#ending-screen button:hover{background:#30524f;border-color:#ead6a1}#ending-screen button:active{background:#43635a}#ending-screen button:focus-visible{outline:2px solid #ead6a1;outline-offset:5px}
.ending-matte{position:absolute;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(#071921b8,transparent 30%,transparent 52%,#071921e8),linear-gradient(90deg,#0b20275c,transparent 40%,#0b20271c);box-shadow:inset 0 0 120px #091a2755}
.ending-heading{position:absolute;left:6vw;top:6vh;letter-spacing:.22em}.ending-heading>span,.ending-heading>p{font-size:13px;color:#dac99e}.ending-heading h1{font-size:clamp(32px,4.3vw,64px);font-weight:400;margin:12px 0}.ending-heading p{margin:12px 0}
.ending-controls{position:absolute;bottom:3.5vh;left:6vw;right:6vw;display:flex;justify-content:space-between;font:12px 'Microsoft YaHei',sans-serif;letter-spacing:.13em;color:#eee0bdac}.ending-controls i{position:absolute;left:0;bottom:-9px;width:180px;height:2px;background:#ebc87f;transform:scaleX(0);transform-origin:left}
.ending-token-row{position:absolute;bottom:11vh;left:12vw;right:12vw;display:flex;justify-content:space-between;gap:12px}.ending-token-row figure{opacity:0;transform:translateY(12px);margin:0;text-align:center;transition:opacity 800ms ease-out,transform 800ms cubic-bezier(.22,1,.36,1)}.ending-token-row .arrived{opacity:1;transform:translateY(0)}.ending-token-row svg{width:46px;height:56px;filter:drop-shadow(0 0 12px #d4b47255)}.ending-token-row figcaption{font-size:13px;letter-spacing:.05em}.ending-token-row small{display:block;font-size:11px;color:#cfb87d;margin:9px 0}
.ending-dialogue{position:absolute;left:8vw;right:8vw;bottom:9vh;padding:24px 32px;background:linear-gradient(90deg,#0d252bf2,#132f35e8,#0d252bd9);border-top:1px solid #c9a46d99;border-bottom:1px solid #c9a46d55;min-height:160px}.ending-dialogue small{color:#e0b577;letter-spacing:.16em}.ending-dialogue p{font-size:clamp(17px,1.6vw,24px);line-height:1.95;min-height:3.9em;margin:16px 0 20px}.ending-dialogue button{float:right;font-size:12px!important}
.ending-chart{position:absolute;bottom:10vh;left:14vw;right:14vw;text-align:center;padding:12px 1vw;background:linear-gradient(transparent,#10282cdb)}.ending-chart small{color:#ead6a0;letter-spacing:.35em}.ending-chart svg,.ending-scroll svg{width:100%;overflow:visible}.ending-chart svg{display:block;max-height:55vh;margin:10px auto 0;filter:drop-shadow(0 8px 18px #0005)}.ending-river-under{stroke:#64827a;stroke-width:8;fill:none;opacity:.5}.ending-river-lit{stroke:#f3d28d;stroke-width:4;fill:none;stroke-dasharray:1;stroke-dashoffset:calc(1 - var(--reveal,1));filter:drop-shadow(0 0 8px #ffc061)}.ending-chart [data-river]{opacity:.25;transition:opacity 700ms ease-out}.ending-chart .lit{opacity:1}.ending-chart circle,.ending-scroll circle{fill:#edcf88}.ending-chart text,.ending-scroll text{fill:currentColor;text-anchor:middle;font-size:21px}
.ending-recap{position:absolute;right:7vw;bottom:14vh;text-align:right}.ending-recap>[data-number]{font:70px Georgia,serif;opacity:.16}.ending-recap h2{font-size:46px;font-weight:400;letter-spacing:.22em;margin:12px 0}.ending-recap p{font-size:22px;letter-spacing:.18em}.ending-recap small{font-size:13px;letter-spacing:.14em;color:#d6ba84}.ending-recap figure{margin:0}.ending-recap svg{width:65px;height:86px;opacity:.6;filter:sepia(1) saturate(.6);}
/* Hallmark · pre-emit critique: P5 H5 E4 S5 R5 V4. Existing game palette retained. */
.ending-donation{
 --donation-ink:#34534e;--donation-muted:#786346;--donation-paper:#ece3ca;--donation-frame:#9a825477;--donation-rule:#a68c5c77;--donation-mount:#dbceb0;--donation-shadow:#0009;--donation-grain:#a38a4d05;--donation-seal:#a54435;--donation-button:#31544e;--donation-light:#fff4d8;
 position:absolute;inset:4vh 7vw 9vh;padding:clamp(24px,3vh,40px) clamp(24px,3vw,72px);box-sizing:border-box;color:var(--donation-ink);text-shadow:none;text-align:center;background:var(--donation-paper);box-shadow:0 0 0 1px var(--donation-frame),0 0 0 9px var(--donation-mount),0 15px 80px var(--donation-shadow);background-image:repeating-linear-gradient(90deg,transparent 0 3px,var(--donation-grain) 4px 5px);overflow:auto;scrollbar-width:thin;
}
.ending-donation>small{display:block;letter-spacing:.25em;color:var(--donation-muted);font-size:clamp(16px,1vw,22px)}
.ending-donation h2{font-size:clamp(34px,2.9vw,60px);font-weight:400;font-style:normal;letter-spacing:.1em;line-height:1.4;margin:10px 0 clamp(22px,3vh,38px);overflow-wrap:anywhere;min-width:0}
.ending-donation-layout{display:grid;grid-template-columns:minmax(0,2.5fr) minmax(260px,1fr);gap:clamp(24px,2.8vw,56px);align-items:center;text-align:left}
.ending-donation .ending-scroll{width:100%;min-width:0;margin:0;padding:0 0 12px;box-sizing:border-box;border-block:1px solid var(--donation-rule)}
.ending-donation .ending-scroll svg{display:block;width:100%;max-height:min(55vh,620px);margin:10px auto}
.ending-donation .ending-scroll p{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 18px;margin:0;padding:0 8px;font-size:clamp(18px,1.25vw,26px);line-height:1.6}
.ending-donation .ending-scroll strong{font-size:clamp(16px,1.05vw,22px);font-weight:400;letter-spacing:.12em;color:var(--donation-muted)}
.ending-donation-copy{min-width:0;border-left:1px solid var(--donation-rule);padding-left:clamp(22px,2.2vw,48px)}
.ending-donation-copy>p{margin:0 0 22px;font-size:clamp(20px,1.45vw,30px);line-height:1.8}
.ending-donation-copy>span{display:block;color:var(--donation-muted);font-size:clamp(17px,1.05vw,22px);line-height:1.7;margin-bottom:24px}
.ending-seal{display:inline-block;border:2px solid #a54435;color:#a54435;padding:8px;line-height:1.15;letter-spacing:.1em;text-shadow:none;font-weight:400}
.ending-donation .ending-seal{display:table;position:static;margin:24px 0 0 auto;font-size:clamp(18px,1.1vw,24px);border-color:var(--donation-seal);color:var(--donation-seal);transform:rotate(-7deg)}
.ending-donation button{width:100%;min-height:52px;padding:.9em .7em!important;background:var(--donation-button)!important;color:var(--donation-light)!important;font-size:clamp(16px,1.05vw,22px)!important;line-height:1.4;white-space:nowrap}

.ending-closing{position:absolute;inset:20vh 15vw;display:flex;flex-direction:column;justify-content:center;text-align:center}.ending-closing small{font-size:12px;letter-spacing:.4em;color:#e2be7e}.ending-closing p{font-size:clamp(25px,3vw,43px);line-height:2.2;letter-spacing:.18em}
#ending-screen[data-phase=credits] .ending-matte,#ending-screen[data-phase=complete] .ending-matte{background:#071b25e8}.ending-credits{position:absolute;inset:9vh 20vw 12vh;text-align:center;overflow:auto;scrollbar-width:thin;mask-image:linear-gradient(transparent,#000 5%,#000 94%,transparent)}.ending-credits>small{display:block;letter-spacing:.35em;color:#e1bc7e;padding:20px}.ending-credits>div{transform:translateY(calc(var(--roll,0) * -115px));padding:20px 0 110px}.ending-credits p{margin:22px 0;line-height:1.8}.ending-credits p small{display:block;color:#bcae89;font-size:12px;letter-spacing:.2em}.ending-credits p span{display:block;font-size:17px}.ending-credits a{color:#cfbb8e;font-size:13px}.ending-thanks{font-size:22px!important;letter-spacing:.15em}
.ending-complete{position:absolute;inset:15vh 12vw 10vh;display:flex;flex-direction:column;align-items:center;text-align:center;overflow:auto}.ending-complete>small{margin-top:25px;letter-spacing:.4em;color:#d5bb83}.ending-complete h2{font-size:clamp(28px,4vw,52px);font-weight:400;letter-spacing:.15em;margin:22px 0}.ending-complete>p{line-height:2.1;font-size:15px;color:#d5ccb4}.ending-complete nav{display:flex;gap:20px;margin:25px 0}.ending-complete details{position:static!important;font-size:12px;color:#b8ac91;max-width:660px;text-align:center}.ending-complete summary{cursor:pointer}.ending-complete details p{line-height:1.9}
.ending-load{position:absolute;inset:0;background:#e8e0cc;color:#305b60;text-shadow:none;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;padding:24px}.ending-load h2{font-size:30px;letter-spacing:.2em;font-weight:400}.ending-load small{letter-spacing:.4em}.ending-load p{font-size:13px;color:#79775f}.ending-load nav{display:flex;gap:16px;margin-top:25px}.ending-load button{color:#f1e5c9!important}
.ending-postgame{pointer-events:auto;cursor:pointer}
.ending-credits{inset:6vh 15vw 10vh;--credits-accent:#dcc18e;--credits-rule:#b8a57844}
.ending-credits>small{padding:16px 0 10px;font-size:12px}
.ending-credits>[data-credit-roll]{transform:none;padding:0 4px 18px}
.ending-credits h2{font-size:24px;font-weight:400;letter-spacing:.15em;margin:6px 0 16px}
.ending-credits:focus-visible{outline:1px solid #dcc18e;outline-offset:6px}
.ending-source-list{font-size:11px;text-align:left;color:#c6bda6;border-top:1px solid #b8a57844;padding-top:12px;margin:0}
.ending-source-list>div{display:grid;grid-template-columns:106px minmax(0,1fr);gap:12px;margin:6px 0;line-height:1.8}
.ending-source-list dt{color:#dcc18e}.ending-source-list dd{margin:0}
.ending-credits p{margin:14px 0;line-height:1.8}
@media(max-width:760px){.ending-credits{inset:4vh 6vw 10vh}.ending-source-list>div{grid-template-columns:86px minmax(0,1fr);gap:8px}.ending-credits h2{font-size:21px}}
#ending-screen[data-held=true] *,#ending-screen[data-held=true] *:before{animation-play-state:paused!important}
#ending-screen.ending-reduced *{transition:none!important}#ending-screen.ending-reduced .ending-credits>div{transform:none!important}
@media(max-width:760px){.ending-token-row{left:5vw;right:5vw;gap:4px}.ending-token-row figcaption{font-size:10px}.ending-dialogue{left:4vw;right:4vw;padding:18px}.ending-complete nav{gap:10px;flex-wrap:wrap;justify-content:center}.ending-recap{right:6vw}.ending-heading{top:4vh}}
@media(prefers-reduced-motion:reduce){#ending-screen *{transition:none!important}.ending-credits>div{transform:none!important}}

/* A held photograph hides scene disposal; the visible clock drives its short dissolve. */
.ending-bridge{position:absolute;inset:0;z-index:4;isolation:isolate;background:#10252d;pointer-events:none;overflow:hidden}
.ending-bridge>canvas{position:absolute;inset:0;width:100%;height:100%;z-index:0}
.ending-bridge>.ending-matte{z-index:1}
.ending-bridge>:not(canvas):not(.ending-matte){z-index:2}
.ending-bridge *{animation:none!important;transition:none!important}
.ending-caption-bridge{background:transparent}
.ending-load{z-index:5}
.ending-load.ending-between{inset:auto 0 5vh;background:transparent;padding:0;pointer-events:none}
.ending-load.ending-between>small,.ending-load.ending-between>h2,.ending-load.ending-between>nav{display:none}
.ending-load.ending-between>p{color:#e5d9bc;font-size:12px;text-shadow:0 2px 5px #10232d;background:#10252d99;border:1px solid #c4ac6855;padding:8px 18px}
.ending-token-row figure{transition:opacity 420ms cubic-bezier(.22,1,.36,1),transform 420ms cubic-bezier(.22,1,.36,1)}
.ending-chart [data-river]{transition:opacity 350ms ease-out}

@media(max-width:999px){
 .ending-donation{inset:3vh 5vw 9vh;padding:24px}
 .ending-donation-layout{grid-template-columns:minmax(0,1fr);gap:20px}
 .ending-donation h2{font-size:clamp(28px,4vw,38px);margin-bottom:18px}
 .ending-donation .ending-scroll svg{max-height:43vh}
 .ending-donation-copy{border-left:0;border-top:1px solid var(--donation-rule);padding:18px 0 0;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px 24px;align-items:center}
 .ending-donation-copy>p{grid-column:1/-1;margin:0;font-size:20px;line-height:1.65}
 .ending-donation-copy>span{margin:0;font-size:17px}
 .ending-donation button{width:auto}
 .ending-donation .ending-seal{display:none}
}
@media(max-width:559px){
 .ending-donation{inset:3vh 4vw 9vh;padding:22px 16px}
 .ending-donation>small{font-size:14px;letter-spacing:.12em}
 .ending-donation h2{font-size:28px;letter-spacing:.04em;line-height:1.35}
 .ending-donation .ending-scroll p{padding:0;gap:3px;font-size:18px}
 .ending-donation .ending-scroll strong{font-size:15px;letter-spacing:.05em}
 .ending-donation-copy{display:flex;flex-direction:column;align-items:stretch;gap:14px}
 .ending-donation-copy>p{font-size:18px}
 .ending-donation-copy>span{font-size:16px}
 .ending-donation button{width:100%;font-size:16px!important;padding:.9em .45em!important}
}
