.fa-availability { font-family: -apple-system, BlinkMacSystemFont, sans-serif; max-width: 100%; }
.fa-controls { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; margin-bottom: 14px; }
.fa-toggle { display: flex; gap: 4px; }
.fa-nav { display: flex; align-items: center; gap: 10px; font-size: 14px; flex-wrap: wrap; }
.fa-btn { font-size: 13px; padding: 8px 12px; border: 1px solid #ccc; background: #fff; border-radius: 4px; cursor: pointer; text-decoration: none; color: #333; display: inline-block; min-height: 36px; box-sizing: border-box; }
.fa-btn-active { background: #eee; font-weight: 600; }
.fa-btn-primary { background: #1d9e75; color: #fff; border-color: #1d9e75; }
.fa-new-booking { margin-left: auto; }

.fa-grid-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; overscroll-behavior-x: contain; margin-bottom: 10px; }
.fa-week-grid, .fa-month-grid {
    display: grid;
    gap: 2px;
    align-items: stretch;
    grid-template-columns: minmax(90px, max-content) repeat(var(--fa-cols), minmax(var(--fa-daycol-min, 0), 1fr));
    min-width: 480px; /* keeps columns usable rather than collapsing to nothing when scrolled */
}
.fa-daylabel { font-size: 12px; color: #777; text-align: center; padding: 4px 0; }
.fa-roomname { font-size: 13px; font-weight: 600; display: flex; align-items: center; white-space: nowrap; padding-right: 12px; overflow: hidden; text-overflow: ellipsis; }

.fa-daycell { position: relative; background: #f6f6f4; border-radius: 4px; height: 44px; cursor: crosshair; touch-action: pan-x; }
.fa-bar { position: absolute; height: 12px; border-radius: 3px; top: 4px; }
.fa-bar-programming { background: #f0997b; }
.fa-bar-usage { background: #5dcaa5; }
.fa-bar-clickable { cursor: pointer; }
.fa-bar-clickable:hover { outline: 2px solid #0b4f3a; outline-offset: 1px; }

.fa-monthcell { display: block; height: 22px; border-radius: 3px; text-decoration: none; }
.fa-cell-open { background: #f6f6f4; }
.fa-cell-programming { background: #f0997b; }
.fa-cell-usage { background: #5dcaa5; }

.fa-legend { display: flex; gap: 16px; font-size: 12px; color: #777; margin: 8px 0 18px; flex-wrap: wrap; }
.fa-swatch { display: inline-block; width: 10px; height: 10px; border-radius: 3px; margin-right: 5px; vertical-align: middle; }
.fa-swatch-open { background: #f6f6f4; border: 1px solid #ddd; }
.fa-swatch-programming { background: #f0997b; }
.fa-swatch-usage { background: #5dcaa5; }

.fa-subheading { font-size: 15px; margin: 18px 0 8px; }
.fa-table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.fa-list { width: 100%; font-size: 13px; border-collapse: collapse; min-width: 460px; }
.fa-list th { text-align: left; color: #777; font-weight: 500; padding: 8px; border-bottom: 1px solid #ddd; }
.fa-list td { padding: 8px; border-bottom: 1px solid #eee; }
.fa-empty { color: #777; font-size: 13px; }
.fa-hint { color: #999; font-size: 12px; margin-top: 8px; }

.fa-panel-overlay { position: fixed; inset: 0; background: rgba(0,0,0,0.45); display: flex; align-items: center; justify-content: center; z-index: 9999; padding: 16px; box-sizing: border-box; }
.fa-panel-overlay[hidden] { display: none; }
.fa-panel { background: #fff; border-radius: 10px; padding: 20px; width: 620px; max-width: 100%; max-height: 90vh; overflow-y: auto; box-sizing: border-box; -webkit-overflow-scrolling: touch; }
.fa-panel-title { font-weight: 600; font-size: 16px; margin: 0 0 12px; }
.fa-panel label { display: block; font-size: 13px; color: #555; margin-bottom: 10px; }
.fa-panel input, .fa-panel select {
    display: block; width: 100%; margin-top: 4px; padding: 8px; border: 1px solid #ccc;
    border-radius: 4px; box-sizing: border-box; font-size: 16px; /* 16px prevents iOS auto-zoom on focus */
}
.fa-panel-columns { display: grid; grid-template-columns: 1fr 1.3fr; gap: 20px; }
.fa-panel-row { display: flex; gap: 10px; flex-wrap: wrap; }
.fa-panel-row label { flex: 1; min-width: 110px; }
.fa-room-checkboxes { max-height: 220px; overflow-y: auto; -webkit-overflow-scrolling: touch; border: 1px solid #ddd; border-radius: 4px; padding: 8px; margin: 4px 0 10px; }
.fa-room-checkbox { display: flex; align-items: center; gap: 8px; font-size: 14px; color: #333; margin-bottom: 8px; min-height: 24px; }
.fa-room-checkbox input { width: 20px; height: 20px; margin: 0; flex-shrink: 0; }
#fa-repeat-section { border: 1px solid #eee; border-radius: 4px; padding: 10px; margin-bottom: 10px; }
.fa-panel-status { font-size: 12px; padding: 8px 10px; border-radius: 4px; margin-bottom: 12px; }
.fa-panel-status.fa-ok { background: #e1f5ee; color: #085041; }
.fa-panel-status.fa-conflict { background: #faece7; color: #712b13; }
.fa-panel-actions { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.fa-btn-danger { color: #a32d2d; border-color: #a32d2d; }
.fa-btn-danger:hover { background: #faece7; }
.fa-btn-disabled { opacity: 0.65; cursor: default; }

@media (max-width: 560px) {
    .fa-panel-columns { grid-template-columns: 1fr; }
    .fa-panel-actions { justify-content: stretch; }
    .fa-panel-actions .fa-btn { flex: 1; text-align: center; }
    .fa-panel-actions span[style] { display: none; } /* the flex spacer isn't needed once buttons stack full-width */
}

@media (max-width: 480px) {
    .fa-week-grid, .fa-month-grid { grid-template-columns: minmax(70px, 130px) repeat(var(--fa-cols), minmax(var(--fa-daycol-min, 0), 1fr)); min-width: 380px; }
    .fa-daylabel { font-size: 10px; }
    .fa-roomname { font-size: 11px; }
    .fa-controls { gap: 10px; }
    .fa-new-booking { margin-left: 0; width: 100%; text-align: center; }
}
