:root{--primary: #0B1D2E;--primary-light: #33445A;--secondary: #FA475C;--secondary-light: #FB6879;--bg: #DBD9D7;--border: #C5C3C2;--grey: #5a6b87;--green: #1e7e34;--red: #b3261e}*{box-sizing:border-box}body{margin:0;font-family:Arial,Helvetica,sans-serif;background:var(--bg);color:#1a1f2b}.hidden{display:none!important}.login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,var(--primary),var(--secondary))}.login-card{background:#fff;padding:40px;border-radius:10px;width:340px;box-shadow:0 10px 30px #00000040}.login-card .logo{display:block;height:44px;margin:0 auto 14px}.login-card h1{font-size:20px;color:var(--primary);margin:0 0 2px;text-align:center}.login-card .subtitle{color:var(--grey);margin:0 0 20px;font-size:13px;text-align:center}.login-card label{display:block;font-size:13px;margin-bottom:12px;color:#333}.login-card input{width:100%;padding:8px 10px;margin-top:4px;border:1px solid var(--border);border-radius:6px;font-size:14px}.login-card button{width:100%;padding:10px;background:var(--primary);color:#fff;border:none;border-radius:6px;font-size:14px;cursor:pointer;margin-top:6px}.login-card button:hover{background:var(--secondary)}.error-text{color:var(--red);font-size:13px;min-height:18px}.hint{font-size:11px;color:var(--grey);text-align:center;margin-top:16px}.view-schedule-link{position:absolute;top:20px;right:24px;color:#fff;font-size:13px;font-weight:600;text-decoration:none;background:#ffffff26;padding:8px 14px;border-radius:6px;border:1px solid rgba(255,255,255,.4)}.view-schedule-link:hover{background:#ffffff47}.public-schedule-card{width:900px;max-width:96vw}.public-schedule-card button{width:auto}.schedule-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin-top:8px}.schedule-table-wrap table{min-width:640px;margin-top:0}@media (max-width: 480px){.login-card.public-schedule-card{padding:24px 16px}}.app{display:flex;min-height:100vh}.topbar{display:flex;flex-direction:column;align-items:stretch;gap:20px;background:var(--primary);color:#fff;padding:20px 14px;width:220px;flex-shrink:0;min-height:100vh;overflow-y:auto}.brand{display:flex;flex-direction:column;align-items:flex-start;gap:10px;font-weight:700;font-size:15px;white-space:normal}.brand .logo{height:36px;width:auto;display:block}.tabs{display:flex;flex-direction:column;gap:4px;flex:1;flex-wrap:nowrap}.tabs button{background:transparent;border:none;color:#ffd7dc;padding:8px 12px;border-radius:6px;cursor:pointer;font-size:13px;text-align:left}.tabs button:hover{background:#ffffff1a;color:#fff}.tabs button.active{background:#fff;color:var(--secondary);font-weight:700}.user-box{display:flex;flex-direction:column;align-items:flex-start;gap:8px;font-size:13px;border-top:1px solid rgba(255,255,255,.15);padding-top:14px}.badge{background:#ffffff26;padding:3px 8px;border-radius:10px;font-size:11px;text-transform:uppercase}.link-btn{background:none;border:1px solid rgba(255,255,255,.4);color:#fff;padding:5px 10px;border-radius:6px;cursor:pointer;font-size:12px;width:100%}.link-btn:hover{background:#ffffff26}.content{flex:1;min-width:0;padding:24px;max-width:1200px;margin:0 auto}.panel{background:#fff;border:1px solid var(--border);border-radius:8px;padding:20px;margin-bottom:20px}.panel h2{margin-top:0;color:var(--primary);font-size:17px}.panel h3{color:var(--secondary);font-size:14px;margin:18px 0 8px}.row{display:flex;gap:24px;flex-wrap:wrap;align-items:flex-start}.col{flex:1;min-width:280px}table{width:100%;border-collapse:collapse;font-size:13px;margin-top:8px}th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border)}th{background:#fff6f7;color:var(--primary);font-size:12px;text-transform:uppercase}tr.clickable{cursor:pointer}tr.clickable:hover{background:#fff9fa}td.clickable{cursor:pointer;color:var(--secondary);text-decoration:underline}td.clickable:hover{color:var(--primary)}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;margin-top:10px}.form-grid label{font-size:12px;color:var(--grey);display:block}.form-grid input,.form-grid select,.form-grid textarea{width:100%;padding:7px 8px;border:1px solid var(--border);border-radius:5px;margin-top:3px;font-size:13px}button.primary{background:var(--primary);color:#fff;border:none;padding:8px 16px;border-radius:6px;cursor:pointer;font-size:13px;margin-top:10px}button.primary:hover{background:var(--secondary)}button.small{padding:4px 10px;font-size:12px}button.primary.danger{background:#b3261e}button.primary.danger:hover{background:#8f1e18}button+button{margin-left:6px}select.status-select{padding:4px;border-radius:4px;border:1px solid var(--border)}.search-multiselect-option:hover{background:#fff2f3}.pill{display:inline-block;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:700}.pill.core{background:#ffedef;color:var(--primary)}.pill.elective{background:#fdf1e0;color:#8a5a12}.pill.induction{background:#e6ecfa;color:#26418f}.pill.present{background:#e5f4e9;color:var(--green)}.pill.absent{background:#fbe9e8;color:var(--red)}.pill.late{background:#fff6de;color:#8a6d12}.pill.excused{background:#eee;color:#555}.pill.skill_lab{background:#e6f4f1;color:#146c5c}.pill.knowledge_series{background:#f0e8fa;color:#5b2e8c}.muted{color:var(--grey);font-size:12.5px}.empty{color:var(--grey);font-style:italic;padding:12px 0}.grade-final{font-size:28px;font-weight:700;color:var(--primary)}.subject-list{list-style:none;padding:0;margin:0}.subject-list li{padding:8px 0;border-bottom:1px solid var(--border);display:flex;justify-content:space-between}
