:root{color:#18212f;background:#f5f7fb;font-family:Inter,PingFang SC,Microsoft YaHei,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px}button,select{font:inherit}.app-shell{width:min(1440px,calc(100vw - 32px));margin:0 auto;padding:24px 0 40px}.topbar{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:18px}.eyebrow{margin:0 0 4px;color:#526276;font-size:13px;font-weight:700}h1,h2,p{margin-top:0}h1{margin-bottom:0;font-size:30px;line-height:1.2;letter-spacing:0}.summary-strip{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.summary-strip span{border:1px solid #d6dde8;border-radius:8px;background:#fff;color:#435268;padding:7px 10px;font-size:13px;font-weight:700}.filters{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;padding:14px;margin-bottom:18px;border:1px solid #dbe2ec;border-radius:8px;background:#fff}.filter-fields{display:flex;flex-wrap:wrap;gap:12px}.filter-fields label{display:grid;gap:6px;min-width:172px}.filter-fields label span{color:#5b6778;font-size:13px;font-weight:700}.filter-fields select{min-height:38px;border:1px solid #cbd5e1;border-radius:8px;background:#fff;color:#18212f;padding:0 34px 0 10px}.filter-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.week-switcher{display:flex}.week-switcher button:first-child{border-radius:8px 0 0 8px}.week-switcher button+button{border-left:0;border-radius:0 8px 8px 0}.filter-actions button{min-height:38px;border:0;border-radius:8px;background:#1f6f5b;color:#fff;padding:0 14px;font-weight:800;cursor:pointer}.week-switcher button{border:1px solid #cbd5e1;background:#f8fafc;color:#34445a;padding:0 10px;white-space:nowrap}.filters button:disabled{cursor:not-allowed;opacity:.45}.schedule-board{overflow-x:auto;border:1px solid #d8e0ea;border-radius:8px;background:#fff}.schedule-grid{display:grid;min-width:1264px;position:relative}.grid-head,.section-cell,.slot-cell{border-right:1px solid #dfe6ef;border-bottom:1px solid #dfe6ef}.grid-head{position:sticky;top:0;z-index:1;background:#eaf0f7;color:#263349;padding:12px 10px;font-size:14px;font-weight:800;text-align:center}.grid-corner{left:0;z-index:2}.section-cell{position:sticky;left:0;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#f7fafc;color:#41516a;font-weight:800}.section-cell strong{color:#1f2937;font-size:18px;line-height:1.05}.section-cell span{color:#6b7280;font-size:12px;line-height:1.25}.slot-cell{background:#fff}.break-row{z-index:3;display:flex;align-items:center;justify-content:center;border-bottom:1px solid #dfe6ef;background:#eef1f5;color:#7a8493;font-size:14px;font-weight:800}.course-stack{z-index:2;position:relative;display:grid;gap:6px;align-content:stretch;padding:5px;min-height:0;overflow:hidden}.course-stack.is-split{position:relative;padding-left:3px;padding-right:3px}.course-card{border:1px solid #ccd9e8;border-left-width:4px;border-radius:8px;background:#fbfdff;padding:7px;box-shadow:0 1px 2px #0f172a0f;overflow:hidden}.course-card.room-509{border-left-color:#2563eb}.course-card.room-510{border-left-color:#e26d2d}.course-card.room-other{border-left-color:#64748b}.course-card.is-conflict{border-color:#d03838;background:#fff8f7}.course-card__top{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:5px}.course-card__top strong{font-size:13px;line-height:1.25}.course-card__top span{flex:0 0 auto;border-radius:6px;background:#eef2f7;color:#34445a;padding:3px 6px;font-size:12px;font-weight:800}.course-card dl{display:grid;gap:3px;margin:0}.course-card dl div{display:grid;grid-template-columns:34px minmax(0,1fr);gap:6px;align-items:start}.course-card dt{color:#6b7788;font-size:12px}.course-card dd{margin:0;color:#263349;font-size:12px;line-height:1.35;overflow-wrap:anywhere}.conflict-label{margin:8px 0 0;color:#b42318;font-size:12px;font-weight:800}.diagnostics,.empty-state{margin-top:16px;border:1px solid #d8e0ea;border-radius:8px;background:#fff;padding:16px}.diagnostics h2,.empty-state h1{margin-bottom:6px;font-size:18px}.diagnostics p,.empty-state p{margin-bottom:0;color:#58677d}@media(max-width:720px){.app-shell{width:min(100vw - 20px,1440px);padding-top:14px}.topbar{align-items:flex-start;flex-direction:column;gap:12px}h1{font-size:24px}.summary-strip{justify-content:flex-start}.filters{align-items:stretch;flex-direction:column}.filter-fields,.filter-actions{width:100%}.filter-fields label,.filter-actions>button,.week-switcher{width:100%}.week-switcher button{flex:1}}
