:root {
  /* Paleta oficial compartida con cafetería y restaurante. */
  --brand-green: #7ccb5b;
  --brand-blue: #2f6599;
  --brand-tomato: #d85a30;
  --green: #003366;
  --green-dark: #003366;
  --green-mid: #2f6599;
  --green-light: rgba(47, 101, 153, 0.12);
  --ink: #1a1a18;
  --muted: #5a5955;
  --line: rgba(0, 0, 0, 0.1);
  --bg: #f5f7f6;
  --orange: #d85a30;
  --orange-light: rgba(216, 90, 48, 0.12);
  --blue: #2f6599;
  --coral: #d85a30;
  --coral-light: rgba(216, 90, 48, 0.12);
  --shadow: 0 10px 35px rgba(0, 51, 102, 0.14);
}

.lucide {
  width: 1em;
  height: 1em;
  display: inline-block;
  flex: 0 0 auto;
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  vertical-align: middle;
}

nav .lucide { width: 18px; height: 18px; }
button .lucide { width: 16px; height: 16px; }
.section-icon .lucide { width: 17px; height: 17px; }
.free-slot .lucide { width: 15px; height: 15px; }

.login-shell {
  padding: 28px;
  background: #2f6599;
}

.login-shell::before {
  display: none;
}

.login-layout {
  width: min(440px, 100%);
  min-height: 0;
  display: block;
  background: #fff;
  border: 1px solid rgba(0, 51, 102, 0.12);
  border-radius: 18px;
  box-shadow: 0 18px 55px rgba(0, 51, 102, 0.1);
}

.login-card {
  width: 100%;
  padding: 38px 44px 34px;
  background: #fff;
  border: 0;
  border-radius: 18px;
  box-shadow: none;
}

.login-logo {
  display: block;
  width: 210px;
  max-height: 132px;
  object-fit: contain;
  margin: 0 auto 24px;
}

.login-brand {
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 100%;
  text-align: center;
}

.login-brand strong {
  color: #003366;
  font-size: 24px;
  line-height: 1.1;
}

.login-brand small {
  margin-top: 4px;
  color: var(--muted);
  font-size: 13px;
}

.login-heading {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 14px;
  margin-bottom: 28px;
}

.login-divider {
  display: none;
}

.server-status {
  padding: 7px 11px;
  font-size: 12px;
}

.login-card label {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin: 0 0 20px;
  color: #1a1a18;
  font-size: 13px;
  font-weight: 700;
}

.login-card input {
  display: block;
  width: 100%;
  height: 48px;
  padding: 0 14px;
  color: #1a1a18;
  background: #fff;
  border: 1px solid rgba(0, 51, 102, 0.18);
  border-radius: 10px;
  font-size: 14px;
}

.password-field {
  display: block;
  width: 100%;
}

.password-field button {
  right: 8px;
  width: 38px;
  height: 38px;
  display: grid;
  place-items: center;
  padding: 0;
  color: #2f6599;
  background: transparent !important;
  border: 0 !important;
  border-radius: 8px;
  box-shadow: none !important;
  outline: 0;
}

.password-field button:hover,
.password-field button:focus,
.password-field button:active {
  background: transparent !important;
  box-shadow: none !important;
}

.password-field button svg {
  width: 20px;
  height: 20px;
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.8;
}

.password-field button .eye-closed,
.password-field button.is-visible .eye-open {
  display: none;
}

.password-field button.is-visible .eye-closed {
  display: block;
}

.password-field input {
  padding-right: 72px;
}

.login-card > button[type="submit"] {
  align-items: center;
  justify-content: center;
  min-height: 48px;
  margin-top: 8px;
  background: #2f6599;
  border-radius: 10px;
  box-shadow: 0 8px 20px rgba(0, 51, 102, 0.16);
}

.login-card > button[type="submit"]:hover {
  background: #2f6599;
}

.login-help {
  margin-top: 16px;
  font-size: 12px;
}

.login-card::before { display: none; }

.server-status.operational i {
  background: var(--brand-green);
  box-shadow: 0 0 0 4px rgba(124, 203, 91, 0.13);
}

input:focus,
select:focus,
textarea:focus {
  border-color: var(--orange);
  box-shadow: 0 0 0 3px rgba(184, 111, 22, 0.12);
}

aside {
  color: #fff;
  background: linear-gradient(180deg, #2f6599 0%, #003366 100%);
  border-right-color: rgba(255, 255, 255, 0.08);
  box-shadow: 4px 0 24px rgba(0, 51, 102, 0.18);
}

.brand small {
  color: rgba(255, 255, 255, 0.48);
}

nav button {
  color: rgba(255, 255, 255, 0.68);
  border: 1px solid transparent;
}

nav button:hover {
  color: #fff;
  background: rgba(255, 255, 255, 0.06);
}

nav button.active {
  color: #fff;
  background: linear-gradient(90deg, rgba(255, 255, 255, 0.18), rgba(255, 255, 255, 0.06));
  border-color: rgba(255, 255, 255, 0.24);
  box-shadow: inset 3px 0 #7ccb5b;
}

.user {
  border-top-color: rgba(255, 255, 255, 0.09);
}

.user button {
  color: #fff;
  border: 1px solid rgba(255, 255, 255, 0.16);
}

.badge.pending {
  color: var(--brand-tomato);
  background: var(--orange-light);
}

.badge.confirmed {
  color: var(--brand-blue);
  background: var(--green-light);
}

.badge.checked_in {
  color: #003366;
  background: rgba(124, 203, 91, 0.2);
}

.badge.cancelled {
  color: var(--brand-tomato);
  background: var(--coral-light);
}

.legend {
  flex-wrap: wrap;
}

.legend span {
  display: inline-flex;
  align-items: center;
  gap: 5px;
}

.legend span i { margin-left: 0; }

.legend .checked_out { background: #5a5955; }
.legend .no_show { background: #d85a30; }
.legend .cancelled { background: rgba(216, 90, 48, 0.45); }

.room-status {
  width: 9px;
  height: 9px;
  display: inline-block;
  flex: 0 0 9px;
  margin-right: 8px;
  border-radius: 50%;
}

.room-status.clean {
  background: #7ccb5b;
  box-shadow: 0 0 0 3px rgba(124, 203, 91, 0.14);
}

.room-status.dirty {
  background: #d85a30;
  box-shadow: 0 0 0 3px rgba(216, 90, 48, 0.12);
}

.calendar-booking.checked_out { background: #5a5955; }
.calendar-booking.no_show { background: #d85a30; }
.calendar-booking.cancelled { background: rgba(216, 90, 48, 0.65); }

.legend span {
  min-height: 34px;
  padding: 6px 12px 6px 7px;
  border-radius: 9px;
  font-size: 12px;
  font-weight: 500;
}

.legend span i {
  width: 4px;
  height: 22px;
  border-radius: 4px;
}

.legend-pending { color:#d85a30; background:rgba(216,90,48,.07); border-color:rgba(216,90,48,.2) !important; }
.legend-pending i { background:#d85a30 !important; }
.legend-confirmed { color:#2f6599; background:rgba(47,101,153,.08); border-color:rgba(47,101,153,.2) !important; }
.legend-confirmed i { background:#2f6599 !important; }
.legend-checked-in { color:#237d4b; background:rgba(124,203,91,.12); border-color:rgba(124,203,91,.32) !important; }
.legend-checked-in i { background:#2dbf6e !important; }
.legend-checked-out { color:#4f5662; background:rgba(90,89,85,.06); border-color:rgba(90,89,85,.14) !important; }
.legend-checked-out i { background:#6b6b6b !important; }
.legend-no-show { color:#c92332; background:rgba(255,100,112,.08); border-color:rgba(255,100,112,.25) !important; }
.legend-no-show i { background:#ff6470 !important; }
.legend-cancelled { color:#a86c00; background:rgba(245,196,0,.08); border-color:rgba(245,196,0,.3) !important; }
.legend-cancelled i { background:#f5c400 !important; }

.calendar {
  border: 1px solid rgba(0, 51, 102, 0.1);
  border-radius: 14px;
  background: #fff;
}

.calendar-schedule {
  position: relative;
  min-width: 2226px;
  border: 0;
  border-radius: 0;
}

.calendar-schedule .calendar-cell {
  min-height: 58px;
  border-color: rgba(0, 51, 102, 0.07);
}

.calendar-schedule .head {
  position: sticky;
  z-index: 5;
  top: 0;
  min-height: 82px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 8px 5px;
  background: #f8f9f9;
  text-transform: capitalize;
}

.calendar-schedule .room-head {
  z-index: 7;
  left: 0;
  align-items: flex-start;
  padding-left: 18px;
  color: #5a5955;
  font-size: 12px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.day-head span,
.day-head small,
.day-head em {
  color: #5a5955;
  font-size: 11px;
  font-style: normal;
  font-weight: 500;
}

.day-head strong {
  color: #1a1a18;
  font-size: 18px;
  line-height: 1;
}

.day-head em {
  margin-top: 4px;
  color: rgba(26, 26, 24, 0.52);
  font-size: 10px;
}

.day-head.today {
  color: #fff;
  background: rgba(124, 203, 91, 0.12);
}

.day-head.today span,
.day-head.today strong,
.day-head.today small {
  color: #003366;
  font-weight: 800;
}

.calendar-category {
  z-index: 4;
  min-height: 36px;
  padding: 9px 18px;
  color: #5a5955;
  background: #f5f7f6;
  border-bottom: 1px solid rgba(0, 51, 102, 0.07);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.calendar-schedule .room {
  position: sticky;
  z-index: 3;
  left: 0;
  display: flex;
  align-items: center;
  min-width: 0;
  padding: 10px 14px;
  background: #fff;
}

.calendar-schedule .room span {
  overflow: hidden;
  color: #1a1a18;
  font-size: 12px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.calendar-schedule .free-slot {
  position: relative;
  display: grid;
  place-items: center;
  color: rgba(47, 101, 153, 0.26);
  background: #fff;
  font-size: 16px;
}

.calendar-schedule .free-slot:hover {
  color: #003366;
  background: rgba(47, 101, 153, 0.07);
}

.calendar-schedule .free-slot.after-checkout {
  justify-items: end;
  padding-right: 20%;
}

.calendar-schedule .free-slot.range-start {
  color: #0a835e;
  background: linear-gradient(90deg, transparent 0 50%, rgba(42, 166, 119, 0.24) 50% 100%);
  font-weight: 800;
}

.calendar-schedule .free-slot.range-middle {
  color: #0a835e;
  background: rgba(42, 166, 119, 0.24);
  font-weight: 800;
}

.calendar-schedule .free-slot.range-end {
  color: #0a835e;
  background: linear-gradient(90deg, rgba(42, 166, 119, 0.24) 0 50%, transparent 50% 100%);
  font-weight: 800;
}

.calendar-schedule .free-slot.range-start::after {
  position: absolute;
  left: 50%;
  top: 4px;
  bottom: 4px;
  width: 3px;
  background: #2f9d70;
  border-radius: 3px;
  content: "";
}

.calendar-schedule .free-slot.range-end::after {
  position: absolute;
  left: 50%;
  top: 4px;
  bottom: 4px;
  width: 3px;
  background: #2f9d70;
  border-radius: 3px;
  content: "";
}

.calendar-schedule .today-column {
  background: rgba(124, 203, 91, 0.08);
}

.calendar-schedule .calendar-booking {
  position: relative;
  z-index: 4;
  align-self: center;
  min-width: 0;
  min-height: 44px;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  overflow: visible;
  margin: 5px 3px;
  padding: 6px 12px;
  color: #003366;
  background: rgba(216, 90, 48, 0.11);
  border: 1px solid rgba(216, 90, 48, 0.28);
  border-left: 5px solid #d85a30;
  border-radius: 9px;
  text-align: left;
}

.calendar-schedule .calendar-booking strong,
.calendar-schedule .calendar-booking small {
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.calendar-schedule .calendar-booking strong {
  font-size: 11px;
}

.calendar-schedule .calendar-booking small {
  margin-top: 2px;
  color: currentColor;
  font-size: 9px;
  opacity: 0.72;
}

.calendar-schedule .calendar-booking.confirmed {
  color: #2f6599;
  background: rgba(47, 101, 153, 0.1);
  border-color: rgba(47, 101, 153, 0.22);
  border-left-color: #2f6599;
}

.calendar-schedule .calendar-booking.checked_in {
  color: #003366;
  background: rgba(124, 203, 91, 0.16);
  border-color: rgba(124, 203, 91, 0.42);
  border-left-color: #7ccb5b;
}

.calendar-schedule .calendar-booking.checked_out {
  color: #5a5955;
  background: rgba(90, 89, 85, 0.09);
  border-color: rgba(90, 89, 85, 0.2);
  border-left-color: #5a5955;
}

.calendar-schedule .calendar-booking.no_show {
  color: #d85a30;
  background: rgba(216, 90, 48, 0.1);
  border-color: rgba(216, 90, 48, 0.28);
  border-left-color: #d85a30;
}

.calendar-schedule .calendar-booking::after {
  position: absolute;
  z-index: 20;
  bottom: calc(100% + 8px);
  left: 8px;
  width: max-content;
  max-width: 310px;
  padding: 9px 11px;
  color: #fff;
  background: #1a1a18;
  border-radius: 8px;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2);
  content: attr(data-tooltip);
  font-size: 11px;
  font-weight: 500;
  line-height: 1.4;
  opacity: 0;
  pointer-events: none;
  transform: translateY(4px);
  transition: opacity 0.15s, transform 0.15s;
  white-space: normal;
}

.calendar-schedule .calendar-booking:hover::after {
  opacity: 1;
  transform: translateY(0);
}

.new-reservation-button {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
  padding: 10px 17px;
  color: #fff;
  background: color-mix(in srgb, #7ccb5b 62%, #003366) !important;
  border: 0;
  border-radius: 10px;
  box-shadow: 0 6px 16px rgba(0, 51, 102, 0.12);
  font-size: 14px;
  font-weight: 650;
}

.new-reservation-button:hover {
  background: color-mix(in srgb, #7ccb5b 52%, #003366) !important;
  box-shadow: 0 8px 20px rgba(0, 51, 102, 0.16);
}

.new-reservation-button svg {
  width: 21px;
  height: 21px;
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.8;
}

.calendar-intro { display: none; }

.calendar-panel {
  padding: 18px;
}

.calendar-toolbar {
  display: flex;
  align-items: center;
  gap: 9px;
  margin-bottom: 14px;
  overflow-x: auto;
  scrollbar-width: thin;
}

.calendar-tool,
.calendar-range {
  min-height: 42px;
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  justify-content: center;
  gap: 9px;
  padding: 8px 13px;
  color: #1a1a18;
  background: #fff;
  border: 1px solid rgba(0, 51, 102, 0.14);
  border-radius: 10px;
  font-size: 13px;
}

.calendar-tool:hover {
  color: #003366;
  border-color: rgba(47, 101, 153, 0.35);
  background: rgba(47, 101, 153, 0.04);
}

.calendar-tool:disabled {
  opacity: 0.55;
  cursor: wait;
}

.calendar-tool.icon-only {
  width: 42px;
  padding: 0;
  color: #003366;
  font-size: 25px;
  line-height: 1;
}

.calendar-range {
  min-width: 245px;
  justify-content: flex-start;
}

.calendar-range strong {
  font-size: 13px;
  font-weight: 650;
  white-space: nowrap;
}

.calendar-tool svg,
.calendar-range svg {
  width: 19px;
  height: 19px;
  flex: 0 0 19px;
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.8;
}

.calendar-tool.share b {
  padding: 3px 7px;
  color: #237d4b;
  background: rgba(124, 203, 91, 0.17);
  border-radius: 999px;
  font-size: 9px;
  font-weight: 750;
}

.calendar-panel > .legend {
  justify-content: flex-start;
  margin-bottom: 14px;
}

.share-calendar-dialog {
  width: min(520px, calc(100% - 30px));
}

.share-calendar-dialog p {
  margin: -6px 0 22px;
  color: #5a5955;
}

.share-link-field {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 8px;
}

.share-link-field button {
  color: #fff;
  background: #2f6599;
  font-weight: 700;
}

.share-privacy-note {
  margin: 14px 0;
  padding: 12px 14px;
  color: #31556f;
  background: rgba(47, 101, 153, 0.08);
  border: 1px solid rgba(47, 101, 153, 0.13);
  border-radius: 10px;
  font-size: 12px;
  line-height: 1.5;
}

.share-open {
  width: 100%;
  margin-bottom: 10px;
  color: #fff;
  background: #2f6599;
  border-color: #2f6599;
  font-weight: 700;
}

.share-actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 9px;
}

.share-actions button:last-child {
  color: #b54125;
}

.shared-calendar-page {
  min-height: 100vh;
  color: #1a1a18;
  background: #f5f7f8;
}

.shared-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  padding: 18px clamp(18px, 4vw, 54px);
  background: #fff;
  border-bottom: 1px solid rgba(0, 51, 102, 0.1);
}

.shared-header h1,
.shared-header p {
  margin: 0;
}

.shared-header h1 {
  color: #003366;
  font-size: clamp(21px, 2.2vw, 30px);
}

.shared-header p {
  margin-top: 4px;
  color: #696965;
  font-size: 13px;
}

.shared-header img {
  width: 142px;
  height: auto;
}

.shared-main {
  padding: 22px clamp(14px, 3vw, 42px) 40px;
}

.shared-main .calendar-toolbar {
  margin-bottom: 12px;
}

.shared-main .calendar {
  background: #fff;
  border: 1px solid rgba(0, 51, 102, 0.1);
  border-radius: 14px;
  box-shadow: 0 12px 32px rgba(0, 51, 102, 0.07);
  overflow: auto;
}

.shared-error {
  margin: 0 0 14px;
  padding: 12px 14px;
  color: #a23b22;
  background: #fff2ed;
  border: 1px solid rgba(216, 90, 48, 0.2);
  border-radius: 10px;
}

.reservation-drawer {
  width: min(760px, 100%);
  max-width: 100%;
  height: 100vh;
  max-height: 100vh;
  margin: 0 0 0 auto;
  border-radius: 0;
  overflow-x: hidden;
  animation: drawer-in 180ms ease-out;
}

.reservation-drawer form {
  min-height: 100%;
  width: 100%;
  max-width: 100%;
  padding: 24px 28px 0;
  overflow-x: hidden;
}

.reservation-drawer form > * {
  min-width: 0;
  max-width: 100%;
}

.reservation-drawer .dialog-head {
  position: sticky;
  z-index: 4;
  top: -24px;
  margin: -24px -28px 16px;
  padding: 23px 28px 16px;
  background: #fff;
  border-bottom: 1px solid rgba(0, 51, 102, 0.1);
}

.reservation-drawer .dialog-head h2 {
  font-size: 13px;
  font-weight: 500;
  color: #777772;
}

.drawer-section {
  width: 100%;
  min-width: 0;
  padding: 16px 0;
  border-bottom: 1px solid rgba(0, 51, 102, 0.09);
}

.drawer-section > h3,
.section-title h3 {
  margin: 0 0 10px;
  color: #003366;
  font-size: 13px;
}

.section-title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.section-title button {
  color: #2f6599;
  font-size: 12px;
  font-weight: 700;
}

.stay-dates {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: end;
  gap: 10px;
}

.stay-dates > span {
  padding-bottom: 12px;
  color: #8c9490;
}

.reservation-room-cards {
  display: block;
}

.room-card-group h4 {
  margin: 13px 0 7px;
  color: #777772;
  font-size: 11px;
  letter-spacing: .06em;
  text-transform: uppercase;
}

.room-card-group > div {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}

.reservation-room-cards label {
  min-width: 0;
  min-height: 66px;
  position: relative;
  align-items: center;
  padding: 10px;
  background: #fff;
}

.reservation-room-cards label:has(input:checked) {
  background: rgba(124, 203, 91, 0.07);
  border-color: #2f9d70;
  box-shadow: inset 0 0 0 1px #2f9d70;
}

.reservation-room-cards input {
  position: absolute;
  opacity: 0;
}

.reservation-room-cards span,
.reservation-room-cards strong,
.reservation-room-cards small {
  display: block;
  min-width: 0;
}

.reservation-room-cards small {
  margin-top: 4px;
  color: #777772;
  font-size: 10px;
}

.reservation-room-cards i {
  display: none;
  margin-left: auto;
  color: #2f9d70;
  font-style: normal;
}

.reservation-room-cards input:checked ~ i {
  display: block;
}

.new-customer-fields {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin-top: 12px;
  padding: 14px;
  background: #f7f9fa;
  border-radius: 10px;
}

.new-customer-fields .wide {
  grid-column: 1/-1;
}

.guest-counters {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 9px;
}

.guest-counters label {
  min-width: 0;
  overflow: hidden;
  padding: 10px;
  border: 1px solid rgba(0, 51, 102, 0.12);
  border-radius: 9px;
}

.guest-counters small {
  display: block;
  color: #888;
  font-size: 9px;
}

.guest-counters input {
  margin-top: 7px;
}

.drawer-actions {
  position: sticky;
  bottom: 0;
  margin: 0 -28px;
  padding: 15px 28px;
  background: #fff;
  box-shadow: 0 -8px 22px rgba(0, 51, 102, 0.06);
}

.calendar-cell-actions {
  position: fixed;
  z-index: 20;
  display: flex;
  align-items: center;
  gap: 3px;
  padding: 4px;
  background: #fff;
  border: 1px solid rgba(0, 51, 102, .1);
  border-radius: 12px;
  box-shadow: 0 12px 30px rgba(0, 51, 102, .14);
}

.calendar-cell-actions button {
  min-height: 38px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 8px 13px;
  color: #48504c;
  background: #f6f8f7;
  border: 0;
  border-radius: 8px;
  box-shadow: none;
  font-size: 12px;
  font-weight: 600;
  transition: color 140ms ease, background-color 140ms ease, transform 140ms ease;
}

.calendar-cell-actions button:first-child {
  color: #fff;
  background: #00a074;
}

.calendar-cell-actions button:first-child:hover { background: #008b66; }

.calendar-cell-actions button:nth-child(2):hover {
  color: #003366;
  background: rgba(47, 101, 153, .09);
}

.calendar-cell-actions button:last-child {
  width: 38px;
  padding: 0;
  color: #717873;
  background: transparent;
}

.calendar-cell-actions button:last-child:hover {
  color: #d85a30;
  background: rgba(216, 90, 48, .08);
}

.calendar-cell-actions button:active { transform: scale(.97); }

.calendar-cell-actions button:focus-visible {
  outline: 2px solid rgba(47, 101, 153, .35);
  outline-offset: 1px;
}

.calendar-cell-actions button .lucide { width: 17px; height: 17px; }

.calendar-block {
  position: relative;
  z-index: 3;
  align-self: center;
  min-width: 0;
  margin: 5px 3px;
  padding: 6px 8px;
  color: #5e514c;
  background: repeating-linear-gradient(135deg,#ece8e6,#ece8e6 7px,#f7f5f4 7px,#f7f5f4 14px);
  border-left: 4px solid #77706d;
  border-radius: 7px;
  overflow: hidden;
}

.calendar-block strong,
.calendar-block small {
  display: block;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.calendar-block small { font-size: 9px; }

.compact-dialog { width: min(480px, calc(100% - 30px)); }

.guest-dialog {
  width: min(680px, calc(100% - 30px));
  max-height: min(92vh, 860px);
  color: #252725;
  background: #fff;
  border-radius: 18px;
  box-shadow: 0 24px 70px rgba(0, 28, 56, .22);
}

.guest-dialog::backdrop {
  background: rgba(23, 35, 32, .5);
  backdrop-filter: blur(4px);
}

.guest-dialog form {
  width: 100%;
  padding: 0 28px;
  overflow-x: hidden;
}

.guest-dialog-head {
  position: sticky;
  z-index: 2;
  top: 0;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 20px;
  padding: 26px 0 20px;
  background: #fff;
}

.guest-dialog-head h2 {
  margin: 0;
  color: #111;
  font-size: 20px;
  line-height: 1.25;
}

.guest-dialog-head p {
  margin: 7px 0 0;
  color: #777772;
  font-size: 13px;
}

.guest-close {
  width: 38px;
  height: 38px;
  display: grid;
  flex: 0 0 38px;
  place-items: center;
  padding: 0;
  color: #333;
  background: #f5f6f6;
  border: 0;
  border-radius: 50%;
}

.guest-close:hover { background: #ecefee; }
.guest-close .lucide { width: 18px; height: 18px; }

.guest-form-section {
  padding: 20px 0;
  border-top: 1px solid rgba(0, 51, 102, .08);
}

.guest-form-section h3 {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0 0 18px;
  color: #202421;
  font-size: 14px;
}

.guest-form-section h3 > span {
  width: 34px;
  height: 34px;
  display: grid;
  place-items: center;
  color: #00a074;
  background: rgba(124, 203, 91, .12);
  border-radius: 50%;
}

.guest-form-section h3 .lucide { width: 17px; height: 17px; }

.guest-form-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}

.guest-form-row.document-row { grid-template-columns: .7fr 1.3fr; }
.guest-form-row.contact-row { grid-template-columns: .7fr 1.3fr; }

.guest-field {
  display: block;
  min-width: 0;
  margin-top: 14px;
  color: #242724;
  font-size: 12px;
  font-weight: 600;
}

.guest-form-section h3 + .guest-field,
.guest-form-section h3 + .guest-form-row,
.guest-form-row .guest-field { margin-top: 0; }

.guest-field small {
  color: #777772;
  font-size: inherit;
  font-weight: 400;
}

.guest-control {
  height: 42px;
  display: flex;
  align-items: center;
  gap: 9px;
  min-width: 0;
  margin-top: 7px;
  padding: 0 12px;
  color: #7c807d;
  background: #fff;
  border: 1px solid rgba(0, 51, 102, .14);
  border-radius: 9px;
  transition: border-color 150ms ease, box-shadow 150ms ease;
}

.guest-control:focus-within {
  border-color: #2f6599;
  box-shadow: 0 0 0 3px rgba(47, 101, 153, .1);
}

.guest-control > .lucide { width: 17px; height: 17px; }

.guest-control input,
.guest-control select {
  width: 100%;
  min-width: 0;
  height: 100%;
  padding: 0;
  color: #252725;
  background: transparent;
  border: 0;
  outline: 0;
  font-size: 13px;
}

.guest-control input::placeholder { color: #a4a7a5; }
.guest-control select { appearance: none; }
.select-control > .lucide:last-child { width: 15px; height: 15px; }
.country-flag { flex: 0 0 auto; font-size: 16px; }

.guest-dialog .error {
  margin: 0;
  color: #b84425;
  font-size: 12px;
}

.guest-dialog-actions {
  position: sticky;
  bottom: 0;
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  margin: 0 -28px;
  padding: 17px 28px;
  background: #f6f7f7;
  border-top: 1px solid rgba(0, 51, 102, .07);
}

.guest-dialog-actions button {
  min-height: 40px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 9px 18px;
  background: #fff;
  border: 1px solid rgba(0, 0, 0, .12);
  border-radius: 9px;
  font-weight: 650;
}

.guest-dialog-actions .primary {
  color: #fff;
  background: #00a074;
  border-color: #00a074;
}

.guest-dialog-actions .primary:hover { background: #008b66; }
.guest-dialog-actions button:disabled { opacity: .6; cursor: wait; }

.toast {
  position: fixed;
  z-index: 50;
  top: 20px;
  right: 24px;
  padding: 12px 17px;
  color: #fff;
  background: #237d4b;
  border-radius: 9px;
  box-shadow: 0 10px 30px rgba(0, 51, 102, .2);
  font-weight: 700;
}

@keyframes drawer-in { from { transform: translateX(35px); opacity: .7; } }

/* Panel de reservación: jerarquía compacta y visual de operación hotelera. */
.reservation-drawer {
  color: #252725;
  background: #fff;
}

.reservation-drawer form {
  font-size: 12px;
  line-height: 1.4;
}

.reservation-drawer .dialog-head small {
  display: block;
  color: #003366;
  font-size: 20px;
  font-weight: 750;
  letter-spacing: -.02em;
}

.reservation-drawer .dialog-head h2 {
  margin-top: 4px;
  color: #777b77;
  font-size: 12px;
}

.reservation-drawer .dialog-head .icon {
  width: 32px;
  height: 32px;
  flex: 0 0 32px;
  display: grid;
  place-items: center;
  padding: 0;
  color: #303330;
  background: #f4f5f4;
  border: 0;
  border-radius: 50%;
  font-size: 14px;
  line-height: 1;
  outline: 0;
  box-shadow: none !important;
}

.reservation-drawer .dialog-head .icon .lucide {
  width: 15px;
  height: 15px;
  stroke-width: 1.7;
}

.reservation-drawer .dialog-head .icon:focus-visible {
  box-shadow: 0 0 0 3px rgba(47, 101, 153, .12) !important;
}

.reservation-drawer .dialog-head .icon:hover {
  color: #d85a30;
  background: rgba(216, 90, 48, .08);
}

.drawer-section {
  padding: 18px 0;
}

.section-heading {
  display: flex;
  align-items: center;
  gap: 9px;
  margin: 0 0 12px !important;
  color: #202420 !important;
  font-size: 13px !important;
  font-weight: 700;
}

.section-icon {
  width: 28px;
  height: 28px;
  display: inline-grid;
  flex: 0 0 28px;
  place-items: center;
  color: #2f6599;
  background: rgba(47, 101, 153, .09);
  border-radius: 50%;
  font-size: 15px;
  font-weight: 500;
}

.status-picker {
  position: relative;
  width: fit-content;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 2px 10px;
  color: #d85a30;
  background: rgba(216, 90, 48, .07);
  border: 1px solid rgba(216, 90, 48, .24);
  border-radius: 9px;
  cursor: pointer;
  font-size: 12px;
  font-weight: 700;
}

.status-picker #status-selected-label { color: currentColor; }
.status-picker .status-chevron { margin-left: auto; }

.status-control {
  width: 205px;
  position: relative;
}

.status-control .status-picker {
  width: 100%;
  min-height: 42px;
  padding: 8px 11px;
  text-align: left;
}

.status-picker[aria-expanded="true"] {
  box-shadow: 0 0 0 3px rgba(216, 90, 48, .08);
}

.status-picker[aria-expanded="true"] .status-chevron { transform: rotate(180deg); }

.status-menu {
  position: absolute;
  z-index: 30;
  top: calc(100% + 7px);
  left: 0;
  width: 235px;
  padding: 6px;
  background: #fff;
  border: 1px solid rgba(0, 51, 102, .12);
  border-radius: 12px;
  box-shadow: 0 12px 30px rgba(0, 51, 102, .14);
}

.status-menu button {
  width: 100%;
  min-height: 36px;
  display: grid;
  grid-template-columns: 22px 1fr;
  align-items: center;
  gap: 8px;
  padding: 7px 9px;
  color: #303430;
  background: transparent;
  border: 0;
  border-radius: 8px;
  box-shadow: none !important;
  text-align: left;
  font-size: 11px;
  font-weight: 540;
}

.status-menu button:hover { background: rgba(47, 101, 153, .06); }
.status-menu button[aria-selected="true"] { color: #d85a30; background: rgba(216, 90, 48, .07); }
.status-menu button i { color: currentColor; font-size: 15px; font-style: normal; text-align: center; }
.status-menu button .lucide { width: 15px; height: 15px; color: currentColor; justify-self: center; }

.status-picker select {
  -webkit-appearance: none;
  appearance: none;
  width: auto;
  min-width: 115px;
  padding: 7px 25px 7px 0;
  color: #c54a25;
  background: transparent !important;
  border: 0;
  border-radius: 0;
  box-shadow: none !important;
  outline: 0;
  font-size: 12px;
  font-weight: 700;
}

.status-dot {
  width: 19px;
  height: 19px;
  display: grid;
  flex: 0 0 19px;
  place-items: center;
}

.status-dot svg,
.status-chevron {
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 2;
}

.status-heading-icon {
  color: #0b9d72;
  background: rgba(11, 157, 114, .1);
}

.status-heading-icon svg {
  width: 17px;
  height: 17px;
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.8;
}

.status-picker[data-reservation-status="confirmed"] {
  color: #2f6599;
  background: rgba(47, 101, 153, .07);
  border-color: rgba(47, 101, 153, .24);
}

.status-picker[data-reservation-status="confirmed"] select { color: #2f6599; }

.status-picker[data-reservation-status="checked_in"] {
  color: #4f9f40;
  background: rgba(124, 203, 91, .1);
  border-color: rgba(124, 203, 91, .34);
}

.status-picker[data-reservation-status="checked_in"] select { color: #3f8734; }

.status-picker[data-reservation-status="checked_out"] {
  color: #5a5955;
  background: rgba(90, 89, 85, .07);
  border-color: rgba(90, 89, 85, .22);
}

.status-picker[data-reservation-status="checked_out"] select { color: #5a5955; }

.status-picker[data-reservation-status="no_show"],
.status-picker[data-reservation-status="cancelled"] {
  color: #d85a30;
  background: rgba(216, 90, 48, .07);
  border-color: rgba(216, 90, 48, .25);
}

.status-picker[data-reservation-status="no_show"] select,
.status-picker[data-reservation-status="cancelled"] select { color: #c64f29; }

.status-dot svg {
  width: 19px;
  height: 19px;
}

.status-chevron {
  width: 15px;
  height: 15px;
  flex: 0 0 15px;
  pointer-events: none;
}

.stay-dates {
  grid-template-columns: minmax(0, 1fr) 34px minmax(0, 1fr);
  align-items: center;
  min-height: 48px;
  padding: 0 12px;
  border: 1px solid rgba(0, 51, 102, .14);
  border-radius: 10px;
}

.stay-dates label {
  width: max-content;
  max-width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  justify-self: center;
  gap: 7px;
  margin: 0;
  color: #6f736f;
  font-size: 10px;
}

.stay-dates input {
  min-width: 0;
  width: 112px;
  flex: 0 0 112px;
  padding: 7px 5px;
  color: #303330;
  background: transparent;
  border: 0;
  font-size: 11px;
  text-align: center;
  text-align-last: center;
}

.calendar-line-icon {
  color: #7ccb5b;
  background: rgba(124, 203, 91, .12);
}

.calendar-line-icon svg,
.date-field-icon svg {
  width: 17px;
  height: 17px;
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.8;
}

.date-field-icon {
  width: 18px;
  height: 18px;
  display: grid;
  place-items: center;
  color: #2f6599;
}

.stay-dates .stay-arrow {
  padding: 0;
  color: #2f6599;
  font-size: 18px;
}

.stay-dates input::-webkit-calendar-picker-indicator {
  width: 0;
  margin: 0;
  padding: 0;
  opacity: 0;
  cursor: pointer;
}

#stay-length,
#availability-message {
  margin: 9px 0 0;
  color: #777b77;
  font-size: 10px;
}

.room-card-group h4 {
  margin-top: 15px;
  color: #777b77;
  font-size: 10px;
}

.reservation-room-cards label {
  min-height: 78px;
  gap: 10px;
  padding: 11px;
  border-color: rgba(0, 51, 102, .12);
  border-radius: 11px;
}

.reservation-room-cards label:hover:not(.unavailable) {
  border-color: rgba(47, 101, 153, .42);
  box-shadow: 0 5px 16px rgba(0, 51, 102, .06);
}

.reservation-room-cards label:has(input:checked) {
  background: rgba(124, 203, 91, .075);
  border-color: #7ccb5b;
  box-shadow: inset 0 0 0 1px #7ccb5b;
}

.reservation-room-cards label > img {
  width: 35px;
  height: 35px;
  flex: 0 0 35px;
  object-fit: cover;
  border-radius: 50%;
}

.reservation-room-cards strong {
  color: #3f4642;
  font-size: 11px;
  font-weight: 680;
}

.reservation-room-cards small {
  margin-top: 3px;
  color: #747974;
  font-size: 9px;
}

.reservation-room-cards small b {
  color: #2f6599;
  font-weight: 500;
}

.reservation-room-cards i {
  width: 19px;
  height: 19px;
  flex: 0 0 19px;
  place-items: center;
  color: #fff;
  background: #7ccb5b;
  border-radius: 50%;
  font-size: 11px;
}

.reservation-room-cards input:checked ~ i { display: grid; }

.section-title { align-items: flex-start; }

.section-title button {
  padding: 7px 10px;
  color: #2f6599;
  background: #fff;
  border: 1px solid rgba(47, 101, 153, .18);
  border-radius: 8px;
  box-shadow: 0 3px 9px rgba(0, 51, 102, .06);
  font-size: 10px;
}

.customer-picker {
  display: grid;
  grid-template-columns: 112px minmax(0, 1fr);
  align-items: center;
  gap: 9px;
  color: #555a56;
  font-size: 10px;
}

.customer-picker input,
.new-customer-fields input,
.new-customer-fields select,
.guest-counters input,
.notes-label textarea {
  padding: 9px 10px;
  border-color: rgba(0, 51, 102, .14);
  border-radius: 8px;
  font-size: 11px;
}

.customer-picker input,
.new-customer-fields input,
.new-customer-fields select,
.guest-counters input,
.notes-label textarea {
  width: 100%;
  min-width: 0;
  max-width: 100%;
  box-sizing: border-box;
}

.section-title,
.notes-label,
.new-customer-fields {
  min-width: 0;
  max-width: 100%;
}

.guest-counters label {
  color: #363b37;
  background: #fff;
  border-color: rgba(47, 101, 153, .15);
  font-size: 11px;
}

.guest-counters label:focus-within {
  border-color: #2f6599;
  box-shadow: 0 0 0 2px rgba(47, 101, 153, .08);
}

.notes-label .section-heading { margin-bottom: 10px !important; }
.notes-label textarea { width: 100%; resize: vertical; }

.drawer-actions button {
  min-height: 38px;
  padding: 9px 16px;
  border-radius: 8px;
  font-size: 11px;
  font-weight: 650;
}

.drawer-actions .primary {
  color: #fff;
  background: #2f6599;
  border-color: #2f6599;
  box-shadow: 0 5px 14px rgba(47, 101, 153, .18);
}

.drawer-actions .primary:hover { background: #003366; }

/* Calendario: superficie limpia y controles con menor peso visual. */
#calendario .calendar-panel {
  padding: 0;
  background: #fff;
  border: 0;
  border-radius: 0;
  box-shadow: none;
}

#calendario .calendar-toolbar {
  gap: 7px;
  margin: 0;
  padding: 2px 2px 12px;
  background: transparent;
  border: 0;
}

#calendario .calendar-tool,
#calendario .calendar-range {
  min-height: 38px;
  padding: 7px 12px;
  color: #343936;
  background: #fff;
  border-color: rgba(0, 51, 102, .11);
  border-radius: 9px;
  box-shadow: none !important;
  font-size: 12px;
}

#calendario .calendar-tool:hover {
  color: #2f6599;
  background: rgba(47, 101, 153, .045);
  border-color: rgba(47, 101, 153, .24);
  box-shadow: none !important;
}

#calendario .calendar-tool.icon-only {
  width: 38px;
  padding: 0;
}

#calendario .calendar-range {
  min-width: 220px;
  background: #f8fafb;
}

#calendario .calendar-range strong { font-size: 12px; }
#calendario .calendar-tool svg,
#calendario .calendar-range svg { width: 17px; height: 17px; flex-basis: 17px; }

#calendario .calendar-panel > .legend {
  gap: 6px;
  margin: 0;
  padding: 12px 2px;
  background: transparent;
  border: 0;
}

#calendario .legend [data-status-filter] {
  min-height: 30px;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 5px 10px 5px 6px;
  background: #fff;
  border: 1px solid rgba(0, 51, 102, .1);
  border-radius: 8px;
  box-shadow: none;
  font-size: 11px;
  font-weight: 580;
  transition: opacity 140ms ease, background-color 140ms ease, border-color 140ms ease;
}

#calendario .legend [data-status-filter] i {
  width: 3px;
  height: 18px;
  flex: 0 0 3px;
  border-radius: 4px;
}

#calendario .legend-pending,
#calendario .legend-confirmed,
#calendario .legend-checked-in,
#calendario .legend-checked-out,
#calendario .legend-no-show,
#calendario .legend-cancelled { background: #fff; }

#calendario .legend-pending { background: rgba(216,90,48,.07); }
#calendario .legend-confirmed { background: rgba(47,101,153,.08); }
#calendario .legend-checked-in { background: rgba(124,203,91,.12); }
#calendario .legend-checked-out { background: rgba(90,89,85,.06); }
#calendario .legend-no-show { background: rgba(255,100,112,.08); }
#calendario .legend-cancelled { background: rgba(245,196,0,.08); }

#calendario .legend [data-status-filter]:hover {
  filter: brightness(.98);
  transform: none;
}

#calendario .legend [data-status-filter].is-filtered-out {
  color: #a0a5a2 !important;
  background: #fff !important;
  border-color: rgba(90, 89, 85, .2) !important;
  border-style: dashed;
  opacity: .68;
}

#calendario .legend [data-status-filter].is-filtered-out i { background: #aeb3b0 !important; }

#calendario .status-filter-all {
  min-height: 30px;
  padding: 5px 9px;
  color: #343936;
  background: transparent;
  border: 0;
  border-radius: 7px;
  box-shadow: none;
  font-size: 11px;
  font-weight: 600;
}

#calendario .status-filter-all:hover {
  color: #2f6599;
  background: rgba(47, 101, 153, .06);
}

#calendario .calendar {
  border-color: rgba(0, 51, 102, .09);
  border-radius: 12px;
  box-shadow: inset 0 1px rgba(255, 255, 255, .7);
}

#calendario .calendar-schedule .calendar-cell {
  min-height: 54px;
  border-color: rgba(0, 51, 102, .055);
}

#calendario .calendar-schedule .head {
  min-height: 82px;
  padding: 6px 4px;
  background: #fafafa;
}

#calendario .calendar-schedule .room-head {
  color: #6c716e;
  background: #fafbfb;
}

#calendario .calendar-category {
  min-height: 32px;
  padding-block: 7px;
  color: #676c69;
  background: #f7f8f8;
  font-size: 10px;
}

#calendario .calendar-schedule .room { padding-inline: 13px; }
#calendario .calendar-schedule .room span { font-size: 11px; font-weight: 650; }
#calendario .calendar-schedule .free-slot { color: rgba(47, 101, 153, .18); font-size: 14px; }
#calendario .calendar-schedule .today-column { background: rgba(124, 203, 91, .065); }

#calendario .calendar-schedule .calendar-booking {
  min-height: 40px;
  margin: 5px 3px;
  padding: 5px 10px;
  border-left-width: 4px;
  border-radius: 8px;
  box-shadow: 0 2px 5px rgba(0, 51, 102, .04);
}

#calendario .calendar-schedule .calendar-booking.pending {
  color: #a96500;
  background-color: #fffbed;
  border-color: rgba(245, 196, 0, .42);
  border-left-color: #f5c400;
}

#calendario .calendar-schedule .calendar-booking strong { font-size: 10px; }
#calendario .calendar-schedule .calendar-booking small { font-size: 8px; }

#calendario .calendar-schedule { min-width: 3032px; }

#calendario .day-head .day-label,
#calendario .day-head .today-badge {
  min-height: 48px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}

#calendario .day-head .today-badge {
  min-width: 60px;
  padding: 4px 10px;
  color: #fff;
  background: #00a074;
  border-radius: 17px;
}

#calendario .day-head.today { background: rgba(0, 160, 116, .075); }
#calendario .day-head.today .today-badge span,
#calendario .day-head.today .today-badge strong,
#calendario .day-head.today .today-badge small { color: #fff; }

#calendario .day-head span,
#calendario .day-head small { font-size: 12px; font-weight: 450; }
#calendario .day-head strong { font-size: 17px; }
#calendario .day-head em { margin-top: 2px; font-size: 10px; }

#calendario .calendar-schedule .calendar-cell:not(.head):not(.calendar-category) { min-height: 50px; }

#calendario .calendar-schedule .room {
  gap: 10px;
  padding: 6px 14px;
}

#calendario .calendar-schedule .room > img,
#calendario .room-picture-placeholder {
  width: 26px;
  height: 26px;
  flex: 0 0 26px;
  object-fit: cover;
  display: grid;
  place-items: center;
  color: #333;
  background: #f1f3f2;
  border-radius: 50%;
}

#calendario .room-picture-placeholder .lucide { width: 16px; height: 16px; }
#calendario .calendar-schedule .room > span:not(.room-picture-placeholder) { flex: 1 1 auto; }
#calendario .calendar-schedule .room .room-status { margin: 0 1px 0 auto; }

#calendario .calendar-schedule .calendar-booking {
  min-height: 36px;
  padding-left: 16px;
  padding-right: 18px;
}

#calendario .calendar-schedule .calendar-booking::before {
  position: absolute;
  top: 50%;
  left: 7px;
  width: 3px;
  height: 17px;
  background-image: radial-gradient(circle, currentColor 1px, transparent 1.3px);
  background-size: 3px 5px;
  content: "";
  opacity: .45;
  transform: translateY(-50%);
}

#calendario .calendar-schedule .calendar-booking {
  background-image: linear-gradient(currentColor, currentColor);
  background-repeat: no-repeat;
  background-position: right 6px center;
  background-size: 3px 20px;
}

#calendario .calendar-booking::after { display: none; }

#calendario .booking-tooltip {
  position: absolute;
  z-index: 30;
  bottom: calc(100% + 9px);
  left: 8px;
  width: 250px;
  display: grid;
  gap: 6px;
  padding: 11px 13px;
  color: #d6d9d7;
  background: #111;
  border-radius: 8px;
  box-shadow: 0 12px 28px rgba(0, 0, 0, .24);
  font-size: 10px;
  line-height: 1.35;
  opacity: 0;
  pointer-events: none;
  text-align: left;
  transform: translateY(4px);
  transition: opacity 140ms ease, transform 140ms ease;
}

#calendario .booking-tooltip::after {
  position: absolute;
  top: 100%;
  left: 18px;
  border: 6px solid transparent;
  border-top-color: #111;
  content: "";
}

#calendario .booking-tooltip b {
  overflow: hidden;
  color: #fff;
  font-size: 11px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

#calendario .booking-tooltip span {
  display: flex;
  align-items: center;
  gap: 7px;
}

#calendario .booking-tooltip .lucide { width: 12px; height: 12px; }

#calendario .booking-tooltip em {
  margin-top: 2px;
  padding-top: 7px;
  color: #aeb3b0;
  border-top: 1px solid rgba(255, 255, 255, .12);
  font-style: normal;
}

#calendario .calendar-booking:hover .booking-tooltip,
#calendario .calendar-booking:focus-visible .booking-tooltip {
  opacity: 1;
  transform: translateY(0);
}

header .new-reservation-button {
  background: #00a074 !important;
  border-color: #00a074 !important;
  box-shadow: 0 4px 10px rgba(0, 160, 116, .17) !important;
}

header .new-reservation-button:hover {
  background: #008b66 !important;
  border-color: #008b66 !important;
}

/* Sistema unificado de botones: plano, ligero y consistente. */
.dialog-actions button,
.panel-head button,
.calendar-tool,
.quick-actions button,
.share-actions button,
.section-title button,
.new-reservation-button,
.share-open,
.share-link-field button,
#load-report {
  min-height: 38px;
  padding: 8px 15px;
  border: 1px solid rgba(0, 51, 102, .13);
  border-radius: 10px;
  box-shadow: 0 2px 6px rgba(0, 51, 102, .06) !important;
  font-size: 12px;
  font-weight: 560;
  line-height: 1.2;
  transition: background-color 140ms ease, border-color 140ms ease, box-shadow 140ms ease, transform 140ms ease;
}

.dialog-actions button:not(.primary),
.share-actions button,
.panel-head button {
  color: #262a27;
  background: #fff;
}

.dialog-actions button:not(.primary):hover,
.share-actions button:hover,
.panel-head button:hover {
  background: #f8faf9;
  border-color: rgba(47, 101, 153, .25);
  box-shadow: 0 3px 9px rgba(0, 51, 102, .08) !important;
}

.dialog-actions .primary,
.new-reservation-button,
.share-open,
.share-link-field button,
#load-report {
  color: #fff !important;
  background: color-mix(in srgb, #7ccb5b 58%, #003366) !important;
  border-color: transparent !important;
  box-shadow: 0 3px 8px rgba(0, 51, 102, .11) !important;
}

.dialog-actions .primary:hover,
.new-reservation-button:hover,
.share-open:hover,
.share-link-field button:hover,
#load-report:hover {
  background: color-mix(in srgb, #7ccb5b 50%, #003366) !important;
  box-shadow: 0 4px 10px rgba(0, 51, 102, .14) !important;
  transform: translateY(-1px);
}

.dialog-actions button:active,
.panel-head button:active,
.calendar-tool:active,
.quick-actions button:active,
.share-actions button:active,
.section-title button:active,
.new-reservation-button:active {
  box-shadow: 0 1px 3px rgba(0, 51, 102, .08) !important;
  transform: translateY(0);
}

.drawer-actions {
  gap: 10px;
}

.drawer-actions button {
  min-width: 105px;
  min-height: 38px;
  padding: 8px 15px;
  border-radius: 8px;
  box-shadow: none !important;
  font-size: 12px;
  font-weight: 600;
}

.drawer-actions button:not(.primary) {
  color: #48504c;
  background: #f6f8f7;
  border-color: transparent;
}

.drawer-actions button:not(.primary):hover {
  color: #003366;
  background: rgba(47, 101, 153, .09);
  border-color: transparent;
  box-shadow: none !important;
}

.drawer-actions .primary {
  min-width: 150px;
  color: #fff;
  background: #00a074 !important;
  border-color: #00a074 !important;
  box-shadow: none !important;
}

.drawer-actions .primary:hover {
  background: #008b66 !important;
  border-color: #008b66 !important;
  box-shadow: none !important;
}

@media (max-width: 820px) {
  .calendar-panel {
    padding: 12px;
  }

  .calendar-toolbar {
    padding-bottom: 5px;
  }

  .calendar-tool.share span {
    display: none;
  }
}

@media (max-width: 620px) {
  .room-card-group > div,
  .new-customer-fields {
    grid-template-columns: 1fr;
  }

  .new-customer-fields .wide { grid-column: auto; }

  .reservation-drawer form { padding-inline: 20px; }

  .reservation-drawer .dialog-head { margin-inline: -20px; padding-inline: 20px; }

  .drawer-actions { margin-inline: -20px; padding-inline: 20px; }

  .share-actions {
    grid-template-columns: 1fr;
  }

  .shared-header {
    align-items: flex-start;
    flex-direction: column-reverse;
  }

  .shared-header img {
    width: 118px;
  }

  header .new-reservation-button {
    width: 42px;
    min-height: 42px;
    padding: 0;
    font-size: 0;
  }

  header .new-reservation-button svg {
    width: 20px;
    height: 20px;
  }

  .guest-dialog form { padding-inline: 20px; }
  .guest-form-row,
  .guest-form-row.document-row,
  .guest-form-row.contact-row { grid-template-columns: 1fr; }
  .guest-dialog-actions { margin-inline: -20px; padding-inline: 20px; }
}

@media (max-width: 430px) {
  .reservation-drawer form { padding-inline: 15px; }

  .reservation-drawer .dialog-head {
    margin-inline: -15px;
    padding-inline: 15px;
  }

  .drawer-actions {
    margin-inline: -15px;
    padding-inline: 15px;
  }

  .customer-picker {
    grid-template-columns: 1fr;
    gap: 6px;
  }

  .guest-counters { gap: 6px; }
  .guest-counters label { padding: 8px 7px; }
  .guest-counters input { padding-inline: 7px; }
}

@media (max-width: 820px) {
  .login-shell {
    padding: 20px;
    background: #2f6599;
  }

  .login-shell::before {
    display: none;
  }

  .login-layout {
    width: min(440px, 100%);
  }

  .login-card {
    padding: 38px 44px 34px;
  }
}

@media (max-width: 620px) {
  .login-shell {
    padding: 18px;
    background: #2f6599;
  }

  .login-shell::before {
    display: none;
  }

  .login-layout {
    width: 100%;
    min-height: 0;
    display: block;
    border-radius: 16px;
  }

  .login-card {
    padding: 34px 24px 28px;
  }

  .login-logo {
    width: 180px;
    margin-bottom: 20px;
  }
}

/* Navegación lateral clara: blanco + azul institucional. */
.app aside {
  color: #252725;
  background: #fff;
  border-right: 1px solid rgba(0, 51, 102, .09);
  box-shadow: 4px 0 20px rgba(0, 51, 102, .045);
}

.app aside .brand {
  padding: 2px 8px 25px;
}

.app aside .brand-mark {
  color: #fff;
  background: #003f78;
  border-radius: 11px;
  box-shadow: none;
}

.app aside .brand strong { color: #003366; }
.app aside .brand small { color: #71817a; }

.app aside nav {
  min-height: 0;
  flex: 1 1 auto;
  gap: 2px;
  overflow-x: hidden;
  overflow-y: auto;
  padding-right: 3px;
  scrollbar-width: thin;
  scrollbar-color: rgba(47, 101, 153, .2) transparent;
}

.app aside nav button {
  min-height: 38px;
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 11px;
  padding: 8px 12px;
  color: #343936;
  background: transparent;
  border: 0;
  border-radius: 10px;
  box-shadow: none;
  font-size: 12px;
  font-weight: 500;
  transition: color 140ms ease, background-color 140ms ease;
}

.app aside nav button > span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.app aside .nav-section-label {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 15px 12px 6px;
  color: #777d79;
  font-size: 11px;
  font-weight: 550;
}

.app aside .nav-badge {
  flex: 0 0 auto;
  margin-left: auto;
  padding: 2px 7px;
  color: #237d63;
  background: rgba(124, 203, 91, .17);
  border-radius: 999px;
  font-size: 9px;
  font-weight: 650;
}

.app aside .nav-online {
  width: 7px;
  height: 7px;
  flex: 0 0 7px;
  margin-left: auto;
  background: #00bd74;
  border-radius: 50%;
}

.app aside nav button[data-module] .lucide { color: #303632; }
.app aside nav button[data-module]:hover .lucide { color: #2f6599; }

.app aside nav button:hover:not(:disabled) {
  color: #003366;
  background: rgba(47, 101, 153, .075);
}

.app aside nav button.active,
.app aside nav button.active:hover {
  color: #fff;
  background: #2f6599;
  border: 0;
  box-shadow: none;
  font-weight: 650;
}

.app aside nav button.active .lucide { color: #fff; }

.app aside nav button:disabled {
  color: #a5aaa7;
  background: transparent;
  opacity: 1;
}

.app aside .user {
  color: #343936;
  border-top: 1px solid rgba(0, 51, 102, .09);
}

.app aside .user button {
  min-height: 34px;
  padding: 7px 10px;
  color: #2f6599;
  background: rgba(47, 101, 153, .07);
  border: 0;
  border-radius: 8px;
  font-weight: 600;
}

.app aside .user button:hover {
  color: #fff;
  background: #2f6599;
}

/* Administración de habitaciones. */
.room-manager { color:#252725; }
.rooms-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:18px}.rooms-heading h2{margin:0;font-size:23px}.rooms-heading p{margin:4px 0 0;color:#777d79}.rooms-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.rooms-actions button,.room-detail-actions button{min-height:38px;display:inline-flex;align-items:center;gap:7px;padding:8px 13px;background:#fff;border:1px solid rgba(0,51,102,.12);border-radius:9px;font-weight:600}.rooms-actions .primary{color:#fff;background:#00a074;border-color:#00a074}.rooms-search{width:min(420px,100%);height:40px;display:flex;align-items:center;gap:8px;margin-bottom:18px;padding:0 12px;border:1px solid rgba(0,51,102,.13);border-radius:9px}.rooms-search input{width:100%;border:0;outline:0}.rooms-table{min-width:950px;border:1px solid rgba(0,51,102,.09);border-radius:12px;overflow:hidden}.rooms-table-head,.room-table-row{display:grid;grid-template-columns:40px 110px minmax(220px,1.5fr) 150px 160px 140px 170px 42px;align-items:center}.rooms-table-head{min-height:42px;color:#6d736f;background:#f8f9f9;font-size:11px;font-weight:650}.rooms-table-head>*,.room-table-row>*{min-width:0;padding-inline:10px}.room-table-row{min-height:52px;border-top:1px solid rgba(0,51,102,.065)}.room-table-row:hover{background:#fbfcfc}.room-table-row select{max-width:100%;padding:6px 8px;background:#f5f6f6;border:0;border-radius:999px;font-size:11px}.room-name-cell{display:flex;align-items:center;gap:9px;color:#555b57;background:transparent;border:0;text-align:left}.room-name-cell img,.room-name-cell>.lucide{width:25px;height:25px;flex:0 0 25px;object-fit:cover;border-radius:50%}.room-name-cell span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.inline-unit{height:32px;display:flex;align-items:center;gap:6px;padding:0 9px;border:1px solid rgba(0,51,102,.12);border-radius:999px}.inline-unit input{min-width:0;width:100%;padding:0;border:0;outline:0}.inline-unit span,.inline-unit b{color:#777;font-size:10px}.row-menu{padding:6px;background:transparent;border:0;border-radius:50%}.row-menu:hover{background:#f0f3f2}#room-table-wrap{overflow-x:auto}
.room-detail-head{display:flex;align-items:center;gap:10px;max-width:920px;margin:0 auto 22px}.room-detail-head>button{background:transparent;border:0}.room-detail-head>img,.room-detail-head>span{width:40px;height:40px;display:grid;place-items:center;object-fit:cover;border-radius:50%}.room-detail-head h2,.room-detail-head small{margin:0}.room-detail-head h2{font-size:18px}.room-detail-actions{display:flex;gap:7px;margin-left:auto}.room-detail-metrics{max-width:920px;display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin:0 auto 16px}.room-detail-metrics article{min-height:100px;padding:15px;border:1px solid rgba(0,51,102,.1);border-radius:10px}.room-detail-metrics small{display:block;color:#777}.room-detail-metrics strong{display:block;margin-top:8px;font-size:25px}.room-detail-metrics strong em{font-size:10px;font-style:normal;font-weight:400}.room-detail-metrics select{max-width:100%;margin-top:14px;padding:7px;color:#16845f;background:#edfaf4;border:0;border-radius:7px}.room-detail-tabs,.room-detail-body{max-width:920px;margin-inline:auto}.room-detail-tabs{display:flex;gap:4px;margin-bottom:10px}.room-detail-tabs button{padding:7px 11px;background:#f5f6f6;border:0}.room-detail-tabs .active{background:#fff;box-shadow:0 1px 5px #0001}.room-detail-body{min-height:180px;padding:18px;border:1px solid rgba(0,51,102,.1);border-radius:10px}.room-detail-body h3{margin-top:0}.room-detail-body p{color:#666}
.room-editor-dialog{width:min(720px,calc(100% - 30px));max-height:92vh}.room-editor-dialog .dialog-head .icon{width:38px;height:38px;display:grid;place-items:center;flex:0 0 38px;padding:0;color:#5c6560;background:#f3f6f4;border:0;border-radius:50%;transition:background-color .15s,color .15s}.room-editor-dialog .dialog-head .icon:hover{color:#2f6599;background:#edf4fa}.room-editor-dialog .dialog-head .icon:focus-visible{outline:3px solid rgba(47,101,153,.22);outline-offset:2px}.room-editor-dialog .dialog-head .icon .lucide{width:18px;height:18px}.room-edit-section{padding:18px 0;border-top:1px solid rgba(0,51,102,.08)}.room-edit-section h3{display:flex;align-items:center;gap:9px;margin:0}.room-edit-section h3 span{width:30px;height:30px;display:grid;place-items:center;color:#00a074;background:#eef9f5;border-radius:50%}.room-edit-section>p{margin:3px 0 14px 39px;color:#777}.room-edit-section>label,.room-description{display:grid;gap:6px;margin-top:12px}.room-edit-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}.room-edit-grid label{display:grid;gap:6px}.room-editor-dialog input,.room-editor-dialog select,.room-editor-dialog textarea{width:100%;padding:10px;border:1px solid rgba(0,51,102,.14);border-radius:8px}.choice-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.choice-grid label{min-height:46px;display:flex;align-items:center;gap:8px;padding:9px;border:1px solid rgba(0,51,102,.1);border-radius:8px}.choice-grid input{width:auto}.room-type-list,.trash-list{display:grid;gap:7px;margin:10px 0 20px}.room-type-list>div,.trash-list>div{display:flex;align-items:center;gap:10px;padding:10px;background:#f7f9f8;border-radius:8px}.room-type-list span{display:grid}.room-type-list small{color:#777}.trash-list button{margin-left:auto;display:flex;align-items:center;gap:6px;color:#2f6599;background:#fff;border:0;padding:7px;border-radius:7px}
@media(max-width:820px){.rooms-heading{flex-direction:column}.rooms-actions{justify-content:flex-start}.room-detail-metrics{grid-template-columns:1fr 1fr}.room-detail-head{flex-wrap:wrap}.room-detail-actions{width:100%;margin-left:0}.room-edit-grid,.choice-grid{grid-template-columns:1fr 1fr}}@media(max-width:520px){.room-detail-metrics,.room-edit-grid,.choice-grid{grid-template-columns:1fr}.rooms-actions button{font-size:0}.rooms-actions button .lucide{width:18px;height:18px}}

@media (max-width: 900px) and (min-width: 621px) {
  .app aside .nav-section-label,
  .app aside .nav-badge,
  .app aside .nav-online { display: none; }

  .app aside nav { padding-right: 0; }
}

/* Limpieza de habitaciones */
.housekeeping-view{width:min(760px,100%);margin:0 auto;padding:2px 0 48px}.housekeeping-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:18px}.housekeeping-head h2{margin:0;color:#161816;font-size:25px;line-height:1.1}.housekeeping-head p{margin:5px 0 0;color:#7a807c;font-size:13px;text-transform:lowercase}.housekeeping-head>button{display:inline-flex;align-items:center;gap:7px;padding:6px 9px;color:#424743;background:transparent;border:0;border-radius:7px;font-size:12px}.housekeeping-head>button:hover{background:#f4f6f5}.housekeeping-head>button.loading .lucide{animation:housekeeping-spin .8s linear infinite}.housekeeping-alert{min-height:48px;display:flex;align-items:center;gap:11px;margin-bottom:20px;padding:11px 15px;border:1px solid;border-radius:8px;font-size:14px;font-weight:600}.housekeeping-alert .lucide{width:19px;height:19px}.housekeeping-alert.done{color:#187c58;background:#effbf6;border-color:#d8f4e7}.housekeeping-alert.pending{color:#8a5b12;background:#fff8e9;border-color:#f4e1b7}.housekeeping-alert.pending .lucide{color:#d85a30}.housekeeping-group{margin-top:18px}.housekeeping-group h3{margin:0;color:#292d2a;font-size:14px}.housekeeping-group>p{margin:3px 0 8px;color:#929792;font-size:11px}.housekeeping-group>div{border-top:1px solid #eef0ef}.housekeeping-room{min-height:58px;display:grid;grid-template-columns:36px 1fr auto;align-items:center;gap:10px;padding:8px 10px;border-bottom:1px solid #eef0ef;transition:opacity .18s,background .18s}.housekeeping-room:hover{background:#fbfcfb}.housekeeping-room.updating{opacity:.45;pointer-events:none}.housekeeping-room>img,.housekeeping-placeholder{width:32px;height:32px;object-fit:cover;border-radius:50%}.housekeeping-placeholder{display:grid;place-items:center;color:#4e5450;background:#f1f3f2}.housekeeping-placeholder .lucide{width:17px}.housekeeping-room-copy{min-width:0}.housekeeping-room-copy>div{display:flex;align-items:center;gap:8px}.housekeeping-room-copy strong{overflow:hidden;color:#454a46;font-size:12px;white-space:nowrap;text-overflow:ellipsis}.housekeeping-room-copy small{display:block;margin-top:2px;color:#9a9e9b;font-size:10px}.cleanliness-pill{padding:2px 6px;border-radius:999px;font-size:9px;font-weight:600}.cleanliness-pill.clean{color:#159267;background:#ecfaf4}.cleanliness-pill.dirty{color:#b66a11;background:#fff4dc}.housekeeping-room>button{min-width:92px;display:inline-flex;align-items:center;justify-content:center;gap:5px;padding:7px 10px;color:#686e69;background:#fff;border:1px solid #e4e7e5;border-radius:7px;font-size:10px}.housekeeping-room>button:hover{color:#2f6599;border-color:#b9cee2}.housekeeping-room>button[data-cleaning-action="clean"]{color:#fff;background:#00a074;border-color:#00a074}.housekeeping-room>button .lucide{width:13px;height:13px}.app aside nav button[data-view="limpieza"] .nav-badge{min-width:20px;text-align:center}@keyframes housekeeping-spin{to{transform:rotate(360deg)}}
@media(max-width:700px){.housekeeping-view{padding-inline:2px}.housekeeping-head h2{font-size:22px}.housekeeping-room{grid-template-columns:32px minmax(0,1fr) auto;padding-inline:4px}.housekeeping-room>button{min-width:auto;font-size:0}.housekeeping-room>button .lucide{width:16px;height:16px}}

.housekeeping-head{height:0;position:relative;z-index:1;margin:0}.housekeeping-head>div{display:none}.housekeeping-head>button{position:absolute;right:0;top:-65px}

/* Gestión de huéspedes */
.guests-view{color:#303431}.guests-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:18px}.guests-head h2{margin:0;font-size:24px}.guests-head p{margin:4px 0 0;color:#7c827e}.guests-head>div:last-child{display:flex;gap:8px}.guests-head button,.guests-list-tools button,.guest-detail-top button,.guest-profile-actions button{display:inline-flex;align-items:center;gap:7px;padding:8px 12px;color:#454a46;background:#fff;border:1px solid #e3e7e4;border-radius:8px;font-weight:600}.guests-head button.primary{color:#fff;background:#00a074;border-color:#00a074}.guests-head .lucide,.guests-list-tools .lucide{width:16px;height:16px}.guests-search{width:min(410px,100%);height:39px;display:flex;align-items:center;gap:8px;padding:0 11px;border:1px solid #e1e6e3;border-radius:8px}.guests-search input{width:100%;border:0;outline:0}.guests-list-tools{display:flex;align-items:center;gap:12px;margin:13px 0 8px;color:#7b817d;font-size:11px}.guests-list-tools span{margin-right:auto}.guests-list-tools button{padding:5px 8px;border:0}.guests-list-tools .danger{color:#d34848;background:#fff2f2}.guests-table{min-width:1050px;border-top:1px solid #edf0ee}.guests-table-head,.guest-table-row{display:grid;grid-template-columns:34px minmax(210px,1.4fr) minmax(180px,1.2fr) 115px 150px 180px 150px;align-items:center;min-height:43px;border-bottom:1px solid #edf0ee}.guests-table-head{min-height:35px;color:#7c827e;font-size:10px;font-weight:650}.guests-table-head>*,.guest-table-row>*{min-width:0;padding:6px 8px}.guest-table-row{color:#666c68;font-size:10px}.guest-table-row:hover{background:#fbfcfb}.guest-table-row>button{min-width:0;display:flex;align-items:center;gap:8px;padding:0;background:transparent;border:0;text-align:left}.guest-table-row>button strong{overflow:hidden;color:#4b504c;font-size:10px;white-space:nowrap;text-overflow:ellipsis}.guest-table-row>span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.guest-avatar{width:25px;height:25px;flex:0 0 25px;display:grid;place-items:center;color:#53615a;background:#f0f3f1;border-radius:50%;font-size:9px;font-weight:700}.guest-avatar.large{width:48px;height:48px;font-size:15px}.guest-country{display:flex;align-items:center;gap:4px}.guest-phone-status{width:7px;height:7px;display:inline-block;margin-left:5px;background:#d4d9d6;border-radius:50%}.guest-phone-status.verified{background:#0ac779}#guests-table-wrap{overflow-x:auto}.guest-detail-top{display:flex;justify-content:space-between;margin-bottom:18px}.guest-detail-top button{border:0}.guest-profile{max-width:880px;display:grid;grid-template-columns:52px 1fr auto;gap:13px;margin:0 auto 17px;padding:18px 0;border-bottom:1px solid #edf0ee}.guest-profile h2{margin:2px 0 7px;font-size:18px}.guest-profile small{color:#8a908c}.guest-contact-lines{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:8px;color:#656b67;font-size:11px}.guest-contact-lines span{display:flex;align-items:center;gap:5px}.guest-contact-lines .lucide{width:13px;height:13px}.guest-profile-actions{display:flex;align-items:flex-start;gap:7px}.guest-profile-actions .danger{color:#d64d4d}.guest-detail-tabs{max-width:880px;display:flex;margin:0 auto 15px;border-bottom:1px solid #e7ebe8}.guest-detail-tabs button{padding:9px 18px;color:#777d79;background:transparent;border:0;border-bottom:2px solid transparent}.guest-detail-tabs button.active{color:#2f6599;border-color:#2f6599;font-weight:700}#guest-tab-content{max-width:880px;min-height:300px;margin:auto}.guest-stays{display:grid;gap:8px}.guest-stays button{display:grid;grid-template-columns:130px 1fr 1fr;gap:10px;padding:12px;text-align:left;background:#fff;border:1px solid #e7ebe8;border-radius:8px}.guest-stays span,.guest-stays small{color:#777}.guest-empty{min-height:260px;display:grid;place-items:center;align-content:center;text-align:center;color:#7d837f}.guest-empty .lucide{width:36px;height:36px;padding:8px;background:#f3f5f4;border-radius:50%}.guest-empty h3{margin:9px 0 2px;color:#343936}.guest-empty p{margin:0}.identity-sheet{max-width:680px}.identity-sheet h3{margin:24px 0 8px;padding-bottom:7px;border-bottom:1px solid #edf0ee;font-size:13px}.identity-sheet>div{display:grid;grid-template-columns:190px 1fr;min-height:30px;align-items:center;font-size:11px}.identity-sheet b{color:#6f7571}.guest-comment-form{display:grid;gap:8px;margin-bottom:15px}.guest-comment-form textarea{min-height:80px;padding:11px;border:1px solid #e1e6e3;border-radius:8px}.guest-comment-form button{justify-self:end;padding:8px 12px;border:0;border-radius:8px}.guest-comments{display:grid;gap:8px}.guest-comments article{padding:11px;background:#f8faf9;border-radius:8px}.guest-comments p{margin:0 0 5px}.guest-comments small{color:#888}.customer-editor-dialog{width:min(760px,calc(100% - 30px))}
@media(max-width:760px){.guests-head{flex-direction:column}.guests-head>div:last-child{flex-wrap:wrap}.guests-head>div:last-child button{font-size:0}.guests-head>div:last-child .lucide{width:18px;height:18px}.guest-profile{grid-template-columns:44px 1fr}.guest-profile-actions{grid-column:1/-1}.guest-stays button{grid-template-columns:1fr}.identity-sheet>div{grid-template-columns:130px 1fr}}
.guests-view{position:relative}.guests-head{height:0;margin:0;position:relative;z-index:1}.guests-head>div:first-child{display:none}.guests-head>div:last-child{position:absolute;right:0;top:-67px}
.whatsapp-dialog{width:min(470px,100%);height:100vh;max-height:100vh;margin:0 0 0 auto;border-radius:0}.whatsapp-dialog::backdrop{background:rgba(30,38,34,.34);backdrop-filter:blur(3px)}.whatsapp-dialog form{height:100%;display:flex;flex-direction:column;padding:0}.whatsapp-head{height:64px;display:flex;align-items:center;justify-content:space-between;padding:0 18px;border-bottom:1px solid #e8ebe9}.whatsapp-head h2{font-size:16px}.whatsapp-head button{display:grid;place-items:center;background:transparent;border:0}.whatsapp-recipient{display:flex;align-items:center;gap:9px;margin:14px;padding:10px;background:#f6f8f7;border-radius:7px}.whatsapp-recipient div{display:grid}.whatsapp-recipient small{color:#858b87}.whatsapp-space{flex:1;display:grid;place-items:center;color:#8b918d}.whatsapp-dialog form>label{display:flex;align-items:flex-end;gap:8px;padding:12px;border-top:1px solid #e8ebe9}.whatsapp-dialog textarea{width:100%;min-height:42px;max-height:110px;padding:10px;border:1px solid #e0e5e2;border-radius:9px;resize:vertical}.whatsapp-dialog form>label button{width:38px;height:38px;display:grid;place-items:center;color:#fff;background:#00a074;border:0;border-radius:50%}

/* Ficha individual del huésped */
.customer-detail-mode>header{display:none}.customer-detail-mode{padding-top:28px}.customer-page{width:min(780px,100%);margin:0 auto;padding-bottom:50px}.customer-back{display:inline-flex;align-items:center;gap:7px;margin:0 0 38px;padding:0;color:#272b28;background:transparent;border:0;font-size:15px}.customer-back .lucide{width:17px}.customer-page-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.customer-page-title h2{margin:0;font-size:18px}.customer-page-title button,.customer-card-tools button{display:inline-flex;align-items:center;gap:7px;padding:8px 13px;color:#252925;background:#fff;border:1px solid #e0e4e1;border-radius:9px;font-weight:600}.customer-page-title .lucide,.customer-card-tools .lucide{width:17px}.customer-summary-card{position:relative;min-height:288px;margin-bottom:22px;background:#fff;border:1px solid #edf0ee;border-radius:12px;overflow:visible}.customer-summary-card::before{content:"";position:absolute;left:0;right:0;top:63px;border-top:1px solid #edf0ee}.customer-card-tools{height:63px;display:flex;align-items:center;justify-content:flex-end;gap:9px;padding:0 22px;background:#fafbfa;border-radius:12px 12px 0 0}.customer-card-tools button:disabled{color:#aaa;cursor:not-allowed}.customer-page-avatar{position:absolute;z-index:1;left:24px;top:21px;width:72px;height:72px;display:grid;place-items:center;color:#333;background:#fafbfa;border:1px solid #e2e6e3;border-radius:50%;font-size:18px}.customer-summary-body{padding:46px 24px 23px}.customer-country-pill{display:inline-flex;padding:4px 9px;color:#454a46;background:#f4f5f4;border-radius:999px;font-size:12px;font-weight:600}.customer-summary-body h1{margin:10px 0 20px;font-size:22px}.customer-summary-body dl{display:grid;gap:7px;margin:0}.customer-summary-body dl>div{display:grid;grid-template-columns:185px 1fr;align-items:center}.customer-summary-body dt{display:flex;align-items:center;gap:7px;font-weight:650}.customer-summary-body dt .lucide{width:17px;color:#7b817d}.customer-summary-body dd{display:flex;align-items:center;gap:8px;margin:0;color:#747a76}.customer-verified{width:19px;height:19px;padding:3px;color:#fff;background:#0ac26b;border-radius:50%}.customer-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin-bottom:30px;padding:5px;background:#f4f5f4;border-radius:10px}.customer-tabs button{padding:10px;color:#686e6a;background:transparent;border:0;border-radius:8px;font-size:15px}.customer-tabs button.active{color:#242825;background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.1);font-weight:600}.identity-title{margin:0 0 32px;font-size:18px}.civil-query-card{min-height:520px;padding:25px;border:1px solid #e7ebe8;border-radius:12px}.civil-query-status{display:flex;align-items:center;gap:9px;color:#969c98;font-size:14px}.civil-query-status .lucide{width:18px;color:#d5a33d}.civil-query-empty{min-height:420px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.civil-query-empty>span{width:82px;height:82px;display:grid;place-items:center;color:#737975;background:#f5f6f5;border-radius:50%}.civil-query-empty>span .lucide{width:36px;height:36px}.civil-query-empty h3{margin:26px 0 17px;font-size:25px}.civil-query-empty p{max-width:530px;margin:0 0 34px;color:#777d79;font-size:15px}.civil-query-empty button{display:inline-flex;align-items:center;gap:8px;padding:10px 14px;color:#292d2a;background:#fff;border:1px solid #dfe3e0;border-radius:9px;font-weight:600}.civil-query-empty button .lucide{width:18px}
@media(max-width:650px){.customer-detail-mode{padding-top:16px}.customer-back{margin-bottom:24px}.customer-summary-card{min-height:310px}.customer-card-tools{padding-right:10px}.customer-card-tools button{font-size:0}.customer-card-tools .lucide{width:18px}.customer-summary-body dl>div{grid-template-columns:115px 1fr}.customer-summary-body h1{font-size:18px}.customer-tabs button{font-size:12px}.civil-query-card{min-height:430px;padding:16px}.civil-query-empty{min-height:350px}.civil-query-empty h3{font-size:21px}}

/* Selectores web del formulario de huésped */
.customer-native-select{display:none!important}.guest-control.customer-select-host{display:block;height:auto;min-height:0;margin-top:7px;padding:0;background:transparent;border:0;border-radius:0;box-shadow:none;overflow:visible}.guest-control.customer-select-host:focus-within{border-color:transparent;box-shadow:none}.customer-web-select{position:relative;width:100%}.customer-web-select-trigger{width:100%;height:44px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 13px;color:#303532;background:#fff;border:1px solid #dce5ee;border-radius:9px;text-align:left;font-weight:500;transition:border-color .16s,box-shadow .16s}.customer-web-select-trigger:hover{border-color:#adc5dc}.customer-web-select-trigger[aria-expanded="true"]{border-color:#2f6599;box-shadow:0 0 0 3px rgba(47,101,153,.11)}.customer-web-select-trigger .lucide{width:17px;height:17px;color:#667b8f;transition:transform .16s}.customer-web-select-trigger[aria-expanded="true"] .lucide{transform:rotate(180deg)}.customer-web-select-menu{position:absolute;z-index:40;top:calc(100% + 6px);left:0;right:0;display:grid;gap:3px;padding:6px;background:#fff;border:1px solid #e0e6eb;border-radius:10px;box-shadow:0 12px 30px rgba(20,41,61,.14)}.customer-web-select-menu button{width:100%;display:flex;align-items:center;padding:9px 11px;color:#333936;background:transparent;border:0;border-radius:7px;text-align:left}.customer-web-select-menu button:hover{color:#003366;background:#f1f6fa}.customer-web-select-menu button.selected{color:#fff;background:#2f6599;font-weight:600}.customer-web-select-menu button.selected::after{content:"✓";margin-left:auto;font-weight:700}

/* Gestión de reservaciones */
.reservations-view{color:#303431}.reservations-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:14px}.reservations-heading h2{margin:0;color:#171a18;font-size:24px}.reservations-heading p{margin:4px 0 0;color:#7b817d;font-size:12px}.reservations-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:7px}.reservations-actions button,.reservation-list-tools button,.reservation-list-tools label{min-height:36px;display:inline-flex;align-items:center;gap:7px;padding:7px 11px;color:#363b37;background:#fff;border:1px solid #e1e6e3;border-radius:8px;font-size:11px;font-weight:600}.reservations-actions button.primary{color:#fff;background:#00a074;border-color:#00a074}.reservations-actions .lucide,.reservation-list-tools .lucide{width:15px;height:15px}.reservation-total-card{width:235px;min-height:66px;display:grid;align-content:center;margin-bottom:12px;padding:10px 14px;border:1px solid #e5e9e6;border-radius:10px}.reservation-total-card span{color:#818682;font-size:10px}.reservation-total-card strong{margin-top:3px;font-size:18px}.reservation-list-tools{display:flex;align-items:center;gap:7px;margin-bottom:10px}.reservation-list-tools label{padding-block:0}.reservation-list-tools select,.reservation-list-tools input{height:32px;padding:0;background:transparent;border:0;outline:0}.reservation-list-tools select{min-width:70px}.reservation-search-box{width:min(310px,100%);margin-left:4px}.reservation-search-box input{width:100%;min-width:0}.reservation-status-filters{display:flex;align-items:center;gap:4px;margin-bottom:12px;padding:4px;background:#f5f6f5;border-radius:9px;overflow-x:auto}.reservation-status-filters button{min-height:30px;display:inline-flex;align-items:center;gap:5px;padding:6px 10px;color:#767c78;background:transparent;border:0;border-radius:7px;white-space:nowrap;font-size:10px}.reservation-status-filters button.active{color:#333834;background:#fff;box-shadow:0 1px 4px #00000012}.reservation-status-filters button:not(.active){opacity:.52}.reservation-status-filters .lucide{width:13px;height:13px}.reservation-status-filters .pending.active{color:#c6532d}.reservation-status-filters .confirmed.active{color:#2f6599}.reservation-status-filters .checked_in.active{color:#16845f}.reservation-status-filters .cancelled.active{color:#a97a00}.reservations-table{min-width:1120px;border:1px solid #edf0ee;border-radius:10px;overflow:hidden}.reservations-table-head,.reservation-table-row{display:grid;grid-template-columns:28px 75px 120px 120px minmax(190px,1.3fr) 100px minmax(220px,1.35fr) 190px 22px;align-items:center;min-height:44px}.reservations-table-head{min-height:38px;color:#777d79;background:#fafbfa;border-bottom:1px solid #edf0ee;font-size:9px;font-weight:650}.reservations-table-head>*{padding:6px 8px}.reservation-table-row{width:100%;padding:0;color:#666c68;background:#fff;border:0;border-bottom:1px solid #edf0ee;text-align:left;font-size:9px}.reservation-table-row:last-child{border-bottom:0}.reservation-table-row:hover{background:#fbfcfb}.reservation-table-row>*{min-width:0;margin:0;padding:6px 8px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.reservation-table-row>strong{color:#545a56}.reservation-table-row input{pointer-events:none}.reservation-state{display:inline-flex;align-items:center;gap:4px;padding:3px 7px;border-radius:999px;font-weight:600}.reservation-state .lucide{width:10px;height:10px}.reservation-state.confirmed{color:#2f6599;background:#eef5fb}.reservation-state.pending{color:#c6532d;background:#fff5ef}.reservation-state.checked_in{color:#16845f;background:#eefaf5}.reservation-state.checked_out{color:#626965;background:#f2f4f3}.reservation-state.no_show{color:#c84b55;background:#fff1f2}.reservation-state.cancelled{color:#a77c00;background:#fff9e7}.reservation-room-pictures{display:flex;align-items:center}.reservation-room-pictures img{width:22px;height:22px;margin-left:-5px;object-fit:cover;border:2px solid #fff;border-radius:50%}.reservation-room-pictures img:first-child{margin-left:0}.reservation-room-pictures>.lucide{width:18px}.reservation-guest{display:flex;align-items:center;gap:7px}.reservation-guest i{width:23px;height:23px;flex:0 0 23px;display:grid;place-items:center;color:#5c6660;background:#f1f4f2;border-radius:50%;font-size:7px;font-style:normal;font-weight:700}#reservation-list{overflow-x:auto}
#detail-dialog{width:min(1050px,calc(100% - 34px));max-height:92vh;border-radius:14px}#detail-dialog::backdrop{background:rgba(35,46,40,.36);backdrop-filter:blur(2px)}#detail-dialog form{padding:22px 26px}#detail-dialog .dialog-head{padding-bottom:14px;border-bottom:1px solid #edf0ee}#detail-dialog .dialog-head small{color:#2f6599;font-size:14px;font-weight:700}#detail-dialog .dialog-head h2{font-size:20px}.detail-cards{grid-template-columns:repeat(4,1fr);gap:8px}.detail-cards article{border:1px solid #e8ece9;border-radius:9px;box-shadow:none}.quick-actions{justify-content:flex-end}.quick-actions button{border-radius:8px}.quick-actions button:not(.danger){color:#fff;background:#00a074;border-color:#00a074}.quick-actions .message-action{color:#343936!important;background:#fff!important;border-color:#dfe4e1!important}.quick-actions .message-action .lucide{width:15px;height:15px}#detail-dialog fieldset,#detail-dialog section,#detail-dialog details{border-color:#edf0ee}#detail-dialog .dialog-actions{position:sticky;bottom:-22px;margin:20px -26px -22px;padding:13px 26px;background:#f7f8f7;border-top:1px solid #edf0ee}
.folio-list{display:grid;gap:7px}.folio-list article{display:grid;grid-template-columns:34px 1fr auto;align-items:center;gap:10px;padding:10px 12px;border:1px solid #e5eae7;border-radius:9px;background:#fff}.folio-list article>div{display:grid;gap:2px}.folio-list small{color:#7a817d}.folio-origin{width:32px;height:32px;display:grid;place-items:center;border-radius:50%;color:#2f6599;background:#edf4fa}.folio-origin.restaurant{color:#d85a30;background:#fff2ed}.folio-origin.cafeteria{color:#5a9f3e;background:#f0faec}.folio-origin .lucide{width:16px;height:16px}#folio-section>.panel-head>div p{margin:2px 0 0;color:#7a817d;font-size:12px}#folio-total{font-size:18px;color:#003366}
@media(max-width:850px){.reservations-heading{flex-direction:column}.reservations-actions{justify-content:flex-start}.reservation-list-tools{flex-wrap:wrap}.reservation-search-box{width:100%;margin-left:0}.detail-cards{grid-template-columns:1fr 1fr}}@media(max-width:520px){.reservations-actions button{font-size:0}.reservations-actions button .lucide{width:18px;height:18px}.reservation-total-card{width:100%}.detail-cards{grid-template-columns:1fr}}
@media print{body>*:not(#app){display:none!important}.app aside,.app>main>header,.reservations-heading .reservations-actions,.reservation-list-tools,.reservation-status-filters{display:none!important}.app{display:block}.app main{padding:0}.view{display:none!important}#reservas{display:block!important}.reservations-table{min-width:0}.reservations-table-head,.reservation-table-row{grid-template-columns:25px 60px 95px 90px 1.2fr 80px 1.25fr 145px 18px;font-size:8px}}

/* Filtros web de reservaciones */
.reservation-list-tools>button,.reservation-year-picker>button,.reservations-actions button{appearance:none;-webkit-appearance:none;box-shadow:none;font-family:inherit}.reservation-list-tools>button:hover,.reservation-year-picker>button:hover,.reservations-actions button:not(.primary):hover{color:#2f6599;background:#f7fafc;border-color:#c8d8e7}.reservation-list-tools>button:focus-visible,.reservation-year-picker>button:focus-visible,.reservations-actions button:focus-visible{outline:3px solid rgba(47,101,153,.14);outline-offset:1px}.reservation-list-tools button b{min-width:17px;height:17px;display:grid;place-items:center;color:#fff;background:#2f6599;border-radius:999px;font-size:9px}.reservation-year-picker{position:relative}.reservation-year-picker>button{height:36px;display:flex;align-items:center;gap:7px;padding:0 11px;color:#363b37;background:#fff;border:1px solid #e1e6e3;border-radius:8px;font-size:11px;font-weight:600}.reservation-year-picker>button span{min-width:38px;text-align:left}.reservation-year-picker>button .lucide{width:15px;height:15px}.reservation-year-picker>button .lucide:last-child{transition:transform .16s}.reservation-year-picker>button.open .lucide:last-child{transform:rotate(180deg)}.reservation-year-menu{position:absolute;z-index:30;top:calc(100% + 5px);left:0;min-width:100%;display:grid;gap:2px;padding:5px;background:#fff;border:1px solid #dfe5e1;border-radius:9px;box-shadow:0 12px 26px rgba(24,44,34,.15)}.reservation-year-menu button{padding:8px 11px;color:#444a46;background:transparent;border:0;border-radius:6px;text-align:left;font-size:11px}.reservation-year-menu button:hover{color:#003366;background:#f1f6fa}.reservation-year-menu button.selected{color:#fff;background:#2f6599;font-weight:650}.reservation-filter-drawer,.reservation-picker-dialog{width:min(430px,100%);height:100vh;max-height:100vh;margin:0 0 0 auto;padding:0;border:0;border-radius:14px 0 0 14px}.reservation-filter-drawer::backdrop,.reservation-picker-dialog::backdrop{background:rgba(27,38,32,.38);backdrop-filter:blur(3px)}.reservation-filter-drawer form,.reservation-picker-dialog form{min-height:100%;padding:18px}.filter-drawer-head{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:22px}.filter-drawer-head h2{margin:0;color:#202421;font-size:16px}.filter-drawer-head p{margin:4px 0 0;color:#868c88;font-size:10px}.filter-drawer-head>button{width:30px;height:30px;display:grid;place-items:center;padding:0;color:#4c524e;background:#f4f6f5;border:0;border-radius:50%}.filter-drawer-head>button:hover{background:#e9eeeb}.filter-drawer-head .lucide{width:16px;height:16px}.reservation-filter-drawer section{margin-bottom:20px}.reservation-filter-drawer section h3{margin:0 0 7px;color:#353a36;font-size:11px}.reservation-filter-drawer section>button{width:100%;height:38px;display:flex;align-items:center;gap:8px;padding:0 10px;color:#858b87;background:#fff;border:1px solid #e2e7e4;border-radius:8px;text-align:left;font-size:10px}.reservation-filter-drawer section>button span{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.reservation-filter-drawer section>button.selected{color:#2f6599;background:#f4f8fb;border-color:#bfd2e3}.reservation-filter-drawer section>button .lucide{width:14px;height:14px}.reservation-filter-drawer form>#reservation-filters-clear{display:block;margin:28px auto 0;padding:8px 12px;color:#16845f;background:transparent;border:0;font-size:10px;font-weight:650}.reservation-picker-search{height:36px;display:flex;align-items:center;gap:7px;margin-bottom:12px;padding:0 10px;border:1px solid #dde4df;border-radius:8px}.reservation-picker-search .lucide{width:14px}.reservation-picker-search input{width:100%;height:100%;padding:0;background:transparent;border:0;outline:0;font-size:10px}.reservation-picker-head{display:grid;grid-template-columns:1fr 90px;padding:6px 8px;color:#828884;border-bottom:1px solid #edf0ee;font-size:9px}.reservation-picker-dialog form>div:last-child{max-height:calc(100vh - 145px);overflow-y:auto}.reservation-picker-dialog form>div:last-child>button{width:100%;min-height:34px;display:grid;grid-template-columns:25px 1fr 90px;align-items:center;gap:7px;padding:5px 8px;color:#525854;background:#fff;border:0;border-bottom:1px solid #f0f2f1;text-align:left;font-size:9px}.reservation-picker-dialog form>div:last-child>button:hover{background:#f5f9f7}.reservation-picker-dialog form>div:last-child img,.reservation-picker-dialog form>div:last-child>button>.lucide{width:22px;height:22px;object-fit:cover;border-radius:50%}.reservation-picker-dialog form>div:last-child strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.reservation-picker-dialog form>div:last-child span{color:#7d837f}.guest-picker{width:min(620px,100%)}.guest-picker form>div:last-child>button{grid-template-columns:25px minmax(180px,1fr) 145px 9px}.guest-picker form>div:last-child>button>i{width:22px;height:22px;display:grid;place-items:center;background:#f1f4f2;border-radius:50%;font-size:7px;font-style:normal;font-weight:700}.guest-picker form>div:last-child>button>b{width:7px;height:7px;background:#d5dad7;border-radius:50%}.guest-picker form>div:last-child>button>b.verified{background:#0ac779}
@media(max-width:520px){.reservation-filter-drawer,.reservation-picker-dialog{width:100%;border-radius:0}.reservation-year-menu{right:0;left:auto}}
/* Tablero integrado de Restaurante y Cafetería */
.pos-dashboard-view{display:grid;gap:18px}.pos-dashboard-view.hidden{display:none}.pos-dashboard-head{display:flex;align-items:flex-start;justify-content:space-between;gap:24px}.pos-dashboard-head>div:last-child{display:flex;gap:9px}.pos-dashboard-head h2{margin:4px 0;font-size:30px;color:#151817}.pos-dashboard-head p{margin:0;color:#747b77}.pos-dashboard-head>div>span{color:#2f6599;font-size:11px;font-weight:800;letter-spacing:.12em}.pos-dashboard-head button{display:inline-flex;align-items:center;gap:8px;min-height:42px;padding:0 15px;border:1px solid #dbe3e8;border-radius:10px;background:#fff;color:#26302b;font-weight:700}.pos-dashboard-head button.primary{border-color:#2f6599;background:#2f6599;color:#fff}.pos-dashboard-head .lucide{width:17px;height:17px}.pos-dashboard-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px}.pos-dashboard-metrics article{min-height:112px;display:grid;grid-template-columns:42px 1fr;align-items:center;gap:12px;padding:18px;border:1px solid #e0e7e4;border-radius:14px;background:#fff;box-shadow:0 5px 18px rgba(0,51,102,.05)}.pos-dashboard-metrics article>div{display:grid;gap:2px}.pos-dashboard-metrics small{color:#747b77;font-weight:650}.pos-dashboard-metrics strong{color:#003366;font-size:25px}.pos-dashboard-metrics p{margin:0;color:#919792;font-size:11px}.pos-metric-icon{width:40px;height:40px;display:grid;place-items:center;border-radius:11px;background:#edf4fa;color:#2f6599}.pos-metric-icon.sales{background:#fff1eb;color:#d85a30}.pos-metric-icon.accounts{background:#eef8ea;color:#5a9f3e}.pos-metric-icon.guests{background:#eef2f7;color:#003366}.pos-metric-icon .lucide{width:20px;height:20px}.pos-dashboard-metrics .pos-loading{grid-column:1/-1;display:block;min-height:70px;color:#747b77}.pos-accounts-panel .panel-head>div p{margin:3px 0 0;color:#7a817d;font-size:12px}.pos-account-table{display:grid}.pos-account-head,.pos-account-table>button{display:grid;grid-template-columns:minmax(190px,1.4fr) minmax(150px,1fr) 120px 120px 24px;align-items:center;gap:15px}.pos-account-head{padding:10px 14px;border-bottom:1px solid #e3e8e5;color:#7a817d;font-size:11px;font-weight:750;text-transform:uppercase;letter-spacing:.04em}.pos-account-table>button{width:100%;padding:14px;border:0;border-bottom:1px solid #edf0ee;background:#fff;color:#303632;text-align:left;cursor:pointer}.pos-account-table>button:hover{background:#f7faf8}.pos-account-table>button>span:first-child{display:grid;gap:2px}.pos-account-table>button small{color:#89908c}.pos-account-table>button>b{color:#2f6599}.pos-account-table>button>strong{color:#d85a30}.pos-account-table .lucide{width:16px;height:16px;color:#8b928e}@media(max-width:1000px){.pos-dashboard-metrics{grid-template-columns:repeat(2,1fr)}}@media(max-width:720px){.pos-dashboard-head{display:grid}.pos-dashboard-head>div:last-child{flex-wrap:wrap}.pos-dashboard-metrics{grid-template-columns:1fr}.pos-account-table{overflow:auto}.pos-account-head,.pos-account-table>button{min-width:760px}}

/* Identidad azul compartida con River Paradise Suite. */
:root {
  --green-dark: #00264d;
  --green-light: #e6f0fa;
}
.login-shell { background: linear-gradient(145deg, #001f3f, #003366); }
.login-card > button[type="submit"] {
  color: #fff;
  background: linear-gradient(145deg, #001f3f, #003366);
  border: 1px solid #003366;
}
.login-card > button[type="submit"]:hover {
  background: linear-gradient(145deg, #001f3f, #003366);
  border-color: #003366;
}
input:focus, select:focus, textarea:focus {
  border-color: var(--brand-blue);
  box-shadow: 0 0 0 3px rgba(47, 101, 153, .16);
}
.app aside {
  color: #fff;
  background: linear-gradient(180deg, #003b73 0%, #001f3f 100%);
  border-right-color: rgba(255, 255, 255, .08);
  box-shadow: 4px 0 24px rgba(0, 51, 102, .18);
}
.app aside .brand { border-bottom: 1px solid rgba(255, 255, 255, .10); }
.app aside .brand-mark { background: rgba(255, 255, 255, .08); color: #a8d4f5; }
.app aside .brand strong { color: #fff; }
.app aside .brand small { color: rgba(255, 255, 255, .68); }
.app aside nav { scrollbar-color: rgba(168, 212, 245, .3) transparent; }
.app aside nav button { color: rgba(255, 255, 255, .68); border: 1px solid transparent; }
.app aside .nav-section-label { color: rgba(255, 255, 255, .5); }
.app aside .nav-badge { color: #a8d4f5; background: rgba(168, 212, 245, .14); }
.app aside nav button .lucide,
.app aside nav button[data-module] .lucide { color: #a8d4f5; }
.app aside nav button:hover:not(:disabled) {
  color: #fff;
  background: rgba(255, 255, 255, .06);
  border-color: rgba(255, 255, 255, .08);
}
.app aside nav button[data-module]:hover .lucide { color: #a8d4f5; }
.app aside nav button.active, .app aside nav button.active:hover {
  color: #fff;
  background: linear-gradient(90deg, rgba(255, 255, 255, .18), rgba(255, 255, 255, .06));
  border: 1px solid rgba(255, 255, 255, .24);
  box-shadow: inset 3px 0 #7db7e8;
}
.app aside nav button:disabled { color: rgba(255, 255, 255, .35); }
.app aside .user { color: #fff; border-top-color: rgba(255, 255, 255, .09); }
.app aside .user button { color: #a8d4f5; background: rgba(255, 255, 255, .08); }
.app aside .user button:hover { color: #fff; background: var(--brand-blue); }
body button.primary { color: #fff; background: var(--brand-blue); border-color: var(--brand-blue); }
body button.primary:hover { color: #fff; background: #003366; border-color: #003366; }

/* Logotipo tipográfico compartido con Suite. */
.app aside .brand { justify-content: center; padding: 0 6px 20px; }
.app aside .sidebar-wordmark {
  display: flex; flex-direction: column; align-items: center;
  width: 100%; color: #fff; text-align: center; line-height: .82;
}
.app aside .sidebar-wordmark strong { font-size: 21px; font-weight: 800; letter-spacing: -.04em; }
.app aside .sidebar-wordmark span { display: block; margin-top: 6px; font-size: 11px; font-weight: 500; line-height: 1; }
.app aside .user-info { min-width: 0; }
.app aside .user-info small { display: block; margin-top: 4px; color: rgba(255,255,255,.5); font-size: 11px; }
@media (min-width: 621px) and (max-width: 900px) {
  .app aside .sidebar-wordmark strong { font-size: 10px; letter-spacing: -.03em; }
  .app aside .sidebar-wordmark span { margin-top: 3px; font-size: 7px; }
}

/* Contactos y mensajes de recepción. */
.reception-layout { display:grid; grid-template-columns:minmax(250px, .8fr) minmax(320px, 1.2fr); gap:20px; align-items:start; }
#recepcion label:not(.reception-history) { display:block; margin:12px 0 8px; font-weight:650; }
#recepcion input[type=search], #recepcion select, #recepcion textarea { width:100%; padding:11px; border:1px solid #ccdbe8; border-radius:9px; }
#recepcion textarea { resize:vertical; }
#recepcion p, #reception-list small { color:var(--muted); }
.reception-history { display:flex; align-items:center; gap:8px; margin:14px 0; font-size:12px; }
#reception-list { display:grid; gap:8px; max-height:65vh; overflow:auto; }
#reception-list button { display:grid; gap:5px; width:100%; padding:13px; text-align:left; color:#003366; background:#fff; border:1px solid #dce5ee; border-radius:10px; }
#reception-list button:hover, #reception-list button.selected { background:#e6f0fa; border-color:#2f6599; }
#reception-list span { color:#2f6599; }
#reception-prepare { margin:10px 0; padding:9px 12px; background:#e6f0fa; color:#003366; border:1px solid #ccdbe8; border-radius:8px; }
#reception-open { display:inline-block; padding:12px 18px; color:#fff; background:linear-gradient(145deg,#001f3f,#003366); border-radius:10px; text-decoration:none; font-weight:650; }
#reception-open[aria-disabled=true] { opacity:.45; cursor:not-allowed; }
#reception-open:focus-visible { outline:3px solid #7db7e8; outline-offset:3px; }
@media(max-width:800px) { .reception-layout { grid-template-columns:1fr; } #reception-list { max-height:35vh; } }

/* Fechas de los contactos de recepción. */
.reception-scopes { display:flex; flex-wrap:wrap; gap:6px; margin:16px 0 10px; }
.reception-scopes button { padding:9px 12px; border:1px solid #ccdbe8; border-radius:9px; color:#003366; background:#fff; font-weight:650; }
.reception-scopes button:hover { background:#e6f0fa; }
.reception-scopes button.active { color:#fff; background:linear-gradient(145deg,#001f3f,#003366); border-color:#003366; }
#reception-scope-hint { font-size:12px; line-height:1.5; }

/* Resumen de cobros en Inicio. */
.receivables-panel { margin-bottom:24px; }
.receivables-panel .panel-head { align-items:flex-start; }
.receivables-panel .panel-head p { margin:6px 0 0; color:var(--muted); font-size:13px; }
.receivables-metrics { display:grid; grid-template-columns:1.2fr 1fr 1fr; gap:14px; margin:20px 0; }
.receivables-metrics article { display:grid; gap:7px; padding:20px; border:1px solid #dce5ee; border-radius:12px; }
.receivables-metrics strong { color:#003366; font-size:28px; font-variant-numeric:tabular-nums; }
.receivables-metrics small { color:var(--muted); }
.receivables-metrics .receivables-main { color:#fff; background:linear-gradient(145deg,#001f3f,#003366); border-color:#003366; }
.receivables-main strong { color:#fff; }.receivables-main small { color:#a8d4f5; }
.receivables-filters { display:flex; flex-wrap:wrap; gap:7px; margin-bottom:12px; }
.receivables-filters button,.receivable-open,#receivables-refresh { padding:9px 12px; border:1px solid #ccdbe8; border-radius:8px; background:#fff; color:#003366; font-weight:650; }
.receivables-filters button.active,.receivable-open { color:#fff; background:#2f6599; border-color:#2f6599; }
.receivables-filters button:hover,#receivables-refresh:hover { box-shadow:0 0 0 2px #e6f0fa; }
.receivables-scroll { overflow:auto; }.receivables-scroll .table { min-width:740px; }
.receivables-scroll td { font-variant-numeric:tabular-nums; }.receivables-scroll td:first-child { max-width:260px; }
.receivable-guest,.receivables-scroll td small { display:block; margin-top:5px; }
.receivables-scroll td small { font-size:11px; color:var(--muted); }
.receivables-scroll td .receivable-status.overdue { color:#b44924; }.receivables-scroll td .receivable-status.today { color:#2f6599; }
.receivable-balance { font-weight:800; color:#003366; white-space:nowrap; }
.receivables-footnote,#receivables-notice { font-size:12px; color:var(--muted); margin:12px 0 0; }
.receivables-empty { padding:26px; text-align:center; border-radius:10px; background:#e6f0fa; color:#003366; }
@media(max-width:700px) { .receivables-metrics { grid-template-columns:1fr; } .receivables-metrics article { padding:16px; } }

/* Inicio: paleta de Suite con acentos por actividad y prioridad. */
#inicio { --suite-green-ink:#3b7d22; --suite-green-soft:#eff8ea; --suite-tomato-soft:#faece7; }
#inicio > .metrics article { border-top:4px solid var(--brand-blue); background:linear-gradient(145deg,#fff,#edf4fa); box-shadow:0 4px 16px rgba(0,51,102,.045); }
#inicio > .metrics article strong { color:#003366; }
#inicio > .metrics article:nth-child(1),
#inicio > .metrics article:nth-child(3) { border-top-color:var(--brand-green); background:linear-gradient(145deg,#fff,var(--suite-green-soft)); }
#inicio > .metrics article:nth-child(1) strong,
#inicio > .metrics article:nth-child(3) strong { color:var(--suite-green-ink); }
#inicio > .metrics article:nth-child(2) { border-top-color:var(--brand-tomato); background:linear-gradient(145deg,#fff,var(--suite-tomato-soft)); }
#inicio > .metrics article:nth-child(2) strong { color:#a9401d; }
#inicio > .panel { border-color:#dce5ee; box-shadow:0 4px 18px rgba(0,51,102,.04); }
#inicio .panel-head h2 { color:#003366; }
#inicio .receivables-metrics article:nth-child(2) { background:var(--suite-green-soft); border-color:#cce7bf; border-top:3px solid var(--brand-green); }
#inicio .receivables-metrics article:nth-child(2) strong { color:var(--suite-green-ink); }
#inicio .receivables-metrics article:nth-child(3) { background:var(--suite-tomato-soft); border-color:#edc6b9; border-top:3px solid var(--brand-tomato); }
#inicio .receivables-metrics article:nth-child(3) strong { color:#a9401d; }
#inicio .receivables-filters [data-receivable-filter="today"].active { background:var(--suite-green-soft); color:var(--suite-green-ink); border-color:var(--brand-green); }
#inicio .receivables-filters [data-receivable-filter="overdue"].active { background:var(--suite-tomato-soft); color:#a9401d; border-color:var(--brand-tomato); }
#inicio .receivable-status { width:fit-content; padding:4px 7px; border-radius:6px; }
#inicio .receivable-status.today { background:var(--suite-green-soft); color:var(--suite-green-ink); }
#inicio .receivable-status.overdue { background:var(--suite-tomato-soft); color:#a9401d; }
#inicio .receivable-status.upcoming { background:#e6f0fa; color:#2f6599; }
#inicio .table th { background:#f3f7fb; color:#42617c; }
#inicio .table tr.clickable:hover { background:#f3f7fb; }
#inicio .badge.checked_in { background:var(--suite-green-soft); color:var(--suite-green-ink); }
#inicio .badge.confirmed { background:#e6f0fa; color:#2f6599; }
#inicio .badge.pending { background:var(--suite-tomato-soft); color:#a9401d; }
#inicio button[data-go="reservas"] { background:#e6f0fa; border:1px solid #cbddec; color:#003366; }
#inicio .receivable-open:hover { background:#003366; }

.reservation-breakfast { background:#eff8ea; border:1px solid #cce7bf; border-radius:12px; padding:16px; }
.reservation-breakfast legend { color:#003366; }.reservation-breakfast label { display:flex; align-items:center; gap:10px; margin:10px 0; }.reservation-breakfast input[type=number] { width:100px; }.reservation-breakfast small { display:block; color:#5a5955; line-height:1.5; }

/* Inicio según las fechas del calendario. */
.daily-dashboard-toolbar { display:flex; flex-wrap:wrap; align-items:end; gap:10px; margin-bottom:20px; }
.daily-dashboard-toolbar > div { flex:1; min-width:220px; }.daily-dashboard-toolbar h2 { margin:0; color:#003366; font-size:21px; }
.daily-dashboard-toolbar p { color:#5a5955; margin:5px 0 0; }.daily-dashboard-toolbar label { display:grid; gap:6px; font-size:12px; font-weight:650; }
.daily-dashboard-toolbar input,.daily-dashboard-toolbar button,#daily-calendar { height:40px; padding:8px 12px; border:1px solid #ccdbe8; border-radius:9px; background:#fff; color:#003366; }
#inicio .daily-counts article { padding:0; overflow:hidden; }
.daily-counts button { width:100%; display:grid; gap:8px; padding:20px; text-align:left; background:transparent; border:0; border-radius:9px; }
.daily-counts button[aria-pressed=true] { box-shadow:inset 0 0 0 2px #2f6599; }.daily-counts button small { color:#5a5955; font-size:11px; }
#inicio .daily-counts button span { color:#5a5955; } .daily-counts button strong { font-size:29px; margin:0; }
.daily-money { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; margin:20px 0; }
.daily-money article { display:grid; gap:8px; padding:20px; border-radius:12px; background:linear-gradient(145deg,#001f3f,#003366); color:white; }
.daily-money strong { font-size:28px; font-variant-numeric:tabular-nums; }.daily-money small { font-size:11px; }
.daily-money article:nth-child(2) { background:#eff8ea; color:#3b7d22; border-top:3px solid #7ccb5b; }
.daily-money article:nth-child(3) { background:#faece7; color:#a9401d; border-top:3px solid #d85a30; }
.daily-state { display:block; color:#5a5955; margin-top:5px; }.daily-explanation,#daily-notice { color:#5a5955; font-size:12px; line-height:1.5; }
#daily-warning { color:#a9401d; font-size:13px; }#dashboard-legacy { margin-top:22px; }#dashboard-legacy > summary { padding:14px; color:#003366; border:1px solid #dce5ee; border-radius:10px; background:#fff; cursor:pointer; }#dashboard-legacy > section { margin-top:12px; }
@media(max-width:700px) { .daily-money { grid-template-columns:1fr; } }

/* Unified guest controls: a single focus outline on the outer field. */
.guest-dialog .guest-control > input:not([type=hidden]) { appearance:none; -webkit-appearance:none; border:0!important; outline:none!important; box-shadow:none!important; border-radius:0; margin:0; }
.guest-dialog .guest-control:focus-within { border-color:#488c66; box-shadow:0 0 0 3px #488c6618; }
.guest-dialog .guest-control.customer-select-host { box-shadow:none; }
.guest-control.customer-select-host > .lucide,.guest-control.customer-select-host > .country-flag { display:none; }
.guest-dialog input::-webkit-contacts-auto-fill-button { visibility:hidden; pointer-events:none; }
.guest-dialog .customer-web-select-trigger:focus-visible,.guest-dialog .customer-web-select-trigger[aria-expanded=true] { outline:none; border-color:#488c66; box-shadow:0 0 0 3px #488c6618; }
.guest-dialog .customer-web-select-menu button.selected,.country-options button.selected { background:#488c66; color:white; }
.country-menu { position:absolute; z-index:50; top:calc(100% + 6px); left:0; right:0; padding:8px; border:1px solid #dce5ee; border-radius:12px; background:white; box-shadow:0 12px 30px #14293d24; }
.country-menu input[type=search] { width:100%; height:40px; margin:0 0 6px; padding:8px 10px; border:1px solid #dce5ee; border-radius:8px; background:#fff; }
.country-options { max-height:220px; overflow-y:auto; display:grid; gap:3px; overscroll-behavior:contain; }
.country-options button { text-align:left; padding:10px; border:0; border-radius:7px; background:white; color:#303532; }
.country-options button:hover,.country-options button:focus-visible { background:#eef7f1; color:#245d3e; outline:2px solid #488c66; outline-offset:-2px; }
.reservation-breakfast { display:grid; gap:14px; }
.reservation-breakfast label { margin:0; justify-content:space-between; flex-wrap:wrap; }
.reservation-breakfast label:has(input[type=checkbox]) { justify-content:flex-start; }
.reservation-breakfast input[type=number] { appearance:textfield; -moz-appearance:textfield; width:110px; min-height:44px; padding:10px 14px; background:#fff; border:1px solid #d5e2d9; border-radius:10px; color:#24362b; font:inherit; text-align:center; box-shadow:none; }
.reservation-breakfast input[type=number]::-webkit-inner-spin-button,.reservation-breakfast input[type=number]::-webkit-outer-spin-button { -webkit-appearance:none; margin:0; }
.reservation-breakfast input[type=number]:focus { outline:2px solid #488c66; outline-offset:2px; }
.reservation-breakfast input[type=number]:disabled { background:#edf1ed; color:#7b857e; }
.reservation-breakfast [data-breakfast-summary] { padding-top:12px; border-top:1px solid #d5e7cd; color:#254a34; }
/* Reservation status colors, shared by calendar, badges and filters. */
body .badge.pending,body #inicio .badge.pending,body .reservation-state.pending,body .reservation-status-filters .pending.active,body #calendario .legend-pending,body .legend-pending,body .calendar-booking.pending,body #calendario .calendar-schedule .calendar-booking.pending { color:#946200!important; background:#fff9e6!important; border-color:#f2dda0!important; }
body .legend-pending i,body #calendario .legend-pending i { background:#e7b416!important; }
body .calendar-booking.pending,body #calendario .calendar-schedule .calendar-booking.pending { border-left-color:#e7b416!important; }
body .badge.cancelled,body #inicio .badge.cancelled,body .reservation-state.cancelled,body .reservation-status-filters .cancelled.active,body #calendario .legend-cancelled,body .legend-cancelled,body .calendar-booking.cancelled,body #calendario .calendar-schedule .calendar-booking.cancelled { color:#b4232d!important; background:#fff0f1!important; border-color:#f4c4c8!important; }
body .legend-cancelled i,body #calendario .legend-cancelled i { background:#d83a48!important; }
body .calendar-booking.cancelled,body #calendario .calendar-schedule .calendar-booking.cancelled { border-left-color:#d83a48!important; }
body .status-picker[data-reservation-status=pending],body .status-picker[data-reservation-status=pending] select { color:#946200; background-color:#fff9e6; border-color:#f2dda0; }
body .status-picker[data-reservation-status=cancelled],body .status-picker[data-reservation-status=cancelled] select { color:#b4232d; background-color:#fff0f1; border-color:#f4c4c8; }
