/* ============================================================
   PAUBRASIL PMS v3 — GLOBAL STYLESHEET
   Struttura:
     1.  CSS Variables (design tokens)
     2.  Reset & Base
     3.  Navigation
     4.  Layout
     5.  Toolbar & Filter Panel
     6.  Buttons
     7.  Forms & Inputs
     8.  Tables (lista dati)
     9.  Status & Room Badges
     10. Calendario
     11. Autocomplete
     12. Today page
     13. Utilities & Alerts
   ============================================================ */


/* ============================================================
   1. CSS VARIABLES
   ------------------------------------------------------------
   I token vivono in assets/css/pms-tokens.css (caricato prima).
   Non ridefinire :root qui: modifica tipografia/colori lì.
   ============================================================ */


/* ============================================================
   2. RESET & BASE
   ============================================================ */

*, *::before, *::after { box-sizing: border-box; }

html {
  height: 100%;
}

body {
  font-family:  var(--font-base);
  font-size:    var(--font-size-base);
  color:        var(--color-text);
  background:   var(--color-bg);
  margin:       0;
  padding:      0;
  line-height:  1.5;
  -webkit-font-smoothing: antialiased;
}

/* Shell a tutta altezza: evita scroll doppio / salti tra le voci del menu */
.app-body {
  height:           100%;
  display:          flex;
  flex-direction:   column;
  overflow:         hidden;
  /* Evita «strisce» vuote tra tag (nodi testo): in flex creano flex item con altezza ≈ line-height */
  font-size:        0;
  line-height:      0;
}

.app-body > .main-nav {
  font-size:   var(--font-size-base);
  line-height: 1.5;
}

/* Più specifico di .page-container: annulla nodi testo tra toolbar e contenuto */
.app-body > .page-container {
  font-size:   0;
  line-height: 0;
}

a { color: var(--color-primary); text-decoration: none; }
a:hover { text-decoration: underline; }


/* ============================================================
   3. NAVIGATION — classi CSS (non più inline nel PHP)
   ============================================================ */

.main-nav {
  background:    linear-gradient(180deg, #0b3a63 0%, #082f52 100%);
  display:       flex;
  align-items:   center;
  padding:       0 var(--space-md);
  height:        var(--nav-height);
  gap:           2px;
  position:      relative;
  z-index:       1000;
  flex-shrink:   0;
  box-shadow:    0 2px 6px rgba(8,47,82,0.22);
  overflow:      visible;
  flex-wrap:     nowrap;
}

.nav-brand {
  display: inline-flex;
  align-items: stretch;
  align-self: stretch;
  height: 100%;
  margin-right: 14px;
  white-space: nowrap;
  flex-shrink: 0;
  line-height: 1;
  cursor: default;
  user-select: none;
}

.nav-brand__mark {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 100%;
  min-height: var(--nav-height);
  box-sizing: border-box;
  padding: 0 14px;
  border-radius: 0;
  background: var(--brand-mark-bg, #86efac);
  color: var(--brand-mark-color, #dc2626);
  font-size: var(--font-size-md);
  font-weight: 800;
  letter-spacing: 0.03em;
  line-height: 1;
}

.nav-item {
  display:         inline-flex;
  align-items:     center;
  gap:             4px;
  padding:         0 11px;
  height:          var(--nav-height);
  font-size: var(--font-size-base);
  font-weight:     400;
  color:           rgba(248,250,252,0.82);
  text-decoration: none;
  border-bottom:   3px solid transparent;
  background:      transparent;
  white-space:     nowrap;
  flex-shrink:     0;
  transition:      color var(--transition-fast), background var(--transition-fast);
}

.nav-item:hover {
  color:           #fff;
  background:      rgba(255,255,255,0.10);
  text-decoration: none;
}

.nav-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 18px;
  height: 18px;
  padding: 0 5px;
  margin-left: 5px;
  border-radius: 999px;
  background: #ef4444;
  color: #fff;
  font-size: 10px;
  font-weight: 800;
  line-height: 1;
  vertical-align: middle;
}

.today-guest-orders-alert {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 14px;
  align-items: center;
  margin: 0 0 14px;
  padding: 12px 14px;
  border-radius: 12px;
  background: #fef2f2;
  border: 1px solid #fecaca;
  color: #991b1b;
  font-size: 13px;
  line-height: 1.45;
}

.today-guest-orders-alert span { color: #7f1d1d; flex: 1 1 200px; }

.nav-item--secondary {
  color:      rgba(248,250,252,0.46);
  font-size:  var(--font-size-sm);
  padding:    0 8px;
  opacity:    .78;
}

.nav-item--secondary .nav-icon {
  opacity: .45;
}

.nav-item--secondary:hover {
  color:   rgba(248,250,252,0.92);
  opacity: 1;
}

.nav-item--active {
  font-weight:   600;
  color:         #fff;
  border-bottom-color: #bfdbfe;
  background:    rgba(255,255,255,0.15);
  opacity:       1;
}

.nav-icon { font-size: var(--font-size-rg); }
.nav-label { }

.nav-spacer {
  flex: 1 1 auto;
  min-width: 8px;
}

.main-nav .nav-dropdown {
  position: relative;
  flex-shrink: 0;
}

.main-nav .nav-dropdown > summary {
  list-style: none;
}

.main-nav .nav-dropdown > summary::-webkit-details-marker {
  display: none;
}

.main-nav .nav-dropdown__toggle {
  border: 0;
  cursor: pointer;
  font: inherit;
  appearance: none;
}

.main-nav .nav-dropdown__toggle::after {
  content: ' \25BE';
  font-size: 10px;
  opacity: 0.75;
}

.main-nav .nav-dropdown[open] > .nav-dropdown__toggle {
  color:         #fff;
  border-bottom-color: #bfdbfe;
  background:    rgba(255,255,255,0.15);
  opacity:       1;
}

.main-nav .nav-dropdown__menu {
  position: absolute;
  top: 100%;
  left: 0;
  z-index: 1100;
  min-width: 196px;
  margin: 0;
  padding: 6px 0 8px;
  background: #fff;
  border: 1px solid #cbd5e1;
  border-radius: 0 0 10px 10px;
  box-shadow: 0 12px 28px rgba(15, 23, 42, 0.18);
  display: none;
}
.main-nav .nav-dropdown--end .nav-dropdown__menu {
  left: auto;
  right: 0;
}
.main-nav .nav-dropdown__menu > button.nav-dropdown__item {
  width: 100%;
  box-sizing: border-box;
  border: 0;
  background: transparent;
  font: inherit;
  text-align: left;
  cursor: pointer;
  color: inherit;
}
.main-nav .nav-dropdown__menu > button.nav-dropdown__item:disabled {
  color: #94a3b8;
  cursor: not-allowed;
}

.main-nav .nav-dropdown[open] > .nav-dropdown__menu {
  display: block;
}

.main-nav .nav-dropdown__heading {
  margin: 0;
  padding: 6px 12px 4px;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: #64748b;
}

.main-nav .nav-dropdown__sep {
  height: 1px;
  margin: 4px 10px;
  background: #e2e8f0;
}

.main-nav .nav-dropdown__item {
  display: block;
  padding: 7px 12px;
  color: #0f172a;
  font-size: 12px;
  font-weight: 500;
  text-decoration: none;
  line-height: 1.35;
}

.main-nav .nav-dropdown__item:hover,
.main-nav .nav-dropdown__item:focus-visible {
  background: #f1f5f9;
  text-decoration: none;
  outline: none;
}

.main-nav .nav-dropdown__item.is-active {
  background: #eff6ff;
  color: #0b3a63;
  font-weight: 700;
}


/* ============================================================
   4. LAYOUT
   ============================================================ */

.page-container {
  padding:        0;
  flex:           1 1 auto;
  min-height:     0;
  overflow-y:     auto;
  overflow-x:     hidden;
  display:        flex;
  flex-direction: column;
  font-size:      0;
  line-height:    0;
}

.page-container > * {
  font-size:   var(--font-size-base);
  line-height: 1.5;
}

/* Area contenuto come Equipe (staff_employees): stesso margine/padding sotto la toolbar */
.page-body-scroll {
  flex:           1 1 auto;
  min-height:     0;
  overflow-y:     auto;
  overflow-x:     hidden;
  padding:        0 8px 6px;
  margin-top:     0;
}

.page-body-scroll--x {
  overflow-x:     auto;
}

/* Calendário: riempie lo spazio sotto la topbar senza max-height sul viewport */
.page-stack-fill {
  flex:           1 1 auto;
  min-height:     0;
  display:        flex;
  flex-direction: column;
  overflow:       hidden;
  margin-top:     8px;
  padding:        0 8px 8px;
}

.page-stack-fill .calendar-wrapper {
  flex:           1 1 auto;
  min-height:     0;
  max-height:     none;
}

.page-stack-fill .calendar-page-legend {
  flex-shrink: 0;
}

/* Wrapper interno per il padding nelle pagine normali */
.page-inner { padding: var(--space-md); }

.page-header {
  display:        flex;
  align-items:    center;
  justify-content: space-between;
  padding:        var(--space-sm) var(--space-md);
  background:     var(--color-bg-white);
  border-bottom:  1px solid var(--color-border);
  margin-bottom:  var(--space-md);
}

.page-title {
  font-size:   var(--font-size-lg);
  font-weight: 700;
  color:       var(--color-text);
  margin:      0;
}


/* ============================================================
   5. TOOLBAR & FILTER PANEL
   ============================================================ */

.toolbar {
  display:         flex;
  align-items:     center;
  justify-content: space-between;
  gap:             6px;
  padding:         0 var(--space-md) 4px;
  background:      linear-gradient(180deg, #f8fbff 0%, #eef6ff 100%);
  border-bottom:   1px solid #bfdbfe;
  min-height:      28px;
  flex-wrap:       wrap;
  position:        sticky;
  top:             0;
  z-index:         100;
  flex-shrink:     0;
}

.toolbar-left,
.toolbar-right {
  display:     flex;
  align-items: center;
  gap:         6px;
  flex-wrap:   wrap;
}

/* Bloco central (ex.: folha de ponto — funcionário / período + Atualizar) */
.toolbar-middle {
  display:      flex;
  align-items:  flex-end;
  flex-wrap:    wrap;
  gap:          var(--space-sm);
  flex:         1 1 280px;
  min-width:    0;
}

.staff-ts-toolbar-nav-form {
  display:        flex;
  flex-wrap:      wrap;
  align-items:    flex-end;
  gap:            10px;
  margin:         0;
}

/* Folha mensal: um único GET (filtros + botões); submit dentro do <form> */
.staff-ts-toolbar-nav-wrap {
  display:        flex;
  flex-wrap:      wrap;
  align-items:    flex-end;
  gap:            10px;
  margin:         0;
  flex:           1 1 auto;
  min-width:      0;
}

body.page-staff-timesheet-month .staff-ts-toolbar-nav-form--filters {
  flex:       0 0 auto;
  width:      auto;
  max-width:  100%;
}

/* Larguras compactas na barra da folha (nome continua visível ao abrir a lista) */
body.page-staff-timesheet-month .staff-ts-toolbar-nav-form--filters select.staff-ts-nav-select--employee {
  min-width:          8.5rem;
  max-width:          11.5rem;
  width:              min(11.5rem, 28vw);
  padding-inline:     var(--space-xs);
}

body.page-staff-timesheet-month .staff-ts-toolbar-nav-form--filters select.staff-ts-nav-select--year {
  min-width:       3.25rem;
  width:           3.75rem;
  max-width:       4rem;
  padding-inline:  var(--space-xs);
}

body.page-staff-timesheet-month .staff-ts-toolbar-nav-form--filters select.staff-ts-nav-select--month {
  min-width:       5.75rem;
  max-width:       8rem;
  width:           min(8rem, 22vw);
  padding-inline:  var(--space-xs);
}

/* ‹ › ao lado do select Mês — navegação rápida sem afastar da zona período */
body.page-staff-timesheet-month .staff-ts-toolbar-nav-form--filters .staff-ts-month-row {
  display:     flex;
  align-items: center;
  gap:         6px;
}

body.page-staff-timesheet-month .staff-ts-toolbar-nav-form--filters .staff-ts-month-row select.staff-ts-nav-select--month {
  flex:       1 1 auto;
  min-width:  5rem;
  max-width:  7.25rem;
  width:      auto;
}

body.page-staff-timesheet-month .staff-ts-toolbar-nav-form--filters .staff-ts-month-steppers {
  display:     inline-flex;
  flex-shrink: 0;
  gap:         2px;
}

body.page-staff-timesheet-month .staff-ts-toolbar-nav-form--filters .staff-ts-month-step-btn {
  min-width:     1.25rem;
  padding:       2px 3px;
  font-size:     .68rem;
  line-height:   1;
  font-weight:   400;
}

body.page-staff-timesheet-month .staff-ts-toolbar-nav-form--filters .filter-field label {
  display: none;
}

.staff-ts-toolbar-nav-form .filter-field {
  gap: 3px;
}

/* Feriados — barra: Ano + Atualizar + Fechar (mesmo critério da folha mensal) */
.staff-holidays-toolbar-bar .staff-holidays-toolbar-year input[type="number"] {
  width: 5.5rem;
  min-width: 4.5rem;
  max-width: 100%;
  box-sizing: border-box;
  padding: var(--space-xs) var(--space-sm);
  border: 1px solid var(--color-border-dark);
  border-radius: var(--radius-base);
  font-size: var(--font-size-base);
}

/* Feriados — bloco «Adicionar» alinhado a filter-field / filter-actions (produtos, listas) */
.staff-holidays-add-form {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 12px;
  max-width: 48rem;
  margin-bottom: 24px;
  padding: 12px 14px;
  background: #fff6db;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-base);
  box-sizing: border-box;
}

.staff-holidays-add-form .filter-field {
  margin: 0;
}

.staff-holidays-add-form .staff-holidays-add-desc {
  flex: 1 1 220px;
  min-width: 180px;
}

.staff-holidays-add-form .filter-actions {
  flex: 0 0 auto;
  margin-left: auto;
}

@media (max-width: 520px) {
  .staff-holidays-add-form .filter-actions {
    margin-left: 0;
    width: 100%;
  }
}

.staff-ts-toolbar-submit-after-filters {
  align-self: flex-end;
  flex-shrink: 0;
}

.staff-ts-toolbar-actions {
  display:     inline-flex;
  flex-wrap:   wrap;
  align-items: flex-end;
  gap:         6px;
}

body.page-staff-timesheet-month .staff-ts-toolbar-submit-after-filters,
body.page-staff-timesheet-month .staff-ts-toolbar-actions .btn {
  min-height:   1.55rem;
  padding:      3px 7px;
  font-size:    var(--font-size-xs);
  line-height:  1.25;
  font-weight:  500;
  align-items:  center;
}

body.page-staff-timesheet-month .staff-ts-toolbar-actions .reservation-save-flash {
  min-height:  1.55rem;
  margin:      0;
  padding:     3px 7px;
  display:     inline-flex;
  align-items: center;
  font-size:   var(--font-size-xs);
  line-height: 1.25;
}

.staff-ts-print-pdf-hint {
  font-size: var(--font-size-xs);
  color: var(--color-text-muted, #64748b);
  max-width: 22rem;
  line-height: 1.35;
}

body.page-staff-timesheet-month .toolbar {
  align-items: flex-end;
  background: linear-gradient(180deg, #eef6ff 0%, #dbeafe 100%);
  border-bottom: 3px solid #2563eb;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.65);
}

body.page-staff-timesheet-month .toolbar-left {
  flex:        1 1 auto;
  min-width:   0;
  align-items: flex-end;
}

.input-search {
  border:        1px solid var(--color-border-dark);
  border-radius: var(--radius-base);
  padding:       var(--space-xs) var(--space-sm);
  font-size:     var(--font-size-base);
  font-family:   var(--font-base);
  width:         220px;
  background:    var(--color-bg-white);
  color:         var(--color-text);
  transition:    border-color var(--transition-fast);
}

.input-search:focus {
  outline:    none;
  border-color: var(--color-primary);
  box-shadow: 0 0 0 2px rgba(37,99,235,0.12);
}

.toolbar select,
.toolbar input[type="date"] {
  border:        1px solid var(--color-border-dark);
  border-radius: var(--radius-base);
  padding:       var(--space-xs) var(--space-sm);
  font-size:     var(--font-size-base);
  font-family:   var(--font-base);
  background:    var(--color-bg-white);
  color:         var(--color-text);
  cursor:        pointer;
}

.filter-panel {
  display:               grid;
  grid-template-columns: minmax(220px, 1.8fr) minmax(120px, 1fr) minmax(100px, .9fr)
                         minmax(150px, 1fr) minmax(150px, 1fr) auto;
  gap:       8px;
  align-items: end;
  padding:   8px 10px;
  background: #fff6db;
  border:    1px solid var(--color-border);
  border-top: none;
}

.filter-field { display: flex; flex-direction: column; gap: 3px; }
.filter-field label { font-size: var(--font-size-sm); color: var(--color-text-muted); }
.filter-field input, .filter-field select { width: 100%; }

.filter-actions { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }

.toolbar-stats, .filter-stats {
  font-size:   var(--font-size-sm);
  color:       var(--color-text-muted);
  margin-left: 6px;
  white-space: nowrap;
}

/* js-filter-panel: nascosto di default, mostrato da JS */
.js-filter-panel {
  position: sticky;
  top:      var(--toolbar-height);
  z-index:  99;
  background: var(--color-bg-white);
}

/* Lista: filtros sempre visíveis + totais no rodapé */
.page-list-layout {
  display:        flex;
  flex-direction: column;
  flex:           1 1 auto;
  min-height:     0;
}

.list-filters-open {
  flex: 0 0 auto;
}

.filter-panel--list .filter-actions {
  white-space: nowrap;
}

/* Listas: filtros na mesma linha da toolbar */
body.page-reservations,
body.page-clients,
body.page-companies,
body.page-rooms,
body.page-products,
body.page-consumption,
body.page-payments,
body.page-reservation-requests,
body.page-reservations .toolbar,
body.page-clients .toolbar,
body.page-companies .toolbar,
body.page-rooms .toolbar,
body.page-products .toolbar,
body.page-consumption .toolbar,
body.page-payments .toolbar,
body.page-staff-employees .toolbar,
body.page-reservation-requests .toolbar,
body.page-guest-orders .toolbar {
  flex-wrap:       nowrap;
}

body.page-reservations .toolbar-left:empty,
body.page-clients .toolbar-left:empty,
body.page-companies .toolbar-left:empty,
body.page-rooms .toolbar-left:empty,
body.page-products .toolbar-left:empty,
body.page-consumption .toolbar-left:empty,
body.page-payments .toolbar-left:empty,
body.page-staff-employees .toolbar-left:empty,
body.page-reservation-requests .toolbar-left:empty,
body.page-guest-orders .toolbar-left:empty {
  display:         none;
}

body.page-reservations .toolbar-middle.toolbar-filters-list,
body.page-clients .toolbar-middle.toolbar-filters-list,
body.page-companies .toolbar-middle.toolbar-filters-list,
body.page-rooms .toolbar-middle.toolbar-filters-list,
body.page-products .toolbar-middle.toolbar-filters-list,
body.page-consumption .toolbar-middle.toolbar-filters-list,
body.page-payments .toolbar-middle.toolbar-filters-list,
body.page-staff-employees .toolbar-middle.toolbar-filters-list,
body.page-reservation-requests .toolbar-middle.toolbar-filters-list,
body.page-guest-orders .toolbar-middle.toolbar-filters-list {
  align-items:     center;
  align-self:      stretch;
  flex-wrap:       nowrap;
  flex:            1 1 auto;
  min-width:       0;
  gap:             5px;
}

body.page-reservations .filter-panel--toolbar,
body.page-clients .filter-panel--toolbar,
body.page-companies .filter-panel--toolbar,
body.page-rooms .filter-panel--toolbar,
body.page-products .filter-panel--toolbar,
body.page-consumption .filter-panel--toolbar,
body.page-payments .filter-panel--toolbar,
body.page-staff-employees .filter-panel--toolbar,
body.page-reservation-requests .filter-panel--toolbar {
  display:         flex;
  flex-wrap:       nowrap;
  align-items:     center;
  gap:             5px;
  margin:          0;
  padding:         0;
  background:      transparent;
  border:          none;
  width:           100%;
  min-width:       0;
}

body.page-reservations .filter-panel--toolbar .filter-field,
body.page-clients .filter-panel--toolbar .filter-field,
body.page-companies .filter-panel--toolbar .filter-field,
body.page-rooms .filter-panel--toolbar .filter-field,
body.page-products .filter-panel--toolbar .filter-field,
body.page-consumption .filter-panel--toolbar .filter-field,
body.page-payments .filter-panel--toolbar .filter-field,
body.page-staff-employees .filter-panel--toolbar .filter-field,
body.page-reservation-requests .filter-panel--toolbar .filter-field {
  flex:            0 0 auto;
  display:         block;
  margin:          0;
}

body.page-reservations .filter-panel--toolbar .filter-field label,
body.page-clients .filter-panel--toolbar .filter-field label,
body.page-companies .filter-panel--toolbar .filter-field label,
body.page-rooms .filter-panel--toolbar .filter-field label,
body.page-products .filter-panel--toolbar .filter-field label,
body.page-consumption .filter-panel--toolbar .filter-field label,
body.page-payments .filter-panel--toolbar .filter-field label,
body.page-staff-employees .filter-panel--toolbar .filter-field label,
body.page-reservation-requests .filter-panel--toolbar .filter-field label {
  display:         none;
}

body.page-reservations .filter-panel--toolbar .filter-field--search,
body.page-clients .filter-panel--toolbar .filter-field--search,
body.page-companies .filter-panel--toolbar .filter-field--search,
body.page-rooms .filter-panel--toolbar .filter-field--search,
body.page-products .filter-panel--toolbar .filter-field--search,
body.page-consumption .filter-panel--toolbar .filter-field--search,
body.page-payments .filter-panel--toolbar .filter-field--search,
body.page-staff-employees .filter-panel--toolbar .filter-field--search,
body.page-reservation-requests .filter-panel--toolbar .filter-field--search {
  flex:            1 1 88px;
  min-width:       72px;
  max-width:       140px;
}

body.page-reservations .filter-panel--toolbar .filter-field--search input,
body.page-clients .filter-panel--toolbar .filter-field--search input,
body.page-companies .filter-panel--toolbar .filter-field--search input,
body.page-rooms .filter-panel--toolbar .filter-field--search input,
body.page-products .filter-panel--toolbar .filter-field--search input,
body.page-consumption .filter-panel--toolbar .filter-field--search input,
body.page-payments .filter-panel--toolbar .filter-field--search input,
body.page-staff-employees .filter-panel--toolbar .filter-field--search input,
body.page-reservation-requests .filter-panel--toolbar .filter-field--search input {
  width:           100%;
}

body.page-reservations .filter-panel--toolbar .filter-field--select select,
body.page-clients .filter-panel--toolbar .filter-field--select select,
body.page-companies .filter-panel--toolbar .filter-field--select select,
body.page-rooms .filter-panel--toolbar .filter-field--select select,
body.page-products .filter-panel--toolbar .filter-field--select select,
body.page-consumption .filter-panel--toolbar .filter-field--select select,
body.page-payments .filter-panel--toolbar .filter-field--select select,
body.page-staff-employees .filter-panel--toolbar .filter-field--select select,
body.page-reservation-requests .filter-panel--toolbar .filter-field--select select,
body.page-reservations .filter-panel--toolbar .filter-field--status select,
body.page-clients .filter-panel--toolbar .filter-field--status select,
body.page-companies .filter-panel--toolbar .filter-field--status select,
body.page-products .filter-panel--toolbar .filter-field--status select,
body.page-consumption .filter-panel--toolbar .filter-field--status select,
body.page-payments .filter-panel--toolbar .filter-field--status select,
body.page-reservation-requests .filter-panel--toolbar .filter-field--status select {
  width:           86px;
}

body.page-reservations .filter-panel--toolbar .filter-field--room select,
body.page-consumption .filter-panel--toolbar .filter-field--room select,
body.page-payments .filter-panel--toolbar .filter-field--room select,
body.page-reservation-requests .filter-panel--toolbar .filter-field--room select {
  width:           150px;
  min-width:       150px;
}

body.page-reservations .filter-panel--toolbar .filter-field--date input,
body.page-consumption .filter-panel--toolbar .filter-field--date input,
body.page-payments .filter-panel--toolbar .filter-field--date input,
body.page-reservation-requests .filter-panel--toolbar .filter-field--date input {
  width:           108px;
  padding:         2px 4px;
}

body.page-reservations .filter-panel--toolbar .filter-field--balance select,
body.page-clients .filter-panel--toolbar .filter-field--balance select {
  width:           76px;
}

body.page-reservations .filter-panel--toolbar .filter-field--medium input,
body.page-reservations .filter-panel--toolbar .filter-field--medium select,
body.page-clients .filter-panel--toolbar .filter-field--medium input,
body.page-companies .filter-panel--toolbar .filter-field--medium input {
  width:           88px;
}

body.page-reservations .filter-panel--toolbar .filter-field--narrow select,
body.page-products .filter-panel--toolbar .filter-field--narrow select {
  width:           72px;
}

body.page-reservations .filter-panel--toolbar .filter-actions--toolbar,
body.page-clients .filter-panel--toolbar .filter-actions--toolbar,
body.page-companies .filter-panel--toolbar .filter-actions--toolbar,
body.page-rooms .filter-panel--toolbar .filter-actions--toolbar,
body.page-products .filter-panel--toolbar .filter-actions--toolbar,
body.page-consumption .filter-panel--toolbar .filter-actions--toolbar,
body.page-payments .filter-panel--toolbar .filter-actions--toolbar,
body.page-staff-employees .filter-panel--toolbar .filter-actions--toolbar,
body.page-reservation-requests .filter-panel--toolbar .filter-actions--toolbar {
  align-self:      center;
  margin-left:     2px;
  flex-shrink:     0;
}

/* Botões de filtro = mesma escala da toolbar das listas */
.filter-panel--list .filter-actions--toolbar {
  display:         flex;
  gap:             6px;
  align-items:     flex-end;
  align-self:      end;
  flex-wrap:       nowrap;
}

.filter-panel--list .filter-actions--toolbar .btn {
  padding:         3px 7px;
  font-size:       var(--font-size-xs);
  line-height:     1.2;
  min-height:      0;
  font-weight:     500;
}

.filter-panel--list .filter-actions--toolbar a.btn {
  display:         inline-flex;
  align-items:     center;
  text-decoration: none;
}

body.page-reservations .filter-panel--toolbar .filter-field input,
body.page-reservations .filter-panel--toolbar .filter-field select,
body.page-clients .filter-panel--toolbar .filter-field input,
body.page-clients .filter-panel--toolbar .filter-field select,
body.page-companies .filter-panel--toolbar .filter-field input,
body.page-companies .filter-panel--toolbar .filter-field select,
body.page-rooms .filter-panel--toolbar .filter-field input,
body.page-rooms .filter-panel--toolbar .filter-field select,
body.page-products .filter-panel--toolbar .filter-field input,
body.page-products .filter-panel--toolbar .filter-field select,
body.page-consumption .filter-panel--toolbar .filter-field input,
body.page-consumption .filter-panel--toolbar .filter-field select,
body.page-payments .filter-panel--toolbar .filter-field input,
body.page-payments .filter-panel--toolbar .filter-field select,
body.page-staff-employees .filter-panel--toolbar .filter-field input,
body.page-staff-employees .filter-panel--toolbar .filter-field select,
body.page-reservation-requests .filter-panel--toolbar .filter-field input,
body.page-reservation-requests .filter-panel--toolbar .filter-field select {
  padding:         2px 5px;
  font-size:       var(--font-size-xs);
  line-height:     1.2;
  min-height:      0;
  height:          auto;
  border-radius:   var(--radius-sm);
  box-sizing:      border-box;
}

body.page-reservations .toolbar-right,
body.page-clients .toolbar-right,
body.page-companies .toolbar-right,
body.page-rooms .toolbar-right,
body.page-products .toolbar-right,
body.page-consumption .toolbar-right,
body.page-payments .toolbar-right,
body.page-staff-employees .toolbar-right,
body.page-reservation-requests .toolbar-right,
body.page-guest-orders .toolbar-right {
  flex-shrink:     0;
}

body.page-reservations .page-list-layout,
body.page-clients .page-list-layout,
body.page-companies .page-list-layout,
body.page-rooms .page-list-layout,
body.page-products .page-list-layout,
body.page-consumption .page-list-layout,
body.page-payments .page-list-layout,
body.page-staff-employees .page-list-layout {
  flex: 1 1 auto;
  min-height: 0;
  display: flex;
  flex-direction: column;
}

body.page-reservations .data-table tfoot .list-table-foot-stats td,
body.page-clients .data-table tfoot .list-table-foot-stats td,
body.page-companies .data-table tfoot .list-table-foot-stats td,
body.page-rooms .data-table tfoot .list-table-foot-stats td,
body.page-products .data-table tfoot .list-table-foot-stats td,
body.page-consumption .data-table tfoot .list-table-foot-stats td,
body.page-payments .data-table tfoot .list-table-foot-stats td,
body.page-staff-employees .data-table tfoot .list-table-foot-stats td {
  padding:        4px var(--space-sm) 6px;
  border:         none;
  border-top:     2px solid #9ca3af;
  background:     transparent;
  text-align:     right;
  vertical-align: top;
}

body.page-reservations .data-table tfoot .list-table-foot-stats .list-footer-stats,
body.page-clients .data-table tfoot .list-table-foot-stats .list-footer-stats,
body.page-companies .data-table tfoot .list-table-foot-stats .list-footer-stats,
body.page-rooms .data-table tfoot .list-table-foot-stats .list-footer-stats,
body.page-products .data-table tfoot .list-table-foot-stats .list-footer-stats,
body.page-consumption .data-table tfoot .list-table-foot-stats .list-footer-stats,
body.page-payments .data-table tfoot .list-table-foot-stats .list-footer-stats,
body.page-staff-employees .data-table tfoot .list-table-foot-stats .list-footer-stats {
  display: inline-block;
}

.page-list-table {
  flex: 1 1 auto;
}

.list-page-alert {
  margin: 6px 8px 0;
  flex:   0 0 auto;
}

.list-page-footer {
  flex:       0 0 auto;
  padding:    0 8px 8px;
  margin-top: 0;
}

.list-footer-rule {
  height:     6px;
  margin:     4px 0 6px;
  background: linear-gradient(180deg, #d1d5db 0%, #9ca3af 100%);
  border-radius: 2px;
}

.list-footer-stats {
  margin:      0;
  font-size:   var(--font-size-sm);
  color:       var(--color-text-muted);
  text-align:  right;
}

.list-footer-stats strong {
  color: var(--color-text);
}

.list-footer-sep {
  margin: 0 6px;
  opacity: .6;
}

.list-footer-metrics {
  font-size:   var(--font-size-sm);
  color:       var(--color-text-muted);
  line-height: 1.45;
}

.list-footer-metrics .list-foot-item strong {
  color:       var(--color-text);
  font-weight: 700;
}

.list-footer-dual {
  display:         flex;
  justify-content: space-between;
  align-items:     flex-start;
  gap:             12px;
  flex-wrap:       wrap;
}

.list-footer-dual__left {
  text-align: left;
}

.list-footer-dual__right {
  text-align:    right;
  white-space:   nowrap;
  margin-left:   auto;
}

body.page-consumption .data-table tfoot .list-table-foot-stats--dual td:first-child,
body.page-payments .data-table tfoot .list-table-foot-stats--dual td {
  text-align: left;
}

body.page-consumption .data-table tfoot .consumption-list-foot-amount,
body.page-payments .data-table tfoot .list-table-foot-stats--dual .list-footer-dual__right {
  text-align: right;
}

body.page-reservations .data-table tfoot .list-table-foot-stats td {
  padding:        4px var(--space-sm) 6px;
  border:         none;
  border-top:     2px solid #9ca3af;
  background:     transparent;
  text-align:     right;
  vertical-align: top;
}

body.page-reservations .data-table tfoot .list-table-foot-stats .list-footer-stats {
  display: inline-block;
}

/* Cabeçalhos de tabela ordenáveis */
.th-sortable {
  padding: 0 !important;
  vertical-align: bottom;
}

.th-sort-link {
  display:         inline-flex;
  align-items:     center;
  gap:             3px;
  width:           100%;
  padding:         1px var(--space-sm);
  color:           inherit;
  text-decoration: none;
  line-height:     1.15;
  box-sizing:      border-box;
}

.th-sort-link:hover {
  color:           #1d4ed8;
  text-decoration: none;
}

.th-sortable--active .th-sort-link {
  font-weight:     600;
  color:           #1e40af;
}

.th-sort-icon {
  font-size:   9px;
  line-height: 1;
  opacity:     .35;
  flex-shrink: 0;
}

.th-sort-icon--asc,
.th-sort-icon--desc {
  opacity: 1;
  color:   #2563eb;
}

th.text-center .th-sort-link {
  justify-content: center;
}


/* ============================================================
   6. BUTTONS
   ============================================================ */

.btn {
  display:       inline-flex;
  align-items:   center;
  gap:           var(--space-xs);
  padding:       var(--space-xs) var(--space-sm);
  font-size:     var(--font-size-base);
  font-family:   var(--font-base);
  font-weight:   500;
  cursor:        pointer;
  border-radius: var(--radius-base);
  border:        1px solid var(--color-border-dark);
  background:    var(--color-bg-white);
  color:         var(--color-text);
  transition:    filter var(--transition-fast), transform var(--transition-fast), box-shadow var(--transition-fast);
  white-space:   nowrap;
  line-height:   1.4;
}

.toolbar .btn {
  padding:     3px 7px;
  font-size:   var(--font-size-xs);
  line-height: 1.2;
  min-height:  0;
}

.btn:hover   { filter: brightness(0.93); transform: translateY(-1px); box-shadow: var(--shadow-sm); }
.btn:active  { transform: translateY(0); filter: brightness(0.88); }

.btn-primary  { background: var(--color-primary);       color: #fff; border-color: var(--color-primary-dark); }
.btn-success  { background: var(--color-success);       color: #fff; border-color: #15803d; }
.btn-warning  { background: var(--color-warning-light); color: #fff; border-color: var(--color-warning); }
.btn-danger   { background: var(--color-danger-light);  color: #fff; border-color: var(--color-danger); }
.btn-neutral  { background: #d1d5db; color: var(--color-text); border-color: var(--color-border-dark); }
.btn-new      { background: var(--color-success);       color: #fff; border-color: #15803d; }
.btn-search   { background: #e5e7eb; color: var(--color-text); }
.btn-refresh  { background: var(--color-warning-light); color: #111827; border-color: var(--color-warning); }
.btn-save     { background: var(--color-primary);       color: #fff; border-color: var(--color-primary-dark); }
.btn-menu-client {
  background: var(--color-menu-client);
  color:      #fff;
  border-color: var(--color-menu-client-dark);
}
.btn-booking-import {
  background: var(--color-booking-import);
  color:      #fff;
  border-color: var(--color-booking-import-dark);
}
.btn-propostas {
  background: var(--color-booking-import);
  color:      #fff;
  border-color: var(--color-booking-import-dark);
}

.btn-delete-toolbar {
  background:    var(--color-bg-white);
  color:         var(--color-danger-light);
  border:        1px solid var(--color-danger-light);
  padding:       var(--space-xs) var(--space-sm);
  font-size:     var(--font-size-base);
  font-family:   var(--font-base);
  font-weight:   500;
  cursor:        pointer;
  border-radius: var(--radius-base);
  transition:    background var(--transition-fast);
}
.btn-delete-toolbar:hover { background: #fef2f2; }

.btn-delete {
  background:  transparent;
  border:      none;
  padding:     0;
  font-size:   var(--font-size-xl);
  cursor:      pointer;
  color:       var(--color-danger-light);
  line-height: 1;
  transition:  color var(--transition-fast), transform var(--transition-fast);
}
.btn-delete:hover { color: var(--color-danger); transform: scale(1.15); }

.btn-sm { padding: 2px 6px;  font-size: var(--font-size-xs); }
.btn-lg { padding: 6px 14px; font-size: var(--font-size-md); }


/* ============================================================
   7. FORMS & INPUTS
   ============================================================ */

.form-header {
  background:    linear-gradient(180deg, #dbeafe 0%, #7dd3fc 100%);
  color:         #0c4a6e;
  border-bottom: 3px solid #2563eb;
  padding:       var(--space-sm) var(--space-md);
  font-size:     var(--font-size-md);
  font-weight:   600;
  box-shadow:    inset 0 1px 0 rgba(255, 255, 255, 0.55);
}

/* Testo secondario nel titolo (es. azienda tra parentesi) */
.form-header-note {
  font-size: var(--font-size-sm);
  font-weight:   500;
  opacity:       0.88;
  color:         #075985;
}

/* Folha de ponto — barra contesto schermo: titolo + nome + mês/ano sempre visibili */
body.page-staff-timesheet-month .staff-ts-screen-header {
  display:     flex;
  flex-wrap:   wrap;
  align-items: baseline;
  gap:         0.25rem 0.5rem;
}

body.page-staff-timesheet-month .staff-ts-screen-header-title {
  font-weight: 700;
}

/* Nome + mês/ano: più piccoli, grigio scuro, peso normale (il titolo «Folha de Ponto» resta in evidenza) */
body.page-staff-timesheet-month .staff-ts-screen-header-meta {
  font-size:     var(--font-size-sm);
  font-weight:   400;
  color:         #374151;
}

body.page-staff-timesheet-month .staff-ts-screen-header-name {
  font-weight: 400;
}

body.page-staff-timesheet-month .staff-ts-screen-header-period {
  font-weight:    400;
  font-size:      inherit;
  letter-spacing: normal;
}

body.page-staff-timesheet-month .staff-ts-screen-header-year {
  font-variant-numeric: tabular-nums;
  font-weight:          inherit;
}

body.page-staff-timesheet-month .staff-ts-screen-header-sep {
  color:       #64748b;
  opacity:     1;
  font-weight: 400;
  padding:     0 0.15rem;
}

/* Fascia sotto header: contesto / azioni rapide (grigio–ardesia, stacca dal blu) */
.meta-info-strip {
  display:       flex;
  gap:           12px;
  align-items:   center;
  flex-wrap:     wrap;
  padding:       10px 16px;
  background:    linear-gradient(180deg, #f8fafc 0%, #e2e8f0 100%);
  color:         #1e293b;
  border-bottom: 2px solid #64748b;
  box-shadow:    inset 0 1px 0 rgba(255, 255, 255, 0.85);
  font-size: var(--font-size-sm);
}

.meta-info-strip strong {
  font-size: var(--font-size-base);
  color:         inherit;
}

.meta-info-strip .text-muted {
  color:         #475569 !important;
  opacity:       1;
}

/* reservation_control — messaggi compatti in basso a destra, senza scroll extra */
.rc-action-bar {
  position: relative;
  display: flex;
  align-items: flex-end;
  flex-wrap: nowrap;
  gap: 8px;
  min-height: 28px;
}
.rc-action-bar__main {
  flex: 1 1 auto;
  min-width: 0;
  overflow-x: auto;
  overflow-y: visible;
}
.rc-action-bar__messages {
  position: absolute;
  right: 0;
  bottom: 0;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  justify-content: flex-end;
  gap: 4px;
  max-width: min(440px, 54%);
  z-index: 5;
  pointer-events: none;
}
.rc-action-bar__messages > * {
  pointer-events: auto;
  max-width: 100%;
  margin: 0 !important;
  padding: 4px 8px;
  font-size: 11px;
  line-height: 1.25;
  border-radius: 8px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  box-shadow: 0 1px 3px rgba(15, 23, 42, .1);
}
.rc-embed-status-bar {
  position: sticky;
  bottom: 0;
  z-index: 30;
  display: flex;
  justify-content: flex-end;
  align-items: flex-end;
  padding: 2px 0 0;
  margin-top: 6px;
  background: linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, #fff 42%);
  pointer-events: none;
}
.rc-embed-status-bar .reservation-edit-messages {
  position: static;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 4px;
  max-width: min(480px, 100%);
  pointer-events: auto;
}
.rc-embed-status-bar .reservation-edit-msg,
.rc-embed-status-bar .reservation-folder-msg:not(:empty) {
  margin: 0;
  padding: 4px 8px;
  font-size: 11px;
  line-height: 1.25;
  border-radius: 8px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  box-shadow: 0 1px 3px rgba(15, 23, 42, .1);
}
.rc-embed-status-bar .reservation-folder-msg:not(:empty) {
  background: #f8fafc;
  border: 1px solid #cbd5e1;
}
.files-wrap--embed {
  display: flex;
  flex-direction: column;
  height: 100vh;
  max-height: 100vh;
  overflow: hidden;
  box-sizing: border-box;
}
.files-wrap--embed .files-scroll-area {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
}
.files-wrap--embed .files-add-panel {
  flex-shrink: 0;
}

/* Pulsanti pastello: Consumi / Pagamenti / Checkout (barra prenotazione) */
.reservation-quick-actions .qa-consumi {
  background: linear-gradient(180deg, #fdf2f8 0%, #fce7f3 100%) !important;
  color: #831843 !important;
  border: 1px solid #f9a8d4 !important;
}
.reservation-quick-actions .qa-consumi:hover { filter: brightness(0.97); }

.reservation-quick-actions .qa-pagamenti {
  background: linear-gradient(180deg, #fefce8 0%, #fef9c3 100%) !important;
  color: #713f12 !important;
  border: 1px solid #fde047 !important;
}
.reservation-quick-actions .qa-pagamenti:hover { filter: brightness(0.97); }

.reservation-quick-actions .qa-checkout {
  background: linear-gradient(180deg, #f0fdf4 0%, #dcfce7 100%) !important;
  color: #14532d !important;
  border: 1px solid #86efac !important;
}
.reservation-quick-actions .qa-checkout:hover { filter: brightness(0.97); }

/* Footer popup — stessa famiglia della fascia grigia */
.popup-footer-bar {
  background:    linear-gradient(180deg, #f8fafc 0%, #e2e8f0 100%);
  border-top:    2px solid #64748b;
  padding:       10px 16px;
  box-shadow:    inset 0 1px 0 rgba(255, 255, 255, 0.85);
}

/* Riepilogo importi compatto (coerente con header azzurro) */
.meta-summary-card {
  display:               grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap:                   8px;
  font-size: var(--font-size-sm);
  margin-bottom:         12px;
  padding:               10px;
  background:            linear-gradient(180deg, #eff6ff 0%, #dbeafe 100%);
  border:                1px solid #60a5fa;
  border-radius:         var(--radius-base);
  box-shadow:            inset 0 1px 0 rgba(255, 255, 255, 0.65);
}

.meta-summary-card > div {
  display:         flex;
  justify-content: space-between;
  gap:             8px;
}

.meta-panel-heading {
  display:         flex;
  justify-content: space-between;
  align-items:     center;
  margin-bottom:   8px;
  padding:         6px 8px;
  background:      linear-gradient(180deg, #e0f2fe 0%, #bae6fd 100%);
  border:          1px solid #38bdf8;
  border-radius:   6px;
  font-size: var(--font-size-md);
  font-weight:     600;
  color:           #0c4a6e;
}

.meta-form-card {
  background:    linear-gradient(180deg, #f0f9ff 0%, #e0f2fe 100%);
  padding:       8px 10px;
  border-radius: var(--radius-lg);
  border:        1px solid #7dd3fc;
  box-shadow:    0 1px 3px rgba(14, 116, 144, 0.12);
}

.form-edit-table { border-collapse: collapse; width: 100%; }

.form-edit-table th {
  text-align:     left;
  vertical-align: middle;
  padding:        var(--space-xs) var(--space-md) var(--space-xs) var(--space-sm);
  font-size:      var(--font-size-sm);
  font-weight:    600;
  color:          var(--color-text-label);
  white-space:    nowrap;
  width:          var(--form-label-width);
  min-width:      var(--form-label-width);
}

.form-edit-table td { padding: var(--space-xs) var(--space-sm); vertical-align: middle; }

.form-edit-table .form-section {
  padding:     var(--space-xs) var(--space-sm);
  font-size:   var(--font-size-sm);
  font-weight: 600;
  color:       var(--color-text-muted);
  background:  var(--color-surface);
  border-top:  1px solid var(--color-border);
}

.form-edit-table .form-section.form-section--center {
  text-align: center;
}

input[type="text"],
input[type="number"],
input[type="email"],
input[type="date"],
input[type="tel"],
select,
textarea {
  border:        1px solid var(--color-border-dark);
  padding:       var(--space-xs) var(--space-sm);
  border-radius: var(--radius-sm);
  font-size:     var(--font-size-base);
  font-family:   var(--font-base);
  color:         var(--color-text);
  background:    var(--color-bg-white);
  transition:    border-color var(--transition-fast), box-shadow var(--transition-fast);
}

input:focus, select:focus, textarea:focus {
  outline:      none;
  border-color: var(--color-primary);
  box-shadow:   0 0 0 2px rgba(37,99,235,0.12);
}

.form-edit-table input[type="text"],
.form-edit-table input[type="number"],
.form-edit-table input[type="email"],
.form-edit-table input[type="date"],
.form-edit-table select { width: var(--input-width); }

/* Tarifas reserva: larghezze adatte a font più grandi + frecce number */
.form-edit-table input.res-tariff-input,
input.res-tariff-input {
  width: auto;
  box-sizing: border-box;
  font-variant-numeric: tabular-nums;
  padding-right: 6px;
}
.form-edit-table input.res-tariff-input--money,
input.res-tariff-input--money {
  width: 7.5rem;
  min-width: 7.5rem;
}
.form-edit-table input.res-tariff-input--pct,
input.res-tariff-input--pct {
  width: 6.25rem;
  min-width: 6.25rem;
}
.form-edit-table input.res-tariff-input--total,
input.res-tariff-input--total {
  width: 8rem;
  min-width: 8rem;
}

.form-edit-table textarea { resize: vertical; width: 100%; min-height: 70px; }

/* Reserva: estadia compacta (check-in + check-out na mesma linha) */
.res-stay-row {
  display: flex;
  align-items: flex-end;
  gap: 12px;
  flex-wrap: wrap;
}
.res-stay-field {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.res-stay-label {
  font-size: var(--font-size-xs);
  color: var(--color-text-muted);
  line-height: 1.2;
}
.form-edit-table input.res-stay-date {
  width: 11.5rem;
  min-width: 11.5rem;
}
.res-stay-nights {
  font-weight: 700;
  color: var(--color-primary);
  white-space: nowrap;
  padding-bottom: 4px;
}
.res-pax-notes {
  flex: 1 1 220px;
  min-width: 180px;
  max-width: 420px;
}
.res-guests {
  width: 100%;
  max-width: 520px;
}
.res-guests__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.res-guests__item {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: nowrap;
  padding: 0;
  background: none;
  border: none;
  font-size: inherit;
}
.res-guests__item .btn-delete {
  flex: 0 0 auto;
  width: 22px;
  font-size: 18px;
}
.form-edit-table input.res-guests__name-input,
input.res-guests__name-input {
  width: 300px;
  min-width: 300px;
}
.form-edit-table input.res-guests__name-input[readonly] {
  background: var(--color-bg-white);
  color: var(--color-text);
  cursor: default;
}
.res-guests__add {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-top: 6px;
  flex-wrap: wrap;
}
.res-guests__group {
  margin-top: 10px;
  padding-top: 8px;
  border-top: 1px dashed #cbd5e1;
}
.res-guests__room {
  font-size: 11px;
  font-weight: 700;
  color: #475569;
  margin: 8px 0 4px;
}
.res-guests__room.is-current { color: #1d4ed8; }

.reservation-notes-row {
  display: flex;
  gap: var(--space-md);
  align-items: flex-start;
  flex-wrap: wrap;
}

.reservation-notes-col {
  flex: 1 1 0;
  min-width: 0;
  max-width: 100%;
}

.reservation-notes-row textarea.reservation-notes-textarea {
  width: 100%;
  box-sizing: border-box;
  /* ~3 righe (allineato a rows="3") */
  min-height: calc(3 * 1.35em + 14px);
  height: calc(3 * 1.35em + 14px);
  line-height: 1.35;
  resize: vertical;
}

.reservation-notes-col .res-notes-label {
  display: block;
  font-size: var(--font-size-xs);
  font-weight: 600;
  color: var(--color-text-muted);
  margin-bottom: 4px;
}

.reservation-notes-textarea--guest-access {
  min-height: calc(5 * 1.35em + 14px);
  height: calc(5 * 1.35em + 14px);
}

textarea { min-height: 70px; resize: vertical; }

.form-buttons,
.button-bar {
  margin-top: var(--space-lg);
  display:    flex;
  gap:        var(--space-md);
}

.button-bar.reservation-form-actions {
  align-items: center;
  flex-wrap: wrap;
}

.reservation-save-flash {
  margin-bottom: 0;
  padding: 5px 11px;
  font-weight: 600;
}

/* Barra azioni ficha cliente = stessa grafica di reservation_control */
.pms-act-bar {
  position: sticky;
  top: 0;
  z-index: 29;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 8px 16px;
  border-bottom: 1px solid #64748b;
  background: linear-gradient(180deg, #fbfdff 0%, #f5fbff 100%);
}
.pms-act-bar__left,
.pms-act-bar__right {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}
.pms-act-bar__left {
  flex: 1 1 auto;
  min-width: 0;
}
.pms-act-bar__right {
  flex: 0 1 auto;
  justify-content: flex-end;
}
.pms-act-bar .rc-act,
.pms-act-bar .btn,
.pms-act-bar .btn-delete-toolbar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 24px;
  min-width: 58px;
  font-size: 11px;
  padding: 4px 10px;
  line-height: 1.2;
  box-sizing: border-box;
  font-weight: 600;
  border: 1px solid transparent;
  border-radius: var(--radius-sm, 4px);
  color: #fff;
  text-decoration: none;
}
.pms-act-bar .rc-act--save {
  background: linear-gradient(180deg, #3b82f6 0%, #2563eb 100%);
  border-color: #1d4ed8;
}
.pms-act-bar .rc-act--import {
  background: linear-gradient(180deg, #818cf8 0%, #6366f1 100%);
  border-color: #4f46e5;
}
.pms-act-bar .rc-act--refresh {
  background: linear-gradient(180deg, #fcd34d 0%, #f59e0b 100%);
  border-color: #d97706;
  color: #78350f;
}
.pms-act-bar .rc-act--delete {
  background: linear-gradient(180deg, #f87171 0%, #dc2626 100%);
  border-color: #b91c1c;
}
.pms-act-bar .rc-act--delete:hover {
  background: linear-gradient(180deg, #ef4444 0%, #b91c1c 100%);
  color: #fff;
}
.pms-act-bar .rc-act--sair {
  background: linear-gradient(180deg, #94a3b8 0%, #64748b 100%);
  border-color: #475569;
}
.pms-act-bar__msg {
  flex: 1 1 auto;
  min-width: 0;
  max-width: min(560px, 52vw);
  margin: 0;
  padding: 3px 8px;
  border-radius: 6px;
  font-size: 11px;
  font-weight: 600;
  line-height: 1.3;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.pms-act-bar__msg--ok {
  background: #dcfce7;
  border: 1px solid #86efac;
  color: #166534;
}
.pms-act-bar__msg--err {
  background: #fee2e2;
  border: 1px solid #fecaca;
  color: #991b1b;
}
.client-form-sticky-top {
  position: sticky;
  top: 0;
  z-index: 40;
  background: linear-gradient(180deg, #fbfdff 0%, #f5fbff 100%);
}
.client-form-sticky-top .form-header { margin: 0; }
.client-form-body { padding: 12px 16px 24px; }

/* Popup cliente: barra azioni fissa, form scorrevole */
html:has(body.popup-embedded.page-client-edit),
html:has(body.popup-embedded.page-client-new),
body.popup-embedded.page-client-edit,
body.popup-embedded.page-client-new {
  height: 100%;
  margin: 0;
  overflow: hidden;
}
body.popup-embedded.page-client-edit,
body.popup-embedded.page-client-new {
  display: flex;
  flex-direction: column;
}
body.popup-embedded.page-client-edit .client-form-sticky-top,
body.popup-embedded.page-client-new .client-form-sticky-top {
  flex: 0 0 auto;
  position: relative;
  top: auto;
}
body.popup-embedded.page-client-edit .client-form-body,
body.popup-embedded.page-client-new .client-form-body {
  flex: 1 1 auto;
  min-height: 0;
  overflow: auto;
}
.client-delete-form { margin: 0; display: inline-flex; }

/* Recorte fototessera (importação / ficha) */
.photo-crop-stage {
  position: relative;
  display: inline-block;
  max-width: 100%;
  line-height: 0;
  overflow: hidden;
}
.photo-crop-stage > img,
.photo-crop-stage > canvas {
  display: block;
  max-width: 100%;
  height: auto;
}
.photo-crop-box {
  position: absolute;
  box-sizing: border-box;
  border: 2px solid #fbbf24;
  box-shadow: 0 0 0 9999px rgba(15, 23, 42, 0.42);
  cursor: move;
  touch-action: none;
}
.photo-crop-handle {
  position: absolute;
  width: 12px;
  height: 12px;
  background: #fbbf24;
  border: 1px solid #78350f;
  box-sizing: border-box;
}
.photo-crop-handle.nw { left: -6px; top: -6px; cursor: nwse-resize; }
.photo-crop-handle.ne { right: -6px; top: -6px; cursor: nesw-resize; }
.photo-crop-handle.sw { left: -6px; bottom: -6px; cursor: nesw-resize; }
.photo-crop-handle.se { right: -6px; bottom: -6px; cursor: nwse-resize; }
.photo-crop-bar {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin-top: 8px;
  font-size: 12px;
  color: #334155;
}
.photo-crop-bar label {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-weight: 650;
  cursor: pointer;
}
.photo-crop-thumb {
  width: 56px;
  height: 56px;
  object-fit: cover;
  border-radius: 6px;
  border: 1px solid #cbd5e1;
  background: #fff;
}
.photo-crop-modal {
  position: fixed;
  inset: 0;
  z-index: 80;
  display: none;
  align-items: center;
  justify-content: center;
  background: rgba(15, 23, 42, 0.55);
  padding: 16px;
}
.photo-crop-modal.is-open { display: flex; }
.photo-crop-modal__panel {
  background: #fff;
  border-radius: 10px;
  padding: 14px 16px;
  max-width: min(920px, 96vw);
  max-height: 92vh;
  overflow: auto;
  box-shadow: 0 12px 40px rgba(15, 23, 42, 0.28);
}
.photo-crop-modal__panel h3 {
  margin: 0 0 10px;
  font-size: 15px;
}
.photo-crop-modal__actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  margin-top: 12px;
}

.client-name-row {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}
.client-name-photo {
  display: inline-flex;
  width: 56px;
  height: 56px;
  flex: 0 0 56px;
  border-radius: 8px;
  border: 1px solid #cbd5e1;
  overflow: hidden;
  background: #fff;
}
.client-name-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.client-name-photo--empty {
  align-items: center;
  justify-content: center;
  border-style: dashed;
  font-size: 10px;
  font-weight: 650;
  color: #94a3b8;
  background: #f8fafc;
}

.entity-dossier { margin-top: 4px; max-width: 720px; }
.entity-dossier__sep {
  height: 0;
  margin: 16px 0 10px;
  border: 0;
  border-top: 2px solid #9ca3af;
  max-width: 720px;
}
.entity-dossier .file-table-wrap { width: 100%; overflow-x: auto; }
.entity-dossier .file-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 11px;
  table-layout: fixed;
  min-width: 480px;
}
.entity-dossier .file-table th,
.entity-dossier .file-table td {
  padding: 3px 6px;
  border-top: 1px solid #edf2f7;
  text-align: left;
  vertical-align: middle;
  line-height: 1.2;
}
.entity-dossier .file-table th {
  color: #64748b;
  font-weight: 600;
  background: #fafafa;
}
.entity-dossier .file-table td.file-col-actions { white-space: nowrap; width: 100px; }
.entity-dossier .file-table td.file-col-title { overflow: hidden; width: 148px; }
.entity-dossier .entity-dossier__title-input {
  width: 132px;
  max-width: 100%;
  box-sizing: border-box;
  padding: 2px 5px;
  font-size: 11px;
  font-weight: 650;
  line-height: 1.3;
  border: 1px solid #cbd5e1;
  border-radius: 4px;
  color: #0f172a;
  background: #fff;
}
.entity-dossier .entity-dossier__title-input:focus {
  outline: none;
  border-color: #2563eb;
  box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.15);
}
.entity-dossier .file-table td.file-col-name { overflow: hidden; }
.entity-dossier .file-table td.file-col-meta { white-space: nowrap; width: 92px; color: #64748b; }
.entity-dossier .file-title-text {
  display: block;
  font-weight: 650;
  color: #0f172a;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.entity-dossier .file-name-link {
  color: #0b3a63;
  font-weight: 400;
  text-decoration: none;
  display: block;
  min-width: 0;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
  font-family: 'DM Mono', ui-monospace, monospace;
  font-size: 11px;
}
.entity-dossier .file-name-link:hover { text-decoration: underline; }
.entity-dossier .file-actions {
  display: flex;
  align-items: center;
  gap: 2px;
  justify-content: flex-start;
  white-space: nowrap;
}
.entity-dossier .file-action-slot {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 17px;
  min-width: 17px;
  height: 17px;
  flex: 0 0 17px;
  line-height: 1;
}
.entity-dossier .file-open-btn,
.entity-dossier .file-download-btn,
.entity-dossier .file-crop-btn {
  border: 0;
  background: transparent;
  font-size: 13px;
  line-height: 1;
  font-weight: 700;
  padding: 0;
  cursor: pointer;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 17px;
  min-width: 17px;
  height: 17px;
  box-sizing: border-box;
}
.entity-dossier .file-open-btn { color: #0369a1; }
.entity-dossier .file-download-btn { color: #7c3aed; }
.entity-dossier .file-crop-btn { color: #b45309; }
.entity-dossier .file-open-btn:hover,
.entity-dossier .file-download-btn:hover,
.entity-dossier .file-crop-btn:hover { filter: brightness(.85); }
.entity-dossier .file-rename-btn {
  border: 0;
  background: transparent;
  color: #2563eb;
  font-size: 13px;
  line-height: 1;
  font-weight: 700;
  padding: 0 2px;
  cursor: pointer;
}
.entity-dossier .file-rename-btn:hover { filter: brightness(.85); }
.entity-dossier .file-delete-x { font-size: 13px; line-height: 1; }
.entity-dossier .file-row-a td { background: #ffffff; }
.entity-dossier .file-row-b td { background: #f4f7fb; }
.entity-dossier__empty {
  padding: 8px 2px;
  font-size: 12px;
  color: #64748b;
}

.readonly { background: var(--color-surface) !important; }


/* ============================================================
   8. TABLES
   ============================================================ */

.data-table {
  border-collapse: collapse;
  margin-top:      var(--space-sm);
  width:           100%;
}

.data-table th {
  text-align:    left;
  padding:       3px var(--space-sm);
  font-size:     var(--font-size-xs);
  color:         #1e3a5f;
  font-weight:   500;
  white-space:   nowrap;
  border-bottom: 2px solid #93c5fd;
  background:    #bfdbfe;
  position:      sticky;
  top:           0;
  z-index:       50;
  box-shadow:    0 1px 0 var(--color-border);
}

.data-table td {
  padding:        1px var(--space-sm);
  border-bottom:  1px solid var(--color-border);
  font-size:      var(--font-size-xs);
  font-weight:    400;
  line-height:    1.25;
  vertical-align: middle;
}

.data-table:not(.staff-timesheet-grid):not(.staff-ts-resumo-kv):not(.staff-ts-advances-table) td strong {
  font-weight: 400;
}

.data-table tr.reservation-arrival-today td {
  background: #fde68a;
}

.data-table tr.reservation-arrival-tomorrow td {
  background: #bbf7d0;
}

.data-table tr.reservation-arrival-next td {
  background: #ddd6fe;
}

.data-table tr.reservation-inhouse td {
  background: #bbf7d0;
}

.data-table tr.reservation-checkout-today td {
  background: #bae6fd;
}

.data-table tr.reservation-checkout-tomorrow td {
  background: #fbcfe8;
}

.data-table tr.reservation-arrival-today:hover td {
  background: #fcd34d;
}

.data-table tr.reservation-arrival-tomorrow:hover td {
  background: #86efac;
}

.data-table tr.reservation-arrival-next:hover td {
  background: #c4b5fd;
}

.data-table tr.reservation-inhouse:hover td {
  background: #86efac;
}

.data-table tr.reservation-checkout-today:hover td {
  background: #7dd3fc;
}

.data-table tr.reservation-checkout-tomorrow:hover td {
  background: #f9a8d4;
}

.data-table tr.payment-reservation-inhouse td {
  background: #bbf7d0;
}

.data-table tr.payment-reservation-edge td {
  background: #bae6fd;
}

.data-table tr.payment-reservation-inhouse:hover td {
  background: #86efac;
}

.data-table tr.payment-reservation-edge:hover td {
  background: #7dd3fc;
}

.data-table tr:hover td { background: var(--color-primary-light); }

/* Elenco prodotti: stessa densità visiva degli elenchi tipo clientes */
.data-table.products-table--compact tbody td {
  padding:        1px var(--space-sm);
  font-size:      var(--font-size-xs);
  font-weight:    400;
  line-height:    1.25;
  vertical-align: middle;
}

.data-table.products-table--compact tbody td strong {
  font-weight: 400;
}

body.page-products .data-table.products-table--compact tbody td {
  color: var(--color-text-muted);
}

body.page-products .data-table.products-table--compact tbody td:nth-child(3),
body.page-products .data-table.products-table--compact tbody td:nth-child(4),
body.page-products .data-table.products-table--compact tbody td:nth-child(6),
body.page-products .data-table.products-table--compact tbody td:nth-child(12) {
  color: var(--color-text);
}

body.page-products .page-body-scroll {
  margin-top:  0;
  padding-top: 0;
}

body.page-products .data-table.products-table--compact {
  margin-top: 0;
}

body.page-products .data-table.products-table--compact thead th {
  border-bottom: 2px solid #93c5fd;
  background:    #bfdbfe;
  color:         #1e3a5f;
  font-size:     var(--font-size-xs);
  font-weight:   500;
  height:        auto;
  line-height:   1.15;
  padding:       3px var(--space-sm) !important;
}

body.page-products .toolbar {
  background:    linear-gradient(180deg, #f8fbff 0%, #eef6ff 100%);
  border-bottom: 1px solid #bfdbfe;
  min-height:    28px;
  padding-top:   0;
  padding-bottom: 4px;
}

body.page-products .toolbar .btn {
  padding:     3px 7px;
  font-size:   var(--font-size-xs);
  line-height: 1.2;
  min-height:  0;
}

body.page-products .toolbar-left,
body.page-products .toolbar-right {
  gap: 6px;
}

body.page-reservations .toolbar {
  background:    linear-gradient(180deg, #f8fbff 0%, #eef6ff 100%);
  border-bottom: 1px solid #bfdbfe;
  min-height:    28px;
  padding-top:   0;
  padding-bottom: 4px;
}

body.page-reservations .toolbar .btn {
  padding:     3px 7px;
  font-size:   var(--font-size-xs);
  line-height: 1.2;
  min-height:  0;
}

body.page-reservations .toolbar-left,
body.page-reservations .toolbar-right {
  gap: 6px;
}

body.page-reservations .page-list-layout {
  flex: 1 1 auto;
  min-height: 0;
}

/* Pedidos clientes (guest_orders.php) */
body.page-guest-orders .toolbar {
  background:     linear-gradient(180deg, #f8fbff 0%, #eef6ff 100%);
  border-bottom:  1px solid #bfdbfe;
  min-height:     28px;
  padding-top:    0;
  padding-bottom: 4px;
  flex-wrap:      nowrap;
}

body.page-guest-orders .toolbar .btn {
  padding:     3px 7px;
  font-size:   var(--font-size-xs);
  line-height: 1.2;
  min-height:  0;
}

body.page-guest-orders .toolbar-left:empty {
  display: none;
}

body.page-guest-orders .toolbar-middle.toolbar-filters-list {
  align-items: center;
  flex:        1 1 auto;
  min-width:   0;
  gap:         5px;
}

body.page-guest-orders .page-list-layout {
  flex:           1 1 auto;
  min-height:     0;
  display:        flex;
  flex-direction: column;
}

body.page-guest-orders .page-body-scroll {
  padding: 0 8px 6px;
}

body.page-guest-orders .go-view-tabs {
  display:   flex;
  flex-wrap: wrap;
  gap:       5px;
  margin:    0;
  padding:   0;
}

body.page-guest-orders .go-view-tab {
  text-decoration: none;
  white-space:     nowrap;
}

body.page-guest-orders .go-view-tab.is-active {
  background:   var(--color-primary);
  color:        #fff;
  border-color: var(--color-primary-dark);
}

body.page-guest-orders .go-view-tab__count {
  display:       inline-block;
  min-width:     16px;
  margin-left:   4px;
  padding:       0 5px;
  border-radius: 999px;
  background:    rgba(0, 0, 0, 0.12);
  font-size:     var(--font-size-xs);
  text-align:    center;
  line-height:   1.35;
}

body.page-guest-orders .go-view-tab.is-active .go-view-tab__count {
  background: rgba(255, 255, 255, 0.22);
}

body.page-guest-orders .go-alerts {
  display:        flex;
  flex-direction: column;
  gap:            6px;
  margin:         6px 0 8px;
}

body.page-guest-orders .go-alerts .alert {
  margin-bottom: 0;
}

body.page-guest-orders .go-card {
  border:        1px solid var(--color-border);
  border-radius: var(--radius-base);
  background:    var(--color-bg-white);
  margin-bottom: 8px;
  overflow:      hidden;
  box-shadow:    var(--shadow-sm);
}

body.page-guest-orders .go-card--pending {
  border-left: 3px solid var(--color-warning);
}

body.page-guest-orders .go-card--confirmed {
  border-left: 3px solid var(--color-success);
}

body.page-guest-orders .go-card-head {
  display:               grid;
  grid-template-columns: 1fr auto;
  gap:                   8px 10px;
  padding:               8px 10px;
  background:            #f8fafc;
  border-bottom:         1px solid var(--color-border);
  align-items:           flex-start;
}

body.page-guest-orders .go-headline {
  margin:      0;
  font-size:   var(--font-size-md);
  font-weight: 600;
  color:       var(--color-text);
  line-height: 1.35;
}

body.page-guest-orders .go-headline__sep {
  color:       #cbd5e1;
  font-weight: 400;
  padding:     0 2px;
}

body.page-guest-orders .go-headline__time {
  color: var(--color-primary);
}

body.page-guest-orders .go-code-line {
  margin:      4px 0 0;
  font-size:   var(--font-size-xs);
  color:       var(--color-text-muted);
  line-height: 1.4;
}

body.page-guest-orders .go-code-line code {
  font-size:   var(--font-size-xs);
  color:       #94a3b8;
  font-family: var(--font-mono, ui-monospace, monospace);
}

body.page-guest-orders .go-st {
  display:       inline-flex;
  padding:       2px 8px;
  border-radius: 999px;
  font-size:     var(--font-size-xs);
  font-weight:   600;
  white-space:   nowrap;
  line-height:   1.35;
}

body.page-guest-orders .go-st--pending { background: #fff7ed; color: #c2410c; }
body.page-guest-orders .go-st--confirmed { background: #dcfce7; color: #166534; }
body.page-guest-orders .go-st--posted { background: #e0e7ff; color: #3730a3; }
body.page-guest-orders .go-st--cancelled { background: #fee2e2; color: #991b1b; }

body.page-guest-orders .go-items {
  padding:    8px 10px;
  background: var(--color-bg-white);
}

body.page-guest-orders .go-items-list {
  list-style: none;
  margin:     0;
  padding:    0;
}

body.page-guest-orders .go-item {
  display:     flex;
  align-items: baseline;
  gap:         0;
  padding:     4px 0;
  border-bottom: 1px solid #f1f5f9;
  font-size:   var(--font-size-base);
  line-height: 1.35;
  color:       var(--color-text);
}

body.page-guest-orders .go-item:last-child {
  border-bottom: 0;
}

body.page-guest-orders .go-item__qty {
  font-weight: 600;
  min-width:   1.2em;
}

body.page-guest-orders .go-item__x {
  padding:     0 6px;
  color:       var(--color-text-muted);
  font-weight: 400;
}

body.page-guest-orders .go-item__label {
  flex:        1;
  min-width:   0;
  font-weight: 400;
}

body.page-guest-orders .go-item__variant {
  color:       var(--color-text-muted);
  font-weight: 400;
}

body.page-guest-orders .go-item__variant::before {
  content: ' · ';
  color:   #cbd5e1;
}

body.page-guest-orders .go-item__price {
  margin-left:  10px;
  font-weight:  600;
  color:        #166534;
  font-size:    var(--font-size-sm);
  white-space:  nowrap;
  flex-shrink:  0;
}

body.page-guest-orders .go-notes {
  padding:     0 10px 8px;
  font-size:   var(--font-size-sm);
  color:       var(--color-text-muted);
  font-style:  italic;
  line-height: 1.4;
}

body.page-guest-orders .go-foot {
  display:     flex;
  flex-wrap:   wrap;
  gap:         6px;
  padding:     8px 10px;
  border-top:  1px solid var(--color-border);
  background:  #fbfdff;
  align-items: center;
}

body.page-guest-orders .go-foot .btn-sm {
  padding: 2px 6px;
}

body.page-guest-orders .go-total {
  margin-left: auto;
  font-weight: 600;
  color:       #166534;
  font-size:   var(--font-size-sm);
}

body.page-guest-orders .go-wa--kitchen {
  background:   #25d366;
  border-color: #16a34a;
  color:        #fff;
}

body.page-guest-orders .go-wa--kitchen:hover {
  filter: brightness(1.05);
  color:  #fff;
}

body.page-guest-orders .go-wa-hint {
  width:       100%;
  flex:        1 1 100%;
  font-size:   var(--font-size-xs);
  color:       var(--color-text-muted);
  margin:      0;
  line-height: 1.35;
}

body.page-guest-orders .go-empty {
  padding:       16px;
  text-align:    center;
  border:        1px dashed var(--color-border);
  border-radius: var(--radius-base);
  color:         var(--color-text-muted);
  background:    #f8fafc;
  font-size:     var(--font-size-base);
}

@media (max-width: 900px) {
  body.page-guest-orders .go-foot .go-total {
    margin-left: 0;
    width:       100%;
  }
}


body.page-rooms .toolbar {
  background:    linear-gradient(180deg, #f8fbff 0%, #eef6ff 100%);
  border-bottom: 1px solid #bfdbfe;
  min-height:    28px;
  padding-top:   0;
  padding-bottom: 4px;
}

body.page-rooms .toolbar-left,
body.page-rooms .toolbar-right,
body.page-rooms #toolbar-search-form {
  gap: 6px;
}

body.page-rooms .toolbar .btn,
body.page-rooms .toolbar .input-search {
  min-height:  0;
  padding:     3px 7px;
  font-size:   var(--font-size-xs);
  line-height: 1.2;
}

body.page-rooms .toolbar .input-search {
  height:     auto;
  max-height: none;
  width:      180px;
}

body.page-products .toolbar,
body.page-reservations .toolbar,
body.page-clients .toolbar,
body.page-companies .toolbar,
body.page-rooms .toolbar,
body.page-staff-employees .toolbar,
body.page-payments .toolbar,
body.page-consumption .toolbar,
body.page-reservation-requests .toolbar,
body.page-guest-orders .toolbar,
body.page-guest-portal-links .toolbar {
  background:     linear-gradient(180deg, #f8fbff 0%, #eef6ff 100%);
  border-bottom:  1px solid #bfdbfe;
  min-height:     28px;
  padding-top:    0;
  padding-bottom: 4px;
}

body.page-products .toolbar .btn,
body.page-reservations .toolbar .btn,
body.page-clients .toolbar .btn,
body.page-companies .toolbar .btn,
body.page-rooms .toolbar .btn,
body.page-staff-employees .toolbar .btn,
body.page-payments .toolbar .btn,
body.page-consumption .toolbar .btn,
body.page-reservation-requests .toolbar .btn,
body.page-guest-orders .toolbar .btn {
  min-height:  0;
  padding:     3px 7px;
  font-size:   var(--font-size-xs);
  line-height: 1.2;
}

body.page-products .toolbar-left,
body.page-products .toolbar-right,
body.page-reservations .toolbar-left,
body.page-reservations .toolbar-right,
body.page-clients .toolbar-left,
body.page-clients .toolbar-right,
body.page-companies .toolbar-left,
body.page-companies .toolbar-right,
body.page-rooms .toolbar-left,
body.page-rooms .toolbar-right,
body.page-staff-employees .toolbar-left,
body.page-staff-employees .toolbar-right,
body.page-payments .toolbar-left,
body.page-payments .toolbar-right {
  gap: 6px;
}

body.page-products .toolbar-stats,
body.page-reservations .toolbar-stats,
body.page-clients .toolbar-stats,
body.page-companies .toolbar-stats,
body.page-rooms .toolbar-stats,
body.page-staff-employees .toolbar-stats,
body.page-payments .toolbar-stats {
  color:       var(--color-text-muted);
  font-size:   var(--font-size-sm);
  margin-left: 6px;
}

body.page-products .data-table,
body.page-reservations .data-table,
body.page-clients .data-table,
body.page-companies .data-table,
body.page-rooms .data-table,
body.page-staff-employees .data-table,
body.page-payments .data-table {
  margin-top: 0;
}

.data-table.products-table--compact .status-badge {
  font-size:   var(--font-size-xs);
  padding:     1px 6px;
  min-width:   64px;
}
.data-table.products-table--compact .btn-delete {
  font-size:   var(--font-size-lg);
  line-height: 1;
}

body.page-reservations .data-table tbody td:nth-child(8) .room-badge,
body.page-reservations .data-table tbody td.res-td-suite .room-badge,
body.page-reservations .data-table tbody td:nth-child(10) .status-badge {
  padding:     1px 8px;
  font-size:   var(--font-size-xs);
  font-weight: 400;
  line-height: 1.15;
  min-width:   0;
  max-width:   100%;
  overflow:    hidden;
  text-overflow: ellipsis;
}

body.page-reservations .data-table col.res-col-suite,
body.page-reservations .data-table th:nth-child(8),
body.page-reservations .data-table td.res-td-suite {
  width:     200px;
  min-width: 200px;
  max-width: 240px;
}

body.page-reservations .data-table td.res-td-suite {
  white-space: nowrap;
}

body.page-reservations .data-table tbody td,
body.page-reservations .data-table tbody td .room-badge,
body.page-reservations .data-table tbody td .status-badge,
body.page-reservations .data-table tbody td strong,
body.page-reservations .data-table tbody td span {
  font-size: var(--font-size-xs);
}

body.page-reservations .data-table tbody td:nth-child(10) .status-badge {
  font-weight: 400;
}

body.page-reservations .data-table tbody td {
  padding-top:    2px;
  padding-bottom: 2px;
}

body.page-reservations .data-table thead th {
  background:    #bfdbfe;
  border-bottom: 2px solid #93c5fd;
  color:         #1e3a5f;
  font-size:     var(--font-size-xs);
  font-weight:   500;
  height:        auto;
  line-height:   1.15;
  padding:       3px var(--space-sm) !important;
}

body.page-reservations .data-table thead tr {
  height: auto;
  background: #bfdbfe;
}

body.page-reservations .res-balance {
  font-weight: 400;
  font-size:   inherit;
  line-height: inherit;
}

body.page-reservations .res-balance--due {
  color: #b91c1c;
}

body.page-reservations .res-balance--credit {
  color: #1d4ed8;
}

body.page-reservations .res-balance--ok {
  color: #166534;
}

body.page-clients .data-table thead th {
  border-bottom: 2px solid #93c5fd;
  background:    #bfdbfe;
  color:         #1e3a5f;
  font-size:     var(--font-size-xs);
  font-weight:   500;
  height:        auto;
  line-height:   1.15;
  padding:       3px var(--space-sm) !important;
}

body.page-clients .data-table thead tr {
  height: auto;
}

body.page-clients .data-table tbody td,
body.page-clients .data-table tbody td .status-badge,
body.page-clients .data-table tbody td strong,
body.page-clients .data-table tbody td span {
  font-size: var(--font-size-xs);
  line-height: 1.25;
}

body.page-clients .data-table tbody td {
  padding:        2px var(--space-sm) !important;
  line-height:    1.25 !important;
  overflow:       hidden;
  text-overflow:  ellipsis;
  vertical-align: middle;
  white-space:    nowrap;
}

body.page-clients .data-table tbody tr {
  height: auto;
}

body.page-clients .data-table tbody form {
  display: inline;
  margin:  0;
}

body.page-companies .data-table tbody td,
body.page-rooms .data-table tbody td,
body.page-products .data-table tbody td,
body.page-consumption .data-table tbody td,
body.page-staff-employees .data-table tbody td,
body.page-payments .data-table tbody td {
  font-size:      var(--font-size-xs);
  line-height:    1.25;
  padding-top:    2px;
  padding-bottom: 2px;
  vertical-align: middle;
}

body.page-companies .data-table tbody form,
body.page-rooms .data-table tbody form,
body.page-products .data-table tbody form,
body.page-staff-employees .data-table tbody form,
body.page-payments .data-table tbody form {
  display: inline;
  margin:  0;
}

body.page-companies .data-table tbody td strong,
body.page-rooms .data-table tbody td strong,
body.page-products .data-table tbody td strong,
body.page-consumption .data-table tbody td strong,
body.page-staff-employees .data-table tbody td strong,
body.page-payments .data-table tbody td strong {
  font-weight: 400;
}

body.page-payments .data-table tbody td,
body.page-payments .data-table tbody td .room-badge,
body.page-payments .data-table tbody td .status-badge,
body.page-payments .data-table tbody td strong,
body.page-payments .data-table tbody td span {
  font-size: var(--font-size-xs);
}

body.page-payments .data-table tbody td .room-badge,
body.page-payments .data-table tbody td .status-badge {
  padding:     1px 6px;
  font-weight: 400;
  line-height: 1.15;
  min-width:   64px;
}

body.page-companies .company-name-cell {
  overflow:      hidden;
  text-overflow: ellipsis;
  white-space:   nowrap;
}

body.page-companies .company-name-main,
body.page-companies .company-name-fantasy {
  display:        inline;
  font-size:      var(--font-size-xs);
  line-height:    1.25;
  vertical-align: baseline;
}

body.page-companies .company-name-fantasy {
  color: var(--color-text-muted);
}

body.page-companies .company-name-main + .company-name-fantasy::before {
  content: " - ";
  color:   var(--color-text-muted);
}

body.page-rooms .data-table tbody td .room-badge {
  display:       inline-block;
  max-width:     100%;
  padding:       1px 6px;
  font-size:     var(--font-size-xs);
  font-weight:   400;
  line-height:   1.15;
  overflow:      hidden;
  text-overflow: ellipsis;
  white-space:   nowrap;
  vertical-align: middle;
}

body.page-rooms .room-active-dot {
  display:        inline-block;
  width:          9px;
  height:         9px;
  border-radius:  50%;
  vertical-align: middle;
}

body.page-rooms .room-active-dot--on {
  background: #22c55e;
}

body.page-rooms .room-active-dot--off {
  background: #cbd5e1;
}

body.page-clients .data-table tbody td:first-child {
  overflow: visible;
}

body.page-clients .data-table tbody td strong,
body.page-clients .data-table tbody td .status-badge {
  font-weight: 400;
}

body.page-clients .data-table tbody td:nth-child(9) .status-badge {
  align-items:     center;
  box-sizing:      border-box;
  display:         inline-flex;
  justify-content: center;
  min-height:      0;
  min-width:       64px !important;
  padding:         1px 6px !important;
  line-height:     1.15 !important;
}

body.page-clients .data-table tbody td:nth-child(10) span {
  display:        inline-flex !important;
  width:          9px !important;
  height:         9px !important;
  padding:        0 !important;
  line-height:    1 !important;
  vertical-align: middle;
}

body.page-companies .data-table thead th,
body.page-rooms .data-table thead th,
body.page-consumption .data-table thead th,
body.page-staff-employees .data-table thead th,
body.page-payments .data-table thead th,
body.page-reservation-requests .data-table thead th {
  border-bottom: 2px solid #93c5fd;
  background:    #bfdbfe;
  color:         #1e3a5f;
  font-size:     var(--font-size-xs);
  font-weight:   500;
  height:        auto;
  line-height:   1.15;
  padding:       3px var(--space-sm) !important;
}

body.page-products .data-table.products-table--compact thead tr,
body.page-companies .data-table thead tr,
body.page-rooms .data-table thead tr,
body.page-consumption .data-table thead tr,
body.page-staff-employees .data-table thead tr,
body.page-payments .data-table thead tr {
  height: auto;
}

body.page-products .data-table thead th,
body.page-reservations .data-table thead th,
body.page-clients .data-table thead th,
body.page-companies .data-table thead th,
body.page-rooms .data-table thead th,
body.page-staff-employees .data-table thead th,
body.page-payments .data-table thead th,
body.page-consumption .data-table thead th,
body.page-reservation-requests .data-table thead th {
  background:    #bfdbfe;
  border-bottom: 2px solid #93c5fd;
  color:         #1e3a5f;
  font-size:     var(--font-size-xs);
  font-weight:   500;
  height:        auto;
  line-height:   1.15;
  padding:       3px var(--space-sm) !important;
}

body.page-products .data-table thead tr,
body.page-reservations .data-table thead tr,
body.page-clients .data-table thead tr,
body.page-companies .data-table thead tr,
body.page-rooms .data-table thead tr,
body.page-staff-employees .data-table thead tr,
body.page-payments .data-table thead tr,
body.page-consumption .data-table thead tr,
body.page-reservation-requests .data-table thead tr {
  height: auto;
  background: #bfdbfe;
}

body.page-rooms .data-table thead tr.rooms-header {
  border-bottom: 0;
  color:         #1e3a5f;
  font-size:     var(--font-size-xs);
  font-weight:   500;
  line-height:   1.15;
}

body.page-rooms .data-table thead tr.rooms-header th {
  font-size:   var(--font-size-xs);
  font-weight: 500;
  line-height: 1.15;
  padding:     3px var(--space-sm) !important;
}

.data-table.products-table--compact th.products-table__order,
.data-table.products-table--compact td.products-table__order {
  background: var(--color-bg);
  color:      var(--color-text-muted);
}
.data-table.products-table--compact thead th.products-table__order {
  color: var(--color-text-label);
}
.data-table.products-table--compact tbody tr:hover td.products-table__order {
  background: var(--color-primary-light);
}

/* Folha de ponto — grelha compacta (menos altura entre linhas) */
.data-table.staff-timesheet-grid {
  table-layout: auto;
  width: max-content;
  margin-top: 0;
}
.staff-timesheet-grid th,
.staff-timesheet-grid td {
  padding: 3px 5px;
  vertical-align: middle;
  white-space: nowrap;
  text-align: left;
}
.data-table.staff-timesheet-grid tbody tr {
  height: auto;
}
.staff-timesheet-grid th:nth-child(1),
.staff-timesheet-grid td:nth-child(1) {
  text-align: center;
}
.staff-timesheet-grid thead th:nth-child(n + 2):nth-child(-n + 5) {
  text-align: center;
}
.staff-timesheet-grid thead th:nth-child(6) {
  text-align: right;
}
.staff-timesheet-grid thead th:nth-child(1),
.staff-timesheet-grid thead th:nth-child(n + 2):nth-child(-n + 8) {
  background: #e6ecf4;
}
.staff-timesheet-grid tbody tr.staff-ts-row:not(.staff-ts-row-holiday):not(.staff-ts-row-sat):not(.staff-ts-row-sun) td:nth-child(1),
.staff-timesheet-grid tbody tr.staff-ts-row:not(.staff-ts-row-holiday):not(.staff-ts-row-sat):not(.staff-ts-row-sun) td:nth-child(n + 2):nth-child(-n + 8) {
  background: #eef2f9;
}
.staff-timesheet-grid td.staff-ts-data-cell {
  white-space: nowrap;
  line-height: 1.12;
  padding: 2px 3px;
  position: relative;
  text-align: center;
  vertical-align: middle;
}

/* Data: griglia 2 colonne (GG | weekday); feriato = summary come link che apre il popup */
.staff-timesheet-grid .staff-ts-data-inline {
  display: inline-grid;
  grid-template-columns: 2.25ch 3.05ch;
  column-gap: 0.18em;
  align-items: center;
  justify-items: stretch;
  box-sizing: border-box;
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum" 1;
}

.staff-timesheet-grid .staff-ts-data-inline .staff-ts-data-day {
  text-align: right;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum" 1;
}

.staff-timesheet-grid .staff-ts-data-inline .staff-ts-data-wd {
  text-align: center;
  font-size: 9px;
  font-weight: 500;
  color: var(--color-text-muted);
}

/* Feriado: popup ao clicar na data (summary estilo link); impressão só GG + weekday */
.staff-ts-feriado-print-plain {
  display: none !important;
}

/* Feriado do calendário: nome em pop-up ao clicar na linha da data */
.staff-timesheet-grid .staff-ts-day-holiday-pop {
  display: inline-block;
  vertical-align: middle;
  text-align: center;
}

.staff-timesheet-grid .staff-ts-day-holiday-pop[open] {
  z-index: 160;
}

.staff-timesheet-grid .staff-ts-day-holiday-summary {
  list-style: none;
  cursor: pointer;
  user-select: none;
  text-align: center;
  color: var(--color-primary);
  text-decoration: underline;
  text-decoration-color: rgba(37, 99, 235, 0.4);
  text-underline-offset: 2px;
}

.staff-timesheet-grid .staff-ts-day-holiday-summary:hover {
  color: var(--color-primary-dark);
  text-decoration-color: var(--color-primary);
}

.staff-timesheet-grid .staff-ts-day-holiday-summary.staff-ts-data-inline .staff-ts-data-wd {
  color: inherit;
  opacity: 0.9;
}

.staff-timesheet-grid .staff-ts-day-holiday-summary::-webkit-details-marker {
  display: none;
}

.staff-timesheet-grid .staff-ts-day-holiday-summary::marker {
  content: none;
}

.staff-timesheet-grid .staff-ts-day-holiday-pop[open] .staff-ts-day-holiday-summary {
  outline: 2px solid rgba(37, 99, 235, 0.35);
  outline-offset: 2px;
  border-radius: 4px;
}

.staff-timesheet-grid .staff-ts-day-holiday-body {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  top: calc(100% + 5px);
  z-index: 161;
  min-width: 11rem;
  max-width: min(18rem, 85vw);
  padding: 8px 10px;
  font-size: 11px;
  font-weight: 500;
  line-height: 1.35;
  color: var(--color-text);
  background: var(--color-bg-white, #fff);
  border: 1px solid var(--color-border);
  border-radius: 6px;
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.12);
  text-align: left;
  white-space: normal;
}

.staff-timesheet-grid .staff-ts-data-day {
  font-variant-numeric: tabular-nums;
  font-weight: 600;
  font-size: var(--font-size-sm);
  line-height: 1.1;
}
.staff-timesheet-grid .staff-ts-data-wd {
  font-size: 9px;
  font-weight: 500;
  color: var(--color-text-muted);
  line-height: 1.1;
}
.staff-timesheet-grid input.staff-ts-time,
.staff-timesheet-grid select.staff-ts-kind,
.staff-timesheet-grid input.staff-ts-notes {
  display: inline-block;
  float: none;
  vertical-align: middle;
  margin: 0;
  box-sizing: border-box;
  font-size: var(--font-size-sm);
}
.staff-timesheet-grid input.staff-ts-time {
  width: 3rem;
  min-width: 3rem;
  max-width: 3rem;
  min-height: 1.28rem;
  padding: 2px 3px;
  line-height: 1.15;
  font-size: var(--font-size-sm);
  text-align: center;
  background-color: transparent;
}
.staff-timesheet-grid .staff-ts-st {
  display: block;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: var(--color-text-muted);
  text-align: center;
}
.staff-timesheet-grid select.staff-ts-kind {
  width: 6rem;
  max-width: 7rem;
  min-height: 1.28rem;
  padding: 2px 4px;
  line-height: 1.15;
  font-size: var(--font-size-xs);
  text-align: left;
  background-color: transparent;
}
.staff-timesheet-grid input.staff-ts-notes {
  width: 15ch;
  min-width: 15ch;
  max-width: 15ch;
  min-height: 1.28rem;
  padding: 2px 4px;
  line-height: 1.15;
  font-size: var(--font-size-xs);
  text-align: left;
  background-color: transparent;
  overflow-x: auto;
  overflow-y: hidden;
  white-space: nowrap;
}

/* Total do dia — mesma moldura; linha do dia ≈ HH:MM (2+2 algarismos); rodapé do mês pode ser maior */
.staff-timesheet-grid tbody td.staff-ts-day-total {
  font-variant-numeric: tabular-nums;
  font-weight: 600;
  text-align: right;
  font-size: var(--font-size-sm);
  color: var(--color-text);
  width: 3.25rem;
  min-width: 3.25rem;
  min-height: 1.28rem;
  padding: 2px 4px;
  line-height: 1.15;
  border: 1px solid var(--color-border-dark);
  border-radius: var(--radius-sm);
  box-sizing: border-box;
  vertical-align: middle;
}
.staff-timesheet-grid tfoot td.staff-ts-day-total {
  font-variant-numeric: tabular-nums;
  font-weight: 600;
  text-align: right;
  background: #dff2fb;
  font-size: var(--font-size-sm);
  color: var(--color-text);
  min-width: 4rem;
  max-width: none;
  padding: 3px 5px;
  line-height: 1.15;
  border: 1px solid var(--color-border-dark);
  border-radius: var(--radius-sm);
  box-sizing: border-box;
  vertical-align: middle;
}

.staff-timesheet-grid tfoot td.staff-ts-tfoot-day-slot {
  background: #dff2fb;
}

/*
 * Folha de ponto: Data em grelha 2 cols (DD | weekday); feriado = link que abre popup + batidas até Notas.
 * Anula o hover azul da .data-table nesta grelha.
 */
.data-table.staff-timesheet-grid tbody tr:hover td {
  background: var(--color-bg-white);
}

/* Feriado (calendário) — col. 1–8 verde suave */
.staff-timesheet-grid tbody tr.staff-ts-row-holiday td:nth-child(1),
.staff-timesheet-grid tbody tr.staff-ts-row-holiday td:nth-child(n + 2):nth-child(-n + 8) {
  background: #c9e9d8;
}
.staff-timesheet-grid tbody tr.staff-ts-row-holiday:hover td:nth-child(1),
.staff-timesheet-grid tbody tr.staff-ts-row-holiday:hover td:nth-child(n + 2):nth-child(-n + 8) {
  background: #a9dac4;
}

/* Sábado / domingo — col. 1–8 creme/amarelo suave */
.staff-timesheet-grid tbody tr.staff-ts-row-sat td:nth-child(1),
.staff-timesheet-grid tbody tr.staff-ts-row-sat td:nth-child(n + 2):nth-child(-n + 8),
.staff-timesheet-grid tbody tr.staff-ts-row-sun td:nth-child(1),
.staff-timesheet-grid tbody tr.staff-ts-row-sun td:nth-child(n + 2):nth-child(-n + 8) {
  background: #faf1cf;
}
.staff-timesheet-grid tbody tr.staff-ts-row-sat:hover td:nth-child(1),
.staff-timesheet-grid tbody tr.staff-ts-row-sat:hover td:nth-child(n + 2):nth-child(-n + 8),
.staff-timesheet-grid tbody tr.staff-ts-row-sun:hover td:nth-child(1),
.staff-timesheet-grid tbody tr.staff-ts-row-sun:hover td:nth-child(n + 2):nth-child(-n + 8) {
  background: #f3e2ae;
}

/* Dias úteis — col. 1–8 ao hover */
.staff-timesheet-grid tbody tr.staff-ts-row:not(.staff-ts-row-holiday):not(.staff-ts-row-sat):not(.staff-ts-row-sun):hover td:nth-child(1),
.staff-timesheet-grid tbody tr.staff-ts-row:not(.staff-ts-row-holiday):not(.staff-ts-row-sat):not(.staff-ts-row-sun):hover td:nth-child(n + 2):nth-child(-n + 8) {
  background: #dbe5f2;
}

.staff-timesheet-grid tfoot tr.staff-ts-tfoot-total td {
  border-top: 2px solid var(--color-border);
  background: #dff2fb;
  font-weight: 600;
  padding-top: 4px;
  padding-bottom: 4px;
}

.staff-timesheet-grid .staff-ts-tfoot-month-slot {
  font-variant-numeric: tabular-nums;
  text-align: right;
  vertical-align: middle;
}

.staff-timesheet-grid tfoot td.staff-ts-tfoot-pct-cell {
  vertical-align: middle;
  font-weight: 400;
  padding-left: 4px;
  padding-right: 4px;
}

.staff-timesheet-grid .staff-ts-tfoot-leading-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  width: 100%;
}

.staff-timesheet-grid .staff-ts-tfoot-total-label {
  font-weight: 600;
  font-size: var(--font-size-sm);
  color: var(--color-text);
  text-align: right;
  flex-shrink: 0;
}

.staff-timesheet-grid .staff-ts-tfoot-pct-wrap {
  display: inline-flex;
  align-items: baseline;
  gap: 0;
  margin: 0;
  padding: 0;
  color: #d1d5db;
  font-size: 8px;
  line-height: 1.15;
  flex-shrink: 0;
  max-width: 3.1rem;
}

.staff-timesheet-grid .staff-ts-tfoot-pct-suffix {
  font-size: 8px;
  font-weight: 400;
  color: #d1d5db;
  user-select: none;
}

.staff-timesheet-grid td.staff-ts-tfoot-tail {
  background: #dff2fb;
}

/* Rodapé: em impressão só «Tipo» após o total (sem Notas/Feriado) */
.staff-timesheet-grid td.staff-ts-footer-span-print {
  display: none !important;
}

/* Folha de ponto — layout página (antes era inline no PHP) */
body.page-staff-timesheet-month .staff-ts-page-wrap {
  padding:        0 8px 8px;
  margin-top:     0;
  flex:           1 1 auto;
  display:        flex;
  flex-direction: column;
  min-height:     0;
}

/* Ecrã: maior legibilidade na grelha — fonte base, linhas mais altas, padding lateral reduzido nas células */
body.page-staff-timesheet-month .data-table.staff-timesheet-grid thead th {
  font-size: var(--font-size-xs);
  font-weight: 400;
  padding: 4px 4px;
}
body.page-staff-timesheet-month .data-table.staff-timesheet-grid tbody td,
body.page-staff-timesheet-month .data-table.staff-timesheet-grid tfoot td {
  padding: 4px 3px;
  font-size: var(--font-size-sm);
}
body.page-staff-timesheet-month .staff-timesheet-grid td.staff-ts-data-cell {
  padding: 4px 3px;
  line-height: 1.12;
}
body.page-staff-timesheet-month .staff-timesheet-grid .staff-ts-data-day {
  font-size: var(--font-size-sm);
}
body.page-staff-timesheet-month .staff-timesheet-grid .staff-ts-data-wd {
  font-size: 10px;
}
body.page-staff-timesheet-month .staff-timesheet-grid input.staff-ts-time {
  width: 3rem;
  min-width: 3rem;
  max-width: 3rem;
  min-height: 1.32rem;
  padding: 2px 2px;
  font-size: var(--font-size-sm);
  line-height: 1.1;
}
body.page-staff-timesheet-month .staff-timesheet-grid select.staff-ts-kind {
  font-size: var(--font-size-xs);
  min-height: 1.32rem;
  padding: 2px 4px;
  min-width: 6.25rem;
}
body.page-staff-timesheet-month .staff-timesheet-grid input.staff-ts-notes {
  font-size: var(--font-size-xs);
  min-height: 1.3rem;
  padding: 2px 4px;
}
body.page-staff-timesheet-month .staff-timesheet-grid tbody td.staff-ts-day-total {
  font-size: var(--font-size-sm);
  font-weight: 700;
  min-height: 1.32rem;
  padding: 3px 4px;
}
body.page-staff-timesheet-month .staff-timesheet-grid tfoot td.staff-ts-day-total {
  font-size: var(--font-size-sm);
  font-weight: 700;
  padding: 6px 5px;
}
body.page-staff-timesheet-month .staff-timesheet-grid .staff-ts-tfoot-total-label {
  font-size: var(--font-size-sm);
  font-weight: 700;
}

body.page-staff-timesheet-month .staff-ts-resumo-card:not(.staff-ts-resumo-card--banco) {
  padding: 8px 10px;
}

body.page-staff-timesheet-month .staff-ts-resumo-card--calendar-transporte {
  padding: 0;
  overflow: hidden;
}
body.page-staff-timesheet-month .staff-ts-resumo-card-body-inner {
  padding: 6px 8px;
}
body.page-staff-timesheet-month .staff-ts-advances-inner {
  padding: 6px 8px 8px;
}

.staff-ts-print-title-block {
  display: none;
}

/* Folha de ponto — ecrã: grelha com altura natural; deslocamento vertical na página (sem scroll interno). */
body.page-staff-timesheet-month .staff-ts-scroll-area {
  flex: 0 0 auto;
  min-height: 0;
  overflow: visible;
  margin-top: 0;
}

.staff-ts-print-signature-block {
  margin-top: 0;
  padding: 8px 10px;
  border: none;
  border-radius: 0;
  background: var(--color-surface, #fafafa);
}

.staff-ts-print-declaration {
  margin: 0 0 10px;
  font-size: var(--font-size-xs);
  line-height: 1.28;
  color: var(--color-text);
}

.staff-ts-print-ressalvas {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin: 0 0 12px;
}

.staff-ts-print-ressalvas-line {
  min-height: 1.6rem;
}

.staff-ts-print-sign-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem 1.25rem;
  align-items: flex-end;
}

.staff-ts-print-sign-field {
  flex: 1 1 12rem;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

/* Declaração: espaço antes da assinatura proporcional à linha */
.staff-ts-print-signature-block .staff-ts-print-declaration {
  margin-bottom: 12px;
}

.staff-ts-print-sign-field:first-of-type {
  gap: 8px;
}

/* Linha vazia entre firma e data (só ocupa espaço na impressão; no ecrã não quebra o layout) */
.staff-ts-print-sign-between {
  flex: 0 0 0;
  width: 0;
  min-width: 0;
  max-width: 0;
  height: 0;
  min-height: 0;
  margin: 0;
  padding: 0;
  overflow: hidden;
  pointer-events: none;
}

.staff-ts-print-sign-field--date {
  flex: 0 0 9rem;
}

.staff-ts-print-sign-label {
  font-size: 11px;
  font-weight: 600;
  color: var(--color-text-label);
}

.staff-ts-print-sign-line {
  display: block;
  border-bottom: 1px solid var(--color-text);
  min-height: 1.4rem;
}

.staff-ts-print-sign-line--short {
  min-height: 1.4rem;
}

/* ---------- Folha de ponto — impressão A4 (1 página: grelha + resumos + firma; compacto p/ PDF) ---------- */
@media print {
  body.page-staff-timesheet-month {
    overflow: visible !important;
    height: auto !important;
    background: #fff !important;
    /* Zoom mais baixo = caber grelha + 2 cartões resumo + firma numa única A4 paisagem */
    zoom: 0.76;
  }

  body.page-staff-timesheet-month .page-container {
    overflow: visible !important;
    height: auto !important;
    max-height: none !important;
  }

  body.page-staff-timesheet-month .main-nav,
  body.page-staff-timesheet-month .toolbar,
  body.page-staff-timesheet-month .staff-ts-no-print {
    display: none !important;
  }

  body.page-staff-timesheet-month .staff-ts-screen-header {
    display: none !important;
  }

  body.page-staff-timesheet-month .staff-ts-print-title-block {
    display: block !important;
    margin: 0 0 2px;
  }

  body.page-staff-timesheet-month .staff-ts-print-title {
    margin: 0;
    font-size: 10.5pt;
    font-weight: 700;
    line-height: 1.12;
  }

  /* Evitar flex a esticar altura fantasma na impressão (Chromium) */
  body.page-staff-timesheet-month #ts-month-form {
    display: block !important;
    flex: none !important;
    min-height: 0 !important;
  }

  body.page-staff-timesheet-month .staff-ts-print-signature-block {
    break-inside: avoid;
    page-break-inside: avoid;
    border: none;
    background: transparent;
    padding: 0.8mm 0 0;
    margin-top: 0;
  }

  /* Declaração compacta: menos altura que 2 colunas largas */
  body.page-staff-timesheet-month .staff-ts-print-signature-block .staff-ts-print-declaration {
    font-size: 6.15pt;
    line-height: 1.04;
    margin: 0 0 1.2mm !important;
    column-count: 2;
    column-gap: 3mm;
    column-fill: balance;
    text-align: justify;
    orphans: 1;
    widows: 1;
  }

  body.page-staff-timesheet-month .staff-ts-print-ressalvas {
    margin: 0 0 1.2mm;
    gap: 2px;
  }

  body.page-staff-timesheet-month .staff-ts-print-ressalvas-line {
    min-height: 5mm;
  }

  body.page-staff-timesheet-month .staff-ts-print-sign-grid {
    gap: 4px 8px;
  }

  body.page-staff-timesheet-month .staff-ts-print-sign-field {
    gap: calc(2px + 1.5em);
    flex: 1 1 8rem;
  }

  body.page-staff-timesheet-month .staff-ts-print-sign-between {
    display: none;
  }

  body.page-staff-timesheet-month .staff-ts-print-sign-label {
    font-size: 7pt;
  }

  body.page-staff-timesheet-month .staff-ts-print-sign-line {
    border-bottom-color: #000;
    min-height: 6.5mm;
  }

  body.page-staff-timesheet-month .staff-ts-print-sign-line--short {
    min-height: 6.5mm;
  }

  /* Chromium: margens da página a zero — reduz/elimina a faixa onde o browser desenha URL, data e «página X de Y»
     (não é HTML nosso). O recuo volta pelo padding no wrapper. Em outros browsers ou se «Cabeçalhos» estiver
     forçado na impressora, ainda pode aparecer: desmarque nas opções de impressão. */
  @page {
    size: A4 landscape;
    margin: 0;
  }

  body.page-staff-timesheet-month .staff-ts-page-wrap {
    padding: 2mm 4mm !important;
    box-sizing: border-box;
    max-height: none;
  }

  body.page-staff-timesheet-month .staff-timesheet-grid td.staff-ts-footer-span-screen {
    display: none !important;
  }

  body.page-staff-timesheet-month .staff-timesheet-grid td.staff-ts-footer-span-print {
    display: table-cell !important;
  }

  body.page-staff-timesheet-month .staff-ts-print-hide-col {
    display: none !important;
  }

  body.page-staff-timesheet-month .staff-ts-feriado-print-plain {
    display: flex !important;
    justify-content: center;
    align-items: baseline;
    text-align: center;
    white-space: nowrap;
  }

  body.page-staff-timesheet-month .staff-ts-scroll-area {
    overflow: visible !important;
    flex: none !important;
    min-height: 0 !important;
  }

  body.page-staff-timesheet-month .data-table.staff-timesheet-grid {
    width: 100%;
    max-width: none;
    font-size: 7.2pt;
    table-layout: fixed;
  }

  body.page-staff-timesheet-month .staff-timesheet-grid th,
  body.page-staff-timesheet-month .staff-timesheet-grid td {
    padding: 1px 1px !important;
    line-height: 1.06;
  }

  body.page-staff-timesheet-month .staff-timesheet-grid thead th {
    font-size: 7.2pt;
    font-weight: 600;
    padding: 2px 1px !important;
  }

  body.page-staff-timesheet-month .staff-timesheet-grid td.staff-ts-data-cell {
    padding: 2px 1px !important;
    line-height: 1.06;
    white-space: nowrap !important;
  }

  body.page-staff-timesheet-month .staff-timesheet-grid .staff-ts-data-inline {
    grid-template-columns: 2.2ch 2.95ch;
    column-gap: 0.18em;
    font-variant-numeric: tabular-nums;
    font-feature-settings: "tnum" 1;
  }

  body.page-staff-timesheet-month .staff-timesheet-grid .staff-ts-data-inline .staff-ts-data-day {
    font-size: 7.2pt;
    font-weight: 600;
    text-align: right;
  }

  body.page-staff-timesheet-month .staff-timesheet-grid .staff-ts-data-inline .staff-ts-data-wd {
    font-size: 6.2pt;
    text-align: center;
  }

  body.page-staff-timesheet-month .staff-timesheet-grid input.staff-ts-time {
    border: none;
    padding: 0;
    width: 2.4rem;
    min-width: 2.4rem;
    max-width: 2.4rem;
    min-height: 1.15em;
    font-size: 7.2pt;
    line-height: 1.05;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }

  body.page-staff-timesheet-month .staff-timesheet-grid tbody td.staff-ts-day-total,
  body.page-staff-timesheet-month .staff-timesheet-grid tfoot td.staff-ts-day-total {
    border: none;
    padding: 2px 1px !important;
    border-radius: 0;
    font-size: 7.2pt;
    min-height: 1.05em;
  }

  body.page-staff-timesheet-month .staff-timesheet-grid tfoot tr.staff-ts-tfoot-total td {
    padding-top: 2px !important;
    padding-bottom: 2px !important;
    border-top-width: 1px;
  }

  body.page-staff-timesheet-month .staff-timesheet-grid .staff-ts-tfoot-total-label {
    font-size: 7.2pt;
  }

  body.page-staff-timesheet-month .staff-timesheet-grid select.staff-ts-kind {
    border: none;
    font-size: 6.75pt;
    width: auto;
    max-width: 5.25rem;
    min-height: 0;
    padding: 0;
    line-height: 1.05;
    background: transparent;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }

  body.page-staff-timesheet-month .staff-timesheet-grid .staff-ts-tfoot-comp-pct-input {
    font-size: 6.65pt;
  }

  body.page-staff-timesheet-month .staff-ts-resumo-panels {
    max-width: none;
    gap: 3px;
    margin-top: 2px !important;
    flex-wrap: nowrap;
  }

  body.page-staff-timesheet-month .staff-ts-resumo-card {
    flex: 1 1 0;
    min-width: 0;
    padding: 2px 3px;
    font-size: 7.2pt;
  }

  body.page-staff-timesheet-month .staff-ts-resumo-card--banco {
    padding: 0;
  }

  body.page-staff-timesheet-month .staff-ts-resumo-card--calendar-transporte {
    padding: 0;
  }

  body.page-staff-timesheet-month .staff-ts-resumo-banco-banner {
    padding: 2px 4px;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }

  body.page-staff-timesheet-month .staff-ts-resumo-banco-banner-title {
    font-size: 7.5pt;
    line-height: 1.15;
    font-weight: 700;
  }

  body.page-staff-timesheet-month .staff-ts-resumo-card--calendar-transporte .staff-ts-resumo-card-body-inner {
    padding: 2px 3px 3px !important;
  }

  body.page-staff-timesheet-month .staff-ts-resumo-card--banco .staff-ts-advances-section {
    margin-top: 2px !important;
    margin-left: -4px !important;
    margin-right: -4px !important;
  }

  body.page-staff-timesheet-month .staff-ts-advances-banner {
    padding: 2px 4px;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }

  body.page-staff-timesheet-month .staff-ts-advances-banner-title {
    font-size: 7.5pt;
    line-height: 1.15;
  }

  body.page-staff-timesheet-month .staff-ts-advances-inner {
    padding: 2px 4px 3px !important;
  }

  body.page-staff-timesheet-month .staff-ts-resumo-card-body-inner {
    padding: 3px 4px;
  }

  body.page-staff-timesheet-month .staff-ts-resumo-kv th,
  body.page-staff-timesheet-month .staff-ts-resumo-kv td {
    padding: 1px 2px !important;
    font-size: 7.2pt;
  }

  body.page-staff-timesheet-month .data-table.staff-ts-advances-table {
    font-size: 6.5pt;
    margin-bottom: 2px !important;
  }

  body.page-staff-timesheet-month .data-table.staff-ts-advances-table th,
  body.page-staff-timesheet-month .data-table.staff-ts-advances-table td {
    padding: 1px 3px !important;
  }

  body.page-staff-timesheet-month .staff-ts-advance-desc,
  body.page-staff-timesheet-month .staff-ts-advance-amount {
    font-size: 7pt !important;
    padding: 1px 3px !important;
    min-height: 0 !important;
    border: none !important;
    background: transparent !important;
  }

  body.page-staff-timesheet-month .staff-ts-advances-total-foot {
    font-size: 6.85pt;
    padding-top: 1px !important;
  }

  body.page-staff-timesheet-month .data-table.staff-ts-resumo-kv--3col thead th {
    padding: 1px 3px !important;
    font-size: 6.35pt !important;
    font-weight: 300 !important;
    line-height: 1.15;
    color: #4b5563 !important;
    background: #f1f5f9 !important;
    border-bottom: 1px solid rgba(15, 23, 42, 0.15) !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }

  body.page-staff-timesheet-month .data-table.staff-ts-resumo-kv--3col thead th.staff-ts-resumo-kv3-ht-desc {
    text-align: left !important;
  }

  body.page-staff-timesheet-month .data-table.staff-ts-resumo-kv--3col thead th.staff-ts-resumo-kv3-ht-mid {
    text-align: center !important;
  }

  body.page-staff-timesheet-month .data-table.staff-ts-resumo-kv--3col thead th.staff-ts-resumo-kv3-ht-out {
    text-align: right !important;
  }

  body.page-staff-timesheet-month .data-table.staff-ts-resumo-kv--3col th[scope="row"],
  body.page-staff-timesheet-month .data-table.staff-ts-resumo-kv--3col td {
    padding: 1px 3px !important;
    border-bottom-width: 1px;
    font-size: 6.85pt !important;
    line-height: 1.08;
  }

  body.page-staff-timesheet-month .data-table.staff-ts-resumo-kv--3col td.staff-ts-resumo-col-mid {
    padding: 1px 2px !important;
  }

  body.page-staff-timesheet-month .data-table.staff-ts-resumo-kv--3col td.staff-ts-resumo-col-out {
    padding: 1px 3px !important;
  }

  body.page-staff-timesheet-month .data-table.staff-ts-resumo-kv--3col .staff-ts-mini-num,
  body.page-staff-timesheet-month .data-table.staff-ts-resumo-kv--3col .staff-ts-mini-money {
    font-size: 6.5pt !important;
    padding: 0 1px !important;
  }

  body.page-staff-timesheet-month .staff-ts-resumo-kv--3col {
    border-radius: 4px;
    border: 1px solid #94a3b8 !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }

  body.page-staff-timesheet-month .data-table.staff-ts-resumo-kv--3col td.staff-ts-resumo-col-out .staff-ts-resumo-hour-format-tag {
    font-size: 6px !important;
  }

  body.page-staff-timesheet-month .staff-ts-resumo-meta-hint {
    font-size: 6.3pt !important;
    margin-top: 4px !important;
  }

  body.page-staff-timesheet-month .staff-ts-resumo-pop {
    display: none !important;
  }

  body.page-staff-timesheet-month .data-table.staff-timesheet-grid tbody tr:hover td {
    background: inherit !important;
  }

  body.page-staff-timesheet-month .data-table tr:hover td {
    background: inherit !important;
  }
}

/* Compensação % — mínimo na grelha; «Total» na mesma célula larga, à direita */
.staff-ts-tfoot-comp-pct-input {
  width: 2.35rem;
  min-width: 0;
  max-width: 2.65rem;
  box-sizing: border-box;
  padding: 0;
  margin: 0;
  font-size: 8px;
  line-height: 1.15;
  text-align: left;
  color: #d1d5db;
  background: transparent;
  border: none;
  border-radius: 0;
}

.staff-ts-tfoot-comp-pct-input::placeholder {
  color: #e5e7eb;
}

.staff-ts-tfoot-comp-pct-input:focus {
  outline: none;
  color: #b4bcc8;
}

.staff-ts-resumo-panels {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-md);
  margin-top: var(--space-md);
  max-width: 52rem;
  overflow: visible;
}

.staff-ts-resumo-card {
  flex: 1 1 20rem;
  min-width: 17rem;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  padding: 10px 12px;
  background: var(--color-surface, #fafafa);
  overflow: visible;
}

.staff-ts-resumo-card-title {
  font-weight: 600;
  font-size: var(--font-size-sm);
  color: var(--color-text-label);
  margin: 0 0 8px;
}

.staff-ts-resumo-card--banco {
  padding: 0;
  overflow: hidden;
}

.staff-ts-resumo-card--assinatura {
  padding: 0;
  overflow: hidden;
}

/* Adiantamentos: faixa igual ao «Banco de horas», dentro do mesmo cartão */
.staff-ts-resumo-card--banco .staff-ts-advances-section {
  margin-top: 10px;
  margin-left: -12px;
  margin-right: -12px;
  overflow: hidden;
  border-top: 1px solid var(--color-border);
}

.staff-ts-advances-banner {
  min-height: 21px;
  padding: 4px 4px;
  text-align: center;
  background: #e6ecf4;
  border-bottom: 1px solid var(--color-border);
  box-sizing: border-box;
  display: flex;
  align-items: center;
  justify-content: center;
}

.staff-ts-advances-banner-title {
  display: inline-block;
  font-weight: 700;
  font-size: var(--font-size-xs);
  color: var(--color-text-label);
  letter-spacing: normal;
}

.staff-ts-advances-inner {
  padding: 8px 12px 10px;
  background: var(--color-surface, #fafafa);
}

.data-table.staff-ts-advances-table {
  width: 100%;
  font-size: var(--font-size-sm);
  margin: 0 0 4px;
}

.data-table.staff-ts-advances-table th,
.data-table.staff-ts-advances-table td {
  vertical-align: middle;
}

.data-table.staff-ts-advances-table--dense thead th {
  padding: 2px 4px;
  font-size: 10px;
  font-weight: 600;
  line-height: 1.2;
  border-bottom: 1px solid var(--color-border);
}

.data-table.staff-ts-advances-table--dense tbody td {
  padding: 1px 3px;
  line-height: 1.15;
}

.staff-ts-advances-col-valor {
  width: 5.25rem;
  max-width: 30%;
  text-align: right;
}

.data-table.staff-ts-advances-table--dense .staff-ts-advance-desc,
.data-table.staff-ts-advances-table--dense .staff-ts-advance-amount {
  padding: 2px 4px;
  font-size: 11px;
  line-height: 1.2;
  min-height: 1.35rem;
  border-radius: 3px;
}

.staff-ts-advance-desc {
  width: 100%;
  box-sizing: border-box;
  padding: 4px 6px;
  font-size: var(--font-size-sm);
  border: 1px solid var(--color-border);
  border-radius: 4px;
}

.staff-ts-advance-amount {
  width: 100%;
  box-sizing: border-box;
  padding: 4px 6px;
  font-size: var(--font-size-sm);
  text-align: right;
  font-variant-numeric: tabular-nums;
  border: 1px solid var(--color-border);
  border-radius: 4px;
}

.staff-ts-advances-total-foot {
  display: flex;
  justify-content: flex-end;
  align-items: baseline;
  gap: 8px;
  padding-top: 3px;
  border-top: 1px solid var(--color-border);
  font-size: var(--font-size-xs);
}

.staff-ts-advances-total-foot--dense {
  padding-top: 2px;
  margin-top: 0;
  gap: 6px;
}

.staff-ts-resumo-meta-hint--tight {
  margin-top: 6px;
  margin-bottom: 0;
  font-size: 11px;
}

.staff-ts-advances-total-label {
  font-weight: 400;
  color: var(--color-text-label);
}

.staff-ts-advances-total-value {
  font-variant-numeric: tabular-nums;
}

.staff-ts-resumo-banco-banner {
  min-height: 21px;
  padding: 4px 4px;
  text-align: center;
  background: #e6ecf4;
  border-bottom: 1px solid var(--color-border);
  box-sizing: border-box;
  display: flex;
  align-items: center;
  justify-content: center;
}

.staff-ts-resumo-banco-banner-title {
  display: inline-block;
  font-weight: 700;
  font-size: var(--font-size-xs);
  color: var(--color-text-label);
  letter-spacing: normal;
}

.staff-ts-resumo-card-body-inner {
  padding: 10px 12px;
}

.staff-ts-resumo-card-body-inner > .staff-ts-resumo-meta-hint:last-child {
  margin-bottom: 0;
}

.data-table.staff-ts-resumo-kv {
  width: 100%;
  font-size: var(--font-size-sm);
  margin: 0;
  overflow: visible;
}

/* Resumo calendário + transporte: 3 colunas (rótulos + valor diário | dias / contagens | totais & extra) */
.data-table.staff-ts-resumo-kv--3col {
  table-layout: fixed;
  border-collapse: separate;
  border-spacing: 0;
  border: 1px solid var(--color-border);
  border-radius: 8px;
  overflow: hidden;
}

.data-table.staff-ts-resumo-kv--3col col.staff-ts-resumo-bg-label {
  width: 62%;
  background-color: #d4dce8;
}

.data-table.staff-ts-resumo-kv--3col col.staff-ts-resumo-bg-mid {
  width: 19%;
  background-color: #cfd8e3;
}

.data-table.staff-ts-resumo-kv--3col col.staff-ts-resumo-bg-out {
  width: 19%;
  background-color: #c9d2de;
}

/* Cabeçalho das 3 colunas dentro do mesmo requadro da tabela (linha fina acima dos dados) */
.data-table.staff-ts-resumo-kv--3col thead th {
  position: static;
  top: auto;
  z-index: auto;
  box-shadow: none;
  padding: 6px 10px;
  font-size: 11px;
  font-weight: 300;
  color: var(--color-text-muted);
  letter-spacing: 0.03em;
  vertical-align: middle;
  white-space: nowrap;
  border-bottom: 1px solid rgba(15, 23, 42, 0.12);
  background: rgba(255, 255, 255, 0.65);
}

.data-table.staff-ts-resumo-kv--3col thead th.staff-ts-resumo-kv3-ht-desc {
  text-align: left;
}

.data-table.staff-ts-resumo-kv--3col thead th.staff-ts-resumo-kv3-ht-mid {
  text-align: center;
}

.data-table.staff-ts-resumo-kv--3col thead th.staff-ts-resumo-kv3-ht-out {
  text-align: right;
}

.data-table.staff-ts-resumo-kv--3col th[scope="row"] {
  padding: 8px 10px;
  vertical-align: middle;
  border-bottom: 1px solid rgba(15, 23, 42, 0.08);
  font-weight: 400;
  color: var(--color-text);
}

.data-table.staff-ts-resumo-kv--3col td {
  vertical-align: middle;
  border-bottom: 1px solid rgba(15, 23, 42, 0.08);
  font-weight: 400;
}

.data-table.staff-ts-resumo-kv--3col tbody tr:last-child th,
.data-table.staff-ts-resumo-kv--3col tbody tr:last-child td {
  border-bottom: none;
}

.data-table.staff-ts-resumo-kv--3col td.staff-ts-resumo-col-mid {
  padding: 5px 3px;
  text-align: center;
  font-variant-numeric: tabular-nums;
}

.data-table.staff-ts-resumo-kv--3col td.staff-ts-resumo-col-out {
  padding: 5px 4px 5px 2px;
  text-align: right;
  font-variant-numeric: tabular-nums;
}

.data-table.staff-ts-resumo-kv--3col .staff-ts-mini-num {
  width: 2.15rem;
  min-width: 0;
  padding: 2px 3px;
  font-size: 10px;
}

.data-table.staff-ts-resumo-kv--3col td.staff-ts-resumo-col-out .staff-ts-resumo-sub {
  margin-left: 0;
  font-size: 10px;
  line-height: 1.25;
}

.data-table.staff-ts-resumo-kv--3col td.staff-ts-resumo-col-out .staff-ts-resumo-hour-with-label {
  display: inline-flex;
  align-items: baseline;
  justify-content: flex-end;
  gap: 5px;
  flex-wrap: wrap;
}

.data-table.staff-ts-resumo-kv--3col td.staff-ts-resumo-col-out .staff-ts-resumo-hour-format-tag {
  font-size: 7px;
  font-weight: 500;
  color: var(--color-text-muted);
  letter-spacing: 0.02em;
  user-select: none;
  flex-shrink: 0;
  line-height: 1.2;
}

#staff-ts-resumo-diff.staff-ts-resumo-diff--negative {
  color: var(--color-danger);
}

.data-table.staff-ts-resumo-kv--3col td.staff-ts-resumo-col-mid--muted {
  color: var(--color-text-muted);
}

.data-table.staff-ts-resumo-kv--3col .staff-ts-resumo-result-cell strong,
.data-table.staff-ts-resumo-kv--3col .staff-ts-resumo-hour-total-strong {
  font-size: 11px;
  font-weight: 400;
  font-variant-numeric: tabular-nums;
}

.data-table.staff-ts-resumo-kv--3col .staff-ts-resumo-days-input {
  display: inline-block;
  vertical-align: middle;
}

/* Transporte pago na col. 1: título + ℹ️ + R$ + campo na mesma linha */
.staff-ts-resumo-transporte-th-inline {
  display: flex;
  flex-flow: row wrap;
  align-items: center;
  gap: 6px 8px;
}

.data-table.staff-ts-resumo-kv--3col .staff-ts-resumo-row-transporte .staff-ts-resumo-transporte-th-inline {
  gap: 5px 6px;
}

/* Variável (R$ + campo) à esquerda; título + ℹ️ colados à direita da coluna */
.data-table.staff-ts-resumo-kv--3col tr.staff-ts-resumo-row-transporte-pago th.staff-ts-resumo-th-transporte {
  text-align: left;
}

.data-table.staff-ts-resumo-kv--3col tr.staff-ts-resumo-row-transporte-pago .staff-ts-resumo-transporte-th-inline--spread {
  flex-wrap: nowrap;
  justify-content: space-between;
  align-items: center;
  width: 100%;
  gap: 8px 12px;
}

.data-table.staff-ts-resumo-kv--3col tr.staff-ts-resumo-row-transporte-pago .staff-ts-resumo-th-title-wrap--pago-start {
  justify-content: flex-start;
  text-align: left;
  flex-shrink: 0;
}

.data-table.staff-ts-resumo-kv--3col tr.staff-ts-resumo-row-transporte-pago .staff-ts-resumo-th-daily-group--pago-var {
  justify-content: flex-end;
  margin-left: auto;
  flex-shrink: 0;
}

.data-table.staff-ts-resumo-kv--3col .staff-ts-resumo-row-transporte .staff-ts-resumo-th-daily-group--inline {
  flex-shrink: 0;
}

/* Valor diário (col. 1): mesmo «carácter» que os campos da col. 2 (.staff-ts-mini-num nesta tabela) */
.data-table.staff-ts-resumo-kv--3col .staff-ts-resumo-row-transporte .staff-ts-resumo-daily-in-th--compact {
  width: 2.35rem;
  min-width: 2.35rem;
  max-width: 2.5rem;
  padding: 2px 3px;
  font-size: 10px;
  line-height: 1.2;
  font-variant-numeric: tabular-nums;
  font-weight: 500;
  color: #4b5563;
}

.data-table.staff-ts-resumo-kv--3col .staff-ts-resumo-row-transporte .staff-ts-resumo-th-daily-group--compact .staff-ts-resumo-th-daily-prefix {
  font-size: 10px;
  font-weight: 500;
  color: #4b5563;
}

.staff-ts-resumo-card--calendar-transporte {
  flex: 1 1 28rem;
  min-width: min(100%, 26rem);
  padding: 0;
  overflow: hidden;
}

@media screen {
  body.page-staff-timesheet-month .staff-ts-main-layout {
    display: flex;
    align-items: stretch;
    gap: 10px;
    width: 100%;
    overflow-x: auto;
  }

  body.page-staff-timesheet-month .staff-ts-main-layout .staff-ts-scroll-area {
    flex: 0 0 auto;
  }

  body.page-staff-timesheet-month .staff-ts-main-layout .staff-ts-resumo-panels {
    display: flex;
    flex: 0 0 28rem;
    flex-direction: column;
    flex-wrap: nowrap;
    gap: 8px;
    width: 28rem;
    max-width: 28rem;
    margin-top: 0 !important;
    padding-top: 0 !important;
  }

  body.page-staff-timesheet-month .staff-ts-main-layout .staff-ts-resumo-card,
  body.page-staff-timesheet-month .staff-ts-main-layout .staff-ts-resumo-card--calendar-transporte {
    flex: 0 0 auto;
    width: 100%;
    min-width: 0;
    max-width: 100%;
  }

  body.page-staff-timesheet-month .staff-ts-main-layout .staff-ts-resumo-panels > .staff-ts-resumo-card:first-child {
    margin-top: 0 !important;
    padding-top: 0 !important;
  }

  body.page-staff-timesheet-month .staff-ts-main-layout .staff-ts-resumo-panels > .staff-ts-resumo-card:first-child .staff-ts-resumo-banco-banner {
    margin-top: 0 !important;
  }

  body.page-staff-timesheet-month .staff-ts-main-layout .staff-ts-resumo-card--adiantamentos {
    padding: 0;
    overflow: hidden;
  }

  body.page-staff-timesheet-month .staff-ts-main-layout .staff-ts-resumo-card--assinatura {
    padding: 0;
    overflow: hidden;
  }
}

@media screen and (max-width: 1100px) {
  body.page-staff-timesheet-month .staff-ts-main-layout {
    flex-wrap: wrap;
    overflow-x: visible;
  }

  body.page-staff-timesheet-month .staff-ts-main-layout .staff-ts-resumo-panels {
    flex: 1 1 100%;
    width: 100%;
    max-width: 52rem;
  }
}

.data-table.staff-ts-resumo-kv:not(.staff-ts-resumo-kv--3col) th {
  width: 58%;
}

.data-table.staff-ts-resumo-kv th {
  font-weight: 400;
  text-align: left;
  padding: 5px 8px 5px 0;
  vertical-align: top;
  color: var(--color-text-label);
  /* Anula .data-table th global (sticky) — quebrava overlays ℹ️ em cada linha */
  position: static;
  top: auto;
  z-index: auto;
  box-shadow: none;
  white-space: normal;
  overflow: visible;
}

.data-table.staff-ts-resumo-kv--3col tbody th {
  font-weight: 400;
  color: var(--color-text);
}

.data-table.staff-ts-resumo-kv th.staff-ts-resumo-th-transporte {
  vertical-align: middle;
}

.staff-ts-resumo-th-title-wrap {
  display: inline-flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 4px 6px;
}

.staff-ts-resumo-th-text {
  flex: 0 0 auto;
}

.staff-ts-resumo-th-daily-group {
  display: inline-flex;
  align-items: center;
  gap: 4px;
}

.staff-ts-resumo-th-daily-prefix {
  font-size: 11px;
  font-weight: 500;
  color: var(--color-text-muted);
}

.staff-ts-resumo-daily-in-th {
  width: 4rem;
  max-width: 4.5rem;
  padding: 3px 5px;
  font-size: var(--font-size-sm);
}

.staff-ts-resumo-th-title-wrap--transporte {
  display: inline-flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 2px 6px;
}

.staff-ts-resumo-th-daily-group--compact {
  gap: 2px;
}

.staff-ts-resumo-th-daily-group--compact .staff-ts-resumo-th-daily-prefix {
  font-size: 8px;
  font-weight: 500;
  color: #4b5563;
}

.staff-ts-resumo-daily-in-th--compact {
  width: 2.85rem;
  min-width: 2.85rem;
  max-width: 2.95rem;
  padding: 2px 3px;
  font-size: 9px;
  line-height: 1.2;
  font-variant-numeric: tabular-nums;
  font-weight: 500;
  color: #4b5563;
}

.staff-ts-resumo-daily-in-th--compact::placeholder {
  color: #6b7280;
  opacity: 1;
}

.staff-ts-resumo-daily-in-th--compact:focus {
  color: #374151;
}

.data-table.staff-ts-resumo-kv td {
  padding: 5px 0;
  vertical-align: top;
  overflow: visible;
}

.data-table.staff-ts-resumo-kv tr.staff-ts-banco-row-highlight th,
.data-table.staff-ts-resumo-kv tr.staff-ts-banco-row-highlight td {
  background: #dbeafe;
}

.data-table.staff-ts-resumo-kv tr.staff-ts-banco-row-highlight--current th,
.data-table.staff-ts-resumo-kv tr.staff-ts-banco-row-highlight--current td {
  background: #bbf7d0;
}

.staff-ts-resumo-sub {
  font-size: 11px;
  color: var(--color-text-muted);
  font-weight: 400;
  margin-left: 4px;
  white-space: nowrap;
}

/* Ajuda contextual no resumo (click no ℹ️) — ao lado do título no <th> */
.staff-ts-resumo-pop {
  display: inline-block;
  vertical-align: middle;
  margin-left: 0;
  position: relative;
  z-index: 1;
}

.staff-ts-resumo-pop[open] {
  z-index: 150;
}

.staff-ts-resumo-pop.staff-ts-resumo-pop--in-th {
  margin-left: 2px;
  vertical-align: baseline;
}

.staff-ts-resumo-pop-trigger {
  list-style: none;
  cursor: pointer;
  width: 11px;
  height: 11px;
  padding: 0;
  border: 1px solid currentColor;
  border-radius: 50%;
  font-size: 8px;
  font-weight: 600;
  line-height: 1;
  user-select: none;
  color: var(--color-text-muted);
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.staff-ts-resumo-pop-trigger::-webkit-details-marker {
  display: none;
}

.staff-ts-resumo-pop-trigger::marker {
  content: none;
}

.staff-ts-resumo-pop[open] .staff-ts-resumo-pop-trigger {
  color: var(--color-primary, #2563eb);
  background: var(--color-primary-light, #e0f2fe);
}

.staff-ts-resumo-pop-body {
  position: absolute;
  left: 0;
  top: calc(100% + 6px);
  z-index: 151;
  min-width: 15rem;
  max-width: min(22rem, calc(100vw - 24px));
  padding: 10px 12px;
  font-size: 11px;
  font-weight: 400;
  line-height: 1.4;
  color: var(--color-text);
  background: var(--color-bg-white, #fff);
  border: 1px solid var(--color-border);
  border-radius: 6px;
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.12);
}

.staff-ts-resumo-pop-body strong {
  font-weight: 600;
}

.staff-ts-resumo-field-cell .staff-ts-resumo-inline-inputs {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
}

.staff-ts-resumo-transporte-formula {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 8px;
}

.staff-ts-resumo-transporte-x,
.staff-ts-resumo-transporte-eq {
  font-weight: 600;
  color: var(--color-text-muted);
  font-size: var(--font-size-sm);
}

.staff-ts-resumo-transporte-total {
  font-variant-numeric: tabular-nums;
}

.staff-ts-resumo-td-one-line {
  white-space: nowrap;
}

.staff-ts-resumo-transporte-formula--single {
  flex-wrap: nowrap;
  align-items: center;
  gap: 4px 6px;
}

.staff-ts-resumo-transporte-formula--days-eq-total {
  flex-wrap: nowrap;
  align-items: center;
  gap: 6px 8px;
}

.staff-ts-should-pay-input {
  max-width: 6rem;
}

.staff-ts-resumo-field-cell label {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 11px;
  font-weight: 500;
  color: var(--color-text-muted);
}

.staff-ts-mini-num {
  width: 2.5rem;
  padding: 3px 5px;
  font-size: var(--font-size-sm);
  text-align: center;
}

.staff-ts-mini-money,
.staff-ts-mini-hours {
  width: 5rem;
  padding: 3px 5px;
  font-size: var(--font-size-sm);
}

.staff-ts-resumo-meta-hint {
  margin: 8px 0 0;
  font-size: 11px;
  color: var(--color-text-muted);
  line-height: 1.35;
}

.rooms-header {
  font-weight:   600;
  font-size:     var(--font-size-sm);
  color:         var(--color-text-label);
  border-bottom: 2px solid var(--color-border);
  background:    var(--color-surface);
  position:      sticky;
  top:           0;
  z-index:       50;
  box-shadow:    0 1px 0 var(--color-border);
}

/* Result rows flex (lista prenotazioni) */
#results { margin-top: var(--space-md); }

.result-row {
  display:       flex;
  align-items:   center;
  gap:           var(--space-sm);
  padding:       var(--space-xs) 0;
  min-height:    32px;
  border-bottom: 1px solid var(--color-border);
  cursor:        pointer;
  transition:    background var(--transition-fast);
}

.result-row.reservas-row {
  display:               grid;
  grid-template-columns: 26px 55px 55px 55px 30px 30px 110px 234px 90px;
  padding:               var(--space-xs) var(--space-sm);
}

.result-row:hover        { background: var(--color-primary-light); }
.result-row:last-child   { border-bottom: none; }

.col-actions { width: 26px; min-width: 26px; flex-shrink: 0; display: flex; justify-content: center; align-items: center; }
.col-guest   { width: 234px; min-width: 234px; max-width: 234px; font-size: var(--font-size-sm); overflow: hidden; }
.col-room    { width: 100px; min-width: 100px; font-size: var(--font-size-sm); white-space: nowrap; }
.col-dates   { width: 55px; min-width: 55px; font-size: var(--font-size-sm); text-align: center; white-space: nowrap; }
.col-dates.col-narrow { width: 30px; min-width: 30px; }
.col-status  { width: 90px; min-width: 90px; max-width: 90px; text-align: center; font-size: var(--font-size-sm); }
.col-ref     { width: 55px; min-width: 55px; font-size: var(--font-size-xs); color: var(--color-text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }


/* ============================================================
   9. STATUS & ROOM BADGES
   ============================================================ */

.status-badge {
  display:       inline-block;
  padding:       2px 8px;
  border-radius: var(--radius-pill);
  font-size:     var(--font-size-sm);
  font-weight:   600;
  min-width:     80px;
  text-align:    center;
  white-space:   nowrap;
}

.status-confirmed  { background: var(--status-confirmed); color: var(--status-confirmed-txt); }
.status-pending    { background: var(--status-pending);   color: var(--status-pending-txt); }
.status-cancel     { background: var(--status-cancel);    color: var(--status-cancel-txt); }
.status-in         { background: var(--status-in);        color: var(--status-in-txt); }
.status-out        { background: var(--status-out);       color: var(--status-out-txt); }
.status-noshow     { background: var(--status-noshow);    color: var(--status-noshow-txt); }
.status-blocked    { background: var(--status-blocked);   color: var(--status-blocked-txt); }
.status-bonus      { background: var(--status-bonus);     color: var(--status-bonus-txt); }

/* status-checkedin, status-checkedout (alias per CSS generato da str_replace) */
.status-checkedin  { background: var(--status-in);  color: var(--status-in-txt); }
.status-checkedout { background: var(--status-out); color: var(--status-out-txt); }
.status-noshow     { background: var(--status-noshow); color: var(--status-noshow-txt); }

.room-badge {
  display:       inline-block;
  padding:       2px 8px;
  border-radius: var(--radius-pill);
  font-size:     var(--font-size-sm);
  font-weight:   500;
  background:    var(--color-border);
  color:         var(--color-text);
  white-space:   nowrap;
}

.room-badge.room-1  { background:#cafcc3; color:#333; }
.room-badge.room-2  { background:#b2e8ff; color:#333; }
.room-badge.room-3  { background:#71d159; color:#fff; }
.room-badge.room-4  { background:#f7ff84; color:#333; }
.room-badge.room-5  { background:#ff9f3f; color:#fff; }
.room-badge.room-6  { background:#ffd1d6; color:#333; }
.room-badge.room-7  { background:#fff4b4; color:#333; }
.room-badge.room-8  { background:#effa58; color:#333; }
.room-badge.room-9  { background:#b8c5ff; color:#333; }
.room-badge.room-10 { background:#fd6180; color:#fff; }
.room-badge.room-11 { background:#333333; color:#fff; }
.room-badge.room-12 { background:#a7f3d0; color:#333; }
.room-badge.room-13 { background:#fbcfe8; color:#333; }
.room-badge.room-14 { background:#fde68a; color:#333; }
.room-badge.room-15 { background:#6ee7b7; color:#333; }
.room-badge.room-16 { background:#c7d2fe; color:#333; }
.room-badge.room-17 { background:#fed7aa; color:#333; }
.room-badge.room-18 { background:#f9a8d4; color:#333; }
.room-badge.room-19 { background:#86efac; color:#333; }
.room-badge.room-20 { background:#67e8f9; color:#333; }


/* ============================================================
   10. CALENDARIO
   ============================================================ */

.calendar-topbar {
  padding:         0 var(--space-md) 4px;
  display:         flex;
  align-items:     center;
  justify-content: space-between;
  margin-bottom:   0;
  background:      linear-gradient(180deg, #eef6ff 0%, #dbeafe 100%);
  border-bottom:   1px solid #93c5fd;
  min-height:      28px;
  flex-shrink:     0;
}

.calendar-left,
.calendar-right { display: flex; gap: 6px; align-items: center; }

.calendar-title {
  flex:         1;
  text-align:   center;
  font-size:    var(--font-size-sm);
  font-weight:  400;
  letter-spacing: normal;
  white-space:  nowrap;
}

body.page-calendar .calendar-topbar .btn {
  height:      auto !important;
  min-height:  0;
  padding:     3px 7px !important;
  font-size:   var(--font-size-xs);
  line-height: 1.2;
}

body.page-prices-calendar .page-body-scroll {
  padding-top: 0;
}

body.page-prices-calendar .prices-calendar-toolbar-form {
  display:     inline-flex;
  align-items: center;
  gap:         6px;
  margin:      0;
}

body.page-prices-calendar .toolbar select {
  height:      auto;
  min-height:  0;
  padding:     3px 7px;
  font-size:   var(--font-size-xs);
  line-height: 1.2;
}

body.page-prices-calendar .calendar-topbar {
  background:     linear-gradient(180deg, #eef6ff 0%, #dbeafe 100%);
  border-bottom:  1px solid #93c5fd;
  margin-bottom:  0;
  min-height:     32px;
  padding:        0 var(--space-md) 4px;
}

body.page-prices-calendar .calendar-left,
body.page-prices-calendar .calendar-right,
body.page-prices-calendar .calendar-right form {
  gap: 6px !important;
}

body.page-prices-calendar .calendar-title {
  font-size:      var(--font-size-sm);
  font-weight:    400;
  letter-spacing: normal;
  line-height:    1.2;
}

body.page-prices-calendar .calendar-topbar .btn {
  height:      auto !important;
  min-height:  0;
  padding:     3px 7px !important;
  font-size:   var(--font-size-xs);
  line-height: 1.2;
}

body.page-prices-calendar .calendar-topbar select {
  border:        1px solid var(--color-border-dark);
  border-radius: var(--radius-base);
  box-sizing:    border-box;
  height:        22px;
  min-height:    0;
  padding:       1px 6px !important;
  font-size:     var(--font-size-xs) !important;
  line-height:   1.1;
  max-width:     10rem;
}

body.page-prices-calendar .calendar-right form {
  margin: 0;
}

.calendar-wrapper {
  overflow-x:   auto;
  overflow-y:   auto;
  border:       1px solid var(--color-border-dark);
  min-height:   200px;
  background:   var(--color-bg-white);
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
}

body.page-calendar .page-stack-fill {
  margin-top:  0;
  padding-top: 0;
}

body.page-calendar .calendar-wrapper {
  border-top: 0;
}

.calendar-table tr.calendar-row-today {
  outline: 1px solid rgba(15,23,42,0.08);
  outline-offset: -1px;
}

.calendar-table {
  border-collapse: collapse;
  table-layout:    fixed;
  width:           max-content;
}

.calendar-table thead th {
  position: sticky;
  top:      0;
  z-index:  10;
  border:   1px solid var(--color-border);
  border-bottom: 2px solid #9ca3af !important;
  font-weight: 400 !important;
}

.calendar-table td { border: 1px solid var(--color-border); }

/* Celle giorno: più larghe per nome cliente completo in ogni (semi)casella */
.calendar-table .cal-day-cell,
.calendar-table thead th.cal-room-head {
  width: 148px;
  min-width: 148px;
  max-width: 148px;
  box-sizing: border-box;
}
.calendar-table .cal-day-cell {
  height: 40px;
  padding: 0;
  overflow: hidden;
  position: relative;
  cursor: pointer;
  border-right: 1px solid #e2e8f0;
  vertical-align: top;
}
.cal-res-block {
  display: flex;
  align-items: center;
  padding: 0 6px;
  gap: 4px;
  box-sizing: border-box;
  overflow: hidden;
  cursor: pointer;
  position: relative;
}
.cal-res-block + .cal-res-block {
  border-top: none;
}
/* Separatore tra una diária e la successiva (linea al centro della casella, non tra i giorni) */
.cal-res-block--diaria-sep {
  box-shadow: inset 0 1px 0 0 rgba(15, 23, 42, 0.35);
}
.cal-res-name {
  flex: 1 1 auto;
  min-width: 0;
  font-size: var(--font-size-xs);
  font-weight: 400;
  line-height: 1.15;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
  color: #334155;
}
.cal-res-empty {
  box-sizing: border-box;
}

/* Colori header camere */
.calendar-table thead th:nth-child(1)  { background:#e5e7eb; color:#333; }
.calendar-table thead th:nth-child(2)  { background:#cafcc3; }
.calendar-table thead th:nth-child(3)  { background:#b2e8ff; }
.calendar-table thead th:nth-child(4)  { background:#71d159; color:#fff; }
.calendar-table thead th:nth-child(5)  { background:#f7ff84; color:#333; }
.calendar-table thead th:nth-child(6)  { background:#ff9f3f; color:#fff; }
.calendar-table thead th:nth-child(7)  { background:#ffd1d6; }
.calendar-table thead th:nth-child(8)  { background:#fff4b4; color:#333; }
.calendar-table thead th:nth-child(9)  { background:#effa58; color:#333; }
.calendar-table thead th:nth-child(10) { background:#b8c5ff; }
.calendar-table thead th:nth-child(11) { background:#fd6180; }
.calendar-table thead th:nth-child(12) { background:#333333; color:#fff; }
.calendar-table thead th:nth-child(13) { background:#a7f3d0; }
.calendar-table thead th:nth-child(14) { background:#fbcfe8; }
.calendar-table thead th:nth-child(15) { background:#fde68a; color:#333; }
.calendar-table thead th:nth-child(16) { background:#6ee7b7; }
.calendar-table thead th:nth-child(17) { background:#c7d2fe; }
.calendar-table thead th:nth-child(18) { background:#fed7aa; }
.calendar-table thead th:nth-child(19) { background:#f9a8d4; }
.calendar-table thead th:nth-child(20) { background:#86efac; }
.calendar-table thead th:nth-child(21) { background:#67e8f9; }

/* Classi celle calendario */
.res-confirmed-light { background:#bbf7d0; color:#334155; }
.res-confirmed-dark  { background:#22c55e; color:#334155; }
.res-pending-light   { background:#fef08a; color:#334155; }
.res-pending-dark    { background:#facc15; color:#334155; }
.res-in-light        { background:#e0f2fe; color:#334155; }
.res-in-dark         { background:#bae6fd; color:#334155; }
.res-out-light       { background:#38bdf8; color:#ffffff; }
.res-out-dark        { background:#0ea5e9; color:#ffffff; }
.res-block-light     { background:#e5e7eb; color:#334155; }
.res-block-dark      { background:#d1d5db; color:#334155; }

.res-confirmed-light, .res-confirmed-dark,
.res-pending-light,   .res-pending-dark,
.res-in-light,        .res-in-dark,
.res-out-light,       .res-out-dark,
.res-block-light,     .res-block-dark { border: 0; }


/* ============================================================
   11. AUTOCOMPLETE
   ============================================================ */

.client-results {
  border:        1px solid var(--color-border-dark);
  background:    var(--color-bg-white);
  position:      absolute;
  width:         300px;
  max-height:    260px;
  overflow-y:    auto;
  z-index:       1000;
  box-shadow:    var(--shadow-md);
  border-radius: var(--radius-base);
}

.client_result,
.company_result {
  display:         flex;
  flex-direction:  row;
  align-items:     center;
  justify-content: space-between;
  padding:         var(--space-xs) var(--space-sm);
  border-bottom:   1px solid var(--color-border);
  cursor:          pointer;
  font-size:       var(--font-size-sm);
  gap:             var(--space-sm);
  transition:      background var(--transition-fast);
}

.client_result:hover,
.company_result:hover { background: var(--color-surface); }

.ac-name  { width:200px; min-width:200px; max-width:200px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ac-phone { width:90px; min-width:90px; max-width:90px; color:var(--color-text-muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; font-size:var(--font-size-xs); text-align:right; }


/* ============================================================
   12. TODAY PAGE
   ============================================================ */

.today-page-toolbar {
  display:         flex;
  align-items:     center;
  justify-content: space-between;
  flex-wrap:       wrap;
  gap:             8px;
  margin-bottom:   10px;
}

.today-page-toolbar__titles {
  min-width: 0;
  flex: 1 1 auto;
}

.today-page-title {
  margin:     0;
  font-size:  17px;
  font-weight: 600;
  line-height: 1.25;
}

.today-page-sub {
  margin: 2px 0 0;
  font-size: var(--font-size-sm);
  color: var(--color-text-muted);
  line-height: 1.35;
}

.today-page-sub__sep {
  margin: 0 4px;
  opacity: 0.6;
}

.today-page-sub__note {
  font-style: italic;
  opacity: 0.85;
}

/* Vista tabella (desktop) vs schede (mobile) — staff */
.today-view--cards {
  display: none;
}

.today-view--table {
  display: block;
}

@media (max-width: 899px) {
  body.page-today .today-view--table {
    display: none !important;
  }

  body.page-today .today-view--cards {
    display: block !important;
  }
}

/* Pannelli Hoje / Amanhã */
.today-day-panel {
  border: 1px solid var(--color-border);
  border-radius: 12px;
  background: #fff;
  overflow: hidden;
}

.today-day-panel__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 10px 12px;
  background: #f0fdf4;
  border-bottom: 1px solid var(--color-border);
}

.today-day-panel--preview .today-day-panel__head {
  background: #f8fafc;
}

.today-day-panel__titles {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 6px 10px;
  min-width: 0;
}

.today-day-panel__title {
  margin: 0;
  font-size: 1.05rem;
  font-weight: 700;
  line-height: 1.2;
}

.today-day-panel__date {
  font-size: var(--font-size-sm);
  color: var(--color-text-muted);
  font-variant-numeric: tabular-nums;
}

.today-day-panel__total {
  flex-shrink: 0;
  min-width: 1.75rem;
  height: 1.75rem;
  padding: 0 8px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  background: #166534;
  color: #fff;
  font-size: 0.85rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}

.today-day-panel--preview .today-day-panel__total {
  background: #64748b;
}

.today-day-panel__hint {
  margin: 0;
  padding: 6px 12px;
  font-size: var(--font-size-sm);
  color: #64748b;
  background: #f1f5f9;
  border-bottom: 1px dashed var(--color-border);
  line-height: 1.35;
}

.today-day-panel__body {
  padding: 10px;
}

.today-day-panel--preview {
  border-style: dashed;
  background: #fafbfc;
}

.today-day-panel--preview .today-block {
  opacity: 0.98;
}

.today-day-panel .today-block-gap {
  height: 10px;
}

.today-day-panel .today-block--spaced {
  margin-top: 0;
}

.today-card__pax {
  flex-shrink: 0;
  margin-left: auto;
  font-size: 0.75rem;
  font-weight: 700;
  color: #475569;
  background: #e2e8f0;
  padding: 2px 7px;
  border-radius: 6px;
  font-variant-numeric: tabular-nums;
}

.today-card--clickable {
  cursor: pointer;
  transition: background 0.12s ease;
}

.today-card--clickable:hover,
.today-card--clickable:focus-visible {
  background: #f0fdf4;
  outline: none;
}

.today-day-panel__none {
  margin: 0;
  padding: 12px 4px;
  color: var(--color-text-muted);
  font-size: var(--font-size-sm);
  font-style: italic;
  text-align: center;
}

.today-page-sub__hoje {
  color: #166534;
  font-weight: 600;
}

.today-page-sub__amanha {
  color: #64748b;
  font-weight: 600;
}

/* ========== Due quadri separati: Hoje | Amanhã ========== */
.today-page-board--two-quadros {
  max-width: 100%;
}

.today-quadros {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0;
  width: 100%;
  align-items: stretch;
}

.today-quadros__sep {
  height: 20px;
  margin: 4px 0 8px;
  border: none;
  border-top: 3px double #cbd5e1;
  background: transparent;
}

.today-quadro {
  display: flex;
  flex-direction: column;
  min-width: 0;
  border: 2px solid #166534;
  border-radius: 14px;
  background: #fff;
  overflow: hidden;
  box-shadow: 0 2px 10px rgba(15, 23, 42, 0.06);
}

.today-quadro--amanha,
.today-quadro--preview {
  border-color: #94a3b8;
  border-style: dashed;
  background: #f8fafc;
  box-shadow: none;
}

.today-quadro__head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
  padding: 12px 14px;
  background: #dcfce7;
  border-bottom: 2px solid #86efac;
}

.today-quadro--amanha .today-quadro__head,
.today-quadro--preview .today-quadro__head {
  background: #e2e8f0;
  border-bottom-color: #cbd5e1;
}

.today-quadro__titles {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 10px;
  min-width: 0;
}

.today-quadro__title {
  margin: 0;
  font-size: 1.25rem;
  font-weight: 800;
  line-height: 1.15;
  letter-spacing: -0.02em;
  color: #14532d;
}

.today-quadro--amanha .today-quadro__title,
.today-quadro--preview .today-quadro__title {
  color: #334155;
}

.today-quadro__date {
  font-size: 0.9rem;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  color: #3f6212;
}

.today-quadro--amanha .today-quadro__date,
.today-quadro--preview .today-quadro__date {
  color: #64748b;
}

.today-quadro__badge {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 6px;
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  background: #64748b;
  color: #fff;
}

.today-quadro__stats {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: 6px;
  flex-shrink: 0;
}

.today-quadro__stat {
  font-size: 0.7rem;
  font-weight: 600;
  color: #475569;
  background: rgba(255, 255, 255, 0.75);
  padding: 3px 7px;
  border-radius: 6px;
}

.today-quadro__stat em {
  font-style: normal;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
  margin-right: 2px;
}

.today-quadro__stat--dep em { color: #6b7280; }
.today-quadro__stat--arr em { color: #15803d; }
.today-quadro__stat--in em  { color: #0369a1; }

.today-quadro__total {
  min-width: 1.85rem;
  height: 1.85rem;
  padding: 0 8px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  background: #166534;
  color: #fff;
  font-size: 0.9rem;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
}

.today-quadro--amanha .today-quadro__total,
.today-quadro--preview .today-quadro__total {
  background: #64748b;
}

.today-quadro__hint {
  margin: 0;
  padding: 7px 14px;
  font-size: 0.8rem;
  color: #64748b;
  background: #f1f5f9;
  border-bottom: 1px dashed #cbd5e1;
  line-height: 1.35;
}

.today-quadro__body {
  padding: 10px;
  flex: 1 1 auto;
}

.today-quadro .today-block {
  border-radius: 10px;
}

.today-quadro .today-block__head {
  padding: 8px 10px;
}

.today-quadro .today-block__title {
  font-size: 0.9rem;
}

.today-quadro .today-block-gap {
  height: 8px;
}

.today-quadro .today-block--spaced {
  margin-top: 0;
}

.today-quadro .today-card {
  padding: 8px 10px;
}

.today-quadro .today-card__name {
  font-size: 0.95rem;
}

.today-quadro .today-card__meta {
  font-size: 0.8rem;
}

.today-quadro .today-card__notes {
  font-size: 0.8rem;
}

.today-quadro .room-badge {
  flex-shrink: 0;
  white-space: nowrap;
}

@media (min-width: 960px) {
  .today-quadros {
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    align-items: start;
  }

  .today-quadros__sep {
    display: none;
  }

  body.page-today .today-page-board--two-quadros {
    max-width: min(1280px, 100%);
  }
}

/* Legacy day-panel (se ancora presente) */
.today-page-board--split-days {
  display: flex;
  flex-direction: column;
  gap: 16px;
  max-width: min(720px, 100%);
}

.today-day-panel .today-block__head {
  padding: 8px 10px;
}

.today-day-panel .today-block__title {
  font-size: 0.95rem;
}

.today-day-panel .today-card {
  padding: 8px 10px;
}

.today-day-panel .today-card__name {
  font-size: 0.95rem;
  font-weight: 600;
}

.today-day-panel .today-card__meta {
  font-size: 0.8rem;
  margin-top: 2px;
}

.today-day-panel .today-card__notes {
  font-size: 0.8rem;
  margin-top: 4px;
  padding-top: 4px;
}

.today-day-panel .today-block-gap {
  height: 8px;
}

.today-day-panel .room-badge {
  flex-shrink: 0;
  max-width: 100%;
  white-space: nowrap;
}

/* Reception: usa larghezza utile su monitor larghi */
body.page-today .page-body-scroll {
  padding-left:  12px;
  padding-right: 12px;
}

body.page-today .today-page-board,
body.page-today .today-board-table-wrap,
body.page-today .today-wa-panel {
  width:     100%;
  max-width: min(1180px, 100%);
  box-sizing: border-box;
}

body.page-today .today-wa-panel {
  margin-left:  auto;
  margin-right: auto;
}

/* Hoje — reception (tabella) e camareira (schede) */
.today-page-board {
  max-width: 100%;
}

.today-page-board--maid {
  border: none;
  background: transparent;
}

.today-page-board--staff .today-board-table-wrap {
  margin-top: 4px;
}

/* Camareira: blocchi separati */
.today-block {
  margin: 0;
  padding: 0;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: #fff;
  overflow: hidden;
}

.today-block--spaced {
  margin-top: 14px;
}

.today-block__head {
  display:         flex;
  align-items:     center;
  justify-content: space-between;
  gap:             8px;
  padding:         10px 12px;
  border-bottom:   1px solid var(--color-border);
}

.today-block__title {
  margin:      0;
  font-size:   var(--font-size-md);
  font-weight: 600;
  line-height: 1.2;
}

.today-block--departures .today-block__head {
  background: #f3f4f6;
  border-left: 4px solid #9ca3af;
}

.today-block--arrivals .today-block__head {
  background: #dcfce7;
  border-left: 4px solid var(--status-confirmed);
}

.today-block--inhouse .today-block__head {
  background: #e0f2fe;
  border-left: 4px solid var(--status-in);
}

.today-block__empty {
  margin:      0;
  padding:     12px;
  color:       var(--color-text-muted);
  font-size:   var(--font-size-sm);
  font-style:  italic;
}

.today-block__list {
  list-style: none;
  margin:     0;
  padding:    0;
}

.today-card {
  padding:       10px 12px;
  border-bottom: 1px solid var(--color-border);
}

.today-card:last-child {
  border-bottom: none;
}

.today-card__top {
  display:     flex;
  flex-wrap:   wrap;
  align-items: center;
  gap:         6px 8px;
  margin-bottom: 4px;
}

.today-card__name {
  display:     block;
  margin:      0;
  font-size:   var(--font-size-sm);
  font-weight: 600;
  line-height: 1.35;
  min-width:   0;
  word-break:  break-word;
}

.today-card__meta {
  margin:      4px 0 0;
  font-size:   var(--font-size-sm);
  line-height: 1.4;
  color:       #3d5248;
  font-variant-numeric: tabular-nums;
  font-weight: 500;
}

.today-card__notes {
  margin:      6px 0 0;
  padding-top: 6px;
  border-top:  1px dashed var(--color-border);
  font-size:   var(--font-size-sm);
  line-height: 1.45;
  color:       #5a4030;
  font-weight: 500;
}

.maid-today-page .maid-today-wrap {
  padding:    10px 8px 16px;
  background: transparent;
  border:     none;
  box-shadow: none;
}

.maid-today-page .maid-today-wrap.maid-form-shell {
  max-width: 100%;
}

/* Hoje camareira — larghezza e altezza utili su tutto lo schermo del telefono */
.maid-today-page.maid-home-page {
  min-height: 100vh;
  min-height: 100dvh;
}

.maid-today-page .maid-app-shell.maid-login-main {
  align-items:     stretch;
  align-self:      stretch;
  width:           100%;
  max-width:       100%;
  padding:         8px max(6px, env(safe-area-inset-right, 0px)) max(20px, env(safe-area-inset-bottom, 0px)) max(6px, env(safe-area-inset-left, 0px));
  padding-top:     6px;
  box-sizing:      border-box;
}

.maid-today-page .maid-today-wrap {
  width:      100%;
  max-width:  100%;
  padding:    0 0 16px;
  flex:       1 1 auto;
  align-self: stretch;
}

.maid-today-page .today-page-board--maid {
  width: 100%;
}

.maid-today-page .today-block {
  width:         100%;
  box-sizing:    border-box;
  border-radius: 12px;
}

.maid-today-page .today-block__head {
  padding:    14px 12px;
  min-height: 44px;
  box-sizing: border-box;
}

.maid-today-page .today-block__title {
  font-size: var(--font-size-lg);
}

.maid-today-page .today-block-gap {
  height:        20px;
  min-height:    20px;
  margin:        0;
  padding:       0;
  border:        none;
  background:    transparent;
  flex-shrink:   0;
}

.maid-today-page .today-block--spaced {
  margin-top: 0;
}

.maid-today-page .today-block__empty {
  padding:   16px 12px;
  font-size: var(--font-size-md);
}

.maid-today-page .today-card {
  padding:    14px 12px;
  min-height: 72px;
  box-sizing: border-box;
}

.maid-today-page .today-card__top {
  gap:           8px 10px;
  margin-bottom: 6px;
}

.maid-today-page .today-card__top .room-badge {
  font-size:   var(--font-size-md);
  font-weight: 600;
  padding:     4px 10px;
}

.maid-today-page .today-card__name {
  font-size:   var(--font-size-lg);
  font-weight: 700;
  line-height: 1.35;
}

.maid-today-page .today-card__meta {
  font-size:   var(--font-size-rg);
  line-height: 1.45;
  margin-top:  6px;
}

.maid-today-page .today-card__notes {
  font-size:   var(--font-size-rg);
  line-height: 1.5;
  padding-top: 8px;
  margin-top:  8px;
}

.today-section-gap td {
  height:     14px;
  padding:    0;
  border:     none;
  background: transparent;
  line-height: 0;
  font-size:  0;
}

.today-board-table-wrap {
  max-width: 100%;
  width: 100%;
  overflow-x: hidden;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: #fff;
  box-sizing: border-box;
}

.today-board-table {
  width: 100%;
  max-width: 100%;
  border-collapse: collapse;
  table-layout: fixed;
  font-size: var(--font-size-xs);
  line-height: 1.3;
}

/* Desktop: proporzioni stabili */
.today-board-table--6 .today-w-suite    { width: 11%; }
.today-board-table--6 .today-w-name     { width: 24%; }
.today-board-table--6 .today-w-pax      { width: 6%; }
.today-board-table--6 .today-w-in       { width: 8%; }
.today-board-table--6 .today-w-out-nt   { width: 11%; }
.today-board-table--6 .today-w-obs      { width: 40%; }

.today-board-table--5 .today-w-suite    { width: 12%; }
.today-board-table--5 .today-w-name     { width: 38%; }
.today-board-table--5 .today-w-pax      { width: 8%; }
.today-board-table--5 .today-w-in       { width: 10%; }
.today-board-table--5 .today-w-out-nt   { width: 32%; }

.today-th-abbr {
  display: none;
}

.today-thead-row th {
  padding: 6px 8px;
  font-size: 10px;
  font-weight: 400;
  color: var(--color-text-muted);
  text-transform: uppercase;
  letter-spacing: 0.02em;
  text-align: left;
  vertical-align: bottom;
  border-bottom: 1px solid var(--color-border);
  background: var(--color-bg-muted, #f9fafb);
  position: sticky;
  top: 0;
  z-index: 2;
}

.today-section-title-row td {
  padding: 10px 12px;
  font-size: var(--font-size-md);
  font-weight: 600;
  border-top: 1px solid var(--color-border);
  border-bottom: none;
}

.today-section-title-row--first td {
  border-top: none;
}

.today-section-title-row.today-departures-title td {
  background: #f3f4f6;
  border-left: 4px solid #9ca3af;
}

.today-section-title-row.today-inhouse-title td {
  background: #e0f2fe;
  border-left: 4px solid var(--status-in);
}

.today-section-title-row.today-arrivals-title td {
  background: #dcfce7;
  border-left: 4px solid var(--status-confirmed);
}

.today-name-main {
  display: inline-block;
  max-width: 100%;
  word-break: break-word;
  overflow-wrap: anywhere;
}

.today-td {
  padding: 5px 8px;
  vertical-align: top;
  text-align: left;
  border-bottom: 1px solid var(--color-border);
  box-sizing: border-box;
  overflow-wrap: anywhere;
  word-break: break-word;
}

.today-data-row--clickable {
  cursor: pointer;
}

.today-data-row--clickable:hover {
  background: var(--color-primary-light);
}

.today-data-row--has-maid-follow .today-td {
  border-bottom: none;
  padding-bottom: 2px;
}

.today-maid-follow-row .today-td {
  padding-top: 0;
  padding-bottom: 5px;
  font-size: var(--font-size-xs);
  line-height: 1.42;
  color: var(--color-text-muted);
}

.today-maid-follow-row .today-td--spacer {
  visibility: hidden;
  line-height: 1;
  padding-top: 0;
  padding-bottom: 0;
}

.today-td-maid-notes {
  font-weight: 500;
}

.today-td-maid {
  font-size: var(--font-size-xs);
  line-height: 1.35;
  color: var(--color-text-muted);
  font-weight: 500;
}

.today-col-maid-inline {
  display: block;
  white-space: normal;
  word-break: break-word;
}

.today-maiden-empty {
  color: #c5cad3;
  font-weight: 400;
}

.today-td-pax,
.today-td-in {
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.today-td-out-nt {
  font-variant-numeric: tabular-nums;
  white-space: normal;
  line-height: 1.25;
}

.today-td-suite {
  font-weight: 600;
}

.today-td-suite .room-badge {
  font-size: 10px;
  padding: 1px 6px;
  font-weight: 600;
}

.today-out-nt__sep {
  color: #94a3b8;
  font-weight: 500;
}

.today-out-nt__nt {
  font-weight: 600;
}

.today-empty-row .today-empty {
  padding: var(--space-md);
  color: var(--color-text-muted);
  font-style: italic;
  font-size: var(--font-size-sm);
  border: none;
  background: #fff;
}

.today-wa-panel {
  margin-top:      4px;
  margin-bottom:   12px;
  padding:         8px 10px;
  border:          1px solid var(--color-border);
  border-radius:   var(--radius-md);
  background:      #fafafa;
  max-width:       min(100%, calc(22rem + 30ch));
  box-sizing:      border-box;
}

.today-wa-actions-row {
  display:        flex;
  flex-wrap:      nowrap;
  align-items:    stretch;
  margin-bottom:  8px;
}

.today-wa-copy-row {
  display:        flex;
  flex-wrap:      nowrap;
  align-items:    stretch;
  margin-top:     8px;
}

.today-wa-send-btn,
.today-wa-copy-btn {
  flex:           1 1 auto;
  width:          100%;
  min-height:     0;
  padding-top:    4px;
  padding-bottom: 4px;
  font-weight:    600;
  justify-content: center;
}

.today-wa-compose-label {
  display:       block;
  font-size:     var(--font-size-xs);
  font-weight:   600;
  color:         var(--color-text-muted);
  margin-bottom: 4px;
}

.today-wa-panel textarea {
  display:       block;
  width:         100%;
  max-width:     100%;
  box-sizing:    border-box;
  padding:       6px 8px;
  font-size:     11px;
  line-height:   1.35;
  font-family:   ui-monospace, 'DM Mono', monospace;
  border-radius: var(--radius-sm);
  border:        1px solid var(--color-border);
  resize:        vertical;
  min-height:    5rem;
}

/* Consulta veículo */
.vehicle-lookup-page {
  max-width: 72rem;
  padding-bottom: 1rem;
}

.vehicle-lookup-hero {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  padding: 12px 14px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: linear-gradient(180deg, #eff6ff 0%, #dbeafe 100%);
}

.vehicle-lookup-hero h1 {
  margin: 0;
  font-size: var(--font-size-xl);
  color: #0c4a6e;
}

.vehicle-lookup-hero p {
  margin: 6px 0 0;
  max-width: 52rem;
  color: var(--color-text-muted);
  font-size: var(--font-size-sm);
  line-height: 1.4;
}

.vehicle-lookup-badge {
  flex: 0 0 auto;
  padding: 4px 8px;
  border-radius: 999px;
  background: #bae6fd;
  color: #075985;
  font-size: var(--font-size-xs);
  font-weight: 700;
}

.vehicle-lookup-form {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 10px;
  margin-top: 12px;
  padding: 10px 12px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: var(--color-surface);
}

.vehicle-lookup-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  margin-top: 12px;
}

.vehicle-lookup-card {
  margin-top: 12px;
  padding: 12px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: #fff;
}

.vehicle-lookup-card h2 {
  margin: 0 0 10px;
  font-size: var(--font-size-md);
  color: var(--color-text-label);
}

.vehicle-lookup-kv {
  display: grid;
  grid-template-columns: 8rem 1fr;
  gap: 6px 10px;
  margin: 0;
  font-size: var(--font-size-sm);
}

.vehicle-lookup-kv dt {
  color: var(--color-text-muted);
  font-weight: 600;
}

.vehicle-lookup-kv dd {
  margin: 0;
  font-family: ui-monospace, 'DM Mono', monospace;
}

.vehicle-lookup-note {
  margin: 10px 0 0;
  color: var(--color-text-muted);
  font-size: var(--font-size-xs);
  line-height: 1.35;
}

.vehicle-lookup-links,
.vehicle-lookup-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.vehicle-lookup-alert {
  margin-top: 12px;
}

.vehicle-lookup-manual-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}

.vehicle-lookup-manual-grid label {
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-size: var(--font-size-xs);
  font-weight: 600;
  color: var(--color-text-label);
}

.vehicle-lookup-manual-grid input,
.vehicle-lookup-manual-grid textarea {
  width: 100%;
  box-sizing: border-box;
  padding: 6px 8px;
  border: 1px solid var(--color-border-dark);
  border-radius: var(--radius-sm);
  font: inherit;
  font-weight: 400;
}

.vehicle-lookup-manual-grid textarea {
  grid-column: span 2;
  resize: vertical;
}

.vehicle-lookup-actions {
  margin-top: 10px;
}

@media (max-width: 820px) {
  .vehicle-lookup-grid,
  .vehicle-lookup-manual-grid {
    grid-template-columns: 1fr;
  }

  .vehicle-lookup-manual-grid textarea {
    grid-column: auto;
  }
}

.today-count {
  font-size:     var(--font-size-sm);
  background:    var(--color-primary);
  color:         #fff;
  border-radius: var(--radius-pill);
  padding:       1px 8px;
  font-weight:   600;
  margin-left:   12px;
  min-width:     28px;
  text-align:    center;
}

.today-data-row--departures.today-data-row--clickable:hover {
  background: #eef0f3;
}

.today-data-row--inhouse.today-data-row--clickable:hover {
  background: #e8f6ff;
}

.today-data-row--arrivals.today-data-row--clickable:hover {
  background: #e8fbef;
}

.today-data-row--readonly,
.today-data-row--readonly:hover,
.maid-today-page .today-data-row--readonly:hover,
.maid-today-page .today-maid-follow-row:hover {
  cursor: default;
  background: #fff;
}

.maid-today-page .today-data-row--departures.today-data-row--readonly:hover,
.maid-today-page .today-departures .today-maid-follow-row:hover {
  background: #fcfcfd;
}

.maid-today-page .today-data-row--inhouse.today-data-row--readonly:hover,
.maid-today-page .today-inhouse .today-maid-follow-row:hover {
  background: #f7fcff;
}

.maid-today-page .today-data-row--arrivals.today-data-row--readonly:hover,
.maid-today-page .today-arrivals .today-maid-follow-row:hover {
  background: #f7fff8;
}

@media (max-width: 980px) {
  .today-section-title-row td { font-size: var(--font-size-lg); }
  .today-td,
  .today-thead-row th { padding-left: 6px; padding-right: 6px; }
}

/* Tablet / desktop: tabella e schede più larghe e leggibili */
@media (min-width: 641px) {
  .today-board-table {
    font-size:   var(--font-size-sm);
    line-height: 1.4;
  }

  .today-thead-row th {
    padding:    8px 10px;
    font-size:  var(--font-size-xs);
  }

  .today-td {
    padding: 7px 10px;
  }

  .today-section-title-row td {
    padding:   12px 14px;
    font-size: var(--font-size-lg);
  }

  .today-name-main {
    font-size:   var(--font-size-md);
    font-weight: 500;
  }

  .today-td-suite .room-badge {
    font-size:  var(--font-size-xs);
    padding:    2px 8px;
  }

  .today-td-maid,
  .today-col-maid-inline {
    font-size:   var(--font-size-sm);
    line-height: 1.45;
  }

  .maid-today-page .maid-app-shell {
    max-width: min(920px, calc(100vw - 20px));
    padding-left:  16px;
    padding-right: 16px;
  }

  .maid-today-page .maid-today-wrap {
    padding: 12px 4px 20px;
  }

  .maid-today-page .today-card {
    padding: 12px 14px;
  }

  .maid-today-page .today-card__name {
    font-size:   var(--font-size-md);
    font-weight: 600;
  }

  .maid-today-page .today-card__meta {
    font-size:   var(--font-size-sm);
    line-height: 1.4;
  }

  .maid-today-page .today-card__notes {
    font-size:   var(--font-size-sm);
    line-height: 1.45;
  }

  .maid-today-page .today-block__head {
    padding: 12px 14px;
  }

  .maid-today-page .today-block__title {
    font-size: var(--font-size-lg);
  }

  .maid-today-page .today-block-gap {
    height:     24px;
    min-height: 24px;
  }
}

@media (min-width: 900px) {
  body.page-today .page-body-scroll {
    padding-left:  16px;
    padding-right: 16px;
  }

  body.page-today .today-page-board,
  body.page-today .today-board-table-wrap,
  body.page-today .today-wa-panel {
    max-width: min(1280px, 100%);
  }

  body.page-today .today-page-title {
    font-size: var(--font-size-xl);
  }

  .today-day-panel__body {
    padding: 12px;
  }

  .today-board-table {
    font-size: var(--font-size-md);
  }

  .today-thead-row th {
    font-size: var(--font-size-sm);
    padding:   9px 12px;
  }

  .today-td {
    padding: 8px 12px;
  }

  .today-section-title-row td {
    font-size: var(--font-size-xl);
    padding:   14px 16px;
  }

  .today-name-main {
    font-size: var(--font-size-rg);
  }

  .today-td-maid,
  .today-col-maid-inline {
    font-size: var(--font-size-md);
  }

  .today-td-suite .room-badge {
    font-size: var(--font-size-sm);
    padding:   3px 9px;
  }

  .maid-today-page .maid-app-shell {
    max-width: min(1040px, calc(100vw - 28px));
  }

  .maid-today-page .today-card__name {
    font-size: var(--font-size-rg);
  }

  .maid-today-page .today-card__meta,
  .maid-today-page .today-card__notes {
    font-size: var(--font-size-md);
  }

  .today-board-table--6 .today-w-suite    { width: 9%; }
  .today-board-table--6 .today-w-name     { width: 22%; }
  .today-board-table--6 .today-w-pax      { width: 5%; }
  .today-board-table--6 .today-w-in       { width: 7%; }
  .today-board-table--6 .today-w-out-nt   { width: 10%; }
  .today-board-table--6 .today-w-obs      { width: 47%; }
}

/* Telefone: tabella 100% larghezza schermo, colonne % dinamiche, senza scroll orizzontale */
@media (max-width: 640px) {
  /* Staff: schede al posto della tabella (più leggibile) */
  body.page-today .today-view--table {
    display: none !important;
  }

  body.page-today .today-view--cards {
    display: block !important;
  }

  body.page-today .today-page-toolbar {
    margin-bottom: 8px;
    gap: 6px;
  }

  body.page-today .today-page-title {
    font-size: 1rem;
  }

  body.page-today .today-page-sub {
    font-size: 0.8rem;
  }

  body.page-today .page-body-scroll {
    padding-left: 8px;
    padding-right: 8px;
  }

  .today-page-board--split-days {
    gap: 12px;
  }

  .today-quadros__sep {
    height: 16px;
    margin: 8px 0 12px;
  }

  .today-quadro__head {
    padding: 10px 12px;
  }

  .today-quadro__title {
    font-size: 1.1rem;
  }

  .today-quadro__body {
    padding: 8px;
  }

  .today-day-panel__head {
    padding: 8px 10px;
    position: sticky;
    top: 0;
    z-index: 2;
  }

  .today-day-panel__title {
    font-size: 0.95rem;
  }

  .today-day-panel__hint {
    padding: 5px 10px;
    font-size: 0.75rem;
  }

  .today-day-panel__body {
    padding: 8px;
  }

  body.page-today .today-block__head {
    padding: 8px 10px;
  }

  body.page-today .today-block__title {
    font-size: 0.9rem;
  }

  body.page-today .today-card {
    padding: 8px 10px;
  }

  body.page-today .today-card__name {
    font-size: 0.9rem;
  }

  body.page-today .today-card__meta {
    font-size: 0.8rem;
    margin-top: 2px;
  }

  body.page-today .today-card__notes {
    font-size: 0.8rem;
    margin-top: 4px;
    padding-top: 4px;
  }

  body.page-today .today-block-gap {
    height: 8px;
  }

  /* Camareira: due quadri separati */
  .maid-today-page .today-page-board--two-quadros,
  .maid-today-page .today-page-board--split-days {
    gap: 12px;
  }

  .maid-today-page .today-quadro .today-block-gap,
  .maid-today-page .today-day-panel .today-block-gap {
    height: 12px;
    min-height: 12px;
  }

  .maid-today-page .today-quadro .today-card,
  .maid-today-page .today-day-panel .today-card {
    padding: 10px 10px;
    min-height: 0;
  }

  .maid-today-page .today-quadro .today-block__head,
  .maid-today-page .today-day-panel .today-block__head {
    padding: 10px 10px;
    min-height: 0;
  }

  .today-page-board,
  .today-board-table-wrap,
  .today-board-table {
    width: 100%;
    max-width: 100%;
    min-width: 0;
  }

  .today-board-table-wrap {
    overflow-x: hidden;
    margin-left: 0;
    margin-right: 0;
    border-radius: var(--radius-md);
    border-left: 1px solid var(--color-border);
    border-right: 1px solid var(--color-border);
  }

  .today-board-table {
    table-layout: fixed;
    font-size: 10px;
    line-height: 1.25;
  }

  .today-board-table--6 .today-w-suite    { width: 14%; }
  .today-board-table--6 .today-w-name     { width: 24%; }
  .today-board-table--6 .today-w-pax      { width: 8%; }
  .today-board-table--6 .today-w-in       { width: 10%; }
  .today-board-table--6 .today-w-out-nt   { width: 14%; }
  .today-board-table--6 .today-w-obs      { width: 30%; }

  .today-board-table--5 .today-w-suite    { width: 16%; }
  .today-board-table--5 .today-w-name     { width: 36%; }
  .today-board-table--5 .today-w-pax      { width: 10%; }
  .today-board-table--5 .today-w-in       { width: 12%; }
  .today-board-table--5 .today-w-out-nt   { width: 26%; }

  .today-th-full {
    display: none;
  }

  .today-th-abbr {
    display: inline;
  }

  .today-thead-row th,
  .today-td {
    padding: 4px 3px;
  }

  .today-thead-row th {
    font-size: 9px;
    letter-spacing: 0;
  }

  .today-section-title-row td {
    padding: 6px 8px;
    font-size: var(--font-size-sm);
  }

  .today-count {
    margin-left: 6px;
    padding: 0 6px;
    min-width: 20px;
    font-size: 10px;
  }

  .today-td-suite .room-badge {
    font-size: 9px;
    padding: 1px 4px;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    display: inline-block;
    vertical-align: top;
  }

  .today-td-out-nt {
    font-size: 9px;
  }

  .today-out-nt__sep {
    display: inline;
  }

  .today-td-maid,
  .today-td-maid-notes,
  .today-col-maid-inline {
    font-size: 9px;
    line-height: 1.3;
  }

  .today-td-maid {
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 3;
    overflow: hidden;
  }

  .today-wa-panel {
    max-width: 100%;
  }

  .maid-today-wrap {
    width: 100%;
    max-width: 100%;
    overflow-x: hidden;
    box-sizing: border-box;
  }

  .maid-today-wrap .today-board-table-wrap {
    border-radius: var(--radius-sm);
  }

  .maid-today-page .maid-app-shell.maid-login-main {
    padding-left:  max(4px, env(safe-area-inset-left, 0px));
    padding-right: max(4px, env(safe-area-inset-right, 0px));
  }

  .maid-today-page .today-block__head {
    padding:    16px 12px;
    min-height: 48px;
  }

  .maid-today-page .today-block__title {
    font-size: var(--font-size-xl);
  }

  .maid-today-page .today-block-gap {
    height:     26px;
    min-height: 26px;
  }

  .maid-today-page .today-card {
    padding:    16px 12px;
    min-height: 80px;
  }

  .maid-today-page .today-card__top .room-badge {
    font-size: var(--font-size-rg);
    padding:   5px 12px;
  }

  .maid-today-page .today-card__name {
    font-size: var(--font-size-xl);
  }

  .maid-today-page .today-card__meta,
  .maid-today-page .today-card__notes {
    font-size: var(--font-size-lg);
  }

  .maid-today-page .today-block__empty {
    font-size: var(--font-size-lg);
    padding:   18px 12px;
  }
}

@media (max-width: 380px) {
  .today-board-table--6 .today-w-suite    { width: 13%; }
  .today-board-table--6 .today-w-name     { width: 26%; }
  .today-board-table--6 .today-w-pax      { width: 7%; }
  .today-board-table--6 .today-w-in       { width: 9%; }
  .today-board-table--6 .today-w-out-nt   { width: 13%; }
  .today-board-table--6 .today-w-obs      { width: 32%; }

  .today-board-table--5 .today-w-suite    { width: 15%; }
  .today-board-table--5 .today-w-name     { width: 38%; }
  .today-board-table--5 .today-w-pax      { width: 9%; }
  .today-board-table--5 .today-w-in       { width: 11%; }
  .today-board-table--5 .today-w-out-nt   { width: 27%; }
}


/* ============================================================
   13. UTILITIES & ALERTS
   ============================================================ */

.text-muted   { color: var(--color-text-muted); }
.text-sm      { font-size: var(--font-size-sm); }
.text-xs      { font-size: var(--font-size-xs); }
.text-center  { text-align: center; }
.text-right   { text-align: right; }
.font-bold    { font-weight: 700; }
.font-mono    { font-family: var(--font-mono); }

.mt-sm { margin-top: var(--space-sm); }
.mt-md { margin-top: var(--space-md); }
.mt-lg { margin-top: var(--space-lg); }
.mb-sm { margin-bottom: var(--space-sm); }
.mb-md { margin-bottom: var(--space-md); }

.flex        { display: flex; }
.flex-center { display: flex; align-items: center; }
.gap-sm      { gap: var(--space-sm); }
.gap-md      { gap: var(--space-md); }
.w-full      { width: 100%; }
.truncate    { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }

.alert {
  padding:       var(--space-sm) var(--space-md);
  border-radius: var(--radius-base);
  font-size:     var(--font-size-sm);
  margin-bottom: var(--space-md);
  border:        1px solid transparent;
}

.alert-success { background:#f0fdf4; color:#15803d; border-color:#bbf7d0; }
.alert-error   { background:#fef2f2; color:var(--color-danger); border-color:#fecaca; }
.alert-info    { background:var(--color-primary-light); color:var(--color-primary-dark); border-color:#bfdbfe; }

.status-waitlist   { background: #e0f2fe; color: #0369a1; }
.status-option     { background: #fef3c7; color: #92400e; }
.status-inactive   { background: #f3f4f6; color: #6b7280; }
.status-verify     { background: #fffbeb; color: #d97706; }


/* ============================================================
   14. CUSTOMER MENU
   ============================================================ */

.customer-menu-body {
  min-height: 100vh;
  background:
    radial-gradient(circle at top left, rgba(45,106,143,0.16), transparent 34rem),
    linear-gradient(180deg, #f8fbf7 0%, #eef4ec 100%);
  color: #17311f;
  font-size: var(--font-size-rg);
}

.customer-menu-shell {
  width: min(1120px, 100%);
  margin: 0 auto;
  padding: 20px clamp(14px, 4vw, 32px) 44px;
}

.customer-menu-hero {
  display: block;
  min-height: 0;
  background: #17311f;
  color: #fff;
  border-radius: 24px;
  padding: 0;
  box-shadow: 0 18px 45px rgba(18,52,36,0.18);
  overflow: hidden;
  position: relative;
}

.customer-menu-hero::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(270deg, rgba(10,28,18,0.42) 0%, rgba(10,28,18,0.18) 36%, rgba(10,28,18,0) 72%);
}

.customer-menu-hero-copy {
  position: absolute;
  right: clamp(18px, 4vw, 44px);
  bottom: clamp(18px, 4vw, 44px);
  z-index: 2;
}

.customer-menu-hero h1 {
  margin: 0;
  max-width: 620px;
  font-family: "Times New Roman", Times, serif;
  font-size: clamp(var(--font-size-5xl), 5.8vw, var(--font-size-hero-max));
  font-style: normal;
  font-weight: 700;
  line-height: 1.08;
  letter-spacing: 0.01em;
  text-align: right;
  text-shadow: 0 12px 34px rgba(0,0,0,0.38);
}

.customer-menu-hero-copy p {
  margin: 10px 0 0;
  font-family: "Playfair Display", Georgia, "Times New Roman", serif;
  font-size: clamp(var(--font-size-rg), 2.1vw, var(--font-size-4xl));
  font-style: normal;
  font-weight: 500;
  letter-spacing: 0.03em;
  text-align: right;
  text-shadow: 0 8px 22px rgba(0,0,0,0.34);
}

.customer-menu-hero-media {
  position: relative;
  margin: 0;
  border-radius: inherit;
  overflow: hidden;
}

.customer-menu-hero-media > img {
  display: block;
  width: 100%;
  height: auto;
}

.customer-menu-chef {
  position: absolute;
  left: 14px;
  bottom: 14px;
  display: inline-flex;
  align-items: center;
  padding: 3px;
  border-radius: 50%;
  background: rgba(255,255,255,0.92);
  box-shadow: 0 12px 28px rgba(12,35,22,0.24);
}

.customer-menu-chef img {
  width: clamp(57px, 7.15vw, 76px);
  height: clamp(57px, 7.15vw, 76px);
  border-radius: 50%;
  object-fit: contain;
  object-position: center;
  border: 2px solid #fff;
}

.customer-menu-tabs,
.customer-menu-categories {
  display: flex;
  gap: 8px;
  overflow-x: auto;
  padding: 16px 2px 2px;
  scrollbar-width: none;
}

.customer-menu-tabs::-webkit-scrollbar,
.customer-menu-categories::-webkit-scrollbar { display: none; }

.customer-menu-tabs a,
.customer-menu-categories a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  white-space: nowrap;
  text-decoration: none;
  color: #31523b;
  background: rgba(255,255,255,0.82);
  border: 1px solid rgba(49,82,59,0.14);
  border-radius: 999px;
  padding: 9px 14px;
  font-weight: 700;
  box-shadow: 0 8px 22px rgba(18,52,36,0.07);
}

.customer-menu-tabs a span {
  font-family: var(--font-mono);
  font-size: var(--font-size-sm);
  color: #2d6a8f;
}

.customer-menu-tabs a.is-active,
.customer-menu-categories a.is-active {
  color: #fff;
  background: #1f6f49;
  border-color: #1f6f49;
}

.customer-menu-tabs a.is-active span { color: #d5f5df; }

.customer-menu-nav-row {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 14px;
}

.customer-menu-nav-row .customer-menu-categories {
  flex: 1 1 auto;
  min-width: 0;
}

.customer-menu-languages {
  display: flex;
  flex: 0 0 auto;
  gap: 7px;
  justify-content: flex-end;
  overflow-x: auto;
  padding: 16px 2px 2px;
  scrollbar-width: none;
}

.customer-menu-languages::-webkit-scrollbar { display: none; }

.customer-menu-languages a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  border: 1px solid rgba(49,82,59,0.14);
  border-radius: 999px;
  background: rgba(255,255,255,0.86);
  color: #31523b;
  text-decoration: none;
  box-shadow: 0 8px 22px rgba(18,52,36,0.07);
}

.customer-menu-languages a.is-active {
  background: #fff;
  border-color: #c7a15a;
  box-shadow: 0 0 0 3px rgba(199,161,90,0.22), 0 10px 24px rgba(18,52,36,0.12);
  transform: translateY(-1px);
}

.customer-menu-language-flag {
  font-size: var(--font-size-xl-alt);
  line-height: 1;
}

.customer-menu-language-label {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
}

.customer-menu-summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin: 18px 2px 8px;
  color: #5b7161;
  font-size: var(--font-size-md);
  font-weight: 700;
}

.customer-menu-summary a {
  color: #1f6f49;
  text-decoration: none;
}

.customer-menu-note {
  margin: 0 2px;
  color: #6b7c70;
  font-size: var(--font-size-base);
  line-height: 1.45;
}

.customer-menu-section {
  margin-top: 30px;
}

.customer-menu-section h2 {
  margin: 0 0 14px;
  font-size: clamp(var(--font-size-3xl), 4vw, var(--font-size-7xl));
  letter-spacing: -0.03em;
  color: #17311f;
  padding-bottom: 8px;
  border-bottom: 1px solid rgba(49,82,59,0.14);
}

.customer-menu-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}

.customer-product-card {
  display: flex;
  height: 172px;
  background: rgba(255,255,255,0.94);
  border: 1px solid rgba(49,82,59,0.12);
  border-radius: 22px;
  box-shadow: 0 14px 34px rgba(18,52,36,0.08);
  overflow: hidden;
}

.customer-product-image {
  width: 128px;
  min-width: 128px;
  background: #e7efe5;
}

.customer-product-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.customer-product-content {
  display: flex;
  flex-direction: column;
  flex: 1;
  padding: 14px 14px 8px;
  min-width: 0;
}

.customer-product-head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 12px;
  min-width: 0;
}

.customer-product-head > div {
  min-width: 0;
}

.customer-product-head h3 {
  margin: 0;
  font-size: var(--font-size-lead);
  line-height: 22px;
  color: #152f1d;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.customer-product-code {
  display: inline-flex;
  flex: 0 0 auto;
  padding: 2px 7px;
  border-radius: 999px;
  background: #f1f5ec;
  color: #58715f;
  font-family: var(--font-mono);
  font-size: var(--font-size-xs);
  font-weight: 800;
}

.customer-product-variant,
.customer-product-serving,
.customer-product-description {
  margin: 0;
}

.customer-product-variant {
  margin-top: 2px;
  font-weight: 700;
  color: #54735d;
  font-size: var(--font-size-base);
  line-height: 18px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.customer-product-price {
  color: #1f6f49;
  font-size: var(--font-size-lg);
  line-height: 22px;
  white-space: nowrap;
}

.customer-product-serving {
  display: block;
  margin: 0;
  color: #718477;
  font-size: var(--font-size-sm);
  font-weight: 800;
  min-width: 0;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap !important;
}

.customer-product-meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-top: auto;
  min-width: 0;
}

.customer-product-description {
  margin-top: 13px;
  color: #405648;
  font-size: var(--font-size-base);
  line-height: 18px;
  max-height: 54px;
  overflow: hidden;
}

.customer-product-description p {
  margin: 0;
  overflow-wrap: anywhere;
  white-space: normal;
}

.customer-product-contexts {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 12px;
}

.customer-product-contexts span {
  background: #edf7ef;
  color: #1f6f49;
  border-radius: 999px;
  padding: 4px 9px;
  font-size: var(--font-size-sm);
  font-weight: 700;
}

.customer-menu-empty {
  margin-top: 22px;
  background: rgba(255,255,255,0.9);
  border: 1px dashed rgba(49,82,59,0.22);
  border-radius: 18px;
  padding: 24px;
  color: #5b7161;
  text-align: center;
  font-weight: 700;
}

.customer-info-hero {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 24px;
  min-height: 260px;
  padding: clamp(24px, 5vw, 48px);
  border-radius: 24px;
  background:
    linear-gradient(135deg, rgba(22,60,40,0.94), rgba(31,111,73,0.84)),
    url("../images/cardapio/italian-gourmet-hero.png") center / cover;
  color: #fff;
  box-shadow: 0 18px 45px rgba(18,52,36,0.18);
  overflow: hidden;
}

.customer-info-hero p {
  margin: 0 0 8px;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(var(--font-size-6xl), 6vw, var(--font-size-10xl));
  font-style: italic;
  line-height: 1;
}

.customer-info-hero h1 {
  margin: 0;
  font-size: clamp(var(--font-size-8xl), 7vw, var(--font-size-hero-xl));
  line-height: 0.95;
  letter-spacing: -0.04em;
}

.customer-info-hero img {
  width: clamp(96px, 14vw, 132px);
  height: clamp(96px, 14vw, 132px);
  border-radius: 50%;
  object-fit: cover;
  object-position: center top;
  border: 3px solid rgba(255,255,255,0.94);
  box-shadow: 0 12px 28px rgba(12,35,22,0.24);
}

.customer-info-feature {
  display: grid;
  grid-template-columns: minmax(180px, 280px) minmax(0, 1fr);
  gap: clamp(18px, 4vw, 34px);
  align-items: center;
  margin-top: 24px;
  padding: clamp(16px, 4vw, 26px);
  border-radius: 26px;
  background:
    radial-gradient(circle at top right, rgba(157,36,30,0.1), transparent 22rem),
    rgba(255,255,255,0.94);
  border: 1px solid rgba(49,82,59,0.12);
  box-shadow: 0 18px 42px rgba(18,52,36,0.09);
}

.customer-info-feature-photo {
  aspect-ratio: 1;
  border-radius: 24px;
  overflow: hidden;
  background: #f1f5ec;
  box-shadow: 0 16px 32px rgba(18,52,36,0.12);
}

.customer-info-feature-photo img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
}

.customer-info-feature-copy span {
  display: inline-flex;
  margin-bottom: 10px;
  color: #9d241e;
  font-family: Georgia, "Times New Roman", serif;
  font-size: var(--font-size-4xl);
  font-style: italic;
  line-height: 1;
}

.customer-info-feature-copy h2 {
  max-width: 680px;
  margin: 0;
  color: #17311f;
  font-size: clamp(var(--font-size-6xl), 5vw, var(--font-size-9xl));
  line-height: 1;
  letter-spacing: -0.04em;
}

.customer-info-feature-copy p {
  max-width: 760px;
  margin: 14px 0 0;
  color: #405648;
  font-size: var(--font-size-lead);
  line-height: 1.7;
}

.customer-info-mini {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 18px;
}

.customer-info-mini strong {
  display: inline-flex;
  padding: 8px 12px;
  border-radius: 999px;
  background: #edf7ef;
  color: #1f6f49;
  font-size: var(--font-size-base);
  font-weight: 800;
}

.customer-info-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 16px;
  margin-top: 24px;
}

.customer-info-card {
  position: relative;
  background: rgba(255,255,255,0.94);
  border: 1px solid rgba(49,82,59,0.12);
  border-radius: 22px;
  padding: 22px;
  box-shadow: 0 14px 34px rgba(18,52,36,0.08);
  overflow: hidden;
}

.customer-info-card::after {
  content: "";
  position: absolute;
  right: -28px;
  top: -28px;
  width: 90px;
  height: 90px;
  border-radius: 50%;
  background: rgba(31,111,73,0.08);
}

.customer-info-card-accent {
  background: linear-gradient(135deg, #17311f, #1f6f49);
  color: #fff;
}

.customer-info-card-accent span,
.customer-info-card-accent h2,
.customer-info-card-accent p {
  color: #fff;
}

.customer-info-card span {
  display: inline-flex;
  margin-bottom: 16px;
  color: #1f6f49;
  font-family: var(--font-mono);
  font-size: var(--font-size-base);
  font-weight: 800;
}

.customer-info-card h2 {
  margin: 0;
  color: #17311f;
  font-size: var(--font-size-3xl);
  letter-spacing: -0.03em;
}

.customer-info-card p {
  margin: 10px 0 0;
  color: #405648;
  line-height: 1.65;
}

/* menu_info.php — solo area card informative (.menu-info-page wrappa la griglia) */
.menu-info-page .customer-info-grid {
  display: grid;
  align-items: stretch;
  gap: 10px;
  margin-top: 14px;
}

.menu-info-page .customer-info-grid-single-row {
  grid-template-columns: repeat(5, minmax(0, 1fr));
}

.menu-info-page .customer-info-grid-single-row > article {
  min-width: 0;
}

@media (max-width: 1199px) {
  .menu-info-page .customer-info-grid-single-row {
    grid-template-columns: none;
    grid-auto-flow: column;
    grid-auto-columns: minmax(200px, 86vw);
    max-width: 100%;
    overflow-x: auto;
    overflow-y: hidden;
    padding-bottom: 10px;
    scroll-snap-type: x proximity;
    scrollbar-width: thin;
  }

  .menu-info-page .customer-info-grid-single-row > article {
    scroll-snap-align: start;
  }
}

.menu-info-page .customer-info-card {
  padding: 12px 14px;
  border-radius: 14px;
  box-shadow: 0 8px 20px rgba(18, 52, 36, 0.055);
}

.menu-info-page .customer-info-card::after {
  width: 56px;
  height: 56px;
  right: -18px;
  top: -18px;
  background: rgba(61, 107, 82, 0.06);
}

.menu-info-page .customer-info-card span {
  margin-bottom: 7px;
  font-size: var(--font-size-xs);
  color: #4a7c62;
}

.menu-info-page .customer-info-card h2 {
  font-size: var(--font-size-lg);
}

.menu-info-page .customer-info-card p {
  margin-top: 6px;
  font-size: var(--font-size-base);
  line-height: 1.52;
  color: #4f5e54;
}

.menu-info-page .customer-info-card .customer-info-card-tagline {
  font-size: var(--font-size-base);
  font-weight: 700;
  line-height: 1.38;
  letter-spacing: -0.015em;
  color: #31523b;
  text-align: center;
}

.menu-info-page .customer-info-card > p.customer-info-card-tagline {
  margin: 8px 0 0;
}

.menu-info-page .customer-info-card--chef .customer-info-card-chef-photo {
  width: 100%;
  height: clamp(92px, 26vw, 118px);
  margin-top: 8px;
  border-radius: 999px 999px 16px 16px;
  overflow: hidden;
  background: linear-gradient(180deg, #edf3ee 0%, #dde8e1 100%);
  box-shadow:
    0 6px 16px rgba(24, 48, 36, 0.11),
    inset 0 1px 0 rgba(255, 255, 255, 0.7);
  border: 1px solid rgba(115, 135, 125, 0.2);
}

.menu-info-page .customer-info-card--chef .customer-info-card-chef-photo img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
  object-position: center 22%;
}

.menu-info-page .customer-info-card--chef h2 {
  margin: 0;
  font-family: inherit;
  font-size: var(--font-size-lg);
  font-weight: 700;
  letter-spacing: -0.03em;
  line-height: 1.2;
  color: #17311f;
  text-align: left;
}

.menu-info-page .customer-info-card--chef .customer-info-card-chef-photo + p {
  margin-top: 10px;
}

.menu-info-page .customer-info-card--contatti .customer-info-card-phones {
  margin-top: 12px;
}

.menu-info-page .customer-info-card--contatti .customer-info-card-phones .customer-info-card-contact-phone + .customer-info-card-contact-phone {
  margin-top: 6px;
}

.menu-info-page .customer-info-card--contatti .customer-info-card-contact-phone {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0;
}

.menu-info-page .customer-info-card--contatti .customer-info-card-phone-link {
  display: inline-flex;
  align-items: center;
  flex: 1 1 auto;
  min-width: 0;
  color: inherit;
  text-decoration: none;
}

.menu-info-page .customer-info-card--contatti .customer-info-card-phone-link:hover strong {
  text-decoration: underline;
}

.menu-info-page .customer-info-card--contatti .customer-info-card-wa-link {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  text-decoration: none;
  line-height: 1;
  font-size: var(--font-size-xl);
  opacity: 0.88;
}

.menu-info-page .customer-info-card--contatti .customer-info-card-wa-link .customer-info-card-wa-emoji {
  display: block;
  line-height: 1;
}

.menu-info-page .customer-info-card--contatti .customer-info-card-wa-link:hover {
  opacity: 1;
  transform: scale(1.07);
}

.menu-info-page .customer-info-card--contatti .customer-info-card-wa-link:active {
  transform: scale(1.02);
}

@media (prefers-reduced-motion: reduce) {
  .menu-info-page .customer-info-card--contatti .customer-info-card-wa-link:hover,
  .menu-info-page .customer-info-card--contatti .customer-info-card-wa-link:active {
    transform: none;
  }
}

.menu-info-page .customer-info-card-hr {
  margin: 12px 0;
  border: none;
  border-top: 1px solid rgba(49, 82, 59, 0.14);
}

.menu-info-page .customer-info-card-hr--welcome {
  width: 3.5rem;
  margin: 14px auto 12px;
  border-top-color: rgba(49, 82, 59, 0.2);
}

.menu-info-page .customer-info-card-hr--welcome + p {
  margin-top: 0;
}

.menu-info-page .customer-info-card-notes-combo {
  margin: 0;
  font-size: var(--font-size-sm);
  line-height: 1.5;
  color: #5a6b62;
}

.menu-info-page .customer-info-card-notes-combo strong {
  color: #31523b;
  font-weight: 700;
}

.menu-info-page .customer-info-card-accent {
  background: linear-gradient(165deg, #f1f6f3 0%, #e8f0eb 52%, #dde8e2 100%);
  border: 1px solid rgba(115, 135, 125, 0.28);
  color: #2a3830;
  box-shadow: 0 8px 24px rgba(55, 80, 68, 0.08);
}

.menu-info-page .customer-info-card-accent span {
  color: #6e8a7c;
}

.menu-info-page .customer-info-card-accent h2 {
  color: #243029;
}

.menu-info-page .customer-info-card-accent p {
  color: #3d5248;
}

.menu-info-page .customer-info-card-accent > .customer-info-card-hr--hours {
  margin: 12px 0;
  border-top-color: rgba(36, 48, 41, 0.14);
}

.menu-info-page .customer-info-card-accent h2 + .customer-info-card-hr--hours {
  margin: 10px 0 8px;
}

.menu-info-page .customer-info-card-accent .customer-info-hours-slots + .customer-info-card-hr--hours {
  margin: 14px 0 12px;
}

.menu-info-page .customer-info-card-accent .customer-info-hours-notice-banner + .customer-info-card-hr--hours {
  margin: 14px 0 12px;
}

.menu-info-page .customer-info-hours-slots {
  margin: 0 0 2px;
}

.menu-info-page .customer-info-hours-slot {
  margin: 8px 0 0;
  font-size: var(--font-size-lg);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.04em;
  line-height: 1.3;
  color: #2c3d33;
}

.menu-info-page .customer-info-hours-notice-banner {
  margin: 0;
  padding: 11px 10px;
  background: linear-gradient(180deg, #fefce8 0%, #fef08a 52%, #facc15 100%);
  border: 2px solid #ca8a04;
  border-radius: 10px;
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.55),
    0 3px 12px rgba(113, 63, 18, 0.18);
}

.menu-info-page .customer-info-hours-notice-banner .customer-info-hours-notice {
  margin: 0;
  text-align: center;
  font-size: var(--font-size-sm);
  font-weight: 800;
  letter-spacing: 0.08em;
  line-height: 1.45;
  text-transform: uppercase;
  color: #422006;
}

.menu-info-page .customer-info-hours-time {
  margin: 0;
  font-size: var(--font-size-base);
  font-weight: 600;
  letter-spacing: 0.02em;
  line-height: 1.45;
  color: #3d5248;
  text-align: center;
}

@media (max-width: 768px) {
  .customer-menu-body {
    -webkit-tap-highlight-color: transparent;
  }

  .customer-menu-shell {
    padding:
      max(10px, env(safe-area-inset-top))
      max(12px, env(safe-area-inset-right))
      max(28px, env(safe-area-inset-bottom))
      max(12px, env(safe-area-inset-left));
  }

  .customer-menu-hero {
    min-height: 0;
    border-radius: 18px;
  }

  .customer-menu-hero-media > img {
    width: 100%;
    min-height: 180px;
    max-height: 40vh;
    object-fit: cover;
    object-position: center;
  }

  .customer-menu-hero-copy {
    left: 14px;
    right: 14px;
    bottom: 14px;
  }

  .customer-menu-hero h1 {
    max-width: none;
    font-size: clamp(1.65rem, 8.5vw, 2.35rem);
    text-align: center;
  }

  .customer-menu-hero-copy p {
    font-size: clamp(0.95rem, 4.2vw, 1.15rem);
    text-align: center;
  }

  .customer-menu-chef {
    left: 10px;
    bottom: 10px;
  }

  .customer-menu-chef img {
    width: 52px;
    height: 52px;
  }

  .customer-menu-nav-row {
    position: sticky;
    top: 0;
    z-index: 30;
    flex-direction: column;
    align-items: stretch;
    gap: 8px;
    margin: 14px 0 6px;
    padding: 10px 0 8px;
    background: rgba(248, 251, 247, 0.94);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    border-bottom: 1px solid rgba(49, 82, 59, 0.08);
  }

  .customer-menu-nav-row .customer-menu-categories,
  .customer-menu-languages {
    padding: 0;
    -webkit-overflow-scrolling: touch;
    scroll-snap-type: x proximity;
  }

  .customer-menu-categories a {
    scroll-snap-align: start;
    min-height: 44px;
    padding: 10px 16px;
    font-size: 0.92rem;
  }

  .customer-menu-languages {
    width: 100%;
    justify-content: flex-start;
  }

  .customer-menu-languages a {
    width: 44px;
    height: 44px;
    flex: 0 0 44px;
    scroll-snap-align: start;
  }

  .customer-menu-section {
    margin-top: 22px;
  }

  .customer-menu-section h2 {
    font-size: 1.35rem;
    scroll-margin-top: 132px;
  }

  .customer-menu-grid {
    grid-template-columns: 1fr;
    gap: 12px;
  }

  .customer-product-card {
    flex-direction: column;
    height: auto;
    border-radius: 18px;
  }

  .customer-product-image {
    width: 100%;
    min-width: 0;
    height: clamp(150px, 38vw, 210px);
  }

  .customer-product-content {
    padding: 12px 14px 12px;
  }

  .customer-product-head {
    align-items: flex-start;
    flex-wrap: wrap;
    gap: 8px;
  }

  .customer-product-head h3 {
    white-space: normal;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    line-height: 1.25;
    font-size: 1rem;
  }

  .customer-product-price {
    margin-left: auto;
    font-size: 1.05rem;
  }

  .customer-product-variant {
    white-space: normal;
    line-height: 1.3;
  }

  .customer-product-description {
    max-height: none;
    margin-top: 8px;
    line-height: 1.4;
  }

  .customer-product-serving {
    white-space: normal !important;
    line-height: 1.35;
  }

  .customer-product-meta {
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 10px;
  }

  .customer-info-hero {
    min-height: 220px;
    border-radius: 20px;
  }

  .customer-info-feature {
    grid-template-columns: 1fr;
    border-radius: 22px;
  }

  .customer-info-feature-photo {
    max-height: 260px;
  }
}

@media (max-width: 640px) {
  .customer-menu-shell {
    padding-top: max(8px, env(safe-area-inset-top));
  }
}


/* ============================================================
   15. MAID APP (consumi camera / mobile)
   ============================================================ */

html { -webkit-text-size-adjust: 100%; }

.maid-app-body {
  margin: 0;
  min-height: 100vh;
  background: linear-gradient(165deg, #f0faf6 0%, #e4f5ec 38%, #d8efe3 72%, #cfe8db 100%);
  color: #2a3d33;
  font-family: var(--font-base);
  font-size: var(--font-size-lead);
}

/* Barra única: data/hora | título app | Sair/Voltar */
.maid-app-topbar {
  box-sizing: border-box;
  width: 100%;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 6px 8px;
  padding: 8px 10px 9px;
  background: linear-gradient(180deg, #d8f0e4 0%, #c6e9d8 45%, #b5e1cc 100%);
  border-bottom: 2px solid rgba(50, 100, 72, 0.24);
  box-shadow: 0 4px 16px rgba(40, 90, 65, 0.12);
}

.maid-app-topbar--no-brand {
  grid-template-columns: minmax(0, 1fr) auto;
}

.maid-app-topbar--no-brand .maid-app-topbar-clock {
  grid-column: 1;
}

.maid-app-topbar--no-brand .maid-app-topbar-action {
  grid-column: 2;
}

.maid-app-topbar-clock {
  justify-self: start;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 1px;
  line-height: 1.15;
  min-width: 0;
}

.maid-app-topbar-date {
  font-size: var(--font-size-sm);
  font-weight: 700;
  letter-spacing: 0.02em;
  color: #1e3d2e;
  white-space: nowrap;
}

.maid-app-topbar-time {
  font-size: var(--font-size-xs);
  font-weight: 500;
  letter-spacing: 0.04em;
  color: #3d5c48;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

.maid-app-topbar-brand {
  justify-self: center;
  text-align: center;
  font-size: clamp(0.78rem, 3.15vw, 0.98rem);
  font-weight: 700;
  line-height: 1.2;
  letter-spacing: 0.012em;
  color: #1e3d2e;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  min-width: 0;
  padding-inline: 4px;
}

.maid-app-topbar-action {
  justify-self: end;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 4px;
  min-height: 0;
}

.maid-app-topbar-refresh {
  cursor: pointer;
  font: inherit;
  appearance: none;
}

.maid-app-topbar-link {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.02em;
  color: #102818;
  text-decoration: none;
  padding: 4px 7px;
  border-radius: 7px;
  border: 1px solid rgba(45, 95, 68, 0.42);
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.72) 0%, rgba(236, 251, 243, 0.88) 100%);
  white-space: nowrap;
  line-height: 1.2;
}

.maid-app-topbar-link:hover {
  background: rgba(255, 255, 255, 0.92);
  color: #0a1f14;
}

.maid-app-topbar-link:active {
  filter: brightness(0.96);
}

/* Login + pannelli form maid (stessa grafica) */
.maid-login-page,
.maid-home-page {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
}

.maid-login-main.maid-app-shell,
.maid-home-shell.maid-login-main {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  padding-top: 22px;
  padding-bottom: 40px;
}

.maid-login-card,
.maid-form-shell {
  margin: 0 auto;
  width: 100%;
  max-width: 420px;
  padding: 22px 20px 26px;
  background: linear-gradient(165deg, #ffffff 0%, #fefafd 55%, #fcf7fb 100%);
  border-radius: 18px;
  border: 1px solid rgba(115, 165, 138, 0.42);
  box-shadow:
    0 2px 0 rgba(255, 255, 255, 0.92) inset,
    0 14px 40px rgba(55, 95, 72, 0.1);
}

.maid-login-card .maid-label,
.maid-form-shell .maid-label {
  font-size: var(--font-size-rg);
  font-weight: 700;
  color: #5c4862;
}

.maid-login-card .maid-input,
.maid-form-shell .maid-input {
  padding: 14px 15px;
  font-size: var(--font-size-ui);
}

.maid-login-card .maid-btn-primary,
.maid-form-shell .maid-btn-primary {
  min-height: 52px;
  font-size: var(--font-size-xl);
  font-weight: 800;
  letter-spacing: 0.07em;
  color: #0a2f24;
  background: linear-gradient(180deg, #f4fbf7 0%, #dff3e9 38%, #cce9dd 100%);
  border: 1px solid rgba(75, 140, 110, 0.48);
  box-shadow:
    0 2px 8px rgba(45, 100, 75, 0.12),
    inset 0 1px 0 rgba(255, 255, 255, 0.95);
}

.maid-login-card .maid-btn-primary:active,
.maid-form-shell .maid-btn-primary:active {
  filter: brightness(0.975);
  box-shadow: inset 0 2px 10px rgba(35, 85, 65, 0.14);
}

.maid-keep-connected {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin: 4px 0 0;
  font-size: var(--font-size-rg);
  font-weight: 600;
  color: #4a3d50;
  line-height: 1.35;
  cursor: pointer;
}
.maid-keep-connected input {
  width: 20px;
  height: 20px;
  margin: 2px 0 0;
  flex-shrink: 0;
  accent-color: #3d7a5c;
}
.maid-login-hint {
  margin: 0 0 4px;
  font-size: 12px;
  line-height: 1.4;
}

.maid-keep-panel {
  margin-top: 4px;
  padding-top: 12px;
}
.maid-keep-panel__form {
  margin: 0;
}
.maid-switch-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin: 0;
  cursor: pointer;
}
.maid-switch-row__label {
  font-size: var(--font-size-rg);
  font-weight: 700;
  color: #4a3d50;
  line-height: 1.35;
  flex: 1;
  min-width: 0;
}
.maid-switch {
  position: relative;
  display: inline-flex;
  flex-shrink: 0;
  width: 52px;
  height: 30px;
}
.maid-switch__input {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  margin: 0;
  opacity: 0;
  cursor: pointer;
  z-index: 2;
}
.maid-switch__track {
  display: block;
  width: 100%;
  height: 100%;
  border-radius: 999px;
  background: #cbd5e1;
  transition: background 0.2s ease;
  box-shadow: inset 0 1px 3px rgba(15, 23, 42, 0.12);
}
.maid-switch__track::after {
  content: '';
  position: absolute;
  top: 3px;
  left: 3px;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 1px 4px rgba(15, 23, 42, 0.2);
  transition: transform 0.2s ease;
}
.maid-switch__input:checked + .maid-switch__track {
  background: #3d7a5c;
}
.maid-switch__input:checked + .maid-switch__track::after {
  transform: translateX(22px);
}
.maid-switch__input:focus-visible + .maid-switch__track {
  outline: 2px solid #3d7a5c;
  outline-offset: 2px;
}

.maid-form-shell .maid-home-suite-select,
.maid-form-shell select.maid-input {
  min-height: 52px;
  padding-top: 14px;
  padding-bottom: 14px;
  font-size: var(--font-size-ui);
}

.maid-form-shell .maid-home-actions {
  width: 100%;
}

.maid-form-shell .maid-home-actions .maid-btn-accent {
  min-height: 52px;
  font-size: var(--font-size-ui);
  font-weight: 800;
  letter-spacing: 0.045em;
  color: #4a3558;
  background: linear-gradient(180deg, #ffffff 0%, #faf4f9 45%, #f2e8f2 100%);
  border: 1px solid rgba(175, 135, 165, 0.45);
  box-shadow:
    0 2px 8px rgba(120, 80, 110, 0.1),
    inset 0 1px 0 rgba(255, 255, 255, 0.92);
}

.maid-form-shell .maid-home-actions .maid-btn-accent:active {
  filter: brightness(0.98);
  box-shadow: inset 0 2px 10px rgba(100, 70, 95, 0.1);
}

.maid-topbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 14px;
  background: linear-gradient(118deg, #fffafd 0%, #fcf5fb 42%, #f8eef6 100%);
  color: #655270;
}

.maid-topbar-user { font-weight: 700; flex: 1; }

.maid-topbar-date { opacity: 0.92; font-size: var(--font-size-md); }

.maid-topbar-out {
  color: #946883;
  font-weight: 600;
  text-decoration: none;
  white-space: nowrap;
}

.maid-topbar-out:hover {
  color: #735066;
}

.maid-app-shell {
  max-width: 520px;
  margin: 0 auto;
  padding: 18px 14px 44px;
}

.maid-app-card {
  margin: 22px auto;
  max-width: 400px;
}

.maid-app-card.maid-login-card,
.maid-app-card.maid-form-shell {
  margin-top: 0;
  margin-bottom: 0;
  max-width: 420px;
}

.maid-home-shell .maid-app-card.maid-form-shell {
  max-width: min(520px, 100%);
}

.maid-today-wrap.maid-form-shell {
  max-width: 100%;
  width: 100%;
  box-sizing: border-box;
}

.maid-report-shell.maid-home-shell .maid-app-card.maid-form-shell {
  max-width: min(560px, 100%);
}

.maid-app-title {
  margin: 0 0 8px;
  font-size: var(--font-size-4xl);
}

.maid-app-title-hero {
  margin: 0 0 18px;
  padding: 16px 14px;
  font-size: clamp(1.2rem, 4.8vw, 1.75rem);
  font-weight: 800;
  line-height: 1.22;
  letter-spacing: 0.04em;
  text-align: center;
  text-transform: uppercase;
  color: #6a5268;
  background: linear-gradient(165deg, #ffffff 0%, #fdf8fc 38%, #f8eef6 72%, #f3e8f2 100%);
  border: 2px solid rgba(225, 195, 218, 0.85);
  border-radius: 16px;
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.96),
    0 4px 18px rgba(200, 155, 188, 0.18);
}

/* Título da app (home, relatório): menor que o hero com nome da suite */
.maid-app-title-hero:not(.maid-room-hero-badge) {
  font-size: clamp(0.95rem, 3.75vw, 1.28rem);
  font-weight: 700;
  letter-spacing: 0.035em;
  padding: 14px 12px;
}


.maid-home-shell {
  padding-top: 8px;
}

.maid-home-card .maid-app-title-hero {
  width: 100%;
  box-sizing: border-box;
  margin-bottom: 14px;
}

/* maid_reservations: fundo do título = cores dos badges Quartos (rooms.id no PMS) */
.maid-home-card .maid-app-title-hero.maid-room-hero-badge.room-badge,
.maid-report-suite-em.maid-room-hero-badge.room-badge {
  background-image: none;
  background-color: #fdf8fb;
  color: #6a5268;
  border-color: rgba(215, 185, 205, 0.75);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.4),
    0 3px 14px rgba(200, 160, 185, 0.12);
}

.maid-home-card .maid-app-title-hero.maid-room-hero-from-db,
.maid-report-suite-em.maid-room-hero-from-db {
  background-image: none;
}

.maid-home-card .maid-app-title-hero.maid-room-hero-badge.room-badge.room-1,
.maid-report-suite-em.maid-room-hero-badge.room-badge.room-1 { background-color: #cafcc3; color: #333; }
.maid-home-card .maid-app-title-hero.maid-room-hero-badge.room-badge.room-2,
.maid-report-suite-em.maid-room-hero-badge.room-badge.room-2 { background-color: #b2e8ff; color: #333; }
.maid-home-card .maid-app-title-hero.maid-room-hero-badge.room-badge.room-3,
.maid-report-suite-em.maid-room-hero-badge.room-badge.room-3 { background-color: #71d159; color: #fff; }
.maid-home-card .maid-app-title-hero.maid-room-hero-badge.room-badge.room-4,
.maid-report-suite-em.maid-room-hero-badge.room-badge.room-4 { background-color: #f7ff84; color: #333; }
.maid-home-card .maid-app-title-hero.maid-room-hero-badge.room-badge.room-5,
.maid-report-suite-em.maid-room-hero-badge.room-badge.room-5 { background-color: #ff9f3f; color: #fff; }
.maid-home-card .maid-app-title-hero.maid-room-hero-badge.room-badge.room-6,
.maid-report-suite-em.maid-room-hero-badge.room-badge.room-6 { background-color: #ffd1d6; color: #333; }
.maid-home-card .maid-app-title-hero.maid-room-hero-badge.room-badge.room-7,
.maid-report-suite-em.maid-room-hero-badge.room-badge.room-7 { background-color: #fff4b4; color: #333; }
.maid-home-card .maid-app-title-hero.maid-room-hero-badge.room-badge.room-8,
.maid-report-suite-em.maid-room-hero-badge.room-badge.room-8 { background-color: #effa58; color: #333; }
.maid-home-card .maid-app-title-hero.maid-room-hero-badge.room-badge.room-9,
.maid-report-suite-em.maid-room-hero-badge.room-badge.room-9 { background-color: #b8c5ff; color: #333; }
.maid-home-card .maid-app-title-hero.maid-room-hero-badge.room-badge.room-10,
.maid-report-suite-em.maid-room-hero-badge.room-badge.room-10 { background-color: #fd6180; color: #fff; }
.maid-home-card .maid-app-title-hero.maid-room-hero-badge.room-badge.room-11,
.maid-report-suite-em.maid-room-hero-badge.room-badge.room-11 { background-color: #333333; color: #fff; }
.maid-home-card .maid-app-title-hero.maid-room-hero-badge.room-badge.room-12,
.maid-report-suite-em.maid-room-hero-badge.room-badge.room-12 { background-color: #a7f3d0; color: #333; }
.maid-home-card .maid-app-title-hero.maid-room-hero-badge.room-badge.room-13,
.maid-report-suite-em.maid-room-hero-badge.room-badge.room-13 { background-color: #fbcfe8; color: #333; }
.maid-home-card .maid-app-title-hero.maid-room-hero-badge.room-badge.room-14,
.maid-report-suite-em.maid-room-hero-badge.room-badge.room-14 { background-color: #fde68a; color: #333; }
.maid-home-card .maid-app-title-hero.maid-room-hero-badge.room-badge.room-15,
.maid-report-suite-em.maid-room-hero-badge.room-badge.room-15 { background-color: #6ee7b7; color: #333; }
.maid-home-card .maid-app-title-hero.maid-room-hero-badge.room-badge.room-16,
.maid-report-suite-em.maid-room-hero-badge.room-badge.room-16 { background-color: #c7d2fe; color: #333; }
.maid-home-card .maid-app-title-hero.maid-room-hero-badge.room-badge.room-17,
.maid-report-suite-em.maid-room-hero-badge.room-badge.room-17 { background-color: #fed7aa; color: #333; }
.maid-home-card .maid-app-title-hero.maid-room-hero-badge.room-badge.room-18,
.maid-report-suite-em.maid-room-hero-badge.room-badge.room-18 { background-color: #f9a8d4; color: #333; }
.maid-home-card .maid-app-title-hero.maid-room-hero-badge.room-badge.room-19,
.maid-report-suite-em.maid-room-hero-badge.room-badge.room-19 { background-color: #86efac; color: #333; }
.maid-home-card .maid-app-title-hero.maid-room-hero-badge.room-badge.room-20,
.maid-report-suite-em.maid-room-hero-badge.room-badge.room-20 { background-color: #67e8f9; color: #333; }

.maid-home-actions {
  gap: 14px;
}

.maid-main-menu-actions.maid-home-actions {
  gap: 0;
}

.maid-menu-section {
  margin: 12px 0;
  padding: 0;
  border: 0;
  background: transparent;
  box-shadow: none;
}

.maid-menu-section--restaurant {
  margin-top: 14px;
}

.maid-menu-section__btn {
  position: relative;
}

.maid-menu-section__btn--badges-split {
  display: grid;
  grid-template-columns: minmax(34px, auto) 1fr minmax(34px, auto);
  align-items: center;
  column-gap: 8px;
  padding-left: 12px;
  padding-right: 12px;
}

.maid-menu-btn-label {
  text-align: center;
  line-height: 1.2;
}

.maid-menu-badge-slot {
  display: flex;
  align-items: center;
  min-width: 34px;
  min-height: 30px;
}

.maid-menu-badge-slot--left {
  justify-content: flex-start;
}

.maid-menu-badge-slot--right {
  justify-content: flex-end;
}

.maid-menu-badge {
  align-items: center;
  justify-content: center;
  min-width: 30px;
  height: 30px;
  padding: 0 8px;
  border-radius: 999px;
  color: #fff;
  font-size: 14px;
  font-weight: 800;
  line-height: 1;
  border: 2px solid #fff;
  flex-shrink: 0;
}

.maid-menu-badge--pending {
  background: #ef4444;
  box-shadow: 0 2px 8px rgba(220, 38, 38, 0.45);
}

.maid-menu-badge--confirmed {
  background: #16a34a;
  box-shadow: 0 2px 8px rgba(22, 163, 74, 0.4);
}

/* Badge pedidos (tab camareira / menu) — più visibile del nav-badge admin */
.maid-alert-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 28px;
  height: 28px;
  padding: 0 8px;
  margin-left: 6px;
  border-radius: 999px;
  color: #fff;
  font-size: 14px;
  font-weight: 800;
  line-height: 1;
  border: 2px solid rgba(255, 255, 255, 0.9);
  vertical-align: middle;
}
.maid-alert-badge--pending {
  background: #ef4444;
  box-shadow: 0 2px 6px rgba(220, 38, 38, 0.4);
}
.maid-alert-badge--confirmed {
  background: #16a34a;
  box-shadow: 0 2px 6px rgba(22, 163, 74, 0.35);
}

.maid-form-shell .maid-home-actions .maid-btn-restaurant,
.maid-home-actions .maid-btn-restaurant {
  background: linear-gradient(180deg, #fff7ed 0%, #ffedd5 42%, #fed7aa 100%);
  color: #9a3412;
  border: 1px solid rgba(234, 88, 12, 0.45);
  box-shadow:
    0 2px 8px rgba(194, 65, 12, 0.14),
    inset 0 1px 0 rgba(255, 255, 255, 0.92);
}

.maid-form-shell .maid-home-actions .maid-btn-restaurant:active,
.maid-home-actions .maid-btn-restaurant:active {
  filter: brightness(0.97);
  box-shadow: inset 0 2px 10px rgba(154, 52, 18, 0.12);
}

.maid-menu-rule {
  margin:        14px 0;
  border:        0;
  height:        1px;
  background:    rgba(120, 80, 100, 0.24);
  width:         100%;
  flex-shrink:   0;
}

.maid-home-actions .maid-btn {
  padding: 16px 18px;
  font-size: var(--font-size-ui);
  font-weight: 800;
  letter-spacing: 0.035em;
}

/* Home — fondo molto delicato, etichette ben marcate */
.maid-home-actions .maid-btn-primary {
  background: linear-gradient(180deg, #fdf6fb 0%, #f6e8f2 46%, #efdcef 100%);
  color: #5c3f52;
  border: 1px solid rgba(170, 125, 158, 0.42);
  box-shadow:
    0 1px 3px rgba(120, 75, 105, 0.08),
    inset 0 1px 0 rgba(255, 255, 255, 0.92);
}

.maid-home-actions .maid-btn-accent {
  background: linear-gradient(180deg, #fffbf9 0%, #fcf4f8 42%, #f8eef5 100%);
  color: #5e4864;
  border: 1px solid rgba(180, 145, 170, 0.38);
  box-shadow:
    0 1px 3px rgba(130, 95, 125, 0.07),
    inset 0 1px 0 rgba(255, 255, 255, 0.94);
}

.maid-home-actions .maid-btn:active {
  filter: none;
  box-shadow: inset 0 2px 10px rgba(0, 0, 0, 0.07);
}

/* Dentro maid-form-shell: primário verde e muted coerenti (priorità su .maid-home-actions) */
.maid-form-shell .maid-home-actions .maid-btn-primary,
.maid-form-shell form .maid-btn-primary {
  background: linear-gradient(180deg, #f4fbf7 0%, #dff3e9 38%, #cce9dd 100%);
  color: #0a2f24;
  border: 1px solid rgba(75, 140, 110, 0.48);
  box-shadow:
    0 2px 8px rgba(45, 100, 75, 0.12),
    inset 0 1px 0 rgba(255, 255, 255, 0.95);
}

.maid-form-shell .maid-home-actions .maid-btn-primary:active,
.maid-form-shell form .maid-btn-primary:active {
  filter: brightness(0.975);
  box-shadow: inset 0 2px 10px rgba(35, 85, 65, 0.14);
}

.maid-home-suite-form {
  margin-bottom: 18px;
}

.maid-home-suite-select {
  font-size: clamp(17px, 4.6vw, 20px);
  font-weight: 700;
  letter-spacing: 0.02em;
  padding-top: 14px;
  padding-bottom: 14px;
}

.maid-select {
  width: 100%;
  box-sizing: border-box;
  cursor: pointer;
  appearance: none;
  background-color: #fffdfb;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23987894' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 12px center;
  padding-right: 40px;
}

.maid-app-intro { margin: 0 0 16px; color: #7a6b82; }

.maid-actions { display: flex; flex-direction: column; gap: 10px; }

.maid-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 13px 18px;
  border-radius: 12px;
  font-size: var(--font-size-lg);
  font-weight: 700;
  cursor: pointer;
  border: none;
  text-decoration: none;
}

.maid-full { width: 100%; box-sizing: border-box; }

.maid-btn-primary {
  background: linear-gradient(180deg, #fceef7 0%, #f3dce9 48%, #e9cce1 100%);
  color: #523349;
  border: 1px solid rgba(155, 110, 145, 0.42);
  box-shadow:
    0 1px 3px rgba(95, 55, 85, 0.09),
    inset 0 1px 0 rgba(255, 255, 255, 0.88);
}

.maid-btn-accent {
  background: linear-gradient(180deg, #fdf5fa 0%, #efe2ef 100%);
  color: #5c4360;
  border: 1px solid rgba(165, 125, 158, 0.4);
}

.maid-btn-muted {
  background: linear-gradient(180deg, #f4eef5 0%, #ebe4ee 100%);
  color: #5d4b68;
  border: 1px solid rgba(175, 155, 175, 0.35);
}

.maid-btn-mini {
  padding: 8px 11px;
  font-size: var(--font-size-base);
  border-radius: 8px;
  background: linear-gradient(180deg, #fde8ee 0%, #f5d5df 100%);
  color: #8b4060;
  border: 1px solid rgba(200, 130, 155, 0.45);
  cursor: pointer;
  font-weight: 700;
}

.maid-stack {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

/* Extra separation before submit (e.g. login: dopo Senha) */
.maid-submit-spaced {
  margin-top: 14px;
}

.maid-label {
  font-size: var(--font-size-md);
  font-weight: 700;
  color: #5c4968;
}

.maid-input {
  padding: 13px 14px;
  border-radius: 12px;
  border: 1px solid rgba(200, 175, 198, 0.65);
  font-size: var(--font-size-lead);
  width: 100%;
  box-sizing: border-box;
  background: #fffdfb;
}

.maid-select-big { min-height: 48px; }

.maid-input-short { max-width: 120px; }

.maid-muted { color: #94889e; font-size: var(--font-size-rg); margin: 0 0 6px; }

.maid-block { display: block; }

.maid-block-small { display: block; font-size: var(--font-size-md); margin-top: 2px; }

.maid-alert {
  padding: 12px 14px;
  border-radius: 12px;
  font-size: var(--font-size-rg);
  font-weight: 600;
  margin-bottom: 14px;
}

.maid-alert-error {
  background: linear-gradient(180deg, #fff8f9 0%, #fceef1 100%);
  border: 1px solid #f0c9d4;
  color: #9a3e58;
}

.maid-alert-warn {
  background: linear-gradient(180deg, #fffdf8 0%, #fdf5ec 100%);
  border: 1px solid #f5dcc8;
  color: #8a6048;
}

.maid-alert-multiline {
  text-align: center;
}

.maid-alert-multiline .maid-alert-line {
  display: block;
}

.maid-alert-multiline .maid-alert-line + .maid-alert-line {
  margin-top: 1.5em;
}

.maid-alert-ok {
  background: linear-gradient(180deg, #f8fbf9 0%, #eef6f1 100%);
  border: 1px solid #c5e5d6;
  color: #4a7c65;
}

.maid-card {
  background: linear-gradient(165deg, #ffffff 0%, #fdfafd 100%);
  border-radius: 14px;
  padding: 14px;
  border: 1px solid rgba(210, 185, 205, 0.45);
  margin-bottom: 16px;
}

.maid-section {
  margin-top: 22px;
}

.maid-h2 {
  margin: 0 0 10px;
  font-size: var(--font-size-ui);
}

.maid-minibar-list {
  margin: 0;
  padding-left: 18px;
  background: #fffdfb;
  border-radius: 12px;
  border: 1px solid rgba(205, 185, 200, 0.5);
  padding: 12px 14px 12px 28px;
}

.maid-quick-groups {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}

.maid-chip {
  padding: 7px 11px;
  border-radius: 999px;
  border: 1px solid rgba(195, 170, 195, 0.65);
  background: linear-gradient(180deg, #fdfbff 0%, #f7f2f9 100%);
  font-weight: 700;
  font-size: var(--font-size-md);
  cursor: pointer;
}

.maid-radio-card {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  padding: 14px;
  background: #fffdfb;
  border-radius: 12px;
  border: 1px solid rgba(200, 180, 198, 0.55);
  margin-bottom: 10px;
  cursor: pointer;
}

.maid-radio-card input { margin-top: 6px; }

/* Frigobar — escolha suíte / hóspede */
.maid-frigobar-suite-list {
  gap: 14px;
}

.maid-frigobar-suite-card {
  display: block;
  width: 100%;
  padding: 0;
  margin: 0;
  text-decoration: none;
  color: inherit;
  border-radius: 14px;
  overflow: hidden;
  border: 1px solid rgba(45, 95, 68, 0.22);
  background: #fff;
  box-shadow: 0 2px 10px rgba(40, 70, 55, 0.08);
}

.maid-frigobar-suite-card:active {
  filter: brightness(0.98);
}

.maid-frigobar-room-btn {
  display: block;
  width: 100%;
  box-sizing: border-box;
  padding: 16px 14px;
  margin: 0;
  font-size: clamp(1.35rem, 5.5vw, 1.85rem);
  font-weight: 700;
  line-height: 1.15;
  text-align: center;
  letter-spacing: 0.04em;
  border: none;
  border-bottom: 2px solid rgba(0, 0, 0, 0.1);
  border-radius: 0;
}

.maid-frigobar-suite-header {
  margin-bottom: 16px;
}

.maid-frigobar-suite-header .maid-frigobar-room-btn {
  border-radius: 12px;
  border: 2px solid rgba(0, 0, 0, 0.12);
  border-bottom: 2px solid rgba(0, 0, 0, 0.12);
}

.maid-frigobar-res-info {
  padding: 12px 14px 14px;
}

.maid-frigobar-res-guest {
  margin: 0 0 6px;
  font-size: var(--font-size-lg);
  font-weight: 700;
  line-height: 1.3;
  color: #1a2e24;
  word-break: break-word;
}

.maid-frigobar-res-stay {
  margin: 0 0 6px;
  font-size: var(--font-size-sm);
  line-height: 1.4;
  color: #3d5248;
  font-variant-numeric: tabular-nums;
}

.maid-frigobar-res-notes {
  margin: 0;
  font-size: var(--font-size-sm);
  line-height: 1.45;
  color: #5a4030;
  font-weight: 500;
  word-break: break-word;
}

.maid-frigobar-res-info--empty .maid-frigobar-res-guest {
  color: #6b7280;
  font-weight: 600;
}

.maid-frigobar-res-info--empty .maid-frigobar-res-stay {
  color: #9ca3af;
  font-style: italic;
}

.maid-frigobar-res-more {
  margin: 0;
  padding: 0 14px 12px;
  font-size: var(--font-size-xs);
  font-weight: 600;
  color: #4a6b58;
}

.maid-frigobar-pick-hint {
  margin: 0 0 10px;
  font-size: var(--font-size-sm);
  color: #4a5c52;
  font-weight: 600;
}

.maid-frigobar-guest-pick {
  display: block;
  position: relative;
  padding: 12px 14px;
  margin-bottom: 12px;
  border-radius: 12px;
  border: 2px solid rgba(200, 180, 198, 0.55);
  background: linear-gradient(165deg, #fffbf9 0%, #fdf4f8 55%, #fcf1f6 100%);
  cursor: pointer;
}

.maid-frigobar-guest-pick input[type="radio"] {
  position: absolute;
  opacity: 0;
  width: 1px;
  height: 1px;
  pointer-events: none;
}

.maid-frigobar-guest-pick:has(input:checked) {
  border-color: #3d7a5c;
  box-shadow: 0 0 0 2px rgba(61, 122, 92, 0.35);
}

.maid-frigobar-guest-pick__body .maid-frigobar-res-info {
  padding: 0;
}

.maid-frigobar-report-btn {
  margin-top: 6px;
}

.maid-frigobar-page .maid-form-shell {
  max-width: min(520px, 100%);
}

@media (min-width: 641px) {
  .maid-frigobar-page .maid-form-shell {
    max-width: min(640px, 100%);
  }

  .maid-frigobar-res-guest {
    font-size: var(--font-size-xl);
  }

  .maid-frigobar-res-stay,
  .maid-frigobar-res-notes {
    font-size: var(--font-size-md);
  }
}

.maid-radio-card.maid-res-booking-card {
  background: linear-gradient(165deg, #fffbf9 0%, #fdf4f8 55%, #fcf1f6 100%);
  border: 1px solid rgba(236, 195, 210, 0.85);
  margin-bottom: 12px;
}

.maid-radio-card.maid-res-booking-card:has(input:checked) {
  border-color: #d9a8bf;
  box-shadow: 0 0 0 2px rgba(217, 168, 191, 0.42);
}

.maid-res-booking-inner {
  flex: 1;
  min-width: 0;
}

hr.maid-res-bookings-sep {
  border: 0;
  border-top: 1px solid rgba(200, 175, 192, 0.85);
  margin: 14px 4px 16px;
  height: 0;
}

.maid-res-booking-maid-notes {
  margin-top: 8px;
  margin-bottom: 0;
  padding: 7px 10px;
  width: 100%;
  box-sizing: border-box;
  font-size: var(--font-size-sm);
  line-height: 1.42;
  color: #4a3545;
  font-weight: 600;
  background: rgba(255, 252, 248, 0.92);
  border: 1px solid rgba(210, 165, 185, 0.65);
  border-radius: 10px;
  min-width: 0;
  white-space: normal;
  word-break: break-word;
}

.maid-lines {
  list-style: none;
  padding: 0;
  margin: 0;
}

.maid-line-item {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 10px;
  padding: 14px;
  background: #fffdfb;
  border: 1px solid rgba(205, 188, 205, 0.5);
  border-radius: 12px;
  margin-bottom: 8px;
}

.maid-line-actions {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 8px;
  flex-shrink: 0;
}

.maid-qty-inline {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
}

.maid-confirm-block {
  margin-top: 24px;
}

.maid-confirm-explainer {
  margin-top: 12px;
  padding: 12px 14px;
  font-size: var(--font-size-md);
  line-height: 1.48;
  color: #3d4f46;
  background: linear-gradient(180deg, #f9fcf9 0%, #eef4f1 100%);
  border: 1px solid rgba(110, 145, 125, 0.42);
  border-radius: 12px;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.75);
}

.maid-confirm-explainer-lead {
  margin: 0 0 8px;
}

.maid-confirm-explainer-list {
  margin: 0;
  padding-left: 1.15rem;
}

.maid-confirm-explainer-list li {
  margin-bottom: 6px;
}

.maid-confirm-explainer-list li:last-child {
  margin-bottom: 0;
}

/* Modal dupla confirmação — sem título do browser / domínio */
body.maid-confirm-modal-open {
  overflow: hidden;
}

.maid-confirm-modal {
  position: fixed;
  inset: 0;
  z-index: 10050;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: max(16px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) max(16px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));
  box-sizing: border-box;
}

.maid-confirm-modal[hidden] {
  display: none !important;
}

.maid-confirm-modal-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(28, 48, 38, 0.48);
  -webkit-backdrop-filter: blur(3px);
  backdrop-filter: blur(3px);
  border: none;
  padding: 0;
  margin: 0;
  cursor: pointer;
}

.maid-confirm-modal-dialog {
  position: relative;
  width: min(22.5rem, 100%);
  max-height: min(85vh, 100%);
  overflow: auto;
  -webkit-overflow-scrolling: touch;
}

.maid-confirm-modal-card {
  background: linear-gradient(165deg, #fff 0%, #f6fbf8 55%, #ecf5f0 100%);
  border-radius: 18px;
  padding: 22px 20px 18px;
  border: 2px solid rgba(95, 145, 118, 0.4);
  box-shadow:
    0 16px 44px rgba(30, 75, 55, 0.2),
    inset 0 1px 0 rgba(255, 255, 255, 0.9);
}

.maid-confirm-modal-title {
  margin: 0 0 14px;
  font-size: clamp(1.2rem, 4.8vw, 1.42rem);
  font-weight: 800;
  letter-spacing: 0.02em;
  color: #b45309;
  line-height: 1.2;
  text-align: center;
}

.maid-confirm-modal-message {
  margin: 0;
  font-size: var(--font-size-lg);
  line-height: 1.52;
  font-weight: 600;
  color: #354940;
  text-align: center;
  white-space: pre-line;
}

.maid-confirm-modal-list {
  margin:      0;
  padding:     0 0 0 1.15em;
  list-style:  disc;
  font-size:   var(--font-size-md);
  line-height: 1.5;
  font-weight: 600;
  color:       #354940;
  text-align:  left;
}

.maid-confirm-modal-list li + li {
  margin-top: 10px;
}

.maid-confirm-modal-buttons {
  display: flex;
  flex-direction: column;
  gap: 0;
  margin-top: 20px;
}

.maid-confirm-modal-btn-gap {
  height:     14px;
  min-height: 14px;
  flex-shrink: 0;
}

/* maid_verify — após envio à administração */
.maid-verify-sent {
  margin-top: 4px;
}

.maid-verify-sent-heading {
  margin: 0 0 10px;
  font-size: var(--font-size-lg);
  font-weight: 700;
  color: #354940;
}

.maid-verify-sent-lines {
  margin: 0 0 16px;
}

.maid-verify-sent-lines .maid-consumo-line {
  padding-right: 8px;
}

.maid-verify-sent-banner {
  margin: 0 0 16px;
  padding: 14px 12px;
  border-radius: 12px;
  background: linear-gradient(180deg, #ecfdf3 0%, #d1fae5 100%);
  border: 1px solid rgba(34, 120, 80, 0.35);
  text-align: center;
}

.maid-verify-sent-title {
  margin: 0 0 6px;
  font-size: var(--font-size-xl);
  font-weight: 800;
  color: #14532d;
  line-height: 1.25;
}

.maid-verify-sent-sub {
  margin: 0;
  font-size: var(--font-size-md);
  font-weight: 600;
  color: #166534;
  line-height: 1.35;
}

.maid-verify-sent .maid-verify-wa-actions {
  margin-top: 4px;
  margin-bottom: 0;
}

.maid-verify-sent-gap {
  height:     18px;
  min-height: 18px;
}

.maid-verify-sent .maid-home-actions {
  margin-top: 0;
}

/* maid_verify — righette tra form “Adicionar”, lista consumos e confirmar */
.maid-verify-divider {
  border: 0;
  height: 0;
  margin: 18px 0;
  border-top: 1px solid rgba(115, 128, 122, 0.42);
}

.maid-verify-divider--before-confirm {
  margin-top: 22px;
  margin-bottom: 14px;
}

.maid-verify-minimal .maid-section-consumos-list {
  padding-top: 2px;
}

/* maid_verify — layout fluido no telefone (evita overflow horizontal + select largo) */
.maid-app-shell.maid-verify-page {
  width: 100%;
  max-width: min(520px, 100%);
  padding-left: clamp(10px, 3.2vw, 18px);
  padding-right: clamp(10px, 3.2vw, 18px);
  box-sizing: border-box;
  min-width: 0;
  overflow-x: clip;
}

.maid-app-card.maid-verify-card {
  width: 100%;
  max-width: 100%;
  margin-left: auto;
  margin-right: auto;
  padding: clamp(14px, 3.8vw, 22px) clamp(12px, 3.2vw, 18px);
  box-sizing: border-box;
  min-width: 0;
  background: linear-gradient(165deg, #ffffff 0%, #fefafd 55%, #fcf7fb 100%);
  border-radius: 18px;
  border: 1px solid rgba(115, 165, 138, 0.38);
  box-shadow:
    0 2px 0 rgba(255, 255, 255, 0.92) inset,
    0 10px 32px rgba(55, 95, 72, 0.08);
}

.maid-verify-page .maid-register-form,
.maid-verify-page .maid-register-product-col {
  min-width: 0;
}

.maid-verify-page .maid-register-product-col {
  overflow-x: clip;
}

.maid-verify-page .maid-verify-product-select {
  max-width: 100%;
}

.maid-verify-page .maid-verify-hero-stack,
.maid-verify-page .maid-verify-context-strip {
  min-width: 0;
}

@media (max-width: 440px) {
  .maid-verify-page .maid-ctx-row-four {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
  }

  /* Mantém os 5 botões visíveis numa única linha no celular */
  .maid-verify-page .maid-ctx-row-single {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    overflow-x: visible;
    overflow-y: visible;
    gap: 1px;
    padding-bottom: 0;
  }

  .maid-verify-page .maid-ctx-row-single .maid-ctx-big {
    min-width: 0;
    max-width: none;
    white-space: nowrap;
    text-align: center;
    min-height: 32px;
    padding: 3px 1px;
    font-size: clamp(0.48rem, 2.1vw, 0.58rem);
    line-height: 1.1;
    overflow: hidden;
    text-overflow: ellipsis;
  }

  .maid-verify-page .maid-ctx-row-four .maid-ctx-big {
    white-space: normal;
    text-align: center;
    hyphens: auto;
    min-height: 42px;
    padding: 8px 5px;
    font-size: clamp(0.58rem, 2.7vw, 0.72rem);
    line-height: 1.15;
  }
}

@media (max-width: 360px) {
  .maid-verify-page .maid-verify-minimal .maid-register-prod-qty-row {
    grid-template-columns: minmax(0, 1fr);
    gap: 12px;
  }

  .maid-verify-page .maid-verify-minimal .maid-register-qty-col {
    max-width: none;
    justify-self: stretch;
    width: 100%;
  }

  .maid-verify-page .maid-verify-minimal .maid-verify-qty-select {
    max-width: none;
    width: 100%;
  }
}

/* maid_reservations — suite + cards bem evidentes */
.maid-reservations-card .maid-reservations-hero.maid-app-title-hero {
  font-size: clamp(1.38rem, 5.9vw, 2.08rem);
  padding: 18px 15px;
  margin-bottom: 18px;
  letter-spacing: 0.032em;
}

.maid-reservations-card .maid-res-booking-emphasis {
  padding: 17px 15px;
}

.maid-reservations-card .maid-res-booking-emphasis .maid-verify-guest-name {
  font-size: clamp(1.2rem, 4.4vw, 1.48rem);
  margin-bottom: 6px;
}

.maid-reservations-card .maid-res-booking-emphasis .maid-verify-company {
  font-size: var(--font-size-lg);
  margin-bottom: 8px;
}

.maid-reservations-card .maid-res-booking-emphasis .maid-verify-res-meta {
  font-size: var(--font-size-lg);
}

/* Botões de contexto — rosa malva suave */
.maid-home-page .maid-ctx-big.is-active {
  background: linear-gradient(180deg, #f4e6f0 0%, #e9d5e6 100%);
  border-color: #c9abc0;
  color: #4f3350;
}

.maid-verify-booking-card {
  background: linear-gradient(165deg, #fffbf9 0%, #fdf5f3 48%, #faf0f5 100%);
  border: 1px solid rgba(230, 200, 215, 0.9);
  border-radius: 14px;
  padding: 16px 16px 14px;
  margin-bottom: 16px;
}

.maid-verify-guest-name {
  margin: 0 0 8px;
  font-size: var(--font-size-3xl);
  font-weight: 800;
  line-height: 1.2;
  color: #4a3952;
}

.maid-verify-company {
  margin: 0 0 10px;
  font-size: var(--font-size-lg);
  color: #9a8aa5;
  font-weight: 600;
}

.maid-verify-res-meta {
  margin: 0;
  font-size: var(--font-size-lead);
  font-weight: 600;
  color: #5d4f6a;
  line-height: 1.45;
}

.maid-booking-dates-compact {
  font-size: var(--font-size-base);
  font-weight: 600;
  color: #8b7c98;
  line-height: 1.35;
}

.maid-booking-dates-compact .maid-verify-nights {
  font-weight: 700;
  color: #6d5d7a;
}

.maid-verify-nights {
  font-weight: 700;
  color: #5c4a6a;
}

/* maid_verify — reserva só “anunciada”: faixa clara sob o título suite */
.maid-verify-minimal .maid-verify-hero-stack {
  margin-bottom: 14px;
}

.maid-verify-minimal .maid-verify-hero-title.maid-app-title-hero {
  margin-bottom: 0;
}

.maid-verify-minimal .maid-verify-context-strip {
  margin-top: 8px;
  padding: 9px 13px 10px;
  background: linear-gradient(180deg, #fbfcfb 0%, #eef3f1 55%, #e8eeeb 100%);
  border: 1px solid rgba(140, 165, 155, 0.42);
  border-radius: 11px;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.9);
}

.maid-verify-minimal .maid-verify-strip-line {
  margin: 0;
  line-height: 1.4;
}

.maid-verify-minimal .maid-verify-strip-line + .maid-verify-strip-line {
  margin-top: 6px;
}

.maid-verify-minimal .maid-verify-strip-line--guest {
  font-size: var(--font-size-lg);
}

.maid-verify-minimal .maid-verify-strip-guest {
  font-weight: 800;
  color: #1a2e24;
}

.maid-verify-minimal .maid-verify-strip-line--stay {
  font-size: var(--font-size-rg);
  font-weight: 600;
  color: #3d5248;
  font-variant-numeric: tabular-nums;
  white-space: normal;
  word-break: break-word;
}

.maid-verify-minimal .maid-verify-strip-line--notes {
  font-size: var(--font-size-sm);
  font-weight: 500;
  color: #5a4030;
  white-space: normal;
  word-break: break-word;
  line-height: 1.45;
}

.maid-verify-minimal .maid-verify-h-quiet {
  font-size: var(--font-size-rg) !important;
  font-weight: 600 !important;
  letter-spacing: 0.045em !important;
  color: #58656d !important;
}

.maid-verify-minimal .maid-verify-register-title.maid-verify-h-quiet {
  margin: 0 0 12px !important;
}

.maid-verify-minimal .maid-section-register {
  margin-top: 12px;
}

.maid-verify-minimal .maid-section {
  margin-top: 16px;
}

.maid-ctx-toolbar {
  margin-bottom: 14px;
}

.maid-ctx-row-four {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 6px;
}

/* Verificação: Frigobar · Lavanderia · Restaurante · Interno · Dotações (uma linha) */
.maid-ctx-row-single {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 6px;
}

.maid-ctx-row-four .maid-ctx-big,
.maid-ctx-row-single .maid-ctx-big {
  min-height: 44px;
  padding: 8px 4px;
  font-size: clamp(0.62rem, 2.45vw, 0.76rem);
  line-height: 1.15;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.maid-ctx-dotacoes-cell {
  width: 100%;
  box-sizing: border-box;
  min-width: 0;
}

.maid-ctx-big {
  min-height: 50px;
  padding: 10px 12px;
  border-radius: 14px;
  border: 2px solid rgba(190, 175, 195, 0.55);
  background: linear-gradient(180deg, #ffffff 0%, #fdf9fc 100%);
  font-size: 14px;
  font-weight: 800;
  color: #4e3d56;
  cursor: pointer;
  line-height: 1.2;
}

.maid-ctx-big.is-active {
  background: linear-gradient(180deg, #f0dfe9 0%, #e5d0de 100%);
  border-color: #b893ad;
  color: #452c45;
}

.maid-ctx-big-dotacoes {
  border-style: dashed;
  border-color: #c9b8c8;
  background: linear-gradient(180deg, #fdfaff 0%, #f8f2f8 100%);
  font-weight: 700;
}

.maid-ctx-big-dotacoes.is-open {
  border-style: solid;
  border-color: #b8a2b6;
  background: #f0e8f1;
}

.maid-dotacoes-panel {
  margin: 0 0 18px;
  padding: 12px 14px;
  background: #fffdfb;
  border: 1px solid rgba(205, 188, 205, 0.55);
  border-radius: 14px;
}

.maid-minibar-list-compact {
  margin: 0;
  padding-left: 20px;
  font-size: var(--font-size-lead);
  line-height: 1.5;
}

.maid-dotacoes-empty {
  margin: 8px 0;
  font-size: var(--font-size-lead);
}

.maid-verify-register-title {
  margin: 0 0 16px;
  text-align: center;
  font-size: var(--font-size-4xl);
  font-weight: 800;
  letter-spacing: 0.02em;
  color: #544560;
}

.maid-register-form .maid-label {
  font-size: var(--font-size-lg);
}

.maid-verify-minimal .maid-register-form .maid-label {
  font-size: var(--font-size-base);
  font-weight: 700;
}

.maid-register-prod-qty-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 12px 14px;
  align-items: start;
}

/* maid_verify minimal — produto ocupa o espaço; quantidade só 2 dígitos */
.maid-verify-minimal .maid-register-prod-qty-row {
  grid-template-columns: minmax(0, 1fr) minmax(2.65rem, 3.35rem);
  gap: 8px 10px;
  align-items: end;
}

.maid-verify-minimal .maid-register-qty-col {
  max-width: 3.35rem;
  justify-self: end;
}

.maid-register-product-col,
.maid-register-qty-col {
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-width: 0;
}

.maid-register-qty-col {
  flex-shrink: 0;
}

.maid-register-qty-col .maid-label {
  text-align: center;
}

.maid-verify-product-select.maid-select {
  width: 100%;
}

.maid-verify-product-select {
  min-height: 56px;
  font-size: clamp(1.02rem, 3.5vw, 1.28rem);
  font-weight: 700;
  padding-top: 12px;
  padding-bottom: 12px;
}

.maid-verify-minimal .maid-verify-product-select {
  min-height: 44px;
  font-size: clamp(0.78rem, 2.85vw, 0.95rem);
  font-weight: 700;
  padding: 8px 10px;
  line-height: 1.25;
}

/* Quantidade por seleção (1–15); largura ~2 caracteres visíveis */
.maid-verify-qty-select {
  box-sizing: border-box;
  width: 100%;
  max-width: 3.35rem;
  min-height: 44px;
  margin: 0;
  padding: 8px 6px;
  font-size: clamp(0.98rem, 3.65vw, 1.28rem);
  font-weight: 800;
  text-align: center;
  line-height: 1.1;
}

.maid-verify-minimal .maid-verify-qty-select {
  max-width: 100%;
  padding-left: 4px;
  padding-right: 4px;
}

.maid-verify-qty-compact {
  box-sizing: border-box;
  width: 3.85rem;
  min-width: 3.85rem;
  max-width: 3.85rem;
  margin: 0 auto;
  padding: 14px 6px;
  font-size: clamp(1.48rem, 5vw, 1.92rem);
  font-weight: 800;
  text-align: center;
  line-height: 1.05;
}

.maid-verify-qty-compact::-webkit-outer-spin-button,
.maid-verify-qty-compact::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

.maid-verify-qty-compact[type='number'] {
  appearance: textfield;
  -moz-appearance: textfield;
}

.maid-input-qty-register {
  max-width: 100%;
  font-size: var(--font-size-3xl);
  font-weight: 700;
  text-align: center;
  padding: 16px 14px;
}

.maid-btn-add-consumo {
  margin-top: 6px;
  min-height: 58px;
  font-size: var(--font-size-2xl) !important;
  font-weight: 800 !important;
  letter-spacing: 0.035em !important;
  background: linear-gradient(180deg, #f4f9ff 0%, #e8f2fc 48%, #dceaf8 100%) !important;
  color: #0d2d4d !important;
  border: 2px solid rgba(90, 140, 200, 0.45) !important;
  box-shadow:
    0 1px 3px rgba(40, 90, 150, 0.1),
    inset 0 1px 0 rgba(255, 255, 255, 0.92) !important;
}

/* Alinhado à linha Frigobar / Lavanderia / … */
.maid-verify-minimal .maid-btn-add-consumo {
  margin-top: 8px;
  min-height: 44px;
  padding: 8px 12px !important;
  border-radius: 14px !important;
  font-size: clamp(0.78rem, 2.95vw, 0.9rem) !important;
  font-weight: 800 !important;
  letter-spacing: 0.045em !important;
  line-height: 1.15 !important;
  color: #0a2540 !important;
  background: linear-gradient(180deg, #f3f8fe 0%, #e5f0fb 52%, #d9e8f8 100%) !important;
  border-color: rgba(75, 125, 195, 0.48) !important;
}

.maid-btn-add-consumo:active {
  filter: brightness(0.97);
}

.maid-elenco-title {
  font-size: var(--font-size-xl-alt);
  font-weight: 500;
  text-align: center;
  color: #6d5f78;
}

.maid-consumo-lines {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.maid-verify-minimal .maid-consumo-lines {
  gap: 6px;
}

.maid-consumo-line {
  display: grid;
  grid-template-columns: 2.5rem minmax(0, 1fr) 2.75rem;
  gap: 10px;
  align-items: center;
  padding: 14px 12px;
  background: linear-gradient(165deg, #fffdfd 0%, #fcf9fc 100%);
  border: 1px solid rgba(210, 190, 208, 0.55);
  border-radius: 14px;
}

.maid-consumo-line:has(.maid-consumo-delete-form) {
  grid-template-columns: 2.5rem minmax(0, 1fr) 2.75rem minmax(52px, auto);
}

.maid-verify-card .maid-consumo-line {
  grid-template-columns: 2.75rem minmax(0, 1fr) 3.65rem;
}

.maid-verify-card .maid-consumo-line:has(.maid-consumo-delete-form) {
  grid-template-columns: 2.75rem minmax(0, 1fr) 3.65rem minmax(52px, auto);
}

.maid-verify-card.maid-verify-minimal .maid-consumo-code {
  display: none !important;
}

.maid-verify-card.maid-verify-minimal .maid-consumo-line {
  grid-template-columns: minmax(0, 1fr) 2.65rem;
  gap: 8px;
  padding: 8px 10px;
  border-radius: 12px;
}

.maid-verify-card.maid-verify-minimal .maid-consumo-line:has(.maid-consumo-delete-form) {
  grid-template-columns: minmax(0, 1fr) 2.65rem minmax(38px, auto);
}

.maid-verify-card.maid-verify-minimal .maid-btn-line-delete {
  min-width: 38px;
  min-height: 38px;
  padding: 4px 6px;
  font-size: var(--font-size-lg);
  line-height: 1;
  border-radius: 10px;
}

.maid-consumo-code {
  font-size: var(--font-size-base);
  font-weight: 700;
  color: #97899f;
  text-align: right;
}

.maid-consumo-name {
  font-size: var(--font-size-ui);
  font-weight: 700;
  color: #453550;
  line-height: 1.35;
  min-width: 0;
}

.maid-consumo-qty {
  font-size: var(--font-size-3xl);
  font-weight: 800;
  color: #453550;
  text-align: center;
  line-height: 1;
}

.maid-verify-card .maid-consumo-name {
  font-size: clamp(1.22rem, 3.9vw, 1.45rem);
}

.maid-verify-card .maid-consumo-qty {
  font-size: clamp(1.52rem, 4.6vw, 1.88rem);
}

.maid-verify-card.maid-verify-minimal .maid-consumo-name {
  font-size: clamp(0.8rem, 2.75vw, 0.94rem);
  font-weight: 700;
  line-height: 1.28;
}

.maid-verify-card.maid-verify-minimal .maid-consumo-qty {
  font-size: clamp(0.92rem, 3.15vw, 1.06rem);
  font-weight: 800;
}

.maid-verify-card .maid-consumo-code {
  font-size: var(--font-size-md);
}

.maid-btn-line-delete {
  min-width: 54px;
  min-height: 54px;
  padding: 8px 10px;
  border-radius: 12px;
  border: 2px solid #e8a8b8;
  background: linear-gradient(180deg, #fff 0%, #fef6f8 100%);
  color: #b8405c;
  font-size: var(--font-size-ui);
  line-height: 1;
  cursor: pointer;
  font-weight: 700;
}

.maid-btn-line-delete:active {
  background: linear-gradient(180deg, #fdf2f5 0%, #fce8ee 100%);
}

.maid-btn-confirm-final {
  min-height: 58px;
  font-size: var(--font-size-ui) !important;
  font-weight: 800 !important;
  padding-top: 16px !important;
  padding-bottom: 16px !important;
}

.maid-verify-minimal .maid-btn-confirm-final {
  min-height: 44px;
  padding-top: 10px !important;
  padding-bottom: 10px !important;
  border-radius: 14px !important;
  font-size: clamp(0.72rem, 2.75vw, 0.86rem) !important;
  font-weight: 800 !important;
  line-height: 1.2 !important;
}

/* Destaque suave para confirmação final */
.maid-verify-card .maid-home-actions .maid-btn-primary.maid-btn-confirm-final {
  background: linear-gradient(180deg, #fdf6f8 0%, #f8dfe6 42%, #f2cfd8 100%);
  color: #6e3548;
  border: 2px solid rgba(220, 150, 168, 0.85);
  box-shadow:
    0 2px 6px rgba(130, 75, 95, 0.1),
    inset 0 1px 0 rgba(255, 255, 255, 0.82);
}

.maid-verify-card .maid-home-actions .maid-btn-primary.maid-btn-confirm-final:active {
  filter: brightness(0.97);
  box-shadow: inset 0 2px 12px rgba(130, 75, 95, 0.14);
}

.maid-hint { font-size: var(--font-size-rg); margin-top: 22px; color: #827292; }

.maid-hint-detail { margin-top: 8px; }

.maid-code {
  display: inline-block;
  font-size: var(--font-size-base);
  background: #fffdfb;
  padding: 10px;
  border-radius: 8px;
  border: 1px dashed rgba(180, 155, 175, 0.75);
  overflow-wrap: anywhere;
}

.maid-report-meta {
  margin: 0 0 18px;
  font-size: var(--font-size-rg);
  line-height: 1.45;
}

.maid-report-meta-sep {
  opacity: 0.55;
}

.maid-report-meta a {
  font-weight: 700;
  color: #946883;
  text-decoration: none;
}

.maid-report-meta a:hover {
  text-decoration: underline;
  color: #735066;
}

.maid-reservations-datetime-subhero {
  margin: 4px 0 18px;
  text-align: center;
  font-size: clamp(15px, 4vw, 17px);
  font-weight: 700;
  color: #756682;
  letter-spacing: 0.03em;
}

.maid-report-header-card {
  margin-bottom: 0;
}

.maid-report-main-title {
  margin: 0;
  text-align: center;
  font-size: clamp(1.05rem, 4vw, 1.38rem);
  font-weight: 800;
  letter-spacing: 0.055em;
  text-transform: uppercase;
  color: #1e342c;
  line-height: 1.28;
}

.maid-report-rule {
  border: 0;
  height: 0;
  margin: 12px 0;
  border-top: 1px solid rgba(55, 85, 72, 0.38);
}

.maid-report-header-card .maid-report-rule {
  border-top-width: 2px;
  border-top-color: rgba(42, 72, 58, 0.48);
  max-width: min(62ch, 100%);
  margin-left: auto;
  margin-right: auto;
}

.maid-report-rule--suite-close {
  margin-top: 14px;
  margin-bottom: 0;
  border-top-width: 2px;
  border-top-color: rgba(42, 72, 58, 0.42);
  max-width: min(62ch, 100%);
  margin-left: auto;
  margin-right: auto;
}

.maid-report-blank-gap {
  flex-shrink: 0;
  height: 12px;
}

.maid-report-user-datetime {
  margin: 0;
  text-align: center;
  font-size: clamp(0.88rem, 3.5vw, 1.02rem);
  font-weight: 700;
  color: #354940;
  letter-spacing: 0.022em;
  line-height: 1.45;
}

.maid-report-header-alert {
  margin-top: 14px;
  margin-bottom: 0;
}

.maid-report-spacer {
  height: 14px;
}

.maid-report-suite-name {
  margin: 0 0 12px;
  font-size: clamp(0.94rem, 3.55vw, 1.06rem);
  font-weight: 700;
  font-style: normal;
  color: #25634f;
  letter-spacing: 0.015em;
}

.maid-report-suite-link {
  color: inherit;
  text-decoration: none;
}

.maid-report-suite-link:hover,
.maid-report-suite-link:focus-visible {
  text-decoration: underline;
  text-underline-offset: 3px;
}

.maid-report-suite-guest {
  font-weight: 600;
  font-style: normal;
  color: #334155;
}

.maid-report-suite-name em {
  font-style: italic;
  font-weight: 800;
  color: #1a4d3f;
}

/* Badge cores por quarto — relatório final (mesmas cores da home/reservations) */
.maid-report-suite-name em.maid-report-suite-em.maid-room-hero-badge.room-badge {
  display: inline-block;
  padding: 8px 14px;
  border-radius: 12px;
  border-width: 2px;
  border-style: solid;
  border-color: rgba(215, 185, 205, 0.75);
  box-sizing: border-box;
  font-weight: 800;
  letter-spacing: 0.028em;
  line-height: 1.22;
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.42),
    0 2px 10px rgba(55, 95, 72, 0.12);
}

.maid-report-suite-name em.maid-report-suite-em.maid-room-hero-from-db {
  border-style: solid;
  border-width: 2px;
}

.maid-report-card--title .maid-report-title-hero {
  margin-bottom: 0;
}

.maid-report-card--title .maid-alert {
  margin-top: 14px;
}

.maid-report-room-block {
  margin-top: 0;
  padding: 16px 14px 14px;
  background: linear-gradient(165deg, #fffdfb 0%, #f8faf9 100%);
  border: 1px solid rgba(165, 185, 175, 0.55);
  border-radius: 16px;
  box-shadow: 0 2px 12px rgba(45, 85, 65, 0.06);
}

.maid-report-suite-head.maid-app-title-hero {
  margin-bottom: 14px;
  width: 100%;
  box-sizing: border-box;
  font-size: clamp(0.86rem, 3.35vw, 1.05rem) !important;
  padding: 10px 12px !important;
  line-height: 1.18 !important;
  letter-spacing: 0.032em !important;
}

.maid-report-lines {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.maid-report-line {
  margin: 0;
  padding: 8px 10px;
  font-size: var(--font-size-rg);
  font-weight: 600;
  line-height: 1.38;
  color: #2f3d37;
  background: rgba(255, 255, 255, 0.78);
  border-radius: 10px;
  border: 1px solid rgba(190, 205, 196, 0.5);
}

.maid-report-totals-suite-label {
  margin-bottom: 12px;
}

.maid-report-totals-block {
  margin-top: 20px;
  padding: 16px 14px 18px;
  background: linear-gradient(165deg, #fcfdfc 0%, #f1f7f4 100%);
  border: 1px solid rgba(140, 165, 155, 0.45);
  border-radius: 16px;
}

.maid-report-ctx-sep {
  border: 0;
  height: 0;
  margin: 10px 0;
  border-top: 1px solid rgba(145, 155, 150, 0.42);
}

.maid-report-empty-msg {
  margin: 18px 12px 0;
  text-align: center;
  font-size: var(--font-size-lead);
  font-weight: 600;
  color: #6f7c77;
}

.maid-report-wa-actions {
  margin-top: 22px;
  padding: 0 12px 20px;
  max-width: min(560px, 100%);
  margin-left: auto;
  margin-right: auto;
}

.maid-verify-wa-actions {
  margin-top: 14px;
  margin-bottom: 6px;
}

.maid-report-wa-btn {
  min-height: 48px;
  border-radius: 14px !important;
  font-weight: 800 !important;
  font-size: clamp(0.82rem, 3vw, 0.95rem) !important;
  letter-spacing: 0.02em !important;
  color: #fff !important;
  text-decoration: none !important;
  background: linear-gradient(180deg, #25d366 0%, #1ebe57 48%, #128c7e 100%) !important;
  border: 2px solid rgba(18, 100, 72, 0.42) !important;
  box-shadow:
    0 2px 12px rgba(18, 120, 70, 0.2),
    inset 0 1px 0 rgba(255, 255, 255, 0.28) !important;
}

.maid-report-wa-btn:hover {
  color: #fff !important;
  filter: brightness(1.03);
}

.maid-report-wa-btn:active {
  filter: brightness(0.95);
}

.maid-report-card {
  position: relative;
}

/* ============================================================
   Ferramentas (admin)
   ============================================================ */

body.page-tools .tools-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 14px;
  margin-top: 1.25rem;
}

.tools-card {
  background: var(--color-bg-white);
  border: 1px solid var(--color-border);
  border-radius: 10px;
  padding: 16px 18px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  min-height: 140px;
}

.tools-card--soon {
  opacity: 0.72;
  background: var(--color-surface);
}

.tools-card__title {
  margin: 0;
  font-size: 1rem;
  font-weight: 600;
  color: #1f2937;
}

.tools-card__desc {
  margin: 0;
  flex: 1;
  font-size: 0.875rem;
  color: #6b7280;
  line-height: 1.45;
}

.tools-card__action {
  align-self: flex-start;
}

.tools-card__badge {
  align-self: flex-start;
  font-size: 0.7rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: #64748b;
  background: #e2e8f0;
  padding: 3px 8px;
  border-radius: 4px;
}

body.page-tools-users .tools-users-topbar {
  flex-wrap: wrap;
  gap: 12px;
  margin-bottom: 12px;
}

body.page-tools-users .tools-users-title {
  margin: 0;
  font-size: 1.15rem;
  font-weight: 600;
}

body.page-tools-users .tools-users-lead {
  margin: 0.35rem 0 0;
  font-size: 0.9rem;
  max-width: 52rem;
}

body.page-tools-users .tools-users-flash {
  margin: 0 0 12px;
}

body.page-tools-users .tools-users-section {
  margin-bottom: 28px;
}

body.page-tools-users .tools-users-section__title {
  margin: 0 0 4px;
  font-size: 1rem;
}

body.page-tools-users .tools-users-section__desc {
  margin: 0 0 12px;
  font-size: 0.85rem;
}

body.page-tools-users .tools-users-table-wrap {
  overflow-x: auto;
  margin-bottom: 12px;
}

body.page-tools-users .tools-users-table td {
  vertical-align: middle;
}

body.page-tools-users .tools-users-you {
  font-size: 12px;
  color: #64748b;
  font-weight: 400;
}

body.page-tools-users .tools-users-inline-form {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
}

body.page-tools-users .tools-users-inline-form input[type="text"],
body.page-tools-users .tools-users-inline-form input[type="password"] {
  min-width: 120px;
  max-width: 160px;
  font-size: 12px;
}

body.page-tools-users .tools-users-inline-form--maid input[type="text"]:first-of-type {
  max-width: 120px;
}

body.page-tools-users .tools-users-actions form {
  margin: 0;
}

body.page-tools-users .tools-users-add-card {
  border: 1px solid var(--color-border, #e2e8f0);
  border-radius: var(--radius-md, 8px);
  padding: 12px 14px;
  background: #fff;
  max-width: 720px;
}

body.page-tools-users .tools-users-add-card__title {
  margin: 0 0 10px;
  font-size: 0.92rem;
}

body.page-tools-users .tools-users-add-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(140px, 1fr)) auto;
  gap: 10px 12px;
  align-items: end;
}

body.page-tools-users .tools-users-add-grid--maid {
  grid-template-columns: repeat(3, minmax(120px, 1fr)) auto;
}

body.page-tools-users .tools-users-add-grid label span {
  display: block;
  font-size: 11px;
  color: #64748b;
  margin-bottom: 3px;
}

body.page-tools-users .tools-users-add-grid input {
  width: 100%;
}

body.page-tools-users .tools-users-footnote {
  font-size: 0.8rem;
  max-width: 52rem;
  margin-top: 8px;
}

@media (max-width: 760px) {
  body.page-tools-users .tools-users-add-grid,
  body.page-tools-users .tools-users-add-grid--maid {
    grid-template-columns: 1fr;
  }
}

.tools-two-col {
  display: grid;
  grid-template-columns: minmax(220px, 280px) 1fr;
  gap: 16px;
  margin-top: 1rem;
  align-items: start;
}

@media (max-width: 900px) {
  .tools-two-col {
    grid-template-columns: 1fr;
  }
}

.tools-aside {
  background: var(--color-bg-white);
  border: 1px solid var(--color-border);
  border-radius: 10px;
  padding: 12px 14px;
  max-height: 70vh;
  overflow-y: auto;
}

.tools-aside__title {
  margin: 0 0 4px;
  font-size: 0.8rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: #64748b;
}

.tools-res-list {
  list-style: none;
  margin: 0;
  padding: 0;
}

.tools-res-list__link {
  display: block;
  padding: 6px 8px;
  border-radius: 6px;
  font-size: 0.8125rem;
  color: #1e293b;
  text-decoration: none;
}

.tools-res-list__link:hover {
  background: #f1f5f9;
}

.tools-res-list__link--active {
  background: #eff6ff;
  font-weight: 600;
}

.tools-res-list__meta {
  display: block;
  font-size: 0.7rem;
  color: #94a3b8;
  font-weight: 400;
}

.tools-main-panel {
  background: var(--color-bg-white);
  border: 1px solid var(--color-border);
  border-radius: 10px;
  padding: 16px 18px;
  min-height: 200px;
}

.tools-res-summary {
  margin-bottom: 14px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--color-border);
}

.tools-res-summary__folder {
  margin-top: 8px;
  font-size: 0.875rem;
}

.tools-res-summary__folder code {
  font-size: 0.8rem;
  word-break: break-all;
}

.tools-zone {
  display: inline-block;
  margin-left: 6px;
  font-size: 0.7rem;
  font-weight: 600;
  padding: 2px 6px;
  border-radius: 4px;
}

.tools-zone--online { background: #dcfce7; color: #166534; }
.tools-zone--archive { background: #f3f4f6; color: #4b5563; }
.tools-zone--cancelled { background: #fee2e2; color: #991b1b; }
.tools-zone--no_show { background: #f3e8ff; color: #6b21a8; }
.tools-zone--bonus { background: #fef3c7; color: #92400e; }
.tools-zone--missing { background: #fef3c7; color: #92400e; }

.tools-folder-panel__heading {
  margin: 0 0 10px;
  font-size: 0.9rem;
  font-weight: 600;
}

.tools-folder-actions {
  display: flex;
  gap: 8px;
  margin-bottom: 12px;
}

.tools-folder-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  margin-bottom: 8px;
}

.tools-folder-row input[type="text"] {
  flex: 1 1 200px;
  min-width: 160px;
  font-size: 0.875rem;
}

.tools-folder-results {
  max-height: 160px;
  overflow-y: auto;
  border: 1px solid var(--color-border);
  border-radius: 6px;
  margin-bottom: 8px;
  background: #fff;
}

.tools-folder-result-item {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  padding: 6px 10px;
  font-size: 0.8125rem;
  border-bottom: 1px solid #f1f5f9;
  cursor: pointer;
}

.tools-folder-result-item:hover {
  background: #f8fafc;
}

.tools-folder-result-item--busy {
  opacity: 0.55;
  cursor: not-allowed;
}

.tools-folder-result-item__meta {
  font-size: 0.7rem;
  color: #64748b;
  white-space: nowrap;
}

.tools-folder-status {
  display: block;
  font-size: 0.75rem;
  color: #64748b;
}

.tools-folder-status--error { color: #b91c1c; }
.tools-folder-status--ok { color: #166534; }

.tools-audit-stats {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 1rem;
}

.tools-audit-stat {
  background: var(--color-bg-white);
  border: 1px solid var(--color-border);
  border-radius: 8px;
  padding: 10px 14px;
  min-width: 100px;
  text-align: center;
}

.tools-audit-stat--warn {
  border-color: #fcd34d;
  background: #fffbeb;
}

.tools-audit-stat--ok {
  border-color: #86efac;
  background: #f0fdf4;
}

.tools-audit-stat--info {
  border-color: #93c5fd;
  background: #eff6ff;
}

a.tools-audit-stat {
  text-decoration: none;
  color: inherit;
  cursor: pointer;
}

a.tools-audit-stat:hover {
  border-color: #64748b;
}

.tools-audit-stat__n {
  display: block;
  font-size: 1.35rem;
  font-weight: 700;
  color: #1f2937;
  line-height: 1.2;
}

.tools-audit-stat__l {
  display: block;
  font-size: 0.7rem;
  color: #64748b;
  margin-top: 2px;
}

.tools-audit-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 14px;
  align-items: flex-end;
  margin-top: 1rem;
  padding: 12px 14px;
  background: var(--color-bg-white);
  border: 1px solid var(--color-border);
  border-radius: 8px;
}

.tools-audit-filters label {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.tools-audit-filters__label {
  font-size: 0.7rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: #64748b;
}

.tools-audit-filters select,
.tools-audit-filters input[type="search"] {
  font-size: 0.875rem;
  min-width: 140px;
}

.tools-audit-filters__search input {
  min-width: 200px;
}

.tools-audit-layout {
  display: grid;
  grid-template-columns: 1fr;
  gap: 16px;
  margin-top: 1rem;
}

.tools-audit-layout--with-fix {
  grid-template-columns: 1fr minmax(300px, 380px);
}

@media (max-width: 1100px) {
  .tools-audit-layout--with-fix {
    grid-template-columns: 1fr;
  }
}

.tools-audit-table-wrap {
  overflow-x: auto;
  background: var(--color-bg-white);
  border: 1px solid var(--color-border);
  border-radius: 10px;
}

.tools-audit-table {
  width: 100%;
  font-size: 0.8125rem;
}

.tools-audit-table code.tools-audit-folder {
  font-size: 0.72rem;
  word-break: break-all;
}

.tools-audit-table--compact th,
.tools-audit-table--compact td {
  vertical-align: top;
}

.tools-audit-table--compact .tools-audit-folder {
  display: inline-block;
  max-width: 14rem;
}

.tools-audit-table--folders th,
.tools-audit-table--folders td {
  vertical-align: top;
}

.tools-audit-table--folders .tools-audit-id {
  width: 3.5rem;
  white-space: nowrap;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}

.res-list-id {
  font-variant-numeric: tabular-nums;
  font-weight: 600;
  white-space: nowrap;
}

.tools-audit-table--folders .tools-audit-guest {
  min-width: 8rem;
  white-space: nowrap;
}

.tools-audit-table--folders .tools-audit-status {
  min-width: 6rem;
  white-space: nowrap;
}

.tools-audit-folders-cell {
  min-width: 22rem;
  max-width: 36rem;
}

.tools-audit-folders {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.tools-audit-folders__section {
  display: flex;
  flex-direction: column;
  gap: 3px;
}

.tools-audit-folders__label {
  font-size: 0.68rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  color: #6b7280;
}

.tools-audit-folders__line {
  line-height: 1.35;
}

.tools-audit-folders__list {
  margin: 0;
  padding: 0 0 0 1rem;
  list-style: disc;
}

.tools-audit-folders__item {
  margin: 2px 0;
  line-height: 1.35;
}

.tools-audit-folders__item--selected {
  list-style-type: disc;
}

.tools-audit-folders__tag {
  margin-left: 6px;
  font-size: 0.65rem;
  font-weight: 600;
  color: #166534;
}

.tools-audit-table--folders code.tools-audit-folder {
  font-size: 0.72rem;
  word-break: break-all;
  max-width: none;
  display: inline;
}

.tools-audit-table--folders code.tools-audit-folder--db {
  background: #eff6ff;
  color: #1e40af;
  padding: 1px 4px;
  border-radius: 3px;
}

.tools-audit-problem-cell {
  min-width: 14rem;
  max-width: 28rem;
}

.tools-audit-table--folders .tools-audit-problem-line {
  display: block;
  margin: 4px 0;
}

.tools-audit-problem-line {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 4px;
  margin: 2px 0;
}

.tools-audit-problem-sep {
  color: #6b7280;
  font-size: 0.75rem;
}

.tools-audit-table code.tools-audit-folder--expected {
  color: #166534;
  background: #dcfce7;
  padding: 1px 4px;
  border-radius: 3px;
}

.tools-audit-row--active {
  background: #eff6ff !important;
}

.tools-audit-actions {
  white-space: nowrap;
}

.tools-audit-actions .btn {
  margin: 2px 0;
}

.tools-issue-badge {
  display: inline-block;
  font-size: 0.65rem;
  font-weight: 600;
  padding: 2px 6px;
  border-radius: 4px;
  margin: 1px 2px 1px 0;
  background: #fee2e2;
  color: #991b1b;
}

.tools-issue-badge--missing_disk {
  background: #fef3c7;
  color: #92400e;
}

.tools-issue-badge--duplicate {
  background: #ede9fe;
  color: #5b21b6;
}

.tools-issue-badge--wrong_position {
  background: #dbeafe;
  color: #1d4ed8;
}

.tools-issue-badge--missing_subfolders {
  background: #ffedd5;
  color: #9a3412;
}

.tools-issue-badge--name_mismatch,
.tools-issue-badge--id_prefix_mismatch,
.tools-issue-badge--guest_name_mismatch {
  background: #fce7f3;
  color: #9d174d;
}

.tools-issue-badge--disk_orphan {
  background: #e0e7ff;
  color: #3730a3;
}

.tools-issue-badge--disk_duplicate {
  background: #ede9fe;
  color: #5b21b6;
}

.tools-issue-badge--empty_folder {
  background: #f3f4f6;
  color: #374151;
}

.tools-issue-badge--ok {
  background: #dcfce7;
  color: #166534;
}

.tools-verify-row--ok {
  background: #f8fff9;
}

.tools-verify-table .tools-audit-folders__list {
  margin: 0;
  padding-left: 1rem;
}

.tools-verify-section {
  margin-top: 1.15rem;
  background: var(--color-bg-white);
  border: 1px solid var(--color-border);
  border-radius: 10px;
  overflow: hidden;
}

.tools-verify-section__head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 8px 12px;
  padding: 10px 14px;
  border-bottom: 1px solid var(--color-border);
  background: #f8fafc;
}

.tools-verify-section__head h2 {
  margin: 0;
  font-size: 0.95rem;
  font-weight: 650;
}

.tools-verify-section__count {
  font-size: 0.75rem;
  color: #64748b;
}

.tools-verify-section--ok .tools-verify-section__head {
  background: #f0fdf4;
}

.tools-verify-section--warn .tools-verify-section__head {
  background: #fffbeb;
}

.tools-verify-section--info .tools-verify-section__head {
  background: #eff6ff;
}

.tools-verify-empty {
  margin: 0;
  padding: 12px 14px;
  color: #64748b;
  font-size: 0.88rem;
}

.tools-verify-share-line {
  font-size: 0.86rem;
  line-height: 1.45;
}

.tools-audit-fix-panel {
  position: sticky;
  top: 12px;
  background: var(--color-bg-white);
  border: 1px solid var(--color-border);
  border-radius: 10px;
  padding: 14px 16px 16px;
  box-shadow: 0 4px 14px rgba(15, 23, 42, 0.06);
}

.tools-audit-fix-close {
  float: right;
  font-size: 1.4rem;
  line-height: 1;
  color: #94a3b8;
  text-decoration: none;
  margin: -4px -4px 8px 8px;
}

.tools-audit-fix-close:hover {
  color: #475569;
}

.tools-folder-panel--embedded {
  border: none;
  padding: 0;
  background: transparent;
}

@media print {
  .maid-no-print {
    display: none !important;
  }

  .maid-topbar,
  .maid-app-topbar {
    display: none !important;
  }

  body.maid-app-body {
    background: #fff !important;
  }
}

/* Menu a tendina azioni / comunicazioni (reservation_control, ecc.) */
.pms-dropdown {
  position: relative;
  display: inline-block;
}
.pms-dropdown__toggle::after {
  content: ' \25BE';
  font-size: 10px;
  opacity: 0.75;
}
.pms-dropdown__menu {
  position: absolute;
  top: calc(100% + 4px);
  right: 0;
  z-index: 50;
  min-width: 188px;
  margin: 0;
  padding: 4px 0;
  list-style: none;
  background: #fff;
  border: 1px solid #cbd5e1;
  border-radius: 8px;
  box-shadow: 0 10px 28px rgba(15, 23, 42, 0.14);
  display: none;
}
.pms-dropdown.is-open .pms-dropdown__menu {
  display: block;
}
.pms-dropdown__item {
  display: block;
  width: 100%;
  box-sizing: border-box;
  padding: 7px 12px;
  border: 0;
  background: transparent;
  color: #0f172a;
  font-size: 11px;
  font-weight: 500;
  text-align: left;
  text-decoration: none;
  cursor: pointer;
  line-height: 1.35;
}
.pms-dropdown__item:hover:not(:disabled),
.pms-dropdown__item:focus-visible:not(:disabled) {
  background: #f1f5f9;
  outline: none;
}
.pms-dropdown__item:disabled,
.pms-dropdown__item--muted {
  color: #94a3b8;
  cursor: not-allowed;
}
.pms-dropdown__sep {
  height: 1px;
  margin: 4px 0;
  background: #e2e8f0;
}
.pms-dropdown__heading {
  padding: 6px 12px 2px;
  font-size: 9px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: #94a3b8;
  cursor: default;
}

/* ============================================================
   LIST STANDARD (riferimento: reservation.php)
   Toolbar chiara · thead più scuro · caratteri/righe compatti
   ============================================================ */
:root {
  --list-toolbar-bg: linear-gradient(180deg, #f8fbff 0%, #eef6ff 100%);
  --list-toolbar-border: #bfdbfe;
  --list-thead-bg: #bfdbfe;
  --list-thead-border: #93c5fd;
  --list-thead-color: #1e3a5f;
}

body.page-reservations .toolbar,
body.page-clients .toolbar,
body.page-companies .toolbar,
body.page-rooms .toolbar,
body.page-products .toolbar,
body.page-payments .toolbar,
body.page-consumption .toolbar,
body.page-staff-employees .toolbar,
body.page-reservation-requests .toolbar,
body.page-guest-orders .toolbar,
body.page-guest-portal-links .toolbar {
  background:     var(--list-toolbar-bg);
  border-bottom:  1px solid var(--list-toolbar-border);
  min-height:     28px;
  padding-top:    0;
  padding-bottom: 4px;
}

body.page-reservations .toolbar .btn,
body.page-clients .toolbar .btn,
body.page-companies .toolbar .btn,
body.page-rooms .toolbar .btn,
body.page-products .toolbar .btn,
body.page-payments .toolbar .btn,
body.page-consumption .toolbar .btn,
body.page-staff-employees .toolbar .btn,
body.page-reservation-requests .toolbar .btn,
body.page-guest-orders .toolbar .btn,
body.page-guest-portal-links .toolbar .btn {
  min-height:  0;
  padding:     3px 7px;
  font-size:   var(--font-size-xs);
  line-height: 1.2;
}

body.page-reservations .data-table thead th,
body.page-clients .data-table thead th,
body.page-companies .data-table thead th,
body.page-rooms .data-table thead th,
body.page-products .data-table thead th,
body.page-products .data-table.products-table--compact thead th,
body.page-payments .data-table thead th,
body.page-consumption .data-table thead th,
body.page-staff-employees .data-table thead th,
body.page-reservation-requests .data-table thead th,
body.page-guest-portal-links .data-table thead th {
  background:    var(--list-thead-bg) !important;
  border-bottom: 2px solid var(--list-thead-border) !important;
  color:         var(--list-thead-color) !important;
  font-size:     var(--font-size-xs) !important;
  font-weight:   500 !important;
  height:        auto;
  line-height:   1.15;
  padding:       3px var(--space-sm) !important;
}

body.page-reservations .data-table thead tr,
body.page-clients .data-table thead tr,
body.page-companies .data-table thead tr,
body.page-rooms .data-table thead tr,
body.page-products .data-table thead tr,
body.page-payments .data-table thead tr,
body.page-consumption .data-table thead tr,
body.page-staff-employees .data-table thead tr,
body.page-reservation-requests .data-table thead tr,
body.page-guest-portal-links .data-table thead tr {
  height: auto;
  background: var(--list-thead-bg);
}

body.page-reservations .data-table tbody td,
body.page-clients .data-table tbody td,
body.page-companies .data-table tbody td,
body.page-rooms .data-table tbody td,
body.page-products .data-table tbody td,
body.page-payments .data-table tbody td,
body.page-consumption .data-table tbody td,
body.page-staff-employees .data-table tbody td,
body.page-reservation-requests .data-table tbody td,
body.page-guest-portal-links .data-table tbody td {
  font-size:      var(--font-size-xs);
  line-height:    1.25;
  padding-top:    2px;
  padding-bottom: 2px;
  vertical-align: middle;
}

body.page-reservations .data-table tbody td .room-badge,
body.page-reservations .data-table tbody td .status-badge,
body.page-reservations .data-table tbody td strong,
body.page-reservations .data-table tbody td span,
body.page-clients .data-table tbody td .status-badge,
body.page-clients .data-table tbody td strong,
body.page-clients .data-table tbody td span,
body.page-companies .data-table tbody td strong,
body.page-companies .data-table tbody td span,
body.page-rooms .data-table tbody td .room-badge,
body.page-rooms .data-table tbody td strong,
body.page-rooms .data-table tbody td span,
body.page-products .data-table tbody td .status-badge,
body.page-products .data-table tbody td strong,
body.page-products .data-table tbody td span,
body.page-payments .data-table tbody td .room-badge,
body.page-payments .data-table tbody td .status-badge,
body.page-payments .data-table tbody td strong,
body.page-payments .data-table tbody td span,
body.page-consumption .data-table tbody td .room-badge,
body.page-consumption .data-table tbody td .status-badge,
body.page-consumption .data-table tbody td strong,
body.page-consumption .data-table tbody td span,
body.page-staff-employees .data-table tbody td strong,
body.page-staff-employees .data-table tbody td span,
body.page-reservation-requests .data-table tbody td .status-badge,
body.page-reservation-requests .data-table tbody td strong,
body.page-reservation-requests .data-table tbody td span {
  font-size: var(--font-size-xs);
}

body.page-reservations .data-table tbody td .status-badge,
body.page-clients .data-table tbody td .status-badge,
body.page-products .data-table tbody td .status-badge,
body.page-payments .data-table tbody td .status-badge,
body.page-consumption .data-table tbody td .status-badge,
body.page-reservation-requests .data-table tbody td .status-badge {
  font-weight: 400;
  padding:     1px 6px;
  line-height: 1.15;
}

body.page-reservation-requests .toolbar-middle.toolbar-filters-list,
body.page-guest-portal-links .toolbar-middle.toolbar-filters-list,
body.page-consumption .toolbar-middle.toolbar-filters-list {
  align-items: center;
  align-self:  stretch;
  flex-wrap:   nowrap;
  flex:        1 1 auto;
  min-width:   0;
  gap:         5px;
}

body.page-reservation-requests .filter-panel--toolbar,
body.page-guest-portal-links .filter-panel--toolbar,
body.page-consumption .filter-panel--toolbar {
  display:     flex;
  flex-wrap:   nowrap;
  align-items: center;
  gap:         5px;
  margin:      0;
  padding:     0;
  background:  transparent;
  border:      none;
  width:       100%;
  min-width:   0;
}

body.page-reservation-requests .page-list-layout,
body.page-guest-portal-links .page-list-layout,
body.page-consumption .page-list-layout {
  flex:       1 1 auto;
  min-height: 0;
}
