:root{--bg-color:#fff;--surface-color:#f9fafb;--surface-hover:#f3f4f6;--border-color:#e5e7eb;--text-primary:#111827;--text-secondary:#6b7280;--accent-color:#000;--accent-hover:#374151;--error-color:#f44;--success-color:#4f4;--warning-color:#fa0;--spacing-xs:.25rem;--spacing-sm:.5rem;--spacing-md:1rem;--spacing-lg:1.5rem;--spacing-xl:2rem;--border-radius-sm:4px;--border-radius-md:8px;--border-radius-lg:12px}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-color);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;line-height:1.5}a{color:var(--accent-color);text-decoration:none}button{cursor:pointer;font-family:inherit}input,select,textarea{color:var(--text-primary);font-family:inherit}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-color)}::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:var(--border-radius-sm)}::-webkit-scrollbar-thumb:hover{background:var(--text-secondary)}.app-container{max-width:1200px;padding:var(--spacing-xl) var(--spacing-md);gap:var(--spacing-lg);box-sizing:border-box;flex-direction:column;height:100dvh;margin:0 auto;display:flex;overflow:hidden}.header{text-align:center;align-items:center;gap:var(--spacing-md);border-bottom:1px solid var(--border-color);padding-bottom:var(--spacing-md);flex-direction:column;flex-shrink:0;display:flex;position:relative}.header-actions{gap:.5rem;display:flex;position:absolute;top:0;right:0}.icon-button{color:var(--text-primary);cursor:pointer;opacity:.7;background:0 0;border:none;justify-content:center;align-items:center;width:36px;height:36px;transition:opacity .2s;display:flex}.icon-button:hover{opacity:1}.school-banner{align-items:center;gap:var(--spacing-sm);flex-direction:column;display:flex}.school-logo{width:auto;height:80px}.school-name{color:var(--text-primary);text-transform:uppercase;letter-spacing:.05em;margin:0;font-size:1.4rem;font-weight:700}.app-title-badge{background-color:var(--surface-color);color:var(--text-secondary);border:1px solid var(--border-color);border-radius:9999px;align-items:center;padding:.4rem 1.2rem;font-size:.85rem;display:inline-flex}.app-title-badge strong{color:var(--text-primary);letter-spacing:.05em;font-weight:800}.card{background-color:var(--surface-color);border:1px solid var(--border-color);border-radius:var(--border-radius-lg);padding:var(--spacing-lg);box-sizing:border-box;flex-direction:column;height:100%;transition:box-shadow .3s;display:flex;overflow:hidden;box-shadow:0 10px 15px -3px #0000000d,0 4px 6px -4px #0000000d}.card:hover{box-shadow:0 20px 25px -5px #0000000d,0 8px 10px -6px #0000000d}.card-title{margin-bottom:var(--spacing-md);border-bottom:1px solid var(--border-color);padding-bottom:var(--spacing-sm);font-size:1.25rem;font-weight:600}.form-group{gap:var(--spacing-sm);margin-bottom:var(--spacing-md);flex-direction:column;display:flex}.input-section .form-group:nth-of-type(2){margin-bottom:var(--spacing-md);flex:1;overflow:hidden}.form-group label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;font-size:.875rem;font-weight:500}.input-field{background-color:var(--bg-color);border:1px solid var(--border-color);border-radius:var(--border-radius-md);padding:var(--spacing-sm) var(--spacing-md);color:var(--text-primary);box-sizing:border-box;width:100%;font-size:1rem;transition:all .2s}.input-field:focus{border-color:var(--accent-color);outline:none;box-shadow:0 0 0 3px #0000000d}.search-box{margin-bottom:var(--spacing-xs);align-items:center;display:flex;position:relative}.search-icon{color:var(--text-secondary);position:absolute;left:12px}.search-input{padding-left:36px}.btn{background-color:var(--accent-color);color:var(--bg-color);border-radius:var(--border-radius-md);padding:var(--spacing-sm) var(--spacing-lg);justify-content:center;align-items:center;gap:var(--spacing-sm);border:none;font-size:1rem;font-weight:600;transition:all .2s;display:inline-flex}.btn:hover{background-color:var(--accent-hover);transform:translateY(-1px)}.btn:active{transform:translateY(0)}.btn-secondary{color:var(--text-primary);border:1px solid var(--border-color);background-color:#0000}.btn-secondary:hover{background-color:var(--surface-hover);border-color:var(--text-secondary)}.table-container{flex:1;overflow:auto}.data-table{border-collapse:collapse;text-align:left;width:100%}.data-table th,.data-table td{padding:var(--spacing-sm) var(--spacing-md);border-bottom:1px solid var(--border-color);white-space:nowrap}.data-table th{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;background-color:var(--surface-color);font-size:.875rem;font-weight:600}.data-table tr:hover td{background-color:var(--surface-hover)}.badge{border-radius:var(--border-radius-sm);text-transform:uppercase;background-color:var(--border-color);color:var(--text-primary);padding:.25rem .5rem;font-size:.75rem;font-weight:600;display:inline-block}.badge.ok{border:1px solid var(--text-secondary);color:var(--text-primary);background-color:#0000}.badge.mismatch{background-color:var(--surface-hover);border:1px dashed var(--text-primary);color:var(--text-primary)}.multi-select-container{gap:var(--spacing-xs);border:1px solid var(--border-color);border-radius:var(--border-radius-md);padding:var(--spacing-sm);background-color:var(--bg-color);flex-direction:column;flex:1;display:flex;overflow-y:auto}.checkbox-item{align-items:center;gap:var(--spacing-sm);padding:var(--spacing-xs);cursor:pointer;display:flex}.checkbox-item:hover{background-color:var(--surface-hover);border-radius:var(--border-radius-sm)}.checkbox-item input[type=checkbox]{accent-color:var(--accent-color);width:16px;height:16px}.main-layout{gap:var(--spacing-lg);flex-direction:column;flex:1;display:flex;overflow:hidden}.input-section,.output-section{flex-direction:column;height:100%;display:flex;overflow:hidden}@media (width>=768px){.main-layout{gap:var(--spacing-xl)}}@media (width<=767px){.app-container{padding:var(--spacing-lg) var(--spacing-md);gap:var(--spacing-lg)}.school-logo{height:60px}.school-name{text-align:center;font-size:1rem}.app-title-badge{gap:.5rem;padding:.4rem .8rem;font-size:.75rem}.app-title h1{display:none}.card{padding:var(--spacing-sm)}}.login-container{background-color:var(--bg-color);justify-content:center;align-items:center;width:100vw;height:100vh;display:flex}.login-card{background-color:var(--surface-color);border:1px solid var(--border-color);border-radius:var(--border-radius-lg);text-align:center;width:90%;max-width:400px;padding:3rem 2rem;box-shadow:0 20px 25px -5px #0000000d}.login-icon{color:var(--text-primary);margin-bottom:1.5rem}.login-title{color:var(--text-primary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.5rem;font-size:1.5rem;font-weight:700}.login-subtitle{color:var(--text-secondary);margin-bottom:2rem;font-size:.9rem}.login-form{flex-direction:column;gap:1rem;display:flex}.login-input{text-align:center;letter-spacing:.2em;padding:1rem;font-size:1.2rem}.login-input.error{border-color:#ef4444}.login-error-text{color:#ef4444;text-align:left;margin-top:-.5rem;font-size:.8rem}.login-btn{width:100%;margin-top:1rem;padding:1rem;font-size:1.1rem}.toast{background-color:var(--surface-color);color:var(--text-primary);border-radius:var(--border-radius);border:1px solid var(--border-color);z-index:1000;align-items:center;gap:.5rem;padding:1rem 2rem;animation:.3s ease-out forwards slideUp;display:flex;position:fixed;bottom:2rem;left:50%;transform:translate(-50%);box-shadow:0 4px 6px -1px #00000080}.toast.error{color:#ef4444;border-color:#ef4444}.toast.success{border-color:var(--accent-color)}@keyframes slideUp{0%{opacity:0;transform:translate(-50%,100%)}to{opacity:1;transform:translate(-50%)}}.manual-content{line-height:1.6}.manual-content h2{color:var(--accent-color);border-bottom:1px solid var(--border-color);margin-top:2rem;margin-bottom:1rem;padding-bottom:.5rem}.manual-content h3{color:var(--text-primary);margin-top:1.5rem;margin-bottom:.75rem}.manual-content p,.manual-content ul{color:var(--text-secondary);margin-bottom:1rem}.manual-content li{margin-bottom:.5rem}.manual-content table{border-collapse:collapse;width:100%;margin-bottom:1.5rem}.manual-content th,.manual-content td{border:1px solid var(--border-color);text-align:left;padding:.75rem}.manual-content th{background-color:var(--surface-color);color:var(--text-primary)}.manual-content tr:nth-child(2n){background-color:#ffffff05}
