:root{--paper:#f2f5f8;--sheet:#fff;--ink:#1c2740;--ink-soft:#5a667d;--rule:#d6dfea;--rule-strong:#b7c5d8;--blue:#2b59c3;--blue-wash:#e7eefb;--red:#c23b32;--red-wash:#fceae8;--green:#2f7d58;--green-wash:#e5f3ec;--amber:#b27a0f;--amber-wash:#fff3d4;--hatch:#e3e9f1;--on-accent:#fff;--display:"Alexandria","Segoe UI",Tahoma,system-ui,sans-serif;--body:"IBM Plex Sans Arabic","Segoe UI",Tahoma,system-ui,sans-serif}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--paper:#111723;--sheet:#182032;--ink:#e6eaf2;--ink-soft:#9aa6bd;--rule:#2a3650;--rule-strong:#3b4a68;--blue:#86a6f2;--blue-wash:#1f2b48;--red:#f08077;--red-wash:#3b2024;--green:#6cc49b;--green-wash:#18332a;--amber:#e9bc55;--amber-wash:#382e19;--hatch:#222c41;--on-accent:#0e1526}}:root[data-theme=dark]{--paper:#111723;--sheet:#182032;--ink:#e6eaf2;--ink-soft:#9aa6bd;--rule:#2a3650;--rule-strong:#3b4a68;--blue:#86a6f2;--blue-wash:#1f2b48;--red:#f08077;--red-wash:#3b2024;--green:#6cc49b;--green-wash:#18332a;--amber:#e9bc55;--amber-wash:#382e19;--hatch:#222c41;--on-accent:#0e1526}*{box-sizing:border-box}[hidden]{display:none!important}html,body{margin:0}body{background:var(--paper);color:var(--ink);font-family:var(--body);font-variant-numeric:tabular-nums;font-size:16px;line-height:1.6}button,input,select{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--blue);outline-offset:2px}.wrap{max-width:1200px;margin:0 auto;padding:0 18px}header.top{border-bottom:1px solid var(--rule);background:var(--sheet)}.top .wrap{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:10px 24px;padding-top:20px;display:flex}.brand h1{font-family:var(--display);margin:0;font-size:clamp(1.45rem,3vw,2rem);font-weight:800;line-height:1.2}.brand p{color:var(--ink-soft);margin:2px 0 0;font-size:.93rem}.status{color:var(--ink-soft);flex-wrap:wrap;align-items:center;gap:8px;padding-bottom:4px;font-size:.85rem;display:flex}nav.tabs{scrollbar-width:thin;gap:2px;width:100%;margin-top:12px;display:flex;overflow-x:auto}nav.tabs button{cursor:pointer;color:var(--ink-soft);white-space:nowrap;background:0 0;border:0;border-bottom:3px solid #0000;padding:10px 14px 9px;font-weight:700}nav.tabs button[aria-selected=true]{color:var(--ink);border-bottom-color:var(--blue)}.banner{background:var(--amber-wash);border:1px solid var(--amber);border-radius:8px;margin:16px 0 0;padding:12px 14px;font-size:.95rem}main{padding:22px 0 70px}.panel[hidden]{display:none}.controls{flex-wrap:wrap;align-items:flex-end;gap:14px 20px;margin-bottom:18px;display:flex}.field{flex-direction:column;gap:4px;display:flex}.field>span{color:var(--ink-soft);font-size:.85rem;font-weight:700}input[type=date],input[type=time],input[type=text],input[type=search],select{background:var(--sheet);border:1px solid var(--rule-strong);border-radius:6px;min-height:40px;padding:7px 10px}.seg{flex-wrap:wrap;gap:6px;display:flex}.seg button{border:1px solid var(--rule-strong);background:var(--sheet);cursor:pointer;border-radius:999px;padding:6px 14px;font-size:.92rem;font-weight:700}.seg button[aria-pressed=true]{background:var(--ink);color:var(--sheet);border-color:var(--ink)}.datenav{align-items:center;gap:6px;display:flex}.iconbtn{border:1px solid var(--rule-strong);background:var(--sheet);cursor:pointer;border-radius:6px;width:40px;height:40px;font-size:1.1rem;line-height:1}.btn{border:1px solid var(--rule-strong);background:var(--sheet);cursor:pointer;border-radius:6px;min-height:40px;padding:8px 16px;font-weight:700}.btn.primary{background:var(--blue);border-color:var(--blue);color:var(--on-accent)}.btn.danger{color:var(--red);background:0 0;border-color:#0000;min-height:0;padding:4px 8px}.btn.small{min-height:0;padding:4px 10px;font-size:.85rem}.btn:disabled{opacity:.5;cursor:not-allowed}.sheet{background:var(--sheet);border:1px solid var(--rule);border-radius:10px}.note{color:var(--ink-soft);font-size:.92rem}.warn{color:var(--amber);font-weight:700}.scroll{overflow-x:auto}table{border-collapse:collapse;width:100%}.empty{text-align:center;color:var(--ink-soft);padding:36px 20px}.pchips{gap:6px;padding-bottom:4px;display:flex;overflow-x:auto}.pchip{border:1px solid var(--rule-strong);background:var(--sheet);cursor:pointer;border-radius:10px;flex-direction:column;align-items:center;min-width:74px;padding:6px 10px;line-height:1.25;display:flex;position:relative}.pchip b{font-family:var(--display);font-size:1.15rem}.pchip small{color:var(--ink-soft);font-size:.75rem}.pchip.done{border-color:var(--green)}.pchip.done:after{content:"✓";top:2px;color:var(--green);font-size:.8rem;font-weight:800;position:absolute;inset-inline-start:6px}.pchip.now{box-shadow:0 0 0 2px var(--amber) inset}.pchip[aria-pressed=true]{background:var(--ink);color:var(--sheet);border-color:var(--ink)}.pchip[aria-pressed=true] small{color:inherit;opacity:.8}.mine{gap:8px;margin-bottom:18px;padding-bottom:4px;display:flex;overflow-x:auto}.minecard{text-align:start;border:1px solid var(--rule);background:var(--sheet);cursor:pointer;border-radius:10px;flex:none;min-width:170px;padding:8px 12px}.minecard b{font-family:var(--display);display:block}.minecard span{color:var(--ink-soft);font-size:.85rem;display:block}.minecard.sel{border-color:var(--blue);box-shadow:0 0 0 1px var(--blue) inset}.reghead{border-bottom:2px solid var(--ink);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:14px 18px;display:flex}.reghead h2{font-family:var(--display);margin:0;font-size:1.3rem;font-weight:700}.reghead .sub{color:var(--ink-soft);font-size:.92rem}.tally{flex-wrap:wrap;align-items:baseline;gap:16px;display:flex}.tally b{font-family:var(--display);font-size:1.5rem;font-weight:800}.tally .abs b{color:var(--red)}.tally .exc b{color:var(--blue)}.roster td,.roster th{border-bottom:1px solid var(--rule);text-align:start;padding:6px 14px}.roster th{color:var(--ink-soft);border-bottom:1px solid var(--rule-strong);font-size:.82rem;font-weight:700}.roster td.n{color:var(--ink-soft);width:40px}.roster .nm{font-weight:500}.roster .cid{color:var(--ink-soft);letter-spacing:.03em;font-size:.8rem;display:block}.roster tr.isA td{background:var(--red-wash)}.roster tr.isA .nm{color:var(--red)}.roster tr.isE td{background:var(--amber-wash)}.roster tr.isE .nm{color:var(--amber)}.stat{border:1px solid var(--rule-strong);border-radius:8px;display:inline-flex;overflow:hidden}.stat button{background:var(--sheet);cursor:pointer;color:var(--ink-soft);border:0;padding:7px 12px;font-size:.88rem;font-weight:700}.stat button+button{border-inline-start:1px solid var(--rule-strong)}.stat button[aria-pressed=true][data-v=P]{background:var(--green);color:var(--on-accent)}.stat button[aria-pressed=true][data-v=A]{background:var(--red);color:var(--on-accent)}.stat button[aria-pressed=true][data-v=E]{background:var(--amber);color:var(--on-accent)}.regfoot{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:14px 18px;display:flex}.savestate.saved{color:var(--green)}.savestate.dirty{color:var(--amber);font-weight:700}.kpis{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));margin-bottom:22px;display:grid}.kpi{border-inline-end:1px solid var(--rule);padding:12px 16px}.kpi:last-child{border-inline-end:0}.kpi .v{font-family:var(--display);font-size:1.85rem;font-weight:800;line-height:1.3}.kpi .l{color:var(--ink-soft);font-size:.86rem}.kpi .v.bad{color:var(--red)}.kpi .v.good{color:var(--green)}.kpi .v.mid{color:var(--amber)}.kpi .v.blue{color:var(--blue)}.section{margin-bottom:22px}.section>h3,.h3{font-family:var(--display);margin:0 0 10px;font-size:1.1rem;font-weight:700}.grid2{grid-template-columns:1fr 1fr;gap:22px;display:grid}.grid3{grid-template-columns:repeat(3,1fr);gap:22px;display:grid}@media (width<=900px){.grid3{grid-template-columns:1fr}}@media (width<=820px){.grid2{grid-template-columns:1fr}}.data th,.data td{border-bottom:1px solid var(--rule);text-align:start;white-space:nowrap;padding:8px 12px}.data th{color:var(--ink-soft);border-bottom:1px solid var(--rule-strong);font-size:.82rem}.data td.num,.data th.num{text-align:center}.data tr:last-child td{border-bottom:0}.data th.sortable{cursor:pointer;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.pill{white-space:nowrap;border-radius:999px;padding:0 8px;font-size:.8rem;font-weight:700;display:inline-block}.pill.red{background:var(--red-wash);color:var(--red)}.pill.green{background:var(--green-wash);color:var(--green)}.pill.amber{background:var(--amber-wash);color:var(--amber)}.pill.blue{background:var(--blue-wash);color:var(--blue)}.bar{background:var(--hatch);border-radius:4px;min-width:70px;height:8px;position:relative;overflow:hidden}.bar i{background:var(--green);border-radius:4px;position:absolute;inset-block:0;inset-inline-start:0}.chart{padding:12px 14px}.chart svg{direction:ltr;width:100%;height:auto;display:block}.chart text{fill:var(--ink-soft);font-family:var(--body);font-size:11px}.exports{flex-wrap:wrap;gap:8px;margin-inline-start:auto;display:flex}.stulink{color:inherit;font:inherit;text-align:start;cursor:pointer;text-decoration:underline;-webkit-text-decoration-color:var(--rule-strong);text-decoration-color:var(--rule-strong);text-underline-offset:4px;background:0 0;border:0;padding:0}.stulink:hover{color:var(--blue);-webkit-text-decoration-color:var(--blue);text-decoration-color:var(--blue)}.regrid{border-collapse:separate;border-spacing:0}.regrid th,.regrid td{border-bottom:1px solid var(--rule);border-inline-end:1px solid var(--rule);text-align:center;padding:0;font-size:.78rem}.regrid thead th{background:var(--sheet);min-width:30px;height:46px;color:var(--ink-soft);border-bottom:2px solid var(--ink);z-index:1;font-weight:700;line-height:1.15;position:sticky;top:0}.regrid .wk{border-inline-start:2px solid var(--rule-strong)}.regrid .rowh{background:var(--sheet);text-align:start;white-space:nowrap;z-index:2;border-inline-end:2px solid var(--ink);min-width:170px;padding:0 12px;font-size:.86rem;position:sticky;inset-inline-start:0}.regrid thead .rowh{z-index:3}.regrid td.c{min-width:30px;height:30px}.regrid td.A{color:var(--on-accent);background:var(--red);font-weight:800}.regrid td.PA,.regrid td.L{background:var(--amber-wash);color:var(--amber);font-weight:800}.regrid td.P:after{content:"";background:var(--rule-strong);border-radius:50%;width:4px;height:4px;display:inline-block}.regrid td.X{background:repeating-linear-gradient(135deg,var(--hatch) 0 3px,transparent 3px 7px)}.regrid td.tot{border-inline-start:2px solid var(--ink);min-width:52px;padding:0 10px;font-weight:700}.legend{color:var(--ink-soft);flex-wrap:wrap;gap:16px;margin-top:10px;font-size:.85rem;display:flex}.legend i{vertical-align:-2px;text-align:center;border-radius:2px;width:14px;height:14px;margin-inline-end:6px;font-size:10px;font-style:normal;font-weight:800;line-height:14px;display:inline-block}.profile{border-bottom:2px solid var(--ink);flex-wrap:wrap;justify-content:space-between;gap:12px 24px;padding:16px 18px;display:flex}.profile h2{font-family:var(--display);margin:0;font-size:1.6rem;font-weight:800;line-height:1.3}.profile .meta{color:var(--ink-soft)}.flags{flex-wrap:wrap;align-items:flex-start;gap:6px;display:flex}.months{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:18px;padding:18px;display:grid}.month h4{font-family:var(--display);margin:0 0 8px;font-size:1rem;font-weight:700}.cal{grid-template-columns:repeat(7,1fr);gap:3px;display:grid}.cal .h{color:var(--ink-soft);text-align:center;font-size:.7rem;font-weight:700}.cal .d{aspect-ratio:1;border:1px solid var(--rule);border-radius:4px;place-items:center;font-size:.8rem;display:grid}.cal .d.A{background:var(--red);border-color:var(--red);color:var(--on-accent);font-weight:800}.cal .d.PA,.cal .d.L{background:var(--amber-wash);border-color:var(--amber);color:var(--amber);font-weight:800}.cal .d.P{background:var(--green-wash);color:var(--green);border-color:#0000}.cal .d.X{background:repeating-linear-gradient(135deg,var(--hatch) 0 3px,transparent 3px 7px)}.cal .d.w,.cal .d.o{color:var(--rule-strong);border-color:#0000}.cal .d.e{border:0}.cmp{flex-direction:column;gap:10px;padding:14px 18px;display:flex}.cmp .row{grid-template-columns:130px 1fr 64px;align-items:center;gap:10px;font-size:.92rem;display:grid}.cmp .bar{height:12px}.tt{border-collapse:separate;border-spacing:0;min-width:760px}.tt th,.tt td{border-bottom:1px solid var(--rule);border-inline-end:1px solid var(--rule);vertical-align:top}.tt thead th{font-family:var(--display);border-bottom:2px solid var(--ink);text-align:center;padding:10px;font-weight:700}.tt th.ph{text-align:start;background:var(--paper);width:108px;padding:8px 12px}.tt th.ph b{font-family:var(--display);display:block}.tt th.ph small{color:var(--ink-soft);font-weight:500}.tt td{height:70px;padding:4px}.cell{cursor:pointer;text-align:start;background:0 0;border:1px dashed #0000;border-radius:6px;flex-direction:column;justify-content:center;gap:2px;width:100%;height:100%;min-height:62px;padding:6px 8px;display:flex}.cell:hover{border-color:var(--blue);background:var(--blue-wash)}.cell b{font-size:.92rem;line-height:1.3}.cell span{color:var(--ink-soft);font-size:.8rem;line-height:1.3}.cell.emptyc{color:var(--rule-strong);align-items:center;font-size:.85rem}.cell.conf{border-color:var(--red);background:var(--red-wash);border-style:solid}.breakrow td{background:var(--paper);height:auto;color:var(--ink-soft);text-align:center;padding:4px 12px;font-size:.8rem}.card{padding:16px 18px}.card h3{margin-top:0}.formrow{flex-wrap:wrap;align-items:flex-end;gap:10px;display:flex}.formrow .field{flex:150px}.bells td{padding:6px 8px}.picker{flex-direction:column;gap:10px;max-width:100%;display:flex}.gradeseg{background:var(--hatch);scrollbar-width:none;border-radius:10px;gap:2px;max-width:100%;padding:3px;display:inline-flex;overflow-x:auto}.gradeseg::-webkit-scrollbar{display:none}.gradeseg button{cursor:pointer;color:var(--ink-soft);white-space:nowrap;background:0 0;border:0;border-radius:8px;padding:7px 16px;font-size:.95rem;font-weight:700}.gradeseg button[aria-pressed=true]{background:var(--sheet);color:var(--ink);box-shadow:0 1px 3px #141e322e}.secs{scrollbar-width:none;align-items:center;gap:8px;padding-bottom:2px;display:flex;overflow-x:auto}.secs::-webkit-scrollbar{display:none}.secs .lbl{color:var(--ink-soft);white-space:nowrap;font-size:.85rem;font-weight:700}.sec{border:1px solid var(--rule-strong);background:var(--sheet);cursor:pointer;min-width:44px;height:44px;font-family:var(--display);border-radius:22px;flex:none;justify-content:center;align-items:center;gap:5px;padding:0 10px;font-size:1.05rem;font-weight:700;display:inline-flex;position:relative}.sec small{font-family:var(--body);color:var(--ink-soft);font-size:.72rem;font-weight:500}.sec[aria-pressed=true]{background:var(--ink);color:var(--sheet);border-color:var(--ink)}.sec[aria-pressed=true] small{color:inherit;opacity:.75}.sec.done{border-color:var(--green)}.sec.done:after{content:"";top:3px;background:var(--green);border:2px solid var(--sheet);border-radius:50%;width:8px;height:8px;position:absolute;inset-inline-end:3px}.daygrid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px;padding:16px;display:grid}.pcard{border:1px solid var(--rule);background:var(--sheet);border-radius:10px;flex-direction:column;gap:2px;min-height:104px;padding:10px 12px;display:flex;position:relative}.pcard.drag{opacity:.45}.pcard.over{border-color:var(--blue);box-shadow:0 0 0 2px var(--blue-wash) inset}.pcard .ph2{color:var(--ink-soft);justify-content:space-between;align-items:center;gap:6px;font-size:.8rem;font-weight:700;display:flex}.pcard b{font-family:var(--display);font-size:1rem;line-height:1.3}.pcard span.t{color:var(--ink-soft);font-size:.85rem}.pcard.changed{border-color:var(--amber);background:var(--amber-wash)}.pcard.pend{border-style:dashed;border-color:var(--blue)}.pcard.cancelled{opacity:.6;background:repeating-linear-gradient(135deg,var(--hatch) 0 4px,transparent 4px 9px)}.pcard .edit{cursor:pointer;color:var(--ink-soft);background:0 0;border:0;border-radius:6px;padding:2px 4px;font-size:1rem}.pcard .edit:hover{background:var(--blue-wash);color:var(--blue)}.notes{flex-direction:column;gap:8px;max-height:60vh;display:flex;overflow:auto}.note-item{border:1px solid var(--rule);border-radius:8px;padding:8px 10px;font-size:.92rem}.note-item.unread{border-inline-start:4px solid var(--blue)}.note-item .acts{flex-wrap:wrap;gap:6px;margin-top:6px;display:flex}.bell{position:relative}.bell .dot{top:-6px;background:var(--red);color:#fff;border-radius:999px;padding:0 5px;font-size:.7rem;font-weight:700;position:absolute;inset-inline-end:-6px}details.missing{border:1px solid var(--amber);background:var(--amber-wash);border-radius:8px;margin:0 0 22px}details.missing summary{cursor:pointer;padding:10px 14px;font-weight:700;list-style-position:inside}details.missing[open] summary{border-bottom:1px solid var(--amber)}details.missing .data{background:var(--sheet)}.obs-scale{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.obs-top{z-index:4;background:var(--paper);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:8px 0;display:flex;position:sticky;top:0}.obs-total{font-family:var(--display);font-size:1.1rem;font-weight:800}.obs-sec{margin-bottom:16px}.obs-sec>h3{border-bottom:1px solid var(--rule);background:var(--paper);font-family:var(--display);border-radius:10px 10px 0 0;justify-content:space-between;gap:8px;margin:0;padding:12px 16px;font-size:1.02rem;display:flex}.obs-item{border-bottom:1px solid var(--rule);grid-template-columns:1fr auto;align-items:center;gap:8px 14px;padding:10px 16px;display:grid}.obs-item:last-child{border-bottom:0}.obs-item .lbl{font-weight:500}.sc{gap:4px;display:inline-flex}.sc button{border:1px solid var(--rule-strong);background:var(--sheet);cursor:pointer;width:40px;height:38px;color:var(--ink-soft);border-radius:8px;font-weight:800}.sc button[aria-pressed=true]{color:var(--on-accent);border-color:#0000}.sc button[aria-pressed=true][data-v="0"]{background:var(--red)}.sc button[aria-pressed=true][data-v="1"]{background:#d9822b}.sc button[aria-pressed=true][data-v="2"]{background:var(--amber)}.sc button[aria-pressed=true][data-v="3"]{background:var(--blue)}.sc button[aria-pressed=true][data-v="4"]{background:var(--green)}.obs-item .nbtn{color:var(--ink-soft);cursor:pointer;background:0 0;border:0;padding:0;font-size:.82rem;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.obs-item input.note-in{grid-column:1/-1;width:100%}.obs-item.missing .lbl{color:var(--red)}textarea{background:var(--sheet);border:1px solid var(--rule-strong);width:100%;min-height:84px;font:inherit;color:inherit;resize:vertical;border-radius:6px;padding:8px 10px}.pchips.obsp .pchip{text-align:start;align-items:flex-start;min-width:150px}.domain-bars{flex-direction:column;gap:6px;display:flex}.domain-bars .row{grid-template-columns:170px 1fr 52px;align-items:center;gap:8px;font-size:.88rem;display:grid}#print-area{display:none}@media (width<=600px){.obs-item{grid-template-columns:1fr}.sc button{width:36px}}@media print{body.print-card>:not(#print-area){display:none!important}body.print-card #print-area{color:#000;font-size:12px;display:block!important}#print-area table{border-collapse:collapse;width:100%}#print-area td,#print-area th{border:1px solid #999;padding:3px 6px}#print-area .sech{background:#e9e9e9;font-weight:700}#print-area .chk{text-align:center;width:28px}}.modal{z-index:20;background:#0a0f1e73;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal[hidden]{display:none}.dlg{background:var(--sheet);border:1px solid var(--rule);border-radius:12px;width:100%;max-width:440px;padding:18px 20px}.dlg h3{font-family:var(--display);margin:0 0 4px;font-size:1.1rem}.dlg .field{margin-top:12px}.dlg .field select,.dlg .field input{width:100%}.dlg .acts{flex-wrap:wrap;justify-content:flex-start;gap:8px;margin-top:18px;display:flex}.toast{background:var(--ink);color:var(--sheet);opacity:0;pointer-events:none;z-index:30;text-align:center;border-radius:8px;max-width:90vw;padding:10px 18px;font-weight:700;transition:opacity .2s;position:fixed;bottom:20px;left:50%;transform:translate(-50%)}.toast.show{opacity:1}@media (prefers-reduced-motion:reduce){.toast{transition:none}}@media (width<=600px){.kpi{border-inline-end:0;border-bottom:1px solid var(--rule)}.stat button{padding:7px 9px}.roster td,.roster th{padding:6px 8px}}@media print{header.top nav,.controls,.exports,.noprint,#banner,.toast{display:none!important}body{color:#000;background:#fff}.sheet{border-color:#bbb}main{padding-top:8px}.scroll{overflow:visible}.regrid .rowh,.regrid thead th{position:static}}
