.occupancy{min-width:0;width:100%;container:occupancy / inline-size;--occupancy-axis-width:64px;--occupancy-heading-height:80px;--occupancy-minute-size:1.5px}
.occupancy-controls{display:flex;flex-wrap:wrap;gap:12px;align-items:end;margin-block:16px}
.occupancy-controls label{display:grid;gap:4px;min-width:0;flex:0 1 180px}
.occupancy-controls button,.occupancy-controls input{min-height:44px;max-width:100%;box-sizing:border-box}
.occupancy-controls button{white-space:normal;margin:0}
.occupancy-scroll-hint{font-size:.85rem;color:var(--muted,currentColor)}
.occupancy-scroll{overflow-x:auto;max-width:100%;padding:0 0 16px;position:relative;isolation:isolate;scrollbar-width:auto;overscroll-behavior-x:contain;border:1px solid var(--border,#ccc);border-radius:8px}
.occupancy-scroll:focus-visible{outline:3px solid var(--accent,#176a3b);outline-offset:3px}
.occupancy-grid{display:grid;grid-template-columns:var(--occupancy-axis-width) minmax(var(--day-0-width,128px),1fr) minmax(var(--day-1-width,128px),1fr) minmax(var(--day-2-width,128px),1fr) minmax(var(--day-3-width,128px),1fr) minmax(var(--day-4-width,128px),1fr) minmax(var(--day-5-width,128px),1fr) minmax(var(--day-6-width,128px),1fr);gap:8px;width:100%;min-width:calc(var(--occupancy-axis-width) + 56px + var(--day-0-width,128px) + var(--day-1-width,128px) + var(--day-2-width,128px) + var(--day-3-width,128px) + var(--day-4-width,128px) + var(--day-5-width,128px) + var(--day-6-width,128px))}
.occupancy-axis{position:sticky;left:0;z-index:2;align-self:start;background:var(--surface,#fff);color:var(--text,#17251c);font-size:.8rem;border-right:1px solid var(--border,#ccc)}
.occupancy-axis-heading,.occupancy-day>h3{height:var(--occupancy-heading-height);box-sizing:border-box;margin:0;padding:12px 4px;font-size:.85rem;line-height:1.3;overflow-wrap:anywhere}
.occupancy-axis-labels,.occupancy-day-events{position:relative;height:calc((var(--axis-to) - var(--axis-from))*var(--occupancy-minute-size))}
.occupancy-axis-labels span{position:absolute;top:calc(var(--offset)*var(--occupancy-minute-size));left:4px;white-space:nowrap;transform:translateY(-50%)}
.occupancy-day{min-width:0}
.occupancy-day-events{background:repeating-linear-gradient(to bottom,transparent 0,transparent calc(60*var(--occupancy-minute-size) - 1px),var(--border,#ccc) calc(60*var(--occupancy-minute-size)))}
.occupancy-event{position:absolute;box-sizing:border-box;top:calc((var(--start) - var(--axis-from))*var(--occupancy-minute-size));height:calc(var(--duration)*var(--occupancy-minute-size));left:calc(var(--lane)*100%/var(--lanes));width:calc(100%/var(--lanes) - 3px);padding:4px;border:1px solid var(--border,#888);border-radius:6px;background:var(--surface,#fff);color:var(--text,#17251c);font-size:.8rem;line-height:1.25;overflow:hidden;overflow-wrap:anywhere}
.occupancy-event strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.occupancy-event p{margin:2px 0}
.occupancy-event p:first-of-type{white-space:normal;overflow-wrap:normal}
.occupancy-event:focus p:first-of-type,.occupancy-event:hover p:first-of-type{white-space:normal;overflow:visible}
.occupancy-event:focus,.occupancy-event:hover{height:auto;min-height:calc(var(--duration)*var(--occupancy-minute-size));overflow:visible;z-index:3;box-shadow:0 2px 8px #0003}
.occupancy-event:focus strong,.occupancy-event:hover strong{white-space:normal}
.occupancy-event:focus-visible{outline:3px solid var(--accent,#176a3b);outline-offset:2px}
.occupancy-inactive{opacity:.75;border-style:dashed}
.occupancy-weekly .occupancy-grid{grid-template-columns:repeat(7,minmax(128px,1fr));min-width:944px}
.occupancy-weekly .occupancy-axis{display:none}
.occupancy-weekly .occupancy-day-events{height:auto;background:none;display:grid;gap:10px}
.occupancy-weekly .occupancy-event{position:static;min-height:0;height:auto;width:auto;overflow:visible}
.occupancy-weekly .occupancy-event strong{white-space:normal}
@container occupancy (max-width:600px){
 .occupancy-scroll{overflow:visible;border:0;padding:0}
 .occupancy-grid,.occupancy-weekly .occupancy-grid{display:block;min-width:0}
 .occupancy-axis,.occupancy-scroll-hint{display:none}
 .occupancy-day>h3{height:auto;min-height:0;padding:16px 0 8px}
 .occupancy-day-events{height:auto;background:none;display:grid;gap:10px}
 .occupancy-event,.occupancy-event:focus,.occupancy-event:hover{position:static;width:auto;height:auto;min-height:0;font-size:1rem;overflow:visible}
 .occupancy-event strong{white-space:normal}
 .occupancy-day:not(:has(.occupancy-event)){display:none}
}
.place-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:20px}.place-card{border:1px solid var(--border,#ccc);border-radius:12px;overflow:hidden;padding:16px;min-width:0}.place-card img,.place-image-empty{width:100%;height:180px;object-fit:cover}.place-image-empty{display:grid;place-items:center;background:var(--surface-alt,#eee)}.place-card p{white-space:pre-line;overflow-wrap:anywhere}.place-card a{display:inline-block;padding:12px 0}

.occupancy-calendar:not([data-geometry-ready]) .occupancy-grid{display:block;min-width:0}
.occupancy-calendar:not([data-geometry-ready]) .occupancy-axis,.occupancy-calendar:not([data-geometry-ready]) .occupancy-scroll-hint{display:none}
.occupancy-calendar:not([data-geometry-ready]) .occupancy-day>h3{height:auto}
.occupancy-calendar:not([data-geometry-ready]) .occupancy-day-events{height:auto;background:none;display:grid;gap:10px}
.occupancy-calendar:not([data-geometry-ready]) .occupancy-event{position:static;height:auto;width:auto;overflow:visible}
