:root{font-family:"Noto Serif SC",Songti SC,serif;color:#f4eedf;background:#172126;font-synthesis:none;--paper:#efe5cf;--ink:#182326;--muted:#9aa8a6;--gold:#e4b962;--gold-soft:#f3d993;--line:rgba(241,225,189,.22);--panel:rgba(19,30,33,.86)}*{box-sizing:border-box}html,body,#app{width:100%;height:100%;margin:0;overflow:hidden}body{background:#172126}button{font:inherit;color:inherit}#app{display:flex;align-items:center;justify-content:center}.app-shell{width:100vw;height:100vh;position:relative;background:radial-gradient(circle at 52% 18%,#4e6668 0,#283c42 32%,#10191d 83%);overflow:hidden}.game-frame{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center}.game-frame canvas{display:block;max-width:100%;max-height:100%;object-fit:contain;filter:saturate(.78) contrast(1.03)}.paper-grain{pointer-events:none;position:absolute;top:0;right:0;bottom:0;left:0;opacity:.12;z-index:4;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.7' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.35'/%3E%3C/svg%3E");mix-blend-mode:soft-light}.vignette{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:3;background:linear-gradient(90deg,rgba(5,12,14,.46),transparent 28%,transparent 72%,rgba(5,12,14,.34)),linear-gradient(0deg,rgba(5,12,14,.55),transparent 38%,rgba(5,12,14,.25))}.title-layer,.overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:8;display:none;align-items:center;justify-content:center}.title-layer.is-visible,.overlay.is-visible{display:flex}.title-content{text-align:center;width:min(720px,92vw);position:relative;padding:2rem 1rem}.title-mark{font-size:.82rem;letter-spacing:.55em;color:var(--gold);margin-bottom:1rem}.title-content h1{font-size:clamp(3.8rem,9vw,7.4rem);font-weight:600;letter-spacing:.15em;margin:0;text-shadow:0 8px 22px rgba(0,0,0,.45)}.title-sub{color:#d7d4c8;font-size:1.08rem;letter-spacing:.22em;margin:.75rem 0 0}.title-figures{height:170px;position:relative;margin:1.4rem auto 1rem;max-width:440px}.ink-moon{width:160px;height:160px;border-radius:50%;position:absolute;left:50%;top:0;transform:translate(-50%);background:radial-gradient(circle at 36% 35%,#fff0c9 0 5%,#e9cd8e 41%,rgba(196,172,107,.35) 66%,transparent 68%);filter:blur(.1px);opacity:.88}.ink-libai,.ink-xiaomo{position:absolute;bottom:0;border-radius:50% 50% 30% 30%;background:linear-gradient(90deg,#070d0ef0,#233031b8);box-shadow:0 12px 24px #00000040}.ink-libai{width:76px;height:108px;left:41%}.ink-libai:before{content:"";position:absolute;width:46px;height:46px;background:#d7d1bd;border-radius:50%;left:15px;top:-19px;box-shadow:0 0 0 9px #151d1eb8}.ink-libai span,.ink-xiaomo span{position:absolute;bottom:20px;left:50%;transform:translate(-50%);color:#e6c267b3;font-size:1.25rem}.ink-xiaomo{width:38px;height:58px;left:31%;background:linear-gradient(90deg,#24393d,#192a2f)}.ink-xiaomo:before{content:"";position:absolute;width:28px;height:28px;background:#d8d1ba;border-radius:48% 52% 45% 45%;left:5px;top:-10px}.title-actions{display:flex;flex-direction:column;align-items:center;gap:.75rem}.ink-button{border:1px solid rgba(244,211,145,.6);border-radius:3px;padding:.82rem 1.5rem;background:linear-gradient(135deg,#c7953f,#e2bf70);color:#182327;cursor:pointer;box-shadow:0 8px 24px #00000047;transition:transform .2s,filter .2s;letter-spacing:.08em}.ink-button:hover{transform:translateY(-2px);filter:brightness(1.08)}.ink-button span{margin-left:.8rem}.ink-button.ghost{background:transparent;color:var(--gold-soft);box-shadow:none}.text-button{border:0;background:transparent;color:#e4decf;cursor:pointer;font-size:.94rem;padding:.2rem .5rem}.text-button:hover{color:var(--gold-soft)}.text-button.muted{color:#9aa8a6}.controls-note{font-size:.72rem;color:#a5b1ac;letter-spacing:.1em;margin-top:2rem}.hud{position:absolute;z-index:6;top:0;left:0;right:0;padding:1.25rem 1.6rem;display:flex;justify-content:space-between;align-items:flex-start;pointer-events:none}.hud-left,.hud-right{pointer-events:auto;background:linear-gradient(90deg,#0b1417c7,#0b141740);border-left:2px solid var(--gold);padding:.6rem .9rem;display:flex;gap:.7rem;align-items:center;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.hud-left{flex-direction:column;align-items:flex-start;gap:.12rem}.chapter-kicker,.eyebrow{font-size:.68rem;letter-spacing:.18em;color:var(--gold)}.hud-left strong{font-size:1.12rem}.objective{font-size:.76rem;color:#bdc4bd}.hud-right{border-left:0;border-right:2px solid var(--gold);font-size:.78rem}.poetry-meter{width:74px;height:5px;background:#536366;display:inline-block}.poetry-meter i{display:block;height:100%;background:var(--gold);transition:width .35s}.poem-count{border-left:1px solid var(--line);padding-left:.7rem}.hud-map,.icon-button{border:0;background:transparent;color:var(--gold-soft);cursor:pointer}.overlay{background:#08101285;-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px)}.map-sheet,.dialogue-card,.challenge-card,.reward-card{width:min(720px,92vw);max-height:88vh;overflow:auto;background:linear-gradient(145deg,#1c2b2cf5,#111b1ef5);border:1px solid rgba(225,196,128,.4);box-shadow:0 28px 90px #0000006b;padding:1.5rem}.map-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1rem}.map-head h2,.challenge-card h2,.reward-card h2{font-size:1.6rem;font-weight:500;margin:.35rem 0 0}.chapter-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem}.chapter-node{display:grid;grid-template-columns:44px 1fr 22px;align-items:center;text-align:left;gap:.7rem;border:1px solid rgba(228,207,162,.16);background:#f4eacf0a;color:#eee6d5;padding:.75rem;cursor:pointer}.chapter-node.open:hover{background:#e4b9621f;border-color:#e4b9628a}.chapter-node.locked{opacity:.38;cursor:not-allowed}.chapter-no{font-family:serif;font-size:1.2rem;color:var(--gold)}.chapter-node strong,.chapter-node small{display:block}.chapter-node small{color:#99a9a4;font-size:.75rem;margin-top:.2rem}.node-mark{color:var(--gold);text-align:right}.dialogue-card,.challenge-card,.reward-card{width:min(650px,92vw);text-align:left}.dialogue-tag{color:var(--gold);font-size:.7rem;letter-spacing:.2em}.dialogue-speaker{font-size:1.8rem;margin-top:.55rem;color:#f1dfb1}.dialogue-card p{font-size:1.38rem;line-height:1.8;color:#f2ecdf;margin:1rem 0 1.5rem}.challenge-card h2,.reward-card h2{margin:.5rem 0 1rem}.challenge-hint{color:#bdc8c2}.answer-row,.fragment-row{display:flex;flex-wrap:wrap;gap:.6rem;min-height:58px;padding:.75rem;border:1px dashed rgba(228,185,98,.35);margin:.75rem 0}.answer-empty{color:#758480;font-size:.9rem;align-self:center}.poem-chip{border:1px solid rgba(237,211,157,.4);background:#edd39d1a;color:#f5e9cf;padding:.66rem .9rem;cursor:pointer;border-radius:2px}.poem-chip:hover,.poem-chip.selected{background:#e4b96240;border-color:var(--gold)}.challenge-actions{display:flex;justify-content:space-between;margin-top:1rem}.reward-card{text-align:center}.reward-seal{width:54px;height:54px;margin:0 auto .8rem;border:2px solid #c95f42;color:#e58a67;display:grid;place-items:center;font-size:1.7rem;transform:rotate(-6deg);font-family:serif}.poem-original{font-size:1.5rem;line-height:2;color:#f4e9d0;margin:1rem 0}.poem-pinyin{color:#c4c8b8;line-height:1.8;font-size:.88rem}.gloss{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:1rem 0;margin:1rem 0;color:#e6e1d2;line-height:1.7}.gloss span{display:block;color:var(--gold);font-size:.72rem;letter-spacing:.2em;margin-bottom:.3rem}.provenance-note{color:#a9b6b0;font-size:.84rem;line-height:1.6}.touch-controls{display:none;position:absolute;z-index:7;bottom:1.1rem;left:1.1rem;right:1.1rem;justify-content:space-between;align-items:end;pointer-events:none}.touch-controls>div{display:grid;grid-template-columns:repeat(3,48px);gap:5px;margin-left:0}.touch-controls button{width:48px;height:48px;border-radius:50%;border:1px solid rgba(241,217,160,.45);background:#0f1c1fb8;color:#f1d795;pointer-events:auto}.touch-controls>button:first-child{position:absolute;left:53px;bottom:53px}.touch-interact{width:auto!important;border-radius:4px!important;padding:0 1rem}.touch-controls [data-input=down]{grid-column:2}@media(max-width:760px){.hud{padding:.7rem}.hud-right{gap:.4rem;font-size:.7rem}.hud-left strong{font-size:.92rem}.objective{font-size:.68rem}.hud-map{display:none}.chapter-list{grid-template-columns:1fr}.title-content h1{font-size:3.35rem}.title-sub{font-size:.82rem}.touch-controls{display:flex}.dialogue-card p{font-size:1.08rem}.game-frame canvas{width:100vw!important;height:auto!important}.controls-note{font-size:.63rem}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.library-sheet{width:min(860px,94vw)}.library-intro{color:#9daaa5;font-size:.8rem;margin:.55rem 0}.library-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.45rem;max-height:42vh;overflow:auto;padding-right:.2rem}.library-card{display:grid;grid-template-columns:34px 1fr;align-items:center;gap:.55rem;border:1px solid rgba(228,207,162,.16);background:#f4eacf0a;color:#eee6d5;padding:.65rem;text-align:left;cursor:pointer}.library-card:hover,.library-card.owned{background:#e4b9621c;border-color:#e4b9626b}.library-card strong,.library-card small{display:block}.library-card small{font-size:.67rem;color:#9ca9a3;margin-top:.18rem}.library-seal{display:grid;place-items:center;width:28px;height:28px;border:1px solid rgba(228,185,98,.6);color:var(--gold);border-radius:50%}.library-detail{margin-top:1rem;padding:1rem;border-top:1px solid var(--line);min-height:130px;color:#e8e2d3;line-height:1.7}.detail-placeholder{color:#7e8d88}.library-detail h3{font-size:1.3rem;color:var(--gold-soft);margin:.35rem 0}.library-original{font-size:1.15rem;line-height:1.9;margin:.6rem 0}.library-pinyin{font-size:.75rem;color:#a6b6b0;line-height:1.7}.library-detail small{display:block;color:#a4b0aa;font-size:.75rem;margin-top:.5rem}@media(max-width:760px){.library-grid{grid-template-columns:1fr}}.map-note{color:#9daaa5;font-size:.76rem;margin:.45rem 0 0}.chapter-node em{display:block;color:#84928e;font-size:.65rem;font-style:normal;margin-top:.28rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chapter-node.open em{color:#d7bf82}.title-secondary{display:flex;gap:.8rem;align-items:center}.context-hint{display:none;position:absolute;z-index:6;left:50%;bottom:1.25rem;transform:translate(-50%);padding:.58rem .9rem;border:1px solid rgba(228,185,98,.3);background:#0c181bc2;color:#e7deca;font-size:.75rem;letter-spacing:.06em;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);white-space:nowrap}.app-shell[data-mode=playing] .context-hint{display:block}.context-hint b{color:var(--gold-soft);font-weight:500}.help-card{width:min(760px,93vw);max-height:90vh;overflow:auto;padding:1.6rem;background:linear-gradient(145deg,#1d2c2dfa,#0f191cfa);border:1px solid rgba(229,197,128,.45);box-shadow:0 28px 90px #0000007a}.help-heading{display:flex;justify-content:space-between;gap:1rem}.help-heading h2{margin:.35rem 0;font-size:1.8rem;font-weight:500;color:#f4ead2}.help-heading p{margin:.2rem 0 1.1rem;color:#aebbb5}.help-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:.75rem}.help-step{min-height:190px;padding:1rem;background:#f0e0ba0d;border:1px solid rgba(229,197,128,.17)}.help-step{display:flex;flex-direction:column;gap:.7rem}.help-icon{width:46px;height:46px;display:grid;place-items:center;border:1px solid rgba(228,185,98,.65);border-radius:50%;color:var(--gold-soft);font-size:1.25rem}.help-step small{font-size:.65rem;color:var(--gold);letter-spacing:.13em}.help-step h3{font-weight:500;font-size:1.05rem;margin:.25rem 0}.help-step p{font-size:.82rem;line-height:1.75;color:#c7d0ca;margin:0}.help-controls{display:flex;justify-content:center;gap:1.2rem;flex-wrap:wrap;margin:1.1rem 0;color:#aebbb5;font-size:.76rem}.help-controls kbd{padding:.18rem .38rem;border:1px solid rgba(229,197,128,.35);background:#00000038;color:#f0d895;font-family:inherit}.help-start{display:block;margin:.6rem auto 0}@media(max-width:760px){.help-steps{grid-template-columns:1fr;gap:.45rem}.help-step{min-height:auto;display:grid;grid-template-columns:48px 1fr;padding:.75rem}.help-icon{grid-row:1/3}.help-card{padding:1rem}.help-heading h2{font-size:1.4rem}.help-heading p{font-size:.78rem}.help-controls{gap:.5rem;margin:.75rem 0}.context-hint{bottom:7rem;font-size:.65rem;max-width:86vw;white-space:normal;text-align:center}.title-secondary{gap:.35rem}}.learning-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:.45rem;margin:1rem 0 1.25rem}.learning-steps span{display:flex;align-items:center;gap:.42rem;padding:.55rem;border-bottom:1px solid rgba(228,185,98,.22);color:#7f908b;font-size:.75rem}.learning-steps span.active{color:#f2dfae;border-color:var(--gold)}.learning-steps span.done{color:#bfc9bd}.learning-steps i{width:22px;height:22px;display:grid;place-items:center;border:1px solid currentColor;border-radius:50%;font-style:normal;font-size:.68rem}.learning-question,.recitation-prompt{font-size:1.3rem;line-height:1.75;color:#f3ead7;margin:1.2rem 0}.recitation-prompt{padding:1rem;border-left:2px solid var(--gold);background:#e4b96212}.choice-list{display:grid;gap:.65rem}.choice-list.compact{grid-template-columns:repeat(3,1fr)}.learning-choice{min-height:52px;padding:.75rem 1rem;border:1px solid rgba(237,211,157,.28);background:#edd39d12;color:#f3ead6;text-align:left;cursor:pointer}.learning-choice:hover,.learning-choice:focus-visible{background:#e4b96233;border-color:var(--gold);outline:none}.choice-list.compact .learning-choice{text-align:center}.learning-feedback{color:#f0cc7c!important;font-size:.88rem!important;line-height:1.6!important;margin:.8rem 0 0!important}.imagery-lesson{text-align:center}.imagery-line{font-size:clamp(1.8rem,5vw,3rem);color:#f2d99a;margin:1.4rem 0 .5rem;letter-spacing:.12em}.imagery-lesson p{font-size:1.08rem}.learning-tip{color:#aebcb5;font-size:.78rem;margin:-.5rem 0 1.3rem}.chapter-node.focused{background:#e4b96229;border-color:#e4b962b8;box-shadow:inset 3px 0 var(--gold)}.chapter-detail{display:flex;justify-content:space-between;gap:1rem;align-items:center;margin-top:1rem;padding:1rem;border-top:1px solid var(--line);background:#eedaaa0a}.chapter-detail h3{margin:.3rem 0;font-size:1.25rem;color:var(--gold-soft)}.chapter-detail p{margin:.25rem 0 .4rem;color:#c4cec8;font-size:.84rem;line-height:1.6}.chapter-detail small,.poem-chapter-link{color:#9eada7;font-size:.74rem}.chapter-detail-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.45rem;min-width:260px}.library-all{margin:-.5rem 0 .65rem}.poem-chapter-link{padding:.45rem .6rem;border-left:2px solid var(--gold);background:#e4b9620f}.detail-map-button{display:block;margin-top:1rem}.library-sheet{max-height:92vh;overflow:auto}@media(max-width:760px){.learning-steps span{padding:.4rem .2rem;font-size:.63rem;flex-direction:column;text-align:center}.learning-question,.recitation-prompt{font-size:1.05rem}.choice-list.compact{grid-template-columns:1fr}.chapter-detail{align-items:stretch;flex-direction:column}.chapter-detail-actions{min-width:0;justify-content:stretch}.chapter-detail-actions .ink-button{flex:1}.map-sheet{max-height:94vh;padding:1rem}.chapter-list{max-height:48vh;overflow:auto}.library-detail{padding:.75rem}.imagery-line{letter-spacing:.06em}}@media(max-width:760px){.hud{gap:.35rem;flex-wrap:wrap}.hud-left{max-width:56%;padding:.42rem .55rem}.hud-right{margin-left:auto;padding:.38rem .48rem;gap:.3rem;flex-wrap:wrap;justify-content:flex-end;max-width:44%}.hud-right .hud-map{display:inline-block;padding:.2rem;font-size:.68rem}.hud-right .poetry-meter,.hud-right>span:not(.poem-count){display:none}.hud-right .poem-count{border-left:0;padding-left:0;width:100%;text-align:right;font-size:.65rem}}@media(max-width:760px){.touch-controls{display:none}.app-shell[data-mode=playing] .touch-controls{display:flex}}
