:root{--paper:#f5f3ed;--ink:#243b35;--muted:#626d65;--line:#d6dbd0;--green:#254d3e;--lime:#e7ecb7;--orange:#b44a2a;--white:#fffefa}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.55 'Segoe UI',sans-serif}button,input,select{font:inherit}button,a,input,select{touch-action:manipulation}button{cursor:pointer;border:1px solid var(--line);background:var(--white);color:var(--ink);padding:11px 18px;border-radius:6px}button:hover{border-color:var(--green);background:#eef0e5}button:disabled{opacity:.55;cursor:default}button.primary{background:var(--green);color:#fff;border-color:var(--green)}button.primary:hover{background:#173b2c}button.danger{color:#a53225}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--orange);outline-offset:3px}a{color:var(--green)}.skip{position:fixed;left:10px;top:-80px;z-index:20;background:#fff;padding:15px}.skip:focus{top:10px}.sidebar{width:250px;background:#e8ebdf;position:fixed;inset:0 auto 0 0;padding:34px 26px;display:flex;flex-direction:column;border-right:1px solid var(--line)}.brand{font:italic bold 48px Georgia,serif;text-decoration:none;letter-spacing:-3px}.brand span{display:block;font:10px/2 'Segoe UI',sans-serif;letter-spacing:2px}.edition{font-size:10px;letter-spacing:1.5px;margin-top:42px;color:var(--muted)}nav{display:grid;gap:8px}nav button{text-align:left;background:none;border:0;font-size:11px;padding:13px 8px;color:var(--muted)}nav button span{font-size:15px;margin-left:12px}nav button.active{background:var(--green);color:#fff}.sidebar-bottom{margin-top:auto;padding-top:40px}.sidebar-bottom p{font:24px/1.3 Georgia,serif}.sidebar-bottom small,.online{font-size:11px;color:var(--muted)}.online{color:var(--green)}.shell{margin-left:250px}header{height:88px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding:0 48px;font-size:12px;color:var(--muted)}select,input{border:1px solid var(--line);background:var(--white);border-radius:5px;padding:10px;color:var(--ink);max-width:100%}.profile-label{display:flex;align-items:center;gap:12px}main{max-width:1200px;padding:46px 48px 60px;margin:auto;min-height:75vh}h1{font:normal 44px/1.15 Georgia,serif;margin:10px 0 16px;letter-spacing:-1px}h2{font:normal 28px/1.25 Georgia,serif;margin:0 0 12px}h3{font-size:17px;margin:0 0 8px}p{margin:0 0 16px}.eyebrow{font-size:11px;letter-spacing:2px;font-weight:600;color:var(--orange)}.intro{color:var(--muted);max-width:650px}.hero{display:grid;grid-template-columns:1.4fr .7fr;gap:32px;padding:32px;background:var(--green);color:var(--white);border-radius:8px;margin:28px 0}.hero h2{font-size:34px}.hero p{color:#d7dfcc}.hero .primary{background:var(--lime);color:var(--ink);border-color:var(--lime)}.hero-art{display:grid;place-items:center;border-left:1px solid #61786a;font:italic 68px Georgia,serif;transform:rotate(-4deg)}.hero-art small{font:12px 'Segoe UI',sans-serif;letter-spacing:2px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin:30px 0}.stat{border-bottom:1px solid var(--line);padding-bottom:18px}.stat strong{font:36px Georgia,serif;display:block}.stat span{font-size:12px;color:var(--muted)}.section-head{display:flex;align-items:center;justify-content:space-between;margin:35px 0 18px;gap:20px}.filters,.actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.filters label{font-size:12px;color:var(--muted);display:grid;gap:5px}.topic-list{border-top:1px solid var(--line)}.topic{display:grid;grid-template-columns:60px 1fr auto;align-items:center;padding:20px 0;border-bottom:1px solid var(--line);gap:18px}.badge{display:inline-block;background:#e8ebdf;border:1px solid var(--line);border-radius:3px;padding:3px 8px;font-size:11px;letter-spacing:.5px}.topic p,.muted{font-size:13px;color:var(--muted);margin:4px 0}.topic .number{font:25px Georgia,serif;color:var(--orange)}.panel{background:var(--white);border:1px solid var(--line);border-radius:8px;padding:28px;margin:20px 0}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:22px}.hint{background:#e9eddf;padding:18px;border-left:3px solid var(--green);font-size:13px;margin:20px 0}.exercise{max-width:760px;margin:32px auto}.exercise .question{font:30px/1.4 Georgia,serif;margin:25px 0}.exercise input{width:100%;font-size:22px;padding:16px}.exercise label{display:block;margin-bottom:8px;font-size:13px}.options{display:grid;gap:10px}.option{display:flex;gap:10px;align-items:center;padding:14px;border:1px solid var(--line);border-radius:6px}.option input{width:auto}.option label{margin:0;font-size:17px;flex:1}.accent-keys{display:flex;gap:6px;margin:12px 0}.accent-keys button{padding:4px 12px}.feedback{padding:20px;margin:20px 0;border-left:4px solid var(--orange);background:#fff0e4}.feedback.correct{background:#e8efda;border-color:var(--green)}.progress-track{height:5px;background:var(--line);margin:15px 0}.progress-fill{height:100%;background:var(--green)}progress{width:100%;height:7px;accent-color:var(--green)}.flashcard{display:flex;align-items:center;justify-content:center;min-height:290px;background:var(--lime);border:1px solid #cbd39b;border-radius:10px;text-align:center;width:100%;font:38px Georgia,serif;padding:30px;margin:24px 0}.flashcard small{display:block;font:12px 'Segoe UI',sans-serif;color:var(--muted);margin-top:25px}.card-controls{display:flex;justify-content:space-between;align-items:center;gap:15px}.list-item{padding:17px 0;border-bottom:1px solid var(--line)}.list-item strong{display:block}.profile-row{display:flex;justify-content:space-between;gap:15px;align-items:center;border-bottom:1px solid var(--line);padding:15px 0}.profile-row strong{overflow-wrap:anywhere}.file-label{display:inline-block;border:1px solid var(--line);padding:10px 18px;border-radius:6px;background:white;cursor:pointer}.file-label input{display:block;font-size:12px;margin-top:8px}.plan-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.plan-grid .panel{margin:0}.plan-grid h3{font:25px Georgia,serif}.plan-grid p{font-size:13px;color:var(--muted)}#notice:not(:empty){background:#fff0d3;padding:14px 48px;color:#623515;border-bottom:1px solid #dfc9aa}footer{border-top:1px solid var(--line);padding:24px 48px;display:flex;justify-content:space-between;font-size:10px;color:var(--muted);gap:20px}#print-root{display:none}.print-preview{background:#fff;padding:22px;border:1px solid var(--line);font-size:14px}.print-preview li{margin:15px 0}.print-preview h3{margin-top:24px}.cut-cards{display:grid;grid-template-columns:repeat(2,1fr)}.cut-card{border:1px dashed #888;padding:20px;min-height:100px}.cut-card strong{display:block;font-size:20px}details{margin-top:14px}summary{cursor:pointer;font-size:13px}.end-score{font:70px Georgia,serif;margin:20px 0}.empty{padding:40px;text-align:center;background:#e8ebdf;border-radius:7px}.source{font-size:12px;overflow-wrap:anywhere}.check-line{display:flex;align-items:center;gap:10px;margin:15px 0}@media(max-width:1000px){.sidebar{width:210px;padding:25px 16px}.shell{margin-left:210px}main{padding:30px}header{padding:0 30px}.hero-art{font-size:45px}.plan-grid{grid-template-columns:1fr}.two-col{grid-template-columns:1fr}}@media(max-width:700px){.sidebar{position:static;width:auto;display:block;padding:15px 20px}.brand{font-size:35px}.brand span,.edition,.sidebar-bottom{display:none}nav{display:flex;overflow-x:auto;margin-top:10px;gap:4px}nav button{white-space:nowrap;padding:9px 7px}nav button span{font-size:12px;margin-left:3px}.shell{margin:0}header{height:auto;min-height:65px;padding:12px 20px;gap:12px}header>span{display:none}main{padding:28px 20px}h1{font-size:36px}.hero{grid-template-columns:1fr;padding:24px}.hero-art{display:none}.stats{gap:12px}.stat strong{font-size:29px}.section-head{align-items:flex-start;flex-direction:column}.topic{grid-template-columns:35px 1fr}.topic>button{grid-column:2}.panel{padding:20px}footer{padding:20px;display:block}.profile-row{flex-wrap:wrap}.flashcard{font-size:30px}.actions button{flex-grow:1}#notice:not(:empty){padding:12px 20px}}@media print{@page{size:A4;margin:16mm}body{background:#fff;color:#111;font:11pt/1.4 Arial,sans-serif}.sidebar,.shell,.skip{display:none!important}#print-root{display:block}.print-section{break-after:page}.print-section:last-child{break-after:auto}h1{font-size:26pt}h2{font-size:20pt}li,.cut-card{break-inside:avoid}.print-section li{margin:18pt 0}.answer-line{border-bottom:1px solid #aaa;height:24pt}.cut-card{min-height:38mm}.source{font-size:8pt}a{color:#111;text-decoration:none}}
/* Reference adaptation: African Language House — warm yellow, forest accents, editorial type. */
:root{--paper:#faf9f4;--ink:#20251f;--muted:#62665e;--line:#e5e5dc;--green:#186846;--lime:#ffdc62;--orange:#886318;--white:#fff}
.sidebar{background:#fffef8;border-right:1px solid var(--line)}.brand{font-style:normal;letter-spacing:-2px}.brand span{letter-spacing:1.4px}nav button.active{background:#fff0ad;color:#263b2e;border-radius:24px}nav button{border-radius:24px}h1,h2{letter-spacing:-1.2px}.hero{background:#ffdf6b;color:var(--ink);border-radius:24px;padding:38px}.hero p{color:#454b3c}.hero .badge{background:#fff5ce;border:0;border-radius:20px}.hero .primary{background:var(--green);color:#fff;border-radius:24px;padding:14px 24px}.hero-art{border-left:0;background:#fff1ab;border-radius:100% 100% 36% 36%;min-height:210px;color:var(--green);transform:rotate(-7deg);font-size:76px}.hero-art small{font-size:9px;letter-spacing:1px}.hero h2{font-size:42px}.panel{border-radius:18px}.badge{border-radius:16px;background:#fff3bf}.flashcard{background:#ffe383;border:0;border-radius:24px}.feedback.correct{background:#eaf4e7}.primary{border-radius:24px}.topic{grid-template-columns:54px 1fr auto;background:#fff;border:1px solid var(--line);border-radius:16px;padding:20px;margin-bottom:12px}.topic-list{border:0}.topic .number{background:#fff0b3;border-radius:50%;width:44px;height:44px;display:grid;place-items:center;font-size:20px}.topic>button{border-radius:24px}.hint{border-radius:0 12px 12px 0}.stats{background:#fff;border:1px solid var(--line);border-radius:18px;padding:22px}.stat{border-bottom:0}.stat+.stat{border-left:1px solid var(--line);padding-left:22px}header{background:#fff}.exercise .question{font-family:'Segoe UI',sans-serif;font-size:28px;letter-spacing:-.5px}.option{border-radius:14px}.option:has(input:checked){background:#fff3be;border-color:#be9b35}@media(max-width:700px){.hero{padding:24px}.hero h2{font-size:34px}.topic{grid-template-columns:44px 1fr}.stats{padding:16px;gap:10px}.stat+.stat{padding-left:10px}.stat strong{font-size:26px}}@media print{.badge{background:#fff}.panel{border-radius:0}}
/* Motion confirms state changes; no timers advance a lesson without the learner. */
:root{--ease-out:cubic-bezier(.23,1,.32,1)}.hero{box-shadow:0 8px 0 #d1ac3b,0 18px 32px #50420c15}.panel{box-shadow:0 4px 0 #e2e4d9,0 12px 28px #1838250a}.flashcard{box-shadow:0 8px 0 #d9b84e,0 22px 35px #5b4b1b15}.exercise>.panel{position:relative;animation:card-arrive 240ms var(--ease-out)}.feedback{animation:card-arrive 200ms var(--ease-out)}.feedback.correct{box-shadow:0 4px 0 #c7dbb8;border-radius:14px}.feedback.correct h3{font-size:25px;color:#17613c}.feedback.correct h3:before{content:'✓';display:inline-grid;place-items:center;width:38px;height:38px;border-radius:50%;background:#216d47;color:#fff;margin-right:12px}.end-score{color:#17613c}.lesson-intro{max-width:760px;padding:36px}.lesson-intro h2{font-size:28px;margin:24px 0}.flashcard{animation:card-arrive 220ms var(--ease-out)}button{transition:transform 140ms var(--ease-out),box-shadow 140ms var(--ease-out),background-color 140ms ease}button:active{transform:translateY(2px)}@keyframes card-arrive{from{opacity:0;transform:translateY(12px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}@media(hover:hover) and (pointer:fine){.topic>button:hover,.primary:hover{transform:translateY(-2px);box-shadow:0 5px 12px #254d3e20}.flashcard:hover{transform:translateY(-3px)}}@media(prefers-reduced-motion:reduce){.exercise>.panel,.feedback,.flashcard{animation:none}button{transition:background-color 140ms ease}button:hover,button:active{transform:none!important}}@media print{*{animation:none!important;box-shadow:none!important}}
