:root{--primary-color:#2563eb;--primary-hover:#1d4ed8;--primary-gradient:linear-gradient(135deg, #ff00fb, #00bfff);--success:#22c55e;--danger:#ef4444;--warning:#f59e0b;--bg-body:#f4f6fb;--bg-card:#fff;--bg-sidebar:#0f172a;--bg-hover:#1e293b;--text-dark:#111827;--text-light:#6b7280;--text-white:#fff;--border:#e5e7eb;--radius-sm:8px;--radius-md:12px;--radius-lg:18px;--radius-xl:24px;--shadow-sm:0 2px 8px #00000014;--shadow-md:0 8px 20px #0000001a;--shadow-lg:0 18px 45px #0000001f;--font:"Segoe UI", sans-serif}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:var(--font);background:var(--bg-body);color:var(--text-dark);line-height:1.5;overflow-x:hidden}img{max-width:100%;display:block}button{cursor:pointer;font-family:inherit;transition:all .25s}input,select,textarea{outline:none;font-family:inherit}.login-page{justify-content:center;align-items:center;height:100vh;padding-right:28%;display:flex;position:relative;overflow:hidden}.login-bg{object-fit:cover;z-index:-1;width:100%;height:100%;position:absolute;inset:0}.login-card{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);width:420px;box-shadow:var(--shadow-lg);background:#11111173;border-radius:20px;flex-direction:column;gap:18px;padding:42px;display:flex}.login-header{flex-direction:column;align-items:center;margin-bottom:10px;display:flex}.login-logo{filter:drop-shadow(0 0 10px #00bfff)drop-shadow(0 0 20px #ff00fb);width:110px;margin-bottom:12px}.login-input{background:#fff;border:1px solid #333;border-radius:10px;width:100%;height:48px;padding:0 16px;font-size:15px;color:#1b1b1b!important}.login-input::placeholder{color:#1b1b1b}.login-input:focus{border-color:#00bfff;box-shadow:0 0 0 3px #2563eb33}.show-pass{color:#00bfff;background:0 0;border:none;align-self:flex-end;font-size:13px}.login-btn{background:var(--primary-gradient);color:#fff;border:none;border-radius:10px;height:48px;font-size:15px;font-weight:600}.login-btn:hover{transform:translateY(-2px);box-shadow:0 0 15px #00c6ff,0 0 30px #0072ff}.navbar{background:var(--primary-gradient);z-index:999;justify-content:space-between;align-items:center;height:64px;padding:0 32px;display:flex;position:sticky;top:0}.navbar-logo a{align-items:center;gap:14px;text-decoration:none;display:flex}.logo-img{height:48px}.navbar-link{color:#fff;border-radius:10px;padding:10px 16px;font-size:15px;font-weight:600;text-decoration:none}.logout-icon{color:#fff;font-size:20px}.logout-icon:hover{color:#ff4d4d}.sidebar{color:#fff;background:url(/image/sidebar.jpg) 50%/cover;width:260px;min-width:260px;height:calc(100vh - 64px);padding:24px;position:sticky;top:64px;overflow-y:auto}.sidebar:before{content:"";z-index:1;background:#00000052;position:absolute;inset:0}.sidebar>*{z-index:2;position:relative}.sidebar-link{color:#fff;border-radius:12px;align-items:center;gap:12px;height:48px;padding:0 14px;font-size:15px;font-weight:500;text-decoration:none;display:flex}.sidebar-link:hover{background:var(--primary-gradient)}.sidebar-submenu{margin-top:8px;padding-left:22px;list-style:none}.sidebar-submenu a{color:#d1d5db;border-radius:10px;padding:10px 14px;font-size:14px;text-decoration:none;display:block}.icon{font-size:18px}.arrow{margin-left:auto;font-size:12px}.layout{flex-direction:column;width:100%;min-height:100vh;display:flex}.layout-body{flex:1;align-items:stretch;min-height:calc(100vh - 64px);display:flex}.main-content{background:#f4f6fb;flex:1;padding:30px;overflow:hidden auto}.dashboard-title,.page-title{color:#111827;margin-bottom:28px;font-size:34px;font-weight:700}.dashboard-title em,.page-title em{color:#ff00fb;font-style:normal}.cards{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:24px;margin-bottom:35px;display:grid}.card{background:#fff;border-radius:18px;flex-direction:column;transition:all .3s;display:flex;overflow:hidden;box-shadow:0 10px 28px #00000014}.card:hover{transform:translateY(-6px);box-shadow:0 18px 35px #0000001f}.card h3{color:#111827;margin-bottom:14px;font-size:20px;font-weight:700}.card p{color:#2563eb;font-size:30px;font-weight:700}.simulator-cards{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:24px;display:grid}.simulator-cards .card{color:#fff;background:linear-gradient(135deg,#d946ef,#22a6f2)}.simulator-cards .card h3,.simulator-cards .card p{color:#fff}.stat-item{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);text-align:center;background:#ffffff26;border-radius:14px;padding:18px}.stat-item strong{color:#fff;margin-bottom:6px;font-size:26px;font-weight:700;display:block}.section-title{color:#111827;margin-bottom:20px;font-size:26px;font-weight:700}.chart-section{background:#fff;border-radius:18px;width:100%;margin-top:35px;padding:25px;box-shadow:0 8px 24px #00000014}.top-actions{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:18px;margin-bottom:28px;display:flex}.training-actions,.report-actions{flex-wrap:wrap;gap:14px;display:flex}.action-btn,.save-btn,.open-btn,.details-btn,.login-btn,.all-bopt-btn{color:#fff;cursor:pointer;background:linear-gradient(135deg,#ff00fb,#00bfff);border:none;border-radius:12px;height:46px;padding:0 24px;font-size:15px;font-weight:600;transition:all .3s}.action-btn:hover,.save-btn:hover,.open-btn:hover,.details-btn:hover,.all-bopt-btn:hover{transform:translateY(-2px);box-shadow:0 8px 20px #00bfff59}.excel-upload{color:#fff;background:linear-gradient(135deg,#00c853,#00b0ff);border:none;border-radius:12px;height:46px;padding:0 22px;font-size:15px;font-weight:600}.sample-excel-btn{color:#fff;background:linear-gradient(135deg,#f59e0b,#ef4444);border:none;border-radius:12px;height:46px;padding:0 22px;font-size:15px;font-weight:600}.student-form{background:#fff;border-radius:18px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:18px;margin-bottom:30px;padding:26px;display:grid;box-shadow:0 10px 30px #00000014}.student-form input{border:1px solid #d1d5db;border-radius:12px;width:100%;height:48px;padding:0 16px;font-size:15px;transition:all .25s}.student-form input:focus{border-color:#00bfff;box-shadow:0 0 0 3px #00bfff26}.batch-form{background:#fff;border-radius:18px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:18px;margin-bottom:30px;padding:26px;display:grid}.batch-form input{border:1px solid #d1d5db;border-radius:12px;height:48px;padding:0 16px;font-size:15px}.batch-form input:focus{border-color:#00bfff;box-shadow:0 0 0 3px #00bfff26}.actions{flex-wrap:wrap;gap:14px;margin-top:20px;display:flex}.table-wrapper,.score-table-wrapper{background:#fff;border-radius:18px;width:100%;margin-top:24px;padding:24px;overflow-x:auto;box-shadow:0 10px 30px #0f172a14}.training-table,.score-table{border-collapse:collapse;table-layout:fixed;width:100%;min-width:1000px}.training-table th,.score-table th{text-align:left;color:#111827;white-space:nowrap;border-bottom:2px solid #e5e7eb;padding:18px 20px;font-size:15px;font-weight:700}.training-table td,.score-table td{color:#374151;vertical-align:middle;white-space:nowrap;text-overflow:ellipsis;border-bottom:1px solid #e5e7eb;padding:18px 20px;font-size:14px;overflow:hidden}.training-table tbody tr,.score-table tbody tr{transition:all .25s}.training-table tbody tr:nth-child(2n),.score-table tbody tr:nth-child(2n){background:#fafafa}.training-table input[type=checkbox]{accent-color:#2563eb;cursor:pointer;width:18px;height:18px}.training-table th:first-child,.training-table td:first-child{width:60px}.training-table th:nth-child(2),.training-table td:nth-child(2){width:180px}.training-table th:nth-child(3),.training-table td:nth-child(3){width:260px}.training-table th:nth-child(4),.training-table td:nth-child(4){width:170px}.training-table th:nth-child(5),.training-table td:nth-child(5){width:420px}.action-cell{flex-wrap:nowrap;align-items:center;gap:10px;display:flex}.edit-btn{color:#2563eb;background:#e8f0ff;border:none;border-radius:10px;justify-content:center;align-items:center;width:42px;height:42px;font-size:16px;transition:all .25s;display:flex}.edit-btn:hover{color:#fff;background:#2563eb;transform:translateY(-2px)}.delete-btn{color:#ef4444;background:#ffe9e9;border:none;border-radius:10px;justify-content:center;align-items:center;width:42px;height:42px;font-size:16px;transition:all .25s;display:flex}.delete-btn:hover{color:#fff;background:#ef4444;transform:translateY(-2px)}.details-btn{color:#fff;white-space:nowrap;border:none;border-radius:10px;min-width:170px;height:42px;padding:0 18px;font-size:14px;font-weight:600;transition:all .25s}.create-login-btn{background:linear-gradient(135deg,#d946ef,#0ea5e9)}.create-login-btn:hover{transform:translateY(-2px);box-shadow:0 8px 20px #d946ef59}.view-login-btn{background:linear-gradient(135deg,#10b981,#06b6d4)}.view-login-btn:hover{transform:translateY(-2px);box-shadow:0 8px 20px #10b98159}.header-login-btn{min-width:180px;height:44px;margin-left:18px}.login-created-badge{color:#15803d;background:#dcfce7;border:1px solid #86efac;border-radius:33px;justify-content:center;align-items:center;width:110px;height:33px;font-size:11px;font-weight:700;display:flex}.not-created-text{color:#9ca3af;font-size:14px;font-weight:600}.actions-head{padding:0!important}.actions-head-inner{justify-content:space-between;align-items:center;gap:18px;height:72px;padding:0 18px;display:flex}.pagination button,.score-pagination button{color:#fff;background:linear-gradient(135deg,#ff00fb,#00bfff);border:none;border-radius:10px;min-width:110px;height:42px;font-size:14px;font-weight:600;transition:all .25s}.pagination button:hover,.score-pagination button:hover{transform:translateY(-2px);box-shadow:0 8px 18px #00bfff59}.pagination button:disabled,.score-pagination button:disabled{opacity:.45;cursor:not-allowed;box-shadow:none;transform:none}.pagination span,.score-pagination span{color:#111827;font-size:15px;font-weight:600}.score-table td:last-child{color:#2563eb;font-weight:700}.student-action-group{align-items:center;gap:10px;display:flex}.view-score-btn{color:#fff;background:#2563eb}.view-score-btn:hover{background:#1d4ed8}.badge{border-radius:30px;justify-content:center;align-items:center;padding:6px 12px;font-size:12px;font-weight:700;display:inline-flex}.badge-success{color:#15803d;background:#dcfce7}.badge-danger{color:#dc2626;background:#fee2e2}.badge-warning{color:#b45309;background:#fef3c7}.badge-info{color:#1d4ed8;background:#dbeafe}.batch-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:24px;margin-top:24px;margin-bottom:36px;display:grid}.batch-card{cursor:pointer;background:url(/image/batch.jpg) 50%/cover;border-radius:20px;padding:26px;transition:all .3s;position:relative;overflow:hidden;box-shadow:0 12px 28px #0000001a}.batch-card:before{content:"";z-index:0;background:#00000061;position:absolute;inset:0}.batch-card>*{z-index:2;position:relative}.batch-card:hover{transform:translateY(-6px);box-shadow:0 18px 40px #00000029}.active-batch{border:2px solid #8b5cf6;box-shadow:0 0 0 4px #8b5cf626}.batch-top{justify-content:space-between;align-items:center;margin-bottom:22px;display:flex}.batch-top h3{color:#fff;font-size:24px;font-weight:700}.batch-top span{color:#7c3aed;background:#fff;border-radius:30px;padding:6px 14px;font-size:12px;font-weight:700}.batch-dates{margin-bottom:24px}.batch-dates p{color:#fff;margin:8px 0;font-size:14px}.batch-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:20px;margin-bottom:28px;display:flex}.batch-show{background:url(/image/batch.jpg) 50%/cover;border-radius:20px;flex:1;padding:28px;position:relative;overflow:hidden}.batch-show:before{content:"";background:#00000073;position:absolute;inset:0}.batch-show>*{z-index:2;position:relative}.batch-title{color:#fff;font-size:34px;font-weight:700}.batch-subtitle{color:#f3f4f6;margin-top:8px;font-size:15px}.batch-info{background:#fff;border-radius:18px;margin-bottom:24px;padding:24px;box-shadow:0 8px 24px #00000014}.batch-info h3{margin-bottom:8px;font-size:22px}.batch-info p{color:#6b7280;font-size:15px}.modal-overlay{z-index:9999;background:#0000008c;justify-content:center;align-items:center;animation:.25s fadeIn;display:flex;position:fixed;inset:0}.modal{background:#fff;border-radius:20px;width:100%;max-width:500px;animation:.25s scaleIn;overflow:hidden;box-shadow:0 25px 60px #00000038}.modal-top-bar{background:linear-gradient(135deg,#ff00fb,#00bfff);height:5px}.modal-icon{color:#2563eb;background:linear-gradient(135deg,#ff00fb20,#00bfff20);border-radius:12px;justify-content:center;align-items:center;width:42px;height:42px;font-size:18px;display:flex}.modal-title h2{margin-bottom:2px;font-size:18px}.modal-title p{color:#6b7280;font-size:13px}.close-btn{color:#6b7280;background:#f3f4f6;border:none;border-radius:10px;width:34px;height:34px;font-size:16px}.close-btn:hover{color:#fff;background:#ef4444}.field label{color:#374151;margin-bottom:6px;font-size:13px;font-weight:600;display:block}.field input{border:1px solid #d1d5db;border-radius:12px;width:100%;height:46px;padding:0 16px;font-size:15px}.field input:focus{border-color:#00bfff;box-shadow:0 0 0 3px #00bfff26}.btn-primary{color:#fff;background:linear-gradient(135deg,#ff00fb,#00bfff);border:none;border-radius:12px;width:auto;height:46px;font-size:15px;font-weight:600}.btn-primary:hover{transform:translateY(-2px)}.btn-row{grid-template-columns:1fr 1fr;gap:12px;margin-top:12px;display:grid}.btn-outline{color:#374151;background:#fff;border:1px solid #ddd;border-radius:12px;height:44px;font-size:14px;font-weight:600}.btn-outline:hover{background:#f3f4f6}.btn-cancel{color:#ff00fb;background:#fff0fe;border-color:#ff00fb55}.modal-tabs{background:#f3f4f6;border-radius:12px;gap:6px;margin:18px 24px;padding:4px;display:flex}.modal-tab{color:#6b7280;background:0 0;border:none;border-radius:10px;flex:1;height:38px;font-size:14px;font-weight:600}.modal-tab.active{color:#111827;background:#fff;box-shadow:0 4px 10px #00000014}.excel-panel{flex-direction:column;gap:16px;display:flex}.excel-dropzone{text-align:center;cursor:pointer;background:#f9fafb;border:2px dashed #cbd5e1;border-radius:16px;padding:40px 20px;transition:all .25s}.excel-dropzone:hover{background:#eef9ff;border-color:#00bfff}.excel-drop-icon{margin-bottom:10px;font-size:34px}.excel-drop-title{margin-bottom:4px;font-size:15px;font-weight:600}.toast-success,.toast-error{background:#fff;border-radius:14px;align-items:center;gap:12px;padding:16px 18px;font-size:14px;font-weight:600;display:flex;box-shadow:0 8px 24px #0000001a}.toast-success{color:#15803d;border-left:5px solid #22c55e}.toast-error{color:#dc2626;border-left:5px solid #ef4444}.swal2-popup{border-radius:18px!important;padding:26px!important}.swal2-title{font-size:24px!important}.swal2-html-container{font-size:15px!important}.swal2-confirm{background:linear-gradient(135deg,#ff00fb,#00bfff)!important;border-radius:10px!important;padding:10px 28px!important}.swal2-cancel{border-radius:10px!important}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.action-btn,.save-btn,.details-btn,.all-bopt-btn,.login-btn,.open-btn,.sample-excel-btn,.excel-upload,.header-login-btn{background:var(--primary-gradient);color:#fff;cursor:pointer;border:none;border-radius:12px;justify-content:center;align-items:center;gap:8px;min-height:46px;padding:0 22px;font-size:15px;font-weight:600;transition:all .25s;display:inline-flex}.action-btn:hover,.save-btn:hover,.details-btn:hover,.all-bopt-btn:hover,.login-btn:hover,.open-btn:hover,.sample-excel-btn:hover,.excel-upload:hover,.header-login-btn:hover{transform:translateY(-2px);box-shadow:0 8px 22px #0000002e}.edit-btn,.delete-btn{cursor:pointer;border:none;border-radius:10px;width:42px;height:42px;transition:all .25s}.edit-btn{color:#2563eb;background:#e8f1ff}.edit-btn:hover{color:#fff;background:#2563eb}.delete-btn{color:#ef4444;background:#ffe6e6}.delete-btn:hover{color:#fff;background:#ef4444}.table-wrapper{background:#fff;border-radius:20px;overflow:auto;box-shadow:0 10px 30px #00000014}.training-table,.score-table{border-collapse:collapse;width:100%;min-width:950px}.training-table thead,.score-table thead{background:#f8fafc}.training-table th,.score-table th{text-align:left;color:#374151;white-space:nowrap;padding:18px;font-size:15px;font-weight:700}.training-table td,.score-table td{color:#4b5563;border-top:1px solid #edf0f3;padding:13px;font-size:14px}.check-col{text-align:center;width:55px}.action-cell{align-items:center;gap:10px;display:flex}.pagination,.score-pagination{justify-content:flex-end;align-items:center;gap:15px;margin-top:22px;display:flex}.pagination button,.score-pagination button{background:var(--primary-gradient);color:#fff;cursor:pointer;border:none;border-radius:10px;min-width:110px;height:42px;font-weight:600}.pagination span,.score-pagination span{color:#374151;font-weight:600}.cards{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:22px;display:grid}.card{background:#fff;border-radius:20px;transition:all .3s;overflow:hidden;box-shadow:0 10px 30px #00000014}.card:hover{transform:translateY(-6px)}.card-image{object-fit:cover;width:100%;height:170px}.card-body{padding:22px}.card-body h3{color:#111827;margin-bottom:10px;font-size:18px}.card-body p{color:#2563eb;font-size:30px;font-weight:700}.stats-grid{grid-template-columns:repeat(2,1fr);gap:12px;margin-top:16px;display:grid}.stat-item{text-align:center;background:#f8fafc;border-radius:12px;padding:14px}.stat-item strong{color:#111827;font-size:22px;display:block}.stat-item span{color:#6b7280;font-size:13px}.page-title,.dashboard-title{color:#111827;margin-bottom:25px;font-size:34px;font-weight:700}.page-title em,.dashboard-title em{color:#2563eb}.chart-section{background:#fff;border-radius:20px;margin-top:30px;padding:24px;box-shadow:0 8px 24px #00000014}@media (width<=1200px){.cards{grid-template-columns:repeat(2,1fr)}}@media (width<=992px){.sidebar{width:220px;min-width:220px}.main-content{padding:20px}}@media (width<=768px){.layout-body{flex-direction:column}.sidebar{width:100%;height:auto;position:relative}.cards{grid-template-columns:1fr}.table-wrapper{overflow:auto}.training-table,.score-table{min-width:900px}.pagination,.score-pagination{flex-wrap:wrap;justify-content:center}}@media (width<=480px){.page-title,.dashboard-title{font-size:26px}.card-body p{font-size:24px}.action-btn,.save-btn,.details-btn,.all-bopt-btn{width:100%}}.navbar{background:var(--primary-gradient);z-index:1000;justify-content:space-between;align-items:center;height:60px;padding:0 28px;display:flex;position:sticky;top:0;box-shadow:0 5px 20px #0000001f}.navbar-logo{align-items:center;gap:12px;display:flex}.logo-text{color:#fff;font-size:22px;font-weight:700}.navbar-menu{align-items:center;gap:10px;list-style:none;display:flex}.navbar-link{color:#fff;border-radius:10px;padding:10px 16px;font-weight:600;text-decoration:none;transition:all .25s}.navbar-link:hover{background:#ffffff2e}.logout-icon{color:#fff;cursor:pointer;font-size:20px;transition:all .25s}.logout-icon:hover{transform:scale(1.15)}.sidebar{color:#fff;width:260px;min-width:260px;height:calc(100vh - 60px);padding:20px;position:sticky;top:60px;overflow-y:auto;box-shadow:6px 0 20px #00000014}.sidebar-title{margin-bottom:25px;font-size:22px;font-weight:700}.sidebar-menu{list-style:none}.sidebar-link{color:#fff;border-radius:12px;align-items:center;gap:12px;padding:12px 15px;text-decoration:none;transition:all .25s;display:flex}.sidebar-link:hover{background:var(--primary-gradient);color:#fff}.sidebar-submenu{margin-top:8px;padding-left:18px}.sidebar-submenu a{color:#cbd5e1;border-radius:8px;padding:10px;text-decoration:none;transition:all .25s;display:block}.sidebar-submenu a:hover{background:#1e293b}.login-page{justify-content:center;align-items:center;min-height:100vh;padding:30px;display:flex;position:relative}.login-bg{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.login-card{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);z-index:2;background:#11111173;border-radius:22px;width:400px;max-width:100%;padding:35px;box-shadow:0 20px 50px #0000004d}.login-header{text-align:center;margin-bottom:25px}.login-logo{width:100px;margin-bottom:15px}.login-title{color:#fff;font-size:34px;font-weight:700}.show-pass{color:#fff;cursor:pointer;background:0 0;border:none;margin-bottom:15px}.login-error{color:#ff4d4d;margin-bottom:15px}.modal-overlay{z-index:9999;background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:#fff;border-radius:18px;width:460px;max-width:95%;animation:.25s popup;overflow:hidden}.modal-header{border-bottom:1px solid #eee;justify-content:space-between;align-items:center;padding:20px 24px;display:flex}.modal-body{padding:24px}.modal-footer{border-top:1px solid #eee;padding:20px 24px}.close-btn{cursor:pointer;background:#f3f4f6;border:none;border-radius:8px;width:34px;height:34px}.close-btn:hover{background:#e5e7eb}.toast-success,.toast-error{background:#fff;border-radius:12px;align-items:center;gap:12px;padding:14px 18px;display:flex;box-shadow:0 10px 30px #0000001a}.toast-success{border-left:5px solid #22c55e}.toast-error{border-left:5px solid #ef4444}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:20px}::-webkit-scrollbar-thumb:hover{background:#94a3b8}::-webkit-scrollbar-track{background:#f1f5f9}.text-center{text-align:center}.text-right{text-align:right}.w-100{width:100%}.mt-10{margin-top:10px}.mt-20{margin-top:20px}.mb-20{margin-bottom:20px}.flex{display:flex}.flex-center{justify-content:center;align-items:center;display:flex}.hidden{display:none}@keyframes popup{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.fade-in{animation:.4s fade}@keyframes fade{0%{opacity:0}to{opacity:1}}@media print{.navbar,.sidebar,.no-print,button{display:none!important}.main-content{padding:0}.table-wrapper{box-shadow:none;border:none}body{background:#fff}}@media (width<=768px){.navbar{padding:0 16px}.logo-text{display:none}.sidebar{width:100%;height:auto;position:relative;top:0}.login-card{padding:25px}.modal{width:95%}}@media (width<=480px){.login-title{font-size:28px}.navbar{height:56px}.logo-img{height:38px}}.module-page .top-actions{justify-content:flex-end;margin-bottom:18px}.module-page .action-btn,.module-page .save-btn,.module-page .open-btn,.module-page .details-btn,.module-page .excel-upload,.module-page .sample-excel-btn,.module-page .manual-btn,.module-page .random-btn,.module-page .btn-primary,.module-page .btn-outline,.module-page .create-login-btn,.module-page .view-login-btn{border-radius:10px;min-height:36px;padding:8px 14px;font-size:13px;font-weight:600;line-height:1}.module-page .action-btn span,.module-page .save-btn span{font-size:16px;line-height:1}.module-page .open-btn{width:100%;padding:10px 14px}.module-page .details-btn{white-space:nowrap;min-width:auto;height:auto}.module-page .edit-btn,.module-page .delete-btn{border-radius:8px;width:34px;min-width:34px;height:34px;font-size:13px}.module-page .batch-grid{gap:18px}.module-page .batch-card{border:1px solid #94a3b826;box-shadow:0 12px 30px #0f172a14}.module-page .batch-top h3{font-size:20px}.module-page .batch-dates p{color:#e2e8f0;font-size:14px}.module-page .batch-card1{z-index:1100;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0f172a9e;flex-direction:column;justify-content:center;align-items:center;gap:12px;margin:0;padding:28px 18px;display:flex;position:fixed;inset:0;overflow-y:auto}.module-page .batch-title1{color:#fff;letter-spacing:-.02em;text-align:left;text-shadow:0 8px 24px #0f172a59;width:min(760px,100%);margin:0;padding-right:56px;font-size:24px;font-weight:800}.module-page .batch-modal-close-btn{color:#0f172a;cursor:pointer;background:#fff;border:none;border-radius:999px;justify-content:center;align-items:center;width:34px;height:34px;font-size:22px;line-height:1;transition:transform .2s,box-shadow .2s,background .2s;display:flex;position:absolute;top:18px;right:18px;box-shadow:0 10px 25px #0f172a33}.module-page .batch-modal-close-btn:hover{background:#f8fafc;transform:translateY(-1px);box-shadow:0 14px 28px #0f172a3d}.module-page .batch-form{background:#fff;border-radius:20px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;width:min(760px,100%);margin:0;padding:24px;box-shadow:0 24px 70px #0f172a47}.module-page .batch-form input{background:#f8fafc;border:1px solid #dbe2ea;border-radius:10px;height:42px;padding:0 14px;font-size:14px}.module-page .batch-form input:focus{border-color:#00bfff;box-shadow:0 0 0 3px #00bfff1f}.module-page .batch-form .save-btn{height:42px;width:auto!important}@media (width<=768px){.module-page .batch-card1{justify-content:flex-start;padding:70px 14px 18px}.module-page .batch-title1{font-size:21px}.module-page .batch-form{grid-template-columns:1fr;padding:18px}.module-page .top-actions{justify-content:stretch}.module-page .action-btn{justify-content:center;width:100%}.module-page .batch-modal-close-btn{width:30px;height:30px;font-size:20px;top:14px;right:14px}}.modal-overlay{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:9999;background:#0f172aa6;justify-content:center;align-items:center;animation:.3s fadeIn;display:flex;position:fixed;inset:0}.modal-box{background:#fff;border-radius:20px;flex-direction:column;width:min(950px,95%);max-height:90vh;animation:.3s scaleIn;display:flex;overflow:hidden;box-shadow:0 25px 60px #00000040}.modal-header{background:linear-gradient(135deg,#ff00fb,#00bfff);justify-content:space-between;align-items:center;padding:18px 24px;display:flex}.modal-header h2{color:#fff;margin:0;font-size:22px;font-weight:700}.close-btn{color:#111827;cursor:pointer;background:#fff;border:none;border-radius:50%;width:36px;height:36px;font-size:18px;transition:all .25s}.close-btn:hover{color:#dc2626;background:#fee2e2;transform:rotate(90deg)}.modal-table-wrapper{flex:1;padding:20px;overflow:auto}.modal-score-table{border-collapse:collapse;width:100%;min-width:760px}.modal-score-table thead th{z-index:5;background:#f8fafc;position:sticky;top:0}.modal-score-table th{color:#111827;text-align:center;border-bottom:2px solid #e5e7eb;padding:15px;font-size:15px;font-weight:700}.modal-score-table td{text-align:center;color:#374151;border-bottom:1px solid #edf2f7;padding:14px;font-size:14px}.modal-score-table tbody tr:nth-child(2n){background:#fafafa}.modal-score-table tbody tr:hover{background:#eef8ff}.modal-footer{background:#fff;border-top:1px solid #e5e7eb;justify-content:flex-end;padding:18px 24px;display:flex}.modal-table-wrapper::-webkit-scrollbar{width:8px;height:8px}.modal-table-wrapper::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:10px}@media (width<=768px){.modal-box{width:95%;max-height:92vh}.modal-header h2{font-size:18px}.modal-score-table{min-width:700px}.modal-footer{justify-content:center}.modal-footer .action-btn{width:100%}}.view-btn{color:#fff;cursor:pointer;border:none;justify-content:center;align-items:center;width:40px;height:40px;font-size:16px;display:flex}.view-btn:hover{transform:translateY(-2px)scale(1.05);box-shadow:0 8px 18px #2563eb59}.view-btn:active{transform:scale(.95)}.attempt-header td{color:#fff;background:linear-gradient(135deg,#2563eb,#00bfff);padding:12px 18px;font-size:15px;font-weight:700}.status-badge{border-radius:20px;padding:5px 12px;font-size:12px;font-weight:600;display:inline-block}.status-badge.pass{color:#15803d;background:#dcfce7}.status-badge.fail{color:#dc2626;background:#fee2e2}.admin-page{max-width:1400px}.admin-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:22px;display:flex}.admin-head-text h2{color:var(--text-dark);letter-spacing:-.3px;margin:0 0 4px;font-size:20px;font-weight:600}.admin-head-text p{color:var(--text-light);max-width:62ch;margin:0;font-size:14px;line-height:1.55}.admin-head-actions{flex-wrap:wrap;gap:10px;display:flex}.btn{border-radius:var(--radius-md);cursor:pointer;white-space:nowrap;border:1px solid #0000;justify-content:center;align-items:center;gap:7px;height:38px;padding:0 16px;font-family:inherit;font-size:14px;font-weight:500;line-height:1;transition:background .18s,border-color .18s,color .18s,box-shadow .18s,transform .12s;display:inline-flex}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn:focus-visible{outline:none;box-shadow:0 0 0 3px #2563eb47}.btn-solid{background:var(--primary-color);color:#fff;box-shadow:none}.btn-solid:hover:not(:disabled){background:var(--primary-hover);box-shadow:none}.btn-ghost{border-color:var(--border);color:#374151;background:#fff}.btn-ghost:hover:not(:disabled){background:#f8fafc;border-color:#cbd5e1}.btn-danger-ghost{color:#b42318;background:#fff;border-color:#fecaca}.btn-danger-ghost:hover:not(:disabled){background:#fef2f2;border-color:#fca5a5}.btn-sm{border-radius:var(--radius-sm);height:32px;padding:0 11px;font-size:13px}.btn-icon{border-radius:var(--radius-sm);width:34px;height:34px;padding:0;font-size:15px}.admin-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden}.admin-card+.admin-card{margin-top:18px}.admin-card-head{border-bottom:1px solid var(--border);background:#fcfdff;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;padding:16px 20px;display:flex}.admin-card-head h3{color:var(--text-dark);margin:0;font-size:15px;font-weight:700}.admin-card-head p{color:var(--text-light);margin:3px 0 0;font-size:13px}.data-table-wrap{width:100%;overflow-x:auto}.data-table{border-collapse:collapse;width:100%;font-size:14px}.data-table thead th{text-align:left;letter-spacing:.07em;text-transform:uppercase;color:#64748b;border-bottom:1px solid var(--border);white-space:nowrap;background:#f8fafc;padding:12px 16px;font-size:11px;font-weight:700}.data-table tbody td{color:var(--text-dark);vertical-align:middle;border-bottom:1px solid #f1f5f9;padding:13px 16px}.data-table tbody tr:last-child td{border-bottom:none}.data-table tbody tr.is-clickable{cursor:pointer;transition:background .15s}.data-table tbody tr.is-clickable:hover{background:#f8fafc}.data-table tbody tr.is-selected{box-shadow:inset 3px 0 0 var(--primary-color);background:#eff6ff}.data-table tbody tr.is-selected:hover{background:#e6f0fe}.cell-actions{flex-wrap:wrap;gap:6px;display:flex}.cell-strong{font-weight:600}.cell-muted{color:var(--text-light)}.cell-sub{margin-top:3px;font-size:12px;line-height:1.4;display:block}.id-chip{color:#3730a3;text-align:center;background:#eef2ff;border:1px solid #e0e7ff;border-radius:7px;min-width:30px;padding:3px 9px;font-family:ui-monospace,SF Mono,Cascadia Mono,Menlo,Consolas,monospace;font-size:13px;font-weight:700;display:inline-block}.id-chip-lg{padding:5px 12px;font-size:15px}.pill{white-space:nowrap;border-radius:999px;align-items:center;gap:5px;padding:4px 11px;font-size:12px;font-weight:600;line-height:1.5;display:inline-flex}.pill:before{content:"";background:currentColor;border-radius:50%;flex:none;width:6px;height:6px}.pill-ok{color:#15803d;background:#dcfce7}.pill-warn{color:#92400e;background:#fef3c7}.pill-danger{color:#b42318;background:#fee2e2}.pill-muted{color:#64748b;background:#f1f5f9}.pill-info{color:#1d4ed8;background:#dbeafe}.pill-plain:before{display:none}.notice{border-radius:var(--radius-md);border:1px solid;margin-bottom:18px;padding:16px 18px;font-size:14px;line-height:1.6}.notice strong{margin-bottom:4px;font-size:14px;display:block}.notice p{margin:0;font-size:13px}.notice ul{margin:8px 0 0;padding-left:18px;font-size:13px}.notice li+li{margin-top:5px}.notice-ok{color:#14532d;background:#f0fdf4;border-color:#bbf7d0}.notice-warn{color:#78350f;background:#fffbeb;border-color:#fde68a}.notice-danger{color:#7f1d1d;background:#fef2f2;border-color:#fecaca}.notice-info{color:#1e3a8a;background:#eff6ff;border-color:#bfdbfe}.coverage-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;margin-top:14px;display:grid}.coverage-item{border:1px solid var(--border);border-radius:var(--radius-md);background:#fff;padding:13px 14px}.coverage-item-title{color:var(--text-dark);justify-content:space-between;align-items:center;gap:10px;margin-bottom:9px;font-size:13px;font-weight:700;display:flex}.coverage-chips{flex-wrap:wrap;gap:6px;display:flex}.seg-tabs{border-radius:var(--radius-md);scrollbar-width:none;background:#eef2f7;gap:4px;padding:4px;display:flex;overflow-x:auto}.seg-tabs::-webkit-scrollbar{display:none}.seg-tab{border-radius:var(--radius-sm);color:#64748b;cursor:pointer;white-space:nowrap;background:0 0;border:none;flex:1;min-width:max-content;padding:9px 16px;font-family:inherit;font-size:14px;font-weight:600;transition:background .18s,color .18s,box-shadow .18s}.seg-tab:hover{color:var(--text-dark)}.seg-tab.is-active{color:var(--primary-color);box-shadow:var(--shadow-sm);background:#fff}.seg-context{color:var(--text-light);flex-wrap:wrap;align-items:center;gap:8px;margin:14px 0 18px;font-size:13px;display:flex}.form-grid{gap:14px;display:grid}.form-grid-2{grid-template-columns:1fr 1fr}.form-section{border-top:1px solid var(--border);margin-top:22px;padding-top:18px}.form-section:first-child{border-top:none;margin-top:0;padding-top:0}.form-section h4{color:var(--text-dark);margin:0 0 3px;font-size:14px;font-weight:700}.form-section p{color:var(--text-light);margin:0 0 14px;font-size:13px;line-height:1.55}.field-row label{color:#374151;margin-bottom:6px;font-size:13px;font-weight:600;display:block}.field-row input,.field-row select{border-radius:var(--radius-md);width:100%;height:44px;color:var(--text-dark);background:#fff;border:1px solid #d1d5db;padding:0 14px;font-family:inherit;font-size:15px;transition:border-color .18s,box-shadow .18s}.field-row select{cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%236b7280' d='M1.4 0 6 4.6 10.6 0 12 1.4 6 7.4 0 1.4z'/%3E%3C/svg%3E");background-position:right 14px center;background-repeat:no-repeat;padding-right:38px}.field-row input:focus,.field-row select:focus{border-color:var(--primary-color);outline:none;box-shadow:0 0 0 3px #2563eb26}.field-row input[readonly]{color:#475569;background:#f8fafc}.field-hint{color:var(--text-light);margin:6px 0 0;font-size:12px;line-height:1.5}.check-row{border:1px solid var(--border);border-radius:var(--radius-md);cursor:pointer;align-items:flex-start;gap:11px;padding:12px 14px;transition:border-color .18s,background .18s;display:flex}.check-row:hover{background:#f8fafc;border-color:#cbd5e1}.check-row input{width:18px;height:18px;accent-color:var(--primary-color);cursor:pointer;flex:none;margin-top:1px}.check-row-text strong{color:var(--text-dark);text-transform:capitalize;font-size:14px;display:block}.check-row-text span{color:var(--text-light);font-size:12px}.form-actions{border-top:1px solid var(--border);justify-content:flex-end;gap:10px;margin-top:22px;padding-top:18px;display:flex}.empty-state{text-align:center;padding:46px 24px}.empty-state-icon{opacity:.6;margin-bottom:10px;font-size:30px}.empty-state h4{color:var(--text-dark);margin:0 0 5px;font-size:15px;font-weight:700}.empty-state p{max-width:46ch;color:var(--text-light);margin:0 auto;font-size:13px;line-height:1.6}.skeleton-row{background:linear-gradient(90deg,#f1f5f9 25%,#e2e8f0 50%,#f1f5f9 75%) 0 0/200% 100%;border-radius:6px;height:14px;margin:16px;animation:1.3s ease-in-out infinite admin-shimmer}@keyframes admin-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media (prefers-reduced-motion:reduce){.skeleton-row{animation:none}.btn{transition:none}}.code-block{border-radius:var(--radius-md);color:#e2e8f0;-webkit-overflow-scrolling:touch;background:#0f172a;margin:0;padding:16px 18px;font-family:ui-monospace,SF Mono,Cascadia Mono,Menlo,Consolas,monospace;font-size:12.5px;line-height:1.65;overflow-x:auto}@media (width<=860px){.admin-head-actions,.admin-head-actions .btn{width:100%}.data-table-wrap{padding:12px;overflow-x:visible}.data-table,.data-table tbody,.data-table tr,.data-table td{width:100%;display:block}.data-table thead{display:none}.data-table tbody tr{border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);background:#fff;margin-bottom:12px;overflow:hidden}.data-table tbody tr:last-child{margin-bottom:0}.data-table tbody tr.is-selected{border-color:var(--primary-color);box-shadow:0 0 0 1px var(--primary-color)}.data-table tbody td{text-align:right;border-bottom:1px solid #f1f5f9;justify-content:space-between;align-items:center;gap:16px;padding:10px 14px;display:flex}.data-table tbody td:before{content:attr(data-label);letter-spacing:.06em;text-transform:uppercase;color:#94a3b8;text-align:left;flex:none;font-size:11px;font-weight:700}.data-table tbody td:not([data-label]):before{display:none}.data-table tbody td[data-label=""]{justify-content:flex-start}.cell-actions{justify-content:flex-end}.cell-actions .btn{flex:1}.form-grid-2{grid-template-columns:1fr}.form-actions{flex-direction:column-reverse}.form-actions .btn{width:100%}.seg-tab{flex:none}.coverage-grid{grid-template-columns:1fr}}@media (width<=480px){.admin-head-text h2{font-size:22px}.admin-card-head{padding:14px 16px}.data-table tbody td{padding:9px 12px;font-size:13.5px}}.modal.modal-admin{flex-direction:column;width:100%;max-width:560px;max-height:min(92vh,940px);display:flex}.modal.modal-admin .modal-body{-webkit-overflow-scrolling:touch;flex:1;overflow-y:auto}.modal.modal-wide{max-width:820px}.modal-admin .modal-header{flex:none}@media (width<=640px){.modal-overlay{align-items:flex-end}.modal.modal-admin,.modal.modal-wide{border-radius:20px 20px 0 0;max-width:100%;max-height:94vh}}.rule-list{flex-direction:column;display:flex}.rule-row{border-bottom:1px solid var(--slate-100);grid-template-columns:minmax(150px,1fr) minmax(200px,2fr) auto auto;align-items:center;gap:14px;padding:11px 20px;display:grid}.rule-row:last-child{border-bottom:none}.rule-row.is-ungraded{background:#fffdf7}.rule-metric{align-items:center;gap:8px;min-width:0;display:flex}.rule-metric .cell-strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.rule-condition{color:var(--text-body);font-size:14px}.rule-condition strong{color:var(--text-dark);white-space:nowrap;font-weight:600}.rule-total{white-space:nowrap;font-size:13px}@media (width<=860px){.rule-row{grid-template-columns:1fr;gap:8px;padding:14px 16px}.rule-row .cell-actions{justify-content:flex-start}}.rule-row.is-dead{background:snow}.rule-row.is-dead .rule-metric .cell-strong{color:var(--text-muted);text-decoration:line-through}.level-track{align-items:center;gap:8px;display:flex}.level-track-marks{gap:3px;display:flex}.level-mark{border-radius:var(--radius-sm);font-variant-numeric:tabular-nums;cursor:default;border:1px solid #0000;justify-content:center;align-items:center;width:22px;height:22px;font-size:11px;font-weight:600;display:flex}.level-mark.is-completed{background:var(--success-soft);border-color:var(--success-border);color:var(--success)}.level-mark.is-in_progress{border-color:var(--primary-color);color:var(--primary-color);background:#fff;box-shadow:0 0 0 2px #2563eb1f}.level-mark.is-locked{background:var(--slate-100);border-color:var(--border);color:var(--text-muted)}.level-track-count{color:var(--text-light);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:12px}@media (width<=860px){.level-track{justify-content:flex-end}}:root{--slate-950:#020617;--slate-900:#0f172a;--slate-800:#1e293b;--slate-700:#334155;--slate-600:#475569;--slate-500:#64748b;--slate-400:#94a3b8;--slate-300:#cbd5e1;--slate-200:#e2e8f0;--slate-100:#f1f5f9;--slate-50:#f8fafc;--primary-color:#2563eb;--primary-hover:#1d4ed8;--primary-active:#1e40af;--primary-soft:#eff6ff;--primary-border:#bfdbfe;--primary-gradient:#2563eb;--success:#059669;--success-soft:#ecfdf5;--success-border:#a7f3d0;--warning:#d97706;--warning-soft:#fffbeb;--warning-border:#fde68a;--danger:#dc2626;--danger-soft:#fef2f2;--danger-border:#fecaca;--info:#0284c7;--info-soft:#f0f9ff;--info-border:#bae6fd;--bg-body:#f8fafc;--bg-card:#fff;--bg-subtle:#f8fafc;--bg-sidebar:#0f172a;--bg-hover:#1e293b;--text-dark:#0f172a;--text-body:#334155;--text-light:#64748b;--text-muted:#94a3b8;--text-white:#fff;--border:#e2e8f0;--border-strong:#cbd5e1;--radius-sm:6px;--radius-md:8px;--radius-lg:10px;--radius-xl:14px;--shadow-sm:0 1px 2px #0f172a0f;--shadow-md:0 2px 8px #0f172a14;--shadow-lg:0 8px 24px #0f172a1f;--font:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif}body{background:var(--bg-body);color:var(--text-body);font-family:var(--font);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:14px;line-height:1.55}.page-title,.dashboard-title,.module-page .page-title{letter-spacing:-.01em;color:var(--text-dark);text-transform:none;margin:0 0 4px;font-size:20px;font-weight:600;line-height:1.3}.page-title em,.dashboard-title em{color:var(--text-dark);-webkit-text-fill-color:currentColor;background:0 0;font-style:normal;font-weight:600}.section-title{color:var(--text-dark);font-size:15px;font-weight:600}.module-page{padding:0}.navbar{background:var(--bg-card);border-bottom:1px solid var(--border);height:56px;box-shadow:none;padding:0 20px}.navbar-logo a,.logo-text{color:var(--text-dark);letter-spacing:-.01em;-webkit-text-fill-color:currentColor;background:0 0;font-size:15px;font-weight:600}.logo-img{width:auto;height:30px}.navbar-link{color:var(--text-light);border-radius:var(--radius-sm);padding:7px 12px;font-size:14px;font-weight:500}.navbar-link:hover{background:var(--slate-100);color:var(--text-dark)}.logout-icon{color:var(--text-light);background:0 0;font-size:18px}.logout-icon:hover{color:var(--danger);background:var(--danger-soft)}.sidebar{background:var(--bg-sidebar);width:232px;min-width:232px;height:calc(100vh - 56px);box-shadow:none;border-right:1px solid var(--slate-800);background-image:none;padding:16px 12px;top:56px}.sidebar:before{display:none}.sidebar-title{letter-spacing:.07em;text-transform:uppercase;color:var(--slate-500);margin:14px 10px 8px;font-size:11px;font-weight:600}.sidebar-menu{margin:0;padding:0;list-style:none}.sidebar-link{border-radius:var(--radius-md);color:var(--slate-300);background:0 0;align-items:center;gap:10px;margin-bottom:2px;padding:9px 10px;font-size:14px;font-weight:500;transition:background .15s,color .15s;display:flex}.sidebar-link:hover{background:var(--slate-800);color:#fff;transform:none}.sidebar-link .icon{opacity:.85;font-size:16px}.sidebar-submenu a:hover{background:var(--slate-800);color:#fff}.layout-body{min-height:calc(100vh - 56px)}.main-content{background:var(--bg-body);padding:24px}.btn-primary,.action-btn,.save-btn,.header-login-btn,.all-bopt-btn,.open-btn,.view-score-btn,.excel-upload,.create-login-btn{border-radius:var(--radius-md);background:var(--primary-color);color:#fff;letter-spacing:0;cursor:pointer;width:auto;height:38px;box-shadow:none;border:1px solid #0000;justify-content:center;align-items:center;gap:7px;padding:0 16px;font-family:inherit;font-size:14px;font-weight:500;line-height:1;transition:background .15s,box-shadow .15s;display:inline-flex}.btn-primary:hover,.action-btn:hover,.save-btn:hover,.header-login-btn:hover,.all-bopt-btn:hover,.open-btn:hover,.view-score-btn:hover,.excel-upload:hover,.create-login-btn:hover{background:var(--primary-hover);box-shadow:none;transform:none}.btn-outline,.btn-cancel,.details-btn,.sample-excel-btn,.view-login-btn{border:1px solid var(--border);border-radius:var(--radius-md);height:38px;color:var(--text-body);cursor:pointer;box-shadow:none;background:#fff;justify-content:center;align-items:center;gap:7px;padding:0 16px;font-family:inherit;font-size:14px;font-weight:500;line-height:1;transition:background .15s,border-color .15s;display:inline-flex}.btn-outline:hover,.btn-cancel:hover,.details-btn:hover,.sample-excel-btn:hover,.view-login-btn:hover{background:var(--slate-50);border-color:var(--border-strong);color:var(--text-dark);transform:none}.edit-btn,.delete-btn{border:1px solid var(--border);border-radius:var(--radius-sm);min-width:32px;height:32px;color:var(--text-body);box-shadow:none;background:#fff;justify-content:center;align-items:center;padding:0 10px;font-size:13px;font-weight:500;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.edit-btn:hover{background:var(--primary-soft);border-color:var(--primary-border);color:var(--primary-color);transform:none}.delete-btn{color:var(--danger);border-color:var(--danger-border)}.delete-btn:hover{background:var(--danger-soft);transform:none}.view-btn{border-radius:var(--radius-sm);width:32px;height:32px;color:var(--text-light);background:0 0}.view-btn:hover{background:var(--slate-100);color:var(--primary-color);box-shadow:none;transform:none}.view-btn svg{font-size:15px}.cards{gap:14px}.card,.module-page .batch-card,.batch-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);transition:border-color .15s,box-shadow .15s}.card:hover,.batch-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-md);transform:none}.card-body h3{color:var(--text-light);letter-spacing:0;text-transform:none;font-size:13px;font-weight:500}.card-body p,.stat-item strong{color:var(--text-dark);letter-spacing:-.02em;font-size:24px;font-weight:600;line-height:1.2}.card-image{border-radius:var(--radius-md)}.active-batch{border-color:var(--primary-color);box-shadow:0 0 0 1px var(--primary-color)}.batch-title,.batch-top h3,.batch-info h3,.module-page .batch-top h3,.module-page .batch-title1{color:var(--text-dark);letter-spacing:-.01em;font-size:15px;font-weight:600}.batch-subtitle,.batch-dates{color:var(--text-light);font-size:13px}.table-wrapper{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-card);box-shadow:var(--shadow-sm);overflow:auto}.training-table,.score-table{border-collapse:collapse;width:100%;min-width:0;font-size:14px}.training-table thead th,.score-table thead th{background:var(--slate-50);border-bottom:1px solid var(--border);letter-spacing:.06em;text-transform:uppercase;color:var(--text-light);text-align:left;white-space:nowrap;padding:10px 14px;font-size:11px;font-weight:600}.training-table tbody td,.score-table tbody td{border-bottom:1px solid var(--slate-100);color:var(--text-body);padding:11px 14px;font-size:14px}.training-table tbody tr:last-child td,.score-table tbody tr:last-child td{border-bottom:none}.training-table tbody tr:hover,.score-table tbody tr:hover{background:var(--slate-50)}.attempt-header td{background:var(--slate-100);color:var(--text-dark);padding:9px 14px;font-size:13px;font-weight:600}.training-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;margin-bottom:14px;display:flex}.training-actions,.actions-head-inner{flex-wrap:wrap;gap:8px;display:flex}.badge,.status-badge,.login-created-badge{letter-spacing:0;text-transform:none;box-shadow:none;border-radius:999px;align-items:center;padding:3px 9px;font-size:12px;font-weight:500;line-height:1.5;display:inline-flex}.badge-success,.status-badge.pass,.login-created-badge{background:var(--success-soft);color:var(--success)}.badge-danger,.status-badge.fail{background:var(--danger-soft);color:var(--danger)}.badge-warning{background:var(--warning-soft);color:var(--warning)}.badge-info{background:var(--info-soft);color:var(--info)}.not-created-text{color:var(--text-muted);font-size:13px}.field{margin-bottom:14px}.field label{color:var(--text-body);margin-bottom:5px;font-size:13px;font-weight:500}.field input,.field select,.field textarea,.login-input{border:1px solid var(--border-strong);border-radius:var(--radius-md);width:100%;height:38px;color:var(--text-dark);background:#fff;padding:0 12px;font-family:inherit;font-size:14px;transition:border-color .15s,box-shadow .15s}.field input:focus,.field select:focus,.field textarea:focus,.login-input:focus{border-color:var(--primary-color);outline:none;box-shadow:0 0 0 3px #2563eb1f}.field input::placeholder,.login-input::placeholder{color:var(--text-muted)}.modal-overlay{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0f172a73;padding:24px;overflow-y:auto}.modal{border-radius:var(--radius-xl);border:1px solid var(--border);background:#fff;flex-direction:column;width:100%;max-width:500px;max-height:calc(100vh - 48px);display:flex;overflow:hidden;box-shadow:0 16px 48px #0f172a2e}.modal-sm{max-width:380px}.modal-lg{max-width:760px}.modal-wide,.modal-xl{max-width:1040px}.modal-top-bar{display:none}.modal-header{border-bottom:1px solid var(--border);background:#fff;flex:none;justify-content:space-between;align-items:flex-start;gap:14px;padding:18px 20px;display:flex}.modal-header h2,.modal-title h2{color:var(--text-dark);letter-spacing:-.01em;margin:0;font-size:16px;font-weight:600}.modal-header p,.modal-title p{color:var(--text-light);margin:3px 0 0;font-size:13px;font-weight:400;line-height:1.5}.modal-title{align-items:flex-start;gap:12px;display:flex}.modal-icon{border-radius:var(--radius-md);background:var(--primary-soft);width:34px;height:34px;box-shadow:none;flex:none;justify-content:center;align-items:center;font-size:16px;display:flex}.close-btn{border-radius:var(--radius-sm);width:30px;height:30px;color:var(--text-light);cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;font-size:20px;line-height:1;transition:background .15s,color .15s;display:flex}.close-btn:hover{background:var(--slate-100);color:var(--text-dark);transform:none}.modal-body{-webkit-overflow-scrolling:touch;flex:auto;padding:20px;overflow-y:auto}.modal-footer{border-top:1px solid var(--border);background:var(--slate-50);flex:none;justify-content:flex-end;gap:8px;padding:14px 20px;display:flex}.modal-tabs{background:var(--slate-100);border-radius:var(--radius-md);gap:2px;padding:3px;display:flex}.modal-tab{border-radius:var(--radius-sm);color:var(--text-light);cursor:pointer;background:0 0;border:none;flex:1;padding:8px 14px;font-family:inherit;font-size:13px;font-weight:500}.modal-tab.active{color:var(--primary-color);box-shadow:var(--shadow-sm);background:#fff}.excel-dropzone{border:1.5px dashed var(--border-strong);border-radius:var(--radius-lg);background:var(--slate-50);padding:26px 20px;transition:border-color .15s,background .15s}.excel-dropzone:hover{border-color:var(--primary-color);background:var(--primary-soft)}.excel-drop-icon{opacity:.55;font-size:26px}.excel-drop-title{color:var(--text-dark);font-size:14px;font-weight:500}.excel-drop-sub{color:var(--text-light);font-size:12px}.pagination,.score-pagination{align-items:center;gap:5px;margin-top:16px;display:flex}.pagination button,.score-pagination button{border:1px solid var(--border);border-radius:var(--radius-sm);min-width:32px;height:32px;color:var(--text-body);cursor:pointer;box-shadow:none;background:#fff;padding:0 9px;font-family:inherit;font-size:13px;font-weight:500;transition:background .15s,border-color .15s}.pagination button:hover:not(:disabled),.score-pagination button:hover:not(:disabled){background:var(--slate-50);border-color:var(--border-strong);transform:none}.pagination button.active,.score-pagination button.active,.pagination button[aria-current=true]{background:var(--primary-color);border-color:var(--primary-color);color:#fff}.pagination button:disabled,.score-pagination button:disabled{opacity:.45;cursor:not-allowed}.login-page,.login-bg{background:var(--bg-body)}.login-card{border:1px solid var(--border);border-radius:var(--radius-xl);max-width:380px;box-shadow:var(--shadow-lg);background:#fff;padding:32px 28px}.login-title{color:var(--text-dark);letter-spacing:-.01em;-webkit-text-fill-color:currentColor;background:0 0;font-size:19px;font-weight:600}.login-logo{width:auto;height:40px}.login-btn{border-radius:var(--radius-md);background:var(--primary-color);color:#fff;width:100%;height:40px;box-shadow:none;border:none;font-size:14px;font-weight:500}.login-btn:hover{background:var(--primary-hover);transform:none}.login-error{color:var(--danger);font-size:13px}.show-pass{color:var(--text-light);background:0 0}.swal2-popup{border-radius:var(--radius-xl);font-family:var(--font);padding:24px;font-size:14px}.swal2-title{color:var(--text-dark)!important;font-size:17px!important;font-weight:600!important}.swal2-html-container{color:var(--text-light)!important;font-size:14px!important}.swal2-confirm{background:var(--primary-color)!important;border-radius:var(--radius-md)!important;box-shadow:none!important;padding:9px 18px!important;font-size:14px!important;font-weight:500!important}.swal2-cancel{border:1px solid var(--border)!important;color:var(--text-body)!important;border-radius:var(--radius-md)!important;background:#fff!important;padding:9px 18px!important;font-size:14px!important;font-weight:500!important}.swal2-icon{transform:scale(.82)}.toast-success,.toast-error{border-radius:var(--radius-md);box-shadow:var(--shadow-lg);font-size:14px}@media (width<=992px){.sidebar{width:200px;min-width:200px}.main-content{padding:18px}}@media (width<=768px){.sidebar{border-right:none;border-bottom:1px solid var(--slate-800);width:100%;min-width:0;height:auto;padding:10px 12px;position:relative;top:0}.sidebar-menu{flex-wrap:wrap;gap:4px;display:flex}.sidebar-link{margin-bottom:0;padding:7px 11px;font-size:13px}.sidebar-title{margin:8px 4px 5px}.page-title,.dashboard-title{font-size:18px}.main-content{padding:14px}.training-table,.score-table{min-width:680px}}@media (width<=640px){.modal-overlay{align-items:flex-end;padding:0}.modal,.modal-sm,.modal-lg,.modal-wide,.modal-xl{border-radius:var(--radius-xl) var(--radius-xl) 0 0;border-bottom:none;max-width:100%;max-height:92vh}.modal-footer{flex-direction:column-reverse}.modal-footer>*{width:100%}}@media (width<=480px){.card-body p,.stat-item strong{font-size:20px}.page-title,.dashboard-title{font-size:17px}.action-btn,.save-btn,.details-btn,.all-bopt-btn,.btn-outline,.btn-cancel{width:100%}}.simulator-cards .card{background:var(--bg-card);color:var(--text-body);border:1px solid var(--border)}.simulator-cards .card h3,.simulator-cards .card h4{color:var(--text-light);font-size:13px;font-weight:500}.simulator-cards .card p,.simulator-cards .card strong{color:var(--text-dark)}.simulator-cards .card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-md)}.simulator-cards{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px}.modal-top-bar{background:0 0;display:none}.show-pass:hover{color:var(--primary-color)}.login-logo{filter:none}.btn-cancel{border-color:var(--border)}.student-form input:focus,.batch-form input:focus,.module-page .batch-form input:focus,.student-form select:focus,.batch-form select:focus{border-color:var(--primary-color);box-shadow:0 0 0 3px #2563eb1f}.pagination button:hover,.score-pagination button:hover{box-shadow:none}.kpi-row{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;display:grid}.kpi-tile{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);flex-direction:column;gap:6px;padding:16px 18px 16px 20px;display:flex;position:relative;overflow:hidden}.kpi-tile:before{content:"";background:var(--kpi-accent,var(--primary-color));width:3px;position:absolute;inset:0 auto 0 0}.kpi-indigo{--kpi-accent:#4f46e5}.kpi-blue{--kpi-accent:#2563eb}.kpi-teal{--kpi-accent:#0d9488}.kpi-amber{--kpi-accent:#d97706}.kpi-label{color:var(--text-light);font-size:12px;font-weight:500}.kpi-value{letter-spacing:-.02em;color:var(--text-dark);font-variant-numeric:tabular-nums;font-size:26px;font-weight:600;line-height:1.1}.sim-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px;display:grid}.sim-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);flex-direction:column;gap:14px;padding:18px;transition:border-color .15s,box-shadow .15s;display:flex}.sim-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-md)}.sim-card-head{justify-content:space-between;align-items:center;gap:10px;display:flex}.sim-card-head h3{color:var(--text-dark);text-transform:capitalize;letter-spacing:-.01em;margin:0;font-size:15px;font-weight:600}.sim-stats{border-top:1px solid var(--slate-100);border-bottom:1px solid var(--slate-100);grid-template-columns:repeat(3,1fr);gap:10px;padding:12px 0;display:grid}.sim-stat{flex-direction:column;gap:2px;display:flex}.sim-stat strong{color:var(--text-dark);font-variant-numeric:tabular-nums;font-size:19px;font-weight:600;line-height:1.15}.sim-stat span{color:var(--text-light);font-size:12px}.sim-rate-head{color:var(--text-light);justify-content:space-between;align-items:baseline;margin-bottom:7px;font-size:13px;display:flex}.sim-rate-head strong{color:var(--text-dark);font-variant-numeric:tabular-nums;font-size:15px;font-weight:600}.sim-bar{background:var(--danger-soft);border-radius:999px;height:6px;overflow:hidden}.sim-bar-fill{background:var(--success);border-radius:999px;height:100%;transition:width .4s}.sim-rate-foot{flex-wrap:wrap;gap:6px;margin-top:9px;display:flex}.sim-empty{color:var(--text-muted);margin:0;font-size:13px}.chart-section h2{color:var(--text-dark);font-size:15px;font-weight:600}@media (prefers-reduced-motion:reduce){.sim-bar-fill{transition:none}}@media (width<=480px){.kpi-row{grid-template-columns:repeat(2,1fr)}.kpi-value{font-size:22px}}@media (width<=860px){.table-wrapper,.model-table-wrapper{box-shadow:none;background:0 0;border:none;padding:10px;overflow-x:visible}.training-table,.score-table{min-width:0}.training-table,.training-table tbody,.training-table tr,.training-table td,.score-table,.score-table tbody,.score-table tr,.score-table td{width:100%;display:block}.training-table thead,.score-table thead{display:none}.training-table tbody tr,.score-table tbody tr{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-card);box-shadow:var(--shadow-sm);margin-bottom:10px;overflow:hidden}.training-table tbody tr:last-child,.score-table tbody tr:last-child{margin-bottom:0}.training-table tbody tr:hover,.score-table tbody tr:hover{background:var(--bg-card)}.training-table tbody td,.score-table tbody td{border-bottom:1px solid var(--slate-100);text-align:right;justify-content:space-between;align-items:center;gap:14px;padding:9px 13px;display:flex}.training-table tbody tr td:last-child,.score-table tbody tr td:last-child{border-bottom:none}.training-table tbody td:before,.score-table tbody td:before{content:attr(data-label);letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted);text-align:left;flex:none;font-size:11px;font-weight:600}.training-table tbody td[data-label=""],.score-table tbody td[data-label=""]{justify-content:flex-end}.training-table tbody td[data-label=""]:before,.score-table tbody td[data-label=""]:before,.training-table tbody td[colspan]:before,.score-table tbody td[colspan]:before{display:none}.training-table tbody td[colspan],.score-table tbody td[colspan]{color:var(--text-light);justify-content:center}.action-cell,.student-action-group{justify-content:flex-end;gap:6px}.check-col{display:none!important}}.navbar-right{align-items:center;gap:14px;display:flex}.navbar-scope{border:1px solid var(--primary-border);background:var(--primary-soft);color:var(--primary-hover);white-space:nowrap;text-transform:capitalize;border-radius:999px;padding:5px 11px;font-size:12.5px;font-weight:600}.navbar-identity{text-align:right;flex-direction:column;line-height:1.3;display:flex}.navbar-identity strong{color:var(--text-dark);font-size:13.5px;font-weight:600}.navbar-identity span{color:var(--text-light);font-size:11.5px}.logout-icon{border:1px solid var(--border);border-radius:var(--radius-md);cursor:pointer;background:#fff;justify-content:center;align-items:center;width:34px;height:34px;display:flex}@media (width<=640px){.navbar-identity{display:none}.navbar-scope{text-overflow:ellipsis;max-width:42vw;overflow:hidden}}.auth-page{background:var(--bg-body);grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);min-height:100vh;display:grid}.auth-brand{background:var(--slate-900);color:var(--slate-300);flex-direction:column;justify-content:space-between;gap:40px;padding:40px 48px;display:flex;position:relative;overflow:hidden}.auth-brand:after{content:"";pointer-events:none;background:radial-gradient(circle,#2563eb47,#0000 68%);border-radius:50%;width:620px;height:620px;position:absolute;top:-200px;right:-240px}.auth-brand>*{z-index:1;position:relative}.auth-brand-top{color:#fff;letter-spacing:-.01em;align-items:center;gap:11px;font-size:15px;font-weight:600;display:flex}.auth-brand-logo{border-radius:var(--radius-sm);width:auto;height:30px}.auth-brand-body h1{letter-spacing:-.02em;color:#fff;max-width:14ch;margin:0 0 12px;font-size:30px;font-weight:600;line-height:1.2}.auth-brand-body p{max-width:44ch;color:var(--slate-400);margin:0 0 30px;font-size:14.5px;line-height:1.65}.auth-brand-points{flex-direction:column;gap:16px;margin:0;padding:0;list-style:none;display:flex}.auth-brand-points li{border-left:2px solid #94a3b847;flex-direction:column;gap:2px;padding-left:16px;display:flex}.auth-brand-points strong{color:#fff;font-size:13.5px;font-weight:600}.auth-brand-points span{color:var(--slate-500);font-size:13px;line-height:1.5}.auth-brand-foot{color:var(--slate-600);margin:0;font-size:12px}.auth-form-side{justify-content:center;align-items:center;padding:40px 24px;display:flex}.auth-card{width:100%;max-width:372px}.auth-card-logo{width:auto;height:34px;margin-bottom:18px;display:none}.auth-card h2{letter-spacing:-.02em;color:var(--text-dark);margin:0 0 6px;font-size:22px;font-weight:600}.auth-card-sub{color:var(--text-light);margin:0 0 24px;font-size:14px;line-height:1.55}.auth-field{margin-bottom:16px}.auth-field label{color:var(--text-body);margin-bottom:6px;font-size:13px;font-weight:500;display:block}.auth-field input{border:1px solid var(--border-strong);border-radius:var(--radius-md);width:100%;height:44px;color:var(--text-dark);background:#fff;padding:0 14px;font-family:inherit;font-size:15px;transition:border-color .15s,box-shadow .15s}.auth-field input::placeholder{color:var(--text-muted)}.auth-field input:focus{border-color:var(--primary-color);outline:none;box-shadow:0 0 0 3px #2563eb21}.auth-input-group{position:relative}.auth-input-group input{padding-right:46px}.auth-reveal{border-radius:var(--radius-sm);width:34px;height:34px;color:var(--text-light);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;font-size:16px;transition:background .15s,color .15s;display:flex;position:absolute;top:50%;right:6px;transform:translateY(-50%)}.auth-reveal:hover{background:var(--slate-100);color:var(--text-dark)}.auth-reveal:focus-visible{outline:none;box-shadow:0 0 0 3px #2563eb40}.auth-submit{border-radius:var(--radius-md);background:var(--primary-color);color:#fff;cursor:pointer;border:none;width:100%;height:44px;margin-top:8px;font-family:inherit;font-size:15px;font-weight:500;transition:background .15s}.auth-submit:hover:not(:disabled){background:var(--primary-hover)}.auth-submit:disabled{opacity:.5;cursor:not-allowed}.auth-submit:focus-visible{outline:none;box-shadow:0 0 0 3px #2563eb4d}.auth-error{border:1px solid var(--danger-border);border-radius:var(--radius-md);background:var(--danger-soft);color:#991b1b;align-items:flex-start;gap:9px;margin-bottom:18px;padding:11px 13px;font-size:13.5px;line-height:1.5;display:flex}.auth-error svg{flex:none;margin-top:1px;font-size:16px}.auth-help{color:var(--text-muted);text-align:center;margin:20px 0 0;font-size:12.5px}@media (width<=900px){.auth-page{grid-template-columns:1fr}.auth-brand{display:none}.auth-card-logo{display:block}.auth-form-side{align-items:flex-start;padding-top:56px}}@media (width<=420px){.auth-form-side{padding:40px 18px}.auth-card h2{font-size:20px}}@media (prefers-reduced-motion:reduce){.auth-submit,.auth-reveal,.auth-field input{transition:none}}
