.schedule-wrap{max-height:68vh;overflow:auto;border:1px solid #dbe5f0;border-radius:12px;margin-top:14px}
.schedule-head,.schedule-grid{display:grid;grid-template-columns:76px repeat(var(--schedule-columns),minmax(175px,1fr))}
.schedule-head{position:sticky;top:0;background:#edf5ff;z-index:2;border-bottom:1px solid #cad9eb}
.schedule-head>div{padding:12px 8px;font-size:12px;font-weight:700;border-right:1px solid #dbe5f0}
.schedule-axis,.schedule-lane{position:relative;height:var(--schedule-height)}
.schedule-axis{background:#f7faff;border-right:1px solid #dbe5f0}
.schedule-time{position:absolute;left:8px;font-size:11px;line-height:24px;color:#72849a}
.schedule-time.hour{color:#254668;font-weight:700}
.schedule-lane{border-right:1px solid #dbe5f0;background:repeating-linear-gradient(to bottom,transparent 0,transparent 23px,#e7edf5 23px,#e7edf5 24px)}
.schedule-slot{position:absolute;left:0;right:0;height:24px;background:transparent;border:0;color:transparent;padding:0;text-align:right;font-size:15px}
.schedule-slot:hover,.schedule-slot:focus-visible{background:#eaf3ff;color:#3d77bd;outline:2px solid #73a9eb;outline-offset:-2px}
.schedule-event{position:absolute;left:3px;right:3px;border:0;border-left:3px solid #327ade;border-radius:6px;padding:3px 6px;background:#dcecff;color:#193d68;text-align:left;overflow:hidden;font-size:11px;line-height:15px;z-index:1;box-shadow:0 1px 2px #16406b13;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start}
.schedule-event:focus-visible{outline:2px solid #163e70;outline-offset:1px}
.schedule-event strong{display:block;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.schedule-event .event-time{font-weight:700;white-space:nowrap}
.schedule-event.compact{padding:1px 4px;font-size:10px;line-height:13px}
.schedule-event.compact strong{font-size:11px;line-height:13px}
.schedule-event.short{display:block;padding:0 4px;line-height:14px;font-size:10px}
.schedule-event.short strong{display:inline;font-size:10px}
.schedule-event.confirmed{background:#dff4f0;border-color:#1e937f;color:#115b50}
.schedule-event.arrived{background:#fff0d5;border-color:#d69a30;color:#785018}
.schedule-event.in-progress{background:#e9e4ff;border-color:#8060c6;color:#4c3485}
.schedule-event.completed{background:#e8eef3;border-color:#8095a6;color:#536d81}
.schedule-history{margin-top:18px}
.schedule-history h3{font-size:15px}
.schedule-history .item{margin:7px 0}
.schedule-legend{display:flex;gap:12px;flex-wrap:wrap;font-size:11px;color:#687c92;margin-top:12px}
.schedule-legend span::before{content:'●';color:#327ade;margin-right:4px}
.schedule-legend .confirmed::before{color:#1e937f}.schedule-legend .arrived::before{color:#d69a30}.schedule-legend .in-progress::before{color:#8060c6}.schedule-legend .completed::before{color:#8095a6}
.appointment-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:15px}
.schedule-help{margin:12px 0 0}.schedule-empty{padding:18px;background:#f5f8fc;border-radius:10px}
.schedule-event.movable{cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none}
.schedule-event.dragging{opacity:.35;cursor:grabbing}
body.schedule-dragging,body.schedule-dragging *{cursor:grabbing!important;user-select:none!important}
.schedule-drag-preview{position:absolute;left:2px;right:2px;z-index:4;pointer-events:none;border:2px dashed #2165d9;border-radius:7px;background:#d8eaffdb;color:#123f7d;padding:3px;font-size:11px;font-weight:700;overflow:hidden}
.schedule-drag-preview.blocked{background:#ffe4e4db;border-color:#bf3048;color:#8b2235}
.schedule-move-status{font-size:12px;height:36px;line-height:18px;overflow:auto;margin-top:8px;color:#1d6656}
.schedule-move-status.error{color:#bd243c}
.schedule-board.is-saving .movable{cursor:progress;opacity:.65}
.linked-plan{border-color:#2165d9;box-shadow:0 0 0 2px #2165d91c}
.treatment-visits{margin:10px 0}.treatment-visit{display:flex;gap:10px;justify-content:space-between;align-items:center;margin:7px 0;padding:8px;border-radius:8px;background:#f3f7fc}
@media(max-width:600px){.schedule-wrap{max-height:62vh}.schedule-head,.schedule-grid{grid-template-columns:62px repeat(var(--schedule-columns),minmax(160px,1fr))}.schedule-time{left:5px}}
