@font-face{font-family:Primer;src:url('./assets/fonts/primer.woff') format('woff');font-weight:400;font-style:normal;font-display:swap}
:root{--paper:#f5f1e7;--ink:#343c33;--muted:#7e8273;--green:#527560;--sage:#e4e8d8;--gold:#bc9148;--line:#dddccf;--white:#fffdf7;--rose:#aa6050}
*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--paper);font:16px/1.65 -apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei',sans-serif;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}button,input{font:inherit}button{cursor:pointer;color:inherit;background:none;border:0}button:focus{outline:2px solid var(--green);outline-offset:4px}button:disabled{cursor:default;opacity:.45}button:active{transform:translateY(1px)}img{max-width:100%;display:block}h1,h2,h3,p{margin:0}h1,h2,.serif{font-family:'Songti SC','STSong','SimSun',serif;font-weight:600}h1{font-size:46px;line-height:1.3;letter-spacing:.02em}h2{font-size:28px;line-height:1.45}h3{font-size:18px}small{font-size:12px}.py{font-family:Primer,'Trebuchet MS',sans-serif!important;font-weight:400!important;font-style:normal;line-height:1.65}.muted{color:var(--muted)}.eyebrow{font-size:12px;letter-spacing:.16em;color:var(--green);margin-bottom:12px}.topbar{max-width:1240px;margin:auto;display:flex;align-items:center;justify-content:space-between;padding:23px 36px;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;padding:0;text-align:left}.brand-mark{display:block;width:47px;height:49px;background:var(--green);color:#fff9e9;border-radius:13px 13px 18px 13px;line-height:49px;text-align:center;font-family:'Songti SC',serif;font-size:31px;margin-right:12px;transform:rotate(-4deg)}.brand strong{font:600 22px/1.4 'Songti SC',serif;letter-spacing:.13em}.brand small{display:block;color:var(--muted);font-size:10px;letter-spacing:.14em}.topbar nav{display:flex;background:#ececdf;border-radius:30px;padding:5px}.topbar nav button{padding:7px 21px;border-radius:24px;font-size:14px}.topbar nav button.active{background:var(--white);box-shadow:0 2px 7px #343c330b}.parent-button{font-size:12px;color:var(--muted);border-bottom:1px solid #c4c4b2;padding:4px 0}#app{max-width:1240px;margin:auto;padding:30px 36px 20px;min-height:70vh;outline:none}.hero{display:grid;grid-template-columns:.85fr 1.15fr;align-items:center;min-height:410px;border-radius:26px;background:#eeeade;overflow:hidden;position:relative}.hero-copy{padding:35px 0 38px 42px;position:relative;z-index:1}.hero-copy h1{margin-bottom:17px}.hero-copy p{color:#737868;font-size:15px;max-width:290px}.hero-image{width:100%;mix-blend-mode:multiply}.hero .tag{position:absolute;right:24px;top:25px;border:1px solid #b6bba6;color:#65725a;font:14px 'Songti SC',serif;padding:11px 7px;writing-mode:vertical-rl;letter-spacing:5px;border-radius:20px}.button-row{display:flex;flex-wrap:wrap;align-items:center;margin-top:22px}.button-row>*{margin-right:10px;margin-bottom:8px}.primary,.secondary,.quiet{min-height:46px;padding:10px 22px;border-radius:13px;display:inline-flex;align-items:center;justify-content:center}.primary{background:var(--green);color:#fffced;box-shadow:0 4px 0 #3b584a;transition:background .2s,transform .2s}.primary:hover{background:#456752}.secondary{background:#e9e7da;border:1px solid #dcdacc}.quiet{font-size:13px;color:var(--muted)}.primary .arrow{margin-left:18px;font-size:20px}.section-heading{display:flex;align-items:center;justify-content:space-between;margin:29px 0 17px}.section-heading h2{font-size:24px}.section-heading small{color:var(--muted)}.continue-bar{display:flex;align-items:center;justify-content:space-between;margin:20px 0 0;padding:17px 20px;border:1px solid var(--line);border-radius:16px}.continue-bar strong{font-size:14px}.continue-bar p{font-size:12px;color:var(--muted)}.mini-leaf{color:var(--green);margin-right:9px}.lesson-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:13px}.lesson-tile{border:1px solid var(--line);border-radius:18px;background:#fcfaf3;padding:21px 22px;text-align:left;position:relative;transition:transform .2s,box-shadow .2s;min-height:143px}.lesson-tile:hover{transform:translateY(-3px);box-shadow:0 8px 25px #314b3510}.lesson-num{color:#a7ac95;font:italic 25px Georgia,serif;display:block}.lesson-tile h3{margin:8px 0 4px;font-weight:500;font-size:17px}.lesson-tile .py{font-size:21px;color:var(--green)}.lesson-tile small{color:var(--muted)}.tile-status{position:absolute;right:16px;top:19px;color:var(--green);font-size:11px}.complete{border-color:#aebfaa;background:#f0f3e7}.mini-progress{height:5px;border-radius:5px;background:#e0e1d2;width:150px;overflow:hidden;margin-top:8px}.mini-progress span{display:block;height:100%;background:#759274}.course-header{display:flex;justify-content:space-between;align-items:end;padding:10px 0 13px}.course-header h1{font-size:36px}.course-header p{font-size:14px;color:var(--muted);margin-top:8px}.course-group{margin:28px 0}.course-group>h2{font-size:19px;margin-bottom:15px;padding-left:12px;border-left:3px solid var(--gold)}.course-group .lesson-grid{grid-template-columns:repeat(4,1fr)}.course-group .lesson-tile{padding:17px}.course-group .lesson-tile .py{font-size:18px}.lesson-heading{display:flex;align-items:center;justify-content:space-between;min-width:0;margin-bottom:20px}.lesson-heading h1{font-size:28px}.back{width:42px;height:42px;border:1px solid var(--line);border-radius:50%;margin-right:15px;flex-shrink:0;font-size:23px}.lesson-title{display:flex;align-items:center}.lesson-heading .muted{font-size:12px}.steps{display:flex;justify-content:center;border-bottom:1px solid var(--line);margin-bottom:24px}.steps button{padding:11px 22px 15px;color:var(--muted);border-bottom:3px solid transparent;font-size:14px}.steps button.active{border-color:var(--green);color:var(--green)}.step-dot{font:13px Georgia,serif;margin-right:6px}.learn-panel{display:grid;grid-template-columns:1fr 1fr;grid-gap:24px;min-height:380px}.art-panel{border-radius:23px;background:#efecdf;min-height:340px;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden}.art-panel .sprite{width:285px;height:285px;mix-blend-mode:multiply}.art-caption{position:absolute;bottom:20px;left:23px;font-size:12px;color:#848775}.girl-art{width:73%;height:360px;object-fit:contain;mix-blend-mode:multiply}.sprite{background-image:url('./assets/images/objects.webp');background-size:400% 400%;background-repeat:no-repeat;display:block;flex-shrink:0}.letter-art{font-size:158px;color:#578271;text-shadow:1px 1px #d9e2c9,3px 4px #abc1a7,6px 8px #779e84,10px 14px 12px #526e5135;transform:rotate(-7deg);position:relative;padding:0 12px 35px}.mouth{position:absolute;right:22px;top:22px;width:74px;height:70px;color:#6c7e67}.learn-copy{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;padding:10px 25px}.token-strip{display:flex;flex-wrap:wrap;margin:0 -4px 15px}.token-strip button{min-width:43px;min-height:42px;margin:4px;border-radius:10px;font-size:20px;border:1px solid var(--line);padding:2px 13px}.token-strip button.selected{background:var(--green);color:#fffced;border-color:var(--green)}.main-letter{font-size:94px!important;line-height:1.6!important;color:var(--green);margin:-7px 0 0;max-width:100%;overflow-wrap:break-word}.word-caption{display:flex;align-items:center;margin:0 0 10px}.word-caption b{font:29px 'Songti SC',serif;margin-right:13px}.word-caption span{color:var(--muted);font-size:18px}.hint{font-size:17px;line-height:1.8;margin-bottom:14px;max-width:400px}.listen{display:inline-flex;align-items:center;min-height:47px;border-radius:30px;background:var(--green);color:#fff9ed;padding:9px 21px;margin:4px 8px 8px 0;font-size:15px}.listen svg{width:20px;height:20px;margin-right:9px}.listen.secondary{background:#e9e7da;color:var(--ink)}.playing{animation:pulse .7s alternate infinite}.example-note{font-size:12px;color:var(--muted);margin-top:12px;max-width:440px}.teacher-tip{padding:15px 19px;border-left:2px solid #b1b896;background:#eeeee1;font-size:13px;margin:22px 0 0;border-radius:0 10px 10px 0}.lesson-footer{display:flex;align-items:center;justify-content:space-between;margin-top:24px;padding-top:22px;border-top:1px solid var(--line)}.companion{display:flex;align-items:center;min-width:0}.companion img{width:58px;height:66px;object-fit:cover;object-position:top;mix-blend-mode:multiply;margin-right:11px;border-radius:50%}.companion strong{font-size:14px;font-weight:500}.companion p{font-size:12px;color:var(--muted)}.lesson-footer .primary{flex-shrink:0;margin-left:15px}.tone-row{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:12px;width:100%;margin-top:10px}.tone-tile{background:var(--white);border:1px solid var(--line);border-radius:17px;padding:8px 10px 12px}.tone-tile .py{font-size:38px}.tone-tile small{display:block;color:var(--muted)}.tone-tile svg{height:35px;width:100%;color:var(--green);display:block}.tone-tile.active{border-color:var(--green);background:#eef2e5}.tone-path{stroke-dasharray:140;stroke-dashoffset:140;animation:draw-line .8s ease forwards}.focus-card{background:var(--white);border-radius:22px;padding:28px;text-align:center;border:1px solid var(--line)}.blend-area{max-width:800px;margin:0 auto}.blend-area h2{font-size:24px;text-align:center;margin:8px 0 20px}.blend-select{display:flex;justify-content:center;flex-wrap:wrap;margin-bottom:18px}.blend-select button{padding:7px 18px;border-radius:30px;background:#e6e9d9;margin:4px;font-size:14px}.blend-select button.selected{background:var(--green);color:#fff}.pieces{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;min-height:115px}.piece{display:inline-block;padding:5px 22px;background:#f2eddf;border-radius:13px;font:42px Primer,sans-serif;margin:6px;box-shadow:0 4px 0 #ddd7c5;transition:transform .55s,opacity .55s}.plus{color:#a5ad9b;font-size:22px}.blend-run .piece{transform:translateY(-9px);background:#e5eddc}.blend-result{font-size:64px!important;color:var(--green);margin:14px 0;min-height:95px}.blend-word{font-size:30px;font-family:'Songti SC',serif;margin-bottom:12px}.blend-help{font-size:13px;color:var(--muted)}.quiz-card{max-width:810px;margin:12px auto;background:var(--white);border:1px solid var(--line);border-radius:23px;padding:28px 34px;text-align:center;min-height:360px}.quiz-top{display:flex;justify-content:space-between;color:var(--muted);font-size:12px;margin-bottom:17px}.quiz-card h2{font-size:25px;margin-bottom:18px}.quiz-card .sprite{width:145px;height:145px;margin:auto}.quiz-options{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:13px;margin:22px 0 0}.quiz-options button{padding:12px;border:2px solid var(--line);border-radius:16px;background:#f6f3e9;font-size:42px;min-height:88px}.quiz-options button.correct{border-color:#638863;background:#e5efdd;opacity:1}.quiz-options button.wrong{border-color:#c7977a;background:#f3e4d6;opacity:1}.quiz-options button:disabled{opacity:1}.feedback{min-height:53px;margin-top:17px;font-size:15px;color:var(--green)}.feedback.incorrect{color:#99684a}.quiz-next{margin-top:0}.result-seal{width:80px;height:80px;line-height:76px;margin:0 auto 20px;border:2px solid #7d9672;outline:1px solid #b5c1a7;outline-offset:5px;border-radius:50%;font:40px/76px 'Songti SC',serif;color:var(--green);transform:rotate(-8deg)}.result-summary{font-size:15px;color:var(--muted);margin:14px auto;max-width:450px}.garden-head{display:flex;justify-content:space-between;align-items:end;margin-bottom:23px}.garden-head h1{font-size:35px}.garden-head p{font-size:14px;color:var(--muted);margin-top:6px}.object-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:15px}.object-card{background:var(--white);border:1px solid var(--line);padding:10px 10px 14px;border-radius:21px;text-align:center;position:relative;min-width:0}.object-card .sprite{width:150px;height:150px;margin:auto;mix-blend-mode:multiply;max-width:100%}.object-card .py{font-size:24px;color:var(--green)}.object-card strong{display:block;font:24px/1.5 'Songti SC',serif}.object-card small{display:block;color:var(--muted);font-size:11px}.collected:after{content:'已听';position:absolute;top:13px;right:14px;color:var(--green);font-size:10px}.progress-card{border:1px solid var(--line);padding:25px;background:var(--white);border-radius:18px;margin:22px 0}.progress-count{font:64px/1.4 Primer,sans-serif;color:var(--green)}.progress-count small{font:14px sans-serif;color:var(--muted)}.review-grid{display:flex;flex-wrap:wrap;margin:10px -5px}.review-token{padding:12px 21px;border-radius:15px;background:#ede9da;margin:5px;font-size:27px!important}.site-footer{max-width:1168px;display:flex;justify-content:space-between;margin:27px auto 0;padding:19px 0 30px;border-top:1px solid var(--line);font-size:11px;color:#8a8c7e}.site-footer button{font-size:11px}.overlay{position:fixed;top:0;left:0;right:0;bottom:0;z-index:30;display:flex;align-items:center;justify-content:center;padding:18px;background:#2b362960}.overlay[hidden]{display:none}.modal-sheet{width:620px;max-width:100%;max-height:90vh;overflow:auto;background:var(--paper);border-radius:22px;padding:26px;box-shadow:0 20px 90px #27362735;-webkit-overflow-scrolling:touch}.modal-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:17px}.modal-top h2{font-size:24px}.close{border:1px solid #cacdbc;border-radius:50%;width:36px;height:36px;font-size:23px;flex-shrink:0}.parent-copy h3{margin:22px 0 7px;font-size:15px}.parent-copy p{font-size:13px;line-height:1.9;color:#686f61}.parent-copy code{font-family:inherit;word-break:break-all;font-size:11px;display:block}.parent-copy .warning{color:#94623e}.trace-wrap{position:relative;height:270px;border-radius:15px;background:var(--white);overflow:hidden;touch-action:none}.trace-wrap canvas{position:absolute;top:0;left:0;width:100%;height:100%;touch-action:none}.trace-wrap:before{content:'';position:absolute;left:0;right:0;top:52px;height:49px;border-top:1px solid #bed0b2;border-bottom:1px dashed #b9c4a7;box-shadow:0 50px 0 -1px #fffdf7,0 51px 0 0 #becbae}.trace-ghost{position:absolute;width:100%;height:100%;text-align:center;font-size:151px!important;line-height:255px!important;color:#ced7be;pointer-events:none}.trace-note{font-size:12px;color:var(--muted);margin:14px 0}.trace-tools{display:flex;flex-wrap:wrap;margin-top:10px}.trace-tools button{background:#e4e8d8;padding:8px 17px;border-radius:11px;margin:5px}.toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%) translateY(20px);opacity:0;pointer-events:none;z-index:50;padding:12px 22px;border-radius:14px;background:#354739;color:#fffced;font-size:13px;max-width:88%;text-align:center;transition:opacity .2s,transform .2s}.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}.empty{text-align:center;padding:50px 20px}.empty img{width:150px;mix-blend-mode:multiply;margin:0 auto 20px}.empty p{color:var(--muted);font-size:14px;margin:12px}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@keyframes pulse{to{box-shadow:0 0 0 7px #7b96782a}}@keyframes draw-line{to{stroke-dashoffset:0}}@keyframes appear{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}.view{animation:appear .25s ease-out}
@media(min-width:1300px){.hero{min-height:438px}}
@media(max-width:900px){.topbar{padding:20px 24px}#app{padding:25px 24px}.hero-copy{padding-left:29px}h1{font-size:36px}.hero{min-height:360px}.hero-copy p{font-size:14px}.course-group .lesson-grid{grid-template-columns:repeat(3,1fr)}.learn-copy{padding:0 10px}.art-panel{min-height:320px}.site-footer{margin-left:24px;margin-right:24px}.object-grid{grid-template-columns:repeat(3,1fr)}.steps button{padding-left:17px;padding-right:17px}}
@media(max-width:620px){body{font-size:15px}.topbar{padding:16px 18px 13px;padding-top:calc(16px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px)));flex-wrap:wrap}.brand-mark{width:37px;height:39px;line-height:39px;font-size:26px;margin-right:9px}.brand strong{font-size:20px}.brand small{font-size:9px}.topbar nav{order:3;width:100%;justify-content:space-between;margin-top:17px;padding:4px}.topbar nav button{width:25%;padding:7px 5px;font-size:13px}.parent-button{font-size:11px}#app{padding:18px 16px 10px}.hero{display:flex;flex-direction:column;min-height:0;border-radius:22px}.hero-copy{padding:28px 26px 0;width:100%}.hero-copy h1{font-size:33px;line-height:1.4;margin-bottom:10px}.hero-copy p{max-width:100%;font-size:13px}.hero-copy .eyebrow{font-size:10px;margin-bottom:9px}.hero .button-row{margin-top:17px}.hero .primary,.hero .secondary{font-size:13px;padding:8px 17px;min-height:42px}.hero-image{margin-top:-7px;width:100%;max-height:300px;object-fit:cover}.hero .tag{display:none}.continue-bar{padding:14px 16px;margin-top:14px}.continue-bar .quiet{padding:5px 0;font-size:12px;min-height:40px}.mini-progress{width:115px}.section-heading{margin-top:25px}.section-heading h2{font-size:21px}.lesson-grid{grid-template-columns:1fr;grid-gap:10px}.lesson-tile{min-height:108px;padding:16px 19px 16px 65px}.lesson-num{position:absolute;left:17px;top:20px;font-size:24px}.lesson-tile h3{font-size:16px;margin:0 0 2px}.lesson-tile .py{font-size:20px}.lesson-tile .tile-status{top:auto;bottom:18px;font-size:10px}.course-header h1,.garden-head h1{font-size:29px}.course-header{display:block}.course-header p{font-size:12px}.course-group .lesson-grid{grid-template-columns:repeat(2,1fr);grid-gap:10px}.course-group .lesson-tile{padding:16px 13px;min-height:132px}.course-group .lesson-num{position:static;font-size:18px;margin-bottom:6px}.course-group .lesson-tile h3{font-size:14px}.course-group .lesson-tile .py{font-size:16px}.course-group .tile-status{top:17px;bottom:auto;right:12px}.lesson-heading{margin-bottom:12px}.lesson-heading h1{font-size:22px}.lesson-heading .muted{font-size:10px}.back{width:35px;height:35px;margin-right:10px;font-size:20px}.lesson-heading>.quiet{font-size:11px;padding:5px 2px}.steps{margin-bottom:17px;justify-content:space-between}.steps button{padding:8px 5px 12px;font-size:12px;flex:1}.step-dot{font-size:11px;margin-right:4px}.learn-panel{grid-template-columns:1fr;grid-gap:14px;min-height:0}.art-panel{min-height:0;height:200px}.art-panel .sprite{width:175px;height:175px}.girl-art{height:220px;width:52%;object-position:50% 28%}.letter-art{font-size:109px!important;padding-bottom:23px}.mouth{width:56px;height:54px;right:17px;top:14px}.art-caption{bottom:12px;left:16px;font-size:10px}.learn-copy{padding:0 6px}.token-strip{margin:0 -3px 7px}.token-strip button{font-size:19px;min-height:41px;min-width:43px;margin:3px;padding:1px 11px}.main-letter{font-size:61px!important;margin:0;line-height:1.5!important}.word-caption{margin:0 0 6px}.word-caption b{font-size:23px}.word-caption span{font-size:16px}.hint{font-size:15px;margin-bottom:9px}.listen{padding:8px 15px;min-height:43px;font-size:13px}.example-note{font-size:11px;margin-top:6px}.teacher-tip{padding:12px 14px;font-size:11px;margin-top:17px}.lesson-footer{margin-top:18px;padding-top:17px;align-items:center}.companion img{width:39px;height:48px;margin-right:8px}.companion strong{font-size:12px}.companion p{font-size:10px;line-height:1.6;max-width:135px}.lesson-footer .primary{padding:9px 13px;font-size:12px;margin-left:9px;min-height:43px}.tone-row{grid-gap:8px}.tone-tile{padding:6px 4px}.tone-tile .py{font-size:29px}.tone-tile small{font-size:10px}.quiz-card{padding:21px 16px;min-height:340px}.quiz-card h2{font-size:22px}.quiz-options{grid-gap:9px}.quiz-options button{font-size:31px;min-height:76px;padding:9px 2px}.feedback{font-size:13px;min-height:51px}.quiz-top{font-size:11px}.focus-card{padding:20px 12px}.pieces{min-height:100px}.piece{font-size:32px;padding:6px 16px;margin:4px}.blend-result{font-size:48px!important;min-height:77px}.blend-word{font-size:27px}.blend-select button{padding:6px 13px}.blend-area h2{font-size:21px}.object-grid{grid-template-columns:repeat(2,1fr);grid-gap:10px}.object-card{padding:5px 8px 12px;border-radius:17px}.object-card .sprite{width:125px;height:125px}.object-card strong{font-size:21px}.object-card .py{font-size:20px}.object-card small{font-size:10px}.garden-head{display:block}.garden-head .button-row{margin-top:12px}.garden-head p{font-size:12px}.site-footer{margin:22px 18px 0;padding-bottom:calc(25px + var(--safe-area-inset-bottom, env(safe-area-inset-bottom, 0px)));font-size:10px;display:block;text-align:center}.site-footer button{display:block;margin:auto;font-size:10px;padding-top:8px}.modal-sheet{padding:20px;max-height:87vh}.modal-top h2{font-size:21px}.trace-wrap{height:245px}.toast{bottom:18px;width:85%;font-size:12px}.parent-copy p{font-size:12px}.hero .primary .arrow{margin-left:12px}}
@media(max-width:350px){.topbar{padding-left:13px;padding-right:13px}#app{padding-left:12px;padding-right:12px}.hero-copy{padding-left:20px;padding-right:20px}.hero-copy h1{font-size:29px}.lesson-heading h1{font-size:19px}.object-card .sprite{width:110px;height:110px}.lesson-footer .companion img{display:none}.quiz-options button{font-size:27px}.course-group .lesson-tile h3{font-size:13px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
