.schedule-calendar{min-width:0;--calendar-height:688px}
.calendar-toolbar{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:28px}
.calendar-period{display:grid;grid-template-columns:max-content max-content;align-items:start;column-gap:14px;row-gap:7px;min-width:0}
.calendar-month-heading{display:contents}
.calendar-month-heading h1{grid-column:1;grid-row:1;font-size:32px;font-weight:800;letter-spacing:-1.1px;line-height:1.25;white-space:nowrap}
.calendar-week-range{grid-column:1/-1;grid-row:2;font-size:12px;line-height:1.5;color:var(--muted)}
.calendar-navigation{grid-column:2;grid-row:1;display:flex;align-items:center;gap:5px;margin-top:2px}
.calendar-navigation .icon-button{width:36px;height:36px;border:1px solid var(--line);background:var(--paper);border-radius:9px}
.calendar-navigation .icon-button:hover{background:#edf2e7;border-color:#bdcbb1}
.calendar-navigation svg{width:18px;height:18px}
.calendar-view-switch{display:flex;align-items:center;gap:3px;padding:4px;border:1px solid var(--line);border-radius:11px;background:#ecefe7;flex-shrink:0}
.calendar-view-switch button{min-width:76px;min-height:34px;padding:8px 18px;border-radius:7px;font-size:12px;font-weight:600;color:#7b8374}
.calendar-view-switch button:hover{color:var(--green)}
.calendar-view-switch button[aria-pressed=true]{background:var(--paper);color:var(--green);box-shadow:0 1px 4px #354b2c12}
.calendar-month-wrap{height:var(--calendar-height);border:1px solid var(--line);border-radius:16px;background:var(--paper);overflow:hidden}
.calendar-month{width:100%;height:100%;table-layout:fixed;border-collapse:separate;border-spacing:0}
.calendar-month th{height:50px;padding:12px 6px;border-bottom:1px solid var(--line);font-size:11px;letter-spacing:.3px;font-weight:500;color:var(--muted);text-align:center;background:#fafbf7}
.calendar-weekday-short{display:none}
.calendar-month tbody tr{height:calc((var(--calendar-height) - 52px)/var(--calendar-rows))}
.calendar-day{position:relative;vertical-align:top;padding:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}
.calendar-day:last-child{border-right:0}
.calendar-month tbody tr:last-child .calendar-day{border-bottom:0}
.calendar-day-content{position:absolute;inset:0;min-height:0;padding:9px 7px 11px;overflow:hidden;cursor:pointer}
.calendar-day.outside-month{background:#fafbf8}
.calendar-day.is-today{background:#f8fbf2}
.calendar-day.is-weekend,.calendar-week-heading.is-weekend,.calendar-week-day.is-weekend{background-color:#f2f4ed}
.calendar-day.outside-month.is-weekend{background:#eef1e8}
.calendar-month th.is-weekend{background:#f0f2eb}
.calendar-day-number{display:grid;place-items:center;width:29px;height:29px;margin:0 0 5px auto;border:1.5px solid transparent;border-radius:50%;font-size:12px;line-height:1;font-weight:500}
.calendar-day-number:hover{background:#edf2e7}
.outside-month .calendar-day-number{color:#a9aea2}
.is-today .calendar-day-number{background:transparent;border-color:#758569;color:var(--ink);font-weight:700}
.calendar-day-events{display:flex;flex-direction:column;gap:5px}
.calendar-month-event{display:flex;align-items:baseline;gap:5px;width:100%;min-width:0;padding:5px 6px;border-radius:5px;background:#eaf0e1;border-left:2px solid #8b9e78;text-align:left;color:#44573a;line-height:1.35}
.calendar-month-event:hover{background:#dfe8d3}
.calendar-month-event time{flex-shrink:0;font-size:9px;font-variant-numeric:tabular-nums;white-space:nowrap}
.calendar-month-event strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px;font-weight:600}
.calendar-month-event.is-done{background:#f0f1ec;border-left-color:#c2c8b9;color:#7f8876}
.calendar-more{max-width:100%;padding:3px 6px;font-size:10px;color:#69765d;text-align:left;border-radius:4px}
.calendar-more:hover{background:#edf2e7}
.calendar-week-scroll{height:var(--calendar-height);overflow:auto;overscroll-behavior:contain;border:1px solid var(--line);border-radius:16px;background:var(--paper);scrollbar-color:#c8d1bd transparent;scrollbar-width:thin}
.calendar-week-canvas{min-width:960px}
.calendar-week-head,.calendar-week-body{display:grid;grid-template-columns:60px repeat(7,minmax(0,1fr))}
.calendar-week-head{position:sticky;top:0;z-index:6;background:var(--paper);border-bottom:1px solid var(--line)}
.calendar-week-corner{position:sticky;left:0;z-index:7;background:var(--paper)}
.calendar-week-heading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;min-height:86px;padding:12px 5px;border-left:1px solid var(--line);background:#fff}
.calendar-week-heading>span{font-size:11px;font-weight:500;color:var(--muted)}
.calendar-week-heading>strong{display:grid;place-items:center;width:32px;height:32px;border:1.5px solid transparent;border-radius:50%;font-size:20px;font-family:'Manrope',sans-serif;font-weight:600;line-height:1}
.calendar-week-heading.is-today>span{color:var(--green);font-weight:600}
.calendar-week-heading.is-today>strong{background:transparent;border-color:#758569;color:var(--ink)}
.calendar-time-rail{position:sticky;left:0;z-index:4;height:calc(1440 * var(--calendar-minute-pixels,1px));background:var(--paper)}
.calendar-hour{position:absolute;right:10px;font-size:10px;line-height:1;white-space:nowrap;font-variant-numeric:tabular-nums;color:#929a89}
.calendar-week-day{position:relative;height:calc(1440 * var(--calendar-minute-pixels,1px));min-width:0;border-left:1px solid var(--line);background-image:repeating-linear-gradient(to bottom,transparent 0,transparent calc(60 * var(--calendar-minute-pixels,1px) - 1px),var(--line) calc(60 * var(--calendar-minute-pixels,1px) - 1px),var(--line) calc(60 * var(--calendar-minute-pixels,1px))),repeating-linear-gradient(to bottom,transparent 0,transparent calc(15 * var(--calendar-minute-pixels,1px) - 1px),#eef0e9 calc(15 * var(--calendar-minute-pixels,1px) - 1px),#eef0e9 calc(15 * var(--calendar-minute-pixels,1px)))}
.calendar-week-day.is-today{background-color:#fbfdf7}
.calendar-week-day.is-today.is-weekend{background-color:#f2f4ed}
.calendar-week-event{position:absolute;display:flex;flex-direction:column;align-items:flex-start;gap:3px;min-width:0;padding:6px 7px;border-left:3px solid #8b9e78;border-radius:6px;background:#eaf0e1;color:#44573a;text-align:left;overflow:hidden;line-height:1.35}
.calendar-week-event:hover{background:#dce7d0;z-index:2;box-shadow:0 2px 7px #354b2c12}
.calendar-week-event:focus-visible{z-index:3;outline:2px solid #617e49;outline-offset:1px}
.calendar-week-event time{max-width:100%;font-size:10px;font-weight:500;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:0}
.calendar-week-event strong{display:block;max-width:100%;font-size:11px;font-weight:600;overflow:hidden;overflow-wrap:anywhere}
.calendar-event-customer{max-width:100%;font-size:10px;color:#718262;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.calendar-week-event.is-compact{flex-direction:row;align-items:center;gap:5px;padding:1px 5px;white-space:nowrap;border-left-width:2px;border-radius:4px}
.calendar-week-event.is-compact strong{white-space:nowrap;text-overflow:ellipsis;font-size:10px}
.calendar-week-event.is-compact time{font-size:9px}
.calendar-week-event.is-compact .calendar-event-customer{display:none}
.calendar-week-event.is-done{background:#f0f1ec;border-left-color:#c2c8b9;color:#7f8876}
.schedule-calendar.is-selecting-day,.schedule-calendar.is-selecting-time{padding-bottom:90px}
.is-selecting-day .calendar-day:hover .calendar-day-content{background:#e9efdf;box-shadow:inset 0 0 0 2px #9aac87}
.calendar-selection-bar{position:fixed;left:50%;bottom:20px;transform:translateX(-50%);z-index:12;display:grid;grid-template-columns:minmax(0,1fr) 86px minmax(0,1fr);align-items:center;gap:12px;width:calc(100% - 32px);max-width:480px;padding:10px 12px;border:1px solid #d7dfce;border-radius:12px;background:#fff;box-shadow:0 8px 32px #293a2021}
.calendar-selection-details{min-width:0}
.calendar-selection-prompt{display:block;font-size:12px;font-weight:600;line-height:1.4;overflow-wrap:anywhere}
.calendar-selection-job{display:block;margin-top:3px;font-size:10px;color:#74806a;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.calendar-selection-error{font-size:11px;line-height:1.4;color:#a84b38;margin-top:5px}
.calendar-selection-actions{display:flex;align-items:center;justify-content:flex-end;gap:6px;min-width:0}
.calendar-selection-actions>.button{min-height:32px;padding:7px 10px;font-size:11px}
.calendar-selection-cancel{flex-shrink:0;width:28px;height:30px;font-size:21px;color:#74806a}
.calendar-selection-cancel:hover{background:#f0f3eb}
.calendar-week-day.is-selected{background-color:#f0f6e8}
.calendar-time-slots{position:absolute;inset:0;z-index:0}
.calendar-time-slot{position:absolute;left:0;right:0;display:flex;align-items:center;width:100%;height:calc(15 * var(--calendar-minute-pixels,1px));padding:0 7px;border-radius:3px;background:transparent;color:transparent;text-align:left;font-size:11px;font-weight:600;line-height:1.2;white-space:nowrap}
.calendar-time-slot:hover,.calendar-time-slot:focus-visible,.calendar-time-slot.is-selected{background:transparent;color:transparent;box-shadow:none}
.calendar-time-slot:focus-visible{outline:2px solid #6b8655;outline-offset:-2px}
.calendar-time-slot:disabled{cursor:not-allowed;color:transparent;background:#f2f3ee;opacity:.6;box-shadow:none}
.is-selecting-time .calendar-week-event{z-index:2;pointer-events:none;opacity:.65}
@media(max-width:900px){
  .calendar-period{column-gap:12px}
  .calendar-month-heading h1{font-size:28px}
  .calendar-month-event{flex-direction:column;gap:0;padding:2px 4px;line-height:1.1}
  .calendar-day-content{padding:7px 5px 9px}
}
@media(max-width:700px){
  .calendar-weekday-long{display:none}
  .calendar-weekday-short{display:inline}
  .calendar-toolbar{gap:17px;flex-wrap:wrap;margin-bottom:22px}
  .schedule-calendar{--calendar-height:640px}
  .calendar-period{width:100%;grid-template-columns:max-content max-content}
  .calendar-month-heading h1{font-size:clamp(21px,6vw,28px)}
  .calendar-view-switch button{min-width:86px}
  .calendar-month-wrap,.calendar-week-scroll{border-radius:12px}
  .calendar-month th{font-size:10px;height:42px;padding:9px 2px}
  .calendar-day-content{padding:6px 3px 8px}
  .calendar-day-number{width:25px;height:25px;font-size:11px;margin-bottom:4px}
  .calendar-day-events{gap:2px}
  .calendar-month-event{padding:3px 2px;border-left-width:2px;border-radius:4px}
  .calendar-month-event strong{max-width:100%;font-size:9px}
  .calendar-month-event time{font-size:8px}
  .calendar-more{padding:1px;font-size:9px;line-height:1.2}
  .calendar-selection-bar{bottom:14px;width:calc(100% - 24px);gap:8px;padding:9px 10px}
  .calendar-selection-prompt{font-size:11px}
  .calendar-selection-job{font-size:10px}
  .calendar-selection-actions{gap:3px}.calendar-selection-actions>.button{padding:7px;font-size:10px}.calendar-selection-cancel{width:24px}
}
@media(prefers-reduced-motion:reduce){.schedule-calendar *{scroll-behavior:auto}}

.calendar-hour.is-hour{color:#65715c;font-weight:600}
.calendar-duration{display:flex;align-items:center;flex-direction:column;gap:3px;font-size:10px;color:#74806a;justify-self:center}
.calendar-duration-field{display:flex;align-items:center;gap:4px;font-size:11px}.calendar-duration input{width:64px;min-height:30px;padding:5px 6px;font-size:12px;color:var(--ink);background:#fff;text-align:center}.calendar-duration input:invalid{border-color:#ad6045}
.calendar-week-event.is-tiny{padding:0 3px;gap:3px;line-height:1}
.calendar-week-event.is-tiny time,.calendar-week-event.is-tiny strong{font-size:8px;line-height:1}


.calendar-duration-preview{position:absolute;left:0;right:0;z-index:3;pointer-events:none;overflow:hidden;padding:5px 7px;border:1px solid #8ba574;border-radius:4px;background:#e0ebd4e8;box-sizing:border-box;color:#405634;font-size:11px;font-weight:600;line-height:1.3}
.calendar-duration-preview.is-selected-preview{border-color:#526f3c;background:#dbe8cce8}
.calendar-duration-preview.is-tiny-preview{padding:0 3px;font-size:8px;line-height:1}
