@import "https://fonts.googleapis.com/css2?family=Crimson+Pro:ital,wght@0,400;0,500;0,600;1,400&family=Inter:wght@400;500;600&display=swap";:root{--font-serif:"Crimson Pro", Georgia, "Times New Roman", serif;--font-sans:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--shadow-sm:0 1px 2px #0000000d;--shadow-md:0 4px 6px #00000012;--shadow-lg:0 10px 15px #0000001a;--transition:.15s ease}[data-theme=light]{--bg-primary:#fff;--bg-secondary:#f8f9fa;--bg-tertiary:#f1f3f4;--text-primary:#1a1a1a;--text-secondary:#5f6368;--text-muted:#9aa0a6;--border-color:#e8eaed;--accent-color:#7c3626;--accent-light:#7c362615;--success-color:#137333;--warning-color:#b45309;--danger-color:#c53929}[data-theme=sepia]{--bg-primary:#faf6f1;--bg-secondary:#f5efe8;--bg-tertiary:#ebe4db;--text-primary:#3d3229;--text-secondary:#5c4f42;--text-muted:#8b7d6b;--border-color:#ddd5c8;--accent-color:#7c3626;--accent-light:#7c362618;--success-color:#2d5a3a;--warning-color:#8b5a2b;--danger-color:#8b3626}[data-theme=dark]{--bg-primary:#1a1a1a;--bg-secondary:#242424;--bg-tertiary:#2d2d2d;--text-primary:#e8e6e3;--text-secondary:#a8a29e;--text-muted:#6b6560;--border-color:#3d3d3d;--accent-color:#c9826e;--accent-light:#c9826e20;--success-color:#6bcf8e;--warning-color:#f0b429;--danger-color:#f87171}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:var(--font-sans);color:var(--text-primary);background:var(--bg-primary);-webkit-font-smoothing:antialiased;font-size:15px;line-height:1.5}.app{flex-direction:column;min-height:100%;display:flex}@media (width>=768px){.app{flex-direction:row}}.navigation{background:var(--bg-secondary);border-bottom:1px solid var(--border-color);z-index:100;justify-content:space-between;align-items:center;padding:12px 16px;display:flex;position:sticky;top:0}@media (width>=768px){.navigation{border-bottom:none;border-right:1px solid var(--border-color);flex-direction:column;align-items:stretch;width:220px;height:100vh;padding:20px 16px;position:fixed;top:0;left:0}}.nav-brand{color:var(--accent-color);align-items:center;gap:10px;display:flex}.brand-text{display:none}@media (width>=768px){.brand-text{flex-direction:column;line-height:1.2;display:flex}}.brand-name{font-family:var(--font-serif);font-size:18px;font-weight:600}.brand-subtitle{color:var(--text-secondary);font-size:12px}.nav-views{gap:4px;display:flex}@media (width>=768px){.nav-views{flex-direction:column;gap:4px;margin-top:32px}}.nav-btn{color:var(--text-secondary);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition);background:0 0;border:none;align-items:center;gap:10px;padding:8px 12px;font-size:14px;font-weight:500;display:flex}.nav-btn:hover{background:var(--bg-tertiary);color:var(--text-primary)}.nav-btn.active{background:var(--accent-light);color:var(--accent-color)}.nav-label{display:none}@media (width>=768px){.nav-label{display:inline}}.nav-actions{align-items:center;gap:12px;display:flex}@media (width>=768px){.nav-actions{flex-direction:column;gap:16px;margin-top:auto}}.theme-switcher{background:var(--bg-tertiary);border-radius:var(--radius-md);padding:3px;display:flex}.theme-btn{color:var(--text-muted);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition);background:0 0;border:none;padding:6px 8px}.theme-btn:hover{color:var(--text-secondary)}.theme-btn.active{background:var(--bg-primary);color:var(--accent-color);box-shadow:var(--shadow-sm)}.data-actions{gap:4px;display:flex}.action-btn{border:1px solid var(--border-color);background:var(--bg-primary);color:var(--text-secondary);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition);padding:6px}.action-btn:hover{background:var(--bg-tertiary);color:var(--text-primary)}.main-content{flex:1;padding:20px;overflow-y:auto}@media (width>=768px){.main-content{margin-left:220px;padding:32px 40px}}.view-header{flex-direction:column;gap:12px;margin-bottom:24px;display:flex}@media (width>=640px){.view-header{flex-direction:row;justify-content:space-between;align-items:center}}.date-display,.week-display,.month-display,.header-content{color:var(--text-primary);align-items:center;gap:12px;display:flex}.view-header h1{font-family:var(--font-serif);margin:0;font-size:24px;font-weight:600}.date-full,.date-range{color:var(--text-secondary);margin:0;font-size:13px}.day-stats,.week-stats{gap:16px;display:flex}.stat{color:var(--text-secondary);align-items:center;gap:6px;font-size:13px;display:flex}.week-navigation,.month-navigation{align-items:center;gap:8px;display:flex}.week-actions{align-items:center;gap:16px;display:flex}.today-btn{border:1px solid var(--border-color);background:var(--bg-primary);color:var(--text-secondary);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition);padding:6px 12px;font-size:13px;font-weight:500}.today-btn:hover{background:var(--bg-tertiary);color:var(--text-primary)}.readings-section{margin-bottom:32px}.section-title{font-family:var(--font-serif);color:var(--text-primary);border-bottom:1px solid var(--border-color);align-items:center;gap:8px;margin-bottom:16px;padding-bottom:8px;font-size:16px;font-weight:600;display:flex}.overdue-section .section-title{color:var(--danger-color)}.completed-section .section-title{color:var(--success-color)}.readings-list{flex-direction:column;gap:12px;display:flex}.reading-card{background:var(--bg-secondary);border-radius:var(--radius-md);border-left:3px solid var(--course-color,var(--accent-color));transition:all var(--transition);gap:12px;padding:16px;display:flex}.reading-card:hover{background:var(--bg-tertiary)}.reading-card.completed{opacity:.6}.reading-card.completed .reading-title{text-decoration:line-through}.reading-card.overdue{border-left-color:var(--danger-color)}.checkbox{border:2px solid var(--border-color);background:var(--bg-primary);cursor:pointer;color:#fff;width:20px;min-width:20px;height:20px;transition:all var(--transition);border-radius:4px;justify-content:center;align-items:center;display:flex}.checkbox:hover{border-color:var(--accent-color)}.checkbox.checked{background:var(--success-color);border-color:var(--success-color)}.reading-content{flex:1;min-width:0}.reading-header{align-items:flex-start;gap:8px;margin-bottom:4px;display:flex}.source-icon{color:var(--text-muted);flex-shrink:0;margin-top:2px}.reading-title{font-family:var(--font-serif);color:var(--text-primary);font-size:16px;font-weight:500;line-height:1.3}.reading-citation{color:var(--text-secondary);margin-bottom:8px;font-size:13px;font-style:italic}.reading-meta{flex-wrap:wrap;align-items:center;gap:10px;font-size:12px;display:flex}.course-tag{border-radius:4px;padding:2px 8px;font-weight:500}.due-date{color:var(--text-secondary)}.due-date.today{color:var(--accent-color);font-weight:500}.due-date.overdue{color:var(--danger-color);font-weight:500}.time-estimate,.page-count{color:var(--text-muted);align-items:center;gap:4px;display:flex}.reading-notes{color:var(--text-secondary);margin-top:8px;font-size:13px;font-style:italic}.reading-links{gap:12px;margin-top:10px;display:flex}.library-link,.reader-link{color:var(--accent-color);transition:opacity var(--transition);align-items:center;gap:4px;font-size:12px;text-decoration:none;display:flex}.library-link:hover,.reader-link:hover{opacity:.7}.empty-state{text-align:center;color:var(--text-muted);flex-direction:column;justify-content:center;align-items:center;padding:60px 20px;display:flex}.empty-state svg{opacity:.5;margin-bottom:16px}.empty-state h2{font-family:var(--font-serif);color:var(--text-secondary);margin-bottom:8px;font-size:20px;font-weight:600}.empty-state p{max-width:300px;font-size:14px}.empty-state.success svg{color:var(--success-color);opacity:1}.empty-state.success h2{color:var(--success-color)}.week-grid{background:var(--border-color);border-radius:var(--radius-md);grid-template-columns:repeat(7,1fr);gap:1px;display:grid;overflow:hidden}@media (width<=900px){.week-grid{grid-template-columns:1fr}}.day-column{background:var(--bg-primary);min-height:200px}.day-column.today{background:var(--accent-light)}.day-header{border-bottom:1px solid var(--border-color);background:var(--bg-secondary);justify-content:space-between;align-items:center;padding:12px;display:flex}.day-name{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;font-size:12px;font-weight:500}.day-number{color:var(--text-primary);font-size:16px;font-weight:600}.day-number.today{background:var(--accent-color);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:28px;height:28px;display:flex}.day-readings{padding:8px}.day-readings .reading-card{padding:10px;font-size:13px}.day-readings .reading-title{font-size:14px}.no-readings{color:var(--text-muted);text-align:center;padding:20px;font-size:12px}.calendar-container{gap:24px;display:grid}@media (width>=900px){.calendar-container{grid-template-columns:1fr 350px}}.calendar-grid{background:var(--bg-secondary);border-radius:var(--radius-lg);padding:16px}.weekday-headers{grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:8px;display:grid}.weekday-header{text-align:center;color:var(--text-muted);text-transform:uppercase;padding:8px;font-size:12px;font-weight:500}.calendar-days{grid-template-columns:repeat(7,1fr);gap:4px;display:grid}.calendar-day{aspect-ratio:1;background:var(--bg-primary);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition);border:none;flex-direction:column;justify-content:center;align-items:center;gap:4px;padding:4px;display:flex}.calendar-day:hover{background:var(--bg-tertiary)}.calendar-day.other-month{opacity:.4}.calendar-day.today .day-number{background:var(--accent-color);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:24px;height:24px;display:flex}.calendar-day.selected{background:var(--accent-light);outline:2px solid var(--accent-color)}.calendar-day .day-number{color:var(--text-primary);font-size:14px;font-weight:500}.day-indicators{gap:2px;display:flex}.indicator{border-radius:50%;width:6px;height:6px}.indicator.completed{opacity:.4}.indicator-more{color:var(--text-muted);font-size:8px}.calendar-detail{background:var(--bg-secondary);border-radius:var(--radius-lg);padding:20px}.detail-date{font-family:var(--font-serif);border-bottom:1px solid var(--border-color);margin-bottom:16px;padding-bottom:12px;font-size:18px;font-weight:600}.detail-placeholder{text-align:center;color:var(--text-muted);padding:40px 20px}.courses-grid{gap:20px;display:grid}@media (width>=768px){.courses-grid{grid-template-columns:repeat(auto-fill,minmax(380px,1fr))}}.course-count{color:var(--text-secondary);font-size:13px}.course-card{background:var(--bg-secondary);border-radius:var(--radius-lg);overflow:hidden}.course-header{color:#fff;padding:16px 20px}.course-name{font-family:var(--font-serif);margin-bottom:4px;font-size:20px;font-weight:600}.course-term{opacity:.9;font-size:13px}.course-body{padding:20px}.course-info{margin-bottom:16px}.info-row{color:var(--text-secondary);align-items:center;gap:8px;margin-bottom:6px;font-size:13px;display:flex}.info-row svg{color:var(--text-muted)}.course-stats{background:var(--bg-tertiary);border-radius:var(--radius-md);margin-bottom:16px;padding:12px}.stat-row{justify-content:space-between;align-items:center;margin-bottom:6px;font-size:13px;display:flex}.stat-label{color:var(--text-secondary)}.stat-value{color:var(--text-primary);align-items:center;gap:4px;font-weight:500;display:flex}.progress-bar{background:var(--border-color);border-radius:2px;height:4px;margin-top:8px;overflow:hidden}.progress-fill{border-radius:2px;height:100%;transition:width .3s}.course-library{border-top:1px solid var(--border-color);padding-top:16px}.course-library h4{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;align-items:center;gap:6px;margin-bottom:8px;font-size:12px;font-weight:600;display:flex}.library-item{color:var(--text-primary);margin-bottom:4px;font-size:13px}.library-path{color:var(--text-muted);font-family:monospace;font-size:11px}.course-syllabus{border-top:1px solid var(--border-color);margin-top:16px;padding-top:16px}.course-syllabus summary{color:var(--accent-color);cursor:pointer;padding:8px 0;font-size:13px;font-weight:500}.syllabus-weeks{padding-top:12px}.syllabus-week{margin-bottom:16px}.syllabus-week h5{font-family:var(--font-serif);color:var(--text-primary);font-size:14px;font-weight:600}.week-dates{color:var(--text-muted);margin:4px 0 8px;font-size:12px}.week-readings{padding-left:12px;list-style:none}.week-readings li{color:var(--text-secondary);border-left:2px solid var(--border-color);margin-left:-12px;padding:4px 0 4px 10px;font-size:13px}.week-readings li.completed{opacity:.6;text-decoration:line-through}.week-readings .pages{color:var(--text-muted)}.app-loading,.app-error{text-align:center;flex-direction:column;justify-content:center;align-items:center;height:100vh;padding:20px;display:flex}.loading-spinner{border:3px solid var(--border-color);border-top-color:var(--accent-color);border-radius:50%;width:40px;height:40px;margin-bottom:16px;animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.app-loading p,.app-error p{color:var(--text-secondary);font-size:14px}.app-error h2{font-family:var(--font-serif);color:var(--danger-color);margin-bottom:8px}.app-error code{background:var(--bg-secondary);border-radius:var(--radius-sm);padding:2px 6px;font-size:13px}.settings-overlay{z-index:1000;background:#00000080;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.settings-panel{background:var(--bg-primary);border-radius:var(--radius-lg);width:100%;max-width:500px;max-height:90vh;box-shadow:var(--shadow-lg);flex-direction:column;display:flex;overflow:hidden}.settings-header{border-bottom:1px solid var(--border-color);background:var(--bg-secondary);justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.settings-title{color:var(--text-primary);align-items:center;gap:10px;display:flex}.settings-title h2{font-family:var(--font-serif);margin:0;font-size:18px;font-weight:600}.close-btn{color:var(--text-secondary);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition);background:0 0;border:none;padding:6px}.close-btn:hover{background:var(--bg-tertiary);color:var(--text-primary)}.settings-content{padding:20px;overflow-y:auto}.settings-section{margin-bottom:28px}.settings-section:last-child{margin-bottom:0}.settings-section h3{font-family:var(--font-serif);color:var(--text-primary);align-items:center;gap:8px;margin-bottom:6px;font-size:15px;font-weight:600;display:flex}.setting-description{color:var(--text-secondary);margin-bottom:12px;font-size:13px}.sessions-toggle{gap:12px;display:flex}.session-btn{border:2px solid var(--border-color);background:var(--bg-secondary);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition);flex-direction:column;flex:1;align-items:center;gap:4px;padding:16px 12px;display:flex}.session-btn:hover{border-color:var(--text-muted)}.session-btn.active{border-color:var(--accent-color);background:var(--accent-light)}.session-number{color:var(--text-primary);font-size:28px;font-weight:700}.session-btn.active .session-number{color:var(--accent-color)}.session-label{color:var(--text-secondary);font-size:12px}.split-time-setting{align-items:center;gap:12px;margin-top:16px;display:flex}.split-time-setting label{color:var(--text-secondary);font-size:13px}.split-time-setting select{border:1px solid var(--border-color);background:var(--bg-secondary);color:var(--text-primary);border-radius:var(--radius-md);cursor:pointer;flex:1;padding:8px 12px;font-size:14px}.weekday-chips{flex-wrap:wrap;gap:8px;display:flex}.weekday-chip{border:2px solid var(--border-color);background:var(--bg-secondary);color:var(--text-secondary);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition);padding:8px 14px;font-size:13px;font-weight:500}.weekday-chip:hover{border-color:var(--text-muted)}.weekday-chip.off{border-color:var(--accent-color);background:var(--accent-light);color:var(--accent-color)}.off-days-summary{color:var(--text-muted);margin-top:12px;font-size:12px;font-style:italic}.blackout-input{gap:8px;display:flex}.blackout-input input{border:1px solid var(--border-color);background:var(--bg-secondary);color:var(--text-primary);border-radius:var(--radius-md);flex:1;padding:8px 12px;font-size:14px}.add-blackout-btn{background:var(--accent-color);color:#fff;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition);border:none;padding:8px 16px;font-size:13px;font-weight:500}.add-blackout-btn:disabled{opacity:.5;cursor:not-allowed}.add-blackout-btn:not(:disabled):hover{opacity:.9}.blackout-list{margin-top:12px;list-style:none}.blackout-item{background:var(--bg-secondary);border-radius:var(--radius-sm);color:var(--text-primary);justify-content:space-between;align-items:center;margin-bottom:6px;padding:8px 12px;font-size:13px;display:flex}.remove-blackout-btn{color:var(--text-muted);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition);background:0 0;border:none;padding:4px}.remove-blackout-btn:hover{background:var(--bg-tertiary);color:var(--danger-color)}.settings-note{background:var(--bg-secondary);border-radius:var(--radius-md);margin-top:8px;padding:16px}.settings-note h4{color:var(--text-primary);margin-bottom:8px;font-size:13px;font-weight:600}.settings-note ul{color:var(--text-secondary);padding-left:18px;font-size:12px}.settings-note li{margin-bottom:4px}.settings-note em{color:var(--accent-color);font-style:normal}.settings-btn{border:1px solid var(--border-color);background:var(--bg-primary);color:var(--text-secondary);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition);padding:6px}.settings-btn:hover{background:var(--bg-tertiary);color:var(--text-primary)}.session-indicator{background:var(--accent-light);border-radius:var(--radius-md);color:var(--accent-color);align-items:center;gap:8px;padding:8px 12px;font-size:13px;font-weight:500;display:flex}.session-indicator.am{color:#92400e;background:#fef3c7}.session-indicator.pm{color:#1e40af;background:#dbeafe}[data-theme=dark] .session-indicator.am{color:#fef3c7;background:#78350f}[data-theme=dark] .session-indicator.pm{color:#bfdbfe;background:#1e3a5f}.day-column.off-day{background:var(--bg-tertiary);opacity:.7}.day-column.off-day .day-header{background:var(--bg-tertiary)}.off-day-badge{color:var(--text-muted);font-size:10px;font-style:italic}.reading-card.hard-deadline{border-left-color:var(--warning-color);background:var(--bg-secondary)}.reading-card.hard-deadline .reading-title:before{content:"📅 "}.hard-deadline-badge{background:var(--warning-color);color:#fff;border-radius:var(--radius-sm);text-transform:uppercase;align-items:center;gap:4px;padding:2px 6px;font-size:10px;font-weight:600;display:inline-flex}.course-filter{border-bottom:1px solid var(--border-color);flex-wrap:wrap;gap:8px;margin-bottom:20px;padding:12px 0;display:flex}.filter-chip{border:1.5px solid var(--border-color);background:var(--bg-primary);color:var(--text-secondary);cursor:pointer;transition:all var(--transition);font-size:13px;font-weight:500;font-family:var(--font-sans);border-radius:20px;align-items:center;padding:6px 14px;display:inline-flex}.filter-chip:hover{background:var(--bg-tertiary);border-color:var(--text-muted)}.filter-chip:focus-visible{outline:2px solid var(--accent-color);outline-offset:2px}.filter-chip.active{background:var(--chip-active-bg,var(--accent-color));border-color:var(--chip-active-bg,var(--accent-color));color:#fff}.filter-chip:not(.active):hover{border-color:var(--chip-color,var(--text-muted));color:var(--chip-color,var(--text-primary))}.filter-chip:first-child.active{background:var(--accent-color);border-color:var(--accent-color)}[data-theme=dark] .filter-chip.active{color:#fff}[data-theme=dark] .filter-chip:not(.active){background:var(--bg-secondary)}.empty-state svg[class*=lucide-filter]{color:var(--text-muted)}
