:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light;color:#213547;background-color:#fff;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;min-width:320px;min-height:100vh;background-color:#fff;color:#213547}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#f9f9f9;color:#213547;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}:root{--primary-color: #003366;--primary-hover: #002244;--accent-color: #0056b3;--success-color: #28a745;--danger-color: #dc3545;--warning-color: #ffc107;--bg-color: #f4f6f9;--card-bg: #ffffff;--text-primary: #212529;--text-secondary: #6c757d;--border-color: #dee2e6;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .12), 0 1px 2px rgba(0, 0, 0, .24);--shadow-md: 0 4px 6px rgba(0, 0, 0, .1)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background-color:var(--bg-color);color:var(--text-primary);line-height:1.5;min-height:100vh}.container{max-width:1200px;margin:0 auto;padding:20px}.header{background-color:var(--primary-color);color:#fff;padding:15px 30px;display:flex;justify-content:space-between;align-items:center;box-shadow:var(--shadow-md);margin-bottom:30px}.header h1{font-size:24px;font-weight:600;margin:0;letter-spacing:.5px;text-shadow:none;color:#fff}.header .user-info{display:flex;align-items:center;gap:20px}.header .user-info span{font-size:14px;color:#ffffffe6}.header .user-info button{background-color:#ffffff26;color:#fff;border:1px solid rgba(255,255,255,.2);padding:6px 16px;border-radius:4px;font-size:13px;cursor:pointer;transition:all .2s}.header .user-info button:hover{background-color:#ffffff40}.login-wrapper{position:fixed;top:0;left:0;width:100%;height:100vh;display:flex;justify-content:center;align-items:center;background-color:var(--bg-color);z-index:1000;overflow-y:auto}.login-wrapper.course-list-wrapper{position:relative;height:auto;min-height:100vh;display:block;overflow-y:visible;padding:0}.login-wrapper.course-list-wrapper .course-wrapper{margin:0 auto;padding:10px}.card{background:var(--card-bg);padding:40px;border-radius:8px;box-shadow:var(--shadow-md);width:100%;max-width:400px;border:1px solid var(--border-color)}.card .user-info{text-align:center;margin-bottom:20px;color:var(--text-secondary);font-size:14px}.card .waiting-info{margin:0;padding:40px 20px;background:transparent;box-shadow:none}.course-wrapper{width:100%;max-width:1600px;padding:10px 20px}.card h2{color:var(--primary-color);text-align:center;margin-bottom:30px;font-weight:700}.card form{display:flex;flex-direction:column;gap:20px}.card input[type=text],.card input[type=password]{width:100%;padding:12px;border:1px solid var(--border-color);border-radius:4px;font-size:15px;transition:border-color .2s}.card input:focus{outline:none;border-color:var(--accent-color);box-shadow:0 0 0 3px #0056b31a}.card button{width:100%;padding:12px;background-color:var(--primary-color);color:#fff;border:none;border-radius:4px;font-size:16px;font-weight:600;cursor:pointer;transition:background-color .2s}.card button:hover{background-color:var(--primary-hover)}.waiting-info{text-align:center;padding:60px 20px;background:#fff;border-radius:8px;box-shadow:var(--shadow-sm);max-width:600px;margin:40px auto 0}.waiting-info .rank{font-size:18px;color:var(--text-secondary);margin-bottom:20px}.waiting-info .rank strong{display:block;font-size:64px;color:var(--primary-color);margin-top:10px;font-weight:800}.spinner{border:3px solid var(--border-color);border-top:3px solid var(--primary-color);border-radius:50%;width:40px;height:40px;animation:spin 1s linear infinite;margin:0 auto 20px}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.search-panel{background:#fff;padding:20px;border-radius:8px;box-shadow:var(--shadow-sm);margin-bottom:20px;border:1px solid var(--border-color)}.search-panel h3{font-size:16px;color:var(--text-primary);margin-bottom:15px;border-bottom:2px solid var(--primary-color);padding-bottom:10px;display:inline-block}.search-form{display:flex;gap:20px;align-items:flex-end;flex-wrap:wrap}.search-form label{display:flex;flex-direction:column;gap:5px;font-size:13px;font-weight:600;color:var(--text-secondary)}.search-form select,.search-form input{padding:8px 12px;border:1px solid var(--border-color);border-radius:4px;min-width:150px;font-size:14px;background-color:#fff}.search-form button{padding:9px 24px;background-color:var(--primary-color);color:#fff;border:none;border-radius:4px;font-weight:600;cursor:pointer;transition:background-color .2s}.search-form button:hover{background-color:var(--primary-hover)}.btn-success{background-color:#28a745!important}.btn-success:hover{background-color:#218838!important}.course-list{background:#fff;padding:20px;border-radius:8px;box-shadow:var(--shadow-sm);border:1px solid var(--border-color)}.course-list h3{font-size:18px;margin-bottom:20px;color:var(--text-primary)}.course-list-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;flex-wrap:wrap;gap:15px}.course-list-header h3{margin:0}.last-updated{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--text-secondary)}.btn-refresh{background-color:var(--accent-color);color:#fff;border:none;padding:6px 12px;border-radius:4px;font-size:12px;cursor:pointer;transition:background-color .2s;white-space:nowrap}.btn-refresh:hover:not(:disabled){background-color:#004494}.btn-refresh:disabled{opacity:.6;cursor:not-allowed}table{width:100%;border-collapse:separate;border-spacing:0;font-size:12px}thead{background-color:#f8f9fa;border-bottom:2px solid var(--border-color)}th{position:sticky;top:0;padding:8px 6px;text-align:center;font-weight:600;color:var(--text-primary);white-space:nowrap;background-color:#f8f9fa;z-index:10;box-shadow:0 2px 2px -1px #0000001a}td{padding:8px 6px;border-bottom:1px solid var(--border-color);color:var(--text-secondary);vertical-align:middle}.col-code{width:70px;text-align:center}.col-class{width:40px;text-align:center}.col-grade{width:45px;text-align:center;white-space:nowrap}.col-compl{width:50px;text-align:center}.col-credit{width:35px;text-align:center}.col-prof{width:80px;text-align:center}.col-enrolled{width:100px;text-align:center}.col-time{width:130px;font-size:10.5px;white-space:normal;line-height:1.2}.course-list-scroll th:last-child,.course-list-scroll td:last-child{position:sticky;right:0;background-color:#fff!important;z-index:5;box-shadow:-2px 0 5px #0000000d;border-left:1px solid var(--border-color);width:90px;min-width:90px;text-align:center}.course-list-scroll th:last-child{background-color:#f8f9fa!important;z-index:15}tr:hover .course-list-scroll td:last-child{background-color:#f8f9fa!important}tr:hover td{background-color:#f8f9fa;color:var(--text-primary)}.seats-available{color:var(--success-color);font-weight:600}.seats-warning{color:var(--warning-color);font-weight:700}.seats-critical{color:var(--danger-color);font-weight:700;animation:pulse 2s ease-in-out infinite}.seats-full{color:#999;font-weight:600;text-decoration:line-through}.remaining-badge{font-size:11px;font-weight:500;opacity:.9}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}.action-buttons{display:flex;gap:8px;flex-wrap:nowrap}.btn-enroll{background-color:var(--primary-color);color:#fff;border:none;padding:6px 16px;border-radius:4px;font-size:13px;cursor:pointer;transition:background-color .2s;white-space:nowrap}.btn-enroll:hover:not(:disabled){background-color:var(--primary-hover)}.btn-retake{background-color:#ff9800;color:#fff;border:none;padding:6px 16px;border-radius:4px;font-size:13px;cursor:pointer;transition:background-color .2s;white-space:nowrap}.btn-retake:hover:not(:disabled){background-color:#f57c00}.btn-cancel{background-color:#fff;color:var(--danger-color);border:1px solid var(--danger-color);padding:6px 16px;border-radius:4px;font-size:13px;cursor:pointer;transition:all .2s;white-space:nowrap}.btn-cancel:hover:not(:disabled){background-color:var(--danger-color);color:#fff}.btn-enroll:disabled,.btn-cancel:disabled,.btn-retake:disabled{opacity:.5;cursor:not-allowed;background-color:#e9ecef!important;color:#adb5bd!important;border-color:#e9ecef!important}.message-banner{padding:12px 20px;margin-bottom:20px;border-radius:4px;font-size:14px;font-weight:500;text-align:center}.message-banner.success{background-color:#d4edda;color:#155724;border:1px solid #c3e6cb}.message-banner.error{background-color:#f8d7da;color:#721c24;border:1px solid #f5c6cb}.mobile-notice{background-color:#fff3cd;color:#856404;border:1px solid #ffeaa7;padding:12px 16px;border-radius:6px;font-size:13px;line-height:1.6;margin:12px 0;text-align:left}@media(max-width:768px){.search-form{flex-direction:column;align-items:stretch}.search-form button{width:100%}th,td{padding:10px;font-size:13px}.header{flex-direction:column;gap:15px;text-align:center}.course-list-header{flex-direction:column;align-items:flex-start}.last-updated{width:100%;justify-content:space-between}.btn-enroll,.btn-cancel{padding:10px 20px;font-size:14px;min-height:44px;min-width:60px}.search-form label{margin-bottom:12px}.course-list-scroll{border:2px solid #e0e0e0;border-radius:8px}}@media(max-width:375px){.course-wrapper{padding:5px 10px}th,td{padding:6px 4px;font-size:11px}.btn-enroll,.btn-cancel{padding:8px 12px;font-size:12px}h1{font-size:1.5em}h3{font-size:1.1em}}.course-lists-container{display:flex;gap:10px;margin-top:15px}.course-lists-container .course-list-panel:first-child{flex:6}.course-lists-container .course-list-panel:last-child{flex:4}.course-list-panel{flex:1;background:#fff;border-radius:8px;box-shadow:var(--shadow-sm);border:1px solid var(--border-color);display:flex;flex-direction:column;min-height:300px;max-height:calc(100vh - 350px)}.course-list-scroll{overflow-y:auto;flex:1;padding:0 0 20px 20px}.credits-summary{background:#e3f2fd;padding:10px 15px;border-radius:4px;font-size:14px;color:var(--primary-color)}.actual-credits{color:var(--text-secondary);font-size:13px;font-weight:400}.subject-name{font-size:14px;color:var(--text-primary);display:block;margin-bottom:2px}.dept-name{font-size:11px;color:#d32f2f;margin-top:4px;font-weight:500}.credit-excluded{opacity:.7}.credit-excluded-badge{background:#ffa726;color:#fff;padding:2px 8px;border-radius:3px;font-size:11px;margin-right:6px;font-weight:600}@media(max-width:768px){.course-lists-container{flex-direction:column}.course-list-panel{min-height:400px;max-height:500px}.modal-content{max-width:95vw}}.modal-overlay{position:fixed;inset:0;background:#000000b3;display:flex;justify-content:center;align-items:center;z-index:1000}.modal-content{background:#fff;border-radius:12px;max-width:60vw;max-height:90vh;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 10px 40px #0000004d}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:2px solid var(--border-color)}.modal-header h2{margin:0;font-size:1.5em}.modal-close{background:none;border:none;font-size:24px;cursor:pointer;color:var(--text-secondary);padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center}.modal-close:hover{color:var(--danger-color)}.timetable-container{overflow:auto;padding:20px;flex:1}.timetable{width:100%;border-collapse:collapse;font-size:11px;table-layout:fixed}.timetable th:first-child,.timetable td:first-child{width:80px}.timetable th:not(:first-child),.timetable td:not(:first-child){width:calc((100% - 80px) / 6)}.timetable th,.timetable td{border:1px solid var(--border-color);padding:8px;text-align:center;vertical-align:middle}.timetable th{background-color:var(--primary-color);color:#fff;font-weight:600;position:static!important;box-shadow:none!important}.timetable .time-cell{background-color:#f8f9fa;font-weight:600;min-width:80px}.timetable .time-value{font-size:10px;color:var(--text-secondary);font-weight:400}.timetable .has-class{background-color:#e3f2fd}.timetable .class-info{font-size:10px;line-height:1.4;text-align:left;padding:4px}.timetable .class-info div{margin-bottom:2px}.timetable .class-info div:first-child{font-weight:600;color:var(--primary-color)}.server-error-overlay{position:fixed;inset:0;background-color:#000000b3;z-index:9999;display:flex;align-items:center;justify-content:center;padding:16px}.server-error-modal{background-color:#fff;border-radius:8px;box-shadow:0 10px 40px #0000004d;padding:32px;max-width:400px;width:100%;text-align:center}.server-error-icon{font-size:48px;margin-bottom:16px}.server-error-title{font-size:24px;font-weight:700;color:#1f2937;margin-bottom:8px}.server-error-message{color:#6b7280;margin-bottom:24px;line-height:1.5}.server-error-button{background-color:var(--primary-color);color:#fff;border:none;padding:12px 24px;border-radius:8px;font-size:16px;font-weight:600;cursor:pointer;transition:background-color .2s;width:100%}.server-error-button:hover{background-color:var(--primary-hover)}.enrollment-error-overlay{position:fixed;inset:0;background-color:#000000bf;z-index:10000;display:flex;align-items:center;justify-content:center;padding:16px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:fadeIn .3s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.enrollment-error-modal{background-color:#fff;border-radius:12px;box-shadow:0 20px 50px #0006;padding:40px;max-width:450px;width:100%;text-align:center;border-top:6px solid #ef4444;transform:translateY(0);animation:slideUp .3s ease}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.enrollment-error-icon{font-size:56px;margin-bottom:20px;display:inline-flex;align-items:center;justify-content:center;background:#fdf2f2;border-radius:50%;width:100px;height:100px}.enrollment-error-title{font-size:26px;font-weight:800;color:#1f2937;margin-bottom:12px}.enrollment-error-message{color:#4b5563;margin-bottom:30px;line-height:1.6;font-size:16px;word-break:keep-all}.enrollment-error-button{background-color:#1f2937;color:#fff;border:none;padding:14px 28px;border-radius:8px;font-size:16px;font-weight:700;cursor:pointer;transition:all .2s;width:100%;box-shadow:0 4px 6px #0000001a}.enrollment-error-button:hover{background-color:#374151;transform:translateY(-2px);box-shadow:0 6px 12px #00000026}.enrollment-error-button:active{transform:translateY(0)}@media(max-width:768px){.modal-content{max-width:98vw;padding:0;max-height:95vh}.modal-header{padding:15px}.timetable-container{padding:10px}.timetable th:first-child,.timetable td:first-child{width:45px}.timetable .time-cell{min-width:45px}.timetable th:not(:first-child),.timetable td:not(:first-child){width:calc((100% - 45px) / 6)}.timetable th,.timetable td{padding:4px 2px;font-size:10px}.timetable .time-value{font-size:9px}.timetable .class-info{font-size:9px;padding:2px;line-height:1.2}.online-courses-section{padding:15px 10px!important;margin-top:20px!important}.online-courses-section h3{font-size:16px;margin-bottom:10px}.online-course-list{gap:8px!important}.online-course-list>div{min-width:45%!important;padding:8px!important;flex:1}.online-course-list>div>div:first-child{font-size:13px}.online-course-list>div>div:nth-child(2){font-size:11px!important}.online-course-list>div>div:nth-child(3){font-size:11px!important}}
