:root{--paper:#f7efdf;--paper-2:#efe3cb;--ink:#2b2622;--ink-soft:#5e554c;--vermilion:#c8402f;--vermilion-dark:#9e2f22;--gold:#d9a441;--jade:#3f8f8a;--line:#2b262224;--shadow:0 10px 40px #1e140a40;--brush:"Ma Shan Zheng", "Kaiti SC", "STKaiti", "KaiTi", serif;--serif:"Noto Serif SC", "Songti SC", Georgia, serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body{height:100%;color:var(--ink);font-family:var(--serif);background:#e9dcc2;margin:0;overflow:hidden}body{-webkit-tap-highlight-color:transparent}#stage{touch-action:manipulation;width:100%;height:100%;display:block;position:fixed;inset:0}.hidden{display:none!important}button{font:inherit;color:inherit;cursor:pointer}body[data-lang=zh] .en,body[data-lang=zh] [data-show=en],body[data-lang=en] #say-zh{display:none}body[data-lang=en] .say.en{color:var(--ink);font-size:1.15rem}.btn{border:1.5px solid var(--ink);background:var(--paper);border-radius:999px;min-height:48px;padding:.7rem 1.4rem;font-size:1rem;font-weight:600;transition:transform .12s,background .2s,box-shadow .2s}.btn:hover{box-shadow:0 4px 0 var(--ink);transform:translateY(-1px)}.btn:active{box-shadow:none;transform:translateY(1px)}.btn.primary{background:var(--vermilion);color:#fff8ec;border-color:var(--vermilion-dark)}.btn.primary:hover{box-shadow:0 4px 0 var(--vermilion-dark)}.btn.ghost{background:0 0}.btn.big{padding:.9rem 2.2rem;font-size:1.25rem}.btn.small{min-height:38px;padding:.35rem 1rem;font-size:.9rem}.btn:focus-visible,.icon:focus-visible,.choice:focus-visible,.chip:focus-visible{outline:3px solid var(--gold);outline-offset:2px}.cover{pointer-events:none;place-items:end center;padding:16px 16px max(6vh,24px);display:grid;position:fixed;inset:0}.cover-inner{pointer-events:auto;text-align:center;background:color-mix(in srgb, var(--paper) 88%, transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid var(--line);width:100%;max-width:560px;box-shadow:var(--shadow);border-radius:24px;padding:1.4rem 1.4rem 1.2rem}.eyebrow{letter-spacing:.08em;color:var(--ink-soft);margin:0;font-size:.85rem}.cover-title{font-family:var(--brush);margin:.3rem 0 .4rem;font-size:clamp(3rem,10vw,4.8rem);font-weight:400;line-height:1}.cover-title span:first-child{color:var(--vermilion)}.cover-sub{max-width:30em;color:var(--ink-soft);margin:0 auto 1rem;line-height:1.6}.cover-actions{flex-wrap:wrap;justify-content:center;gap:.6rem;display:flex}.cover-actions .big{flex-basis:100%}.lang-switch{background:var(--paper-2);border-radius:999px;gap:4px;margin-top:1rem;padding:4px;display:inline-flex}.lang-switch button{background:0 0;border:0;border-radius:999px;min-height:36px;padding:.4rem .9rem;font-size:.9rem}.lang-switch button[aria-pressed=true]{background:var(--ink);color:var(--paper)}.hud{padding:max(12px, env(safe-area-inset-top)) 16px 0;pointer-events:none;justify-content:space-between;align-items:center;gap:8px;display:flex;position:fixed;top:0;left:0;right:0}.hud>*{pointer-events:auto}.chip{border:1px solid var(--line);background:color-mix(in srgb, var(--paper) 92%, transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:999px;align-items:baseline;gap:.6rem;max-width:60vw;min-height:44px;padding:.45rem 1rem;display:inline-flex;box-shadow:0 4px 16px #0000001f}.chip .book{color:var(--vermilion);white-space:nowrap;font-size:.8rem;font-weight:600}.chip .title{font-family:var(--brush);white-space:nowrap;text-overflow:ellipsis;font-size:1.3rem;overflow:hidden}.hud-right{align-items:center;gap:6px;display:flex}.icon{border:1px solid var(--line);background:color-mix(in srgb, var(--paper) 92%, transparent);border-radius:50%;place-items:center;width:44px;height:44px;font-weight:700;display:grid;box-shadow:0 4px 16px #0000001f}.icon svg{fill:currentColor;width:22px;height:22px}.icon[aria-pressed=false]#btn-voice .wave{opacity:.2}.icon[aria-pressed=true]#btn-auto{background:var(--vermilion);color:#fff;border-color:var(--vermilion-dark)}.seal-count{background:color-mix(in srgb, var(--paper) 92%, transparent);border:1px solid var(--line);border-radius:999px;align-items:center;gap:6px;height:44px;padding:0 .8rem;display:flex;box-shadow:0 4px 16px #0000001f}.seal-count .flower{background:radial-gradient(circle,#fff6c0 20%,#f2a0b8 22% 60%,#0000 62%);border-radius:50%;width:18px;height:18px}.seal-count.bump{animation:.6s bump}@keyframes bump{40%{transform:scale(1.25)}}.dialog{left:50%;bottom:max(16px, env(safe-area-inset-bottom));background:var(--paper);border:1.5px solid var(--ink);width:min(880px,100% - 32px);box-shadow:var(--shadow);background-image:radial-gradient(circle at 10% 0,#d9a4411f,#0000 40%);border-radius:20px;padding:1.5rem 1.4rem 1rem;position:fixed;transform:translate(-50%)}.speaker{background:var(--vermilion);color:#fff8ec;font-family:var(--brush);border:1.5px solid var(--vermilion-dark);border-radius:8px;padding:.1rem .9rem;font-size:1.2rem;position:absolute;top:-16px;left:20px}.speaker[data-who=guide]{background:var(--jade);border-color:#2c6763}.speaker[data-who=narrator]{background:var(--ink);border-color:var(--ink)}.say{min-height:1.7em;font-size:1.25rem;line-height:1.7}.say.en{color:var(--ink-soft);margin-top:.25rem;font-size:.98rem;line-height:1.55}.next{color:var(--vermilion);background:0 0;border:0;min-height:40px;margin:.3rem -.4rem -.4rem auto;padding:.4rem .6rem;font-size:1rem;font-weight:700;animation:1.4s ease-in-out infinite nudge;display:block}@keyframes nudge{50%{transform:translate(4px)}}.choices{flex-wrap:wrap;gap:.6rem;margin-top:.9rem;display:flex}.choices:empty{display:none}.choice{text-align:left;border:1.5px solid var(--ink);background:#fffaf0;border-radius:14px;flex-direction:column;flex:220px;gap:2px;min-height:56px;padding:.75rem 1rem;font-size:1.08rem;font-weight:600;transition:transform .12s,box-shadow .15s,background .2s;display:flex}.choice small{color:var(--ink-soft);font-size:.88rem;font-weight:400}.choice:hover{box-shadow:0 4px 0 var(--ink);background:#fff3d6;transform:translateY(-2px)}.choice.auto-pick{box-shadow:0 0 0 4px var(--gold);background:#ffe7b0}.hint{border:1px dashed var(--gold);background:#fff1c7;border-radius:999px;align-items:center;gap:.5rem;margin-top:.8rem;padding:.35rem .9rem .35rem .6rem;font-weight:600;display:inline-flex}.hint svg{width:22px;height:22px;fill:var(--vermilion);animation:1.2s ease-in-out infinite tap}@keyframes tap{50%{transform:translateY(-3px)scale(.92)}}.lesson{background:#2b26222e;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.lesson-card{background:var(--paper);border:1.5px solid var(--ink);width:min(720px,100%);max-height:calc(100vh - 32px);box-shadow:var(--shadow);background-image:linear-gradient(90deg,#0000 0 22px,#c8402f14 22px 24px,#0000 24px);border-radius:22px;padding:1.6rem 1.6rem 1.3rem;animation:.45s cubic-bezier(.2,.8,.2,1) rise;position:relative;overflow:auto}@keyframes rise{0%{opacity:0;transform:translateY(20px)scale(.98)}}.lesson-book{color:var(--vermilion);letter-spacing:.05em;margin:0;font-size:.9rem;font-weight:600}.lesson-title{font-family:var(--brush);margin:.1rem 0 .6rem;font-size:2.3rem;font-weight:400}.lesson-title .en{font-family:var(--serif);color:var(--ink-soft);margin-left:.5rem;font-size:1rem}.classic{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:repeat(2,max-content);justify-content:center;gap:.3rem 2.4rem;padding:1rem 0 .6rem;display:grid}.classic .phrase{opacity:.25;gap:.1em;transition:opacity .4s,transform .4s;display:flex}.classic .phrase.on{opacity:1}.classic .phrase.reading ruby{color:var(--vermilion)}.classic ruby{font-family:var(--brush);ruby-position:over;font-size:clamp(2rem,6vw,2.8rem);line-height:1.2}.classic rt{font-family:var(--serif);color:var(--ink-soft);letter-spacing:0;font-size:.8rem}.no-pinyin .classic rt{visibility:hidden}.lesson-tools{justify-content:center;align-items:center;gap:1rem;margin:.8rem 0 .2rem;display:flex}.toggle{align-items:center;gap:.35rem;font-size:.9rem;display:inline-flex}.toggle input{width:18px;height:18px;accent-color:var(--vermilion)}.lesson-section h3{color:var(--vermilion);margin:1rem 0 .3rem;font-size:.95rem}.lesson-section.try{background:#fff4d8;border-radius:14px;margin-top:1rem;padding:.2rem 1rem .6rem}.bi{margin:.2rem 0;line-height:1.7}.bi .en{color:var(--ink-soft);margin-top:.15rem;font-size:.93rem;line-height:1.55;display:block}body[data-lang=en] .bi .zh{display:none}body[data-lang=en] .bi .en{color:var(--ink);font-size:1rem}.note{color:var(--ink-soft);font-size:.9rem}.note:empty,.source:empty{display:none}.source{color:var(--ink-soft);margin-top:.8rem;font-size:.8rem;font-style:italic}.lesson-actions{flex-wrap:wrap;justify-content:flex-end;gap:.6rem;margin-top:1.2rem;display:flex}.ending-card{text-align:center}.seal{background:var(--vermilion);color:#fff4e0;width:96px;height:96px;font-family:var(--brush);box-shadow:inset 0 0 0 4px #fff4e0, inset 0 0 0 6px var(--vermilion);border-radius:12px;place-items:center;margin:0 auto;font-size:1.6rem;line-height:1.05;display:inline-grid;transform:rotate(-4deg)}.ending-card .lesson-actions{justify-content:center}.chapters-card{padding-top:1.2rem}.close{background:0 0;border:0;width:44px;height:44px;font-size:2rem;line-height:1;position:absolute;top:10px;right:12px}.book-group h3{font-family:var(--brush);color:var(--vermilion);margin:.8rem 0 .4rem;font-size:1.5rem;font-weight:400}.book-group h3 small{font-family:var(--serif);color:var(--ink-soft);margin-left:.4rem;font-size:.85rem}.chapter-grid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:.5rem;display:grid}.chapter-btn{text-align:left;border:1px solid var(--line);background:#fffaf0;border-radius:12px;flex-direction:column;min-height:56px;padding:.6rem .8rem;display:flex}.chapter-btn:hover{border-color:var(--ink)}.chapter-btn b{font-family:var(--brush);font-size:1.3rem;font-weight:400}.chapter-btn span{color:var(--ink-soft);font-size:.8rem}.chapter-btn.done b:after{content:" ✓";color:var(--jade);font-family:var(--serif);font-size:.9rem}.fade{background:var(--paper);opacity:0;pointer-events:none;transition:opacity .5s;position:fixed;inset:0}.fade.on{opacity:1}@media (width<=640px){.say{font-size:1.08rem}.dialog{padding:1.3rem 1rem .8rem}.choice{flex-basis:100%;min-height:50px}.chip .book,.seal-count{display:none}.lesson-card{padding:1.2rem 1rem 1rem}.classic{gap:.2rem 1.2rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}.cover-sub .en{font-size:.9rem;display:block}body[data-lang=en] .cover-sub .zh{display:none}@media (width>=900px){.cover{place-items:center start;padding-left:5vw}.cover-inner{max-width:460px}}.cover-sub,.say,.bi{text-wrap:pretty}.btn-en{opacity:.85;font-size:.72em;font-weight:400;line-height:1.2;display:block}.btn{line-height:1.25}@media (width<=640px){.cover-inner{border-radius:20px;padding:1rem 1rem .9rem}.cover .eyebrow{display:none}.cover-title{margin-top:0;font-size:3rem}.cover-sub{margin-bottom:.7rem;font-size:.92rem}.cover-sub .en{font-size:.82rem}.cover-actions{gap:.45rem}.cover-actions .btn{flex:100%;min-height:48px;padding:.5rem 1rem}.lang-switch{margin-top:.7rem}}body[data-lang=en] .chip .title,body[data-lang=en] .ending-card .lesson-title,body[data-lang=en] .speaker{font-family:var(--serif);font-size:1.05rem;font-weight:600}body[data-lang=en] .ending-card .lesson-title{font-size:1.8rem}#btn-music .slash{opacity:0}#btn-music[aria-pressed=false] .slash{opacity:1}#btn-music[aria-pressed=false] path:not(.slash),#btn-music[aria-pressed=false] circle{opacity:.35}#btn-music svg path:first-child{fill:none;stroke:currentColor;stroke-width:2px}.ios-tip{color:var(--ink-soft);margin:.6rem 0 0;font-size:.8rem}.ios-tip .en{display:block}body[data-lang=zh] .ios-tip .en,body[data-lang=en] .ios-tip .zh{display:none}.tap-btn{margin:.7rem 0 0 .5rem}body.no-3d{background:radial-gradient(60% 30% at 70% 38%,#ffecbee6,#0000 70%),linear-gradient(#a9cfd8 0%,#f6ead2 45%,#cdd9b0 70%,#9dbb7a 100%)}body.no-3d #stage{display:none}.no3d{top:calc(max(12px, env(safe-area-inset-top)) + 54px);border:1px dashed var(--gold);background:#fff4d8;border-radius:12px;width:min(560px,100% - 32px);padding:.5rem .8rem;font-size:.85rem;line-height:1.5;position:fixed;left:50%;transform:translate(-50%);box-shadow:0 4px 16px #0000001a}.no3d .en{color:var(--ink-soft);display:block}body[data-lang=zh] .no3d .en,body[data-lang=en] .no3d .zh{display:none}
