/* ==========================================================================
   Cape Verde Trip — Formulário de Pedido de Viagem
   Ficheiro: cvt-form.css
   Adicionar ao CSS do tema WordPress.

   Estrutura de classes:
   .cvt-form-wrap          — wrapper externo (página inteira do formulário)
   .cvt-form-main          — coluna esquerda (steps + campos)
   .cvt-form-sidebar       — coluna direita (resumo + como funciona)
   .cvt-step               — cada um dos 4 passos
   .cvt-step-nav           — barra de progresso no topo
   ========================================================================== */

/* --------------------------------------------------------------------------
   VARIÁVEIS
   Centraliza cores e métricas — edita aqui para ajustar o design global.
   -------------------------------------------------------------------------- */
:root {
  --cvt-green:        #1D9E75;
  --cvt-green-dk:     #0F6E56;
  --cvt-green-lt:     #E8F5F0;
  --cvt-green-text:   #0A5C47;
  --cvt-amber:        #F59E0B;
  --cvt-red:          #E24B4A;
  --cvt-red-lt:       #FEF2F2;
  --cvt-tx:           #1A1917;
  --cvt-tx2:          #4B5563;
  --cvt-tx3:          #9CA3AF;
  --cvt-border:       #E5E7EB;
  --cvt-border-focus: #1D9E75;
  --cvt-bg:           #F9FAFB;
  --cvt-surf:         #FFFFFF;
  --cvt-radius:       10px;
  --cvt-radius-lg:    16px;
  --cvt-shadow:       0 1px 3px rgba(0,0,0,0.08), 0 1px 2px rgba(0,0,0,0.04);
  --cvt-shadow-md:    0 4px 16px rgba(0,0,0,0.08);
  --cvt-font:         'DM Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --cvt-font-serif:   'DM Serif Display', Georgia, serif;
  --cvt-transition:   150ms ease;
}

/* --------------------------------------------------------------------------
   RESET LEVE — apenas dentro do wrapper do formulário
   -------------------------------------------------------------------------- */
.cvt-form-wrap *,
.cvt-form-wrap *::before,
.cvt-form-wrap *::after {
  box-sizing: border-box;
}

/* --------------------------------------------------------------------------
   LAYOUT EXTERNO
   -------------------------------------------------------------------------- */
.cvt-form-page-header {
  background: linear-gradient(135deg, #0A5C47 0%, #1D9E75 100%);
  padding: 64px 24px 80px;
  text-align: left;
  position: relative;
  overflow: hidden;
}

.cvt-form-page-header::after {
  content: '';
  position: absolute;
  inset: 0;
  background: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 20"><path d="M0 20 Q50 0 100 20" fill="rgba(255,255,255,0.04)"/></svg>') bottom/cover no-repeat;
}

.cvt-form-page-header h1 {
  font-family: var(--cvt-font-serif);
  font-size: clamp(28px, 4vw, 44px);
  color: #fff;
  margin: 0 0 8px;
  line-height: 1.15;
}

.cvt-form-page-header h1 em {
  color: #6EE7B7;
  font-style: italic;
}

.cvt-form-page-header p {
  font-family: var(--cvt-font);
  font-size: 16px;
  color: rgba(255,255,255,0.82);
  margin: 0;
  max-width: 520px;
}

/* Card de benefícios (canto superior direito) */
.cvt-benefits-card {
  background: rgba(255,255,255,0.12);
  backdrop-filter: blur(12px);
  border: 1px solid rgba(255,255,255,0.2);
  border-radius: var(--cvt-radius-lg);
  padding: 20px 24px;
  max-width: 300px;
  float: right;
  margin-top: -8px;
}

.cvt-benefits-card h3 {
  font-family: var(--cvt-font);
  font-size: 14px;
  font-weight: 600;
  color: #fff;
  margin: 0 0 12px;
  display: flex;
  align-items: center;
  gap: 8px;
}

.cvt-benefits-card ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.cvt-benefits-card li {
  font-size: 13px;
  color: rgba(255,255,255,0.9);
  display: flex;
  align-items: center;
  gap: 8px;
}

.cvt-benefits-card li::before {
  content: '✓';
  width: 18px;
  height: 18px;
  background: var(--cvt-green);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 10px;
  font-weight: 700;
  color: #fff;
  flex-shrink: 0;
}

/* Wrapper principal abaixo do header */
.cvt-form-wrap {
  font-family: var(--cvt-font);
  color: var(--cvt-tx);
  background: var(--cvt-bg);
  min-height: 100vh;
  padding: 0 0 80px;
}

.cvt-form-inner {
  max-width: 1100px;
  margin: 0 auto;
  padding: 40px 24px 0;
  display: grid;
  grid-template-columns: 1fr 320px;
  gap: 32px;
  align-items: start;
}

/* --------------------------------------------------------------------------
   BARRA DE PROGRESSO (4 passos)
   -------------------------------------------------------------------------- */
.cvt-step-nav {
  display: flex;
  align-items: center;
  margin-bottom: 32px;
  gap: 0;
}

.cvt-step-nav-item {
  display: flex;
  align-items: center;
  gap: 10px;
  flex: 1;
  position: relative;
}

.cvt-step-nav-item:not(:last-child)::after {
  content: '';
  flex: 1;
  height: 2px;
  background: var(--cvt-border);
  margin: 0 12px;
  transition: background var(--cvt-transition);
}

.cvt-step-nav-item.completed:not(:last-child)::after {
  background: var(--cvt-green);
}

.cvt-step-num {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  border: 2px solid var(--cvt-border);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 13px;
  font-weight: 600;
  color: var(--cvt-tx3);
  background: var(--cvt-surf);
  transition: all var(--cvt-transition);
  flex-shrink: 0;
}

.cvt-step-nav-item.active .cvt-step-num {
  border-color: var(--cvt-green);
  background: var(--cvt-green);
  color: #fff;
}

.cvt-step-nav-item.completed .cvt-step-num {
  border-color: var(--cvt-green);
  background: var(--cvt-green-lt);
  color: var(--cvt-green-dk);
}

.cvt-step-nav-item.completed .cvt-step-num::after {
  content: '✓';
}

.cvt-step-nav-label {
  display: flex;
  flex-direction: column;
}

.cvt-step-nav-title {
  font-size: 13px;
  font-weight: 600;
  color: var(--cvt-tx2);
  line-height: 1.2;
}

.cvt-step-nav-sub {
  font-size: 11px;
  color: var(--cvt-tx3);
}

.cvt-step-nav-item.active .cvt-step-nav-title {
  color: var(--cvt-green-dk);
}

/* --------------------------------------------------------------------------
   CARD DE PASSO (cada secção do formulário)
   -------------------------------------------------------------------------- */
.cvt-step {
  background: var(--cvt-surf);
  border: 1px solid var(--cvt-border);
  border-radius: var(--cvt-radius-lg);
  padding: 28px 32px;
  margin-bottom: 20px;
  display: none; /* JS mostra o passo ativo */
}

.cvt-step.active {
  display: block;
}

.cvt-step-header {
  margin-bottom: 24px;
}

.cvt-step-header h2 {
  font-family: var(--cvt-font);
  font-size: 20px;
  font-weight: 700;
  color: var(--cvt-tx);
  margin: 0 0 4px;
  display: flex;
  align-items: center;
  gap: 10px;
}

.cvt-step-header h2 .cvt-step-icon {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: var(--cvt-green-lt);
  color: var(--cvt-green-dk);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 16px;
  flex-shrink: 0;
}

.cvt-step-header p {
  font-size: 14px;
  color: var(--cvt-tx2);
  margin: 0;
  line-height: 1.6;
}

/* --------------------------------------------------------------------------
   CAMPOS DO FORMULÁRIO
   -------------------------------------------------------------------------- */
.cvt-field-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  margin-bottom: 16px;
}

.cvt-field-row.single {
  grid-template-columns: 1fr;
}

.cvt-field-row.thirds {
  grid-template-columns: 1fr 1fr 1fr;
}

.cvt-field {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.cvt-field label {
  font-size: 13px;
  font-weight: 600;
  color: var(--cvt-tx);
  display: flex;
  align-items: center;
  gap: 4px;
}

.cvt-field label .cvt-required {
  color: var(--cvt-red);
  font-size: 14px;
  line-height: 1;
}

/* Inputs e selects */
.cvt-input,
.cvt-select {
  width: 100%;
  padding: 10px 14px;
  border: 1.5px solid var(--cvt-border);
  border-radius: var(--cvt-radius);
  font-family: var(--cvt-font);
  font-size: 14px;
  color: var(--cvt-tx);
  background: var(--cvt-surf);
  outline: none;
  transition: border-color var(--cvt-transition), box-shadow var(--cvt-transition);
  -webkit-appearance: none;
  appearance: none;
}

.cvt-input::placeholder {
  color: var(--cvt-tx3);
}

.cvt-input:focus,
.cvt-select:focus {
  border-color: var(--cvt-green);
  box-shadow: 0 0 0 3px rgba(29,158,117,0.12);
}

.cvt-input.error,
.cvt-select.error {
  border-color: var(--cvt-red);
  box-shadow: 0 0 0 3px rgba(226,75,74,0.10);
}

.cvt-field-error {
  font-size: 12px;
  color: var(--cvt-red);
  display: none;
  align-items: center;
  gap: 4px;
}

.cvt-field-error.visible {
  display: flex;
}

/* Telefone com prefixo */
.cvt-phone-group {
  display: flex;
  gap: 8px;
}

.cvt-phone-prefix {
  width: 110px;
  flex-shrink: 0;
}

.cvt-phone-number {
  flex: 1;
}

/* Select custom arrow */
.cvt-select-wrap {
  position: relative;
}

.cvt-select-wrap::after {
  content: '';
  position: absolute;
  right: 14px;
  top: 50%;
  transform: translateY(-50%);
  width: 0;
  height: 0;
  border-left: 5px solid transparent;
  border-right: 5px solid transparent;
  border-top: 6px solid var(--cvt-tx3);
  pointer-events: none;
}

/* Textarea */
.cvt-textarea {
  width: 100%;
  padding: 10px 14px;
  border: 1.5px solid var(--cvt-border);
  border-radius: var(--cvt-radius);
  font-family: var(--cvt-font);
  font-size: 14px;
  color: var(--cvt-tx);
  background: var(--cvt-surf);
  outline: none;
  resize: vertical;
  min-height: 100px;
  transition: border-color var(--cvt-transition), box-shadow var(--cvt-transition);
}

.cvt-textarea:focus {
  border-color: var(--cvt-green);
  box-shadow: 0 0 0 3px rgba(29,158,117,0.12);
}

.cvt-textarea::placeholder {
  color: var(--cvt-tx3);
}

/* --------------------------------------------------------------------------
   CHECKBOXES DE ILHAS (pill style)
   -------------------------------------------------------------------------- */
.cvt-islands-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 4px;
}

.cvt-island-option {
  position: relative;
}

.cvt-island-option input[type="checkbox"] {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}

.cvt-island-option label {
  display: inline-flex;
  align-items: center;
  padding: 7px 14px;
  border: 1.5px solid var(--cvt-border);
  border-radius: 20px;
  font-size: 13px;
  font-weight: 500;
  color: var(--cvt-tx2);
  cursor: pointer;
  background: var(--cvt-surf);
  transition: all var(--cvt-transition);
  user-select: none;
}

.cvt-island-option label:hover {
  border-color: var(--cvt-green);
  color: var(--cvt-green-dk);
  background: var(--cvt-green-lt);
}

.cvt-island-option input:checked + label {
  border-color: var(--cvt-green);
  background: var(--cvt-green);
  color: #fff;
  font-weight: 600;
}

/* --------------------------------------------------------------------------
   ESTILO DE VIAGEM (cards com ícone)
   -------------------------------------------------------------------------- */
.cvt-style-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
  gap: 10px;
  margin-top: 4px;
}

.cvt-style-option {
  position: relative;
}

.cvt-style-option input[type="checkbox"] {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}

.cvt-style-option label {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  padding: 14px 10px;
  border: 1.5px solid var(--cvt-border);
  border-radius: var(--cvt-radius);
  font-size: 12px;
  font-weight: 500;
  color: var(--cvt-tx2);
  cursor: pointer;
  background: var(--cvt-surf);
  text-align: center;
  transition: all var(--cvt-transition);
  user-select: none;
  line-height: 1.3;
}

.cvt-style-option label .cvt-style-icon {
  font-size: 20px;
  line-height: 1;
}

.cvt-style-option label:hover {
  border-color: var(--cvt-green);
  background: var(--cvt-green-lt);
  color: var(--cvt-green-dk);
}

.cvt-style-option input:checked + label {
  border-color: var(--cvt-green);
  background: var(--cvt-green-lt);
  color: var(--cvt-green-dk);
  font-weight: 600;
}

.cvt-style-option input:checked + label .cvt-style-icon {
  filter: none;
}

/* --------------------------------------------------------------------------
   FLEXIBILIDADE DE DATAS (dois botões tipo toggle)
   -------------------------------------------------------------------------- */
.cvt-date-flex-group {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin-bottom: 16px;
}

.cvt-date-flex-option {
  position: relative;
}

.cvt-date-flex-option input[type="radio"] {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}

.cvt-date-flex-option label {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 16px;
  border: 1.5px solid var(--cvt-border);
  border-radius: var(--cvt-radius);
  cursor: pointer;
  background: var(--cvt-surf);
  transition: all var(--cvt-transition);
}

.cvt-date-flex-option label .cvt-flex-icon {
  font-size: 22px;
  flex-shrink: 0;
}

.cvt-date-flex-option label .cvt-flex-text strong {
  display: block;
  font-size: 13px;
  font-weight: 600;
  color: var(--cvt-tx);
}

.cvt-date-flex-option label .cvt-flex-text span {
  font-size: 11px;
  color: var(--cvt-tx3);
}

.cvt-date-flex-option input:checked + label {
  border-color: var(--cvt-green);
  background: var(--cvt-green-lt);
}

.cvt-date-flex-option input:checked + label .cvt-flex-text strong {
  color: var(--cvt-green-dk);
}

/* Campos de datas (mostrados/ocultados por JS) */
.cvt-dates-exact,
.cvt-dates-flexible {
  display: none;
}

.cvt-dates-exact.visible,
.cvt-dates-flexible.visible {
  display: block;
}

/* --------------------------------------------------------------------------
   CONTADOR DE PAX (+/−)
   -------------------------------------------------------------------------- */
.cvt-pax-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  margin-bottom: 16px;
}

.cvt-pax-counter {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.cvt-pax-counter label {
  font-size: 13px;
  font-weight: 600;
  color: var(--cvt-tx);
}

.cvt-pax-counter label small {
  font-weight: 400;
  color: var(--cvt-tx3);
  font-size: 11px;
}

.cvt-counter-control {
  display: flex;
  align-items: center;
  gap: 0;
  border: 1.5px solid var(--cvt-border);
  border-radius: var(--cvt-radius);
  overflow: hidden;
  width: fit-content;
}

.cvt-counter-btn {
  width: 40px;
  height: 40px;
  border: none;
  background: var(--cvt-bg);
  color: var(--cvt-tx2);
  font-size: 18px;
  font-weight: 400;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background var(--cvt-transition);
  flex-shrink: 0;
  font-family: var(--cvt-font);
}

.cvt-counter-btn:hover {
  background: var(--cvt-green-lt);
  color: var(--cvt-green-dk);
}

.cvt-counter-btn:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}

.cvt-counter-val {
  width: 48px;
  text-align: center;
  font-size: 16px;
  font-weight: 700;
  color: var(--cvt-tx);
  border-left: 1px solid var(--cvt-border);
  border-right: 1px solid var(--cvt-border);
  padding: 0 8px;
  line-height: 40px;
}

/* Idades das crianças */
.cvt-children-ages {
  margin-top: 12px;
}

.cvt-children-ages label {
  font-size: 13px;
  font-weight: 600;
  color: var(--cvt-tx);
  margin-bottom: 8px;
  display: block;
}

.cvt-children-ages-list {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.cvt-age-chip {
  display: flex;
  align-items: center;
  gap: 6px;
  background: var(--cvt-bg);
  border: 1px solid var(--cvt-border);
  border-radius: 20px;
  padding: 4px 4px 4px 12px;
  font-size: 13px;
}

.cvt-age-chip input {
  width: 36px;
  border: none;
  background: transparent;
  font-size: 13px;
  font-weight: 600;
  color: var(--cvt-tx);
  text-align: center;
  outline: none;
}

.cvt-age-chip-remove {
  width: 20px;
  height: 20px;
  border-radius: 50%;
  border: none;
  background: var(--cvt-border);
  color: var(--cvt-tx2);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  line-height: 1;
  transition: background var(--cvt-transition);
}

.cvt-age-chip-remove:hover {
  background: var(--cvt-red);
  color: #fff;
}

.cvt-add-age-btn {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 4px 12px;
  border: 1.5px dashed var(--cvt-border);
  border-radius: 20px;
  background: transparent;
  color: var(--cvt-tx3);
  font-size: 13px;
  cursor: pointer;
  font-family: var(--cvt-font);
  transition: all var(--cvt-transition);
}

.cvt-add-age-btn:hover {
  border-color: var(--cvt-green);
  color: var(--cvt-green-dk);
}

/* --------------------------------------------------------------------------
   TIPO DE ALOJAMENTO (3 cards)
   -------------------------------------------------------------------------- */
.cvt-accommodation-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
  margin-top: 4px;
}

.cvt-accommodation-option {
  position: relative;
}

.cvt-accommodation-option input[type="radio"] {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}

.cvt-accommodation-option label {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  padding: 16px 12px;
  border: 1.5px solid var(--cvt-border);
  border-radius: var(--cvt-radius);
  cursor: pointer;
  background: var(--cvt-surf);
  text-align: center;
  transition: all var(--cvt-transition);
}

.cvt-accommodation-option label .cvt-acc-icon {
  font-size: 28px;
  line-height: 1;
}

.cvt-accommodation-option label .cvt-acc-name {
  font-size: 13px;
  font-weight: 700;
  color: var(--cvt-tx);
}

.cvt-accommodation-option label .cvt-acc-desc {
  font-size: 11px;
  color: var(--cvt-tx3);
  line-height: 1.4;
}

.cvt-accommodation-option label:hover {
  border-color: var(--cvt-green);
  background: var(--cvt-green-lt);
}

.cvt-accommodation-option input:checked + label {
  border-color: var(--cvt-green);
  background: var(--cvt-green-lt);
  box-shadow: 0 0 0 2px rgba(29,158,117,0.15);
}

.cvt-accommodation-option input:checked + label .cvt-acc-name {
  color: var(--cvt-green-dk);
}

/* --------------------------------------------------------------------------
   SELETOR DE AGENTE
   -------------------------------------------------------------------------- */
.cvt-agent-selector {
  margin-top: 4px;
}

.cvt-agent-select-wrap {
  position: relative;
}

.cvt-agent-select-wrap select {
  padding-left: 52px; /* espaço para a foto */
}

.cvt-agent-preview {
  margin-top: 10px;
  padding: 12px 14px;
  background: var(--cvt-green-lt);
  border: 1px solid rgba(29,158,117,0.2);
  border-radius: var(--cvt-radius);
  display: none;
  align-items: center;
  gap: 10px;
  font-size: 13px;
  color: var(--cvt-green-dk);
}

.cvt-agent-preview.visible {
  display: flex;
}

.cvt-agent-preview img {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  object-fit: cover;
  border: 2px solid var(--cvt-green);
}

.cvt-agent-preview strong {
  display: block;
  font-weight: 600;
}

.cvt-agent-preview small {
  color: var(--cvt-green-text);
  opacity: 0.8;
}

/* --------------------------------------------------------------------------
   CHECKBOX LEGAL (privacidade)
   -------------------------------------------------------------------------- */
.cvt-checkbox-field {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin-top: 8px;
}

.cvt-checkbox-field input[type="checkbox"] {
  width: 18px;
  height: 18px;
  margin-top: 2px;
  accent-color: var(--cvt-green);
  cursor: pointer;
  flex-shrink: 0;
}

.cvt-checkbox-field label {
  font-size: 13px;
  color: var(--cvt-tx2);
  line-height: 1.5;
  cursor: pointer;
}

.cvt-checkbox-field label a {
  color: var(--cvt-green-dk);
  text-decoration: underline;
}

/* --------------------------------------------------------------------------
   BOTÕES DE NAVEGAÇÃO ENTRE PASSOS
   -------------------------------------------------------------------------- */
.cvt-step-actions {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-top: 28px;
  padding-top: 20px;
  border-top: 1px solid var(--cvt-border);
  gap: 12px;
}

.cvt-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 12px 24px;
  border-radius: var(--cvt-radius);
  font-family: var(--cvt-font);
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  border: none;
  transition: all var(--cvt-transition);
  text-decoration: none;
}

.cvt-btn-primary {
  background: var(--cvt-green);
  color: #fff;
  flex: 1;
  justify-content: center;
}

.cvt-btn-primary:hover {
  background: var(--cvt-green-dk);
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(29,158,117,0.3);
}

.cvt-btn-primary:active {
  transform: translateY(0);
}

.cvt-btn-primary:disabled {
  opacity: 0.6;
  cursor: not-allowed;
  transform: none;
  box-shadow: none;
}

.cvt-btn-secondary {
  background: transparent;
  color: var(--cvt-tx2);
  border: 1.5px solid var(--cvt-border);
}

.cvt-btn-secondary:hover {
  border-color: var(--cvt-tx2);
  color: var(--cvt-tx);
}

/* Botão de submissão final */
.cvt-btn-submit {
  background: var(--cvt-green);
  color: #fff;
  width: 100%;
  justify-content: center;
  font-size: 16px;
  padding: 16px 32px;
  border-radius: var(--cvt-radius);
  margin-top: 8px;
  position: relative;
  overflow: hidden;
}

.cvt-btn-submit:hover {
  background: var(--cvt-green-dk);
}

.cvt-btn-submit.loading {
  pointer-events: none;
  opacity: 0.8;
}

.cvt-btn-submit .cvt-spinner {
  display: none;
  width: 16px;
  height: 16px;
  border: 2px solid rgba(255,255,255,0.4);
  border-top-color: #fff;
  border-radius: 50%;
  animation: cvt-spin 0.7s linear infinite;
}

.cvt-btn-submit.loading .cvt-spinner {
  display: block;
}

@keyframes cvt-spin {
  to { transform: rotate(360deg); }
}

.cvt-form-note {
  text-align: center;
  font-size: 12px;
  color: var(--cvt-tx3);
  margin-top: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
}

/* --------------------------------------------------------------------------
   SIDEBAR DIREITA
   -------------------------------------------------------------------------- */
.cvt-form-sidebar {
  position: sticky;
  top: 90px;
  display: flex;
  flex-direction: column;
  gap: 20px;
}

/* Card de resumo */
.cvt-summary-card {
  background: var(--cvt-surf);
  border: 1px solid var(--cvt-border);
  border-radius: var(--cvt-radius-lg);
  padding: 20px;
  box-shadow: var(--cvt-shadow);
}

.cvt-summary-card h3 {
  font-size: 14px;
  font-weight: 700;
  color: var(--cvt-tx);
  margin: 0 0 4px;
}

.cvt-summary-card .cvt-summary-sub {
  font-size: 12px;
  color: var(--cvt-tx3);
  margin: 0 0 16px;
}

/* Mapa de ilhas (placeholder ilustrativo) */
.cvt-islands-map {
  width: 100%;
  height: 100px;
  background: var(--cvt-green-lt);
  border-radius: var(--cvt-radius);
  margin-bottom: 14px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--cvt-green);
  font-size: 32px;
}

.cvt-summary-items {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.cvt-summary-item {
  display: flex;
  align-items: center;
  gap: 10px;
}

.cvt-summary-item-icon {
  width: 32px;
  height: 32px;
  border-radius: 8px;
  background: var(--cvt-bg);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 15px;
  flex-shrink: 0;
}

.cvt-summary-item-label {
  font-size: 11px;
  color: var(--cvt-tx3);
  line-height: 1.2;
}

.cvt-summary-item-value {
  font-size: 13px;
  font-weight: 600;
  color: var(--cvt-tx);
  line-height: 1.2;
}

.cvt-summary-item-value.empty {
  color: var(--cvt-tx3);
  font-weight: 400;
  font-style: italic;
}

/* Card "Como funciona" */
.cvt-how-card {
  background: var(--cvt-surf);
  border: 1px solid var(--cvt-border);
  border-radius: var(--cvt-radius-lg);
  padding: 20px;
  box-shadow: var(--cvt-shadow);
}

.cvt-how-card h3 {
  font-size: 14px;
  font-weight: 700;
  color: var(--cvt-tx);
  margin: 0 0 14px;
}

.cvt-how-steps {
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.cvt-how-step {
  display: flex;
  gap: 12px;
  align-items: flex-start;
}

.cvt-how-num {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: var(--cvt-green);
  color: #fff;
  font-size: 12px;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  margin-top: 2px;
}

.cvt-how-text strong {
  display: block;
  font-size: 13px;
  font-weight: 600;
  color: var(--cvt-tx);
  margin-bottom: 2px;
}

.cvt-how-text span {
  font-size: 12px;
  color: var(--cvt-tx3);
  line-height: 1.4;
}

/* Card de contacto */
.cvt-contact-card {
  background: var(--cvt-surf);
  border: 1px solid var(--cvt-border);
  border-radius: var(--cvt-radius-lg);
  padding: 20px;
}

.cvt-contact-card h3 {
  font-size: 14px;
  font-weight: 700;
  margin: 0 0 4px;
}

.cvt-contact-card p {
  font-size: 12px;
  color: var(--cvt-tx3);
  margin: 0 0 12px;
}

.cvt-contact-items {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.cvt-contact-item {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 13px;
  color: var(--cvt-tx2);
}

.cvt-contact-item a {
  color: var(--cvt-green-dk);
  text-decoration: none;
  font-weight: 500;
}

.cvt-contact-item a:hover {
  text-decoration: underline;
}

.cvt-contact-icon {
  width: 28px;
  height: 28px;
  border-radius: 6px;
  background: var(--cvt-green-lt);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  flex-shrink: 0;
}

/* --------------------------------------------------------------------------
   MENSAGENS DE ESTADO (sucesso / erro)
   -------------------------------------------------------------------------- */
.cvt-notice {
  padding: 14px 16px;
  border-radius: var(--cvt-radius);
  font-size: 14px;
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin-bottom: 16px;
}

.cvt-notice-success {
  background: var(--cvt-green-lt);
  border: 1px solid rgba(29,158,117,0.25);
  color: var(--cvt-green-text);
}

.cvt-notice-error {
  background: var(--cvt-red-lt);
  border: 1px solid rgba(226,75,74,0.2);
  color: #991B1B;
}

/* Estado de sucesso final (substitui o formulário após envio) */
.cvt-success-state {
  text-align: center;
  padding: 48px 32px;
  display: none;
}

.cvt-success-state.visible {
  display: block;
}

.cvt-success-icon {
  width: 64px;
  height: 64px;
  border-radius: 50%;
  background: var(--cvt-green-lt);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 32px;
  margin: 0 auto 20px;
}

.cvt-success-state h2 {
  font-size: 22px;
  font-weight: 700;
  margin-bottom: 8px;
}

.cvt-success-state p {
  font-size: 15px;
  color: var(--cvt-tx2);
  max-width: 420px;
  margin: 0 auto;
  line-height: 1.6;
}

/* --------------------------------------------------------------------------
   HONEYPOT (campo invisível anti-spam — NUNCA mostrar)
   -------------------------------------------------------------------------- */
.cvt-honeypot {
  position: absolute;
  left: -9999px;
  top: -9999px;
  opacity: 0;
  height: 0;
  overflow: hidden;
  pointer-events: none;
}

/* --------------------------------------------------------------------------
   RESPONSIVO
   -------------------------------------------------------------------------- */
@media (max-width: 900px) {
  .cvt-form-inner {
    grid-template-columns: 1fr;
  }

  .cvt-form-sidebar {
    position: static;
    order: -1; /* sidebar aparece acima do formulário em mobile */
  }

  .cvt-benefits-card {
    float: none;
    max-width: 100%;
    margin: 16px 0 0;
  }
}

@media (max-width: 640px) {
  .cvt-form-page-header {
    padding: 40px 20px 56px;
  }

  .cvt-step {
    padding: 20px 18px;
  }

  .cvt-field-row {
    grid-template-columns: 1fr;
  }

  .cvt-field-row.thirds {
    grid-template-columns: 1fr;
  }

  .cvt-step-nav-label {
    display: none; /* só o número em ecrãs pequenos */
  }

  .cvt-accommodation-grid {
    grid-template-columns: 1fr;
  }

  .cvt-style-grid {
    grid-template-columns: repeat(2, 1fr);
  }

  .cvt-date-flex-group {
    grid-template-columns: 1fr;
  }

  .cvt-pax-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 400px) {
  .cvt-form-inner {
    padding: 16px 14px 0;
  }

  .cvt-step-nav {
    gap: 4px;
  }
}


.cvt-group-tour-summary {
	background: var(--cvt-green-lt);
	border-radius: 12px;
	padding: 16px 18px;
	margin-bottom: 20px;
}
.cvt-group-tour-summary h3 { margin: 0 0 6px; font-size: 16px; font-weight: 700; color: var(--cvt-green-dk); }
.cvt-group-tour-summary p  { margin: 0; font-size: 13px; color: var(--cvt-tx2); }
