@font-face{font-family:Poppins;font-weight:400;font-style:normal;font-display:swap;src:url(./Poppins-Regular-Dqz-DocZ.woff2) format("woff2")}@font-face{font-family:Poppins;font-weight:500;font-style:normal;font-display:swap;src:url(./Poppins-Medium-DBzY_c3p.woff2) format("woff2")}@font-face{font-family:Poppins;font-weight:600 900;font-style:normal;font-display:swap;src:url(./Poppins-Bold-C_HdT4XP.woff2) format("woff2")}@font-face{font-family:Readex Pro;font-weight:160 700;font-style:normal;font-display:swap;src:url(./ReadexPro-D-gsDhyh.woff2) format("woff2")}@font-face{font-family:Noto Sans Arabic;font-weight:100 900;font-style:normal;font-display:swap;src:url(./NotoSansArabic-Brr1lkOW.woff2) format("woff2")}:root{--orange-400: #fb923c;--orange-500: #f97316;--orange-600: #ea580c;--orange-700: #c2410c;--bg: #faf7f3;--bg-elevated: #ffffff;--bg-sunken: #f1ece5;--surface: #ffffff;--surface-2: #faf7f3;--surface-hover: #f5efe8;--border: #ece4da;--border-strong: #d9cec0;--text: #1c1917;--text-muted: #78716c;--text-faint: #a8a29e;--accent: var(--orange-600);--accent-soft: #fdeee2;--accent-text: #ffffff;--accent-ring: rgba(249, 115, 22, .32);--present: #0d9f6e;--present-soft: #e3f6ef;--absent: #e11d48;--absent-soft: #fdeaee;--warn: #a16207;--orange: #c2410c;--warn-soft: #fef6dc;--sidebar-bg: #1c1917;--sidebar-text: #c4bdb4;--sidebar-text-strong: #ffffff;--sidebar-hover: rgba(255, 255, 255, .07);--sidebar-active: rgba(249, 115, 22, .24);--glow-warm: rgba(251, 146, 60, .16);--glow-cool: rgba(129, 140, 248, .13);--radius-sm: 9px;--radius: 13px;--radius-lg: 18px;--shadow-sm: 0 1px 2px rgba(60, 40, 20, .06);--shadow: 0 4px 14px rgba(60, 40, 20, .08);--shadow-lg: 0 18px 48px rgba(50, 30, 15, .16);--font: "Poppins", -apple-system, BlinkMacSystemFont, "Segoe UI Variable Text", "Segoe UI", Inter, Roboto, "Helvetica Neue", Arial, sans-serif;--font-rtl: "Readex Pro", "Noto Sans Arabic", "SF Arabic", "Geeza Pro", "Segoe UI", Tahoma, "Noto Naskh Arabic", "Arabic Typesetting", var(--font);--mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace}:root[lang=bad]{--font-rtl: "Noto Sans Arabic", "SF Arabic", "Geeza Pro", "Segoe UI", Tahoma, "Noto Naskh Arabic", "Arabic Typesetting", var(--font)}:root[data-theme=dark]{--bg: #121011;--bg-elevated: #1c1a1b;--bg-sunken: #0b0a0a;--surface: #1e1b1c;--surface-2: #262122;--surface-hover: #2d2727;--border: #302a2a;--border-strong: #433b3a;--text: #f6f4f2;--text-muted: #a8a09a;--text-faint: #7d7571;--accent: var(--orange-500);--accent-soft: rgba(249, 115, 22, .16);--accent-ring: rgba(251, 146, 60, .4);--present: #34d399;--present-soft: rgba(52, 211, 153, .14);--absent: #fb7185;--absent-soft: rgba(251, 113, 133, .14);--warn: #fbbf24;--orange: #fb923c;--warn-soft: rgba(251, 191, 36, .14);--sidebar-bg: #0c0b0b;--sidebar-active: rgba(249, 115, 22, .22);--glow-warm: rgba(251, 146, 60, .1);--glow-cool: rgba(129, 140, 248, .1);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .45);--shadow: 0 4px 16px rgba(0, 0, 0, .45);--shadow-lg: 0 20px 56px rgba(0, 0, 0, .6)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font);font-size:14px;line-height:1.5;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;overflow:hidden}button,input,select,textarea{font:inherit;color:inherit}::selection{background:var(--accent-ring)}::-webkit-scrollbar{width:11px;height:11px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-strong);border:3px solid transparent;background-clip:content-box;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:var(--text-faint);background-clip:content-box}h1,h2,h3,h4{margin:0;font-weight:700;letter-spacing:-.02em}h1{font-size:22px}h2{font-size:17px}h3{font-size:15px}p{margin:0}.muted{color:var(--text-muted)}.faint{color:var(--text-faint)}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums;direction:ltr;unicode-bidi:isolate}.tnum{font-variant-numeric:tabular-nums}.small{font-size:12.5px}.tiny{font-size:11.5px}.strong{font-weight:600}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.center{text-align:center}.right{text-align:end}.app{display:flex;height:100%}.sidebar{width:248px;flex:0 0 248px;background:var(--sidebar-bg);color:var(--sidebar-text);display:flex;flex-direction:column;border-inline-end:1px solid rgba(255,255,255,.06)}.sidebar-brand{display:flex;align-items:center;gap:10px;padding:18px 18px 14px;-webkit-app-region:drag}.mac .sidebar-brand{padding-top:38px}.brand-mark{width:32px;height:32px;flex:0 0 32px;border-radius:9px;background:linear-gradient(135deg,var(--orange-400),var(--orange-600));display:grid;place-items:center;color:#fff;font-weight:700;font-size:15px;box-shadow:0 4px 12px color-mix(in srgb,var(--orange-600) 40%,transparent)}.brand-logo{width:42px;height:42px;flex:0 0 42px;border-radius:50%;object-fit:cover;box-shadow:0 4px 14px #00000047;-webkit-user-drag:none;-webkit-user-select:none;user-select:none}.hero-brand .brand-logo{width:46px;height:46px;flex-basis:46px}.brand-name{color:var(--sidebar-text-strong);font-weight:650;font-size:15px}.brand-sub{font-size:11px;color:#ffffff73;letter-spacing:.02em}.nav{flex:1;overflow-y:auto;padding:6px 10px 12px}.nav-group-label{font-size:10.5px;text-transform:uppercase;letter-spacing:.09em;color:#ffffff57;padding:14px 10px 6px;font-weight:650}.nav-item{display:flex;align-items:center;gap:10px;width:100%;padding:8px 10px;border:0;background:transparent;color:var(--sidebar-text);border-radius:var(--radius-sm);cursor:pointer;text-align:left;font-size:13.5px;font-weight:500;transition:background .12s,color .12s}.nav-item:hover{background:var(--sidebar-hover);color:var(--sidebar-text-strong)}.nav-item.active{background:var(--sidebar-active);color:#fff;font-weight:600;box-shadow:inset 3px 0 0 var(--orange-500)}[dir=rtl] .nav-item.active{box-shadow:inset -3px 0 0 var(--orange-500)}.nav-item svg{flex:0 0 17px;opacity:.85}.nav-item.active svg{opacity:1}.nav-badge{margin-inline-start:auto;font-size:11px;background:#ffffff1f;padding:1px 7px;border-radius:999px;font-variant-numeric:tabular-nums}.sidebar-foot{padding:10px;border-top:1px solid rgba(255,255,255,.07)}.user-chip{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:var(--radius-sm);width:100%;border:0;background:transparent;color:var(--sidebar-text);cursor:pointer;text-align:left}.user-chip:hover{background:var(--sidebar-hover)}.avatar{width:30px;height:30px;flex:0 0 30px;border-radius:50%;background:linear-gradient(135deg,var(--orange-400),var(--orange-600));color:#fff;display:grid;place-items:center;font-size:12px;font-weight:650}.user-chip .nm{color:var(--sidebar-text-strong);font-size:13px;font-weight:600}.user-chip .rl{font-size:11px;color:#ffffff73;text-transform:capitalize}.main{flex:1;display:flex;flex-direction:column;min-width:0;position:relative;isolation:isolate}.main:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;pointer-events:none;background:radial-gradient(ellipse 55% 42% at 0% 0%,var(--glow-warm),transparent 72%),radial-gradient(ellipse 50% 42% at 100% 100%,var(--glow-cool),transparent 72%)}[dir=rtl] .main:before{background:radial-gradient(ellipse 55% 42% at 100% 0%,var(--glow-warm),transparent 72%),radial-gradient(ellipse 50% 42% at 0% 100%,var(--glow-cool),transparent 72%)}.topbar{height:56px;flex:0 0 56px;display:flex;align-items:center;gap:12px;padding:0 24px;border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--bg-elevated) 78%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);-webkit-app-region:drag}.topbar>*{-webkit-app-region:no-drag}.topbar h1{font-size:16.5px}.topbar-spacer{flex:1}.content{flex:1;overflow-y:auto;padding:24px}.content-inner{max-width:1180px;margin:0 auto}.content-inner.wide{max-width:100%}.page-head{display:flex;align-items:flex-start;gap:16px;margin-bottom:18px;flex-wrap:wrap}.page-head .grow{flex:1;min-width:220px}.page-head h1{font-size:31px;font-weight:800;letter-spacing:-.035em;line-height:1.1}.page-head h1+p{margin-top:6px;color:var(--text-muted);font-size:14.5px}.row{display:flex;align-items:center;gap:10px}.row.wrap{flex-wrap:wrap}.row.tight{gap:6px}.col{display:flex;flex-direction:column;gap:10px}.spacer{flex:1}.stack{display:flex;flex-direction:column;gap:16px}.grid{display:grid;gap:16px}.grid.cols-2{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.grid.cols-3{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.grid.cols-4{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.card-head{display:flex;align-items:center;gap:12px;padding:15px 18px;border-bottom:1px solid var(--border);flex-wrap:wrap}.card-head h2,.card-head h3{margin:0}.card-body{padding:18px}.card-body.flush{padding:0}.card-foot{padding:13px 18px;border-top:1px solid var(--border);background:var(--surface-2);border-radius:0 0 var(--radius-lg) var(--radius-lg);display:flex;align-items:center;gap:10px;flex-wrap:wrap}.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow-sm)}.stat-label{font-size:11.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);font-weight:650}.stat-value{font-size:26px;font-weight:680;letter-spacing:-.02em;margin-top:3px;font-variant-numeric:tabular-nums}.stat-hint{font-size:12px;color:var(--text-muted);margin-top:2px}.stat.present .stat-value{color:var(--present)}.stat.absent .stat-value{color:var(--absent)}.stat.warn .stat-value{color:var(--warn)}.stat.accent .stat-value{color:var(--accent)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:8px 14px;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface);color:var(--text);font-size:13.5px;font-weight:550;cursor:pointer;white-space:nowrap;transition:background .12s,border-color .12s,transform .06s,box-shadow .12s}.btn:hover:not(:disabled){background:var(--surface-hover)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:focus-visible{outline:none;box-shadow:0 0 0 3px var(--accent-ring)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:linear-gradient(100deg,var(--orange-600),var(--orange-500));border-color:transparent;color:var(--accent-text);box-shadow:0 4px 14px color-mix(in srgb,var(--orange-600) 32%,transparent)}.btn.primary:hover:not(:disabled){filter:brightness(1.06);box-shadow:0 6px 18px color-mix(in srgb,var(--orange-600) 40%,transparent)}.btn.ghost{background:transparent;border-color:transparent}.btn.ghost:hover:not(:disabled){background:var(--surface-hover)}.btn.danger{color:var(--absent);border-color:var(--border-strong)}.btn.danger:hover:not(:disabled){background:var(--absent-soft);border-color:var(--absent)}.btn.danger.solid{background:var(--absent);color:#fff;border-color:transparent}.btn.sm{padding:5px 10px;font-size:12.5px}.btn.lg{padding:11px 20px;font-size:14.5px}.btn.block{width:100%}.btn.icon{padding:7px}.field{display:flex;flex-direction:column;gap:5px;min-width:0}.field>label{font-size:12.5px;font-weight:600;color:var(--text-muted)}.field .hint{font-size:11.5px;color:var(--text-faint)}.field .err{font-size:12px;color:var(--absent)}.input,.select,.textarea{width:100%;padding:8px 11px;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--bg-elevated);color:var(--text);transition:border-color .12s,box-shadow .12s}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}.input::placeholder{color:var(--text-faint)}.input:disabled,.select:disabled{background:var(--surface-2);color:var(--text-muted)}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-inline-end:30px;background-image:none;cursor:pointer}.select-wrap{position:relative}.select-wrap svg{position:absolute;inset-inline-end:9px;top:50%;transform:translateY(-50%);pointer-events:none;color:var(--text-faint)}.textarea{min-height:110px;resize:vertical;font-family:var(--mono);font-size:12.5px}.search{position:relative}.search .input{padding-inline-start:32px}.search svg{position:absolute;inset-inline-start:10px;top:50%;transform:translateY(-50%);color:var(--text-faint)}.switch{display:inline-flex;align-items:center;gap:8px;cursor:pointer;-webkit-user-select:none;user-select:none}.switch input{position:absolute;opacity:0;width:0;height:0}.switch .track{width:36px;height:20px;border-radius:999px;background:var(--border-strong);position:relative;transition:background .15s}.switch .track:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .15s;box-shadow:0 1px 2px #0000004d}.switch input:checked+.track{background:var(--accent)}.switch input:checked+.track:after{transform:translate(16px)}.switch input:focus-visible+.track{box-shadow:0 0 0 3px var(--accent-ring)}.segmented{display:inline-flex;background:var(--bg-sunken);border:1px solid var(--border);border-radius:var(--radius-sm);padding:2px;gap:2px}.segmented button{border:0;background:transparent;padding:5px 12px;border-radius:5px;cursor:pointer;font-size:12.5px;font-weight:550;color:var(--text-muted)}.segmented button.active{background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm)}.badge{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:999px;font-size:11.5px;font-weight:600;background:var(--surface-2);color:var(--text-muted);border:1px solid var(--border);white-space:nowrap}.badge.present{background:var(--present-soft);color:var(--present);border-color:transparent}.badge.absent{background:var(--absent-soft);color:var(--absent);border-color:transparent}.badge.accent{background:var(--accent-soft);color:var(--accent);border-color:transparent}.badge.warn{background:var(--warn-soft);color:var(--warn);border-color:transparent}.badge.dot:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.table-wrap{overflow-x:auto}table.tbl{width:100%;border-collapse:collapse}table.tbl th{text-align:left;font-size:11.5px;text-transform:uppercase;letter-spacing:.055em;color:var(--text-faint);font-weight:650;padding:10px 14px;border-bottom:1px solid var(--border);background:var(--surface-2);position:sticky;top:0;z-index:1;white-space:nowrap}table.tbl td{padding:11px 14px;border-bottom:1px solid var(--border);vertical-align:middle}table.tbl tbody tr:last-child td{border-bottom:0}table.tbl tbody tr:hover{background:var(--surface-hover)}table.tbl td.actions{text-align:end;white-space:nowrap}table.tbl.compact td,table.tbl.compact th{padding:7px 12px}.empty{padding:44px 20px;text-align:center;color:var(--text-muted)}.empty .icon{width:46px;height:46px;margin:0 auto 12px;border-radius:13px;display:grid;place-items:center;background:var(--bg-sunken);color:var(--text-faint)}.empty h3{margin-bottom:4px;color:var(--text)}.roster{display:flex;flex-direction:column}.roster-row{display:flex;align-items:center;gap:14px;padding:10px 18px;border-bottom:1px solid var(--border);transition:background .1s}.roster-row:last-child{border-bottom:0}.roster-row:hover{background:var(--surface-hover)}.roster-row.is-current{background:var(--accent-soft);box-shadow:inset 3px 0 0 var(--accent)}.roster-row.unmarked .student-name{font-weight:600}.roster-index{width:26px;flex:0 0 26px;text-align:end;color:var(--text-faint);font-size:12px;font-variant-numeric:tabular-nums}.roster-id{flex:0 0 96px;font-family:var(--mono);font-size:12.5px;color:var(--text-muted);direction:ltr;unicode-bidi:isolate;text-align:start}.student-name{flex:1;min-width:0;font-size:14.5px}.roster-mark{display:flex;gap:6px;flex:0 0 auto}.mark-btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:var(--radius-sm);border:1.5px solid var(--border-strong);background:var(--bg-elevated);cursor:pointer;font-size:13px;font-weight:600;color:var(--text-muted);transition:all .12s;min-width:96px;justify-content:center}.mark-btn:hover{border-color:var(--text-faint);color:var(--text)}.mark-btn:focus-visible{outline:none;box-shadow:0 0 0 3px var(--accent-ring)}.mark-btn.p.on{background:var(--present);border-color:var(--present);color:#fff}.mark-btn.a.on{background:var(--absent);border-color:var(--absent);color:#fff}.mark-btn.e.on{background:var(--accent);border-color:var(--accent);color:#fff}.mark-btn.e:hover:not(.on){border-color:var(--accent);color:var(--accent)}.mark-btn:disabled{opacity:.5;cursor:not-allowed}.mark-btn.p:hover:not(.on){border-color:var(--present);color:var(--present);background:var(--present-soft)}.mark-btn.a:hover:not(.on){border-color:var(--absent);color:var(--absent);background:var(--absent-soft)}.progress{height:7px;background:var(--bg-sunken);border-radius:999px;overflow:hidden;display:flex}.progress span{display:block;height:100%;transition:width .25s ease}.progress .p{background:var(--present)}.progress .a{background:var(--absent)}.pct-bar{width:110px;height:6px;background:var(--bg-sunken);border-radius:999px;overflow:hidden}.pct-bar span{display:block;height:100%;background:var(--accent)}.pct-bar.good span{background:var(--present)}.pct-bar.low span{background:var(--absent)}.pct-bar.mid span{background:var(--orange)}.pct-bar.good+.pct-num{color:var(--present)}.pct-bar.mid+.pct-num{color:var(--orange)}.pct-bar.low+.pct-num{color:var(--absent)}.save-bar{position:sticky;bottom:0;display:flex;align-items:center;gap:14px;padding:13px 18px;background:var(--bg-elevated);border-top:1px solid var(--border);border-radius:0 0 var(--radius-lg) var(--radius-lg);flex-wrap:wrap;box-shadow:0 -4px 16px #1014280f}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a0c188c;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:grid;place-items:center;padding:24px;z-index:60;animation:fade .14s ease}.modal{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:100%;max-width:520px;max-height:calc(100vh - 48px);display:flex;flex-direction:column;animation:pop .16s ease}.modal.wide{max-width:760px}.modal-head{padding:17px 20px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:12px}.modal-body{padding:20px;overflow-y:auto}.modal-foot{padding:14px 20px;border-top:1px solid var(--border);display:flex;gap:10px;justify-content:flex-end;background:var(--surface-2);border-radius:0 0 var(--radius-lg) var(--radius-lg)}@keyframes fade{0%{opacity:0}}@keyframes pop{0%{opacity:0;transform:translateY(8px) scale(.98)}}.toasts{position:fixed;bottom:20px;inset-inline-end:20px;display:flex;flex-direction:column;gap:10px;z-index:80;max-width:380px}.toast{display:flex;gap:11px;align-items:flex-start;padding:12px 14px;border-radius:var(--radius);background:var(--bg-elevated);border:1px solid var(--border);box-shadow:var(--shadow-lg);animation:slide .18s ease}.toast .t-icon{flex:0 0 18px;margin-top:1px}.toast.success .t-icon{color:var(--present)}.toast.error .t-icon{color:var(--absent)}.toast.info .t-icon{color:var(--accent)}.toast .t-body{flex:1;min-width:0}.toast .t-title{font-weight:600;font-size:13.5px}.toast .t-msg{font-size:12.5px;color:var(--text-muted);margin-top:1px;overflow-wrap:anywhere}.toast button{border:0;background:transparent;cursor:pointer;color:var(--text-faint);padding:0}@keyframes slide{0%{opacity:0;transform:translate(16px)}}.banner{display:flex;gap:11px;align-items:flex-start;padding:11px 14px;border-radius:var(--radius);font-size:13px;border:1px solid transparent}.banner.error{background:var(--absent-soft);color:var(--absent);border-color:#dc2f5540}.banner.warn{background:var(--warn-soft);color:var(--warn);border-color:#a1620740}.banner.info{background:var(--accent-soft);color:var(--accent);border-color:var(--accent-ring)}.banner.success{background:var(--present-soft);color:var(--present);border-color:#0d9f6e40}.banner svg{flex:0 0 17px;margin-top:1px}.banner .b-body{flex:1;min-width:0}:root{--hero-bg: #fbf7f3;--hero-text: #14131a;--hero-muted: #6a6676;--hero-accent: #ea580c;--hero-accent-ink: #ffffff;--hero-field: rgba(255, 255, 255, .78);--hero-field-border: rgba(20, 19, 26, .13);--hero-field-text: #14131a;--hero-glow-warm: rgba(251, 146, 60, .42);--hero-glow-cool: rgba(129, 140, 248, .4);--hero-chip: rgba(20, 19, 26, .05);--hero-chip-border: rgba(20, 19, 26, .09)}:root[data-theme=dark]{--hero-bg: #111014;--hero-text: #f6f5f8;--hero-muted: #9b98a5;--hero-accent: #fb923c;--hero-accent-ink: #1a1208;--hero-field: rgba(255, 255, 255, .07);--hero-field-border: rgba(255, 255, 255, .16);--hero-field-text: #f6f5f8;--hero-glow-warm: rgba(251, 146, 60, .3);--hero-glow-cool: rgba(129, 140, 248, .32);--hero-chip: rgba(255, 255, 255, .06);--hero-chip-border: rgba(255, 255, 255, .1)}.hero{position:relative;height:100%;display:flex;flex-direction:column;background:var(--hero-bg);color:var(--hero-text);overflow:hidden;-webkit-app-region:drag}.hero:before,.hero:after{content:"";position:absolute;pointer-events:none;border-radius:50%;filter:blur(90px)}.hero:before{width:60vw;height:60vw;min-width:460px;min-height:460px;inset-inline-start:-14vw;top:-24vw;background:radial-gradient(circle,var(--hero-glow-warm),transparent 68%)}.hero:after{width:62vw;height:62vw;min-width:480px;min-height:480px;inset-inline-end:-16vw;bottom:-28vw;background:radial-gradient(circle,var(--hero-glow-cool),transparent 68%)}.hero-top{position:relative;z-index:2;display:flex;align-items:center;gap:10px;padding:18px 26px}.mac .hero-top{padding-top:34px}.hero-top>*{-webkit-app-region:no-drag}.hero-brand{display:flex;align-items:center;gap:10px}.hero-brand .brand-mark{width:32px;height:32px;flex-basis:32px;border-radius:10px;font-size:13px}.hero-brand .bn{font-size:13.5px;font-weight:700}.hero-brand .bs{font-size:11px;color:var(--hero-muted)}.hero-main{position:relative;z-index:2;flex:1;display:flex;flex-direction:column;justify-content:center;padding:10px 56px 30px;overflow-y:auto}.hero-headline{font-size:clamp(42px,8.2vw,92px);font-weight:860;line-height:.9;letter-spacing:-.045em;margin:0;max-width:7em}.hero-headline .mark{color:var(--hero-accent)}.hero-sub{color:var(--hero-muted);font-size:15px;margin-top:16px;max-width:30em}.hero-form{-webkit-app-region:no-drag;display:flex;flex-wrap:wrap;gap:11px;margin-top:28px;max-width:640px}.hero-field{flex:1 1 190px;min-width:0}.hero-field .input{height:50px;border-radius:12px;background:var(--hero-field);border:1px solid var(--hero-field-border);color:var(--hero-field-text);font-size:14.5px;padding-inline:16px;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.hero-field .input::placeholder{color:var(--hero-muted);opacity:.85}.hero-field .input:focus{border-color:var(--hero-accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--hero-accent) 28%,transparent)}.hero-go{flex:0 0 auto;min-width:112px;height:50px;padding-inline:24px;border:0;border-radius:12px;background:var(--hero-accent);color:var(--hero-accent-ink);font-size:15px;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:filter .15s,transform .07s,box-shadow .18s;box-shadow:0 8px 22px color-mix(in srgb,var(--hero-accent) 40%,transparent)}.hero-go:hover:not(:disabled){filter:brightness(1.07);box-shadow:0 11px 28px color-mix(in srgb,var(--hero-accent) 48%,transparent)}.hero-go:active:not(:disabled){transform:translateY(1px)}.hero-go:disabled{opacity:.7;cursor:default}.hero-go:focus-visible{outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--hero-accent) 45%,transparent)}.hero-error{max-width:640px;margin-top:22px}.hero-samples{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:26px}.hero-samples .ttl{font-size:10.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--hero-muted);margin-inline-end:2px}.hero-sample{display:inline-flex;align-items:center;gap:8px;padding:6px 13px;border-radius:999px;background:var(--hero-chip);border:1px solid var(--hero-chip-border);color:var(--hero-text);font-size:12.5px;cursor:pointer;transition:border-color .14s,background .14s}.hero-sample:hover{border-color:var(--hero-accent)}.hero-sample .cred{color:var(--hero-muted);font-size:11.5px}.hero-foot{position:relative;z-index:2;padding:0 56px 24px;font-size:11.5px;color:var(--hero-muted);text-align:center}@media (max-width: 760px){.hero-main,.hero-foot{padding-inline:28px}.hero-headline{font-size:clamp(38px,11vw,58px)}}@media (max-height: 560px){.hero-sub{display:none}.hero-samples{margin-top:18px}}.spinner{width:16px;height:16px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .7s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.loading-page{display:grid;place-items:center;padding:60px;color:var(--text-muted);gap:12px}.kbd{font-family:var(--mono);font-size:11px;padding:1px 5px;border:1px solid var(--border-strong);border-bottom-width:2px;border-radius:4px;background:var(--surface-2);color:var(--text-muted)}.list-split{display:grid;grid-template-columns:300px 1fr;gap:16px;align-items:start}.pick-list{max-height:420px;overflow-y:auto}.lecture-boxes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.lecture-boxes label{display:flex;flex-direction:column;gap:4px;min-width:0;font-weight:400}.pick-item{display:flex;align-items:center;gap:10px;width:100%;padding:9px 14px;border:0;background:transparent;cursor:pointer;text-align:left;border-bottom:1px solid var(--border);color:var(--text)}.pick-item:last-child{border-bottom:0}.pick-item:hover{background:var(--surface-hover)}.pick-item.active{background:var(--accent-soft);box-shadow:inset 3px 0 0 var(--accent)}.pick-item .pi-main{flex:1;min-width:0}.pick-item .pi-title{font-weight:600;font-size:13.5px}.pick-item .pi-sub{font-size:12px;color:var(--text-muted)}.chip-list{display:flex;flex-wrap:wrap;gap:7px}.chip{display:inline-flex;align-items:center;gap:6px;padding-block:4px;padding-inline:11px 6px;border-radius:999px;background:var(--surface-2);border:1px solid var(--border);font-size:12.5px}.chip button{border:0;background:transparent;cursor:pointer;color:var(--text-faint);display:grid;place-items:center;padding:2px;border-radius:50%}.chip button:hover{background:var(--absent-soft);color:var(--absent)}.history-item{display:flex;gap:12px;padding:11px 0;border-bottom:1px solid var(--border)}.history-item:last-child{border-bottom:0}.history-dot{width:8px;height:8px;border-radius:50%;flex:0 0 8px;margin-top:6px;background:var(--accent)}.history-item.changed .history-dot{background:var(--warn)}.history-item.saved .history-dot{background:var(--present)}@media (max-width: 1080px){.list-split{grid-template-columns:1fr}}@media (max-width: 900px){.sidebar{width:68px;flex-basis:68px}.sidebar .brand-text,.sidebar .nav-item span,.sidebar .user-chip .uc-text,.nav-group-label{display:none}.sidebar-brand,.nav-item,.user-chip{justify-content:center}.nav-item{padding:10px}.content{padding:16px}.topbar{padding:0 14px}}@media (max-width: 720px){.roster-row{flex-wrap:wrap;gap:8px 12px}.roster-id{flex-basis:auto}.student-name{flex-basis:100%;order:-1}.roster-mark{width:100%}.mark-btn{flex:1;min-width:0}}[dir=rtl] body,[dir=rtl] .btn,[dir=rtl] .input,[dir=rtl] .select,[dir=rtl] .textarea{font-family:var(--font-rtl)}[dir=rtl] body{line-height:1.7}[dir=rtl] h1,[dir=rtl] h2,[dir=rtl] h3,[dir=rtl] .hero-headline,[dir=rtl] .stat-label{letter-spacing:0}[dir=rtl] .hero-headline{line-height:1.02}:root[lang=ar] .hero-headline{padding-bottom:.26em}[dir=rtl] .roster-row.is-current,[dir=rtl] .pick-item.active{box-shadow:inset -3px 0 0 var(--accent)}[dir=rtl] .flip-rtl{transform:scaleX(-1)}[dir=rtl] .flip-rtl.flipped{transform:scaleX(1)}.ltr{direction:ltr;unicode-bidi:isolate;text-align:start}[dir=rtl] .toast{animation-name:slide-rtl}@keyframes slide-rtl{0%{opacity:0;transform:translate(-16px)}}[dir=rtl] .kbd{direction:ltr;unicode-bidi:isolate}[dir=rtl] body.mac .topbar{padding-inline-end:92px}:root[data-accent]{--orange-600: var(--ua-accent);--orange-500: color-mix(in srgb, var(--ua-accent) 86%, white);--orange-400: color-mix(in srgb, var(--ua-accent) 68%, white);--orange-700: color-mix(in srgb, var(--ua-accent) 80%, black);--accent-soft: color-mix(in srgb, var(--ua-accent) 11%, white);--accent-ring: color-mix(in srgb, var(--ua-accent) 32%, transparent);--sidebar-active: color-mix(in srgb, var(--ua-accent) 28%, transparent);--glow-warm: color-mix(in srgb, var(--ua-accent) 16%, transparent);--hero-accent: var(--ua-accent);--hero-glow-warm: color-mix(in srgb, var(--ua-accent) 42%, transparent)}:root[data-accent][data-theme=dark]{--orange-500: var(--ua-accent-dark);--orange-600: color-mix(in srgb, var(--ua-accent-dark) 86%, black);--orange-400: color-mix(in srgb, var(--ua-accent-dark) 76%, white);--orange-700: color-mix(in srgb, var(--ua-accent-dark) 70%, black);--accent-soft: color-mix(in srgb, var(--ua-accent-dark) 16%, transparent);--accent-ring: color-mix(in srgb, var(--ua-accent-dark) 40%, transparent);--sidebar-active: color-mix(in srgb, var(--ua-accent-dark) 24%, transparent);--glow-warm: color-mix(in srgb, var(--ua-accent-dark) 10%, transparent);--hero-accent: var(--ua-accent-dark);--hero-glow-warm: color-mix(in srgb, var(--ua-accent-dark) 30%, transparent)}.swatches{display:flex;flex-wrap:wrap;gap:10px}.swatch{width:34px;height:34px;padding:0;border:0;border-radius:50%;background:var(--sw);color:#fff;display:grid;place-items:center;cursor:pointer;box-shadow:inset 0 0 0 1px #00000024;transition:transform .12s,box-shadow .12s}.swatch:hover{transform:scale(1.08)}.swatch.on{box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--sw)}.swatch:focus-visible{outline:none;box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--text)}.color-input{width:46px;height:34px;padding:2px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);cursor:pointer}.color-input.on{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}.warn-card .card-head svg{color:var(--warn)!important}.warn-card.has .card{border-color:color-mix(in srgb,var(--warn) 42%,var(--border))}.warn-scroll{max-height:340px;overflow-y:auto}.nav-badge.warn{background:#fbbf2433;color:#fbbf24;font-weight:600}.stage-grid{-webkit-app-region:no-drag;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-top:30px;max-width:900px}.stage-card{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:20px 20px 18px;border-radius:18px;border:1px solid var(--hero-field-border);background:var(--hero-field);color:var(--hero-text);text-align:start;cursor:pointer;transition:transform .14s,border-color .14s,box-shadow .14s}.stage-card:hover{transform:translateY(-2px);border-color:var(--hero-accent);box-shadow:0 10px 26px color-mix(in srgb,var(--hero-accent) 22%,transparent)}.stage-card:focus-visible{outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--hero-accent) 45%,transparent)}.stage-card.current{border-color:var(--hero-accent)}.stage-num{font-size:54px;line-height:1;font-weight:800;color:var(--hero-accent);font-variant-numeric:tabular-nums}.stage-name{font-size:17px;font-weight:700;margin-top:8px}.stage-counts{font-size:12.5px;color:var(--hero-muted)}.stage-more{-webkit-app-region:no-drag;display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-top:18px}.stage-more .hero-sample{display:inline-flex;align-items:center;gap:7px}.stage-more .hero-sample.current{border-color:var(--hero-accent)}.stage-unassigned{font-size:12.5px;color:var(--hero-muted)}@media (max-width: 900px){.stage-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.stage-chip{display:flex;align-items:center;gap:8px;margin:0 10px 8px;padding:8px 10px;border-radius:var(--radius-sm);border:1px solid rgba(255,255,255,.1);background:#ffffff0d;color:var(--sidebar-text-strong);font-size:13px;font-weight:600;cursor:pointer;text-align:start}.stage-chip:hover{background:var(--sidebar-hover);border-color:var(--orange-500)}.stage-chip svg{color:var(--orange-400);flex:0 0 15px}.stage-chip-label{flex:1;min-width:0}.stage-chip-short{display:none}.stage-chip-action{font-size:11.5px;font-weight:500;color:var(--sidebar-text)}@media (max-width: 900px){.stage-chip{justify-content:center;margin:0 8px 8px;padding:8px 4px}.stage-chip svg,.stage-chip-label,.stage-chip-action{display:none}.stage-chip-short{display:inline}}.menu-btn,.topbar-stage,.drawer-scrim,.sidebar-signout{display:none}@media (max-width: 760px){.app .menu-btn{display:inline-flex}.app .topbar-wide{display:none}.app .topbar{padding:0 10px;gap:8px}.app .topbar h1{min-width:0}.app .topbar-stage{display:inline-block;flex:0 0 auto;padding:3px 10px;border:1px solid var(--border-strong);border-radius:99px;font-size:12px;color:var(--text-muted)}.app .sidebar{position:fixed;top:0;bottom:0;inset-inline-start:0;z-index:60;width:min(84vw,300px);flex:none;transform:translate(-100%);visibility:hidden;transition:transform .2s ease,visibility .2s}[dir=rtl] .app .sidebar{transform:translate(100%)}.app.menu-open .sidebar,[dir=rtl] .app.menu-open .sidebar{transform:none;visibility:visible}.app.menu-open .drawer-scrim{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:55;border:0;background:#0000008c}.app .sidebar .brand-text,.app .sidebar .user-chip .uc-text,.app .nav-group-label{display:block}.app .sidebar .nav-item span{display:inline}.app .sidebar-brand,.app .nav-item,.app .user-chip{justify-content:flex-start}.app .nav-item{padding:12px}.app .sidebar-signout{display:flex;width:100%;margin-top:6px}.app .stage-chip{justify-content:flex-start;margin:0 10px 8px;padding:8px 10px}.app .stage-chip svg{display:block}.app .stage-chip-label,.app .stage-chip-action{display:inline}.app .stage-chip-short{display:none}.app .content{padding:12px}.app .page-head{margin-bottom:0}.app .page-head .grow{display:none}.app .page-head .row{width:100%}.app .page-head .btn{flex:1}.app .page-head .search{flex:2 1 0;width:auto!important;min-width:0}.app .card-body{padding:14px}.app .card-body.flush{padding:0}.app .card-head{padding:12px 14px}.app .content .grid[style]{grid-template-columns:minmax(0,1fr)!important}.app .grid.cols-4{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.app .grid.cols-3:has(>.stat){grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.app .grid.cols-3>.stat{padding:12px 10px}.app .take-stats,.app .take-keys,.app .take-links{display:none}.app .select{unicode-bidi:plaintext;text-overflow:ellipsis}.app .card-head>div:first-of-type{flex:1 1 calc(100% - 30px)}.app .card-head>.row{width:100%}.app .card-head>.row .btn{flex:1}.app .card-head>.btn{flex:1 1 100%}.app .card-head>.row .btn.icon{flex:0 0 auto;margin-inline-start:auto}.app .card-head>.segmented{width:100%}.app .card-head>.segmented button{flex:1}.app .roster-row{flex-wrap:wrap;gap:8px;padding:12px 14px}.app .roster-row.is-current,[dir=rtl] .app .roster-row.is-current{background:none;box-shadow:none}.app .roster-index,.app .roster-row .badge{display:none}.app .student-name{flex:1 1 0;order:0;min-width:0;white-space:normal}.app .roster-id{order:1}.app .roster-mark{order:2;width:100%;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.app .mark-btn{min-width:0;min-height:46px;padding:8px 4px;touch-action:manipulation}:root[data-theme=dark] .app .mark-btn.on:not(.e){color:#14110d}.app .mark-btn.p{order:1}.app .mark-btn.a{order:2}.app .mark-btn.e{order:4;grid-column:1 / -1}.app .mark-btn.e.on{background:#2563eb;border-color:#2563eb;color:#fff}.app .take-list .card-foot{position:sticky;bottom:0;z-index:5;gap:8px;padding:8px 12px;box-shadow:0 -6px 16px #0000002e}.app .take-list .card-foot>div:first-child{flex:1 1 100%}.app .take-list .card-foot .field{display:none}.app .take-list .card-foot .btn{flex:1 1 100%;min-height:44px;padding-block:8px}.app .warn-scroll,.app .table-wrap[style]{max-height:none!important;overflow:visible!important}.app table.tbl,.app table.tbl tbody{display:block}.app table.tbl thead{display:none}.app table.tbl tr{display:block;padding:10px 14px;border-bottom:1px solid var(--border)}.app table.tbl tbody tr:last-child{border-bottom:0}.app table.tbl td{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:4px 0;border:0;text-align:end;overflow-wrap:anywhere}[dir=rtl] .app table.tbl td.ltr{flex-direction:row-reverse}.app table.tbl td:before{content:attr(data-label);color:var(--text-muted);font-size:12px;font-weight:500;text-align:start}.app table.tbl td.mono:before{font-family:var(--font)}[dir=rtl] .app table.tbl td.mono:before{font-family:var(--font-rtl);letter-spacing:normal}.app table.tbl td[data-label="#"]{display:none}.app table.tbl td:not([data-label]):before{content:none}.app table.tbl td:not([data-label],.actions){display:block;text-align:start}.app table.tbl td.strong{font-size:14.5px;text-align:start}.app table.tbl td.actions{justify-content:flex-end;white-space:normal;margin-top:4px}}
