:root{--background:#f4f6fa;--background-elevated:#eef1f7;--foreground:#0f172a;--heading:#0b1220;--card:#ffffff;--muted:#64748b;--muted-strong:#475569;--border:#e8ecf2;--border-strong:#d5dce8;--shadow-sm:0 1px 2px rgb(15 23 42/0.04),0 1px 3px rgb(15 23 42/0.03);--shadow-md:0 4px 14px rgb(15 23 42/0.06),0 1px 3px rgb(15 23 42/0.04);--shadow-lg:0 12px 32px rgb(15 23 42/0.1),0 4px 10px rgb(15 23 42/0.05);--primary:#1e3a5f;--primary-hover:#16304f;--primary-active:#122840;--primary-soft:#eef3fa;--primary-soft-hover:#e2ebf6;--primary-ring:rgb(30 58 95/0.22);--accent:#0f766e;--accent-soft:#ecfdf8;--success:#059669;--success-soft:#ecfdf5;--success-border:#a7f3d0;--warning:#d97706;--warning-soft:#fffbeb;--warning-border:#fcd34d;--danger:#dc2626;--danger-hover:#b91c1c;--danger-soft:#fef2f2;--danger-border:#fecaca;--info:#0284c7;--info-soft:#f0f9ff;--radius:0.875rem;--radius-sm:0.625rem;--radius-lg:1rem;--radius-pill:9999px;--ease:cubic-bezier(0.2,0.8,0.2,1);--duration:160ms;--space-1:0.25rem;--space-2:0.5rem;--space-3:0.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--font-sans:var(--font-cairo),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans Arabic",sans-serif;--font-arabic:var(--font-cairo),"SF Arabic","Geeza Pro","Segoe UI",Tahoma,"Noto Sans Arabic",Arial,sans-serif}*,:after,:before{box-sizing:border-box}html{scroll-behavior:auto;-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0;min-height:100dvh;background:var(--background);color:var(--foreground);font-family:var(--font-sans);font-size:1rem;line-height:1.55;letter-spacing:normal;word-spacing:normal;font-kerning:normal;font-synthesis:none;text-rendering:optimizeLegibility}.antialiased,body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html[dir=rtl] body,html[lang=ar] body{font-family:var(--font-arabic);letter-spacing:0;word-spacing:normal;line-height:1.65}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.skip-link{position:absolute;inset-inline-start:-10000px;top:auto;width:1px;height:1px;overflow:hidden;z-index:100}.skip-link:focus{position:fixed;inset-inline-start:1rem;top:.75rem;width:auto;height:auto;min-height:44px;min-width:44px;overflow:visible;display:inline-flex;align-items:center;background:var(--primary);color:#fff;padding:.65rem 1rem;border-radius:.5rem;font-weight:600}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.container-app{width:min(1140px,calc(100% - 2rem));margin-inline:auto}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;border-radius:var(--radius-sm);padding:.7rem 1.2rem;min-height:44px;min-width:44px;font-weight:600;font-size:.9375rem;border:1px solid transparent;cursor:pointer;background:transparent;color:inherit;transition:background var(--duration) var(--ease),border-color var(--duration) var(--ease),color var(--duration) var(--ease),box-shadow var(--duration) var(--ease),transform .12s var(--ease)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn:active:not(:disabled){transform:translateY(.5px)}.btn-primary{background:var(--primary);color:#fff;box-shadow:0 1px 2px rgb(15 23 42/.08)}.btn-primary:hover:not(:disabled){background:var(--primary-hover);box-shadow:0 2px 8px rgb(30 58 95/.22)}.btn-secondary{background:#fff;color:var(--heading);border-color:var(--border-strong);box-shadow:var(--shadow-sm)}.btn-secondary:hover:not(:disabled){background:var(--primary-soft);border-color:color-mix(in srgb,var(--primary) 28%,var(--border));color:var(--primary)}.input{width:100%;border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:.7rem .9rem;min-height:44px;background:#fff;color:var(--foreground);transition:border-color var(--duration) var(--ease),box-shadow var(--duration) var(--ease)}.input:hover:not(:disabled):not(:focus){border-color:color-mix(in srgb,var(--primary) 22%,var(--border-strong))}.input:focus{outline:none;border-color:color-mix(in srgb,var(--primary) 55%,var(--border));box-shadow:0 0 0 3px var(--primary-ring)}.label{margin-bottom:.4rem;font-size:.875rem;font-weight:600;color:var(--muted-strong)}.block,.label{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.self-start{align-self:flex-start}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-8{gap:2rem}.gap-10{gap:2.5rem}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.cert-template-actions{display:inline-grid;grid-template-columns:repeat(5,max-content);gap:.5rem;align-items:start;flex-shrink:0;height:fit-content;max-width:100%}.cert-template-actions .btn{white-space:nowrap}.cert-template-actions__ph{visibility:hidden;pointer-events:none;user-select:none}@media (max-width:639px){.cert-template-actions{gap:.25rem;width:100%;grid-template-columns:repeat(5,minmax(0,auto))}.cert-template-actions .btn{padding:.3rem .4rem;min-height:2rem;min-width:0;font-size:.7rem;line-height:1.2;border-radius:.45rem}}.sticky{position:sticky}.top-0{top:0}.z-40{z-index:40}.w-full{width:100%}.w-11{width:2.75rem}.w-fit{width:fit-content}.h-11{height:2.75rem}.h-fit{height:fit-content}.min-h-11{min-height:2.75rem}.min-h-16{min-height:4rem}.min-h-dvh{min-height:100dvh}.min-h-\[100px\]{min-height:100px}.min-w-11{min-width:2.75rem}.min-w-\[520px\]{min-width:520px}.min-w-\[560px\]{min-width:560px}.min-w-\[640px\]{min-width:640px}.max-w-md{max-width:28rem}.max-w-lg{max-width:32rem}.max-w-xl{max-width:36rem}.max-w-3xl{max-width:48rem}.max-h-40{max-height:10rem}.mx-auto{margin-inline:auto}.overflow-auto{overflow:auto}.overflow-x-auto{overflow-x:auto}.break-all{word-break:break-all}.whitespace-pre-wrap{white-space:pre-wrap}.border-collapse{border-collapse:collapse}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.px-2{padding-inline:.5rem}.px-3{padding-inline:.75rem}.px-4{padding-inline:1rem}.py-0\.5{padding-block:.125rem}.py-1{padding-block:.25rem}.py-1\.5{padding-block:.375rem}.py-2{padding-block:.5rem}.py-8{padding-block:2rem}.py-10{padding-block:2.5rem}.py-12{padding-block:3rem}.py-14{padding-block:3.5rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.m-0{margin:0}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-12{margin-top:3rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ms-2{margin-inline-start:.5rem}.me-2{margin-inline-end:.5rem}.space-y-1>*+*{margin-top:.25rem}.space-y-2>*+*{margin-top:.5rem}.space-y-3>*+*{margin-top:.75rem}.space-y-4>*+*{margin-top:1rem}.space-y-5>*+*{margin-top:1.25rem}.space-y-6>*+*{margin-top:1.5rem}.border{border:1px solid var(--border)}.border-b{border-bottom:1px solid var(--border)}.border-t{border-top:1px solid var(--border)}.border-b-2{border-bottom-width:2px;border-bottom-style:solid}.border-dashed{border-style:dashed}.border-border{border-color:var(--border)}.border-slate-200{border-color:#e2e8f0}.border-slate-300{border-color:#cbd5e1}.border-slate-400{border-color:#94a3b8}.border-slate-900{border-color:#0f172a}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.rounded-full{border-radius:9999px}.bg-white{background:#fff}.bg-primary{background:var(--primary)}.bg-primary-soft{background:var(--primary-soft)}.bg-slate-50{background:#f8fafc}.bg-slate-100{background:#f1f5f9}.bg-emerald-50{background:#ecfdf5}.bg-sky-50{background:#f0f9ff}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.text-xs{font-size:.75rem;line-height:1rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem}.text-lg,.text-xl{line-height:1.75rem}.text-xl{font-size:1.25rem}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.leading-tight{line-height:1.25}.leading-relaxed{line-height:1.625}.tracking-wide{letter-spacing:.025em}html[dir=rtl] .tracking-wide,html[lang=ar] .tracking-wide{letter-spacing:normal}.text-center{text-align:center}.text-start{text-align:start}.text-end{text-align:end}.text-white{color:#fff}.text-primary{color:var(--primary)}.text-muted{color:var(--muted)}.text-danger{color:var(--danger)}.text-slate-500{color:#64748b}.text-slate-600{color:#475569}.text-slate-700{color:#334155}.text-slate-900{color:#0f172a}.text-emerald-600{color:#059669}.text-emerald-700{color:#047857}.text-emerald-800{color:#065f46}.text-amber-600{color:#d97706}.text-amber-700{color:#b45309}.text-red-600{color:#dc2626}.text-red-700{color:#b91c1c}.text-sky-700{color:#0369a1}@media (min-width:640px){.sm\:inline{display:inline}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:items-end{align-items:flex-end}.sm\:items-start{align-items:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:col-span-2{grid-column:span 2/span 2}.sm\:col-span-3{grid-column:span 3/span 3}.sm\:col-span-4{grid-column:span 4/span 4}.sm\:p-8{padding:2rem}.sm\:p-10{padding:2.5rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-4xl{font-size:2.25rem;line-height:2.5rem}.sm\:w-auto{width:auto}}@media (min-width:768px){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:items-center{align-items:center}.md\:py-16{padding-block:4rem}}@media (min-width:1024px){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:col-span-3{grid-column:span 3/span 3}.lg\:col-span-4{grid-column:span 4/span 4}}@media print{.skip-link,header,nav{display:none!important}}.brand-mark{display:inline-flex;height:2.75rem;width:2.75rem;flex-shrink:0;align-items:center;justify-content:center;border-radius:.75rem;background:transparent;overflow:hidden;line-height:0}.brand-mark-img{width:100%;height:100%;object-fit:contain;display:block}.brand-link{display:inline-flex;min-height:2.75rem;min-width:2.75rem;align-items:center;gap:.65rem;text-decoration:none;border-radius:var(--radius-sm)}.brand-title{font-size:1.2rem;font-weight:800;line-height:1.15;letter-spacing:-.03em;font-feature-settings:"kern" 1,"liga" 1;color:var(--primary);background-image:linear-gradient(120deg,#1e3a5f,#1a5478 45%,#0f766e);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}html[dir=rtl] .brand-title,html[lang=ar] .brand-title{letter-spacing:0;font-size:1.28rem;font-weight:800;font-family:var(--font-arabic)}.brand-link:hover .brand-title{filter:brightness(1.08)}.header-user{display:inline-flex;align-items:center;gap:.55rem;min-height:44px;padding:.25rem .65rem .25rem .25rem;border-radius:999px;border:1px solid var(--border);background:#fff;max-width:14rem}.header-user:hover{border-color:#bfdbfe}.header-user-text{display:none;flex-direction:column;line-height:1.15;min-width:0}@media (min-width:640px){.header-user-text{display:flex}}.header-user-name{font-size:.85rem;font-weight:700}.header-user-name,.header-user-role{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-user-role{font-size:.7rem;color:var(--muted)}.user-avatar{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;object-fit:cover;flex-shrink:0;background:var(--primary-soft);color:var(--primary);font-weight:700}.user-avatar-fallback{border:1px solid #bfdbfe}.page-header{margin-bottom:1.5rem}.page-title{margin:0;font-size:clamp(1.4rem,2.5vw,1.75rem);font-weight:800;line-height:1.3;color:var(--heading);letter-spacing:-.02em}html[dir=rtl] .page-title,html[lang=ar] .page-title{letter-spacing:0;line-height:1.4}.page-subtitle{margin:.45rem 0 0;color:var(--muted);font-size:.95rem;line-height:1.6;max-width:42rem}.section-title{margin:0 0 .85rem;font-size:1.1rem;font-weight:700;color:var(--heading)}.profile-nav{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:1.35rem;padding:.4rem;background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.profile-nav-link{display:inline-flex;align-items:center;min-height:42px;padding:.5rem 1rem;border-radius:var(--radius-sm);font-size:.9rem;font-weight:600;color:var(--muted-strong);transition:background var(--duration) var(--ease),color var(--duration) var(--ease)}.profile-nav-link:hover{background:var(--primary-soft);color:var(--primary)}.profile-nav-link.is-active{background:var(--primary);color:#fff;box-shadow:0 1px 3px rgb(30 58 95/.2)}.profile-identity-row{display:flex;align-items:center;gap:1rem;margin-bottom:1.25rem}.role-badge{display:inline-flex;align-items:center;min-height:1.75rem;padding:.2rem .7rem;border-radius:999px;font-size:.8rem}.profile-meta{display:grid;gap:.85rem;margin:0;padding-top:1rem;border-top:1px solid var(--border)}@media (min-width:640px){.profile-meta{grid-template-columns:repeat(3,minmax(0,1fr))}}.profile-meta dt{font-size:.75rem;font-weight:600;color:var(--muted);margin-bottom:.2rem}.profile-meta dd{margin:0;font-weight:600;color:#0f172a}.profile-meta-ltr{direction:ltr;unicode-bidi:isolate;text-align:start}html[dir=rtl] .profile-meta-ltr{text-align:right}.profile-form-grid{display:grid;gap:1rem}@media (min-width:640px){.profile-form-grid{grid-template-columns:1fr 1fr}.profile-form-span{grid-column:1/-1}}.profile-password-block{margin:1.25rem 0;padding:1rem;border:1px dashed var(--border);border-radius:var(--radius)}.profile-password-block legend{padding-inline:.35rem}.field-hint{margin:.35rem 0 0;font-size:.8rem}.avatar-preview-row{display:flex;align-items:center;gap:.75rem;margin-top:.75rem}.link-card-grid{display:grid;gap:.75rem}@media (min-width:640px){.link-card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.link-card{display:flex;align-items:center;min-height:3.5rem;padding:1rem 1.15rem;border:1px solid var(--border);background:#fff;font-weight:700;color:var(--primary)}.link-card:hover{background:var(--primary-soft);border-color:#bfdbfe}.text-success{color:#047857}.data-table-wrap{width:100%;overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius);background:#fff;box-shadow:var(--shadow-sm);-webkit-overflow-scrolling:touch}.data-table{width:100%;border-collapse:collapse;min-width:520px;font-size:.9rem}.data-table thead th{position:sticky;top:0;z-index:1;background:linear-gradient(180deg,#f8fafc,#f1f5f9);color:var(--muted-strong);font-weight:700;font-size:.8125rem;text-align:start;padding:.85rem 1rem;border-bottom:1px solid var(--border);white-space:nowrap;letter-spacing:.01em}html[dir=rtl] .data-table thead th{letter-spacing:0}.data-table tbody td{padding:.9rem 1rem;border-bottom:1px solid #f1f5f9;vertical-align:middle;text-align:start}.data-table tbody tr:last-child td{border-bottom:0}.data-table tbody tr{transition:background var(--duration) var(--ease)}.data-table tbody tr:hover td{background:#f8fafc}.data-table .num{font-weight:600;letter-spacing:normal;font-variant-numeric:proportional-nums}@media (min-width:640px){.data-table .num{font-variant-numeric:tabular-nums}}.empty-state{padding:2rem 1.5rem;text-align:center;color:var(--muted);border:1px dashed var(--border-strong);border-radius:var(--radius);background:linear-gradient(180deg,#fff,#fafbfc);box-shadow:var(--shadow-sm);line-height:1.6}.dashboard-stats-section{display:flex;flex-direction:column;gap:.85rem}.dashboard-stats-help{margin:0;font-size:.875rem;line-height:1.5;color:var(--muted)}.stat-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.85rem;align-items:stretch}@media (min-width:640px){.stat-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}}@media (min-width:900px){.stat-grid{grid-template-columns:repeat(5,minmax(0,1fr))}}.stat-card{display:flex;flex-direction:column;justify-content:space-between;min-height:5.75rem;height:100%;margin:0;background:#fff;border:1px solid var(--border);border-radius:var(--radius);padding:1.1rem 1.15rem;box-sizing:border-box;box-shadow:var(--shadow-sm);position:relative;overflow:hidden}.stat-card:before{content:"";position:absolute;inset-block:.85rem;inset-inline-start:0;width:3px;border-radius:var(--radius-pill);background:color-mix(in srgb,var(--primary) 55%,var(--accent));opacity:.85}.stat-card-link{text-decoration:none;color:inherit;transition:box-shadow var(--duration) var(--ease),border-color var(--duration) var(--ease),transform var(--duration) var(--ease)}.stat-card-link:hover{border-color:color-mix(in srgb,var(--primary) 30%,var(--border));box-shadow:var(--shadow-md);transform:translateY(-1px)}.stat-card .label{margin:0;padding-inline-start:.45rem;font-size:.78rem;font-weight:600;color:var(--muted);line-height:1.35;min-height:2em;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.stat-card .value{margin-top:.5rem;padding-inline-start:.45rem;font-size:1.65rem;font-weight:800;line-height:1.1;letter-spacing:normal;color:var(--heading);font-variant-numeric:tabular-nums}.header-user-menu{position:relative}.header-user{cursor:pointer;appearance:none;font:inherit;color:inherit}.header-user-caret{font-size:.7rem;color:var(--muted);margin-inline-start:.15rem}.header-user-dropdown{position:absolute;inset-inline-end:0;top:calc(100% + .35rem);min-width:11rem;background:#fff;border-radius:.75rem;box-shadow:0 10px 30px rgba(15,23,42,.12);padding:.35rem;z-index:50}.header-user-dropdown-item{display:block;width:100%;text-align:start;padding:.65rem .85rem;border-radius:.55rem;font-size:.9rem;font-weight:600;color:#0f172a;background:transparent;border:0;cursor:pointer;text-decoration:none}.header-user-dropdown-item:hover{background:var(--primary-soft);color:var(--primary)}.header-user-dropdown-danger{color:#b91c1c}.header-user-dropdown-danger:hover{background:#fef2f2;color:#991b1b}.att-row{border-radius:var(--radius);border:1px solid var(--border);background:#fff;padding:1rem;display:flex;flex-direction:column;gap:.75rem}.att-row-present{background:var(--success-soft);border-color:var(--success-border)}.att-row-absence{background:var(--danger-soft);border-color:var(--danger-border)}.att-row-lateness{background:var(--warning-soft);border-color:var(--warning-border)}.att-btn{min-height:48px;min-width:4.5rem;border-radius:var(--radius-sm);padding:.55rem .95rem;font-size:.8125rem;font-weight:700;border:1px solid var(--border-strong);cursor:pointer;background:#fff;color:var(--muted-strong);box-shadow:var(--shadow-sm);transition:background var(--duration) var(--ease),border-color var(--duration) var(--ease),color var(--duration) var(--ease),box-shadow var(--duration) var(--ease),transform .12s var(--ease)}.att-btn:disabled{opacity:.55;cursor:not-allowed}.att-btn:active:not(:disabled){transform:scale(.98)}.att-btn-present{color:#047857;border-color:var(--success-border);background:#fff}.att-btn-present:hover:not(:disabled):not(.is-active){background:var(--success-soft)}.att-btn-present.is-active{background:var(--success);color:#fff;border-color:var(--success);box-shadow:0 2px 8px rgb(5 150 105/.28)}.att-btn-absence{color:#b91c1c;border-color:var(--danger-border);background:#fff}.att-btn-absence:hover:not(:disabled):not(.is-active){background:var(--danger-soft)}.att-btn-absence.is-active{background:var(--danger);color:#fff;border-color:var(--danger);box-shadow:0 2px 8px rgb(220 38 38/.25)}.att-btn-lateness{color:#b45309;border-color:var(--warning-border);background:#fff}.att-btn-lateness:hover:not(:disabled):not(.is-active){background:var(--warning-soft)}.att-btn-lateness.is-active{background:#ea580c;color:#fff;border-color:#ea580c;box-shadow:0 2px 8px rgb(234 88 12/.25)}.att-action-icons{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem}.att-icon-btn{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;min-width:2.25rem;min-height:2.25rem;padding:0;border-radius:.5rem;border:1px solid #e2e8f0;background:#fff;color:#94a3b8;cursor:pointer;transition:color .15s ease,background .15s ease,border-color .15s ease}.att-icon-btn:hover:not(:disabled){background:#f8fafc;border-color:#cbd5e1}.att-icon-btn:disabled{opacity:.5;cursor:not-allowed}.att-wa-btn{color:#64748b}.att-wa-btn,.att-wa-btn.is-ready{background:#fff;border-color:#e2e8f0}.att-wa-btn.is-ready{color:#15803d}.att-wa-btn.is-ready:hover:not(:disabled){border-color:#86efac;background:#f0fdf4}.att-wa-btn.is-blocked{color:#cbd5e1;border-color:#e2e8f0;background:#fff;opacity:.9}.att-wa-btn.is-blocked:hover:not(:disabled){color:#94a3b8;border-color:#cbd5e1;background:#f8fafc}.att-wa-btn.is-notified{color:#14532d;border-color:#16a34a;background:#86efac}.att-wa-btn.is-notified:hover:not(:disabled){background:#4ade80;border-color:#15803d}.att-copy-btn{color:#64748b}.att-copy-btn:hover:not(:disabled){color:#1e3a8a;border-color:#bfdbfe;background:#eff6ff}.att-stat-present{background:#ecfdf5;border-color:#a7f3d0}.att-stat-absence{background:#fef2f2;border-color:#fecaca}.att-stat-lateness{background:#fff7ed;border-color:#fed7aa}.template-vars{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;padding:.65rem .75rem;border-radius:.75rem;background:#f8fafc;border:1px dashed var(--border)}.template-var-chip{appearance:none;border:1px solid #bfdbfe;background:#eff6ff;color:#1d4ed8;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.75rem;font-weight:600;padding:.35rem .55rem;border-radius:999px;cursor:pointer;direction:ltr}.template-var-chip:hover{background:#dbeafe;border-color:#93c5fd}.cell-digits{direction:ltr;unicode-bidi:isolate;white-space:nowrap;letter-spacing:normal;word-spacing:normal;font-variant-numeric:proportional-nums;font-feature-settings:"tnum" 0,"pnum" 1}html[dir=rtl] .cell-digits{text-align:right}html[dir=ltr] .cell-digits{text-align:left}@media (min-width:640px){.cell-digits{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}}@media (max-width:639px){body{font-size:16px;line-height:1.45}html[dir=rtl] body,html[lang=ar] body{line-height:1.5;letter-spacing:0}.container-app{width:min(1120px,calc(100% - 1.25rem))}.page-title{font-size:1.35rem;line-height:1.3;letter-spacing:normal}.page-subtitle{font-size:.9rem;line-height:1.45}.text-3xl{font-size:1.5rem;line-height:1.3}.text-2xl{font-size:1.25rem;line-height:1.3}.text-xl{font-size:1.1rem;line-height:1.35}.leading-relaxed{line-height:1.5}.btn{letter-spacing:normal;font-size:.9rem;padding:.6rem .95rem}.input,select,textarea{letter-spacing:normal;font-size:16px}.label{letter-spacing:normal}.data-table{font-size:.85rem}.data-table tbody td,.data-table thead th{padding:.55rem .6rem}.att-btn,.header-user-name,.header-user-role{letter-spacing:normal}.att-btn{font-size:.8rem;padding:.45rem .7rem}.space-y-5>*+*{margin-top:1rem}.space-y-6>*+*{margin-top:1.15rem}}.att-class-info{border-color:#bfdbfe;background:linear-gradient(180deg,#eff6ff,#fff)}.excuse-card{border-width:1.5px}.excuse-card-absence{border-color:#f87171;background:#fff}.excuse-card-lateness{border-color:#fdba74;background:#fff}.excuse-card-feedback{border-color:#fcd34d}.excuse-card-excused{border-color:#a7f3d0}.excuse-card-header{display:flex;flex-direction:row;align-items:flex-start;justify-content:space-between;gap:.65rem .85rem}.excuse-card-info{display:flex;flex-direction:column;gap:.15rem;min-width:0;flex:1 1 auto}.excuse-card-controls{display:flex;flex-direction:column;align-items:flex-end;gap:.45rem;flex:0 0 auto;max-width:48%}.excuse-card-actions{gap:.45rem}.excuse-card-actions,.excuse-tag-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end}.excuse-tag-row{gap:.35rem}.excuse-card-actions .btn{min-height:2.25rem;height:2.25rem;min-width:0;padding:0 .8rem;font-size:.8125rem;line-height:1;border-radius:.5rem}@media (max-width:380px){.excuse-card-controls{max-width:52%}.excuse-card-info .font-bold{font-size:1rem}}.excuse-status-tag,.excuse-type-tag{display:inline-flex;align-items:center;justify-content:center;min-height:1.65rem;padding:.2rem .7rem;border-radius:999px;font-size:.78rem;font-weight:700;line-height:1.2;white-space:nowrap;text-align:center}.excuse-type-absence{background:#fef2f2;color:#b91c1c;border:1px solid #fecaca}.excuse-type-lateness{background:#fff7ed;color:#c2410c;border:1px solid #fed7aa}.excuse-status-open{background:#f1f5f9;color:#475569;border:1px solid #e2e8f0}.excuse-status-excused{background:#dcfce7;color:#166534;border:1px solid #86efac;font-weight:800}.public-excuse-page{text-align:start}.public-excuse-card{position:relative}.public-excuse-lang{position:absolute;top:.85rem;inset-inline-end:.85rem;z-index:5}.public-excuse-lang .locale-switcher-trigger{min-height:2.25rem;min-width:2.25rem;padding:.25rem .45rem;box-shadow:0 1px 2px rgba(15,23,42,.06)}.excuse-detail-list{margin:0;padding:1rem;border-radius:.75rem;background:#f8fafc;display:grid;gap:.65rem}.excuse-detail-row{display:flex;justify-content:flex-start;align-items:flex-start;gap:.75rem}.excuse-detail-label{flex:0 0 auto;min-width:4.75rem;color:var(--muted);text-align:start;margin:0}.excuse-detail-value{flex:1 1 auto;margin:0;font-weight:700;text-align:start;min-width:0;word-break:break-word}.excuse-history{display:grid;gap:1rem;margin-top:.35rem;padding-top:1.15rem;border-top:1px solid var(--border,#e2e8f0)}.excuse-history-section{margin:0;padding:.85rem .9rem;border:1px solid var(--border,#e2e8f0);border-radius:.75rem;background:#f8fafc;min-width:0}.excuse-history-title{margin:0 0 .65rem;font-size:.95rem;font-weight:700;color:#0f172a}.excuse-history-list{list-style:none;margin:0;padding:0;display:grid;gap:.45rem}.excuse-history-item{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:.45rem .75rem;padding:.65rem .8rem;border-radius:.65rem;border:1px solid transparent}.excuse-history-item.is-absence{background:#fef2f2;border-color:#fecaca}.excuse-history-item.is-lateness{background:#fff7ed;border-color:#fed7aa}.excuse-history-dates{display:grid;gap:.15rem;min-width:0;flex:1 1 12rem}.excuse-history-date-g,.excuse-history-date-h{margin:0;font-size:.85rem;line-height:1.35;color:#0f172a;font-weight:600}.excuse-history-date-h{font-size:.8rem;font-weight:500;color:#475569}.excuse-history-badge{flex:0 0 auto;font-size:.72rem;font-weight:700;padding:.2rem .55rem;border-radius:999px;white-space:nowrap;align-self:center}.excuse-history-badge.is-excused{background:#ecfdf5;color:#047857;border:1px solid #a7f3d0}.excuse-history-badge.is-pending{background:#fff;color:#b45309;border:1px solid #fcd34d}.excuse-history-empty{margin:0;font-size:.85rem;color:var(--muted);padding:.5rem .15rem}.excuse-feedback-line{border-radius:.65rem;background:#f8fafc;border:1px solid #e2e8f0;padding:.55rem .75rem;line-height:1.45}.excuse-feedback-line.has-feedback{background:#ecfdf5;border-color:#6ee7b7;box-shadow:0 0 0 1px rgba(16,185,129,.12)}.excuse-feedback-line.has-feedback,.excuse-feedback-line.has-feedback .excuse-feedback-text{color:#047857}.excuse-feedback-line.has-feedback .excuse-feedback-label{color:#065f46;font-weight:750}.excuse-feedback-line.has-feedback a{color:#047857;font-weight:700}.excuse-feedback-line p{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (max-width:639.98px){.excuse-feedback-line p{white-space:normal}}.modal-backdrop{position:fixed;inset:0;z-index:80;display:flex;align-items:center;justify-content:center;padding:1rem 1rem max(1rem,env(safe-area-inset-bottom));background:rgb(11 18 32/.48);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);overflow-y:auto}.modal-panel{width:min(32rem,100%);max-height:min(90dvh,44rem);display:flex;flex-direction:column;background:#fff;border-radius:var(--radius-lg);border:1px solid var(--border);box-shadow:var(--shadow-lg)}.modal-panel-wide{width:min(48rem,100%)}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:1.05rem 1.25rem;border-bottom:1px solid var(--border)}.modal-title{margin:0;font-size:1.1rem;font-weight:750;color:var(--heading)}.modal-close{display:inline-flex;align-items:center;justify-content:center;width:2.35rem;height:2.35rem;min-width:2.35rem;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--muted);font-size:1.5rem;line-height:1;cursor:pointer;transition:background var(--duration) var(--ease),color var(--duration) var(--ease)}.modal-close:hover{background:var(--background-elevated);color:var(--heading)}.modal-body{padding:1.25rem;overflow:auto}.import-preview-table{max-height:16rem}.import-row-bad{background:#fef2f2}.import-row-ok{background:#f0fdf4}.import-dropped{color:#b91c1c;text-decoration:line-through;font-weight:600}.import-fixed{color:#047857;font-weight:650}.import-ok-tag{color:#166534}.import-bad-tag,.import-ok-tag{font-weight:700;font-size:.8rem}.import-bad-tag{color:#b91c1c}.field-hint{margin:.25rem 0 0;font-size:.75rem;color:var(--muted)}.date-label-full{font-weight:600;color:var(--primary);font-size:.9em}.col-row-num{width:2.5rem;white-space:nowrap;color:var(--muted);font-variant-numeric:tabular-nums}.ltr-inline{direction:ltr;unicode-bidi:isolate;display:inline-block}.ltr-inline,.user-name-cell{text-align:start}.att-row-inner{display:flex;align-items:flex-start;gap:.5rem;width:100%;min-width:0}.att-row-num{flex:0 0 auto;min-width:1.5rem;font-variant-numeric:tabular-nums;line-height:1.5;padding-top:.15rem}.att-body{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:.65rem}.att-identity-line{display:flex;flex-wrap:wrap;align-items:center;gap:.65rem .85rem;width:100%}.att-identity{flex:1 1 auto;min-width:0;text-align:start}.att-icons-with-name{display:flex;flex-shrink:0;align-items:center}.att-status-btns{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center}.att-status-desktop{display:none;flex-shrink:0;margin-inline-start:auto}.att-controls-mobile{display:flex;align-items:center;justify-content:space-between;gap:.75rem;width:100%}.att-icons-mobile-end{display:flex;flex-shrink:0;align-items:center}@media (min-width:640px){.att-identity-line{flex-wrap:nowrap}.att-status-desktop{display:block}.att-controls-mobile{display:none}}@media (max-width:639.98px){.att-icons-with-name,.att-status-desktop{display:none}}.msg-delete-btn{position:static;flex-shrink:0}.locale-switcher{position:relative;z-index:45}.locale-switcher-trigger{display:inline-flex;align-items:center;gap:.25rem;min-height:44px;min-width:44px;padding:.35rem .55rem;border-radius:.625rem;border:1px solid var(--border);background:#fff;color:var(--foreground);font:inherit;font-size:.9rem;font-weight:600;letter-spacing:normal;cursor:pointer}.locale-switcher-trigger:hover{background:var(--primary-soft);border-color:#bfdbfe}.locale-switcher-flag{display:inline-flex;align-items:center;justify-content:center;min-width:1.35rem;height:1.35rem;padding:0 .2rem;border-radius:.35rem;background:var(--primary-soft);color:var(--primary);font-size:.8rem;font-weight:800;letter-spacing:normal;direction:ltr}.locale-switcher-current{max-width:7rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;letter-spacing:normal}.locale-switcher-caret{font-size:.65rem;color:var(--muted)}.locale-switcher-menu{position:absolute;inset-inline-end:0;top:calc(100% + .35rem);min-width:10.5rem;margin:0;padding:.35rem;list-style:none;background:#fff;border:1px solid var(--border);border-radius:.75rem;box-shadow:0 12px 32px rgba(15,23,42,.14);z-index:60}.locale-switcher-option{display:flex;align-items:center;justify-content:space-between;gap:.75rem;min-height:44px;padding:.55rem .75rem;border-radius:.55rem;font-size:.9rem;font-weight:600;letter-spacing:normal;color:#0f172a;text-decoration:none}.locale-switcher-option:hover{background:var(--primary-soft);color:var(--primary)}.locale-switcher-option.is-selected{background:#eff6ff;color:var(--primary)}.locale-switcher-check{color:var(--primary);font-weight:800}.locale-switcher-option-name{letter-spacing:normal}.wa-status-row{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem}.wa-status-pill{display:inline-flex;align-items:center;min-height:1.85rem;padding:.25rem .8rem;border-radius:var(--radius-pill);font-size:.8125rem;font-weight:700;border:1px solid transparent}.wa-status-connected{background:var(--success-soft);color:#047857;border-color:var(--success-border)}.wa-status-connecting{background:var(--warning-soft);color:#b45309;border-color:var(--warning-border)}.wa-status-disconnected{background:#f8fafc;color:var(--muted);border-color:var(--border)}.wa-health-row{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem .55rem;font-size:.88rem}.wa-health-label{font-weight:650;color:var(--muted)}.wa-health-text{font-weight:700}.wa-health-text-ready{color:#047857}.wa-health-text-issue{color:#c2410c}.wa-health-text-offline{color:#b91c1c}.wa-health-dot{width:.65rem;height:.65rem;border-radius:999px;flex-shrink:0;box-shadow:0 0 0 2px rgba(255,255,255,.9)}.wa-health-ready{background:#10b981;box-shadow:0 0 0 2px #d1fae5}.wa-health-issue{background:#f97316;box-shadow:0 0 0 2px #ffedd5}.wa-health-offline{background:#ef4444;box-shadow:0 0 0 2px #fee2e2}.wa-connected-panel{display:flex;flex-wrap:wrap;align-items:flex-start;gap:.85rem 1rem;padding:1rem;border-radius:.9rem;background:#ecfdf5;border:1px solid #a7f3d0}.report-cat-card{text-decoration:none;color:inherit;min-height:11rem}.report-cat-icon{display:inline-flex;align-items:center;justify-content:center;width:2.75rem;height:2.75rem;border-radius:.75rem;background:#ecfdf5;color:#0d9488;border:1px solid #a7f3d0}.report-class-multi{display:grid;grid-template-columns:1fr;gap:.45rem;max-height:14rem;overflow:auto;padding:.65rem .75rem;border:1px solid var(--border,#e2e8f0);border-radius:.75rem;background:#f8fafc}@media (min-width:768px){.report-class-multi{grid-template-columns:1fr 1fr;max-height:16rem}}.report-class-check{display:flex;align-items:flex-start;gap:.5rem;font-size:.9rem;cursor:pointer}.report-class-check input{margin-top:.2rem}.report-preview{padding:0;overflow:visible}.report-preview-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem 1rem;padding:.85rem 1.1rem;border-bottom:1px solid var(--border,#e2e8f0);background:#f8fafc}.report-preview-toolbar-start{min-width:0;flex:1}.report-preview-heading{font-size:1rem;font-weight:700;color:#0f172a}.report-preview-filename{margin-top:.15rem;font-size:.8rem;color:#64748b;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:min(100%,36rem);direction:rtl}.report-preview-actions{display:flex;align-items:center;gap:.4rem}.report-icon-btn{display:inline-flex;align-items:center;justify-content:center;width:2.4rem;height:2.4rem;border-radius:.65rem;border:1px solid #a7f3d0;background:#ecfdf5;color:#0f766e;cursor:pointer;transition:background .15s ease,border-color .15s ease,transform .1s ease}.report-icon-btn:hover:not(:disabled){background:#d1fae5;border-color:#6ee7b7}.report-icon-btn:active:not(:disabled){transform:scale(.96)}.report-icon-btn:disabled{opacity:.55;cursor:not-allowed}.report-icon-btn-muted{border-color:#e2e8f0;background:#fff;color:#64748b}.report-icon-btn-muted:hover:not(:disabled){background:#f1f5f9;border-color:#cbd5e1}.report-icon-btn-wa{border-color:#86efac;background:#f0fdf4;color:#15803d}.report-icon-btn-wa:hover:not(:disabled){background:#dcfce7;border-color:#4ade80}.report-icon-spinner{width:1rem;height:1rem;border:2px solid #99f6e4;border-top-color:#0f766e;border-radius:50%;animation:report-spin .7s linear infinite}@keyframes report-spin{to{transform:rotate(1turn)}}.report-preview-frame-wrap{background:#ffffff;padding:1.5rem 1.75rem 1.75rem;overflow:visible;max-height:none}.report-preview-frame{display:block;width:100%;height:1120px;min-height:1120px;border:none;border-radius:0;background:#fff;box-shadow:none}.report-preview-frame-wrap.is-landscape .report-preview-frame{height:820px;min-height:820px}@media (max-width:900px){.report-preview-frame-wrap{padding:.85rem}.report-preview-frame{height:900px;min-height:900px}.report-preview-frame-wrap.is-landscape .report-preview-frame{height:640px;min-height:640px}}.cert-bare-shell{position:fixed;inset:0;z-index:1;padding:1rem}.cert-bare-shell,.cert-view-shell{display:flex;align-items:center;justify-content:center;box-sizing:border-box;margin:0;background:#e8edf3;overflow:hidden}.cert-view-shell{width:100%;height:auto;min-height:0;max-height:none;padding:1rem 1.15rem;border:1px solid var(--border,#e2e8f0);border-radius:var(--radius,.75rem)}.cert-bare-slot{position:relative;flex-shrink:0;overflow:hidden;border-radius:2px;box-shadow:0 1px 2px rgba(15,23,42,.06),0 12px 40px rgba(15,23,42,.14);background:#fff}.cert-bare-scale{position:absolute;top:0;left:0;transform-origin:top left}.cert-bare-frame{display:block;width:100%;height:100%;margin:0;border:0;background:#fff}.cert-bare-status{position:fixed;inset:0;z-index:1;display:flex;align-items:center;justify-content:center;margin:0;background:#e8edf3}body:has(.cert-bare-shell),body:has(.cert-bare-status){background:#e8edf3;overflow:hidden}body:has(.cert-bare-shell) .skip-link,body:has(.cert-bare-status) .skip-link{display:none!important}.cert-tpl-groups{display:flex;flex-direction:column;gap:2.25rem}.cert-tpl-group+.cert-tpl-group{padding-top:.35rem}.cert-tpl-group-title{margin-bottom:.15rem;letter-spacing:.01em}.cert-edit-preview-page{min-height:100dvh;box-sizing:border-box;padding:1rem 1rem 2rem;background:#e8edf3;display:flex;flex-direction:column;gap:.85rem}.cert-edit-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem 1rem;max-width:56rem;margin:0 auto;width:100%}.cert-edit-hint{color:var(--muted,#64748b);flex:1 1 14rem}.cert-edit-gender-tabs{display:flex;flex-wrap:wrap;gap:.4rem}.cert-edit-stage{display:flex;flex-direction:column;gap:1rem;max-width:56rem;margin:0 auto;width:100%}.cert-edit-fields{background:#fff}.cert-edit-field-block{border-top:1px solid var(--border,#e2e8f0);padding:.65rem 0}.cert-edit-field-block:first-of-type{border-top:none;padding-top:0}.cert-edit-field-hit{display:flex;flex-direction:column;align-items:stretch;gap:.25rem;width:100%;text-align:start;border:1px dashed transparent;border-radius:.5rem;padding:.45rem .55rem;background:transparent;cursor:pointer;font:inherit;color:inherit;transition:background .12s ease,border-color .12s ease}.cert-edit-field-hit.is-open,.cert-edit-field-hit:hover{background:#f8fafc;border-color:#93c5fd}.cert-edit-field-label{font-size:.72rem;font-weight:700;color:var(--muted,#64748b);text-transform:none}.cert-edit-field-preview{font-size:.9rem;line-height:1.55;color:#0f172a;white-space:pre-wrap;word-break:break-word}.cert-edit-panel{margin-top:.5rem;padding:.65rem .55rem .35rem;border-radius:.65rem;background:#f1f5f9;border:1px solid #e2e8f0;display:grid;gap:.55rem}.cert-edit-tokens{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem}.cert-edit-textarea{min-height:4rem;font-size:.95rem;line-height:1.6}.cert-edit-actions{display:flex;justify-content:flex-end;gap:.45rem}.cert-edit-icon-btn{display:inline-flex;align-items:center;justify-content:center;width:2.35rem;height:2.35rem;border-radius:.65rem;border:1px solid #e2e8f0;background:#fff;color:#64748b;cursor:pointer}.cert-edit-icon-btn:hover:not(:disabled){background:#f8fafc;border-color:#cbd5e1}.cert-edit-icon-btn.is-save{background:#ecfdf5;border-color:#a7f3d0;color:#047857}.cert-edit-icon-btn.is-save:hover:not(:disabled){background:#d1fae5}.cert-edit-icon-btn:disabled{opacity:.55;cursor:not-allowed}.cert-template-settings{margin:0;padding:.75rem 0 0;border:none;display:grid;gap:.55rem}.cert-template-fixed-row{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem}.cert-template-select{max-width:18rem;min-width:12rem}.cert-results-card{border:1px solid var(--border,#e2e8f0)}.cert-results-class-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem 1rem;padding:.85rem 1rem;background:#f8fafc;border-bottom:1px solid var(--border,#e2e8f0)}.cert-results-table{border-collapse:collapse}.cert-results-table thead th{text-align:start;font-weight:700;color:#334155;background:#f1f5f9;padding:.65rem .85rem;border-bottom:1px solid #e2e8f0;white-space:nowrap}.cert-results-table tbody td{padding:.75rem .85rem;border-bottom:1px solid #f1f5f9;vertical-align:middle}.cert-results-table tbody tr{transition:background-color .12s ease}.cert-results-table tbody tr:hover{background:#f0fdf4}.cert-results-table tbody tr:last-child td{border-bottom:none}.cert-col-num{width:3rem;text-align:center!important;color:#64748b;font-variant-numeric:tabular-nums}.cert-col-name{font-weight:600;color:#0f172a}.cert-col-actions{width:1%;white-space:nowrap}.cert-row-actions{gap:.55rem}.cert-action-btn,.cert-row-actions{display:inline-flex;align-items:center}.cert-action-btn{justify-content:center;width:2.35rem;height:2.35rem;border-radius:.65rem;border:1px solid transparent;cursor:pointer;text-decoration:none;transition:background .12s ease,border-color .12s ease,color .12s ease,transform .1s ease}.cert-action-btn:active:not(:disabled){transform:scale(.96)}.cert-action-btn:disabled{opacity:.55;cursor:not-allowed}.cert-action-download{background:#eff6ff;border-color:#bfdbfe;color:#1d4ed8}.cert-action-download:hover:not(:disabled){background:#dbeafe;border-color:#93c5fd}.cert-bulk-actions{display:flex;flex-direction:column;gap:.45rem}.cert-bulk-buttons{display:flex;flex-wrap:wrap;gap:.55rem}.cert-bulk-btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;min-height:2.45rem;padding:.45rem .95rem;border-radius:.65rem;border:1px solid transparent;font-size:.875rem;font-weight:700;cursor:pointer;transition:background .12s ease,border-color .12s ease,transform .1s ease}.cert-bulk-btn:active:not(:disabled){transform:scale(.98)}.cert-bulk-btn:disabled{opacity:.55;cursor:not-allowed}.cert-bulk-download{background:#eff6ff;border-color:#bfdbfe;color:#1d4ed8}.cert-bulk-download:hover:not(:disabled){background:#dbeafe;border-color:#93c5fd}.cert-bulk-send{background:#f0fdf4;border-color:#86efac;color:#15803d}.cert-bulk-send:hover:not(:disabled){background:#dcfce7;border-color:#4ade80}.cert-bulk-note{font-size:.8rem;color:var(--muted,#64748b);line-height:1.4}.cert-action-view{background:#f8fafc;border-color:#e2e8f0;color:#0f766e}.cert-action-view:hover{background:#ecfdf5;border-color:#a7f3d0}.cert-action-wa{background:#f0fdf4;border-color:#86efac;color:#15803d}.cert-action-wa:hover:not(:disabled){background:#dcfce7;border-color:#4ade80}.cert-wa-modal .cert-wa-option{display:flex;align-items:flex-start;gap:.55rem;padding:.55rem .7rem;border-radius:.65rem;border:1px solid #e2e8f0;background:#f8fafc;cursor:pointer}.cert-wa-modal .cert-wa-option:has(input:checked){border-color:#5eead4;background:#ecfdf5}.cert-wa-option-text{display:flex;row-gap:.2rem;font-size:.95rem;line-height:1.4}.cert-wa-option-text,.wa-send-option-text{flex-wrap:wrap;align-items:baseline;column-gap:.85rem}.wa-send-option-text{display:inline-flex;row-gap:.15rem}.wa-option-phone{color:#64748b;font-size:.9rem;font-variant-numeric:tabular-nums;margin-inline-start:.15rem;letter-spacing:.01em}.cert-wa-other{display:flex;flex-wrap:wrap;align-items:center;gap:.55rem .75rem;padding:.45rem .7rem;border-radius:.65rem;border:1px solid #e2e8f0;background:#f8fafc}.cert-wa-other.is-active{border-color:#5eead4;background:#ecfdf5}.cert-wa-other .cert-wa-option{border:none;background:transparent;padding:.15rem 0}.cert-wa-other-input{flex:1 1 10rem;min-width:9rem;max-width:16rem}.wa-other-row{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem}.wa-other-label{flex:0 0 auto;margin:0}.wa-other-input{flex:1 1 10rem;min-width:9rem;max-width:16rem}.wa-method-tabs{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.wa-method-tab{display:flex;flex-direction:column;align-items:flex-start;gap:.25rem;padding:.75rem .85rem;border-radius:.85rem;border:1.5px solid #e2e8f0;background:#f8fafc;cursor:pointer;text-align:start;transition:border-color .15s,background .15s,box-shadow .15s;min-height:3.25rem}.wa-method-tab:hover{border-color:#cbd5e1;background:#fff}.wa-method-tab.is-active{border-color:var(--primary,#0d9488);background:#f0fdfa;box-shadow:0 0 0 1px rgba(13,148,136,.15)}.wa-method-tab.is-recommended:not(.is-active){border-color:#a7f3d0}.wa-method-tab-title{font-weight:750;font-size:.92rem;color:#0f172a}.wa-method-badge{font-size:.7rem;font-weight:750;color:#047857;background:#d1fae5;border-radius:999px;padding:.1rem .45rem}.wa-pair-panel{display:grid;gap:.9rem;padding:1rem;border-radius:.9rem;background:#f8fafc;border:1px solid #e2e8f0}.wa-pair-code-box{display:flex;flex-direction:column;align-items:center;gap:.35rem;padding:1rem .75rem;border-radius:.85rem;background:#ecfdf5;border:1px dashed #6ee7b7;text-align:center}.wa-pair-code-label{font-size:.8rem;font-weight:650;color:#047857}.wa-pair-code-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.45rem .6rem}.wa-pair-code{font-size:clamp(1.6rem,6vw,2.15rem);font-weight:800;letter-spacing:.12em;color:#065f46;font-variant-numeric:tabular-nums;line-height:1.2}.wa-pair-copy-btn{display:inline-flex;align-items:center;justify-content:center;width:2.35rem;height:2.35rem;min-width:2.35rem;padding:0;border-radius:.65rem;border:1px solid #a7f3d0;background:#fff;color:#047857;cursor:pointer}.wa-pair-copy-btn:hover{background:#ecfdf5;border-color:#6ee7b7}.wa-pair-copy-btn:disabled{opacity:.55;cursor:default}.wa-pair-code-hint{font-size:.75rem;color:#64748b}@media (max-width:639.98px){.wa-method-tabs{grid-template-columns:1fr}.wa-qr-image{width:min(260px,88vw);height:auto}}.wa-profile-pic{width:4.5rem;height:4.5rem;border-radius:999px;object-fit:cover;border:2px solid #fff;box-shadow:0 1px 4px rgba(15,23,42,.12);flex-shrink:0;background:#d1fae5}.wa-profile-pic-placeholder{display:inline-flex;align-items:center;justify-content:center;font-size:1.5rem;font-weight:800;color:#047857}.wa-connected-meta{display:grid;gap:.65rem;margin:0;flex:1 1 12rem;min-width:0}@media (min-width:640px){.wa-connected-meta{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem 1.25rem}}.dashboard-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:.75rem 1rem}.dashboard-header-main{flex:1 1 14rem;min-width:0}.wa-dash-status{display:inline-flex;align-items:center;gap:.4rem;margin-inline-start:auto;padding:.35rem .65rem;border-radius:999px;border:1px solid #e2e8f0;background:#f8fafc;font-size:.78rem;font-weight:650;color:#334155;text-decoration:none;white-space:nowrap;max-width:100%}.wa-dash-status:hover{border-color:#bfdbfe;background:#eff6ff;color:var(--primary)}.wa-dash-status-label{letter-spacing:normal}.wa-dash-ready{border-color:#a7f3d0;background:#ecfdf5;color:#065f46}.wa-dash-issue{border-color:#fed7aa;background:#fff7ed;color:#9a3412}.wa-dash-offline{border-color:#fecaca;background:#fef2f2;color:#991b1b}.wa-meta-row{min-width:0}.wa-meta-label{margin:0 0 .15rem;font-size:.8rem;font-weight:600;color:var(--muted);text-align:start}.wa-meta-value{margin:0;font-size:.95rem;font-weight:700;color:#065f46;text-align:start}.wa-meta-ltr{display:inline-block;direction:ltr;unicode-bidi:isolate;letter-spacing:normal}.wa-qr-panel{display:grid;gap:.85rem;justify-items:center;padding:1rem;border-radius:.9rem;border:1px dashed #bfdbfe;background:#f8fafc}.wa-qr-steps{margin:0;padding-inline-start:1.25rem;width:100%;max-width:22rem;font-size:.9rem;font-weight:600;color:#0f172a;line-height:1.55}.wa-qr-image{width:min(280px,85vw);height:auto;border-radius:.75rem;border:1px solid #e2e8f0;background:#fff;padding:.5rem}.date-range-presets{display:grid;gap:.85rem;width:100%;min-width:0}.date-range-divider{height:1px;width:100%;background:linear-gradient(to left,transparent,var(--border) 12%,var(--border) 88%,transparent);margin:.15rem 0 .1rem}.date-range-chips{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem}.date-range-chips-sep{display:none;width:1px;height:1.5rem;margin-inline:.25rem;background:var(--border);flex-shrink:0}@media (min-width:480px){.date-range-chips-sep{display:inline-block}}.date-range-chip{appearance:none;display:inline-flex;align-items:center;gap:.3rem;min-height:2.15rem;padding:.3rem .75rem;border-radius:999px;border:1px solid #e2e8f0;background:#f8fafc;color:#334155;font:inherit;font-size:.82rem;font-weight:650;letter-spacing:normal;cursor:pointer;white-space:nowrap;transition:background .12s ease,border-color .12s ease,color .12s ease,box-shadow .12s ease}.date-range-chip:hover{background:#eff6ff;border-color:#bfdbfe;color:var(--primary)}.date-range-chip.is-active{background:#eff6ff;border-color:#93c5fd;color:#1d4ed8;box-shadow:0 0 0 1px rgba(59,130,246,.12)}.date-range-chip-custom{border-style:dashed}.date-range-chip-custom.is-active{border-style:solid}.date-range-chip-step{display:inline-flex;align-items:center;justify-content:center;min-width:1.25rem;height:1.25rem;padding:0 .3rem;border-radius:999px;background:#dbeafe;color:#1e40af;font-size:.7rem;font-weight:800;direction:ltr}.date-range-calendar{display:flex;flex-wrap:wrap;align-items:center;gap:.45rem .9rem;margin:0;padding:0;min-width:0}.date-range-calendar-legend{padding:0;margin:0;font-size:.8rem;font-weight:700;color:var(--muted);flex:0 0 auto}.date-range-radio{display:inline-flex;align-items:center;gap:.4rem;min-height:2.25rem;font-size:.9rem;font-weight:600;color:#0f172a;cursor:pointer;user-select:none}.date-range-radio input{width:1.05rem;height:1.05rem;accent-color:var(--primary);cursor:pointer}.date-range-summary{display:grid;gap:.45rem;padding:.75rem .9rem;border-radius:.75rem;background:#f8fafc;border:1px solid #e2e8f0}.date-range-summary-row{display:flex;flex-wrap:wrap;align-items:baseline;gap:.35rem .65rem;min-width:0}.date-range-summary-label{flex:0 0 auto;min-width:2.5rem;font-size:.8rem;font-weight:700;color:var(--muted)}.date-range-summary-value{flex:1 1 12rem;min-width:0;font-size:.9rem;font-weight:650;color:#0f172a;line-height:1.45;word-break:break-word}.date-range-custom{display:grid;gap:1rem;padding-top:.15rem;min-width:0}@media (min-width:768px){.date-range-custom{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:1rem 1.25rem}}.dual-date-picker{display:grid;gap:.65rem;width:100%;max-width:100%;min-width:0}@media (min-width:640px){.dual-date-picker{grid-template-columns:minmax(0,1fr) minmax(0,1.35fr);gap:.85rem;align-items:end}}.dual-date-field{min-width:0;max-width:100%;width:100%}.dual-date-picker .dual-date-select,.dual-date-picker .input{box-sizing:border-box;height:2.75rem;min-height:2.75rem;max-width:100%;line-height:1.25}.dual-date-picker input[type=date]{display:block;width:100%;max-width:100%;min-width:0;-webkit-appearance:none;appearance:none}.dual-date-picker input[type=date]::-webkit-date-and-time-value{text-align:start;min-height:1.25rem}.dual-date-hijri{display:grid;grid-template-columns:minmax(3.25rem,.7fr) minmax(0,1.6fr) minmax(3.75rem,.85fr);gap:.35rem;align-items:stretch;width:100%;max-width:100%;min-width:0}.dual-date-select{min-width:0;width:100%;padding-inline:.4rem;font-size:.9rem}.dual-date-select-month{font-size:.82rem}.class-card{position:relative;overflow:visible;padding-inline-end:5.5rem}.class-card-delete{position:absolute;top:.75rem;inset-inline-end:.75rem;z-index:3;display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;min-width:2.5rem;min-height:2.5rem;margin:0;padding:0;border-radius:.625rem;border:1px solid #e2e8f0;background:#f8fafc;color:#475569;cursor:pointer;box-shadow:0 1px 2px rgb(15 23 42/.06);transition:color .15s ease,background .15s ease,border-color .15s ease,box-shadow .15s ease}.class-card-delete:focus-visible,.class-card-delete:hover:not(:disabled){color:var(--danger);background:#fef2f2;border-color:#fca5a5;box-shadow:0 1px 3px rgb(185 28 28/.15);outline:none}.class-card-delete:disabled{opacity:.5;cursor:not-allowed}.class-card-delete svg{display:block;width:1.15rem;height:1.15rem;flex-shrink:0}.sort-th-btn{display:inline-flex;align-items:center;gap:.35rem;width:100%;margin:0;padding:0;border:0;background:transparent;font:inherit;font-weight:700;color:inherit;cursor:pointer;text-align:start;letter-spacing:normal}.sort-th-btn:hover{color:var(--primary)}.sort-tri{font-size:.65rem;line-height:1;opacity:.35}.sort-tri-asc,.sort-tri-desc{opacity:1;color:var(--primary)}.sort-tri-idle{opacity:.25}.gender-boys{color:#1d4ed8;font-weight:700}.gender-girls{color:#db2777;font-weight:700}.class-card-share{position:absolute;top:.75rem;inset-inline-end:3.5rem;z-index:3;display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;min-width:2.5rem;min-height:2.5rem;margin:0;padding:0;border-radius:.625rem;border:1px solid #e2e8f0;background:#f8fafc;color:#475569;cursor:pointer;box-shadow:0 1px 2px rgb(15 23 42/.06);transition:color .15s ease,background .15s ease,border-color .15s ease,box-shadow .15s ease}.class-card-share:focus-visible,.class-card-share:hover{color:var(--primary);background:var(--primary-soft);border-color:#bfdbfe;box-shadow:0 1px 3px rgb(37 99 235/.15);outline:none}.class-card-share svg{display:block;width:1.15rem;height:1.15rem;flex-shrink:0}.class-card-share-footer{position:relative;margin-top:.75rem;padding-top:.55rem;border-top:1px solid var(--border);display:flex;flex-wrap:nowrap}.class-card-share-footer,.class-share-meta{flex-direction:row;align-items:center;gap:.35rem}.class-share-meta{display:inline-flex;max-width:100%;font-size:.75rem;line-height:1.25;color:var(--muted,#64748b);background:transparent;border:none;padding:0;cursor:default;font-family:inherit;white-space:nowrap;text-align:start}.class-share-meta>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.class-share-badge svg,.class-share-meta svg{display:block;width:.9rem;height:.9rem;flex-shrink:0}button.class-share-meta{cursor:pointer}.class-share-badge,button.class-share-meta:hover{color:var(--primary)}.class-share-badge{display:inline-flex;align-items:center;margin-inline-start:.35rem;vertical-align:middle}.class-share-tooltip{position:absolute;inset-inline-start:0;bottom:calc(100% + .25rem);z-index:5;min-width:10rem;max-width:16rem;padding:.5rem .65rem;border-radius:.5rem;border:1px solid var(--border);background:#fff;box-shadow:0 8px 24px rgba(15,23,42,.12);font-size:.75rem;line-height:1.35}.class-share-tooltip-row{display:flex;flex-wrap:wrap;gap:.25rem;padding:.15rem 0}.share-candidate-list{list-style:none;border:1px solid var(--border);border-radius:.5rem;max-height:10rem;overflow:auto}.share-candidate-item{display:flex;flex-direction:column;align-items:flex-start;width:100%;gap:.1rem;padding:.5rem .65rem;border:none;border-bottom:1px solid var(--border);background:#fff;cursor:pointer;text-align:start;font-family:inherit}.share-candidate-item:last-child{border-bottom:none}.share-candidate-item.is-selected,.share-candidate-item:hover{background:var(--primary-soft)}.share-list{list-style:none}.share-list-item{display:grid;grid-template-columns:1fr auto auto;gap:.5rem;align-items:center;padding:.55rem 0;border-bottom:1px solid var(--border)}@media (max-width:639px){.share-list-item{grid-template-columns:1fr}}.shared-class-mark{display:inline-flex;align-items:center;margin-inline-start:.25rem;color:var(--primary);vertical-align:middle}.class-shared-by-tag{display:inline-flex;flex-direction:row;align-items:center;gap:.3rem;white-space:nowrap;max-width:100%;color:#7c3aed}.class-shared-by-tag svg{display:block;width:.85rem;height:.85rem;flex-shrink:0;color:inherit;stroke:currentColor}.class-shared-by-tag>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;color:inherit}.recorded-by{font-size:.7rem;color:var(--muted,#64748b);margin-top:.05rem;line-height:1.35}.excuse-card-info .recorded-by{margin-top:.1rem}@media print{.no-print{display:none!important}.survey-print{max-width:none}}.survey-workspace{display:flex;flex-direction:column;gap:1.75rem}.survey-send-row{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem 1rem}.survey-send-msg{line-height:1.35}.survey-results-list.is-refreshing{opacity:.72;pointer-events:none;transition:opacity .15s ease}.survey-section+.survey-section{margin-top:0}.survey-stats-section{background:#fff;border-color:var(--border,#e2e8f0)}.survey-stat-card{border-radius:.85rem;border:1px solid transparent;padding:.85rem 1rem;min-height:5rem}.survey-stat-label{font-size:.75rem;font-weight:600;opacity:.85;margin-bottom:.35rem}.survey-stat-value{font-size:1.65rem;font-weight:800;line-height:1.1;font-variant-numeric:tabular-nums}.survey-stat-total{background:#eff6ff;border-color:#bfdbfe;color:#1d4ed8}.survey-stat-sent{background:#f0fdf4;border-color:#86efac;color:#15803d}.survey-stat-pending{background:#fff7ed;border-color:#fed7aa;color:#c2410c}.survey-stat-done{background:#ecfdf5;border-color:#a7f3d0;color:#0f766e}.survey-stat-open{background:#f8fafc;border-color:#e2e8f0;color:#475569}.survey-filters{padding:.85rem 1rem;border-radius:.75rem;border:1px solid #e2e8f0;background:#f1f5f9}.survey-completion-badge{display:inline-flex;align-items:center;padding:.2rem .55rem;border-radius:999px;font-size:.75rem;font-weight:700;white-space:nowrap}.survey-completion-badge.is-complete{background:#dcfce7;color:#15803d;border:1px solid #86efac}.survey-completion-badge.is-incomplete{background:#f1f5f9;color:#64748b;border:1px solid #e2e8f0}.survey-action-wa-new{background:#fff;border-color:#e2e8f0;color:#15803d}.survey-action-wa-new:hover:not(:disabled){background:#f8fafc;border-color:#cbd5e1}.survey-action-wa-sent{background:#f0fdf4;border-color:#86efac;color:#15803d}.survey-action-wa-sent:hover:not(:disabled){background:#dcfce7;border-color:#4ade80}.survey-action-wa-disabled{background:#f1f5f9;border-color:#e2e8f0;color:#94a3b8;cursor:not-allowed}.survey-action-wa-disabled:disabled{opacity:1}.survey-input-digits{text-align:start;direction:ltr;unicode-bidi:plaintext}[dir=rtl] .survey-input-digits{text-align:right}.survey-response-bare{min-height:100dvh}.survey-print-sheet{max-width:48rem;margin-inline:auto;background:#fff;color:#0f172a}.survey-print-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:.75rem;margin-bottom:1rem;padding-bottom:.75rem;border-bottom:2px solid #e2e8f0}.survey-print-title{font-size:1.25rem;font-weight:800;margin:0 0 .35rem;line-height:1.3}.survey-print-sub{font-size:1.05rem;font-weight:700;margin:0 0 .2rem}.survey-print-meta{font-size:.8rem;color:#64748b;line-height:1.4}.survey-print-body{display:grid;gap:.65rem}.survey-print-block{border:1px solid #e2e8f0;border-radius:.65rem;padding:.55rem .75rem .65rem;background:#fafafa;break-inside:avoid}.survey-print-block h2{font-size:.8rem;font-weight:800;margin:0 0 .45rem;color:#1e40af;letter-spacing:.01em}.survey-print-grid{display:grid;grid-template-columns:1fr 1fr;gap:.35rem 1rem;margin:0}.survey-print-field{display:grid;grid-template-columns:minmax(6.5rem,42%) 1fr;gap:.35rem .5rem;align-items:baseline;font-size:.78rem;line-height:1.35;min-width:0}.survey-print-field dt{margin:0;color:#64748b;font-weight:600}.survey-print-field dd{margin:0;font-weight:700;color:#0f172a;word-break:break-word}.survey-print-notes .survey-print-notes-body{font-size:.82rem;line-height:1.45;white-space:pre-wrap;color:#0f172a}@media (max-width:639px){.survey-print-field,.survey-print-grid{grid-template-columns:1fr}.survey-print-field{gap:.1rem}}@media print{@page{size:A4;margin:10mm 12mm}body{background:#fff!important}.no-print,.skip-link{display:none!important}.survey-print-sheet,.survey-response-bare{max-width:none;margin:0;padding:0;min-height:0}.survey-print-header{margin-bottom:.5rem;padding-bottom:.4rem;border-bottom-width:1px}.survey-print-title{font-size:13pt}.survey-print-sub{font-size:11pt}.survey-print-meta{font-size:8.5pt}.survey-print-body{gap:.4rem}.survey-print-block{border-radius:.25rem;padding:.35rem .5rem;background:#fff!important;border-color:#cbd5e1;break-inside:avoid;page-break-inside:avoid}.survey-print-block h2{font-size:9.5pt;margin-bottom:.25rem;color:#0f172a}.survey-print-grid{gap:.2rem .75rem}.survey-print-field{font-size:8.5pt;grid-template-columns:38% 1fr}.survey-print-notes-body{font-size:9pt}}.class-card-title{font-size:1.05rem;font-weight:700;line-height:1.35;color:#0f172a}.disabled-banner{margin:0 0 1rem;padding:1rem 1.15rem;border-radius:var(--radius);border:1px solid #fecaca;background:#fef2f2;color:#991b1b}.disabled-banner a{color:#1e3a8a;font-weight:700;text-decoration:underline}.landing{--landing-ink:#0f172a;--landing-muted:#64748b;--landing-navy:#1e3a8a;--landing-teal:#0f766e;--landing-soft:#eff6ff;--landing-mint:#ecfdf5;overflow-x:clip}.btn-ghost{color:var(--landing-navy)}.btn-ghost:hover:not(:disabled){background:rgba(30,58,138,.06)}.landing-btn-lg{padding-inline:1.35rem;min-height:2.85rem;font-weight:700;border-radius:.75rem}.landing-hero{position:relative;isolation:isolate;padding-block:2.75rem 3.25rem;background:radial-gradient(1200px 480px at 10% -10%,rgba(15,118,110,.12),transparent 55%),radial-gradient(900px 420px at 90% 0,rgba(30,58,138,.14),transparent 50%),linear-gradient(180deg,#f8fafc,#eff6ff 48%,#f8fafc)}html[dir=rtl] .landing-hero{background:radial-gradient(1200px 480px at 90% -10%,rgba(15,118,110,.12),transparent 55%),radial-gradient(900px 420px at 10% 0,rgba(30,58,138,.14),transparent 50%),linear-gradient(180deg,#f8fafc,#eff6ff 48%,#f8fafc)}.landing-hero-glow{background:linear-gradient(120deg,transparent 40%,rgba(255,255,255,.35) 50%,transparent 60%);opacity:.5}.landing-hero-glow,.landing-hero-grid{pointer-events:none;position:absolute;inset:0;z-index:0}.landing-hero-grid{opacity:.35;background-image:linear-gradient(rgba(30,58,138,.04) 1px,transparent 0),linear-gradient(90deg,rgba(30,58,138,.04) 1px,transparent 0);background-size:40px 40px;mask-image:linear-gradient(180deg,#000,transparent 85%)}.landing-hero-inner{position:relative;z-index:1;display:grid;gap:2.5rem;align-items:center}@media (min-width:900px){.landing-hero{padding-block:3.5rem 4rem}.landing-hero-inner{grid-template-columns:1.05fr .95fr;gap:3rem}}.landing-hero-copy{display:flex;flex-direction:column;align-items:flex-start;gap:1.1rem}.landing-badge{display:inline-flex;align-items:center;gap:.45rem;padding:.35rem .75rem;border-radius:999px;background:rgba(255,255,255,.85);border:1px solid rgba(30,58,138,.12);color:var(--landing-navy);font-size:.8rem;font-weight:700;box-shadow:0 1px 2px rgba(15,23,42,.04)}.landing-badge-dot{width:.45rem;height:.45rem;border-radius:999px;background:var(--landing-teal);box-shadow:0 0 0 3px rgba(15,118,110,.18)}.landing-eyebrow{display:inline-flex;align-items:center;gap:.5rem;margin:0;font-size:.95rem;font-weight:800;letter-spacing:-.02em;background:linear-gradient(120deg,#1e3a8a,#0f766e);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}html[dir=rtl] .landing-eyebrow{letter-spacing:0}.landing-hero-title{margin:0;max-width:18ch;font-size:clamp(1.85rem,4.2vw,2.75rem);font-weight:800;line-height:1.2;letter-spacing:-.03em;color:var(--landing-ink)}html[dir=rtl] .landing-hero-title{letter-spacing:0;line-height:1.35;max-width:14ch}.landing-hero-sub{margin:0;max-width:36rem;font-size:1.05rem;line-height:1.7;color:var(--landing-muted)}html[dir=rtl] .landing-hero-sub{line-height:1.85}.landing-hero-actions{display:flex;flex-wrap:wrap;gap:.65rem;margin-top:.35rem}.landing-social-proof{margin:.25rem 0 0;font-size:.85rem;font-weight:600;color:#94a3b8}.landing-preview{display:flex;justify-content:center}.landing-preview-card{width:min(100%,26rem);padding:1.15rem 1.2rem 1.25rem;border-radius:1.25rem;background:rgba(255,255,255,.92);border:1px solid rgba(226,232,240,.95);box-shadow:0 1px 2px rgba(15,23,42,.04),0 18px 50px -20px rgba(30,58,138,.28);backdrop-filter:blur(8px)}.landing-preview-top{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:1rem}.landing-preview-pills{display:flex;gap:.35rem}.landing-pill{width:.55rem;height:.55rem;border-radius:999px;background:#e2e8f0}.landing-pill-live{background:#22c55e;box-shadow:0 0 0 3px rgba(34,197,94,.18)}.landing-preview-label{font-size:.8rem;font-weight:700;color:var(--landing-navy)}.landing-preview-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem;margin-bottom:1rem}.landing-stat{display:flex;flex-direction:column;gap:.15rem;padding:.65rem .5rem;border-radius:.85rem;background:#f8fafc;border:1px solid #eef2f7;text-align:center}.landing-stat-value{font-size:1.25rem;font-weight:800;font-variant-numeric:tabular-nums;line-height:1.1}.landing-stat-ok{color:#047857}.landing-stat-warn{color:#b91c1c}.landing-stat-late{color:#b45309}.landing-stat-label{font-size:.7rem;font-weight:600;color:var(--landing-muted)}.landing-preview-rows{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.55rem}.landing-preview-rows li{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.65rem;padding:.55rem .6rem;border-radius:.75rem;background:#fff;border:1px solid #f1f5f9}.landing-avatar{width:1.75rem;height:1.75rem;border-radius:999px;background:linear-gradient(145deg,#cbd5e1,#e2e8f0)}.landing-row-bar{height:.45rem;border-radius:999px;background:linear-gradient(90deg,#e2e8f0,#f1f5f9);width:100%}.landing-row-bar.short{width:55%}.landing-row-bar.mid{width:75%}html[dir=rtl] .landing-row-bar{background:linear-gradient(270deg,#e2e8f0,#f1f5f9)}.landing-chip{font-size:.68rem;font-weight:700;padding:.25rem .5rem;border-radius:999px;white-space:nowrap}.landing-chip-ok{background:#ecfdf5;color:#047857}.landing-chip-warn{background:#fef2f2;color:#b91c1c}.landing-chip-late{background:#fffbeb;color:#b45309}.landing-preview-footer{margin:.9rem 0 0;font-size:.75rem;line-height:1.5;color:var(--landing-muted)}.landing-trust{border-block:1px solid #e2e8f0;background:#fff}.landing-trust-inner{display:grid;gap:.75rem;padding-block:1rem}@media (min-width:720px){.landing-trust-inner{grid-template-columns:repeat(3,1fr);gap:1rem;padding-block:1.15rem}}.landing-trust-item{display:flex;gap:.5rem;font-size:.9rem;font-weight:700;color:#334155;text-align:center}.landing-trust-check,.landing-trust-item{align-items:center;justify-content:center}.landing-trust-check{display:inline-flex;width:1.35rem;height:1.35rem;border-radius:999px;background:var(--landing-mint);color:var(--landing-teal);font-size:.75rem;flex-shrink:0}.landing-section{padding-block:3.25rem;background:#f8fafc}.landing-section-alt{background:#fff;border-block:1px solid #eef2f7}.landing-section-head{max-width:40rem;margin-inline:auto;margin-bottom:2rem;text-align:center}.landing-section-title{margin:0 0 .65rem;font-size:clamp(1.35rem,2.5vw,1.75rem);font-weight:800;letter-spacing:-.02em;color:var(--landing-ink);line-height:1.3}html[dir=rtl] .landing-section-title{letter-spacing:0;line-height:1.45}.landing-section-sub{margin:0;font-size:.98rem;line-height:1.7;color:var(--landing-muted)}.landing-section-sub-start{text-align:start;max-width:32rem}.landing-kicker{display:inline-block;margin:0 0 .65rem;font-size:.78rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--landing-teal)}html[dir=rtl] .landing-kicker{letter-spacing:0;text-transform:none}.landing-features{display:grid;gap:1rem}@media (min-width:640px){.landing-features{grid-template-columns:repeat(2,1fr)}}@media (min-width:1024px){.landing-features{grid-template-columns:repeat(4,1fr)}}.landing-feature-card{height:100%;padding:1.25rem 1.2rem 1.35rem;border-radius:1.1rem;background:#fff;border:1px solid #e2e8f0;box-shadow:0 1px 2px rgba(15,23,42,.03);transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease}.landing-feature-card:hover{border-color:#bfdbfe;box-shadow:0 12px 30px -18px rgba(30,58,138,.35);transform:translateY(-2px)}@media (prefers-reduced-motion:reduce){.landing-feature-card{transition:none}.landing-feature-card:hover{transform:none}}.landing-feature-icon{display:inline-flex;width:2.6rem;height:2.6rem;align-items:center;justify-content:center;margin-bottom:.85rem;border-radius:.85rem;background:linear-gradient(145deg,var(--landing-soft),#fff);color:var(--landing-navy);border:1px solid #dbeafe}.landing-feature-title{margin:0 0 .4rem;font-size:1.05rem;font-weight:800;color:var(--landing-ink)}.landing-feature-body{margin:0;font-size:.9rem;line-height:1.65;color:var(--landing-muted)}.landing-cap-grid{display:grid;gap:2rem;align-items:start}@media (min-width:860px){.landing-cap-grid{grid-template-columns:1fr 1.1fr;gap:3rem}}.landing-cap-actions{display:flex;flex-wrap:wrap;gap:.65rem;margin-top:1.25rem}.landing-cap-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.55rem}.landing-cap-item{display:flex;align-items:center;gap:.85rem;padding:.9rem 1rem;border-radius:.95rem;background:#f8fafc;border:1px solid #e2e8f0;font-size:.95rem;font-weight:600;color:#1e293b;line-height:1.45}.landing-cap-num{flex-shrink:0;font-size:.8rem;font-weight:800;font-variant-numeric:tabular-nums;color:var(--landing-teal);background:var(--landing-mint);border-radius:.5rem;padding:.35rem .5rem}.landing-cta-band{padding-block:2.75rem;background:radial-gradient(700px 280px at 20% 0,rgba(15,118,110,.35),transparent 60%),linear-gradient(135deg,#1e3a8a,#16306f 45%,#0f5c57);color:#fff}html[dir=rtl] .landing-cta-band{background:radial-gradient(700px 280px at 80% 0,rgba(15,118,110,.35),transparent 60%),linear-gradient(225deg,#1e3a8a,#16306f 45%,#0f5c57)}.landing-cta-inner{display:grid;gap:1.5rem;align-items:center}@media (min-width:800px){.landing-cta-inner{grid-template-columns:1.2fr auto;gap:2rem}}.landing-cta-title{margin:0 0 .5rem;font-size:clamp(1.3rem,2.4vw,1.7rem);font-weight:800;line-height:1.3}.landing-cta-body{margin:0;max-width:34rem;font-size:.98rem;line-height:1.7;color:rgba(255,255,255,.88)}.landing-cta-actions{display:flex;flex-wrap:wrap;gap:.65rem}.landing-btn-on-dark{background:rgba(255,255,255,.1);color:#fff;border-color:rgba(255,255,255,.35)}.landing-btn-on-dark:hover:not(:disabled){background:rgba(255,255,255,.18);border-color:rgba(255,255,255,.55)}.landing-cta-band .btn-primary{background:#fff;color:var(--landing-navy)}.landing-cta-band .btn-primary:hover:not(:disabled){background:#f1f5f9}.landing-footer{padding-block:1.75rem 2rem;background:#0f172a;color:#cbd5e1}.landing-footer-inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1.25rem}.landing-footer-brand{display:flex;align-items:center;gap:.75rem}.landing-footer-name{margin:0;font-size:.95rem;font-weight:800;color:#fff}.landing-footer-tag{margin:.15rem 0 0;font-size:.8rem;color:#94a3b8}.landing-footer-links{display:flex;flex-wrap:wrap;gap:.35rem 1.1rem}.landing-footer-links a{font-size:.88rem;font-weight:600;color:#e2e8f0}.landing-footer-links a:hover{color:#fff;text-decoration:underline}.landing .container-app{width:min(1120px,calc(100% - 2rem))}@media (min-width:1200px){.landing .container-app{width:min(1180px,calc(100% - 2.5rem))}}.auth-page{position:relative;isolation:isolate;min-height:calc(100dvh - 5rem);padding-block:2rem 3rem}.auth-page-bg{pointer-events:none;position:absolute;inset:0;z-index:0;background:radial-gradient(900px 420px at 15% 0,rgba(15,118,110,.1),transparent 55%),radial-gradient(800px 380px at 90% 10%,rgba(30,58,138,.12),transparent 50%),linear-gradient(180deg,#f8fafc,#eff6ff 45%,#f8fafc)}html[dir=rtl] .auth-page-bg{background:radial-gradient(900px 420px at 85% 0,rgba(15,118,110,.1),transparent 55%),radial-gradient(800px 380px at 10% 10%,rgba(30,58,138,.12),transparent 50%),linear-gradient(180deg,#f8fafc,#eff6ff 45%,#f8fafc)}.auth-page-inner{position:relative;z-index:1;display:flex;justify-content:center}.auth-panel{width:100%;max-width:26rem;padding:1.75rem 1.5rem 1.85rem;border-radius:1.25rem;background:rgba(255,255,255,.95);border:1px solid rgba(226,232,240,.95);box-shadow:0 1px 2px rgba(15,23,42,.04),0 20px 50px -24px rgba(30,58,138,.28);backdrop-filter:blur(8px)}@media (min-width:480px){.auth-panel{padding:2rem 1.85rem 2.1rem}}.auth-panel-wide{max-width:30rem}.auth-panel-brand{display:flex;align-items:center;gap:.75rem;margin-bottom:1.35rem}.auth-panel-brand-name{margin:0;font-size:1.05rem;font-weight:800;letter-spacing:-.02em;background:linear-gradient(120deg,#1e3a8a,#0f766e);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}html[dir=rtl] .auth-panel-brand-name{letter-spacing:0}.auth-panel-brand-tag{margin:.1rem 0 0;font-size:.8rem;color:#64748b;font-weight:600}.auth-panel-title{margin:0 0 .4rem;font-size:1.5rem;font-weight:800;letter-spacing:-.02em;color:#0f172a;line-height:1.25}html[dir=rtl] .auth-panel-title{letter-spacing:0;line-height:1.4}.auth-panel-sub{margin:0 0 1.35rem;font-size:.92rem;line-height:1.65;color:#64748b}.auth-form{display:flex;flex-direction:column;gap:1rem}.auth-form-row{display:grid;gap:1rem}@media (min-width:480px){.auth-form-row{grid-template-columns:1fr 1fr}}.auth-error{margin:0;font-size:.9rem;font-weight:600;color:var(--danger);padding:.65rem .75rem;border-radius:.65rem;background:#fef2f2;border:1px solid #fecaca}.auth-switch{margin:1.35rem 0 0;font-size:.9rem;color:#64748b;text-align:center}.auth-switch-link{font-weight:700;color:var(--primary)}.auth-switch-link:hover{text-decoration:underline}.auth-back{display:flex;justify-content:center;margin-top:.85rem;font-size:.85rem;font-weight:600;color:#94a3b8;min-height:2.5rem;align-items:center}.auth-back:hover{color:var(--primary)}.auth-panel .input:focus{outline:2px solid #93c5fd;outline-offset:1px;border-color:#60a5fa;box-shadow:0 0 0 3px rgba(30,58,138,.08)}.auth-mode-tabs{display:grid;grid-template-columns:1fr 1fr;gap:.35rem;margin-bottom:1.15rem;padding:.3rem;border-radius:.85rem;background:#f1f5f9;border:1px solid #e2e8f0}.auth-mode-tab{border:none;background:transparent;border-radius:.65rem;min-height:2.4rem;font-weight:700;font-size:.88rem;color:#64748b;cursor:pointer;font-family:inherit}.auth-mode-tab.is-active{background:#fff;color:#1e3a8a;box-shadow:0 1px 2px rgba(15,23,42,.06)}.auth-label-row{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem;margin-bottom:.35rem}.auth-label-row .label{margin-bottom:0}.auth-inline-link{font-size:.8rem;font-weight:700;color:var(--primary);white-space:nowrap}.auth-inline-link:hover{text-decoration:underline}.auth-info{margin:0;font-size:.9rem;font-weight:600;color:#0f766e;padding:.65rem .75rem;border-radius:.65rem;background:#ecfdf5;border:1px solid #a7f3d0}.auth-note{padding:.85rem .95rem;border-radius:.85rem;background:#eff6ff;border:1px solid #bfdbfe;font-size:.88rem;line-height:1.6;color:#1e3a8a;text-align:center}.auth-note p{margin:0}.contact-page .contact-panel{max-width:34rem}.contact-form{margin-top:.25rem}.contact-textarea{min-height:8.5rem;resize:vertical;line-height:1.55;padding-top:.75rem;padding-bottom:.75rem}.contact-success{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.65rem;padding:.5rem 0 .25rem}.contact-success-icon{display:inline-flex;width:3rem;height:3rem;align-items:center;justify-content:center;border-radius:999px;background:#ecfdf5;color:#047857;font-size:1.35rem;font-weight:800;border:1px solid #a7f3d0}.contact-success-title{margin:.35rem 0 0;font-size:1.35rem;font-weight:800;color:#0f172a}.contact-success-body{margin:0 0 .75rem;max-width:28rem;font-size:.95rem;line-height:1.65;color:#64748b}.site-header{background:rgb(255 255 255/.92);border-bottom:1px solid var(--border);box-shadow:0 1px 0 rgb(15 23 42/.02),0 4px 16px rgb(15 23 42/.03);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.app-nav{display:flex;flex-wrap:wrap;gap:.45rem;padding:.4rem;background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.app-nav-link{display:inline-flex;align-items:center;justify-content:center;min-height:42px;padding:.5rem 1rem;border-radius:var(--radius-sm);font-size:.9rem;font-weight:600;color:var(--muted-strong);text-decoration:none;border:1px solid transparent;transition:background var(--duration) var(--ease),color var(--duration) var(--ease),border-color var(--duration) var(--ease),box-shadow var(--duration) var(--ease)}.app-nav-link:hover{background:var(--primary-soft);color:var(--primary)}.app-nav-link.is-active{background:var(--primary);color:#fff;box-shadow:0 1px 4px rgb(30 58 95/.22)}.admin-nav{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:1.35rem;padding:.4rem .4rem .55rem;background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.admin-nav-link{display:inline-flex;align-items:center;min-height:40px;padding:.45rem .9rem;border-radius:var(--radius-sm);font-size:.875rem;font-weight:600;color:var(--muted-strong);text-decoration:none;border:1px solid transparent;transition:background var(--duration) var(--ease),color var(--duration) var(--ease),box-shadow var(--duration) var(--ease)}.admin-nav-link:hover{background:var(--primary-soft);color:var(--primary)}.admin-nav-link.is-active{background:var(--primary);color:#fff;box-shadow:0 1px 3px rgb(30 58 95/.2)}.btn-ghost{background:transparent;color:var(--muted-strong);border-color:transparent}.btn-ghost:hover:not(:disabled){background:var(--background-elevated);color:var(--primary)}.btn-danger,.btn.btn-secondary.text-red-700,button.btn.text-red-700{color:var(--danger)}.btn.btn-secondary.text-red-700:hover:not(:disabled),button.btn.text-red-700:hover:not(:disabled){background:var(--danger-soft);border-color:var(--danger-border);color:var(--danger-hover)}.role-badge,.rounded-full.bg-amber-50,.rounded-full.bg-emerald-50,.rounded-full.bg-primary-soft,.rounded-full.bg-sky-50,.rounded-full.bg-slate-100{border:1px solid transparent}.role-badge{background:var(--primary-soft);color:var(--primary);border-color:color-mix(in srgb,var(--primary) 14%,transparent);font-weight:700;letter-spacing:0}.link-card{border-radius:var(--radius);box-shadow:var(--shadow-sm);transition:background var(--duration) var(--ease),border-color var(--duration) var(--ease),box-shadow var(--duration) var(--ease),transform var(--duration) var(--ease)}.link-card:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.card.class-card,.class-card.card,a.card.class-card{box-shadow:var(--shadow-sm);transition:box-shadow var(--duration) var(--ease),border-color var(--duration) var(--ease),transform var(--duration) var(--ease)}.class-card:hover,a.card:hover{border-color:color-mix(in srgb,var(--primary) 18%,var(--border))}.header-user{border-color:var(--border);box-shadow:var(--shadow-sm);transition:background var(--duration) var(--ease),border-color var(--duration) var(--ease),box-shadow var(--duration) var(--ease)}.header-user:hover{background:var(--primary-soft);border-color:color-mix(in srgb,var(--primary) 22%,var(--border));box-shadow:var(--shadow-sm)}.header-user-dropdown{border-radius:var(--radius);border:1px solid var(--border);box-shadow:var(--shadow-lg);overflow:hidden}.card.p-6,.card.p-8,.card.sm\:p-10,.card.sm\:p-8{box-shadow:var(--shadow-md)}.admin-filters,.filter-bar,.filters-row{display:flex;flex-wrap:wrap;gap:.75rem;align-items:flex-end}select.dual-date-select,select.input{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);background-position:calc(100% - 1.1rem) calc(50% - .15rem),calc(100% - .75rem) calc(50% - .15rem);background-size:.35rem .35rem,.35rem .35rem;background-repeat:no-repeat;padding-inline-end:2rem}html[dir=rtl] select.dual-date-select,html[dir=rtl] select.input{background-position:.85rem calc(50% - .15rem),1.2rem calc(50% - .15rem);padding-inline-end:.9rem;padding-inline-start:2rem}.att-row,.attendance-student-row{border-radius:var(--radius);transition:background var(--duration) var(--ease),border-color var(--duration) var(--ease)}.landing-cta .btn-primary,.landing-hero .btn-primary{box-shadow:0 4px 14px rgb(30 58 95/.25)}@supports (padding:max(0px)){body{padding-bottom:env(safe-area-inset-bottom)}}@media (max-width:639.98px){.container-app{width:min(100%,calc(100% - 1.25rem))}.admin-nav,.app-nav,.profile-nav{gap:.35rem;padding:.35rem}.admin-nav-link,.app-nav-link{min-height:44px;padding:.5rem .85rem;font-size:.875rem}.att-btn{min-height:52px;flex:1 1 auto;font-size:.85rem}.stat-card{min-height:5.25rem;padding:.95rem 1rem}.stat-card .value{font-size:1.45rem}.page-title{font-size:1.4rem}.data-table tbody td,.data-table thead th{padding:.8rem .75rem}.card{border-radius:.8rem}}@media (prefers-reduced-motion:reduce){.admin-nav-link,.app-nav-link,.att-btn,.btn,.card,.link-card,.stat-card-link{transition:none!important}.att-btn:active:not(:disabled),.btn:active:not(:disabled),.link-card:hover,.stat-card-link:hover{transform:none!important}}