:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;--text-primary: rgba(255, 255, 255, .87);--text-secondary: rgba(255, 255, 255, .6);--background-color: #242424;--card-bg: #1a1a1a;--sidebar-bg: #1a1a1a;--header-bg: #1a1a1a;--border-color: #333;--hover-bg: #2a2a2a;--active-color: #646cff;--button-bg: #1a1a1a;--button-hover-border: #646cff;--link-color: #646cff;--link-hover: #535bf2;--card-shadow: rgba(0, 0, 0, .2);color:var(--text-primary);background-color:var(--background-color);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}[data-theme=light]{--text-primary: #1a1a1a;--text-secondary: #444444;--background-color: #ffffff;--card-bg: #ffffff;--sidebar-bg: #f8f9fa;--header-bg: #ffffff;--border-color: #e1e4e8;--hover-bg: #f0f2f5;--active-color: #4361ee;--button-bg: #f8f9fa;--button-hover-border: #4361ee;--link-color: #3a56e4;--link-hover: #2541b9;--card-shadow: rgba(0, 0, 0, .08)}a{font-weight:500;color:var(--link-color);text-decoration:inherit}a:hover{color:var(--link-hover)}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:var(--button-bg);cursor:pointer;transition:border-color .25s}button:hover{border-color:var(--button-hover-border)}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}.user-info{display:flex;align-items:center;gap:10px}.setup-link{display:inline-block;padding:8px 16px;border-radius:4px;background-color:var(--accent-color);color:#fff;text-decoration:none;font-weight:500;transition:background-color .2s}.setup-link:hover{background-color:var(--accent-hover)}[data-theme=light] .app-header{box-shadow:0 1px 3px #0000000d}[data-theme=light] .header-logo a{color:var(--active-color)}@media (max-width: 768px){.app-header{padding:1rem}.header-logo a{font-size:1.2rem}}.app-sidebar{background-color:var(--sidebar-bg);border-right:1px solid var(--border-color);transition:width .3s ease;position:relative;display:flex;flex-direction:column;height:100vh;flex-shrink:0;position:sticky;top:0}.expanded{width:220px}.collapsed{width:60px}.toggle-sidebar{position:absolute;top:1rem;right:-12px;background:var(--hover-bg);color:var(--text-primary);border:none;border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:.75rem;z-index:10}.toggle-sidebar:hover{background:var(--button-hover-border);color:#fff}.sidebar-nav{padding:1rem 0;display:flex;flex-direction:column;height:100%}.sidebar-nav ul{list-style:none;padding:0;margin:0;flex:1}.sidebar-nav li{margin-bottom:.5rem}.sidebar-nav a{display:flex;align-items:center;padding:.75rem 1.5rem;color:var(--text-secondary);text-decoration:none;transition:background-color .2s,color .2s}.sidebar-nav a:hover{background-color:var(--hover-bg);color:var(--text-primary)}.sidebar-nav a.active{background-color:var(--hover-bg);color:var(--active-color);border-left:3px solid var(--active-color)}.sidebar-nav .icon{width:24px;height:24px;margin-right:.75rem;flex-shrink:0;font-size:1.2rem}.collapsed .sidebar-nav a{padding:.75rem;justify-content:center}.collapsed .sidebar-nav .icon{margin-right:0}.sidebar-footer{position:absolute;bottom:0;left:0;width:100%;padding-bottom:1rem;padding-top:1rem;border-top:1px solid var(--border-color);background-color:var(--sidebar-bg)}.settings-link{display:flex;align-items:center;padding:.75rem 1.5rem;color:var(--text-secondary);text-decoration:none;transition:background-color .2s,color .2s}.settings-link:hover{background-color:var(--hover-bg);color:var(--text-primary)}.collapsed .settings-link{padding:.75rem;justify-content:center}.settings-link .icon{width:24px;height:24px;margin-right:.75rem;flex-shrink:0}.collapsed .settings-link .icon{margin-right:0}@media (max-width: 768px){.app-sidebar{width:100%;height:auto;border-right:none;border-bottom:1px solid var(--border-color);position:relative}.toggle-sidebar{display:none}.sidebar-nav{padding:.5rem}.sidebar-nav ul{display:flex;justify-content:space-around}.sidebar-nav li{margin-bottom:0}.sidebar-nav a{padding:.5rem;flex-direction:column;text-align:center}.sidebar-nav .icon{margin-right:0;margin-bottom:.25rem}.sidebar-nav .label{font-size:.75rem}.sidebar-footer{position:fixed;bottom:0;left:0;padding:.5rem;width:auto;z-index:100;border-top:none;background-color:transparent}}[data-theme=light] .app-sidebar{box-shadow:0 0 10px #0000000d}[data-theme=light] .sidebar-nav a.active{background-color:#4361ee1a;color:var(--active-color);border-left:3px solid var(--active-color)}[data-theme=light] .sidebar-footer{box-shadow:0 -2px 10px #00000008}.courses-container{margin:2rem 0;padding:1.5rem;background-color:var(--card-bg);border-radius:8px;width:100%}.courses-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.filter-controls{display:flex;flex-direction:column;gap:10px}.filter-item{display:flex;align-items:center;gap:10px}.semester-select{background-color:var(--hover-bg);color:var(--text-primary);border:1px solid var(--border-color);padding:8px 12px;border-radius:4px;cursor:pointer;font-size:.9rem;min-width:150px}.semester-select:hover,.semester-select:focus{border-color:var(--active-color);outline:none}@media (min-width: 768px){.filter-controls{flex-direction:row;align-items:center}}.filter-controls label{color:var(--text-primary);font-weight:500}.year-select{background-color:var(--hover-bg);color:var(--text-primary);border:1px solid var(--border-color);padding:8px 12px;border-radius:4px;cursor:pointer;font-size:.9rem;min-width:150px}.year-select:hover,.year-select:focus{border-color:var(--active-color);outline:none}.no-courses{text-align:center;padding:2rem;color:var(--text-secondary);font-style:italic}.courses-list{list-style:none;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem}.course-item{border:1px solid var(--border-color);border-radius:8px;padding:1rem;background-color:var(--card-bg);transition:transform .2s ease,box-shadow .2s ease}.course-item:hover{border-color:var(--active-color);transform:translateY(-3px);box-shadow:0 4px 8px #0003;background-color:var(--hover-bg)}.course-item h3{margin-top:0;color:var(--text-primary);display:flex;align-items:center;gap:8px}.course-item p{color:var(--text-secondary);margin:.5rem 0 0}.courses-loading,.courses-error{padding:1rem;text-align:center;background-color:var(--card-bg);border-radius:8px;margin:2rem 0}.courses-error{color:#ff6b6b}.course-tag{font-size:.7rem;padding:3px 6px;border-radius:4px;font-weight:600;display:inline-block;text-transform:uppercase;margin-left:8px;letter-spacing:.5px;box-shadow:0 1px 3px #0003}.ta-tag{background-color:#6c5ce7;color:#fff}.ta-tag:hover{background-color:#8075e5;transform:translateY(-1px);box-shadow:0 2px 4px #0000004d}[data-theme=light] .courses-container{box-shadow:0 2px 8px #0000000d}[data-theme=light] .course-item{background-color:#fff;box-shadow:0 1px 3px #0000000d}[data-theme=light] .course-item:hover{box-shadow:0 4px 12px #00000014}[data-theme=light] .semester-select,[data-theme=light] .year-select{background-color:#f8f9fa;border-color:#e1e4e8}[data-theme=light] .filter-controls label{color:#444}.course-link{display:block;color:inherit;text-decoration:none;transition:all .2s ease}.course-link:hover h3{color:var(--active-color)}.dashboard{width:100%}.dashboard-loading,.dashboard-error{padding:2rem;text-align:center;font-size:1.2rem}.dashboard-error{color:#ff6b6b}.dashboard-section{margin-bottom:2.5rem;background-color:var(--card-bg);border-radius:8px;padding:1.5rem}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.section-actions{display:flex;align-items:center;gap:.75rem}.section-toggle{background:transparent;border:1px solid var(--border-color);border-radius:4px;width:28px;height:28px;font-size:1.2rem;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text-secondary);transition:background-color .2s,color .2s}.section-toggle:hover{background-color:var(--hover-bg);color:var(--text-primary)}.view-all{font-size:.9rem;color:var(--link-color);text-decoration:none}.view-all:hover{text-decoration:underline}.summary-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-top:1rem}.summary-card{cursor:pointer;transition:transform .2s ease,box-shadow .2s ease}.summary-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.summary-card{background-color:var(--hover-bg);border-radius:8px;padding:1.5rem;text-align:center}.summary-card h3{margin-top:0;color:var(--text-secondary);font-size:1rem;font-weight:500}.summary-count{font-size:2rem;font-weight:700;color:var(--active-color);margin:.5rem 0 0}.empty-list{text-align:center;padding:2rem;color:var(--text-secondary);font-style:italic}.todo-list,.events-list{list-style:none;padding:0;margin:0}.todo-item,.event-item{padding:1rem;border-bottom:1px solid var(--border-color)}.todo-item{padding:1rem;border-bottom:1px solid var(--border-color);position:relative}.todo-item-ignore{position:absolute;top:.75rem;right:.75rem;background:none;border:none;color:var(--text-secondary);font-size:.9rem;cursor:pointer;padding:.25rem .5rem;border-radius:50%;transition:all .2s}.todo-item-ignore:hover{background-color:var(--hover-bg);color:#ff6b6b}.todo-item:last-child,.event-item:last-child{border-bottom:none}.todo-item-course,.event-date{font-size:.85rem;color:var(--text-secondary);margin-bottom:.25rem}.todo-item-title,.event-title{margin:.25rem 0;font-size:1.1rem}.todo-item-title a,.event-title a{color:var(--text-primary);text-decoration:none}.todo-item-title a:hover,.event-title a:hover{color:var(--link-color)}.todo-item-due,.event-location{font-size:.85rem;color:var(--text-secondary);margin-top:.25rem}@media (max-width: 768px){.summary-cards{grid-template-columns:1fr}}.debug-info{font-size:.7rem;color:var(--text-secondary);margin-top:.25rem;font-family:monospace}.dashboard-courses-wrapper{margin:0;padding:0;overflow:hidden}.dashboard-courses-wrapper>div{margin:0!important;padding:0!important;background-color:transparent;width:100%;box-sizing:border-box}.dashboard-courses-wrapper .courses-container{margin:0;padding:0;background-color:transparent;border-radius:0}[data-theme=light] .dashboard-section{box-shadow:0 2px 8px #0000000d}[data-theme=light] .summary-card{background-color:#4361ee0d;box-shadow:0 1px 4px #00000008}[data-theme=light] .todo-item-ignore:hover{background-color:#f1f1f1}.course-detail{width:100%}.course-loading,.course-error{padding:2rem;text-align:center;font-size:1.2rem}.course-error{color:#ff6b6b}.course-header{background-color:#1a1a1a;border-radius:8px;padding:1.5rem;margin-bottom:1.5rem}.course-name-section{display:flex;justify-content:space-between;align-items:flex-start;gap:2rem;margin-bottom:1.5rem}.course-title-info{flex:1}.course-header h1{margin:0;font-size:2rem}.course-code{color:#aaa;margin:.5rem 0 0;font-size:1.1rem}.course-grade{background-color:#2a2a2a;border-radius:8px;padding:1rem;max-width:200px}.course-grade h3{margin-top:0;font-size:1rem;color:#ccc}.grade-details{display:flex;align-items:baseline;gap:.5rem}.grade-letter{font-size:2rem;font-weight:700;color:#646cff}.grade-percent{color:#aaa}.no-grade{color:#aaa;font-style:italic}.course-tabs{display:flex;border-bottom:1px solid #333;margin-bottom:1.5rem;overflow-x:auto}.tab-button{background:none;border:none;color:#ccc;cursor:pointer;font-size:1rem;padding:1rem 1.5rem;position:relative}.tab-button.active{color:#646cff}.tab-button.active:after{content:"";position:absolute;bottom:0;left:0;width:100%;height:2px;background-color:#646cff}.tab-content{background-color:#1a1a1a;border-radius:8px;padding:1.5rem}.overview-tab{display:grid;grid-template-columns:1fr 1fr;gap:2rem}.detail-item,.recent-activity{margin-bottom:1.5rem}.detail-item h3,.recent-activity h3,.assignments-tab h3,.modules-tab h3,.announcements-tab h3{margin-top:0;color:#fff;font-size:1.2rem;border-bottom:1px solid #333;padding-bottom:.5rem;margin-bottom:1rem}.quick-links{display:flex;flex-wrap:wrap;gap:.75rem}.quick-link{background-color:#2a2a2a;color:#fff;padding:.5rem 1rem;border-radius:4px;text-decoration:none;transition:background-color .2s}.quick-link:hover{background-color:#3a3a3a;color:#646cff}.no-items{text-align:center;padding:2rem;color:#888;font-style:italic}.announcements-list,.assignments-list,.modules-list{list-style:none;padding:0;margin:0}.announcement-item,.assignment-item,.module-item{padding:1rem;border-bottom:1px solid #333}.announcement-item:last-child,.assignment-item:last-child,.module-item:last-child{border-bottom:none}.announcement-item h4,.assignment-item h4,.module-item h4{margin:0 0 .5rem;color:#fff}.announcement-meta{font-size:.85rem;color:#888;display:flex;justify-content:space-between;margin-bottom:.75rem}.announcement-message{margin-bottom:.75rem;color:#ccc;font-size:.9rem;overflow:hidden;text-overflow:ellipsis}.announcement-message.full{overflow:visible}.read-more{color:#646cff;text-decoration:none;font-size:.9rem}.read-more:hover{text-decoration:underline}.due-date,.points,.module-info{color:#aaa;font-size:.9rem;margin:.25rem 0}.assignment-link{display:inline-block;background-color:#3a3a3a;color:#fff;text-decoration:none;padding:.5rem 1rem;border-radius:4px;margin-top:.75rem;font-size:.9rem;transition:background-color .2s}.assignment-link:hover{background-color:#4a4a4a;color:#646cff}@media (max-width: 768px){.overview-tab{grid-template-columns:1fr}.course-tabs{flex-wrap:wrap}.tab-button{flex:1;padding:.75rem;font-size:.9rem;text-align:center}}.firebase-error{background-color:#ff6b6b1a;border-left:3px solid #ff6b6b;padding:.5rem .75rem;margin-bottom:1rem;border-radius:4px;font-size:.9rem}.firebase-error p{margin:.25rem 0;color:#ff6b6b}.firebase-error p:last-child{font-style:italic;font-size:.85rem}.course-credits{margin:0;padding:.75rem 1rem;background-color:var(--card-bg);border-radius:6px;border:1px solid var(--border-color);max-width:300px;flex-shrink:0}.course-credits h3{font-size:1.1rem;margin-top:0;margin-bottom:.5rem}.credits-display{display:flex;align-items:center;justify-content:space-between}.edit-credits-form{display:flex;flex-direction:column;gap:.5rem}.credits-input{padding:.5rem;border:1px solid var(--border-color);border-radius:4px;background-color:var(--input-bg);color:var(--text-primary)}.credits-actions{display:flex;gap:.5rem}.save-btn,.cancel-btn,.edit-btn{padding:.5rem 1rem;border-radius:4px;font-weight:500;cursor:pointer;transition:background-color .2s}.save-btn{background-color:var(--active-color);color:#fff;border:none}.save-btn:hover{background-color:var(--active-hover)}.cancel-btn{background-color:var(--button-bg);color:var(--text-primary);border:1px solid var(--border-color)}.cancel-btn:hover{background-color:var(--hover-bg)}.edit-btn{background-color:var(--button-bg);color:var(--text-primary);border:1px solid var(--border-color);font-size:.9rem}.edit-btn:hover{background-color:var(--hover-bg)}.assignments-container{width:100%}.assignments-loading,.assignments-error{padding:2rem;text-align:center;font-size:1.2rem}.assignments-error{color:#ff6b6b}.assignments-header{background-color:#1a1a1a;border-radius:8px;padding:1.5rem;margin-bottom:1.5rem}.assignments-header h1{margin:0 0 1.5rem;font-size:1.8rem}.filter-buttons{display:flex;gap:.5rem}.filter-button{background-color:#2a2a2a;border:1px solid #333;color:#ccc;padding:.5rem 1rem;border-radius:4px;cursor:pointer;font-size:.9rem;transition:all .2s}.filter-button:hover{background-color:#3a3a3a}.filter-button.active{background-color:#646cff;border-color:#646cff;color:#fff}.no-assignments{text-align:center;padding:3rem;background-color:#1a1a1a;border-radius:8px;color:#888;font-style:italic}.assignments-list{list-style:none;padding:0;margin:0}.assignment-item{background-color:#1a1a1a;border:1px solid #333;border-radius:8px;margin-bottom:1rem;padding:1.5rem;display:flex;flex-direction:column}.assignment-content{flex:1}.assignment-title{margin:0 0 1rem;font-size:1.2rem;color:#fff}.assignment-details{display:flex;flex-wrap:wrap;gap:1.5rem;margin-bottom:1rem;font-size:.9rem;color:#ccc}.label{color:#888;margin-right:.25rem}.assignment-description{margin-top:1rem;padding-top:1rem;border-top:1px solid #333;color:#bbb;font-size:.9rem;line-height:1.5}.assignment-actions{margin-top:1.5rem;display:flex;justify-content:flex-end}.view-button{background-color:#3a3a3a;color:#fff;text-decoration:none;padding:.6rem 1.2rem;border-radius:4px;font-size:.9rem;transition:background-color .2s}.view-button:hover{background-color:#646cff}@media (max-width: 768px){.assignment-details{flex-direction:column;gap:.5rem}.filter-toolbar{flex-direction:column;align-items:flex-start;gap:1rem}}.calendar-container{max-width:1200px;margin:0 auto;padding:20px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;background-color:var(--background-color);color:var(--text-primary)}.calendar-loading,.calendar-error{text-align:center;padding:40px;font-size:16px;color:var(--text-secondary)}.calendar-error{color:#ff6b6b}.calendar-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;flex-wrap:wrap}.calendar-header h1{margin:0 0 1.5rem;font-size:1.8rem}.calendar-controls{display:flex;align-items:center;gap:15px;flex-wrap:wrap}.view-controls,.navigation-controls{display:flex;align-items:center;gap:8px}.view-button,.nav-button{background-color:var(--card-bg);border:1px solid var(--border-color);color:var(--text-primary);border-radius:4px;padding:6px 12px;cursor:pointer;font-size:14px;transition:background-color .2s}.view-button.active{background-color:var(--hover-bg);font-weight:700}.view-button:hover,.nav-button:hover{background-color:var(--hover-bg)}.current-date{margin:0 10px;font-size:18px;min-width:200px;text-align:center;color:var(--text-primary)}.calendar-view{background-color:var(--card-bg);border-radius:8px;padding:1.5rem;box-shadow:0 1px 3px var(--card-shadow)}.month-view{background-color:var(--card-bg);border-radius:8px;box-shadow:0 1px 3px var(--card-shadow);overflow:hidden}.weekdays{display:grid;grid-template-columns:repeat(7,1fr);background-color:var(--hover-bg);border-bottom:1px solid var(--border-color);font-weight:700;text-align:center}.weekdays div{padding:10px;font-size:14px;color:var(--text-secondary)}.month-grid{display:grid;grid-template-columns:repeat(7,1fr);grid-auto-rows:minmax(120px,auto)}.day-cell{border:1px solid var(--border-color);padding:5px;min-height:120px;position:relative;overflow:hidden;background-color:var(--card-bg)}.day-cell.empty{background-color:var(--hover-bg)}.day-cell.today{background-color:#4361ee12}.day-number{font-weight:700;margin-bottom:5px;text-align:right;padding:2px 5px;position:sticky;top:0;background-color:inherit;z-index:1;color:var(--text-primary)}.day-events{display:flex;flex-direction:column;gap:3px;overflow-y:auto;max-height:calc(100% - 30px)}.day-event{background-color:#4361ee26;border-left:3px solid var(--active-color);padding:4px 6px;border-radius:3px;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;box-shadow:0 1px 2px var(--card-shadow);color:var(--text-primary)}.day-event:hover{background-color:#4361ee40}.event-time{font-size:11px;opacity:.8;color:var(--text-secondary)}.event-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500;color:var(--text-primary)}.more-events{text-align:center;font-size:11px;color:var(--text-secondary);background-color:var(--hover-bg);padding:2px;border-radius:3px;margin-top:2px;cursor:pointer;transition:background-color .2s}.more-events:hover{background-color:var(--border-color);color:var(--text-primary)}.more-events.show-less{background-color:#4361ee26;color:var(--text-primary)}.more-events.show-less:hover{background-color:#4361ee40}.event-item{display:flex;padding:15px;border-bottom:1px solid var(--border-color);gap:20px}.event-item:last-child{border-bottom:none}.event-date-time{min-width:120px;text-align:center}.event-date{font-weight:700;margin-bottom:5px}.event-time{color:var(--text-secondary);font-size:.85rem}.event-content{flex:1}.event-content h3{margin-top:0;margin-bottom:10px;color:var(--text-primary)}.event-title{margin:0 0 .5rem;font-size:1.1rem}.event-title a{color:var(--link-color);text-decoration:none}.event-title a:hover{color:var(--link-hover);text-decoration:underline}.event-location{margin-bottom:10px;font-size:14px;color:var(--text-secondary)}.event-description{font-size:14px;line-height:1.4;max-height:200px;overflow-y:auto;color:var(--text-primary)}.label{font-weight:500;color:var(--text-secondary)}[data-theme=dark] .day-event{background-color:#2c3e50;border-left:3px solid #3498db}[data-theme=dark] .day-event:hover{background-color:#34495e}[data-theme=dark] .day-cell.today{background-color:#2d3748}[data-theme=light] .calendar-view{box-shadow:0 2px 8px #0000000d}[data-theme=light] .day-cell{border-color:#e1e4e8}[data-theme=light] .day-cell.empty{background-color:#f5f7fa}@media (max-width: 768px){.calendar-header{flex-direction:column;align-items:flex-start;gap:10px}.calendar-controls{width:100%;justify-content:space-between}.current-date{min-width:auto}.month-grid{grid-auto-rows:minmax(100px,auto)}.day-cell{min-height:100px;padding:3px}.event-item{flex-direction:column;gap:10px}.event-date-time{text-align:left}}.day-event-link{text-decoration:none;color:inherit;display:block;cursor:pointer}.day-event-link .day-event{transition:background-color .2s}.day-event-link:hover .day-event{background-color:#0000000d}.event-item .event-link{display:flex;text-decoration:none;color:inherit;cursor:pointer;padding:10px;transition:background-color .2s}.event-item .event-link:hover{background-color:#0000000d}.todo-container{width:100%}.todo-loading,.todo-error{padding:2rem;text-align:center;font-size:1.2rem}.todo-error{color:#ff6b6b}.todo-header{background-color:var(--card-bg);border-radius:8px;padding:1.5rem;margin-bottom:1.5rem}.todo-header h1{margin:0 0 1.5rem;font-size:1.8rem}.filter-toolbar{display:flex;justify-content:space-between;align-items:center}.filter-buttons{display:flex;gap:.5rem;flex-wrap:wrap}.filter-button{background-color:var(--hover-bg);border:1px solid var(--border-color);color:var(--text-secondary);padding:.5rem 1rem;border-radius:4px;cursor:pointer;font-size:.9rem;transition:all .2s}.filter-button:hover{background-color:var(--button-hover-border);color:var(--text-primary)}.filter-button.active{background-color:var(--active-color);border-color:var(--active-color);color:#fff}.no-todos{text-align:center;padding:3rem;background-color:var(--card-bg);border-radius:8px;color:var(--text-secondary);font-style:italic}.todo-list{list-style:none;padding:0;margin:0}.todo-item{background-color:var(--card-bg);border:1px solid var(--border-color);border-radius:8px;margin-bottom:1rem;padding:1.5rem;position:relative}.todo-type{position:absolute;top:1rem;right:1rem;background-color:var(--hover-bg);color:var(--text-secondary);font-size:.75rem;padding:.25rem .5rem;border-radius:4px;text-transform:capitalize}.todo-course{color:var(--text-secondary);font-size:.9rem;margin-bottom:.5rem}.todo-title{margin:0 0 1rem;font-size:1.2rem;color:var(--text-primary);padding-right:4rem}.todo-title a{color:var(--text-primary);text-decoration:none}.todo-title a:hover{color:var(--active-color)}.todo-due{color:var(--text-secondary);font-size:.9rem;margin-bottom:1rem}.todo-actions{display:flex;justify-content:flex-end;gap:.75rem;flex-wrap:wrap}.todo-link{background-color:var(--hover-bg);color:var(--text-primary);text-decoration:none;padding:.6rem 1.2rem;border-radius:4px;font-size:.9rem;transition:background-color .2s}.todo-link:hover{background-color:var(--active-color);color:#fff}.status-message{background-color:var(--hover-bg);color:var(--text-primary);padding:1rem;margin-bottom:1.5rem;border-radius:8px;border-left:4px solid var(--active-color);animation:fadeIn .3s ease-in-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.ignore-button,.ignore-permanently-button{background-color:var(--hover-bg);color:var(--text-secondary);border:1px solid var(--border-color);border-radius:4px;padding:.6rem 1.2rem;font-size:.9rem;cursor:pointer;transition:all .2s}.ignore-button:hover{background-color:var(--border-color);color:var(--text-primary)}.ignore-permanently-button{background-color:var(--hover-bg)}.ignore-permanently-button:hover{background-color:var(--border-color);color:#ff6b6b}[data-theme=light] .todo-item,[data-theme=light] .todo-header{box-shadow:0 1px 3px #0000000d}[data-theme=light] .todo-type{background-color:#4361ee1a}[data-theme=light] .status-message{background-color:#f8f9fa;box-shadow:0 1px 2px #0000000d}[data-theme=light] .ignore-button:hover,[data-theme=light] .ignore-permanently-button:hover{box-shadow:0 1px 3px #0000001a}@media (max-width: 768px){.filter-toolbar{flex-direction:column;align-items:flex-start;gap:1rem}}.files-container{width:100%}.files-loading,.files-error{padding:2rem;text-align:center;font-size:1.2rem}.files-error{color:#ff6b6b}.files-header{background-color:#1a1a1a;border-radius:8px;padding:1.5rem;margin-bottom:1.5rem}.back-button{background:none;border:none;color:#646cff;cursor:pointer;font-size:.9rem;padding:0;margin-bottom:1rem;display:inline-block}.back-button:hover{text-decoration:underline}.files-header h1{margin:0 0 1rem;font-size:1.8rem}.search-container{margin-top:1rem}.search-input{width:100%;max-width:400px;padding:.8rem 1rem;font-size:.9rem;border:1px solid #333;border-radius:4px;background-color:#2a2a2a;color:#fff}.search-input:focus{outline:none;border-color:#646cff}.no-files{text-align:center;padding:3rem;background-color:#1a1a1a;border-radius:8px;color:#888;font-style:italic}.files-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem}.file-card{background-color:#1a1a1a;border:1px solid #333;border-radius:8px;padding:1.2rem;display:flex;align-items:center;transition:transform .2s,border-color .2s}.file-card:hover{transform:translateY(-2px);border-color:#646cff}.file-icon{font-size:2rem;margin-right:1rem;color:#646cff}.file-info{flex:1}.file-name{margin:0 0 .5rem;font-size:1rem;color:#fff;word-break:break-word}.file-meta{font-size:.8rem;color:#aaa;margin:0 0 .75rem}.file-download{display:inline-block;background-color:#2a2a2a;color:#fff;text-decoration:none;padding:.4rem .8rem;border-radius:4px;font-size:.85rem;transition:background-color .2s}.file-download:hover{background-color:#3a3a3a;color:#646cff}@media (max-width: 768px){.files-grid{grid-template-columns:1fr}}.all-courses-container{width:100%}.all-courses-container h1{margin-bottom:1.5rem;font-size:2rem}.all-courses-content{width:100%}.settings-container{width:100%;max-width:800px;margin:0 auto}.settings-header{margin-bottom:2rem}.settings-header h1{font-size:2rem;margin-bottom:.5rem}.settings-section{background-color:var(--card-bg);border-radius:8px;padding:1.5rem;margin-bottom:2rem}.settings-section h2{font-size:1.3rem;margin-top:0;margin-bottom:1.5rem;padding-bottom:.5rem;border-bottom:1px solid var(--border-color)}.setting-item{display:flex;justify-content:space-between;align-items:center;padding:.75rem 0}.setting-label{flex:1}.setting-label span{display:block;font-weight:500;margin-bottom:.25rem}.setting-description{color:var(--text-secondary);font-size:.9rem;margin:.25rem 0 0}.setting-control{margin-left:1.5rem}.toggle-switch{position:relative;display:inline-block;width:50px;height:26px}.toggle-switch input{opacity:0;width:0;height:0}.toggle-slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;transition:.4s;border-radius:34px}.toggle-slider:before{position:absolute;content:"";height:18px;width:18px;left:4px;bottom:4px;background-color:#fff;transition:.4s;border-radius:50%}input:checked+.toggle-slider{background-color:var(--active-color)}input:focus+.toggle-slider{box-shadow:0 0 1px var(--active-color)}input:checked+.toggle-slider:before{transform:translate(24px)}.version-info{font-size:.9rem;color:var(--text-secondary)}[data-theme=light] .toggle-slider{background-color:#d1d5db}[data-theme=light] .toggle-slider:before{background-color:#fff;box-shadow:0 1px 3px #0000001a}[data-theme=light] .settings-section{box-shadow:0 2px 8px #0000000d}.color-picker{display:flex;gap:12px;align-items:center}.color-option{width:30px;height:30px;border-radius:50%;border:2px solid var(--border-color);cursor:pointer;transition:transform .2s,border-color .2s;padding:0}.color-option:hover{transform:scale(1.1)}.color-option.selected{border:2px solid var(--text-primary);position:relative}.color-option.selected:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:12px;height:12px;background-color:#fff;border-radius:50%;box-shadow:0 1px 3px #0000004d}[data-theme=light] .color-option.selected:after{background-color:#333}.setting-group{margin-bottom:1.5rem}.setting-group h3{font-size:1.1rem;margin-bottom:.5rem}.section-order-list{display:flex;flex-direction:column;gap:.5rem;margin-top:1rem}.section-order-item{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;background-color:var(--hover-bg);border-radius:6px;border:1px solid var(--border-color)}.section-order-controls{display:flex;gap:.5rem}.order-btn{background:var(--button-bg);border:1px solid var(--border-color);border-radius:4px;color:var(--text-primary);width:30px;height:30px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background-color .2s}.order-btn:hover:not(:disabled){background-color:var(--active-color);color:#fff}.order-btn:disabled{opacity:.5;cursor:not-allowed}.token-input-wrapper{display:flex;margin-bottom:10px;width:100%;max-width:450px}.token-input{flex:1;padding:10px;border:1px solid var(--border-color);border-radius:4px 0 0 4px;background-color:var(--bg-secondary);color:var(--text-primary);font-size:1rem}.toggle-visibility-btn{padding:0 15px;border:1px solid var(--border-color);border-left:none;border-radius:0 4px 4px 0;background-color:var(--bg-secondary);color:var(--text-primary);cursor:pointer;transition:background-color .2s}.toggle-visibility-btn:hover{background-color:var(--bg-hover)}.save-button{padding:10px 20px;background-color:var(--accent-color);color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:1rem;transition:background-color .2s}.save-button:hover{background-color:var(--accent-hover)}.save-button:disabled{background-color:#888;cursor:not-allowed}.token-message{margin-top:10px;padding:10px;border-radius:4px}.token-message.success{background-color:#2ecc7133;color:#2ecc71}.token-message.error{background-color:#e74c3c33;color:#e74c3c}.token-message.info{background-color:#3498db33;color:#3498db}.token-status{margin-top:10px;color:#2ecc71}#root{width:100%;margin:0;padding:0;text-align:left;min-height:100vh}.app-container{display:flex;flex-direction:column;min-height:100vh;background-color:var(--background-color);color:var(--text-primary)}.app-content{display:flex;flex:1;position:relative;min-height:calc(100vh - 60px)}.main-content{flex:1;padding:1.5rem;overflow-y:auto;background-color:var(--background-color);min-height:calc(100vh - 60px)}.app-loading,.app-error{display:flex;justify-content:center;align-items:center;height:100vh;width:100%;font-size:1.5rem;background-color:var(--background-color);color:var(--text-primary)}.app-error{color:#ff6b6b}@media (max-width: 768px){.app-content{flex-direction:column;height:auto}}.logo{height:6em;padding:1.5em;will-change:filter;transition:filter .3s}.logo:hover{filter:drop-shadow(0 0 2em #646cffaa)}.logo.react:hover{filter:drop-shadow(0 0 2em #61dafbaa)}@keyframes logo-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (prefers-reduced-motion: no-preference){a:nth-of-type(2) .logo{animation:logo-spin infinite 20s linear}}.card{padding:2em}.read-the-docs{color:#888}[data-theme=light] .main-content{background-color:#f9fafb}[data-theme=light] .card{box-shadow:0 2px 8px #0000000d}
