.schedule-toolbar{display:flex;width:min(100%,836px);align-items:center;justify-content:space-between;gap:var(--space-4);margin:0 auto var(--space-4)}
.tabs{--segment-count:2;--segment-index:0;height:42px}.tab{min-width:78px;height:36px;min-height:36px}
.schedule-actions{display:flex;align-items:center;gap:var(--space-2)}
.filter-toggle{display:flex;height:42px;align-items:center;gap:var(--space-2);padding:0 var(--space-3);border:var(--hairline);border-radius:var(--radius-pill);background:var(--surface-raised);color:var(--text-secondary);font-size:var(--text-sm);font-weight:600;cursor:pointer;user-select:none;transition:background-color var(--duration-micro),color var(--duration-micro)}.filter-toggle:hover{background:var(--surface-secondary);color:var(--text-primary)}
.filter-toggle input{appearance:none;display:grid;width:19px;height:19px;margin:0;padding:0;place-items:center;border:var(--hairline-strong);border-radius:50%;background:var(--surface);cursor:pointer}.filter-toggle input::before{content:"";width:9px;height:6px;border:solid var(--on-accent);border-width:0 0 2px 2px;transform:translateY(-1px) rotate(-45deg) scale(0);transition:transform var(--duration-micro) var(--ease-ios)}.filter-toggle input:checked{border-color:var(--accent);background:var(--accent)}.filter-toggle input:checked::before{transform:translateY(-1px) rotate(-45deg) scale(1)}.class-filter input:checked{border-color:var(--text-secondary);background:var(--text-secondary)}
.action-button{display:inline-flex;height:42px;min-height:42px;margin-left:0;align-items:center;gap:6px;padding:0 var(--space-4)}.action-button>svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}

.schedule-shell{display:grid;gap:var(--space-4);align-items:start;justify-items:center;width:100%}.schedule-card{position:relative;width:min(100%,836px);max-height:calc(100vh - 180px);min-width:0;overflow:auto;border:var(--hairline);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-soft)}
.schedule-grid{display:grid;grid-template-columns:76px repeat(5,152px);grid-template-rows:50px repeat(63,13.333333px) 24px;width:836px;min-width:836px;position:relative;overflow:visible;background:var(--surface);touch-action:none;user-select:none;-webkit-user-select:none}.schedule-grid *{user-select:none;-webkit-user-select:none}.schedule-dragging,.schedule-dragging *{user-select:none!important;-webkit-user-select:none!important}
.grid-head{position:sticky;top:0;z-index:12;display:flex;align-items:center;justify-content:center;border-right:var(--hairline);border-bottom:var(--hairline-strong);background:var(--surface-raised);color:var(--text-primary);font-size:14px;font-weight:680;backdrop-filter:blur(18px) saturate(160%);-webkit-backdrop-filter:blur(18px) saturate(160%)}.grid-head:last-of-type{border-right:0}.grid-head.time-head{left:0;z-index:14;justify-content:flex-end;padding-right:var(--space-3);color:var(--text-tertiary);font-size:12px;font-weight:560}
.time-cell,.slot{position:relative;border-right:var(--hairline);border-bottom:.5px solid var(--grid-half);background:var(--surface)}.slot:nth-child(6n){border-right:0}.time-cell{position:sticky;left:0;z-index:6;overflow:visible;background:var(--surface)}.time-cell.first-time{z-index:6;background:var(--surface)}.time-cell>span{position:absolute;top:-10px;right:10px;display:flex;align-items:baseline;gap:1px;padding:0 var(--space-1);background:var(--surface);color:var(--text-tertiary);line-height:19px;white-space:nowrap}.time-cell.first-time>span{top:2px}.time-cell strong{color:var(--text-secondary);font-size:var(--text-sm);font-weight:650}.time-cell small{font-size:10px;font-weight:500}.time-cell:not(.hour-start)>span{top:-8px}.time-cell:not(.hour-start) small{opacity:.72}.time-cell.hour-start,.slot.hour-start{box-shadow:inset 0 1px 0 var(--grid-hour)}
.time-end-label{position:sticky;left:0;grid-column:1;grid-row:65;align-self:start;justify-self:stretch;z-index:8;height:24px;padding:0 14px 0 0;transform:translateY(-9px);border-right:var(--hairline);background:var(--surface);color:var(--text-secondary);font-size:12px;font-weight:650;line-height:19px;text-align:right}
.slot{min-width:136px;cursor:crosshair;transition:background-color var(--duration-micro)}.slot::before{content:"+";position:absolute;inset:0;display:grid;place-items:center;color:var(--accent);font-size:15px;font-weight:500;opacity:0;pointer-events:none;transform:scale(.75);transition:opacity var(--duration-micro),transform var(--duration-micro) var(--ease-ios)}.slot:hover{background:var(--accent-softer)}.slot:hover::before{opacity:.65;transform:scale(1)}
.create-live-block{position:relative;margin:3px;z-index:10;display:flex;align-items:center;justify-content:center;overflow:hidden;border:1px solid var(--accent-border);border-left:3px solid var(--accent);border-radius:var(--radius-sm);background:var(--accent-drag);color:var(--accent-pressed);font-size:12px;font-weight:700;pointer-events:none;box-shadow:0 4px 14px var(--accent-selection);animation:create-grow var(--duration-micro) var(--ease-ios) both}.create-live-block span{padding:3px var(--space-2);border-radius:var(--radius-pill);background:var(--surface-raised);white-space:nowrap}@keyframes create-grow{from{opacity:.55;transform:scale(.985)}to{opacity:1;transform:none}}

.class-block,.work-block{position:relative;z-index:4;display:flex;min-height:0;overflow:hidden;flex-direction:column;align-items:flex-start;justify-content:center;text-align:left;touch-action:none;cursor:pointer;animation:event-in var(--duration-base) var(--ease-ios) both;transition:transform var(--duration-micro) var(--ease-ios),box-shadow var(--duration-micro),filter var(--duration-micro)}@keyframes event-in{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}
.class-block{margin:3px;padding:6px var(--space-2);border:var(--hairline);border-left:3px solid var(--text-tertiary);border-radius:var(--radius-sm);background:var(--surface-secondary);color:var(--text-secondary);font-size:var(--text-sm);font-weight:700}
.class-block.class-overlap{border-left-color:var(--accent);background:var(--accent-softer);color:var(--text-primary)}
.work-block{justify-self:start;margin:3px 0;padding:6px var(--space-2);border:.5px solid color-mix(in srgb,var(--event-color) 28%,var(--separator));border-left:3px solid var(--event-color);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--event-color) 16%,var(--surface));color:color-mix(in srgb,var(--event-color) 36%,var(--text-primary));font-size:14px;font-weight:700;line-height:1.2}
.work-block.work-shared{padding-inline:6px}.work-block.work-shared .event-name{font-size:12px}.work-block.work-shared .event-meta{font-size:9px}
.class-block:hover,.work-block:hover{z-index:6;transform:translateY(-1px);box-shadow:var(--shadow-hover)}.class-block:active,.work-block:active{transform:scale(.985)}.class-block.selected-event,.work-block.selected-event{z-index:8;overflow:visible;outline:2px solid var(--accent);outline-offset:1px;box-shadow:var(--shadow-event)}
.resize-handle{position:absolute;left:50%;z-index:10;display:none;width:32px;height:5px;min-height:0;padding:0;transform:translateX(-50%);border:0;border-radius:var(--radius-pill);background:var(--accent);box-shadow:0 0 0 2px var(--surface);cursor:ns-resize}.selected-event .resize-handle{display:block}.resize-start{top:-5px}.resize-end{bottom:-5px}
.range-selection{position:relative;margin:3px;z-index:9;display:flex;align-items:center;justify-content:center;min-height:0;border:1px solid var(--accent-border);border-radius:var(--radius-sm);background:var(--accent-selection);color:var(--accent-pressed);font-size:11px;font-weight:700;pointer-events:none}.range-selection.resize-preview{border-style:dashed}.range-selection span{padding:2px var(--space-1);border-radius:var(--radius-pill);background:var(--surface-raised);white-space:nowrap}.event-name{display:block;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.class-block .event-name{display:-webkit-box;line-height:1.22;text-overflow:clip;white-space:normal;-webkit-box-orient:vertical;-webkit-line-clamp:3}.event-meta{display:block;width:100%;margin-top:3px;overflow:hidden;color:var(--text-secondary);font-size:11px;font-weight:520;text-overflow:ellipsis;white-space:nowrap}

.schedule-empty{position:absolute;top:50px;right:0;bottom:24px;left:76px;z-index:3;display:grid;place-items:center;align-content:center;gap:var(--space-2);padding:var(--space-8);background:var(--empty-overlay);color:var(--text-secondary);text-align:center;pointer-events:none;backdrop-filter:blur(1px)}.schedule-empty[hidden]{display:none}.schedule-empty .empty-icon{display:grid;width:58px;height:58px;margin-bottom:var(--space-2);place-items:center;border-radius:var(--radius-lg);background:var(--surface-raised);color:var(--accent);box-shadow:var(--shadow-soft)}.schedule-empty svg{width:29px;height:29px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.schedule-empty strong{color:var(--text-primary);font-size:var(--text-md);font-weight:700}.schedule-empty>span:last-child{font-size:var(--text-sm)}

.create-toolbar,.range-toolbar{position:fixed;z-index:1100;display:flex;max-width:calc(100vw - 28px);align-items:center;gap:var(--space-1);padding:6px;border:var(--hairline);border-radius:var(--radius-pill);background:var(--surface-raised);color:var(--text-primary);box-shadow:var(--shadow-menu);backdrop-filter:blur(24px) saturate(180%)}.create-toolbar{bottom:var(--space-6);left:50%;padding-left:var(--space-4);transform:translateX(-50%);animation:toolbar-in var(--duration-base) var(--ease-ios) both}@keyframes toolbar-in{from{opacity:0;transform:translate(-50%,10px) scale(.96)}to{opacity:1;transform:translate(-50%,0) scale(1)}}.create-toolbar[hidden],.range-toolbar[hidden]{display:none}.create-toolbar strong,.range-toolbar strong{padding-right:var(--space-2);font-size:var(--text-sm);font-weight:650;white-space:nowrap}.create-toolbar button,.range-toolbar button{min-height:34px;padding:var(--space-1) var(--space-3);border-color:transparent;background:var(--surface-secondary)}.create-toolbar button.primary{background:var(--accent)}.range-toolbar{border-radius:var(--radius-md)}.range-toolbar .icon-button{width:30px;padding:0}
.event-info-popover{position:fixed;z-index:1120;display:grid;width:min(340px,calc(100vw - 28px));gap:var(--space-3);padding:var(--space-3);border:var(--hairline);border-radius:var(--radius-lg);background:var(--surface-raised);color:var(--text-primary);box-shadow:var(--shadow-menu);backdrop-filter:blur(24px) saturate(180%);animation:menu-in var(--duration-base) var(--ease-ios) both}.event-info-popover[hidden]{display:none}.event-popover-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3);padding:var(--space-1) var(--space-1) 0}.event-popover-heading span{display:block;color:var(--text-secondary);font-size:12px;font-weight:600}.event-popover-heading strong{font-size:15px}.event-popover-list{display:grid;gap:var(--space-2)}.event-info-card{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3);border:var(--hairline);border-left:4px solid var(--event-color);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-micro)}.event-info-card div{display:grid;min-width:0;gap:2px}.event-info-card span{color:var(--text-tertiary);font-size:11px;font-weight:700}.event-info-card strong{overflow:hidden;font-size:14px;text-overflow:ellipsis;white-space:nowrap}.event-info-card small{overflow:hidden;color:var(--text-secondary);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.event-info-card button{min-height:32px;padding:0 var(--space-3);border-color:transparent;background:var(--surface-secondary);white-space:nowrap}.event-info-add{width:100%;min-height:42px;border-color:var(--accent-border);background:var(--accent-soft);color:var(--accent);font-weight:720}
.schedule-context-menu{position:fixed;z-index:1001;display:grid;min-width:190px;padding:6px;border:var(--hairline);border-radius:var(--radius-lg);background:var(--surface-raised);box-shadow:var(--shadow-menu);backdrop-filter:blur(24px) saturate(180%);animation:menu-in var(--duration-base) var(--ease-ios) both}@keyframes menu-in{from{opacity:0;transform:scale(.95)}to{opacity:1;transform:none}}.schedule-context-menu[hidden]{display:none}.schedule-context-menu button{justify-content:flex-start;min-height:38px;padding:0 var(--space-3);border:0;border-radius:var(--radius-sm);background:transparent;text-align:left}.schedule-context-menu button:hover{background:var(--surface-secondary)}.schedule-context-menu span{height:.5px;margin:var(--space-1);background:var(--separator)}.schedule-context-menu [hidden]{display:none}

.hours-panel{width:min(100%,836px);padding:var(--space-1);background:transparent}.hours-panel h3{display:flex;align-items:center;gap:var(--space-2);margin:0 0 var(--space-2);font-size:14px}.hours-panel h3 span{color:var(--text-tertiary);font-size:12px;font-weight:500}.hours-panel ul{display:flex;gap:var(--space-2) var(--space-6);flex-wrap:wrap;margin:0;padding:0;list-style:none}.hours-panel li{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm)}.hours-panel li strong{font-size:var(--text-sm)}

.vacation-toolbar{display:flex;align-items:flex-end;gap:var(--space-4);margin-bottom:var(--space-6)}.vacation-toolbar label{display:grid;gap:var(--space-2);color:var(--text-secondary);font-size:var(--text-sm);font-weight:600}.vacation-toolbar input{width:170px}.vacation-toolbar p{margin:0 0 10px;color:var(--text-secondary);font-size:var(--text-sm)}.vacation-grid{display:grid;grid-template-columns:repeat(2,minmax(360px,1fr));gap:var(--space-6)}.month-card{padding:var(--space-6);border:var(--hairline);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-soft)}.month-card h3{margin:0 0 var(--space-4);font-size:var(--text-md)}.month-weekdays,.month-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:var(--space-1)}.month-weekdays{margin-bottom:var(--space-1);color:var(--text-secondary);font-size:12px;font-weight:620;text-align:center}.month-weekdays span{padding:var(--space-1)}.month-weekdays span:first-child{color:var(--danger)}.month-weekdays span:last-child{color:var(--accent)}.day{position:relative;min-height:92px;padding:var(--space-2);border:var(--hairline);border-radius:var(--radius-md);background:var(--surface);cursor:pointer;transition:transform var(--duration-micro),background-color var(--duration-micro),box-shadow var(--duration-micro)}.day:hover{z-index:2;transform:translateY(-1px);background:var(--accent-softer);box-shadow:var(--shadow-soft)}.day.other{opacity:.38;background:var(--surface-secondary)}.day .number{font-size:var(--text-sm);font-weight:650}.day.sunday,.day.holiday{background:var(--danger-soft)}.day.sunday .number,.day.holiday .number{color:var(--danger)}.day.saturday .number{color:var(--accent)}.holiday-name{margin-top:var(--space-1);color:var(--danger);font-size:11px;font-weight:620}.worker-name{margin-top:var(--space-1);font-size:12px;font-weight:600}
.month-days{touch-action:pan-y}.day{-webkit-touch-callout:none}.vacation-range-selecting{user-select:none;-webkit-user-select:none}.vacation-range-selecting .day:not(.other){cursor:crosshair}.day.range-selected{z-index:3;transform:none!important;border-color:var(--accent-border);background:var(--accent-soft)!important;box-shadow:inset 0 0 0 1px var(--accent-border)}.day.range-start,.day.range-end{background:var(--accent-selection)!important;box-shadow:inset 0 0 0 2px var(--accent)}.vacation-holiday-fields{display:grid;gap:var(--space-4)}#vacationAssignments small{color:var(--text-secondary);font-size:12px;font-weight:600}

.event-time{display:block;width:100%;margin-top:2px;overflow:hidden;color:var(--text-tertiary);font-size:10px;font-weight:520;text-overflow:ellipsis;white-space:nowrap}
@media(prefers-color-scheme:dark){.work-block{color:var(--text-primary)}}
@media(max-width:1180px) and (min-width:761px){.schedule-card{max-width:100%}}
@media(max-width:980px){.vacation-grid{grid-template-columns:1fr}}
@media(max-width:760px){
  .schedule-toolbar{position:sticky;top:var(--space-2);z-index:20;align-items:stretch;flex-direction:column;gap:var(--space-3);margin:0 0 var(--space-4);padding:var(--space-3);border:var(--hairline);border-radius:var(--radius-md);background:var(--surface-raised);box-shadow:var(--shadow-micro);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}
  .tabs{width:100%}
  .tab{flex:1;min-width:0}
  .schedule-actions{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2)}
  .filter-toggle{justify-content:center;height:40px;border:var(--hairline);background:var(--surface)}
  .action-button{grid-column:1/-1;justify-content:center;width:100%;margin-left:0}
  .schedule-shell{justify-items:stretch}
  .schedule-card{width:100%;max-height:none;margin:0;overflow:visible;border-radius:var(--radius-md);box-shadow:none}
  .schedule-grid{grid-template-columns:44px repeat(5,minmax(0,1fr));grid-template-rows:44px repeat(63,12.666667px) 24px;width:100%;min-width:0;touch-action:pan-y}
  .schedule-grid .class-block,.schedule-grid .work-block{touch-action:pan-y}
  .slot{min-width:0;cursor:default}
  .slot::before{display:none}
  .grid-head{font-size:12px}
  .grid-head.time-head{padding-right:var(--space-2)}
  .time-cell>span{right:4px}
  .time-cell strong{font-size:11px}
  .time-cell small{font-size:8px}
  .time-end-label{padding-right:5px;font-size:10px}
  .schedule-empty{left:44px}
  .class-block{margin:2px}.class-block,.work-block{padding:4px 3px;border-left-width:2px;font-size:10px}.work-block{margin:2px 0}.work-block.work-shared{padding:3px 2px}.work-block.work-shared .event-name{font-size:9px;letter-spacing:-.02em}.work-block.work-shared .event-meta{display:none}
  .event-meta{font-size:8px}
  .work-block.mobile-work-group{width:calc(100% - 4px);margin:2px;padding:3px 2px;align-items:stretch;justify-self:stretch;text-align:center}
  .work-block.mobile-work-group.work-shared{--mobile-shared-color:color-mix(in srgb,var(--event-color) 50%,var(--event-color-two));border-color:color-mix(in srgb,var(--mobile-shared-color) 34%,var(--separator));border-left-color:var(--mobile-shared-color);background:color-mix(in srgb,var(--mobile-shared-color) 17%,var(--surface));color:var(--text-primary)}
  .mobile-work-names{display:flex;min-width:0;align-items:stretch;justify-content:center;flex-direction:column;gap:1px;font-size:10px;font-weight:750;line-height:1.05}
  .mobile-work-group:not(.work-shared) .mobile-work-names{font-size:11px}
  .mobile-work-names>span{display:block;min-width:0;overflow:hidden;padding-left:2px;border-left:2px solid var(--worker-color);text-overflow:ellipsis;white-space:nowrap}
  .mobile-work-group.mobile-work-micro .mobile-work-names,.mobile-work-group.mobile-work-tiny .mobile-work-names{align-items:center;flex-direction:row;gap:2px;line-height:1}
  .mobile-work-group.mobile-work-micro .mobile-work-names{font-size:7px}
  .mobile-work-group.mobile-work-tiny .mobile-work-names{font-size:8px}
  .mobile-work-group.mobile-work-short .mobile-work-names{font-size:9px;line-height:1}
  .resize-handle{display:none!important}
  .create-toolbar{bottom:82px;width:calc(100vw - 28px);justify-content:center}
  .event-info-popover{left:14px!important;width:calc(100vw - 28px)}
  .create-toolbar strong{overflow:hidden;text-overflow:ellipsis}
  .hours-panel ul{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2)}
  .vacation-toolbar{align-items:stretch;flex-direction:column;gap:var(--space-3);margin-bottom:var(--space-4)}
  .vacation-toolbar input{width:100%}
  .vacation-toolbar p{margin:0}
  .vacation-grid{gap:var(--space-4)}
  .month-card{padding:var(--space-4);border-radius:var(--radius-md)}
  .month-card h3{margin-bottom:var(--space-3)}
  .month-weekdays,.month-days{gap:3px}
  .day{min-height:64px;padding:6px;border-radius:8px}
  .day .number{font-size:12px}
  .holiday-name,.worker-name{overflow:hidden;font-size:10px;line-height:1.25;text-overflow:ellipsis;white-space:nowrap}
}

@media(max-width:760px){
  .event-info-popover{top:auto!important;right:12px;bottom:calc(82px + env(safe-area-inset-bottom));left:12px!important;width:auto;max-height:calc(70dvh - env(safe-area-inset-bottom));overflow:auto;padding:var(--space-3);border-radius:var(--radius-lg)}
  .event-popover-heading{padding:var(--space-1) var(--space-1) var(--space-2)}
  .event-info-card{min-height:64px;padding:var(--space-3)}
  .event-info-card button{min-width:64px;min-height:42px;border-color:var(--accent-border);background:var(--accent-soft);color:var(--accent);font-weight:700}
}
