.somi-schedule-viewer { display: grid; grid-template-rows: minmax(0, 1fr) 36px; height: 100%; min-height: 0; min-width: 0; gap: 8px; }
.somi-schedule-public { display: block; }
.somi-schedule-stage { display: grid; grid-template-rows: minmax(0, var(--schedule-viewport-height, 1fr)) 36px; align-content: start; height: 100%; min-width: 0; min-height: 0; gap: 8px; }
.somi-schedule-public.somi-schedule-expanded { position: fixed; inset: 0; z-index: 1000; width: 100%; height: 100dvh; padding: max(8px, env(safe-area-inset-top)) max(8px, env(safe-area-inset-right)) max(8px, env(safe-area-inset-bottom)) max(8px, env(safe-area-inset-left)); background: #ebeee8; }
.somi-schedule-expanded .somi-schedule-stage { grid-template-columns: 64px minmax(0, 1fr) 64px; align-content: center; }
.somi-schedule-week-arrow { display: none; }
.somi-schedule-week-arrow[hidden] { display: none !important; }
.somi-schedule-expanded .somi-schedule-week-arrow { display: grid; place-items: center; grid-row: 1; align-self: center; justify-self: center; width: 56px; height: 104px; padding: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; color: #344e39; cursor: pointer; touch-action: manipulation; }
.somi-schedule-week-arrow.previous { grid-column: 1; }
.somi-schedule-week-arrow.next { grid-column: 3; }
.somi-schedule-week-arrow .somi-schedule-tool-icon { width: 48px; height: 48px; transform: scaleY(2); }
.somi-schedule-week-arrow:hover { color: #62745e; }
.somi-schedule-week-arrow:focus-visible { outline: 2px solid #617456; outline-offset: 2px; }
.somi-schedule-expanded .somi-schedule-viewport { grid-column: 2; grid-row: 1; }
.somi-schedule-expanded .somi-schedule-toolbar { grid-column: 1 / -1; grid-row: 2; }
@media (orientation: portrait) {
  .somi-schedule-expanded .somi-schedule-stage { position: absolute; left: 50%; top: 50%; width: calc(100dvh - max(8px, env(safe-area-inset-top)) - max(8px, env(safe-area-inset-bottom))); height: calc(100dvw - max(8px, env(safe-area-inset-left)) - max(8px, env(safe-area-inset-right))); transform: translate(-50%, -50%) rotate(90deg); }
}
.somi-schedule-viewport { display: flex; min-width: 0; min-height: 0; overflow: auto; overscroll-behavior: contain; touch-action: pan-x pan-y pinch-zoom; }
.somi-schedule-frame { position: relative; flex-shrink: 0; margin: auto; }
.somi-schedule-frame > img { display: block; width: 100%; height: 100%; }
.somi-schedule-draggable { cursor: grab; user-select: none; }
.somi-week-dragging, .somi-week-dragging * { cursor: grabbing !important; }
.somi-schedule-toolbar { display: flex; align-items: center; justify-content: center; gap: 6px; }
.somi-schedule-toolbar button { display: grid; width: 36px; height: 36px; padding: 0; place-items: center; border: 1px solid #d9ddd5; border-radius: 6px; background: #fff; color: #475943; cursor: pointer; }
.somi-schedule-toolbar button:disabled { opacity: 0.4; cursor: default; }
.somi-schedule-toolbar output { width: 52px; font: 600 11px/1 Arial, sans-serif; text-align: center; color: #64745e; }
.somi-schedule-toolbar button:focus-visible { outline: 2px solid #617456; outline-offset: 2px; }
.somi-schedule-tool-icon { width: 17px; height: 17px; background: currentColor; mask: var(--schedule-tool) center / contain no-repeat; -webkit-mask: var(--schedule-tool) center / contain no-repeat; }
.somi-schedule-tool-icon.minus { --schedule-tool: url('/assets/icons/lucide-minus.svg'); }
.somi-schedule-tool-icon.plus { --schedule-tool: url('/assets/icons/lucide-plus.svg'); }
.somi-schedule-tool-icon.fit { --schedule-tool: url('/assets/icons/lucide-scaling.svg'); }
.somi-schedule-tool-icon.fullscreen { --schedule-tool: url('/assets/icons/lucide-maximize.svg'); }
.somi-schedule-tool-icon.chevron-left { --schedule-tool: url('/assets/icons/lucide-chevron-left.svg'); }
.somi-schedule-tool-icon.chevron-right { --schedule-tool: url('/assets/icons/lucide-chevron-right.svg'); }
.somi-schedule-toolbar button[aria-pressed="true"] .somi-schedule-tool-icon.fullscreen { --schedule-tool: url('/assets/icons/lucide-minimize.svg'); }
.somi-schedule-hotspot { position: absolute; padding: 0; border: 1px solid transparent; border-radius: 4px; background: transparent; color: transparent; cursor: pointer; }
.somi-schedule-hotspot:hover, .somi-schedule-hotspot:focus-visible { background: #ffffff22; border-color: #6a795e; outline: none; }
.somi-schedule-hotspot.suspended { border: 1px dashed #8b8173; background: #ffffff66; }
.somi-schedule-artwork-status { margin: auto; font-size: 13px; color: #677260; }
.somi-schedule-description { position: absolute; top: 0; left: 0; width: 1px; height: 1px; margin: 0; padding: 0; overflow: hidden; clip-path: inset(50%); }
