@font-face{font-family:Noto Sans Arabic;src:url(/fonts/NotoSansArabic-Variable.woff2)format("woff2-variations");font-weight:100 900;font-style:normal;font-display:swap}:root{--font:"Noto Sans Arabic", system-ui, sans-serif;--font-mono:ui-monospace, "SFMono-Regular", Consolas, monospace;--bg:#f3f5fa;--bg-1:#f8f9fc;--bg-2:#fff;--bg-3:#eef1f7;--border:#e1e5f0;--border-strong:#ccd2e2;--text-3:#96a0b5;--text-2:#5a6478;--text:#1a2233;--text-strong:#0d1220;--primary:#2563eb;--primary-hover:#1d4ed8;--primary-muted:#e6efff;--accent:#0d9488;--accent-hover:#0f766e;--accent-muted:#e1f5f2;--success:#16a34a;--success-muted:#e6f6ec;--warning:#d97706;--warning-muted:#fdf1e0;--danger:#dc2626;--danger-muted:#fdeaea;--info:#2563eb;--info-muted:#e6efff;--present:var(--success);--present-muted:var(--success-muted);--absent:var(--danger);--absent-muted:var(--danger-muted);--late:var(--warning);--late-muted:var(--warning-muted);--excused:#7c3aed;--excused-muted:#f1e9fd;--pending:#64748b;--pending-muted:#eef1f6;--s-half:2px;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:20px;--s-6:24px;--s-8:32px;--s-10:40px;--s-12:48px;--fs-xs:.8125rem;--fs-sm:.875rem;--fs-base:1rem;--fs-md:1rem;--fs-lg:1.25rem;--fs-xl:1.5rem;--r-sm:6px;--r-md:10px;--r-lg:14px;--r-xl:20px;--r-full:9999px;--ic-xs:13px;--ic-sm:16px;--ic-md:18px;--ic-lg:22px;--ic-xl:32px;--shadow-sm:0 1px 2px #1018280d;--shadow-md:0 2px 8px #1018280f, 0 1px 2px #1018280a;--shadow-lg:0 8px 24px #1018281a;--brand-whatsapp:#075e54;--brand-whatsapp-hover:#128c7e;--scrim:#0d122066;--on-accent:#fff;--sidebar-w:256px;--sidebar-collapsed-w:72px;--header-h:64px;--ease:cubic-bezier(.4, 0, .2, 1);--dur:.16s}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{font-family:var(--font);background:var(--bg);color:var(--text);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent;direction:rtl;height:100%;font-size:16px}body{height:100%;font-size:var(--fs-base);line-height:1.5;overflow:hidden}h1{font-size:var(--fs-xl);color:var(--text-strong);font-weight:700;line-height:1.3}h2{font-size:var(--fs-lg);color:var(--text-strong);font-weight:700;line-height:1.3}h3{font-size:var(--fs-md);font-weight:700;line-height:1.4}h4{font-size:var(--fs-base);color:var(--text-2);font-weight:600;line-height:1.4}p{line-height:1.6}a{color:inherit}.num{font-variant-numeric:tabular-nums;direction:ltr;display:inline-block}.stack{gap:var(--s-3);flex-direction:column;display:flex}.stack[data-gap=half]{gap:var(--s-half)}.stack[data-gap="1"]{gap:var(--s-1)}.stack[data-gap="2"]{gap:var(--s-2)}.stack[data-gap="4"]{gap:var(--s-4)}.stack[data-gap="6"]{gap:var(--s-6)}.row{align-items:center;gap:var(--s-3);flex-direction:row;display:flex}.row[data-gap=half]{gap:var(--s-half)}.row[data-gap="1"]{gap:var(--s-1)}.row[data-gap="2"]{gap:var(--s-2)}.row[data-gap="4"]{gap:var(--s-4)}.row[data-gap="6"]{gap:var(--s-6)}.row[data-justify=between]{justify-content:space-between}.row[data-justify=end]{justify-content:flex-end}.row[data-wrap=true]{flex-wrap:wrap}*{scrollbar-width:none;-ms-overflow-style:none}::-webkit-scrollbar{width:0;height:0;display:none}.app-shell{height:100dvh;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);flex-direction:row;padding-inline-start:env(safe-area-inset-left);padding-inline-end:env(safe-area-inset-right);display:flex;overflow:hidden}.main-content{flex-direction:column;flex:1;min-width:0;display:flex;overflow:hidden}.page-body{padding:var(--s-5) var(--s-6);flex:1;width:100%;max-width:960px;margin:0 auto;overflow-y:auto}@media (width<=640px){.page-body{padding:var(--s-3)}}.card{background:var(--bg-2);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--s-4);box-shadow:var(--shadow-sm)}.card-sm{background:var(--bg-2);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--s-3);box-shadow:var(--shadow-sm)}.btn{justify-content:center;align-items:center;gap:var(--s-2);padding:var(--s-2) var(--s-4);border-radius:var(--r-md);font-family:var(--font);font-size:var(--fs-sm);cursor:pointer;transition:all var(--dur) var(--ease), transform .1s var(--ease);white-space:nowrap;border:1px solid #0000;min-width:44px;min-height:44px;font-weight:600;line-height:1;display:inline-flex}.btn:active{transform:scale(.96)}.btn :global(svg){flex-shrink:0;width:18px;height:18px}.btn-primary{background:var(--primary);color:var(--on-accent);box-shadow:var(--shadow-sm)}.btn-primary:hover{background:var(--primary-hover)}.btn-secondary{background:var(--bg-2);color:var(--text);border:1px solid var(--border-strong);box-shadow:var(--shadow-sm)}.btn-secondary:hover{background:var(--bg-3)}.btn-ghost{color:var(--text-2);background:0 0}.btn-ghost:hover{background:var(--bg-3);color:var(--text)}.btn-danger{background:var(--danger-muted);color:var(--danger);border:1px solid #0000}.btn-danger:hover{background:var(--danger);color:var(--on-accent)}.btn-sm{padding:var(--s-1) var(--s-3);font-size:var(--fs-sm);min-height:44px}.btn-sm :global(svg){width:16px;height:16px}.btn-lg{padding:var(--s-3) var(--s-6);font-size:var(--fs-base);min-height:52px}.btn:disabled{opacity:.45;cursor:not-allowed}input,select,textarea{font-family:var(--font);font-size:var(--fs-base);background:var(--bg-2);border:1px solid var(--border-strong);border-radius:var(--r-md);color:var(--text);padding:var(--s-2) var(--s-3);width:100%;min-height:44px;transition:border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease);direction:rtl}input:focus,select:focus,textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-muted);outline:none}input::placeholder,textarea::placeholder{color:var(--text-3)}label{font-size:var(--fs-sm);color:var(--text-2);margin-bottom:var(--s-1);font-weight:600;display:block}.form-group{gap:var(--s-1);margin-bottom:var(--s-3);flex-direction:column;display:flex}.badge{align-items:center;gap:var(--s-half);padding:var(--s-half) var(--s-2);border-radius:var(--r-full);font-size:var(--fs-xs);white-space:nowrap;font-weight:600;display:inline-flex}.badge :global(svg){width:13px;height:13px}.badge-present{background:var(--present-muted);color:var(--present)}.badge-absent{background:var(--absent-muted);color:var(--absent)}.badge-late{background:var(--late-muted);color:var(--late)}.badge-excused{background:var(--excused-muted);color:var(--excused)}.badge-positive{background:var(--success-muted);color:var(--success)}.badge-negative{background:var(--danger-muted);color:var(--danger)}.badge-primary{background:var(--primary-muted);color:var(--primary)}.badge-accent{background:var(--accent-muted);color:var(--accent)}.badge-pending{background:var(--pending-muted);color:var(--pending)}.badge-neutral{background:var(--bg-3);color:var(--text-2)}.badge-grade{min-width:1.35em;padding:0 var(--s-half);border-radius:var(--r-sm);font-size:var(--fs-xs);white-space:nowrap;justify-content:center;align-items:center;font-weight:700;line-height:1.5;display:inline-flex}.badge-grade-success{background:var(--success-muted);color:var(--success)}.badge-grade-warning{background:var(--warning-muted);color:var(--warning)}.badge-grade-danger{background:var(--danger-muted);color:var(--danger)}.meta-row{align-items:center;gap:var(--s-3);flex-wrap:wrap;display:flex}.meta-item,.meta-btn{align-items:center;gap:var(--s-1);font-size:var(--fs-sm);color:var(--text-2);white-space:nowrap;display:inline-flex}.meta-item>svg,.meta-btn>svg{width:var(--ic-xs);height:var(--ic-xs);color:var(--text-3);flex-shrink:0}.meta-btn{padding:var(--s-half) var(--s-2);border-radius:var(--r-sm);font-family:var(--font);cursor:pointer;transition:background var(--dur) var(--ease), border-color var(--dur) var(--ease), color var(--dur) var(--ease);background:0 0;border:1px solid #0000}.meta-btn:hover,.meta-btn:active{background:var(--primary-muted);border-color:var(--primary);color:var(--primary)}.meta-btn:hover>svg,.meta-btn:active>svg{color:var(--primary)}.row-action{width:44px;height:44px;color:var(--text-3);cursor:pointer;transition:color var(--dur) var(--ease);background:0 0;border:none;flex-shrink:0;place-items:center;padding:7px;text-decoration:none;display:inline-grid}.row-action>svg{width:var(--ic-sm);height:var(--ic-sm);border-radius:var(--r-full)}.row-action:hover,.row-action:active,.row-action.active{color:var(--text)}.row-action.danger:hover,.row-action.danger:active{color:var(--danger)}.row-action.accent:hover,.row-action.accent:active,.row-action.accent.active{color:var(--primary)}.divider{border:none;border-top:1px solid var(--border);margin:var(--s-4) 0}.section-header{justify-content:space-between;align-items:center;gap:var(--s-3);margin-bottom:var(--s-4);display:flex}.section-header:not(:first-child){margin-top:var(--s-8)}.settings-section{margin-bottom:var(--s-6)}.page-title-ic,.card-title,.section-title{align-items:center;gap:var(--s-2);display:flex}.page-title-ic svg{width:var(--ic-lg);height:var(--ic-lg);color:var(--primary)}.page-title-ic :global(svg){width:var(--ic-lg);height:var(--ic-lg);color:var(--primary)}.card-title{margin-bottom:var(--s-2)}.card-title svg,.section-title svg{width:var(--ic-md);height:var(--ic-md);color:var(--primary)}.card-title :global(svg){width:var(--ic-md);height:var(--ic-md);color:var(--primary)}.section-title :global(svg){width:var(--ic-md);height:var(--ic-md);color:var(--primary)}.card-hint{font-size:var(--fs-sm);color:var(--text-2);margin-bottom:var(--s-4)}.tab-nav{gap:var(--s-1);background:var(--bg-2);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--s-1);margin-bottom:var(--s-3);box-shadow:var(--shadow-sm);display:flex}.tab{justify-content:center;align-items:center;gap:var(--s-1);min-width:0;padding:var(--s-1) var(--s-2);font-size:var(--fs-sm);color:var(--text-2);border-radius:var(--r-md);cursor:pointer;font-weight:600;font-family:var(--font);white-space:nowrap;text-overflow:ellipsis;min-height:44px;transition:all var(--dur) var(--ease), transform .1s var(--ease);background:0 0;border:none;flex:1;text-decoration:none;display:inline-flex;overflow:hidden}.tab :global(svg){flex-shrink:0;width:17px;height:17px}.tab:hover{color:var(--text);background:var(--bg-3)}.tab.active{color:var(--primary);background:var(--primary-muted)}.tab:active{transform:scale(.96)}@media (width<=480px){.tab{font-size:var(--fs-xs);gap:var(--s-1);padding:var(--s-1)}.tab :global(svg){width:15px;height:15px}}.grid-2{gap:var(--s-3);grid-template-columns:1fr 1fr;display:grid}.grid-3{gap:var(--s-3);grid-template-columns:repeat(3,1fr);display:grid}.grid-4{gap:var(--s-3);grid-template-columns:repeat(4,1fr);display:grid}@media (width<=768px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}}.empty-state{text-align:center;padding:var(--s-8) var(--s-6);color:var(--text-2);align-items:center;gap:var(--s-2);flex-direction:column;display:flex}.empty-state>:global(svg){width:32px;height:32px;color:var(--text-3)}.empty-state h3,.empty-state h4{color:var(--text)}.empty-state p{font-size:var(--fs-sm);max-width:32ch}.empty-state-sm{text-align:center;padding:var(--s-6) var(--s-4);color:var(--text-2);font-size:var(--fs-sm)}.loading-state{text-align:center;padding:var(--s-6) var(--s-4);color:var(--text-3);font-size:var(--fs-sm)}.nudge{text-align:center;align-items:center;gap:var(--s-2);padding:var(--s-6);background:var(--bg-1);border-radius:var(--r-md);color:var(--text-2);flex-direction:column;display:flex}.nudge>:global(svg){width:28px;height:28px;color:var(--text-3)}.nudge h4{color:var(--text)}.nudge p{font-size:var(--fs-sm)}.error-msg{background:var(--danger-muted);color:var(--danger);padding:var(--s-3);border-radius:var(--r-md);margin-bottom:var(--s-4);font-size:var(--fs-sm)}.data-row{align-items:center;gap:var(--s-2);padding:var(--s-half) var(--s-3);border-radius:var(--r-md);background:var(--bg-2);border:1px solid var(--border);cursor:pointer;transition:background var(--dur) var(--ease), border-color var(--dur) var(--ease);display:flex}.data-row:active{background:var(--bg-3)}.data-row[data-tone=present]{background:var(--present-muted);border-color:#0000}.data-row[data-tone=absent]{background:var(--absent-muted);border-color:#0000}.data-row[data-tone=late]{background:var(--late-muted);border-color:#0000}.data-row[data-tone=excused]{background:var(--excused-muted);border-color:#0000}.sync-badge{align-items:center;gap:var(--s-half);padding:var(--s-half) var(--s-2);border-radius:var(--r-full);font-size:var(--fs-xs);background:var(--pending-muted);color:var(--pending);font-weight:600;display:inline-flex}.sync-badge :global(svg){width:13px;height:13px}@media print{.no-print,.sidebar,.topbar,.tab-nav,.class-header,.banner,.nav-progress{display:none!important}body{color:#000;direction:rtl;background:#fff}.app-shell{height:auto;display:block}.main-content{overflow:visible}.page-body{width:auto;max-width:none;margin:0;padding:0;overflow:visible}}
