/* Seven resources in shared session rows; occupied rows grow to fit all details. */
.schedule-layout-switch{display:inline-flex;gap:3px;padding:4px;margin:0 0 18px;border:1px solid #e0e3d9;border-radius:9px;background:#eaece5}
.schedule-layout-switch button{min-height:44px;min-width:106px;padding:9px 19px;border:0;border-radius:6px;background:transparent;color:#7d8874;font:inherit;font-size:14px;line-height:1.4;font-weight:700;cursor:pointer}
.schedule-layout-switch button:hover{color:#404b36;background:#f4f5ef}
.schedule-layout-switch button.active,.schedule-layout-switch button[aria-pressed="true"]{background:#fff;color:#3f4a35;box-shadow:0 1px 4px #26311414}
#timeline-view{min-width:0;width:100%}
.timeline-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-bottom:8px}
.timeline-toolbar > div{display:flex;align-items:center;gap:7px}
.timeline-toolbar h2{flex:1;margin:0;font-size:18px;line-height:1.4;letter-spacing:-.3px}
.timeline-toolbar button,#timeline-collapse{min-height:44px;padding:9px 13px;border:1px solid #dfe4d7;border-radius:7px;background:#fff;color:#69795a;font:inherit;font-size:13px;font-weight:700;line-height:1.4;cursor:pointer}
.timeline-toolbar button:hover,#timeline-collapse:hover{border-color:#bfcbb3;background:#f9faf5}
.timeline-toolbar button[aria-pressed="true"]{border-color:#deb7a4;background:#fff0e7;color:#ad7052}
.timeline-help{margin:0 0 15px;color:#7d8c70;font-size:13px;line-height:1.6}
.timeline-caption{display:flex;justify-content:space-between;flex-wrap:wrap;gap:5px 20px;margin-top:10px;color:#7d8c70;font-size:13px;line-height:1.6}
.timeline-scroll{position:relative;width:100%;max-width:100%;max-height:min(70dvh,900px);overflow:auto;border:1px solid #d8ded1;border-radius:10px;background:#fbfcf8;scrollbar-color:#bdc9ae #f1f4eb;scrollbar-width:thin;overscroll-behavior:contain;scroll-padding-top:74px;scroll-padding-left:60px}
.timeline-scroll:focus-visible{outline:3px solid #e8ba9e;outline-offset:3px}

/* Each session start has one shared row. Bookings set that row's natural height. */
.timeline-grid{--time-width:54px;--head-height:62px;position:relative;display:grid;isolation:isolate;width:100%;min-width:calc(var(--time-width) + var(--resource-count,7) * 150px);grid-template-columns:var(--time-width) repeat(var(--resource-count,7),minmax(150px,1fr));grid-template-rows:var(--head-height) repeat(var(--session-rows,1),minmax(44px,auto));grid-auto-rows:minmax(44px,auto);align-items:stretch;align-content:start;padding:0;background:#fbfcf8}
.timeline-corner{position:sticky;top:0;left:0;z-index:6;grid-row:1;grid-column:1;display:flex;align-items:center;justify-content:center;min-width:0;min-height:var(--head-height);padding:4px;border-right:1px solid #dbe1d3;border-bottom:1px solid #d5ddca;background:#f1f4e9;color:#7d8e6c;font-size:12px;line-height:1.3;text-align:center}
.timeline-quest,.timeline-lane,.timeline-slot{--quest-tone:#c98670;--quest-ink:#815d4e;--quest-head:#eee1d8;--quest-card:#f9f0e9;--quest-line:#e3c9b9}
[data-quest="guests"]{--quest-tone:#ca8c79;--quest-ink:#80594e;--quest-head:#eee0d8;--quest-card:#fbf1ea;--quest-line:#e5cabc}
[data-quest="ritual"]{--quest-tone:#a194b4;--quest-ink:#71647e;--quest-head:#e8e3ed;--quest-card:#f4f1f7;--quest-line:#d9d0e1}
[data-quest="circus"]{--quest-tone:#c3a068;--quest-ink:#8a704a;--quest-head:#eee5d3;--quest-card:#fbf6e9;--quest-line:#e3d4b4}
[data-quest="saw"]{--quest-tone:#8e9fa9;--quest-ink:#5f7580;--quest-head:#dfe7e9;--quest-card:#eff4f5;--quest-line:#cbd9de}
[data-quest="chernobyl"]{--quest-tone:#91a382;--quest-ink:#657854;--quest-head:#e2e9d9;--quest-card:#f1f6e9;--quest-line:#d0ddc0}
[data-quest="loft"]{--quest-tone:#80a99f;--quest-ink:#466e64;--quest-head:#deebe4;--quest-card:#eef6f1;--quest-line:#c7ddd1}
[data-quest="mafia"]{--quest-tone:#b38a9a;--quest-ink:#80596b;--quest-head:#eddee4;--quest-card:#faf0f4;--quest-line:#e0c8d1}

.timeline-quest{position:sticky;top:0;z-index:5;grid-row:1;display:flex;align-items:center;justify-content:center;min-width:0;min-height:var(--head-height);padding:10px 8px;border-right:1px solid #ffffff8a;border-bottom:2px solid var(--quest-tone);background:var(--quest-head);color:var(--quest-ink);text-align:center;box-shadow:0 2px 3px #424d3310}
.timeline-quest span{max-width:100%;font-size:13px;line-height:1.3;font-weight:700;overflow-wrap:anywhere}
.timeline-time{position:sticky;left:0;z-index:3;grid-column:1;align-self:stretch;min-width:0;min-height:44px;padding:10px 5px 0 1px;border-top:1px solid #dfe5d7;border-right:1px solid #d8e0cc;background:#f6f8f0;color:#6d805d;font-size:12px;line-height:16px;text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.timeline-lane{z-index:0;min-width:0;min-height:44px;border-top:1px solid #e3e8dd;border-right:1px solid #e6ebdf;background:#fcfcf9}
.timeline-slot{position:relative;z-index:1;display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:3px;min-width:0;min-height:44px;align-self:start;margin:3px 4px;padding:7px 8px;border:1px solid var(--quest-line);border-left:3px solid var(--quest-tone);border-radius:6px;background:var(--quest-card);color:var(--quest-ink);font:inherit;font-size:12px;line-height:1.35;text-align:left;cursor:pointer;transition:border-color .15s,box-shadow .15s,background-color .15s;touch-action:pan-x pan-y;white-space:normal;overflow-wrap:anywhere}
.timeline-slot:hover{z-index:2;border-color:var(--quest-tone);box-shadow:0 2px 9px #35422517}
.timeline-slot:focus-visible{z-index:4;outline:3px solid #d7a387;outline-offset:-2px}
.timeline-slot > *,.timeline-content > *{max-width:100%;min-width:0;flex:none}
.timeline-content{display:contents}
.timeline-slot.is-booked{background:var(--quest-head);border-color:var(--quest-tone);color:#374c30}
.timeline-state{display:flex;align-items:flex-start;gap:4px;color:#5d7650;font-size:11px;font-weight:700;line-height:14px;white-space:normal;overflow-wrap:anywhere}
.timeline-state::before{display:none}
.timeline-state .status-dot{width:8px;height:8px;flex:0 0 8px;margin-top:3px}
.timeline-status-label{display:block;min-width:0;white-space:normal;overflow-wrap:anywhere}
.timeline-slot.status-new{border-color:#b48b50}
.timeline-slot.status-new .timeline-state{color:#956b2f}
.timeline-slot.status-completed{background:var(--quest-card);filter:saturate(.55)}
.timeline-slot.status-completed .timeline-state{color:#718265}
.timeline-name{display:block;font-size:15px;line-height:19px;font-weight:700;white-space:normal;overflow-wrap:anywhere}
.timeline-phone{display:block;font-size:15px;line-height:19px;font-weight:700;letter-spacing:-.25px;font-variant-numeric:tabular-nums;white-space:normal;overflow-wrap:anywhere}
.timeline-range{display:flex;flex-wrap:wrap;align-items:baseline;gap:0;font-size:12px;line-height:16px;letter-spacing:-.3px;font-weight:700;font-variant-numeric:tabular-nums}
.timeline-start,.timeline-end{white-space:nowrap}
.timeline-team{display:block;color:#4e6143;font-size:11px;font-weight:600;line-height:15px;white-space:normal;overflow-wrap:anywhere}
.timeline-room{display:flex;flex-wrap:wrap;align-items:flex-start;gap:2px 5px;font-size:11px;line-height:15px;white-space:normal;overflow-wrap:anywhere;color:#4e6143;font-weight:600}
.timeline-option{display:block;max-width:100%;font-size:11px;line-height:15px;white-space:normal;overflow-wrap:anywhere}
.timeline-slot .note-flags{display:flex;align-items:flex-start;gap:3px;flex-wrap:wrap;margin:2px 0 0;min-width:0}
.timeline-slot .note-flag{display:block;max-width:100%;padding:1px 3px;border-radius:3px;font-size:10px;font-weight:700;line-height:14px;white-space:normal;overflow-wrap:anywhere}
/* Empty starts use a quiet 44px tap target without filling a tall occupied row. */
.timeline-slot.is-free,.timeline-slot.is-past{justify-content:flex-start;align-items:flex-start;gap:0;min-height:44px;margin:0;padding:10px 6px;border:0;border-radius:3px;background:transparent;box-shadow:none;text-align:left}
.timeline-slot.is-free .timeline-range,.timeline-slot.is-past .timeline-range{color:#75836b;font-weight:400}
.timeline-slot.is-free:hover{background:#edf1e7;box-shadow:none}
.timeline-slot.is-past:disabled{opacity:1;background:transparent;cursor:default;box-shadow:none}
.timeline-slot.is-past .timeline-range{color:#96a18e}
.timeline-slot.is-blocked{gap:3px;background:#edf1e7;border-style:dashed;border-color:#b5c2a7;color:#6d805b}
.timeline-slot.is-blocked:hover{border-color:#94a47f;box-shadow:none}
body.timeline-fullscreen{overflow:hidden}
body.timeline-fullscreen > .mobile-nav{visibility:hidden}
#timeline-view.is-fullscreen{position:fixed;inset:0;z-index:40;display:flex;flex-direction:column;width:100%;height:100dvh;min-height:0;padding:0 0 env(safe-area-inset-bottom);margin:0;background:#f7f8f2;overflow:hidden;overscroll-behavior:none}
#timeline-fullscreen-bar{display:flex;align-items:center;justify-content:flex-end;flex:0 0 auto;padding:8px max(12px,env(safe-area-inset-right)) 8px max(12px,env(safe-area-inset-left));border-bottom:1px solid #d8e1cd;background:#fafbf7}
#timeline-view.is-fullscreen .timeline-toolbar,#timeline-view.is-fullscreen .timeline-help,#timeline-view.is-fullscreen .timeline-caption{display:none}
#timeline-view.is-fullscreen .timeline-scroll{flex:1 1 auto;min-height:0;max-height:none;width:100%;max-width:100%;border:0;border-radius:0;overscroll-behavior:contain;overflow:auto;scroll-padding-top:62px;scroll-padding-left:40px;touch-action:pan-x pan-y;overflow-anchor:none}
/* Compact columns keep the ordinary timetable readable on a phone. */
.timeline-grid.is-compact{--time-width:40px;--head-height:52px;width:calc(var(--time-width) + var(--resource-count,7) * var(--compact-column-width,62px));min-width:100%;grid-template-columns:var(--time-width) repeat(var(--resource-count,7),var(--compact-column-width,62px))}
.timeline-grid.is-compact .timeline-corner{font-size:11px;padding:2px 0}
.timeline-grid.is-compact .timeline-quest{padding:7px 3px}
.timeline-grid.is-compact .timeline-quest span{display:block;font-size:12px;line-height:1.3;letter-spacing:-.3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;overflow-wrap:normal}
.timeline-grid.is-compact .timeline-name{font-size:13px;line-height:17px}
.timeline-grid.is-compact .timeline-phone{font-size:12px;line-height:16px}
.timeline-grid.is-compact .timeline-state{font-size:11px;line-height:14px}
.timeline-grid.is-compact .timeline-range{font-size:12px;line-height:16px}
.timeline-grid.is-compact .timeline-team,.timeline-grid.is-compact .timeline-option{font-size:11px;line-height:15px}
.timeline-grid.is-compact .timeline-slot .note-flag{font-size:10px;line-height:14px}
.timeline-grid.is-compact .timeline-time{padding:10px 3px 0 0;font-size:12px;line-height:16px;letter-spacing:-.4px}
.timeline-grid.is-compact .timeline-slot{margin:3px 1px;padding:6px 3px;border-left-width:2px;border-radius:4px;gap:3px}
.timeline-grid.is-compact .timeline-slot.is-free,.timeline-grid.is-compact .timeline-slot.is-past{min-height:44px;margin:0;padding:10px 4px;border:0}
@media(max-width:760px){
  .schedule-layout-switch{display:grid;grid-template-columns:1fr 1fr;width:100%;margin-bottom:18px}
  .schedule-layout-switch button{min-width:0;padding:10px;font-size:14px}
  .timeline-toolbar{gap:7px;margin-bottom:7px}
  .timeline-toolbar h2{font-size:16px;letter-spacing:-.4px}
  .timeline-toolbar button{padding:9px 10px;font-size:13px}
  .timeline-help{margin-bottom:12px;font-size:13px;line-height:1.55}
  .timeline-scroll{max-height:65dvh;border-radius:8px;scroll-padding-top:60px;scroll-padding-left:44px}
  #timeline-fullscreen-bar{padding-top:max(8px,env(safe-area-inset-top))}
}
@media(prefers-reduced-motion:reduce){.timeline-slot{transition:none}}


/* Dense full-screen schedule. JS measures the complete content and supplies
   explicit tracks, so occupied blocks retain every field without clipping. */
.timeline-grid.is-overview{
  --head-height:var(--overview-head-height,36px);
  grid-template-rows:var(--overview-head-height,36px) var(--overview-rows);
  grid-auto-rows:0;
  font-family:Arial,sans-serif;
  font-size:10px;
  line-height:11px;
}
#timeline-view.is-fullscreen #timeline-fullscreen-bar{padding:3px max(8px,env(safe-area-inset-right)) 3px max(8px,env(safe-area-inset-left));padding-top:max(3px,env(safe-area-inset-top))}
#timeline-view.is-fullscreen #timeline-collapse{min-height:32px;padding:5px 12px;font-size:12px;line-height:20px}
#timeline-view.is-fullscreen .timeline-scroll{scroll-padding-top:36px}
.timeline-grid.is-overview .timeline-corner{min-height:0;padding:1px;font-family:Arial,sans-serif;font-size:9px;line-height:11px}
.timeline-grid.is-overview .timeline-quest{min-height:0;padding:3px 2px}
.timeline-grid.is-overview .timeline-quest span{font-family:Arial,sans-serif;font-size:10px;font-weight:700;line-height:11px;letter-spacing:0}
.timeline-grid.is-overview .timeline-time{min-height:0;padding:1px 2px 0 0;font-family:Arial,sans-serif;font-size:9px;line-height:10px;letter-spacing:0}
.timeline-grid.is-overview .timeline-lane{min-height:0}
.timeline-grid.is-overview .timeline-slot{align-self:stretch;min-height:0;margin:1px;padding:1px;gap:0;border-width:1px;border-radius:3px;font-family:Arial,sans-serif;font-size:10px;line-height:11px;overflow:visible;transition:none}
.timeline-grid.is-overview .timeline-content{display:flex;flex:0 0 auto;flex-direction:column;align-items:stretch;gap:1px;width:100%;height:auto;min-width:0;max-width:100%;max-height:none;font-family:Arial,sans-serif;font-size:10px;line-height:11px}
.timeline-grid.is-overview .timeline-state{gap:2px;font-size:9px;line-height:11px;font-weight:600}
.timeline-grid.is-overview .timeline-state .status-dot{width:8px;height:8px;flex:0 0 8px;margin-top:1px}
.timeline-grid.is-overview .timeline-name{font-size:10px;font-weight:700;line-height:11px;white-space:normal;overflow-wrap:anywhere}
.timeline-grid.is-overview .timeline-phone{font-size:8.5px;font-weight:600;line-height:10px;letter-spacing:-.2px;white-space:normal;overflow-wrap:anywhere}
.timeline-grid.is-overview .timeline-range{font-size:9px;font-weight:600;line-height:10px;letter-spacing:-.15px;gap:0;flex-wrap:wrap}
.timeline-grid.is-overview .timeline-team,.timeline-grid.is-overview .timeline-room,.timeline-grid.is-overview .timeline-option{font-size:9px;font-weight:600;line-height:11px}
.timeline-grid.is-overview .timeline-room{gap:1px 3px}
.timeline-grid.is-overview .timeline-slot .note-flags{gap:1px;flex-wrap:wrap;margin:0}
.timeline-grid.is-overview .timeline-slot .note-flag{padding:0;font-size:8.5px;font-weight:600;line-height:10px;white-space:normal;overflow-wrap:anywhere}
.timeline-content > *{max-width:100%;min-width:0;flex:none}
.timeline-grid.is-overview .timeline-slot.is-free,.timeline-grid.is-overview .timeline-slot.is-past{min-height:0;margin:1px;padding:1px;border:0;border-radius:0;background:transparent;box-shadow:none}
.timeline-grid.is-overview .timeline-slot.is-free .timeline-range,.timeline-grid.is-overview .timeline-slot.is-past .timeline-range{font-size:9px;line-height:10px;font-weight:400}
.timeline-grid.is-overview .timeline-slot.is-blocked{gap:0;padding:2px}
.timeline-grid.is-overview .timeline-slot:focus-visible{outline-width:2px;outline-offset:-2px}
