/* Shared player-side art direction. Business controls retain their existing DOM. */
@font-face{font-family:AdventurePixel;src:url('/assets/theater/pixel.woff2') format('woff2');font-display:swap}
:root{--display-font:AdventurePixel,"Microsoft YaHei",sans-serif;--body-font:"Microsoft YaHei UI","Microsoft YaHei",sans-serif;--bg:#0d0d11;--panel:#17171c;--panel-2:#202027;--text:#f7f3e8;--muted:#b8b8b4;--green:#a2efad;--yellow:#ffdf8c;--cyan:#84dfe4;--red:#f68193;--line:#a2efad66;--soft-line:#ffffff24}
body{display:block;padding:0;background:#0b0b0e;color:var(--text)}.app-shell{width:100%;min-height:100svh}
.theater-ui{width:min(100%,600px);border:0;border-radius:0;isolation:isolate;background:#111115;padding-top:max(66px,env(safe-area-inset-top));box-shadow:0 0 100px #0008}
.theater-ui:before{content:"";position:absolute;z-index:-1;inset:0 0 auto;height:360px;background:linear-gradient(180deg,#11111577,#111115 95%),url('/assets/theater/stage.webp') center 10%/cover no-repeat;pointer-events:none}
.theater-ui:after{position:absolute;opacity:.025;background-size:4px 4px}.theater-ui .crt{position:absolute;opacity:.04}.scan-corner{display:none}
.theater-ui h1,.theater-ui h2,.theater-ui h3{letter-spacing:0;overflow-wrap:anywhere;text-shadow:none}.theater-ui h1{color:var(--yellow);font-size:32px;line-height:1.25}.theater-ui h2{font-size:24px;line-height:1.35}.theater-ui .eyebrow{color:var(--cyan);font-size:12px}
.theater-ui button,.theater-ui input,.theater-ui textarea{font-size:16px}.theater-ui input,.theater-ui textarea{font-family:var(--body-font);background:#09090dbf;border-color:#c5c6bc4f;color:#fff;line-height:1.6;caret-color:var(--yellow)}.theater-ui textarea:focus,.theater-ui input:focus{border-color:var(--yellow);outline:2px solid #ffdf8c33;outline-offset:2px}
.theater-ui .btn{border-radius:2px;min-height:50px;text-shadow:none;line-height:1.4;padding:12px 14px;font-size:17px;box-shadow:none;transition:background .15s,transform .15s}.theater-ui .btn.primary{background:#e6efaf;border:2px solid #ffffd6;color:#18251b;box-shadow:0 4px 0 #42533a}.theater-ui .btn.secondary{border-color:#afb7a955;color:#dcebd9;background:#171e1b}.theater-ui .btn:hover{filter:brightness(1.13)}.theater-ui .btn:active{transform:translateY(2px)}.theater-ui button:focus-visible{outline:2px solid var(--yellow);outline-offset:4px}.theater-ui button:disabled{filter:grayscale(.6);opacity:.55}
.theater-ui .audio-toggle{background:#101114e8;border:1px solid #f4efc652;color:#f4efc6;border-radius:2px;font-size:12px;top:max(12px,env(safe-area-inset-top));left:14px}.theater-ui .my-adventure-button{font-size:12px;background:#14171be8;color:var(--yellow);border-color:#ffdf8c44;max-width:65%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.theater-ui .presented-mark{font-family:var(--display-font);color:#aeb9a5;font-size:11px;letter-spacing:0;margin-top:40px}
.theater-ui .bottom-nav{max-width:600px;background:#121318f5;border-top:1px solid #d9e2c252;box-shadow:0 -8px 28px #0005;backdrop-filter:blur(12px)}.theater-ui .bottom-nav button{border-radius:0;min-height:52px;color:#a9b0ae}.theater-ui .bottom-nav button.active{background:#a2efad14;color:var(--yellow);border-color:var(--yellow)}.theater-ui .bottom-nav b{font-size:9px;opacity:.65}.theater-ui .bottom-nav span{font-family:var(--display-font);font-size:17px}

/* The 3 x 2 atlas contains real hand, eye and mouth changes. */
.liu-animated{display:block;flex-shrink:0;width:100px;aspect-ratio:1;background:url('/assets/theater/liu-atlas.webp') 0 100%/300% 200% no-repeat;animation:liu-idle 4.5s steps(1,end) infinite}
.liu-animated.motion-wave{animation:liu-wave 4s steps(1,end) infinite}.liu-animated.motion-talk{animation:liu-talk 3.2s steps(1,end) infinite}
@keyframes liu-idle{0%,88%,100%{background-position:0 100%}92%,96%{background-position:50% 100%}}
@keyframes liu-wave{0%,45%,100%{background-position:0 0}10%,30%{background-position:50% 0}20%,40%{background-position:100% 0}60%,90%{background-position:0 100%}94%{background-position:50% 100%}}
@keyframes liu-talk{0%,18%,36%,54%,78%,100%{background-position:0 100%}9%,27%,45%,63%{background-position:100% 100%}92%{background-position:50% 100%}}
.theater-ui .liu-guide figcaption{border-radius:2px;border-color:#dacb9a55;background:#1a1918;font-size:14px;line-height:1.6;color:#efe5cd}.theater-ui .liu-guide{align-items:center}.pose-sad .liu-animated{filter:saturate(.65)}

/* Full scene entrance and six-chapter prologue. */
.theater-ui.route-boot,.theater-ui.route-story{min-height:max(760px,100svh);padding:0;background:#100e0e url('/assets/theater/stage.webp') center/100% 100% no-repeat}
.theater-ui.route-boot:before,.theater-ui.route-story:before{display:none}.theater-ui.route-boot{background-image:url('/assets/theater/entrance.webp')}
.route-boot .boot-panel{position:relative;min-height:max(760px,100svh);padding:0;display:block}.theater-marquee{position:absolute;top:18%;left:15%;width:70%;text-align:center}.theater-marquee p{font:16px var(--display-font);color:var(--cyan);margin:0 0 6px}.theater-marquee h1{font-size:38px;line-height:1.08;color:#f4ff98;margin:0;text-shadow:2px 3px #256237}.theater-marquee h2{font-size:18px;color:#a7f1ae;margin:10px 0 0}
.route-boot .theater-welcome{position:absolute;top:42%;width:100%;text-align:center;font-family:var(--display-font);color:#fff1bc;padding:9px 0;background:#100c0caa;font-size:16px}.route-boot .liu-guide{position:absolute;bottom:24%;left:50%;transform:translateX(-50%)}.route-boot .liu-animated{width:260px}.route-boot .boot-panel>.btn{position:absolute;bottom:8%;width:70%;left:15%;margin:0}.route-boot .boot-sequence{display:none}.route-boot .boot-load{position:absolute;bottom:19%;left:25%;width:50%;height:3px;margin:0}.route-boot .boot-progress{position:absolute;bottom:15%;left:0;width:100%;font-size:11px;color:#fff6da;margin:0;text-align:center}
.route-boot .presented-mark,.route-story .presented-mark{position:absolute;bottom:18px;margin:0;width:100%;text-align:center}
.route-story .story-mode{position:relative;min-height:max(760px,100svh);margin:0;display:block}.route-story .story-progress{position:absolute;top:15.5%;left:22%;width:56%;gap:6px}.route-story .story-progress span{height:3px;background:#9b97904d}.route-story .story-progress span.active{background:var(--yellow);box-shadow:none}
.route-story .story-mode>.eyebrow{position:absolute;top:19%;width:100%;text-align:center;margin:0;color:#d0bca5}.route-story .story-mode>h1{position:absolute;top:23%;left:9%;width:82%;text-align:center;font-size:25px;margin:0;color:#fff1ce;line-height:1.4}
.route-story .story-visual{position:absolute;inset:0;min-height:0;border:0;border-radius:0;background:none;overflow:hidden}.route-story .story-visual:before,.route-story .story-visual:after{display:none}.route-story .story-visual .liu-guide{position:absolute;bottom:29%;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;z-index:2;animation:none}.route-story .liu-animated{width:220px}.route-story .story-visual .liu-guide figcaption{display:block;position:absolute;bottom:calc(100% + 9px);width:260px;max-width:80vw;padding:14px;text-align:center;font:20px/1.4 var(--display-font);background:#fff1cc;color:#241c1a;border:2px solid #d8ba83;box-shadow:4px 4px #0005}.route-story .story-visual .liu-guide figcaption:after{content:"";position:absolute;bottom:-9px;left:48%;width:14px;height:14px;transform:rotate(45deg);background:#fff1cc;border-right:2px solid #d8ba83;border-bottom:2px solid #d8ba83}
.route-story .chapter-copy{position:absolute;bottom:16%;left:10%;width:80%;font-size:16px;text-align:center;line-height:1.7;margin:0;color:#fff1dd;text-shadow:0 2px 6px #000}.route-story .action-row{position:absolute;bottom:6.5%;left:8%;width:84%;display:grid;grid-template-columns:1fr 1.5fr;gap:12px}.route-story .action-row .btn{margin:0;font-size:16px;min-height:48px}.route-story .visual-stage{border:0;inset:0;pointer-events:none}.route-story .visual-stage:before,.route-story .visual-stage:after{display:none}
.route-story .visual-monitor-stage .visual-stage:after{display:block;left:50%;top:14%;width:250px;height:57%;background:#fff2cd20;clip-path:polygon(49% 0,51% 0,100% 100%,0 100%);transform:translateX(-50%);opacity:1}
.route-story .visual-city-map .visual-stage:after{display:block;top:58%;left:8%;width:18px;height:20px;background:#a8d7d6;box-shadow:0 22px 0 -3px #a8d7d6,65px -20px 0 #d5b6dc,65px 2px 0 -3px #d5b6dc,210px -20px 0 #eecb86,210px 2px 0 -3px #eecb86,275px 0 0 #d59d9b,275px 22px 0 -3px #d59d9b;opacity:.85}
.route-story .visual-glitch-road .visual-stage:after{display:flex;top:35%;left:10%;width:80%;height:52px;content:"工作 · 恋爱 · 沮丧 · 哈哈哈";font-size:15px;justify-content:center;padding:8px;background:#101014e6;border-block:5px dashed #d4c5a5;word-spacing:0;animation:filmText 5.2s steps(4) infinite}
.route-story .visual-perth-zoom .visual-stage:before{display:grid;inset:34% 0 auto;height:80px;content:"PERTH";font:60px var(--display-font);color:#87cfdc88;text-shadow:none}.route-story .visual-perth-zoom .liu-guide{animation:theater-arrival 1.8s ease-out both}
@keyframes theater-arrival{from{translate:-260px -150px;opacity:0}to{translate:0 0;opacity:1}}
.route-story .visual-blank-page .visual-stage:before{display:block;left:15%;right:15%;top:35%;height:20%;border:1px solid #e4ccb044;background:repeating-linear-gradient(0deg,transparent 0 25px,#dbc6a81f 25px 26px)}

/* Quiet work surfaces, surrounded by the same theater identity. */
.route-create .create-console{margin-top:10px;background:transparent;border:0;padding:8px 4px}.route-create .liu-guide{margin-bottom:20px}.route-create .field-label,.route-create .hp-picker{margin-top:22px}.route-create .status-chip span{border-radius:2px;background:#18171d;border-color:#ddd1b233}.route-create .status-chip input:checked+span{background:#3c2932;border-color:#f3a9b8;color:#ffe9ee}
.route-checkin .checkin-panel{text-align:center;min-height:70svh;align-content:center}.route-checkin .liu-guide{justify-content:center;flex-direction:column}.route-checkin .liu-animated{width:190px}.route-checkin h1{font-size:28px}.route-checkin .partner-cameo{background:transparent}
.theater-ui .page-head{margin-top:20px}.theater-ui .page-head h1{font-size:30px}.theater-ui .partner-cameo{border:0;border-left:2px solid #d6bb8c;padding:12px 16px;background:#26201d60;border-radius:0}.theater-ui .partner-cameo p{color:#c6bdb1}.theater-ui .random-note,.theater-ui .voting-console,.theater-ui .xp-panel,.theater-ui .saved-message{border-radius:2px;border-color:#dacb9a38;background:#19181e;box-shadow:none}.theater-ui .saved-message{border-left:3px solid var(--green)}
.theater-ui .photo-capture{min-height:130px;border:2px dashed #dbc9aa66;background:#28232b}.theater-ui .photo-capture span{font-family:var(--display-font);color:#f0d9b5}.theater-ui .field-label{font-size:14px;color:#dfd4c1}.theater-ui .consent{font-size:13px;line-height:1.7}.theater-ui .hall-tabs{border-color:#dbd1b62e}.theater-ui .hall-tabs button{font-family:var(--display-font);font-size:16px}.theater-ui .hall-tabs .active{color:var(--yellow);border-color:var(--yellow);background:#4b3b2d66}
.theater-ui .lobby-card{border-radius:2px;border-color:#c9b9a74d;background:#19191d;box-shadow:4px 4px #0003}.theater-ui .lobby-card h3{color:#ffe6ac;font-size:20px}.theater-ui .lobby-card p{color:#f8f1e4;font-size:16px;line-height:1.7}.theater-ui .lobby-card em{color:#a9cbd1}.theater-ui .hall-vote-count{color:#f3c39a}.theater-ui .vote-btn{border-radius:2px;border-color:#a2efad66;background:#22352a;color:#d8ffe1}.theater-ui .vote-btn.is-voted{background:#3b3423;color:#ffe0a3;border-color:#d9b76d}
.theater-ui .bug-console,.theater-ui .bug-report,.theater-ui .bug-card{background:#15191f;border-color:#8ed1e83d;border-radius:2px}.route-perth h1{color:#a2e2e9}.theater-ui .bug-confirm{border-color:#a2e2e944;background:#1a2529}.theater-ui .bug-save-success{border:2px solid #a2efad;background:#20362c}.theater-ui .bug-save-success strong{color:#baffca}

/* The actual mission states remain attached to the existing buttons. */
.route-home:before{height:300px}.route-home .map-head{position:relative;text-align:left;padding:8px 86px 0 0}.route-home .map-head .liu-guide{position:absolute;right:0;top:18px}.route-home .map-head .liu-guide figcaption{display:none}.route-home .map-head .liu-animated{width:90px}.route-home .map-head h2{font-size:21px;color:#fff2d1;margin:8px 0}.route-home .map-head h1{font-size:29px;margin:6px 0}.route-home .map-head .access-badge{font-size:10px;box-shadow:none}.route-home .map-head p{font-size:12px}.route-home .next-action{border:0;border-left:3px solid #f6d389;border-radius:0;background:#1d1e23;box-shadow:none}.route-home .next-action strong{font-size:16px;line-height:1.5;color:#fbe8c2}.route-home .next-action .btn{font-size:13px;min-height:42px}
.theater-ui .level-map{min-height:900px;margin:24px -18px 0;background:#132329 url('/assets/theater/map.webp') center/100% 100% no-repeat;overflow:hidden;isolation:isolate}.theater-ui .level-map:before{inset:0;border:0;border-radius:0;background:#08151e18;filter:none;opacity:1}.theater-ui .level-map:after{display:none}.theater-ui .map-node{width:140px;min-height:130px;box-shadow:none!important}.theater-ui .map-node:before{display:none}.theater-ui .map-node small{width:48px;height:48px;font-size:21px;border-radius:2px;transform:rotate(-3deg);background:#14191fee;color:#fff3c1;border:2px solid #f7d287;box-shadow:3px 4px #0007}.theater-ui .map-node strong{max-width:136px;background:#0a1117ed;color:#fff2d6;border:1px solid #f2d3a875;font-size:15px;border-radius:1px;line-height:1.4;box-shadow:2px 3px #0006}.theater-ui .map-node strong i{font-size:11px;color:#bbdbe1}.theater-ui .map-node span{max-width:140px;background:#090e14de;color:#e2e6df;padding:3px;font-size:10px}.theater-ui .map-node b{font-size:11px;background:#111c22ed;border-color:#ddd2ad88;color:#ffe9aa}.theater-ui .map-node.status-locked small{color:#bdc0c3;border-color:#74777a;background:#22262c}.theater-ui .map-node.status-completed small{color:#142b20;background:#b8efba;border-color:#efffe8}.theater-ui .map-node.status-new small{animation:mission-beacon 3s ease-in-out infinite}
.theater-ui .map-node:nth-child(1){top:13%}.theater-ui .map-node:nth-child(2){top:25%}.theater-ui .map-node:nth-child(3){top:43%}.theater-ui .map-node:nth-child(4){top:56%}.theater-ui .map-node:nth-child(5){top:70%}.theater-ui .map-node:nth-child(6){top:84%}
@keyframes mission-beacon{50%{box-shadow:0 0 0 5px #ffdf8c33,3px 4px #0007}}
.theater-ui .adventure-party{border-radius:0;background:transparent;border-color:#b9ab8e38}.theater-ui .world-links{border-top:1px solid #b9ab8e38;padding-top:20px}

/* Collectibles keep legible live data above the artwork. */
.theater-ui .player-card,.theater-ui .ticket{background:linear-gradient(#100c11de,#100c11f2),url('/assets/theater/stage.webp') center/cover;border:2px solid #dec78b;border-radius:2px;box-shadow:inset 0 0 0 6px #9b2c3a33,0 12px 30px #0005}.theater-ui .player-card .card-gridline{opacity:.15}.theater-ui .player-card .identity-block h2{color:#ffe4a5;font-size:30px}.theater-ui .card-top{color:#cae8e3}.theater-ui .player-card dt{color:#c8c2b5}.theater-ui .player-card dd{color:#f5efd9}.theater-ui .card-sprite,.theater-ui .ticket-sprite{image-rendering:auto;filter:none}.theater-ui .ticket h1{color:#ffe8ab;font-size:32px}.theater-ui .ticket strong{color:#b2edbe}.theater-ui .export-panel{border-radius:0;border-color:#ded1b433;background:transparent}
.route-items .item-card,.route-my .item-card{border-radius:2px;border-color:#e0bf843f;background:#1e1c23;box-shadow:3px 3px #0005}.route-items h1,.route-my h1{color:#ffdf8c}.theater-ui .item-detail,.theater-ui .reward-pass-modal{border-color:#e9cc90;background:#17161c;color:#f5eedf}.route-locked .transmission-panel,.route-locked .final-mission-panel{border-color:#a7cfdb55;background:#14151e}.route-locked .liu-animated,.route-complete .liu-animated{width:150px}.route-complete .complete-panel{background:transparent;border:0}.route-save .retention-card{background:#1a1b20;border-color:#e0bf843f;border-radius:2px}
.theater-ui.ending-screen{max-width:600px;padding:0;background:#000}.ending-sequence{background:#000}.ending-sequence:before{animation:none}.ending-character,.ending-thanks{background:linear-gradient(#100b0d66,#100b0dcc),url('/assets/theater/stage.webp') center/100% 100% no-repeat}.ending-character .liu-animated,.ending-thanks .liu-animated{width:190px;margin:auto}.ending-character .ending-lines{background:#08060988;padding:16px}.ending-sequence .ending-lines p{color:#fff1d8}.ending-sequence .credit-block h2{color:#ffe0a5}.ending-item .item-reveal{border-color:#ffdf8c;background:#241c20}.ending-sequence.is-paused .liu-animated{animation-play-state:paused!important}
@media(min-width:760px){.screen{border-radius:0;min-height:100svh}.theater-ui{padding-inline:26px}.theater-ui.route-boot,.theater-ui.route-story{padding:0}.route-boot .theater-marquee h1{font-size:40px}.theater-ui .level-map{margin-inline:-26px}.route-story .liu-animated{width:240px}}
@media(max-width:360px){.theater-ui h1{font-size:27px}.theater-ui .page-head h1{font-size:26px}.route-story .story-mode>h1{font-size:22px}.route-story .liu-animated{width:190px}.route-story .story-visual .liu-guide figcaption{width:230px;font-size:18px}.route-story .chapter-copy{font-size:14px}.route-boot .theater-marquee h1{font-size:32px}.theater-ui .map-node{width:128px}.theater-ui .map-node strong{max-width:124px;font-size:14px}.theater-ui .map-node span{max-width:124px}}
@media(prefers-reduced-motion:reduce){.liu-animated,.theater-ui .map-node.status-new small,.route-story .visual-perth-zoom .liu-guide{animation:none!important}}
.theater-ui .boot-panel,.theater-ui .story-mode,.theater-ui .story-panel,.theater-ui .form-panel,.theater-ui .log-console,.theater-ui .quest-panel,.theater-ui .locked-panel,.theater-ui .mission-panel,.theater-ui .passport-panel,.theater-ui .checkin-panel{border:0;border-radius:0;box-shadow:none;background:transparent;padding:0}
.theater-ui p{font-weight:400}.theater-ui .field-label,.theater-ui .consent,.theater-ui textarea,.theater-ui input{font-weight:400}.theater-ui .my-adventure-button{top:max(12px,env(safe-area-inset-top));border-radius:2px}.theater-ui .map-node.status-locked{opacity:1;filter:none}.theater-ui .map-node.status-locked strong,.theater-ui .map-node.status-locked b{color:#c5c6c9;border-color:#717980;background:#171d25ee}
.theater-ui .inventory-item,.theater-ui .personal-progress article,.theater-ui .arcade-game-card{border-radius:2px;background:#1b1a20;border-color:#dac6a747;box-shadow:3px 3px #0003}.theater-ui .inventory-item h2{font-size:22px;color:#f4e4c6;line-height:1.4}.theater-ui .inventory-item.is-locked{opacity:.8;filter:none}.theater-ui .inventory-item.is-legendary{border-color:#ffdf8c;background:#282127}.theater-ui .inventory-item.is-legendary h2{color:#ffe3a8}
.theater-ui .player-card{display:flex;flex-direction:column;gap:18px;min-height:0;padding:24px}.theater-ui .player-card .card-top{order:0}.theater-ui .player-card .identity-block{order:1;margin:0}.theater-ui .player-card .card-sprite{position:static;order:2;width:130px;height:160px;align-self:center;margin:0;opacity:1}.theater-ui .player-card .hp-module{order:3;margin:0}.theater-ui .player-card dl{order:4;margin:0}.theater-ui .player-card footer{order:5;margin:0;font-size:12px}.theater-ui .player-card .identity-block h2{overflow-wrap:anywhere}
.theater-ui .ticket{display:flex;flex-direction:column;gap:14px;padding:28px 20px;min-height:0}.theater-ui .ticket>*{margin:0}.theater-ui .ticket>p{order:0}.theater-ui .ticket>h1{order:1}.theater-ui .ticket>h2{order:2;font-size:22px}.theater-ui .ticket>div{order:3}.theater-ui .ticket .ticket-sprite{position:static;order:4;width:140px;height:170px;align-self:center;opacity:1}.theater-ui .ticket>span{order:5;font-size:15px}.theater-ui .ticket>strong{order:6;font-size:28px;overflow-wrap:anywhere}.theater-ui .ticket>i{order:7}.theater-ui .ticket>em{order:8}.theater-ui .ticket>b{order:9}.theater-ui .ticket>small{order:10}
/* Stepping while paused must not freeze the incoming scene at opacity zero. */
.ending-sequence.is-paused .ending-act{animation:none!important;opacity:1;transform:none}
.ending-sequence.is-paused .ending-character .ending-lines p,.ending-sequence.is-paused .ending-liu,.ending-sequence.is-paused .thanks-liu{animation:none!important;opacity:1;transform:none}
.theater-ui .runner-canvas{border-radius:2px;border-color:#e0bf8455}.theater-ui .runner-screen{background:#111115}
/* Original partner artwork stays unfiltered and uncropped on a neutral plaque. */
.partner-logo {
  position: relative;
  display: grid;
  place-items: center;
  width: 112px;
  height: 80px;
  flex: 0 0 auto;
  padding: 8px;
  box-sizing: border-box;
  background: #fff;
  border: 1px solid #dec28a;
  border-radius: 4px;
  overflow: hidden;
}
.partner-logo img { position: absolute; inset: 8px; width: calc(100% - 16px); height: calc(100% - 16px); min-height: 0; object-fit: contain; image-rendering: auto; filter: none; }
.partner-logo-dark { background: #151519; }
.map-community-entry { display:flex; align-items:center; gap:12px; width:100%; margin:16px 0; padding:14px 12px; background:#202225; border:1px solid #dec28a88; color:#ffe3a8; text-align:left; }
.map-community-entry>span:nth-child(2) { flex:1; min-width:0; }
.map-community-entry strong,.map-community-entry small { display:block; white-space:normal; overflow-wrap:anywhere; }
.map-community-entry strong { font:18px var(--display-font); }
.map-community-entry small { margin-top:6px; font-size:12px; color:#d0d8cd; }
.community-dialog { box-sizing:border-box; width:min(420px,calc(100vw - 24px)); max-height:calc(100dvh - 32px); overflow:auto; padding:42px 18px 24px; background:#151519; color:#f7f3e8; border:1px solid #dec28a; border-radius:6px; text-align:center; }
.community-dialog::backdrop { background:#000b; }
.community-dialog h2 { font:24px/1.4 var(--display-font); color:#ffe3a8; overflow-wrap:anywhere; margin:0 0 12px; }
.community-dialog p { font-size:15px; line-height:1.6; }
.community-dialog small { font-size:12px; line-height:1.5; color:#bcc9bf; }
.community-close { position:absolute; top:6px; right:6px; width:36px; height:36px; color:#fff; background:transparent; border:0; font-size:28px; cursor:pointer; }
.community-dialog .wechat-qr,.wechat-card img.wechat-qr { display:block; width:min(100%,300px); height:auto; border:0; background:#191919; object-fit:contain; image-rendering:auto; -webkit-touch-callout:default; }
.party-npc .partner-logo { margin: 0 auto 10px; max-width: 100%; }
.party-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.party-npc { min-width: 0; overflow-wrap: anywhere; }
@media (min-width: 520px) { .party-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.partner-cameo .partner-logo { margin-bottom: 12px; }
.npc-profile-head .partner-logo { width: 100px; height: 84px; }
.credits-track .partner-logo { width: 160px; height: 104px; margin: 12px auto; }
.route-boot .theater-welcome small { display:block; margin-top:6px; color:#e8dcc7; font-size:13px; line-height:1.5; }
.route-boot .boot-greeting { position:absolute; top:40%; left:0; width:100%; display:flex; flex-direction:column; align-items:center; gap:14px; }
.route-boot .boot-greeting .theater-welcome { position:static; width:100%; padding:9px 12px; box-sizing:border-box; line-height:1.6; }
.route-boot .boot-greeting .liu-guide { position:static; transform:none; margin:0; width:auto; }
.route-boot .boot-greeting .liu-animated { width:clamp(160px,25svh,220px); }
.admission-notice { position:relative; z-index:4; margin:16px 0; padding:14px; border:1px solid #dfb659; background:#231b12; color:#fff0ce; font-size:15px; line-height:1.7; }

/* Readable Chinese rhythm, including narrow phones and long nicknames. */
.app-shell p, .app-shell h1, .app-shell h2 { line-break:strict; word-break:normal; overflow-wrap:break-word; text-wrap:pretty; }
.btn { min-width:0; line-height:1.5; word-break:normal; line-break:strict; }
.partner-cameo .partner-logo { margin-inline:auto; }
.transmission-panel .action-row { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.transmission-panel .action-row .btn { padding:12px 8px; font-size:15px; white-space:nowrap; }
.hall-prize { padding:12px 0; color:#ffe3a8; font-size:16px; line-height:1.7; border-block:1px solid #dec28a55; }
.hall-prize small { display:block; color:#ccc8be; font-size:12px; line-height:1.7; margin-top:6px; }
.puzzle-instructions { text-align:left; padding:14px; border-left:3px solid #dfb659; background:#191316; line-height:1.9; }
.puzzle-instructions strong { color:#ffe3a8; }
.liu-puzzle-tile { background-color:#201823; filter:none; }
.liu-puzzle-tile::before,.liu-puzzle-tile::after { display:none; }
.reconstruction-targets { border-color:#d6b16d; border-radius:4px; background:#171019; box-shadow:0 0 22px #d6b16d22; }
.reconstruction-targets .assembly-slot { padding:0; border-color:#d6b16d88; background:#171019; }
.reconstruction-targets .assembly-slot>span,.reconstruction-targets .assembly-slot>small { display:none; }
.fragment-piece { border-color:#d6b16d66; background:#171019; }
.fragment-piece b,.fragment-piece span { font-size:11px; line-height:1.5; }
.map-node.ending-ready { animation:endingInvite 2s ease-in-out infinite; }
@keyframes endingInvite { 50% { filter:brightness(1.3); box-shadow:0 0 24px #f5cf7777; } }
.reward-pass-modal { max-height:85dvh; overflow:auto; width:calc(100% - 28px); max-width:480px; margin-inline:auto; left:0; right:0; box-sizing:border-box; box-shadow:0 0 0 100vmax #000b; }
[data-reward-portal] .reward-pass-modal { z-index:1000; border-color:#e9cc90; background:#17161c; color:#f5eedf; }
.winner-banner { display:grid; gap:8px; width:100%; margin:12px 0 22px; padding:18px; text-align:left; border:2px solid #e7bf69; background:#26151f; color:#ffe5a1; cursor:pointer; }
.winner-banner strong { font:22px/1.5 var(--display-font); }
.winner-banner span { font-size:14px; line-height:1.7; color:#f2e2cb; }
.winner-notice.reward-pass-modal { z-index:1001; background:#21131d; border:2px solid #e7bf69; }
.winner-notice strong { font:21px/1.6 var(--display-font); color:#ffe5a1; overflow-wrap:anywhere; }
.winner-notice small { color:#c9c2b8; font-size:12px; line-height:1.7; }
.ticket-stage .ticket { background:linear-gradient(#1d131dcc,#100d13f5),url('/assets/theater/stage.webp') center/cover; border:1px solid #d6b16d; outline:1px solid #d6b16d66; outline-offset:-8px; padding:28px 22px; gap:12px; }
.ticket-stage .ticket-sprite { position:static; display:block; width:150px; height:180px; object-fit:contain; margin:0 auto; }
.ticket-stage .ticket h1 { font-size:24px; margin:0; }
.ticket-stage .ticket h2 { font-size:22px; margin:0; }
.ticket-stage .ticket strong { padding-top:18px; border-top:1px dashed #d6b16d; color:#ffe3a8; font-size:28px; overflow-wrap:anywhere; }
.ticket-stage .ticket em { color:#a9e9b8; font-style:normal; }
.ticket-stage .ticket b { font-size:22px; color:#ffe3a8; }
.ticket-stage .ticket small { font-size:12px; line-height:1.8; color:#c8c2b5; }
.collectible-ticket { margin:0; width:100%; max-width:600px; align-self:center; }
.collectible-ticket canvas { display:block; width:100%; height:auto; aspect-ratio:4/5; }
.collectible-ticket figcaption { text-align:center; font-size:14px; line-height:1.6; padding:12px; }
.player-id-preview { margin:0; width:100%; max-width:600px; align-self:center; }
.player-id-preview canvas { display:block; width:100%; height:auto; aspect-ratio:4/5; }
.player-id-preview figcaption { text-align:center; padding:12px; font-size:14px; }
.card-stage .export-panel { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.card-stage .export-panel>span { grid-column:1/-1; }
.ticket-stage .export-panel { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.ticket-stage .export-panel>span { grid-column:1/-1; }
@media (prefers-reduced-motion:reduce) { .map-node.ending-ready { animation:none; outline:2px solid #f5cf77; } }

.theater-ui:has(.adventure-guide) { padding-bottom:240px; }
.theater-ui .adventure-guide { position:fixed; z-index:7; bottom:calc(92px + env(safe-area-inset-bottom, 0px)); left:50%; transform:translateX(-50%); width:min(560px,calc(100% - 24px)); padding:12px 16px; background:#171b20f7; border-top:2px solid #ecc980; box-shadow:0 -8px 24px #0005; }
.adventure-guide p { margin:0 0 8px; color:#f1e6cd; font-size:14px; line-height:1.5; text-align:center; overflow-wrap:anywhere; }
.theater-ui .adventure-guide .btn { width:100%; min-height:48px; margin:0; white-space:normal; line-height:1.4; }
.theater-ui:has(textarea:focus,input[type="text"]:focus,input[type="email"]:focus,input[type="number"]:focus,select:focus) .adventure-guide { visibility:hidden; pointer-events:none; }
.writing-starters { display:flex; flex-wrap:wrap; gap:8px; margin:12px 0 20px; }
.writing-starters small,.writing-starters [role="status"] { flex-basis:100%; font-size:13px; line-height:1.6; color:#c9d6cb; }
.writing-starters button { background:none; border:0; border-bottom:1px dashed #acccae; color:#bce7c2; padding:8px 2px; font:inherit; font-size:14px; text-align:left; min-height:44px; cursor:pointer; }
.writing-starters button:focus-visible { outline:2px solid #ecc980; outline-offset:2px; }
.theater-ui .next-action strong { overflow-wrap:anywhere; }
.theater-ui [tabindex="-1"] { scroll-margin-top:24px; }
.theater-ui .secret-item-detail,.theater-ui .npc-profile { scroll-margin-top:24px; }
.npc-discovery-toast { pointer-events:none; }
body:has(.adventure-guide) .npc-discovery-toast { top:72px; bottom:auto; }
