:root{--navy:#12293c;--navy2:#1d3950;--ink:#183247;--muted:#697e90;--paper:#f5f8fa;--surface:#fff;--border:#dce6eb;--green:#137768;--greenp:#e4f4ef;--amber:#986413;--amberp:#fff2d9;--red:#a83c45;--redp:#fae8ea;--blue:#215a9c;--radius:14px;--shadow:0 7px 30px rgba(23,53,75,.055);font-family:Inter,"Segoe UI",Arial,sans-serif;color:var(--ink)}
*{box-sizing:border-box}body{margin:0;min-height:100vh;background:var(--paper)}button,input,textarea,select{font:inherit}button{cursor:pointer}a{color:var(--blue)}.boot{padding:60px;text-align:center}.layout{display:flex;min-height:100vh}.sidebar{background:var(--navy);color:#e2eff6;width:270px;flex:none;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto}.brand{display:flex;align-items:center;gap:12px;padding:25px 24px 20px;border-bottom:1px solid #345065}.emblem{width:37px;height:37px;display:grid;place-items:center;border:2px solid #76c7c2;border-radius:11px;font-size:21px;color:#83d5ce;font-weight:750}.brand-title{font-weight:720;letter-spacing:.03em;font-size:17px}.brand-small{font-size:11px;color:#adbfcc;margin-top:3px}.side-cap{font-size:10px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:#94a9b8;padding:25px 24px 7px}.side-link{width:100%;display:flex;align-items:center;gap:12px;background:transparent;color:#cbdbe6;border:0;text-align:left;padding:12px 22px;font-size:14px;border-left:3px solid transparent}.side-link:hover,.side-link.active{background:#244458;color:#fff;border-left-color:#75d9c9}.side-link span{width:23px;opacity:.8}.side-link .side-number{margin-left:auto;border-radius:20px;background:#35566b;font-size:11px;padding:2px 8px}.side-bottom{margin-top:auto;padding:22px 20px;border-top:1px solid #345065;color:#aac0cd;font-size:12px}.side-bottom strong{color:white;display:block;margin-top:3px;font-weight:600}.side-bottom button{display:block;background:none;border:none;color:#a7d9d2;padding:13px 0 0;text-align:left}.main{flex:1;min-width:0}.topbar{height:78px;display:flex;align-items:center;justify-content:space-between;padding:0 38px;background:#fff;border-bottom:1px solid var(--border)}.breadcrumb{font-size:13px;color:var(--muted)}.topright{display:flex;align-items:center;gap:12px;font-size:12px;color:#5c7385}.avatar{background:#e4efe9;border-radius:100%;height:32px;width:32px;display:grid;place-items:center;color:#1f695e;font-weight:800}.content{max-width:1200px;padding:32px 38px 70px;margin:0 auto}.pagehead{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:28px}.eyebrow{font-size:11px;font-weight:750;letter-spacing:.12em;text-transform:uppercase;color:var(--green);margin-bottom:9px}.pagehead h1{font-size:27px;line-height:1.18;letter-spacing:-.035em;margin:0 0 8px;font-weight:730}.subtitle{font-size:14px;color:var(--muted);line-height:1.55;margin:0}.button,.button-soft,.button-danger{border:0;border-radius:9px;padding:10px 15px;background:var(--navy);color:#fff;font-size:13px;font-weight:670;display:inline-flex;gap:8px;align-items:center;justify-content:center;white-space:nowrap}.button:hover{background:var(--navy2)}.button-soft{background:#e8f0f3;color:var(--navy)}.button-soft:hover{background:#dbe9ed}.button-danger{background:#9d4146}.button:disabled,.button-soft:disabled{opacity:.5;cursor:not-allowed}.button-link{border:0;background:transparent;color:var(--blue);padding:0;text-align:left;text-decoration:underline;text-underline-offset:3px}.mini{padding:7px 11px;font-size:12px}.hero{background:linear-gradient(115deg,#1c4451,#143044);color:white;border-radius:18px;padding:28px 31px;display:flex;justify-content:space-between;gap:20px;box-shadow:var(--shadow);margin-bottom:22px}.hero h2{font-weight:650;font-size:21px;line-height:1.35;margin:5px 0 6px}.hero p{font-size:13px;color:#c2d9e0;max-width:640px;line-height:1.65;margin:0}.hero-mark{display:grid;place-items:center;min-width:115px;color:#82d8cd;font-size:58px;font-weight:200;opacity:.8}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px;margin-bottom:22px}.stat,.panel,.module-card,.exercise-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.stat{padding:19px}.stat .value{font-size:29px;line-height:1.2;font-weight:760;letter-spacing:-.03em}.stat .label{font-size:11px;color:var(--muted);margin-top:7px}.section-head{display:flex;justify-content:space-between;align-items:center;margin:25px 0 13px;gap:12px}.section-head h2{font-size:17px;margin:0;letter-spacing:-.015em}.section-head small{font-size:12px;color:var(--muted)}.module-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.module-card{padding:20px;cursor:pointer;min-height:157px;transition:border .15s,transform .15s}.module-card:hover{border-color:#86b7b1;transform:translateY(-2px)}.module-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:13px}.module-index{color:var(--green);font-size:11px;letter-spacing:.08em;font-weight:800}.module-card h3{font-size:15px;line-height:1.43;font-weight:650;min-height:43px;margin:0 0 16px}.module-footer{display:flex;justify-content:space-between;align-items:center;font-size:11px;color:var(--muted)}.progress{height:6px;border-radius:10px;background:#e5eef1;overflow:hidden}.progress>div{height:100%;background:var(--green);border-radius:10px}.smallprogress{width:95px}.pill{border-radius:30px;display:inline-flex;align-items:center;padding:5px 10px;font-size:11px;font-weight:720;background:#eef2f5;color:#627786;white-space:nowrap}.pill.green{background:var(--greenp);color:var(--green)}.pill.amber{background:var(--amberp);color:var(--amber)}.pill.red{background:var(--redp);color:var(--red)}.pill.blue{background:#e5effc;color:#255c9a}.toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.field,.area{border:1px solid #cddce4;background:#fff;border-radius:9px;padding:11px 12px;color:var(--ink);width:100%;font-size:14px;outline:0}.field:focus,.area:focus{border-color:var(--green);box-shadow:0 0 0 3px #ccece6}.area{resize:vertical;line-height:1.65;min-height:220px}.label{display:block;font-size:12px;font-weight:710;color:#355064;margin:0 0 8px}.search{width:270px}.panel{padding:22px;margin-bottom:15px}.thinpanel{padding:15px}.tabs{display:flex;gap:7px;border-bottom:1px solid var(--border);margin-bottom:22px;overflow:auto}.tab{padding:12px 15px;border:0;background:transparent;border-bottom:3px solid transparent;color:#61788a;font-size:13px;font-weight:640;white-space:nowrap}.tab:hover{color:var(--ink)}.tab.active{border-bottom-color:var(--green);color:var(--ink)}.math-text{font-family:"Georgia","Times New Roman",serif;line-height:1.82;font-size:16px;overflow-wrap:anywhere}.math-text p{margin:0 0 16px}.math-text strong{font-weight:680}.math-text math{font-size:1.08em;max-width:100%}.math-text math[display="block"]{display:block;overflow-x:auto;overflow-y:hidden;margin:17px 0}.math-text ul,.math-text ol{padding-left:22px}.math-text table{border-collapse:collapse;width:100%;font-family:system-ui;font-size:13px}.math-text td,.math-text th{border:1px solid #dce6eb;padding:8px}.math-text h3{font-family:system-ui;font-size:16px}.math-text p:has(> strong:first-child){margin-top:12px}.paperblock{border-left:4px solid #d5e8e6;padding:3px 0 3px 19px;margin-top:14px}.stepper{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:19px}.step{display:flex;align-items:center;gap:8px;padding:10px 13px;border:1px solid var(--border);border-radius:9px;background:white;font-size:12px;font-weight:650;color:var(--muted)}.step.active{border-color:var(--green);background:#e7f5f1;color:var(--green)}.step.complete{color:var(--green)}.step .smallstatus{font-size:9px}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 250px;gap:18px;align-items:start}.workspace .panel{margin-bottom:16px}.side-note{background:#f0f5f6;border:1px solid #e0ebee;border-radius:12px;padding:17px;font-size:12px;line-height:1.67;color:#4f6575}.side-note h4{font-size:12px;color:#274657;margin:0 0 8px}.inline-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.notice{padding:13px 15px;background:#eef5f8;border:1px solid #d6e5ea;border-radius:10px;font-size:12px;line-height:1.6;color:#426178;margin:16px 0}.notice.green{background:var(--greenp);border-color:#bee3db;color:var(--green)}.notice.amber{background:var(--amberp);border-color:#f0dcac;color:#825e24}.notice.red{background:var(--redp);border-color:#efc8ca;color:var(--red)}.twocol{display:grid;grid-template-columns:1fr 1fr;gap:13px}.listrow{display:flex;gap:13px;justify-content:space-between;align-items:center;padding:15px 0;border-bottom:1px solid #e8eef1}.listrow:last-child{border-bottom:0}.listrow .primary{font-weight:650;font-size:13px}.listrow .secondary{font-size:11px;color:var(--muted);margin-top:6px;line-height:1.5}.table-wrap{overflow:auto}.data-table{border-collapse:collapse;width:100%;font-size:12px}.data-table th{text-align:left;background:#f5f8fa;color:#5d7180;font-weight:750;padding:12px 10px;border-bottom:1px solid #dce5ea;white-space:nowrap}.data-table td{padding:11px 10px;border-bottom:1px solid #e7eef0;vertical-align:middle}.data-table tr:hover td{background:#fbfcfd}.data-table .number{font-variant-numeric:tabular-nums}.metric-bar{width:100%;height:8px;background:#edf2f4;border-radius:20px;overflow:hidden}.metric-bar>span{display:block;height:100%;background:var(--green)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.form-grid .span2{grid-column:1/-1}.formactions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:18px}.login-bg{min-height:100vh;display:grid;grid-template-columns:1fr 1fr;background:var(--navy)}.login-aside{padding:min(10vw,115px) 8%;display:flex;flex-direction:column;justify-content:space-between;color:white;background:radial-gradient(ellipse at top left,#225460 0,#173e50 37%,#12293c 78%)}.login-aside .stamp{border:1px solid #5e9a9d;border-radius:12px;width:60px;height:60px;display:grid;place-items:center;font-size:28px;font-weight:800;color:#95ded7}.login-aside h1{font-size:clamp(30px,3.8vw,50px);line-height:1.17;letter-spacing:-.045em;max-width:500px;font-weight:730}.login-aside p{font-size:15px;line-height:1.8;color:#bbd2da;max-width:450px}.login-aside .meta{font-size:12px;color:#8fb0bf}.login-right{background:var(--paper);display:grid;place-items:center;padding:30px}.login-card{width:min(100%,420px)}.login-card h2{font-size:28px;letter-spacing:-.03em;margin:0 0 8px}.login-card .caption{color:var(--muted);font-size:14px;margin:0 0 35px;line-height:1.6}.login-card .label{margin-top:19px}.login-card .button{width:100%;margin-top:25px;padding:14px}.loading{opacity:.65;pointer-events:none}.empty{text-align:center;padding:60px 20px;color:var(--muted);font-size:13px}.empty b{display:block;color:var(--ink);font-size:17px;margin-bottom:9px}#toast{position:fixed;right:25px;bottom:25px;max-width:400px;padding:15px 20px;background:#183647;color:#fff;box-shadow:0 15px 40px #112d3b30;border-radius:11px;font-size:13px;line-height:1.5;z-index:30;display:none}#toast.visible{display:block}#toast.error{background:#9d4146}.dense{margin-top:0;margin-bottom:7px}.muted{color:var(--muted)}.fine{font-size:12px;line-height:1.55}.right{text-align:right}.hide{display:none!important}.badge-index{display:inline-block;border:1px solid #c7e0da;border-radius:7px;padding:6px 10px;background:#f1faf7;color:var(--green);font-weight:740;font-size:12px}.reviewsplit{display:grid;grid-template-columns:minmax(0,1fr) minmax(290px,.7fr);gap:18px}.teacher-solution{max-height:440px;overflow:auto}.tasktext{max-height:330px;overflow:auto}.checkrow{display:flex;align-items:center;gap:8px}.checkrow input{accent-color:var(--green)}.assign-row{display:grid;grid-template-columns:minmax(0,1fr) 70px 70px 190px 90px;gap:10px;align-items:center;border-bottom:1px solid #e9eef2;padding:11px 0;font-size:12px}.assign-row.header{font-weight:700;color:var(--muted);font-size:11px}.assign-row input[type=datetime-local]{padding:7px;font-size:11px;width:100%;border-radius:7px;border:1px solid var(--border)}@media(max-width:1050px){.sidebar{width:225px}.workspace{grid-template-columns:minmax(0,1fr)}.reviewsplit{grid-template-columns:1fr}.hero-mark{display:none}.assign-row{grid-template-columns:minmax(0,1fr) 55px 55px 160px 70px}}@media(max-width:750px){.layout{display:block}.sidebar{position:static;width:100%;height:auto;overflow:visible}.brand{padding:12px 18px}.brand-small{display:none}.side-cap,.side-bottom{display:none}.side-nav{display:flex;overflow:auto}.side-link{width:auto;white-space:nowrap;padding:13px;font-size:12px}.topbar{height:55px;padding:0 17px}.content{padding:22px 15px 55px}.pagehead h1{font-size:22px}.pagehead{flex-wrap:wrap}.stats{grid-template-columns:repeat(2,1fr)}.module-grid,.twocol,.form-grid{grid-template-columns:1fr}.form-grid .span2{grid-column:1}.login-bg{display:block}.login-aside{min-height:240px;padding:35px 25px}.login-aside h1{font-size:27px}.login-aside p,.login-aside .meta{display:none}.login-right{padding:35px 20px}.toolbar{align-items:stretch}.search{width:100%}.assign-row{grid-template-columns:minmax(0,1fr) 40px 40px 140px 55px;font-size:10px;gap:4px}.assign-row input[type=datetime-local]{font-size:9px}.hero{padding:20px}.stat .value{font-size:24px}}

.modal-layer{position:fixed;inset:0;background:#0a1f31aa;z-index:50;display:grid;place-items:center;padding:20px}.modal-card{background:white;padding:28px;border-radius:15px;width:min(100%,430px);box-shadow:0 15px 50px #0004}.modal-card h2{font-size:21px}.modal-card label{margin-top:14px}

/* R2: lesson release controls */
.assign-row{grid-template-columns:minmax(230px,2fr) 90px 135px minmax(155px,1fr) minmax(160px,1fr);gap:13px}
.assign-row .access-actions{display:flex;flex-direction:column;gap:7px;align-items:stretch}
.assign-row .access-actions .button,.assign-row .access-actions .button-soft,.assign-row .access-actions .button-danger{white-space:normal;text-align:center}
@media(max-width:1000px){.assign-row.header{display:none}.assign-row{display:grid;grid-template-columns:minmax(150px,1fr) minmax(150px,1fr);padding:18px 4px}.assign-row>div:first-child{grid-column:1/-1}.assign-row .access-actions{grid-column:1/-1;flex-direction:row}.assign-row .access-actions>*{flex:1}}
@media(max-width:480px){.assign-row{grid-template-columns:1fr}.assign-row>div:first-child,.assign-row .access-actions{grid-column:1}.assign-row .access-actions{flex-direction:column}}
/* R2.2 — math authoring and safe administration */
.formula-toolbar,.admin-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.formula-toolbar{margin:9px 0 11px}
.formula-toolbar button{font-size:11px}
.math-hint{font-size:12px;color:var(--muted);line-height:1.8;margin:8px 0 14px}
.math-hint code{background:#edf2f7;color:#1e5069;padding:2px 5px;border-radius:4px;font-size:11px}
.math-preview-title{font-size:12px;font-weight:750;color:var(--ink);margin-bottom:8px}
.math-preview{padding:16px;border:1px solid #d9e6e8;border-radius:10px;background:#f9fcfc;min-height:55px;font-size:14px;line-height:1.8;overflow-x:auto}
.math-preview .answer-math{white-space:pre-wrap;overflow-wrap:anywhere;font-family:Georgia,'Times New Roman',serif}
.math-preview mjx-container{max-width:100%;overflow-x:auto;overflow-y:hidden}
.math-preview.history-answer{margin:10px 0}
.admin-separator{border:0;border-top:1px solid var(--border);margin:24px 0}
.admin-actions .mini{white-space:nowrap}
