*{box-sizing:border-box;margin:0;padding:0}body{background:#f5f5f7;justify-content:center;min-height:100vh;font-family:Inter,sans-serif;font-size:16px;display:flex}#root{flex-direction:column;width:100%;max-width:1200px;min-height:100vh;padding:2rem 1.5rem;display:flex}.header{border-bottom:4px solid #000;justify-content:space-between;align-items:center;margin-bottom:2.5rem;padding-bottom:1rem;display:flex}.header-side{flex:1;align-items:center;display:flex}.left-side{justify-content:flex-start}.right-side{justify-content:flex-end}.khit-link{align-items:center;transition:transform .15s;display:flex}.khit-link:hover{transform:scale(1.05)}.khit-logo-img{object-fit:contain;width:44px;height:44px}.logo.center-logo{color:#000;text-align:center;flex:0 auto;font-family:Space Mono,monospace;font-size:2.5rem;font-weight:700}.zitplaatsen-logo-img{object-fit:contain;width:80px;height:80px}.footer{text-align:center;text-transform:uppercase;letter-spacing:2px;border-top:3px solid #000;margin-top:auto;padding-top:1.5rem;font-family:Space Mono,monospace;font-size:.9rem;font-weight:700}.footer a{color:#000;text-decoration:none;transition:color .2s}.footer a:hover{color:#003da5}.login-card{background:#fff;border:4px solid #000;width:100%;max-width:450px;margin:2rem auto;padding:2.5rem;box-shadow:8px 8px #003da5}.login-title{text-align:center;color:#000;justify-content:center;align-items:center;gap:.75rem;margin-bottom:1.5rem;font-family:Space Mono,monospace;font-size:2.5rem;font-weight:700;display:flex}.login-title img{object-fit:contain;width:40px;height:40px}.login-form label{text-transform:uppercase;letter-spacing:.5px;color:#000c;margin-bottom:.4rem;font-family:Space Mono,monospace;font-size:.85rem;font-weight:700;display:block}.login-form input{color:#000;background:#fff;border:3px solid #000;outline:none;width:100%;padding:.8rem 1rem;font-family:Space Mono,monospace;font-size:1rem;font-weight:700}.login-form input:focus{box-shadow:inset 0 0 0 3px #003da5}.login-form .error{color:#c41230;background:#fee;border-left:4px solid #c41230;margin:.5rem 0 1rem;padding-top:.4rem;padding-bottom:.4rem;padding-left:.75rem;font-family:Space Mono,monospace;font-size:.9rem}.login-links{justify-content:space-between;margin-top:1rem;display:flex}.login-links a{color:#003da5;border-bottom:2px solid #0000;font-family:Space Mono,monospace;font-size:.9rem;font-weight:700;text-decoration:none;transition:all .15s}.login-links a:hover{border-bottom-color:#003da5}.btn{text-transform:uppercase;color:#000;cursor:pointer;background:#fff;border:3px solid #000;justify-content:center;align-items:center;width:100%;padding:.8rem 1.5rem;font-family:Space Mono,monospace;font-size:1rem;font-weight:700;text-decoration:none;transition:all .1s;display:inline-flex;box-shadow:4px 4px #000}.btn-primary{color:#fff;background:#003da5;border-color:#003da5;box-shadow:4px 4px #000}.btn-primary:hover{background:#00287a}.btn-danger{color:#c41230;border-color:#c41230}.btn-danger:hover{background:#fee}.btn:active{transform:translate(2px,2px);box-shadow:2px 2px #000}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-sm{width:auto;padding:.5rem .8rem;font-size:.85rem;box-shadow:3px 3px #000}.panel{background:#fff;border:4px solid #000;margin-bottom:2rem;padding:2rem;box-shadow:6px 6px #003da5}.panel-title{text-transform:uppercase;color:#000;margin-bottom:1.5rem;font-family:Space Mono,monospace;font-size:1.4rem;font-weight:700}input:not(.login-form input),select{color:#000;background:#fff;border:3px solid #000;outline:none;padding:.8rem 1rem;font-family:Space Mono,monospace;font-size:1rem;font-weight:700}input:not(.login-form input):focus,select:focus{box-shadow:inset 0 0 0 3px #003da5}.dashboard-header{border-bottom:4px solid #000;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:2rem;padding-bottom:1.5rem;display:flex}.dashboard-header h1{text-transform:uppercase;margin:0;font-family:Space Mono,monospace;font-size:2rem}.class-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.5rem;display:grid}.class-card{background:#fff;border:4px solid #000;padding:1.5rem;box-shadow:6px 6px #003da5}.class-card h3{word-break:break-word;text-transform:uppercase;margin-bottom:.5rem;font-family:Space Mono,monospace;font-size:1.6rem}.student-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;margin-top:1rem;display:grid}.student-card{flexDirection:column;background:#fff;border:3px solid #000;padding:1.2rem;transition:transform .1s;display:flex;box-shadow:4px 4px #000}.student-card:hover{border-color:#003da5;transform:translateY(-2px);box-shadow:6px 6px #003da5}.student-name{text-transform:uppercase;border-bottom:2px solid #eee;margin-bottom:.8rem;padding-bottom:.5rem;font-family:Space Mono,monospace;font-size:1.2rem;font-weight:700;display:block}.student-tags{flex-wrap:wrap;gap:.4rem;min-height:24px;margin-bottom:1rem;display:flex}.tag{text-transform:uppercase;border-radius:2px;padding:.2rem .5rem;font-family:Space Mono,monospace;font-size:.75rem;font-weight:700}.tag-front{color:#1e40af;background:#dbeafe;border:2px solid #1e40af}.tag-back{color:#92400e;background:#fef3c7;border:2px solid #92400e}.tag-must{color:#065f46;background:#d1fae5;border:2px solid #065f46}.tag-cannot{color:#991b1b;background:#fee2e2;border:2px solid #991b1b}.seating-grid{gap:.75rem;min-width:600px;padding:1rem 0;display:grid}.seat-cell{text-align:center;cursor:grab;background:#fff;border:3px solid #000;justify-content:center;align-items:center;min-height:90px;padding:.5rem;font-family:Space Mono,monospace;font-size:.95rem;font-weight:700;display:flex;box-shadow:3px 3px #000}.seat-cell.occupied{background:#f0f4ff;border-color:#003da5;box-shadow:3px 3px #003da5}.teacher-desk{color:#fff;text-transform:uppercase;letter-spacing:2px;background:#333;border:4px solid #000;padding:1rem 3rem;font-family:Space Mono,monospace;font-weight:700;display:inline-block;box-shadow:6px 6px #000}.modal-overlay{z-index:50;background:#0009;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.modal-content{background:#fff;border:4px solid #000;width:100%;max-width:600px;max-height:95vh;padding:2.5rem;overflow-y:auto;box-shadow:8px 8px #003da5}.modal-content h2{text-transform:uppercase;margin-bottom:1.5rem;font-family:Space Mono,monospace;font-size:1.5rem}.modal-actions{gap:1rem;margin-top:2rem;display:flex}@media (width<=768px){#root{padding:1rem}.logo{font-size:1.8rem}.logo img{width:32px;height:32px}.dashboard-header h1{font-size:1.5rem}.panel{padding:1.2rem}.modal-content{padding:1.5rem}.btn,.btn-sm{width:100%;margin-bottom:.5rem}.modal-actions{flex-direction:column;gap:.5rem}.seating-wrapper{padding-bottom:1rem;overflow-x:auto}}
