/* DS 2.7.3 — targeted interface corrections; booking/calendar logic is untouched. */
:root {
  --ds-focus-ring: 0 0 0 3px rgba(86, 91, 63, .28);
  --ds-focus-outline: 2px solid #565b3f;
}

/* A busca é uma única pílula: o input interno nunca pode cobrir a borda. */
.app-shell .reservas-toolbar .reservas-search input[type="search"] {
  box-sizing: border-box;
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  -webkit-appearance: none;
  appearance: none;
}
.app-shell .reservas-toolbar .reservas-search:focus-within {
  border-color: #565b3f;
  box-shadow: var(--ds-focus-ring);
}

/* Media queries inside an iframe use the iframe's width, not the parent page.
   The desktop panel is 2/3 of the parent viewport and can be only ~747px wide.
   Keep the action row clear of the parent's 42px close control at right:16px. */
@media (min-width: 700px) {
  .reservation-embed-shell .page-head {
    padding-right: 96px;
    flex-wrap: wrap;
  }
}
@media (min-width: 1121px) {
  .agenda-side-panel.is-full-mode .agenda-side-head {
    right: 16px;
  }
  .agenda-side-panel.is-full-mode.has-embedded-close .agenda-side-head {
    display: none;
  }
}

/* Once the parent mounts the close action inside the iframe, all controls
   share a single flex row and the reservation title uses its vertical center. */
@media (min-width: 700px) {
  .reservation-embed-shell.has-embedded-close .page-head {
    padding: 18px 16px 14px;
    align-items: center;
    column-gap: 24px;
    row-gap: 16px;
    flex-wrap: wrap;
  }
  .reservation-embed-shell.has-embedded-close .page-head-actions {
    gap: 12px;
    flex-wrap: wrap;
    justify-content: flex-end;
    margin-left: auto;
  }
  .reservation-embed-shell.has-embedded-close .page-head-actions > .btn,
  .reservation-embed-shell.has-embedded-close .page-head-actions > .icon-action {
    min-height: 42px;
  }
  .reservation-embed-shell.has-embedded-close .agenda-embedded-close {
    flex: 0 0 42px;
    width: 42px;
    height: 42px;
    border-color: #dedede;
    color: #171714;
  }
}
@media (max-width: 699px) {
  .reservation-embed-shell.has-embedded-close .agenda-embedded-close {
    display: none;
  }
}

/* Replace legacy pink focus with the approved olive focus treatment. */
.icon-action:focus-visible,
.counter button:focus-visible,
.logout:focus-visible,
.agenda-day:focus-visible {
  outline: var(--ds-focus-outline);
  outline-offset: 2px;
  box-shadow: var(--ds-focus-ring);
}

/* Native upload control, with the browser's file selection behavior preserved. */
input[type="file"] {
  box-sizing: border-box;
  max-width: 100%;
  min-width: 0;
  font: inherit;
  font-size: 14px;
}
input[type="file"]::file-selector-button {
  min-height: 40px;
  margin: 0 12px 0 0;
  padding: 8px 16px;
  border: 0;
  border-radius: 999px;
  background: #f0efe9;
  color: #171714;
  font: inherit;
  font-weight: 600;
  cursor: pointer;
  transition: background 160ms ease, transform 160ms ease;
}
input[type="file"]::file-selector-button:hover {
  background: #e5e4dc;
}
input[type="file"]::file-selector-button:active {
  transform: scale(.98);
}

/* Small-screen calendar: retain the scrollable grid and its event hit targets,
   but show readable stay markers instead of squeezed guest names and prices. */
@media (max-width: 760px) {
  .agenda-day-price {
    display: none;
  }
  .agenda-day-number {
    font-size: 13px;
    font-weight: 600;
  }
  .agenda-event {
    height: 20px;
    min-width: 18px;
    padding: 2px 5px;
    border-radius: 999px;
  }
  .agenda-event b {
    min-width: 0;
    max-width: 100%;
    justify-content: center;
    font-size: 9px;
    line-height: 12px;
  }
  .agenda-event-avatar {
    flex: 0 0 14px;
    width: 14px;
    height: 14px;
    margin-right: 0;
    font-size: 8px;
  }
  .agenda-event.note {
    min-height: 20px;
    margin-bottom: 4px;
    padding: 3px 5px;
    border-radius: 999px !important;
  }
}

@media (max-width: 420px) {
  input[type="file"] {
    font-size: 12px;
  }
  input[type="file"]::file-selector-button {
    min-height: 38px;
    margin-right: 8px;
    padding-inline: 12px;
  }
}

@media (prefers-reduced-motion: reduce) {
  input[type="file"]::file-selector-button {
    transition: none;
  }
}

/* Experimento visual: fundo branco nas páginas do sistema. */
:root { --canvas: #ffffff; }
html, body { background-color: #ffffff; }

/* A foto do login deve prevalecer sobre o degradê do tema. */
body.login-view {
  background-image: linear-gradient(rgba(12, 20, 16, .12), rgba(12, 20, 16, .28)), url('login-bg.jpg');
  background-repeat: no-repeat;
  background-position: center center;
  background-size: cover;
}

/* Indicadores: os totalizadores usam a mesma superfície dos demais cards do DS. */
.kpi-grid > article {
  border: 0;
  border-radius: var(--radius);
  background: var(--paper);
  box-shadow: var(--shadow);
}

/* A lista da agenda precisa de um trilho com a altura do calendário para
   permanecer visível enquanto a página desce. A lista rola internamente. */
@media (min-width: 1121px) {
  .agenda-airbnb-shell > .reservas-overview-rail {
    align-self: stretch;
    min-width: 0;
  }
  .reservas-overview-rail > .reservas-overview {
    margin-bottom: 0;
    position: sticky;
    top: calc(var(--agenda-header-offset, 190px) + 12px);
    max-height: calc(100dvh - var(--agenda-header-offset, 190px) - 24px);
  }
  .reservas-overview-rail > .reservas-overview.js-scroll-follow {
    position: relative;
    top: 0;
  }
}

/* Edição no mesmo painel: cada parte do financeiro é um cartão do DS. */
.reservation-form .payment-and-ledger > .form-section,
.reservation-form .payment-and-ledger .payments-panel {
  min-width: 0;
  margin: 0;
  padding: 24px;
  border: 0;
  border-radius: var(--radius);
  background: var(--paper);
  box-shadow: var(--shadow);
}
.reservation-form .payment-and-ledger {
  margin-top: 16px;
}
.reservation-form .payment-and-ledger .payments-panel h2 {
  font-size: 20px;
}
.reservation-form .payment-and-ledger .payment-ledger-row {
  min-width: 0;
}
.reservation-form .payment-and-ledger .payment-ledger-row input,
.reservation-form .payment-and-ledger .payment-ledger-row select {
  min-width: 0;
  min-height: 48px;
  border-radius: 12px;
}
.reservation-form .payment-and-ledger .payment-ledger-add > summary,
.reservation-form .payment-and-ledger .payment-ledger-generate > summary {
  display: inline-flex !important;
  align-items: center;
  min-height: 42px;
  border-radius: 999px;
}
@media (min-width: 1280px) {
  .has-payment-ledger .reservation-form .payment-and-ledger .payments-panel {
    padding: 24px;
    border-left: 0;
  }
}
.reservas-overview[hidden] {
  display: none !important;
}
.dashboard-reservation-edit-frame {
  display: block;
  width: 100%;
  height: min(82dvh, 1100px);
  border: 0;
  border-radius: var(--radius);
  background: #fff;
}

/* A edição embutida é o conteúdo do painel, não uma página estreita dentro dele. */
body.embedded-view .reservation-embed-edit {
  width: 100%;
  max-width: none;
  padding: 0;
}
.reservation-embed-edit .page-head {
  box-sizing: border-box;
  width: 100%;
  margin: 0;
  padding: 20px 76px 18px 28px;
  border-bottom: 1px solid var(--line);
  background: #fff;
}
.reservation-embed-edit .reservation-form,
.has-payment-ledger.reservation-embed-edit .reservation-form {
  box-sizing: border-box;
  width: 100%;
  max-width: none;
  margin: 0;
  padding: 22px 28px 32px;
}
.reservation-embed-edit .reservation-form .form-intro {
  display: none;
}
.reservation-embed-edit .reservation-form > .form-grid,
.reservation-embed-edit .reservation-form > .form-section,
.reservation-embed-edit .stay-and-guests-grid .form-section {
  border: 0;
  border-radius: var(--radius);
  background: var(--paper);
  box-shadow: var(--shadow);
}
.reservation-embed-edit .reservation-form > .form-actions {
  border: 0;
  box-shadow: var(--shadow);
}
@media (min-width: 700px) {
  body.embedded-view .reservation-embed-edit {
    display: flex;
    flex-direction: column;
    height: 100dvh;
    min-height: 0;
    overflow: hidden;
  }
  .reservation-embed-edit .page-head {
    flex: 0 0 auto;
  }
  .reservation-embed-edit .reservation-form {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    overflow-x: hidden;
    scrollbar-gutter: stable;
  }
}
@media (max-width: 699px) {
  .reservation-embed-edit .page-head {
    padding: 18px 64px 16px 16px;
  }
  .reservation-embed-edit .reservation-form {
    padding: 16px;
  }
}

/* Exclusão de parcela com a mesma pílula destrutiva dos outros controles. */
.payment-ledger-remove-wrap {
  display: flex;
  justify-content: flex-end;
  margin: 8px 0 20px;
}
.payment-ledger-remove.btn,
.payment-ledger-remove.btn.small {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 44px;
  padding: 9px 16px;
  border-radius: 999px;
  text-decoration: none;
}
/* As cascas de formulário das parcelas são associadas por form=id, mas não
   devem aparecer como linhas vazias quando uma classe define display. */
form[id^="payf"][hidden] {
  display: none !important;
}

/* O título e a explicação do financeiro ocupam toda a primeira linha;
   as ações vêm abaixo e não espremem o texto numa coluna estreita. */
.payments-panel > .section-heading {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  align-items: start;
  gap: 16px;
}
.payments-panel > .section-heading > div:first-child {
  min-width: 0;
}
.payments-panel > .section-heading .muted {
  max-width: 65ch;
  margin: 8px 0 0;
}
.payments-panel .section-heading-actions {
  display: flex;
  justify-content: flex-start;
  flex-wrap: wrap;
  gap: 10px;
  min-width: 0;
}
.payments-panel .section-heading-actions .btn {
  max-width: 100%;
  text-align: center;
}
@media (min-width: 561px) and (max-width: 850px) {
  .payments-panel .expense-line {
    grid-template-columns: 38px minmax(0, 1fr) auto;
  }
  .payments-panel .expense-actions {
    grid-column: 2 / -1;
    justify-content: flex-start;
  }
}

/* Detalhe da reserva: uma coluna e acompanhamento recolhível. */
.reservation-detail-single { grid-template-columns: minmax(0, 1fr); }
.reservation-detail-single .reservation-left { min-width: 0; gap: 18px; }
.reservation-detail-single .reservation-left > .panel { margin-top: 0; }
.reservation-stage-accordion { overflow: hidden; padding: 0 !important; }
.reservation-stage-summary { display: flex; align-items: center; justify-content: space-between; gap: 18px; min-height: 94px; padding: 20px 24px; list-style: none; cursor: pointer; }
.reservation-stage-summary::-webkit-details-marker { display: none; }
.reservation-stage-summary:focus-visible { outline: var(--ds-focus-outline); outline-offset: -4px; border-radius: inherit; }
.reservation-stage-heading { display: grid; min-width: 0; gap: 2px; }
.reservation-stage-heading strong { color: var(--ink); font-size: 20px; line-height: 1.2; letter-spacing: -.025em; }
.reservation-stage-heading small { color: var(--muted); font-size: 13px; font-weight: 500; }
.reservation-stage-meta { display: inline-flex; align-items: center; gap: 16px; flex: none; }
.reservation-stage-meta .progress-count { white-space: nowrap; }
.reservation-stage-meta .ui-icon { width: 18px; height: 18px; transition: transform .18s ease; }
.reservation-stage-accordion[open] .reservation-stage-meta .ui-icon { transform: rotate(180deg); }
.reservation-stage-list { padding: 16px 24px 20px; border-top: 1px solid #ececea; }
.reservation-stage-list .step { grid-template-columns: 38px minmax(0, 1fr); min-height: 66px; }
.reservation-stage-list .step.current { margin: 0 0 8px; }
.reservation-stage-list .step-copy { padding-top: 5px; }
.reservation-detail-head .page-head-actions { flex-wrap: wrap; justify-content: flex-end; min-width: 0; }
.reservation-detail-head .reservation-next-action { max-width: 100%; text-align: center; }
@media (max-width: 680px) {
  .reservation-stage-summary { min-height: 86px; padding: 16px 18px; }
  .reservation-stage-list { padding: 14px 18px 16px; }
  .reservation-stage-heading strong { font-size: 18px; }
  .reservation-stage-meta { gap: 8px; }
  .reservation-detail-head .page-head-actions { justify-content: flex-start; }
  .reservation-detail-head .reservation-next-action { flex: 1 1 100%; }
}

/* Detalhe compacto: cartão lateral menor, sem alterar o painel de orçamento. */
@media (min-width: 1121px) {
  .agenda-airbnb-shell.has-side-panel .agenda-side-panel.is-full-mode { width: min(56vw, 900px) !important; }
  .finance-reservation-drawer-panel { width: min(56vw, 900px); min-width: 0; }
}
@media (min-width: 560px) and (max-width: 899px) {
  .reservation-embed-drawer { display: flex; flex-direction: column; height: 100dvh; min-height: 0; padding: 0 !important; overflow: hidden; }
  .reservation-embed-drawer .page-head { flex: none; margin: 0; padding: 18px 68px 14px 16px; background: #fff; border-bottom: 1px solid var(--line); }
  .reservation-embed-drawer .embedded-scroll { flex: 1; min-height: 0; overflow-y: auto; padding: 18px 16px 28px; }
}

.reservation-detail-head .reservation-guest-heading { min-width: 0; }
.reservation-guest-identity { display: flex; align-items: center; gap: 15px; min-width: 0; }
.reservation-guest-avatars { display: inline-flex; align-items: center; flex: none; padding-right: 9px; }
.reservation-guest-avatars > span { display: grid; place-items: center; width: 46px; height: 46px; border-radius: 50%; background: #e9eee2; color: #445232; font-size: 19px; font-weight: 600; }
.reservation-guest-avatars > span + span { margin-left: -12px; border: 3px solid #fff; background: #e8e5f1; color: #4d4162; }
.reservation-guest-copy { display: grid; gap: 4px; min-width: 0; }
.reservation-guest-copy .title-with-status { gap: 7px; }
.reservation-guest-copy h1 { overflow-wrap: anywhere; font-size: clamp(21px, 2.1vw, 28px); }
.reservation-guest-count { display: inline-flex; align-items: center; gap: 5px; padding: 5px 10px; border-radius: 999px; background: #f0f1ed; color: #445232; font-size: 12px; font-weight: 500; white-space: nowrap; }
.reservation-guest-count .ui-icon { width: 15px; height: 15px; }
.reservation-guest-meta { color: var(--muted); font-size: 12px; line-height: 1.4; }
.reservation-guest-meta > span { padding: 0 3px; }

.reservation-stage-summary { display: block; min-height: 0; }
.reservation-stage-topline { display: flex; align-items: center; justify-content: space-between; gap: 18px; }
.reservation-stage-track { display: grid; grid-template-columns: repeat(7, minmax(66px, 1fr)); gap: 4px; margin-top: 18px; padding: 4px 2px 8px; overflow-x: auto; scrollbar-width: thin; }
.reservation-stage-accordion[open] .reservation-stage-track { display: none; }
.reservation-stage-mini { position: relative; display: flex; flex-direction: column; align-items: center; gap: 6px; min-width: 0; color: #8b8e86; text-align: center; }
.reservation-stage-mini:not(:last-child)::after { content: ''; position: absolute; left: calc(50% + 15px); right: calc(-50% + 15px); top: 12px; height: 2px; background: #e0e3da; }
.reservation-stage-mini.is-complete:not(:last-child)::after { background: var(--ds-olive); }
.reservation-stage-mini-dot { position: relative; z-index: 1; display: grid; place-items: center; width: 26px; height: 26px; border: 2px solid #d5d8cf; border-radius: 50%; background: #fff; font-size: 11px; font-weight: 600; }
.reservation-stage-mini.is-complete .reservation-stage-mini-dot { border-color: var(--ds-olive); background: var(--ds-olive); color: #fff; }
.reservation-stage-mini.is-complete .ui-icon { width: 14px; height: 14px; filter: brightness(0) invert(1); }
.reservation-stage-mini.is-current .reservation-stage-mini-dot { width: 30px; height: 30px; margin-top: -2px; border-color: #242424; background: #242424; color: #fff; box-shadow: 0 0 0 4px #e9eadf; }
.reservation-stage-mini.is-current .reservation-stage-mini-label { color: #242424; font-weight: 600; }
.reservation-stage-mini-label { display: block; max-width: 100%; font-size: 10px; line-height: 1.25; overflow-wrap: anywhere; }
.reservation-stage-list .step.current { background: #f0f1ed; }
.reservation-stage-list .step.complete .step-dot { border-color: var(--ds-olive); background: var(--ds-olive); }
.reservation-stage-list .step.current .step-dot { border-color: #242424; background: #242424; color: #fff; }
.reservation-stage-list .step.current .step-dot .ui-icon { filter: brightness(0) invert(1); }

.hero-summary .reservation-summary-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px 20px; margin-top: 16px; }
.reservation-summary-grid > div { display: flex; align-items: flex-start; gap: 11px; min-width: 0; }
.reservation-summary-grid > div > .ui-icon { width: 20px; height: 20px; flex: none; margin-top: 2px; }
.reservation-summary-grid > div > span { display: grid; gap: 2px; min-width: 0; color: var(--muted); font-size: 12px; }
.reservation-summary-grid strong { color: var(--ink); font-size: 14px; font-weight: 500; line-height: 1.4; overflow-wrap: anywhere; }
.reservation-summary-tags { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 18px; }
@media (max-width: 640px) {
  .reservation-guest-avatars > span { width: 40px; height: 40px; font-size: 17px; }
  .reservation-stage-summary { padding: 16px; }
  .reservation-stage-track { gap: 2px; }
  .reservation-stage-mini-label { font-size: 9px; }
  .hero-summary .reservation-summary-grid { gap: 14px; }
}
@media (max-width: 440px) {
  .hero-summary .reservation-summary-grid { grid-template-columns: 1fr; }
}

/* Informações recebidas: hóspedes, preferências e contexto administrativo. */
.guest-data-panel .reservation-notes-services { margin-top: 14px; border-color: var(--line); background: #f7f7f5; }
.reservation-notes-services p { margin: 0; color: var(--ink); font-size: 14px; line-height: 1.5; overflow-wrap: anywhere; }
.reservation-services-list { display: grid; gap: 3px; margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--line); }
.reservation-services-list span { color: var(--muted); font-size: 12px; }
.reservation-services-list strong { font-size: 14px; font-weight: 500; overflow-wrap: anywhere; }

/* Os anexos pertencem à linha da entrada/parcela, não a um cartão separado. */
.payments-panel .reservation-payment-row { min-width: 0; }
.reservation-payment-description { min-width: 0; }
.reservation-payment-description small { overflow-wrap: anywhere; }
.payments-panel .payment-proof-actions { align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 6px; min-width: 0; }
.payment-proof-link { display: inline-flex; align-items: center; gap: 6px; min-height: 36px; padding: 7px 10px; border: 1px solid var(--line); border-radius: 999px; background: #fff; color: var(--ink); font-size: 11px; font-weight: 500; line-height: 1.2; text-decoration: none; white-space: nowrap; }
.payment-proof-link:hover { background: #f0f1ed; border-color: var(--ds-olive); }
.payment-proof-link .ui-icon { width: 15px; height: 15px; }
.payment-proof-empty { color: var(--muted); font-size: 12px; white-space: nowrap; }
.payment-ledger-row .expense-actions { flex-wrap: wrap; }
@media (max-width: 700px) {
  .payments-panel .reservation-payment-row { grid-template-columns: 38px minmax(0, 1fr) auto; }
  .payments-panel .reservation-payment-row .payment-proof-actions { grid-column: 2 / -1; justify-content: flex-start; }
}
@media (max-width: 560px) {
  .payments-panel .reservation-payment-row .transaction-value { grid-column: 2 / -1; text-align: left; }
  .payments-panel .reservation-payment-row .payment-proof-actions { grid-column: 2 / -1; }
}

/* Avaliações lado a lado; ocorrências abrangem ambas as colunas. */
.reservation-feedback-ratings .stars-display { color: #242424; font-size: 15px; letter-spacing: 0; line-height: 1; }
.reservation-feedback-ratings .stars-display .stars-off { color: #cfd1cf; }
.reservation-feedback-pending-tag { display: inline-flex; align-items: center; width: fit-content; margin: -2px 0 14px; padding: 5px 10px; border-radius: 999px; background: #f2f3f1; color: #62665c; font-size: 11px; font-weight: 500; line-height: 1.2; }
.reservation-feedback-title-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
.reservation-feedback-title-row h3 { min-width: 0; margin: 0; }
.reservation-feedback-copy { display: grid; flex: none; place-items: center; width: 38px; height: 38px; padding: 0; border: 0; border-radius: 50%; background: #242424; cursor: pointer; transition: background .16s, transform .16s; }
.reservation-feedback-copy:hover { background: #111; transform: scale(1.04); }
.reservation-feedback-copy:focus-visible { outline: 3px solid #889878; outline-offset: 3px; }
.reservation-feedback-copy .ui-icon { width: 17px; height: 17px; filter: brightness(0) invert(1); }
.reservation-feedback-copy .ui-icon + .ui-icon { display: none; }
.reservation-feedback-copy.is-copied .ui-icon:first-child { display: none; }
.reservation-feedback-copy.is-copied .ui-icon + .ui-icon { display: block; }

/* Edição financeira: entrada e parcelas com ações curtas, sem seis campos por linha. */
.reservation-form .payment-and-ledger .payment-ledger-simple { padding: 24px; }
.payment-ledger-simple .section-heading { margin-bottom: 14px; }
.payment-simple-list { display: grid; gap: 0; }
.payment-simple-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 12px 16px; padding: 16px 0; border-top: 1px solid var(--line); }
.payment-simple-main { display: flex; align-items: center; gap: 11px; min-width: 0; }
.payment-simple-main > div { display: grid; gap: 3px; min-width: 0; }
.payment-simple-main strong { font-size: 14px; font-weight: 600; overflow-wrap: anywhere; }
.payment-simple-main small { color: var(--muted); font-size: 12px; line-height: 1.35; }
.payment-simple-icon { display: grid; flex: none; place-items: center; width: 34px; height: 34px; border-radius: 50%; background: #e9eee6; }
.payment-simple-icon .ui-icon { width: 16px; height: 16px; }
.payment-simple-row.is-open .payment-simple-icon { background: #f0f1ed; }
.payment-simple-amount { font-size: 14px; white-space: nowrap; }
.payment-simple-side { display: inline-flex; align-items: center; justify-content: flex-end; gap: 10px; }
.payment-simple-edit-button { display: grid; flex: none; place-items: center; width: 34px; height: 34px; padding: 0; border: 1px solid var(--line); border-radius: 50%; background: #fff; cursor: pointer; }
.payment-simple-edit-button:hover, .payment-simple-edit-button[aria-expanded="true"] { background: #f0f1ed; }
.payment-simple-edit-button .ui-icon { width: 16px; height: 16px; }
.payment-simple-edit-button:focus-visible { outline: 3px solid #889878; outline-offset: 2px; }
.payment-simple-proofs { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 6px; padding-left: 45px; }
.payment-simple-receive { grid-column: 1 / -1; display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: end; gap: 10px; padding-left: 45px; }
.payment-simple-due { display: grid; gap: 5px; color: var(--muted); font-size: 11px; white-space: nowrap; }
.payment-simple-due strong { color: var(--ink); font-size: 13px; font-weight: 500; }
.payment-simple-upload { display: grid; gap: 5px; min-width: 0; margin: 0; color: var(--muted); font-size: 11px; font-weight: 500; }
.payment-simple-upload input { width: 100%; min-width: 0; min-height: 42px; padding: 7px; border: 1px solid var(--line); border-radius: 12px; background: #fff; font-size: 12px; }
.payment-simple-receive .btn { min-height: 42px; white-space: nowrap; }
.payment-simple-new { margin: 0 0 16px; }
.payment-simple-new > summary { display: inline-flex; align-items: center; gap: 7px; list-style: none; cursor: pointer; }
.payment-simple-new > summary::-webkit-details-marker { display: none; }
.payment-simple-new > summary .ui-icon { width: 16px; height: 16px; }
.payment-simple-new > .field-help { margin: 12px 0; }
.payment-simple-new-fields, .payment-simple-edit-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: end; gap: 12px; }
.payment-simple-new-fields label, .payment-simple-edit-fields label { display: grid; gap: 5px; min-width: 0; margin: 0; color: var(--muted); font-size: 12px; font-weight: 500; }
.payment-simple-new-fields input, .payment-simple-new-fields select, .payment-simple-edit-fields input, .payment-simple-edit-fields select { width: 100%; min-width: 0; min-height: 42px; border-radius: 12px; }
.payment-simple-new-fields > .btn, .payment-simple-edit-fields > .btn { width: fit-content; }
.payment-simple-edit { grid-column: 1 / -1; padding: 16px; border-radius: 16px; background: #f5f5f2; }
.payment-simple-edit[hidden] { display: none !important; }

/* Valores e catálogo de serviços: o mesmo componente na criação e na edição. */
.reservation-form .payment-and-ledger { grid-template-columns: minmax(0, 1fr); }
.has-payment-ledger .reservation-form .payment-and-ledger .payments-panel { border-left: 0; padding: 24px; }
.reservation-form .payment-and-ledger .reservation-services-section { min-width: 0; margin: 0; padding: 24px; border: 0; border-radius: var(--radius); background: var(--paper); box-shadow: var(--shadow); }
.reservation-services-section .section-heading { align-items: flex-start; }
.reservation-combo-picker { margin-bottom: 18px; }
.reservation-service-cards { display: grid; grid-template-columns: minmax(0,1fr); gap: 10px; }
.reservation-service-item { min-width: 0; overflow: hidden; border-radius: 18px; background: #f7f8f6; transition: background .15s ease, box-shadow .15s ease; }
.reservation-service-item.is-selected { background: #edf1e9; box-shadow: inset 0 0 0 1px #8a987e; }
.reservation-service-card { display: grid; box-sizing: border-box; grid-template-columns: 72px minmax(0,1fr) 48px; align-items: center; gap: 16px; width: 100%; min-width: 0; margin: 0; padding: 14px; border-radius: 18px; cursor: pointer; font-weight: 400; }
.reservation-service-card > img, .reservation-service-placeholder { display: grid; place-items: center; width: 72px; height: 72px; object-fit: cover; border-radius: 13px; background: #ebeee9; }
.reservation-service-placeholder .ui-icon { width: 24px; height: 24px; }
.reservation-service-content { display: grid; gap: 4px; min-width: 0; }
.reservation-service-content strong { font-size: 16px; line-height: 1.25; }
.reservation-service-content small { color: var(--muted); font-size: 13px; line-height: 1.4; overflow-wrap: anywhere; }
.reservation-service-content b { font-size: 14px; font-weight: 600; }
.reservation-form .reservation-service-card input[type="checkbox"] { appearance: none; -webkit-appearance: none; position: relative; box-sizing: border-box; width: 48px; min-width: 48px; height: 28px; min-height: 28px; margin: 0; padding: 0; border: 1px solid #b9c0b2; border-radius: 999px; background: #d8ddd5; box-shadow: none; cursor: pointer; transition: background .18s ease, border-color .18s ease; }
.reservation-form .reservation-service-card input[type="checkbox"]::before { content: ""; position: absolute; top: 3px; left: 3px; width: 20px; height: 20px; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px #0003; transition: transform .18s ease; }
.reservation-form .reservation-service-card input[type="checkbox"]:checked { background: #58674b; border-color: #58674b; }
.reservation-form .reservation-service-card input[type="checkbox"]:checked::before { transform: translateX(20px); }
.reservation-form .reservation-service-card input[type="checkbox"]:focus-visible { outline: 3px solid #a7b39c; outline-offset: 3px; }
.reservation-form .reservation-service-card input[type="checkbox"]:disabled { opacity: .65; cursor: not-allowed; }
.reservation-services-totals { display: grid; gap: 10px; margin-top: 18px; padding: 18px 20px; border-radius: 16px; background: #f7f8f6; }
.reservation-services-totals > div { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; font-size: 14px; }
.reservation-services-totals strong { font-weight: 600; white-space: nowrap; }
.reservation-services-totals .reservation-services-grand-total { margin-top: 2px; padding-top: 12px; border-top: 1px solid #dfe4da; color: #23251f; font-size: 17px; font-weight: 600; }
.reservation-services-totals .reservation-services-grand-total strong { font-size: 20px; }
.reservation-service-payment { display: flex; align-items: center; flex-wrap: wrap; gap: 12px; margin: 0 14px; padding: 12px 0 16px; border-top: 1px solid #dfe4da; }
.reservation-service-payment > label { display: grid; gap: 5px; flex: 1 1 220px; margin: 0; font-size: 12px; font-weight: 500; }
.reservation-service-payment input[type="file"] { width: 100%; min-height: 42px; padding: 7px; border: 1px solid var(--line); border-radius: 12px; background: #fff; }
@media (max-width: 680px) { .reservation-service-card { grid-template-columns: 56px minmax(0,1fr) 48px; gap: 10px; padding: 12px; } .reservation-service-card > img, .reservation-service-placeholder { width: 56px; height: 56px; } .reservation-service-payment > .btn { width: 100%; } .reservation-services-totals { padding: 16px; } }
.payment-ledger-advanced { margin-top: 12px; }
.payment-ledger-advanced > summary { width: auto; color: var(--ink); font-size: inherit; }
.payment-ledger-advanced[open] > summary { border-bottom: 1px solid var(--line); }
.reservation-form .payment-and-ledger .payment-ledger-advanced > .payments-panel,
.has-payment-ledger .reservation-form .payment-and-ledger .payment-ledger-advanced > .payments-panel { margin: 0 !important; padding: 18px 24px 24px; border: 0; border-radius: 0; background: transparent; box-shadow: none; }
@media (max-width: 600px) { .has-payment-ledger .reservation-form .payment-and-ledger .payment-ledger-advanced > .payments-panel { padding: 16px 18px 20px; } }
@media (max-width: 700px) {
  .payment-simple-receive { grid-template-columns: 1fr; padding-left: 0; }
  .payment-simple-receive .btn { width: 100%; }
  .payment-simple-proofs { padding-left: 0; }
  .payment-simple-new-fields, .payment-simple-edit-fields { grid-template-columns: 1fr; }
  .payment-simple-new-fields > .btn, .payment-simple-edit-fields > .btn { width: 100%; }
}
@media (min-width: 520px) {
  .reservation-feedback-panel.has-two-reviews { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 16px; align-items: start; }
  .reservation-feedback-panel.has-two-reviews > .section-heading { grid-column: 1 / -1; }
  .reservation-feedback-panel.has-two-reviews > .reservation-feedback-team { grid-column: 1; grid-row: 2; }
  .reservation-feedback-panel.has-two-reviews > .reservation-feedback-stay { grid-column: 2; grid-row: 2; }
  .reservation-feedback-panel.has-two-reviews > .reservation-feedback-incidents { grid-column: 1 / -1; grid-row: 3; }
  .reservation-feedback-panel.has-two-reviews > .reservation-feedback-team,
  .reservation-feedback-panel.has-two-reviews > .reservation-feedback-stay { min-width: 0; height: 100%; padding: 16px; border: 1px solid var(--line); border-radius: 18px; background: #fff; }
}
@media (max-width: 519px) {
  .reservation-feedback-panel { display: block; }
}

/* Histórico fica recolhido até o usuário querer conferir a auditoria. */
.reservation-history-accordion { overflow: hidden; padding: 0 !important; }
.reservation-history-accordion > summary { display: flex; align-items: center; justify-content: space-between; gap: 18px; min-height: 78px; padding: 18px 24px; list-style: none; cursor: pointer; }
.reservation-history-accordion > summary::-webkit-details-marker { display: none; }
.reservation-history-accordion > summary strong { display: block; font-size: 20px; font-weight: 600; line-height: 1.25; }
.reservation-history-meta { display: inline-flex; align-items: center; gap: 14px; flex: none; }
.reservation-history-meta .ui-icon { width: 18px; height: 18px; transition: transform .18s ease; }
.reservation-history-accordion[open] .reservation-history-meta .ui-icon { transform: rotate(180deg); }
.reservation-history-accordion .change-log-list { margin: 0 24px 18px; padding-top: 8px; border-top: 1px solid var(--line); }
@media (max-width: 600px) {
  .reservation-history-accordion > summary { padding: 16px 18px; }
  .reservation-history-accordion .change-log-list { margin-inline: 18px; }
  .reservation-history-accordion .change-log-entry { grid-template-columns: 1fr; gap: 3px; }
}

/* A expansão é explícita e fica no próprio calendário, sem depender do scroll da página. */
.agenda-load-more { display: grid; place-items: center; width: 58px; height: 58px; margin: 4px auto 40px; padding: 0; border: 1px solid #deded9; border-radius: 50%; background: #fff; color: #222; box-shadow: 0 6px 20px rgba(0,0,0,.08); cursor: pointer; transition: background .15s ease, box-shadow .15s ease; }
.agenda-load-more:hover { background: #f5f5f2; box-shadow: 0 8px 24px rgba(0,0,0,.13); }
.agenda-load-more:focus-visible { outline: 3px solid #71785b; outline-offset: 3px; }
.agenda-load-more[hidden] { display: none !important; }
.agenda-load-more .ui-icon { width: 23px; height: 23px; }
.agenda-load-previous { margin: 4px auto 24px; }
.agenda-load-previous .ui-icon { transform: rotate(180deg); }

/* Desktop: entrada e saída ocupam meia data, feriado recebe anel vermelho e
   o nome longo termina em reticências sem escapar da pílula. */
.agenda-event b { min-width: 0; max-width: 100%; }
.agenda-event-avatar { flex: 0 0 18px; min-width: 18px; min-height: 18px; aspect-ratio: 1; box-sizing: border-box; }
.agenda-event-label-full { display: block; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* Trechos cortados pela virada de semana têm a ponta de continuação reta. */
.agenda-event { border-radius: 0; }
.agenda-event.starts { border-radius: 999px 0 0 999px; }
.agenda-event.ends { border-radius: 0 999px 999px 0; }
.agenda-event.starts.ends { border-radius: 999px; }
.agenda-day-number, .agenda-day-price { font-weight: 400; }
.agenda-day-number { font-size: 13px; }
.agenda-day-price { font-size: 14px; }
.agenda-event b { font-weight: 400; }
.agenda-day.is-today .agenda-day-number { background: #e12a4c; color: #fff; }
.agenda-day:not(.is-past):not(.is-selected-start):not(.is-selected-end):not(.is-in-range),
.agenda-day:not(.is-past):not(.is-selected-start):not(.is-selected-end):not(.is-in-range):hover { border-color: #ddd; background: #fff; color: #333; }
.agenda-day:not(.is-past):not(.is-selected-start):not(.is-selected-end):not(.is-in-range) .agenda-day-number { color: #333; }
.agenda-day:not(.is-past):not(.is-selected-start):not(.is-selected-end):not(.is-in-range) .agenda-day-price { color: #666; }
.agenda-day.is-today:not(.is-selected-start):not(.is-selected-end):not(.is-in-range) .agenda-day-number { color: #fff; }
.agenda-day.is-occupied::after { display: none !important; content: none !important; }
.agenda-event.is-past-segment, .agenda-event.is-finished-stay { background: #c0c0c0 !important; color: #fff !important; box-shadow: none !important; }
.agenda-event.is-past-segment .agenda-event-avatar, .agenda-event.is-finished-stay .agenda-event-avatar { background: rgba(255,255,255,.22); color: #fff; }
.cabanas-date-picker.has-availability .agenda-picker-day.is-turnover:not(:disabled):not(.is-start):not(.is-end) { color: #18733f; }
/* A seleção inteira deve ser preta também no desktop; cabanas-ds.css ainda
   pintava somente os dias intermediários de verde-claro. */
.agenda-day.is-selected-start, .agenda-day.is-selected-end, .agenda-day.is-in-range { border-color: #242424; background: #242424; color: #fff; box-shadow: none; }
.agenda-day.is-selected-start .agenda-day-number, .agenda-day.is-selected-end .agenda-day-number, .agenda-day.is-in-range .agenda-day-number { color: #fff; text-decoration: none; }
.agenda-day.is-selected-start .agenda-day-price, .agenda-day.is-selected-end .agenda-day-price, .agenda-day.is-in-range .agenda-day-price { color: #fff; }
@media (min-width: 761px) {
  .agenda-holiday-marker { display: none; }
  .agenda-day.has-holiday .agenda-day-number { display: grid; place-items: center; width: 32px; height: 32px; margin: -4px 0 0 -4px; border-radius: 50%; box-shadow: 0 0 0 1px #e12a4c; }
  .agenda-day.has-holiday.is-today .agenda-day-number { background: #e12a4c; color: #fff; }
  .agenda-day.has-holiday:is(.is-selected-start, .is-selected-end, .is-in-range) .agenda-day-number { background: transparent; color: #fff; }
  .agenda-day.is-past, .agenda-day.is-past.is-occupied, .agenda-day.is-past:not(.is-occupied) { border: 0; background: #f0f0f0; color: #b8b8b8; opacity: 1; }
  .agenda-day.is-past .agenda-day-number, .agenda-day.is-past.is-occupied .agenda-day-number, .agenda-day.is-past:not(.is-occupied) .agenda-day-number { color: #b8b8b8; text-decoration: none; }
  .agenda-day.is-past .agenda-day-price { color: #b8b8b8; }
}

/* Agenda compacta: mantém sete dias visíveis, preços e faixas de reservas legíveis. */
.agenda-day-price-mobile, .agenda-event-label-mobile { display: none; }
.agenda-day-price-occupied { display: none; }
.agenda-mobile-selection-actions { display: none; }
@media (max-width: 760px) {
  .agenda-header-sticky { position: relative; top: auto; z-index: 1; backdrop-filter: none; box-shadow: none; }
  .agenda-scroll-calendar { padding: 10px 2px 24px; border-radius: 0; box-shadow: none; }
  .agenda-calendar-column { margin-inline: -6px; padding: 16px 0 100px; }
  .agenda-month { margin-bottom: 42px; scroll-margin-top: 24px; }
  .agenda-month-head { display: block; margin: 0 4px 16px; }
  .agenda-month-head h2 { margin: 0; font-size: 24px; line-height: 1.2; font-weight: 600; }
  .agenda-month-head .agenda-legend { display: none; }
  .agenda-weekdays, .agenda-month-grid { gap: 3px; }
  .agenda-month-grid { --agenda-grid-gap: 3px; --agenda-turnover-gap: 1px; }
  .agenda-weekdays { margin-bottom: 7px; }
  .agenda-weekdays span { font-size: 10px; font-weight: 400; }
  .agenda-day, .agenda-empty-day { min-height: 96px; }
  .agenda-day { align-items: center; padding: 8px 2px 7px; border: 1px solid #e3e3df; border-radius: 12px; background: #fff; text-align: center; box-shadow: none; }
  .agenda-day:not(.is-past):not(.is-selected-start):not(.is-selected-end):not(.is-in-range),
  .agenda-day:not(.is-past):not(.is-selected-start):not(.is-selected-end):not(.is-in-range):hover { border-color: #ddd; background: #fff; color: #333; }
  .agenda-day.is-occupied .agenda-day-number { color: inherit; text-decoration: none; }
  .agenda-day-number { display: grid; place-items: center; flex: 0 0 32px; width: 32px; height: 32px; margin: 0; font-size: 13px; line-height: 1; font-weight: 400; }
  .agenda-day.is-today .agenda-day-number { width: 32px; height: 32px; margin: 0; background: #e12a4c; color: #fff; font-size: 13px; }
  .agenda-day.is-occupied.is-today .agenda-day-number { color: #fff; }
  .agenda-day-price { display: block; align-self: center; max-width: 100%; margin: auto 0 2px; color: #6d6d6d; font-size: clamp(9px, 2.5vw, 12px); line-height: 1.15; white-space: nowrap; }
  .agenda-day-price-occupied { display: block; }
  .agenda-day-price-full, .agenda-event-label-full { display: none; }
  .agenda-day-price-mobile { display: inline; }
  .agenda-day.is-past, .agenda-day.is-past.is-occupied, .agenda-day.is-past:not(.is-occupied) { border: 0; background: #f0f0f0; color: #b8b8b8; opacity: 1; }
  .agenda-day.is-past .agenda-day-number, .agenda-day.is-past.is-occupied .agenda-day-number, .agenda-day.is-past:not(.is-occupied) .agenda-day-number { color: #b8b8b8; text-decoration: none; }
  .agenda-day.is-past .agenda-day-price { color: #b8b8b8; }
  .agenda-day.is-past::after { display: none; }
  .agenda-day.is-selected-start, .agenda-day.is-selected-end, .agenda-day.is-in-range { border-color: #242424; background: #242424; color: #fff; box-shadow: none; }
  .agenda-day.is-selected-start .agenda-day-number, .agenda-day.is-selected-end .agenda-day-number, .agenda-day.is-in-range .agenda-day-number { background: transparent; color: #fff; text-decoration: none; }
  .agenda-day.is-selected-start .agenda-day-price, .agenda-day.is-selected-end .agenda-day-price, .agenda-day.is-in-range .agenda-day-price { color: #fff; }
  .agenda-holiday-marker { display: none; }
  .agenda-day.has-holiday .agenda-day-number { margin: 0; border-radius: 50%; box-shadow: 0 0 0 1px #e12a4c; }
  .agenda-day.has-holiday.is-today .agenda-day-number { background: #e12a4c; color: #fff; }
  .agenda-day.has-holiday.is-selected-start .agenda-day-number, .agenda-day.has-holiday.is-selected-end .agenda-day-number, .agenda-day.has-holiday.is-in-range .agenda-day-number { background: transparent; color: #fff; }
  .agenda-event { box-sizing: border-box; bottom: 0; height: 40px; min-width: 0; margin-left: var(--mobile-start-inset, 0px) !important; margin-right: var(--mobile-end-inset, 0px) !important; margin-bottom: 7px; padding: 4px 7px; border-radius: 0; box-shadow: none; }
  .agenda-event b { display: flex; justify-content: flex-start; min-width: 0; width: 100%; max-width: 100%; font-size: 12px; line-height: 1.1; }
  .agenda-event-label-mobile { display: block; flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .agenda-event-avatar { flex: 0 0 26px; width: 26px; height: 26px; margin-right: 6px; font-size: 11px; }
  .agenda-event.starts { border-radius: 999px 0 0 999px; }
  .agenda-event.ends { border-radius: 0 999px 999px 0; }
  .agenda-event.starts.ends { border-radius: 999px; }
  .agenda-event.note { display: none; }
  .agenda-mobile-selection-actions:not([hidden]) { position: fixed; right: 12px; bottom: calc(12px + env(safe-area-inset-bottom)); left: 12px; z-index: 45; display: flex; align-items: center; gap: 8px; padding: 7px; border: 1px solid #e9e9e6; border-radius: 999px; background: #fff; box-shadow: 0 8px 30px rgba(0,0,0,.18); }
  .agenda-mobile-selection-actions .agenda-mobile-quote { flex: 1; min-height: 46px; border-radius: 999px; background: #171717; color: #fff; font-size: 15px; font-weight: 600; }
  .agenda-mobile-clear { display: grid; place-items: center; flex: 0 0 46px; width: 46px; height: 46px; padding: 0; border: 1px solid #d9d9d6; border-radius: 50%; background: #fff; color: #222; cursor: pointer; }
  .agenda-mobile-clear .ui-icon { width: 18px; height: 18px; }
  .agenda-quote-open .agenda-mobile-selection-actions, .agenda-has-selection .reservas-floating-add { display: none !important; }
  .reservas-floating-add { min-height: 42px; padding: 0 14px; font-size: 12px; }
}
.agenda-day.is-today:is(.is-selected-start, .is-selected-end, .is-in-range) .agenda-day-number { background: #e12a4c; color: #fff; }
.agenda-property-picker{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:10px;font-size:14px}
.agenda-property-picker label{color:#666;font-weight:500}
.agenda-property-picker select{width:auto;min-width:180px;max-width:250px;border:1px solid #ddd;border-radius:999px;background:#fff;color:#222;padding:9px 36px 9px 16px}
.agenda-property-picker a{color:#565e43;text-decoration:underline;text-underline-offset:3px}
@media(max-width:680px){.agenda-property-picker{width:100%}.agenda-property-picker select{flex:1;min-width:0}}
