:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;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;display:flex;place-items:center;min-width:320px;min-height:100vh}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:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}.app{max-width:1400px;margin:0 auto;padding:1rem}.app.coursicle-layout{max-width:none;margin:0;padding:0;width:100vw}.app-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;padding-bottom:1rem;border-bottom:2px solid #eee}.coursicle-layout .app-header{margin-bottom:0;padding:1rem 2rem}.app-header h1{margin:0;color:#333;font-size:2rem}.header-buttons{display:flex;gap:.75rem;align-items:center}.import-button{padding:.75rem 1.5rem;background-color:#007bff;color:#fff;border:none;border-radius:8px;cursor:pointer;font-weight:500}.import-button:hover{background-color:#0056b3}.clear-button{padding:.75rem 1.5rem;background-color:#dc3545;color:#fff;border:none;border-radius:8px;cursor:pointer;font-weight:500;transition:all .2s}.clear-button:hover:not(:disabled){background-color:#c82333}.clear-button:disabled{background-color:#ccc;cursor:not-allowed;opacity:.6}.app-content{min-height:500px}.coursicle-layout{height:100vh;display:flex;flex-direction:column}.main-layout{display:flex;flex:1;gap:1rem;height:calc(100vh - 120px);overflow:hidden;padding:1rem 2rem}.json-input{max-width:800px;margin:0 auto;text-align:left}.json-input h2{text-align:center;margin-bottom:1rem}.json-input textarea{width:100%;padding:1rem;border:2px solid #ddd;border-radius:8px;font-family:monospace;font-size:14px;resize:vertical}.json-input button{padding:.75rem 2rem;background-color:#007bff;color:#fff;border:none;border-radius:8px;cursor:pointer;font-weight:500;margin-top:1rem}.json-input button:hover{background-color:#0056b3}.error{color:#dc3545;margin-top:1rem;padding:.75rem;background-color:#f8d7da;border:1px solid #f5c6cb;border-radius:4px}.sidebar{width:450px;background:#fff;border:2px solid #ddd;border-radius:12px;display:flex;flex-direction:column;overflow:hidden}.course-list.sidebar-layout{display:flex;flex-direction:column;height:100%}.filters{border-bottom:2px solid #eee;background:#f8f9fa;flex-shrink:0}.filters-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem .75rem}.filters-content{padding:0 1rem 1rem;animation:slideDown .2s ease-out;max-height:300px;overflow-y:auto}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.filters h3{margin:0;color:#333;font-size:1.1rem}.toggle-filters-btn{background:#007bff;color:#fff;border:none;border-radius:6px;width:32px;height:32px;font-size:18px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}.toggle-filters-btn:hover{background:#0056b3;transform:scale(1.05)}.filter-group{margin-bottom:.75rem}.filter-group:last-child{margin-bottom:0}.filter-group label{display:block;font-weight:500;color:#555;margin-bottom:.5rem;font-size:14px}.day-checkboxes{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.5rem}.day-checkbox{display:flex;align-items:center;gap:.25rem;cursor:pointer;padding:.25rem .5rem;border:1px solid #ddd;border-radius:6px;background:#fff;transition:all .2s;font-size:12px;min-width:50px;justify-content:center}.day-checkbox:hover{border-color:#007bff;background:#f8f9fa}.day-checkbox input[type=checkbox]{margin:0;width:14px;height:14px}.day-checkbox input[type=checkbox]:checked+.checkbox-label{font-weight:600;color:#007bff}.checkbox-label-full{display:flex;align-items:center;cursor:pointer;position:relative;padding-left:2rem;font-size:14px}.checkbox-label-full input[type=checkbox]{position:absolute;left:0;opacity:0;cursor:pointer;height:20px;width:20px}.checkmark{position:absolute;left:0;height:18px;width:18px;background-color:#fff;border:2px solid #ddd;border-radius:4px;transition:all .2s}.checkbox-label-full:hover input~.checkmark{border-color:#007bff}.checkbox-label-full input:checked~.checkmark{background-color:#007bff;border-color:#007bff}.checkmark:after{content:"";position:absolute;display:none;left:5px;top:1px;width:6px;height:10px;border:solid white;border-width:0 2px 2px 0;transform:rotate(45deg)}.checkbox-label-full input:checked~.checkmark:after{display:block}.filter-group input,.filter-group select{width:100%;padding:.5rem;border:1px solid #ddd;border-radius:6px;font-size:14px}.filter-group input:focus,.filter-group select:focus{outline:none;border-color:#007bff}.courses{flex:1;overflow-y:auto;padding:.75rem;min-height:0}.results-count{font-size:12px;color:#666;margin-bottom:1rem;padding:.5rem 0;border-bottom:1px solid #eee}.course-card{border:1px solid #ddd;border-radius:6px;padding:.75rem;background:#fff;margin-bottom:.5rem;transition:all .2s}.course-card:hover{border-color:#007bff;box-shadow:0 2px 8px #007bff26}.course-card.compact{padding:.65rem}.course-card.conflict{opacity:.6;border-color:#dc3545}.course-card.selected{background:#e9ecef;border-color:#6c757d}.course-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:.75rem}.course-title h4{margin:0 0 .25rem;color:#333;font-size:.9rem;font-weight:600}.course-name{font-size:.8rem;color:#666;line-height:1.2;display:block}.add-button,.remove-button{padding:.25rem .5rem;border:none;border-radius:4px;cursor:pointer;font-weight:600;font-size:1rem;min-width:28px;height:28px;display:flex;align-items:center;justify-content:center}.add-button{background-color:#28a745;color:#fff}.add-button:hover:not(:disabled){background-color:#218838}.add-button:disabled{background-color:#ccc;cursor:not-allowed}.remove-button{background-color:#dc3545;color:#fff}.remove-button:hover{background-color:#c82333}.course-details{font-size:.75rem;line-height:1.3}.enrollment-info{margin-bottom:.5rem}.seats{font-weight:500;color:#28a745}.seats.full{color:#dc3545}.waitlist{color:#ffc107;font-size:.7rem;margin-left:.5rem}.instructor{color:#666;margin-bottom:.5rem;font-style:italic}.meeting-time{margin-bottom:.25rem}.meeting-time .time{font-weight:500;color:#333}.meeting-time .location{color:#666;margin-left:.5rem;font-size:.7rem}.schedule-builder{max-width:800px;margin:0 auto}.schedule-builder h2{text-align:center;margin-bottom:2rem}.selected-courses{display:flex;flex-direction:column;gap:1rem}.selected-course{border:2px solid #007bff;border-radius:12px;padding:1.5rem;background:#f8f9fa}.calendar-panel{flex:1;background:#fff;border:2px solid #ddd;border-radius:12px;display:flex;flex-direction:column;overflow:hidden}.schedule-grid{display:flex;flex-direction:column;height:100%}.schedule-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem;border-bottom:2px solid #eee;background:#f8f9fa}.schedule-header h2{margin:0;font-size:1.5rem;color:#333}.schedule-summary{display:flex;gap:1rem;font-size:.9rem;color:#666}.grid-container{flex:1;overflow:hidden;display:flex;flex-direction:column}.empty-schedule{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;color:#666;font-size:1.1rem}.grid-header{display:grid;grid-template-columns:100px repeat(5,1fr);background-color:#f8f9fa;border-bottom:2px solid #ddd}.time-column-header,.day-header{padding:1rem;font-weight:700;text-align:center;border-right:1px solid #ddd}.day-header:last-child{border-right:none}.grid-body{flex:1;overflow-y:auto;display:flex;flex-direction:column}.time-row{display:grid;grid-template-columns:100px repeat(5,1fr);border-bottom:1px solid #eee;min-height:50px;position:relative}.time-label{padding:.5rem .25rem;text-align:center;font-size:11px;color:#666;border-right:1px solid #ddd;background-color:#f8f9fa;display:flex;align-items:flex-start;justify-content:center;padding-top:0}.time-slot{border-right:1px solid #eee;position:relative;min-height:50px;background:linear-gradient(to bottom,transparent 0%,transparent 99%,#ddd 99%,#ddd 100%)}.time-slot:last-child{border-right:none}.course-block{font-size:10px;line-height:1.2;position:relative;transition:all .2s}.course-block:hover{z-index:10;transform:scale(1.02);box-shadow:0 4px 12px #0003}.course-block.overlapping{border:1px solid rgba(255,255,255,.5)}.remove-course-btn{position:absolute;top:2px;right:2px;width:16px;height:16px;border:none;background:#0009;color:#fff;border-radius:50%;font-size:12px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .2s}.course-block:hover .remove-course-btn{opacity:1}.remove-course-btn:hover{background:#dc3545}@media (max-width: 768px){.main-layout{flex-direction:column;height:auto;padding:.5rem;gap:.5rem}.sidebar{width:100%;height:350px}.calendar-panel{height:400px}.course-header{flex-direction:column;gap:.5rem}.add-button,.remove-button{align-self:flex-start}.grid-container{overflow-x:auto}.time-row{min-width:600px}.grid-header{grid-template-columns:100px repeat(5,1fr)}}.course-details-modal-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.course-details-modal{background:#fff;border-radius:12px;max-width:500px;width:90%;max-height:80vh;overflow-y:auto;box-shadow:0 10px 30px #0000004d}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem;border-bottom:2px solid #eee;background:#f8f9fa;border-radius:12px 12px 0 0}.modal-header h2{margin:0;color:#333;font-size:1.5rem}.close-button{background:none;border:none;font-size:2rem;color:#666;cursor:pointer;padding:0;width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all .2s}.close-button:hover{background:#e9ecef;color:#333}.modal-content{padding:1.5rem}.modal-content h3{margin:0 0 1rem;color:#555;font-size:1.2rem}.course-info p{margin:.5rem 0;font-size:.95rem;line-height:1.4}.meeting-times{margin-top:1.5rem}.meeting-times h4{margin:0 0 1rem;color:#333;font-size:1.1rem}.meeting-detail{background:#f8f9fa;padding:1rem;border-radius:8px;margin-bottom:1rem}.meeting-detail:last-child{margin-bottom:0}.meeting-detail p{margin:.3rem 0;font-size:.9rem}.course-block.hover-preview{animation:fadeIn .2s ease-in-out}@keyframes fadeIn{0%{opacity:0}to{opacity:.4}}
