:root{--primary-color:#2c5aa0;--secondary-color:#f8f9fc;--accent-color:#ff6b35;--success-color:#28a745;--warning-color:#ffc107;--danger-color:#dc3545;--info-color:#17a2b8;--dark-color:#2d3748;--light-color:#f7fafc;--border-radius:12px;--shadow-light:0 2px 8px rgba(0,0,0,0.05);--shadow-medium:0 4px 16px rgba(0,0,0,0.1);--shadow-heavy:0 8px 32px rgba(0,0,0,0.15);--gradient-primary:linear-gradient(135deg, #667eea 0%, #764ba2 100%);--gradient-success:linear-gradient(135deg, #11998e 0%, #38ef7d 100%);--gradient-warning:linear-gradient(135deg, #f093fb 0%, #f5576c 100%)}*{box-sizing:border-box}body{font-family:'Inter',-apple-system,BlinkMacSystemFont,sans-serif;background:linear-gradient(135deg,#f5f7fa 0%,#c3cfe2 100%);min-height:100vh;line-height:1.6;color:var(--dark-color)}.container{padding:0 15px}.alert{border:none;border-radius:var(--border-radius);box-shadow:var(--shadow-light);border-left:4px solid;font-weight:500;margin-bottom:1.5rem}.alert-success{background:linear-gradient(135deg,#d4edda 0%,#c3e6cb 100%);border-left-color:var(--success-color);color:#155724}.alert-danger{background:linear-gradient(135deg,#f8d7da 0%,#f1b4b8 100%);border-left-color:var(--danger-color);color:#721c24}.alert-info{background:linear-gradient(135deg,#d1ecf1 0%,#b8daff 100%);border-left-color:var(--info-color);color:#0c5460}.alert-warning{background:linear-gradient(135deg,#fff3cd 0%,#ffeaa7 100%);border-left-color:var(--warning-color);color:#856404}.alert-link{color:inherit;font-weight:600;text-decoration:underline;transition:all 0.3s ease}.alert-link:hover{opacity:.8}.card{border:none;border-radius:var(--border-radius);box-shadow:var(--shadow-medium);background:#fff;overflow:hidden;transition:all 0.3s ease}.card:hover{transform:translateY(-2px);box-shadow:var(--shadow-heavy)}.card-body{padding:1.5rem}.form-control,.form-select{border:2px solid #e2e8f0;border-radius:10px;padding:12px 16px;font-weight:500;transition:all 0.3s ease;background:#fff}.form-control:focus,.form-select:focus{border-color:var(--primary-color);box-shadow:0 0 0 3px rgb(44 90 160 / .1);transform:translateY(-1px)}.form-label{font-weight:600;color:var(--dark-color);margin-bottom:.5rem}.btn{border-radius:10px;padding:12px 24px;font-weight:600;border:none;transition:all 0.3s ease;position:relative;overflow:hidden}.btn:before{content:'';position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgb(255 255 255 / .2),transparent);transition:left 0.5s ease}.btn:hover:before{left:100%}.btn-success{background:var(--gradient-success);box-shadow:0 4px 15px rgb(40 167 69 / .3)}.btn-success:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgb(40 167 69 / .4)}.btn-primary{background:var(--gradient-primary);box-shadow:0 4px 15px rgb(44 90 160 / .3)}.btn-primary:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgb(44 90 160 / .4)}.table-responsive{border-radius:var(--border-radius);overflow:hidden;box-shadow:var(--shadow-medium);background:#fff;margin:1.5rem 0}.table{margin:0;font-size:.95rem}.table th{background:var(--gradient-primary);color:#fff;border:none;padding:16px 12px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;font-size:.85rem}.table td{padding:14px 12px;vertical-align:middle;border-color:#f1f5f9;transition:all 0.2s ease}.table tbody tr:hover{background-color:#f8fafc;transform:scale(1.01);box-shadow:0 2px 8px rgb(0 0 0 / .1)}.table tbody tr:hover td{border-color:#e2e8f0}.table td a{color:var(--primary-color);text-decoration:none;font-weight:600;padding:8px 12px;border-radius:8px;transition:all 0.3s ease;display:inline-block}.table td a:hover{background:var(--primary-color);color:#fff;transform:scale(1.05);box-shadow:0 4px 12px rgb(44 90 160 / .3)}.score-excellent{color:var(--danger-color);font-weight:700;text-shadow:0 1px 2px rgb(220 53 69 / .2)}.score-good{color:var(--accent-color);font-weight:700;text-shadow:0 1px 2px rgb(255 107 53 / .2)}.score-normal{color:#6c757d;font-weight:600}.hour-normal{color:#6c757d!important;font-weight:500}.hour-excellent{color:var(--danger-color);font-weight:700;text-shadow:0 1px 2px rgb(220 53 69 / .2)}.hour-good{color:var(--success-color);font-weight:700;text-shadow:0 1px 2px rgb(40 167 69 / .2)}.hour-medium{color:var(--warning-color);font-weight:700;text-shadow:0 1px 2px rgb(255 193 7 / .2)}.hour-excellent1,.hour-good1,.hour-medium1{padding:4px 8px;border-radius:6px;font-weight:600;font-size:.8rem;margin:2px;display:inline-block;box-shadow:0 2px 4px rgb(0 0 0 / .1)}.hour-excellent1{background:var(--danger-color);color:#fff}.hour-good1{background:var(--success-color);color:#fff}.hour-medium1{background:var(--warning-color);color:#000}.user-info-alert{background:linear-gradient(135deg,#fff3e0 0%,#ffecb3 100%);border:none;border-left:4px solid #ff9800;color:#e65100;box-shadow:var(--shadow-medium)}.date-note{display:inline-flex;align-items:center;gap:.75rem;background:linear-gradient(135deg,rgb(255 255 255 / .95),rgb(248 250 252 / .9));border:1px solid rgb(44 90 160 / .1);box-shadow:var(--shadow-light);padding:12px 18px;border-radius:var(--border-radius);font-size:.95rem;color:var(--primary-color);margin-bottom:1.5rem;user-select:none;backdrop-filter:blur(10px)}.date-note svg{color:var(--primary-color);flex:0 0 18px}.date-note__text strong{font-weight:600;color:var(--dark-color)}.tong-quan-display{line-height:1.5;font-size:.9rem}.tong-quan-display strong{color:var(--primary-color);font-weight:600}.popup-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:rgb(0 0 0 / .5);display:flex;justify-content:center;align-items:center;z-index:9999;opacity:0;visibility:hidden;transition:all 0.3s ease}.popup-overlay.active{opacity:1;visibility:visible}.popup-content{background:#fff;border-radius:15px;padding:2rem;text-align:center;max-width:400px;width:90%;box-shadow:0 10px 40px rgb(0 0 0 / .3);transform:scale(.7) translateY(-50px);transition:all 0.4s cubic-bezier(.68,-.55,.265,1.55)}.popup-overlay.active .popup-content{transform:scale(1) translateY(0)}.popup-content .icon{font-size:3rem;color:var(--success-color);margin-bottom:1rem;animation:bounce 1s infinite}.popup-content h4{color:var(--success-color);margin-bottom:1rem;font-weight:600}.popup-content p{color:#666;margin-bottom:0}.spinner{border:3px solid #f3f3f3;border-top:3px solid var(--success-color);border-radius:50%;width:30px;height:30px;animation:spin 1s linear infinite;margin:1rem auto}@keyframes bounce{0%,20%,50%,80%,100%{transform:translateY(0)}40%{transform:translateY(-10px)}60%{transform:translateY(-5px)}}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.table{table-layout:fixed;width:100%}.table th:nth-child(1),.table td:nth-child(1){width:10%}.table th:nth-child(2),.table td:nth-child(2){width:40%}.table th:nth-child(3),.table td:nth-child(3){width:22%}.table th:nth-child(4),.table td:nth-child(4){width:28%}.gio-tot-display{width:auto!important;max-width:none!important;min-width:auto}@media (max-width:768px){.container{padding:0 8px}.table{table-layout:auto;font-size:.75rem}.table th,.table td{padding:6px 4px;word-wrap:break-word}.table th:nth-child(1),.table td:nth-child(1){width:50px!important;min-width:50px!important;text-align:center!important}.table th:nth-child(2),.table td:nth-child(2){width:auto!important;text-align:left!important}.table th:nth-child(3),.table td:nth-child(3){width:70px!important;min-width:70px!important}.table th:nth-child(4),.table td:nth-child(4){width:55px!important;min-width:55px!important;text-align:center!important}.tong-quan-display{font-size:.7rem;line-height:1.3}.tong-quan-display strong{display:inline}.gio-tot-display{width:70px!important;max-width:70px!important;font-size:.65rem;line-height:1.2;padding:4px!important}.date-note{font-size:.8rem;padding:8px 10px;border-radius:8px}.btn{padding:6px 10px;font-size:.85rem}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}}.loading{opacity:.6;pointer-events:none}.table-responsive::-webkit-scrollbar{height:8px}.table-responsive::-webkit-scrollbar-track{background:#f1f1f1;border-radius:4px}.table-responsive::-webkit-scrollbar-thumb{background:var(--primary-color);border-radius:4px}.table-responsive::-webkit-scrollbar-thumb:hover{background:#1e3a8a}@keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.05)}100%{transform:scale(1)}}.btn-success:hover{animation:pulse 0.6s infinite}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label{color:var(--primary-color);font-weight:600}