/* Building-only layout. Specialty typography, controls and status colours come
   from dashboard-shared/dashboard.css. */
body { margin: 0; background: #edf2f6; }
.building { min-height: 100vh; background: #f6f8fa; }
.building main { padding: 22px 30px; }
.building .compact-controls { margin-bottom: 20px; }
.building .draft { margin-left: auto; font-size: 11px; color: #627b8c; letter-spacing: 1px; }
.building .summary { display: flex; align-items: center; flex-wrap: wrap; gap: 12px 28px; padding-bottom: 18px; margin-bottom: 16px; border-bottom: 1px solid #d8e1e8; }
.building .summary > span { display: flex; align-items: baseline; gap: 7px; font-size: 14px; }
.building .summary strong { font-size: 29px; }
.building .summary .summary-title, .building .summary .connection-summary { font-size: 12px; color: #627b8c; }
.building .connection-summary { margin-left: auto; }
.building .good-text { color: #267351; }
.building .short-text, .building .feed-warning { color: #a14a0c; }
.building .unknown { color: #627b8c; }
.building #board-notice { margin: 0 0 12px; font-size: 12px; }
.building #board { overflow-x: auto; padding-bottom: 4px; }
.building .matrix-head, .building .unit-row { display: grid; grid-template-columns: minmax(185px,1.1fr) minmax(110px,1fr) minmax(95px,.48fr) minmax(110px,1fr) minmax(110px,1fr); gap: 9px; min-width: 650px; }
.building .matrix-head { color: #627b8c; font-size: 12px; margin-bottom: 8px; }
.building .matrix-head > span:not(:first-child) { padding-left: 11px; }
.building .unit-row { margin-bottom: 9px; }
.building .unit-name, .building .matrix-head > span:first-child { position: sticky; left: 0; z-index: 2; background: #f6f8fa; padding-right: 10px; }
.building .unit-name { display: flex; flex-direction: column; justify-content: center; gap: 6px; font-size: 15px; }
.building .unit-name small { font-size: 11px; line-height: 1.4; }
.building .staffing-badge { display: inline-flex; align-items: center; align-self: flex-start; gap: 6px; padding: 4px 8px; border: 0; border-radius: 5px; font-size: 12px; font-weight: 600; line-height: 1.3; background: var(--tint,#e9eef2); color: var(--tone,#627b8c); }
.building .staffing-badge i { width: 6px; height: 6px; border-radius: 50%; background: currentColor; flex-shrink: 0; }
.building .unset { --bar: #9cabb8; }
.building .cell { display: flex; flex-direction: column; justify-content: space-between; min-height: 90px; padding: 8px 11px 0; border: 1px solid var(--line,#ccd6df); border-top: 3px solid var(--bar,#9cabb8); border-radius: 5px; background: var(--tint,#eef2f5); color: #19354c; }
.building .cell-summary { display: block; color: inherit; text-decoration: none; }
.building .cell-summary:hover .band-count { filter: brightness(.85); }
.building .cell-top { display: block; }
.building .band-count { font-variant-numeric: tabular-nums; }
.building .band-status { background: transparent; padding: 0; border-radius: 0; }
.building .overnight { display: block; font-size: 11px; color: #627b8c; margin-top: 5px; }
/* One 44px hit target spans each bar. Pointer position selects the exact source
   interval, including very narrow periods, without tiny individual buttons. */
.building .bar { position: relative; display: flex; align-items: flex-start; height: 44px; margin-top: 4px; padding-top: 9px; }
.building .bar-colour { height: 7px; min-width: 0; background: var(--bar,#9cabb8); border: 0; pointer-events: none; }
.building .bar-colour:first-child { border-radius: 2px 0 0 2px; }
.building .bar-colour:last-of-type { border-radius: 0 2px 2px 0; }
.building .bar-hit { position: absolute; inset: 0; z-index: 1; width: 100%; height: 44px; padding: 0; border: 0; background: transparent; cursor: pointer; touch-action: manipulation; }
.building .time-marker { position: absolute; top: 5px; height: 15px; width: 3px; z-index: 2; background: #000; transform: translateX(-50%); pointer-events: none; }
.building .time-marker-label { position: absolute; top: calc(100% + 4px); left: 0; font-size: 12px; font-weight: 600; line-height: 14px; color: #19354c; white-space: nowrap; background: transparent; border: 0; padding: 0; box-shadow: none; }
.building .cell.is-ended { background: #edf1f4; border-color: #d5dfe6; border-top-color: #a5b2bd; }
.building .cell.is-ended .band-count, .building .cell.is-ended .band-status { color: #738594; }
.building .cell.is-ended .bar-colour { background: #b5c1ca; }
.building .week-head, .building .week-row { display: grid; grid-template-columns: minmax(185px,1.1fr) repeat(7,minmax(0,1fr)); gap: 7px; min-width: 1050px; margin-bottom: 8px; }
.building .week-head { text-align: center; font-size: 12px; color: #627b8c; }
.building .week-head > span:first-child { position: sticky; left: 0; z-index: 2; background: #f6f8fa; text-align: left; }
.building .week-head strong { display: block; font-size: 18px; color: #19354c; margin-top: 4px; }
.building .week-day { display: grid; grid-template-columns: 1fr 1fr; gap: 4px; padding: 6px; background: #fff; border: 1px solid #d8e1e8; border-radius: 5px; }
.building .week-mark { display: flex; justify-content: space-between; gap: 4px; padding: 6px; border: 0; border-bottom: 3px solid var(--bar,#9cabb8); background: var(--tint,#eef2f5); color: #19354c; text-decoration: none; font-size: 12px; }
.building .week-mark small { font-size: 11px; }
.building .week-specialty { grid-column: 1/-1; color: #526c80; font-size: 10px; font-weight: 600; line-height: 14px; }
.building .week-row { padding-bottom: 8px; border-bottom: 1px solid #cdd8e1; }
.building .week-row:nth-child(odd) { background: #edf2f6; }
.building .week-row:nth-child(odd) > .unit-name { background: #edf2f6; }
.building .week-row:hover, .building .week-row:focus-within { background: #e2edf4; }
.building .week-row:hover > .unit-name, .building .week-row:focus-within > .unit-name { background: #e2edf4; }
.building .week-row:hover .week-day, .building .week-row:focus-within .week-day { border-color: #839eaf; }
@media (min-width:641px) {
 .building[data-view="week"] #board { max-height: calc(100dvh - 190px); overflow: auto; scrollbar-gutter: stable; }
 .building .week-head { position: sticky; top: 0; z-index: 4; background: #f6f8fa; padding: 7px 0; border-bottom: 1px solid #bacbd7; }
 .building .week-row > .unit-name { border-right: 2px solid #cad8e2; padding-left: 6px; }
 .building .week-row { margin-bottom: 4px; padding-bottom: 4px; }
 .building .week-day { gap: 2px; padding: 4px; }
 .building .week-specialty { line-height: 12px; }
 .building .week-mark { padding: 2px 4px; line-height: 14px; font-size: 11px; border-bottom-width: 2px; }
 /* Disconnected specialties need context, not four empty shift boxes per day. */
 .building .week-row.is-placeholder { margin-bottom: 2px; padding-bottom: 2px; }
 .building .week-row.is-placeholder .week-day { grid-template-columns: minmax(0,1fr) auto; align-items: center; min-height: 28px; background: transparent; border-color: transparent; }
 .building .week-row.is-placeholder .week-specialty { grid-column: auto; font-weight: 400; color: #718594; }
 .building .week-row.is-placeholder .week-day::after { content: '—'; color: #97a8b5; font-size: 12px; }
 .building .week-row.is-placeholder .week-mark { display: none; }
 .building .week-row.is-placeholder > .unit-name { flex-direction: row; align-items: center; justify-content: space-between; gap: 4px; font-size: 12px; }
 .building .week-row.is-placeholder .staffing-badge { align-self: center; background: transparent; padding: 0 4px 0 0; font-size: 9px; font-weight: 400; }
}
.building .pressure { margin-top: 18px; border-top: 1px solid #d8e1e8; padding-top: 15px; }
.building .pressure h2 { font-size: 13px; margin: 0 0 13px; }
.building #pressure { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.building .pressure-window h3 { font-size: 12px; color: #627b8c; margin: 0 0 10px; font-weight: 600; }
.building .pressure-point { display: grid; grid-template-columns: 1fr auto; gap: 5px 12px; background: var(--tint); border-left: 3px solid var(--bar); border-radius: 4px; padding: 11px 12px; margin-bottom: 8px; color: #19354c; text-decoration: none; }
.building .pressure-point:hover { filter: brightness(.97); }
.building .pressure-time { grid-column: 1/-1; color: #627b8c; font-size: 11px; font-variant-numeric: tabular-nums; }
.building .pressure-point strong { font-size: 13px; font-weight: 600; line-height: 1.4; }
.building .pressure-severity { font-size: 13px; font-weight: 600; color: var(--tone); line-height: 1.4; text-align: right; }
.building .pressure-empty { margin: 0; color: #627b8c; font-size: 12px; line-height: 1.5; }
.building .pressure-window summary { cursor: pointer; color: #466579; font-size: 12px; padding: 8px 0; min-height: 36px; }
.building footer { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 15px; margin-top: 20px; border-top: 1px solid #d8e1e8; padding-top: 13px; color: #627b8c; font-size: 11px; }
.building .key { display: inline-block; width: 12px; height: 5px; margin-left: 7px; border: 0; background: var(--bar,#9cabb8); }
.building .cell-summary:focus-visible, .building .pressure-point:focus-visible { outline: 3px solid #65b6e2; outline-offset: 2px; }
/* Coverage popup shares the specialty interaction controller. */
.building-detail { position: fixed; width: min(410px,calc(100vw - 24px)); max-width: 410px; max-height: calc(100dvh - 24px); overflow: auto; padding: 14px; z-index: 1000; background: #fff; color: #19354c; border: 1px solid #c7d5df; border-top: 4px solid var(--bar); box-shadow: 0 12px 40px #102e4833; font-size: 13px; }
.building-detail .detail-heading { display: flex; justify-content: space-between; gap: 12px; }
.building-detail .detail-heading h2 { font-size: 16px; margin: 0; }
.building-detail .detail-heading p { font-size: 12px; margin: 4px 0 0; color: #627b8c; }
.building-detail .detail-heading button { min-width: 44px; min-height: 44px; margin: -8px -8px 0 0; background: transparent; border: 0; font-size: 24px; color: #627b8c; align-self: flex-start; }
.building-detail .coverage-sequence { list-style: none; padding: 0; margin: 12px 0 0; }
.building-detail .coverage-sequence li { display: flex; flex-direction: column; gap: 4px; padding: 0 0 12px 12px; border-left: 2px solid #d4dfe7; }
.building-detail .coverage-sequence li:last-child { padding-bottom: 0; }
.building-detail .sequence-time { font-size: 11px; color: #627b8c; font-variant-numeric: tabular-nums; }
.building-detail .coverage-sequence strong { font-size: 14px; font-weight: 600; color: #19354c; line-height: 1.4; }
.building-detail .sequence-reason { font-size: 12px; color: #627b8c; line-height: 1.5; }
.building-detail .detail-footer { display: flex; justify-content: flex-end; margin-top: 12px; }
.building-detail .detail-footer a { font-size: 12px; color: #176079; text-decoration: none; padding: 8px 0; }
@media (min-width:1700px) {
 .building main { max-width: none; padding: 24px 40px; }
 .building .unit-name { font-size: 19px; }
 .building .band-status { font-size: 13px; }
 .building .staffing-badge { font-size: 14px; }
}
@media (max-width:900px) {
 .building main { padding: 16px; }
 .building .summary { gap: 12px 16px; }
 .building .connection-summary { margin-left: 0; }
 .building .matrix-head, .building .unit-row { grid-template-columns: 150px minmax(110px,1fr) 90px minmax(110px,1fr) minmax(110px,1fr); min-width: 606px; }
 .building #board { background: linear-gradient(to right,transparent,#0000000a) right/10px 100% no-repeat; }
}
@media (max-width:700px) { .building #pressure { grid-template-columns: 1fr; gap: 16px; } }
@media (max-width:600px) {
 .building .draft { font-size: 10px; }
}
.building .relief-warning { display: block; margin-top: 7px; color: #a14a0c; font-size: 11px; font-weight: 600; line-height: 1.4; }
.building .relief-icon, .building .opening-icon { color: #a14a0c; }
.building-detail .detail-relief-warning { margin: 10px 0 0; color: #a14a0c; font-size: 12px; line-height: 1.5; }
/* Phone layout keeps every connected shift in view without sideways scrolling.
   These labels share the desktop DOM and the same assessed staffing data. */
.building .mobile-shift-name, .building .week-date-mobile { display: none; }
@media (max-width:640px) {
 .building main { padding: 12px; }
 .building .compact-controls { gap: 8px; margin-bottom: 14px; }
 .building .summary { gap: 8px 18px; padding-bottom: 12px; margin-bottom: 12px; }
 .building .summary .summary-title { flex-basis: 100%; }
 .building .summary > span { font-size: 12px; }
 .building .summary strong { font-size: 24px; }
 .building .summary .connection-summary { flex-basis: 100%; font-size: 11px; }
 .building #board { overflow: visible; background: none; }
 .building .matrix-head, .building .week-head { display: none; }
 .building .unit-row, .building .week-row { min-width: 0; width: 100%; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 8px; padding: 0 0 14px; margin-bottom: 14px; border-bottom: 1px solid #d8e1e8; }
 .building .unit-name { position: static; grid-column: 1/-1; display: grid; grid-template-columns: minmax(0,1fr) auto; align-items: center; gap: 6px 8px; padding: 0 0 2px; min-width: 0; }
 .building .unit-name > strong { font-size: 16px; }
 .building .unit-name .staffing-badge { max-width: 100%; align-self: center; font-size: 11px; }
 .building .unit-name .feed-warning { grid-column: 1/-1; }
 .building .cell { min-width: 0; min-height: 96px; padding: 9px 10px 0; }
 .building .cell-summary { min-height: 44px; }
 .building .mobile-shift-name { display: block; font-size: 12px; font-weight: 600; color: #526c80; margin-bottom: 5px; }
 .building .cell .band-count { margin: 0 0 4px; font-size: 26px; }
 .building .cell .band-status { font-size: 12px; line-height: 1.4; }
 .building .cell .relief-warning, .building .overnight { font-size: 11px; }
 .building .cell.is-ended .mobile-shift-name { color: #738594; }
 .building .unit-row.is-placeholder .cell, .building .week-row.is-placeholder .week-day { display: none; }
 .building .unit-row.is-placeholder, .building .week-row.is-placeholder { padding-bottom: 10px; margin-bottom: 10px; }
 .building .week-row { grid-template-columns: minmax(0,1fr); }
 .building .week-day { min-width: 0; grid-template-columns: 60px repeat(4,minmax(0,1fr)); align-items: stretch; gap: 4px; padding: 4px; }
 .building .week-date-mobile { display: flex; flex-direction: column; justify-content: center; gap: 2px; padding-left: 3px; color: #627b8c; font-size: 11px; line-height: 1.3; }
 .building .week-date-mobile strong { color: #19354c; font-size: 12px; }
 .building .week-mark { flex-direction: column; align-items: center; justify-content: center; gap: 3px; min-width: 0; min-height: 48px; padding: 5px 2px; font-size: 12px; }
 .building .week-mark small { font-size: 12px; }
 .building .pressure { margin-top: 4px; }
 .building .pressure-point { padding: 12px; }
 .building .pressure-window summary { min-height: 44px; padding: 12px 0; }
 .building footer { margin-top: 14px; gap: 10px; }
 .building footer .footer-actions { width: 100%; justify-content: flex-end; }
 .building footer #refresh, .building footer .manage-calendars { min-height: 44px; }
 .building-detail { left: 0 !important; top: auto !important; bottom: 0; width: 100%; max-width: none; max-height: 75vh; max-height: 75dvh; border-radius: 12px 12px 0 0; padding: 16px 16px max(16px,env(safe-area-inset-bottom)); }
 .building-detail .detail-heading { position: sticky; top: 0; z-index: 1; margin: -16px -16px 0; padding: 16px 16px 8px; background: #fff; }
 .building-detail .coverage-sequence strong { font-size: 15px; }
 .building-detail .sequence-time, .building-detail .sequence-reason { font-size: 13px; }
 .building-detail .detail-footer a { min-height: 44px; display: inline-flex; align-items: center; font-size: 14px; }
}

.building .feed-warning.nav-age-warning { color: #b42332; }

/* Desktop Day overview: content-sized specialty rows and a separate pressure row.
   Phone and tablet rules above keep the existing layout and touch targets. */
.desktop-toolbar { display: contents; }
.desktop-shift-headings, .pressure-tile, .desktop-cell-note { display: none; }
.building .pressure-dialog { width: min(850px,calc(100vw - 32px)); max-height: 80dvh; overflow: auto; padding: 18px; border: 1px solid #cad6df; border-radius: 10px; color: #19354c; }
.building .pressure-dialog::backdrop { background: #102e4866; }
.building .pressure-dialog-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; position: sticky; top: -18px; background: white; padding: 8px 0; z-index: 2; }
.building .pressure-dialog-heading h2 { font-size: 18px; margin: 0; }
.building #pressure-close { min-width: 44px; min-height: 44px; background: transparent; border: 0; font-size: 26px; color: #627b8c; }
.building #pressure-dialog-content { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 18px; }
@media (max-width:640px) { .building #pressure-dialog-content { grid-template-columns: 1fr; } }
@media (min-width:1000px) {
 .building main { max-width: none; width: calc(100% - 48px); margin: 0 auto; padding: 6px 0; }
 .building[data-view="today"] { --day-type: clamp(9px,min(.9vw,1.6dvh),16px); }
 .building[data-view="today"] main { max-width: none; width: calc(100% - 48px); height: auto; min-height: 0; box-sizing: border-box; display: flex; flex-direction: column; margin: 0 auto; padding: 6px 0; }
 .building[data-view="today"] .desktop-toolbar { flex-shrink: 0; display: flex; align-items: center; justify-content: space-between; gap: 14px; min-height: 36px; margin-bottom: 6px; }
 .building[data-view="today"] .compact-controls { align-items: center; flex-shrink: 0; margin: 0; }
 .building[data-view="today"] .draft { display: none; }
 .building[data-view="today"] .summary { justify-content: flex-end; flex-wrap: nowrap; flex: 1; min-width: 0; gap: 8px 13px; padding: 0; margin: 0; border: 0; }
 .building[data-view="today"] .summary > span { gap: 4px; white-space: nowrap; font-size: 12px; }
 .building[data-view="today"] .summary strong { font-size: 21px; }
 .building[data-view="today"] .summary .summary-title { font-size: 10px; }
 .building[data-view="today"] .summary .connection-summary { font-size: 10px; margin-left: 0; }
 .building[data-view="today"] #board { flex: 0 0 auto; min-height: 0; display: grid; align-content: start; grid-template-rows: repeat(6,auto); grid-template-columns: repeat(2,minmax(0,1fr)); gap: 8px 14px; overflow: visible; padding: 0; background: none; }
 .building[data-view="today"] .matrix-head { display: none; }
 .building[data-view="today"] .unit-row { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,.55fr) minmax(0,1fr) minmax(0,1fr); grid-template-rows: auto auto auto; gap: 1px 4px; height: auto; box-sizing: border-box; min-width: 0; margin: 0; padding: 4px 8px; border: 1px solid #dbe3eb; border-radius: 6px; background: #fff; }
 .building[data-view="today"] .unit-name { grid-column: 1/-1; position: static; display: flex; flex-direction: row; align-items: center; justify-content: flex-start; gap: 6px; padding: 0; min-width: 0; background: transparent; }
 .building[data-view="today"] .unit-name > strong { font-size: calc(var(--day-type)*1.4); white-space: nowrap; }
 .building[data-view="today"] .staffing-badge { order: 2; align-self: center; margin-left: auto; flex-shrink: 0; font-size: calc(var(--day-type)*1.1); padding: 2px 6px; }
 .building[data-view="today"] .unit-name .feed-warning { order: 1; min-width: 0; flex: 1; font-size: calc(var(--day-type)*1.0); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
 .building[data-view="today"] .desktop-shift-headings { grid-column: 1/-1; display: grid; grid-template-columns: minmax(0,1fr) minmax(0,.55fr) minmax(0,1fr) minmax(0,1fr); gap: 4px; font-size: calc(var(--day-type)*1.0); line-height: calc(var(--day-type)*1.1); color: #627b8c; }
 .building[data-view="today"] .desktop-shift-headings>span { padding-left: 6px; }
 .building[data-view="today"] .cell { min-width: 0; min-height: 0; height: auto; box-sizing: border-box; position: relative; display: block; padding: 2px 6px 0; border-radius: 3px; }
 .building[data-view="today"] .cell:has(.band-status-detail) { min-height: calc(var(--day-type)*5.6 + 8px); }
 .building[data-view="today"] .cell-top { display: grid; grid-template-columns: auto minmax(0,1fr); align-items: baseline; gap: 0 3px; }
 .building[data-view="today"] .cell .band-count { font-size: calc(var(--day-type)*2.3); line-height: calc(var(--day-type)*2.6); margin: 0; white-space: nowrap; flex-shrink: 0; }
 .building[data-view="today"] .cell .band-count small { font-size: calc(var(--day-type)*1.1); margin-left: 1px; }
 .building[data-view="today"] .cell .band-status { font-size: calc(var(--day-type)*1.0); line-height: calc(var(--day-type)*1.2); margin: 0; white-space: normal; text-align: right; }
 .building[data-view="today"] .cell .band-status:has(.band-status-detail) { display: contents; }
 .building[data-view="today"] .band-status-main { text-align: right; font-size: calc(var(--day-type)*1.0); line-height: 1.2; }
 .building[data-view="today"] .band-status-detail { grid-column: 1/-1; text-align: left; font-size: calc(var(--day-type)*1.0); line-height: 1.2; padding-bottom: calc(var(--day-type)*1.8 + 4px); }
 /* Keep the label over its shortage while keeping its ends inside the card. */
 .building[data-view="today"] .shortage-time { display: inline-block; position: relative; left: clamp(min(50%,var(--label-half-width)),var(--shortage-position,50%),max(50%,calc(100% - var(--label-half-width)))); transform: translateX(-50%); max-width: 100%; font-variant-numeric: tabular-nums; }
 .building[data-view="today"] .status-separator { display: none; }
 .building[data-view="today"] .swing-compact .cell-top { display: block; }
 .building[data-view="today"] .swing-compact .band-count { font-size: calc(var(--day-type)*2.1); line-height: calc(var(--day-type)*2.3); }
 .building[data-view="today"] .swing-compact .band-status { display: block; margin-top: 1px; text-align: left; }
 .building[data-view="today"] .swing-compact .band-status-main, .building[data-view="today"] .swing-compact .band-status-detail { display: block; text-align: left; padding-bottom: 0; }
 .building[data-view="today"] .bar { position: absolute; left: 6px; right: 6px; bottom: 0; height: calc(var(--day-type)*1.8 + 4px); margin: 0; padding-top: 2px; }
 .building[data-view="today"] .bar-colour { height: calc(var(--day-type)*0.4); }
 .building[data-view="today"] .bar-hit { height: calc(var(--day-type)*1.8 + 4px); }
 .building[data-view="today"] .time-marker { top: -1px; height: calc(var(--day-type)*1.1); width: 3px; }
 .building[data-view="today"] .time-marker-label { top: calc(100% + 1px); font-size: calc(var(--day-type)*1.0); line-height: calc(var(--day-type)*1.0); }
 .building[data-view="today"] .late-cover-note { position: absolute; bottom: 0; left: 6px; right: 6px; font-size: calc(var(--day-type)*0.9); line-height: calc(var(--day-type)*1.1); margin: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
 .building[data-view="today"] .late-cover-note.is-absent { padding-left: 6px; }
 .building[data-view="today"] .late-cover-note.is-absent:before { height: 9px; top: 1px; }
 .building[data-view="today"] .relief-warning, .building[data-view="today"] .overnight { display: none; }
 .building[data-view="today"] .desktop-cell-note { display: block; grid-column: 2; grid-row: 1; min-width: 0; font-size: calc(var(--day-type)*0.9); line-height: calc(var(--day-type)*1.1); text-align: right; color: #627b8c; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
 .building[data-view="today"] .desktop-cell-note.has-relief { color: #a14a0c; font-weight: 600; }
 .building[data-view="today"] .cell:has(.desktop-cell-note) .band-status, .building[data-view="today"] .cell:has(.desktop-cell-note) .band-status:has(.band-status-detail), .building[data-view="today"] .cell:has(.desktop-cell-note) .late-cover-note { display: none; }
 .building[data-view="today"] .unit-row.is-placeholder { background: #f9fbfc; border-color: #e0e7ed; }
 .building[data-view="today"] .is-placeholder .unit-name > strong { color: #4f6476; }
 .building[data-view="today"] .is-placeholder .staffing-badge { background: transparent; color: #8799a7; padding-right: 0; font-size: calc(var(--day-type)*1.0); font-weight: 400; }
 .building[data-view="today"] .is-placeholder .cell { background: transparent; border: 0; border-top: 1px solid #e5ebef; border-radius: 0; color: #a6b5c0; padding-top: 5px; }
 .building[data-view="today"] .is-placeholder .band-status { display: none; }
 .building[data-view="today"] .is-placeholder .band-count { font-size: calc(var(--day-type)*2.0); font-weight: 400; color: #a6b5c0; }
 .building[data-view="today"] .pressure-full { display: none; }
 .building[data-view="today"] .pressure-tile { display: block; height: 100%; box-sizing: border-box; min-width: 0; padding: 6px 9px; border: 1px solid #dbe3eb; border-radius: 6px; background: white; }
 .building .pressure-tile-heading { display: flex; align-items: center; justify-content: space-between; gap: 8px; height: calc(var(--day-type)*2.0); margin-bottom: 3px; }
 .building .pressure-tile-heading h2 { margin: 0; font-size: calc(var(--day-type)*1.2); }
 .building .pressure-tile-heading button { padding: 2px 0; border: 0; background: transparent; color: #47718b; font-size: calc(var(--day-type)*1.0); white-space: nowrap; }
 .building .pressure-tile-heading button:disabled { opacity: .5; cursor: default; }
 .building .pressure-mini { display: grid; grid-template-columns: 62px minmax(75px,.7fr) minmax(0,1.3fr); gap: 0 6px; align-items: center; position: relative; height: calc(var(--day-type)*2.6); margin-top: 4px; padding: 1px 7px; border-left: 3px solid var(--bar); border-radius: 2px; background: var(--tint); color: #19354c; text-decoration: none; font-size: calc(var(--day-type)*1.1); }
 .building .pressure-mini-window { grid-row: 1/3; font-size: calc(var(--day-type)*1.0); color: #627b8c; }
 .building .pressure-mini strong { font-size: calc(var(--day-type)*1.1); white-space: nowrap; }
 .building .pressure-mini-severity { grid-row: 1/3; grid-column: 3; min-width: 0; text-align: right; font-size: calc(var(--day-type)*1.0); font-weight: 600; color: var(--tone); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
 .building .pressure-mini small { grid-column: 2; font-size: calc(var(--day-type)*0.9); line-height: calc(var(--day-type)*1.0); color: #627b8c; white-space: nowrap; }
 .building .pressure-mini-empty { height: calc(var(--day-type)*2.6); margin-top: 4px; display: flex; align-items: center; gap: 9px; font-size: calc(var(--day-type)*1.0); color: #627b8c; }
 .building .pressure-mini-empty span:first-child { flex: 0 0 62px; }
 .building[data-view="today"] footer { flex-shrink: 0; flex-wrap: nowrap; gap: 12px; margin-top: 8px; padding-top: 6px; font-size: 10px; }
 .building[data-view="today"] footer #refresh, .building[data-view="today"] footer .manage-calendars { min-height: 26px; padding: 3px 8px; font-size: 10px; }
}
/* Keep Week's live summary beside the controls instead of consuming a row. */
@media (min-width:1000px) {
 .building[data-view="week"] .desktop-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 14px; min-height: 36px; margin-bottom: 6px; }
 .building[data-view="week"] .compact-controls { flex-shrink: 0; margin-bottom: 0; }
 .building[data-view="week"] .draft { display: none; }
 .building[data-view="week"] .summary { flex: 1; min-width: 0; justify-content: flex-end; gap: 6px 16px; padding: 0; margin: 0; border: 0; }
 .building[data-view="week"] .summary > span { gap: 4px; font-size: 12px; white-space: nowrap; }
 .building[data-view="week"] .summary strong { font-size: 23px; }
 .building[data-view="week"] .summary .summary-title, .building[data-view="week"] .summary .connection-summary { font-size: 11px; }
 .building[data-view="week"] .summary .connection-summary { margin-left: 0; }
}
@media (min-width:1000px) and (max-width:1150px) {
 .building[data-view="today"] .summary .summary-title { display: none; }
 .building[data-view="today"] .summary { gap: 7px; }
 .building[data-view="today"] .summary .connection-summary { font-size: 9px; }
 .building[data-view="today"] .cell .band-count { font-size: 21px; }
}

/* Supervisor assignments belong to the specialty/date heading, not staff totals. */
.building .supervisor-line{display:flex;flex-wrap:wrap;gap:2px 12px;grid-column:1/-1;font-size:11px;line-height:1.4;color:#526c80;font-weight:400}
.building .supervisor-slot{white-space:nowrap}
.building .supervisor-slot strong{font-weight:600}
.building .supervisor-slot.current{color:#19354c}
.building .supervisor-slot.current strong{font-weight:700}
.building .supervisor-slot.ended{color:#8799a7}
.building .supervisor-slot.unavailable{color:#627b8c}
.building .supervisor-warning{color:#b57a00}


/* Three operational days: fuller shift detail than Week, no supervisor row. */
.building[data-view="outlook"] main{max-width:none}
.building[data-view="outlook"] #board{overflow:visible}
.building .outlook-head,.building .outlook-row{display:grid;grid-template-columns:160px repeat(3,minmax(0,1fr));gap:10px}
.building .outlook-head{font-size:13px;color:#526c80;margin-bottom:8px;text-align:center}
.building .outlook-head>span{text-align:left}
.building .outlook-row{padding:10px 0;border-bottom:1px solid #d8e1e8}
.building .outlook-row>.unit-name{position:static;background:transparent}
.building .outlook-day{min-width:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;align-content:start;padding:8px;border:1px solid #d8e1e8;border-radius:6px;background:#fff}
.building .outlook-day>h3{display:none}
.building .outlook-day .cell{min-width:0;min-height:100px;padding:6px 8px 0}
.building .outlook-day .mobile-shift-name{display:block;font-size:11px;color:#627b8c;margin-bottom:3px}
.building .outlook-day .band-count{font-size:24px;line-height:1.1;margin-bottom:4px}
.building .outlook-day .band-count small{font-size:12px}
.building .outlook-day .band-status{font-size:11px;line-height:1.3;white-space:normal}
.building .outlook-day .band-status-detail{display:block;font-weight:400}
.building .outlook-day .status-separator{display:none}
.building .outlook-day .bar{height:30px;padding-top:5px;margin-top:5px}
.building .outlook-day .bar-hit{height:30px}
.building .outlook-day .time-marker{top:1px;height:14px}
.building .outlook-day .time-marker-label{font-size:10px;line-height:11px;top:calc(100% + 1px)}
.building .outlook-day .late-cover-note,.building .outlook-day .relief-warning,.building .outlook-day .overnight{font-size:10px}
.building .outlook-row.is-placeholder{padding:7px 0;align-items:center}
.building .outlook-row.is-placeholder .outlook-day{background:transparent;border:0;padding:0 8px}
.building .outlook-placeholder{grid-column:1/-1;font-size:11px;color:#8799a7}
@media(min-width:1000px){
 .building[data-view="outlook"] .desktop-toolbar{display:flex;justify-content:space-between;align-items:center;gap:14px;min-height:36px;margin-bottom:6px}
 .building[data-view="outlook"] .compact-controls{margin-bottom:0;flex-shrink:0}
 .building[data-view="outlook"] .draft{display:none}
 .building[data-view="outlook"] .summary{justify-content:flex-end;gap:8px 13px;border:0;margin:0;padding:0}
 .building[data-view="outlook"] .summary>span{font-size:12px;gap:4px}
 .building[data-view="outlook"] .summary strong{font-size:21px}
}
@media(max-width:999px){
 .building .outlook-head{display:none}
 .building .outlook-row{grid-template-columns:repeat(3,minmax(0,1fr))}
 .building .outlook-row>.unit-name{grid-column:1/-1}
 .building .outlook-day>h3{display:block;grid-column:1/-1;margin:0 0 4px;font-size:13px;color:#526c80}
}
@media(max-width:640px){
 .building .outlook-row{grid-template-columns:minmax(0,1fr);gap:8px}
 .building .outlook-row>.unit-name{padding:0}
 .building .outlook-day{padding:10px;gap:8px}
 .building .outlook-day .cell{min-height:108px}
 .building .outlook-day .band-status{font-size:12px}
 .building .outlook-row.is-placeholder .outlook-day{display:none}
}

/* Day cards reserve normal-flow space for every label and timeline. */
.building .supervisor-tag{font-size:.9em;font-weight:400;white-space:nowrap}
@media(min-width:1000px){
 .building[data-view="today"] .unit-name>.supervisor-line{display:none}
 .building[data-view="today"] .desktop-shift-headings{line-height:1.3;align-items:end}
 .building[data-view="today"] .desktop-shift-headings>span{min-width:0}
 .building[data-view="today"] .cell{display:flex;flex-direction:column;min-height:calc(var(--day-type)*4.8 + 8px)}
 .building[data-view="today"] .cell-summary{flex:0 0 auto;padding-bottom:3px}
 .building[data-view="today"] .band-status-detail{padding-bottom:0}
 .building[data-view="today"] .bar{position:relative;left:auto;right:auto;bottom:auto;flex:0 0 auto;margin-top:auto;min-height:calc(var(--day-type)*1.8 + 4px)}
 .building[data-view="today"] .unit-row:has(.late-cover-note) .bar{margin-bottom:calc(var(--day-type)*1.1 + 2px)}
 .building[data-view="today"] .unit-row.paired-placeholder{grid-template-rows:auto;align-content:center}
 .building[data-view="today"] .paired-placeholder>.desktop-shift-headings,
 .building[data-view="today"] .paired-placeholder>.cell{display:none}
}

/* 72-hour desktop density sits between the Day cards and Week markers. */
@media(min-width:1000px){
 .building .outlook-head,.building .outlook-row{grid-template-columns:140px repeat(3,minmax(0,1fr));gap:8px}
 .building .outlook-row{padding:6px 0}
 .building .outlook-row>.unit-name{font-size:14px;gap:4px}
 .building .outlook-day{grid-template-columns:repeat(4,minmax(0,1fr));padding:5px;gap:4px}
 .building .outlook-day .cell{min-height:84px;padding:4px 4px 0;border-radius:3px}
 .building .outlook-day .mobile-shift-name{font-size:10px;line-height:1.2;margin-bottom:2px}
 .building .outlook-day .band-count{font-size:20px;line-height:1.1;margin-bottom:2px}
 .building .outlook-day .band-count small{font-size:10px}
 .building .outlook-day .band-status{font-size:10px;line-height:1.25;overflow-wrap:normal}
 .building .outlook-day .bar{height:25px;margin-top:3px;padding-top:4px}
 .building .outlook-day .bar-hit{height:25px}
 .building .outlook-day .late-cover-note,.building .outlook-day .relief-warning,.building .outlook-day .overnight{font-size:9px;line-height:1.25}
 .building .outlook-row.is-placeholder{padding:5px 0}
}

/* Fill each date frame consistently and reserve Now-label space only when needed. */
@media(min-width:1000px){
 .building .outlook-day{align-content:stretch;align-items:stretch}
 .building .outlook-day .cell{min-height:74px;justify-content:flex-start;gap:3px}
 .building .outlook-day .bar{margin-top:auto;flex-shrink:0}
 .building .outlook-day .cell:not(.is-current) .bar{height:11px;min-height:11px;padding-top:3px}
 .building .outlook-day .cell:not(.is-current) .bar-hit{height:25px;top:-7px;bottom:auto}
 .building .outlook-row.is-placeholder>.unit-name .staffing-badge{display:none}
 .building .outlook-row.is-placeholder>.unit-name{padding:0;gap:0}
}

.building .opening-warning{display:block;margin-top:3px;font-size:10px;line-height:1.3;color:#a14a0c}

/* Building-wide role: current duty is explicit even while viewing other dates. */
.building .shift-manager{display:flex;align-items:baseline;flex-wrap:wrap;gap:2px 8px;margin:0 0 10px;font-size:12px;line-height:1.3;color:#627b8c}
.building .shift-manager strong{font-size:12px;font-weight:600;color:#526c80}
@media(min-width:1000px){
 .building[data-view] .desktop-toolbar{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:4px 18px}
 .building[data-view] .desktop-toolbar>.compact-controls{grid-row:1;grid-column:1}
 .building[data-view] .desktop-toolbar>.summary{display:none}
 .building[data-view] .shift-manager{grid-row:1;grid-column:2;justify-content:flex-end;gap:3px 18px;margin:0;padding:0;font-size:12px;text-align:right}
}

.building .shift-manager .manager-duty{display:inline-flex;flex-wrap:wrap;align-items:baseline;gap:2px 4px}

/* Final specialty row: NTMU, DSC, ATOS; pressure points follow at full width. */
@media(min-width:1000px){
 .building[data-view="today"] #board{grid-template-columns:repeat(12,minmax(0,1fr))}
 .building[data-view="today"] .unit-row{grid-column:span 6}
 .building[data-view="today"] .unit-row.bottom-specialty{grid-column:span 4}
 .building[data-view="today"] .pressure-tile{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 14px;height:auto}
 .building[data-view="today"] .pressure-tile-heading{grid-column:1/-1;height:auto;min-height:calc(var(--day-type)*1.6);margin-bottom:0}
}

/* NTMU operates Day and Evening only; both occupy the available row width. */
@media(min-width:1000px){
 .building[data-view="today"] .unit-row.is-ntmu,
 .building[data-view="today"] .is-ntmu .desktop-shift-headings{grid-template-columns:repeat(2,minmax(0,1fr))}
 .building .outlook-row.is-ntmu .outlook-day{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:640px){
 .building .week-row.is-ntmu .week-day{grid-template-columns:60px repeat(2,minmax(0,1fr))}
}

/* Match Week's horizontal specialty tracking in the three-day outlook. */
.building .outlook-row:nth-child(odd){background:#edf2f6}
.building .outlook-row:nth-child(odd)>.unit-name{background:#edf2f6}
.building .outlook-row:hover,.building .outlook-row:focus-within{background:#e2edf4}
.building .outlook-row:hover>.unit-name,.building .outlook-row:focus-within>.unit-name{background:#e2edf4}
.building .outlook-row:hover .outlook-day,.building .outlook-row:focus-within .outlook-day{border-color:#839eaf}

/* Keep all Building views centred and readable on ultrawide monitors. */
@media(min-width:1000px){
 .building[data-view] main{max-width:1600px;width:calc(100% - 48px);margin-inline:auto}
}

/* DSC operates Day, Swing and Evening, with no Midnight placeholder. */
@media(min-width:1000px){
 .building[data-view="today"] .unit-row.is-dsc,
 .building[data-view="today"] .is-dsc .desktop-shift-headings{grid-template-columns:minmax(0,1fr) minmax(0,.55fr) minmax(0,1fr)}
 .building .outlook-row.is-dsc .outlook-day{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:640px){
 .building .week-row.is-dsc .week-day{grid-template-columns:60px repeat(3,minmax(0,1fr))}
}

/* Match specialty timeline segments while preserving the full bar hit target. */
.building .bar-colour.is-hovered { filter: brightness(1.08); }
