:root{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;color:#263632;background:#f4f6f3;font-size:15px;line-height:1.65;--green:#245949;--muted:#6f7f78;--border:#dce4dd}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,.button{border:1px solid var(--border);border-radius:8px;padding:9px 16px;color:var(--green);background:white;cursor:pointer;text-decoration:none;display:inline-block}button:hover,.button:hover{background:#edf3ed}button:disabled{opacity:.5;cursor:not-allowed}.primary{background:var(--green);color:white;border-color:var(--green)}.primary:hover{background:#174536}.danger{color:#a33e38}.small{font-size:12px;color:var(--muted)}.muted{color:var(--muted)}h1{font-size:30px;line-height:1.25;margin:8px 0 14px}h2{font-size:20px;margin:0 0 16px}h3{font-size:16px}p{margin:8px 0}header{background:#fff;border-bottom:1px solid var(--border);padding:18px max(20px,calc((100vw - 1200px)/2));display:flex;gap:14px;justify-content:space-between;align-items:center}header strong{font-size:18px}header small{display:block;color:var(--muted);font-size:11px;letter-spacing:2px}nav{display:flex;gap:8px;flex-wrap:wrap}nav button{padding:7px 12px}nav .active{background:#e3eee7}main{max-width:1240px;margin:auto;padding:30px 20px 70px}.lead{color:var(--muted);margin-bottom:24px}.card{background:white;border:1px solid var(--border);border-radius:12px;padding:24px;margin-bottom:20px}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:20px 0}.stat{background:white;border:1px solid var(--border);padding:18px;border-radius:10px}.stat b{display:block;font-size:28px;font-weight:600}.stat span{font-size:12px;color:var(--muted)}label{display:block;font-size:13px;color:#455e52;margin-bottom:12px}label input,label select,label textarea{display:block;margin-top:6px;width:100%;border:1px solid #c9d6cd;border-radius:7px;padding:9px 11px;background:#fff;color:#22352b}input[type=checkbox]{display:inline-block;width:auto;margin:0 7px 0 0;vertical-align:middle}.checks{display:flex;gap:8px 20px;flex-wrap:wrap}.checks label{margin:8px 0}.row{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap}.buttons{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}.fieldgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.info{padding:14px 16px;background:#eef4ee;border-left:3px solid #609878;border-radius:5px;margin:12px 0}.warning{background:#fff6e4;border-color:#c09b47}.error{background:#fff0ec;border-color:#ab5c4b}.badge{display:inline-block;font-size:12px;background:#eef3ec;padding:2px 8px;border-radius:30px;margin-left:7px}.task{padding:18px 0;border-top:1px solid #e5ece5;display:flex;justify-content:space-between;align-items:center;gap:14px}.task strong{display:block}.tag{color:#b44c3e}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;text-align:left;font-size:13px}th{font-weight:500;color:#687e6e;background:#f3f6f2}th,td{padding:12px 10px;border-bottom:1px solid var(--border);vertical-align:top;overflow-wrap:anywhere}td .buttons{margin:4px 0}.prompt{font-size:27px;font-weight:500;line-height:1.55;white-space:pre-line;overflow-wrap:anywhere;margin:30px 0}.quiz{max-width:800px;margin:auto}.quiz input{font-size:21px;padding:14px;width:100%;border:1px solid #b8cabb;border-radius:8px}.choices{display:grid;gap:10px}.choices button{text-align:left;padding:15px;white-space:normal;overflow-wrap:anywhere}.choices .selected{border:2px solid var(--green);background:#edf5ee}.feedback{font-size:16px;padding:20px;background:#edf5ee;border-radius:8px;margin-top:20px}.feedback.wrong{background:#fff2e7}.feedback b{display:block;margin-bottom:10px}.progress{height:6px;background:#e4ece4;border-radius:3px;overflow:hidden;margin:15px 0}.progress i{display:block;height:100%;background:#518a67}.numbers{display:flex;flex-wrap:wrap;gap:5px;margin:20px 0}.numbers button{min-width:36px;padding:5px}.numbers .answered{background:#e4eee4}.numbers .selected{border-color:var(--green)}.login{max-width:480px;margin:70px auto}.calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:7px}.calendar button{padding:12px 3px;min-height:68px;font-size:12px}.calendar .done{background:#e1eddf}.calendar .picked{outline:2px solid #477957}.word-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.word-item{padding:12px;background:#f7f9f5;border-radius:8px;overflow-wrap:anywhere}.word-item b{display:block}details{margin:10px 0;border:1px solid var(--border);border-radius:8px;padding:12px}summary{cursor:pointer;color:var(--green)}#notice{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);max-width:90vw;background:#243e31;color:white;padding:12px 20px;border-radius:8px;display:none;z-index:10}.linkbox{overflow-wrap:anywhere;padding:12px;background:#f3f6f0;font-size:13px}.coverage{font-size:13px;color:#6e5840}.eyebrow{font-size:11px;letter-spacing:2px;color:#6d8773}.empty{text-align:center;padding:35px 10px;color:var(--muted)}@media(max-width:700px){header{padding:15px;display:block}nav{margin-top:14px}main{padding:22px 14px}.grid,.word-list{grid-template-columns:1fr}.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.card{padding:18px}.fieldgrid{grid-template-columns:1fr}.task{align-items:flex-start}.task button{padding:8px 12px}.prompt{font-size:23px}.login{margin:35px 14px}.calendar{gap:4px}.calendar button{font-size:11px}.stat{padding:14px}.table-wrap{overflow:visible}table,tbody,tr,td{display:block}thead{display:none}tr{border-bottom:1px solid #c8d8c9;padding:12px 0}td{border:0;padding:7px 0}td:before{content:attr(data-label);display:block;color:var(--muted);font-size:11px}h1{font-size:26px}}
/* Keep full-bank question navigation usable on phones. */
.numbers{max-height:210px;overflow-y:auto;padding:5px;border:1px solid var(--border);border-radius:8px}
/* Focused student app: one screen, one primary action. Teacher layout is unchanged. */
.student-app{background:#f8faf6;color:#213a2c}.student-app .app-header{max-width:680px;margin:auto;border:0;background:transparent;padding:20px 24px;min-height:72px;display:flex;justify-content:space-between}.app-header-left{display:flex;gap:15px;align-items:center}.app-logo{font-weight:700;font-size:20px}.app-identity{font-size:13px;color:#68806d}.app-demo{display:inline-block;font-size:10px;border:1px solid #d3dfd2;border-radius:4px;padding:0 4px;margin-left:7px}.app-text,.app-back{border:0;background:transparent;color:#647c69;padding:10px 8px;box-shadow:none}.app-back{color:#244e36;padding-left:0}.app-text:hover,.app-back:hover{background:#eef4eb}.student-app .app-main{max-width:620px;margin:0 auto;padding:30px 24px 50px;min-height:calc(100dvh - 75px)}.app-page-head{margin-bottom:35px}.app-page-head h1{font-size:32px;letter-spacing:-.7px}.app-page-head p{color:#7b8c7d;font-size:14px;margin-top:14px}.app-date{color:#889789;font-size:12px;margin:-20px 0 24px}.app-task-list{display:grid;gap:14px}.app-choice{display:flex;align-items:center;justify-content:space-between;gap:20px;width:100%;border:1px solid #dbe5d7;background:#fff;border-radius:14px;padding:23px 22px;text-align:left;color:#264b33;text-decoration:none;min-height:100px}.app-choice b{font-size:18px;font-weight:600;display:block}.app-choice small{font-size:13px;color:#8a998a;display:block;margin-top:7px}.app-choice>span:last-child{font-size:27px;font-weight:300;color:#8da28e}.app-secondary{display:flex;justify-content:center;gap:18px;flex-wrap:wrap;margin-top:35px}.app-secondary .app-text{font-size:13px}.app-done,.app-list-date{color:#839581;font-size:12px;margin:15px 0 0}.app-list-date{margin:5px 0 -7px}.app-start{text-align:center;padding-top:24px}.app-start-number,.app-finish-count,.app-total-big{font-size:88px;line-height:1.2;font-weight:600;letter-spacing:-4px;color:#31583a;margin:22px 0}.app-start-number span,.app-finish-count span{font-size:22px;letter-spacing:0;font-weight:400;margin-left:10px}.app-start-detail{font-size:14px;color:#7b8c79}.app-start-rule{color:#7b8c79;font-size:14px;max-width:280px;margin:22px auto 38px;line-height:1.9}.app-primary{display:block;width:100%;border-radius:12px;font-size:17px;padding:16px;margin-top:23px;min-height:56px}.app-start-foot{font-size:12px;color:#96a38e;margin:24px 0}.app-quiz-top{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:12px;color:#869584}.app-quiz-top .app-text{padding:6px 0}.app-quiz .progress{margin:10px 0 35px;height:4px}.app-question-type{font-size:12px;color:#8b9a88}.app-quiz .prompt{font-size:29px;font-weight:500;margin:28px 0 35px;line-height:1.65}.app-quiz .choices{gap:11px}.app-quiz .choices button{border-radius:12px;min-height:64px;font-size:16px;padding:16px}.app-answer-label{font-size:12px;color:#8a9986}.app-answer-label input{border:1px solid #c9d8c4;border-radius:12px;padding:16px;font-size:23px;width:100%;background:#fff}.app-answer-actions .app-text{display:block;margin:12px auto 0;font-size:13px}.app-source{font-size:11px;color:#99a490}.app-feedback,.app-wait,.app-finish{text-align:center;padding-top:15px}.app-check{display:block;margin:18px auto 27px;color:#6d9a68;font-size:54px;line-height:1}.app-feedback h1{font-size:28px}.app-feedback-prompt{font-size:16px;color:#9aa592;margin:24px 0;white-space:pre-line}.app-reference{display:block;font-size:28px;color:#315b3a;margin:20px 0 10px;overflow-wrap:anywhere}.app-feedback p:not(.app-feedback-prompt){font-size:14px;color:#77896f;line-height:1.9}.app-feedback-wrong .app-check{color:#ac825d}.app-finish .app-primary{margin-top:40px}.app-finish .app-secondary{gap:14px;margin-top:10px}.app-finish p{color:#76896f;font-size:14px}.app-finish .app-finish-note{font-size:12px;color:#9ba792;margin-top:26px}.app-score{font-size:80px;font-weight:600;color:#315b3a;line-height:1.2}.app-score span{font-size:20px;margin-left:6px}.app-filter{display:flex;gap:8px;margin-bottom:22px}.app-filter button{font-size:12px;padding:7px 12px}.app-filter .active{background:#e8f0e2;border-color:#adc3a2}.app-answer-record{padding:22px 0;border-top:1px solid #dce5d5;overflow-wrap:anywhere}.app-answer-record>p:first-child{font-size:19px;font-weight:500}.app-answer-record small{font-size:11px;color:#8f9b85}.app-answer-record p{font-size:14px}.app-answer-record b{font-size:14px;font-weight:500;color:#467444}.app-question-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:8px}.app-question-grid button{padding:8px 0}.app-question-grid .answered{background:#e6efdf}.app-question-grid .selected{border-color:#49773e}.app-unit-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.app-unit-grid label{border:1px solid #dbe4d6;background:#fff;border-radius:10px;padding:13px 10px;margin:0;font-size:12px}.app-type-list{display:grid;gap:14px}.app-type-list label{display:flex;align-items:center;gap:13px;border:1px solid #dbe4d6;border-radius:12px;background:#fff;padding:18px;margin:0}.app-type-list b{display:block;font-size:15px}.app-type-list small{display:block;margin-top:6px;font-size:11px;color:#8d9b83}.app-record-summary{color:#8b9883;font-size:14px;margin:0 0 30px}.app-record-summary b{color:#355e37;font-size:19px}.app-month{margin:15px 0 20px}.app-calendar>span{font-size:12px;text-align:center;color:#a2ab99}.app-calendar button{padding:0;min-height:50px;background:transparent;border-color:transparent;color:#9daa92}.app-calendar button:disabled{opacity:.65}.app-calendar .done{background:#e2eddb;color:#375f34;border-radius:50%;width:44px;min-height:44px;justify-self:center}.app-record-hint{font-size:12px;color:#a0ac93;margin:23px 0 30px;text-align:center}.app-day-summary{font-size:13px;color:#85937b;margin:0 0 25px}.app-day-test{font-size:14px;color:#63844e}.app-export{display:flex;gap:12px;align-items:center;margin-bottom:30px}.app-export select{padding:10px;border:1px solid #dbe4d6;border-radius:8px;background:white;color:#7b8d6e;font-size:12px}.student-app .word-list{grid-template-columns:1fr;gap:0}.student-app .word-item{border-bottom:1px solid #e1e8db;background:transparent;padding:18px 0;border-radius:0}.student-app .word-item b{font-size:19px;color:#365338;font-weight:500;margin-bottom:6px}.student-app .word-item span{font-size:14px;color:#8a987e}.app-total-big span{display:block;font-size:15px;letter-spacing:0;font-weight:400;color:#8b9a7e;margin:16px 0 32px}.app-total-lines{border-top:1px solid #dfe7d8}.app-total-lines p{padding:13px 0;border-bottom:1px solid #dfe7d8;color:#8b987e;display:flex;justify-content:space-between}.app-total-lines b{color:#41623a;font-weight:500}.app-account{margin:40px 0}.app-account b{font-size:25px}.app-account p{color:#97a48b;font-size:13px}.app-empty{text-align:center;padding:40px 0;color:#8b9d80}.app-empty p{font-size:17px}.student-app .app-main .small{color:#9aa48e}
@media(min-width:760px){.student-app .app-main{padding-top:44px}.app-choice{min-height:112px}.app-start,.app-finish{max-width:420px;margin:auto}.app-quiz{max-width:530px;margin:auto}.app-header-left{gap:20px}}
@media(max-width:420px){.student-app .app-header{padding:16px 20px}.student-app .app-main{padding:24px 20px 35px}.app-page-head{margin-bottom:30px}.app-page-head h1{font-size:29px}.app-choice{padding:21px 18px;min-height:96px}.app-quiz .prompt{font-size:25px;line-height:1.65;margin-top:24px}.app-secondary{gap:12px}.app-identity{font-size:12px}.app-question-grid{grid-template-columns:repeat(5,1fr)}}

.app-reward{display:inline-block;border-radius:24px;background:#edf2e9;color:#517044;padding:7px 15px;font-size:13px;margin:18px 0 5px}.app-reward-clear{background:#e8f1db;color:#386125;animation:red-clear .45s ease-out}.app-run-rewards{line-height:1.9;margin-top:18px!important}.app-run-rewards b{font-weight:600;color:#477136}.app-memory-note{font-size:13px;color:#6c7f62;margin:18px 0 28px}.app-memory-dot{display:inline-block;width:8px;height:8px;flex-shrink:0;border-radius:50%;background:#bb7861;margin-right:9px;vertical-align:middle}.app-memory-dot-cleared{background:#75a265}.app-memory-timeline article{display:flex;gap:8px;padding:20px 0;border-bottom:1px solid #dfe7d8}.app-memory-timeline article>.app-memory-dot{margin-top:9px}.app-memory-timeline small{display:block;font-size:11px;color:#87967c;margin:5px 0}.app-memory-timeline p{font-size:14px;overflow-wrap:anywhere}.app-memory-timeline b{font-size:17px;font-weight:500}@keyframes red-clear{from{transform:scale(.9);opacity:.5}to{transform:scale(1);opacity:1}}@media(prefers-reduced-motion:reduce){.app-reward-clear{animation:none}}

/* The practice field is tied to each frozen question, not decorative random dots. */
.app-quiz:has(.app-dot-board) .progress{margin-bottom:15px}.app-dot-board{margin:0 0 25px;padding:16px 14px 17px;border:1px solid #e0e7df;border-radius:16px;background:#fff;overflow:clip}.app-dot-legend{display:flex;align-items:center;gap:15px;flex-wrap:wrap;margin-bottom:15px;color:#6c7d71;font-size:11px;line-height:1.5}.app-dot-legend span{display:flex;align-items:center;gap:5px}.dot-key{display:inline-block;width:7px;height:7px;border-radius:50%}.dot-key-blue{background:#468ce2}.dot-key-red{background:#ee6e69}.dot-key-gray{background:#dce3df}.app-dot-grid{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));row-gap:7px}.dot-slot{height:18px;display:flex;align-items:center;justify-content:center;position:relative}.dot-core,.dot-red-ghost{font-style:normal;width:15px;height:15px;display:flex;align-items:center;justify-content:center;border-radius:50%;font-size:10px;line-height:1;font-weight:600;color:white}.dot-blue{background:#468ce2;box-shadow:0 2px 4px #468ce224}.dot-red,.dot-red-ghost{background:#ee6e69;box-shadow:0 2px 4px #ee6e6924}.dot-gray{background:#edf1ee;border:1px solid #dce3df;width:13px;height:13px}.dot-pending{background:#c5a451}.dot-current .dot-core{outline:2px solid #496852;outline-offset:3px}.app-dot-page{display:block;text-align:center;font-size:10px;color:#849287;margin-top:13px}.dot-miss .dot-core{animation:dot-red-hit .45s ease-out}.dot-hit .dot-core{animation:dot-blue-hit .45s ease-out}.dot-red-ghost{position:absolute;animation:dot-red-pop .38s ease-in forwards;pointer-events:none}.dot-clear .dot-core{animation:dot-blue-grow .65s cubic-bezier(.2,.9,.2,1.35) both}.dot-spark{position:absolute;width:4px;height:4px;background:#ee6e69;border-radius:50%;animation:dot-spark .65s ease-out forwards;pointer-events:none}.spark-a{--sx:-17px;--sy:-12px}.spark-b{--sx:17px;--sy:-12px}.spark-c{--sx:-14px;--sy:15px;background:#468ce2}.spark-d{--sx:14px;--sy:15px;background:#468ce2}.app-dot-board-finish{margin:0 auto 24px;text-align:left;width:100%}.app-finish-play>.app-check{color:#468ce2;font-size:40px;margin:10px auto 18px}.app-finish-play .app-finish-count{font-size:64px;margin:12px 0}.app-finish-play .app-primary{margin-top:28px}.app-finish-play .app-run-rewards b{color:#3878c7}
@keyframes dot-red-hit{0%{transform:scale(.5)}35%{transform:scale(1.5) translateX(-2px)}65%{transform:scale(1.15) translateX(2px)}100%{transform:scale(1)}}
@keyframes dot-blue-hit{0%{transform:scale(.5)}45%{transform:scale(1.4)}100%{transform:scale(1)}}
@keyframes dot-red-pop{0%{transform:scale(1.25);opacity:1}40%{transform:scale(1.6);opacity:1}100%{transform:scale(0);opacity:0}}
@keyframes dot-blue-grow{0%,35%{transform:scale(0);opacity:0}70%{transform:scale(1.5);opacity:1}100%{transform:scale(1);opacity:1}}
@keyframes dot-spark{0%{transform:translate(0,0) scale(.5);opacity:0}25%{opacity:1}100%{transform:translate(var(--sx),var(--sy)) scale(.5);opacity:0}}
@media(max-width:420px){.app-dot-board{padding:14px 10px 15px}.app-dot-legend{gap:11px}.app-dot-grid{row-gap:5px}.app-dot-board-finish{margin-bottom:16px}}
@media(prefers-reduced-motion:reduce){.dot-core,.dot-red-ghost,.dot-spark{animation:none!important}.dot-red-ghost,.dot-spark{display:none}.dot-clear .dot-core{opacity:1;transform:none}}

.app-quiz:has(.app-dot-board) .app-feedback:not(.app-feedback-wrong) .app-check{color:#468ce2}.app-quiz:has(.app-dot-board) .app-feedback-wrong .app-check{color:#ee6e69}.app-quiz:has(.app-dot-board) .app-reward-clear{background:#eaf2fd;color:#3878c7}.app-quiz:has(.app-dot-board) .app-feedback-wrong .app-reward{background:#fdf0ef;color:#bf5550}

.hosting-footer{text-align:center;padding:18px 12px;font-size:11px;color:#718071}.hosting-footer a{color:inherit;text-decoration:none}

.login form .primary{width:100%;margin-top:12px}.login-error{color:#ac3434;min-height:1.4em;font-size:14px}.login input{min-height:48px;font-size:18px}.login h1{margin-top:16px}
