/* Lịch điều trị v2: board tuần bảy ngày, xem trước rồi mới ghi. */
.schedule-week-controls{display:grid;gap:18px;margin-bottom:16px}.schedule-week-navigation{display:grid;grid-template-columns:auto auto auto minmax(180px,1fr) auto;align-items:center;gap:8px}.schedule-week-navigation .button{min-height:44px}.schedule-week-range{margin:0 8px;color:var(--text-strong);font-weight:800;text-align:center}.schedule-actions{display:grid;gap:12px;padding-top:16px;border-top:1px solid var(--border)}.schedule-actions h3,.schedule-actions p{margin:0}.schedule-actions p{color:var(--text-muted);font-size:.9rem}.schedule-trigger-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.schedule-trigger-grid .button{min-height:52px;white-space:normal}.schedule-trigger-grid .button.is-selected{outline:3px solid var(--primary-100);border-color:var(--primary-700)}.schedule-patient-field{display:grid;gap:5px;max-width:460px;color:var(--text-muted);font-size:.875rem;font-weight:700}.schedule-patient-field select{width:100%}.schedule-patient-field small{font-weight:400;line-height:1.45}.schedule-past-notice{margin:0;padding:12px;border:1px solid var(--warning-600);border-radius:10px;background:var(--warning-50);color:var(--text-strong)}
.schedule-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:16px}.schedule-summary-card{display:grid;gap:4px;min-height:82px;padding:14px 16px;border:1px solid var(--border);border-radius:16px;background:var(--surface)}.schedule-summary-card span{color:var(--text-muted);font-size:.875rem}.schedule-summary-card strong{font-size:1.6rem;color:var(--text-strong)}
.schedule-board-heading{display:flex;justify-content:space-between;gap:12px;margin:0 0 12px}.schedule-board-heading h3,.schedule-board-heading p{margin:0}.schedule-board-heading p{margin-top:3px;color:var(--text-muted);font-size:.9rem}.schedule-week-board{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;min-width:0}.schedule-day-column{display:grid;align-content:start;min-width:0;min-height:310px;border:1px solid var(--border);border-radius:16px;background:var(--surface-soft);overflow:hidden}.schedule-day-heading{display:flex;align-items:center;justify-content:space-between;gap:6px;min-height:56px;padding:10px;border-bottom:1px solid var(--border);background:var(--surface)}.schedule-day-heading h3{margin:0;font-size:.92rem;color:var(--text-strong)}.schedule-today{padding:3px 7px;border-radius:999px;background:var(--primary-100);color:var(--primary-700);font-size:.7rem;font-weight:800;white-space:nowrap}.schedule-day-items{display:grid;align-content:start;gap:8px;padding:8px}.schedule-day-empty{margin:24px 4px;color:var(--text-muted);font-size:.85rem;text-align:center}.schedule-assignment{display:grid;gap:5px;min-width:0;padding:10px;border:1px solid var(--procedure-border,var(--border));border-left:4px solid var(--procedure-accent,var(--primary-600));border-radius:12px;background:var(--procedure-bg,var(--surface));overflow-wrap:anywhere}.schedule-assignment-time{font-size:.9rem;color:var(--text-strong)}.schedule-assignment h4{margin:0;font-size:.9rem;color:var(--text-strong);line-height:1.35}.schedule-assignment-details{margin:0;color:var(--text-muted);font-size:.78rem;line-height:1.4}.schedule-status{display:inline-flex;width:max-content;max-width:100%;padding:3px 7px;border-radius:999px;font-size:.72rem;font-weight:800}.schedule-status-planned{color:var(--primary-700);background:var(--primary-100)}.schedule-status-progress{color:var(--warning-600);background:var(--warning-50)}.schedule-status-completed{color:var(--success-600);background:var(--success-50)}.schedule-status-locked{color:var(--danger-600);background:var(--danger-50)}
.schedule-state-panel{display:grid;justify-items:start;gap:8px;margin-top:12px;padding:24px}.schedule-state-panel h3,.schedule-state-panel p{margin:0}.schedule-state-panel p{color:var(--text-muted);line-height:1.5}.schedule-state-icon{display:grid;place-items:center;width:40px;height:40px;border-radius:12px;background:var(--primary-100);color:var(--primary-700);font-size:1.4rem;font-weight:800}.schedule-empty-state{border-color:var(--border)}.schedule-error-state{border-color:var(--danger-600);background:var(--danger-50)}.schedule-stale-state{border-color:var(--warning-600);background:var(--warning-50)}.schedule-loading .schedule-state-icon{color:var(--primary-700)}.schedule-empty-action{margin:12px 0}.schedule-feedback{min-height:24px}
.schedule-assurance{display:grid;gap:12px;margin-top:16px;padding:16px}.schedule-assurance .section-heading{margin:0}.schedule-assurance h3{margin:0}.schedule-assurance-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.schedule-assurance-card{display:grid;align-content:start;gap:7px;min-width:0;padding:12px;border:1px solid var(--border);border-radius:12px;background:var(--surface-soft)}.schedule-assurance-card strong{color:var(--text-strong)}.schedule-assurance-card p{margin:0;color:var(--text-muted);font-size:.875rem;line-height:1.45}.schedule-assurance-card ul{display:grid;gap:4px;margin:0;padding-left:20px;color:var(--text-muted);font-size:.84rem}.schedule-assurance-card.is-good{border-color:var(--success-600);background:var(--success-50)}.schedule-assurance-card.is-caution,.schedule-assurance-card.is-warning{border-color:var(--warning-600);background:var(--warning-50)}
.schedule-preview{display:grid;gap:12px;margin-top:16px}.schedule-preview h3,.schedule-preview p{margin:0}.schedule-preview-list{display:grid;gap:8px}.schedule-preview-summary{padding:10px;border-radius:10px;background:var(--primary-100);color:var(--primary-700)}.schedule-preview-card{display:grid;gap:5px;padding:12px;border:1px solid var(--procedure-border,var(--border));border-left:4px solid var(--procedure-accent,var(--primary-600));border-radius:12px;background:var(--procedure-bg,var(--surface))}.schedule-preview-card h4{margin:0;color:var(--text-strong);font-size:.92rem}.schedule-preview-card p{color:var(--text-muted);font-size:.85rem}.schedule-apply-area{display:flex;justify-content:flex-end;padding-top:12px;border-top:1px solid var(--border)}.schedule-dialog{width:min(520px,calc(100vw - 32px));padding:0;border:1px solid var(--border);border-radius:16px;background:var(--surface);color:var(--text-strong)}.schedule-dialog::backdrop{background:rgb(15 58 69 / .35)}.schedule-dialog form{display:grid;gap:14px;padding:22px}.schedule-dialog h2,.schedule-dialog p{margin:0}.schedule-dialog p{color:var(--text-muted);line-height:1.5}.schedule-dialog-actions{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}.schedule-dialog-actions .button{min-height:44px}
@media(max-width:1180px){.schedule-week-board{grid-template-columns:repeat(4,minmax(0,1fr))}.schedule-week-board .schedule-day-column:nth-child(n+5){margin-top:0}.schedule-trigger-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.schedule-assurance-grid{grid-template-columns:1fr}}
@media(max-width:767px){.schedule-week-navigation{grid-template-columns:repeat(3,minmax(0,1fr))}.schedule-week-navigation .schedule-week-range{grid-column:1/-1;grid-row:1;order:-1;margin:0 0 4px;text-align:left}.schedule-week-navigation .status-badge{grid-column:1/-1;justify-self:start}.schedule-trigger-grid{grid-template-columns:1fr}.schedule-summary{grid-template-columns:1fr}.schedule-summary-card{min-height:0}.schedule-week-board{grid-template-columns:1fr;gap:10px}.schedule-day-column{min-height:0}.schedule-day-heading{position:sticky;top:0;z-index:1}.schedule-assurance{padding:12px}.schedule-apply-area{display:grid}.schedule-apply-area .button{width:100%}.schedule-dialog{width:calc(100vw - 16px)}.schedule-dialog-actions{display:grid}.schedule-dialog-actions .button{width:100%}}
@media(max-width:380px){.schedule-week-navigation{grid-template-columns:1fr}.schedule-week-navigation .button{width:100%}.schedule-week-navigation .schedule-week-range{grid-column:1}.schedule-week-navigation .status-badge{grid-column:1}}
@media(prefers-reduced-motion:reduce){.schedule-week-board,.schedule-preview{scroll-behavior:auto}.schedule-trigger-grid .button{transition:none}}
.schedule-readonly-notice{margin:0;padding:12px;border:1px solid var(--border);border-radius:10px;background:var(--surface-soft);color:var(--text-muted)}.schedule-assurance-card.is-neutral{border-color:var(--border);background:var(--surface-soft)}
