:root{--ink:#43251a;--muted:#8c6948;--red:#8d2d22;--gold:#d2a55c;--blue:#173d65;--paper:#f4e5c6;--serif:'STSong','SimSun',serif}*{box-sizing:border-box}html,body{width:100%;height:100%;margin:0;overflow:hidden}body{background:radial-gradient(ellipse at 50% 45%,#594032,#170f0d);color:var(--ink);font-family:Arial,'Microsoft YaHei',sans-serif;display:grid;place-items:center}button,a{-webkit-tap-highlight-color:transparent;touch-action:manipulation}button{font:inherit;border:0;color:inherit;background:none;cursor:pointer}button:disabled{opacity:.4;cursor:default}button:focus-visible,a:focus-visible{outline:2px solid var(--blue);outline-offset:3px}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:var(--serif)}a{color:var(--red)}.sr-only{position:absolute;width:1px;height:1px;clip-path:inset(50%);overflow:hidden;white-space:nowrap}
.theatre-frame{position:relative;width:min(100vw,calc(100dvh * 9 / 16),480px);aspect-ratio:9/16;overflow:hidden;isolation:isolate;background:#eed5a2;container-type:inline-size;box-shadow:0 0 100px #0008}.stage-backdrop{position:absolute;inset:0;background:url('assets/v4/empty-stage.png') center/100% 100% no-repeat;z-index:-4}#poster-layer{position:absolute;inset:0;background-position:center;background-size:100% 100%;z-index:-3}#app{position:absolute;inset:12.7% 8.4% 6%;overflow-y:auto;overflow-x:hidden;scrollbar-width:none;z-index:3}#app::-webkit-scrollbar{display:none}#app[aria-busy=true]{pointer-events:none}.scene{position:relative;min-height:100%;padding:0 0 9px;display:flex;flex-direction:column;align-items:stretch}.scene-heading{text-align:center;margin-bottom:3cqw}.eyebrow{font-size:1.8cqw;letter-spacing:2px;color:var(--muted)}.scene-heading h1{font-size:6.2cqw;line-height:1.45;margin:1.4cqw 0;letter-spacing:.3px}.scene-heading p{font-size:2.3cqw;line-height:1.7;color:var(--muted)}.topbar{position:absolute;top:3.8%;left:5%;right:4%;height:6.2%;z-index:10;display:flex;align-items:center;justify-content:space-between;color:#f8dfa6}.topbar>button:first-child{font-size:4.3cqw;padding:2cqw;color:#e8bc7b}.mini-brand{font:4.3cqw var(--serif);letter-spacing:1.7px;text-shadow:0 2px 3px #2b160c}.mini-brand small{display:block;font:1.3cqw Arial;letter-spacing:2px;text-align:center;margin-top:.5cqw}.sound-btn{border:1px solid #d6ac6b;background:#4c291ccb;width:9cqw;height:9cqw;border-radius:50%;display:grid;place-items:center;position:relative;color:#ffefc7}.music-note{font-size:7cqw;line-height:1;translate:0 -1px}.sound-btn.playing:after{content:'';position:absolute;inset:-4px;border:1px solid #dcb25f88;border-radius:50%;animation:musicRing 3s ease-in-out infinite}#scene-footer{position:absolute;bottom:1.5%;left:6.5%;right:6.5%;display:flex;justify-content:space-between;gap:5px;align-items:center;color:#e1bb81;font-size:1.6cqw;z-index:8;text-shadow:0 1px 2px #27150c}#bg-toggle{font-size:1.7cqw;padding:6px 0;white-space:nowrap}.steps{display:flex;gap:3px}.steps i{height:3px;width:3px;background:#dec08c66;border-radius:4px;transition:width .4s}.steps .active{width:12px;background:#e8c27b}
.primary{position:relative;min-height:10.5cqw;display:flex;align-items:center;justify-content:center;gap:8cqw;font-family:var(--serif);font-size:4.1cqw;letter-spacing:2px;color:#fff0c1;background:linear-gradient(#a8502c,#7e2a1e);border:1px solid #dbb46d;box-shadow:inset 0 0 0 3px #7e2a1e,inset 0 0 0 4px #c39a57,0 3px 9px #52270d35;border-radius:16px 4px;transition:filter .2s;flex-shrink:0;padding:9px 15px}.primary span{position:absolute;right:6%;font-size:7cqw;line-height:1}.primary:active{filter:brightness(1.15)}.scene-actions{display:flex;flex-direction:column;gap:6px;margin-top:3cqw;align-items:stretch}.secondary{border:1px solid #a57c43;color:#784322;background:#f3dcadbb;border-radius:5px;padding:10px 12px;font:3cqw var(--serif);min-height:38px}.text-button,.bottom-links button{font-size:2.3cqw;padding:9px 5px;color:var(--red);min-height:32px}.agong-line{border-top:1px solid #b28b4e65;margin-top:3cqw;padding:3cqw 1cqw 0;display:flex;gap:2cqw;align-items:flex-start}.agong-line>span{writing-mode:vertical-rl;font:2.2cqw var(--serif);letter-spacing:2px;color:#9a4a2c;flex-shrink:0;border:1px solid #b7824c;border-radius:2px;padding:4px 2px}.agong-line p{font:3.2cqw/1.8 var(--serif);text-align:justify}.fine-note{font-size:1.9cqw;line-height:1.7;color:var(--muted);text-align:center;margin-top:2cqw}
.poster-mode #app{inset:0;overflow:hidden}.poster-mode .mini-brand{visibility:hidden}.poster-mode #scene-footer{color:#f9dfaa}.poster-mode #scene-footer #chapter-label,.poster-mode #scene-footer .steps{display:none}.poster-mode .sound-btn{background:#4d2919bb;border-color:#f6d79f}.poster-mode .topbar{top:3.8%}.poster-screen{position:absolute;inset:0}.cover-start{position:absolute;left:18%;width:65%;height:7.5%;top:77%;border-radius:40px;animation:buttonLight 4s ease-in-out infinite}.poster-next{position:absolute;left:13%;right:10%;top:72%;bottom:2%}.lock-target{position:absolute;left:42%;top:50%;width:16%;height:13%;border-radius:30px}.key-drag{position:absolute;left:0;top:73%;width:42%;height:13%;border-radius:50%;touch-action:none}.key-drag:focus-visible,.lock-target:focus-visible{outline:2px solid #ffdd85}.skip-intro{position:absolute;bottom:3%;left:25%;right:18%;font-size:2.4cqw;color:#f6d899;text-shadow:0 2px 3px #371307}.box-open .lock-target{box-shadow:0 0 70px 30px #ffdf83;transition:box-shadow .3s}
.origin-stage{position:relative;height:65cqw;display:flex;justify-content:center;align-items:center;border:1px solid #b58a4b4d;background:radial-gradient(ellipse,#e4ba7150,transparent 70%);border-radius:8px;flex-shrink:0}.lady-piece{height:59cqw;width:40cqw;position:relative;z-index:2;touch-action:pan-y}.static-lady,.puppet-svg{height:100%;width:100%;display:block}.static-lady{opacity:.55;filter:sepia(.3)}.projected .static-lady{opacity:1;filter:drop-shadow(3px 4px 1px #7b471b38)}.projection-light{position:absolute;inset:10%;background:radial-gradient(ellipse,#ffe3a7cc,transparent 65%);opacity:.3}.projected .projection-light{opacity:.9;animation:backlightPulse 6s ease-in-out infinite}.touch-hint,.detail-trigger{position:absolute;bottom:1.8cqw;left:0;right:0;font-size:2.2cqw;color:#83522f;text-align:center;z-index:4}.detail-trigger{min-height:30px}.eye-detail{position:absolute;right:2cqw;top:4cqw;width:21cqw;background:#f8e4b6ee;border:1px solid #be9459;border-radius:50% 50% 8px 8px;padding:9px 3px 3px;z-index:3;text-align:center;font:2cqw var(--serif)}.eye-detail svg{width:100%;height:20cqw}
.journey-stage{height:43cqw;position:relative;border:1px dashed #a886555f;border-radius:6px;overflow:hidden;flex-shrink:0}.river-landscape{position:absolute;inset:0;display:flex;align-items:flex-end;opacity:.2;transition:opacity 1.2s}.river-awake .river-landscape{opacity:1}.river-landscape svg{width:100%;height:100%;object-fit:contain}.stage-location{position:absolute;bottom:2cqw;left:0;right:0;text-align:center;font-size:1.8cqw;color:#7e694d}.drop-caption{position:absolute;inset:20% 4%;display:grid;place-content:center;text-align:center;line-height:2;font:3.4cqw/2 var(--serif);color:#896039}.drop-caption small{font:2cqw Arial}.poet-image{display:block;max-width:100%;width:100%;height:100%;object-fit:contain;user-select:none;pointer-events:none}.paper-image{mix-blend-mode:multiply}.hung-warrior{position:absolute;left:calc(50% - 13cqw);top:1cqw;width:26cqw;height:39cqw}.warrior-pick{width:100%;height:36cqw;display:flex;align-items:center;justify-content:center;gap:9cqw;font:3.2cqw var(--serif);touch-action:none}.warrior-pick img{height:34cqw;width:23cqw}.voice-choices{display:flex;gap:3cqw;margin:3cqw 0 0}.voice-choices button{border:1px solid #b28b4e88;background:#f5deb16b;border-radius:5px;flex:1;padding:2cqw;display:flex;flex-direction:column;align-items:center;gap:1.5cqw}.voice-choices b{font-size:5cqw;color:#a24d2a}.voice-choices span{font:2.8cqw var(--serif)}.voice-choices small{font-size:1.8cqw;color:#987045}.voice-choices .matched{background:#d4dfba66;border-color:#708754}.match-row{display:flex;align-items:center;justify-content:center;gap:7cqw}.match-warrior{height:19cqw;display:flex;align-items:center;gap:3cqw;touch-action:none}.match-warrior img{height:19cqw;width:14cqw}.match-warrior span{font-size:2cqw}.journey-scene .agong-line{margin-top:2cqw}.journey-scene .agong-line p{font-size:2.8cqw}
.craft-comparison{display:flex;gap:4cqw;height:79cqw;margin-bottom:1cqw}.comparison{flex:1;position:relative;border:1px solid #b18b4b6b;border-radius:90px 90px 6px 6px;padding:3cqw 0 11cqw;text-align:center;overflow:hidden;background:#f6e9ca60}.comparison .player-svg{height:100%;width:100%}.comparison b{position:absolute;left:0;right:0;bottom:7cqw;font:3cqw var(--serif)}.comparison small{position:absolute;left:0;right:0;bottom:3cqw;font-size:1.8cqw;color:var(--muted)}.comparison.carved .player-svg{filter:sepia(1) saturate(.7);opacity:.8}.comparison.carved:after{content:'';position:absolute;inset:16% 22% 22%;background:radial-gradient(circle,#f5e4bd 0 2px,transparent 3px) 0 0/9px 10px;clip-path:polygon(35% 0,75% 5%,95% 25%,75% 65%,90% 100%,20% 100%,25% 65%,0 30%);pointer-events:none}.step-tabs{display:flex;gap:8px;justify-content:center;font:3cqw var(--serif);color:#a6875f;padding:1cqw 0}.step-tabs i{font-style:normal;color:#be9a65}.step-tabs .active{color:var(--red)}.custom-preview{position:relative;height:76cqw;display:flex;align-items:center;justify-content:center;isolation:isolate;flex-shrink:0}.custom-preview .player-svg{height:100%;width:53cqw;position:relative;z-index:2}.custom-seal{position:absolute;right:2cqw;top:9cqw;font:2.5cqw/1.5 var(--serif);color:#9b4529;border:1px solid #9b4529;padding:5px}.player-svg{display:block;width:100%;height:100%;overflow:visible}.wardrobe-tabs,.paint-zones{display:flex;gap:1cqw;border-bottom:1px solid #aa7b3e77}.wardrobe-tabs button,.paint-zones button{flex:1;font:3.1cqw var(--serif);padding:2.2cqw 1cqw;min-height:32px;background:#24435c;color:#f8dc9c;border:1px solid #c59953;border-radius:7px 7px 0 0}.wardrobe-tabs .active,.paint-zones .active{background:#a24029}.wardrobe-options{display:flex;gap:2cqw;margin-top:2cqw;height:19cqw}.wardrobe-options button{position:relative;flex:1;background:#f6e1b477;border:1px solid #bd955e;border-radius:4px;padding:1cqw 1cqw 4cqw;overflow:hidden}.wardrobe-options .selected{outline:2px solid #a34426;outline-offset:-2px;background:#f6d99d}.wardrobe-options small{position:absolute;left:0;right:0;bottom:.6cqw;font-size:1.8cqw}.craft-step-1 .scene-heading{margin-bottom:1cqw}.craft-step-1 .scene-actions{margin-top:2cqw}.painting{height:70cqw}.pigment-tray{display:flex;justify-content:space-around;padding:3cqw 2cqw 1cqw;background:#956c4025;border-radius:0 0 12px 12px}.pigment-tray button{display:flex;flex-direction:column;align-items:center;gap:1.4cqw;touch-action:none}.pigment-tray i{width:10cqw;height:8cqw;border:3px solid #bc945d;background:var(--pigment);border-radius:50%;box-shadow:inset 0 0 0 2px #e9c48a,0 3px 3px #56331d33}.pigment-tray .picked{outline:2px solid #8e3924;outline-offset:2px}.pigment-tray span{font:2.6cqw var(--serif)}.translucent{height:94cqw}.translucent .player-svg{opacity:.9;filter:drop-shadow(2px 3px 1px #9857262b)}.preview-light{position:absolute;inset:10%;border-radius:50%;background:radial-gradient(ellipse,#ffe2a7,#efb45a44 50%,transparent 70%);animation:backlightPulse 6s ease-in-out infinite}
.beat-list{display:flex;flex-direction:column;gap:3cqw;margin:2cqw 0 3cqw}.beat-choice{position:relative;min-height:23cqw;display:flex;align-items:center;gap:4cqw;padding:3cqw;border:1px solid #b18a4e6b;border-radius:6px;background:#f4dfb770;text-align:left}.beat-choice.selected{border-color:#9c4024;box-shadow:inset 0 0 0 1px #9c4024}.beat-choice>span{flex:1}.beat-choice b{font-size:4cqw}.beat-choice small{display:block;font-size:2cqw;color:#926642;margin-top:2cqw}.beat-choice em{font:4cqw var(--serif);font-style:normal;color:#9e4729;text-align:center}.beat-choice em small{font:1.5cqw Arial}.vinyl{width:16cqw;height:16cqw;border-radius:50%;background:repeating-radial-gradient(circle,#1f282e 0 1px,#36424a 2px,#17262c 3px 4px);display:grid;place-items:center;flex-shrink:0}.vinyl span{font:4cqw var(--serif);font-style:normal;color:#eed297;background:#a23d27;width:6cqw;height:6cqw;border-radius:50%;display:grid;place-items:center}.beat-choice.selected .vinyl{animation:vinylSpin 12s linear infinite}.poet-grid{display:grid;grid-template-columns:1fr 1fr;gap:2.8cqw}.poet-card{position:relative;height:46cqw;border:1px solid #a8773c;border-radius:11px 3px;overflow:hidden;background:radial-gradient(ellipse at 50% 45%,#f9e8bfcc,#eed3a355);padding:2cqw 0 7cqw;isolation:isolate}.poet-card.selected{outline:2px solid #b14724;outline-offset:-1px;box-shadow:0 0 15px #d7832a3b}.poet-card .poet-name{position:absolute;left:2cqw;top:3cqw;writing-mode:vertical-rl;color:#fff0ba;background:#903923;padding:5px 3px;border:1px solid #d1a059;border-radius:3px;font:3.3cqw var(--serif);z-index:2;letter-spacing:2px}.poet-card img{height:100%;width:100%;padding:0 1cqw 0 3cqw}.poet-card b{position:absolute;bottom:1.5cqw;left:10%;right:10%;font:2.6cqw var(--serif);color:#8b361f;background:#efd4a2cf;border-top:1px solid #a97b41;padding-top:3px}.poet-check{display:none;position:absolute;right:2cqw;top:2cqw;color:#fff0bb;background:#a94225;border:1px solid #d7b16a;border-radius:50%;width:6cqw;height:6cqw;place-items:center;font-size:3cqw}.selected .poet-check{display:grid}.partner-strip{display:flex;align-items:center;gap:3cqw;margin-top:2cqw;padding:1cqw 0}.my-avatar{height:15cqw;width:15cqw;border:1px solid #ba914e;border-radius:50%;background:#eed6a2;overflow:hidden;flex-shrink:0}.my-avatar .player-svg{height:35cqw;width:21cqw;translate:-1.5cqw 0}.partner-strip>span{font:3.3cqw var(--serif)}.partner-strip small{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font:1.9cqw/1.6 Arial;color:#835e39;margin-top:1cqw}.mc-scene .scene-actions{margin-top:1cqw;gap:0}.mc-scene .scene-actions>.text-button{padding-bottom:0;min-height:25px}
.battle-scene .scene-heading{margin-bottom:1.8cqw}.battle-scene .scene-heading h1{font-size:5.7cqw}.battle-speech{position:relative;min-height:27cqw;padding:4cqw 3cqw 3cqw;text-align:center;border:1px solid #b47d37;background:#f8e9c7a6;border-radius:12px 3px;z-index:3}.battle-speech>span{position:absolute;top:-2.3cqw;left:15%;right:15%;background:#8c3421;color:#f9dfa7;border:1px solid #c59c53;border-radius:9px;font:2.7cqw var(--serif);padding:2px 4px}#lyrics{font:3cqw/1.75 var(--serif);min-height:15cqw;display:flex;flex-direction:column;justify-content:center}#lyrics p{margin:.3cqw 0}.duel-stage{position:relative;height:61cqw;display:flex;justify-content:space-between;gap:6%;isolation:isolate;flex-shrink:0;margin-top:1cqw}.duel-user,.duel-poet{height:100%;width:47%;position:relative;z-index:2}.duel-user .player-svg{transform:scaleX(-1)}.duel-poet .poet-image{width:100%;height:100%}.duel-light{position:absolute;inset:0 -7% -3%;background:radial-gradient(ellipse at 50% 85%,#edb45755,transparent 65%);border-radius:50%;animation:duelGlow 7s ease-in-out infinite}.duel-labels{display:flex;justify-content:space-between;align-items:center;font:2.7cqw var(--serif);padding:1cqw 0 2cqw;border-bottom:1px solid #b78a4b55}.duel-labels b{font-size:5cqw;color:#b76628;font-style:italic}.duel-labels span{width:44%;text-align:center}.theme-buttons{display:flex;gap:3cqw;margin-top:2cqw}.theme-buttons button{flex:1;border:1px solid #a97940;border-radius:9px 3px;background:#153e5b;color:#eed59b;font:3.2cqw var(--serif);min-height:9cqw;padding:2cqw}.theme-buttons .selected{background:#9f3a25;color:#fff0bf}.battle-feedback{display:flex;gap:2cqw;margin-top:2cqw}.battle-feedback button{flex:1;min-height:14cqw;border:1px solid #b48c4a;border-radius:8px 2px;background:linear-gradient(#b9804255,#8e4d2e44);font:3.2cqw var(--serif);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1cqw;color:#6d321e}.battle-feedback button b{font:5.2cqw Arial}.battle-feedback .chosen{opacity:1;background:#9c3a24;color:#f6dfa8}.battle-response{font-size:2cqw;line-height:1.7;min-height:7cqw;text-align:center;padding-top:1.6cqw;color:#82532e}.battle-scene .scene-actions{margin-top:1cqw;gap:0}.battle-scene .scene-actions .primary{min-height:8.5cqw;font-size:3.4cqw}.battle-scene .text-button{min-height:22px;font-size:2cqw;padding:4px}.battle-scene .fine-note{margin-top:0;font-size:1.7cqw}.stage-soundwave{position:absolute;left:21%;right:21%;bottom:5%;height:14cqw;display:flex;align-items:center;gap:2px;opacity:.18;z-index:0}.stage-soundwave i{flex:1;height:calc(8px + var(--bar)*5px);background:#bd7b2e;transform:scaleY(.25);transform-origin:center}.battle-active .stage-soundwave i,.sound-active .stage-soundwave i{animation:meterPulse 1.2s ease-in-out infinite;animation-delay:var(--delay)}.feedback-fx{position:absolute;z-index:20;left:43%;top:35%;font-size:14cqw;color:#b96025;text-shadow:0 0 15px #ffedab;pointer-events:none;animation:feedbackFloat 1.5s ease-out forwards}.feedback-like .back-light{filter:brightness(1.3)}.feedback-battle .duel-light{box-shadow:0 0 30px #e1ab5844}
.card-preview{display:block;width:52cqw;max-width:100%;height:auto;min-height:65cqw;object-fit:contain;margin:0 auto 3cqw;box-shadow:0 6px 20px #71442133}.card-buttons{display:flex;gap:2cqw;flex-wrap:wrap}.card-buttons .primary{width:100%}.card-buttons .secondary{flex:1;font-size:2.8cqw;padding:6px;min-height:9cqw}.card-scene .agong-line p{font-size:2.7cqw}.bottom-links{display:flex;justify-content:space-between}.mentor-vignette{width:100%;height:45cqw;overflow:hidden;border:1px solid #a77b4080;border-radius:8px;position:relative}.mentor-vignette img{width:100%;height:100%;object-fit:cover;object-position:50% 66%}.keepsake{display:flex;align-items:center;gap:4cqw;justify-content:center;margin-top:3cqw}.keepsake>div{height:20cqw;width:15cqw}.keepsake p{font:3cqw/1.8 var(--serif);color:#8a562d}.end-words{font:3cqw/1.9 var(--serif);text-align:center;margin-top:3cqw}.end-buttons{display:flex;flex-direction:column;gap:2cqw;margin-top:4cqw}.end-buttons .secondary{font-size:2.8cqw;min-height:10cqw}.end-buttons .text-button{font-size:2.3cqw}
.background-fx{position:absolute;inset:0;pointer-events:none;z-index:-1;overflow:hidden;contain:paint}.back-light{position:absolute;left:0;right:0;top:8%;height:84%;background:radial-gradient(ellipse at 48% 40%,#ffd98233,transparent 67%);mix-blend-mode:soft-light;animation:backlightPulse 7s ease-in-out infinite}.light-b{left:-40%;right:-20%;background:linear-gradient(120deg,transparent 30%,#ffdb7a25 46%,transparent 62%);transform-origin:50% 0;animation:lightSweep 17s ease-in-out infinite alternate}.lantern-glow{position:absolute;top:9%;width:29%;height:17%;border-radius:50%;background:radial-gradient(ellipse,#f1a93944,transparent 65%);filter:blur(8px);animation:lanternPulse 5s ease-in-out infinite alternate}.glow-l{left:-4%}.glow-r{right:-4%;animation-delay:-2s}.mist{position:absolute;left:-25%;right:-25%;bottom:4%;height:30%;background:radial-gradient(ellipse at 30% 60%,#fae3b54d,transparent 58%),radial-gradient(ellipse at 70% 70%,#d9b16f2a,transparent 50%);filter:blur(14px);opacity:.4;animation:mistDrift 18s ease-in-out infinite alternate}.mist-b{bottom:25%;opacity:.15;animation-delay:-9s}.floating-cloud{position:absolute;width:45%;height:12%;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 220 70'%3E%3Cpath d='M4 45Q21 18 40 39C51 61 18 66 18 43C24 20 65 19 85 39C75 0 136 1 149 31C176 6 210 30 190 45Q211 39 218 57H53M68 46Q99 69 117 45C129 19 85 21 92 45C96 59 147 55 162 43' fill='none' stroke='%23b6823e' stroke-width='1.3'/%3E%3C/svg%3E") center/contain no-repeat;opacity:.26;animation:cloudDrift 21s ease-in-out infinite alternate}.cloud-one{left:-15%;top:20%}.cloud-two{right:-18%;bottom:14%;animation-delay:-11s}.dust{position:absolute;inset:0}.dust i{position:absolute;left:var(--x);top:var(--y);width:var(--size);height:var(--size);border-radius:50%;background:#e2af50;box-shadow:0 0 7px #ffd899;opacity:0;animation:dustFloat var(--duration) linear infinite;animation-delay:var(--offset)}.water-lines{position:absolute;bottom:18%;left:-20%;right:-20%;height:26%;background:repeating-linear-gradient(0deg,transparent 0 13px,#9caa8b17 14px 15px);border-radius:50%;opacity:0;animation:waterFlow 11s ease-in-out infinite alternate}.page-2 .water-lines{opacity:1}.page-5 .back-light{background:radial-gradient(ellipse at 25% 50%,#eebc5b4d,transparent 52%),radial-gradient(ellipse at 85% 60%,#c5874c38,transparent 48%)}.poster-mode .background-fx{z-index:0}.poster-mode .floating-cloud{opacity:.14}.poster-mode .mist{opacity:.2}
@keyframes backlightPulse{0%,100%{opacity:.4}50%{opacity:.95}}@keyframes lightSweep{from{transform:rotate(-11deg)}to{transform:rotate(11deg)}}@keyframes lanternPulse{from{opacity:.35}to{opacity:.9}}@keyframes mistDrift{to{translate:8% -5%;opacity:.25}}@keyframes cloudDrift{to{translate:40px -8px}}@keyframes dustFloat{0%{opacity:0;translate:0 30px}25%{opacity:.35}75%{opacity:.2}100%{opacity:0;translate:17px -55px}}@keyframes waterFlow{to{translate:17px 5px;opacity:.6}}@keyframes buttonLight{50%{box-shadow:0 0 22px #ffd98255,inset 0 0 9px #ffd98211}}@keyframes musicRing{50%{opacity:.3;scale:1.1}}@keyframes vinylSpin{to{transform:rotate(360deg)}}@keyframes duelGlow{50%{opacity:.45}}@keyframes meterPulse{0%,100%{transform:scaleY(.25)}40%{transform:scaleY(1)}}@keyframes feedbackFloat{0%{opacity:0;transform:translateY(20px) scale(.7)}25%{opacity:1}100%{opacity:0;transform:translateY(-50px) scale(1.1)}}
.static-lady *,.player-svg *,.poet-image{animation:none!important}.fx-paused .background-fx *,.fx-paused .projection-light,.fx-paused .preview-light,.fx-paused .duel-light,.fx-paused .stage-soundwave i,.fx-paused .vinyl,.fx-paused .cover-start,.fx-paused .sound-btn:after{animation-play-state:paused!important}.fx-paused .dust i{opacity:.15}
.drag-ghost{position:fixed;width:85px;height:125px;z-index:100;pointer-events:none;translate:-50% -50%;filter:drop-shadow(0 6px 8px #4a2c1b66);display:flex;align-items:center;justify-content:center}.drag-ghost img{width:100%;height:100%;object-fit:contain}.drag-ghost>span:not(.key-symbol){display:none}.key-symbol{font-size:85px;color:#d5a74c;text-shadow:0 2px 2px #5d301b}.paint-ghost{width:30px;height:30px;border-radius:50%;background:var(--pigment,#b9342e);border:3px solid #e1bf80}.paint-ghost>*{display:none}[data-drag]{touch-action:none}
dialog{width:min(350px,calc(100vw - 34px));max-height:calc(100dvh - 45px);overflow-y:auto;background:#f2e3c3;color:var(--ink);border:1px solid #b08040;border-radius:9px;padding:30px 23px 22px;box-shadow:0 15px 70px #170b08aa}dialog::backdrop{background:#1f120fbb;backdrop-filter:blur(4px)}dialog h2{font-size:24px;line-height:1.5;margin:7px 0 15px}dialog p{font-size:12px;line-height:1.9;margin:12px 0}dialog .primary{font-size:16px;min-height:44px;margin-top:14px}dialog .primary span{font-size:25px}.close-dialog{position:absolute;right:7px;top:3px;font-size:27px;padding:8px;color:#9e7750}.chapter-menu{display:flex;flex-direction:column;gap:5px}.chapter-menu button{display:flex;align-items:center;gap:12px;border-bottom:1px solid #b995574d;padding:12px 5px;font-size:13px;text-align:left}.chapter-menu small{font-size:10px;color:#b17b48}.chapter-menu span{margin-left:auto;font-size:20px}#toast{position:absolute;left:7%;right:7%;bottom:7%;background:#4b291bea;color:#ffe4b3;border:1px solid #bf9456;border-radius:4px;padding:10px 14px;font-size:2.7cqw;line-height:1.7;text-align:center;z-index:40;opacity:0;pointer-events:none;transition:opacity .25s}#toast.show{opacity:1}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}.dust i{opacity:.12}}

/* Compact the live controls into the 9:16 screen; keep captions readable over the wooden apron. */
.agong-line{background:#f4e3bed9;border:1px solid #b28b4e55;border-radius:5px;padding:2.2cqw;margin-top:2.5cqw}
.origin-stage{height:56cqw}.lady-piece{height:52cqw;width:35cqw}
.journey-stage{height:32cqw}.hung-warrior{height:29cqw;width:20cqw;left:calc(50% - 10cqw)}
.voice-choices button{height:17cqw;padding:1cqw;gap:.7cqw}.voice-choices b{font-size:4cqw}.voice-choices span{font-size:2.5cqw}.voice-choices small{font-size:1.7cqw}
.match-warrior{height:14cqw}.match-warrior img{height:14cqw;width:10cqw}.match-row{gap:3cqw}.match-row .text-button{font-size:2.1cqw}
.journey-scene .agong-line p{font-size:2.6cqw}.journey-scene .scene-actions{margin-top:2cqw}
.craft-step-1 .custom-preview{height:68cqw}.craft-step-2 .custom-preview{height:64cqw}
.poet-card{height:39cqw}.partner-strip{background:#f4e2bcdf;border:1px solid #b18b4e55;border-radius:6px;padding:1cqw 2cqw}.partner-strip small{font-size:1.8cqw}.my-avatar{height:12cqw;width:12cqw}.mc-scene .text-button{background:#f3dfb6b3;border-radius:3px}
.battle-scene .scene-heading{margin-bottom:2.5cqw}.battle-scene .scene-heading h1{font-size:5.2cqw;line-height:1.3;margin:.7cqw 0}.battle-scene .eyebrow{font-size:1.6cqw}
.battle-speech{height:24cqw;min-height:24cqw;padding:3cqw 3cqw 1cqw}.battle-speech:after{content:'↕';position:absolute;right:1.2cqw;bottom:1.2cqw;color:#ae8146;font-size:2.4cqw}
#lyrics{font-size:2.8cqw;line-height:1.6;display:block;min-height:0;height:19cqw;overflow-y:auto;scrollbar-width:none;padding-right:1cqw}
.duel-stage{height:43cqw;isolation:auto}.duel-poet{mix-blend-mode:multiply}.duel-labels{padding:.7cqw 0 1cqw;font-size:2.4cqw;background:#f1dbb0bd}.duel-labels b{font-size:4cqw}
.theme-buttons{margin-top:1.5cqw;gap:2cqw}.theme-buttons button{min-height:8cqw;font-size:3cqw;padding:1.2cqw}
.battle-feedback{margin-top:1.5cqw}.battle-feedback button{min-height:11cqw;font-size:3cqw;background:#e1bd86de}.battle-feedback button b{font-size:4.6cqw}.battle-feedback .chosen{background:#9c3a24}
.battle-response{min-height:6cqw;padding:1cqw 1cqw 0;font-size:1.9cqw;background:#f3dfb6bb;border-radius:3px;line-height:1.6}
.battle-scene .scene-actions{display:grid;grid-template-columns:1fr auto;gap:1cqw;align-items:center;margin-top:1.4cqw}.battle-scene .scene-actions .primary{font-size:3cqw;min-height:9cqw;letter-spacing:.5px;padding-right:8cqw}.battle-scene .scene-actions .text-button{font-size:1.9cqw;padding:5px;background:#f3dfb6c9;border-radius:3px}.battle-scene .fine-note{margin-top:1cqw;color:#e5c995;text-shadow:0 1px 2px #54321a}
.battle-feedback button:disabled{opacity:.75;background:#ebd0a4;color:#744a2c}.battle-feedback button.chosen{opacity:1;background:#9c3a24;color:#f6dfa8}
.duel-poet,.duel-poet .poet-image{mix-blend-mode:normal}
dialog .fine-note{font-size:10px}
.page-cover #poster-layer{animation:stageAwaken 1.8s ease-out both}
@keyframes stageAwaken{from{filter:brightness(.25)}to{filter:brightness(1)}}
.fx-paused #poster-layer{animation:none}
@media(prefers-reduced-motion:reduce){.page-cover #poster-layer{animation:none}}
