/* Platzbelegung: time and pitch-unit coordinates come from the existing slot engine. */
.nx--facilities { --fac-label-width: 76px; }
.fac__heading-meta { display:flex; align-items:center; gap:10px; padding:10px 14px; background:var(--c-white); border:1px solid var(--c-line); border-radius:var(--radius-lg); white-space:nowrap; }
.fac__heading-meta strong { font-size:24px; letter-spacing:-.04em; }
.fac__heading-meta span { max-width:55px; white-space:normal; font-size:11px; line-height:1.35; color:var(--c-muted); }
.fac__plan-tools,.fac__plan-controls { display:flex; align-items:center; justify-content:space-between; gap:18px; flex-wrap:wrap; }
.fac__plan-tools { margin-bottom:22px; }
.fac__period { padding:0; gap:8px; font-size:15px; }
.fac__pitch-filter { display:flex; align-items:center; gap:8px; }
.fac__pitch-filter select { max-width:260px; }
.fac__legend { display:flex; flex-wrap:wrap; gap:10px 20px; margin-bottom:10px; color:var(--c-muted); font-size:11px; }
.fac__legend span { display:inline-flex; align-items:center; gap:7px; }
.fac__legend span::before { content:""; width:11px; height:11px; border:1px solid var(--c-line-strong); border-radius:3px; background:var(--c-surface-2); }
.fac__legend .is-own::before { border-left:3px solid var(--c-muted); }
.fac__legend .is-foreign::before { background:var(--c-white); border-style:dashed; }
.fac__legend .is-free::before { background:var(--c-fill-soft); border-color:var(--c-fill); }
.fac__legend .is-published::before { background:var(--c-fill); border-color:var(--c-fill); }
.fac__legend .is-closure::before { background:repeating-linear-gradient(135deg,var(--c-line) 0 2px,var(--c-surface-2) 2px 5px); }
.fac__grid-hint { color:var(--c-faint); font-size:11px; margin:0 0 18px; }
.fac__day-picker { display:none; }
.fac__pitch { border:1px solid var(--c-line); border-radius:var(--radius-lg); background:var(--c-white); margin-bottom:22px; }
.fac__pitch-head { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:17px 20px; border-bottom:1px solid var(--c-line); }
.fac__pitch-head h3 { margin:0 0 3px; font-size:16px; }
.fac__pitch-head p { margin:0; font-size:11px; color:var(--c-muted); }
.fac__parts { padding:5px 9px; background:var(--c-surface-2); border-radius:var(--radius-sm); font-size:11px; color:var(--c-muted); white-space:nowrap; }
.fac__timeline-wrap { padding:0 14px 8px 0; }
.fac__scale { display:grid; grid-template-columns:var(--fac-label-width) 1fr; height:35px; color:var(--c-faint); font-size:10px; }
.fac__scale>span { padding:10px 14px; }
.fac__scale>div { position:relative; }
.fac__scale time { position:absolute; left:var(--fac-tick); top:10px; transform:translateX(-50%); font-variant-numeric:tabular-nums; }
.fac__day-row { display:grid; grid-template-columns:var(--fac-label-width) minmax(0,1fr); }
.fac__day-label { display:flex; flex-direction:column; gap:2px; padding:13px 14px; font-size:11px; border-top:1px solid var(--c-line); }
.fac__day-label strong { font-size:12px; }
.fac__day-label>span { color:var(--c-muted); font-variant-numeric:tabular-nums; }
.fac__day-label small { color:var(--c-fill); font-size:9px; font-weight:650; }
.fac__day-row.is-today .fac__day-label { color:var(--c-fill); }
.fac__track { position:relative; min-width:0; height:max(82px,calc(var(--fac-parts) * 37px)); border-top:1px solid var(--c-line); border-right:1px solid var(--c-line); background-image:linear-gradient(to right,var(--c-line) 1px,transparent 1px); background-size:calc(100% / var(--fac-hours)) 100%; }
.fac__slot { position:absolute; left:calc(var(--fac-start) + 2px); top:calc(var(--fac-unit) + 3px); width:calc(var(--fac-duration) - 4px); height:calc(var(--fac-units) - 6px); min-width:4px; border:1px solid var(--c-line-strong); border-left:3px solid var(--c-muted); border-radius:4px; background:var(--c-surface-2); color:var(--c-black); font-size:10px; line-height:1.35; z-index:2; }
.fac__slot>summary { cursor:pointer; height:100%; overflow:hidden; padding:4px 6px; list-style:none; }
.fac__slot>summary::-webkit-details-marker { display:none; }
.fac__slot>summary>* { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.fac__slot-time { font-size:9px; font-weight:600; font-variant-numeric:tabular-nums; }
.fac__slot>summary>strong { font-size:10px; line-height:1.4; }
.fac__slot-state { font-size:9px; margin-top:3px; }
.fac__slot.is-foreign { border-left-width:1px; border-style:dashed; background:var(--c-hover); }
.fac__slot.is-free { border:1px solid color-mix(in srgb,var(--c-fill) 45%,var(--c-line)); background:var(--c-fill-soft); color:var(--c-fill); }
.fac__slot.is-published { border:1px solid var(--c-fill); border-left-width:3px; background:color-mix(in srgb,var(--c-fill) 15%,var(--c-white)); }
.fac__slot.is-free:not(.is-published)>summary { padding-right:23px; }
.fac__slot[open] { z-index:15; }
.fac__slot[open]>summary,.fac__slot>summary:hover { outline:1px solid currentColor; outline-offset:-1px; border-radius:3px; }
.fac__slot>summary:focus-visible,.fac__quick-publish button:focus-visible { outline:2px solid var(--c-fill); outline-offset:2px; }
.fac__slot-detail { position:absolute; left:0; top:calc(100% + 6px); display:flex; flex-direction:column; gap:6px; width:240px; max-width:calc(100vw - 40px); padding:14px; border:1px solid var(--c-line-strong); border-radius:var(--radius-md); background:var(--c-white); color:var(--c-black); box-shadow:var(--shadow-popover); font-size:12px; }
.fac__slot-detail small { color:var(--c-muted); line-height:1.4; }
.fac__slot-detail form { margin-top:5px; }
.fac__quick-publish { pointer-events:none; position:absolute; left:calc(var(--fac-start) + 2px); top:calc(var(--fac-unit) + 3px); width:calc(var(--fac-duration) - 4px); height:calc(var(--fac-units) - 6px); z-index:3; }
.fac__quick-publish button { pointer-events:auto; position:absolute; right:2px; top:2px; display:grid; place-items:center; width:22px; height:22px; padding:0; border:1px solid color-mix(in srgb,var(--c-fill) 40%,var(--c-line)); border-radius:4px; background:var(--c-white); color:var(--c-fill); font:inherit; font-size:17px; cursor:pointer; }
.fac__quick-publish button:hover { background:var(--c-fill); color:var(--c-white); }
.fac__quick-publish.htmx-request button { opacity:.5; cursor:progress; }
.fac__closure { position:absolute; inset:3px 2px; display:flex; align-items:center; gap:10px; padding:10px 15px; border:1px solid var(--c-line-strong); border-radius:4px; background:repeating-linear-gradient(135deg,var(--c-surface-2) 0 6px,var(--c-hover) 6px 12px); color:var(--c-muted); font-size:11px; z-index:5; }
.fac__closure span { font-size:10px; }
.fac__track-empty { display:block; padding:20px 12px; font-size:11px; color:var(--c-faint); }
.fac__mobile-hours { display:none; }
.fac__supplement { border:1px solid var(--c-line); border-radius:var(--radius-lg); background:var(--c-white); margin:14px 0; }
.fac__supplement>summary { display:flex; align-items:center; gap:12px; padding:16px 18px; cursor:pointer; font-size:13px; }
.fac__supplement>summary::before { content:"+"; color:var(--c-muted); font-size:16px; }
.fac__supplement[open]>summary::before { content:"−"; }
.fac__supplement>summary>span { font-size:11px; color:var(--c-muted); margin-left:auto; }
.fac__room-list,.fac__away-list { border-top:1px solid var(--c-line); padding:16px 18px; }
.fac__room-list { display:grid; grid-template-columns:repeat(auto-fit,minmax(300px,1fr)); gap:24px; }
.fac__room-list h3 { font-size:13px; }
.fac__room-list h3 small { display:block; margin-top:4px; color:var(--c-muted); font-size:10px; font-weight:500; }
.fac__room-day,.fac__away-day { display:grid; grid-template-columns:72px 1fr; gap:12px; padding:8px 0; border-top:1px solid var(--c-line); font-size:11px; }
.fac__room-day>div { display:flex; flex-wrap:wrap; align-items:center; gap:4px; }
.fac__room-day small,.fac__away-day small { color:var(--c-muted); }
.fac__room-event { padding:4px 6px; background:var(--c-surface-2); border:1px solid var(--c-line); border-radius:4px; font-size:10px; }
.fac__room-event.is-foreign { border-style:dashed; background:var(--c-white); }
.fac__capacity { padding:3px 6px; font-size:10px; border:1px solid var(--c-muted); border-radius:4px; font-weight:700; }
.fac__away-day p { margin:0 0 8px; }
.fac__away-day p>* { display:block; margin-bottom:3px; }
.fac__event-kind { font-size:10px; color:var(--c-faint); }
.fac__calendar { border:1px solid var(--c-line); border-radius:var(--radius-lg); overflow:hidden; background:var(--c-white); }
.fac__calendar .nx__day { min-height:135px; padding:12px; gap:5px; }
.fac__calendar .nx__day.is-outside { opacity:1; background:var(--c-bg); }
.fac__calendar .nx__day small { font-size:10px; }
.fac__month-day { display:flex; align-items:center; justify-content:space-between; gap:4px; width:100%; margin-bottom:7px; font-size:16px; font-weight:650; }
.fac__month-day em { font-style:normal; font-size:9px; }
.fac__month-metric { color:var(--c-muted); font-size:10px; }
.fac__month-metric b { font-size:12px; font-variant-numeric:tabular-nums; }
.fac__month-metric.is-free,.fac__calendar small.fac__month-offers { color:var(--c-fill); }
.fac__calendar small.fac__month-offers { background:var(--c-fill-soft); }
.fac__year { grid-template-columns:repeat(auto-fill,minmax(340px,1fr)); }
.fac__year .nx__box { margin-bottom:0; padding:18px; }
.fac__year h3 { margin-bottom:16px; }
.fac__year th { font-size:10px; color:var(--c-muted); font-weight:600; }
.fac__year td { padding:10px 4px; white-space:nowrap; font-size:11px; font-variant-numeric:tabular-nums; }
.fac__table-scroll { overflow-x:auto; }
.fac__empty { background:var(--c-white); border:1px dashed var(--c-line-strong); border-radius:var(--radius-lg); }
.fac__empty-mark { display:block; font-size:30px; color:var(--c-fill); margin-bottom:16px; }
.fac__empty .btn { margin-top:12px; }
.fac__intro { display:flex; justify-content:space-between; align-items:center; gap:22px; margin-bottom:22px; }
.fac__intro h2 { font-size:19px; }
.fac__intro p { max-width:680px; margin:5px 0 0; color:var(--c-muted); font-size:12px; }
.nx--facilities .nx__setup { grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; }
.nx--facilities .nx__setup>.nx__box { padding:22px; min-width:0; }
.nx--facilities .nx__setup h3 { font-size:15px; margin-bottom:10px; flex-wrap:wrap; }
.nx--facilities .nx__setup .nx__row { align-items:flex-start; flex-wrap:wrap; gap:8px; font-size:12px; padding:13px 0; }
.nx--facilities .nx__setup .nx__row>div:first-child { flex:1 1 100%; }
.nx--facilities .nx__setup .nx__row>div>small { font-size:11px; }
.nx--facilities .nx__setup .nx__inline { flex-wrap:wrap; align-items:center; gap:4px; }
.nx--facilities .nx__setup .nx__inline form { display:flex; align-items:center; gap:5px; }
.nx--facilities .nx__setup input[type=date] { min-width:0; max-width:100%; border:1px solid var(--c-line-strong); border-radius:var(--radius-sm); color:var(--c-black); background:var(--c-white); padding:6px 8px; font:inherit; font-size:12px; }
.nx--facilities .nx__setup>.nx__box.fac__setup-wide { grid-column:1/-1; }
.nx--facilities .nx__act { margin-top:15px; padding-top:14px; }
.nx--facilities .nx__act>summary { list-style:none; padding:3px 0; }
.nx--facilities .nx__act>summary::after { content:"+"; float:right; font-size:15px; }
.nx--facilities .nx__act[open]>summary::after { content:"−"; }
.nx--facilities .nx__act[open]>.nx__form { padding-top:10px; }
.nx--facilities .nx__form-grid>label.nx__ck { flex-direction:row; align-items:flex-start; font-weight:500; line-height:1.5; color:var(--c-black); }
.nx--facilities .nx__ck input { margin-top:3px; flex:none; }
.nx--facilities .nx__checks--teams { gap:7px; margin:8px 0 0; }
.nx--facilities .nx__checks--teams label { border:1px solid var(--c-line); border-radius:var(--radius-sm); padding:6px 8px; background:var(--c-bg); }
.nx--facilities .nx__windows { display:grid; grid-template-columns:1fr; gap:6px; margin-top:8px; }
.nx--facilities .nx__windows>span { display:grid; grid-template-columns:28px minmax(0,1fr) 8px minmax(0,1fr); align-items:center; gap:6px; }
.nx--facilities .nx__windows input { width:100%!important; min-width:0; }
.fac__policy-head { display:flex; justify-content:space-between; align-items:flex-start; gap:12px; padding-bottom:15px; margin-bottom:15px; border-bottom:1px solid var(--c-line); }
.fac__policy-head h3 { margin-bottom:3px!important; }
.fac__policy-head p { margin:0; color:var(--c-muted); font-size:11px; }
.fac__state { display:inline-flex; align-items:center; flex:none; padding:4px 8px; border:1px solid var(--c-line-strong); border-radius:var(--radius-full); background:var(--c-surface-2); font-size:10px; font-weight:600; color:var(--c-muted); }
.fac__state.is-open,.fac__state.is-accepted,.fac__state.is-requested,.fac__state.is-reserved { background:var(--c-fill-soft); border-color:color-mix(in srgb,var(--c-fill) 30%,var(--c-line)); color:var(--c-fill); }
.fac__offer-row { display:grid; grid-template-columns:150px minmax(0,1fr) auto; gap:18px; align-items:center; padding:17px 0; border-bottom:1px solid var(--c-line); }
.fac__offer-row:last-child { border-bottom:0; }
.fac__offer-row>div>strong,.fac__offer-row>div>small { display:block; }
.fac__offer-row strong { font-size:13px; }
.fac__offer-row small { font-size:11px; color:var(--c-muted); margin-top:4px; }
.fac__offer-date strong { font-variant-numeric:tabular-nums; }
.fac__offer-actions { display:flex; gap:8px; align-items:center; flex-wrap:wrap; justify-content:flex-end; }
.fac__request-columns { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:22px; align-items:start; }
.fac__request-columns h2 { font-size:17px; margin-bottom:15px; }
.fac__request-columns h2>span { margin-left:5px; color:var(--c-faint); font-size:12px; }
.fac__request { background:var(--c-white); border:1px solid var(--c-line); border-radius:var(--radius-lg); padding:18px; margin-bottom:12px; }
.fac__request-head { display:flex; justify-content:space-between; gap:12px; align-items:flex-start; }
.fac__request-head h3 { font-size:14px; margin:0 0 5px; }
.fac__request-date { font-size:12px; color:var(--c-muted); margin:0 0 14px; }
.fac__request dl { display:grid; grid-template-columns:65px 1fr; gap:6px 10px; font-size:12px; margin:0; }
.fac__request dt { color:var(--c-muted); }
.fac__request dd { margin:0; overflow-wrap:anywhere; }
.fac__request blockquote { padding:10px 12px; margin:16px 0 0; border-left:2px solid var(--c-line-strong); background:var(--c-bg); color:var(--c-muted); font-size:12px; line-height:1.5; }
.fac__request .nx__actions { display:flex; gap:7px; padding-top:14px; border-top:1px solid var(--c-line); margin-top:16px; }
@media(max-width:1100px) {
  .fac__plan-tools { align-items:flex-start; }
  .fac__plan-controls { gap:10px; }
  .nx--facilities .nx__setup,.fac__request-columns { grid-template-columns:1fr; }
  .fac__offer-row { grid-template-columns:130px minmax(0,1fr); }
  .fac__offer-actions { grid-column:2; justify-content:flex-start; }
}
@media(max-width:700px) {
  .nx--facilities .nx__heading { flex-direction:row; align-items:center; }
  .fac__heading-meta { padding:8px 10px; gap:6px; }
  .fac__heading-meta strong { font-size:20px; }
  .fac__heading-meta span { font-size:10px; }
  .fac__plan-tools { gap:14px; }
  .fac__period { width:100%; justify-content:space-between; font-size:13px; }
  .fac__plan-controls { width:100%; justify-content:space-between; align-items:flex-end; }
  .fac__pitch-filter { flex:1 1 100%; display:grid; grid-template-columns:40px 1fr; }
  .fac__pitch-filter select { width:100%; max-width:none; }
  .fac__plan-controls .nx__seg { width:100%; }
  .fac__plan-controls .nx__seg button { flex:1; }
  .fac__legend { gap:7px 13px; font-size:10px; }
  .fac__day-picker { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:3px; margin:18px 0 12px; }
  .fac__day-picker button { display:flex; flex-direction:column; align-items:center; gap:4px; padding:9px 2px; border:1px solid var(--c-line); border-radius:var(--radius-sm); color:var(--c-muted); background:var(--c-white); font:inherit; font-size:10px; cursor:pointer; }
  .fac__day-picker button.is-active { background:var(--c-fill-soft); border-color:var(--c-fill); color:var(--c-fill); }
  .fac__day-picker strong { font-size:10px; }
  .fac__day-picker small { font-size:8px; }
  [data-fac-date]:not(.is-selected-day) { display:none; }
  .fac__pitch-head { padding:14px; }
  .fac__pitch-head h3 { font-size:15px; }
  .fac__parts { font-size:10px; }
  .fac__timeline-wrap { padding:0 12px 18px; }
  .fac__scale { display:none; }
  .fac__day-row { display:block; }
  .fac__day-label { padding:12px 0; flex-direction:row; align-items:baseline; gap:8px; border:0; }
  .fac__track { margin:0 0 0 44px; height:calc(var(--fac-hours) * 48px); border:0; background-image:linear-gradient(to bottom,var(--c-line) 1px,transparent 1px),linear-gradient(to right,var(--c-line) 1px,transparent 1px); background-size:100% calc(100% / var(--fac-hours)),calc(100% / var(--fac-parts)) 100%; }
  .fac__slot { left:calc(var(--fac-unit) + 2px); top:calc(var(--fac-start) + 2px); width:calc(var(--fac-units) - 4px); height:calc(var(--fac-duration) - 4px); }
  .fac__slot>summary { padding:5px; }
  .fac__slot>summary>* { white-space:normal; overflow-wrap:anywhere; }
  .fac__slot-time { font-size:9px; }
  .fac__slot>summary>strong { font-size:10px; }
  .fac__slot.is-free:not(.is-published)>summary { padding-right:5px; padding-top:26px; }
  .fac__slot-detail { position:fixed; left:14px; right:14px; top:auto; bottom:24px; width:auto; max-width:none; z-index:100; padding:18px; box-shadow:var(--shadow-modal); }
  .fac__quick-publish { left:calc(var(--fac-unit) + 2px); top:calc(var(--fac-start) + 2px); width:calc(var(--fac-units) - 4px); height:calc(var(--fac-duration) - 4px); }
  .fac__quick-publish button { width:24px; height:24px; top:1px; right:1px; }
  .fac__mobile-hours { display:block; position:absolute; left:-44px; width:40px; height:100%; color:var(--c-faint); font-size:9px; pointer-events:none; }
  .fac__mobile-hours time { position:absolute; top:var(--fac-tick); transform:translateY(-50%); font-variant-numeric:tabular-nums; }
  .fac__closure { flex-direction:column; align-items:flex-start; justify-content:center; }
  .fac__supplement>summary { flex-wrap:wrap; gap:6px; padding:14px; }
  .fac__supplement>summary>span { width:100%; margin-left:20px; }
  .fac__room-list { display:block; padding:14px; }
  .fac__room-list>section+section { margin-top:20px; }
  .fac__away-list { padding:14px; }
  .fac__calendar .nx__day { padding:7px 3px; min-height:108px; }
  .fac__month-day { font-size:13px; margin-bottom:3px; }
  .fac__month-day em { display:none; }
  .fac__month-metric { font-size:8px; }
  .fac__month-metric b { display:block; font-size:10px; }
  .fac__calendar .nx__day small { font-size:8px; padding:2px; max-width:100%; }
  .fac__year { grid-template-columns:minmax(0,1fr); }
  .fac__year .nx__box { padding:14px; }
  .fac__intro { align-items:flex-start; flex-direction:column; gap:12px; }
  .nx--facilities .nx__setup>.nx__box { padding:17px; }
  .fac__offer-row { grid-template-columns:1fr; gap:9px; }
  .fac__offer-actions { grid-column:1; }
  .fac__offer-date { display:flex; align-items:center; gap:8px; }
  .fac__offer-date small { margin:0; }
  .fac__request { padding:15px; }
}

/* A readable alternative for short windows and bookings that overlap by exception. */
.fac__agenda { border-top:1px solid var(--c-line); }
.fac__agenda>summary { padding:12px 18px; font-size:11px; color:var(--c-muted); cursor:pointer; }
.fac__agenda-days { padding:0 18px 16px; }
.fac__agenda-day h4 { margin:15px 0 8px; font-size:12px; }
.fac__agenda-entry { display:grid; grid-template-columns:110px minmax(0,1fr) auto; gap:12px; align-items:center; padding:8px 0; border-top:1px solid var(--c-line); font-size:11px; }
.fac__agenda-entry>strong { font-variant-numeric:tabular-nums; font-weight:600; }
.fac__agenda-entry small { display:block; margin-top:3px; color:var(--c-muted); font-size:10px; }
.fac__agenda-entry.is-free>span { color:var(--c-fill); }
@media(max-width:700px) {
  .fac__agenda>summary { padding:14px; }
  .fac__agenda-days { padding:0 14px 14px; }
  .fac__agenda-entry { grid-template-columns:95px 1fr; gap:7px; }
  .fac__agenda-entry form { grid-column:2; }
  .fac__agenda-entry .btn { min-height:38px; }
}

/* Overlapping offers are alternatives on the same units, not additional capacity. */
.fac__tracks { min-width:0; }
.fac__track-group--alternative { border-top:1px dashed var(--c-line-strong); }
.fac__track-note { display:flex; align-items:center; gap:10px; padding:7px 8px; color:var(--c-muted); font-size:10px; background:var(--c-bg); }
.fac__track-note strong { font-weight:650; }
.fac__track-note span { color:var(--c-faint); }
.fac__track-group--alternative .fac__track { background-image:linear-gradient(to right,var(--c-line) 1px,transparent 1px),linear-gradient(to bottom,var(--c-line) 1px,transparent 1px); background-size:calc(100% / var(--fac-hours)) 100%,100% calc(100% / var(--fac-parts)); }
.fac__alternative-list { display:none; }
@media(max-width:700px) {
  .fac__track-group--alternative { margin-top:22px; }
  .fac__track-note { flex-direction:column; align-items:flex-start; gap:3px; padding:10px 0; background:transparent; }
  .fac__track-group--alternative .fac__track { display:none; }
  .fac__alternative-list { display:grid; gap:8px; }
  .fac__alternative-list>div { display:flex; flex-direction:column; align-items:flex-start; gap:4px; padding:11px; border:1px solid color-mix(in srgb,var(--c-fill) 40%,var(--c-line)); border-radius:var(--radius-md); background:var(--c-fill-soft); color:var(--c-fill); font-size:11px; }
  .fac__alternative-list small { font-size:10px; }
  .fac__alternative-list form { margin-top:3px; }
  .fac__alternative-list .btn { min-height:38px; }
}
