body{background:#f5f6f8;margin:0}#root{min-height:100dvh}.booking-grid{background:#fff;border:1px solid #e5e7eb;border-radius:6px;grid-template-columns:110px repeat(24,minmax(0,1fr)) 44px;display:grid;position:relative;overflow:hidden}.booking-grid .cell{border-bottom:1px solid #f0f1f3;border-right:1px solid #f0f1f3;min-width:0;min-height:0}.booking-grid .cell.on-hour{border-right-color:#e0e3e8}.booking-grid .cell.head{color:#6b7280;background:#f6f8fa;justify-content:center;align-items:center;font-size:11px;font-weight:600;display:flex}.booking-grid .cell.head.end-col{color:#1677ff;background:#eef4ff}.booking-grid .cell.slot.end-col{background:#fbfcff}.booking-grid .now-line{z-index:2;pointer-events:none;background:#ff4d4f;width:2px;transition:left .8s linear;position:absolute;top:28px;bottom:0}.booking-grid .now-line:before{content:"现在";color:#ff4d4f;white-space:nowrap;font-size:10px;line-height:1;position:absolute;top:-2px;left:3px}.booking-grid .cell.room-name{background:#f6f8fa;flex-direction:column;justify-content:center;align-items:flex-start;gap:2px;padding:0 8px;display:flex}.booking-grid .booking{z-index:1;background:#e6f4ff;border-left:3px solid #1677ff;border-radius:4px;min-width:0;margin:4px 3px;padding:4px 6px;transition:transform .15s,box-shadow .15s;position:relative;overflow:hidden}.booking-grid .booking:not(.cancelled):hover{z-index:3;transform:translateY(-1px);box-shadow:0 2px 8px #1677ff2e}.booking-grid .booking.status-running{background:#f6ffed;border-left-color:#52c41a}.booking-grid .booking.status-running .booking-text{color:#389e0d}.booking-grid .booking.status-running .meta{color:#6cb349}.booking-grid .booking.status-over{background:#fafafa;border-left-color:#d4d4d8}.booking-grid .booking.status-over .booking-text{color:#8c8c8c}.booking-grid .booking.status-over .meta{color:#b3b3b3}.booking-grid .booking .booking-text{white-space:nowrap;text-overflow:ellipsis;color:#1677ff;flex-direction:column;gap:1px;font-size:11px;line-height:1.35;display:flex;overflow:hidden}.booking-grid .booking .topic{text-overflow:ellipsis;font-weight:600;overflow:hidden}.booking-grid .booking .meta{color:#4096ff;text-overflow:ellipsis;overflow:hidden}.booking-grid .booking.cancelled{z-index:0;background:#fafafa;border:1px dashed #d4d4d8}.booking-grid .booking.cancelled-under{background:#d4d4d8;border:none;border-radius:2px;align-self:start;height:4px;min-height:0;margin:0 3px;padding:0}.booking-grid .booking.cancelled .booking-text{color:#a1a1aa;text-decoration:line-through}.booking-grid .booking.cancelled .meta{color:#c4c4cc}.booking-grid .booking .cancelled-tag{color:#71717a;background:#e4e4e7;border-color:#d4d4d8;align-self:flex-start;margin:0;padding:0 4px;font-size:10px;line-height:16px;text-decoration:none}.booking-grid .history-badge{z-index:2;color:#52525b;cursor:default;background:#d4d4d8;border-radius:0 4px;padding:0 4px;font-size:10px;line-height:15px;position:absolute;top:0;right:0}.booking-grid .booking .cancel-btn{opacity:0;transition:opacity .2s;position:absolute;bottom:2px;right:2px}.booking-grid .booking:not(.cancelled):hover .cancel-btn{opacity:1}.record-list .record-row{border-bottom:1px solid #f0f1f3;align-items:center;gap:12px;padding:8px 12px;display:flex}.record-list .record-row:last-child{border-bottom:none}.record-list .record-row.cancelled{background:#fafafa}.record-list .record-row.cancelled .record-main{color:#a1a1aa;text-decoration:line-through}.record-list .record-time{font-variant-numeric:tabular-nums;color:#52525b;flex:0 0 110px;font-size:13px}.record-list .record-main{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-size:13px;overflow:hidden}.record-filter{background:#fafbfc;border-bottom:1px solid #f0f1f3;flex-wrap:wrap;gap:12px;padding:10px 12px;display:flex}.record-filter .filter-item{color:#6b7280;align-items:center;gap:6px;font-size:12px;display:inline-flex}@media (prefers-reduced-motion:reduce){.booking-grid .booking,.booking-grid .now-line,.booking-grid .booking .cancel-btn{transition:none}}
