:root{--ink: #222631;--muted: #7a7f8c;--line: #eceef3;--paper: #f7f8fb}body{margin:0;background:var(--paper);color:var(--ink)}.brand{height:56px;display:flex;align-items:center;padding:0 20px;font-weight:700;font-size:16px;white-space:nowrap;overflow:hidden}.topbar{background:#fff!important;padding:0 16px!important;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);height:56px!important;line-height:56px!important}.content{padding:20px;max-width:1500px;width:100%;box-sizing:border-box}@media (max-width: 768px){.content{padding:12px}}.page-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:16px}.page-head h2{margin:0;font-size:20px}.muted{color:var(--muted)}.week{position:relative;background:#fff;border:1px solid var(--line);border-radius:10px;overflow-x:auto}.week-inner{display:grid;grid-template-columns:56px repeat(7,minmax(120px,1fr));min-width:900px}.week-head{position:sticky;top:0;background:#fff;z-index:3;border-bottom:1px solid var(--line);padding:8px 4px;text-align:center;font-weight:600}.week-head .d{font-weight:400;color:var(--muted);font-size:12px}.week-head.today{color:#e8590c}.week-col{position:relative;border-left:1px solid var(--line)}.week-col.weekend{background:#fbfbfd}.hour-line{position:absolute;left:0;right:0;border-top:1px solid var(--line)}.hour-label{position:absolute;right:6px;font-size:11px;color:var(--muted)}.avail{position:absolute;left:0;right:0;background:#2f9e441a;border-left:3px solid rgba(47,158,68,.45)}.avail.tentative{background:repeating-linear-gradient(45deg,rgba(250,176,5,.12),rgba(250,176,5,.12) 6px,transparent 6px,transparent 12px);border-left-color:#fab005b3}.lesson{position:absolute;border-radius:7px;padding:4px 6px;font-size:12px;line-height:1.35;overflow:hidden;cursor:pointer;box-sizing:border-box;border:1px solid transparent;transition:box-shadow .15s}.lesson:hover{box-shadow:0 2px 10px #00000026;z-index:2}.lesson.draft{border-style:dashed;opacity:.92}.lesson .t{color:#0000008c;font-size:11px}.lesson .n{font-weight:600}.lesson .badge{position:absolute;top:3px;right:4px;font-size:10px;display:flex;gap:2px}.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--muted);align-items:center}.legend i{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:4px;vertical-align:-2px}.warn-row{background:#fff7e6}.skip-row{opacity:.45;text-decoration:line-through}
