:root{--navy:#132b36;--ink:#18343e;--muted:#667b83;--teal:#007f75;--mint:#e2f3ed;--cream:#f7f4ed;--line:#dce5e3;--white:#fff;--amber:#a75b1e;--amber-bg:#fff2df;--blue:#3d6f9d;--shadow:0 13px 36px rgba(20,47,54,.08)}
*{box-sizing:border-box}html{font-family:'DM Sans','Noto Sans TC',system-ui,sans-serif;color:var(--ink);background:#f8faf8}body{margin:0}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin-top:0}.app{min-height:100vh;display:grid;grid-template-columns:252px minmax(0,1fr)}.sidebar{background:var(--navy);color:#d3e5e2;padding:28px 18px;display:flex;flex-direction:column;gap:28px}.brand{display:flex;gap:11px;align-items:center;padding:0 10px}.brandmark{height:38px;width:38px;border-radius:12px;background:#b9ebd7;color:var(--navy);display:grid;place-items:center;font-weight:800;font-size:22px}.brand strong{display:block;color:#fff;font-size:20px;letter-spacing:-.04em}.brand small{font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:#a7c6c1}.nav-label{font-size:10px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:#85a5a3;padding:0 13px;margin-bottom:8px}.nav{display:grid;gap:5px}.nav button{border:0;background:transparent;color:#bdd4d0;text-align:left;padding:12px 13px;border-radius:11px;display:flex;gap:11px;align-items:center;font-weight:600;width:100%}.nav button:hover,.nav button.active{background:#2c4b53;color:#fff}.nav .icon{width:19px;text-align:center;font-size:17px}.side-bottom{margin-top:auto;background:#23424a;border:1px solid #35555c;border-radius:14px;padding:15px;font-size:12px;line-height:1.5}.side-bottom strong{color:white;display:block;margin-bottom:4px}.main{min-width:0}.topbar{height:77px;background:white;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 35px;gap:20px}.breadcrumb{font-size:13px;color:var(--muted)}.breadcrumb b{color:var(--ink)}.top-actions{display:flex;align-items:center;gap:10px}.top-actions select,.top-actions button{background:#f6f9f7;border:1px solid var(--line);border-radius:9px;padding:9px 12px;color:var(--ink);font-size:12px;font-weight:700}.demo-pill{background:var(--amber-bg);color:#88501d;border:1px solid #f0d5ad;padding:8px 10px;border-radius:50px;font-size:11px;font-weight:700;white-space:nowrap}.content{max-width:1340px;margin:auto;padding:34px 36px 75px}.eyebrow{font-size:11px;letter-spacing:.16em;color:var(--teal);font-weight:800;text-transform:uppercase;margin-bottom:10px}.page-title{font-size:33px;letter-spacing:-.045em;line-height:1.16;margin-bottom:9px}.subtitle{color:var(--muted);font-size:14px;line-height:1.7;margin-bottom:26px}.hero{background:linear-gradient(115deg,#13333d,#1a5b58);border-radius:19px;color:white;padding:29px 31px;display:flex;justify-content:space-between;gap:25px;position:relative;overflow:hidden;margin-bottom:22px}.hero:after{content:'';position:absolute;width:300px;height:300px;border:1px solid rgba(255,255,255,.13);border-radius:50%;right:-60px;top:-110px;box-shadow:0 0 0 55px rgba(255,255,255,.025),0 0 0 110px rgba(255,255,255,.025)}.hero>div{z-index:1}.hero h2{font-size:27px;margin:4px 0 10px;letter-spacing:-.03em}.hero p{color:#cde5e1;max-width:630px;font-size:13px;line-height:1.65;margin:0}.hero .tag{display:inline-block;background:#d8f5e8;color:#144a43;border-radius:30px;padding:7px 11px;font-size:11px;font-weight:800}.hero-stats{display:flex;gap:28px;align-items:end;z-index:1}.hero-stats div{min-width:88px}.hero-stats strong{font-size:25px;display:block}.hero-stats span{font-size:11px;color:#b8d5d0}.grid{display:grid;gap:18px}.grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.card{background:white;border:1px solid var(--line);border-radius:16px;padding:21px;box-shadow:var(--shadow);min-width:0}.card h3{font-size:15px;margin:0 0 7px}.card .desc{font-size:12px;line-height:1.55;color:var(--muted);margin:0}.metric{font-size:28px;font-weight:800;letter-spacing:-.04em;color:var(--navy);margin-top:12px}.metric small{font-size:12px;color:var(--muted);font-weight:500;letter-spacing:0}.section-head{display:flex;justify-content:space-between;align-items:end;gap:12px;margin:31px 0 15px}.section-head h2{font-size:20px;letter-spacing:-.03em;margin:0}.section-head p{font-size:12px;color:var(--muted);margin:4px 0 0}.stage-card{position:relative}.stage-no{display:grid;place-items:center;background:var(--mint);color:var(--teal);border-radius:9px;width:36px;height:36px;font-weight:800;margin-bottom:14px}.stage-card h3{font-size:16px}.stage-card p{color:var(--muted);font-size:12px;min-height:34px;line-height:1.5}.status{display:inline-flex;align-items:center;gap:5px;border-radius:40px;padding:4px 8px;font-size:10px;font-weight:800;white-space:nowrap}.status.confirmed{background:#dcf3e6;color:#176d55}.status.pending{background:#f1f4f3;color:#73848a}.status.review{background:#e8f0fa;color:#3a6390}.status.failed{background:#fff0de;color:#9d5b25}.btn{border:1px solid var(--teal);background:var(--teal);color:white;border-radius:9px;padding:10px 14px;font-weight:700;font-size:12px;display:inline-flex;align-items:center;justify-content:center;gap:7px}.btn:hover{filter:brightness(.94)}.btn.secondary{background:white;color:var(--teal)}.btn.ghost{background:#eef5f2;color:var(--teal);border-color:#eef5f2}.btn.small{padding:7px 10px;font-size:11px}.btn.wide{width:100%}.card-footer{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:17px}.chart{display:flex;gap:14px;height:190px;align-items:end;padding:20px 0 2px;border-bottom:1px solid var(--line)}.chart-group{display:flex;gap:4px;align-items:end;flex:1;height:100%;justify-content:center}.bar{width:13px;border-radius:4px 4px 0 0;min-height:3px}.bar:nth-child(1){background:#a9d2c4}.bar:nth-child(2){background:#5cbca3}.bar:nth-child(3){background:#087e73}.chart-labels{display:flex;gap:14px;margin-top:8px}.chart-labels span{flex:1;text-align:center;color:var(--muted);font-size:10px;line-height:1.3}.legend{display:flex;flex-wrap:wrap;gap:13px;color:var(--muted);font-size:10px;margin-top:15px}.legend i{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:4px}.list{display:grid;gap:10px}.list-row{display:flex;justify-content:space-between;align-items:center;gap:16px;border-bottom:1px solid #edf1ef;padding:11px 0;font-size:12px}.list-row:last-child{border:0}.list-row b{font-size:13px}.muted{color:var(--muted)}.table-wrap{overflow-x:auto}.table{width:100%;border-collapse:collapse;font-size:12px}.table th{text-align:left;color:#7a8c91;font-size:10px;letter-spacing:.08em;text-transform:uppercase;padding:12px;border-bottom:1px solid var(--line)}.table td{padding:14px 12px;border-bottom:1px solid #edf1ef;vertical-align:middle}.table tr:last-child td{border-bottom:0}.table tr:hover td{background:#fafdfb}.student-name{font-weight:800}.avatar{width:32px;height:32px;border-radius:50%;display:inline-grid;place-items:center;background:#e4f0ec;color:#206a5d;font-weight:800;margin-right:9px}.progress-track{height:7px;border-radius:10px;background:#edf2f0;overflow:hidden}.progress-track span{height:100%;display:block;border-radius:10px;background:#1ca68b}.skill-row{display:grid;grid-template-columns:195px 1fr 36px;gap:12px;align-items:center;margin:16px 0;font-size:12px}.skill-row strong{text-align:right;font-size:13px}.report-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:18px}.info-block{margin-top:16px}.info-block h4{font-size:11px;letter-spacing:.1em;color:var(--teal);text-transform:uppercase;margin:0 0 7px}.info-block p,.info-block li{font-size:12px;line-height:1.7;color:#405760}.info-block ul{padding-left:18px;margin:0}.note{background:#f2f8f5;border:1px solid var(--line);border-radius:5px;padding:12px 14px;font-size:11px;color:#536d69;line-height:1.6}.warning{background:#fff5e9;border-color:#ead4b7}.tabs{display:flex;gap:5px;border-bottom:1px solid var(--line);margin-bottom:20px;overflow-x:auto}.tabs button{border:0;background:transparent;color:var(--muted);padding:12px 16px;font-size:12px;font-weight:800;white-space:nowrap;border-bottom:2px solid transparent}.tabs button.active{color:var(--teal);border-bottom-color:var(--teal)}.field{display:grid;gap:6px;margin-bottom:15px}.field label{font-weight:700;font-size:12px}.field input,.field textarea,.field select{border:1px solid #cbdad6;border-radius:9px;padding:10px 11px;background:white;color:var(--ink);width:100%;outline-color:var(--teal);font-size:12px}.field textarea{min-height:82px;resize:vertical}.field small{color:var(--muted);font-size:10px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.task{padding:17px 0;border-bottom:1px solid #eaf0ed}.task:last-child{border:0}.task h3{font-size:14px}.task p{font-size:12px;line-height:1.6;color:var(--muted)}.task textarea{width:100%;border:1px solid #cbdad6;border-radius:9px;padding:10px;min-height:68px;outline-color:var(--teal)}.range-row{display:grid;grid-template-columns:170px 1fr 35px;align-items:center;gap:13px;margin:12px 0;font-size:12px}.range-row input{accent-color:var(--teal)}.queue-item{display:grid;grid-template-columns:1fr auto;gap:20px;padding:18px 0;border-bottom:1px solid var(--line)}.queue-item:last-child{border:0}.queue-item h3{margin:0 0 5px}.queue-item p{margin:0;color:var(--muted);font-size:12px}.queue-actions{display:flex;gap:7px;align-items:center}.toast{position:fixed;right:24px;bottom:24px;background:#153b3b;color:white;border-radius:11px;padding:13px 17px;box-shadow:var(--shadow);font-size:12px;z-index:10;max-width:300px}.empty{padding:38px;text-align:center;color:var(--muted);font-size:13px}.inline-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:17px}.divider{height:1px;background:var(--line);margin:20px 0}.target-box{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:15px;text-align:center}.target-box strong{font-size:36px;color:var(--navy)}.target-box span{display:block;color:var(--muted);font-size:11px}.target-arrow{font-size:25px;color:#94b9af}.disclaimer{font-size:11px;color:#738389;line-height:1.65;margin-top:18px}.mobile-menu{display:none}
@media(max-width:1020px){.app{grid-template-columns:210px minmax(0,1fr)}.content{padding:25px}.topbar{padding:0 24px}.grid.cols-3{grid-template-columns:1fr 1fr}.report-grid{grid-template-columns:1fr}.hero{display:block}.hero-stats{margin-top:22px}}
@media(max-width:720px){.app{display:block}.sidebar{padding:15px;gap:12px}.brand{justify-content:space-between}.nav-label,.side-bottom{display:none}.nav{display:flex;overflow-x:auto}.nav button{white-space:nowrap;width:auto;padding:9px}.topbar{height:auto;padding:12px 18px;display:block}.top-actions{margin-top:10px;flex-wrap:wrap}.content{padding:23px 17px 60px}.grid.cols-2,.grid.cols-3{grid-template-columns:1fr}.page-title{font-size:27px}.hero-stats{gap:18px}.hero-stats strong{font-size:19px}.form-grid{grid-template-columns:1fr}.skill-row{grid-template-columns:130px 1fr 30px}.queue-item{grid-template-columns:1fr}.queue-actions{justify-content:start}.range-row{grid-template-columns:105px 1fr 30px}}
.personal-card{display:grid;grid-template-columns:1.1fr 1fr;gap:20px;margin:0 0 20px}.personal-card h3{font-size:18px;margin:0 0 8px}.personal-card .desc{font-size:13px;color:#425d63;line-height:1.75}.personal-facts{display:grid;gap:10px}.personal-facts>div{padding:10px 12px;background:#f4f9f6;border-radius:9px}.personal-facts span{display:block;font-size:10px;color:#6b8587;margin-bottom:4px;font-weight:700}.personal-facts strong{display:block;font-size:12px;line-height:1.5}.evidence-list{margin-top:15px}.evidence-item{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 0;border-bottom:1px solid #e8eeeb}.evidence-item:last-child{border:0}.evidence-item strong{font-size:12px}.evidence-item p{font-size:12px;color:#536d70;line-height:1.5;margin:4px 0 0}.support-chip{font-size:10px;font-weight:700;color:#126c60;background:#e4f4eb;border-radius:20px;padding:5px 8px;white-space:nowrap}
@media(max-width:850px){.personal-card{grid-template-columns:1fr}}

/* Larger reading scale and full-width report charts. */
html{font-size:16px}
body{font-size:16px;line-height:1.55}
.app{grid-template-columns:264px minmax(0,1fr)}
.content{max-width:1500px}
.brand strong{font-size:22px}
.brand small,.nav-label{font-size:12px}
.nav button{font-size:16px;padding:13px 15px}
.side-bottom{font-size:14px}
.breadcrumb{font-size:15px}
.top-actions select,.top-actions button,.demo-pill{font-size:14px}
.eyebrow{font-size:13px}
.page-title{font-size:37px}
.subtitle{font-size:17px}
.hero h2{font-size:31px}
.hero p{font-size:16px}
.hero .tag,.hero-stats span{font-size:14px}
.hero-stats strong{font-size:29px}
.card{padding:25px}
.card h3{font-size:20px}
.card .desc{font-size:15px;line-height:1.65}
.section-head h2{font-size:25px}
.section-head p{font-size:15px}
.stage-card h3{font-size:19px}
.stage-card p{font-size:15px;min-height:44px}
.status{font-size:13px;padding:6px 10px}
.btn,.btn.small{font-size:15px;padding:10px 14px}
.list-row,.table{font-size:15px}
.list-row b{font-size:15px}
.table th{font-size:13px}
.report-progress-stack{display:grid;grid-template-columns:minmax(0,1fr);gap:20px}
.report-progress-stack .card{width:100%}
.skill-row{grid-template-columns:minmax(190px,240px) minmax(0,1fr) 48px;gap:18px;margin:20px 0;font-size:16px}
.skill-row strong{font-size:16px}
.progress-track{height:12px}
.chart{height:250px;gap:20px}
.bar{width:22px}
.chart-labels{gap:20px;margin-top:12px}
.chart-labels span,.legend{font-size:14px}
.legend{gap:20px;margin-top:18px}
.legend i{width:12px;height:12px}
.info-block h4{font-size:14px}
.info-block p,.info-block li{font-size:15px}
.note{font-size:14px}
.tabs button{font-size:15px}
.field label,.field input,.field textarea,.field select{font-size:15px}
.field small{font-size:13px}
.task h3{font-size:18px}
.task p,.task textarea,.range-row,.queue-item p,.toast,.empty{font-size:15px}
.target-box span,.disclaimer{font-size:14px}
.personal-card h3{font-size:22px}
.personal-card .desc{font-size:16px}
.personal-facts span{font-size:13px}
.personal-facts strong,.evidence-item strong,.evidence-item p{font-size:15px}
.support-chip{font-size:13px}
.metric small{font-size:14px}
@media(max-width:1020px){.app{grid-template-columns:226px minmax(0,1fr)}}
@media(max-width:720px){.app{display:block}.page-title{font-size:31px}.nav button{font-size:15px}.hero-stats strong{font-size:24px}.skill-row{grid-template-columns:minmax(115px,150px) minmax(0,1fr) 38px;gap:9px;font-size:14px}.skill-row strong{font-size:14px}.chart{height:205px;gap:5px}.bar{width:10px}.chart-labels{gap:5px}.chart-labels span{font-size:11px;overflow-wrap:anywhere}.legend{font-size:12px}.range-row{grid-template-columns:120px 1fr 34px}}

/* The programme is chosen once at setup; every surface uses its palette. */
body[data-program="a1"]{--navy:#112c4e;--teal:#245f9d;--mint:#e7eff8;--hero-end:#1a4c83;--bar-1:#a9c4df;--bar-2:#5f95c7;--bar-3:#245f9d;--chip-bg:#e8f0fa}
body[data-program="a2"]{--navy:#123d34;--teal:#1e8068;--mint:#e2f2e9;--hero-end:#1b6857;--bar-1:#a7d2bd;--bar-2:#68b596;--bar-3:#1e8068;--chip-bg:#e5f4ec}
body[data-program="b1"]{--navy:#482b28;--teal:#a45647;--mint:#f8e8e3;--hero-end:#82463d;--bar-1:#dfb9ad;--bar-2:#c98371;--bar-3:#a45647;--chip-bg:#f8ebe6}
body[data-program="cpd"]{--navy:#322047;--teal:#7350a4;--mint:#f0eaf8;--hero-end:#604183;--bar-1:#cbb8e4;--bar-2:#a583cf;--bar-3:#7350a4;--chip-bg:#f0eaf8}
.sidebar{background:var(--navy)}
.brand-text{display:block;padding:0 12px}
.brand-text strong{font-size:22px;line-height:1.05;letter-spacing:.035em}
.brand-text small{display:block;margin-top:9px;line-height:1.45;letter-spacing:.12em}
.nav button:hover,.nav button.active{background:color-mix(in srgb,var(--teal),white 16%)}
.hero{background:linear-gradient(115deg,var(--navy),var(--hero-end))}
.hero .tag{background:var(--mint);color:var(--navy)}
/* Callouts and personal cards use symmetric outlines; never add a decorative side stripe. */
.personal-facts>div,.note{background:color-mix(in srgb,var(--mint),white 38%)}
.support-chip{background:var(--chip-bg);color:var(--navy)}
.stage-no{background:var(--mint);color:var(--teal)}
.progress-track span{background:var(--teal)}
.bar.phase-1,.legend i.phase-1{background:var(--bar-1)}
.bar.phase-2,.legend i.phase-2{background:var(--bar-2)}
.bar.phase-3,.legend i.phase-3{background:var(--bar-3)}
.bar.missing{background:#e9eeec}
.program-pill{display:inline-flex;align-items:center;border-radius:100px;background:var(--mint);color:var(--navy);padding:8px 12px;font-weight:800;font-size:14px}
.learner-name{color:var(--ink);font-size:14px;font-weight:700;white-space:nowrap}
.stage-card p{min-height:72px}
.skill-row{grid-template-columns:150px minmax(0,1fr) minmax(150px,225px)}
.skill-row strong{text-align:left;color:var(--teal);font-size:15px}
.report-progress-stack{margin-bottom:20px}
.level-outcome{margin-top:20px}
.level-outcome p{font-size:17px;line-height:1.65;margin:8px 0}
.level-outcome span{color:var(--muted);font-size:14px}
.setup-shell{max-width:1220px;margin:0 auto;padding:46px 38px 72px}
.setup-header{display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid var(--line);padding-bottom:22px}
.setup-brand{font-size:22px;font-weight:900;letter-spacing:.07em;color:#173740}
.setup-intro{max-width:780px;padding:64px 0 30px}
.setup-intro h1{font-size:43px;line-height:1.16;letter-spacing:-.04em;margin:0 0 17px}
.setup-intro p{font-size:18px;color:var(--muted);line-height:1.7}
.program-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
.program-option{min-height:205px;text-align:left;border:2px solid transparent;border-radius:20px;padding:27px 29px;display:flex;flex-direction:column;align-items:flex-start;gap:9px;color:white;box-shadow:var(--shadow);transition:transform .15s,border-color .15s}
.program-option:hover,.program-option:focus-visible{transform:translateY(-3px);border-color:#d5e8e5;outline:none}
.program-option.a1{background:linear-gradient(125deg,#112c4e,#1a4c83)}
.program-option.a2{background:linear-gradient(125deg,#123d34,#1b6857)}
.program-option.b1{background:linear-gradient(125deg,#482b28,#82463d)}
.program-option.cpd{background:linear-gradient(125deg,#322047,#604183)}
.program-option .program-code{font-size:14px;letter-spacing:.15em;text-transform:uppercase;opacity:.8}
.program-option strong{font-size:29px;line-height:1.2}
.program-option>span:not(.program-code){font-size:16px;line-height:1.5}
.program-option small{font-size:13px;margin-top:auto;opacity:.8}
.setup-footnote{font-size:15px;color:var(--muted);line-height:1.6;margin-top:24px}
.assessment-intro{margin-bottom:20px}
.assessment-intro h2{font-size:24px;margin:0 0 6px}
.assessment-intro p{font-size:17px;color:var(--muted);margin-bottom:16px}
.assessment-task{padding:25px 0}
.assessment-task:first-child{padding-top:0}
.assessment-task:last-child{border:0}
.task-heading{display:flex;gap:15px;align-items:start;margin-bottom:12px}
.task-number{width:42px;height:42px;flex:none;display:grid;place-items:center;border-radius:10px;background:var(--mint);color:var(--navy);font-weight:800}
.task-skill{font-size:13px;letter-spacing:.1em;text-transform:uppercase;color:var(--teal);font-weight:800}
.task-heading h3{font-size:21px;margin:2px 0 0}
.assessment-task>p{font-size:17px;line-height:1.75;color:var(--ink)}
.assessment-task audio{display:block;max-width:440px;width:100%;margin:14px 0 17px}
.assessment-task textarea{min-height:112px;padding:14px;font-size:16px}
body[data-program="b1"] .assessment-task textarea{min-height:190px}
.choice-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:16px 0}
.choice-option{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:10px;padding:13px 14px;font-size:16px;background:#fff}
.choice-option:has(input:checked){border-color:var(--teal);background:var(--mint)}
.choice-option input{accent-color:var(--teal)}
.task-hint{color:var(--muted);font-size:14px;margin:8px 0}
.support-field{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-top:17px;font-size:14px;color:var(--muted)}
.support-field select{border:1px solid var(--line);border-radius:8px;padding:8px 10px;background:white;color:var(--ink);font-size:14px}
.task-rubric{margin-top:17px;background:var(--mint);border-radius:10px;padding:16px;font-size:14px;color:var(--ink)}
.task-rubric strong{font-size:15px}
.task-rubric ul{margin:7px 0;padding-left:20px}
.task-rubric p{margin:9px 0 0}
.submit-assessment{margin-top:20px;font-size:16px;padding:13px 18px}
.review-layout .card{align-self:start}
.review-task{padding:15px 0;border-bottom:1px solid var(--line)}
.review-task:last-child{border:0}
.review-task strong{font-size:16px}
.review-task p{margin:5px 0;font-size:14px;overflow-wrap:anywhere}
.review-task small{font-size:13px;color:var(--muted)}
@media(max-width:1200px){.topbar{height:auto;min-height:77px;flex-wrap:wrap;padding-top:12px;padding-bottom:12px}.top-actions{flex-wrap:wrap}.skill-row{grid-template-columns:125px minmax(0,1fr) minmax(120px,190px)}}
.top-actions button,.breadcrumb{white-space:nowrap}
@media(max-width:720px){.setup-shell{padding:25px 17px 60px}.setup-intro{padding:45px 0 20px}.setup-intro h1{font-size:34px}.program-grid{grid-template-columns:1fr}.program-option{min-height:185px}.learner-name{display:none}.skill-row{grid-template-columns:110px minmax(0,1fr);gap:9px}.skill-row strong{grid-column:1 / -1;font-size:13px}.choice-list{grid-template-columns:1fr}.assessment-task>p{font-size:16px}}

.setup-intro.compact{padding-bottom:18px}
.setup-details{max-width:650px;padding:30px}
.setup-details .field label{font-size:16px}
.setup-details .field input{font-size:17px;min-height:48px}
.setup-details .inline-actions{margin-top:22px}
.setup-details .btn{font-size:15px;padding:12px 17px}
.centre-identity{margin-bottom:20px}
.centre-identity h3{font-size:21px}
.identity-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:18px}
.identity-grid>div{background:var(--mint);border-radius:10px;padding:14px}
.identity-grid span{display:block;color:var(--muted);font-size:13px;margin-bottom:5px}
.identity-grid strong{display:block;font-size:16px;overflow-wrap:anywhere}
.choice-list{grid-template-columns:repeat(2,minmax(0,1fr))}
.choice-option.dont-know{background:#f6f8f8;color:var(--muted)}
.choice-option.dont-know:has(input:checked){background:var(--mint);color:var(--navy)}
@media(max-width:720px){.identity-grid,.choice-list{grid-template-columns:1fr}.setup-details{padding:20px}}

/* Each Phase has its own page; the five subject sections keep 35 tasks manageable. */
.group-tabs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:9px;margin:20px 0}
.group-tabs button{border:1px solid var(--line);background:#fff;border-radius:11px;padding:20px 10px;min-height:76px;color:var(--ink);font-size:18px;font-weight:800;text-align:center;line-height:1.35}
.group-tabs button span{display:block;margin-top:6px;color:var(--muted);font-size:16px;font-weight:600}
.group-tabs button.active{background:var(--mint);border-color:var(--teal);color:var(--navy)}
.phase-completion{display:block;margin-top:15px;color:var(--teal);font-size:15px}
.group-heading{display:flex;align-items:end;justify-content:space-between;gap:20px;padding-bottom:15px;border-bottom:1px solid var(--line)}
.group-heading h2{font-size:25px;margin:0}
.group-heading h2 span{font-size:20px;font-weight:600}
.assessment-task .task-heading h3{margin:0;line-height:1.6;font-size:18px;font-weight:600}
.assessment-task .task-heading{align-items:baseline}
.assessment-task .task-number{display:block;height:auto;min-height:38px;text-align:center;font-size:18px;line-height:1.6;padding:5px 0}
.audio-source audio{margin-top:0}
.group-heading>span{color:var(--muted);font-size:14px}
.source-card{margin-top:26px;padding:20px;border-radius:12px;background:var(--mint)}
.source-card strong{font-size:19px;color:var(--navy)}
.source-card audio{display:block;width:100%;max-width:480px;margin-top:14px}
.source-card details{margin-top:12px;font-size:14px}
.source-card details p{margin:10px 0 0;line-height:1.75}
.source-card .reading-passage{margin:15px 0 0;font-size:18px;line-height:1.9;color:var(--ink)}
.group-footer{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end;margin:20px 0}
.group-footer .btn{font-size:16px}
.evidence-extra{margin-top:16px;border-top:1px solid var(--line);padding-top:14px}
.evidence-extra summary{cursor:pointer;color:var(--teal);font-weight:800;font-size:15px}
@media(max-width:900px){.group-tabs{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:600px){.group-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}.group-heading{align-items:start}.source-card .reading-passage{font-size:17px}}

.speech-settings-link{display:inline-flex;align-items:center;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink);font-size:14px;font-weight:700;white-space:nowrap}
/* Course 1.1 learning evidence and recording controls. */
.voice-actions,.practice-history{display:flex;gap:10px;flex-wrap:wrap;margin:15px 0}.upload-control{position:relative;overflow:hidden;cursor:pointer}.upload-control input{position:absolute;inset:0;width:100%;opacity:0;cursor:pointer}.voice-box{padding:20px;background:var(--mint);border:1px solid var(--line);border-radius:12px;margin-top:15px}.voice-box audio,.comparison-examples audio,.calibration-task audio{width:100%;max-width:540px}.voice-state,.practice-save-status{color:var(--teal);font-size:15px;line-height:1.6}.transcript{padding:15px;background:#fff;border-radius:8px;white-space:pre-wrap;line-height:1.8;margin-top:12px}.recording-active{background:#a33737!important}.comparison-card{margin-top:22px}.table-scroll{overflow-x:auto}.comparison-table{width:100%;border-collapse:collapse;text-align:left;font-size:15px;line-height:1.6}.comparison-table td,.comparison-table th{padding:14px 12px;border-bottom:1px solid var(--line);vertical-align:top;min-width:120px}.comparison-table th{color:var(--navy)}.comparison-examples{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:18px 0}.comparison-examples section{min-width:0;padding:18px;background:#f5f8fa;border:1px solid var(--line);border-radius:10px}.comparison-prompt{font-size:14px;line-height:1.8;color:var(--muted);margin-top:12px}blockquote{margin:15px 0;padding:15px;border:1px solid var(--line);border-radius:10px;background:white;white-space:pre-wrap;overflow-wrap:anywhere;font-size:17px;line-height:1.8}.skill-detail>p{margin:0 0 20px;color:var(--muted);font-size:15px}.calibration-task{padding:22px 0;border-bottom:1px solid var(--line)}.calibration-task h3{font-size:18px;line-height:1.8}.calibration-task label{display:block;margin:14px 0 8px}.calibration-task select{min-height:44px;font-size:16px;padding:8px;width:100%;max-width:360px}.practice-history{max-height:190px;overflow-y:auto}.task-hint{line-height:1.7}.comparison-card h4{margin:24px 0 10px;font-size:20px}
@media(max-width:720px){.comparison-examples{grid-template-columns:1fr}.voice-box{padding:14px}.voice-actions .btn{flex:1;text-align:center}.comparison-table{font-size:14px}}
/* Standalone course and mobile app shell */
html{min-height:100%;scroll-padding-top:100px}body{min-height:100dvh}.topbar{position:sticky;top:0;z-index:20;background:#fff}.app-install-button,.app-logout{border:1px solid var(--line);background:#fff;border-radius:9px;padding:9px 12px;font:inherit;font-size:14px;color:var(--navy);text-decoration:none;cursor:pointer}.mobile-app-tabs{display:none}.install-guide{width:min(440px,calc(100vw - 36px));border:0;border-radius:20px;padding:30px;color:var(--ink);box-shadow:0 20px 80px #102b4e33}.install-guide::backdrop{background:#102b4e88}.install-guide h2{font-size:25px}.install-guide p{line-height:1.8;font-size:16px}.install-guide .btn{width:100%;margin-top:14px}.app-login{margin:0;background:radial-gradient(ellipse at top,#e6edf7,#f5f8f7 65%);--navy:#112c4e;--teal:#245f9d}.login-shell{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:max(36px,env(safe-area-inset-top)) 22px max(28px,env(safe-area-inset-bottom));box-sizing:border-box}.login-brand{font-size:20px;font-weight:800;letter-spacing:.04em;color:#112c4e;margin-bottom:32px}.login-card{width:min(440px,100%);background:#fff;border:1px solid #dce5ec;border-radius:22px;padding:34px;box-sizing:border-box;box-shadow:0 14px 60px #112c4e0d}.login-card h1{font-size:28px;line-height:1.4;margin:12px 0}.login-card .field{margin:22px 0}.login-card input:not([type=checkbox]){min-height:50px;width:100%;font-size:18px;box-sizing:border-box}.remember-login{font-size:15px;display:flex;align-items:center;gap:9px;margin:20px 0}.remember-login input{width:18px;height:18px;accent-color:#245f9d}.login-submit{width:100%;font-size:18px;padding:15px}.login-help,.login-caption{color:#6a7b88;font-size:14px;line-height:1.7}.login-help{text-align:center;margin:24px 0 0}.login-caption{margin:24px 0 12px}.login-error{padding:12px 16px;background:#fff0ee;color:#903c31;border-radius:10px;line-height:1.7}.install-app-login{border:0;color:#245f9d;background:none;font-size:15px;text-decoration:underline;cursor:pointer}.app-logout:focus-visible,.app-install-button:focus-visible,.mobile-app-tabs button:focus-visible{outline:3px solid #7eafe0;outline-offset:3px}
@media(max-width:720px){body[data-app-role=student] .sidebar{display:none}.main{min-height:100dvh}body[data-app-role=student] .topbar{padding:max(14px,env(safe-area-inset-top)) 18px 12px;display:flex;flex-wrap:wrap;gap:10px;box-shadow:0 1px 12px #102b4e06}body[data-app-role=student] .breadcrumb{font-size:12px;width:100%}body[data-app-role=student] .top-actions{margin:0;gap:8px;width:100%}body[data-app-role=student] .content{padding:24px 18px calc(100px + env(safe-area-inset-bottom))}body[data-app-role=student] .mobile-app-tabs{position:fixed;bottom:0;left:0;right:0;display:grid;grid-template-columns:repeat(4,1fr);background:#fff;border-top:1px solid var(--line);padding:8px 10px calc(8px + env(safe-area-inset-bottom));z-index:30;box-shadow:0 -6px 24px #112c4e07}.mobile-app-tabs button{border:0;background:transparent;color:#73828b;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;font:inherit;font-size:13px;font-weight:650;min-height:52px;border-radius:12px}.mobile-app-tabs button[aria-current=page]{color:var(--teal);background:var(--mint)}.mobile-app-tabs svg{width:23px;height:23px}body[data-app-role=student] .toast{bottom:calc(84px + env(safe-area-inset-bottom));left:18px;right:18px;max-width:none;z-index:40}.login-card{padding:27px 23px}.login-brand{font-size:18px;margin-bottom:24px}.login-card h1{font-size:25px}.page-title{font-size:29px}.top-actions .program-pill{padding:7px 11px}.app-install-button{margin-left:auto}}
@media(display-mode:standalone){[data-action=app-install]{display:none}body{overscroll-behavior-y:none}}

/* Supplemental practice: filters browse existing records; creating is a separate action. */
.practice-filter,.practice-toolbar-actions{display:flex;flex-wrap:wrap;gap:10px}
.practice-toolbar{padding:22px 26px;margin-bottom:18px}.practice-toolbar-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:16px}.practice-toolbar h3{margin:0}.practice-toolbar .desc{margin-bottom:16px}
.practice-pending,.practice-completed{margin:18px 0;border:1px solid var(--line);border-radius:14px;background:#fff}
.practice-pending>summary,.practice-completed>summary{cursor:pointer;font-weight:700;padding:16px 20px;font-size:17px;line-height:1.5}
.practice-count{font-size:14px;font-weight:500;color:var(--muted);margin-left:12px;white-space:nowrap}
.practice-list{display:grid;gap:8px;max-height:300px;overflow-y:auto;overscroll-behavior:contain;padding:0 12px 12px}
.practice-summary{display:flex;align-items:center;justify-content:space-between;gap:16px;background:var(--surface,#fff);border:1px solid var(--line);border-radius:10px;padding:12px 14px;min-width:0}
.practice-summary.is-selected{border-color:var(--teal);background:var(--mint)}
.practice-row-content{min-width:0}.practice-summary h3{font-size:17px;line-height:1.5;margin:0;overflow-wrap:anywhere}.practice-summary .practice-row-meta{font-size:13px;color:var(--muted);margin:5px 0 0;line-height:1.5;overflow-wrap:anywhere}.practice-summary .btn{flex-shrink:0;min-height:44px;margin:0;white-space:nowrap}
.practice-empty{font-size:15px;color:var(--muted);margin:18px 0}
.practice-task-panel{margin-top:18px}.practice-submit-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}.practice-skill-heading{padding-top:26px;margin-top:20px;border-top:1px solid var(--line)}
.practice-skill-fields{border:1px solid var(--line);border-radius:14px;padding:18px;margin:20px 0;display:flex;flex-wrap:wrap;gap:18px}
.practice-skill-fields legend{padding:0 6px}.practice-skill-fields label,.practice-check{display:flex;align-items:center;gap:10px}.practice-skill-fields input,.practice-check input{width:auto;min-height:auto}
.practice-check{margin:18px 0}.practice-create .inline-actions{margin-top:24px}.term-archive-note{margin-bottom:28px}
#termSelect{max-width:230px}.top-actions{flex-wrap:wrap}
@media(max-width:700px){.practice-toolbar{padding:18px}.practice-summary{gap:10px;padding:10px}.practice-summary h3{font-size:16px}.practice-summary .practice-row-meta{font-size:12px}.practice-summary .btn{padding:10px;font-size:14px}.practice-pending>summary,.practice-completed>summary{padding:14px 16px;font-size:16px}.practice-filter .btn{padding:10px 13px}#termSelect{max-width:170px}}

/* Clear practice entry and focused review, with symmetric outlines. */
.practice-pending{border-color:var(--teal);background:var(--mint)}
.practice-pending>summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:14px;min-height:58px;color:var(--navy)}
.practice-pending>summary::-webkit-details-marker{display:none}
.practice-pending>summary:focus-visible,.task-review>summary:focus-visible{outline:3px solid var(--teal);outline-offset:3px;border-radius:10px}
.practice-pending .practice-count{display:inline-block;margin-left:12px;padding:3px 9px;background:#fff;border:1px solid var(--line);border-radius:18px;color:var(--navy);font-weight:800}
.practice-expand{display:flex;align-items:center;gap:8px;font-size:14px;white-space:nowrap}
.practice-expand svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;transition:transform .15s}
.practice-pending .when-open,.practice-pending[open] .when-closed{display:none}
.practice-pending[open] .when-open{display:inline}
.practice-pending[open] .practice-expand svg{transform:rotate(180deg)}
.practice-pending .practice-list{background:#fff;border-radius:0 0 14px 14px;border-top:1px solid var(--line)}
.comparison-summaries{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:20px}
.comparison-summary{padding:16px;background:#f6f9fb;border:1px solid var(--line);border-radius:12px;min-width:0}
.comparison-card .comparison-summary h4{margin:0 0 12px;font-size:17px;color:var(--navy)}
.comparison-values{display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap}
.comparison-values small{display:block;font-size:13px;color:var(--muted);margin-bottom:5px}
.comparison-values strong{font-size:16px;line-height:1.5}
.comparison-change{font-size:15px;line-height:1.6;margin:14px 0 0;font-weight:700;color:var(--muted)}
.comparison-change.up{color:var(--teal)}
.evidence-item>div{width:100%;min-width:0}
.evidence-item strong,.evidence-item p{overflow-wrap:anywhere}
.task-review{margin-top:14px;border:1px solid var(--line);border-radius:10px;background:#fafcfd}
.task-review>summary{cursor:pointer;padding:12px 14px;color:var(--teal);font-size:14px;font-weight:700;min-height:44px;line-height:1.6}
.review-content{padding:0 16px 18px;display:grid;gap:18px}
.review-content .review-prompt{font-weight:700;color:var(--ink);margin:0}
.review-content h4{font-size:14px;color:var(--navy);margin:0 0 7px}
.review-content p,.review-content li{font-size:15px;line-height:1.8;margin:0;white-space:pre-wrap}
.review-content p+p{margin-top:10px}
.review-content .review-answer{font-weight:700;color:var(--ink)}
.review-content .review-source,.review-content .review-reference{padding:12px;background:#fff;border:1px solid var(--line);border-radius:8px;color:var(--ink)}
.review-content mark{background:#e5edf5;color:inherit;font-weight:700;padding:1px 2px;border-radius:3px}
.review-content ul{padding-left:20px;margin:0}
.review-content .review-caption{font-size:13px;color:var(--muted);margin-top:8px}
.review-vocabulary{margin:0;display:grid;gap:8px}
.review-vocabulary>div{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;font-size:14px;line-height:1.7}
.review-vocabulary dt{font-weight:700;color:var(--navy)}
.review-vocabulary dd{margin:0;color:var(--muted)}
@media(max-width:900px){.comparison-summaries{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.comparison-summaries{grid-template-columns:1fr}.comparison-summary{padding:15px}.comparison-values{justify-content:flex-start;gap:30px}.report-grid .card{padding:20px}.evidence-item{padding:22px 0}.evidence-item strong{font-size:16px;line-height:1.7}.evidence-item p{margin-top:9px;line-height:1.8}.task-review>summary{padding:13px 12px}.review-content{padding:0 12px 16px;gap:20px}.review-content p,.review-content li{font-size:15px;line-height:1.85}.practice-expand{font-size:13px}.practice-pending>summary{gap:8px}.practice-pending .practice-count{margin-left:7px}}

/* Clear feedback destinations without left decoration. */
.tutor-access{margin:22px 0}.tutor-access .btn{margin-top:16px}
#tutor-observation,.practice-feedback{scroll-margin-top:110px}
#tutor-observation:focus,.practice-feedback:focus{outline:2px solid var(--teal);outline-offset:6px}
.practice-feedback-access{margin:18px 0}.practice-feedback{margin-top:24px}
@media(max-width:720px){#tutor-observation,.practice-feedback{scroll-margin-top:155px}}
