.tc-modal-open { overflow: hidden; }
.tc-overlay { position: fixed; inset: 0; z-index: 15020; display: grid; place-items: center; padding: max(12px,env(safe-area-inset-top)) 12px max(12px,env(safe-area-inset-bottom)); background: #12211bcc; }
.tc-dialog { width: min(680px,100%); max-height: calc(100dvh - 24px); display: flex; flex-direction: column; margin: 0; border-radius: 8px; overflow: hidden; background: #fff; color: #182b26; box-shadow: 0 20px 80px #0004; font-family: inherit; }
.tc-dialog header { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 20px 22px; border-bottom: 1px solid #dce6e1; }
.tc-eyebrow { color: #596e66; font-size: 12px; font-weight: 700; }
.tc-dialog h2 { margin: 4px 0; font-size: 26px; line-height: 1.2; letter-spacing: 0; overflow-wrap: anywhere; }
.tc-dialog header span { font-size: 12px; color: #586b63; }
.tc-dialog button { font-family: inherit; cursor: pointer; touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
.tc-dialog button:focus-visible { outline: 3px solid #2c79c7; outline-offset: 2px; }
.tc-close { width: 44px; height: 44px; flex: 0 0 44px; border: 1px solid #cfdad4; border-radius: 6px; background: #fff; color: #334b40; font-size: 26px; }
.tc-scroll { overflow: auto; overscroll-behavior: contain; min-height: 0; padding: 0 22px; }
.tc-groups { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 0 24px; }
.tc-group { padding: 19px 0; min-width: 0; border-bottom: 1px solid #e0e8e3; }
.tc-group-title { display: flex; justify-content: space-between; align-items: center; gap: 8px; font-size: 14px; margin-bottom: 12px; }
.tc-group-title strong { min-width: 0; overflow-wrap: anywhere; }
.tc-group-title output { flex-shrink: 0; color: #65766c; font-variant-numeric: tabular-nums; font-size: 12px; }
.tc-slots { display: grid; grid-template-columns: repeat(auto-fill,minmax(44px,1fr)); gap: 8px; }
.tc-slot { height: 48px; border: 1.5px solid #b5c6ba; border-radius: 7px; background: #f5f8f6; color: #526258; font-size: 18px; font-weight: 800; transition: background .12s ease, transform .1s ease; }
.tc-slot[aria-pressed="true"] { background: #16834d; border-color: #16834d; color: #fff; box-shadow: inset 0 -3px 0 #006634; }
.tc-slot:active { transform: scale(.93); }
.tc-none { margin-top: 8px; padding: 8px 0; min-height: 40px; font-size: 12px; border: 0; background: transparent; text-decoration: underline; color: #58665e; }
.tc-count-state { display: block; min-height: 18px; font-size: 11px; color: #236044; font-weight: 700; }
.tc-count-state.missing { color: #a33b2d; }
.tc-zero { display: block; padding: 9px 0; color: #617569; font-size: 13px; }
.tc-dialog footer { padding: 14px 22px 20px; border-top: 1px solid #dce6e1; background: #f8faf9; }
.tc-summary { min-height: 22px; color: #3d5447; font-size: 13px; font-weight: 700; }
.tc-error { margin: 4px 0; color: #b22929; font-size: 13px; }
.tc-footer-actions { display: grid; grid-template-columns: 90px minmax(0,1fr); gap: 10px; margin-top: 10px; }
.tc-back, .tc-submit { min-height: 48px; padding: 10px; border-radius: 7px; border: 1px solid #b8c8be; font-size: 14px; font-weight: 800; background: #fff; color: #344c3f; }
.tc-submit { border-color: #137349; background: #137349; color: #fff; }
.tc-submit:disabled { background: #dce6e0; border-color: #dce6e0; color: #62736a; cursor: default; }
.tc-setup { padding: 22px 0; line-height: 1.6; }
.tc-setup h3 { font-size: 17px; margin: 0; }
.tc-setup p { font-size: 14px; color: #607068; }
#towelAlerts { grid-column: 1 / -1; order: -1; width: 100%; min-width: 0; margin-bottom: 12px; border-top: 3px solid #c65c4b; border-bottom: 1px solid #dfdad8; background: #fff; color: #263c34; }
.tc-alert-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 6px; padding: 12px; background: #fff5f2; }
.tc-alert-head h3 { margin: 0; font-size: 14px; line-height: 1.4; }
.tc-alert-head > span { color: #a1352a; font-size: 11px; font-weight: 800; }
.tc-alert-list { max-height: 330px; overflow: auto; overscroll-behavior: contain; }
.tc-record { padding: 12px; border-bottom: 1px solid #e7e9e6; min-width: 0; }
.tc-record-head { display: flex; flex-wrap: wrap; gap: 6px 12px; align-items: center; justify-content: space-between; }
.tc-record-head strong { font-size: 14px; }
.tc-record-head span { font-size: 11px; color: #617067; overflow-wrap: anywhere; }
.tc-record-items { display: flex; flex-wrap: wrap; gap: 6px 14px; margin: 9px 0; font-size: 11px; line-height: 1.5; }
.tc-record-items span { overflow-wrap: anywhere; }
.tc-missing { color: #ac3027; font-weight: 600; }
.tc-record small { font-size: 11px; color: #5e7167; }
.tc-review { min-height: 40px; padding: 7px 12px; border: 1px solid #c7d5ca; border-radius: 5px; background: #fff; color: #305945; cursor: pointer; font-weight: 700; font-size: 12px; }
#towelAlerts summary { padding: 12px; cursor: pointer; font-size: 12px; color: #53645a; }
.tc-empty { margin: 0; padding: 14px 12px; font-size: 12px; color: #64736a; }
.v104-mode-preview.astra { background: #e7f4ec; border-left: 5px solid #16805a; }

/* Astra uses the existing room nodes and actions. It does not rebuild or reorder
   cards on timer ticks, photo updates, or screen resizing. */
body.v104-hk-astra.role-hk #page-hk_rooms, body.v104-hk-astra.role-head #page-hk_rooms { max-width: 960px !important; font-family: system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif !important; }
body.v104-hk-astra #page-hk_rooms .v84-o2-header { background: #fff !important; color: #183c2e !important; padding: 16px 0 !important; box-shadow: none !important; border-radius: 0 !important; border-bottom: 2px solid #1c7750; margin-bottom: 10px !important; }
body.v104-hk-astra #page-hk_rooms .v84-o2-shift { font-size: 20px; }
body.v104-hk-astra #page-hk_rooms .v84-o2-undo { background: #e3f0e7; color: #1b5539; border-radius: 6px; width: 44px; height: 44px; }
body.v104-hk-astra #page-hk_rooms .v84-o2-progress { background: #e2eae4; height: 5px; margin-top: 12px; }
body.v104-hk-astra #page-hk_rooms .v84-o2-progress > span { background: #219969; transition: none; }
body.v104-hk-astra #page-hk_rooms .v85-tabs { border-radius: 0 !important; background: #fff !important; border-bottom: 1px solid #d4e0d8 !important; padding: 0 !important; gap: 0 !important; }
body.v104-hk-astra #page-hk_rooms .v85-tabs .hk-subtab { border-radius: 0 !important; min-height: 46px !important; background: #fff !important; box-shadow: none !important; }
body.v104-hk-astra #page-hk_rooms .v85-tabs .hk-subtab.sel { color: #116743 !important; border-bottom: 3px solid #16805a !important; }
.astra-shift { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); padding: 14px 0; margin-bottom: 6px; border-bottom: 1px solid #d7e1da; }
.astra-shift > div { display: flex; flex-direction: column; gap: 5px; padding: 0 14px; border-right: 1px solid #d7e1da; }
.astra-shift > div:first-child { padding-left: 0; }
.astra-shift > div:last-child { border: 0; }
.astra-shift span { font-size: 11px; font-weight: 700; color: #65786c; }
.astra-shift strong { font-size: 24px; line-height: 1; font-variant-numeric: tabular-nums; color: #194d35; }
.astra-shift > div:nth-child(2) strong { color: #236fc1; }
body.v104-hk-astra #page-hk_rooms .v84-o2-list { display: flex !important; flex-direction: column !important; gap: 0 !important; }
body.v104-hk-astra #page-hk_rooms .v104-section { font-size: 12px !important; margin: 20px 0 8px !important; padding: 0 2px !important; color: #526d5b !important; }
body.v104-hk-astra #page-hk_rooms .hkc.v84-o2-card { display: block !important; width: 100% !important; min-height: 0 !important; border: 1px solid #d4dfd6 !important; border-left: 4px solid #9baaa0 !important; border-radius: 6px !important; margin: 0 0 8px !important; padding: 14px !important; background: #fff !important; color: #253b2d !important; box-shadow: none !important; overflow: visible !important; animation: none !important; }
body.v104-hk-astra #page-hk_rooms .hkc.v84-working { border-left-color: #267dd0 !important; background: #f7fbff !important; }
body.v104-hk-astra #page-hk_rooms .hkc.v84-rework, body.v104-hk-astra #page-hk_rooms .hkc.v84-priority { border-left-color: #cd493c !important; background: #fff8f5 !important; }
body.v104-hk-astra #page-hk_rooms .hkc.v84-clean { border-left-color: #228355 !important; background: #f2faf5 !important; }
body.v104-hk-astra #page-hk_rooms .hkc.v84-verified { border-left-color: #2a74b2 !important; background: #f1f8ff !important; }
body.v104-hk-astra #page-hk_rooms .hkc .v84-o2-card-top { display: grid !important; grid-template-columns: minmax(0,1fr) auto !important; gap: 10px !important; align-items: start !important; padding: 0 !important; }
body.v104-hk-astra #page-hk_rooms .hkc [data-rn] { display: flex !important; flex-direction: column !important; align-items: flex-start !important; gap: 5px !important; min-width: 0 !important; width: auto !important; grid-area: auto !important; }
body.v104-hk-astra #page-hk_rooms .hkc [data-rn] > div:first-child { display: flex !important; flex-wrap: wrap !important; justify-content: flex-start !important; align-items: center !important; gap: 8px !important; width: auto !important; height: auto !important; min-width: 0 !important; min-height: 36px !important; max-width: 100% !important; padding: 0 !important; border: 0 !important; background: transparent !important; box-shadow: none !important; border-radius: 0 !important; font-size: 26px !important; line-height: 1.2 !important; color: #263e2c !important; overflow-wrap: anywhere; }
body.v104-hk-astra #page-hk_rooms .hkc [data-rn] .sbg, body.v104-hk-astra #page-hk_rooms .hkc .hk-room-type-label { position: static !important; display: inline-flex !important; align-self: flex-start !important; grid-area: auto !important; margin: 0 !important; font-size: 11px !important; line-height: 1.4 !important; max-width: 100% !important; white-space: normal !important; overflow-wrap: anywhere !important; }
body.v104-hk-astra #page-hk_rooms .hkc .v84-o2-type { display: flex !important; grid-area: auto !important; min-width: 0 !important; width: auto !important; max-width: 140px !important; position: static !important; font-size: 11px !important; line-height: 1.4 !important; color: #506654 !important; text-align: right !important; overflow-wrap: anywhere !important; }
body.v104-hk-astra #page-hk_rooms .hkc .v84-o2-type > button { display: inline-block !important; min-height: 40px !important; min-width: 40px !important; }
body.v104-hk-astra #page-hk_rooms .v84-o2-queue-tag { display: none !important; }
body.v104-hk-astra #page-hk_rooms .v85-tick { position: static !important; font-size: 12px !important; letter-spacing: 0 !important; }
body.v104-hk-astra #page-hk_rooms .hkc .v84-o2-timer { position: static !important; display: block !important; margin: 8px 0 !important; padding: 0 !important; background: transparent !important; border: 0 !important; color: #235f95 !important; font-size: 12px !important; line-height: 22px !important; min-height: 22px !important; }
body.v104-hk-astra #page-hk_rooms [data-ts] { display: inline-block; min-width: 9ch; font-size: 16px !important; line-height: 22px !important; font-variant-numeric: tabular-nums; white-space: nowrap; }
body.v104-hk-astra #page-hk_rooms .hkc .v84-o2-action { display: block !important; width: 100% !important; margin: 12px 0 0 !important; }
body.v104-hk-astra #page-hk_rooms .hkc .v84-o2-action .btn { min-height: 44px !important; font-size: 13px !important; border-radius: 6px !important; white-space: normal !important; line-height: 1.4 !important; padding: 9px 12px !important; }
body.v104-hk-astra #page-hk_rooms .hkc .v84-o2-action > .btn { width: 100% !important; }
body.v104-hk-astra #page-hk_rooms .hkc .hk-action-split { display: grid !important; grid-template-columns: minmax(0,1fr) auto !important; gap: 8px !important; }
body.v104-hk-astra #page-hk_rooms .hkc .v84-o2-note { margin: 9px 0 0 !important; font-size: 12px !important; line-height: 1.5 !important; color: #475d4c !important; }
body.v104-hk-astra #page-hk_rooms .hkc .v83-stains-chip { flex: 0 0 auto !important; width: auto !important; height: auto !important; min-height: 36px !important; padding: 7px 10px !important; border-radius: 6px !important; background: #244b3a !important; font-size: 11px !important; white-space: nowrap !important; }
body.v104-hk-astra #page-hk_rooms .v82-card-extra { display: flex !important; flex-wrap: wrap !important; gap: 6px !important; position: static !important; margin-top: 8px !important; }
body.v104-hk-astra #page-hk_rooms .v82-pill { max-width: 100%; white-space: normal; overflow-wrap: anywhere; }
body.v104-hk-astra #page-verify .card { border-radius: 6px !important; box-shadow: none !important; border-top: 3px solid #21835a !important; }
body.v104-hk-astra #page-verify.v84-o2-verify-page > .v84-o2-verify-head { padding: 16px 0 !important; background: #fff !important; color: #194d35 !important; border-radius: 0 !important; border-bottom: 2px solid #21835a; }
body.v104-hk-astra #page-verify .v84-o2-verify-head h2 { color: #194d35 !important; font-size: 20px !important; line-height: 1.4 !important; }
body.v104-hk-astra #page-verify .btn { min-height: 44px; border-radius: 6px; white-space: normal; }
@media (max-width: 540px) {
  .tc-dialog { max-height: calc(100dvh - 24px); }
  .tc-dialog header { padding: 14px 16px; }
  .tc-scroll { padding: 0 16px; }
  .tc-groups { grid-template-columns: minmax(0,1fr); }
  .tc-group { padding: 14px 0 10px; }
  .tc-dialog footer { padding: 12px 16px 16px; }
  .tc-dialog h2 { font-size: 22px; }
  .tc-slot { height: 46px; }
  body.v104-hk-astra #page-hk_rooms .hkc.v84-o2-card { padding: 12px !important; }
  body.v104-hk-astra #page-hk_rooms .hkc .v84-o2-type { max-width: 100px !important; }
}
@media (prefers-reduced-motion: reduce) { .tc-slot { transition: none; } }
