
:root{--bg:#f4f2ec;--card:#fff;--ink:#1d2a2e;--muted:#667276;--line:#e3dfd4;--brand:#0f6b5c;--brand2:#e6f1ee;--accent:#b97a1f;--acc2:#fbf0dd;--danger:#b23b3b;--dang2:#fbeaea;--r:14px}
*{box-sizing:border-box}
html,body{margin:0}
body{font-family:"Tajawal",Arial,sans-serif;background:var(--bg);color:var(--ink);font-size:16px;line-height:1.6}
header{background:var(--brand);color:#fff;padding:16px 18px 0}
.hw{max-width:1100px;margin:0 auto}
.brand{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.logo{width:48px;height:48px;border-radius:13px;background:#ffffff26;display:grid;place-items:center;font-size:20px;font-weight:800;overflow:hidden;flex:none}
.logo img{width:100%;height:100%;object-fit:cover}
.brand h1{font-size:21px;margin:0;font-weight:800}
.brand p{margin:0;opacity:.85;font-size:14px}
.hdr-r{margin-inline-start:auto;font-size:13px;opacity:.92;text-align:left}
nav{display:flex;gap:2px;margin-top:12px;overflow-x:auto;scrollbar-width:thin}
nav a{color:#fff;text-decoration:none;padding:9px 13px;border-radius:10px 10px 0 0;font-weight:500;white-space:nowrap;opacity:.85;font-size:15px}
nav a.on{background:var(--bg);color:var(--brand);opacity:1;font-weight:700}
main{max-width:1100px;margin:0 auto;padding:18px}
footer{text-align:center;color:var(--muted);font-size:13px;padding:10px 16px 28px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:20px;margin-bottom:16px}
.card h2{margin:0 0 4px;font-size:19px}
.card h3{margin:14px 0 6px;font-size:16px}
.sub{color:var(--muted);margin:0 0 14px;font-size:14px}
.grid{display:grid;gap:12px}
.g2{grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}
.g5{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}
.full{grid-column:1/-1}
label{display:block;font-size:14px;font-weight:500;margin-bottom:4px}
input,select,textarea{width:100%;font:inherit;padding:9px 12px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink)}
input[type=file]{padding:7px}
input:focus,select:focus,textarea:focus{outline:2px solid var(--brand);outline-offset:0;border-color:transparent}
textarea{min-height:110px;resize:vertical}
button{font:inherit;cursor:pointer;border:0;border-radius:10px;padding:9px 16px;font-weight:700;background:var(--brand);color:#fff}
button.ghost{background:var(--brand2);color:var(--brand)}
button.warn{background:var(--acc2);color:#7a5313}
button.danger{background:var(--dang2);color:var(--danger)}
button.sm{padding:5px 11px;font-size:14px}
button:disabled{opacity:.5;cursor:not-allowed}
a.btn{display:inline-block;text-decoration:none;background:var(--brand);color:#fff;padding:8px 14px;border-radius:10px;font-weight:700;font-size:14px}
a.btn.ghost{background:var(--brand2);color:var(--brand)}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.ms{margin-inline-start:auto}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:16px}
.stat{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px}
.stat b{display:block;font-size:30px;color:var(--brand);line-height:1.2}
.stat span{color:var(--muted);font-size:14px}
table{width:100%;border-collapse:collapse;font-size:15px}
th,td{padding:8px 7px;border-bottom:1px solid var(--line);text-align:right;vertical-align:middle}
th{color:var(--muted);font-weight:500;font-size:13px;white-space:nowrap}
.tbl{overflow-x:auto}
.pill{display:inline-block;padding:0 9px;border-radius:99px;background:var(--brand2);color:var(--brand);font-size:12px;font-weight:700;white-space:nowrap}
.pill.a{background:var(--acc2);color:var(--accent)}
.pill.d{background:var(--dang2);color:var(--danger)}
.pill.g{background:#eee;color:#666}
.empty{color:var(--muted);text-align:center;padding:22px 10px}
.note{padding:10px 14px;border-radius:10px;background:var(--acc2);color:#7a5313;font-size:14px;margin-bottom:12px}
.note.err{background:var(--dang2);color:var(--danger)}
.note.ok{background:var(--brand2);color:var(--brand)}
.hide{display:none!important}
.item{display:flex;gap:12px;align-items:center;padding:12px;border:1px solid var(--line);border-radius:12px;margin-bottom:8px;background:#fff}
.item .ic{width:42px;height:42px;border-radius:10px;background:var(--brand2);display:grid;place-items:center;font-size:20px;flex:none}
.item .t{font-weight:700}
.item .m{color:var(--muted);font-size:13px}
.item .act{margin-inline-start:auto;display:flex;gap:6px;flex-wrap:wrap}
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.tabs button{background:#fff;border:1px solid var(--line);color:var(--ink);font-weight:500}
.tabs button.on{background:var(--brand);color:#fff;border-color:var(--brand)}
.hw-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px}
.hw-day{border:1px solid var(--line);border-radius:10px;padding:10px;background:#fcfbf8}
.hw-day b{display:block;color:var(--brand);font-size:14px}
.plan-img{max-width:100%;border-radius:10px;border:1px solid var(--line);margin-top:8px}
.code-in{font-size:28px;text-align:center;letter-spacing:8px;font-weight:800;max-width:260px;margin:0 auto;display:block}
.hero{text-align:center;padding:30px 20px}
.hero h2{font-size:22px}
.prog{height:8px;background:var(--brand2);border-radius:9px;overflow:hidden;margin-top:8px}
.prog i{display:block;height:100%;background:var(--brand);width:0;transition:width .2s}
.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:var(--ink);color:#fff;padding:10px 18px;border-radius:10px;opacity:0;transition:.25s;pointer-events:none;z-index:50;max-width:90vw}
.toast.show{opacity:1}
.modal{position:fixed;inset:0;background:#0007;display:grid;place-items:center;z-index:40;padding:14px}
.modal .box{background:#fff;border-radius:14px;padding:20px;max-width:520px;width:100%;max-height:90vh;overflow:auto}
.viewer{position:fixed;inset:0;background:#222c;z-index:45;display:flex;flex-direction:column}
.viewer .bar{background:#fff;padding:10px 14px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.viewer .bar b{font-size:16px}
.viewer .pages{flex:1;overflow:auto;padding:14px;display:flex;flex-direction:column;align-items:center;gap:12px}
.viewer canvas,.viewer img{max-width:100%;background:#fff;box-shadow:0 2px 10px #0005;border-radius:4px}
.badge{font-size:12px;padding:2px 8px;border-radius:8px;background:#ffffff2e}
.small{font-size:13px;color:var(--muted)}
.mini{width:110px}
.pg-in{width:120px;direction:ltr;text-align:center}
.cls-row{display:flex;align-items:center;gap:8px;padding:10px 0;border-bottom:1px solid var(--line)}
.preview-banner{background:var(--acc2);color:#7a5313;padding:8px 14px;border-radius:10px;margin-bottom:12px;display:flex;gap:8px;align-items:center}
@media (max-width:640px){.item{flex-wrap:wrap}.item .act{margin-inline-start:0;width:100%}.hdr-r{display:none}main{padding:12px}.card{padding:15px}}

/* ===== two pages + sidebar ===== */
header{padding:16px 18px}
.to-admin{display:inline-block;margin-top:6px;color:#fff;background:#ffffff26;padding:4px 12px;border-radius:9px;text-decoration:none;font-weight:700}
#teacherPage{min-height:100vh}
.tbar{position:sticky;top:0;z-index:30;background:var(--brand);color:#fff;display:flex;align-items:center;gap:10px;padding:10px 14px}
.tbar .tlogo{width:36px;height:36px;border-radius:10px;background:#ffffff26;display:grid;place-items:center;overflow:hidden;font-weight:800}
.tbar .tlogo img{width:100%;height:100%;object-fit:cover}
.tbar b{font-size:18px}
.tbar .ttl small{display:block;font-size:12px;opacity:.85;font-weight:400}
.tbar a.pl{color:#fff;text-decoration:none;background:#ffffff26;padding:6px 12px;border-radius:9px;font-weight:700;font-size:14px;white-space:nowrap}
#sideBtn{background:#ffffff26;color:#fff;width:42px;height:42px;padding:0;font-size:22px;line-height:1;flex:none}
.tlayout{display:flex;align-items:flex-start}
#side{width:250px;flex:none;background:#fff;border-inline-end:1px solid var(--line);position:sticky;top:62px;height:calc(100vh - 62px);overflow-y:auto;padding:12px 10px;transition:margin .25s ease}
#side nav{display:flex;flex-direction:column;gap:3px;margin:0;overflow:visible}
#side nav a{color:var(--ink);opacity:1;text-decoration:none;padding:10px 14px;border-radius:10px;font-weight:500;font-size:15px;display:flex;gap:10px;align-items:center}
#side nav a:hover{background:var(--brand2)}
#side nav a.on{background:var(--brand);color:#fff;font-weight:700}
#side .sgrp{font-size:12px;color:var(--muted);padding:12px 14px 4px}
#tmain{flex:1;min-width:0;max-width:1050px;margin:0 auto;padding:18px}
#teacherPage.collapsed #side{margin-inline-start:-251px}
#sideShade{display:none}
@media (max-width:900px){
  #side{position:fixed;top:62px;right:0;height:calc(100vh - 62px);z-index:35;box-shadow:-4px 0 18px #0003;margin:0;transform:translateX(0);transition:transform .25s ease}
  #teacherPage.collapsed #side{margin:0;transform:translateX(105%)}
  #teacherPage:not(.collapsed) #sideShade{display:block;position:fixed;inset:62px 0 0 0;background:#0004;z-index:34}
  .tbar .ttl small{display:none}
  .tbar #syncLbl,.tbar .tlogo{display:none!important}
  .tbar b{font-size:16px;white-space:nowrap}
  .tbar .ttl{flex:1}
}
#status{position:fixed;top:10px;left:50%;transform:translateX(-50%);z-index:60;max-width:92vw;box-shadow:0 4px 14px #0002}

.item.notice{background:#fffaf0;border-color:#f3d9a4}.item.notice .ic{background:#fdecc8}.item .nt{font-weight:700;color:#9a5b00;margin-top:2px}
.item .rs{margin:2px 0 0;padding-inline-start:18px}

.podium{display:flex;justify-content:center;align-items:flex-end;gap:12px;margin:14px 0 18px}
.pod{flex:1;max-width:170px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:4px}
.pod .pm{font-size:28px}.pod .pn{font-weight:800}.pod .pg{font-size:13px;font-weight:700}
.pod .pb{width:100%;border-radius:12px 12px 0 0;background:linear-gradient(180deg,#e6f4ef,#cfe9df);margin-top:6px}
.pod.p1 .pb{height:70px;background:linear-gradient(180deg,#fff3c4,#f3d77a)}.pod.p2 .pb{height:48px;background:linear-gradient(180deg,#eef1f4,#cfd6dd)}.pod.p3 .pb{height:34px;background:linear-gradient(180deg,#f8e2cf,#e6b48a)}
.rk{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;margin-bottom:8px;background:#fff}
.rk.muted{opacity:.6}.rk .rn{width:36px;text-align:center;font-weight:800;font-size:18px;flex:none}
.rk .rs{flex:1;min-width:0}.rk .rt{font-weight:700;margin-bottom:6px}
.rk .bar{height:10px;border-radius:6px;background:#edf1f3;overflow:hidden}.rk .bar i{display:block;height:100%;border-radius:6px}
.rk .rp{display:flex;flex-direction:column;align-items:center;min-width:78px;flex:none}.rk .rp b{font-size:18px}.rk .rp span{font-size:12px;font-weight:700}
.estats{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.estats span{background:#eef5f2;border-radius:999px;padding:4px 10px;font-size:13px}.estats b{color:var(--brand,#2f6b5a)}
.rdet{flex-basis:100%;margin-top:10px;border-top:1px dashed var(--line);padding-top:8px}.rdet .rd{display:flex;justify-content:space-between;gap:8px;padding:5px 2px;font-size:14px}.rdet .rd+.rd{border-top:1px solid #f0f2f3}
