.tape-chart-layout{display:grid;grid-template-columns:1fr minmax(240px,280px);grid-gap:1rem;gap:1rem;align-items:start;--tape-chart-row-h:34px;--tape-chart-cell-w:40px;--tape-chart-room-w:76px}.tape-chart-main{min-width:0}.tape-chart-toolbar{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem}.tape-chart-title-area h2{margin:0 0 .25rem}.tape-chart-title-area p{margin:0}.tape-chart-nav{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.tape-chart-date-nav{display:inline-flex;align-items:stretch;border:1px solid var(--border);border-radius:var(--radius-md,8px);background:var(--ph-surface-card,var(--bg-elevated,var(--bg)));box-shadow:var(--shadow-sm,0 1px 2px rgb(0 0 0/6%));overflow:hidden}.tape-chart-date-nav.is-loading{opacity:.72}.tape-chart-date-nav-btn{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:2.25rem;min-height:2.5rem;padding:0;border:none;border-right:1px solid var(--border);background:transparent;color:var(--text-secondary,var(--text-muted));font-size:.95rem;line-height:1;cursor:pointer;transition:background .15s,color .15s}.tape-chart-date-nav-btn:last-of-type{border-right:none;border-left:1px solid var(--border)}.tape-chart-date-nav-btn:hover:not(:disabled){background:color-mix(in srgb,var(--ph-secondary,var(--accent)) 8%,transparent);color:var(--ph-secondary,var(--accent))}.tape-chart-date-nav-btn:disabled{opacity:.45;cursor:not-allowed}.tape-chart-date-nav-range{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.05rem;min-width:9.5rem;padding:.35rem 1rem;text-align:center}.tape-chart-date-nav-range-primary{font-size:.875rem;font-weight:600;color:var(--text);line-height:1.2;white-space:nowrap}.tape-chart-date-nav-range-sub{font-size:.6875rem;font-weight:500;color:var(--text-muted,var(--muted));line-height:1.2;white-space:nowrap}.tape-chart-date-nav-today{flex-shrink:0;min-height:2.5rem;padding:.35rem .75rem;border:1px solid color-mix(in srgb,var(--ph-secondary,var(--accent)) 35%,var(--border));border-radius:var(--radius-md,8px);background:color-mix(in srgb,var(--ph-secondary,var(--accent)) 8%,transparent);color:var(--ph-secondary,var(--accent));font-size:.8125rem;font-weight:600;font-family:inherit;line-height:1.2;cursor:pointer;white-space:nowrap;transition:background .15s,border-color .15s}.tape-chart-date-nav-today:hover:not(:disabled){background:color-mix(in srgb,var(--ph-secondary,var(--accent)) 14%,transparent);border-color:color-mix(in srgb,var(--ph-secondary,var(--accent)) 55%,var(--border))}.tape-chart-date-nav-today:disabled{opacity:.45;cursor:not-allowed}.tape-chart-legend{display:flex;flex-wrap:wrap;gap:1rem;margin-bottom:.75rem;font-size:.8rem}.tape-chart-legend-item{display:flex;align-items:center;gap:.35rem}.tape-chart-legend-swatch{width:12px;height:12px;border-radius:2px}.swatch-hold{background:var(--ph-warning,#d97706)}.swatch-confirmed{background:var(--accent,#2563eb)}.swatch-checked-in{background:var(--ph-success,#16a34a)}.swatch-checked-out{background:var(--text-muted,#6b7280)}.tape-chart-drag-hint{margin:0 0 .75rem;font-size:.8rem}.tape-chart-scrollable{overflow:auto;max-height:min(70vh,720px);border:1px solid var(--border);border-radius:var(--radius-md,8px)}.tape-chart-table{width:max-content;min-width:100%;border-collapse:collapse;table-layout:fixed;font-size:.75rem}.tape-chart-room-col{position:-webkit-sticky;position:sticky;left:0;z-index:2;background:var(--bg-elevated,var(--bg));width:var(--tape-chart-room-w);min-width:var(--tape-chart-room-w);max-width:var(--tape-chart-room-w);padding:0 .4rem;border-right:1px solid var(--border);border-bottom:1px solid var(--border);text-align:left;vertical-align:middle;height:var(--tape-chart-row-h);box-sizing:border-box;overflow:hidden}.tape-chart-date-header.tape-chart-room-col{border-bottom:1px solid var(--border);z-index:4}.tape-chart-date-col{width:var(--tape-chart-cell-w);min-width:var(--tape-chart-cell-w);max-width:var(--tape-chart-cell-w);padding:.15rem 0;text-align:center;border-bottom:1px solid var(--border);box-sizing:border-box}.tape-chart-date-header{position:-webkit-sticky;position:sticky;top:0;z-index:3;background:var(--bg-elevated,var(--bg));font-weight:600;height:38px}.tape-chart-date-day{display:block;font-size:.85rem;line-height:1.1}.tape-chart-date-name{display:block;font-size:.6rem;color:var(--text-muted);text-transform:uppercase;line-height:1.1}.tape-chart-date-header.is-today{background:color-mix(in srgb,var(--accent) 12%,var(--bg))}.tape-chart-date-header.is-weekend{background:color-mix(in srgb,var(--text-muted) 8%,var(--bg-elevated))}.tape-chart-row-group td{padding:.25rem .5rem;font-weight:600;font-size:.7rem;background:var(--bg-muted,#f3f4f6);border-bottom:1px solid var(--border);height:26px}.tape-chart-unassigned-group td{background:color-mix(in srgb,var(--ph-warning,#d97706) 12%,var(--bg-muted,#f3f4f6))}.tape-chart-room-row,.tape-chart-unassigned-row{height:var(--tape-chart-row-h)}.tape-chart-room-row:nth-child(even of .tape-chart-room-row) .tape-chart-bar-track,.tape-chart-room-row:nth-child(even of .tape-chart-room-row) .tape-chart-room-col{background:color-mix(in srgb,var(--border) 10%,var(--bg-elevated,var(--bg)))}.tape-chart-unassigned-row:nth-child(even of .tape-chart-unassigned-row) .tape-chart-bar-track,.tape-chart-unassigned-row:nth-child(even of .tape-chart-unassigned-row) .tape-chart-room-col{background:color-mix(in srgb,var(--ph-warning,#d97706) 6%,var(--bg-elevated,var(--bg)))}.tape-chart-unassigned-row th{border-left:3px dashed var(--ph-warning,#d97706)}.tape-chart-room-row:hover .tape-chart-bar-track,.tape-chart-room-row:hover .tape-chart-room-col{background:color-mix(in srgb,var(--accent) 6%,var(--bg-elevated,var(--bg)))}.tape-chart-room-row.drag-over .tape-chart-bar-track,.tape-chart-room-row.drag-over .tape-chart-room-col{background:color-mix(in srgb,var(--accent) 12%,var(--bg-elevated,var(--bg)))}.tape-chart-room-label{display:flex;flex-direction:column;justify-content:center;gap:0;min-width:0;line-height:1.15}.tape-chart-room-number{font-weight:700;font-size:.78rem}.tape-chart-room-number,.tape-chart-room-type{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tape-chart-room-type{font-size:.6rem;color:var(--text-muted)}.tape-chart-bar-track{padding:0;vertical-align:top;height:var(--tape-chart-row-h);overflow:hidden;border-bottom:1px solid var(--border);background:var(--bg-elevated,var(--bg))}.tape-chart-bar-track-inner{position:relative;width:100%;height:var(--tape-chart-row-h);flex-shrink:0}.tape-chart-grid-row{display:grid;height:var(--tape-chart-row-h)}.tape-chart-grid-cell{border-right:1px solid color-mix(in srgb,var(--border) 65%,transparent);border-bottom:1px solid color-mix(in srgb,var(--border) 65%,transparent);height:var(--tape-chart-row-h);box-sizing:border-box}.tape-chart-grid-cell.is-today-cell{background:color-mix(in srgb,var(--accent) 6%,transparent)}.tape-chart-grid-cell.is-weekend-cell{background:color-mix(in srgb,var(--text-muted) 5%,transparent)}.tape-chart-bars-layer{position:absolute;inset:0;pointer-events:none}.tape-chart-bar-wrap{position:absolute;top:3px;height:calc(var(--tape-chart-row-h) - 6px);z-index:1;pointer-events:auto}.tape-chart-bar-wrap.is-resizing{z-index:3}.tape-chart-bar{position:relative;top:0;width:100%;height:100%;margin:0;padding:0;border:none;border-radius:3px;cursor:pointer;text-align:left;overflow:hidden;color:#fff;font-size:.65rem;pointer-events:auto;display:flex;align-items:stretch}.tape-chart-bar-body{flex:1 1;min-width:0;display:flex;align-items:center;padding:0 .3rem;cursor:-webkit-grab;cursor:grab}.tape-chart-bar-body:active{cursor:-webkit-grabbing;cursor:grabbing}.tape-chart-bar-handle{flex:0 0 8px;width:8px;cursor:ew-resize;position:relative;z-index:2;touch-action:none}.tape-chart-bar-handle--left{border-radius:3px 0 0 3px;background:linear-gradient(90deg,rgb(255 255 255/35%),rgb(255 255 255/0))}.tape-chart-bar-handle--right{border-radius:0 3px 3px 0;background:linear-gradient(270deg,rgb(255 255 255/35%),rgb(255 255 255/0))}.tape-chart-bar.is-resizing{opacity:.92;box-shadow:0 0 0 2px rgb(255 255 255/55%)}.tape-chart-bar:hover{filter:brightness(1.08);box-shadow:0 1px 3px rgb(0 0 0/18%);z-index:2}.tape-chart-bar-unassigned{border:1px dashed rgb(255 255 255/45%)}.tape-chart-bar.bar-hold{background:var(--ph-warning,#d97706)}.tape-chart-bar.bar-confirmed{background:var(--accent,#2563eb)}.tape-chart-bar.bar-checked-in{background:var(--ph-success,#16a34a)}.tape-chart-bar.bar-checked-out{background:var(--text-muted,#6b7280)}.tape-chart-bar-label{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600;width:100%}.tape-chart-sidebar{position:-webkit-sticky;position:sticky;top:1rem}.tape-chart-unassigned-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.tape-chart-unassigned-item{display:flex;flex-direction:column;align-items:flex-start;gap:.15rem;width:100%;padding:.5rem .65rem;border:1px dashed var(--border);border-radius:var(--radius-md,8px);background:var(--bg);cursor:-webkit-grab;cursor:grab;text-align:left}.tape-chart-unassigned-item:hover{border-color:var(--accent);background:var(--bg-elevated)}.tape-chart-block-actions{margin-top:1.25rem;padding-top:1rem;border-top:1px solid var(--border)}@media (max-width:960px){.tape-chart-layout{grid-template-columns:1fr}.tape-chart-sidebar{position:static}}.fo-view-toggle{display:flex;gap:.5rem;margin-bottom:1rem}.fo-view-toggle .btn.active{background:var(--accent);color:#fff;border-color:var(--accent)}.room-availability-layout{display:flex;flex-direction:column;gap:1rem}.room-availability-toolbar{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem}.room-availability-title-area h2{margin:0 0 .25rem}.room-availability-title-area p{margin:0;max-width:36rem}.room-availability-controls{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.75rem}.room-availability-filter{margin:0;min-width:11rem}.room-availability-filter label{display:block;margin-bottom:.25rem;font-size:.75rem;font-weight:600;color:var(--text-muted)}.room-availability-filter select{width:100%;min-height:2.5rem;padding:.35rem .5rem;border:1px solid var(--border);border-radius:var(--radius-md,8px);background:var(--ph-surface-card,var(--bg));font-family:inherit;font-size:.8125rem}.room-availability-scroll{display:flex;flex-direction:column;gap:1rem}.room-availability-scroll.is-loading{opacity:.72}.room-availability-block{border:1px solid var(--border);border-radius:var(--radius-md,8px);overflow:hidden;background:var(--ph-surface-card,var(--bg))}.room-availability-block-header{padding:.45rem .75rem;background:color-mix(in srgb,var(--ph-secondary,var(--accent)) 10%,var(--bg-muted,#f3f4f6));border-bottom:1px solid var(--border)}.room-availability-block-title{margin:0;font-size:.875rem;font-weight:700;display:flex;align-items:baseline;gap:.5rem}.room-availability-block-code{font-size:.6875rem;font-weight:600;color:var(--text-muted);text-transform:uppercase}.room-availability-table-wrap{overflow-x:auto}.room-availability-table{width:100%;min-width:max-content;border-collapse:collapse;font-size:.8125rem}.room-availability-table td,.room-availability-table th{border:1px solid color-mix(in srgb,var(--border) 80%,transparent);padding:.35rem .45rem;text-align:center;vertical-align:middle}.room-availability-metric-col{position:-webkit-sticky;position:sticky;left:0;z-index:2;min-width:6.5rem;max-width:8rem;text-align:left!important;font-weight:600;background:var(--ph-surface,var(--bg-elevated,var(--bg)));box-shadow:2px 0 0 var(--border)}.room-availability-date-col{min-width:2.5rem;font-weight:600;background:var(--ph-surface-container,var(--bg-muted))}.room-availability-date-col.is-today{background:color-mix(in srgb,var(--accent) 12%,var(--bg-muted))}.room-availability-date-col.is-weekend .room-availability-date-day,.room-availability-date-col.is-weekend .room-availability-date-name{color:var(--ph-danger,#dc2626)}.room-availability-date-day{display:block;font-size:.85rem;line-height:1.1}.room-availability-date-name{display:block;font-size:.6rem;color:var(--text-muted);text-transform:uppercase;line-height:1.1}.room-availability-cell{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.room-availability-cell.is-high{background:rgba(34,197,94,.12);font-weight:600}.room-availability-cell.is-low{background:rgba(245,158,11,.14);font-weight:600}.room-availability-cell.is-none{background:rgba(239,68,68,.1);color:var(--ph-danger,#dc2626);font-weight:700}.room-availability-footnote{margin:0}.revenue-dashboard{margin-bottom:1.25rem}.revenue-dashboard-header{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1rem}.revenue-dashboard-header h2{margin:0 0 .25rem}.revenue-dashboard-header p{margin:0}.revenue-dashboard-period{display:flex;flex-wrap:wrap;gap:.35rem}.revenue-dashboard-range{margin:0 0 .85rem}.revenue-kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(10rem,1fr));grid-gap:.75rem;gap:.75rem;margin-bottom:1rem}.revenue-kpi-card{padding:.75rem .85rem;border:1px solid var(--border);border-radius:var(--radius-md,8px);background:var(--ph-surface-container-low,var(--bg-muted))}.revenue-kpi-label{display:block;font-size:.72rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.02em;margin-bottom:.25rem}.revenue-kpi-value{display:block;font-size:1.05rem;line-height:1.2}.revenue-daily-table-wrap{margin-top:.25rem}.revenue-footnote{margin:.75rem 0 0}.pickup-chart{margin-bottom:1.25rem}.pickup-chart-header{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1rem}.pickup-chart-header h2{margin:0 0 .25rem}.pickup-chart-header p{margin:0}.pickup-chart-controls{display:flex;flex-direction:column;gap:.5rem;align-items:flex-end}.pickup-chart-control-group{display:flex;flex-wrap:wrap;gap:.35rem;align-items:center}.pickup-chart-control-label{font-size:.72rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.02em;margin-right:.25rem}.pickup-chart-range{margin:0 0 .85rem}.pickup-kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(9.5rem,1fr));grid-gap:.75rem;gap:.75rem;margin-bottom:.85rem}.pickup-kpi-card{padding:.75rem .85rem;border:1px solid var(--border);border-radius:var(--radius-md,8px);background:var(--ph-surface-container-low,var(--bg-muted))}.pickup-kpi-label{display:block;font-size:.72rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.02em;margin-bottom:.25rem}.pickup-kpi-value{display:block;font-size:.95rem;line-height:1.25}.pickup-chart-body{--pickup-bars-height:14rem;--pickup-x-height:2.35rem;border:1px solid var(--border);border-radius:var(--radius-md,8px);background:var(--ph-surface-container-lowest,var(--bg));padding:1rem .85rem 1.15rem}.pickup-legend{display:flex;flex-wrap:wrap;gap:1rem;margin-bottom:.85rem;font-size:.8rem;color:var(--text-muted)}.pickup-legend-item{display:inline-flex;align-items:center;gap:.35rem}.pickup-legend-swatch{width:.75rem;height:.75rem;border-radius:2px}.pickup-legend-swatch--otb{background:var(--primary,#2563eb)}.pickup-legend-swatch--pickup{background:var(--success,#16a34a)}.pickup-chart-plot{display:grid;grid-template-columns:2.5rem 1fr 1.85rem;grid-gap:.5rem;gap:.5rem;align-items:stretch}.pickup-chart-plot.is-loading{opacity:.55}.pickup-y-axis{display:flex;flex-direction:column;justify-content:space-between;height:calc(var(--pickup-bars-height) * .7);align-self:start;font-size:.65rem;font-weight:500;color:var(--text-muted);text-align:right;line-height:1;padding-right:.15rem}.pickup-y-tick{display:block}.pickup-pickup-axis{display:flex;flex-direction:column;justify-content:space-between;height:calc(var(--pickup-bars-height) * .3);align-self:end;margin-bottom:var(--pickup-x-height);font-size:.65rem;font-weight:500;color:var(--success,#16a34a);text-align:left;line-height:1;padding-left:.15rem}.pickup-plot-area{position:relative;min-width:0}.pickup-plot-scroll{overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;padding-bottom:.15rem}.pickup-plot-inner{min-width:max(100%,calc(var(--day-count, 30) * 1.65rem));padding:0 .15rem}.pickup-grid-lines{position:absolute;top:0;left:0;right:0;height:calc(var(--pickup-bars-height) * .7);pointer-events:none;z-index:0}.pickup-grid-line{position:absolute;left:0;right:0;height:0;border-top:1px dashed color-mix(in srgb,var(--border) 85%,transparent)}.pickup-bars{position:relative;z-index:1;display:flex;align-items:stretch;gap:3px;height:var(--pickup-bars-height)}.pickup-bar-col{flex:1 0 1.5rem;min-width:1.5rem;max-width:2.5rem;display:flex;flex-direction:column;align-items:center;height:100%}.pickup-bar-bands{flex:1 1;width:100%;display:flex;flex-direction:column;min-height:0;gap:3px}.pickup-bar-band{position:relative;display:flex;align-items:flex-end;justify-content:center;min-height:0}.pickup-bar-band--occ{flex:0 0 70%;border-bottom:1px solid color-mix(in srgb,var(--border) 65%,transparent)}.pickup-bar-band--pickup{flex:1 1 30%;padding-top:.2rem}.pickup-bar{width:72%;min-height:0;border-radius:4px 4px 0 0;transition:height .2s ease}.pickup-bar--otb{background:linear-gradient(180deg,color-mix(in srgb,var(--primary,#2563eb) 92%,white),var(--primary,#2563eb));box-shadow:0 1px 0 color-mix(in srgb,var(--primary,#2563eb) 35%,transparent)}.pickup-bar--pickup{width:56%;background:linear-gradient(180deg,color-mix(in srgb,var(--success,#16a34a) 90%,white),var(--success,#16a34a));box-shadow:0 1px 0 color-mix(in srgb,var(--success,#16a34a) 35%,transparent)}.pickup-bar-value{position:absolute;top:0;left:50%;transform:translateX(-50%);font-size:.58rem;font-weight:700;color:var(--success,#16a34a);line-height:1;white-space:nowrap}.pickup-x-axis{display:flex;align-items:flex-start;gap:3px;height:var(--pickup-x-height);margin-top:.5rem;padding-top:.35rem;border-top:1px solid color-mix(in srgb,var(--border) 80%,transparent)}.pickup-x-tick{flex:1 0 1.5rem;min-width:1.5rem;max-width:2.5rem;text-align:center;font-size:.68rem;color:var(--text-muted);font-weight:500;line-height:1.2}.pickup-x-tick--hidden{visibility:hidden}.pickup-bar-col:hover .pickup-bar--otb,.pickup-bar-col:hover .pickup-bar--pickup{filter:brightness(1.06)}.pickup-table-section{margin-top:2rem;padding-top:1.35rem;border-top:1px solid var(--border)}.pickup-table-title{margin:0 0 .85rem;font-size:.9rem;font-weight:600;color:var(--text)}.pickup-table-wrap{max-height:16rem;overflow:auto}.pickup-footnote{margin:1rem 0 0}@media (max-width:640px){.pickup-chart-controls{align-items:flex-start;width:100%}.pickup-chart-body{--pickup-bars-height:12rem;--pickup-x-height:2.1rem}.pickup-chart-plot{grid-template-columns:2.15rem 1fr 1.5rem}.pickup-x-tick{font-size:.62rem}.pickup-table-section{margin-top:1.5rem;padding-top:1rem}}