/* Ocultar CTA de abrir disponibilidade quando uma unidade foi selecionada no dropdown */
.ggbf-open-availability { display: none !important; }

/* Ocultar helper-text completo em modo unidade */
.ggbf-unit-selected .ggbf-helper-row,
.ggbf-unit-selected .ggbf-helper-text { display: none !important; }

/* Alinhar tipografia das opções das suites ao padrão do select */
#ggbf-search-target option { font-weight: 400; }
#ggbf-search-target option#ggbf-unit-separator { font-weight: 600; color: inherit; }
/**
 * Guest Grow Booking Form - Frontend Styles
 * 
 * CSS para o formulário de reservas off-canvas
 * 
 * @package GuestGrowBookingForm
 * @since 1.0.0
 */

/* ============================================================================
   CSS DEFENSIVO PARA BOTÕES - PROTEÇÃO CONTRA INTERFERÊNCIAS EXTERNAS
   ========================================================================= */

/* PROTEÇÃO MÁXIMA - Reset completo de todas as propriedades de botão */
#ggbf-off-canvas .ggbf-trigger-btn,
#ggbf-off-canvas .ggbf-btn,
#ggbf-off-canvas .ggbf-quantity-btn,
#ggbf-off-canvas .ggbf-nav-btn,
#ggbf-off-canvas .ggbf-calendar-nav-btn,
#ggbf-off-canvas .ggbf-close,
#ggbf-off-canvas .ggbf-gallery-nav button,
#ggbf-off-canvas .ggbf-calendar-day,
#ggbf-off-canvas .ggbf-datepicker-clear,
#ggbf-off-canvas .ggbf-datepicker-apply,
#ggbf-off-canvas .ggbf-datepicker-apply-close,
.ggbf-trigger-btn,
.ggbf-btn,
.ggbf-quantity-btn,
.ggbf-nav-btn,
.ggbf-calendar-nav-btn,
.ggbf-close,
.ggbf-gallery-nav button,
.ggbf-calendar-day,
.ggbf-datepicker-clear,
.ggbf-datepicker-apply,
.ggbf-datepicker-apply-close {
    /* Reset completo de herança */
    all: unset !important;
    
    /* Propriedades básicas obrigatórias */
    box-sizing: border-box !important;
    align-items: center !important;
    justify-content: center !important;
    cursor: pointer !important;
    
    /* Reset de propriedades comumente sobrescritas */
    margin: 0 !important;
    padding: 0 !important;
    border: none !important;
    outline: none !important;
    background: none !important;
    color: inherit !important;
    font: inherit !important;
    line-height: normal !important;
    overflow: visible !important;
    text-transform: none !important;
    -webkit-appearance: none !important;
    -moz-appearance: none !important;
    appearance: none !important;
    
    /* Neutralizar Bootstrap e outros frameworks */
    border-radius: 0 !important;
    box-shadow: none !important;
    text-decoration: none !important;
    vertical-align: baseline !important;
    white-space: nowrap !important;
    
    /* Garantir que :hover, :focus, :active não sejam sobrescritos */
    transition: none !important;
    transform: none !important;
}

/* Garantir que pseudo-elementos não interfiram */
#ggbf-off-canvas .ggbf-trigger-btn::before,
#ggbf-off-canvas .ggbf-trigger-btn::after,
#ggbf-off-canvas .ggbf-btn::before,
#ggbf-off-canvas .ggbf-btn::after,
#ggbf-off-canvas .ggbf-quantity-btn::before,
#ggbf-off-canvas .ggbf-quantity-btn::after,
#ggbf-off-canvas .ggbf-nav-btn::before,
#ggbf-off-canvas .ggbf-nav-btn::after,
#ggbf-off-canvas .ggbf-calendar-nav-btn::before,
#ggbf-off-canvas .ggbf-calendar-nav-btn::after,
#ggbf-off-canvas .ggbf-close::before,
#ggbf-off-canvas .ggbf-close::after,
#ggbf-off-canvas .ggbf-gallery-nav button::before,
#ggbf-off-canvas .ggbf-gallery-nav button::after,
#ggbf-off-canvas .ggbf-calendar-day::before,
#ggbf-off-canvas .ggbf-calendar-day::after,
#ggbf-off-canvas .ggbf-datepicker-clear::before,
#ggbf-off-canvas .ggbf-datepicker-clear::after,
#ggbf-off-canvas .ggbf-datepicker-apply::before,
#ggbf-off-canvas .ggbf-datepicker-apply::after,
#ggbf-off-canvas .ggbf-datepicker-apply-close::before,
#ggbf-off-canvas .ggbf-datepicker-apply-close::after,
.ggbf-trigger-btn::before,
.ggbf-trigger-btn::after,
.ggbf-btn::before,
.ggbf-btn::after,
.ggbf-quantity-btn::before,
.ggbf-quantity-btn::after,
.ggbf-nav-btn::before,
.ggbf-nav-btn::after,
.ggbf-calendar-nav-btn::before,
.ggbf-calendar-nav-btn::after,
.ggbf-close::before,
.ggbf-close::after,
.ggbf-gallery-nav button::before,
.ggbf-gallery-nav button::after,
.ggbf-calendar-day::before,
.ggbf-calendar-day::after,
.ggbf-datepicker-clear::before,
.ggbf-datepicker-clear::after,
.ggbf-datepicker-apply::before,
.ggbf-datepicker-apply::after,
.ggbf-datepicker-apply-close::before,
.ggbf-datepicker-apply-close::after {
    content: none !important;
    display: none !important;
}

/* REAPLICAÇÃO FORÇADA DOS ESTILOS ORIGINAIS COM ALTA ESPECIFICIDADE */

/* Botão Trigger - Força estilos originais */
#ggbf-off-canvas .ggbf-trigger-btn,
.ggbf-trigger-btn {
    background: linear-gradient(135deg, hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l)) 0%, hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), calc(var(--ggbf-primary-l) - 10%)) 100%) !important;
    color: white !important;
    border: none !important;
    padding: 12px 24px !important;
    border-radius: 6px !important;
    cursor: pointer !important;
    font-size: 16px !important;
    font-weight: 600 !important;
    transition: all 0.3s ease !important;
    text-decoration: none !important;
    display: inline-flex !important;
    align-items: center !important;
    gap: 8px !important;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif !important;
    text-transform: uppercase !important;
}

#ggbf-off-canvas .ggbf-trigger-btn:hover,
.ggbf-trigger-btn:hover {
    background: linear-gradient(135deg, hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), calc(var(--ggbf-primary-l) - 10%)) 0%, hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l)) 100%) !important;
    color: white !important;
    text-decoration: none !important;
}

#ggbf-off-canvas .ggbf-trigger-btn:active,
.ggbf-trigger-btn:active {
    background: linear-gradient(135deg, hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), calc(var(--ggbf-primary-l) - 10%)) 0%, hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l)) 100%) !important;
}

/* Botões principais - Força estilos originais */
#ggbf-off-canvas .ggbf-btn,
.ggbf-btn {
    padding: 12px 24px !important;
    border: none !important;
    border-radius: 6px !important;
    cursor: pointer !important;
    font-size: 14px !important;
    font-weight: 600 !important;
    transition: all 0.3s ease !important;
    text-decoration: none !important;
    align-items: center !important;
    gap: 8px !important;
    min-width: 120px !important;
    justify-content: center !important;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif !important;
    text-transform: uppercase !important;
}

/* Só força display quando o botão está visível */
#ggbf-off-canvas .ggbf-btn:not([style*="display: none"]),
.ggbf-btn:not([style*="display: none"]) {
    display: inline-flex !important;
}

/* Garante que botões hidden permaneçam hidden */
#ggbf-off-canvas .ggbf-btn[style*="display: none"],
.ggbf-btn[style*="display: none"] {
    display: none !important;
}

#ggbf-off-canvas .ggbf-btn:disabled,
#ggbf-off-canvas .ggbf-btn.ggbf-disabled,
.ggbf-btn:disabled,
.ggbf-btn.ggbf-disabled {
    opacity: 0.6 !important;
    cursor: not-allowed !important;
    pointer-events: none !important;
    background: #9ca3af !important;
    transform: none !important;
    box-shadow: none !important;
}

#ggbf-off-canvas .ggbf-btn-primary,
.ggbf-btn-primary {
    background: linear-gradient(135deg, hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l)) 0%, hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), calc(var(--ggbf-primary-l) - 10%)) 100%) !important;
    color: white !important;
}

#ggbf-off-canvas .ggbf-btn-primary:hover:not(:disabled),
.ggbf-btn-primary:hover:not(:disabled) {
    background: linear-gradient(135deg, hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), calc(var(--ggbf-primary-l) - 10%)) 0%, hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l)) 100%) !important;
}

/* Botão select-room - Full width */
#ggbf-off-canvas .ggbf-select-room,
.ggbf-select-room {
    width: 100% !important;
    min-width: auto !important;
}

#ggbf-off-canvas .ggbf-btn-secondary,
.ggbf-btn-secondary {
    background: #6c757d !important;
    color: white !important;
}

#ggbf-off-canvas .ggbf-btn-secondary:hover:not(:disabled),
.ggbf-btn-secondary:hover:not(:disabled) {
    background: #5a6268 !important;
}

#ggbf-off-canvas .ggbf-btn-success,
.ggbf-btn-success {
    background: linear-gradient(135deg, #28a745 0%, #1e7e34 100%) !important;
    color: white !important;
}

#ggbf-off-canvas .ggbf-btn-success:hover:not(:disabled),
.ggbf-btn-success:hover:not(:disabled) {
    background: linear-gradient(135deg, #1e7e34 0%, #28a745 100%) !important;
}

/* Botões de quantidade - Força estilos originais */
#ggbf-off-canvas .ggbf-quantity-btn,
.ggbf-quantity-btn {
    width: 32px !important;
    height: 32px !important;
    border: 1px solid #ddd !important;
    background: #f8f9fa !important;
    color: #333 !important;
    border-radius: 4px !important;
    cursor: pointer !important;
    font-size: 16px !important;
    font-weight: 600 !important;
    transition: all 0.2s ease !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    padding: 0 !important;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif !important;
}

#ggbf-off-canvas .ggbf-quantity-btn:hover,
.ggbf-quantity-btn:hover {
    background: #e9ecef !important;
    border-color: #adb5bd !important;
}

#ggbf-off-canvas .ggbf-quantity-btn:active,
.ggbf-quantity-btn:active {
    background: #dee2e6 !important;
}

#ggbf-off-canvas .ggbf-quantity-btn:disabled,
.ggbf-quantity-btn:disabled {
    opacity: 0.5 !important;
    cursor: not-allowed !important;
    background: #f8f9fa !important;
}

/* Botões de navegação - Design coerente com a UI */
#ggbf-off-canvas .ggbf-nav-btn,
.ggbf-nav-btn {
    position: absolute !important;
    top: 50% !important;
    transform: translateY(-50%) !important;
    width: 44px !important;
    height: 44px !important;
    background: linear-gradient(135deg, hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l)) 0%, hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), calc(var(--ggbf-primary-l) - 10%)) 100%) !important;
    color: white !important;
    border: none !important;
    border-radius: 8px !important;
    cursor: pointer !important;
    font-size: 16px !important;
    font-weight: 600 !important;
    transition: all 0.3s ease !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    z-index: 10 !important;
    opacity: 0.9 !important;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif !important;
    box-shadow: 0 2px 8px hsla(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l), 0.25) !important;
}

#ggbf-off-canvas .ggbf-nav-btn:hover,
.ggbf-nav-btn:hover {
    background: linear-gradient(135deg, hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), calc(var(--ggbf-primary-l) - 10%)) 0%, hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l)) 100%) !important;
    opacity: 1 !important;
    transform: translateY(-50%) !important;
    box-shadow: 0 4px 12px hsla(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l), 0.35) !important;
}

#ggbf-off-canvas .ggbf-nav-btn:focus,
.ggbf-nav-btn:focus {
    outline: 2px solid hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l)) !important;
    outline-offset: 2px !important;
}

#ggbf-off-canvas .ggbf-nav-btn:active,
.ggbf-nav-btn:active {
    transform: translateY(-50%) !important;
    background: linear-gradient(135deg, hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), calc(var(--ggbf-primary-l) - 10%)) 0%, hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l)) 100%) !important;
    box-shadow: 0 2px 4px hsla(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l), 0.3) !important;
}

/* Botões de calendário - Força estilos originais */
#ggbf-off-canvas .ggbf-calendar-nav-btn,
.ggbf-calendar-nav-btn {
    background: #f8f9fa !important;
    border: 1px solid #dee2e6 !important;
    color: #495057 !important;
    width: 32px !important;
    height: 32px !important;
    border-radius: 4px !important;
    cursor: pointer !important;
    font-size: 14px !important;
    font-weight: 600 !important;
    transition: all 0.2s ease !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    padding: 0 !important;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif !important;
}

#ggbf-off-canvas .ggbf-calendar-nav-btn:hover,
.ggbf-calendar-nav-btn:hover {
    background: #e9ecef !important;
    border-color: #adb5bd !important;
    color: #212529 !important;
}

#ggbf-off-canvas .ggbf-calendar-nav-btn:active,
.ggbf-calendar-nav-btn:active {
    background: #dee2e6 !important;
}

/* Botão de fechar - Design moderno e coerente */
#ggbf-off-canvas .ggbf-close,
.ggbf-close {
    background: rgba(255, 255, 255, 0.1) !important;
    border: 1px solid rgba(255, 255, 255, 0.3) !important;
    color: white !important;
    cursor: pointer !important;
    padding: 0 !important;
    border-radius: 5px !important;
    transition: all 0.3s ease !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 36px !important;
    height: 36px !important;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif !important;
    position: absolute !important;
    top: 20px !important;
    right: 20px !important;
    z-index: 100 !important;
    backdrop-filter: blur(5px) !important;
    -webkit-backdrop-filter: blur(5px) !important;
}

/* Ícone do botão close - Garantir cor branca e centralização */
#ggbf-off-canvas .ggbf-close .ggbf__text,
#ggbf-off-canvas .ggbf-close .ggbf-close-icon,
.ggbf-close .ggbf__text,
.ggbf-close .ggbf-close-icon {
    color: white !important;
    font-size: 18px !important;
    line-height: 1 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 100% !important;
    height: 100% !important;
}

#ggbf-off-canvas .ggbf-close:hover,
.ggbf-close:hover {
    background: rgba(255, 255, 255, 0.2) !important;
    border-color: rgba(255, 255, 255, 0.5) !important;
}

#ggbf-off-canvas .ggbf-close:active,
.ggbf-close:active {
    background: rgba(255, 255, 255, 0.15) !important;
}

/* Botões de navegação da galeria - Força estilos profissionais */
#ggbf-off-canvas .ggbf-gallery-nav,
.ggbf-gallery-nav {
    position: absolute !important;
    top: 50% !important;
    transform: translateY(-50%) !important;
    z-index: 10 !important;
    display: flex !important;
    gap: 10px !important;
    pointer-events: none !important;
}

#ggbf-off-canvas .ggbf-gallery-nav button,
.ggbf-gallery-nav button {
    width: 40px !important;
    height: 40px !important;
    background: rgba(0, 0, 0, 0.7) !important;
    color: white !important;
    border: none !important;
    border-radius: 50% !important;
    cursor: pointer !important;
    font-size: 18px !important;
    font-weight: bold !important;
    transition: all 0.3s ease !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    opacity: 0.8 !important;
    pointer-events: auto !important;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif !important;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3) !important;
}

#ggbf-off-canvas .ggbf-gallery-nav button:hover,
.ggbf-gallery-nav button:hover {
    background: rgba(0, 0, 0, 0.9) !important;
    opacity: 1 !important;
}

#ggbf-off-canvas .ggbf-gallery-nav button:active,
.ggbf-gallery-nav button:active {
    background: rgba(0, 0, 0, 0.7) !important;
}

#ggbf-off-canvas .ggbf-gallery-nav button:focus,
.ggbf-gallery-nav button:focus {
    outline: 2px solid hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l)) !important;
    outline-offset: 2px !important;
}

/* Posicionamento específico dos botões de navegação */
#ggbf-off-canvas .ggbf-nav-prev,
.ggbf-nav-prev {
    left: 10px !important;
}

#ggbf-off-canvas .ggbf-nav-next,
.ggbf-nav-next {
    right: 10px !important;
}

/* Botão select-room selecionado - Verde */
#ggbf-off-canvas .ggbf-select-room.selected,
.ggbf-select-room.selected {
    background: linear-gradient(135deg, #28a745 0%, #1e7e34 100%) !important;
    color: white !important;
}

/* Botão select-room selecionado no hover - Mantém verde */
#ggbf-off-canvas .ggbf-select-room.selected:hover,
.ggbf-select-room.selected:hover {
    background: linear-gradient(135deg, #218838 0%, #1c7430 100%) !important;
    color: white !important;
}

/* Células dos dias do calendário - Força estilos originais */
#ggbf-off-canvas .ggbf-calendar-day,
.ggbf-calendar-day {
    border: none !important;
    background: transparent !important;
    border-radius: 4px !important;
    cursor: pointer !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    font-size: 13px !important;
    font-weight: 500 !important;
    color: #333 !important;
    transition: all 0.2s ease !important;
    position: relative !important;
    height: 32px !important;
    pointer-events: auto !important;
    user-select: none !important;
    text-align: center !important;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif !important;
}

#ggbf-off-canvas .ggbf-calendar-day:hover,
.ggbf-calendar-day:hover {
    background: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), 97%) !important;
    color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l)) !important;
}

#ggbf-off-canvas .ggbf-calendar-day.disabled,
.ggbf-calendar-day.disabled {
    color: #ccc !important;
    cursor: not-allowed !important;
    background: transparent !important;
}

#ggbf-off-canvas .ggbf-calendar-day.disabled:hover,
.ggbf-calendar-day.disabled:hover {
    background: transparent !important;
    color: #ccc !important;
}

#ggbf-off-canvas .ggbf-calendar-day.other-month,
.ggbf-calendar-day.other-month {
    color: #ccc !important;
}

#ggbf-off-canvas .ggbf-calendar-day.today,
.ggbf-calendar-day.today {
    background: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), 97%) !important;
    color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l)) !important;
    font-weight: 600 !important;
}

#ggbf-off-canvas .ggbf-calendar-day.selected,
.ggbf-calendar-day.selected {
    background: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l)) !important;
    color: white !important;
    font-weight: 600 !important;
}

#ggbf-off-canvas .ggbf-calendar-day.in-range,
.ggbf-calendar-day.in-range {
    background: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), 95%) !important;
    color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l)) !important;
}

#ggbf-off-canvas .ggbf-calendar-day.range-start,
.ggbf-calendar-day.range-start {
    background: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l)) !important;
    color: white !important;
    font-weight: 600 !important;
}

#ggbf-off-canvas .ggbf-calendar-day.range-end,
.ggbf-calendar-day.range-end {
    background: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l)) !important;
    color: white !important;
    font-weight: 600 !important;
}

#ggbf-off-canvas .ggbf-calendar-day.range-start.range-end,
.ggbf-calendar-day.range-start.range-end {
    background: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l)) !important;
    color: white !important;
    font-weight: 600 !important;
}

/* Botão Limpar do datepicker - Força estilos originais */
#ggbf-off-canvas .ggbf-datepicker-clear,
.ggbf-datepicker-clear {
    background: transparent !important;
    border: 1px solid #e1e5e9 !important;
    color: #666 !important;
    padding: 8px 16px !important;
    border-radius: 6px !important;
    cursor: pointer !important;
    font-size: 12px !important;
    font-weight: 500 !important;
    transition: all 0.2s ease !important;
    pointer-events: auto !important;
    user-select: none !important;
    min-width: 80px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif !important;
    text-transform: uppercase !important;
}

#ggbf-off-canvas .ggbf-datepicker-clear:hover,
.ggbf-datepicker-clear:hover {
    background: #f0f0f0 !important;
    border-color: #ccc !important;
}

/* Botão Aplicar do datepicker - Força estilos originais */
#ggbf-off-canvas .ggbf-datepicker-apply,
.ggbf-datepicker-apply {
    background: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l)) !important;
    border: none !important;
    color: white !important;
    padding: 8px 24px !important;
    border-radius: 6px !important;
    cursor: pointer !important;
    font-size: 14px !important;
    font-weight: 600 !important;
    transition: all 0.2s ease !important;
    pointer-events: auto !important;
    user-select: none !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif !important;
    text-transform: uppercase !important;
}

#ggbf-off-canvas .ggbf-datepicker-apply:hover,
.ggbf-datepicker-apply:hover {
    background: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), calc(var(--ggbf-primary-l) - 10%)) !important;
}

#ggbf-off-canvas .ggbf-datepicker-apply:disabled,
.ggbf-datepicker-apply:disabled {
    background: #ccc !important;
    cursor: not-allowed !important;
    transform: none !important;
}

/* Botão Aplicar e Fechar do datepicker - Força estilos originais */
#ggbf-off-canvas .ggbf-datepicker-apply-close,
.ggbf-datepicker-apply-close {
    background: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l)) !important;
    border: none !important;
    color: white !important;
    padding: 8px 20px !important;
    border-radius: 6px !important;
    cursor: pointer !important;
    font-size: 12px !important;
    font-weight: 600 !important;
    transition: all 0.2s ease !important;
    pointer-events: auto !important;
    user-select: none !important;
    min-width: 120px !important;
    text-align: center !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif !important;
    text-transform: uppercase !important;
}

#ggbf-off-canvas .ggbf-datepicker-apply-close:hover,
.ggbf-datepicker-apply-close:hover {
    background: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), calc(var(--ggbf-primary-l) - 10%)) !important;
}

#ggbf-off-canvas .ggbf-datepicker-apply-close:disabled,
.ggbf-datepicker-apply-close:disabled {
    background: #ccc !important;
    cursor: not-allowed !important;
    transform: none !important;
}

/* ============================================================================
   RESPONSIVIDADE PARA BOTÕES - MOBILE E DESKTOP
   ========================================================================= */

/* Mobile: Ajustes para telas pequenas */
@media (max-width: 768px) {
    /* Botão trigger - Tamanho menor em mobile */
    #ggbf-off-canvas .ggbf-trigger-btn,
    .ggbf-trigger-btn {
        padding: 10px 20px !important;
        font-size: 14px !important;
        min-width: auto !important;
    }
    
    /* Botões principais - Ajuste para mobile */
    #ggbf-off-canvas .ggbf-btn,
    .ggbf-btn {
        padding: 10px 20px !important;
        font-size: 13px !important;
        min-width: 100px !important;
        gap: 6px !important;
    }
    
    /* Footer com botões - Layout otimizado para mobile */
    .ggbf-navigation {
        flex-direction: row !important;
        gap: 8px !important;
        padding: 12px 15px !important;
        justify-content: space-between !important;
    }
    
    #ggbf-off-canvas .ggbf-btn {
        flex: 1 !important;
        max-width: calc(50% - 4px) !important;
        min-width: auto !important;
        justify-content: center !important;
    }
    
    /* Quando só há um botão visível, centralizar - Fallback para todos os navegadores */
    .ggbf-navigation {
        align-items: center !important;
    }
    
    /* Estilo específico para botão único (aplicado via JS quando necessário) */
    .ggbf-navigation.single-button {
        justify-content: center !important;
    }
    
    .ggbf-navigation.single-button .ggbf-btn {
        max-width: 200px !important;
        flex: none !important;
    }
    
    /* Fallback CSS moderno para navegadores que suportam :has() */
    @supports selector(:has(*)) {
        .ggbf-navigation:has(.ggbf-btn:only-of-type:not([style*="display: none"])) {
            justify-content: center !important;
        }
        
        .ggbf-navigation:has(.ggbf-btn:only-of-type:not([style*="display: none"])) .ggbf-btn {
            max-width: 200px !important;
            flex: none !important;
        }
    }
    
    /* Botão de fechar - Posição ajustada */
    #ggbf-off-canvas .ggbf-close,
    .ggbf-close {
        top: 15px !important;
        right: 15px !important;
        width: 32px !important;
        height: 32px !important;
        padding: 6px !important;
    }
    
    /* Botões de galeria - Tamanho menor */
    #ggbf-off-canvas .ggbf-gallery-nav button,
    .ggbf-gallery-nav button {
        width: 36px !important;
        height: 36px !important;
        font-size: 16px !important;
    }
    
    #ggbf-off-canvas .ggbf-nav-prev,
    .ggbf-nav-prev {
        left: 5px !important;
    }
    
    #ggbf-off-canvas .ggbf-nav-next,
    .ggbf-nav-next {
        right: 5px !important;
    }
    
    /* Botões de quantidade - Touch friendly */
    #ggbf-off-canvas .ggbf-quantity-btn,
    .ggbf-quantity-btn {
        width: 36px !important;
        height: 36px !important;
        font-size: 18px !important;
    }
    
    /* Botões de calendário - Touch friendly */
    #ggbf-off-canvas .ggbf-calendar-nav-btn,
    .ggbf-calendar-nav-btn {
        width: 36px !important;
        height: 36px !important;
        font-size: 16px !important;
    }
    
    /* Células dos dias - Touch friendly */
    #ggbf-off-canvas .ggbf-calendar-day,
    .ggbf-calendar-day {
        height: 36px !important;
        font-size: 14px !important;
        border-radius: 6px !important;
    }
    
    /* Botões do footer do datepicker - Mobile otimizado */
    #ggbf-off-canvas .ggbf-datepicker-clear,
    .ggbf-datepicker-clear {
        padding: 10px 14px !important;
        font-size: 13px !important;
        min-width: 70px !important;
    }
    
    #ggbf-off-canvas .ggbf-datepicker-apply,
    #ggbf-off-canvas .ggbf-datepicker-apply-close,
    .ggbf-datepicker-apply,
    .ggbf-datepicker-apply-close {
        padding: 10px 18px !important;
        font-size: 13px !important;
        min-width: 100px !important;
    }
}

/* Tablet: Ajustes para telas médias */
@media (min-width: 769px) and (max-width: 1024px) {
    /* Botões principais - Tamanho intermediário */
    #ggbf-off-canvas .ggbf-btn,
    .ggbf-btn {
        padding: 11px 22px !important;
        font-size: 13px !important;
        min-width: 110px !important;
    }
    
    /* Footer - Espaçamento ajustado */
    .ggbf-navigation {
        gap: 10px !important;
        padding: 18px !important;
    }
}

/* Desktop: Otimizações para telas grandes */
@media (min-width: 1025px) {
    /* Botões principais - Tamanho completo */
    #ggbf-off-canvas .ggbf-btn,
    .ggbf-btn {
        padding: 12px 24px !important;
        font-size: 14px !important;
        min-width: 120px !important;
    }
    
    /* Efeitos hover mais pronunciados - sem movimento */
    #ggbf-off-canvas .ggbf-btn:hover:not(:disabled),
    .ggbf-btn:hover:not(:disabled) {
        /* Efeito hover suave sem movimento */
        filter: brightness(1.05) !important;
    }
    
    #ggbf-off-canvas .ggbf-gallery-nav button:hover,
    .ggbf-gallery-nav button:hover {
        /* Efeito hover suave sem movimento */
        filter: brightness(1.1) !important;
    }
}

/* ============================================================================
   HIERARQUIA TIPOGRÁFICA - MELHORES PRÁTICAS UI DESIGN
   ========================================================================= */

/* DESKTOP - Hierarquia tipográfica profissional */
#ggbf-off-canvas h1,
.ggbf-container h1 {
    font-size: 32px !important;
}

#ggbf-off-canvas h2,
.ggbf-container h2 {
    font-size: 28px !important;
}

#ggbf-off-canvas h3,
.ggbf-container h3 {
    font-size: 24px !important;
}

#ggbf-off-canvas h4,
.ggbf-container h4 {
    font-size: 20px !important;
}

#ggbf-off-canvas h5,
.ggbf-container h5 {
    font-size: 18px !important;
}

#ggbf-off-canvas h6,
.ggbf-container h6 {
    font-size: 16px !important;
}

#ggbf-off-canvas p,
.ggbf-container p {
    font-size: 15px !important;
}

#ggbf-off-canvas small,
.ggbf-container small {
    font-size: 14px !important;
}

/* TABLET - Redução suave para telas médias */
@media (max-width: 1024px) {
    #ggbf-off-canvas h1,
    .ggbf-container h1 {
        font-size: 30px !important;
    }

    #ggbf-off-canvas h2,
    .ggbf-container h2 {
        font-size: 26px !important;
    }

    #ggbf-off-canvas h3,
    .ggbf-container h3 {
        font-size: 22px !important;
    }

    #ggbf-off-canvas h4,
    .ggbf-container h4 {
        font-size: 19px !important;
    }

    #ggbf-off-canvas h5,
    .ggbf-container h5 {
        font-size: 17px !important;
    }

    #ggbf-off-canvas h6,
    .ggbf-container h6 {
        font-size: 15px !important;
    }

    #ggbf-off-canvas p,
    .ggbf-container p {
        font-size: 15px !important;
    }
}

/* MOBILE - Hierarquia responsiva mantendo legibilidade */
@media (max-width: 768px) {
    #ggbf-off-canvas h1,
    .ggbf-container h1 {
        font-size: 26px !important;
    }

    #ggbf-off-canvas h2,
    .ggbf-container h2 {
        font-size: 23px !important;
    }

    #ggbf-off-canvas h3,
    .ggbf-container h3 {
        font-size: 20px !important;
    }

    #ggbf-off-canvas h4,
    .ggbf-container h4 {
        font-size: 18px !important;
    }

    #ggbf-off-canvas h5,
    .ggbf-container h5 {
        font-size: 16px !important;
    }

    #ggbf-off-canvas h6,
    .ggbf-container h6 {
        font-size: 15px !important;
    }

    #ggbf-off-canvas p,
    .ggbf-container p {
        font-size: 15px !important;
    }

    #ggbf-off-canvas small,
    .ggbf-container small {
        font-size: 13px !important;
    }
}

/* MOBILE PEQUENO - Ajustes finais para telas muito pequenas */
@media (max-width: 480px) {
    #ggbf-off-canvas h1,
    .ggbf-container h1 {
        font-size: 24px !important;
    }

    #ggbf-off-canvas h2,
    .ggbf-container h2 {
        font-size: 21px !important;
    }

    #ggbf-off-canvas h3,
    .ggbf-container h3 {
        font-size: 19px !important;
    }

    #ggbf-off-canvas h4,
    .ggbf-container h4 {
        font-size: 17px !important;
    }

    #ggbf-off-canvas h5,
    .ggbf-container h5 {
        font-size: 15px !important;
    }

    #ggbf-off-canvas h6,
    .ggbf-container h6 {
        font-size: 14px !important;
    }

    #ggbf-off-canvas p,
    .ggbf-container p {
        font-size: 15px !important;
    }

    #ggbf-off-canvas small,
    .ggbf-container small {
        font-size: 12px !important;
    }
}

/* Touch devices: Remover hover effects */
@media (hover: none) and (pointer: coarse) {
    #ggbf-off-canvas .ggbf-btn:hover:not(:disabled),
    #ggbf-off-canvas .ggbf-trigger-btn:hover,
    #ggbf-off-canvas .ggbf-close:hover,
    #ggbf-off-canvas .ggbf-gallery-nav button:hover,
    #ggbf-off-canvas .ggbf-quantity-btn:hover,
    #ggbf-off-canvas .ggbf-calendar-nav-btn:hover,
    #ggbf-off-canvas .ggbf-calendar-day:hover,
    #ggbf-off-canvas .ggbf-datepicker-clear:hover,
    #ggbf-off-canvas .ggbf-datepicker-apply:hover,
    #ggbf-off-canvas .ggbf-datepicker-apply-close:hover,
    .ggbf-btn:hover:not(:disabled),
    .ggbf-trigger-btn:hover,
    .ggbf-close:hover,
    .ggbf-gallery-nav button:hover,
    .ggbf-quantity-btn:hover,
    .ggbf-calendar-nav-btn:hover,
    .ggbf-calendar-day:hover,
    .ggbf-datepicker-clear:hover,
    .ggbf-datepicker-apply:hover,
    .ggbf-datepicker-apply-close:hover {
        transform: none !important;
    }
    
    /* Manter apenas efeitos de active para feedback tátil */
    #ggbf-off-canvas .ggbf-btn:active,
    #ggbf-off-canvas .ggbf-trigger-btn:active,
    #ggbf-off-canvas .ggbf-close:active,
    #ggbf-off-canvas .ggbf-gallery-nav button:active,
    #ggbf-off-canvas .ggbf-calendar-day:active,
    #ggbf-off-canvas .ggbf-datepicker-clear:active,
    #ggbf-off-canvas .ggbf-datepicker-apply:active,
    #ggbf-off-canvas .ggbf-datepicker-apply-close:active,
    .ggbf-btn:active,
    .ggbf-trigger-btn:active,
    .ggbf-close:active,
    .ggbf-gallery-nav button:active,
    .ggbf-calendar-day:active,
    .ggbf-datepicker-clear:active,
    .ggbf-datepicker-apply:active,
    .ggbf-datepicker-apply-close:active {
        transform: scale(0.95) !important;
    }
}

/* ============================================================================
   RESET E BASE
   ========================================================================= */

.ggbf-off-canvas,
.ggbf-off-canvas * {
    box-sizing: border-box;
}

.ggbf-off-canvas {
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    line-height: 1.6;
    color: #333;
}

/* ============================================================================
   CLASSES DE NAMESPACING PARA TÍTULOS E TEXTOS
   ========================================================================= */

/* Classe base para todos os títulos (h1, h2, h3, h4, h5, h6) */
.ggbf__title {
    /* Reset completo de herança */
    all: unset;
    display: block;
    
    /* Definições explícitas para evitar herança do tema */
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif !important;
    line-height: 1.4 !important;
    text-align: left !important;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    
    /* Aplicação dos estilos padrão do plugin */
    margin: 0 0 24px 0 !important;
    color: #2c3e50 !important;
    font-size: 18px !important;
    font-weight: 600 !important;
}

/* Classe base para todos os textos (p, span, small, etc.) */
.ggbf__text {
    /* Reset completo de herança */
    all: unset;
    display: inline;
    
    /* Definições explícitas para evitar herança do tema */
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif !important;
    line-height: 1.6 !important;
    text-align: left !important;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    
    /* Aplicação dos estilos padrão do plugin */
    margin: 0 !important;
    color: #333 !important;
    font-size: 14px !important;
    font-weight: 400 !important;
}

/* Classe base para todos os labels */
.ggbf__label {
    /* Reset completo de herança */
    all: unset;
    display: block;
    
    /* Definições explícitas para evitar herança do tema */
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif !important;
    line-height: 1.4 !important;
    text-align: left !important;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    
    /* Aplicação dos estilos padrão do plugin */
    margin: 0 0 6px 0 !important;
    color: #495057 !important;
    font-size: 14px !important;
    font-weight: 500 !important;
}

/* Ajustes específicos para elementos com ggbf__text quando são parágrafos */
.ggbf__text:where(p) {
    display: block !important;
    margin: 0 0 0 0 !important;
}

/* Ajustes específicos para elementos com ggbf__text quando são small */
.ggbf__text:where(small) {
    font-size: 12px !important;
}

/* Ajustes específicos para elementos com ggbf__text quando são strong */
.ggbf__text:where(strong) {
    font-weight: 600 !important;
}

/* Ajustes específicos para elementos com ggbf__text quando são li */
.ggbf__text:where(li) {
    display: list-item !important;
    margin: 0 0 8px 0 !important;
    list-style: disc !important;
    list-style-position: outside !important;
}

/* ============================================================================
   PRESERVAÇÃO DE ESTILOS ESPECÍFICOS EXISTENTES
   ========================================================================= */

/* Títulos de seções com estilos específicos preservados */
.ggbf__title.ggbf-room-name {
    font-size: 16px !important;
    font-weight: 600 !important;
    margin: 0 0 8px 0 !important;
}

.ggbf__title.ggbf-extra-name {
    font-size: 16px !important;
    font-weight: 600 !important;
    margin: 0 !important;
}

/* Textos de preço com estilos específicos preservados */
.ggbf__text.ggbf-price-amount {
    font-size: 18px !important;
    font-weight: 600 !important;
    color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l)) !important;
}

.ggbf__text.ggbf-price-unit {
    font-size: 12px !important;
    color: #6c757d !important;
}

.ggbf__text.ggbf-price-type {
    font-size: 12px !important;
    color: #6b7280 !important;
}

/* Textos de feature/características */
.ggbf__text.ggbf-feature {
    font-size: 12px !important;
    color: #6c757d !important;
    background: #f8f9fa !important;
    padding: 4px 8px !important;
    border-radius: 4px !important;
    display: flex !important;
    align-items: center !important;
    gap: 6px !important;
}

/* Textos do resumo */
.ggbf__text.ggbf-summary-label {
    color: #6c757d !important;
    font-size: 14px !important;
}

.ggbf__text.ggbf-summary-value {
    font-weight: 500 !important;
    color: #2c3e50 !important;
    font-size: 14px !important;
}

/* Textos de pagamento */
.ggbf__text.ggbf-payment-name {
    font-size: 16px !important;
    color: #333 !important;
}

.ggbf__text.ggbf-payment-note {
    color: #666 !important;
    font-size: 12px !important;
    font-style: italic !important;
}

/* Badge obrigatório */
.ggbf__text.ggbf-mandatory-badge {
    background: linear-gradient(135deg, #dc2626, #ef4444) !important;
    color: white !important;
    padding: 6px 12px !important;
    border-radius: 20px !important;
    font-size: 12px !important;
    font-weight: 600 !important;
    text-transform: uppercase !important;
    letter-spacing: 0.5px !important;
    box-shadow: 0 2px 4px rgba(220, 38, 38, 0.3) !important;
    display: inline-block !important;
}

/* Labels específicos */
.ggbf__label.ggbf-quantity-label {
    font-size: 13px !important;
    font-weight: 600 !important;
    color: #495057 !important;
    margin: 0 0 8px 0 !important;
}

/* Textos de toggle/switch */
.ggbf__text.ggbf-toggle-label {
    font-size: 14px !important;
    font-weight: 500 !important;
    color: #374151 !important;
}

/* Textos de informação de quantidade */
.ggbf__text.ggbf-quantity-info {
    font-size: 12px !important;
    color: #6c757d !important;
    font-style: italic !important;
}

/* ============================================================================
   BOTÃO TRIGGER
   ========================================================================= */

.ggbf-trigger-btn {
    background: linear-gradient(135deg, hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l)) 0%, hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), calc(var(--ggbf-primary-l) - 10%)) 100%);
    color: white;
    border: none;
    padding: 12px 24px;
    border-radius: 6px;
    cursor: pointer;
    font-size: 16px;
    font-weight: 600;
    transition: all 0.3s ease;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    box-shadow: 0 2px 8px hsla(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l), 0.3);
}

.ggbf-trigger-btn:hover {
    background: linear-gradient(135deg, hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), calc(var(--ggbf-primary-l) - 10%)) 0%, hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l)) 100%);
    transform: translateY(-2px);
    box-shadow: 0 4px 16px hsla(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l), 0.4);
    color: white;
    text-decoration: none;
}

.ggbf-trigger-btn:active {
    transform: translateY(0);
}



/* ============================================================================
   OFF-CANVAS CONTAINER
   ========================================================================= */

.ggbf-off-canvas {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 999999;
    visibility: hidden;
    opacity: 0;
    transition: all 0.3s ease;
    background: rgba(0, 0, 0, 0);
}

.ggbf-off-canvas.active {
    visibility: visible;
    opacity: 1;
    background: rgba(0, 0, 0, 0.5);
}

.ggbf-overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    cursor: pointer;
}

/* ============================================================================
   CANVAS PRINCIPAL
   ========================================================================= */

.ggbf-canvas {
    position: absolute;
    top: 0;
    right: 0;
    width: 600px;
    max-width: 90vw;
    height: 100%;
    background: white;
    box-shadow: -5px 0 20px rgba(0, 0, 0, 0.1);
    transform: translateX(100%);
    transition: transform 0.3s ease;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.ggbf-off-canvas.active .ggbf-canvas {
    transform: translateX(0);
}

/* ============================================================================
   HEADER
   ========================================================================= */

.ggbf-header {
    background: linear-gradient(135deg, hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l)) 0%, hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), calc(var(--ggbf-primary-l) - 10%)) 100%);
    color: white;
    padding: 20px 24px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-shrink: 0;
}

.ggbf-title {
    margin: 0;
    font-size: 20px;
    font-weight: 600;
}

.ggbf-close {
    background: none;
    border: none;
    color: white;
    cursor: pointer;
    padding: 8px;
    border-radius: 50%;
    transition: background 0.2s ease;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
}

.ggbf-close:hover {
    background: rgba(255, 255, 255, 0.1);
}

.ggbf-close-icon {
    font-size: 24px;
    line-height: 1;
}

/* ============================================================================
   PROGRESS BAR
   ========================================================================= */

.ggbf-progress-bar {
    --ggbf-progress-offset: 56px; /* distância da linha aos extremos (centro dos círculos) */
    --ggbf-circle-size: 36px;
    --ggbf-line-thickness: 3px;
    --ggbf-padding-y: 18px; /* igual ao padding-top/bottom */
    --ggbf-line-top: calc(var(--ggbf-padding-y) + (var(--ggbf-circle-size) / 2));
    background: #f8f9fb;
    border-bottom: 1px solid #e6e9ee;
    padding: var(--ggbf-padding-y) 20px;
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 12px;
    align-items: center;
    flex-shrink: 0;
    overflow-x: hidden;
    scrollbar-width: none;
    -ms-overflow-style: none;
    position: relative;
}

/* Linha de base contínua */
.ggbf-progress-bar::before {
    content: '';
    position: absolute;
    left: var(--ggbf-progress-offset);
    right: var(--ggbf-progress-offset);
    top: calc(var(--ggbf-line-top));
    height: var(--ggbf-line-thickness);
    background: #e5e7eb;
    z-index: 1; /* sempre atrás dos círculos */
}

.ggbf-progress-bar::-webkit-scrollbar {
    display: none;
}

.ggbf-progress-step {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    min-width: 60px;
    text-align: center;
    position: relative;
    z-index: 10; /* Sobre a linha de base */
}

/* Linha colorida que mostra progresso até step atual - Solução Simples */
.ggbf-progress-bar.step-1::after { width: 0; }
.ggbf-progress-bar.step-2::after { width: calc((100% - (var(--ggbf-progress-offset) * 2)) * 0.2); }
.ggbf-progress-bar.step-3::after { width: calc((100% - (var(--ggbf-progress-offset) * 2)) * 0.4); }
.ggbf-progress-bar.step-4::after { width: calc((100% - (var(--ggbf-progress-offset) * 2)) * 0.6); }
.ggbf-progress-bar.step-5::after { width: calc((100% - (var(--ggbf-progress-offset) * 2)) * 0.8); }
.ggbf-progress-bar.step-6::after { width: calc((100% - (var(--ggbf-progress-offset) * 2)) * 1); }

.ggbf-progress-bar::after {
    content: '';
    position: absolute;
    left: var(--ggbf-progress-offset);
    top: calc(var(--ggbf-line-top));
    height: var(--ggbf-line-thickness);
    background: linear-gradient(90deg, hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l)) 0%, hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), calc(var(--ggbf-primary-l) - 8%)) 100%);
    z-index: 1; /* manter atrás dos círculos */
    transition: width 0.35s ease;
}

.ggbf-step-number {
    width: var(--ggbf-circle-size);
    height: var(--ggbf-circle-size);
    border-radius: 10px; /* rounded square */
    background: #ffffff;
    border: 2px solid #e5e7eb;
    color: #6b7280;
    display: grid;
    place-items: center;
    font-size: 13px;
    font-weight: 700;
    transition: transform .2s ease, background-color .2s ease, color .2s ease, box-shadow .2s ease, border-color .2s ease;
    position: relative;
    z-index: 3; /* acima das linhas */
}

.ggbf-progress-step.active .ggbf-step-number {
    background: #ffffff !important;
    color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l)) !important;
    border-color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
    box-shadow: 0 0 0 4px hsla(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l), 0.12);
}
.ggbf-progress-step.active .ggbf-step-number::after { content: none; }

.ggbf-progress-step.completed .ggbf-step-number {
    background: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l)) !important;
    border-color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
}
.ggbf-progress-step.completed .ggbf-step-number::after { content: none; }

.ggbf-step-label {
    font-size: 12px;
    color: #6b7280;
    font-weight: 600;
    white-space: nowrap;
}

.ggbf-progress-step.active .ggbf-step-label {
    color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
}

.ggbf-progress-step.completed .ggbf-step-label {
    color: #16a34a;
}

/* Mobile compact: scroll horizontal fluido e tamanhos reduzidos */
@media (max-width: 768px) {
  .ggbf-progress-bar {
    --ggbf-progress-offset: 44px;
    --ggbf-circle-size: 32px;
    --ggbf-line-thickness: 2.5px;
    --ggbf-padding-y: 14px;
    grid-template-columns: repeat(6, 1fr);
    gap: 10px;
    padding: var(--ggbf-padding-y) 16px;
  }
  .ggbf-progress-bar::before,
  .ggbf-progress-bar::after {
    left: var(--ggbf-progress-offset);
    right: var(--ggbf-progress-offset);
  }
  .ggbf-step-number { font-size: 12px; }
  .ggbf-step-label { font-size: 11px; }
}

@media (max-width: 480px) {
  .ggbf-progress-bar { --ggbf-progress-offset: 36px; --ggbf-circle-size: 28px; --ggbf-line-thickness: 2px; --ggbf-padding-y: 12px; grid-template-columns: repeat(6, 1fr); gap: 8px; padding: var(--ggbf-padding-y) 12px; }
  .ggbf-progress-bar::before, .ggbf-progress-bar::after { right: var(--ggbf-progress-offset); }
}

/* ============================================================================
   CONTENT AREA
   ========================================================================= */

.ggbf-content {
    flex: 1;
    overflow-y: auto;
    padding: 24px;
}

.ggbf-step {
    display: none !important;
}

.ggbf-step.active {
    display: block !important;
}

.ggbf-step-content h3 {
    margin: 0 0 24px 0;
    color: #2c3e50;
    font-size: 18px;
    font-weight: 600;
}

/* ============================================================================
   FORM STYLES
   ========================================================================= */

.ggbf-form-row {
    display: flex;
    gap: 16px;
    margin-bottom: 20px;
}

.ggbf-form-group {
    flex: 1;
}

.ggbf-form-group label {
    display: block;
    margin-bottom: 6px;
    font-weight: 500;
    color: #495057;
    font-size: 14px;
}

.ggbf-input,
.ggbf-select,
.ggbf-textarea {
    width: 100%;
    padding: 12px 16px;
    border: 2px solid #e9ecef;
    border-radius: 6px;
    font-size: 14px;
    transition: border-color 0.3s ease;
    background: white;
}

.ggbf-input:focus,
.ggbf-select:focus,
.ggbf-textarea:focus {
    outline: none;
    border-color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
    box-shadow: 0 0 0 3px hsla(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l), 0.1);
}

.ggbf-textarea {
    resize: vertical;
    min-height: 80px;
}

/* ============================================================================
   ROOM CARDS
   ========================================================================= */

.ggbf-rooms-container {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.ggbf-room-item {
    border: 2px solid #e9ecef;
    border-radius: 8px;
    padding: 16px;
    transition: all 0.3s ease;
    cursor: pointer;
    position: relative;
    overflow: hidden;
}

.ggbf-room-item:hover {
    border-color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
}

.ggbf-room-item.selected {
    border-color: #28a745;
    background: rgba(40, 167, 69, 0.02);
}

.ggbf-room-image {
    width: 100%;
    height: 140px;
    border-radius: 6px;
    overflow: hidden;
    margin-bottom: 12px;
    background: #f8f9fa;
}

.ggbf-room-image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.ggbf-no-image {
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #6c757d;
    font-size: 14px;
}

.ggbf-room-name {
    margin: 0 0 8px 0;
    font-size: 16px;
    font-weight: 600;
    color: #2c3e50;
}

.ggbf-room-description {
    margin: 0 0 12px 0;
    color: #6c757d;
    font-size: 14px;
    line-height: 1.5;
}

.ggbf-room-features {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    margin-bottom: 16px;
    margin-top: 16px
}

.ggbf-feature {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    color: #6c757d;
    background: #f8f9fa;
    padding: 4px 8px;
    border-radius: 4px;
}

.ggbf-room-price {
    display: flex;
    align-items: baseline;
    gap: 6px;
    margin-bottom: 20px;
    flex-wrap: wrap;
}

.ggbf-price-amount {
    font-size: 18px;
    font-weight: 600;
    color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
}

.ggbf-price-unit {
    font-size: 12px;
    color: #6c757d;
}

/* ============================================================================
   EXTRAS (bloco antigo removido — substituído por Step 3 Redesigned)
   ========================================================================= */

/* ============================================================================
   SUMMARY
   ========================================================================= */

.ggbf-booking-summary {
    background: #f8f9fa;
    border-radius: 8px;
    padding: 20px;
    border: 1px solid #e9ecef;
}

.ggbf-summary-section {
    margin-bottom: 20px;
}

.ggbf-summary-section:last-child {
    margin-bottom: 0;
}

.ggbf-summary-section h4 {
    margin: 0 0 12px 0;
    font-size: 16px;
    font-weight: 600;
    color: #2c3e50;
}

.ggbf-summary-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 0px;
    padding: 8px 0;
}

.ggbf-summary-label {
    color: #6c757d;
    font-size: 14px;
}

.ggbf-summary-value {
    font-weight: 500;
    color: #2c3e50;
    font-size: 14px;
}

.ggbf-summary-total {
    border-top: 1px solid #dee2e6;
    padding-top: 16px;
}

.ggbf-summary-total .ggbf-total {
    border-top: 1px solid #dee2e6;
    padding-top: 8px;
    font-weight: 600;
}

.ggbf-summary-total .ggbf-total .ggbf-summary-label,
.ggbf-summary-total .ggbf-total .ggbf-summary-value {
    font-size: 16px;
    color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
}

/* ============================================================================
   CONFIRMATION
   ========================================================================= */

.ggbf-confirmation-success {
    text-align: center;
    padding: 40px 20px;
}

.ggbf-success-icon {
    width: 80px;
    height: 80px;
    border-radius: 50%;
    background: #28a745;
    color: white;
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 0 auto 24px auto;
    font-size: 36px;
}

.ggbf-checkmark {
    animation: checkmark 0.6s ease-in-out;
}

@keyframes checkmark {
    0% { transform: scale(0); }
    50% { transform: scale(1.2); }
    100% { transform: scale(1); }
}

.ggbf-confirmation-success h3 {
    margin: 0 0 12px 0;
    color: #28a745;
    font-size: 24px;
    font-weight: 600;
}

.ggbf-booking-details {
    background: #f8f9fa;
    border-radius: 8px;
    padding: 20px;
    margin: 24px 0;
    text-align: left;
}

.ggbf-detail-item {
    display: flex;
    justify-content: space-between;
    margin-bottom: 12px;
}

.ggbf-detail-item:last-child {
    margin-bottom: 0;
}

.ggbf-next-steps {
    text-align: left;
    margin-top: 24px;
}

.ggbf-next-steps h4 {
    margin: 0 0 12px 0;
    color: #2c3e50;
}

.ggbf-next-steps ul {
    margin: 0;
    padding-left: 20px;
}

.ggbf-next-steps li {
    margin-bottom: 8px;
    color: #6c757d;
}

/* ============================================================================
   FOOTER E NAVEGAÇÃO
   ========================================================================= */

.ggbf-footer {
    background: #f8f9fa;
    border-top: 1px solid #e9ecef;
    padding: 20px 24px;
    flex-shrink: 0;
}

/* Branding Footer (subtil, coerente com UI) */
.ggbf-branding-footer {
    padding: 7px 16px; /* espaço visual para legibilidade */
    border-top: 1px solid #eef2f7;
    background: #fdfdfd;
    display: flex;
    align-items: center;
    justify-content: center;
}
.ggbf-branding-footer .ggbf__text {
    font-size: 11px !important;
    color: #6b7280 !important;
}
.ggbf-branding-footer .ggbf-brand-link {
    color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l)) !important;
    text-decoration: none !important;
}
.ggbf-branding-footer .ggbf-brand-link:hover {
    text-decoration: underline !important;
}

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

.ggbf-btn {
    padding: 12px 24px;
    border: none;
    border-radius: 6px;
    cursor: pointer;
    font-size: 14px;
    font-weight: 600;
    transition: all 0.3s ease;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-width: 120px;
    justify-content: center;
}

.ggbf-btn:disabled,
.ggbf-btn.ggbf-disabled {
    opacity: 0.6 !important;
    cursor: not-allowed !important;
    pointer-events: none !important;
    background: #9ca3af !important;
    transform: none !important;
    box-shadow: none !important;
}

.ggbf-btn-primary {
    background: linear-gradient(135deg, hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l)) 0%, hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), calc(var(--ggbf-primary-l) - 10%)) 100%);
    color: white;
    box-shadow: 0 2px 8px hsla(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l), 0.3);
}

.ggbf-btn-primary:hover:not(:disabled) {
    background: linear-gradient(135deg, hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), calc(var(--ggbf-primary-l) - 10%)) 0%, hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l)) 100%);
    transform: translateY(-1px);
    box-shadow: 0 4px 12px hsla(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l), 0.4);
}

.ggbf-btn-secondary {
    background: #6c757d;
    color: white;
}

.ggbf-btn-secondary:hover:not(:disabled) {
    background: #5a6268;
    transform: translateY(-1px);
}

.ggbf-btn-success {
    background: linear-gradient(135deg, #28a745 0%, #1e7e34 100%);
    color: white;
    box-shadow: 0 2px 8px rgba(40, 167, 69, 0.3);
}

.ggbf-btn-success:hover:not(:disabled) {
    background: linear-gradient(135deg, #1e7e34 0%, #28a745 100%);
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(40, 167, 69, 0.4);
}

/* ============================================================================
   LOADING E ESTADOS
   ========================================================================= */

.ggbf-loading {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 60px 20px;
    color: #6c757d;
}

.ggbf-spinner {
    width: 40px;
    height: 40px;
    border: 4px solid #f3f3f3;
    border-top: 4px solid hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
    border-radius: 50%;
    animation: spin 1s linear infinite;
    margin-bottom: 16px;
}

@keyframes spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

.ggbf-error {
    background: #f8d7da;
    color: #721c24;
    padding: 12px 16px;
    border-radius: 6px;
    margin-bottom: 16px;
    border-left: 4px solid #dc3545;
}

.ggbf-success {
    background: #d4edda;
    color: #155724;
    padding: 12px 16px;
    border-radius: 6px;
    margin-bottom: 16px;
    border-left: 4px solid #28a745;
}

/* ============================================================================
   RESPONSIVE
   ========================================================================= */

@media (max-width: 768px) {
    .ggbf-canvas {
        width: 100%;
        max-width: 100%;
    }
    
    .ggbf-form-row {
        flex-direction: column;
        gap: 12px;
    }
    
    .ggbf-progress-bar {
        padding: 12px 16px;
        gap: 6px;
    }
    
    /* Linha de base mobile */
    .ggbf-progress-bar::before {
        left: 25px;
        right: 25px;
    }
    
    /* Linha colorida mobile */
    .ggbf-progress-bar::after {
        left: 25px;
    }
    
    .ggbf-progress-step {
        min-width: 45px;
    }
    
    .ggbf-step-number {
        width: 24px;
        height: 24px;
        font-size: 10px;
    }
    
    .ggbf-step-label {
        font-size: 10px;
    }
    
    .ggbf-content {
        padding: 16px;
    }
    
    .ggbf-footer {
        padding: 0px;
    }
    
    .ggbf-navigation {
        flex-direction: column;
    }
    
    .ggbf-btn {
        width: 100%;
    }
    
    .ggbf-room-item {
        padding: 12px;
    }
    
    .ggbf-room-image {
        height: 120px;
    }
    
    .ggbf-extra-item {
        flex-direction: column;
        align-items: flex-start;
        gap: 12px;
    }
    
    .ggbf-summary-item {
        flex-direction: column;
        align-items: flex-start;
        gap: 4px;
    }
}

@media (max-width: 480px) {
    .ggbf-header {
        padding: 16px;
    }
    
    .ggbf-title {
        font-size: 18px;
    }
    
    .ggbf-progress-bar {
        overflow-x: auto;
        scrollbar-width: thin;
    }
    
    .ggbf-content {
        padding: 15px;
        padding-top: 25px;
        padding-bottom: 25px;
    }
    
    .ggbf-confirmation-success {
        padding: 20px 12px;
    }
    
    .ggbf-success-icon {
        width: 60px;
        height: 60px;
        font-size: 28px;
    }
}

/* ============================================================================
   ACESSIBILIDADE
   ========================================================================= */

.ggbf-off-canvas *:focus {
    outline: 2px solid hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
    outline-offset: 2px;
}

.ggbf-screen-reader-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

/* ============================================================================
   TRANSIÇÕES SUAVES
   ========================================================================= */

.ggbf-step {
    transition: opacity 0.3s ease;
}

.ggbf-step:not(.active) {
    opacity: 0;
}

.ggbf-step.active {
    opacity: 1;
}

/* ============================================================================
   HIERARQUIA DE CORES - MELHORES PRÁTICAS UI DESIGN
   ========================================================================= */

/* Sistema hierárquico baseado em preto - Melhores práticas UI */
#ggbf-off-canvas h1,
.ggbf-container h1 {
    color: #111827 !important; /* Preto mais forte - Títulos principais */
}

#ggbf-off-canvas h2,
.ggbf-container h2 {
    color: #1f2937 !important; /* Preto forte - Seções principais */
}

#ggbf-off-canvas h3,
.ggbf-container h3 {
    color: #374151 !important; /* Cinza muito escuro - Subtítulos */
}

#ggbf-off-canvas h4,
.ggbf-container h4 {
    color: #4b5563 !important; /* Cinza escuro - Labels importantes */
}

#ggbf-off-canvas h5,
.ggbf-container h5 {
    color: #6b7280 !important; /* Cinza médio - Labels menores */
}

#ggbf-off-canvas h6,
.ggbf-container h6 {
    color: #6b7280 !important; /* Cinza médio - Labels menores */
}

#ggbf-off-canvas p,
.ggbf-container p {
    color: #4b5563 !important; /* Cinza escuro legível - Texto corpo */
}

#ggbf-off-canvas small,
.ggbf-container small {
    color: #9ca3af !important; /* Cinza claro - Texto de apoio */
}

/* ============================================================================
   AJUSTES ESPECÍFICOS DO USUÁRIO
   ========================================================================= */

/* Título do header - Exceção para branco e capslock */
#ggbf-off-canvas .ggbf-header h1,
#ggbf-off-canvas .ggbf-header h2,
#ggbf-off-canvas .ggbf-header h3,
#ggbf-off-canvas .ggbf-header h4,
#ggbf-off-canvas .ggbf-header h5,
#ggbf-off-canvas .ggbf-header h6,
.ggbf-header h1,
.ggbf-header h2,
.ggbf-header h3,
.ggbf-header h4,
.ggbf-header h5,
.ggbf-header h6 {
    color: white !important;
    text-transform: uppercase !important;
}



/* ============================================================================
   HIERARQUIA DE CORES POR SEÇÃO
   ========================================================================= */

/* 1. EXTRA CARD - Hierarquia refinada */
.ggbf-extra-card h3,
.ggbf-extra-card .ggbf-extra-name {
    color: #1f2937 !important; /* Título forte */
}

.ggbf-extra-card p,
.ggbf-extra-card .ggbf-extra-description {
    color: #6b7280 !important; /* Descrição secundária */
}

.ggbf-extra-card .ggbf-extra-price,
.ggbf-extra-card .ggbf-price-per {
    color: #374151 !important; /* Preço destacado mas elegante */
}

/* EXTRA ITEM - Border verde quando selecionado (consistência visual) */
.ggbf-extra-item.selected,
.ggbf-extra-card.selected,
.ggbf-extra-item:has(.ggbf-extra-checkbox:checked),
.ggbf-extra-card:has(.ggbf-extra-checkbox:checked) {
    border-color: #28a745 !important;
    background: rgba(40, 167, 69, 0.02) !important;
}

/* Fallback para navegadores sem suporte ao :has() */
.ggbf-extra-checkbox:checked + .ggbf-toggle-slider ~ .ggbf-extra-card,
.ggbf-extra-checkbox:checked ~ .ggbf-extra-card {
    border-color: #28a745 !important;
    background: rgba(40, 167, 69, 0.02) !important;
}

/* Mais específico - quando checkbox dentro do extra-item está checked */
#ggbf-off-canvas .ggbf-extra-item:has(.ggbf-extra-checkbox:checked),
#ggbf-off-canvas .ggbf-extra-card:has(.ggbf-extra-checkbox:checked) {
    border-color: #28a745 !important;
    background: rgba(40, 167, 69, 0.02) !important;
}

/* 2. ROOM INFO - Hierarquia refinada (mantendo price-amount) */
.ggbf-room-info h3,
.ggbf-room-info .ggbf-room-name {
    color: #1f2937 !important; /* Nome do quarto forte */
}

.ggbf-room-info p,
.ggbf-room-info .ggbf-room-description {
    color: #6b7280 !important; /* Descrição secundária */
}

.ggbf-room-info .ggbf-room-features,
.ggbf-room-info .ggbf-feature {
    color: #6b7280 !important; /* Features secundárias */
}

/* EXCEÇÃO: Manter cor original do price-amount */
/* Price-amount mantém sua cor original (não sobrescrever) */

/* 3. RATE CARD — removido aqui e refeito no bloco STEP 3 REDESIGNED */

/* 4. BOOKING SUMMARY - Hierarquia refinada */
.ggbf-booking-summary h3,
.ggbf-booking-summary h4 {
    color: #1f2937 !important; /* Títulos da summary */
}

.ggbf-booking-summary p,
.ggbf-booking-summary .ggbf-summary-item {
    color: #4b5563 !important; /* Itens principais */
}

.ggbf-booking-summary .ggbf-summary-label {
    color: #6b7280 !important; /* Labels secundários */
}

.ggbf-booking-summary .ggbf-summary-value {
    color: #374151 !important; /* Valores destacados */
}

.ggbf-booking-summary .ggbf-total {
    color: #1f2937 !important; /* Total em destaque */
}

/* 5. PAYMENT METHODS - Hierarquia refinada */
.ggbf-payment-methods-section h3 {
    color: #1f2937 !important; /* Título forte */
}

.ggbf-payment-methods-section p,
.ggbf-payment-methods-section .ggbf-payment-description {
    color: #6b7280 !important; /* Descrições secundárias */
}

.ggbf-payment-methods-section .ggbf-payment-option {
    color: #4b5563 !important; /* Opções principais */
}

/* 6. FEATURE com border cinzento */
.ggbf__text.ggbf-feature,
.ggbf-feature {
    border: 1px solid #d1d5db !important;
    padding: 4px 8px !important;
    border-radius: 4px !important;
    color: #6b7280 !important;
    font-size: 12px !important;
    display: inline-block !important;
}

/* ============================================================================
   AJUSTES ESPECÍFICOS DE PADDING E MARGIN
   ========================================================================= */

   
/* Ajuste de margin para primeiro item extra */
.ggbf-extra-item {
    margin-bottom: 0px !important;
}

/* ============================================================================
   RESPONSIVIDADE PARA MELHORIAS
   ========================================================================= */

/* Mobile pequeno - Ajustes para rate-card melhorado */
@media (max-width: 480px) {
    .ggbf-rate-card .ggbf-rate-name {
        font-size: 16px !important;
    }
    
    .ggbf-rate-card .ggbf-rate-amount {
        font-size: 24px !important;
    }
    
    .ggbf-rate-card .ggbf-rate-period {
        font-size: 13px !important;
    }
    
    .ggbf-rate-card .ggbf-tax-included {
        font-size: 10px !important;
    }
    
    .ggbf-rate-card .ggbf-rate-description {
        font-size: 13px !important;
    }
    
    .ggbf-rate-card {
        padding: 18px !important;
    }
    
    .ggbf-rate-header {
        margin-bottom: 12px !important;
    }
}

/* ============================================================================
   STEP 3: TARIFAS E EXTRAS - DESIGN MELHORADO
   ========================================================================= */

/* PROTEÇÃO DEFENSIVA - Reset para elementos de tarifa */
#ggbf-off-canvas .ggbf-rate-plan,
#ggbf-off-canvas .ggbf-rate-card,
#ggbf-off-canvas .ggbf-rate-header,
#ggbf-off-canvas .ggbf-rate-name,
#ggbf-off-canvas .ggbf-rate-check,
#ggbf-off-canvas .ggbf-rate-amount,
#ggbf-off-canvas .ggbf-rate-period,
.ggbf-rate-plan,
.ggbf-rate-card,
.ggbf-rate-header,
.ggbf-rate-name,
.ggbf-rate-check,
.ggbf-rate-amount,
.ggbf-rate-period {
    /* Reset básico para evitar herança */
    box-sizing: border-box !important;
    margin: 0 !important;
    outline: none !important;
    text-decoration: none !important;
    vertical-align: baseline !important;
    /* Neutralizar possíveis interferências */
    -webkit-appearance: none !important;
    -moz-appearance: none !important;
    appearance: none !important;
}

/* Reset de pseudo-elementos */
#ggbf-off-canvas .ggbf-rate-plan::before,
#ggbf-off-canvas .ggbf-rate-plan::after,
#ggbf-off-canvas .ggbf-rate-card::before,
#ggbf-off-canvas .ggbf-rate-card::after,
.ggbf-rate-plan::before,
.ggbf-rate-plan::after,
.ggbf-rate-card::before,
.ggbf-rate-card::after {
    content: none !important;
    display: none !important;
}

/* Header das Tarifas */
.ggbf-rates-header {
    margin-bottom: 16px;
}

.ggbf-rates-header h4 {
    margin: 0 0 8px 0;
    font-size: 20px;
    font-weight: 600;
    color: #1a1a1a;
    letter-spacing: 0.5px;
}

/* Lista de Tarifas */
.ggbf-rates-list {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 12px;
    margin: 16px 0 20px 0;
}

.ggbf-rate-plan {
    border-radius: 8px;
    border: 1px solid #e1e5e9;
    transition: all 0.3s ease;
    overflow: hidden;
    background: white;
    cursor: pointer;
}

.ggbf-rate-plan:hover {
    border-color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
    box-shadow: 0 4px 16px hsla(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l), 0.12);
}

.ggbf-rate-plan.selected {
    border-color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
    background: linear-gradient(135deg, hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), 97%) 0%, hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), 94%) 100%);
    box-shadow: 0 6px 20px hsla(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l), 0.15);
}

.ggbf-rate-plan:focus-within {
    outline: 2px solid hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
    outline-offset: 2px;
}

.ggbf-rate-plan:active {
    transform: scale(0.995);
}

.ggbf-rate-option {
    display: block;
    cursor: pointer;
    margin: 0;
}

.ggbf-rate-radio {
    display: none;
}

.ggbf-rate-card {
    padding: 18px;
    position: relative;
}

.ggbf-rate-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 10px;
    margin-bottom: 8px;
}

.ggbf-rate-name {
    margin: 0;
    font-size: 18px;
    font-weight: 600;
    color: #1a1a1a;
    letter-spacing: 0.5px;
}

.ggbf-rate-check {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    border: 2px solid #d1d5db;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.3s ease;
    background: white;
    flex-shrink: 0;
}

.ggbf-rate-plan.selected .ggbf-rate-check {
    border-color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
    background: linear-gradient(135deg, hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l)) 0%, hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), calc(var(--ggbf-primary-l) - 10%)) 100%);
    box-shadow: 0 2px 8px hsla(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l), 0.3);
}

.ggbf-check-icon {
    color: white;
    font-size: 16px;
    font-weight: bold;
    opacity: 0;
    transition: all 0.3s ease;
    transform: scale(0);
}

.ggbf-rate-plan.selected .ggbf-check-icon {
    opacity: 1;
    transform: scale(1);
    color: white !important;
}

.ggbf-rate-pricing {
    display: flex;
    align-items: baseline;
    gap: 6px;
    margin: 0;
}

.ggbf-rate-amount {
    font-size: 22px;
    font-weight: 700;
    color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
}

.ggbf-rate-period {
    font-size: 13px;
    color: #6b7280;
}

.ggbf-tax-included {
    display: block;
    font-size: 11px;
    color: #9ca3af;
    font-style: italic;
    margin-top: 0;
}

.ggbf-rate-description {
    font-size: 13px;
    color: #6b7280;
    line-height: 1.45;
    margin-top: 8px;
}

/* Melhoria no hover do check para feedback visual */
.ggbf-rate-plan:hover .ggbf-rate-check {
    border-color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
    background: hsla(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l), 0.05);
}

.ggbf-rate-plan:hover:not(.selected) .ggbf-rate-check {
    transform: scale(1.05);
}

/* Animação suave do ícone check */
.ggbf-rate-plan.selected .ggbf-rate-check {
    animation: checkPulse 0.6s ease-out;
}

@keyframes checkPulse {
    0% { transform: scale(1); }
    50% { transform: scale(1.1); }
    100% { transform: scale(1); }
}

/* Melhoria na legibilidade dos preços */
.ggbf-rate-pricing {
    align-items: center;
}

.ggbf-rate-period {
    font-weight: 500;
}

/* Header dos Extras */
.ggbf-extras-header {
    margin-bottom: 20px;
    padding-top: 24px;
    border-top: 1px solid #e5e7eb;
}

.ggbf-extras-header h4 {
    margin: 0 0 8px 0;
    font-size: 20px;
    font-weight: 600;
    color: #1a1a1a;
}

/* Grid de Extras - Responsiva */
.ggbf-extras-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
    gap: 20px;
    align-items: start;
}

.ggbf-extra-item {
    border-radius: 12px;
    border: 1px solid #e5e7eb;
    transition: all 0.2s ease;
    overflow: hidden;
    background: white;
}

.ggbf-extra-item:hover {
    border-color: #d1d5db;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
}

.ggbf-extra-card {
    padding: 20px;
}

.ggbf-extra-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    margin-bottom: 12px;
    gap: 16px;
    flex-wrap: wrap;
}

.ggbf-extra-name {
    margin: 0;
    font-size: 16px;
    font-weight: 600;
    color: #1a1a1a;
    line-height: 1.3;
    flex: 1;
}

.ggbf-extra-price {
    text-align: right;
    flex-shrink: 0;
}

.ggbf-price-amount {
    display: block;
    font-size: 18px;
    font-weight: 700;
    color: #059669;
    line-height: 1.2;
}

.ggbf-price-type {
    display: block;
    font-size: 12px;
    color: #6b7280;
    margin-top: 2px;
}

.ggbf-extra-description {
    margin-bottom: 16px;
}

.ggbf-extra-description p {
    margin: 0;
    font-size: 14px;
    color: #6b7280;
    line-height: 1.4;
}

.ggbf-extra-actions {
    display: flex;
    justify-content: flex-start; /* ✅ CORREÇÃO: Alinhamento à esquerda */
    align-items: center;
    gap: 12px;
}

/* Toggle Switch para Extras */
.ggbf-extra-toggle {
    display: flex;
    align-items: center;
    gap: 12px;
    cursor: pointer;
    user-select: none;
}

.ggbf-extra-checkbox {
    display: none;
}

.ggbf-toggle-slider {
    position: relative;
    width: 50px;
    height: 28px;
    background: #d1d5db;
    border-radius: 14px;
    transition: all 0.2s ease;
}

.ggbf-toggle-slider::after {
    content: '';
    position: absolute;
    top: 2px;
    left: 2px;
    width: 24px;
    height: 24px;
    background: white;
    border-radius: 50%;
    transition: all 0.2s ease;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
}

.ggbf-extra-checkbox:checked + .ggbf-toggle-slider {
    background: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
}

.ggbf-extra-checkbox:checked + .ggbf-toggle-slider::after {
    transform: translateX(22px);
}

.ggbf-toggle-label {
    font-size: 14px;
    font-weight: 500;
    color: #374151;
}

.ggbf-extra-checkbox:checked ~ .ggbf-toggle-label {
    color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
}

/* Badge Obrigatório */
.ggbf-mandatory-badge {
    background: linear-gradient(135deg, #dc2626, #ef4444);
    color: white;
    padding: 6px 12px;
    border-radius: 20px;
    font-size: 12px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    box-shadow: 0 2px 4px rgba(220, 38, 38, 0.3);
}

/* Responsividade Tablet */
@media (max-width: 1024px) and (min-width: 769px) {
    .ggbf-extras-grid {
        grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
        gap: 18px;
    }
    
    .ggbf-rate-card, .ggbf-extra-card {
        padding: 20px;
    }
    
    .ggbf-rates-list {
        gap: 16px;
    }
}

/* Responsividade Mobile */
@media (max-width: 768px) {
    .ggbf-rates-list { grid-template-columns: 1fr; gap: 10px; margin: 12px 0 16px 0; }
    .ggbf-extras-grid { grid-template-columns: 1fr; gap: 12px; }
    .ggbf-rate-card { padding: 16px; }
    
    .ggbf-rate-header {
        gap: 16px;
        margin-bottom: 14px;
    }
    
    .ggbf-rate-check {
        width: 26px;
        height: 26px;
    }
    
    .ggbf-extra-card {
        padding: 16px;
    }
    
    .ggbf-extra-header {
        flex-direction: column;
        align-items: flex-start;
        gap: 8px;
        flex-wrap: nowrap;
    }
    
    .ggbf-extra-price {
        text-align: left;
        width: 100%;
    }
    
    .ggbf-rate-header {
        flex-direction: column;
        align-items: flex-start;
        gap: 8px;
    }
    
    .ggbf-extra-actions {
        flex-wrap: wrap;
        gap: 8px;
    }
}

@media (max-width: 480px) {
    .ggbf-rate-name {
        font-size: 16px;
        letter-spacing: 0.3px;
    }
    
    .ggbf-rate-amount {
        font-size: 22px;
    }
    
    .ggbf-rates-header h4 {
        font-size: 18px;
        letter-spacing: 0.3px;
    }
    
    .ggbf-rate-check {
        width: 24px;
        height: 24px;
    }
    
    .ggbf-check-icon {
        font-size: 14px;
    }
    
    .ggbf-extra-name {
        font-size: 15px;
    }
    
    .ggbf-price-amount {
        font-size: 16px;
    }
    
    .ggbf-rate-card, .ggbf-extra-card {
        padding: 16px;
    }
    
    .ggbf-rates-list {
        gap: 12px;
        margin-bottom: 24px;
    }
    
    .ggbf-extras-grid {
        gap: 14px;
    }
    
    .ggbf-extra-actions {
        justify-content: flex-start;
        width: 100%;
    }
}

/* ============================================================================
   STEP 3 REDESIGNED — Escopo específico para evitar efeitos colaterais
   - Mantém classes necessárias ao JS
   - Usa variáveis do design system
   - Totalmente responsivo
   ========================================================================= */
#ggbf-step-3 .ggbf-step-content { gap: 20px; display: flex; flex-direction: column; }

#ggbf-step-3 .ggbf-rates-header h4,
#ggbf-step-3 .ggbf-extras-header h4 { color: #111827; letter-spacing: .2px; }

/* Rates */
#ggbf-step-3 .ggbf-rates-list { grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 16px; }
#ggbf-step-3 .ggbf-rate-plan { border-radius: 12px; border-color: #e5e7eb; background: #fff; }
#ggbf-step-3 .ggbf-rate-plan:hover { box-shadow: none; }
#ggbf-step-3 .ggbf-rate-plan.selected { box-shadow: none; }
#ggbf-step-3 .ggbf-rate-card { box-shadow: none; }
#ggbf-step-3 .ggbf-rate-card { padding: 20px; }
#ggbf-step-3 .ggbf-rate-header { gap: 12px; }
#ggbf-step-3 .ggbf-rate-name { font-size: 17px; font-weight: 700; color: #0f172a; }
#ggbf-step-3 .ggbf-rate-amount { font-size: 24px; font-weight: 800; }
#ggbf-step-3 .ggbf-rate-period { font-size: 12.5px; color: #6b7280; }
#ggbf-step-3 .ggbf-tax-included { margin-left: 6px; }

/* Redesign do botão de seleção da tarifa */
#ggbf-step-3 .ggbf-rate-check {
  width: 24px;
  height: 24px;
  border-radius: 9999px;
  border: 2px solid #d1d5db;
  background: #fff;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: border-color .2s ease, background-color .2s ease, box-shadow .2s ease, transform .12s ease;
  box-shadow: none;
}
#ggbf-step-3 .ggbf-rate-plan:hover .ggbf-rate-check { border-color: #9ca3af; }
#ggbf-step-3 .ggbf-check-icon { color: #fff; font-size: 14px; line-height: 1; opacity: 0; transform: scale(0.9); transition: opacity .15s ease, transform .15s ease; }
#ggbf-step-3 .ggbf-rate-plan.selected .ggbf-rate-check { 
  border-color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
  background: linear-gradient(135deg, hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l)) 0%, hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), calc(var(--ggbf-primary-l) - 8%)) 100%);
  box-shadow: none;
  transform: none;
  animation: none;
}
#ggbf-step-3 .ggbf-rate-plan.selected .ggbf-check-icon { opacity: 1; transform: scale(1); }

/* Extras Grid */
#ggbf-step-3 .ggbf-extras-grid { grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 16px; }
#ggbf-step-3 .ggbf-extra-item { border-radius: 12px; border-color: #e5e7eb; background: #fff; transition: box-shadow .2s ease, border-color .2s ease; }
#ggbf-step-3 .ggbf-extra-item:hover { border-color: #d1d5db; box-shadow: 0 6px 18px rgba(17, 24, 39, 0.06); }
#ggbf-step-3 .ggbf-extra-card { padding: 20px; display: flex; flex-direction: column; gap: 10px; }
#ggbf-step-3 .ggbf-extra-header { margin-bottom: 2px; }
#ggbf-step-3 .ggbf-extra-name { font-size: 16px; color: #0f172a; }
#ggbf-step-3 .ggbf-price-amount { color: #059669; font-weight: 800; }
#ggbf-step-3 .ggbf-price-type { color: #6b7280; }
#ggbf-step-3 .ggbf-extra-description p { color: #4b5563; }

/* Ajustes solicitados de descrição dos extras apenas no Step 3 */
#ggbf-step-3 .ggbf-extra-description { margin-bottom: 10px; margin-top: -20px; }

/* Toggle e seleção */
#ggbf-step-3 .ggbf-extra-item:has(.ggbf-extra-checkbox:checked),
#ggbf-step-3 .ggbf-extra-card:has(.ggbf-extra-checkbox:checked) {
  border-color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
  background: linear-gradient(0deg, rgba(59,130,246,0.04), rgba(59,130,246,0.04));
}

/* Quantity */
#ggbf-step-3 .ggbf-quantity-section { background: #f9fafb; border-color: #e5e7eb; border-radius: 8px; }
#ggbf-step-3 .ggbf-quantity-btn { border-radius: 6px; }
#ggbf-step-3 .ggbf-quantity-input { border-radius: 6px; }

/* Responsividade dedicada do Step 3 */
@media (max-width: 1024px) {
  #ggbf-step-3 .ggbf-rates-list, #ggbf-step-3 .ggbf-extras-grid { gap: 14px; }
}
@media (max-width: 768px) {
  #ggbf-step-3 .ggbf-rate-card, #ggbf-step-3 .ggbf-extra-card { padding: 16px; }
  #ggbf-step-3 .ggbf-rates-list, #ggbf-step-3 .ggbf-extras-grid { grid-template-columns: 1fr; }
  /* Reposicionar o check à esquerda do título em mobile */
  #ggbf-step-3 .ggbf-rate-header {
    display: grid;
    grid-template-columns: 24px 1fr;
    grid-template-areas: 'check name';
    align-items: start;
    column-gap: 10px;
    margin-bottom: 8px;
  }
  #ggbf-step-3 .ggbf-rate-check { grid-area: check; width: 22px; height: 22px; margin-top: 2px; }
  #ggbf-step-3 .ggbf-rate-name { grid-area: name; font-size: 16px; line-height: 1.25; overflow-wrap: anywhere; }
  #ggbf-step-3 .ggbf-rate-pricing { flex-wrap: wrap; gap: 6px 8px; margin-top: 4px; }
  #ggbf-step-3 .ggbf-rate-amount { font-size: 22px; line-height: 1.1; width: 100%; }
}
@media (max-width: 480px) {
  #ggbf-step-3 .ggbf-rate-name { font-size: 16px; }
  #ggbf-step-3 .ggbf-rate-amount { font-size: 22px; }
}

/* Mobile refinements — Extras (apenas Step 3) */
@media (max-width: 576px) {
  /* Reestruturação em grid para resolver espaços excessivos
     e obedecer à ordem: Título → Preço (por dia) → Descrição → Botão */
  #ggbf-step-3 .ggbf-extra-card {
    display: grid;
    grid-template-columns: 1fr;
    grid-template-areas:
      "title"
      "price"
      "desc"
      "actions";
    align-items: start;
    row-gap: 8px;
    column-gap: 0;
    padding: 16px;
  }
  #ggbf-step-3 .ggbf-extra-header { display: contents; margin: 0; padding: 0; }
  #ggbf-step-3 .ggbf-extra-name { grid-area: title; }
  #ggbf-step-3 .ggbf-extra-price { 
    grid-area: price; 
    text-align: left; 
    display: inline-flex; 
    align-items: baseline; 
    gap: 6px; 
  }
  #ggbf-step-3 .ggbf-extra-name { font-size: 16px; line-height: 1.25; }
  #ggbf-step-3 .ggbf-price-amount { font-size: 18px; font-weight: 800; }
  #ggbf-step-3 .ggbf-price-type { font-size: 12px; margin-top: 2px; }
  #ggbf-step-3 .ggbf-extra-description { grid-area: desc; margin-top: 2px; margin-bottom: 10px; }
  #ggbf-step-3 .ggbf-extra-description p { font-size: 14px; line-height: 1.35; }
  #ggbf-step-3 .ggbf-extra-actions { grid-area: actions; width: 100%; justify-content: space-between; }
  #ggbf-step-3 .ggbf-toggle-slider { width: 48px; height: 26px; }
  #ggbf-step-3 .ggbf-toggle-slider::after { width: 22px; height: 22px; }
}

/* Mobile refinements — Rates (apenas Step 3) */
@media (max-width: 576px) {
  #ggbf-step-3 .ggbf-rate-card { padding: 16px; }
  #ggbf-step-3 .ggbf-rate-header { grid-template-columns: 24px 1fr; column-gap: 8px; }
  #ggbf-step-3 .ggbf-rate-check { width: 22px; height: 22px; }
  #ggbf-step-3 .ggbf-rate-name { font-size: 16px; line-height: 1.25; }
  #ggbf-step-3 .ggbf-rate-pricing { gap: 6px 8px; margin-top: 4px; }
  #ggbf-step-3 .ggbf-rate-amount { font-size: 22px; line-height: 1.1; width: 100%; }
  #ggbf-step-3 .ggbf-rate-period, #ggbf-step-3 .ggbf-tax-included { font-size: 12.5px; }
}

@media (max-width: 420px) {
  #ggbf-step-3 .ggbf-rate-amount { font-size: 20px; }
  #ggbf-step-3 .ggbf-rate-name { font-size: 15px; }
  #ggbf-step-3 .ggbf-extra-header { padding-right: 80px; }
}

/* ============================================================================
   ESTILOS PARA VALIDAÇÃO E CAMPOS OBRIGATÓRIOS
   ========================================================================= */

/* Campos obrigatórios */
.ggbf-required {
    color: #e74c3c;
    font-weight: bold;
}

/* Campos opcionais */
.ggbf-optional {
    color: #7f8c8d;
    font-size: 0.9em;
    font-weight: normal;
}

/* Descrição do step */
.ggbf-step-description {
    color: #7f8c8d;
    font-size: 0.95em;
    margin-bottom: 20px;
    line-height: 1.4;
}

/* Erros de campo individuais */
.ggbf-field-error {
    display: none;
    color: #e74c3c;
    font-size: 0.85em;
    margin-top: 5px;
    font-weight: 500;
}

/* Input com erro */
.ggbf-input-error {
    border-color: #e74c3c !important;
    box-shadow: 0 0 0 2px rgba(231, 76, 60, 0.2) !important;
}

/* Ajuda do campo */
.ggbf-field-help {
    color: #7f8c8d;
    font-size: 0.85em;
    margin-top: 5px;
    line-height: 1.3;
}

/* Aviso de privacidade */
.ggbf-privacy-notice {
    background: #f8f9fa;
    border: 1px solid #e9ecef;
    border-radius: 6px;
    padding: 12px;
    margin-top: 20px;
}

.ggbf-privacy-notice p {
    margin: 0;
    color: #6c757d;
    line-height: 1.4;
}

/* Melhorias nos inputs */
.ggbf-input,
.ggbf-select,
.ggbf-textarea {
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.ggbf-input:focus,
.ggbf-select:focus,
.ggbf-textarea:focus {
    outline: none;
    border-color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
    box-shadow: 0 0 0 2px hsla(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l), 0.2);
}

/* Placeholders mais suaves */
.ggbf-input::placeholder,
.ggbf-textarea::placeholder {
    color: #a0a0a0;
    opacity: 1;
}

/* Labels melhorados */
.ggbf-form-group label {
    margin-bottom: 6px;
    font-weight: 500;
    color: #2c3e50;
}

/* Espaçamento melhorado entre campos */
.ggbf-form-group {
    margin-bottom: 20px;
}

.ggbf-form-row .ggbf-form-group {
    /* margin-bottom: 15px; */
    margin-bottom: 5px;
}

/* Removido highlight automático em campos válidos para evitar borda verde
   (apenas estados de erro serão destacados quando aplicável) */

/* ✅ CORREÇÃO: Border vermelho apenas na validação explícita, não automaticamente */
.ggbf-input.ggbf-input-error,
.ggbf-select.ggbf-input-error,
.ggbf-textarea.ggbf-input-error {
    border-color: #e74c3c;
}

/* Botões desabilitados durante validação */
.ggbf-btn:disabled,
.ggbf-btn.ggbf-disabled {
    opacity: 0.6;
    cursor: not-allowed;
    pointer-events: none;
}

/* Loading state */
.ggbf-loading .ggbf-btn {
    position: relative;
    color: transparent;
}

.ggbf-loading .ggbf-btn::after {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    width: 16px;
    height: 16px;
    margin: -8px 0 0 -8px;
    border: 2px solid transparent;
    border-top: 2px solid #ffffff;
    border-radius: 50%;
    animation: ggbf-spin 1s linear infinite;
}

@keyframes ggbf-spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

/* ============================================================================
   SISTEMA DINÂMICO DE CUSTOM FIELDS
   ========================================================================= */

/* Container principal dos custom fields */
.ggbf-dynamic-fields-container {
    width: 100%;
    margin-top: 25px;
}

.ggbf-custom-fields-container {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.ggbf-basic-fields-container {
    display: flex;
    flex-direction: column;
    gap: 0px; /* ✅ CORREÇÃO: Reduzir espaçamento entre fields */
}

/* Loading state */
.ggbf-fields-loading {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 40px 20px;
    text-align: center;
}

.ggbf-loading-spinner {
    width: 32px;
    height: 32px;
    border: 3px solid #f3f3f3;
    border-top: 3px solid hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
    border-radius: 50%;
    animation: ggbf-spin 1s linear infinite;
    margin-bottom: 16px;
}

/* Form groups para custom fields */
.ggbf-field-text,
.ggbf-field-textarea,
.ggbf-field-select,
.ggbf-field-checkbox,
.ggbf-field-date,
.ggbf-field-country,
.ggbf-field-state {
    margin-bottom: 0px;
}

/* Labels específicos para custom fields */
.ggbf-field-text .ggbf-label,
.ggbf-field-textarea .ggbf-label,
.ggbf-field-select .ggbf-label,
.ggbf-field-date .ggbf-label,
.ggbf-field-country .ggbf-label,
.ggbf-field-state .ggbf-label {
    display: block;
    font-weight: 600;
    color: #333;
    margin-bottom: 8px;
    font-size: 14px;
}

/* Required indicator */
.ggbf-required {
    color: #dc3545;
    margin-left: 4px;
}

/* Input styles para custom fields */
.ggbf-field-text input,
.ggbf-field-date input {
    width: 100%;
    padding: 12px 16px;
    border: 2px solid #e1e5e9;
    border-radius: 6px;
    font-size: 16px;
    transition: all 0.3s ease;
    background-color: #fff;
}

.ggbf-field-text input:focus,
.ggbf-field-date input:focus {
    outline: none;
    border-color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
    box-shadow: 0 0 0 3px hsla(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l), 0.1);
}

/* Textarea styles */
.ggbf-field-textarea textarea {
    width: 100%;
    padding: 12px 16px;
    border: 2px solid #e1e5e9;
    border-radius: 6px;
    font-size: 16px;
    transition: all 0.3s ease;
    background-color: #fff;
    resize: vertical;
    min-height: 100px;
}

.ggbf-field-textarea textarea:focus {
    outline: none;
    border-color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
    box-shadow: 0 0 0 3px hsla(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l), 0.1);
}

/* Select styles */
.ggbf-field-select select,
.ggbf-field-country select,
.ggbf-field-state select {
    width: 100%;
    padding: 12px 16px;
    border: 2px solid #e1e5e9;
    border-radius: 6px;
    font-size: 16px;
    transition: all 0.3s ease;
    background-color: #fff;
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e");
    background-position: right 12px center;
    background-repeat: no-repeat;
    background-size: 16px;
    padding-right: 44px;
    appearance: none;
}

.ggbf-field-select select:focus,
.ggbf-field-country select:focus,
.ggbf-field-state select:focus {
    outline: none;
    border-color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
    box-shadow: 0 0 0 3px hsla(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l), 0.1);
}

.ggbf-field-state select:disabled {
    background-color: #f8f9fa;
    color: #6c757d;
    cursor: not-allowed;
}

/* Checkbox styles */
.ggbf-field-checkbox {
    display: flex;
    align-items: flex-start;
    gap: 12px;
}

.ggbf-checkbox-label {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    cursor: pointer;
    font-size: 14px;
    line-height: 1.5;
}

.ggbf-checkbox {
    width: 18px;
    height: 18px;
    border: 2px solid #e1e5e9;
    border-radius: 4px;
    cursor: pointer;
    transition: all 0.3s ease;
    flex-shrink: 0;
    margin-top: 2px;
}

.ggbf-checkbox:checked {
    background-color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
    border-color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
    background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='m13.854 3.646-7.5 7.5a.5.5 0 0 1-.708 0l-3.5-3.5a.5.5 0 1 1 .708-.708L6 10.293l7.146-7.147a.5.5 0 0 1 .708.708z'/%3e%3c/svg%3e");
    background-position: center;
    background-repeat: no-repeat;
}

.ggbf-checkbox-text {
    flex: 1;
}

/* Links em checkbox labels */
.ggbf-field-link {
    color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
    text-decoration: underline;
    transition: color 0.3s ease;
}

.ggbf-field-link:hover {
    color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), calc(var(--ggbf-primary-l) - 10%));
}

/* Separators */
.ggbf-field-separator {
    margin: 32px 0 24px 0;
    padding: 16px 0;
    border-bottom: 2px solid #e1e5e9;
}

.ggbf-separator-title {
    font-size: 18px;
    font-weight: 600;
    color: #333;
    margin: 0;
}

/* Error states */
.ggbf-input-error {
    border-color: #dc3545 !important;
    box-shadow: 0 0 0 3px rgba(220, 53, 69, 0.1) !important;
}

.ggbf-error-message {
    color: #dc3545;
    font-size: 13px;
    margin-top: 6px;
    display: block;
    font-weight: 500;
}

/* Success states */
.ggbf-input-success {
    border-color: #28a745;
}

/* Responsive design */
@media (max-width: 768px) {
    .ggbf-custom-fields-container {
        gap: 16px;
    }
    
    .ggbf-field-text input,
    .ggbf-field-textarea textarea,
    .ggbf-field-select select,
    .ggbf-field-country select,
    .ggbf-field-state select,
    .ggbf-field-date input {
        font-size: 16px; /* Evita zoom no iOS */
        padding: 14px 16px;
    }
    
    .ggbf-separator-title {
        font-size: 16px;
    }
    
    .ggbf-checkbox-label {
        font-size: 14px;
    }
}

/* Special input types */
.ggbf-date-input {
    position: relative;
}

.ggbf-date-input::-webkit-calendar-picker-indicator {
    background: transparent;
    bottom: 0;
    color: transparent;
    cursor: pointer;
    height: auto;
    left: 0;
    position: absolute;
    right: 0;
    top: 0;
    width: auto;
}

/* Country and state dependencies */
.ggbf-country-select,
.ggbf-state-select {
    transition: all 0.3s ease;
}

/* Loading states for field containers */
.ggbf-field-loading {
    opacity: 0.6;
    pointer-events: none;
}

/* Animation para aparecer campos */
@keyframes ggbf-fadeInUp {
    from {
        opacity: 0;
        transform: translateY(20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.ggbf-custom-fields-container > * {
    animation: ggbf-fadeInUp 0.4s ease-out;
}

/* Staggered animation para múltiplos campos */
.ggbf-custom-fields-container > *:nth-child(1) { animation-delay: 0ms; }
.ggbf-custom-fields-container > *:nth-child(2) { animation-delay: 50ms; }
.ggbf-custom-fields-container > *:nth-child(3) { animation-delay: 100ms; }
.ggbf-custom-fields-container > *:nth-child(4) { animation-delay: 150ms; }
.ggbf-custom-fields-container > *:nth-child(5) { animation-delay: 200ms; }
.ggbf-custom-fields-container > *:nth-child(6) { animation-delay: 250ms; }
.ggbf-custom-fields-container > *:nth-child(7) { animation-delay: 300ms; }
.ggbf-custom-fields-container > *:nth-child(8) { animation-delay: 350ms; }

/* High contrast mode support */
@media (prefers-contrast: high) {
    .ggbf-field-text input,
    .ggbf-field-textarea textarea,
    .ggbf-field-select select,
    .ggbf-field-country select,
    .ggbf-field-state select,
    .ggbf-field-date input {
        border-width: 3px;
    }
    
    .ggbf-checkbox {
        border-width: 3px;
    }
}

/* ============================================================================
   MÉTODOS DE PAGAMENTO
   ========================================================================= */

.ggbf-payment-methods-section {
    margin-top: 30px;
    padding: 20px;
    background: #f8f9fa;
    border-radius: 8px;
    border: 1px solid #e9ecef;
}

.ggbf-payment-methods-section h3 {
    margin: 0 0 8px 0;
    color: #333;
    font-size: 18px;
    font-weight: 600;
}

.ggbf-payment-description {
    margin: 0 0 20px 0;
    color: #666;
    font-size: 14px;
}

.ggbf-payment-methods-list {
    display: flex;
    flex-direction: column;
    gap: 12px;
    margin-bottom: 16px;
}

.ggbf-payment-method {
    display: block;
    cursor: pointer;
    border: 2px solid #e9ecef;
    border-radius: 8px;
    padding: 16px;
    background: white;
    transition: all 0.2s ease;
    position: relative;
}

.ggbf-payment-method:hover {
    border-color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
    box-shadow: 0 2px 8px hsla(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l), 0.1);
}

.ggbf-payment-method input[type="radio"] {
    position: absolute;
    left: 16px;
    top: 50%;
    transform: translateY(-50%);
    margin: 0;
    width: 18px;
    height: 18px;
    accent-color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
}

.ggbf-payment-method input[type="radio"]:checked + .ggbf-payment-method-content {
    font-weight: 600;
}

.ggbf-payment-method:has(input[type="radio"]:checked) {
    border-color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
    background: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), 97%);
    box-shadow: 0 2px 12px hsla(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l), 0.15);
}

.ggbf-payment-method-content {
    margin-left: 35px;
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}

.ggbf-payment-logo {
    width: auto;
    height: 24px;
    max-width: 60px;
    object-fit: contain;
}

.ggbf-payment-name {
    font-size: 16px;
    color: #333;
}

.ggbf-payment-note {
    color: #666;
    font-size: 12px;
    font-style: italic;
    margin-top: 4px;
}

.ggbf-payment-info {
    margin: 0;
    padding: 12px 16px;
    background: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), 96%);
    border-radius: 6px;
    border-left: 4px solid hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
}

.ggbf-payment-info p {
    margin: 0;
}

.ggbf-no-payment-methods {
    text-align: center;
    padding: 24px;
    background: #fff3cd;
    border: 1px solid #ffeaa7;
    border-radius: 8px;
}

.ggbf-no-payment-methods .ggbf-error {
    margin: 0;
    color: #856404;
    font-weight: 500;
}

/* Responsividade */
@media (max-width: 768px) {
    .ggbf-payment-methods-section {
        padding: 16px;
        margin-top: 20px;
    }
    
    .ggbf-payment-method {
        padding: 12px;
    }
    
    .ggbf-payment-method-content {
        margin-left: 30px;
        gap: 8px;
    }
    
    .ggbf-payment-logo {
        height: 20px;
        max-width: 50px;
    }
    
    .ggbf-payment-name {
        font-size: 14px;
    }
}

/* Fallback para navegadores que não suportam :has() */
@supports not selector(:has(*)) {
    .ggbf-payment-method input[type="radio"]:checked {
        border-color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
    }
}

/* Reduced motion support */
@media (prefers-reduced-motion: reduce) {
    .ggbf-custom-fields-container > *,
    .ggbf-field-text input,
    .ggbf-field-textarea textarea,
    .ggbf-field-select select,
    .ggbf-field-country select,
    .ggbf-field-state select,
    .ggbf-field-date input,
    .ggbf-checkbox,
    .ggbf-payment-method {
        animation: none;
        transition: none;
    }
}

/* ====== CONTROLES DE QUANTIDADE DOS EXTRAS ====== */

.ggbf-quantity-section {
    margin-top: 15px;
    padding: 12px;
    background: #f8f9fa;
    border: 1px solid #e9ecef;
    border-radius: 6px;
    transition: all 0.2s ease;
}

.ggbf-quantity-label {
    display: block;
    font-size: 13px;
    font-weight: 600;
    color: #495057;
    margin-bottom: 8px;
}

.ggbf-quantity-controls {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 5px;
}

.ggbf-quantity-btn {
    width: 32px;
    height: 32px;
    border: 1px solid #ced4da;
    background: #fff;
    color: #495057;
    border-radius: 4px;
    font-size: 16px;
    font-weight: 600;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: all 0.2s ease;
    user-select: none;
}

.ggbf-quantity-btn:hover {
    background: #f8f9fa;
    border-color: #adb5bd;
}

.ggbf-quantity-btn:active {
    background: #e9ecef;
    transform: scale(0.95);
}

.ggbf-quantity-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.ggbf-quantity-input {
    width: 60px;
    height: 32px;
    text-align: center;
    border: 1px solid #ced4da;
    border-radius: 4px;
    font-size: 14px;
    font-weight: 600;
    background: #fff;
    color: #495057;
    padding: 0;
}

.ggbf-quantity-input:focus {
    outline: none;
    border-color: var(--ggbf-primary, #007bff);
    box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.25);
}

.ggbf-quantity-info {
    font-size: 12px;
    color: #6c757d;
    font-style: italic;
}

/* Extras com quantidade */
.ggbf-extra-with-quantity {
    display: flex;
    flex-direction: column;
}

.ggbf-extra-with-quantity .ggbf-extra-toggle {
    margin-bottom: 0;
}

/* Seção de quantidade para extras obrigatórios */
.ggbf-mandatory-section .ggbf-quantity-section {
    margin-top: 10px;
    background: #fff3cd;
    border-color: #ffeaa7;
}

.ggbf-mandatory-section .ggbf-quantity-label {
    color: #856404;
}

/* Estados dos controles de quantidade */
.ggbf-quantity-plus:hover {
    background: #28a745;
    border-color: #28a745;
    color: #fff;
}

.ggbf-quantity-minus:hover {
    background: #dc3545;
    border-color: #dc3545;
    color: #fff;
}

/* Responsividade para controles de quantidade */
@media (max-width: 576px) {
    .ggbf-quantity-controls {
        justify-content: center;
    }
    
    .ggbf-quantity-btn {
        width: 40px;
        height: 40px;
        font-size: 18px;
    }
    
    .ggbf-quantity-input {
        width: 80px;
        height: 40px;
        font-size: 16px;
    }
}

/* Animações suaves */
.ggbf-quantity-section {
    animation: ggbf-fadeInUp 0.3s ease;
}

@keyframes ggbf-fadeInUp {
    from {
        opacity: 0;
        transform: translateY(10px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* ============================================================================
   MELHORIAS - GALERIA DE IMAGENS RESPONSIVA
   ========================================================================= */

.ggbf-image-gallery {
    position: relative;
    width: 100%;
    height: 140px;
    border-radius: 6px;
    overflow: hidden;
    background: #f8f9fa;
}

/* Container do slider */
.ggbf-gallery-slider {
    display: flex;
    width: 100%;
    height: 100%;
    transition: transform 0.3s ease;
}

/* Slide individual */
.ggbf-gallery-slide {
    min-width: 50%; /* Desktop: 2 slides visíveis (50% cada) */
    height: 100%;
    position: relative;
    padding: 0 2px; /* Pequeno espaço entre slides */
}

.ggbf-gallery-slide:first-child {
    padding-left: 0;
}

.ggbf-gallery-slide:last-child {
    padding-right: 0;
}

.ggbf-gallery-slide img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 4px;
}

/* Fallback para slide único sem imagem */
.ggbf-main-image {
    width: 100%;
    height: 100%;
}

.ggbf-main-image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: opacity 0.3s ease;
}

/* Dots de navegação - REMOVIDOS */
.ggbf-gallery-dots {
    display: none !important;
}

.ggbf-dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.5);
    cursor: pointer;
    transition: background 0.3s ease;
}

.ggbf-dot.active {
    background: rgba(255, 255, 255, 0.9);
}

/* Navegação por setas */
.ggbf-gallery-nav {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    width: 100%;
    display: flex;
    justify-content: space-between;
    padding: 0 8px;
    pointer-events: none;
    z-index: 2;
}

.ggbf-nav-btn {
    width: 28px;
    height: 28px;
    background: white;
    color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
    border: 1px solid hsla(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l), 0.2);
    border-radius: 3px;
    cursor: pointer;
    font-size: 14px;
    display: flex;
    align-items: center;
    justify-content: center;
    pointer-events: auto;
    transition: all 0.3s ease;
    opacity: 1;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

.ggbf-nav-btn:hover {
    background: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), 97%);
    border-color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
    transform: translateY(-1px);
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
}

.ggbf-nav-btn:focus {
    outline: 2px solid hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
    outline-offset: 2px;
}

/* Esconder dots e navegação quando há apenas uma imagem */
.ggbf-image-gallery:not([data-has-gallery]) .ggbf-gallery-dots,
.ggbf-image-gallery:not([data-has-gallery]) .ggbf-gallery-nav {
    display: none;
}

/* Responsividade: Mobile - 1 slide por vez */
@media (max-width: 768px) {
    .ggbf-gallery-slide {
        min-width: 100%; /* Mobile: 1 slide visível (100%) */
        padding: 0; /* Sem padding no mobile */
    }
    
    .ggbf-gallery-nav {
        display: flex; /* ✅ CORREÇÃO: Manter setas sempre visíveis no mobile */
    }
    
    .ggbf-nav-btn {
        opacity: 1 !important; /* ✅ GARANTIR: Botões sempre visíveis no mobile */
        background: white !important;
        color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l)) !important;
        border: 1px solid hsla(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l), 0.3) !important;
        box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15) !important;
    }
    
    .ggbf-dot {
        width: 8px;
        height: 8px;
    }
}

/* Loading state para imagens */
.ggbf-main-image img[src=""] {
    opacity: 0;
}

.ggbf-main-image img {
    opacity: 1;
}

/* Indicador de carregamento */
.ggbf-gallery-loading {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    color: #6c757d;
    font-size: 14px;
}

/* Performance: prevenir layout shifts */
.ggbf-gallery-slide img {
    display: block;
}

/* Smooth scrolling para touch devices */
.ggbf-gallery-slider {
    scroll-behavior: smooth;
}

/* Form group full width */
.ggbf-form-group-full {
    grid-column: 1 / -1;
}

/* Ajustes específicos para o datepicker no formulário */
.ggbf-has-datepicker .ggbf-datepicker-container {
    margin-top: 8px;
}

.ggbf-has-datepicker .ggbf-form-group label {
    display: block;
    margin-bottom: 8px;
    font-weight: 600;
    color: #333;
    font-size: 14px;
}

/* ============================================================================
   RANGE DATEPICKER
   ========================================================================= */

/* Container principal do datepicker */
.ggbf-datepicker-container {
    position: relative;
    width: 100%;
}

/* Input wrapper com ícone */
.ggbf-datepicker-input-wrapper {
    position: relative;
    display: flex;
    align-items: center;
    background: white;
    border: 2px solid #e1e5e9;
    border-radius: 8px;
    transition: all 0.3s ease;
    cursor: pointer;
    min-height: 48px;
}

.ggbf-datepicker-input-wrapper:hover {
    border-color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
    box-shadow: 0 2px 8px hsla(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l), 0.1);
}

.ggbf-datepicker-input-wrapper.active {
    border-color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
    box-shadow: 0 0 0 3px hsla(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l), 0.1);
}

/* Ícone do calendário */
.ggbf-datepicker-icon {
    position: absolute;
    left: 12px;
    top: 50%;
    transform: translateY(-50%);
    width: 20px;
    height: 20px;
    color: #666;
    pointer-events: none;
    z-index: 2;
}

/* Container das datas selecionadas */
.ggbf-datepicker-display {
    flex: 1;
    padding: 12px 12px 12px 40px;
    display: flex;
    align-items: center;
    gap: 12px;
    min-height: 48px;
}

/* Datas individuais */
.ggbf-date-display {
    display: flex;
    flex-direction: column;
    flex: 1;
    min-width: 0;
}

.ggbf-date-label {
    font-size: 11px;
    font-weight: 600;
    color: #666;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 2px;
}

.ggbf-date-value {
    font-size: 14px;
    font-weight: 500;
    color: #333;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.ggbf-date-value.placeholder {
    color: #999;
    font-style: italic;
}

/* Separador entre datas */
.ggbf-date-separator {
    width: 24px;
    height: 2px;
    background: #e1e5e9;
    border-radius: 1px;
    flex-shrink: 0;
}

/* Dropdown do calendário */
.ggbf-datepicker-dropdown {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    background: white;
    border: 2px solid #e1e5e9;
    border-top: none;
    border-radius: 0 0 12px 12px;
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.15);
    z-index: 1000;
    opacity: 0;
    visibility: hidden;
    transform: translateY(-10px);
    transition: all 0.3s ease;
    max-height: 350px;
    overflow: visible;
    pointer-events: none; /* Disabled quando não ativo */
}

.ggbf-datepicker-dropdown.active {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
    pointer-events: auto; /* Habilitado quando ativo */
}

/* Header do calendário */
.ggbf-calendar-header {
    padding: 8px 16px;
    border-bottom: 1px solid #f0f0f0;
    background: #fafafa;
}

.ggbf-calendar-nav {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
}

.ggbf-calendar-nav-btn {
    width: 32px;
    height: 32px;
    border: none;
    background: transparent;
    border-radius: 6px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #666;
    transition: all 0.2s ease;
    font-size: 16px;
    pointer-events: auto;
    user-select: none;
}

.ggbf-calendar-nav-btn:hover {
    background: #e1e5e9;
    color: #333;
}

.ggbf-calendar-nav-btn:active {
    transform: scale(0.95);
}

.ggbf-calendar-month-year {
    font-size: 16px;
    font-weight: 600;
    color: #333;
    min-width: 160px;
    text-align: center;
}

/* Grid do calendário */
.ggbf-calendar-grid {
    padding: 8px 12px;
}

.ggbf-calendar-weekdays {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 2px;
    margin-bottom: 4px;
}

.ggbf-calendar-weekday {
    text-align: center;
    font-size: 10px;
    font-weight: 600;
    color: #666;
    text-transform: uppercase;
    letter-spacing: 0.3px;
    padding: 4px 1px;
}

.ggbf-calendar-days {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 2px;
}

.ggbf-calendar-day {
    border: none;
    background: transparent;
    border-radius: 4px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 13px;
    font-weight: 500;
    color: #333;
    transition: all 0.2s ease;
    position: relative;
    height: 32px;
    pointer-events: auto;
    user-select: none;
    text-align: center;
}

.ggbf-calendar-day:hover {
    background: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), 97%);
    color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
}

.ggbf-calendar-day.disabled {
    color: #ccc;
    cursor: not-allowed;
    background: transparent;
}

.ggbf-calendar-day.disabled:hover {
    background: transparent;
    color: #ccc;
}

.ggbf-calendar-day.other-month {
    color: #ccc;
}

.ggbf-calendar-day.today {
    background: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), 97%);
    color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
    font-weight: 600;
}

.ggbf-calendar-day.selected {
    background: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
    color: white;
    font-weight: 600;
}

.ggbf-calendar-day.in-range {
    background: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), 94%);
    color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
}

.ggbf-calendar-day.range-start {
    background: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
    color: white;
    border-radius: 6px 6px 6px 6px;
}

.ggbf-calendar-day.range-end {
    background: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
    color: white;
    border-radius: 6px 6px 6px 6px;
}

.ggbf-calendar-day.range-start.range-end {
    border-radius: 6px;
}

/* Footer do datepicker */
.ggbf-datepicker-footer {
    padding: 10px 16px;
    border-top: 1px solid #e1e5e9;
    display: flex;
    justify-content: space-between;
    align-items: center;
    background: #ffffff;
    box-shadow: 0 -1px 3px rgba(0,0,0,0.05);
}

.ggbf-datepicker-clear {
    background: transparent;
    border: 1px solid #e1e5e9;
    color: #666;
    padding: 8px 16px;
    border-radius: 6px;
    cursor: pointer;
    font-size: 12px;
    font-weight: 500;
    transition: all 0.2s ease;
    pointer-events: auto;
    user-select: none;
    min-width: 80px;
}

.ggbf-datepicker-clear:hover {
    background: #f0f0f0;
    border-color: #ccc;
}

.ggbf-datepicker-apply {
    background: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
    border: none;
    color: white;
    padding: 8px 24px;
    border-radius: 6px;
    cursor: pointer;
    font-size: 14px;
    font-weight: 600;
    transition: all 0.2s ease;
    pointer-events: auto;
    user-select: none;
}

.ggbf-datepicker-apply:hover {
    background: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), calc(var(--ggbf-primary-l) - 10%));
    transform: translateY(-1px);
}

.ggbf-datepicker-apply:disabled {
    background: #ccc;
    cursor: not-allowed;
    transform: none;
}

.ggbf-datepicker-apply-close {
    background: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
    border: none;
    color: white;
    padding: 8px 20px;
    border-radius: 6px;
    cursor: pointer;
    font-size: 12px;
    font-weight: 600;
    transition: all 0.2s ease;
    pointer-events: auto;
    user-select: none;
    min-width: 120px;
    text-align: center;
}

.ggbf-datepicker-apply-close:hover {
    background: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), calc(var(--ggbf-primary-l) - 10%));
    transform: translateY(-1px);
}

.ggbf-datepicker-apply-close:disabled {
    background: #ccc;
    cursor: not-allowed;
    transform: none;
}

/* Regras específicas para Desktop */
@media (min-width: 769px) {
    .ggbf-datepicker-dropdown {
        min-width: 320px;
        max-width: 360px;
        max-height: none;
        overflow: visible;
    }
    
    .ggbf-calendar-grid {
        padding: 12px 16px;
    }
    
    .ggbf-calendar-day {
        height: 34px;
        font-size: 14px;
        border-radius: 6px;
    }
    
    .ggbf-calendar-day:hover {
        background: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), 97%);
        color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
    }
    
    .ggbf-datepicker-footer {
        padding: 12px 16px;
        border-radius: 0 0 8px 8px;
    }
}

/* Responsividade Mobile */
@media (max-width: 768px) {
    .ggbf-datepicker-dropdown {
        position: fixed;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        border: none;
        border-radius: 0;
        max-height: none;
        display: flex;
        flex-direction: column;
    }
    
    .ggbf-calendar-header {
        padding: 20px 16px;
        background: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
        color: white;
        border-bottom: none;
    }
    
    .ggbf-calendar-nav-btn {
        color: white;
    }
    
    .ggbf-calendar-nav-btn:hover {
        background: rgba(255, 255, 255, 0.1);
        color: white;
    }
    
    .ggbf-calendar-month-year {
        color: white;
        font-size: 18px;
    }
    
    .ggbf-calendar-grid {
        flex: 1;
        padding: 12px;
        overflow-y: auto;
    }
    
    .ggbf-calendar-day {
        min-height: 36px;
        max-height: 40px;
        font-size: 14px;
    }
    
    .ggbf-calendar-weekday {
        padding: 6px 1px;
        font-size: 10px;
    }
    
    .ggbf-datepicker-footer {
        padding: 12px 16px;
        background: white;
        border-top: 1px solid #e1e5e9;
    }
    
    .ggbf-datepicker-clear,
    .ggbf-datepicker-apply,
    .ggbf-datepicker-apply-close {
        padding: 10px 16px;
        font-size: 14px;
    }
    

}

/* Estados de loading */
.ggbf-datepicker-loading .ggbf-calendar-grid {
    opacity: 0.6;
    pointer-events: none;
}

/* Animação sutil para transições */
.ggbf-calendar-day {
    transition: all 0.15s cubic-bezier(0.4, 0, 0.2, 1);
}

/* Acessibilidade */
.ggbf-calendar-day:focus {
    outline: 2px solid hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
    outline-offset: 2px;
}

.ggbf-datepicker-input-wrapper:focus-within {
    border-color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
    box-shadow: 0 0 0 3px hsla(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l), 0.1);
}

/* High contrast mode */
@media (prefers-contrast: high) {
    .ggbf-datepicker-input-wrapper {
        border-width: 3px;
    }
    
    .ggbf-calendar-day.selected,
    .ggbf-calendar-day.range-start,
    .ggbf-calendar-day.range-end {
        border: 2px solid #000;
    }
}

/* Prefers reduced motion */
@media (prefers-reduced-motion: reduce) {
    .ggbf-datepicker-dropdown,
    .ggbf-calendar-day,
    .ggbf-calendar-nav-btn,
    .ggbf-datepicker-apply {
        transition: none;
    }
}

/* ============================================================================
   HEADER E PROGRESS BAR - ELEMENTOS ESPECÍFICOS REFATORADOS
   ========================================================================= */

/* Título principal do header (h2) */
.ggbf__title.ggbf-title {
    font-size: 20px !important;
    font-weight: 600 !important;
    margin: 0 !important;
    color: #2c3e50 !important;
    text-align: left !important;
}

/* Ícone de fechar */
.ggbf__text.ggbf-close-icon {
    font-size: 24px !important;
    font-weight: normal !important;
    line-height: 1 !important;
    /* color: #6c757d !important; */
    color: #fff !important;
    cursor: pointer !important;
}

/* CTA: Abrir disponibilidade (Step 2) */
.ggbf-open-availability { margin-top: 0 !important; }
@media (max-width: 900px) {
	.ggbf-open-availability { width: 100% !important; display: inline-flex !important; justify-content: center !important; }
}

/* Helper CTA abaixo do datepicker (Step 1) — estilo de botão delineado, fiel ao mock */
.ggbf-helper-row { margin-top: 8px; }
.ggbf-helper-text { margin: 8px 0 0; }
.ggbf-helper-text .ggbf-open-availability {
  appearance: none !important; background: hsla(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l), .06) !important;
  border: 2px solid hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l)) !important;
  color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l)) !important;
  display: block !important; width: 100% !important; text-align: center !important;
  padding: 12px 16px !important; border-radius: 8px !important;
  font-weight: 500 !important; font-size: 14px !important; line-height: 1.2 !important;
  text-decoration: none !important; cursor: pointer !important;
}
.ggbf-helper-text .ggbf-open-availability:hover { background: hsla(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l), .12) !important; }
@media (max-width: 480px) {
  .ggbf-helper-row { margin-top: 8px; }
  .ggbf-helper-text .ggbf-open-availability { font-size: 12px !important; padding: 12px 14px !important; }
}

/* Números dos steps na progress bar - Estado padrão */
.ggbf__text.ggbf-step-number {
    font-size: 12px !important;
    font-weight: 600 !important;
    color: #6c757d !important; /* Cor padrão (cinza) para steps inativos */
    text-align: center !important;
    line-height: 1 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
}

/* Números dos steps ativos/completos - Cor branca */
.ggbf-progress-step.active .ggbf__text.ggbf-step-number { color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l)) !important; }
.ggbf-progress-step.completed .ggbf__text.ggbf-step-number { color: #fff !important; }

/* Labels dos steps na progress bar */
.ggbf__text.ggbf-step-label {
    font-size: 11px !important;
    font-weight: 500 !important;
    color: #6c757d !important;
    text-align: center !important;
    line-height: 1.2 !important;
    margin-top: 4px !important;
}

/* ============================================================================
   BOTÕES DE NAVEGAÇÃO E OUTROS ELEMENTOS DE TEXTO
   ========================================================================= */

/* Texto nos botões (spans dentro de botões) */
.ggbf-btn .ggbf__text {
    font-family: inherit !important;
    font-size: inherit !important;
    font-weight: inherit !important;
    color: inherit !important;
    text-align: inherit !important;
    line-height: inherit !important;
    margin: 0 !important;
    padding: 0 !important;
    display: inline !important;
}

/* Opções de select */
.ggbf-select .ggbf__text,
option.ggbf__text {
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif !important;
    font-size: 14px !important;
    color: #495057 !important;
    line-height: 1.4 !important;
}

/* Navegação da galeria (setas) */
.ggbf-nav-btn .ggbf__text {
    font-family: inherit !important;
    font-size: 18px !important;
    font-weight: bold !important;
    color: inherit !important;
    line-height: 1 !important;
    margin: 0 !important;
    padding: 0 !important;
    display: inline !important;
}

/* ============================================================================
   STEP 6 - CONFIRMAÇÃO DE RESERVA (DESIGN ALINHADO)
   ========================================================================= */

.ggbf-confirmation {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.ggbf-header-inline {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

.ggbf-status-badge {
    display: inline-flex;
    align-items: center;
    padding: 4px 10px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 600;
    background: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), 95%);
    color: hsl(var(--ggbf-primary-h), var(--ggbf-primary-s), var(--ggbf-primary-l));
}

.ggbf-inline-note {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 12px;
    background: #f8f9fa;
    border: 1px solid #e9ecef;
    border-radius: 6px;
}

.ggbf-inline-icon {
    font-size: 14px;
    color: #6c757d;
}

.ggbf-payment-simple {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.ggbf-hints {
    margin: 0;
    padding-left: 18px;
}

.ggbf-steps-compact {
    margin: 0;
    padding-left: 18px;
}

.ggbf-security-small {
    font-size: 13px !important;
    color: #6b7280 !important;
    margin: 0;
}

@media (max-width: 768px) {
    .ggbf-header-inline {
        flex-direction: column;
        align-items: flex-start;
        gap: 6px;
    }
}

/* ============================================================================
   BREAKDOWN DE PREÇOS - DESIGN LIMPO E COMPACTO
   ========================================================================= */

/* Container principal - minimalista */
.ggbf-price-breakdown-container {
    margin-top: 3px;
    font-size: 11px;
    color: #6c757d;
    line-height: 1.3;
}

/* Layout principal do breakdown */
.ggbf-price-breakdown {
    display: flex;
    gap: 8px;
    align-items: center;
    flex-wrap: wrap;
}

/* Itens individuais - sem bordas, clean */
.ggbf-price-breakdown-item {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    background: none !important;
    border: none !important;
    padding: 0 !important;
    margin: 0 !important;
    box-shadow: none !important;
}

/* Labels discretos */
.ggbf-breakdown-label {
    color: #6c757d;
    font-size: 11px;
}

/* Valores destacados mas sutis */
.ggbf-breakdown-value {
    color: #495057;
    font-weight: 500;
    font-size: 11px;
}

/* Separador simples entre itens no desktop */
.ggbf-price-breakdown-item.ggbf-tax-item:not(:last-child):after {
    content: "•";
    margin: 0 6px 0 3px;
    color: #dee2e6;
    font-size: 8px;
}

/* Ocultar elementos desnecessários */
.ggbf-price-breakdown-total,
.ggbf-price-note {
    display: none;
}

/* ============================================================================
   RESPONSIVIDADE CLEAN
   ========================================================================= */

/* Tablets - ajustes mínimos */
@media (max-width: 768px) {
    .ggbf-price-breakdown {
        gap: 6px;
    }
    
    .ggbf-price-breakdown-item.ggbf-tax-item:not(:last-child):after {
        margin: 0 4px 0 2px;
    }
}

/* Mobile - layout híbrido corrigido */
@media (max-width: 480px) {
    /* Container integrado na mesma linha */
    .ggbf-price-breakdown-container {
        display: inline-block;
        margin-top: 0;
        margin-left: 8px;
    }
    
    /* Breakdown com layout misto */
    .ggbf-price-breakdown {
        display: inline-block;
    }
    
    /* Primeiro item (Quarto) - inline com preço principal */
    .ggbf-price-breakdown-item.ggbf-room-item {
        display: inline;
    }
    
    /* Quebra de linha antes das taxas */
    .ggbf-price-breakdown-item.ggbf-tax-item {
        display: block;
        width: 100%;
        margin-top: 2px;
    }
    
    .ggbf-price-breakdown-item.ggbf-tax-item:first-of-type {
        margin-top: 4px;
    }
    
    /* Sem separadores no mobile */
    .ggbf-price-breakdown-item.ggbf-tax-item:not(:last-child):after {
        display: none;
    }
    
    .ggbf-breakdown-label,
    .ggbf-breakdown-value {
        font-size: 10px;
    }
    
    /* Justificar taxas */
    .ggbf-price-breakdown-item.ggbf-tax-item {
        display: flex;
        justify-content: space-between;
    }
} 