/* tasks/064 — Front Office daily Arrivals & Departures day sheet. Grouped-by-transfer
   tables with client-side sort / check-in filter / column toggle. Tokens only (no naked
   hex, no off-scale type); @media print drops the app chrome for the desk copy. */

.hos-ds-controls { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 18px; }
.hos-ds-datenav { display: inline-flex; align-items: center; gap: 4px; background: var(--surface); border: 1px solid var(--hairline-strong); border-radius: var(--radius); padding: 3px; }
.hos-ds-datenav b { font-family: var(--font-mono); font-size: var(--text-sm); padding: 0 6px; }
.hos-ds-datenav .hos-ds-tm { font-size: var(--text-2xs); font-weight: 700; color: var(--accent-strong); background: var(--accent-soft); border-radius: var(--radius-sm); padding: 2px 6px; }
.hos-ds-spring { flex: 1; }
.hos-ds-colwrap { position: relative; }

/* Summary KPIs use the gem's .os-stat-card-grid / .os-stat-card (rubric rule 4);
   only the "needs attention" value tint is HotelOS-domain. */
[data-controller~="day-sheet"] .os-stat-card-grid { margin-bottom: 20px; }
@media (max-width: 1000px) { [data-controller~="day-sheet"] .os-stat-card-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }}
.hos-ds-tile--alert .os-stat-card-value { color: var(--status-briefing-fg); }

/* column menu */
.hos-ds-colmenu { position: absolute; top: 40px; right: 0; z-index: 30; width: 460px; max-width: 92vw; background: var(--surface); border: 1px solid var(--hairline); border-radius: var(--radius-lg); box-shadow: var(--shadow-lg); padding: 14px 16px; }
.hos-ds-colmenu[hidden] { display: none; }
.hos-ds-colmenu h4 { margin: 0 0 10px; font-size: var(--text-sm); font-weight: 600; }
.hos-ds-colgrid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 18px; }
.hos-ds-colopt { display: flex; align-items: center; gap: 8px; font-size: var(--text-sm); cursor: pointer; }
.hos-ds-colopt input { width: 15px; height: 15px; accent-color: var(--accent); }

/* section card */
.hos-ds-card { margin-bottom: 22px; overflow: visible; }
.hos-ds-card__h { display: flex; align-items: center; gap: 10px; padding: 14px 18px; border-bottom: 1px solid var(--hairline); flex-wrap: wrap; }
.hos-ds-card__h .hos-ds-t { font-size: var(--text-md); font-weight: 600; }
.hos-ds-count { font-family: var(--font-mono); font-size: var(--text-2xs); font-weight: 700; color: var(--muted); background: var(--surface-alt); border-radius: var(--radius-pill); padding: 2px 9px; }
/* Status facets are gem .os-filter-btn--pill buttons (rule 6); only the row's
   right-alignment and the count badge are local. */
.hos-ds-filter { margin-left: auto; gap: 6px; display: inline-flex; }
.hos-ds-filter__n { font-family: var(--font-mono); font-size: var(--text-2xs); color: var(--muted-2); }
.os-filter-btn.is-on .hos-ds-filter__n { color: var(--accent); }

/* transfer group band */
.hos-ds-grp { display: flex; align-items: center; gap: 9px; padding: 9px 18px; background: var(--surface-alt); border-top: 1px solid var(--hairline); border-bottom: 1px solid var(--hairline); }
.hos-ds-grp__n { font-size: var(--text-xs); font-weight: 700; }
.hos-ds-grp__sub { font-size: var(--text-xs); color: var(--muted); }
.hos-ds-grp__ct { margin-left: auto; font-family: var(--font-mono); font-size: var(--text-xs); font-weight: 700; color: var(--muted); }
.hos-ds-grp--chase { background: var(--status-briefing-bg); border-color: var(--status-briefing-bg); }
.hos-ds-grp--chase .hos-ds-grp__n { color: var(--status-briefing-fg); }

/* Table shell is the gem's .os-table-wrap + .os-table--compact (rubric rule 3).
   Only the day sheet's own sortable-header affordance is local. */
.hos-ds-card .os-table thead th { white-space: nowrap; cursor: pointer; user-select: none; }
.hos-ds-card .os-table thead th:hover { color: var(--muted); }
.hos-ds-card .os-table thead th .hos-ds-ar { opacity: 0; margin-left: 3px; }
.hos-ds-card .os-table thead th:hover .hos-ds-ar { opacity: .5; }
.hos-ds-card .os-table thead th.hos-ds-sactive { color: var(--accent-strong); }
.hos-ds-card .os-table thead th.hos-ds-sactive .hos-ds-ar { opacity: 1; }
.hos-ds-card .os-table tbody td { vertical-align: top; }
.hos-ds-row--noshow td { opacity: .6; }
.hos-ds-mono { font-family: var(--font-mono); font-variant-numeric: tabular-nums; }
.hos-ds-sub { font-size: var(--text-2xs); color: var(--muted-2); font-family: var(--font-mono); margin-top: 1px; }
.hos-ds-name { font-weight: 600; }
.hos-ds-dim { color: var(--muted); }
.hos-ds-tba { color: var(--status-briefing-fg); font-weight: 600; }
.hos-ds-empty { padding: 20px; text-align: center; color: var(--muted-2); font-size: var(--text-sm); }

/* status */
.hos-ds-stat { display: inline-flex; align-items: center; gap: 4px; font-size: var(--text-2xs); font-weight: 700; }
.hos-ds-stat svg { flex: none; }
.hos-ds-stat--expected { color: var(--muted-2); }
.hos-ds-stat--arrived { color: var(--status-confirmed-fg); }
.hos-ds-stat--no_show { color: var(--status-cancelled-fg); }

.hos-ds-money-ok { color: var(--status-confirmed-fg); font-weight: 600; }
.hos-ds-money-due { color: var(--status-briefing-fg); font-weight: 600; }

/* optional columns hidden until toggled on */
[data-col].hos-ds-off { display: none; }

/* print: drop the app chrome + interactive controls, keep the tables */
@media print {
  .diveos-sidebar, .diveos-hamburger, .hos-ds-controls, .hos-ds-filter, .hos-ds-colmenu, .hos-ds-colwrap { display: none !important; }
  .diveos-main, .diveos-content { padding: 0 !important; margin: 0 !important; }
  .hos-ds-card { box-shadow: none; border: 1px solid var(--hairline); break-inside: avoid; }
  }