#stage.jueju-active:not(.prologue-active) :is(#game,#joystick,#dash,#interact,#interact-hint,#task,.location,#dialogue,#momo-bubble,#distance) {visibility:hidden!important;pointer-events:none!important;}
#jueju-world {position:absolute;inset:0;z-index:8;overflow:hidden;container-type:size;touch-action:manipulation;user-select:none;background:#8fbcca;}
#jueju-world[hidden]{display:none;}
#stage.jueju-active:not(.prologue-active).story-active>#jueju-world {visibility:visible!important;pointer-events:none;}
#stage.jueju-active:not(.prologue-active) #story {background:linear-gradient(0deg,#0e30294d,transparent 50%);}
#stage.jueju-active:not(.prologue-active) #story-text {font-size:clamp(30px,2.2cqw,34px);}
.jj-scene,.jj-crossfade {position:absolute;inset:0;background-position:center;background-size:cover;pointer-events:none;}
.jj-crossfade {z-index:7;}
.jj-surface {position:absolute;inset:0;touch-action:none;}
#jueju-world img {object-fit:contain;pointer-events:none;}
.jj-focus {position:absolute;width:30%;height:38%;translate:-50% -50%;pointer-events:none;border-radius:50%;background:radial-gradient(ellipse,#edfff728,transparent 68%);z-index:6;}
.jj-sound {position:absolute;left:13%;top:13%;color:#fff0b3;text-shadow:0 0 14px #f1d283;font-size:40px;animation:jj-sound 1.3s ease-in-out infinite;pointer-events:none;}
.jj-hint {position:absolute;left:6%;right:6%;bottom:5%;z-index:9;text-align:center;pointer-events:none;font:500 clamp(26px,2.1cqw,28px)/1.4 var(--ui-font-body);color:#fff4dc;text-shadow:0 2px 5px #153e32;background:radial-gradient(ellipse,#1b443b77,transparent 75%);}
.jj-caption {position:absolute;z-index:10;left:50%;top:50%;translate:-50% -50%;max-width:92%;max-height:94%;overflow:auto;padding:18px 28px;background:#153b32bf;border:1px solid #cfb77b70;border-radius:4px;text-align:center;color:#fff0cf;box-sizing:border-box;}
#jueju-world .jj-caption :is(p,small) {font:500 clamp(28px,2.3cqw,32px)/1.45 var(--ui-font-body);letter-spacing:0;margin:8px 0;color:#fff0cf;}
#jueju-world .jj-caption small {display:block;font-size:28px;}
#jueju-world .jj-caption strong {display:block;font:600 clamp(34px,2.9cqw,40px)/1.3 var(--ui-font-title);color:#f1d68d;}
#jueju-world .jj-caption .jj-original {font:500 clamp(40px,3.1cqw,46px)/1.5 var(--ui-font-title);white-space:nowrap;}
.jj-caption em {font-style:normal;color:#ebd474;}
.jj-context {position:absolute;right:3%;top:3%;z-index:9;color:#fff0d0;text-shadow:0 2px 5px #163b31;font:500 clamp(26px,2cqw,30px)/1.4 var(--ui-font-body);}
#jueju-world button {min-width:44px;min-height:44px;font:500 clamp(26px,2.2cqw,30px)/1.35 var(--ui-font-body);padding:12px 24px;border:1px solid #ceb77e;background:#214b42;color:#fff3d6;cursor:pointer;touch-action:none;}
#jueju-world button:focus-visible {outline:3px solid #f0d08b;outline-offset:3px;}
.jj-controls {position:absolute;z-index:11;left:4%;right:4%;bottom:2%;height:auto;padding:24px 18px 5px;background:#123b33d4;color:#244d41;border-block:1px solid #c3ad78;box-sizing:border-box;}
@keyframes jj-label-in {from{opacity:0;translate:0 5px;}to{opacity:1;translate:0 0;}}
.jj-into-book {animation:jj-into .6s both;}
@keyframes jj-into {to{opacity:0;scale:.8;}}
@keyframes jj-willow {50%{rotate:.4deg;}}
@keyframes jj-sound {50%{opacity:.65;scale:1.05;}}
@media(prefers-reduced-motion:reduce){#jueju-world *{animation:none!important;transition:none!important;}}

/* Cropped core: source x=290..735, y=170..535. Fixed, shared by listen/near. */
.jj-willow {position:absolute;left:10%;top:12%;width:18%;aspect-ratio:445/365;transition:opacity 1s;pointer-events:none;}
.jj-oriole-crop {position:absolute;inset:0;overflow:hidden;clip-path:polygon(0 69%,16% 36%,30% 20%,43% 0,52% 0,51% 16%,44% 39%,60% 46%,60% 30%,65% 27%,74% 33%,87% 59%,100% 100%,81% 90%,72% 75%,42% 60%,24% 62%);}
.jj-oriole-source {position:absolute;width:326.742%;max-width:none!important;height:auto;left:-65.169%;top:-46.575%;}
.jj-egrets {position:absolute;width:17.5%;height:auto;translate:-50% -50%;}
.jj-scene {transition:transform .75s ease-in-out;}
.jj-hint {transition:opacity .5s;}
.jj-hint-dismissed {opacity:0;}
.jj-gaze {position:absolute;inset:0;z-index:8;pointer-events:none;transition:opacity .6s;}
.jj-gaze ol {position:absolute;left:2%;top:32%;width:96px;margin:0;padding:8px 0;list-style:none;border-left:1px solid #c6b78399;background:linear-gradient(90deg,#e5e4d070,transparent);}
.jj-gaze li {position:relative;font:500 26px/1.8 var(--ui-font-body);padding-left:10px;white-space:nowrap;color:#20473bb3;text-shadow:0 1px 3px #fff4d9;}
.jj-gaze li::before {content:'·';margin-right:6px;}
.jj-gaze li.current {color:#ffe4a0;text-shadow:0 1px 4px #123f32;}
.jj-gaze-text {position:absolute;right:4%;top:6%;text-align:right;color:#fff1d1;text-shadow:0 2px 5px #14392f;}
.jj-gaze-text small {font:500 28px/1.4 var(--ui-font-body);}
.jj-gaze-text p {font:500 clamp(32px,2.6cqw,38px)/1.4 var(--wenjing-literary);margin:6px 0;color:#fff1d1;}
.jj-short {font:500 34px/1.4 var(--wenjing-literary);transition:opacity .4s;}
.jj-gaze-finished {opacity:0;}
/* Local literary font is not supplied; this stack has no network request. */
:root {--wenjing-literary:'Noto Serif TC','Songti TC','PMingLiU',serif;}

#jueju-world .ui-mark {font-family:var(--wenjing-literary);}

/* Parallelism: stationary paired words, one continuous illumination gesture. */
#jueju-world .jj-parallel-controls {inset:0;z-index:8;padding:0;border:0;background:#092c2866;color:#fff0d0;transition:opacity .4s;cursor:ew-resize;touch-action:none;}
.jj-mirror {position:absolute;left:10%;right:10%;top:31%;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;touch-action:none;outline-offset:18px;}
.jj-word-pair {display:grid;grid-template-rows:1fr 1fr;row-gap:64px;text-align:center;z-index:1;pointer-events:none;font:500 clamp(36px,3.1cqw,42px)/1.35 var(--wenjing-literary);color:#f7ecd3;}
.jj-word-pair span {white-space:nowrap;transition:color .15s;}
.jj-pair-seen {color:#e3d3a3;}
.jj-pair-current,.jj-mirror-complete .jj-word-pair {color:#ffe3a2;}
.jj-light-band {position:absolute;left:0;top:-28px;bottom:-28px;width:clamp(44px,5cqw,70px);translate:-50% 0;pointer-events:none;background:linear-gradient(90deg,transparent,#c3d7b733 20%,#eed69870 50%,#c3d7b733 80%,transparent);mask-image:linear-gradient(transparent,#000 15% 85%,transparent);}
.jj-light-band::after {content:'';position:absolute;left:50%;top:0;bottom:0;width:1px;background:#eed9a875;}
#jueju-world .jj-mirror-label {position:absolute;left:8%;right:8%;top:67%;margin:0;text-align:center;font:500 28px/1.4 var(--ui-font-body);color:#f2ddb1;transition:opacity .25s;}
#jueju-world .jj-sweep-count {position:absolute;right:5%;top:5%;margin:0;font:500 26px/1.4 var(--ui-font-body);color:#f3e6c6;}
.jj-mirror-fading {opacity:0;}
#jueju-world .jj-parallel-note {background:none;border:0;box-shadow:none;width:86%;text-shadow:0 2px 5px #12372b;}
#jueju-world .jj-parallel-note :is(strong,p) {font-family:var(--ui-font-body);}
/* Finale: poem first, then one equal-width row of concise appreciation points. */
.jj-finale .jj-scene::after {content:'';position:absolute;inset:0;background:#09272026;animation:jj-paper-in .4s both;}
#stage #jueju-world .jj-caption.jj-final {width:min(76vw,1100px,88cqw);max-width:none;max-height:calc(100% - 12px);overflow:visible;padding:8px 20px;display:flex;flex-direction:column;align-items:center;gap:6px;background:rgba(248,243,226,.84);border:1px solid #bda56c60;border-radius:3px;box-shadow:0 4px 18px #17392e20;color:#21473c;animation:jj-paper-in .4s both;}
#jueju-world .jj-poem-heading {position:static;display:block;width:100%;margin:0;padding:0;border:0;background:none;text-align:center;animation:jj-paper-in .4s .2s both;}
#stage #jueju-world .jj-final h2 {margin:0;font:500 clamp(36px,2.6cqw,40px)/1.1 var(--wenjing-literary);color:#21473c;}
#stage #jueju-world .jj-poem-heading p {margin:2px 0 0;font:500 clamp(26px,1.9cqw,28px)/1.1 var(--wenjing-literary);color:#315044;}
#stage #jueju-world .jj-caption.jj-final .jj-full-poem {display:grid;row-gap:20px;width:100%;margin:0;text-align:center;font:500 clamp(46px,3.25cqw,52px)/1.55 var(--wenjing-literary);letter-spacing:.06em;color:#183f39;white-space:nowrap;}
.jj-poem-couplet {animation:jj-paper-in .45s .55s both;}
.jj-poem-couplet:first-child {margin-top:-10px;}
.jj-poem-couplet:last-child {margin-bottom:-10px;animation-delay:1.1s;}
.jj-poem-couplet span {display:block;}
#jueju-world .jj-final .jj-summary {display:grid;grid-template-columns:repeat(4,minmax(0,1fr));align-items:start;gap:24px;width:100%;margin:0;text-align:center;animation:jj-paper-in .4s 1.7s both;}
.jj-summary section {min-width:0;}
#stage #jueju-world .jj-final .jj-summary strong {font:650 clamp(27px,1.9cqw,30px)/1.2 var(--ui-font-body);color:#24483d;}
#stage #jueju-world .jj-final .jj-summary p {margin:3px 0 0;font:500 clamp(22px,1.6cqw,25px)/1.45 var(--ui-font-body);letter-spacing:0;color:#345447;opacity:.88;}
#stage #jueju-world .jj-final button {flex:none;width:166px;min-width:150px;height:56px;min-height:54px;padding:5px 18px;margin:0;font:500 clamp(28px,2cqw,30px)/1.25 var(--ui-font-body);color:#315247;background:linear-gradient(110deg,#f8f1decc,#e2ebdbcc);border:1px solid #bca372;border-radius:4px;box-shadow:inset 0 0 0 2px #fff6e040;animation:jj-paper-in .3s 2s both;}
#jueju-world .jj-final button:hover {background:#f8f0d9;border-color:#cfb277;}
@keyframes jj-paper-in {from{opacity:0;}to{opacity:1;}}
@container(max-width:1000px){#jueju-world .jj-final .jj-summary{gap:12px;}}
@container(max-width:760px){#jueju-world .jj-final .jj-summary{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(prefers-reduced-motion:reduce){#jueju-world .jj-final *{animation:none!important;}}

/* Window gaze: two complete, registered images, no mountain object or mask. */
#jueju-world[data-state=WINDOW_XILING] {touch-action:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;}
#jueju-world[data-state=WINDOW_XILING] :is(.jj-scene,.jj-crossfade) {transform:scale(calc(1 + .015 * var(--jj-window-focus,0)));filter:brightness(calc(1 + .025 * var(--jj-window-focus,0)));transform-origin:60% 40%;transition:none;}
#jueju-world[data-state=WINDOW_XILING] .jj-surface {pointer-events:none;background:linear-gradient(90deg,rgba(6,28,22,calc(.035 * var(--jj-window-focus,0))) 0 20%,transparent 27% 86%,rgba(6,28,22,calc(.035 * var(--jj-window-focus,0))) 92%);}
#jueju-world[data-state=WINDOW_XILING] .jj-hint {font-size:clamp(26px,2cqw,28px);}
/* Reading stays below the window's mountain view; the original line is centered
   independently from its small kicker. The later concept uses a single line. */
#stage #jueju-world[data-state=POEM_LINE_3] .jj-caption {top:auto;bottom:2%;translate:-50% 0;width:min(900px,94%);padding:6px 14px;display:flex;align-items:center;justify-content:center;gap:18px;background:linear-gradient(90deg,#13362a00,#13362aca 12% 88%,#13362a00);border:0;box-shadow:none;}
#stage #jueju-world[data-state=POEM_LINE_3] .jj-caption small {position:absolute;left:24px;font:500 26px/1.3 var(--ui-font-body);margin:0;}
#stage #jueju-world[data-state=POEM_LINE_3] .jj-caption .jj-original {width:100%;margin:0;font-size:clamp(40px,3.1cqw,46px);text-align:center;}
#stage #jueju-world[data-state=POEM_LINE_3] .jj-caption strong {font:500 clamp(34px,2.6cqw,38px)/1.3 var(--wenjing-literary);}
#stage #jueju-world[data-state=POEM_LINE_3] .jj-caption p:not(.jj-original) {font:500 clamp(28px,2.2cqw,32px)/1.4 var(--ui-font-body);margin:0;}
