/*
 * unibusca — product UI 2026
 * Isolado das buscas: somente templates baseados em layout.html carregam este arquivo.
 */

/* A família Sora e a variável --ub-font são declaradas em unibusca.css,
   que o layout sempre carrega antes deste arquivo. */

:root {
  --ub-ink: #2f1a45;
  --ub-ink-2: #49335d;
  --ub-coral: #ff625a;
  --ub-coral-dark: #de4642;
  --ub-coral-soft: #fff0ef;
  --ub-bg: #f7f6f8;
  --ub-surface: #ffffff;
  --ub-surface-2: #f1eef4;
  --ub-line: #e5e0e9;
  --ub-muted: #6f6479;
  --ub-success: #18794e;
  --ub-success-soft: #e9f7ef;
  --ub-warning: #9a6700;
  --ub-warning-soft: #fff5d6;
  --ub-danger: #bd2c35;
  --ub-danger-soft: #fff0f0;
  --ub-radius-sm: 10px;
  --ub-radius: 16px;
  --ub-radius-lg: 24px;
  --ub-shadow-sm: 0 1px 2px rgba(47, 26, 69, .05), 0 8px 24px rgba(47, 26, 69, .05);
  --ub-shadow: 0 20px 50px rgba(47, 26, 69, .10);
  --ub-sidebar: 264px;

  /* Design tokens do componente de calendário (FullCalendar). Todos aliases
     dos tokens --ub-* acima, então qualquer calendário do sistema segue o
     tema (claro/escuro) automaticamente sem precisar de regras próprias. */
  --calendar-primary: var(--ub-ink);
  --calendar-accent: var(--ub-coral);
  --calendar-accent-soft: var(--ub-coral-soft);
  --calendar-border: var(--ub-line);
  --calendar-background: var(--ub-surface);
  --calendar-surface-2: var(--ub-surface-2);
  --calendar-muted: var(--ub-muted);
  --calendar-success: var(--ub-success);
  --calendar-success-soft: var(--ub-success-soft);
  --calendar-warning: var(--ub-warning);
  --calendar-warning-soft: var(--ub-warning-soft);
  --calendar-danger: var(--ub-danger);
  --calendar-danger-soft: var(--ub-danger-soft);
  --calendar-radius: var(--ub-radius);
  --calendar-radius-sm: var(--ub-radius-sm);
  --calendar-control-height: 40px;
  --calendar-cell-hover: var(--ub-surface-2);
}

html { scroll-behavior: smooth; }

body {
  color: var(--ub-ink);
  background: var(--ub-bg);
  font-size: 14.5px;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
}

body, button, input, select, textarea {
  font-family: var(--ub-font) !important;
}

a { color: var(--ub-ink); text-underline-offset: 3px; }
a:hover { color: var(--ub-coral-dark); }

:focus-visible {
  outline: 3px solid rgba(255, 98, 90, .35) !important;
  outline-offset: 2px;
}

/* Actions — clean, balanced, comfortable click target */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  min-height: 38px;
  border-radius: 10px;
  padding: .5rem .95rem;
  font-size: .84rem;
  font-weight: 650;
  letter-spacing: 0;
  box-shadow: none;
  transition: transform .15s ease, box-shadow .15s ease, background-color .15s ease;
}
.btn:hover { transform: translateY(-1px); }
.btn-sm { min-height: 32px; padding: .32rem .68rem; font-size: .78rem; border-radius: 8px; }
.btn-primary, .btn-primary:focus {
  color: #fff;
  background: var(--ub-coral);
  border-color: var(--ub-coral);
}
.btn-primary:hover, .btn-primary:active {
  color: #fff !important;
  background: var(--ub-coral-dark) !important;
  border-color: var(--ub-coral-dark) !important;
  box-shadow: 0 8px 20px rgba(222, 70, 66, .20);
}
.btn-phoenix-primary, .btn-phoenix-secondary {
  color: var(--ub-ink);
  background: var(--ub-surface);
  border: 1px solid var(--ub-line);
}
.btn-phoenix-primary:hover, .btn-phoenix-secondary:hover {
  color: var(--ub-ink);
  background: var(--ub-surface-2);
  border-color: #cec6d5;
}
.btn-danger, .btn-phoenix-danger { background: var(--ub-danger-soft); border-color: transparent; color: var(--ub-danger); }
.btn-danger:hover, .btn-phoenix-danger:hover { background: var(--ub-danger); color: #fff; }

/* Inputs — clean, high-clarity fields */
.form-label, legend.form-label {
  margin-bottom: .35rem;
  color: var(--ub-ink);
  font-size: .82rem;
  font-weight: 650;
  letter-spacing: 0;
}
.form-control, .form-select {
  min-height: 40px;
  font-size: .88rem;
  color: var(--ub-ink);
  background-color: var(--ub-surface);
  border: 1px solid #d5cedc;
  border-radius: 9px;
  padding: .52rem .75rem;
  box-shadow: 0 1px 2px rgba(47, 26, 69, .03);
}
textarea.form-control { min-height: 100px; }
.form-control::placeholder { color: #9a909f; }
.form-control:focus, .form-select:focus {
  color: var(--ub-ink);
  background: #fff;
  border-color: var(--ub-coral);
  box-shadow: 0 0 0 3px rgba(255, 98, 90, .12);
}
.form-check-input { border-color: #bfb4c7; }
.form-check-input:checked { background-color: var(--ub-coral); border-color: var(--ub-coral); }
.form-hint { color: var(--ub-muted) !important; font-size: .80rem; opacity: 1 !important; }


/* Product shell */
.navbar-top:not(.ub-public-nav) {
  min-height: 74px;
  padding: 0 28px;
  background: rgba(255,255,255,.92);
  border-bottom: 1px solid var(--ub-line);
  box-shadow: none;
  backdrop-filter: blur(18px);
}
.navbar-top .navbar-brand img { height: 35px; width: auto; }
.ub-topbar__context { display: flex; align-items: center; gap: 10px; color: var(--ub-muted); font-size: .86rem; }
.ub-topbar__context strong { color: var(--ub-ink); }
.ub-profile-button {
  display: flex !important;
  align-items: center;
  gap: 10px;
  padding: 6px 8px 6px 6px !important;
  border: 1px solid var(--ub-line);
  border-radius: 999px;
  background: #fff;
}
.ub-avatar {
  display: inline-grid;
  place-items: center;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  color: #fff;
  background: var(--ub-ink);
  font-size: .8rem;
  font-weight: 800;
}

.navbar-vertical {
  width: var(--ub-sidebar) !important;
  background: var(--ub-ink) !important;
  border: 0 !important;
  box-shadow: none !important;
}
.navbar-vertical .navbar-vertical-content { padding: 28px 16px 20px; }
.navbar-vertical .navbar-vertical-label {
  margin: 28px 12px 8px;
  color: rgba(255,255,255,.47);
  font-size: .68rem;
  font-weight: 800;
  letter-spacing: .1em;
  text-transform: uppercase;
}
.navbar-vertical .navbar-vertical-line { display: none; }
.navbar-vertical .nav-link {
  display: flex;
  align-items: center;
  min-height: 44px;
  margin: 3px 0;
  padding: 10px 12px;
  color: rgba(255,255,255,.72) !important;
  border-radius: 12px;
  transition: background .16s ease, color .16s ease;
}
.navbar-vertical .nav-link:hover { color: #fff !important; background: rgba(255,255,255,.09); }
.navbar-vertical .nav-link.active {
  color: #fff !important;
  background: rgba(255, 98, 90, .2);
  box-shadow: inset 3px 0 var(--ub-coral);
}
.navbar-vertical .nav-link-icon { width: 24px; margin-right: 9px; }
.navbar-vertical .nav-link-icon svg { width: 18px; height: 18px; }

.content.content-margin-left { margin-left: var(--ub-sidebar) !important; }
.content {
  width: auto;
  max-width: 1500px;
  min-height: calc(100vh - 74px);
  margin-inline: auto;
  padding: 38px clamp(22px, 4vw, 64px) 64px;
}
/* Página do anúncio: menos ar no topo/rodapé pra reduzir o scroll até
   o painel de disponibilidade/contato (ver .detail-pane, sticky). */
.content.ub-ad-page { padding-top: 22px; padding-bottom: 40px; }

/* Page hierarchy */
.breadcrumb { --bs-breadcrumb-divider-color: #a095a7; }
.breadcrumb-item, .breadcrumb-item a { color: var(--ub-muted); font-size: .82rem; text-decoration: none; }
.breadcrumb-item.active { color: var(--ub-ink); }
.page-header { margin-bottom: 30px; align-items: center; }
.page-header__title {
  color: var(--ub-ink);
  font-size: clamp(1.7rem, 2.2vw, 2.15rem);
  line-height: 1.12;
  letter-spacing: -.025em;
}
.page-header__subtitle { max-width: 830px; margin-top: 8px; color: var(--ub-muted); font-size: .9rem; opacity: 1; }
.content-section {
  padding: clamp(22px, 3vw, 32px);
  margin-bottom: 22px;
  background: var(--ub-surface);
  border: 1px solid var(--ub-line);
  border-radius: var(--ub-radius);
  box-shadow: var(--ub-shadow-sm);
}
.content-section__title { color: var(--ub-ink); font-size: 1.08rem; letter-spacing: -.02em; }

/* Form grouping and progressive flows */
.form-flow--numbered {
  counter-reset: ub-form-step;
}
.form-question-card {
  position: relative;
  padding: 1.4rem;
  margin: 0 0 1rem;
  background: var(--ub-surface);
  border: 1px solid var(--ub-line);
  border-radius: 18px;
  box-shadow: var(--ub-shadow-sm);
}
.form-question-card__title {
  display: flex;
  align-items: flex-start;
  gap: .8rem;
  margin: 0 0 1.1rem;
  color: var(--ub-ink);
  font-family: var(--ub-font);
  font-size: 1rem;
  font-weight: 690;
  line-height: 1.35;
  letter-spacing: -.025em;
  text-transform: none;
}
.form-flow--numbered .form-question-card { counter-increment: ub-form-step; }
.form-flow--numbered .form-question-card__title::before {
  display: grid;
  width: 31px;
  height: 31px;
  flex: 0 0 31px;
  place-items: center;
  margin-top: -4px;
  border-radius: 10px;
  background: var(--ub-ink);
  color: #fff;
  content: counter(ub-form-step);
  font-family: var(--ub-font);
  font-size: .7rem;
  font-weight: 800;
  letter-spacing: 0;
}
.form-question-card__subtitle {
  margin: -.7rem 0 1.1rem;
  color: var(--ub-muted);
  font-size: .74rem;
  line-height: 1.5;
}
.form-flow--numbered .form-question-card__subtitle { margin-left: 2.7rem; }
.form-question-card--compact { padding: 1rem 1.1rem; border-radius: 14px; }
.form-question-card--compact .form-question-card__title { margin-bottom: .8rem; font-size: .9rem; }
.form-question-card__compact-question {
  display: block;
  margin-bottom: .45rem;
  color: var(--ub-ink);
  font-family: var(--ub-font);
  font-size: .82rem;
  font-weight: 690;
  letter-spacing: -.025em;
}
.form-flow__orientation {
  display: grid;
  grid-template-columns: 42px minmax(0, 1fr);
  gap: 14px;
  align-items: center;
  padding: 16px 18px;
  margin-bottom: 20px;
  color: var(--ub-ink-2);
  background: var(--ub-coral-soft);
  border: 1px solid #ffd3d0;
  border-radius: var(--ub-radius);
}
.form-flow__orientation-icon {
  display: grid;
  width: 42px;
  height: 42px;
  place-items: center;
  color: #fff;
  background: var(--ub-ink);
  border-radius: 12px;
  font-size: 1.05rem;
  font-weight: 900;
}
.form-flow__orientation strong { display: block; color: var(--ub-ink); }
.form-flow__orientation p { margin: 2px 0 0; color: var(--ub-muted); font-size: .82rem; }
.form-field { margin-bottom: 22px; }
.form-field:last-child { margin-bottom: 0; }
.form-flow .form-field > h4 {
  margin-bottom: .45rem !important;
  color: var(--ub-ink);
  font-size: .82rem;
  font-weight: 800;
  letter-spacing: .01em;
}
.form-flow .form-field > :is(.form-control, .form-select) { margin-bottom: 0 !important; }
.form-error-summary {
  background: var(--ub-danger-soft);
  border: 1px solid #f0b8bc;
  border-left: 4px solid var(--ub-danger);
  border-radius: 12px;
}
.form-error-summary__title, .form-error-summary__list a, .form-field__error { color: var(--ub-danger); }
.form-supporting-pane-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(280px, 360px);
  gap: 24px;
  align-items: start;
}
.form-supporting-pane, .detail-pane {
  position: sticky;
  top: 96px;
  padding: 24px;
  background: var(--ub-surface);
  border: 1px solid var(--ub-line);
  border-radius: var(--ub-radius);
  box-shadow: var(--ub-shadow-sm);
}
.form-supporting-pane::before, .detail-pane::before {
  display: block;
  width: 34px;
  height: 4px;
  margin-bottom: 18px;
  border-radius: 99px;
  background: var(--ub-coral);
  content: '';
}
.form-supporting-pane__title, .detail-pane__title { color: var(--ub-ink); font-size: 1rem; font-weight: 800; }
.form-supporting-pane__eyebrow {
  display: block;
  margin-bottom: 7px;
  color: var(--ub-coral-dark);
  font-size: .67rem;
  font-weight: 900;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.form-supporting-pane__lead { margin-bottom: 18px; color: var(--ub-muted); font-size: .82rem; }
.form-supporting-pane__summary {
  display: grid;
  gap: 10px;
  padding: 15px;
  background: var(--ub-bg);
  border: 1px solid var(--ub-line);
  border-radius: 12px;
}
.form-supporting-pane__row {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--ub-line);
  color: var(--ub-muted);
  font-size: .76rem;
}
.form-supporting-pane__row:last-child { padding-bottom: 0; border-bottom: 0; }
.form-supporting-pane__row strong { max-width: 62%; color: var(--ub-ink); text-align: right; overflow-wrap: anywhere; }
.form-supporting-pane__list {
  display: grid;
  gap: 10px;
  padding: 0;
  margin: 18px 0 0;
  color: var(--ub-muted);
  font-size: .78rem;
  list-style: none;
}
.form-supporting-pane__list li { display: flex; gap: 9px; }
.form-supporting-pane__list li::before { color: var(--ub-success); content: '✓'; font-weight: 900; }

/* Prévia de imagens do anúncio — Dropzone com apresentação integrada ao produto. */
.ub-gallery-dropzone.dropzone {
  display: grid;
  min-height: 132px;
  place-items: center;
  padding: 20px;
  border: 1.5px dashed color-mix(in srgb, var(--ub-ink) 28%, var(--ub-line));
  border-radius: 14px;
  background: var(--ub-bg);
  color: var(--ub-muted);
  cursor: pointer;
  transition: border-color .16s ease, background-color .16s ease, box-shadow .16s ease;
}
.ub-gallery-dropzone.dropzone:hover,
.ub-gallery-dropzone.dropzone:focus-visible,
.ub-gallery-dropzone.dropzone.dz-drag-hover {
  border-color: var(--ub-coral);
  background: var(--ub-coral-soft);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--ub-coral) 18%, transparent);
}
.ub-gallery-dropzone.dropzone .dz-message {
  display: grid;
  place-items: center;
  gap: 4px;
  margin: 0;
  text-align: center;
}
.ub-gallery-dropzone__icon {
  width: 24px;
  height: 24px;
  margin-bottom: 5px;
  color: var(--ub-coral-dark);
}
.ub-gallery-dropzone .dz-message strong {
  color: var(--ub-ink);
  font-size: .78rem;
  font-weight: 750;
}
.ub-gallery-dropzone .dz-message > span:last-child { font-size: .68rem; }
/* Carrossel compacto (Dropzone + Swiper): uma única faixa horizontal em vez de
   cards empilhados — qualquer quantidade de fotos cabe sem crescer
   verticalmente (sem scroll de página). A ordem visual da esquerda p/ direita
   já comunica a posição, então não há selo numérico, só a "Capa" (1ª foto). */
.ub-gallery-swiper {
  --swiper-navigation-color: var(--ub-ink);
  --swiper-navigation-size: 12px;
  position: relative;
  margin-top: 14px;
  padding: 2px 30px;
}
.ub-gallery-swiper .swiper-button-prev,
.ub-gallery-swiper .swiper-button-next {
  top: 50%;
  width: 26px;
  height: 26px;
  margin-top: -13px;
  border: 1px solid var(--ub-line);
  border-radius: 999px;
  background: var(--ub-surface);
  box-shadow: var(--ub-shadow-sm);
  transition: border-color .16s ease, color .16s ease;
}
.ub-gallery-swiper .swiper-button-prev:hover,
.ub-gallery-swiper .swiper-button-next:hover { border-color: var(--ub-coral); color: var(--ub-coral-dark); }
.ub-gallery-preview {
  position: relative;
  display: flex;
  width: 100px;
  flex-direction: column;
  overflow: hidden;
  border: 1px solid var(--ub-line);
  border-radius: 13px;
  background: var(--ub-surface);
  box-shadow: var(--ub-shadow-sm);
  transition: border-color .16s ease, box-shadow .16s ease;
}
.ub-gallery-preview--cover { border-color: var(--ub-coral); box-shadow: 0 0 0 2px color-mix(in srgb, var(--ub-coral) 22%, transparent); }
.ub-gallery-preview__image {
  position: relative;
  width: 100px;
  height: 100px;
  overflow: hidden;
  background: var(--ub-surface-2);
}
.ub-gallery-preview__image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.ub-gallery-preview__cover {
  position: absolute;
  top: 6px;
  left: 6px;
  z-index: 2;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 3px 7px;
  border-radius: 999px;
  background: var(--ub-coral);
  color: #fff;
  font-size: .58rem;
  font-weight: 750;
  line-height: 1;
  box-shadow: 0 3px 10px rgba(20, 10, 28, .18);
}
.ub-gallery-preview__cover[hidden] { display: none; }
.ub-gallery-preview__remove,
.ub-gallery-preview__view {
  position: absolute;
  z-index: 2;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  padding: 0;
  border: 0;
  border-radius: 999px;
  background: rgba(20, 10, 28, .72);
  color: #fff;
  box-shadow: 0 3px 10px rgba(20, 10, 28, .18);
  transition: background .16s ease, transform .16s ease;
}
.ub-gallery-preview__remove { top: 6px; right: 6px; }
.ub-gallery-preview__view { right: 6px; bottom: 6px; }
.ub-gallery-preview__remove:hover { background: var(--ub-danger); transform: scale(1.08); }
.ub-gallery-preview__view:hover { background: var(--ub-coral); transform: scale(1.08); }
.ub-gallery-preview__remove svg { width: 12px; height: 12px; }
.ub-gallery-preview__view svg { width: 13px; height: 13px; }

/* Prévia do vídeo do anúncio: mesmo cartão/ícones da galeria de fotos
   (.ub-gallery-preview__remove/__view), só com um vídeo em vez de várias
   miniaturas — não precisa de carrossel, é 1 vídeo por anúncio. */
.ub-video-preview {
  position: relative;
  width: 100%;
  max-width: 320px;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  border: 1px solid var(--ub-line);
  border-radius: 14px;
  background: #000;
}
.ub-video-preview video { width: 100%; height: 100%; object-fit: cover; pointer-events: none; }
.ub-video-preview__play {
  position: absolute;
  left: 50%;
  top: 50%;
  z-index: 2;
  display: grid;
  width: 44px;
  height: 44px;
  transform: translate(-50%, -50%);
  place-items: center;
  border-radius: 50%;
  background: rgba(20, 10, 28, .68);
  color: #fff;
  pointer-events: none;
}

/* Visualizador de prévia (composer de anúncio): mesma biblioteca (GLightbox) do
   visualizador principal do anúncio, porém deliberadamente menor — a foto
   ainda está sendo composta, não é a experiência final de navegação. GLightbox
   não expõe width/height para slides de imagem (só para vídeo/iframe), então o
   tamanho é controlado via a skin "ub-compact" (opção `skin`) + CSS abaixo. */
.glightbox-ub-compact .ginner-container { max-width: min(560px, 90vw); margin: auto; }
.glightbox-ub-compact .gslide-image img {
  /* !important necessário: o GLightbox recalcula e grava max-height/max-width
     como estilo inline no <img> a cada slide (ex.: "calc(100vh - 65px)"),
     que tem prioridade sobre qualquer seletor de folha de estilos externa. */
  max-height: min(60vh, 480px) !important;
  max-width: min(560px, 90vw) !important;
}
.glightbox-ub-compact .gclose { top: 8px; right: 8px; }
.ub-gallery-preview__move-bar {
  display: flex;
  gap: 4px;
  padding: 5px;
  margin-top: auto;
}
.ub-gallery-preview__move {
  flex: 1 1 auto;
  display: inline-flex;
  min-height: 24px;
  align-items: center;
  justify-content: center;
  padding: 0;
  border: 1px solid var(--ub-line);
  border-radius: 7px;
  background: var(--ub-surface);
  color: var(--ub-ink);
}
.ub-gallery-preview__move:hover:not(:disabled) { border-color: var(--ub-coral); color: var(--ub-coral-dark); }
.ub-gallery-preview__move:disabled { opacity: .3; cursor: not-allowed; }
.ub-gallery-count { margin: 10px 0 0; }

/* Agenda interna: card que envolve o calendário de agendamentos.
   O visual do FullCalendar em si (toolbar, células, eventos, legenda) é
   um design system único — ver seção "Calendário (FullCalendar)" abaixo. */
.ub-scheduling-calendar-card { margin-bottom: 24px; }

/* Cor por status dos eventos da agenda. FullCalendar deriva a cor de
   qualquer estilo de evento (dot, block, lista) das próprias custom
   properties --fc-event-*; sobrescrever direto em background/border-color
   não bastava porque o "dot" do mês usa --fc-event-border-color no
   elemento filho .fc-daygrid-event-dot, não no .fc-event em si. */
.fc-status-PRE_RESERVA,
.fc-status-AGENDADO_PAGAMENTO_PENDENTE { --fc-event-bg-color: var(--calendar-warning-soft); --fc-event-border-color: var(--calendar-warning); --fc-event-text-color: var(--calendar-warning); }
.fc-status-CONFIRMADO_PAGO { --fc-event-bg-color: var(--calendar-success-soft); --fc-event-border-color: var(--calendar-success); --fc-event-text-color: var(--calendar-success); }
.fc-status-CONCLUIDO { --fc-event-bg-color: var(--calendar-surface-2); --fc-event-border-color: var(--calendar-muted); --fc-event-text-color: var(--calendar-muted); }
.fc-status-CANCELADO {
  --fc-event-bg-color: var(--calendar-danger-soft);
  --fc-event-border-color: var(--calendar-danger);
  --fc-event-text-color: var(--calendar-danger);
  text-decoration: line-through;
}

/* ==========================================================
   Calendário (FullCalendar) — design system único
   Todo calendário do sistema (agenda interna, disponibilidade
   pública do anúncio) usa o mesmo wrapper `.ub-calendar` e os
   tokens --calendar-* declarados em :root. O objetivo é que
   toolbar + grade + legenda pareçam um único componente, não
   um widget de terceiro solto na página.
   ========================================================== */
.ub-calendar {
  padding: 20px 20px 18px;
  background: var(--calendar-background);
  border: 1px solid var(--calendar-border);
  border-radius: var(--calendar-radius);
  box-shadow: var(--ub-shadow-sm);
}
html.ub-modern .ub-calendar .fc { color: var(--calendar-primary) !important; }
/* Variante compacta (disponibilidade pública): controles um pouco menores,
   card mais enxuto — cabe no painel lateral sem esticar a página. */
.ub-calendar--availability { padding: 16px 16px 14px; --calendar-control-height: 34px; }
.ub-calendar--availability .fc-toolbar-title { font-size: 1rem !important; }

/* Toolbar: vira o "header" do componente — linha única no desktop,
   com os botões de navegação à esquerda, título ao centro e o
   seletor de visualização à direita (quando existir). */
.ub-calendar .fc-header-toolbar {
  display: flex !important;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin: 0 0 16px !important;
  padding-bottom: 16px;
  border-bottom: 1px solid var(--calendar-border);
}
.ub-calendar .fc-toolbar-chunk { display: flex; align-items: center; gap: 8px; }
.ub-calendar .fc-toolbar-title {
  color: var(--calendar-primary) !important;
  font-size: 1.1rem !important;
  font-weight: 800;
  letter-spacing: -.02em;
  text-transform: capitalize;
  margin: 0 !important;
}

/* Botões — base compartilhada por prev/next/hoje/troca de visão */
.ub-calendar .fc-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: var(--calendar-control-height);
  min-width: var(--calendar-control-height);
  margin: 0;
  padding: 0 14px;
  font-family: var(--ub-font);
  font-size: .8rem;
  font-weight: 700;
  line-height: 1;
  text-transform: none;
  color: var(--calendar-primary) !important;
  background: var(--calendar-background) !important;
  border: 1px solid var(--calendar-border) !important;
  border-radius: var(--calendar-radius-sm);
  box-shadow: none !important;
  transition: background-color .16s ease, border-color .16s ease, color .16s ease;
}
.ub-calendar .fc-button:hover {
  background: var(--calendar-cell-hover) !important;
  border-color: #cec6d5 !important;
}
.ub-calendar .fc-button:active { transform: none; }
.ub-calendar .fc-button:focus-visible {
  outline: 3px solid rgba(255, 98, 90, .35);
  outline-offset: 2px;
  box-shadow: none !important;
}
.ub-calendar .fc-button:disabled {
  opacity: .4;
  cursor: not-allowed;
  box-shadow: none !important;
}
.ub-calendar .fc-prev-button,
.ub-calendar .fc-next-button { width: var(--calendar-control-height); padding: 0; }

/* prev/next viram um único button-group (FullCalendar já os agrupa
   quando declarados com vírgula no headerToolbar: 'prev,next') */
.ub-calendar .fc-button-group { display: inline-flex; }
.ub-calendar .fc-button-group .fc-button { border-radius: 0; margin-left: -1px; }
.ub-calendar .fc-button-group .fc-button:first-child { margin-left: 0; border-top-left-radius: var(--calendar-radius-sm); border-bottom-left-radius: var(--calendar-radius-sm); }
.ub-calendar .fc-button-group .fc-button:last-child { border-top-right-radius: var(--calendar-radius-sm); border-bottom-right-radius: var(--calendar-radius-sm); }

/* Botão "Hoje" — secundário/discreto, não compete com prev/next.
   FullCalendar já o desabilita sozinho quando a view já está em hoje. */
.ub-calendar .fc-today-button {
  background: transparent !important;
  border-color: transparent !important;
  color: var(--calendar-muted) !important;
}
.ub-calendar .fc-today-button:hover { background: var(--calendar-cell-hover) !important; color: var(--calendar-primary) !important; }

/* Seletor de visualização (Mês/Lista) — segmented control, sempre o
   último grupo de botões da toolbar (right). A opção ativa recebe
   .fc-button-active nativamente do FullCalendar. */
.ub-calendar .fc-toolbar-chunk:last-child .fc-button-group {
  padding: 3px;
  gap: 2px;
  background: var(--calendar-surface-2);
  border: 1px solid var(--calendar-border);
  border-radius: calc(var(--calendar-radius-sm) + 3px);
}
.ub-calendar .fc-toolbar-chunk:last-child .fc-button-group .fc-button {
  margin: 0;
  border: 0 !important;
  background: transparent !important;
  color: var(--calendar-muted) !important;
  border-radius: var(--calendar-radius-sm);
}
.ub-calendar .fc-toolbar-chunk:last-child .fc-button-group .fc-button.fc-button-active {
  background: var(--calendar-background) !important;
  color: var(--calendar-primary) !important;
  box-shadow: var(--ub-shadow-sm) !important;
}

/* Grade e células */
.ub-calendar .fc-scrollgrid,
.ub-calendar .fc td,
.ub-calendar .fc th { border-color: var(--calendar-border) !important; }
.ub-calendar .fc-col-header-cell {
  padding: 8px 4px;
  background: transparent !important;
  color: var(--calendar-muted) !important;
  font-size: .7rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .04em;
}
.ub-calendar .fc-daygrid-day {
  cursor: pointer;
  background-color: var(--calendar-background) !important;
  transition: background-color .12s ease;
}
.ub-calendar .fc-daygrid-day:hover { background-color: var(--calendar-cell-hover) !important; }
.ub-calendar .fc-daygrid-day-top { padding: 4px 6px 0 0; }
.ub-calendar .fc-daygrid-day-number {
  padding: 3px 7px;
  color: var(--calendar-primary) !important;
  font-size: .8rem;
  font-weight: 700;
  border-radius: 999px;
}
.ub-calendar .fc-day-other { background-color: var(--calendar-background) !important; }
.ub-calendar .fc-day-other .fc-daygrid-day-number { color: var(--calendar-muted) !important; opacity: .5; }
/* Dias já passados (calendário público de disponibilidade): esmaecidos,
   mas com o número visível — evitamos usar validRange pra isso porque o
   FullCalendar apaga o número (fica só um &nbsp;) em dias fora do range,
   deixando o mês inteiro antes de hoje em branco quando já vai na metade. */
.ub-calendar .fc-day-past:not(.fc-day-other) .fc-daygrid-day-number { color: var(--calendar-muted) !important; opacity: .45; }
/* Dia atual: fundo suave na célula inteira (não "mancha" forte) +
   selo sólido só no número, pra ficar óbvio sem gritar. */
.ub-calendar .fc-day-today { background-color: var(--calendar-accent-soft) !important; }
.ub-calendar .fc-day-today .fc-daygrid-day-number {
  color: #fff !important;
  background: var(--calendar-accent);
}
/* Estados de disponibilidade do calendário público (ver dayCellDidMount
   em view-ad.html) — fundo suave o bastante pra continuar elegante. */
.ub-calendar .fc-daygrid-day.ub-day-available { background-color: var(--calendar-success-soft) !important; }
.ub-calendar .fc-daygrid-day.ub-day-partial { background-color: var(--calendar-warning-soft) !important; }
.ub-calendar .fc-daygrid-day.ub-day-unavailable { background-color: var(--calendar-danger-soft) !important; }
.ub-calendar .fc-daygrid-day.ub-day-available:hover,
.ub-calendar .fc-daygrid-day.ub-day-partial:hover,
.ub-calendar .fc-daygrid-day.ub-day-unavailable:hover { filter: brightness(.97); }

/* Eventos (agenda administrativa) — chip compacto, sem blocos gigantes.
   O conteúdo (ponto + horário + título) vem de UbCalendar.eventContent,
   em unibusca-calendar.js. */
.ub-calendar .fc-daygrid-event {
  margin: 1px 4px;
  padding: 0;
  background: transparent;
  border: 0;
}
.ub-calendar .fc-daygrid-event:hover { filter: brightness(.97); }
.ub-calendar .ub-event {
  display: flex;
  align-items: center;
  gap: 5px;
  overflow: hidden;
  padding: 2px 7px;
  border-radius: 6px;
  background: var(--fc-event-bg-color, var(--calendar-surface-2));
  color: var(--fc-event-text-color, var(--calendar-primary));
  font-size: .72rem;
  font-weight: 700;
}
.ub-calendar .ub-event__dot {
  flex: none;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--fc-event-border-color, currentColor);
}
.ub-calendar .ub-event__time { flex: none; font-weight: 800; }
.ub-calendar .ub-event__title { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ub-calendar .fc-daygrid-more-link {
  color: var(--calendar-accent) !important;
  font-size: .7rem;
  font-weight: 800;
}
.ub-calendar .fc-popover {
  border-color: var(--calendar-border) !important;
  border-radius: var(--calendar-radius-sm);
  box-shadow: var(--ub-shadow);
  overflow: hidden;
}
.ub-calendar .fc-popover-header {
  background: var(--calendar-surface-2) !important;
  color: var(--calendar-primary) !important;
  padding: 8px 10px;
}

/* Legenda — parte visual do mesmo componente, não um bloco à parte */
.ub-calendar__legend {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  margin-top: 16px;
  padding-top: 14px;
  border-top: 1px solid var(--calendar-border);
  color: var(--calendar-muted);
  font-size: .78rem;
}
.ub-calendar__legend-item { display: inline-flex; align-items: center; gap: 7px; font-weight: 600; }
.ub-calendar__legend-item i {
  display: inline-block;
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: var(--calendar-surface-2);
  border: 1px solid var(--calendar-border);
}
.ub-calendar__legend-item i.is-available { background: var(--calendar-success-soft); border-color: var(--calendar-success); }
.ub-calendar__legend-item i.is-partial { background: var(--calendar-warning-soft); border-color: var(--calendar-warning); }
.ub-calendar__legend-item i.is-unavailable { background: var(--calendar-danger-soft); border-color: var(--calendar-danger); }
.ub-calendar__legend-item i.is-reserva { background: var(--calendar-warning-soft); border-color: var(--calendar-warning); }
.ub-calendar__legend-item i.is-confirmado { background: var(--calendar-success-soft); border-color: var(--calendar-success); }
.ub-calendar__legend-item i.is-concluido { background: var(--calendar-surface-2); border-color: var(--calendar-muted); }
.ub-calendar__legend-item i.is-cancelado { background: var(--calendar-danger-soft); border-color: var(--calendar-danger); }

/* Calendário de disponibilidade (view-ad.html): nunca tem eventos, só o
   estado do dia (cor de fundo). A faixa reservada pra eventos por baixo
   do número — que o FullCalendar sempre inclui, mesmo vazia — só inflava
   a altura da célula à toa; aqui ela some e o número fica centralizado,
   dando um grid bem mais enxuto (datepicker, não agenda). */
.ub-calendar--availability .fc-daygrid-day-frame { min-height: 0; }
.ub-calendar--availability .fc-daygrid-day-events,
.ub-calendar--availability .fc-daygrid-day-bg { display: none; }
.ub-calendar--availability .fc-daygrid-day-top {
  height: 38px;
  justify-content: center;
  align-items: center;
  padding: 0;
}
.ub-calendar--availability .fc-daygrid-day-number {
  float: none;
  padding: 0;
  width: 26px;
  height: 26px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

/* Card de período: aparece dentro do próprio calendário ao clicar num
   dia. Chips pequenos (nome do período + cor do estado) em vez das
   caixas grandes de antes — a cor já basta, a legenda abaixo explica. */
.ub-period-detail {
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px solid var(--calendar-border);
}
.ub-period-detail__date {
  display: block;
  margin-bottom: 8px;
  color: var(--calendar-primary);
  font-size: .78rem;
  font-weight: 800;
}
.ub-period-detail__chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.ub-period-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 5px 12px;
  border-radius: 999px;
  background: var(--calendar-surface-2);
  color: var(--calendar-primary);
  font-size: .74rem;
  font-weight: 700;
  white-space: nowrap;
}
.ub-period-chip::before { width: 6px; height: 6px; border-radius: 50%; background: currentColor; content: ''; flex: none; }
.ub-period-chip.is-available { background: var(--calendar-success-soft); color: var(--calendar-success); }
.ub-period-chip.is-unavailable { background: var(--calendar-danger-soft); color: var(--calendar-danger); text-decoration: line-through; }
.ub-period-chip.is-empty { background: var(--calendar-surface-2); color: var(--calendar-muted); font-weight: 600; }
.ub-period-chip.is-empty::before { display: none; }

/* .detail-pane aparece só em view-ad.html — aqui pode ficar mais enxuto
   que o padrão compartilhado com .form-supporting-pane (24px). */
.detail-pane { padding: 18px 20px; }
.detail-pane__title { margin-bottom: 2px; }

/* Mobile: a toolbar vira 2-3 linhas em vez de espremer tudo numa só.
   Título primeiro (mais legível), depois navegação, depois a troca de
   visão — nada de overflow horizontal ou botões cortados. */
@media (max-width: 640px) {
  .ub-calendar { padding: 16px 14px 14px; }
  .ub-calendar .fc-header-toolbar { flex-direction: column; align-items: stretch; }
  .ub-calendar .fc-toolbar-chunk { justify-content: center; flex-wrap: wrap; }
  .ub-calendar .fc-toolbar-chunk:nth-child(1) { order: 2; }
  .ub-calendar .fc-toolbar-chunk:nth-child(2) { order: 1; }
  .ub-calendar .fc-toolbar-chunk:nth-child(3) { order: 3; }
  .ub-calendar .fc-toolbar-title { width: 100%; text-align: center; font-size: 1.05rem !important; }
  .ub-calendar .fc-button,
  .ub-calendar .fc-button-group { flex: 1 1 auto; }
  .ub-calendar .fc-toolbar-chunk:last-child .fc-button-group { width: 100%; }
  .ub-calendar .fc-col-header-cell { font-size: .62rem; padding: 6px 2px; }
  .ub-calendar .fc-daygrid-day-number { font-size: .74rem; padding: 2px 5px; }
  .ub-calendar .ub-event { font-size: .66rem; padding: 1px 5px; }
  .ub-calendar__legend { gap: 10px 14px; justify-content: center; }
}
@media (max-width: 380px) {
  .ub-calendar .fc-button { padding: 0 10px; font-size: .74rem; }
}

.form-profile-pane {
  align-self: start;
  padding: 24px;
  background: var(--ub-surface);
  border: 1px solid var(--ub-line);
  border-radius: var(--ub-radius);
  box-shadow: var(--ub-shadow-sm);
  text-align: center;
}
.form-profile-pane::before {
  display: block;
  width: 34px;
  height: 4px;
  margin: 0 auto 18px;
  border-radius: 99px;
  background: var(--ub-coral);
  content: '';
}
.form-profile-pane .foto-camera { width: 132px !important; aspect-ratio: 1; object-fit: cover; border: 4px solid #fff !important; box-shadow: 0 0 0 1px var(--ub-line), var(--ub-shadow-sm); }
.form-profile-pane .btn { width: 100%; padding-inline: .75rem !important; }
.form-profile-pane > div { width: 100% !important; margin-bottom: 0 !important; }
.form-final-actions {
  position: sticky;
  bottom: 16px;
  z-index: 10;
  padding: 12px;
  background: rgba(255,255,255,.94);
  border: 1px solid var(--ub-line);
  border-radius: 14px;
  box-shadow: var(--ub-shadow);
  backdrop-filter: blur(18px);
}
.disclosure {
  padding: 18px;
  margin-top: 12px;
  background: var(--ub-coral-soft);
  border-radius: 12px;
}

/* Data, lists, cards */
.page-toolbar {
  padding: 14px;
  margin-bottom: 18px;
  background: var(--ub-surface);
  border: 1px solid var(--ub-line);
  border-radius: 14px;
}
.page-toolbar__search { max-width: 32rem; }
.data-card {
  background: var(--ub-surface);
  border-color: var(--ub-line);
  border-radius: var(--ub-radius);
  box-shadow: var(--ub-shadow-sm);
}
.data-card thead th {
  padding: 14px 18px;
  color: var(--ub-muted);
  background: #faf9fb;
  border-bottom: 1px solid var(--ub-line);
  font-size: .72rem;
  font-weight: 800;
  letter-spacing: .06em;
  text-transform: uppercase;
}
.data-card tbody td { padding: 16px 18px; color: var(--ub-ink); border-color: #efecf1; }
.data-card tbody tr { transition: background .14s ease; }
.data-card tbody tr:hover { background: #fcfafc; }
.data-card tbody a:not(.btn) { font-weight: 800; text-decoration: none; }
.badge {
  padding: .42rem .65rem;
  border-radius: 999px;
  font-size: .72rem;
  font-weight: 800;
}
.badge.bg-success { color: var(--ub-success) !important; background: var(--ub-success-soft) !important; }
.badge.bg-warning { color: var(--ub-warning) !important; background: var(--ub-warning-soft) !important; }
.badge.bg-danger { color: var(--ub-danger) !important; background: var(--ub-danger-soft) !important; }
.badge.bg-secondary { color: var(--ub-muted) !important; background: var(--ub-surface-2) !important; }
.empty-state {
  padding: 70px 24px;
  background: var(--ub-surface);
  border: 1px dashed #cfc6d5;
  border-radius: var(--ub-radius);
}
.empty-state::before {
  display: grid;
  place-items: center;
  width: 52px;
  height: 52px;
  margin: 0 auto 18px;
  color: var(--ub-coral);
  background: var(--ub-coral-soft);
  border-radius: 50%;
  content: '+';
  font-size: 1.8rem;
}
.empty-state__message { color: var(--ub-muted); }

/* Dashboard */
.stat-grid { gap: 16px; }
.stat-tile {
  position: relative;
  min-height: 132px;
  padding: 22px;
  background: var(--ub-surface);
  border-color: var(--ub-line);
  border-radius: var(--ub-radius);
  box-shadow: var(--ub-shadow-sm);
  overflow: hidden;
}
.stat-tile::after {
  position: absolute;
  right: -20px;
  bottom: -28px;
  width: 90px;
  height: 90px;
  background: var(--ub-coral-soft);
  border-radius: 50%;
  content: '';
}
.stat-tile__label { color: var(--ub-muted); font-size: .78rem; opacity: 1; }
.stat-tile__value { color: var(--ub-ink); font-size: 2rem; letter-spacing: -.04em; }

/* Public navigation */
.ub-public-nav {
  position: sticky;
  top: 0;
  z-index: 1030;
  min-height: 76px;
  padding: 0 clamp(20px, 5vw, 72px);
  background: rgba(255,255,255,.9);
  border-bottom: 1px solid rgba(229,224,233,.8);
  backdrop-filter: blur(18px);
}
.ub-public-nav__inner { width: 100%; max-width: 1360px; margin: auto; }
.ub-public-nav .navbar-brand img { height: 34px; width: auto; }
.ub-public-nav__links { display: flex; align-items: center; gap: 6px; }
.ub-public-nav__links > a:not(.btn) { padding: 10px 12px; color: var(--ub-muted); font-weight: 700; text-decoration: none; }
.ub-public-nav__links > a:not(.btn):hover { color: var(--ub-ink); }

/* Auth */
.ub-auth { min-height: 100vh; background: var(--ub-surface); }
.ub-auth__visual {
  position: sticky;
  top: 0;
  min-height: 100vh;
  padding: 48px;
  background: var(--ub-ink);
  overflow: hidden;
}
.ub-auth__visual::before {
  position: absolute;
  inset: 0;
  background: linear-gradient(140deg, rgba(47,26,69,.2), rgba(47,26,69,.88)), url('/img/bg/login_bg.png') center/cover;
  content: '';
}
.ub-auth__visual-copy { position: absolute; z-index: 1; left: 48px; right: 48px; bottom: 54px; color: #fff; }
.ub-auth__eyebrow { color: #ffb1ac; font-weight: 800; letter-spacing: .09em; text-transform: uppercase; }
.ub-auth__visual-copy h2 { max-width: 530px; margin-top: 12px; color: #fff; font-size: clamp(1.7rem, 2.2vw, 2.15rem); line-height: 1.16; letter-spacing: -.025em; }
.ub-auth__panel { width: 100%; max-width: 520px; padding: 52px 40px; margin: auto; }
.ub-auth__panel .page-header__title { font-size: 2.15rem; }
.ub-auth__panel form > .btn-primary:last-child { margin-top: 10px; }

/* Advertisement detail */
.ub-ad-hero { margin-bottom: 18px; }
.ub-ad-kicker { display: flex; align-items: center; gap: 8px; color: var(--ub-muted); font-weight: 700; }
.ub-ad-kicker svg { color: var(--ub-coral); }
/* Galeria: grid próprio, então zeramos o padding genérico que <section>
   herda do tema base (theme.min.css define `section{padding:2.5rem 0}`,
   o que inflava a galeria em ~110px sem nenhum efeito visual). */
.ub-ad-gallery {
  position: relative;
  display: grid;
  grid-template-columns: 1.7fr 1fr;
  grid-template-rows: repeat(2, minmax(130px, 210px));
  gap: 8px;
  margin-bottom: 20px;
  padding: 0;
  border-radius: var(--ub-radius-lg);
  overflow: hidden;
}
.ub-ad-gallery__item {
  position: relative;
  display: block;
  min-height: 0;
  overflow: hidden;
  cursor: zoom-in;
}
.ub-ad-gallery__item:first-child { grid-row: 1 / 3; }
.ub-ad-gallery__item--extra { display: none; }
.ub-ad-gallery img { width: 100%; height: 100%; object-fit: cover; transition: transform .35s ease; }
.ub-ad-gallery img:hover { transform: scale(1.025); }
.ub-ad-gallery__badge {
  position: absolute;
  right: 12px;
  bottom: 12px;
  z-index: 2;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 14px;
  border-radius: 999px;
  background: rgba(20, 10, 28, .72);
  color: #fff;
  font-size: .74rem;
  font-weight: 700;
  pointer-events: none;
}
.ub-ad-gallery__badge svg { width: 15px; height: 15px; }
.ub-ad-gallery__badge--cover { display: none; }
/* Vídeo: selo sobre a própria galeria (canto inferior esquerdo), não mais
   um bloco de seção inteiro — economiza ~260px de altura só de "ver vídeo". */
.ub-ad-gallery__video {
  position: absolute;
  left: 16px;
  bottom: 16px;
  z-index: 3;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 9px 16px 9px 10px;
  border-radius: 999px;
  background: rgba(20, 10, 28, .78);
  color: #fff;
  font-size: .8rem;
  font-weight: 700;
  text-decoration: none;
  cursor: zoom-in;
  transition: background-color .16s ease, transform .16s ease;
}
.ub-ad-gallery__video:hover { background: var(--ub-coral); color: #fff; transform: translateY(-1px); }
.ub-ad-gallery__video-icon {
  display: inline-grid;
  place-items: center;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: rgba(255, 255, 255, .18);
}
.detail-layout { grid-template-columns: minmax(0, 1fr) minmax(320px, 400px); gap: 28px; }
.detail-layout > div > .content-section { box-shadow: none; }
.ub-feature-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; padding: 0; list-style: none; }
.ub-feature-list li { display: flex; align-items: center; gap: 10px; padding: 12px; background: var(--ub-bg); border-radius: 11px; }
.ub-feature-list li span:first-child { color: var(--ub-success); flex-shrink: 0; width: 18px; height: 18px; }
.ub-contact-card { padding-top: 16px; margin-top: 16px; border-top: 1px solid var(--ub-line); }
.ub-price { color: var(--ub-ink); font-size: 1.4rem; font-weight: 900; letter-spacing: -.03em; }
/* Landing */
.ub-landing { background: #fff; }
.ub-hero {
  position: relative;
  min-height: min(760px, calc(100vh - 76px));
  display: flex;
  align-items: center;
  padding: 90px clamp(20px, 6vw, 88px);
  background: linear-gradient(90deg, rgba(47,26,69,.96) 0%, rgba(47,26,69,.84) 38%, rgba(47,26,69,.1) 75%), var(--ub-hero-image) center/cover;
}
.ub-hero__inner { width: 100%; max-width: 1360px; margin: auto; }
.ub-hero__copy { max-width: 660px; color: #fff; }
.ub-eyebrow { display: inline-flex; align-items: center; gap: 8px; margin-bottom: 18px; color: #ffc4c1; font-size: .78rem; font-weight: 900; letter-spacing: .1em; text-transform: uppercase; }
.ub-hero h1 { margin-bottom: 22px; color: #fff; font-size: clamp(1.9rem, 5vw, 3.45rem); line-height: 1.08; letter-spacing: -.025em; }
.ub-hero p { max-width: 600px; margin-bottom: 30px; color: rgba(255,255,255,.82); font-size: 1.02rem; }
.ub-hero__actions { display: flex; flex-wrap: wrap; gap: 12px; }
.ub-hero .btn-phoenix-secondary { color: #fff; background: rgba(255,255,255,.1); border-color: rgba(255,255,255,.25); }
.ub-proof { display: flex; flex-wrap: wrap; gap: 22px; margin-top: 36px; color: rgba(255,255,255,.72); font-size: .84rem; }
.ub-proof span { display: flex; align-items: center; gap: 7px; }
.ub-proof span::before { color: #7ee2ad; content: '✓'; font-weight: 900; }
.ub-section { padding: clamp(76px, 9vw, 128px) clamp(20px, 6vw, 88px); }
.ub-section--tint { background: var(--ub-bg); }
.ub-section--dark { color: #fff; background: var(--ub-ink); }
.ub-section__inner { max-width: 1240px; margin: auto; }
.ub-section__heading { max-width: 700px; margin-bottom: 42px; }
.ub-section__heading h2 { color: inherit; font-size: 1.6rem; line-height: 1.16; letter-spacing: -.025em; }
.ub-section__heading p { color: var(--ub-muted); font-size: .9rem; }
.ub-section--dark .ub-section__heading p { color: rgba(255,255,255,.66); }
.ub-card-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.ub-feature-card { padding: 28px; background: #fff; border: 1px solid var(--ub-line); border-radius: var(--ub-radius); }
.ub-feature-card__number { display: grid; place-items: center; width: 42px; height: 42px; margin-bottom: 34px; color: var(--ub-coral); background: var(--ub-coral-soft); border-radius: 12px; font-weight: 900; }
.ub-feature-card h3 { color: var(--ub-ink); font-size: 1.15rem; }
.ub-feature-card p { margin: 0; color: var(--ub-muted); }
.ub-split { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(36px, 8vw, 100px); align-items: center; }
.ub-split__visual { position: relative; min-height: 500px; border-radius: var(--ub-radius-lg); background: url('/img/gallery/20.jpg') center/cover; overflow: hidden; }
.ub-split__badge { position: absolute; right: 24px; bottom: 24px; max-width: 260px; padding: 20px; background: rgba(255,255,255,.94); border-radius: 16px; box-shadow: var(--ub-shadow); }
.ub-split__badge strong { display: block; margin-bottom: 4px; }
.ub-check-list { display: grid; gap: 16px; padding: 0; margin: 28px 0 34px; list-style: none; }
.ub-check-list li { display: flex; gap: 12px; color: var(--ub-muted); }
.ub-check-list li::before { display: grid; flex: 0 0 24px; place-items: center; width: 24px; height: 24px; color: var(--ub-success); background: var(--ub-success-soft); border-radius: 50%; content: '✓'; font-weight: 900; }
.ub-cta { display: flex; align-items: center; justify-content: space-between; gap: 30px; padding: clamp(32px, 6vw, 64px); background: var(--ub-coral); border-radius: var(--ub-radius-lg); }
.ub-cta h2 { max-width: 650px; margin: 0; color: #fff; font-size: 1.6rem; line-height: 1.16; letter-spacing: -.025em; }
.ub-cta .btn { flex: 0 0 auto; color: var(--ub-ink); background: #fff; border: 0; }
.ub-footer { padding: 42px clamp(20px, 6vw, 88px); color: rgba(255,255,255,.68); background: #221230; border: 0; }
.ub-footer__inner { display: flex; align-items: center; justify-content: space-between; gap: 24px; max-width: 1360px; margin: auto; }
.ub-footer img { width: 140px; filter: brightness(0) invert(1); }
.ub-footer a { color: #fff; }

/* Alerts, dialogs */
.alert { border: 0; border-radius: 12px; }
.alert-success { color: var(--ub-success); background: var(--ub-success-soft); }
.alert-info { color: var(--ub-ink-2); background: var(--ub-surface-2); }
.modal-content { border: 0; border-radius: var(--ub-radius); box-shadow: var(--ub-shadow); }
.modal-header, .modal-footer { padding: 20px 24px; border-color: var(--ub-line); }
.modal-body { padding: 24px; color: var(--ub-muted); }

@media (max-width: 991px) {
  .navbar-top:not(.ub-public-nav) { padding-inline: 16px; }
  .navbar-vertical { width: 100% !important; }
  .navbar-vertical .navbar-collapse { background: var(--ub-ink); }
  .content.content-margin-left { margin-left: 0 !important; }
  .content { padding-top: 28px; }
  .form-supporting-pane-layout, .detail-layout { grid-template-columns: 1fr; }
  .form-supporting-pane, .detail-pane { position: static; }
  .form-profile-pane { margin-bottom: 20px; }
  .ub-auth__panel { padding: 40px 24px; }
  .ub-card-grid { grid-template-columns: 1fr; }
  .ub-split { grid-template-columns: 1fr; }
  .ub-split__visual { min-height: 380px; }
  .ub-cta { align-items: flex-start; flex-direction: column; }
}

@media (max-width: 767px) {
  .ub-public-nav { min-height: 66px; }
  .ub-public-nav__links > a:not(.btn) { display: none; }
  .ub-public-nav .btn { min-height: 38px; padding: .45rem .7rem; font-size: .78rem; }
  .page-header { align-items: stretch; flex-direction: column; }
  .page-header .btn { width: 100%; }
  .page-header__title { font-size: 1.55rem; }
  .content { padding-inline: 16px; }
  .content-section { padding: 20px; }
  .data-card { background: transparent; border: 0; box-shadow: none; overflow: visible; }
  .data-card thead { display: none; }
  .data-card table, .data-card tbody, .data-card tr, .data-card td { display: block; width: 100%; }
  .data-card tbody { display: grid; gap: 12px; }
  .data-card tbody tr { padding: 18px; background: #fff; border: 1px solid var(--ub-line); border-radius: 14px; box-shadow: var(--ub-shadow-sm); }
  .data-card tbody td { padding: 5px 0; border: 0; text-align: left !important; }
  .data-card tbody td[data-label] {
    display: grid;
    grid-template-columns: minmax(92px, 34%) minmax(0, 1fr);
    gap: 12px;
    align-items: baseline;
  }
  .data-card tbody td[data-label]::before {
    color: var(--ub-muted);
    content: attr(data-label);
    font-size: .68rem;
    font-weight: 800;
    letter-spacing: .05em;
    text-transform: uppercase;
  }
  .data-card tbody td:last-child { padding-top: 13px; }
  .data-card tbody td:last-child .btn { width: 100%; margin: 3px 0; }
  .ub-hero { min-height: 700px; padding-block: 76px; background: linear-gradient(90deg, rgba(47,26,69,.95), rgba(47,26,69,.67)), var(--ub-hero-image) 64% center/cover; }
  .ub-hero h1 { font-size: 1.9rem; }
  .ub-hero__actions .btn { width: 100%; }
  .ub-ad-gallery { grid-template-columns: 1fr; grid-template-rows: 260px; }
  .ub-ad-gallery__item { display: none; }
  .ub-ad-gallery__item:first-child { display: block; grid-row: auto; }
  .ub-ad-gallery__badge--cover { display: inline-flex; }
  /* No mobile só a capa aparece, então o selo de "todas as fotos" (inferior-
     direito) e o de vídeo colidiriam se ambos ficassem embaixo — vídeo sobe
     pro canto superior. */
  .ub-ad-gallery__video { left: 12px; bottom: auto; top: 12px; }
  .ub-feature-list { grid-template-columns: 1fr; }
  .ub-footer__inner { align-items: flex-start; flex-direction: column; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition: none !important; }
}

/* ========================================================================== */
/* Contract layer                                                             */
/*
 * Phoenix contém seletores de alta especificidade e utilitários com
 * !important. Esta camada é intencionalmente a última do <head> e define o
 * contrato visual das páginas modernas. index.html não carrega este arquivo.
 */
/* ========================================================================== */

html.ub-modern {
  --phoenix-navbar-top-height: 72px;
  --phoenix-body-color: var(--ub-ink);
  --phoenix-body-bg: var(--ub-bg);
  --phoenix-border-color: var(--ub-line);
  --phoenix-input-bg: var(--ub-surface);
  --phoenix-input-border-color: #d7d0dd;
  --phoenix-navbar-top-bg-color: var(--ub-surface);
  --phoenix-navbar-top-border-color: var(--ub-line);
  --phoenix-navbar-vertical-bg-color: var(--ub-ink);
  --phoenix-navbar-vertical-border-color: var(--ub-ink);
  --phoenix-link-color: var(--ub-ink);
  --phoenix-link-hover-color: var(--ub-coral-dark);
  color-scheme: light;
}

html.ub-modern.dark {
  --ub-ink: #fbf8fc;
  --ub-ink-2: #e7dfea;
  --ub-coral: #ff746d;
  --ub-coral-dark: #ff918b;
  --ub-coral-soft: #46262f;
  --ub-bg: #151119;
  --ub-surface: #201824;
  --ub-surface-2: #2a2030;
  --ub-line: #413447;
  --ub-muted: #b9adbf;
  --ub-success: #73d6a5;
  --ub-success-soft: #173b2b;
  --ub-warning: #f5c76d;
  --ub-warning-soft: #3b301a;
  --ub-danger: #ff9a9f;
  --ub-danger-soft: #432329;
  --phoenix-gray-100: #201824;
  --phoenix-gray-200: #2a2030;
  --phoenix-gray-300: #413447;
  --phoenix-gray-500: #8f8296;
  --phoenix-gray-600: #aa9caf;
  --phoenix-gray-700: #b9adbf;
  --phoenix-gray-800: #d2c8d6;
  --phoenix-gray-900: #e7dfea;
  --phoenix-gray-1000: #f2edf4;
  --phoenix-gray-1100: #fbf8fc;
  --phoenix-white: #201824;
  --phoenix-black: #fbf8fc;
  --phoenix-body-color: var(--ub-ink);
  --phoenix-body-bg: var(--ub-bg);
  --phoenix-input-bg: var(--ub-surface);
  --phoenix-input-border-color: var(--ub-line);
  --phoenix-navbar-top-bg-color: var(--ub-surface);
  --phoenix-navbar-top-border-color: var(--ub-line);
  --phoenix-link-color: #ffaaa5;
  --phoenix-link-hover-color: #ffd0cd;
  color-scheme: dark;
}

html.ub-modern body {
  color: var(--ub-ink) !important;
  background-color: var(--ub-bg) !important;
}

html.ub-modern body :where(h1, h2, h3, h4, h5, h6, p, span, label, legend, dt, dd, li, th, td) {
  border-color: var(--ub-line);
}

html.ub-modern .text-muted,
html.ub-modern .text-600,
html.ub-modern .text-700 {
  color: var(--ub-muted) !important;
}

html.ub-modern .text-800,
html.ub-modern .text-900,
html.ub-modern .text-1000,
html.ub-modern .text-1100,
html.ub-modern .text-dark {
  color: var(--ub-ink) !important;
}

html.ub-modern .border,
html.ub-modern .border-top,
html.ub-modern .border-bottom,
html.ub-modern .border-start,
html.ub-modern .border-end {
  border-color: var(--ub-line) !important;
}

/* Fixed product scaffold: one shared origin for header, rail and content. */
html.ub-modern .navbar-top:not(.ub-public-nav) {
  position: fixed !important;
  inset: 0 0 auto 0 !important;
  z-index: 1040 !important;
  width: 100% !important;
  height: 72px !important;
  min-height: 72px !important;
  padding: 0 30px !important;
  color: var(--ub-ink) !important;
  background: color-mix(in srgb, var(--ub-surface) 94%, transparent) !important;
  border: 0 !important;
  border-bottom: 1px solid var(--ub-line) !important;
  box-shadow: 0 1px 0 rgba(47, 26, 69, .02) !important;
  backdrop-filter: blur(18px);
}

html.ub-modern .navbar-top:not(.ub-public-nav) .navbar-brand {
  display: inline-flex !important;
  align-items: center !important;
  width: calc(var(--ub-sidebar) - 30px) !important;
  margin: 0 !important;
}

html.ub-modern .navbar-top:not(.ub-public-nav) .navbar-brand img {
  display: block !important;
  width: 132px !important;
  height: auto !important;
  max-height: 38px !important;
}

html.ub-modern.dark .navbar-top:not(.ub-public-nav) .navbar-brand img,
html.ub-modern.dark .ub-public-nav .navbar-brand img {
  filter: brightness(0) invert(1) !important;
}

html.ub-modern .navbar-vertical {
  position: fixed !important;
  inset: 72px auto 0 0 !important;
  z-index: 1030 !important;
  width: var(--ub-sidebar) !important;
  height: calc(100vh - 72px) !important;
  min-height: 0 !important;
  padding: 0 !important;
  color: #fff !important;
  background: #301947 !important;
  border: 0 !important;
  box-shadow: 8px 0 30px rgba(31, 14, 46, .08) !important;
}

html.ub-modern .navbar-vertical .navbar-collapse,
html.ub-modern .navbar-vertical .navbar-vertical-content {
  width: 100% !important;
  height: 100% !important;
  max-height: none !important;
  background: #301947 !important;
}

html.ub-modern .navbar-vertical .navbar-vertical-content {
  padding: 26px 16px 32px !important;
  overflow-y: auto !important;
}

html.ub-modern .navbar-vertical .navbar-vertical-label {
  margin: 24px 12px 9px !important;
  color: #a997b7 !important;
}

html.ub-modern .navbar-vertical .nav-link {
  min-height: 44px !important;
  margin: 2px 0 !important;
  padding: 10px 12px !important;
  color: #d9ccdf !important;
  background: transparent !important;
  border: 0 !important;
  border-radius: 11px !important;
  box-shadow: none !important;
}

html.ub-modern .navbar-vertical .nav-link :where(span, svg) {
  color: inherit !important;
  stroke: currentColor !important;
}

html.ub-modern .navbar-vertical .nav-link .nav-link-icon {
  color: #a997b7 !important;
  opacity: 1 !important;
}

html.ub-modern .navbar-vertical .nav-link:hover,
html.ub-modern .navbar-vertical .nav-link:focus-visible {
  color: #fff !important;
  background: rgba(255, 255, 255, .09) !important;
}

html.ub-modern .navbar-vertical .nav-link.active,
html.ub-modern .navbar-vertical .nav-link[aria-current='page'] {
  color: #fff !important;
  background: #673054 !important;
  box-shadow: inset 3px 0 0 var(--ub-coral) !important;
}

html.ub-modern .navbar-vertical .nav-link.active .nav-link-icon,
html.ub-modern .navbar-vertical .nav-link[aria-current='page'] .nav-link-icon {
  color: #ffaaa5 !important;
}

html.ub-modern .content.content-margin-left {
  box-sizing: border-box !important;
  width: calc(100% - var(--ub-sidebar)) !important;
  max-width: none !important;
  min-height: 100vh !important;
  margin: 0 0 0 var(--ub-sidebar) !important;
  padding: 112px clamp(24px, 3vw, 52px) 72px !important;
}

html.ub-modern .content.content-margin-left > :where(.page-header, .breadcrumb, nav[aria-label='breadcrumb'], form, .page-toolbar, .stat-grid, .content-section, .data-card, .empty-state, .detail-layout) {
  width: 100% !important;
  max-width: none !important;
}

/* Guaranteed surfaces and contrast. */
html.ub-modern :where(.card, .content-section, .form-supporting-pane, .detail-pane, .data-card, .page-toolbar, .stat-tile, .empty-state, .dropdown-menu, .modal-content) {
  color: var(--ub-ink) !important;
  background-color: var(--ub-surface) !important;
  border-color: var(--ub-line) !important;
}

html.ub-modern :where(.card, .content-section, .form-supporting-pane, .detail-pane, .data-card, .page-toolbar, .stat-tile) :where(h1, h2, h3, h4, h5, h6, strong, dt, label) {
  color: var(--ub-ink) !important;
}

html.ub-modern .page-header__title,
html.ub-modern .content-section__title,
html.ub-modern .form-supporting-pane__title,
html.ub-modern .detail-pane__title {
  color: var(--ub-ink) !important;
}

html.ub-modern .page-header__subtitle,
html.ub-modern .form-hint,
html.ub-modern .stat-tile__label,
html.ub-modern .empty-state__message {
  color: var(--ub-muted) !important;
}

html.ub-modern :where(.form-control, .form-select, .input-group-text) {
  color: var(--ub-ink) !important;
  background-color: var(--ub-surface) !important;
  border: 1px solid #d7d0dd !important;
}

html.ub-modern.dark :where(.form-control, .form-select, .input-group-text) {
  border-color: var(--ub-line) !important;
}

html.ub-modern :where(.form-control, .form-select):focus {
  color: var(--ub-ink) !important;
  background-color: var(--ub-surface) !important;
  border-color: var(--ub-coral) !important;
  box-shadow: 0 0 0 4px rgba(255, 98, 90, .15) !important;
}

html.ub-modern .form-control:disabled,
html.ub-modern .form-select:disabled,
html.ub-modern .form-control[readonly] {
  color: var(--ub-muted) !important;
  background-color: var(--ub-surface-2) !important;
  opacity: 1 !important;
}

html.ub-modern .btn-primary {
  color: #fff !important;
  background-color: var(--ub-coral) !important;
  border-color: var(--ub-coral) !important;
}

html.ub-modern .btn-primary:hover,
html.ub-modern .btn-primary:focus-visible {
  color: #fff !important;
  background-color: var(--ub-coral-dark) !important;
  border-color: var(--ub-coral-dark) !important;
}

html.ub-modern :where(.btn-phoenix-primary, .btn-phoenix-secondary) {
  color: var(--ub-ink) !important;
  background-color: var(--ub-surface) !important;
  border-color: var(--ub-line) !important;
}

html.ub-modern :where(.btn-phoenix-primary, .btn-phoenix-secondary):hover {
  color: var(--ub-ink) !important;
  background-color: var(--ub-surface-2) !important;
  border-color: var(--ub-muted) !important;
}

html.ub-modern .dropdown-item {
  color: var(--ub-ink) !important;
  background-color: transparent !important;
}

html.ub-modern .dropdown-item:hover,
html.ub-modern .dropdown-item:focus {
  color: var(--ub-ink) !important;
  background-color: var(--ub-surface-2) !important;
}

html.ub-modern .ub-profile-button {
  color: var(--ub-ink) !important;
  background-color: var(--ub-surface) !important;
  border-color: var(--ub-line) !important;
}

html.ub-modern .ub-profile-button svg { color: var(--ub-muted) !important; }

html.ub-modern .data-card thead th {
  color: var(--ub-muted) !important;
  background-color: var(--ub-surface-2) !important;
}

html.ub-modern .data-card tbody td,
html.ub-modern .table {
  color: var(--ub-ink) !important;
  background-color: transparent !important;
  border-color: var(--ub-line) !important;
}

html.ub-modern .data-card tbody tr:hover { background-color: var(--ub-surface-2) !important; }

html.ub-modern .form-final-actions {
  color: var(--ub-ink) !important;
  background: color-mix(in srgb, var(--ub-surface) 94%, transparent) !important;
  border-color: var(--ub-line) !important;
}

html.ub-modern .ub-dashboard-grid {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  gap: 18px !important;
  width: 100% !important;
  margin-bottom: 22px !important;
}

html.ub-modern .ub-dashboard-grid > .content-section {
  min-width: 0 !important;
  height: 100% !important;
  margin-bottom: 0 !important;
}

html.ub-modern .ub-dashboard-grid .echart-returning-customer {
  width: 100% !important;
  min-height: 300px !important;
}

/* Public and authentication surfaces also honor the selected theme. */
html.ub-modern .ub-public-nav {
  color: var(--ub-ink) !important;
  background: color-mix(in srgb, var(--ub-surface) 94%, transparent) !important;
  border-color: var(--ub-line) !important;
}

html.ub-modern .ub-public-nav__links > a:not(.btn) { color: var(--ub-muted) !important; }
html.ub-modern .ub-public-nav__links > a:not(.btn):hover { color: var(--ub-ink) !important; }
html.ub-modern .ub-auth,
html.ub-modern .ub-landing,
html.ub-modern .ub-section { color: var(--ub-ink) !important; background-color: var(--ub-surface) !important; }
html.ub-modern .ub-section--tint { background-color: var(--ub-bg) !important; }
html.ub-modern .ub-section--dark { color: #fff !important; background-color: #2f1a45 !important; }
html.ub-modern .ub-section--dark :where(h1, h2, h3, h4, h5, h6) { color: #fff !important; }
html.ub-modern .ub-feature-card,
html.ub-modern .ub-split__badge { color: var(--ub-ink) !important; background-color: var(--ub-surface) !important; border-color: var(--ub-line) !important; }
html.ub-modern .ub-feature-card h3 { color: var(--ub-ink) !important; }
html.ub-modern .ub-feature-card p,
html.ub-modern .ub-section__heading p,
html.ub-modern .ub-check-list li { color: var(--ub-muted) !important; }
html.ub-modern .ub-section--dark .ub-section__heading p { color: #d8cadf !important; }

/* O tema do FullCalendar e do #period-detail vive na seção "Calendário
   (FullCalendar)" — ver .ub-period-chip. */

html.ub-modern :where(#toast-container > .toast-success, #toast-container > .toast-error, #toast-container > .toast-info) {
  color: #fff !important;
}
html.ub-modern #toast-container > .toast-success { background-color: #18794e !important; }
html.ub-modern #toast-container > .toast-error { background-color: #bd2c35 !important; }
html.ub-modern #toast-container > .toast-info { background-color: #49335d !important; }

@media (max-width: 991px) {
  html.ub-modern .navbar-top:not(.ub-public-nav) { padding: 0 16px !important; }
  html.ub-modern .navbar-top:not(.ub-public-nav) .navbar-brand { width: auto !important; }
  html.ub-modern .navbar-vertical {
    inset: 72px 0 auto 0 !important;
    width: 100% !important;
    height: auto !important;
    max-height: calc(100vh - 72px) !important;
    box-shadow: 0 18px 40px rgba(31, 14, 46, .24) !important;
  }
  html.ub-modern .navbar-vertical .navbar-collapse { height: auto !important; max-height: calc(100vh - 72px) !important; }
  html.ub-modern .navbar-vertical .navbar-vertical-content { height: auto !important; max-height: calc(100vh - 72px) !important; }
  html.ub-modern .content.content-margin-left {
    width: 100% !important;
    margin-left: 0 !important;
    padding: 100px 20px 56px !important;
  }
  html.ub-modern .ub-dashboard-grid { grid-template-columns: 1fr !important; }
}

@media (max-width: 575px) {
  html.ub-modern .content.content-margin-left { padding-inline: 14px !important; }
  html.ub-modern .navbar-top:not(.ub-public-nav) .navbar-brand img { width: 112px !important; }
  html.ub-modern .stat-grid { grid-template-columns: 1fr 1fr !important; gap: 10px !important; }
  html.ub-modern .stat-tile { min-height: 116px !important; padding: 18px !important; }
  html.ub-modern .stat-tile__value { font-size: 1.55rem !important; }
}

@media (max-width: 767px) {
  html.ub-modern .page-header {
    align-items: stretch !important;
    flex-direction: column !important;
  }
  html.ub-modern .page-header > .btn { width: 100% !important; }
  html.ub-modern .data-card {
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    overflow: visible !important;
  }
  html.ub-modern .data-card__scroll { overflow: visible !important; }
  html.ub-modern .data-card thead { display: none !important; }
  html.ub-modern .data-card :where(table, tbody, tr, td) { display: block; width: 100% !important; }
  html.ub-modern .data-card tbody { display: grid !important; gap: 12px !important; }
  html.ub-modern .data-card tbody tr {
    padding: 17px !important;
    background: var(--ub-surface) !important;
    border: 1px solid var(--ub-line) !important;
    border-radius: 14px !important;
    box-shadow: var(--ub-shadow-sm) !important;
  }
  html.ub-modern .data-card tbody td {
    padding: 6px 0 !important;
    border: 0 !important;
    text-align: left !important;
  }
  html.ub-modern .data-card tbody td[data-label] {
    display: grid !important;
    grid-template-columns: minmax(88px, 34%) minmax(0, 1fr) !important;
    gap: 12px !important;
    align-items: baseline !important;
  }
  html.ub-modern .data-card tbody td[data-label]::before {
    color: var(--ub-muted) !important;
    content: attr(data-label);
    font-size: .67rem;
    font-weight: 800;
    letter-spacing: .05em;
    text-transform: uppercase;
  }
  html.ub-modern .data-card tbody td[data-label='Ações'] {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 8px !important;
    padding-top: 14px !important;
  }
  html.ub-modern .data-card tbody td[data-label='Ações']::before { flex: 0 0 100%; }
  html.ub-modern .data-card tbody td[data-label='Ações'] .btn { flex: 1 1 auto; margin: 0 !important; }
  html.ub-modern .form-final-actions {
    bottom: 8px !important;
    flex-wrap: wrap !important;
    padding: 10px !important;
  }
  html.ub-modern .form-final-actions > :where(.btn, .d-flex) { flex: 1 1 auto !important; }
}

/* Rapidido Stage typography — mirrored without local reinterpretation. */
html.ub-modern body {
  font-family: var(--ub-font) !important;
  font-size: 16px !important;
  line-height: 1.5;
}

html.ub-modern :where(button, input, select, textarea, .btn, .nav-link, .dropdown-item) {
  font-family: var(--ub-font) !important;
}

html.ub-modern :where(h1, h2, h3, h4, h5, h6, .page-header__title, .content-section__title) {
  font-family: var(--ub-font) !important;
  letter-spacing: -.025em !important;
  text-transform: none !important;
}

html.ub-modern :where(.page-header__title, .content h1, .ub-auth__panel .page-header__title) {
  margin-bottom: 7px;
  font-size: clamp(1.7rem, 2.2vw, 2.15rem) !important;
  font-weight: 720 !important;
  line-height: 1.16 !important;
}

html.ub-modern .page-header__subtitle {
  max-width: 830px;
  margin-top: 0;
  color: var(--ub-muted);
  font-size: .9rem !important;
  line-height: 1.65;
}

html.ub-modern .breadcrumb-item,
html.ub-modern .breadcrumb-item a { font-size: .68rem !important; }

html.ub-modern .form-flow__orientation strong {
  font-family: var(--ub-font);
  font-size: .82rem;
  font-weight: 700;
}

html.ub-modern .form-flow__orientation p {
  font-size: .74rem;
  line-height: 1.5;
}

html.ub-modern :where(.form-label, legend.form-label, .form-flow .form-field > h4) {
  font-family: var(--ub-font) !important;
  font-size: .72rem !important;
  font-weight: 750 !important;
  letter-spacing: .01em !important;
  text-transform: none !important;
}

html.ub-modern :where(.form-control, .form-select) {
  font-family: var(--ub-font) !important;
  font-size: .82rem !important;
}

html.ub-modern :where(.form-hint, .form-field__error) {
  font-size: .7rem !important;
  line-height: 1.45;
}

html.ub-modern .btn {
  min-height: 42px;
  padding: 9px 16px;
  border-radius: 11px;
  font-family: var(--ub-font) !important;
  font-size: .76rem !important;
  font-weight: 750 !important;
  letter-spacing: 0 !important;
  line-height: 1.2;
  text-transform: none !important;
}

html.ub-modern .btn-sm {
  min-height: 34px;
  padding: 6px 11px;
  border-radius: 9px;
  font-size: .7rem !important;
}

html.ub-modern .navbar-vertical .nav-link {
  font-size: .78rem !important;
  font-weight: 650 !important;
  line-height: 1.25;
  letter-spacing: 0 !important;
  text-transform: none !important;
}

html.ub-modern .navbar-vertical .navbar-vertical-label {
  font-family: var(--ub-font) !important;
  font-size: .64rem !important;
  font-weight: 700 !important;
  letter-spacing: .07em !important;
}

html.ub-modern :where(.ub-topbar__context, .ub-profile-button) {
  font-size: .72rem !important;
  font-weight: 750;
}

html.ub-modern .content-section__title {
  font-size: 1.2rem !important;
  font-weight: 690;
}

html.ub-modern .form-supporting-pane__eyebrow {
  font-family: var(--ub-font);
  font-size: .65rem !important;
  font-weight: 760;
  letter-spacing: .1em;
}

html.ub-modern :where(.form-supporting-pane__title, .detail-pane__title) {
  font-family: var(--ub-font);
  font-size: .9rem !important;
  font-weight: 700;
  letter-spacing: -.025em;
  text-transform: none;
}

html.ub-modern .form-supporting-pane__lead { font-size: .72rem !important; line-height: 1.5; }
html.ub-modern .form-supporting-pane__row { font-size: .7rem !important; }
html.ub-modern .form-supporting-pane__list { font-size: .72rem !important; line-height: 1.45; }

html.ub-modern .data-card thead th {
  font-family: var(--ub-font) !important;
  font-size: .63rem !important;
  font-weight: 780 !important;
  letter-spacing: .055em !important;
}

html.ub-modern .data-card tbody td { font-size: .77rem !important; }
html.ub-modern .stat-tile__label { font-size: .76rem !important; font-weight: 680; }
html.ub-modern .stat-tile__value {
  font-family: var(--ub-font);
  font-size: 2.25rem !important;
  font-weight: 740;
  letter-spacing: -.05em;
}

html.ub-modern :where(.badge, .page-toolbar) {
  font-family: var(--ub-font);
  font-size: .72rem;
}

html.ub-modern :where(.ub-auth__eyebrow, .ub-eyebrow) {
  font-family: var(--ub-font);
  font-size: .65rem !important;
  font-weight: 760;
  letter-spacing: .1em;
}

html.ub-modern .ub-auth__visual-copy h2 {
  font-family: var(--ub-font);
  font-size: clamp(1.7rem, 2.2vw, 2.15rem) !important;
  font-weight: 720;
  line-height: 1.16;
  letter-spacing: -.025em;
  text-transform: none;
}

html.ub-modern .ub-hero h1 {
  font-family: var(--ub-font);
  font-size: clamp(1.9rem, 5vw, 3.45rem) !important;
  font-weight: 720;
  line-height: 1.08;
  letter-spacing: -.025em;
  text-transform: none;
}

html.ub-modern .ub-hero p { font-size: 1.02rem !important; line-height: 1.65; }
html.ub-modern .ub-section__heading h2,
html.ub-modern .ub-cta h2 {
  font-family: var(--ub-font);
  font-size: 1.6rem !important;
  font-weight: 690;
  line-height: 1.16;
  letter-spacing: -.025em;
  text-transform: none;
}
html.ub-modern .ub-section__heading p { font-size: .9rem !important; line-height: 1.65; }
html.ub-modern .ub-feature-card h3 { font-size: 1.05rem !important; font-weight: 690; }

@media (max-width: 767px) {
  html.ub-modern .page-header__title,
  html.ub-modern .content h1,
  html.ub-modern .ub-auth__panel .page-header__title { font-size: 1.55rem !important; }
  html.ub-modern .page-header__subtitle { font-size: .82rem !important; }
  html.ub-modern .ub-hero h1 { font-size: 1.9rem !important; }
  html.ub-modern .stat-tile__value { font-size: 2rem !important; }
  html.ub-modern .data-card tbody td[data-label]::before {
    font-size: .61rem;
    font-weight: 780;
    letter-spacing: .045em;
  }
  html.ub-modern .form-question-card { padding: 1rem; border-radius: 14px; }
  html.ub-modern .form-question-card__title { gap: .65rem; font-size: .95rem !important; }
  html.ub-modern .form-flow--numbered .form-question-card__subtitle { margin-left: 2.55rem; }
}

/* =============================================================
   Tabelas de dados

   Uma superfície única para listas administrativas: cabeçalho discreto,
   linhas fáceis de percorrer e ações sempre agrupadas. Tabelas com muitas
   colunas mantêm a estrutura e rolam horizontalmente no celular; as demais
   viram cartões de dados usando os rótulos já presentes no markup.
   ============================================================= */
html.ub-modern .data-card {
  overflow: hidden;
  border: 1px solid var(--ub-line) !important;
  border-radius: var(--ub-radius) !important;
  box-shadow: var(--ub-shadow-sm) !important;
}

html.ub-modern .data-card__scroll {
  overflow-x: auto;
  overscroll-behavior-inline: contain;
  scrollbar-color: #c8becf transparent;
  scrollbar-width: thin;
}

html.ub-modern .data-table {
  width: 100%;
  min-width: 640px;
  margin: 0;
  border-collapse: separate;
  border-spacing: 0;
}

html.ub-modern .data-table thead th {
  height: 48px;
  padding: 12px 20px !important;
  color: var(--ub-muted) !important;
  background: #f8f6fa !important;
  border-top: 0 !important;
  border-bottom: 1px solid var(--ub-line) !important;
  font-family: var(--ub-font) !important;
  font-size: .67rem !important;
  font-weight: 780 !important;
  line-height: 1.2;
  letter-spacing: .055em !important;
  text-transform: uppercase;
  vertical-align: middle;
  white-space: nowrap;
}

html.ub-modern .data-table tbody td {
  padding: 17px 20px !important;
  color: var(--ub-ink) !important;
  border-top: 0 !important;
  border-bottom: 1px solid var(--ub-line) !important;
  font-size: .79rem !important;
  line-height: 1.45;
  vertical-align: middle;
}

html.ub-modern .data-table tbody tr:last-child td { border-bottom: 0 !important; }
html.ub-modern .data-table tbody tr { transition: background-color .15s ease; }
html.ub-modern .data-table tbody tr:hover { background: #fbf9fc !important; }
html.ub-modern .data-table tbody tr:hover td { background: transparent !important; }

html.ub-modern .data-table :is(th:first-child, td:first-child) { padding-left: 24px !important; }
html.ub-modern .data-table :is(th:last-child, td:last-child) { padding-right: 24px !important; }
html.ub-modern .data-table tbody td > a:not(.btn) {
  color: var(--ub-ink) !important;
  font-weight: 760;
  text-decoration: none;
}
html.ub-modern .data-table tbody td > a:not(.btn):hover { color: var(--ub-coral-dark) !important; }

html.ub-modern .data-table__actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  white-space: nowrap;
}

html.ub-modern .data-table__actions .btn { margin: 0 !important; }
html.ub-modern .data-table__inline-form { margin: 7px 0 0; }
html.ub-modern .data-table__text-action {
  min-height: 0;
  padding: 0;
  color: var(--ub-muted);
  background: transparent;
  border: 0;
  font: inherit;
  font-size: .7rem;
  font-weight: 720;
  text-decoration: underline;
  text-underline-offset: 3px;
}
html.ub-modern .data-table__text-action:hover { color: var(--ub-ink); }

@media (max-width: 767px) {
  html.ub-modern .data-card:not(.data-card--wide) .data-table { min-width: 0; }
  html.ub-modern .data-card:not(.data-card--wide) .data-table tbody td:first-child {
    padding-top: 2px !important;
    font-size: .86rem !important;
  }
  html.ub-modern .data-card:not(.data-card--wide) .data-table__actions {
    width: 100%;
    justify-content: stretch;
    flex-wrap: wrap;
  }
  html.ub-modern .data-card:not(.data-card--wide) .data-table__actions .btn { flex: 1 1 auto; }

  /* Listas largas preservam as colunas para não ocultar dados importantes. */
  html.ub-modern .data-card--wide { overflow: hidden !important; }
  html.ub-modern .data-card--wide .data-card__scroll { overflow-x: auto !important; }
  html.ub-modern .data-card--wide .data-table { display: table !important; min-width: 1080px !important; }
  html.ub-modern .data-card--wide .data-table thead { display: table-header-group !important; }
  html.ub-modern .data-card--wide .data-table tbody { display: table-row-group !important; }
  html.ub-modern .data-card--wide .data-table tr { display: table-row !important; }
  html.ub-modern .data-card--wide .data-table :is(th, td) {
    display: table-cell !important;
    width: auto !important;
    text-align: inherit !important;
  }
}

/* ==========================================================================
   UNIBUSCA ONBOARDING & GUIDED WIZARD FLOW (2026 UX System)
   ========================================================================== */

/* Layout & Container do Wizard */
.ub-wizard-page {
  background-color: #faf9fb;
  min-height: 100vh;
}

.ub-wizard-wrap {
  max-width: 980px;
  margin: 0 auto;
  padding: 16px 20px 110px;
}

.ub-wizard-header {
  margin-bottom: 20px;
}

.ub-wizard-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 12px;
  border-radius: 999px;
  background: var(--ub-coral-soft);
  color: var(--ub-coral-dark);
  font-size: 0.74rem;
  font-weight: 700;
  letter-spacing: 0.01em;
  margin-bottom: 8px;
}

.ub-wizard-title {
  color: var(--ub-ink);
  font-size: 1.45rem;
  font-weight: 700;
  line-height: 1.25;
  letter-spacing: -0.015em;
  margin-bottom: 6px;
}

.ub-wizard-subtitle {
  color: var(--ub-muted);
  font-size: 0.88rem;
  line-height: 1.45;
  margin-bottom: 0;
}

/* Transições e Passos */
.ub-wizard-step {
  display: none;
  opacity: 0;
  transform: translateY(8px);
  transition: opacity 0.22s ease, transform 0.22s cubic-bezier(0.2, 0, 0, 1);
}

.ub-wizard-step.active {
  display: block;
  opacity: 1;
  transform: translateY(0);
}

.ub-shake-anim {
  animation: ubShake 0.4s cubic-bezier(0.36, 0.07, 0.19, 0.97) both;
}

@keyframes ubShake {
  10%, 90% { transform: translate3d(-2px, 0, 0); }
  20%, 80% { transform: translate3d(3px, 0, 0); }
  30%, 50%, 70% { transform: translate3d(-4px, 0, 0); }
  40%, 60% { transform: translate3d(4px, 0, 0); }
}

/* Card de Introdução da Etapa */
.ub-stage-intro-card {
  background: #ffffff;
  border: 1px solid var(--ub-line);
  border-radius: 16px;
  padding: clamp(20px, 3vw, 32px);
  box-shadow: var(--ub-shadow-sm);
  margin-top: 6px;
}

.ub-stage-intro-media {
  display: flex;
  align-items: center;
  margin-bottom: 18px;
}

.ub-stage-icon-wrap {
  width: 52px;
  height: 52px;
  border-radius: 14px;
  background: linear-gradient(135deg, var(--ub-coral-soft), #f0e6f7);
  display: grid;
  place-items: center;
  color: var(--ub-coral);
  box-shadow: 0 6px 16px rgba(255, 98, 90, 0.12);
}

.ub-stage-checklist {
  list-style: none;
  padding: 0;
  margin: 18px 0 0;
}

.ub-stage-checklist li {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 10px 0;
  border-top: 1px solid #f1edf4;
  color: var(--ub-ink);
  font-size: 0.88rem;
  line-height: 1.4;
}

.ub-stage-check-icon {
  flex-shrink: 0;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: var(--ub-success-soft);
  color: var(--ub-success);
  font-size: 0.72rem;
  font-weight: 700;
  display: grid;
  place-items: center;
}

/* Cards Visuais de Categoria */
.ub-category-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(130px, 150px));
  gap: 12px;
  margin-top: 18px;
}

@media (max-width: 576px) {
  .ub-category-grid {
    grid-template-columns: repeat(auto-fill, minmax(105px, 1fr));
    gap: 8px;
  }
}

.ub-category-card {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 16px 12px 14px;
  background: #ffffff;
  border: 1.5px solid var(--ub-line);
  border-radius: 14px;
  cursor: pointer;
  user-select: none;
  min-height: 105px;
  transition: transform 0.15s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.15s ease, border-color 0.15s ease, background-color 0.15s ease;
}

.ub-category-card:hover {
  transform: translateY(-2px);
  border-color: #beb5c7;
  box-shadow: 0 6px 16px rgba(47, 26, 69, 0.06);
}

.ub-category-card.selected {
  border: 2px solid var(--ub-ink);
  background-color: #faf8fc;
  box-shadow: 0 4px 14px rgba(47, 26, 69, 0.08);
}

.ub-category-card__icon {
  width: 32px;
  height: 32px;
  color: var(--ub-ink);
  margin-bottom: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: transform 0.15s ease, color 0.15s ease;
}

.ub-category-card.selected .ub-category-card__icon {
  color: var(--ub-coral);
  transform: scale(1.06);
}

.ub-category-card__title {
  color: var(--ub-ink);
  font-size: 0.85rem;
  font-weight: 650;
  line-height: 1.25;
}

.ub-category-card__check {
  position: absolute;
  top: 7px;
  right: 7px;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: var(--ub-ink);
  color: #fff;
  font-size: 0.65rem;
  font-weight: 700;
  display: grid;
  place-items: center;
  opacity: 0;
  transform: scale(0.5);
  transition: opacity 0.15s ease, transform 0.15s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.ub-category-card.selected .ub-category-card__check {
  opacity: 1;
  transform: scale(1);
}

/* Alertas de validação elegantes por etapa */
.ub-step-alert {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 16px;
  border-radius: 12px;
  font-size: 0.85rem;
  font-weight: 600;
  margin-top: 14px;
  animation: ubFadeIn 0.2s cubic-bezier(0.16, 1, 0.3, 1);
}

.ub-step-alert--danger {
  background: #fff5f5;
  border: 1px solid #fed7d7;
  color: #c53030;
  box-shadow: 0 2px 8px rgba(222, 70, 66, 0.08);
}

.ub-step-alert--danger svg {
  flex-shrink: 0;
  color: #e53e3e;
}

/* Cards de Privacidade / Tipo de Espaço */
.ub-privacy-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-top: 16px;
}

.ub-privacy-card {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 18px;
  background: #ffffff;
  border: 1.5px solid var(--ub-line);
  border-radius: 14px;
  cursor: pointer;
  transition: all 0.15s ease;
}

.ub-privacy-card:hover {
  border-color: #beb5c7;
  transform: translateY(-1px);
  box-shadow: 0 6px 16px rgba(47, 26, 69, 0.05);
}

.ub-privacy-card.selected {
  border: 2px solid var(--ub-ink);
  background: #faf8fc;
  box-shadow: 0 3px 12px rgba(47, 26, 69, 0.07);
}

.ub-privacy-card__title {
  color: var(--ub-ink);
  font-size: 0.96rem;
  font-weight: 650;
  margin-bottom: 2px;
}

.ub-privacy-card__desc {
  color: var(--ub-muted);
  font-size: 0.82rem;
  margin-bottom: 0;
}

.ub-privacy-card__icon {
  flex-shrink: 0;
  width: 28px;
  height: 28px;
  color: var(--ub-ink);
  margin-left: 16px;
}

/* Steppers Numéricos Táteis */
.ub-stepper-card {
  background: #ffffff;
  border: 1px solid var(--ub-line);
  border-radius: 14px;
  padding: 6px 20px;
  box-shadow: var(--ub-shadow-sm);
  margin-top: 14px;
}

.ub-stepper-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 0;
  border-bottom: 1px solid var(--ub-line);
}

.ub-stepper-item:last-child {
  border-bottom: none;
}

.ub-stepper-label {
  color: var(--ub-ink);
  font-size: 0.94rem;
  font-weight: 650;
  margin-bottom: 1px;
}

.ub-stepper-hint {
  color: var(--ub-muted);
  font-size: 0.80rem;
  margin-bottom: 0;
}

.ub-stepper-controls {
  display: flex;
  align-items: center;
  gap: 12px;
}

.ub-stepper-btn {
  display: grid;
  place-items: center;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  border: 1px solid #bfb4c7;
  background: #ffffff;
  color: var(--ub-ink);
  font-size: 1.05rem;
  font-weight: 650;
  cursor: pointer;
  transition: all 0.12s ease;
  user-select: none;
}

.ub-stepper-btn:hover:not(:disabled) {
  border-color: var(--ub-ink);
  background: #f4f0f8;
  transform: scale(1.05);
}

.ub-stepper-btn:active:not(:disabled) {
  transform: scale(0.95);
}

.ub-stepper-btn:disabled,
.ub-stepper-btn.disabled {
  opacity: 0.3;
  cursor: not-allowed;
}

.ub-stepper-val {
  min-width: 28px;
  text-align: center;
  font-size: 1.10rem;
  font-weight: 700;
  color: var(--ub-ink);
}

/* ==========================================================================
   Componente Unificado de Localização (Formulário + Mapa Integrados)
   ========================================================================== */
.ub-location-unified-card {
  background: #ffffff;
  border: 1px solid var(--ub-line);
  border-radius: 18px;
  overflow: hidden;
  box-shadow: var(--ub-shadow-sm);
  margin-top: 14px;
  min-height: 520px;
}

.ub-location-form-pane {
  padding: 28px 30px;
  border-right: 1px solid var(--ub-line);
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.ub-location-map-pane {
  display: flex;
  flex-direction: column;
  background: #faf8fc;
  min-height: 520px;
}

.ub-location-map-top {
  padding: 15px 20px;
  border-bottom: 1px solid var(--ub-line);
  background: #ffffff;
}

.ub-location-map-top strong {
  font-size: 0.88rem;
  color: var(--ub-ink);
}

.ub-location-map-frame {
  flex: 1;
  width: 100%;
  min-height: 460px;
  position: relative;
  z-index: 1;
}

@media (max-width: 991px) {
  .ub-location-form-pane {
    border-right: none;
    border-bottom: 1px solid var(--ub-line);
    padding: 20px;
  }
  .ub-location-map-pane {
    min-height: 380px;
  }
  .ub-location-map-frame {
    min-height: 340px;
  }
}

.ub-custom-map-pin {
  background: none;
  border: none;
}

.ub-pin-marker {
  width: 34px;
  height: 34px;
  color: var(--ub-coral);
  filter: drop-shadow(0 4px 10px rgba(222, 70, 66, 0.40));
  animation: ubPinBounce 2s infinite ease-in-out;
  transition: transform 0.35s cubic-bezier(0.34, 1.56, 0.64, 1), filter 0.35s ease;
}

@keyframes ubPinBounce {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-5px); }
}

.ub-pin-pulse {
  position: absolute;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 14px;
  height: 6px;
  background: rgba(47, 26, 69, 0.30);
  border-radius: 50%;
  transition: transform 0.35s ease, opacity 0.35s ease;
}

/* Animações de Viagem do Pin (Subida, Voo e Descida) */
.ub-pin-takeoff .ub-pin-marker {
  animation: ubPinAscend 0.40s cubic-bezier(0.34, 1.56, 0.64, 1) forwards !important;
}

.ub-pin-takeoff .ub-pin-pulse {
  transition: transform 0.40s ease, opacity 0.40s ease;
  transform: translateX(-50%) scale(0.35) !important;
  opacity: 0.12 !important;
}

.ub-pin-in-flight .ub-pin-marker {
  transform: translateY(-22px) scale(1.24) !important;
  filter: drop-shadow(0 20px 26px rgba(222, 70, 66, 0.60)) !important;
  animation: none !important;
}

.ub-pin-in-flight .ub-pin-pulse {
  transform: translateX(-50%) scale(0.35) !important;
  opacity: 0.12 !important;
}

.ub-pin-touchdown .ub-pin-marker {
  animation: ubPinDescend 0.65s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards !important;
}

.ub-pin-touchdown .ub-pin-pulse {
  animation: ubPinRipple 0.75s ease-out forwards !important;
}

@keyframes ubPinAscend {
  0% { transform: translateY(0) scale(1); filter: drop-shadow(0 4px 10px rgba(222, 70, 66, 0.40)); }
  100% { transform: translateY(-22px) scale(1.24); filter: drop-shadow(0 20px 26px rgba(222, 70, 66, 0.60)); }
}

@keyframes ubPinDescend {
  0% { transform: translateY(-22px) scale(1.24); filter: drop-shadow(0 20px 26px rgba(222, 70, 66, 0.60)); }
  55% { transform: translateY(3px) scale(0.92); filter: drop-shadow(0 3px 6px rgba(222, 70, 66, 0.50)); }
  75% { transform: translateY(-4px) scale(1.04); }
  90% { transform: translateY(1px) scale(0.99); }
  100% { transform: translateY(0) scale(1); filter: drop-shadow(0 4px 10px rgba(222, 70, 66, 0.40)); }
}

@keyframes ubPinRipple {
  0% { transform: translateX(-50%) scale(0.35); opacity: 0.9; box-shadow: 0 0 0 0 rgba(222, 70, 66, 0.85); }
  70% { transform: translateX(-50%) scale(2.4); opacity: 0.12; box-shadow: 0 0 0 14px rgba(222, 70, 66, 0); }
  100% { transform: translateX(-50%) scale(1); opacity: 0.3; }
}

/* Cards de Comodidades */
.ub-amenity-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: 10px;
  margin-top: 16px;
}

.ub-amenity-card {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 11px 12px;
  background: #ffffff;
  border: 1.5px solid var(--ub-line);
  border-radius: 12px;
  cursor: pointer;
  user-select: none;
  transition: all 0.14s ease;
}

.ub-amenity-card:hover {
  border-color: #beb5c7;
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(47, 26, 69, 0.04);
}

.ub-amenity-card.selected {
  border-color: var(--ub-ink);
  background: #faf8fc;
  box-shadow: 0 3px 10px rgba(47, 26, 69, 0.06);
}

.ub-amenity-card__icon {
  width: 18px;
  height: 18px;
  color: var(--ub-ink);
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
}

.ub-amenity-card.selected .ub-amenity-card__icon {
  color: var(--ub-coral);
}

.ub-amenity-card__name {
  color: var(--ub-ink);
  font-size: 0.82rem;
  font-weight: 600;
  line-height: 1.2;
}

/* Galeria de Fotos e Dropzone */
.ub-gallery-box {
  background: #faf8fc;
  border: 2px dashed #bfb4c7;
  border-radius: 14px;
  padding: 24px 16px;
  text-align: center;
  cursor: pointer;
  transition: all 0.18s ease;
  margin-top: 10px;
}

.ub-gallery-box:hover {
  border-color: var(--ub-coral);
  background: #fff6f5;
}

.ub-gallery-box__icon {
  width: 36px;
  height: 36px;
  color: var(--ub-coral);
  margin-bottom: 8px;
}

.ub-photo-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: 12px;
  margin-top: 16px;
}

.ub-photo-item {
  position: relative;
  border-radius: 12px;
  overflow: hidden;
  border: 1.5px solid var(--ub-line);
  background: #fff;
  aspect-ratio: 4 / 3;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
}

.ub-photo-item.is-cover {
  border: 2px solid var(--ub-coral);
  box-shadow: 0 4px 14px rgba(222, 70, 66, 0.18);
}

.ub-photo-item__img-wrap {
  width: 100%;
  height: 100%;
  position: relative;
}

.ub-photo-item__img-wrap img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.ub-cover-badge {
  position: absolute;
  top: 6px;
  left: 6px;
  background: var(--ub-coral);
  color: #ffffff;
  font-size: 0.68rem;
  font-weight: 700;
  padding: 2px 6px;
  border-radius: 5px;
  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.20);
  display: inline-flex;
  align-items: center;
}

.ub-photo-item__actions {
  position: absolute;
  bottom: 5px;
  right: 5px;
  display: flex;
  gap: 3px;
  background: rgba(255, 255, 255, 0.92);
  backdrop-filter: blur(6px);
  padding: 3px;
  border-radius: 6px;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.10);
}

.ub-photo-btn {
  display: grid;
  place-items: center;
  width: 24px;
  height: 24px;
  border-radius: 5px;
  border: 0;
  background: transparent;
  color: var(--ub-ink);
  cursor: pointer;
  transition: background 0.12s ease;
}

.ub-photo-btn:hover {
  background: #eee8f3;
}

.ub-photo-btn--danger:hover {
  background: var(--ub-danger-soft);
  color: var(--ub-danger);
}

.ub-gallery-empty {
  grid-column: 1 / -1;
  padding: 18px;
  text-align: center;
  color: var(--ub-muted);
  font-size: 0.85rem;
  background: #fff;
  border: 1px dashed var(--ub-line);
  border-radius: 10px;
}

/* Card de Prévia ao Vivo */
.ub-preview-card {
  background: #ffffff;
  border: 1px solid var(--ub-line);
  border-radius: 16px;
  overflow: hidden;
  box-shadow: var(--ub-shadow-sm);
  margin-top: 16px;
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.ub-preview-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 24px rgba(47, 26, 69, 0.08);
}

.ub-preview-media {
  position: relative;
  height: 220px;
  width: 100%;
  background: #f1eef4;
}

.ub-preview-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.ub-preview-verified-badge {
  position: absolute;
  top: 12px;
  left: 12px;
  background: rgba(47, 26, 69, 0.85);
  backdrop-filter: blur(8px);
  color: #ffffff;
  font-size: 0.72rem;
  font-weight: 700;
  padding: 4px 9px;
  border-radius: 20px;
  display: inline-flex;
  align-items: center;
  gap: 4px;
}

.ub-preview-verified-badge svg {
  color: #2ed573;
}

.ub-preview-body {
  padding: 18px;
}

.ub-preview-price-tag {
  display: inline-block;
  font-size: 1.2rem;
  font-weight: 750;
  color: var(--ub-ink);
}

/* Resumo Rápido com Acesso Direto de Edição */
.ub-review-summary-box {
  background: #faf8fc;
  border: 1px solid var(--ub-line);
  border-radius: 14px;
  padding: 18px 20px;
}

.ub-review-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  background: #ffffff;
  border: 1px solid var(--ub-line);
  border-radius: 10px;
  padding: 10px 14px;
  transition: all 0.14s ease;
}

.ub-review-item:hover {
  border-color: #bfb4c7;
  transform: translateY(-1px);
}

.ub-review-item__info {
  display: flex;
  flex-direction: column;
  gap: 1px;
}

.ub-review-item__info strong {
  font-size: 0.82rem;
  color: var(--ub-ink);
}

.ub-review-item__info span {
  font-size: 0.78rem;
  max-width: 240px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Sugestões Rápidas de Título & Medidor de Descrição */
.ub-smart-chips {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
}

.js-title-chip {
  font-size: 0.75rem !important;
  border-radius: 6px;
  padding: 2px 8px !important;
  background: #f4f0f8;
  border: 1px solid #e1d9ea;
  color: var(--ub-ink) !important;
  transition: all 0.12s ease;
}

.js-title-chip:hover {
  background: var(--ub-ink) !important;
  color: #ffffff !important;
  border-color: var(--ub-ink);
}

.ub-desc-meter {
  background: #faf8fc;
  border-radius: 8px;
  padding: 8px 12px;
  border: 1px solid var(--ub-line);
}

.ub-amenity-card.is-hidden {
  display: none !important;
}

/* Barra Fixa de Navegação Inferior */
.ub-wizard-bottom-bar {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 1050;
  background: rgba(255, 255, 255, 0.98);
  backdrop-filter: blur(16px);
  border-top: 1px solid var(--ub-line);
  padding: 10px clamp(14px, 3vw, 36px);
  box-shadow: 0 -3px 16px rgba(47, 26, 69, 0.04);
}

.ub-wizard-bottom-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  max-width: 860px;
  margin: 0 auto;
  gap: 16px;
}

.ub-wizard-progress-wrap {
  flex: 1;
  max-width: 320px;
}

.ub-wizard-progress-track {
  height: 4px;
  background: #ece7f1;
  border-radius: 999px;
  overflow: hidden;
}

.ub-wizard-progress-fill {
  height: 100%;
  background: linear-gradient(90deg, var(--ub-coral), #ff847e);
  border-radius: 999px;
  transition: width 0.25s cubic-bezier(0.2, 0, 0, 1);
}

.ub-wizard-step-label {
  font-size: 0.74rem;
  font-weight: 650;
  color: var(--ub-muted);
  margin-top: 3px;
  text-align: center;
}

.ub-btn-wizard-next {
  min-width: 120px;
  border-radius: 10px;
  padding: 8px 22px !important;
  font-weight: 700 !important;
  font-size: 0.88rem !important;
}

.ub-confetti-canvas {
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  pointer-events: none;
  z-index: 9999;
}

/* ==========================================================================
   CADASTRO DE CONTA (SIGN-UP) ONBOARDING SYSTEM
   ========================================================================== */

.ub-segmented-control {
  display: flex;
  background: #f1edf4;
  padding: 3px;
  border-radius: 10px;
  margin-bottom: 14px;
}

.ub-segmented-btn {
  flex: 1;
  padding: 7px 10px;
  border: 0;
  border-radius: 8px;
  background: transparent;
  color: var(--ub-muted);
  font-size: 0.84rem;
  font-weight: 650;
  cursor: pointer;
  transition: all 0.15s ease;
}

.ub-segmented-btn.active {
  background: #ffffff;
  color: var(--ub-ink);
  box-shadow: 0 1px 4px rgba(47, 26, 69, 0.08);
}

.ub-password-meter {
  margin-top: 6px;
}

.ub-password-meter-track {
  height: 3px;
  background: #ebe6f0;
  border-radius: 999px;
  overflow: hidden;
  margin-bottom: 5px;
}

.ub-password-meter-bar {
  height: 100%;
  width: 0%;
  border-radius: 999px;
  transition: width 0.22s ease, background-color 0.22s ease;
}

.ub-password-checklist {
  list-style: none;
  padding: 0;
  margin: 6px 0 0;
  display: flex;
  flex-wrap: wrap;
  gap: 6px 14px;
}

.ub-password-req {
  font-size: 0.74rem;
  color: var(--ub-muted);
  display: flex;
  align-items: center;
  gap: 4px;
}

.ub-password-req.met {
  color: var(--ub-success);
  font-weight: 650;
}

.ub-password-req::before {
  content: '○';
  font-size: 0.75rem;
}

.ub-password-req.met::before {
  content: '✓';
}

@media (max-width: 767px) {
  .ub-category-grid,
  .ub-amenity-grid,
  .ub-photo-grid {
    grid-template-columns: repeat(2, 1fr);
  }
  .ub-wizard-wrap {
    padding-inline: 12px;
  }
}

/* ==========================================================
   Seletor de ícone (admin: Tipo de evento / Comodidade)
   ========================================================== */
.ub-icon-picker__trigger {
  display: flex;
  align-items: center;
  gap: 12px;
  width: 100%;
  padding: 10px 14px;
  background: var(--ub-surface);
  border: 1.5px solid var(--ub-line);
  border-radius: var(--ub-radius-sm);
  cursor: pointer;
  text-align: left;
  transition: border-color 0.14s ease, box-shadow 0.14s ease;
}

.ub-icon-picker__trigger:hover {
  border-color: #beb5c7;
}

.ub-icon-picker__trigger:focus-visible {
  outline: none;
  border-color: var(--ub-ink);
  box-shadow: 0 0 0 3px rgba(47, 26, 69, 0.1);
}

.ub-icon-picker__preview {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  flex-shrink: 0;
  border-radius: 10px;
  background: var(--ub-surface-2);
  color: var(--ub-ink);
}

.ub-icon-picker__trigger-text {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-width: 0;
}

.ub-icon-picker__trigger-text strong {
  font-size: 0.9rem;
  color: var(--ub-ink);
  text-transform: capitalize;
}

.ub-icon-picker__trigger-text small {
  color: var(--ub-muted);
  font-size: 0.78rem;
}

.ub-icon-picker__chevron {
  color: var(--ub-muted);
  flex-shrink: 0;
}

.ub-icon-picker__search {
  position: relative;
  margin-bottom: 14px;
}

.ub-icon-picker__search svg {
  position: absolute;
  left: 12px;
  top: 50%;
  transform: translateY(-50%);
  color: var(--ub-muted);
  width: 16px;
  height: 16px;
  pointer-events: none;
}

.ub-icon-picker__search input {
  padding-left: 38px;
}

.ub-icon-picker__grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(84px, 1fr));
  gap: 8px;
  max-height: 50vh;
  overflow-y: auto;
  padding-right: 4px;
}

.ub-icon-picker__item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  padding: 10px 6px;
  background: var(--ub-surface);
  border: 1.5px solid var(--ub-line);
  border-radius: var(--ub-radius-sm);
  cursor: pointer;
  transition: all 0.12s ease;
  color: var(--ub-ink);
}

.ub-icon-picker__item:hover {
  border-color: #beb5c7;
  transform: translateY(-1px);
}

.ub-icon-picker__item.selected {
  border-color: var(--ub-ink);
  background: #faf8fc;
  box-shadow: 0 3px 10px rgba(47, 26, 69, 0.08);
}

.ub-icon-picker__item.selected svg {
  color: var(--ub-coral);
}

.ub-icon-picker__item span:last-child {
  font-size: 0.68rem;
  color: var(--ub-muted);
  text-align: center;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 100%;
}

.ub-icon-picker__item.is-hidden {
  display: none;
}

.ub-icon-picker__empty {
  color: var(--ub-muted);
  text-align: center;
  padding: 24px 0;
  margin: 0;
}

/* ==========================================================================
   FLATPICKR CALENDAR - REDESIGN MODERNO E CORREÇÃO TOTAL DE LAYOUT
   Remove bordas nativas de select, alinha setas de navegação e formata dias/ranges
   ========================================================================== */

.flatpickr-calendar {
  width: 324px !important;
  background: #ffffff !important;
  border: 1.5px solid var(--ub-line, #ece7f3) !important;
  border-radius: 20px !important;
  box-shadow: 0 16px 40px rgba(47, 26, 69, 0.16), 0 2px 8px rgba(0, 0, 0, 0.05) !important;
  padding: 16px 14px 14px !important;
  box-sizing: border-box !important;
  font-family: var(--ub-font, 'Sora', system-ui, sans-serif) !important;
  text-align: center !important;
  overflow: visible !important;
  z-index: 10050 !important;
}

/* Oculta setas triangulares pontudas padrão */
.flatpickr-calendar:before,
.flatpickr-calendar:after {
  display: none !important;
}

/* Cabeçalho do Mês / Ano */
.flatpickr-months {
  position: relative !important;
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  height: 44px !important;
  min-height: 44px !important;
  padding: 0 4px !important;
  margin: 0 0 10px 0 !important;
  background: transparent !important;
}

.flatpickr-months .flatpickr-month {
  position: static !important;
  height: 44px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  background: transparent !important;
  overflow: visible !important;
  flex: 1 !important;
  margin: 0 !important;
  padding: 0 !important;
  color: var(--ub-ink, #2f1a45) !important;
}

.flatpickr-current-month {
  position: static !important;
  width: auto !important;
  left: auto !important;
  right: auto !important;
  top: auto !important;
  bottom: auto !important;
  transform: none !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 4px !important;
  padding: 0 !important;
  margin: 0 !important;
  height: 36px !important;
  line-height: 36px !important;
}

/* Select do Mês (Remove borda preta nativa e centraliza verticalmente) */
.flatpickr-current-month .flatpickr-monthDropdown-months {
  appearance: none !important;
  -webkit-appearance: none !important;
  -moz-appearance: none !important;
  background: transparent !important;
  border: 0 !important;
  outline: none !important;
  box-shadow: none !important;
  font-family: var(--ub-font, 'Sora', system-ui, sans-serif) !important;
  font-size: 1.05rem !important;
  font-weight: 800 !important;
  color: var(--ub-ink, #2f1a45) !important;
  cursor: pointer !important;
  padding: 0 8px !important;
  margin: 0 !important;
  height: 34px !important;
  line-height: 34px !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  vertical-align: middle !important;
  border-radius: 8px !important;
  transition: background-color 0.15s ease, color 0.15s ease !important;
}

.flatpickr-current-month .flatpickr-monthDropdown-months:hover,
.flatpickr-current-month .flatpickr-monthDropdown-months:focus {
  background: #f6f4f8 !important;
  color: var(--ub-coral, #ff625a) !important;
  outline: none !important;
  border: 0 !important;
}

.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month {
  background-color: #ffffff !important;
  color: var(--ub-ink, #2f1a45) !important;
  font-weight: 600 !important;
  padding: 6px 12px !important;
}

/* Input do Ano */
.flatpickr-current-month .numInputWrapper {
  width: auto !important;
  height: 34px !important;
  line-height: 34px !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  margin: 0 !important;
  padding: 0 !important;
  vertical-align: middle !important;
}

.flatpickr-current-month input.cur-year {
  appearance: textfield !important;
  -webkit-appearance: textfield !important;
  -moz-appearance: textfield !important;
  background: transparent !important;
  border: 0 !important;
  outline: none !important;
  box-shadow: none !important;
  font-family: var(--ub-font, 'Sora', system-ui, sans-serif) !important;
  font-size: 1.05rem !important;
  font-weight: 800 !important;
  color: var(--ub-ink, #2f1a45) !important;
  padding: 0 4px !important;
  margin: 0 !important;
  border-radius: 8px !important;
  width: 4.8ch !important;
  height: 34px !important;
  line-height: 34px !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  text-align: center !important;
  cursor: pointer !important;
  vertical-align: middle !important;
  transition: background-color 0.15s ease, color 0.15s ease !important;
}

.flatpickr-current-month input.cur-year:hover,
.flatpickr-current-month input.cur-year:focus {
  background: #f6f4f8 !important;
  color: var(--ub-coral, #ff625a) !important;
  outline: none !important;
}

.numInputWrapper span {
  display: none !important;
}

/* Botões Anterior e Próximo Mês: Centralização Perfeita com o Mês/Ano */
.flatpickr-months .flatpickr-prev-month,
.flatpickr-months .flatpickr-next-month {
  position: static !important;
  top: auto !important;
  left: auto !important;
  right: auto !important;
  transform: none !important;
  height: 34px !important;
  width: 34px !important;
  min-width: 34px !important;
  min-height: 34px !important;
  padding: 0 !important;
  margin: 0 !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  border-radius: 50% !important;
  background: #f6f4f8 !important;
  color: var(--ub-ink, #2f1a45) !important;
  cursor: pointer !important;
  flex-shrink: 0 !important;
  z-index: 10 !important;
  transition: all 0.15s ease !important;
}

.flatpickr-months .flatpickr-prev-month:hover,
.flatpickr-months .flatpickr-next-month:hover {
  background: #eee9f5 !important;
  color: var(--ub-coral, #ff625a) !important;
  transform: scale(1.08) !important;
}

.flatpickr-months .flatpickr-prev-month svg,
.flatpickr-months .flatpickr-next-month svg {
  width: 14px !important;
  height: 14px !important;
  display: block !important;
  margin: auto !important;
  fill: currentColor !important;
  stroke: currentColor !important;
}

/* Cabeçalho dos Dias da Semana */
.flatpickr-weekdays {
  height: 32px !important;
  background: transparent !important;
  display: flex !important;
  align-items: center !important;
  margin-bottom: 4px !important;
}

.flatpickr-weekdays .flatpickr-weekdaycontainer {
  display: grid !important;
  grid-template-columns: repeat(7, 1fr) !important;
  width: 100% !important;
}

span.flatpickr-weekday {
  font-family: inherit !important;
  font-size: 0.74rem !important;
  font-weight: 750 !important;
  color: #8e8399 !important;
  text-transform: uppercase !important;
  letter-spacing: 0.05em !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  line-height: 1 !important;
}

/* Grid de Dias */
.flatpickr-days {
  width: 100% !important;
  display: flex !important;
  justify-content: center !important;
}

.dayContainer {
  width: 100% !important;
  min-width: 100% !important;
  max-width: 100% !important;
  padding: 0 !important;
  display: grid !important;
  grid-template-columns: repeat(7, 1fr) !important;
  gap: 2px !important;
  transform: none !important;
}

.flatpickr-day {
  width: 38px !important;
  height: 38px !important;
  line-height: 38px !important;
  max-width: 38px !important;
  margin: 1px auto !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  border-radius: 50% !important;
  font-family: inherit !important;
  font-size: 0.88rem !important;
  font-weight: 600 !important;
  color: var(--ub-ink, #2f1a45) !important;
  background: transparent !important;
  border: 0 !important;
  transition: all 0.12s ease !important;
  user-select: none !important;
}

.flatpickr-day:hover {
  background: #f4effa !important;
  color: var(--ub-coral, #ff625a) !important;
  border: 0 !important;
}

/* Dias de outros meses (suavemente esmaecidos) */
.flatpickr-day.prevMonthDay,
.flatpickr-day.nextMonthDay {
  color: #c4bdce !important;
  font-weight: 400 !important;
  background: transparent !important;
  opacity: 0.55 !important;
}

.flatpickr-day.prevMonthDay:hover,
.flatpickr-day.nextMonthDay:hover {
  background: #f8f6fb !important;
  color: var(--ub-ink, #2f1a45) !important;
}

/* Dias Desabilitados / Passados */
.flatpickr-day.flatpickr-disabled,
.flatpickr-day.flatpickr-disabled:hover,
.flatpickr-day.notAllowed,
.flatpickr-day.notAllowed.prevMonthDay,
.flatpickr-day.notAllowed.nextMonthDay {
  color: #dad4e2 !important;
  background: transparent !important;
  cursor: not-allowed !important;
  opacity: 0.45 !important;
  text-decoration: line-through !important;
  text-decoration-color: #dad4e2 !important;
}

/* Dia Atual (Hoje) */
.flatpickr-day.today {
  color: var(--ub-coral, #ff625a) !important;
  font-weight: 850 !important;
  background: var(--ub-coral-soft, #fff2f1) !important;
  border: 0 !important;
  position: relative !important;
}

.flatpickr-day.today:hover {
  background: #ffe6e4 !important;
}

/* Dia Selecionado */
.flatpickr-day.selected,
.flatpickr-day.startRange,
.flatpickr-day.endRange {
  background: linear-gradient(135deg, #ff625a 0%, #de4642 100%) !important;
  color: #ffffff !important;
  font-weight: 850 !important;
  border-radius: 50% !important;
  box-shadow: 0 4px 12px rgba(255, 98, 90, 0.35) !important;
  border: 0 !important;
  opacity: 1 !important;
}

.flatpickr-day.selected:hover,
.flatpickr-day.startRange:hover,
.flatpickr-day.endRange:hover {
  background: linear-gradient(135deg, #ff716a 0%, #e5504c 100%) !important;
  color: #ffffff !important;
}

/* Faixa de Seleção de Intervalo (Check-in a Check-out) */
.flatpickr-day.inRange {
  background: #fff2f1 !important;
  color: var(--ub-coral-dark, #b52924) !important;
  border-radius: 0 !important;
  box-shadow: -5px 0 0 #fff2f1, 5px 0 0 #fff2f1 !important;
  font-weight: 650 !important;
  border: 0 !important;
}

.flatpickr-day.selected.startRange {
  border-radius: 50% 0 0 50% !important;
}

.flatpickr-day.selected.endRange {
  border-radius: 0 50% 50% 0 !important;
}

.flatpickr-day.selected.startRange.endRange {
  border-radius: 50% !important;
  box-shadow: 0 4px 12px rgba(255, 98, 90, 0.35) !important;
}

/* Seletor de Horas */
.flatpickr-time {
  height: 48px !important;
  line-height: 48px !important;
  max-height: 48px !important;
  border-top: 1px solid var(--ub-line, #ece7f3) !important;
  padding: 6px 10px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  background: #faf8fc !important;
  border-radius: 0 0 18px 18px !important;
  margin: 10px -14px -14px !important;
}

.flatpickr-time .numInputWrapper {
  height: 36px !important;
  flex: 1 !important;
}

.flatpickr-time input {
  font-family: inherit !important;
  font-size: 0.95rem !important;
  font-weight: 700 !important;
  color: var(--ub-ink, #2f1a45) !important;
  background: #ffffff !important;
  border: 1px solid var(--ub-line, #ece7f3) !important;
  border-radius: 8px !important;
  padding: 4px !important;
  height: 32px !important;
  line-height: 32px !important;
}

.flatpickr-time input:focus {
  border-color: var(--ub-coral, #ff625a) !important;
  outline: none !important;
}

.flatpickr-time .flatpickr-time-separator {
  font-weight: 800 !important;
  color: var(--ub-muted, #716381) !important;
  padding: 0 6px !important;
}

.flatpickr-time .flatpickr-am-pm {
  font-family: inherit !important;
  font-size: 0.85rem !important;
  font-weight: 750 !important;
  color: var(--ub-ink, #2f1a45) !important;
  background: #ffffff !important;
  border: 1px solid var(--ub-line, #ece7f3) !important;
  border-radius: 8px !important;
  height: 32px !important;
  line-height: 32px !important;
  padding: 0 10px !important;
  cursor: pointer !important;
  margin-left: 6px !important;
}

/* ==========================================================================
   BARRA DE PESQUISA & INPUTS - ELIMINAÇÃO DE BORDAS INTERNAS E FOCO DUPLO
   ========================================================================== */

.input-box {
  border: 1.5px solid var(--ub-line, #ece7f3) !important;
  border-radius: 999px !important;
  background: #ffffff !important;
  box-shadow: 0 2px 8px rgba(47, 26, 69, 0.04) !important;
  transition: border-color 0.2s ease, box-shadow 0.2s ease !important;
}

.input-box:focus-within {
  border-color: var(--ub-coral, #ff625a) !important;
  box-shadow: 0 0 0 3px rgba(255, 98, 90, 0.15), 0 4px 16px rgba(47, 26, 69, 0.08) !important;
}

/* Garante que nenhum input interno crie bordas, sombras ou retângulos internos */
.input-box input,
.input-box input:focus,
.input-box input:active,
.input-box input:hover,
.input-box .form-control,
.input-box .form-control:focus,
.input-box .form-control:active,
.input-box .form-control:hover,
.input-container input,
.input-container input:focus,
.input-container input:active,
.input-container input:hover,
.input-container .form-control,
.input-container .form-control:focus,
.input-container .form-control:active,
.input-container .form-control:hover {
  border: none !important;
  box-shadow: none !important;
  outline: none !important;
  background: transparent !important;
  padding-left: 0 !important;
}

.input-container {
  cursor: pointer;
  padding: 8px 14px !important;
  flex-grow: 1;
  border-radius: inherit;
  transition: background-color 0.15s ease !important;
}

.input-container span.form-label {
  font-size: 0.72rem !important;
  font-weight: 800 !important;
  letter-spacing: 0.06em !important;
  text-transform: uppercase !important;
  color: var(--ub-muted, #716381) !important;
  margin-bottom: 2px !important;
  display: block;
  transition: color 0.15s ease !important;
}

.input-container.active span.form-label,
.input-container:focus-within span.form-label {
  color: var(--ub-coral, #ff625a) !important;
}

.input-container.active,
.input-container:focus-within {
  background: rgba(255, 98, 90, 0.04) !important;
  box-shadow: none !important;
}




