body { font-family: 'Inter', sans-serif; }

/* Modal Transitions */
.modal { transition: opacity 0.3s ease; }
.hidden { display: none; }

/* Accordion Animations */
.accordion-content { transition: max-height 0.5s ease-in-out, padding 0.5s ease-in-out; max-height: 0; overflow: hidden; }
.accordion-content.open { max-height: 2000px; }
.course-row.active { background-color: #fef9c3; }

/* Custom Toggle Switch */
.toggle-switch { position: relative; display: inline-block; width: 34px; height: 20px; }
.toggle-switch input { opacity: 0; width: 0; height: 0; }
.slider { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; background-color: #ccc; transition: .4s; border-radius: 20px; }
.slider:before { position: absolute; content: ""; height: 12px; width: 12px; left: 4px; bottom: 4px; background-color: #fff; transition: .4s; border-radius: 50%; }
input:checked + .slider { background-color: #4ade80; }
input:checked + .slider:before { transform: translateX(14px); }

/* Sidebar */
#sidebar { width: 16rem; transition: width 0.3s ease-in-out; flex-shrink: 0; }
body.sidebar-collapsed #sidebar { width: 5rem; }
body.sidebar-collapsed #sidebar .nav-text, body.sidebar-collapsed #sidebar .logo-text { display: none; }
body.sidebar-collapsed #sidebar .nav-link, body.sidebar-collapsed #sidebar .logo-container { justify-content: center; }

/* Calendar */
.day { min-height: 6rem; position: relative; }
.day.selected { background-color: #bee3f8; border-color: #63b3ed; }
.day.drop-target { background-color: #c6f6d5; }
.event-item { cursor: grab; user-select: none; }
.event-item:active { cursor: grabbing; }
.calendar-event { font-size: 9px; padding: 2px 4px; border-radius: 3px; margin-bottom: 1px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* Notification Toast */
.notification { transition: opacity 0.5s, transform 0.5s; transform: translateY(100%); opacity: 0; }
.notification.show { transform: translateY(0); opacity: 1; }

/* Print Styles */
@media print {
    body * { visibility: hidden; }
    .print-area, .print-area * { visibility: visible; }
    .print-area { position: absolute; left: 0; top: 0; width: 100%; padding: 20px; background: white; }
    .no-print { display: none !important; }
}