:root{--radius: 12px;--radius-sm: 8px;--radius-pill: 999px;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-synthesis:none;-webkit-font-smoothing:antialiased}:root,:root[data-theme=dark]{--bg: #0e1116;--bg-grad: radial-gradient(1200px 600px at 80% -10%, #16241f 0%, transparent 60%), radial-gradient(900px 500px at -10% 0%, #1a2030 0%, transparent 55%);--surface: #161b22;--surface-2: #1f2630;--surface-3: #283040;--border: #2a323d;--border-strong: #3a4452;--text: #e6edf3;--muted: #9aa7b4;--primary: #10b981;--primary-hover: #34d399;--primary-soft: #10b9811f;--on-primary: #04130d;--red: #f0726c;--amber: #e8b23b;--green: #34d399;--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 8px 24px rgba(0, 0, 0, .28);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .35);color-scheme:dark}:root[data-theme=light]{--bg: #f5f7f9;--bg-grad: radial-gradient(1200px 600px at 85% -10%, #d8f3e9 0%, transparent 55%), radial-gradient(900px 500px at -5% 0%, #e3e9f5 0%, transparent 55%);--surface: #ffffff;--surface-2: #f1f4f7;--surface-3: #e6ebf0;--border: #e0e5ea;--border-strong: #cdd5dd;--text: #1a2027;--muted: #616b76;--primary: #0d9488;--primary-hover: #0f766e;--primary-soft: #0d948814;--on-primary: #ffffff;--red: #dc4c47;--amber: #c98a16;--green: #0d9488;--shadow: 0 1px 2px rgba(16, 24, 40, .06), 0 10px 28px rgba(16, 24, 40, .08);--shadow-sm: 0 1px 2px rgba(16, 24, 40, .08);color-scheme:light}*{box-sizing:border-box}body{margin:0;background:var(--bg);background-image:var(--bg-grad);background-attachment:fixed;color:var(--text);font-size:14px;line-height:1.5}button{font:inherit;cursor:pointer}input,select{font:inherit}input[type=checkbox]{accent-color:var(--primary);width:16px;height:16px}h1,h2,h3{letter-spacing:-.01em}.app{display:grid;grid-template-columns:290px 1fr;grid-template-rows:auto 1fr;grid-template-areas:"header header" "sidebar main";min-height:100vh}.app-header{grid-area:header;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 24px;background:color-mix(in srgb,var(--surface) 80%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:10}.brand{display:flex;align-items:center;gap:12px;background:none;border:none;padding:4px;margin:-4px;border-radius:var(--radius-sm);color:inherit;text-align:left}.brand:hover{background:var(--surface-2)}.brand-logo{display:grid;place-items:center;width:38px;height:38px;border-radius:10px;background:linear-gradient(135deg,var(--primary),var(--primary-hover));color:var(--on-primary);box-shadow:var(--shadow-sm)}.brand h1{margin:0;font-size:18px}.brand .subtitle{display:block;color:var(--muted);font-size:12px}.header-actions{display:flex;align-items:center;gap:8px}.icon-btn{display:grid;place-items:center;width:38px;height:38px;border-radius:var(--radius-sm);background:var(--surface-2);border:1px solid var(--border);color:var(--text)}.icon-btn:hover{border-color:var(--primary);color:var(--primary)}.icon-btn.toggled{border-color:var(--primary);color:var(--primary);background:var(--primary-soft)}.sidebar{grid-area:sidebar;background:color-mix(in srgb,var(--surface) 70%,transparent);border-right:1px solid var(--border);padding:16px;display:flex;flex-direction:column;gap:8px}.sidebar h2{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:4px 4px 6px}.student-item{display:flex;align-items:center;gap:12px;text-align:left;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:10px 12px;color:var(--text);transition:border-color .15s,transform .05s,box-shadow .15s}.student-item:hover{border-color:var(--border-strong);box-shadow:var(--shadow-sm)}.student-item:active{transform:translateY(1px)}.student-item.active{border-color:var(--primary);background:var(--primary-soft)}.avatar{flex:none;display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,var(--surface-3),var(--surface-2));border:1px solid var(--border);color:var(--text);font-weight:700;font-size:13px}.student-item.active .avatar{background:linear-gradient(135deg,var(--primary),var(--primary-hover));color:var(--on-primary);border-color:transparent}.student-text{display:flex;flex-direction:column;min-width:0}.student-text .name{font-weight:600}.student-text .meta{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.main{grid-area:main;padding:24px;overflow:auto}.btn{background:var(--primary);color:var(--on-primary);border:none;border-radius:var(--radius-sm);padding:9px 15px;font-weight:600;box-shadow:var(--shadow-sm);transition:background .15s,transform .05s}.btn:hover{background:var(--primary-hover)}.btn:active{transform:translateY(1px)}.btn.secondary{background:var(--surface-2);color:var(--text);border:1px solid var(--border);box-shadow:none}.btn.secondary:hover{border-color:var(--primary);color:var(--primary)}.btn.small{padding:6px 11px;font-size:13px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px;margin-bottom:20px;box-shadow:var(--shadow)}.row{display:flex;gap:16px;flex-wrap:wrap;align-items:flex-end}.field{display:flex;flex-direction:column;gap:5px}.field label{font-size:12px;color:var(--muted)}.field input,.field select{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);padding:8px 10px;min-width:90px;transition:border-color .15s,box-shadow .15s}.field input:focus,.field select:focus,.note-input:focus,.mistake-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.field input:disabled{opacity:.5}.student-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px;flex-wrap:wrap}.student-title h2{overflow-wrap:anywhere}.student-title-left{min-width:0}.student-title-left{display:flex;align-items:center;gap:12px}.student-title h2{margin:0}.tag{display:inline-flex;align-items:center;font-size:12px;color:var(--muted);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-pill);padding:3px 11px;margin-right:6px}.tabs{display:inline-flex;gap:4px;padding:4px;margin-bottom:18px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);position:sticky;top:0;z-index:20}.tab{background:transparent;border:none;border-radius:var(--radius-sm);color:var(--muted);padding:8px 18px;font-weight:600;transition:background .15s,color .15s}.tab:hover{color:var(--text)}.tab.active{background:var(--surface);color:var(--primary);box-shadow:var(--shadow-sm)}.summary{display:flex;gap:14px;margin-bottom:18px;flex-wrap:wrap}.summary .stat{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);padding:12px 18px;min-width:110px}.summary .stat .n{font-size:22px;font-weight:700}.summary .stat .l{font-size:12px;color:var(--muted)}.table-wrap{overflow-x:auto;border-radius:var(--radius)}table.plan{width:100%;border-collapse:collapse;font-size:14px}table.plan th,table.plan td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--border);vertical-align:middle}table.plan thead th{position:sticky;top:0;background:var(--surface);color:var(--muted);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.05em;z-index:1}table.plan tbody tr:hover td{background:color-mix(in srgb,var(--surface-2) 60%,transparent)}.repeat-badge{display:inline-block;margin-left:10px;padding:2px 9px;border-radius:var(--radius-pill);font-size:10px;font-weight:700;text-transform:none;letter-spacing:.02em;color:var(--red);background:color-mix(in srgb,var(--red) 12%,transparent);border:1px solid color-mix(in srgb,var(--red) 45%,var(--border))}.week-header td{background:var(--surface-2)!important;font-weight:700;color:var(--muted);text-transform:uppercase;font-size:11px;letter-spacing:.06em}.week-header.collapsible td{cursor:pointer;-webkit-user-select:none;user-select:none}.week-header.collapsible td:hover{background:var(--surface-3)!important}.week-toggle{display:inline-block;width:14px;transition:transform .14s ease}.week-toggle.open{transform:rotate(90deg)}.week-summary{float:right;font-weight:400;text-transform:none;letter-spacing:0;font-size:12px}.task{font-weight:600}.muted{color:var(--muted)}.rating-cell{display:flex;align-items:center;gap:8px}.mistakes{display:inline-flex;gap:3px}.mistake-input{width:42px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);padding:5px 4px;text-align:center}.mistake-input.major{border-color:color-mix(in srgb,var(--red) 45%,var(--border))}.mistake-input.minor{border-color:color-mix(in srgb,var(--amber) 45%,var(--border))}.mistake-input::placeholder{color:var(--muted);opacity:.7}.rag-group{display:inline-flex;gap:4px}.rag-btn{display:inline-grid;place-items:center;width:26px;height:26px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface-2);font-size:13px;font-weight:700;line-height:1;transition:transform .05s,background .12s,border-color .12s,box-shadow .12s}.rag-btn:active{transform:scale(.92)}.rag-btn.red{color:var(--red);border-color:color-mix(in srgb,var(--red) 40%,var(--border));background:color-mix(in srgb,var(--red) 8%,var(--surface-2))}.rag-btn.amber{color:var(--amber);border-color:color-mix(in srgb,var(--amber) 40%,var(--border));background:color-mix(in srgb,var(--amber) 8%,var(--surface-2))}.rag-btn.green{color:var(--green);border-color:color-mix(in srgb,var(--green) 40%,var(--border));background:color-mix(in srgb,var(--green) 8%,var(--surface-2))}.rag-btn.on{color:#fff}.rag-btn.red.on{background:var(--red);border-color:var(--red);box-shadow:0 0 0 2px color-mix(in srgb,var(--red) 30%,transparent)}.rag-btn.amber.on{background:var(--amber);border-color:var(--amber);box-shadow:0 0 0 2px color-mix(in srgb,var(--amber) 30%,transparent)}.rag-btn.green.on{background:var(--green);border-color:var(--green);box-shadow:0 0 0 2px color-mix(in srgb,var(--green) 30%,transparent)}.rag-btn:not(.on):hover{filter:brightness(1.25)}.note-input{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);padding:6px 9px;width:100%;min-width:150px}.empty{color:var(--muted);text-align:center;padding:80px 20px;font-size:15px}.welcome{max-width:640px;margin:40px auto}.welcome-steps{margin:0 0 22px;padding-left:20px;color:var(--muted);font-size:14px;line-height:1.65}.welcome-steps li{margin-bottom:8px}.welcome-steps b{color:var(--text)}.progress{margin-top:7px;width:100%;height:5px;background:var(--surface-3);border-radius:var(--radius-pill);overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,var(--primary),var(--primary-hover));border-radius:var(--radius-pill);transition:width .3s ease}.ring .ring-label{font-size:13px;font-weight:700;fill:var(--text)}.tagrow{margin-top:6px;display:flex;flex-wrap:wrap;gap:0}.cell-student{display:flex;align-items:center;gap:10px}.cell-student .avatar{width:30px;height:30px;font-size:12px}.cell-progress{display:flex;align-items:center;gap:10px}.cell-progress .progress{margin-top:0;flex:1}tr.clickable{cursor:pointer}.today-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px}.today-item{display:flex;align-items:flex-start;gap:12px;text-align:left;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);padding:12px;color:var(--text);transition:border-color .15s,box-shadow .15s}.today-item:hover{border-color:var(--primary);box-shadow:var(--shadow-sm)}.today-text{display:flex;flex-direction:column;gap:2px;min-width:0}.today-text .name{font-weight:600}.today-text .meta{font-size:12.5px;color:var(--muted)}.today-text .meta b{color:var(--primary);font-weight:600;margin-right:4px}table.plan tbody tr.row-today>td{background:var(--primary-soft)}table.plan tbody tr.row-today>td:first-child{box-shadow:inset 3px 0 0 var(--primary)}.task-cell{display:flex;align-items:center;gap:8px}.expand-btn{display:grid;place-items:center;width:22px;height:22px;flex:none;border-radius:6px;border:1px solid var(--border);background:var(--surface-2);color:var(--muted);transition:transform .15s,color .15s,border-color .15s}.expand-btn:hover{border-color:var(--primary);color:var(--primary)}.expand-btn.open{transform:rotate(180deg);color:var(--primary);border-color:var(--primary)}.ayah-tr>td{background:color-mix(in srgb,var(--surface-2) 55%,transparent);padding:14px 18px}.ayah-panel{display:flex;flex-direction:column;gap:10px;max-width:900px}.ayah-toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.reciter-select{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);padding:6px 9px;font-size:13px}.ayah{display:flex;flex-direction:column;gap:6px;padding:8px 10px;border-radius:var(--radius-sm);border:1px solid transparent}.ayah-main{display:flex;align-items:flex-start;gap:10px;width:100%}.ayah.ann-minor{border-color:color-mix(in srgb,var(--amber) 45%,var(--border));background:color-mix(in srgb,var(--amber) 7%,transparent)}.ayah.ann-major{border-color:color-mix(in srgb,var(--red) 45%,var(--border));background:color-mix(in srgb,var(--red) 7%,transparent)}.ann-note-row{padding-left:36px}.w{border-radius:4px;cursor:pointer}.w:hover{background:color-mix(in srgb,var(--primary) 8%,transparent)}.w-minor{text-decoration:underline;text-decoration-color:var(--amber);text-decoration-thickness:3px;text-underline-offset:8px;background:color-mix(in srgb,var(--amber) 9%,transparent)}.w-major{text-decoration:underline;text-decoration-color:var(--red);text-decoration-thickness:3px;text-underline-offset:8px;background:color-mix(in srgb,var(--red) 9%,transparent)}.w-target{outline:2px dashed var(--primary);outline-offset:3px;border-radius:4px}.w-tagbadge{font-size:10px;font-weight:700;margin:0 2px;letter-spacing:.02em}.w-tagbadge.major{color:var(--red)}.w-tagbadge.minor{color:var(--amber)}.tagbar{margin:4px 0 2px 36px;padding:10px 12px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);display:flex;flex-direction:column;gap:8px}.tagbar-head{display:flex;align-items:center;gap:8px}.tagbar-close{margin-left:auto;width:28px;height:28px}.tagbar-word{font-family:Amiri,Traditional Arabic,serif;font-size:19px;font-weight:700}.tagbar-section{display:flex;flex-direction:column;gap:6px}.tagbar-heading{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em}.tagbar-heading.major{color:var(--red)}.tagbar-heading.minor{color:var(--amber)}.tagbar-group{display:flex;flex-wrap:wrap;gap:6px}.tag-chip{font-size:12px;font-weight:600;padding:5px 11px;border-radius:var(--radius-pill);border:1px solid var(--border);background:var(--surface);color:var(--muted);transition:border-color .12s,color .12s,background .12s}.tag-chip.major:hover,.tag-chip.major.on{border-color:var(--red);color:var(--red)}.tag-chip.major.on{background:color-mix(in srgb,var(--red) 14%,transparent)}.tag-chip.minor:hover,.tag-chip.minor.on{border-color:var(--amber);color:var(--amber)}.tag-chip.minor.on{background:color-mix(in srgb,var(--amber) 14%,transparent)}.tagbar-actions{display:flex;gap:8px;justify-content:flex-end}.range-title{margin:0 0 8px;font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.ayah.playing{border-color:var(--primary);background:var(--primary-soft)}.ayah-ref{flex:none;font-size:12px;min-width:44px;padding-top:8px}.ayah-text{flex:1;font-family:Amiri,Traditional Arabic,serif;font-size:24px;line-height:2;text-align:right}:root,:root[data-theme=dark]{--tj-ghunnah: #3ddc97;--tj-madd2: #f5a524;--tj-madd4: #ff7a70;--tj-madd6: #f04a5e;--tj-qalqalah: #4fc3f7;--tj-silent: #8a95a1}:root[data-theme=light]{--tj-ghunnah: #0f8a4f;--tj-madd2: #b45309;--tj-madd4: #dc2626;--tj-madd6: #8f1d1d;--tj-qalqalah: #0284c7;--tj-silent: #6b7580}.tj-ghunnah{color:var(--tj-ghunnah)}.tj-madd2{color:var(--tj-madd2)}.tj-madd4{color:var(--tj-madd4)}.tj-madd6{color:var(--tj-madd6)}.tj-qalqalah{color:var(--tj-qalqalah)}.tj-silent{color:var(--tj-silent)}.ayah-end{color:var(--primary);font-size:.8em;margin:0 4px}.tj-legend{display:flex;flex-wrap:wrap;gap:8px 16px;padding-top:6px;border-top:1px solid var(--border)}.tj-legend-item{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--muted)}.tj-dot{width:10px;height:10px;border-radius:50%;background:currentColor}.tj-dot.tj-ghunnah{background:var(--tj-ghunnah)}.tj-dot.tj-madd2{background:var(--tj-madd2)}.tj-dot.tj-madd4{background:var(--tj-madd4)}.tj-dot.tj-madd6{background:var(--tj-madd6)}.tj-dot.tj-qalqalah{background:var(--tj-qalqalah)}.tj-dot.tj-silent{background:var(--tj-silent)}.btn.toggled{border-color:var(--primary);color:var(--primary)}.note-cell{display:flex;align-items:center;gap:6px}.recorder{display:inline-flex;align-items:center;gap:4px;flex:none}.rec-btn{display:grid;place-items:center;width:26px;height:26px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface-2);color:var(--muted);transition:border-color .15s,color .15s}.rec-btn:hover{border-color:var(--primary);color:var(--primary)}.rec-btn.recording{background:var(--red);border-color:var(--red);color:#fff;animation:rec-pulse 1.2s ease-in-out infinite}.rec-btn.has-rec{color:var(--primary);border-color:color-mix(in srgb,var(--primary) 50%,var(--border))}.rec-cloud{color:var(--green);display:grid;place-items:center}.rec-label{font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);background:var(--surface-3);border-radius:5px;padding:2px 6px;white-space:nowrap}.rec-label.active{color:var(--on-primary);background:var(--primary)}.seek{width:92px;height:4px;accent-color:var(--primary);cursor:pointer}.rec-time{font-size:10px;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}.rec-error{color:var(--red);font-weight:700}@keyframes rec-pulse{0%,to{box-shadow:0 0 color-mix(in srgb,var(--red) 45%,transparent)}50%{box-shadow:0 0 0 6px transparent}}.miss-btn{display:grid;place-items:center;width:26px;height:26px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface-2);color:var(--muted);transition:border-color .15s,color .15s}.miss-btn:hover{border-color:var(--red);color:var(--red)}.miss-btn.on{background:var(--red);border-color:var(--red);color:#fff}table.plan tbody tr.row-missed>td{background:color-mix(in srgb,var(--red) 5%,transparent)}.missed-label{color:var(--muted);font-style:italic}table.plan tbody tr.rag-green>td:first-child{box-shadow:inset 3px 0 0 var(--green)}table.plan tbody tr.rag-amber>td:first-child{box-shadow:inset 3px 0 0 var(--amber)}table.plan tbody tr.rag-red>td:first-child{box-shadow:inset 3px 0 0 var(--red)}.app.no-sidebar{grid-template-columns:1fr;grid-template-areas:"header" "main"}@media (max-width: 860px){.app{grid-template-columns:1fr;grid-template-areas:"header" "sidebar" "main"}.sidebar{flex-direction:row;flex-wrap:nowrap;overflow-x:auto;border-right:none;border-bottom:1px solid var(--border);padding:12px}.sidebar h2{display:none}.student-item{flex:0 0 auto;min-width:180px}.sidebar .btn{flex:0 0 auto;align-self:center}.main{padding:16px}.brand .subtitle{display:none}}.chart{width:100%;height:auto;display:block}.chart .gridline{stroke:var(--border);stroke-width:1}.chart .axisline{stroke:var(--border-strong);stroke-width:1}.chart .axis-label{fill:var(--muted);font-size:11px;font-family:inherit}.chart .bar{fill:var(--primary)}.chart .bar:hover{fill:var(--primary-hover)}.chart .bar-label{fill:var(--muted);font-size:11px;font-weight:600;font-family:inherit}.rag-chart{display:flex;flex-direction:column;gap:10px;margin-bottom:12px;max-width:620px}.rag-row{display:grid;grid-template-columns:170px 1fr 80px;align-items:center;gap:12px}.rag-row-label{display:flex;align-items:center;gap:8px;font-size:13px}.rag-glyph{font-weight:700;width:14px;text-align:center}.rag-track{display:block;height:12px;background:var(--surface-3);border-radius:var(--radius-pill);overflow:hidden}.rag-fill{display:block;height:100%;border-radius:var(--radius-pill);min-width:2px}.rag-count{font-size:13px;color:var(--muted);text-align:right}.type-badge{display:inline-flex;align-items:center;font-size:11px;font-weight:700;padding:3px 10px;border-radius:var(--radius-pill);vertical-align:middle}.type-badge.mem{color:var(--primary);background:color-mix(in srgb,var(--primary) 12%,transparent);border:1px solid color-mix(in srgb,var(--primary) 45%,var(--border))}.type-badge.rev{color:var(--tj-qalqalah);background:color-mix(in srgb,var(--tj-qalqalah) 12%,transparent);border:1px solid color-mix(in srgb,var(--tj-qalqalah) 45%,var(--border))}.flag-list{display:flex;flex-direction:column;gap:8px}.flag-row{display:grid;grid-template-columns:90px 220px 1fr 100px;align-items:baseline;gap:12px;padding:6px 0;border-bottom:1px solid var(--border)}.flag-row:last-child{border-bottom:none}.flag-badge{font-size:11px;font-weight:700;padding:3px 8px;border-radius:var(--radius-pill);text-align:center}.flag-badge.major{color:var(--red);background:color-mix(in srgb,var(--red) 12%,transparent);border:1px solid color-mix(in srgb,var(--red) 45%,var(--border))}.flag-badge.minor{color:var(--amber);background:color-mix(in srgb,var(--amber) 12%,transparent);border:1px solid color-mix(in srgb,var(--amber) 45%,var(--border))}.flag-date{font-size:12px;text-align:right}@media (max-width: 700px){.flag-row{grid-template-columns:80px 1fr}.flag-date{display:none}}.streak-chip{align-self:flex-start;padding:6px 14px;border-radius:var(--radius-pill);background:color-mix(in srgb,var(--amber) 14%,transparent);border:1px solid color-mix(in srgb,var(--amber) 45%,var(--border));color:var(--amber);font-weight:700;font-size:13px;white-space:nowrap}.mission{border:1px solid var(--border);border-radius:var(--radius);padding:14px;margin-top:12px;background:var(--surface-2)}.mission.complete{border-color:color-mix(in srgb,var(--green) 50%,var(--border));background:color-mix(in srgb,var(--green) 6%,var(--surface-2))}.mission-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:10px}.mission-done{color:var(--green);font-weight:700;font-size:13px;white-space:nowrap}.mission-steps{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.step{display:inline-flex;align-items:center;gap:7px;padding:8px 13px;border-radius:var(--radius-pill);border:1px solid var(--border);background:var(--surface);color:var(--muted);font-weight:600;font-size:13px}button.step:hover{border-color:var(--primary);color:var(--text);cursor:pointer}.step.on{border-color:var(--green);color:var(--green);background:color-mix(in srgb,var(--green) 10%,var(--surface))}.step-n{display:grid;place-items:center;width:18px;height:18px;border-radius:50%;background:var(--surface-3);font-size:11px;color:var(--muted)}.step.on .step-n{background:var(--green);color:#fff}.mission-rec{display:inline-flex;margin-left:4px}.mission-panel{margin-top:12px;padding:12px;border-radius:var(--radius);background:color-mix(in srgb,var(--surface) 70%,transparent)}.late-tag{font-size:10px;font-weight:700;color:var(--amber);text-transform:uppercase;letter-spacing:.04em}.stale-flag{color:var(--red);font-weight:600}.badge-count{margin-left:8px;padding:2px 8px;border-radius:var(--radius-pill);background:color-mix(in srgb,var(--on-primary) 25%,transparent);font-size:11px;font-weight:700}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:grid;place-items:center;padding:20px;background:#0000008c;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.modal-card{width:100%;max-width:420px;margin:0}.auth-wrap{min-height:100vh;display:grid;place-items:center;background:var(--bg);background-image:var(--bg-grad);padding:20px}.auth-card{width:100%;max-width:440px}.linklike{background:none;border:none;padding:0;color:var(--primary);text-decoration:underline;cursor:pointer;font-size:inherit}.sync-dot{width:10px;height:10px;border-radius:50%;background:var(--green);align-self:center}.sync-dot.saving{background:var(--amber);animation:rec-pulse 1.2s ease-in-out infinite}.sync-dot.error{background:var(--red)}.sync-dot.conflict{background:var(--amber);box-shadow:0 0 0 3px color-mix(in srgb,var(--amber) 30%,transparent)}.banner{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:14px 18px;margin-bottom:18px;border-radius:var(--radius);background:var(--surface-2);border:1px solid var(--border)}.banner-warn{background:color-mix(in srgb,var(--amber) 10%,var(--surface));border-color:color-mix(in srgb,var(--amber) 50%,var(--border))}.banner-danger{background:color-mix(in srgb,var(--red) 10%,var(--surface));border-color:color-mix(in srgb,var(--red) 50%,var(--border))}.banner-muted{border-style:dashed;border-color:var(--border-strong);padding:13px 18px}.consent-flag{flex:none;font-size:11px;padding:2px 7px;border-radius:999px;white-space:nowrap;color:var(--amber);background:color-mix(in srgb,var(--amber) 12%,transparent);border:1px solid color-mix(in srgb,var(--amber) 40%,transparent)}.gq-class{margin:20px 4px 10px;font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.gq-card{padding:14px 18px;margin-bottom:12px}.gq-row{border-top:1px solid var(--border);padding:10px 0}.gq-row-main{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.gq-label{flex:1;min-width:160px}.gq-panels{margin-top:10px;padding:12px;background:color-mix(in srgb,var(--surface-2) 55%,transparent);border-radius:var(--radius)}.recorder-group{display:inline-flex;gap:8px}@media print{:root,:root[data-theme=dark]{--bg: #ffffff;--bg-grad: none;--surface: #ffffff;--surface-2: #f4f6f8;--surface-3: #e6ebf0;--border: #d5dbe1;--border-strong: #c1c9d1;--text: #1a2027;--muted: #57616c;--primary: #0d9488;--primary-hover: #0f766e;--primary-soft: #0d948814;--on-primary: #ffffff;--red: #dc4c47;--amber: #c98a16;--green: #0d9488;--shadow: none;--shadow-sm: none}body{background:#fff!important;background-image:none!important}.app-header,.sidebar,.no-print{display:none!important}.app{grid-template-columns:1fr;grid-template-areas:"main";min-height:0}.main{padding:0;overflow:visible}.card{border:1px solid #d5dbe1;box-shadow:none;break-inside:avoid}.certificate{margin:0;border:none;padding:0;break-inside:avoid}.cert-inner{border-color:#0d9488!important}@page{size:A4 portrait;margin:12mm}}:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:4px}.overflow-menu{animation:pop-in .12s ease-out}@keyframes pop-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}.toast{position:fixed;left:50%;bottom:26px;transform:translate(-50%);z-index:90;display:flex;align-items:center;gap:9px;padding:10px 18px;border-radius:999px;background:var(--surface);border:1px solid var(--border-strong);box-shadow:var(--shadow);font-size:14px;color:var(--text);animation:toast-in .18s ease-out}.toast .tick{color:var(--green);font-weight:700}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,10px)}to{opacity:1;transform:translate(-50%)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.today-status{flex:none;width:22px;text-align:center;font-size:15px;font-weight:700}.today-status.done{color:var(--green)}.today-status.pending{color:var(--muted);font-weight:400}.today-status.absent{color:var(--amber)}.today-status.none{color:var(--border-strong)}.diag-log{margin:8px 0 0;padding:10px 12px;max-height:200px;overflow:auto;border-radius:8px;background:var(--surface-2);border:1px solid var(--border);font-size:12px;white-space:pre-wrap;color:var(--muted)}.hint-note{margin:0 0 14px;padding:10px 14px;border-radius:8px;background:var(--surface-2);border-left:3px solid var(--border-strong);font-size:13px;line-height:1.6}.overflow-wrap{position:relative;display:inline-block}.overflow-menu{position:absolute;right:0;top:calc(100% + 6px);z-index:40;min-width:210px;padding:5px;border-radius:10px;background:var(--surface);border:1px solid var(--border-strong);box-shadow:var(--shadow);display:flex;flex-direction:column}.overflow-item{text-align:left;padding:9px 12px;border:none;border-radius:7px;background:none;color:var(--text);font:inherit;font-size:14px;cursor:pointer;white-space:nowrap}.overflow-item:hover{background:var(--surface-2)}.overflow-heading{padding:9px 12px 4px;font-size:11px;letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}.milestone-list{display:flex;flex-direction:column;gap:2px}.milestone-row{display:grid;grid-template-columns:26px 1fr auto auto;align-items:center;gap:10px;padding:8px 10px;border-radius:8px}.milestone-row:hover{background:var(--surface-2)}.milestone-icon{font-size:17px;text-align:center}.milestone-remove{color:var(--muted);font-size:13px}.milestone-remove:hover{color:var(--red)}.register th{text-align:center;white-space:nowrap}.register td:not(:first-child):not(:last-child){text-align:center;padding:4px}.register-date{display:block;font-size:10px;font-weight:400}.today-col{background:var(--primary-soft)}.reg-cell{width:30px;height:30px;border-radius:8px;border:1px solid var(--border);background:var(--surface-2);color:var(--green);font-size:14px;cursor:pointer;line-height:1}.reg-cell:hover:not(:disabled){border-color:var(--border-strong)}.reg-cell.absent{color:var(--red);background:color-mix(in srgb,var(--red) 12%,transparent);border-color:color-mix(in srgb,var(--red) 45%,transparent)}.reg-cell:disabled{color:var(--muted);opacity:.45;cursor:default}.certificate{background:#fff;color:#1a2027;box-shadow:var(--shadow);border:1px solid var(--border);padding:10px;border-radius:var(--radius);max-width:820px;margin:0 auto 20px}.cert-inner{border:3px double #0d9488;border-radius:6px;padding:34px 40px 28px;text-align:center;min-height:900px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px}.cert-bismillah{font-family:Amiri,serif;font-size:26px;color:#0d9488;margin-bottom:10px}.cert-madrasah{font-size:19px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;margin-bottom:22px}.cert-title{font-size:34px;font-weight:700;letter-spacing:.02em}.cert-sub{font-size:15px;color:#57616c;margin-bottom:26px}.cert-awarded{font-size:14px;color:#57616c;max-width:460px;line-height:1.6}.cert-name{font-family:Amiri,serif;font-size:40px;font-weight:700;margin:12px 0 16px;padding:0 24px 8px;border-bottom:1px solid #d5dbe1}.cert-stats{display:flex;gap:44px;margin:26px 0 6px;flex-wrap:wrap;justify-content:center}.cert-stat-n{font-size:30px;font-weight:700;color:#0d9488;line-height:1.1}.cert-stat-l{font-size:12px;color:#57616c;text-transform:uppercase;letter-spacing:.07em}.cert-position{font-size:14px;color:#57616c;margin-top:10px}.cert-milestones{margin-top:24px;padding:12px 26px;border:1px solid #d5dbe1;border-radius:8px;background:#f7fbfa}.cert-milestones-title{font-size:11px;letter-spacing:.09em;text-transform:uppercase;color:#57616c;margin-bottom:6px}.cert-milestone{font-size:15px;font-weight:600;line-height:1.7}.cert-milestone-date{font-weight:400;color:#57616c;font-size:13px}.cert-dua{margin:30px 0 26px;max-width:520px}.cert-dua-ar{font-family:Amiri,serif;font-size:21px;line-height:1.9;color:#0d9488}.cert-dua-en{font-size:12px;color:#57616c;font-style:italic;margin-top:6px}.cert-sign{display:flex;gap:70px;margin-top:auto;padding-top:26px;flex-wrap:wrap;justify-content:center}.cert-sign-line{width:190px;border-top:1px solid #9aa7b4}.cert-sign-label{font-size:12px;color:#57616c;margin-top:6px}@media (pointer: coarse){.rag-btn{width:40px;height:40px;font-size:18px}input[type=checkbox]{width:26px;height:26px}.miss-btn,.expand-btn,.rec-btn{width:38px;height:38px}.reg-cell{width:40px;height:40px;font-size:17px}.mistake-input{width:48px;padding:8px 4px}.tab{padding:10px 18px}}
