:root{--ink:#203833;--muted:#697970;--green:#176653;--pale:#e9f1e9;--paper:#fffef9;--line:#dce4da;--gold:#f3ce63;--red:#b84538}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:#f5f6ef;font:17px/1.65 -apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif}button,input,select{font:inherit}button,a,input,select{touch-action:manipulation}button{cursor:pointer;border:0;border-radius:12px;padding:12px 20px;font-weight:650;transition:background .15s}button:disabled{opacity:.5;cursor:wait}button:hover{filter:brightness(.96)}button:focus-visible,a:focus-visible{outline:3px solid var(--gold);outline-offset:3px}input,select{width:100%;padding:13px;border:1.5px solid #bccdc2;border-radius:10px;background:white;color:var(--ink);min-height:50px}input:focus,select:focus{outline:3px solid #dceada;border-color:var(--green)}input:disabled,select:disabled{background:#f4f5ef;color:var(--ink);opacity:1}label{display:block;font-size:15px;font-weight:650}label input,label select{margin-top:7px}a{color:var(--green);text-decoration:none}header{max-width:1240px;margin:auto;padding:25px 36px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);gap:15px}.brand{font-size:23px;font-weight:800}.brand span{font-weight:400;font-size:14px;color:var(--muted);margin-left:13px}.quiet{background:transparent;color:var(--green);font-size:14px}.primary{background:var(--green);color:white}.secondary{background:var(--pale);color:var(--green)}main{max-width:1170px;margin:auto;padding:35px 26px 120px}#welcome{display:grid;grid-template-columns:1.3fr 1fr;gap:70px;align-items:center;min-height:72vh}.eyebrow{font-size:14px;font-weight:700;letter-spacing:2px;color:var(--green)}.hero h1{font-size:clamp(34px,4vw,52px);line-height:1.4;letter-spacing:-1px;margin:20px 0}.hero h1 em{font-style:normal;color:var(--green)}.hero p{color:var(--muted);font-size:18px}.badges{display:flex;flex-wrap:wrap;gap:10px;margin-top:28px}.badges span{border:1px solid #d7dfcc;padding:6px 12px;border-radius:30px;font-size:13px;background:#eef1df}.card{background:var(--paper);border:1px solid var(--line);border-radius:20px;padding:28px;box-shadow:0 8px 30px #26412a05}.login h2{font-size:23px;margin-top:0}.login label{margin:18px 0}.login button{width:100%;margin-top:8px}.muted{color:var(--muted);font-size:14px}.login .muted{font-size:12px;margin-top:20px}footer{text-align:center;font-size:14px;padding:26px;color:var(--green);border-top:1px solid var(--line);margin:0 25px}footer span{color:var(--muted);font-size:12px}h1,h2,h3,p{overflow-wrap:anywhere}.studentbar{display:flex;justify-content:space-between;align-items:center}.studentbar h1{font-size:28px;margin:5px 0 24px}nav{display:flex;gap:12px;flex-wrap:wrap;margin:10px 0 28px}nav button{background:white;color:var(--green);border:1px solid var(--line);font-size:15px}nav button.active{background:var(--green);color:white}nav button.trainingTab{border-style:dashed}.paperhead{display:flex;justify-content:space-between;align-items:center;gap:15px}.paperhead h2{margin:0;font-size:27px}.progress{text-align:right;flex-shrink:0}.progress strong{display:block;font-size:20px}.progress span{font-size:12px;color:var(--muted)}.notice{padding:14px 18px;border-radius:12px;background:#edf0df;font-size:14px}.sectionTitle{margin:32px 0 15px;font-size:20px;display:flex;align-items:center;gap:14px}.sectionTitle::before{content:'';width:5px;height:22px;background:var(--green);border-radius:3px}.questionGrid{display:grid;grid-template-columns:1fr 1fr;gap:18px;align-items:start}.question{background:var(--paper);border:1px solid var(--line);padding:24px;border-radius:16px;min-width:0}.qmeta{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);margin-bottom:8px}.qmeta b{color:var(--green);font-size:14px}.question h3{font-size:18px;line-height:1.75;margin:6px 0 17px;font-weight:650}.field{margin-top:15px}.field label{font-weight:500;font-size:16px}.choices{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.choices label{position:relative;cursor:pointer;display:flex;align-items:center;gap:5px;background:#f0f3eb;border:1px solid var(--line);padding:9px 12px;border-radius:10px;min-height:44px}.choices input{width:17px;min-height:17px;height:17px;accent-color:var(--green);margin:0}.choices label:has(input:checked){background:#dcebdd;border-color:var(--green)}.picture{display:flex;gap:9px;flex-wrap:wrap;padding:10px 0}.group{padding:6px 10px;border:1.5px solid #a7c7b4;max-width:120px;border-radius:10px;display:flex;flex-wrap:wrap;gap:4px}.dot{background:#e6b349;width:14px;height:14px;display:inline-block;border-radius:50%}.paperwork{font-size:12px;color:var(--muted);padding:9px 12px;border:1px dashed #c8d4c3;border-radius:8px}.actionbar{position:sticky;bottom:12px;z-index:5;margin-top:35px;background:#fffef9f5;border:1px solid var(--line);box-shadow:0 8px 40px #24402a19;padding:16px 20px;border-radius:16px;display:flex;align-items:center;justify-content:space-between;gap:15px;backdrop-filter:blur(10px)}.actionbar>span{font-size:13px;color:var(--muted)}.actionbar>div{display:flex;gap:10px}.feedback{padding:15px;background:#eff5eb;border-radius:12px;margin-top:14px;font-size:14px;border-left:4px solid var(--green)}.feedback.wrong{background:#fff0e7;border-color:var(--red)}.feedback.pending{background:#f1f2ec;border-color:#a4aea3;color:var(--muted)}.feedback ol{padding-left:22px;margin:10px 0}.feedback .tip{font-size:13px;border-top:1px solid #d7dfcf;padding-top:9px}.feedback .correctTitle{font-weight:700}.trainbtn{margin-top:14px;background:var(--gold);color:var(--ink);font-size:14px}.summary{border-radius:18px;background:var(--green);color:white;padding:25px;margin:25px 0}.summary strong{font-size:32px}.summary p{margin:8px 0}.summary .secondary{margin-top:12px}dialog{border:0;padding:30px;border-radius:20px;max-width:480px;width:calc(100% - 32px);color:var(--ink);box-shadow:0 20px 80px #0003}dialog::backdrop{background:#17362ba6}dialog h2{margin:0}dialog p{font-size:14px}.dialogactions{display:flex;justify-content:flex-end;gap:12px;margin-top:22px}[role=alert]{color:var(--red);font-size:14px}#toast{position:fixed;left:50%;bottom:100px;transform:translateX(-50%);border-radius:12px;background:#203833;color:#fff;max-width:90%;padding:12px 20px;z-index:30;display:none}.tableWrap{overflow-x:auto;background:white;border:1px solid var(--line);border-radius:14px}table{border-collapse:collapse;width:100%;font-size:14px}th,td{padding:12px 15px;text-align:left;border-bottom:1px solid var(--line);white-space:nowrap}th{background:#edf2e8}.toolbar{display:flex;gap:12px;flex-wrap:wrap;align-items:end;margin:20px 0}.toolbar select,.toolbar input{width:180px}.stats{display:flex;gap:18px;flex-wrap:wrap}.stats .card{flex:1;min-width:160px}.stats strong{font-size:30px;display:block}.detail{margin:20px 0}.detail h3{font-size:18px}[hidden]{display:none!important}@media(max-width:760px){header{padding:18px}.brand{font-size:20px}.brand span{display:block;margin:0;font-size:12px}main{padding:24px 16px 75px}#welcome{display:block}.hero{padding:10px 8px 32px}.hero h1{font-size:36px}.login{padding:22px}.questionGrid{grid-template-columns:1fr}.question{padding:20px}.paperhead h2{font-size:22px}.actionbar{padding:12px;bottom:5px;display:block}.actionbar>span{display:block;margin-bottom:8px}.actionbar>div{display:flex;justify-content:space-between}.actionbar button{padding:12px;font-size:14px;flex:1}nav{gap:8px}nav button{padding:10px;font-size:13px}.progress strong{font-size:15px}footer{margin:0 10px}.toolbar label{width:100%}.toolbar input,.toolbar select{width:100%}}
@media print{header,nav,.actionbar,footer,.notice,.trainbtn,#switchStudent{display:none!important}body{background:white}main{padding:0}.questionGrid{display:block}.question{break-inside:avoid;margin-bottom:14px;box-shadow:none}.question input{border:0;border-bottom:1px solid #aaa}.choices input{border:1px solid} .feedback{break-inside:avoid}}
.studentbar>button{flex-shrink:0;min-width:92px}.studentbar>div{min-width:0}@media(max-width:760px){.studentbar{gap:10px;align-items:flex-start}.studentbar>button{min-width:74px;padding:10px 4px}.studentbar h1{font-size:24px}.paperhead{align-items:flex-start}.paperhead>div:first-child{min-width:0}}
/* 手机优先：先学知识点，再做题 */
.knowledgeCard{padding:24px;margin:0 0 20px;background:#e5efe5;border:1px solid #bdd3be;border-radius:18px;scroll-margin-top:20px}.knowledgeCard h3{font-size:23px;margin:8px 0}.knowledgeCard ol{padding-left:25px}.knowledgeCard li{margin:10px 0}.workedExample{background:var(--paper);padding:16px;border-radius:12px;border-left:4px solid var(--green)}.knowledgeCard .tip{font-size:15px}.knowledgeJumps{margin:12px 0;gap:8px}.knowledgeJumps a{font-size:14px;padding:8px 12px;border-radius:30px}.panelSection{margin:32px 0}.panelSection h2{margin-bottom:8px}.classOverview{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.classCard{display:flex;flex-direction:column;align-items:flex-start;gap:8px;background:var(--paper);border:1px solid var(--line);text-align:left;padding:18px}.classCard strong{font-size:25px}.classCard.selected{border:2px solid var(--green);background:var(--pale)}.knowledgeCards{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.knowledgeStat{text-align:left;border:1px solid var(--line);padding:18px;background:var(--paper);display:flex;flex-direction:column;gap:7px;min-width:0}.knowledgeStat strong{font-size:27px}.knowledgeStat meter{width:100%;height:12px}.needsWork{background:#fff0e7;color:#973c2f}.reviewSoon{background:#fff5d7;color:#78610f}.doingWell{background:#e8f2e7;color:#176653}.empty{background:#f0f1ec;color:var(--muted)}.matrixCell{font-size:12px;padding:8px 10px;min-height:44px}.tableWrap{overscroll-behavior-x:contain}.toolbar a{padding:12px;border-radius:10px}#loginForm{max-width:490px;margin:30px auto}.stats strong{font-size:25px}.notice{overflow-wrap:anywhere}
@media(max-width:760px){.knowledgeCards{grid-template-columns:repeat(2,minmax(0,1fr))}.classOverview{grid-template-columns:repeat(2,minmax(0,1fr))}.classCard{padding:15px}.knowledgeStat{padding:14px}.knowledgeStat b{font-size:15px}.knowledgeStat .muted{font-size:12px}.knowledgeCard{padding:20px;font-size:18px}.knowledgeCard h3{font-size:22px}.knowledgeJumps{flex-wrap:nowrap;overflow:auto;padding-bottom:8px}.knowledgeJumps a{white-space:nowrap;flex-shrink:0}#questions input{font-size:19px;padding:14px}.choices label{min-height:50px;padding:11px 14px}.question h3{font-size:19px}.question .field label{font-size:17px}.actionbar{bottom:env(safe-area-inset-bottom,0px);padding-bottom:12px}.actionbar>div{flex-wrap:wrap}.actionbar button{min-height:48px}.stats{gap:10px}.stats .card{min-width:calc(50% - 10px);padding:15px}.stats strong{font-size:23px}.toolbar{gap:10px}.tableWrap::after{content:'左右滑动可查看完整表格';display:block;padding:8px 12px;font-size:12px;color:var(--muted)}#paperTabs{flex-wrap:nowrap;overflow:auto;padding:3px 0 8px}#paperTabs button{flex-shrink:0}header{gap:8px}header .quiet{white-space:nowrap}footer{padding-bottom:35px}}
/* 学生大字阅读：28px / 30px。教师面板不受影响。 */
.childView{--reading-size:28px;font-size:var(--reading-size);background:#f7f6ef}.childView.reading30{--reading-size:30px}.readingControls{max-width:1118px;margin:12px auto;padding:10px 20px;display:flex;align-items:center;flex-wrap:wrap;gap:12px;background:#e9efdf;border-radius:12px}.readingControls label{display:flex;align-items:center;gap:8px;font-size:18px}.readingControls select{width:auto;min-height:44px;padding:8px;margin:0;font-size:18px}.readingControls button{font-size:18px;min-height:44px;background:white;color:var(--green);border:1px solid #bccdc2}.readingControls>span{font-size:18px;color:#526350}.readingRuby{ruby-position:over;ruby-align:center}.readingRuby>rt{font-family:Arial,sans-serif;font-size:.54em;line-height:1.2;font-weight:400;letter-spacing:0;color:#405c50}.pinyinOff .readingRuby>rt{display:none}.childView .questionGrid{grid-template-columns:1fr}.childView .question{padding:30px}.childView .question h3,.childView .question .field label,.childView .knowledgeCard,.childView .feedback,.childView #questions input,.childView .choices label,.childView .workedExample,.childView .knowledgeCard .tip,.childView .knowledgeCard .muted,.childView .feedback .tip,.childView .paperwork,.childView .notice{font-size:var(--reading-size);line-height:1.9}.childView.pinyinOn .question h3,.childView.pinyinOn .question .field label,.childView.pinyinOn .knowledgeCard,.childView.pinyinOn .feedback,.childView.pinyinOn .notice{line-height:2.35}.childView .question h3{font-weight:650;margin-top:16px}.childView #questions input{min-height:68px;padding:12px 16px;line-height:1.5}.childView .choices{gap:14px}.childView .choices label{padding:12px 18px;min-height:66px}.childView .choices input{width:25px!important;min-height:25px!important;height:25px!important;padding:0!important}.childView .sectionTitle{font-size:30px;line-height:2}.childView .knowledgeCard h3{font-size:32px}.childView .question .qmeta,.childView .question .qmeta b{font-size:22px}.childView .summary p{font-size:var(--reading-size);line-height:2.1}.childView .summary strong{font-size:36px}.childView .summary>div{font-size:var(--reading-size);line-height:2.2}.childView .summary button,.childView .trainbtn{font-size:24px;padding:15px}.childView #startForm label,.childView #startForm input,.childView #startForm select,.childView #startForm button{font-size:var(--reading-size);line-height:1.8}.childView #startForm .muted{font-size:20px;line-height:1.8}.childView .hero p{font-size:var(--reading-size);line-height:2}.childView .login h2{font-size:30px;line-height:2}.childView #welcome{gap:38px;grid-template-columns:1fr 1fr}.childView .paperhead h2{font-size:30px}.childView .paperhead .muted{font-size:22px}.childView .progress strong{font-size:22px}.childView #saveStatus{font-size:18px}.childView .actionbar button{font-size:var(--reading-size);padding:12px 16px;min-height:60px}.childView #bottomProgress{font-size:18px}.childView .question,.childView .knowledgeCard{scroll-margin-bottom:160px}.childView .feedback ol{padding-left:36px}.childView .group{max-width:170px;padding:12px;gap:8px}.childView .dot{width:18px;height:18px}.childView #questions{padding-bottom:20px}
@media(max-width:760px){.readingControls{margin:10px 16px;padding:12px;gap:8px}.readingControls>span{width:100%;font-size:17px}.childView main{padding-left:16px;padding-right:16px}.childView .question,.childView .knowledgeCard{padding:20px}.childView #welcome{display:block}.childView .paperhead{display:block}.childView .progress{text-align:left;display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin:10px 0 18px}.childView .paperhead .muted{font-size:20px}.childView .actionbar{padding:10px}.childView .actionbar>div{gap:8px}.childView .actionbar button{padding:10px 7px;min-height:60px}.childView .actionbar>span{font-size:16px;margin-bottom:6px}.childView .question h3{margin-bottom:22px}.childView .knowledgeCard h3{font-size:32px}.childView .choices label{width:100%;font-size:var(--reading-size)}.childView .hero{padding:10px 0 25px}.childView .hero h1{font-size:36px}.childView .studentbar h1{font-size:28px}.childView .notice{padding:16px}.childView #reportSummary{padding:20px}.childView .summary button{width:100%;font-size:24px}.childView .trainbtn{width:100%;font-size:24px}.childView .feedback{padding:14px}.childView .login{padding:20px}.childView .feedback ol{padding-left:30px}}
.accountTabs{display:flex;gap:10px;margin:15px 0}.accountTabs button{flex:1}.accountHistory{border:1px solid var(--line);border-radius:14px;background:var(--paper);padding:16px 20px;margin:20px 0}.accountHistory summary{cursor:pointer;font-weight:650}.historyRow{border-top:1px solid var(--line);padding:18px 0}.historyRow p{margin:8px 0}.childView #loginFormStudent label,.childView #loginFormStudent input,.childView #loginFormStudent button{font-size:var(--reading-size);line-height:1.8}.childView .accountTabs button{font-size:22px;padding:12px 8px}.childView .accountHistory{font-size:var(--reading-size);line-height:2}.childView #accountStatus{font-size:22px;line-height:1.9}.childView #bindAccount{font-size:24px}.childView #loginFormStudent .muted{font-size:20px}.childView .historyRow .muted{font-size:20px}
.childView #toast{width:min(90vw,600px);max-width:90vw;font-size:22px;line-height:1.7;bottom:140px;text-align:center}.childView.pinyinOn .question h3,.childView.pinyinOn .question .field label,.childView.pinyinOn .knowledgeCard,.childView.pinyinOn .feedback,.childView.pinyinOn .notice{line-height:2.1}
.childView .sectionTitle{display:block;overflow-wrap:anywhere}.childView .sectionTitle::before{display:inline-block;margin-right:12px;vertical-align:middle}.childView .readingRuby{margin-inline:1px}
