:root{--ink:#233f4d;--muted:#607780;--blue:#267a99;--pale:#e5f2f5;--paper:#fffcf6;--green:#597954;--line:#dce5e3;--orange:#e7ac6c;--shadow:0 12px 35px #294c5e0b}*{box-sizing:border-box}body{margin:0;background:#f4f7f3;color:var(--ink);font-family:ui-rounded,'Avenir Next','PingFang SC',system-ui,sans-serif;font-size:16px;line-height:1.55}button,input,select,textarea{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer;border:1px solid var(--line);border-radius:13px;background:white;color:var(--ink);padding:11px 17px;font-weight:650;display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:46px;text-align:center}button:hover:not(:disabled){border-color:var(--blue);background:#edf7f7}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid #e4a350;outline-offset:4px}button:disabled{cursor:default;opacity:.48}a{color:var(--blue)}svg{width:22px;height:22px;flex-shrink:0;vertical-align:middle}h1,h2,h3,p{margin:0 0 14px}h1{font-size:clamp(32px,4vw,54px);line-height:1.12;letter-spacing:-1.6px;font-weight:760}h2{font-size:27px;line-height:1.25;letter-spacing:-.5px}h3{font-size:20px;line-height:1.3}.muted,.small{color:var(--muted)}.small{font-size:13px}.eyebrow{font-size:12px;letter-spacing:2px;text-transform:uppercase;font-weight:750;color:var(--green);margin-bottom:13px}.shell{max-width:1320px;margin:auto;padding:0 40px}header{height:96px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);gap:16px}.brand{border:0;background:transparent;padding:0;gap:12px;font-size:20px;letter-spacing:-.5px}.brand small{display:block;font-size:10px;text-transform:uppercase;letter-spacing:2px;text-align:left;color:var(--muted)}.brandmark{background:#d7e8e8;border-radius:15px;display:grid;place-items:center;width:47px;height:47px}.brandmark svg{width:36px;height:36px}.header-actions{display:flex;align-items:center;gap:12px}.pill{border:1px solid var(--line);border-radius:30px;padding:7px 12px;font-size:12px;color:var(--muted);display:inline-flex;align-items:center;gap:6px}.pill svg{width:15px;height:15px}.icon-btn{width:46px;height:46px;padding:0;flex:0 0 46px;border-radius:50%}.layout{display:grid;grid-template-columns:215px 1fr;gap:40px;padding-top:30px}aside{border-right:1px solid var(--line);padding-right:25px}nav{display:grid;gap:7px}nav button{border:0;background:transparent;justify-content:flex-start;text-align:left;font-size:14px;padding:12px}.active{background:var(--pale)!important;color:var(--blue)!important}.aside-note{margin-top:35px;padding:18px;background:#eaf0e4;border-radius:16px;font-size:13px;color:#536c4f}.aside-note svg{margin-bottom:10px}.hero{background:#e5eff0;border:1px solid #d8e5e5;border-radius:26px;display:grid;grid-template-columns:1.3fr 1fr;min-height:300px;overflow:hidden;padding:36px;gap:16px;position:relative}.hero p{max-width:440px;font-size:15px;color:#526d77}.hero-art{width:100%;height:245px;align-self:center}.primary{background:var(--blue);border-color:var(--blue);color:white}.primary:hover:not(:disabled){background:#1f637f;color:white}.secondary{background:#f4ead9;border-color:#f4ead9}.row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.between{justify-content:space-between}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:22px 0 32px}.stat{background:var(--paper);padding:19px 22px;border:1px solid var(--line);border-radius:17px;display:flex;align-items:center;gap:15px}.stat>svg{width:27px;height:27px;color:var(--blue)}.stat strong{font-size:22px;display:block;line-height:1.1}.stat small{font-size:12px;color:var(--muted)}.section-head{margin:25px 0 20px}.section-head h2{margin-bottom:4px}.cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.card{background:var(--paper);border:1px solid var(--line);border-radius:19px;padding:22px;box-shadow:var(--shadow);position:relative}.card.locked{background:#eff2ed;box-shadow:none}.cardtop{display:flex;justify-content:space-between;gap:12px;margin-bottom:17px}.badge{font-size:11px;font-weight:700;color:var(--green);letter-spacing:.6px;text-transform:uppercase}.lesson-art{width:61px;height:61px;background:#e0edef;border-radius:18px;display:grid;place-items:center;color:#497c90}.lesson-art svg{width:32px;height:32px}.card p{font-size:14px;color:var(--muted);margin:8px 0 17px}.card h3{margin:0}.card .row button{flex:1}.meter{height:6px;background:#e3eae5;border-radius:6px;overflow:hidden;margin:16px 0}.meter span{height:100%;display:block;background:#83aaa0;border-radius:6px}.groupbar{padding:19px 22px;background:#eaf0e6;border-radius:16px;margin-top:20px}.groups{display:flex;gap:8px;overflow-x:auto;padding:3px 3px 15px;margin-bottom:10px}.groups button{min-width:77px;font-size:13px;padding:8px 12px}.bilingual{display:block;font-size:13px;color:var(--muted);font-weight:400;letter-spacing:0;line-height:1.6;margin-top:7px}.hero .bilingual{margin-top:10px}.panel{background:var(--paper);border:1px solid var(--line);border-radius:22px;padding:28px;margin-bottom:20px}.notice{background:#f3ecde;border:1px solid #eadfc9;padding:14px 17px;border-radius:13px;font-size:13px;color:#6e614c;margin:15px 0}.steps{display:flex;gap:7px;overflow-x:auto;padding:2px 3px 16px;margin:20px 0}.steps button{font-size:13px;white-space:nowrap;min-width:110px}.step-body{min-height:320px}.big-line{font-size:clamp(24px,3vw,36px);font-weight:700;margin:24px 0;line-height:1.3}.choices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:22px 0}.choices button{min-height:84px;font-size:18px}.correct{background:#e4efdc!important;border-color:#7e9f6b!important}.wrong{background:#fff0db!important;border-color:#d9ab6e!important}.feedback{padding:14px 18px;background:#eaf2e7;border-radius:12px;margin:15px 0;min-height:50px}.sequence{display:grid;gap:10px;list-style:none;padding:0}.sequence li{background:white;border:1px solid var(--line);border-radius:13px;padding:12px 15px;display:flex;gap:13px;align-items:center}.sequence li>span{flex:1}.sequence strong{font-size:12px;color:var(--blue)}.sequence .icon-btn{width:42px;height:42px;min-height:42px;flex-basis:42px}.video-wrap{aspect-ratio:16/9;background:#e9efeb;border-radius:17px;display:grid;place-items:center;padding:20px;text-align:center;overflow:hidden}.video-wrap iframe{width:100%;height:100%;border:0}.video-wrap:has(iframe){padding:0}.video-wrap p{max-width:500px}.practice-box{padding:22px;background:#e8f0ef;border-radius:17px;margin:20px 0}.record-row{display:flex;flex-wrap:wrap;gap:12px;align-items:center}.recording{background:#b44d46;color:white;animation:pulse 1s infinite}@keyframes pulse{50%{opacity:.65}}audio{max-width:100%;width:100%;margin:12px 0}label{display:block;margin:14px 0 7px;font-size:14px;font-weight:650}input,textarea,select{width:100%;border:1px solid #becfce;border-radius:10px;padding:10px 12px;background:white;color:var(--ink)}input[type=checkbox]{width:19px;height:19px;margin-right:8px;vertical-align:middle}textarea{resize:vertical;min-height:80px}details{border-top:1px solid var(--line);padding:14px 0;margin-top:12px}summary{cursor:pointer;font-size:14px;color:var(--blue)}.record-item{padding:18px 0;border-bottom:1px solid var(--line)}footer{margin-top:42px;padding:25px 0 35px;font-size:12px;color:var(--muted);border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:16px}.empty{text-align:center;padding:45px 20px;color:var(--muted)}dialog{border:1px solid var(--line);border-radius:22px;padding:28px;width:440px;max-width:calc(100% - 28px);color:var(--ink);background:var(--paper)}dialog::backdrop{background:#19313e66;backdrop-filter:blur(3px)}dialog h2{font-size:23px}#toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);padding:13px 20px;border-radius:13px;background:var(--ink);color:white;max-width:90%;z-index:20;display:none}.quote{border-left:3px solid #9fbcb8;padding-left:18px}.progress-list{display:grid;gap:8px}.progress-row{display:flex;justify-content:space-between;gap:15px;padding:12px;background:#edf3ee;border-radius:10px;font-size:14px}.check-label{display:flex;align-items:center;gap:6px}.test-count{font-size:12px;letter-spacing:1px;color:var(--green);font-weight:700}.source-link{overflow-wrap:anywhere}.danger{color:#a34841}.admin-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
@media(max-width:1050px){.shell{padding:0 24px}.layout{grid-template-columns:175px 1fr;gap:24px}aside{padding-right:16px}.hero{padding:26px;grid-template-columns:1.4fr 1fr}.hero-art{height:210px}.stats{gap:9px}.stat{padding:16px 12px;gap:9px}.stat strong{font-size:20px}}
@media(max-width:760px){.shell{padding:0 18px}header{height:82px}.brand{font-size:17px}.brandmark{width:40px;height:40px}.header-actions .pill{display:none}.layout{display:block;padding-top:18px}aside{border:0;padding:0}nav{display:flex;overflow:auto;margin-bottom:20px;gap:3px}nav button{white-space:nowrap;min-height:44px;padding:10px;font-size:12px}nav button svg{width:18px}.aside-note{display:none}.hero{padding:25px;grid-template-columns:1fr .72fr;min-height:250px;border-radius:20px;gap:0}.hero-art{height:190px;width:120%;margin-left:-12px}.hero p{font-size:13px}.hero .primary{padding:10px 13px;font-size:13px}h1{font-size:35px}.eyebrow{font-size:10px}.stats{margin:17px 0 26px}.stat{display:block;padding:13px 10px}.stat>svg{width:19px;height:19px;margin-bottom:5px}.stat strong{font-size:19px}.stat small{font-size:10px}.cards{gap:12px}.card{padding:18px}.card h3{font-size:18px}.card p{font-size:12px}.lesson-art{width:46px;height:46px;border-radius:13px}.lesson-art svg{width:25px;height:25px}.cardtop{margin-bottom:12px}.card .row button{font-size:12px;padding:10px}.panel{padding:21px}.choices{gap:8px}.choices button{font-size:16px;padding:10px}.admin-grid{grid-template-columns:1fr}.section-head h2{font-size:23px}.steps button{min-width:98px}.header-actions{gap:5px}footer{font-size:10px}.pill{font-size:10px}}
@media(max-width:430px){.hero{grid-template-columns:1fr .5fr;padding:23px 20px}.hero-art{width:155%;margin-left:-23px;opacity:.9;height:175px}h1{font-size:31px}.hero p{max-width:230px}.cards{grid-template-columns:1fr}.card{display:block}.choices{grid-template-columns:1fr}.choices button{min-height:58px}.brand small{font-size:8px}.brand{gap:8px;font-size:15px}.sequence li{padding:10px;gap:8px;font-size:14px}.sequence .icon-btn{width:36px;height:40px;flex-basis:36px}.row>button{max-width:100%}.groupbar .row{gap:8px}.video-wrap{aspect-ratio:auto;min-height:205px}.video-wrap:has(iframe){aspect-ratio:16/9;min-height:0}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;scroll-behavior:auto!important}}
.button-label{display:block;line-height:1.35}.button-label .bilingual{font-size:11px;line-height:1.35;margin-top:4px;color:inherit;opacity:.8}nav .button-label{text-align:left}nav button{align-items:center}.steps .button-label .bilingual{text-align:center}
main{min-width:0}.layout{grid-template-columns:215px minmax(0,1fr)}
@media(max-width:1050px){.layout{grid-template-columns:175px minmax(0,1fr)}}
.sequence .icon-btn{width:44px;height:44px;min-height:44px;flex-basis:44px}
/* Child-friendly refinement: fewer choices, visible steps, consistent card rhythm. */
.parent-entry{border-radius:24px;font-size:13px;white-space:nowrap;padding:10px 16px;background:var(--paper)}
.child-progress{display:flex;align-items:center;gap:10px;margin:22px 0;padding:14px 19px;border:1px solid var(--line);border-radius:15px;background:var(--paper);font-size:14px}.child-progress>span:last-child{margin-left:auto;color:var(--muted);font-size:12px}.section-head{align-items:flex-end}.card{display:flex;flex-direction:column;min-width:0}.card h3{min-height:64px}.card>.meter{margin-top:auto;padding-top:0;flex-shrink:0}.card>.row{flex-wrap:nowrap;gap:12px}.card>.row>small{white-space:nowrap}.card>.row>button{min-width:0;flex:1;min-height:57px}.card .eyebrow{font-size:11px}.cardtop{align-items:center}.cards{align-items:stretch}.steps{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:9px;overflow:visible;padding:0;margin:20px 0}.steps button{min-width:0;white-space:normal;display:flex;flex-direction:column;padding:12px 6px;gap:7px;border-radius:16px;font-size:13px;min-height:96px}.step-number{width:27px;height:27px;flex:0 0 27px;display:grid;place-items:center;border-radius:50%;background:#eaf0ed;font-size:13px}.step-number svg{width:18px;height:18px}.active .step-number{background:var(--blue);color:white}.steps button.completed:not(.active) .step-number{background:#e1ebd9;color:var(--green)}.lesson-type{display:inline-block;font-size:12px;color:var(--muted);background:#eaf0ed;padding:5px 11px;border-radius:20px}.step-body{padding:30px}.step-body h3{font-size:25px}.step-body>.primary,.step-body>#feedback>.primary{min-height:58px;margin-top:12px}.practice-box{padding:25px}.practice-box>.primary{min-height:64px;font-size:17px}.choices button{min-height:94px;border-width:2px;font-weight:700;background:#fff}.choices button:hover:not(:disabled){transform:translateY(-2px)}.check-label{padding:12px 14px;background:#eef3ec;border-radius:12px;font-size:14px;align-items:flex-start;line-height:1.6}.check-label input{flex:0 0 21px;margin-top:2px}.record-row button,.record-item .row button{min-height:50px}.parent-shortcuts{margin:18px 0 22px}.media-form{display:grid;grid-template-columns:1fr 1fr;gap:25px}.media-form input[type=file]{font-size:12px;min-width:0;width:100%;padding:10px 8px}.media-form>div{min-width:0}.media-admin h3{margin-bottom:5px}.source-scene{margin:0 0 19px;background:#e5edea;border-radius:17px;overflow:hidden}.source-scene img{display:block;width:100%;height:auto;aspect-ratio:16/9;object-fit:contain;background:#e5edea}.source-scene figcaption{padding:7px 12px;font-size:11px;color:var(--muted);background:#f0f4ec}.card-scene{margin:-22px -22px 20px;border-radius:19px 19px 0 0}.source-practice{border:1px solid #b9d0ca;padding:20px;border-radius:18px;margin-bottom:25px;background:#eef5f0}.source-practice .source-scene{margin-bottom:5px}.source-words{font-size:25px;line-height:1.4}.source-practice>.small{margin:8px 0 0}.header-actions .pill{font-size:11px}
@media(max-width:1050px){.hero{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr)}.card h3{min-height:91px}.card>.row{flex-wrap:wrap}.card>.row>button{flex-basis:100%}.media-form{grid-template-columns:1fr}.header-actions .pill{display:none}}
@media(max-width:760px){nav{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));overflow:visible;gap:7px;margin-bottom:18px}nav button{justify-content:center;flex-direction:column;padding:10px 4px;font-size:11px;gap:5px;border:1px solid var(--line);background:#fffcf6;min-width:0;white-space:normal;border-radius:15px}nav .button-label{text-align:center}nav .button-label .bilingual{font-size:10px}nav button svg{width:21px;height:21px}.hero{grid-template-columns:minmax(0,1fr) minmax(0,.7fr)}.hero-art{width:100%;margin:0;height:auto;min-height:170px}.hero h1{font-size:clamp(28px,5vw,39px)}.hero p{font-size:13px}.hero .primary{min-height:58px}.parent-entry{padding:9px 12px;font-size:12px;min-height:44px}.parent-entry svg{width:19px;height:19px}.brand small{font-size:8px}.child-progress{padding:12px;margin:18px 0;font-size:12px}.child-progress>span:last-child{font-size:10px}.steps{gap:6px}.steps button{min-height:86px;font-size:11px;padding:10px 3px}.steps .button-label .bilingual{font-size:10px}.step-body{padding:22px}.step-body h3{font-size:23px}.card h3{min-height:65px}.card-scene{margin:-18px -18px 18px}.choices button{min-height:84px}.practice-box{padding:20px}.source-practice{padding:16px}.section-head .pill{font-size:10px}.section-head>div{min-width:0}.section-head h2{font-size:24px}}
@media(max-width:430px){.shell{padding:0 14px}.brand{gap:6px;font-size:14px}.brandmark{width:34px;height:38px}.brandmark svg{width:28px}.brand small{font-size:7px;letter-spacing:1.2px}.header-actions{gap:0}header{gap:8px;height:76px}.parent-entry{padding:8px 10px;font-size:11px}.hero{grid-template-columns:minmax(0,1fr) 105px;padding:23px 20px;gap:0}.hero-art{width:120%;margin-left:-10px;min-height:150px}.hero h1{font-size:29px;letter-spacing:-1px}.hero p{font-size:12px}.hero .primary{padding:12px;font-size:13px}.card h3{min-height:0;margin-bottom:20px}.card>.row{flex-wrap:nowrap}.card>.row>button{flex-basis:auto}.card .eyebrow{font-size:10px}.child-progress{gap:7px;flex-wrap:wrap}.child-progress>span:last-child{display:none}.steps button{font-size:10px;min-height:87px;border-radius:13px}.step-number{width:24px;height:24px;flex-basis:24px}.steps .button-label .bilingual{font-size:9px}.step-body{padding:19px}.practice-box{padding:17px}.practice-box>.primary{font-size:15px}.choices{grid-template-columns:1fr;gap:10px}.choices button{min-height:64px}.sequence li{flex-wrap:wrap;gap:8px}.sequence li>strong{display:none}.sequence li>span{flex:1;min-width:80px}.sequence .icon-btn{width:44px;height:44px;flex-basis:44px}.panel{padding:19px}.admin-grid .row>button,.media-form .row>button{flex:1 1 100%}.source-words{font-size:21px}.progress-row{font-size:12px;flex-wrap:wrap}.source-practice{padding:13px}.lesson-type{font-size:10px}.big-line{overflow-wrap:anywhere}.section-head{gap:10px}}
@media(max-width:350px){.hero{grid-template-columns:1fr;padding:22px}.hero-art{display:none}.hero p{max-width:none}.hero h1{font-size:31px}.steps{gap:4px}.steps button{font-size:9px;padding:9px 2px}.steps .button-label .bilingual{font-size:8px}.section-head h2{font-size:22px}}

/* Group picker wraps into balanced rows; labels never split vertically. */
.groups{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:9px;overflow:visible;padding:3px;margin:22px 0 26px}
.groups button{width:100%;min-width:0;min-height:56px;padding:10px 8px;gap:7px;border-radius:14px;white-space:nowrap;font-size:12px;flex-direction:row;justify-content:center}
.groups .group-label{white-space:nowrap;line-height:1.3;flex:0 0 auto}
.groups button svg{width:15px;height:15px;flex:0 0 15px;opacity:.65}
.groups button.active{border-color:#86b5c3;box-shadow:0 0 0 1px #86b5c3 inset}
@media(min-width:761px) and (max-width:1100px){.groups{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:760px){.groups{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.groups button{min-height:54px;font-size:12px}}
@media(max-width:430px){.groups{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.groups button{font-size:12px;padding:10px 6px;min-height:50px}}
.source-practice audio{display:block;width:100%;max-width:100%;margin:14px 0 8px}.source-practice .source-scene{max-width:640px;margin-left:auto;margin-right:auto}
