:root{--bg-body: #0b0f19;--bg-card: rgba(17, 24, 39, .75);--bg-card-hover: rgba(31, 41, 55, .85);--border-color: rgba(255, 255, 255, .08);--text-main: #f9fafb;--text-muted: #94a3b8;--primary: #3b82f6;--primary-hover: #2563eb;--primary-glow: rgba(59, 130, 246, .3);--success: #10b981;--warning: #f59e0b;--danger: #ef4444;--purple: #8b5cf6;--input-bg: rgba(0, 0, 0, .35);--table-thead: rgba(0, 0, 0, .4);--table-row-hover: rgba(255, 255, 255, .035);--modal-bg: #131b2e;--chip-bg: rgba(30, 41, 59, .85);--toolbar-bg: rgba(17, 24, 39, .75);--bg-radial-1: rgba(59, 130, 246, .12);--bg-radial-2: rgba(16, 185, 129, .08)}body.light-theme{--bg-body: #f8fafc;--bg-card: #ffffff;--bg-card-hover: #f1f5f9;--border-color: #cbd5e1;--text-main: #0f172a;--text-muted: #64748b;--primary: #2563eb;--primary-hover: #1d4ed8;--primary-glow: rgba(37, 99, 235, .2);--success: #059669;--warning: #d97706;--danger: #dc2626;--purple: #7c3aed;--input-bg: #ffffff;--table-thead: #f1f5f9;--table-row-hover: #f8fafc;--modal-bg: #ffffff;--chip-bg: #f1f5f9;--toolbar-bg: #ffffff;--bg-radial-1: rgba(59, 130, 246, .05);--bg-radial-2: rgba(16, 185, 129, .04)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:Cairo,Inter,-apple-system,BlinkMacSystemFont,sans-serif;background-color:var(--bg-body);background-image:radial-gradient(at 0% 0%,var(--bg-radial-1) 0px,transparent 50%),radial-gradient(at 100% 100%,var(--bg-radial-2) 0px,transparent 50%);background-attachment:fixed;color:var(--text-main);min-height:100vh;padding:24px 20px 40px;transition:background-color .25s ease,color .25s ease}.container{max-width:1280px;margin:0 auto}header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px;padding-bottom:16px;border-bottom:1px solid var(--border-color);flex-wrap:wrap;gap:14px}.logo-box{display:flex;align-items:center;gap:14px}.logo-icon{width:52px;height:52px;border-radius:16px;background:linear-gradient(135deg,#2563eb,#10b981);display:flex;align-items:center;justify-content:center;font-size:26px;box-shadow:0 4px 20px var(--primary-glow)}.logo-text h1{font-size:22px;font-weight:800;letter-spacing:-.5px;display:flex;align-items:center;gap:10px}.author-badge{background:linear-gradient(135deg,#3b82f6,#8b5cf6);color:#fff;font-size:11px;padding:2px 10px;border-radius:12px;font-weight:700;box-shadow:0 2px 8px #8b5cf64d}.logo-text p{font-size:13px;color:var(--text-muted)}.header-actions{display:flex;align-items:center;gap:12px}.btn-theme-toggle{display:inline-flex;align-items:center;gap:8px;background:var(--bg-card);border:1px solid var(--border-color);color:var(--text-main);padding:7px 15px;border-radius:20px;font-size:13px;font-weight:700;cursor:pointer;transition:all .2s;font-family:inherit}.btn-theme-toggle:hover{border-color:var(--primary);box-shadow:0 2px 10px var(--primary-glow);transform:translateY(-1px)}.dev-tag{background:#8b5cf61f;border:1px solid rgba(139,92,246,.3);color:#c4b5fd;padding:6px 14px;border-radius:20px;font-size:12.5px;font-weight:700;display:flex;align-items:center;gap:6px}.dropzone-card{background:var(--bg-card);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:2px dashed rgba(59,130,246,.35);border-radius:18px;padding:32px 20px;text-align:center;cursor:pointer;transition:all .25s cubic-bezier(.4,0,.2,1);margin-bottom:24px;position:relative}.dropzone-card:hover,.dropzone-card.dragover{border-color:var(--primary);background:var(--bg-card-hover);box-shadow:0 0 30px #3b82f633;transform:translateY(-2px)}.dropzone-icon{font-size:44px;margin-bottom:12px;display:inline-block;filter:drop-shadow(0 4px 10px rgba(59,130,246,.4))}.dropzone-title{font-size:17px;font-weight:700;margin-bottom:6px}.dropzone-subtitle{font-size:13px;color:var(--text-muted);margin-bottom:16px}.btn-browse{display:inline-flex;align-items:center;gap:8px;background:linear-gradient(135deg,#2563eb,#1d4ed8);color:#fff;padding:10px 22px;border-radius:10px;font-size:14px;font-weight:700;border:none;cursor:pointer;box-shadow:0 4px 15px #2563eb66;transition:all .2s}.btn-browse:hover{transform:translateY(-1px);box-shadow:0 6px 20px #2563eb99}#file-input{display:none}.file-chips-container{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:24px}.file-chip{background:var(--chip-bg);border:1px solid var(--border-color);padding:8px 14px;border-radius:12px;display:flex;align-items:center;gap:10px;font-size:13px;transition:all .2s}.file-chip .chip-name{font-weight:600;color:var(--text-main);direction:ltr}.file-chip .chip-tag{font-size:11px;background:#3b82f633;color:#93c5fd;padding:2px 8px;border-radius:6px}.file-chip .btn-remove{cursor:pointer;color:#ef4444;font-weight:700;font-size:14px;padding:0 4px}.action-bar{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px;gap:12px;flex-wrap:wrap}.exclude-toggle{display:inline-flex;align-items:center;gap:8px;background:#ef44441a;border:1px solid rgba(239,68,68,.3);padding:9px 14px;border-radius:10px;cursor:pointer;font-size:13px;font-weight:700;color:#f87171;-webkit-user-select:none;user-select:none;transition:all .2s}.exclude-toggle:hover{background:#ef44442e;border-color:#ef4444}.exclude-toggle input[type=checkbox]{accent-color:#ef4444;width:16px;height:16px;cursor:pointer}body.light-theme .exclude-toggle{background:#fee2e2;border-color:#fca5a5;color:#b91c1c}.btn-generate{display:inline-flex;align-items:center;gap:8px;background:linear-gradient(135deg,#059669,#10b981);color:#fff;padding:12px 28px;border-radius:12px;font-size:15px;font-weight:800;border:none;cursor:pointer;box-shadow:0 4px 18px #10b98159;transition:all .2s}.btn-generate:hover{transform:translateY(-2px);box-shadow:0 6px 24px #10b98180}.btn-generate:disabled{opacity:.5;cursor:not-allowed;transform:none}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;margin-bottom:24px}.kpi-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:16px;padding:20px 22px;position:relative;overflow:hidden;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transition:transform .2s}.kpi-card:hover{transform:translateY(-2px)}.kpi-card:before{content:"";position:absolute;top:0;left:0;width:4px;height:100%}.kpi-card.blue:before{background:var(--primary)}.kpi-card.red:before{background:var(--danger)}.kpi-card.amber:before{background:var(--warning)}.kpi-title{font-size:13px;color:var(--text-muted);margin-bottom:6px}.kpi-value{font-size:28px;font-weight:800;font-family:Inter,sans-serif}.kpi-card.blue .kpi-value{color:#60a5fa}.kpi-card.red .kpi-value{color:#f87171}.kpi-card.amber .kpi-value{color:#fbbf24}.table-toolbar{background:var(--toolbar-bg);border:1px solid var(--border-color);border-radius:16px;padding:14px 18px;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:16px}.filter-group{display:flex;align-items:center;gap:12px;flex-wrap:wrap;flex:1}.search-input{background:var(--input-bg);border:1px solid var(--border-color);border-radius:10px;padding:9px 14px;color:var(--text-main);font-size:13px;font-family:inherit;min-width:240px;outline:none;transition:border-color .2s}.search-input:focus{border-color:var(--primary)}.select-filter{background:var(--input-bg);border:1px solid var(--border-color);border-radius:10px;padding:9px 14px;color:var(--text-main);font-size:13px;font-family:inherit;outline:none;cursor:pointer}.select-filter option{background:var(--bg-card);color:var(--text-main)}.export-group{display:flex;align-items:center;gap:8px}.btn-tool{display:inline-flex;align-items:center;gap:6px;background:var(--bg-card-hover);border:1px solid var(--border-color);color:var(--text-main);padding:9px 16px;border-radius:10px;font-size:13px;font-weight:600;cursor:pointer;transition:all .2s;font-family:inherit}.btn-tool:hover{border-color:var(--primary);color:var(--primary)}.btn-tool.excel{background:#10b98126;border-color:#10b9814d;color:#34d399}.btn-tool.excel:hover{background:#10b98140;color:#6ee7b7}.table-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:18px;overflow:hidden;box-shadow:0 10px 30px #00000040}.table-responsive{width:100%;overflow-x:auto}table{width:100%;border-collapse:collapse;text-align:right}thead{background:var(--table-thead);border-bottom:1px solid var(--border-color)}th{padding:14px 18px;font-size:13px;font-weight:700;color:var(--text-muted);white-space:nowrap;-webkit-user-select:none;user-select:none;cursor:pointer}th:hover{color:var(--text-main)}th .sort-icon{margin-right:4px;font-size:11px;opacity:.6}tbody tr{border-bottom:1px solid var(--border-color);transition:background .15s}tbody tr:hover{background:var(--table-row-hover)}td{padding:14px 18px;font-size:13.5px;color:var(--text-main);vertical-align:middle}.col-index{width:50px;text-align:center;color:var(--text-muted);font-family:Inter,sans-serif;font-size:12px}.student-name{font-weight:700;color:var(--text-main)}.student-id{font-size:11px;color:var(--text-muted);font-family:Inter,sans-serif;display:block;margin-top:2px}.badge-missing{display:inline-flex;align-items:center;background:#ef44441f;border:1px solid rgba(239,68,68,.3);color:#fca5a5;padding:4px 10px;border-radius:8px;font-weight:700;font-size:12px;font-family:Inter,monospace;direction:ltr}.badge-class{display:inline-block;background:#3b82f61f;border:1px solid rgba(59,130,246,.3);color:#93c5fd;padding:4px 12px;border-radius:20px;font-weight:600;font-size:12px;direction:ltr}.badge-teacher{display:inline-block;background:#a855f726;border:1px solid rgba(168,85,247,.3);color:#d8b4fe;padding:4px 10px;border-radius:8px;font-weight:700;font-size:12.5px}body.light-theme .badge-teacher{background:#f3e8ff;border-color:#d8b4fe;color:#7e22ce}.badge-subject{display:inline-block;background:#0ea5e926;border:1px solid rgba(14,165,233,.3);color:#38bdf8;padding:3px 8px;border-radius:6px;font-weight:600;font-size:11.5px}body.light-theme .badge-subject{background:#e0f2fe;border-color:#bae6fd;color:#0369a1}.count-pill{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:#f59e0b26;border:1px solid rgba(245,158,11,.35);color:#fde68a;font-weight:800;font-size:13px;font-family:Inter,sans-serif}.empty-state{padding:60px 20px;text-align:center;color:var(--text-muted)}.empty-icon{font-size:48px;margin-bottom:12px;opacity:.6}.toast{position:fixed;bottom:30px;left:50%;transform:translate(-50%) translateY(100px);background:#10b981;color:#fff;padding:12px 24px;border-radius:12px;font-size:14px;font-weight:700;box-shadow:0 10px 25px #10b98166;opacity:0;transition:all .3s cubic-bezier(.4,0,.2,1);z-index:1000;pointer-events:none}.toast.show{transform:translate(-50%) translateY(0);opacity:1}.modal-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background:#000000bf;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:9999;opacity:0;pointer-events:none;transition:opacity .25s ease-out;padding:20px}.modal-overlay.active{opacity:1;pointer-events:auto}.modal-box{background:var(--modal-bg);border:2px solid rgba(245,158,11,.4);box-shadow:0 20px 50px #0009,0 0 35px #f59e0b33;border-radius:22px;max-width:520px;width:100%;padding:28px 24px;text-align:center;transform:scale(.92) translateY(20px);transition:transform .25s cubic-bezier(.34,1.56,.64,1)}.modal-overlay.active .modal-box{transform:scale(1) translateY(0)}.modal-header-icon{font-size:48px;margin-bottom:12px;display:inline-block;animation:bounce 1s infinite alternate}@keyframes bounce{0%{transform:translateY(0)}to{transform:translateY(-8px)}}.modal-title{font-size:20px;font-weight:800;color:#fbbf24;margin-bottom:8px}.modal-dev-badge{display:inline-block;background:#8b5cf633;color:#c4b5fd;border:1px solid rgba(139,92,246,.4);padding:3px 12px;border-radius:12px;font-size:12px;font-weight:700;margin-bottom:16px}.modal-phrase{font-size:16px;line-height:1.6;color:var(--text-main);background:var(--bg-card-hover);border:1px solid var(--border-color);border-radius:14px;padding:18px 16px;margin-bottom:22px;font-weight:600}.modal-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}.btn-modal-pay{background:linear-gradient(135deg,#10b981,#059669);color:#fff;font-weight:800;font-size:14.5px;padding:12px 24px;border-radius:12px;border:none;cursor:pointer;box-shadow:0 4px 15px #10b98166;transition:all .2s;font-family:inherit}.btn-modal-pay:hover{transform:translateY(-1px);box-shadow:0 6px 20px #10b98199}.btn-modal-ok{background:var(--bg-card-hover);border:1px solid var(--border-color);color:var(--text-main);font-weight:700;font-size:14px;padding:12px 20px;border-radius:12px;cursor:pointer;transition:all .2s;font-family:inherit}.btn-modal-ok:hover{border-color:var(--primary);color:var(--primary)}footer{margin-top:40px;text-align:center;font-size:13px;color:var(--text-muted);border-top:1px solid var(--border-color);padding-top:20px}footer strong{color:#a78bfa}.processing-summary{margin:20px 0;padding:12px 20px;border:1px solid var(--border-color, #334155);border-radius:12px;overflow-wrap:anywhere;font-size:13px}
