:root{--sand:#e2ddd1;--ink:#252722;--muted:#797a70;--accent:#9e5638;--line:#a9a899;--ease:cubic-bezier(.2,.8,.2,1)}*{box-sizing:border-box}body{margin:0;background:var(--sand);color:var(--ink);font-family:"Segoe UI","Microsoft YaHei",sans-serif;display:flex;min-height:100vh}button,input{font:inherit}button{cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}button:focus-visible{outline:3px solid var(--accent);outline-offset:5px}button:disabled{cursor:default}.landscape{position:fixed;inset:0 auto 0 0;width:38%;overflow:hidden;background:#807968}.dune{position:absolute;inset:-3%;background:url("/static/assets-desert.fe3126365d7d97ea.webp") 18% center/cover no-repeat;animation:drift 38s ease-in-out infinite alternate;filter:saturate(.72)}.landscape:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 70%,#e2ddd130),linear-gradient(0deg,#1c211d80,transparent 40%,#20251b15)}.haze{position:absolute;inset:25% -40% -15%;background:radial-gradient(ellipse,#e9deba24,transparent 65%);animation:haze 19s ease-in-out infinite alternate}.dust{position:absolute;inset:0;background-image:radial-gradient(#fff5 1px,transparent 1.8px),radial-gradient(#eee5 1px,transparent 1.8px);background-size:113px 137px,191px 211px;opacity:.2;animation:sand 27s linear infinite}.identity,.land-caption{position:absolute;z-index:1;color:#edeade;left:10%;right:8%}.identity{top:5%;font-size:20px;letter-spacing:5px}.identity span{display:block;font-size:9px;letter-spacing:2px;margin-top:12px;opacity:.6}.land-caption{bottom:7%;font-size:17px;letter-spacing:2px;line-height:2}.land-caption small{display:block;font-size:9px;letter-spacing:2px;opacity:.6;margin-top:12px}.line{display:block;width:35px;border-top:1px solid #e8e4d0;margin-bottom:20px}main{position:relative;margin-left:38%;width:62%;padding:34px clamp(28px,5vw,85px) 22px}header,footer{display:flex;justify-content:space-between;align-items:center;gap:16px;color:var(--muted);font-size:12px}.preview-label{letter-spacing:1.5px;display:flex;align-items:center;gap:8px}.preview-label i{width:5px;height:5px;border-radius:50%;background:var(--accent)}.motion-toggle{font-size:11px;display:flex;align-items:center;gap:5px;cursor:pointer}.motion-toggle input{accent-color:var(--accent);width:15px;height:15px}.lesson{max-width:640px;margin:44px auto 20px;animation:arrive .75s var(--ease) both}.eyebrow{font-size:12px;letter-spacing:2px;color:#62665d;display:flex;gap:14px;align-items:center}.eyebrow>span:not(.demo-label){opacity:.4}.demo-label{font-size:10px;letter-spacing:1px;border:1px solid #bcbbae;padding:3px 7px}h1{font-size:clamp(30px,3.5vw,50px);font-weight:500;line-height:1.35;letter-spacing:2px;margin:18px 0 9px}h1 span{color:#4e5147}.intro{color:var(--muted);font-size:13px;margin:0 0 22px}.audio-row{display:flex;align-items:center;gap:23px;margin:18px 0 30px}.play{position:relative;border:0;border-radius:50%;width:70px;height:70px;background:var(--ink);display:grid;place-items:center;color:var(--sand);transition:transform .22s var(--ease),background .25s}.play:hover{background:#393d32;transform:translateY(-2px)}.play:active{transform:scale(.93)}.play svg{width:29px;height:29px;fill:currentColor}.waves{fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round}.ring{position:absolute;inset:-8px;border:1px solid var(--accent);border-radius:50%;opacity:0}.playing .ring{animation:pulse 1.35s ease-out infinite}.audio-label{font-size:13px;margin-bottom:8px;display:flex;align-items:center;gap:12px}.text-button{background:none;border:0;padding:6px 0;color:#64695b;font-size:12px;transition:color .2s,transform .2s}.text-button:hover{color:var(--accent)}.text-button:active{transform:translateY(1px)}.dot{color:#a8a99b;padding:0 10px}.waveform{display:flex;gap:3px;height:15px;align-items:center;opacity:.3}.waveform i{height:3px;width:2px;background:var(--accent);border-radius:2px}.playing .waveform{opacity:1}.playing .waveform i{animation:wave .6s ease-in-out infinite alternate}.playing .waveform i:nth-child(2){animation-delay:-.2s}.playing .waveform i:nth-child(3){animation-delay:-.4s}.playing .waveform i:nth-child(4){animation-delay:-.1s}.exercise-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px;gap:8px}.meaning-label{display:block;font-size:10px;color:var(--muted);margin-bottom:4px;letter-spacing:2px}.exercise-head strong{font-weight:500;font-size:20px}.modes{display:flex;border-bottom:1px solid #b9b9aa;gap:16px}.modes button{border:0;background:none;font-size:11px;color:var(--muted);padding:9px 1px;border-bottom:2px solid transparent;transform:translateY(1px)}.modes button[aria-pressed=true]{color:var(--ink);border-color:var(--accent)}.slots{display:flex;gap:12px}.slot{position:relative;flex:1;min-width:0;max-width:114px;height:104px;border:1px solid #9e9f8f;border-radius:3px;background:#efede430;font-size:49px;font-weight:400;color:var(--ink);transition:border-color .2s,background .2s,transform .25s,box-shadow .25s}.slot.selected{border-color:var(--accent);background:#f2eee490;box-shadow:0 4px 20px #5f58360a;transform:translateY(-3px)}.slot.blank.selected:after{content:"";position:absolute;width:1px;height:42%;left:50%;top:29%;background:var(--accent);animation:cursor 1.4s steps(1) infinite}.slot.locked{color:#6a6d60;background:transparent}.slot.entered{animation:letter-in .35s var(--ease)}.slot.wrong{border-color:#9a4935;background:#b9674a13}.slot.correct{border-color:#6b7a57;background:#7f916513;animation:settle .45s var(--ease) both}.under-slots{display:flex;justify-content:space-between;margin-top:10px;max-width:492px}.feedback{min-height:42px;font-size:12px;line-height:1.8;color:var(--muted);padding-top:9px}.feedback.error{color:#964b36}.feedback.good{color:#536345}.keys{display:grid;grid-template-columns:repeat(6,1fr);gap:9px;margin:9px 0 20px;max-width:570px}.keys.full{grid-template-columns:repeat(9,1fr);gap:6px}.key{height:57px;border:1px solid #afb0a0;border-radius:3px;font-size:26px;background:#eeeae13b;transition:transform .2s,background .2s,box-shadow .2s}.key:hover{transform:translateY(-3px);background:#f2eee6;box-shadow:0 6px 12px #4b4c3910}.key:active{transform:translateY(1px) scale(.95)}.keys.full .key{height:44px;font-size:20px}.check{width:100%;max-width:570px;display:flex;justify-content:space-between;align-items:center;background:var(--ink);color:#e7e3d7;border:0;border-radius:3px;padding:18px 24px;font-size:15px;letter-spacing:2px;transition:background .25s,transform .2s}.check:hover{background:#3b4033}.check:active{transform:scale(.99)}.check .arrow{font-size:22px;transition:transform .3s}.check:hover .arrow{transform:translate(3px,-3px)}.check.done{background:#505b44}.progress-note{display:flex;align-items:center;gap:15px;margin-top:20px;color:#898b7e;font-size:10px}.trail{display:flex;align-items:center;gap:4px}.trail i{width:5px;height:5px;border-radius:50%;border:1px solid #9fa18e;transition:background .5s}.trail i.lit{background:#9e5638;border-color:#9e5638}.trail b{height:1px;width:21px;background:#b8baa9}.success-detail{margin:16px 0 0;font-size:22px;animation:arrive .4s var(--ease)}.success-detail span{font-size:16px;margin-left:10px;color:#696e5c}.success-detail small{display:block;font-size:12px;margin-top:9px;color:#646b57}footer{max-width:640px;margin:30px auto 0;font-size:10px;padding-top:15px;border-top:1px solid #c4c4b7}footer .text-button{font-size:10px}.fly-letter{position:fixed;pointer-events:none;z-index:50;display:grid;place-items:center;font-size:36px;color:var(--accent)}body.reduced *,body.reduced *:before,body.reduced *:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}body.reduced .slot.selected{transform:none}body.reduced .key:hover{transform:none}
@keyframes drift{to{transform:scale(1.025) translate(-1%,.6%)}}@keyframes haze{to{transform:translate(10%,-2%);opacity:.4}}@keyframes sand{to{background-position:180px -50px,100px -20px}}@keyframes arrive{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%{opacity:.5;transform:scale(.97)}100%{opacity:0;transform:scale(1.22)}}@keyframes wave{to{height:14px}}@keyframes cursor{50%{opacity:0}}@keyframes letter-in{0%{transform:translateY(-9px);opacity:.3}70%{transform:translateY(1px)}100%{transform:translateY(0);opacity:1}}@keyframes settle{50%{transform:translateY(-4px)}100%{transform:translateY(0)}}
@media(max-width:1050px){.landscape{width:30%}main{margin-left:30%;width:70%;padding:26px 38px 18px}.lesson{margin-top:30px}h1{font-size:36px}.slot{height:88px;font-size:42px}.audio-row{margin-bottom:24px}.land-caption{font-size:13px}.identity{font-size:16px;letter-spacing:3px}}
@media(max-width:680px){body{display:block}.landscape{position:relative;width:100%;height:190px}.dune{background-position:20% 38%}.identity{top:22px;left:25px;font-size:15px}.land-caption{bottom:16px;left:auto;right:24px;font-size:11px}.land-caption .line,.land-caption small{display:none}main{margin:0;width:100%;padding:22px 24px}.lesson{margin-top:28px}h1{font-size:33px;line-height:1.3}.audio-row{margin-top:20px;margin-bottom:24px}.play{width:64px;height:64px}.slot{height:78px;font-size:38px}.slots{gap:9px}.key{height:50px}.exercise-head strong{font-size:18px}.modes{gap:11px}.keys.full{grid-template-columns:repeat(7,1fr)}footer{margin-top:24px}.landscape:after{background:linear-gradient(0deg,#21251c70,transparent 75%)}}
@media(prefers-reduced-motion:reduce){body:not(.motion-override) *,body:not(.motion-override) *:before,body:not(.motion-override) *:after{animation:none!important;transition:none!important}}
[hidden]{display:none!important}
#meaning.revealed{display:inline-block;animation:meaning-reveal .8s ease-out both}
.playing .ring{border-width:2px;animation:pulse .8s ease-out infinite}
.playing .play{box-shadow:0 0 0 9px #9e56381c}
.waveform{height:24px;gap:4px}.waveform i{width:3px}.playing .waveform i{animation:wave .35s ease-in-out infinite alternate}
.slot.entered{animation:letter-in .65s var(--ease)}.slot.correct{animation:settle .75s var(--ease) both}
.dune{animation-duration:17s}.haze{animation-duration:11s}
@keyframes drift{to{transform:scale(1.07) translate(-2%,1.2%)}}
@keyframes pulse{from{opacity:.8;transform:scale(.95)}to{opacity:0;transform:scale(1.65)}}
@keyframes wave{to{height:23px}}
@keyframes letter-in{0%,45%{opacity:0;transform:translateY(-12px) scale(.88)}75%{opacity:1;transform:translateY(5px) scale(1.08)}100%{opacity:1;transform:translateY(0) scale(1)}}
@keyframes settle{45%{transform:translateY(-13px) scale(1.06);background:#899c6a44}100%{transform:translateY(0) scale(1)}}
@keyframes meaning-reveal{from{opacity:0;transform:translateY(8px);filter:blur(5px)}to{opacity:1;transform:translateY(0);filter:blur(0)}}
/* User-approved direction: familiar Chinese screen fonts and readable sizes. */
body{font-family:"Microsoft YaHei","PingFang SC","Noto Sans CJK SC",sans-serif;font-size:15px}
h1{font-size:36px;font-weight:600;line-height:1.45;letter-spacing:0;margin-bottom:22px}
.identity{font-size:20px;font-weight:500;letter-spacing:0}
.preview-label,.eyebrow,.demo-label,.meaning-label{letter-spacing:0}
.preview-label{font-size:13px}.eyebrow{font-size:14px}.demo-label{font-size:12px}
.motion-toggle{font-size:13px}.audio-label{font-size:15px}.text-button{font-size:14px}
.meaning-label{font-size:13px}.exercise-head strong{font-size:22px;font-weight:500}
.modes button{font-size:13px}.feedback{font-size:14px;min-height:48px}
.check{font-size:16px;font-weight:500;letter-spacing:0}.progress-note{font-size:12px}
.slot,.key,.success-detail{font-family:Arial,Helvetica,sans-serif}
.success-detail small{font-family:"Microsoft YaHei","PingFang SC",sans-serif;font-size:14px}
footer,footer .text-button{font-size:12px}
@media(max-width:680px){h1{font-size:29px}.motion-toggle,.preview-label{font-size:12px}.modes button{font-size:12px}.feedback{font-size:13px}footer,footer .text-button{font-size:11px}}

/* Five-word lesson: touch targets, stage markers and real session results. */
main{min-width:0}.lesson{margin-top:30px}h1{font-size:32px;margin:16px 0}.audio-row{margin-bottom:24px}.stages{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;color:#797a70}.stage{padding:8px 0;border-bottom:2px solid transparent}.stage.active{color:#252722;border-color:#9e5638}.exercise-head{align-items:flex-end}.slot{max-width:114px;height:90px;font-size:42px}.slot.correct{color:#252722}.keys.full{grid-template-columns:repeat(7,1fr)}.keys.full .key{min-height:44px}.text-button{min-height:44px}button:disabled{cursor:default}.key:disabled{opacity:.55;transform:none}.success-detail .answer-word{font-weight:500}.success-detail .answer-word span{font-size:24px;margin:0;color:inherit}.success-detail .answer-word .focus-sound{color:#8c492e;border-bottom:2px solid #a75d3d}.success-detail small{line-height:1.65}.feedback{min-height:55px}.result-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:28px 0}.result-stats strong{display:block;font:500 28px Arial;color:#525d42}.result-stats span{display:block;font-size:12px;color:#65695c;line-height:1.7;margin-top:9px}.result-label{font-size:13px;color:#64695b;margin:24px 0 6px}.word-list{font:22px/1.8 Arial,"Microsoft YaHei",sans-serif;margin:0}.summary details{margin-top:24px}.summary summary{cursor:pointer;min-height:44px;padding:10px 0;font-size:14px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:12px}th,td{text-align:left;padding:10px 6px;border-bottom:1px solid #c4c4b7}th{font-weight:500}.summary-note{font-size:13px;line-height:1.8;color:#64695b;margin:22px 0}.summary-actions{display:flex;justify-content:space-between;margin-top:12px}footer{gap:8px;line-height:1.6}footer>span{max-width:75%}
@media(max-width:680px){.landscape{height:130px}main{padding:20px}.lesson{margin-top:22px}h1{font-size:28px}.slot{height:72px;font-size:34px}.stages{gap:9px;font-size:11px}.exercise-head{gap:12px}.audio-row{margin:16px 0 18px}.keys.full{grid-template-columns:repeat(6,1fr)}.feedback{font-size:13px}.result-stats strong{font-size:24px}.result-stats{gap:9px}.mouse-reward{height:150px;bottom:0}.mouse-hop{width:135px;height:135px}footer,footer .text-button{font-size:11px}}
@media(min-width:681px) and (max-width:1050px){main{padding-left:26px;padding-right:26px}.stages{font-size:11px;gap:8px}.slot{height:76px}.lesson{margin-top:24px}}

/* Six-pose gait plus perspective path. The runner is confined to the landscape. */
.check.done{background:#46583c;box-shadow:0 4px 16px #38462d24;font-size:18px;font-weight:600;min-height:60px}
.check.done .arrow{display:grid;place-items:center;width:34px;height:34px;border:1px solid #dfe8d480;border-radius:50%;font-size:25px;line-height:1}
.check:hover .arrow{transform:translateX(4px)}
/* Native keyboard input; decorative cells never expose answer letters. */
.input-label{display:block;font-size:13px;color:#666b60;margin:22px 0 10px}
.typing-area{position:relative;max-width:570px}.typing-area .slots{margin:0;pointer-events:none;display:flex}.typing-area .slot{display:grid;place-items:center;flex:1;min-width:0}
#wordInput{position:absolute;inset:0;width:100%;height:100%;border:0;outline:0;background:transparent;color:transparent;caret-color:transparent;font-size:36px;letter-spacing:36px;padding:0;opacity:1;-webkit-text-fill-color:transparent;touch-action:manipulation;border-radius:3px}
#wordInput::selection{background:#9e563822}#wordInput:focus-visible{outline:2px solid #9e563855;outline-offset:4px}.typing-area:focus-within .slot.selected{border-color:#9e5638}
.feedback{min-height:52px;margin-bottom:16px}
/* The mouse jumps toward the viewer and throws painterly flowers and loose petals. */
.celebration{position:fixed;inset:0;pointer-events:none;z-index:40;overflow:hidden}
.celebrant{position:absolute;width:clamp(220px,27vw,340px);aspect-ratio:1;left:max(0px,calc(19vw - 155px));bottom:15vh;transform-origin:65% 95%}
.celebration-mouse{position:absolute;inset:0;background:url("mouse-celebrate-sheet.png") 0 0/300% 200% no-repeat;filter:saturate(.78);transform-origin:65% 85%}
.celebration-shadow{position:absolute;left:43%;bottom:5%;width:46%;height:5%;border-radius:50%;background:#28231555;filter:blur(8px)}
.active .celebrant{animation:jump-forward 4.8s cubic-bezier(.2,.7,.3,1) both}
.active .celebration-mouse{animation:celebrate-poses 4.8s steps(1,end) both}
.congratulation{position:absolute;top:100%;left:25%;width:70%;text-align:center;color:#f6ead0;font-size:26px;font-weight:600;text-shadow:0 2px 12px #3b2e1b,0 1px 3px #30291a;letter-spacing:1px}
.active .congratulation{animation:congratulate 4.8s ease both}
.flower-burst{position:absolute;inset:0;z-index:3}
.reward-flower{position:absolute;opacity:0;transform-origin:center;will-change:transform,opacity}
.flower-art{display:block;width:100%;height:100%;background:url("flowers-painted-sheet.png") 0 0/300% 200% no-repeat;filter:saturate(.72);transform-origin:center;animation:petal-flutter var(--flutter) ease-in-out infinite alternate}
@keyframes petal-flutter{from{transform:rotate(var(--tilt)) scaleX(.8)}to{transform:rotate(calc(var(--tilt) + 23deg)) scaleX(1)}}
@keyframes jump-forward{0%{opacity:0;transform:translate(-25px,-22vh) scale(.15)}8%{opacity:1;transform:translate(-20px,-19vh) scale(.25)}23%{transform:translate(0,-50px) scale(1.06)}34%{transform:translate(0,5px) scale(1.03,.97)}42%,86%{opacity:1;transform:translate(0,0) scale(1)}100%{opacity:0;transform:translate(0,35px) scale(.94)}}
@keyframes celebrate-poses{0%{background-position:0 0}9%{background-position:50% 0}20%{background-position:100% 0}30%{background-position:0 100%}45%{background-position:100% 0}55%{background-position:0 100%}65%{background-position:50% 100%}74%,100%{background-position:100% 100%}}
@keyframes congratulate{0%,22%{opacity:0;transform:translateY(10px) scale(.9)}32%,87%{opacity:1;transform:translateY(0) scale(1)}100%{opacity:0}}
body.reduced .celebration-mouse{background-position:100% 100%}body.reduced .flower-burst{display:none}body.reduced .celebrant{transform:none}
@media(min-width:681px) and (max-width:1050px){.celebrant{width:240px;left:calc(15vw - 120px);bottom:15vh}.congratulation{font-size:23px}}
@media(max-width:680px){.celebrant{width:155px;left:auto;right:8px;bottom:auto;top:45px}.congratulation{font-size:19px;top:94%;color:#fff0d2}@keyframes jump-forward{0%{opacity:0;transform:translate(-70px,-40px) scale(.2)}23%{opacity:1;transform:translate(0,-18px) scale(1.06)}34%{transform:translate(0,3px) scale(1.03,.97)}42%,86%{opacity:1;transform:none}100%{opacity:0;transform:translateY(15px) scale(.95)}}}
@media(min-width:1051px){.celebration{width:38%;right:auto}}@media(min-width:681px) and (max-width:1050px){.celebration{width:30%;right:auto}}

/* 48-word course navigation, long spelling and grouped sound feedback. */
.brand{font-size:14px;font-weight:600;color:var(--ink)}
.bank-progress{font-size:14px;color:#666b5e;line-height:1.8;margin:12px 0 20px}
.practice-actions{display:flex;gap:10px;margin:16px 0 22px;flex-wrap:wrap}
.secondary-button{border:1px solid #b7b7a7;background:#ece8dc66;border-radius:4px;color:#42483a;min-height:48px;padding:10px 14px;font-size:14px}
.secondary-button:disabled{opacity:.45}
.group-list{display:grid;grid-template-columns:1fr 1fr;gap:11px}
.group-card{position:relative;text-align:left;display:grid;grid-template-columns:30px 1fr;gap:6px 8px;align-content:center;min-height:100px;padding:14px 12px;border:1px solid #b5b5a5;background:#efecdf55;border-radius:5px;color:var(--ink);transition:transform .2s,background .2s}
.group-card:hover{background:#f3efe5;transform:translateY(-2px)}.group-card:active{transform:scale(.98)}
.group-number{grid-row:1/3;font:18px/1.5 Arial;color:#9e5638}.group-card strong{font-size:14px;font-weight:500;line-height:1.7;overflow-wrap:anywhere}.group-card small{font-size:12px;color:#74796b;line-height:1.5}
.context-sentence{font:18px/1.7 Arial,sans-serif;color:#545d49;margin:-4px 0 24px;overflow-wrap:anywhere;letter-spacing:.1px}.context-play{display:block;padding:0;min-height:34px}
.typing-area .slots{gap:8px}.typing-area .slot{font-size:clamp(26px,3.2vw,42px)}.typing-area .long-word{gap:6px}.typing-area .long-word .slot{height:70px;font-size:27px}
.slot.focus-combo{border:2px solid #a15b35;background:#bd8a4938;color:#753d21;animation:combo-reveal 1s ease-in-out both}
.success-detail .answer-ipa{font-size:21px;white-space:nowrap;display:inline-block;margin-top:7px}.success-detail{line-height:1.7}
.save-detail{max-width:640px;margin:8px auto 0;color:#858779;font-size:11px;line-height:1.7}.save-warning{color:#964b36}
@keyframes combo-reveal{0%{background:#7f916513;transform:translateY(0)}40%{background:#d7a76066;transform:translateY(-5px)}100%{background:#bd8a4938;transform:none}}
@media(min-width:681px) and (max-width:900px){.group-card{min-height:96px}.course-menu{max-width:500px}}
@media(max-width:680px){.group-list{gap:9px}.group-card{grid-template-columns:24px 1fr;padding:10px;min-height:104px}.group-card strong{font-size:13px}.group-number{font-size:15px}.typing-area .long-word{gap:4px}.typing-area .long-word .slot{height:58px;font-size:23px}.context-sentence{font-size:17px}.save-detail{font-size:11px}.check{padding:16px 18px}}

.intro{font-size:15px;line-height:1.8}.eyebrow>span{opacity:1!important}
summary{min-height:48px;cursor:pointer;padding:12px 0;font-size:15px}
.group-list{margin-top:10px}.group-card{grid-template-columns:26px 1fr}
.source-line{font-size:13px;color:#64695b;line-height:1.8}
.audio-status{font-size:13px;min-height:22px;color:#64695b}
.audio-controls{margin:16px 0 0}.audio-controls button{min-height:48px}
.context-sentence{color:#30372b;font-size:20px;line-height:1.8}
.typing-area .slots{display:grid;grid-template-columns:repeat(var(--letter-columns,7),minmax(0,1fr));gap:5px}
.typing-area .slot{width:100%;height:55px;font-size:25px;max-width:none}
#wordInput{font-size:20px;letter-spacing:0}
.success-detail .answer-word{overflow-wrap:anywhere}
.success-detail .answer-ipa{white-space:normal;font-size:20px;margin-left:0}
.success-detail small{margin-top:12px}
.summary-note{line-height:1.85}
.audio-preview-row{padding:14px 0;border-bottom:1px solid #c4c4b7}
.audio-preview-row strong{display:block;font:18px Arial;margin-bottom:8px}
.audio-preview-row .practice-actions{margin:4px 0}
.audio-preview-row p{font-size:13px;line-height:1.7;color:#64695b;margin:6px 0}
@media(max-width:680px){.typing-area .slot{height:47px;font-size:22px}.context-sentence{font-size:18px}.exercise-head strong{font-size:19px}.group-list{grid-template-columns:1fr 1fr}.table-wrap table{font-size:11px}}

.art-unavailable .celebration-mouse,.art-unavailable .celebration-shadow,.art-unavailable .flower-burst{display:none}

.answer-ipa,.audio-preview-row strong{font-family:Arial,"Segoe UI",sans-serif}
.pronunciation-help{font-size:13px;line-height:1.8;margin:8px 0;color:#64695b}.pronunciation-help summary{font-size:13px;min-height:36px;padding:6px 0}.pronunciation-help p{font-size:13px;line-height:1.8;margin:6px 0}.pronunciation-help a{color:#68442c}

/* Separate dictation and optional recording views. */
#recordingScreen{margin-top:18px}#recordingScreen h1{margin:8px 0}#recordingScreen .recording-panel h2{font-size:14px;margin:0 0 8px;color:#64695b}#recordingScreen .practice-actions{margin:8px 0}#recordingScreen #recordPlayback{height:40px;margin:8px 0}#recordingScreen .recording-message{min-height:0;margin:8px 0}#recordingScreen #recordDownload{font-size:14px}
#recordingScreen .recording-panel{margin:16px 0;padding:18px}#recordingScreen h1{font-size:30px}#recordSentence{font:22px/1.65 Arial,sans-serif;color:#30372b;margin:8px 0 12px}.recording-navigation{justify-content:space-between}.word-details{font-size:14px}.word-details summary{font-size:14px;min-height:40px}.save-detail summary{font-size:12px;min-height:36px;padding:6px 0}.audio-status:empty{display:none}#recordProfile summary,.record-extra summary{font-size:14px;min-height:38px;padding:6px 0}#recordingScreen #recordHelp{margin:8px 0}.recording-panel [hidden]{display:none!important}@media(max-width:680px){#recordingScreen h1{font-size:26px}#recordingScreen .recording-panel{padding:14px}#recordSentence{font-size:20px}}

.recording-panel{border:1px solid #b7b7a7;border-radius:6px;background:#eee9dd;padding:20px;margin:24px 0}
.recording-panel h2{font-size:20px;margin:0 0 16px}.recording-panel label{display:block;margin:12px 0;font-size:14px}
.recording-panel input:not([type=file]),.teacher-page input,.teacher-page select,.teacher-page textarea{display:block;max-width:100%;padding:10px;border:1px solid #92977f;border-radius:4px;background:#faf8ef;color:#252722}
.recording-panel audio,.teacher-page audio{display:block;width:100%;margin:16px 0}
.recording-panel input[type=file]{display:block;max-width:100%;margin-top:10px}
.recording-panel p{line-height:1.8}.recording-panel a{color:#754329}.recording-panel button{min-height:48px}
.recording-panel #recordStart{min-width:152px}.recording-panel #recordStart.is-recording{background:#943d31;color:#fff;border-color:#943d31}
.recording-message{min-height:48px;font-size:14px;color:#3c5136}.recording-message.error{color:#963c25}
body.teacher-page{display:block}.teacher-page main{margin:auto;width:auto;max-width:1000px;padding:28px}
.teacher-page h1{font-size:30px}.teacher-page h2{font-size:19px}.teacher-page label{display:block;margin:12px 0}
.submission-card{padding:20px;margin:18px 0;border:1px solid #a9ae9a;border-radius:6px;background:#f1ede2}
.submission-card p{line-height:1.8;overflow-wrap:anywhere}.submission-card textarea{width:100%;min-height:80px;font:inherit}
.submission-card .review-check{display:flex;gap:8px;align-items:center}.review-check input{display:inline-block}
.teacher-toolbar{display:flex;gap:12px;flex-wrap:wrap;align-items:end}.teacher-page a{color:#754329}
@media(max-width:680px){.teacher-page main{padding:18px}.recording-panel{padding:14px}.recording-panel h2{font-size:18px}}

:root{--sand:#f1ecdf;--ink:#302f28;--muted:#787768;--accent:#a95537;--line:#c4bcaa;--teal:#4f6b60}
#menu #pageStart{background:transparent;color:#62715c;border:1px solid #c4c8b5}#shortStart{margin-top:18px;max-width:360px;letter-spacing:1px}#menu .practice-actions{margin-top:12px}
.trail-companion{display:none;position:absolute;width:230px;height:230px;left:calc(50% - 115px);bottom:205px;z-index:2;background:url("mouse-celebrate-sheet.png") 100% 100%/300% 200% no-repeat;filter:saturate(.75);transform:rotate(-3deg)}body[data-design-screen=menu] .trail-companion{display:block}@media(min-width:681px) and (max-width:1050px){.trail-companion{width:180px;height:180px;left:calc(50% - 90px);bottom:225px}}@media(max-width:680px){.trail-companion{width:130px;height:130px;left:auto;right:12px;bottom:0}}
body{background:#f1ecdf;padding-top:0;background-image:radial-gradient(#b2a58c25 .7px,transparent .7px);background-size:6px 6px}
.design-preview-bar{height:36px;position:fixed;top:0;left:0;right:0;z-index:70;background:#303e36;color:#f6f0e3;display:flex;gap:18px;align-items:center;justify-content:center;font:12px "Microsoft YaHei",sans-serif;letter-spacing:.4px}.design-preview-bar span{opacity:.7}.design-preview-bar a{color:#f6f0e3;text-decoration:none;border-bottom:1px solid #ffffff50}
.landscape{top:0;width:34%;background:#9c8d73;border-right:1px solid #514a3930}.dune{background-position:26% center;filter:saturate(.72) sepia(.14);animation:none}.haze,.dust{display:none}.landscape:after{background:linear-gradient(180deg,#302e1d9c,transparent 55%,#342f2550)}
.identity{top:32px;left:36px;font-size:20px;letter-spacing:4px;color:#f7f2e4;font-weight:600}.identity small{display:block;font:9px Arial;letter-spacing:2.8px;margin-top:12px;opacity:.6}
.journey-caption{position:absolute;top:128px;left:36px;right:24px;z-index:2;color:#fff8e9}.side-number{font:italic 18px Georgia;letter-spacing:3px;display:inline-block;border-bottom:1px solid #fff7da88;padding-bottom:8px}.journey-caption h2{font:36px/1.4 "SimSun",serif;letter-spacing:6px;margin:20px 0 14px}.journey-caption p{font-size:13px;letter-spacing:2px;line-height:2.1;color:#f5e9cf}
.journey-line{position:absolute;inset:0;width:100%;height:100%;color:#fff0ce75;z-index:1;pointer-events:none}
.journey-note{position:absolute;bottom:24px;left:30px;right:30px;z-index:2;background:#f5eddcfa;color:#5d5849;padding:18px 22px;box-shadow:0 9px 20px #302b2420;transform:rotate(-1.5deg);border-radius:3px 12px 2px 8px;border:1px solid #c5b593}.journey-note:before{content:"";position:absolute;top:-9px;left:36%;width:64px;height:20px;background:#c9b894a0;transform:rotate(7deg)}.journal-tag{font-size:12px;letter-spacing:2px}.journey-dots{display:flex;gap:7px;flex-wrap:wrap;max-width:250px;margin:14px 0}.journey-dots i{width:8px;height:8px;border:1px solid #a99e86;border-radius:50%;background:transparent}.journey-dots i.lit{background:#59715d;border-color:#59715d}.journey-note p{font-size:12px;margin:8px 0}.note-edge{display:block;border-top:1px dashed #a9a08b8a;padding-top:9px;font-size:11px;color:#8b806a}
main{margin-left:34%;width:66%;padding:18px clamp(24px,5vw,72px) 28px}.brand{color:#6c705f;font-size:13px!important}.brand:before{content:'←';margin-right:10px}.motion-toggle{color:#7b7e70;font-size:11px}
.lesson{max-width:750px;margin:22px auto 18px;background:#fffdf7;border:1px solid #d6cebc;border-radius:6px 20px 6px 6px;padding:30px 36px 26px;box-shadow:0 16px 44px #62513c0a;position:relative;animation:none}.lesson:before{content:"";position:absolute;top:-6px;left:35px;width:48px;height:10px;background:#b8896499;transform:rotate(-3deg)}
.eyebrow{font-size:11px;letter-spacing:1.4px;color:#81816f;gap:18px}h1{font-size:30px;font-weight:600;letter-spacing:1px;margin:19px 0 20px;color:#353b31}.page-heading{display:flex;justify-content:space-between;align-items:center;gap:18px}.page-heading h1{font:30px/1.6 "SimSun",serif;font-weight:bold}.page-stamp{display:grid;place-content:center;text-align:center;color:#a96a4a;border:1px solid #bd805a9c;outline:1px solid #bd805a4d;outline-offset:3px;border-radius:50%;width:62px;height:62px;transform:rotate(9deg);font-size:10px;flex-shrink:0}.page-stamp b{font:24px Georgia}
.intro{font-size:14px;line-height:1.9;color:#7b7b6b;margin:8px 0 15px}.bank-progress{font-size:12px;line-height:1.7;color:#7b7b6b}.practice-actions{gap:10px;margin:16px 0}.secondary-button{border:1px solid #c7c7b7;background:#faf9f1;border-radius:8px;min-height:46px;padding:11px 15px;font-size:13px;color:#555d4c}.secondary-button:hover{background:#eeefe3;border-color:#919f87}.text-button{font-size:12px;color:#707c69}.check{background:#506b5b;color:#fffdf2;border-radius:8px;font-size:14px;letter-spacing:1px;max-width:none;padding:16px 20px;box-shadow:0 3px 0 #364c3e}.check:hover{background:#405c4c}.check.done{background:#f6f1e3;color:#66715c;box-shadow:none;border:1px solid #ccc8b6}
#pageStart{background:#506b5b;color:#fff9e9;border:0}#roundDetails{margin-top:22px}#roundDetails>summary{color:#4c5748;font-size:15px;font-weight:600;list-style:none;border-top:1px solid #e6e0d3;padding-top:21px}.route-caption{font-size:11px;color:#8b8c7e;font-weight:400;margin-left:12px}.group-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.group-card{background:#faf9f2;border:1px solid #dbd6c8;border-radius:7px 13px 7px 7px;min-height:82px;display:grid;grid-template-columns:30px 1fr;text-align:left;padding:15px;gap:5px 10px;transition:background .15s,transform .15s;box-shadow:none}.group-card:hover{background:#f2f0df;transform:translateY(-2px)}.group-card .group-number{grid-row:1/3;display:grid;place-content:center;width:26px;height:26px;border:1px solid #b5bda5;border-radius:50%;font:italic 14px Georgia;color:#788364;background:#eceee2}.group-card strong{font:600 17px Arial;color:#4c5f4c}.group-card small{font-size:11px;color:#848572}.group-card:nth-child(4n) .group-number{border-color:#cda78f;color:#a06544;background:#f2e4d8}
.journey-steps{max-width:750px;margin:20px auto -2px;display:flex;align-items:center;gap:16px;font:italic 14px Georgia;color:#a5aa9c}.journey-steps span{display:flex;align-items:center;gap:8px}.journey-steps b{font:12px "Microsoft YaHei",sans-serif}.journey-steps small{font:10px "Microsoft YaHei",sans-serif}.journey-steps i{width:30px;border-top:1px dashed #c1c4b4}.journey-steps .current{color:#577158}.journey-steps .current b{font-weight:bold}.journey-steps[hidden]{display:none}
.audio-controls{margin-top:0;align-items:center;gap:10px}#playSentence{background:#e9eee4;color:#48604b;border-color:#b8c9b0;font-weight:600}#playSentence:before{content:'▶';font-size:10px;margin-right:7px}#playWord{margin-left:auto;font-size:11px;background:transparent;border-style:dashed}.audio-status{font-size:11px;color:#91937e;min-height:0;margin:8px 0}.context-sentence{font:21px/1.8 Georgia,"Times New Roman",serif;margin:18px 0;padding:18px 21px;border-left:3px solid #baa582;background:#f6f3e9;border-radius:0 8px 8px 0;color:#3e4638}.source-line{font-size:10px;color:#969582;margin:8px 0 18px}.meaning-label{font-size:10px;letter-spacing:1px}.exercise-head{margin-bottom:14px}.exercise-head strong{font-size:15px}.input-label{font-size:12px;color:#747c68}.typing-area .slots{gap:5px;margin-top:7px}.typing-area .slot{height:44px;font-size:23px;border-radius:5px;border-color:#d2cdbd;background:#fcfbf5}.slot.selected{border-color:#c48c59;background:#f6ead7;box-shadow:none}.under-slots{max-width:none;margin-top:3px}.feedback{min-height:36px;padding-top:3px;font-size:12px;line-height:1.8}.success-detail{font-size:17px;margin-top:18px;border-top:1px dashed #c4c9b9;padding-top:12px}.success-detail .answer-word span{font-size:23px}.success-detail .answer-ipa{font-size:17px}.word-details summary{font-size:12px}.word-details small{font-size:13px}#openRecording{background:#506b5b;color:#fff9e9;border:0}#successActions{margin-bottom:0}
#recordingScreen{margin-top:18px}#recordingScreen h1{font:600 28px/1.5 "SimSun",serif;margin:15px 0 20px}#recordingScreen .recording-panel{padding:0;border:0;background:transparent;margin:0}#recordHeading{font-size:11px!important;color:#99967f!important}#recordSentence{font:22px/1.8 Georgia,"Times New Roman",serif;border-left:3px solid #baa582;padding:16px 21px;background:#f6f3e9;border-radius:0 8px 8px 0;margin:14px 0}#recordHelp{font-size:11px;color:#91917e}#recordStart{width:100%;background:#506b5b;color:#fff9ed;border:0;min-height:54px;font-size:15px;letter-spacing:2px}#recordStart:before{content:'●';font-size:13px;margin-right:12px;color:#e4ba85}#recordStart.is-recording{background:#a15843}#recordStart.is-recording:before{content:'■';color:#fff1d9}#recordPlayback{border-radius:6px}#recordDownload{font-size:11px!important}.recording-panel label{font-size:12px}.recording-panel input:not([type=file]){border-color:#c8c8b4;background:#faf9ef;border-radius:6px}#recordProfile summary,.record-extra summary{font-size:11px}.recording-message{font-size:12px!important;line-height:1.8}#recordSubmit{width:100%;background:#eef0e4}.recording-navigation{border-top:1px dashed #d1d2c3;margin-top:18px!important;padding-top:12px}
footer{max-width:750px;border-top:0;margin-top:12px;font-size:10px;padding-top:0}footer .text-button{font-size:10px}.save-detail{max-width:750px;margin:0 auto;color:#91907e}.save-detail summary{font-size:10px}.save-detail p{font-size:12px;line-height:1.8}.celebration{width:34%!important}.celebrant{left:max(0px,calc(17vw - 155px));bottom:24vh;width:clamp(220px,25vw,320px)}
@media(min-width:681px) and (max-width:1050px){.landscape{width:28%}main{margin-left:28%;width:72%;padding:18px 20px}.identity{left:20px;font-size:17px}.journey-caption{left:22px;top:120px}.journey-caption h2{font-size:29px}.journey-caption p{font-size:11px;letter-spacing:1px}.journey-note{left:16px;right:16px;padding:14px}.lesson{padding:26px 24px}.celebration{width:28%!important}.celebrant{width:230px;left:calc(14vw - 115px)}.context-sentence{font-size:20px}#playWord{margin-left:0}}
@media(max-width:680px){body{padding-top:0}.design-preview-bar{font-size:10px;gap:8px}.design-preview-bar span{display:none}.landscape{top:auto;width:100%;height:172px;border-right:0}.identity{top:21px;left:22px;font-size:17px}.identity small{font-size:8px;margin-top:9px}.journey-caption{left:22px;top:87px}.journey-caption h2{font-size:24px;letter-spacing:4px;margin:0}.side-number,.journey-caption p,.journey-note,.journey-line{display:none}.dune{background-position:center 40%}main{margin:0;width:100%;padding:8px 14px 20px}.lesson{padding:23px 20px;margin-top:15px;border-radius:5px 15px 5px 5px}.lesson:before{left:22px}.page-heading h1{font-size:24px}.page-stamp{width:46px;height:46px}.page-stamp b{font-size:18px}.group-card{padding:12px;gap:6px;grid-template-columns:24px 1fr}.group-card strong{font-size:15px}.route-caption{display:block;margin:5px 0 0}.journey-steps{margin:6px 3px 0}.audio-controls{gap:6px}.audio-controls button{font-size:11px;padding:8px 10px}.context-sentence,#recordSentence{font-size:20px;padding:13px 14px}.typing-area .slot{height:40px;font-size:20px}h1{font-size:25px;line-height:1.5;margin:15px 0}.celebration{width:100%!important}.celebrant{width:150px;right:7px;left:auto;top:78px;bottom:auto}.congratulation{font-size:17px}.summary-note{font-size:12px}.result-stats strong{font-size:22px}.intro{font-size:12px}#recordingScreen h1{font-size:25px}.page-heading{gap:10px}}

.design-preview-bar button{background:#ffffff12;color:#fff5db;border:1px solid #ffffff50;border-radius:4px;padding:4px 8px;min-height:26px;font-size:11px}.design-preview-bar{gap:12px}
#journeyNode{padding:0;width:min(1000px,94vw);max-height:94dvh;border:1px solid #b5a98e;border-radius:8px 20px 8px 8px;background:#fbf6e9;color:#444535;box-shadow:0 35px 120px #171d1999;overflow-y:auto}#journeyNode::backdrop{background:#222a24bd;backdrop-filter:blur(7px)}.node-topline{display:flex;justify-content:space-between;align-items:center;padding:10px 22px;font-size:11px;letter-spacing:1px;background:#f5efdf;color:#8a7f66}.node-topline button{border:0;background:none;color:#6c6e5e;font-size:12px;min-height:32px;padding:4px 10px}
.node-scene{height:350px;position:relative;isolation:isolate;overflow:hidden;background:#b9afa0}.node-landscape{position:absolute;inset:0;background:url("journey-panorama.png") 0% 48%/150% auto no-repeat;animation:node-pan 5s ease-out both}.node-scene[data-stop="10"] .node-landscape{background-position:35% 48%}.node-scene[data-stop="15"] .node-landscape{background-position:70% 48%}.node-scene[data-stop="21"] .node-landscape{background-position:100% 45%;animation-name:node-pan-night}.node-shimmer{position:absolute;inset:0;background:linear-gradient(90deg,#28282445,transparent 52%),linear-gradient(180deg,#28282412,transparent 52%,#28282424);pointer-events:none}.node-scene[data-stop="21"] .node-shimmer{background:linear-gradient(90deg,#28282445,transparent 52%),linear-gradient(180deg,#28282412,transparent 55%,#28282424)}
.node-location{position:absolute;top:30px;left:36px;color:#fff9eb;text-shadow:0 2px 10px #493723a0}.node-location small{font-size:10px;letter-spacing:2px}.node-location h2{font:34px/1.5 "SimSun",serif;letter-spacing:5px;margin:8px 0}.node-location>span{font-size:12px;letter-spacing:2px}.node-stamp{position:absolute;right:30px;top:30px;border:1px solid #f6e1b6a0;border-radius:50%;outline:1px solid #f6e1b650;outline-offset:4px;width:62px;height:62px;display:grid;place-content:center;text-align:center;color:#fff0cc;font-size:11px;transform:rotate(10deg)}.node-stamp b{font:22px Georgia}
.node-mouse-path{position:absolute;left:10%;bottom:5%;width:185px;height:185px;animation:mouse-arrive 3s cubic-bezier(.2,.65,.3,1) both;filter:drop-shadow(0 12px 9px #463b2e40)}.node-mouse{width:100%;height:100%;background:url("mouse-celebrate-sheet.png") 100% 100%/300% 200% no-repeat;transform-origin:50% 90%;animation:mouse-steps 2.7s steps(1,end) both,mouse-hop .55s ease-in-out 5}.node-scene[data-stop="21"] .node-mouse-path{left:58%;animation-name:mouse-arrive-camp}.node-scene[data-stop="21"] .node-mouse{animation:mouse-steps 2.7s steps(1,end) both,mouse-hop .65s ease-in-out 4}
.node-pawtrail{position:absolute;bottom:11%;left:4%;width:38%;height:30px;display:flex;justify-content:space-around;transform:rotate(-5deg)}.node-pawtrail i{height:8px;width:5px;border-radius:50%;background:#5c46343d;box-shadow:9px -10px #5c463437;animation:paw-appear .8s both}.node-pawtrail i:nth-child(2){animation-delay:.4s}.node-pawtrail i:nth-child(3){animation-delay:.8s}.node-pawtrail i:nth-child(4){animation-delay:1.2s}.node-pawtrail i:nth-child(5){animation-delay:1.6s}
.node-paper{padding:22px 34px 22px;background:linear-gradient(#fbf8ee,#f4eedf)}#nodeStory{font:17px/1.8 "SimSun",serif;letter-spacing:1px;margin:0 0 18px;color:#6a6856}.node-progress{display:flex;gap:22px;align-items:center}.node-progress>div:first-child{white-space:nowrap}#nodeCount{font:32px Georgia;color:#4d6959}#nodeCountLabel{font-size:12px;color:#8c8a76;margin-left:8px}.node-track{height:5px;flex:1;background:#dcdccc;border-radius:4px;overflow:hidden}.node-track>span{display:block;height:100%;background:#748971;width:0;transition:width .8s ease}#nodeResults{font-size:12px;line-height:1.9;color:#80836d;margin:12px 0 18px}.node-actions{display:flex;align-items:center;gap:22px}.node-actions .check{max-width:300px;justify-content:center}.node-actions .text-button{min-height:44px}#nodeFootnote{font-size:10px;color:#99927d;line-height:1.7;margin:15px 0 0}
@keyframes node-pan{from{background-position:8% 48%;transform:scale(1.045)}to{background-position:0% 48%;transform:scale(1)}}@keyframes node-pan-night{from{background-position:88% 45%;transform:scale(1.045)}to{background-position:100% 45%;transform:scale(1)}}@keyframes mouse-arrive{from{transform:translateX(-210px) scale(.65);opacity:0}15%{opacity:1}to{transform:translateX(50px) scale(1);opacity:1}}@keyframes mouse-arrive-camp{from{transform:translateX(-300px) scale(.75);opacity:0}15%{opacity:1}to{transform:translateX(0) scale(1);opacity:1}}@keyframes mouse-steps{0%{background-position:0 0}15%{background-position:50% 0}30%{background-position:100% 0}45%{background-position:0 100%}60%{background-position:50% 100%}75%,100%{background-position:100% 100%}}@keyframes mouse-hop{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-11px) rotate(3deg)}}@keyframes paw-appear{from{opacity:0}to{opacity:1}}
@media(max-width:680px){.design-preview-bar{gap:7px;font-size:9px}.design-preview-bar button{font-size:10px;padding:3px 5px}#journeyNode{width:94vw;max-height:94dvh}.node-topline{padding:6px 12px;font-size:9px}.node-scene{height:280px}.node-landscape{background-size:auto 120%;background-position:16% 48%}.node-scene[data-stop="21"] .node-landscape{background-position:88% 48%}.node-location{left:20px;top:24px}.node-location h2{font-size:27px;letter-spacing:3px}.node-location small,.node-location>span{font-size:9px}.node-stamp{width:44px;height:44px;right:17px;top:20px;font-size:8px}.node-stamp b{font-size:16px}.node-mouse-path{width:150px;height:150px;left:4%;bottom:1%}.node-scene[data-stop="21"] .node-mouse-path{left:49%}.node-paper{padding:20px}#nodeStory{font-size:15px}#nodeCount{font-size:28px}#nodeCountLabel{font-size:10px}.node-progress{gap:12px}.node-actions{gap:12px}.node-actions .check{max-width:none;flex:1;padding:13px 10px;font-size:12px}.node-actions .text-button{font-size:11px;white-space:nowrap}}

/* v034: same-desert palette and per-stop framing; no image color filters. */
.node-landscape{--pan-from:8%;--pan-to:0%;background-position:var(--pan-to) 48%;animation-name:node-pan-stop}
.node-scene[data-stop="10"] .node-landscape{--pan-from:12%;--pan-to:20%;background-position:var(--pan-to) 48%}
.node-scene[data-stop="15"] .node-landscape{--pan-from:87%;--pan-to:95%;background-position:var(--pan-to) 48%}
.node-scene[data-stop="21"] .node-landscape{--pan-from:88%;--pan-to:100%;background-position:var(--pan-to) 48%;animation-name:node-pan-stop}
@keyframes node-pan-stop{from{background-position:var(--pan-from) 48%;transform:scale(1.045)}to{background-position:var(--pan-to) 48%;transform:scale(1)}}
@media(max-width:680px){.node-landscape{--pan-to:16%}.node-scene[data-stop="10"] .node-landscape{--pan-from:5%;--pan-to:12%}.node-scene[data-stop="15"] .node-landscape{--pan-from:92%;--pan-to:100%}.node-scene[data-stop="21"] .node-landscape{--pan-from:92%;--pan-to:100%}}

.header-help{display:flex;align-items:center;gap:18px}.guide-entry{font-size:12px;white-space:nowrap}.guide-entry:disabled{opacity:.45;cursor:default}
#firstUseGuide{box-sizing:border-box;width:min(600px,calc(100vw - 28px));max-height:calc(100dvh - 28px);padding:0;border:1px solid #b7ac94;border-radius:7px 20px 7px 7px;background:#faf6ea;color:#454b3e;box-shadow:0 24px 80px #22271f55;overflow-y:auto}
#firstUseGuide::backdrop{background:#252e27ad;backdrop-filter:blur(5px)}
.guide-top{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 25px;border-bottom:1px dashed #d7cdb7;font-size:12px;color:#757c68}.guide-top button{font-size:12px;min-height:44px;padding:4px 8px;color:#626c57}
.guide-body{padding:22px 32px 12px;min-height:330px}.guide-path{display:flex;gap:8px;margin:0 0 21px}.guide-path i{height:4px;flex:1;background:#ded9c8;border-radius:2px}.guide-path i.current{background:#5d7661}
#guideHeading{font:600 27px/1.5 "SimSun",serif;margin:0 0 20px;letter-spacing:1px;outline:none}.guide-copy{font-size:15px;line-height:1.95;color:#555d4d}.guide-copy p{margin:0 0 15px}.guide-copy strong{font-weight:600;color:#384e40}
.guide-flow{display:flex;align-items:center;justify-content:space-between;gap:7px;padding:15px 13px;margin:10px 0 20px;border:1px solid #d9d3c0;border-radius:4px;background:#f1eedf;font-size:12px;color:#52644f}.guide-flow span{flex:1;text-align:center}.guide-flow b{font-weight:400;color:#8b927b}
.guide-note{border-left:3px solid #b5aa89;padding:10px 14px;background:#f1eddf;font-size:13px;line-height:1.9;color:#6b705e}.guide-note p:last-child{margin-bottom:0}
.guide-actions{display:flex;align-items:center;gap:15px;padding:18px 32px 16px}.guide-actions .check{flex:1;margin:0;min-height:48px;justify-content:center;font-size:14px}.guide-actions .text-button{min-height:44px;min-width:70px;font-size:13px}.guide-actions [hidden]{display:none!important}
.guide-bottom{margin:0;padding:0 32px 23px;font-size:11px;color:#838773;line-height:1.8}.guide-top button:focus-visible,.guide-entry:focus-visible,.guide-actions button:focus-visible{outline:2px solid #55735d;outline-offset:3px}
@media(max-width:680px){.header-help{gap:10px}.guide-entry{padding:3px;font-size:11px}.motion-toggle{font-size:10px}#firstUseGuide{max-height:calc(100dvh - 20px)}.guide-top{padding:8px 16px;font-size:11px}.guide-body{padding:19px 21px 8px;min-height:310px}#guideHeading{font-size:23px;margin-bottom:17px}.guide-copy{font-size:14px;line-height:1.9}.guide-flow{font-size:11px;padding:13px 7px;gap:3px}.guide-actions{padding:15px 21px 13px;gap:12px}.guide-bottom{padding:0 21px 19px}.guide-note{font-size:12px}}

.sync-status{display:block;text-align:left;background:#eef0e6;border:1px solid #d4d9c9;border-radius:6px;color:#4e6655;padding:10px 14px;font:inherit;font-size:14px;margin:12px 0;max-width:100%}
#syncDialog{box-sizing:border-box;width:min(600px,calc(100vw - 28px));max-height:90dvh;overflow:auto;border:1px solid #d9d2ba;border-radius:8px 26px 8px 8px;padding:24px;background:#faf7ec;color:#485244;line-height:1.7}
#syncDialog::backdrop{background:#283328a8;backdrop-filter:blur(4px)}
.sync-top{display:flex;align-items:center;justify-content:space-between;gap:14px}.sync-top h2{font-size:24px;margin:0}#syncDialog p{font-size:15px}
#syncForm label{display:block}#learningCode{box-sizing:border-box;display:block;width:100%;padding:12px;font-size:18px;letter-spacing:1px;border:1px solid #bfc5b7;border-radius:4px;margin:8px 0 16px;background:#fffdf5;color:#394a3d}#syncConnect{width:100%}.sync-options{display:flex;flex-wrap:wrap;gap:12px;margin:16px 0}.sync-note{color:#717865;font-size:13px!important}#syncConflict{border-top:1px solid #d9d2ba;padding-top:12px}#syncMessage{overflow-wrap:anywhere}#syncDialog button{white-space:normal}.header-help{flex-wrap:wrap}
@media(max-width:450px){#syncDialog{padding:18px}.sync-top h2{font-size:21px}.header-help{gap:8px}#syncEntry,#guideEntry{font-size:13px}.sync-options button{width:100%}}

@font-face{font-family:CompanionChinese;src:url("/static/fonts-companion-chinese.1594c351ba31e165.woff2") format('woff2');font-display:swap}@font-face{font-family:CompanionEnglish;src:url("/static/fonts-companion-english.98621f3ea62233b7.woff2") format('woff2');font-weight:700;font-display:swap}
.growth-preview-note{font-size:11px;line-height:1.7;color:#7b6c52;padding:8px 0;margin:4px 0}.growth-strip{border:1px dashed #c6b798;border-radius:9px;padding:10px 14px;display:flex;flex-wrap:wrap;gap:4px 18px;background:#f9f3e5;color:#657156;font-size:12px}.growth-strip strong{font:20px CompanionChinese,cursive}.growth-strip small{display:block;width:100%;font-size:11px;color:#8a7b61}
.trail-companion.growth-scene{display:block!important;background:none!important;filter:none!important;transform:none!important;left:0;right:0;width:100%;height:auto;bottom:170px;z-index:3}.growth-scene canvas{display:block;width:100%;height:auto}.growth-scene #speech{position:absolute;left:59%;top:4%;width:37%;background:#f5ecd9ec;border:1px solid #bc9f73;border-radius:18px 18px 18px 3px;padding:7px;text-align:center;font:clamp(12px,1.2vw,18px)/1.5 CompanionChinese,cursive;color:#655238;transform:rotate(-2deg)}.growth-scene #speech span{display:block}.growth-scene .speech-great{font:700 clamp(22px,2.4vw,34px)/1.2 CompanionEnglish,cursive}.growth-scene #assetStatus{position:absolute;bottom:0;font-size:11px;color:#fff;text-align:center;width:100%}.growth-scene #assetStatus[hidden]{display:none}
#growthBook{width:min(90vw,530px);max-height:85dvh;overflow:auto;border:1px solid #c4b99e;border-radius:14px;background:#fcf8ed;color:#4b5343;padding:25px;line-height:1.8}#growthBook::backdrop{background:#29281e70}#growthBook h2{font:30px CompanionChinese,cursive}#growthBook p{font-size:13px}#growthBook a{color:#556b4d;font-size:13px}#growthClose{float:right}#growthPages{border-block:1px dashed #c7bea7;margin:16px 0}.celebration{display:none!important}
@media(min-width:681px) and (max-width:1050px){.trail-companion.growth-scene{bottom:210px}.growth-scene #speech{font-size:12px}.growth-scene .speech-great{font-size:23px}}
@media(max-width:680px){.trail-companion.growth-scene{width:255px;left:auto;right:0;bottom:-1px}.growth-scene #speech{font-size:12px;left:62%;width:36%;padding:5px;top:8%}.growth-scene .speech-great{font-size:23px}.growth-preview-note{font-size:10px}.growth-strip{padding:9px 12px}.growth-strip strong{font-size:18px}}

@media(max-width:680px){.trail-companion.growth-scene.mobile-feedback{position:fixed!important;top:calc(env(safe-area-inset-top,0px) + 10px);right:8px;bottom:auto;width:255px;z-index:100;pointer-events:none}.mobile-feedback #speech{box-shadow:0 3px 14px #40342020}}

header,.header-help{flex-wrap:wrap}.header-help{gap:8px 14px}

@media(max-width:680px){.dune{background-image:url("/static/assets-mobile-desert.23a75869cbef0245.webp")}}
