:root{--bg-primary:#1e1e2e;--bg-secondary:#2a2a3d;--bg-tertiary:#313147;--accent:#9b6dff;--accent-hover:#b08dff;--text-primary:#cdd6f4;--text-secondary:#a6adc8;--border:#45475a;--red:#f38ba8;--amber:#fab387;--green:#a6e3a1}[data-theme=light]{--bg-primary:#f5f5f7;--bg-secondary:#fff;--bg-tertiary:#e8e8f0;--accent:#7c4dff;--accent-hover:#9b6dff;--text-primary:#1e1e2e;--text-secondary:#45475a;--border:#cdd6f4;--red:#d32f2f;--amber:#e65100;--green:#2e7d32}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-primary);color:var(--text-primary);min-height:100vh;font-family:Segoe UI,sans-serif;transition:background-color .3s,color .3s}button{cursor:pointer;background-color:var(--accent);color:#fff;border:none;border-radius:6px;padding:8px 16px;font-size:14px;transition:background-color .2s}button:hover{background-color:var(--accent-hover)}button:disabled{opacity:.5;cursor:not-allowed}input,select,textarea{background-color:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border);resize:vertical;border-radius:6px;width:100%;max-height:300px;padding:8px 12px;font-size:14px}input:focus,select:focus,textarea:focus{border-color:var(--accent);outline:none}@keyframes fadeSlideIn{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.form-container{background-color:var(--bg-secondary);border:1px solid var(--border);border-radius:10px;margin-bottom:24px;padding:24px}.form-container h2{color:var(--text-primary);margin-bottom:16px;font-size:18px;font-weight:600}.form-grid{grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px;display:grid}.form-grid-full{grid-column:1/-1}.form-actions{justify-content:flex-end;margin-top:16px;display:flex}textarea{height:80px;min-height:80px}@media (width<=600px){.form-grid{grid-template-columns:1fr}}.item{background-color:var(--bg-secondary);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:8px;padding:16px;display:flex}.item.complete{opacity:.5}.item-header{justify-content:flex-start;align-items:center;gap:8px;display:flex}.item-title{font-size:16px;font-weight:600}.item-title.complete{text-decoration:line-through}.item-meta{color:var(--text-secondary);gap:12px;font-size:13px;display:flex}.item-description{color:var(--text-secondary);font-size:14px}.item-actions{gap:8px;margin-top:4px;display:flex}.item-actions button{padding:6px 12px;font-size:13px}.btn-delete{border:1px solid var(--border);color:var(--text-secondary);background-color:#0000}.btn-delete:hover{border-color:var(--red);color:var(--red);background-color:#0000}.btn-complete{border:1px solid var(--accent);color:var(--accent);background-color:#0000}.btn-complete:hover{background-color:var(--accent);color:#fff}.item-edit-grid{grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px;display:grid}.item-edit-full{grid-column:1/-1}.item-edit-actions{justify-content:flex-end;gap:8px;display:flex}.btn-cancel{border:1px solid var(--border);color:var(--text-secondary);background-color:#0000}.btn-cancel:hover{background-color:var(--bg-tertiary)}@media (width<=600px){.item-meta{flex-direction:column;gap:4px}.item-actions{flex-wrap:wrap}.item-edit-grid{grid-template-columns:1fr}}.item{animation:.2s fadeSlideIn}.item.deleting{animation:.2s forwards fadeSlideOut}@keyframes fadeSlideOut{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-8px)}}.drag-handle{cursor:grab;color:var(--text-secondary);-webkit-user-select:none;user-select:none;margin-right:8px;font-size:16px}.drag-handle:active{cursor:grabbing}.btn-calendar{border:1px solid var(--green);color:var(--green);background-color:#0000}.btn-calendar:hover{background-color:var(--green);color:#1e1e2e}.grade-container{align-items:center;gap:8px;margin-top:4px;display:flex}.grade-container label{color:var(--text-secondary);white-space:nowrap;font-size:13px}.grade-input{width:80px}.file-attachment{align-items:center;gap:4px;display:flex}.btn-attachment{border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;background-color:#0000;border-radius:6px;padding:6px 12px;font-size:13px}.btn-attachment:hover{border-color:var(--accent);color:var(--accent);background-color:#0000}.btn-remove-attachment{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;padding:0 4px;font-size:18px;line-height:1}.btn-remove-attachment:hover{color:var(--red);background:0 0}.modal-overlay{z-index:200;background-color:#00000080;justify-content:center;align-items:center;animation:.15s fadeSlideIn;display:flex;position:fixed;inset:0}.modal-box{-webkit-backdrop-filter:none;backdrop-filter:none;opacity:1;background-color:var(--bg-secondary);border:1px solid var(--border);border-radius:12px;flex-direction:column;gap:20px;width:90%;max-width:400px;padding:24px;display:flex}.modal-message{color:var(--text-primary);font-size:14px;line-height:1.6}.modal-actions{justify-content:flex-end;gap:8px;display:flex}.modal-cancel{border:1px solid var(--border);color:var(--text-secondary);background-color:#0000}.modal-cancel:hover{background-color:var(--bg-tertiary)}.modal-confirm{background-color:var(--red)}.modal-confirm:hover{background-color:var(--red);opacity:.85}.list-container{flex-direction:column;gap:12px;margin-bottom:32px;display:flex}.list-empty{color:var(--text-secondary);text-align:center;background-color:var(--bg-secondary);border:1px solid var(--border);border-radius:10px;flex-direction:column;align-items:center;gap:8px;margin-bottom:15px;padding:48px 32px;font-size:14px;display:flex}.list-empty-icon{margin-bottom:8px;font-size:40px}.list-empty-sub{color:var(--text-secondary);font-size:13px}.overdue-icon{cursor:default;margin-left:8px;font-size:14px}.filter-bar{gap:12px;margin-bottom:24px;display:flex}.filter-bar select{width:auto}@media (width<=600px){.filter-bar{flex-direction:column}.filter-bar select{width:100%}}.module-manager{background-color:var(--bg-secondary);border:1px solid var(--border);border-radius:10px;margin-bottom:24px;padding:16px 24px}.module-manager h3{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:12px;font-size:14px;font-weight:600}.module-add{gap:8px;margin-bottom:12px;display:flex}.module-add input{flex:1}.module-add button{white-space:nowrap}.module-list{flex-wrap:wrap;gap:8px;display:flex}.module-tag{background-color:var(--bg-tertiary);border:1px solid var(--border);border-radius:20px;align-items:center;gap:6px;padding:4px 10px;font-size:13px;display:flex}.module-delete{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;padding:0;font-size:16px;line-height:1}.module-delete:hover{color:var(--red);background:0 0}.calendar-container{background-color:var(--bg-secondary);border:1px solid var(--border);border-radius:10px;margin-bottom:24px;padding:24px}.calendar-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.calendar-title{color:var(--text-primary);font-size:18px;font-weight:600}.calendar-nav{background-color:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border);padding:6px 12px;font-size:16px}.calendar-nav:hover{background-color:var(--accent);border-color:var(--accent)}.calendar-grid{grid-template-columns:repeat(7,1fr);gap:4px;display:grid}.calendar-day-name{text-align:center;color:var(--text-secondary);padding:8px 0;font-size:12px;font-weight:600}.calendar-cell{background-color:var(--bg-tertiary);border:1px solid var(--border);border-radius:6px;flex-direction:column;gap:4px;min-height:80px;padding:6px;display:flex}.calendar-cell.empty{background-color:#0000;border-color:#0000}.calendar-cell.today{border-color:var(--accent)}.calendar-date{color:var(--text-secondary);font-size:12px;font-weight:600}.calendar-cell.today .calendar-date{color:var(--accent)}.calendar-items{flex-direction:column;gap:2px;display:flex}.calendar-item{white-space:nowrap;text-overflow:ellipsis;cursor:default;border-radius:4px;padding:2px 6px;font-size:11px;overflow:hidden}.calendar-item.assignment{background-color:var(--accent);color:#fff}.calendar-item.exam{background-color:var(--red);color:#fff}.calendar-item.complete{opacity:.4;text-decoration:line-through}@media (width<=600px){.calendar-cell{min-height:50px;padding:4px}.calendar-item{padding:1px 4px;font-size:9px}}.stats-bar{background-color:var(--bg-secondary);border:1px solid var(--border);border-radius:10px;margin-bottom:24px;padding:16px 24px}.stats-grid{gap:32px;margin-bottom:16px;display:flex}.stat{flex-direction:column;gap:4px;display:flex}.stat-value{color:var(--accent);font-size:24px;font-weight:700}.stat-value.overdue{color:var(--red)}.stat-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;font-size:12px}.module-averages h3{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:10px;font-size:13px;font-weight:600}.module-averages-grid{flex-wrap:wrap;gap:8px;display:flex}.module-avg{background-color:var(--bg-tertiary);border:1px solid var(--border);border-radius:8px;flex-direction:column;gap:2px;padding:8px 14px;display:flex}.module-avg-name{color:var(--text-secondary);font-size:12px}.module-avg-value{color:var(--accent);font-size:18px;font-weight:700}.module-avg-value.fail{color:var(--red)}@media (width<=600px){.stats-grid{gap:16px}.stat-value{font-size:20px}}.toast{z-index:300;border-radius:8px;align-items:center;gap:12px;max-width:360px;padding:12px 16px;font-size:14px;animation:.2s fadeSlideIn;display:flex;position:fixed;bottom:24px;right:24px;box-shadow:0 4px 12px #0000004d}.toast-success{background-color:var(--green);color:#1e1e2e}.toast-error{background-color:var(--red);color:#fff}.toast-close{cursor:pointer;color:inherit;opacity:.7;background:0 0;border:none;padding:0;font-size:18px;line-height:1}.toast-close:hover{opacity:1;background:0 0}#root{max-width:900px;margin:0 auto;padding:24px 16px}header{z-index:100;background-color:var(--bg-primary);border-bottom:2px solid var(--accent);justify-content:space-between;align-items:center;margin-bottom:32px;padding:20px 0;display:flex;position:sticky;top:0}header h1{color:var(--accent);font-size:24px;font-weight:600}@media (width<=600px){header{text-align:center;flex-direction:column;gap:12px}}.header-actions{align-items:center;gap:12px;display:flex}.nav-links{gap:8px;display:flex}.nav-links a{color:var(--text-secondary);border-radius:6px;padding:8px 20px;font-size:16px;font-weight:500;text-decoration:none;transition:color .2s,background-color .2s}.nav-links a:hover{color:var(--text-primary);background-color:var(--bg-tertiary)}.nav-links a.active{color:var(--accent);background-color:var(--bg-tertiary)}.theme-toggle{z-index:100;border-radius:50%;width:44px;height:44px;padding:0;font-size:18px;position:fixed;bottom:24px;right:24px;box-shadow:0 2px 8px #0000004d}
