@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Outfit:wght@500;600;700;800&display=swap";:root{--bg-dark:#0f172a;--bg-card:#1e293b;--bg-card-hover:#334155;--bg-glass:#1e293bbf;--bg-card-subtle:#0f172a80;--bg-banner:linear-gradient(135deg, #1e293be6 0%, #0f172ae6 100%);--primary:#3b82f6;--primary-hover:#2563eb;--primary-light:#3b82f626;--secondary:#8b5cf6;--secondary-hover:#7c3aed;--accent:#10b981;--accent-hover:#059669;--warning:#f59e0b;--danger:#ef4444;--text-main:#f8fafc;--text-muted:#94a3b8;--text-dim:#64748b;--border-color:#ffffff1a;--border-light:#ffffff0d;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:24px;--shadow-glow:0 0 25px #3b82f633;--shadow-card:0 10px 30px -10px #00000080;--font-body:"Inter", system-ui, -apple-system, sans-serif;--font-heading:"Outfit", "Inter", system-ui, sans-serif}[data-theme=light]{--bg-dark:#f8fafc;--bg-card:#fff;--bg-card-hover:#f1f5f9;--bg-glass:#ffffffe0;--bg-card-subtle:#f1f5f9cc;--bg-banner:linear-gradient(135deg, #f1f5f9f2 0%, #e2e8f0f2 100%);--text-main:#0f172a;--text-muted:#475569;--text-dim:#64748b;--border-color:#0000001f;--border-light:#0000000f;--shadow-glow:0 0 25px #3b82f626;--shadow-card:0 10px 25px -5px #00000014}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-dark);color:var(--text-main);font-family:var(--font-body);-webkit-font-smoothing:antialiased;background-image:radial-gradient(circle at 15% 15%,#3b82f614 0%,#0000 40%),radial-gradient(circle at 85% 85%,#8b5cf614 0%,#0000 40%);background-attachment:fixed;min-height:100vh;line-height:1.5;transition:background-color .3s,color .3s}[data-theme=light] body{background-image:radial-gradient(circle at 15% 15%,#3b82f60d 0%,#0000 40%),radial-gradient(circle at 85% 85%,#8b5cf60d 0%,#0000 40%)}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);color:var(--text-main);letter-spacing:-.02em;font-weight:700}a{color:var(--primary);text-decoration:none;transition:color .2s}a:hover{color:var(--primary-hover)}button,input,select,textarea{font-family:inherit;font-size:inherit}.glass-card{background:var(--bg-glass);-webkit-backdrop-filter:blur(16px);border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-card);transition:background .3s,border-color .3s,box-shadow .3s}.btn{border-radius:var(--radius-sm);cursor:pointer;border:none;outline:none;justify-content:center;align-items:center;gap:8px;padding:10px 18px;font-size:.9rem;font-weight:600;transition:all .2s cubic-bezier(.4,0,.2,1);display:inline-flex}.btn-primary{background:linear-gradient(135deg, var(--primary) 0%, #2563eb 100%);color:#fff;box-shadow:0 4px 14px #2563eb59}.btn-primary:hover{background:linear-gradient(135deg,#4f46e5 0%,#2563eb 100%);transform:translateY(-1px);box-shadow:0 6px 20px #2563eb80}.btn-secondary{color:var(--text-main);border:1px solid var(--border-color);background:#ffffff12}.btn-secondary:hover{background:#ffffff1f;border-color:#fff3}[data-theme=light] .btn-secondary{color:#1e293b;background:#f1f5f9;border-color:#cbd5e1}[data-theme=light] .btn-secondary:hover{background:#e2e8f0;border-color:#94a3b8}.btn-accent{background:linear-gradient(135deg, var(--accent) 0%, #059669 100%);color:#fff;box-shadow:0 4px 14px #10b9814d}.btn-accent:hover{transform:translateY(-1px);box-shadow:0 6px 20px #10b98173}.btn-danger{color:#fca5a5;background:#ef444426;border:1px solid #ef44444d}.btn-danger:hover{color:#fff;background:#ef44444d}[data-theme=light] .btn-danger{color:#dc2626;background:#ef44441a;border-color:#ef444440}[data-theme=light] .btn-danger:hover{color:#fff;background:#dc2626}.btn-sm{border-radius:var(--radius-sm);padding:6px 12px;font-size:.82rem}.badge{text-transform:uppercase;letter-spacing:.04em;border-radius:9999px;align-items:center;gap:5px;padding:4px 10px;font-size:.75rem;font-weight:600;display:inline-flex}.badge-active{color:#34d399;background:#10b98126;border:1px solid #10b9814d}[data-theme=light] .badge-active{color:#047857;background:#10b9811f;border-color:#10b98159}.badge-closed{color:#cbd5e1;background:#94a3b826;border:1px solid #94a3b84d}.badge-warning{color:#fbbf24;background:#f59e0b26;border:1px solid #f59e0b4d}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-dark)}::-webkit-scrollbar-thumb{background:var(--bg-card-hover);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-dim)}.modal-overlay,.modal-backdrop{-webkit-backdrop-filter:blur(8px);z-index:9999;background:#0f172abf;justify-content:center;align-items:center;width:100vw;height:100vh;padding:20px;animation:.2s ease-out fadeIn;display:flex;position:fixed;inset:0}[data-theme=light] .modal-overlay,[data-theme=light] .modal-backdrop{background:#0f172a73}.modal-content{border:1px solid var(--border-color);border-radius:var(--radius-lg);background:#1e293b;width:100%;max-width:650px;max-height:90vh;margin:auto;animation:.25s cubic-bezier(.16,1,.3,1) slideUp;overflow-y:auto;box-shadow:0 25px 50px -12px #000000b3}[data-theme=light] .modal-content{color:#0f172a;background:#fff;box-shadow:0 20px 40px -10px #0003}.modal-header{border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:center;padding:20px 24px;display:flex}.modal-body{padding:24px}.modal-footer{border-top:1px solid var(--border-color);justify-content:flex-end;gap:12px;padding:16px 24px;display:flex}.form-group{flex-direction:column;gap:6px;margin-bottom:18px;display:flex}.form-label{color:var(--text-muted);font-size:.85rem;font-weight:600}.form-control,.input{border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-main);background:#0f172a99;outline:none;width:100%;padding:10px 14px;transition:border-color .2s,background .2s}[data-theme=light] .form-control,[data-theme=light] .input{color:#0f172a;background:#fff;border-color:#cbd5e1}.form-control:focus,.input:focus{border-color:var(--primary);box-shadow:0 0 0 3px #3b82f633}[data-theme=light] select.form-control option,[data-theme=light] select.input option{color:#0f172a;background:#fff}[data-theme=light] header{background:#ffffffe0!important;border-bottom-color:#00000014!important}.grades-category-header{color:#f8fafc;border:1px solid var(--border-color);border-top-left-radius:var(--radius-sm);border-top-right-radius:var(--radius-sm);background:#1e293b;border-bottom:none;justify-content:space-between;align-items:center;padding:12px 18px;display:flex}[data-theme=light] .grades-category-header{border-color:#cbd5e1;color:#fff!important;background:#334155!important}.grades-category-header h4{color:#fff!important}.grades-category-header span{color:#e2e8f0!important}.grades-table{border-collapse:collapse;border:1px solid var(--border-color);width:100%;font-size:.88rem}.grades-table th{color:#f8fafc;border:1px solid var(--border-color);text-align:center;background:#0f172a;padding:10px 12px;font-weight:700}[data-theme=light] .grades-table th{color:#0f172a!important;background:#e2e8f0!important;border-color:#cbd5e1!important}.grades-table th.th-evaluator{color:#60a5fa}[data-theme=light] .grades-table th.th-evaluator{color:#1d4ed8!important}.grades-table th.th-final{color:#34d399}[data-theme=light] .grades-table th.th-final{color:#047857!important}.grades-table td{border:1px solid var(--border-color);color:var(--text-main);padding:8px 12px}[data-theme=light] .grades-table td{color:#0f172a!important;border-color:#cbd5e1!important}.grades-table tr.row-even{background:#0f172a66}[data-theme=light] .grades-table tr.row-even{background:#f8fafc!important}.grades-table tr.row-odd{background:0 0}[data-theme=light] .grades-table tr.row-odd{background:#fff!important}.grades-table .td-id{color:var(--text-muted);text-align:center;font-weight:600}[data-theme=light] .grades-table .td-id{color:#475569!important}.grades-table .td-score{color:#34d399;text-align:center;background:#10b98114;font-weight:700}[data-theme=light] .grades-table .td-score{color:#047857!important;background:#ecfdf5!important}.grades-table tr.subtotal-row{background:#0f172acc;font-weight:700}[data-theme=light] .grades-table tr.subtotal-row{color:#0f172a!important;background:#f1f5f9!important}.grades-table td.subtotal-val{color:#34d399;text-align:center;background:#10b9811f;font-size:1rem;font-weight:800}[data-theme=light] .grades-table td.subtotal-val{color:#047857!important;background:#d1fae5!important}.score-badge-main{color:#34d399}[data-theme=light] .score-badge-main{color:#047857!important}.student-score-box{border-radius:var(--radius-sm);text-align:right;background:#0f172ab3;border:1px solid #3b82f666;padding:10px 20px;box-shadow:0 4px 16px #0003}[data-theme=light] .student-score-box{background:#fff!important;border:1.5px solid #3b82f6!important;box-shadow:0 4px 14px #3b82f626!important}.student-score-box .score-label{color:var(--text-muted);letter-spacing:.03em;font-size:.75rem;font-weight:600;display:block}[data-theme=light] .student-score-box .score-label{color:#334155!important;font-weight:700!important}.student-score-box .score-value{color:#34d399;font-size:1.4rem;font-weight:800}[data-theme=light] .student-score-box .score-value{color:#047857!important}.clamped-2-lines{-webkit-line-clamp:2;text-overflow:ellipsis;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.gantt-container{border-radius:var(--radius-sm);border:1px solid var(--border-color);background:#0f172a99;overflow-x:auto}[data-theme=light] .gantt-container{box-shadow:0 4px 14px #0000000a;background:#f0f7ff!important;border-color:#cbd5e1!important}.gantt-month-bar{border-bottom:2px solid var(--border-color);height:38px;margin-bottom:16px;position:relative}[data-theme=light] .gantt-month-bar{background:linear-gradient(135deg,#e0f2fe 0%,#bae6fd 100%)!important;border-bottom-color:#cbd5e1!important}.gantt-month-cell{text-align:center;letter-spacing:.03em;color:#60a5fa;padding-top:8px;font-size:.84rem;font-weight:700;position:absolute}[data-theme=light] .gantt-month-cell{color:#1e40af!important}.gantt-month-cell-border{border-left:2px solid var(--border-color)}[data-theme=light] .gantt-month-cell-border{border-left-color:#cbd5e1!important}.gantt-grid-line{pointer-events:none;border-left:1px dashed #fff3;position:absolute;top:0;bottom:0}[data-theme=light] .gantt-grid-line{border-left:1.5px dashed #94a3b8!important}.gantt-task-name{color:var(--text-main);font-size:.88rem;font-weight:700}[data-theme=light] .gantt-task-name{color:#0f172a!important}.gantt-task-sub{color:var(--text-muted);font-size:.74rem}[data-theme=light] .gantt-task-sub{color:#475569!important}[data-theme=light] .gantt-task-sub strong{color:#0f172a!important}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media print{body{color:#000!important;background:#fff!important}.no-print{display:none!important}.print-only{display:block!important}}
