*{margin:0;padding:0;box-sizing:border-box}:root{--bg: #fafafa;--card: #fff;--border: #e5e5e5;--text: #1a1a1a;--text-secondary: #666;--accent: #a51c30;--accent-light: #fef2f2;--tag-bg: #f3f4f6}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);line-height:1.5;-webkit-font-smoothing:antialiased}#root{max-width:900px;margin:0 auto;padding:1rem}.card{background:var(--card);border:1px solid var(--border);border-left:3px solid;border-radius:8px;overflow:hidden;transition:box-shadow .15s}.card:hover{box-shadow:0 1px 4px #0000000f}.card-checked{opacity:.5}.card-checked .card-title{text-decoration:line-through}.card-header{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;cursor:pointer;gap:1rem;-webkit-user-select:none;user-select:none}.card-left{display:flex;align-items:center;gap:.6rem;min-width:0}.check-btn{width:18px;height:18px;border:2px solid var(--border);border-radius:4px;background:none;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;padding:0;transition:all .15s}.check-btn:hover{border-color:var(--accent)}.check-btn.checked{background:var(--accent);border-color:var(--accent);color:#fff}.type-icon{display:flex;align-items:center;flex-shrink:0;opacity:.7}.course-tag{font-size:.7rem;font-weight:600;padding:2px 8px;border-radius:4px;white-space:nowrap;flex-shrink:0}.card-title{font-size:.9rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card-right{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.card-time{font-size:.8rem;color:var(--text-secondary);white-space:nowrap}.chevron{font-size:.75rem;color:var(--text-secondary);transition:transform .2s;display:inline-block}.chevron.open{transform:rotate(180deg)}.card-details{padding:0 1rem 1rem;border-top:1px solid var(--border);animation:slideDown .15s ease-out}.detail-section{margin-top:.75rem;padding-top:.5rem}.detail-section+.detail-section{border-top:1px solid var(--border)}.detail-section h4{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-secondary);margin-bottom:.4rem}.detail-section p{font-size:.85rem;line-height:1.6}.case-summary{color:var(--text)}.materials-list{list-style:none;padding:0;display:flex;flex-direction:column;gap:2px}.materials-list li{padding:.3rem .5rem;border-radius:4px;transition:background .1s}.materials-list li:hover{background:var(--bg)}.materials-list a{color:var(--accent);text-decoration:none;font-size:.82rem;font-weight:500;display:flex;align-items:center;gap:.4rem}.materials-list a:before{content:"";display:inline-block;width:4px;height:4px;border-radius:50%;background:currentColor;opacity:.5;flex-shrink:0}.materials-list a:hover{text-decoration:underline}.questions-list{padding-left:1.2rem}.questions-list li{font-size:.85rem;padding:.2rem 0;line-height:1.5}.type-label{font-size:.65rem;font-weight:500;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.03em;flex-shrink:0}.points-badge{font-size:.65rem;font-weight:600;padding:1px 6px;border-radius:3px;white-space:nowrap;background:#f3f4f6;color:#6b7280}.status-badge{font-size:.65rem;font-weight:600;padding:1px 6px;border-radius:3px;white-space:nowrap}.status-badge.submitted{background:#dbeafe;color:#1d4ed8}.status-badge.graded{background:#dcfce7;color:#15803d}.status-badge.excused{background:#f3f4f6;color:#6b7280}.skeleton{padding:.75rem 0 .25rem;display:flex;flex-direction:column;gap:.5rem}.skeleton-line{height:.75rem;border-radius:4px;background:linear-gradient(90deg,var(--border) 25%,transparent 50%,var(--border) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite}.skeleton-line.short{width:30%}.skeleton-line.medium{width:60%}.skeleton-line.full{width:100%}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.detail-error{font-size:.85rem;color:#dc2626;padding:.5rem 0}.plain-text{color:var(--text-secondary)}.raw-description{font-size:.85rem;line-height:1.6}.raw-description a{color:var(--accent)}.raw-description ol,.raw-description ul{padding-left:1.2rem}.raw-description img{max-width:100%;height:auto}.card-deadline{border-left-width:4px}.card-deadline-urgent{background:#fef2f2;border-left-color:#dc2626;animation:urgentPulse 2s ease-in-out infinite}.card-deadline-soon{background:#fff7ed;border-left-color:#ea580c}.card-deadline-past{background:#fef2f2;border-left-color:#991b1b}@keyframes urgentPulse{0%,to{box-shadow:0 0 #dc262600}50%{box-shadow:0 0 0 3px #dc262626}}.due-badge{font-size:.6rem;font-weight:700;padding:1px 6px;border-radius:3px;white-space:nowrap;flex-shrink:0;letter-spacing:.04em}.due-badge-urgent{background:#dc2626;color:#fff}.due-badge-soon{background:#ea580c;color:#fff}.due-badge-past{background:#991b1b;color:#fff}.due-badge-normal{background:#f59e0b;color:#fff}.summary-link{display:inline-block;color:var(--accent);text-decoration:none;font-size:.8rem;font-weight:600;padding:.35rem .75rem;border:1px solid var(--accent);border-radius:6px;transition:all .15s}.summary-link:hover{background:var(--accent);color:#fff}.schedule{display:flex;flex-direction:column;gap:1.5rem;padding:1rem 0}.day-group.today .day-header{color:var(--accent)}.day-header{font-size:.85rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:var(--text-secondary);margin-bottom:.5rem;padding-bottom:.25rem}.day-items{display:flex;flex-direction:column;gap:.5rem}.empty{text-align:center;padding:3rem;color:var(--text-secondary)}.deadlines-banner{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:.6rem .75rem;margin-bottom:.75rem;display:flex;align-items:flex-start;gap:.75rem}.deadlines-label{display:flex;align-items:center;gap:.35rem;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary);white-space:nowrap;padding-top:.25rem;flex-shrink:0}.deadlines-list{display:flex;flex-wrap:wrap;gap:.4rem;flex:1;min-width:0}.deadline-item{display:flex;align-items:center;gap:.4rem;padding:.25rem .6rem;border:1px solid var(--border);border-radius:6px;background:var(--bg);cursor:pointer;transition:all .15s;max-width:100%;min-width:0;font-family:inherit;font-size:inherit;color:inherit}.deadline-item:hover{border-color:var(--accent);box-shadow:0 1px 3px #0000000f}.deadline-item.urgent{border-color:#fca5a5;background:#fef2f2}.deadline-item.past{border-color:#fca5a5;background:#fef2f2;opacity:.7}.deadline-item.soon{border-color:#fed7aa;background:#fff7ed}.deadline-course{font-size:.65rem;font-weight:700;flex-shrink:0}.deadline-title{font-size:.75rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px;color:var(--text)}.deadline-time{font-size:.65rem;font-weight:600;white-space:nowrap;flex-shrink:0;color:var(--text-secondary)}.deadline-time.urgent{color:#dc2626}.deadline-time.past{color:#991b1b}.deadline-time.soon{color:#ea580c}@keyframes highlightFlash{0%{box-shadow:0 0 0 3px #a51c304d}to{box-shadow:0 0 #a51c3000}}.highlight-flash{animation:highlightFlash 1.5s ease-out}.app-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 0;margin-bottom:.5rem;border-bottom:1px solid var(--border)}.app-header h1{font-size:1.5rem;font-weight:700;color:var(--accent)}.header-controls{display:flex;align-items:center;gap:.75rem}.week-toggle{display:flex;gap:4px}.week-toggle button{padding:4px 12px;border:1px solid var(--border);border-radius:6px;background:var(--card);cursor:pointer;font-size:.8rem;font-weight:500;color:var(--text-secondary);transition:all .15s}.week-toggle button:hover{border-color:var(--accent);color:var(--accent)}.week-toggle button.active{background:var(--accent);color:#fff;border-color:var(--accent)}.last-updated{font-size:.7rem;color:var(--text-secondary);white-space:nowrap}.refresh-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px solid var(--border);border-radius:6px;background:var(--card);cursor:pointer;color:var(--text-secondary);transition:all .15s}.refresh-btn:hover{border-color:var(--accent);color:var(--accent)}.refresh-btn:active svg{transform:rotate(180deg);transition:transform .3s}.settings-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px solid var(--border);border-radius:6px;background:var(--card);cursor:pointer;color:var(--text-secondary);transition:all .15s}.settings-btn:hover{border-color:var(--accent);color:var(--accent)}.settings-btn.has-key{color:var(--accent);border-color:var(--accent);background:var(--accent-light)}.settings-panel{padding:.75rem 1rem;background:var(--card);border:1px solid var(--border);border-radius:8px;margin-bottom:.75rem;animation:slideDown .15s ease-out}.settings-panel label{font-size:.8rem;font-weight:600;color:var(--text)}.settings-hint{font-size:.75rem;color:var(--text-secondary);margin:.25rem 0 .5rem}.settings-row{display:flex;gap:.5rem}.settings-row input{flex:1;padding:6px 10px;border:1px solid var(--border);border-radius:6px;font-size:.8rem;font-family:monospace;background:var(--bg);color:var(--text)}.settings-row input:focus{outline:none;border-color:var(--accent)}.save-btn,.clear-btn{padding:6px 14px;border:1px solid var(--border);border-radius:6px;font-size:.8rem;font-weight:500;cursor:pointer;transition:all .15s}.save-btn{background:var(--accent);color:#fff;border-color:var(--accent)}.save-btn:hover{opacity:.9}.clear-btn{background:var(--card);color:var(--text-secondary)}.clear-btn:hover{border-color:var(--accent);color:var(--accent)}.info-banner{font-size:.82rem;color:var(--text-secondary);background:#fffbeb;border:1px solid #fde68a;border-radius:8px;padding:.6rem 1rem;margin-bottom:.75rem}.info-banner button{background:none;border:none;color:var(--accent);font-weight:600;font-size:inherit;cursor:pointer;padding:0;text-decoration:underline}@keyframes slideDown{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.course-filters{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:.75rem}.filter-chip{font-size:.75rem;font-weight:600;padding:4px 12px;border:1px solid var(--border);border-radius:16px;background:var(--card);color:var(--text-secondary);cursor:pointer;transition:all .15s;white-space:nowrap}.filter-chip:hover{border-color:var(--accent)}.filter-chip.active{border-color:currentColor}.filter-chip:not(.active){opacity:.5}.filter-chip-all{font-weight:700}.loading{text-align:center;padding:3rem;color:var(--text-secondary)}.error{text-align:center;padding:2rem;color:#dc2626;background:#fef2f2;border-radius:8px;margin:1rem 0}.case-page{padding:1rem 0}.case-nav{margin-bottom:1.5rem}.back-link{display:inline-flex;align-items:center;gap:.4rem;color:var(--accent);text-decoration:none;font-size:.85rem;font-weight:500}.back-link:hover{text-decoration:underline}.case-loading{padding:2rem 0}.case-loading .skeleton{gap:.75rem}.case-error{text-align:center;padding:3rem 1rem}.case-error h2{font-size:1.2rem;margin-bottom:.5rem}.case-error p{font-size:.9rem;color:var(--text-secondary)}.case-error-hint{margin-top:.75rem;font-size:.8rem!important;color:var(--text-secondary)}.case-header{border-left:4px solid;padding-left:1rem;margin-bottom:2rem}.case-course-tag{display:inline-block;font-size:.7rem;font-weight:600;padding:2px 8px;border-radius:4px;margin-bottom:.5rem}.case-title{font-size:1.4rem;font-weight:700;line-height:1.3;margin-bottom:.25rem}.case-subtitle{font-size:.95rem;color:var(--text-secondary);margin-bottom:.25rem}.case-meta{font-size:.75rem;color:var(--text-secondary);margin-top:.5rem}.case-section{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:1.25rem;margin-bottom:1rem}.case-section h2{font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary);margin-bottom:1rem}.summary-block{margin-bottom:1rem}.summary-block:last-child{margin-bottom:0}.summary-block h3{font-size:.95rem;font-weight:600;margin-bottom:.3rem}.summary-block p{font-size:.9rem;line-height:1.7;color:var(--text)}.questions-list{display:flex;flex-direction:column;gap:.75rem}.question-card{display:flex;gap:.75rem;align-items:flex-start}.question-number{width:24px;height:24px;border-radius:50%;background:var(--accent);color:#fff;font-size:.7rem;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:2px}.question-content{flex:1;min-width:0}.question-text{font-size:.9rem;line-height:1.6}.question-guidance{margin-top:.4rem}.question-guidance summary{font-size:.8rem;color:var(--accent);cursor:pointer;font-weight:500}.question-guidance p{font-size:.85rem;line-height:1.6;color:var(--text-secondary);margin-top:.3rem;padding-left:.5rem;border-left:2px solid var(--border)}.takeaways-list{list-style:none;padding:0;display:flex;flex-direction:column;gap:.5rem}.takeaways-list li{font-size:.9rem;line-height:1.6;padding-left:1.25rem;position:relative}.takeaways-list li:before{content:"";position:absolute;left:0;top:.55em;width:6px;height:6px;border-radius:50%;background:var(--accent)}.case-section .materials-list{list-style:none;padding:0}.case-section .materials-list li{padding:.25rem 0}.case-section .materials-list a{color:var(--accent);text-decoration:none;font-size:.85rem;font-weight:500}.case-section .materials-list a:hover{text-decoration:underline}
