/**
 * lmdoow-configurator.css
 *
 * Travel Configurator — layout, wizard steps, progress bar, sidebar, mobile panel.
 * Architecture: docs/architecture/frontend-flow.md
 *
 * Depends on: lmdoow-frontend.css (custom properties, base tokens)
 */

/* ── Custom Properties ─────────────────────────────────────────── */
:root {

    /* ── Core palette ────────────────────────────────────────────── */
  /* ── Core palette ────────────────────────────────────────────── */
  --lmdoow-color-primary:       #023149;
  --lmdoow-color-primary-dark:  #012334;
  --lmdoow-color-primary-bg:    #e8f2f9;  /* light primary tint */
  --lmdoow-color-accent:        #96C0CE;
  --lmdoow-color-accent-dark:   #355A6D;

  /* ── Text ────────────────────────────────────────────────────── */
  --lmdoow-color-text:          #747474;
  --lmdoow-color-heading:       #023149;
  --lmdoow-color-text-muted:    #6b7280;
  --lmdoow-color-muted:         #6b7280;  /* legacy alias */

  /* ── Surfaces & borders ──────────────────────────────────────── */
  --lmdoow-color-border:        #e5e7eb;
  --lmdoow-color-bg:            #f9fafb;
  --lmdoow-color-surface:       #ffffff;
  --lmdoow-color-surface-hover: #f3f4f6;

  /* ── Semantic state colors ───────────────────────────────────── */
  --lmdoow-color-error:         #C5111A;
  --lmdoow-color-error-dark:    #8C0C12;
  --lmdoow-color-error-bg:      #fef2f2;
  --lmdoow-color-success:       #16a34a;
  --lmdoow-color-success-bg:    #f0fdf4;
  --lmdoow-color-warning:       #d97706;
  --lmdoow-color-warning-bg:    #fffbeb;
  --lmdoow-color-info:          #0284c7;
  --lmdoow-color-info-bg:       #e0f2fe;

  /* ── Skeleton loading animation ─────────────────────────────── */
  --lmdoow-skeleton-base:       #e9ecef;
  --lmdoow-skeleton-shine:      #f8f9fa;
}
/* ── Layout ─────────────────────────────────────────────────────────────── */

.lmdoow-configurator {
    display: flex;
    flex-direction: column;
    min-height: 60vh;
    position: relative;
}

/* ── Progress bar area (full width, stacks above content) ───────────────── */

.lmdoow-configurator__progress {
    margin-bottom: var( --lmdoow-space-lg, 2rem );
}

/* ── Content area: wizard + sidebar side-by-side ────────────────────────── */

.lmdoow-configurator__content {
    display: grid;
    grid-template-columns: 1fr;
    grid-template-rows: auto;
    flex: 1;
}

@media ( min-width: 768px ) {
    .lmdoow-configurator__content {
        grid-template-columns: 60% 40%;
        column-gap: var( --lmdoow-space-lg, 2rem );
        align-items: start;
    }
}

@media ( min-width: 1024px ) {
    .lmdoow-configurator__content {
        grid-template-columns: 65% 35%;
        column-gap: var( --lmdoow-space-xl, 3rem );
    }
}

/* Sidebar oculto (paso 6) → wizard ocupa todo el ancho */
@media ( min-width: 768px ) {
    .lmdoow-configurator__content:has( [data-sidebar-col][hidden] ) {
        grid-template-columns: 1fr;
    }
}

/* ── Wizard area ────────────────────────────────────────────────────────── */

.lmdoow-configurator__wizard {
    min-width: 0;
}

/* On mobile the sidebar is a fixed 60px-tall bar at the bottom — add clearance */
@media ( max-width: 767px ) {
    .lmdoow-configurator__wizard {
        padding-bottom: 76px; /* 60px sidebar + 16px breathing room */
    }
}

/* ── Sidebar area ───────────────────────────────────────────────────────── */

.lmdoow-configurator__sidebar-col {
    margin-top: var( --lmdoow-space-lg, 2rem );
}

@media ( min-width: 768px ) {
    .lmdoow-configurator__sidebar-col {
        margin-top: 0;
    }
}

/* ── Progress Bar ───────────────────────────────────────────────────────── */

/*
 * Brand color tokens for the progress bar.
 * Normal  #625E5C  — pending / not yet reached
 * Active  var( --lmdoow-color-error )  — current step
 * Done    var( --lmdoow-color-accent-dark )  — completed step
 */

.lmdoow-progress-bar {
    display: flex;
    align-items: flex-start;   /* flex-start so optional sub-label doesn't distort rows */
    justify-content: space-between;
    gap: 0;
    padding: 1rem 0.5rem;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    background: #fff;
    border-radius: var( --lmdoow-radius-lg, 12px );
    box-shadow: 0 2px 12px rgba( 0, 0, 0, 0.06 );
}

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

.lmdoow-progress-bar__item {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.3rem;
    flex: 1 1 0;
    position: relative;
    cursor: default;
    padding: 0 0.25rem;
    white-space: nowrap;
    min-width: 48px;
}

/* ── Connector line (from this item's circle centre → next item's circle centre) */
.lmdoow-progress-bar__item:not( :last-child )::after {
    content: '';
    position: absolute;
    top: 15px;                         /* centred on 30px circle */
    left: calc( 50% + 17px );
    right: calc( -50% + 17px );
    height: 2px;
    background: #d9d7d5;               /* light neutral, normal state */
    z-index: 0;
}

/* Completed → next: solid teal */
.lmdoow-progress-bar__item[data-step-status="done"]:not( :last-child )::after {
    background: var( --lmdoow-color-accent-dark );
}

/* Connector leading INTO an optional step: dashed */
.lmdoow-progress-bar__item[data-next-optional]:not( :last-child )::after {
    background: none;
    border-top: 2px dashed #d9d7d5;
    height: 0;
    top: 15px;
}

/* Completed connector leading into optional step: dashed teal */
.lmdoow-progress-bar__item[data-step-status="done"][data-next-optional]:not( :last-child )::after {
    border-top-color: var( --lmdoow-color-accent-dark );
}

/* ── Circle */
.lmdoow-progress-bar__circle {
    width: 30px;
    height: 30px;
    border-radius: 50%;
    border: 2px solid #c8c5c3;         /* normal border */
    background: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.8125rem;
    font-weight: 700;
    color: #625E5C;
    z-index: 1;
    position: relative;
    transition: background-color 0.2s, border-color 0.2s, color 0.2s;
    flex-shrink: 0;
}

/* ── Label */
.lmdoow-progress-bar__label {
    font-size: 0.6875rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: #625E5C;
    text-align: center;
    line-height: 1.2;
}

/* ── "(opcional)" sub-label */
.lmdoow-progress-bar__optional {
    font-size: 0.625rem;
    color: #9e9a97;
    text-align: center;
    font-style: italic;
    margin-top: -0.1rem;
    line-height: 1;
}

/* ── STATE: Active (current step) — var( --lmdoow-color-error ) */
[data-step-status="active"] .lmdoow-progress-bar__circle {
    background: var( --lmdoow-color-error );
    border-color: var( --lmdoow-color-error );
    color: #fff;
}

[data-step-status="active"] .lmdoow-progress-bar__label {
    color: var( --lmdoow-color-error );
    font-weight: 700;
}

/* ── STATE: Done (completed step) — var( --lmdoow-color-accent-dark ) */
[data-step-status="done"] .lmdoow-progress-bar__circle {
    background: var( --lmdoow-color-accent-dark );
    border-color: var( --lmdoow-color-accent-dark );
    color: #fff;
}

[data-step-status="done"] .lmdoow-progress-bar__label {
    color: var( --lmdoow-color-accent-dark );
}

[data-step-status="done"] {
    cursor: pointer;
}

[data-step-status="done"]:hover .lmdoow-progress-bar__circle {
    background: var( --lmdoow-color-primary-dark );
    border-color: var( --lmdoow-color-primary-dark );
}

/* ── STATE: Disabled (prerequisites not met) */
[data-step-status="disabled"] {
    opacity: 0.4;
    pointer-events: none;
}

/* ── Optional step: dashed circle border when pending */
[data-optional="true"][data-step-status="pending"] .lmdoow-progress-bar__circle,
[data-optional="true"][data-step-status="disabled"] .lmdoow-progress-bar__circle {
    border-style: dashed;
    border-color: #c8c5c3;
}

/* ── Step panels ─────────────────────────────────────────────────────────── */

.lmdoow-step {
    animation: lmdoow-step-in 0.2s ease-out both;
}

@keyframes lmdoow-step-in {
    from { opacity: 0; transform: translateY( 8px ); }
    to   { opacity: 1; transform: translateY( 0 ); }
}

.lmdoow-step__header {
    margin-bottom: var( --lmdoow-space-lg, 2rem );
}

body .lmdoow-step__title {
    font-size: 1.7rem;
    font-weight: 700;
    color: #1E1B13;
    margin: 0 0 0.25rem;
    font-family: "Gilroy ExtraBold", Sans-serif!important;
}

body .lmdoow-step__subtitle {
    font-size: 1rem;
    color: var( --lmdoow-color-text-muted, var( --lmdoow-color-text-muted ) );
    margin: 0;
}

/* Step error container */
.lmdoow-step-errors {
    list-style: none;
    margin: 0 0 var( --lmdoow-space-md, 1rem );
    padding: var( --lmdoow-space-sm, 0.75rem ) var( --lmdoow-space-md, 1rem );
    background: var( --lmdoow-color-error-bg, #fef2f2 );
    border: 1px solid var( --lmdoow-color-error, #ef4444 );
    border-radius: var( --lmdoow-radius-md, 8px );
    color: var( --lmdoow-color-error, #dc2626 );
    font-size: 0.875rem;
}

.lmdoow-step-errors li + li { margin-top: 0.25rem; }

/* JS renders <p data-step-errors> filled with .lmdoow-step-errors__item spans */
.lmdoow-step-errors__item {
    display: block;
    font-size: 0.875rem;
    color: var( --lmdoow-color-error, #dc2626 );
    line-height: 1.4;
}

/* ── Navigation buttons ─────────────────────────────────────────────────── */

.lmdoow-configurator__nav {
    display: flex;
    align-items: center;
    gap: var( --lmdoow-space-md, 1rem );
    padding: var( --lmdoow-space-lg, 2rem ) 0 var( --lmdoow-space-md, 1rem );
    border-top: 1px solid var( --lmdoow-color-border, #e5e7eb );
    margin-top: var( --lmdoow-space-xl, 3rem );
}

.lmdoow-btn--prev {
    background: transparent;
    border: 1px solid var( --lmdoow-color-border, #d1d5db );
    color: var( --lmdoow-color-text, #374151 );
    padding: 0.625rem 1.25rem;
    border-radius: 24px;
    font-size: 0.9375rem;
    font-weight: 500;
    cursor: pointer;
    transition: background-color 0.15s, border-color 0.15s;
    display: flex;
    align-items: center;
    gap: 0.5rem;
}


.lmdoow-btn--prev:hover, .lmdoow-btn--prev:hover:not( :disabled ){
    background: var( --lmdoow-color-surface-hover, #f3f4f6 )!important;
    border-color: var( --lmdoow-color-text-muted, #9ca3af );
    color: var( --lmdoow-color-text, #374151 );
}

.lmdoow-btn--next {
    margin-left: auto;
    background: var( --lmdoow-color-primary, #1a56db );
    border: 1px solid transparent;
    color: #fff;
    padding: 0.6875rem 1.75rem;
    border-radius: 24px;
    font-size: 0.9375rem;
    font-weight: 600;
    cursor: pointer;
    transition: background-color 0.15s, opacity 0.15s;
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.lmdoow-btn--next:hover:not( :disabled ) {
    background: var( --lmdoow-color-primary-dark, #1e40af );
}

.lmdoow-btn--next:disabled,
.lmdoow-btn--prev:disabled {
    opacity: 0.45;
    cursor: not-allowed;
}

.lmdoow-btn--next[hidden],
.lmdoow-btn--prev[hidden] {
    display: none !important;
}

/* ── Destination step ───────────────────────────────────────────────────── */

.lmdoow-dest-grid {
    display: grid;
    grid-template-columns: repeat( auto-fill, minmax( 200px, 1fr ) );
    gap: var( --lmdoow-space-md, 1rem );
}

/* ── Destination card ───────────────────────────────────────────────────── */

.lmdoow-dest-card {
    background: #fff;
    border-radius: 14px;
    overflow: hidden;
    box-shadow: 0 2px 12px rgba( 0, 0, 0, 0.08 );
    cursor: pointer;
    outline: 2px solid transparent;
    outline-offset: 2px;
    transition: outline-color 0.15s, transform 0.18s, box-shadow 0.18s;
    position: relative;
    display: flex;
    flex-direction: column;
}

.lmdoow-dest-card:hover,
.lmdoow-dest-card:focus-visible {
    transform: translateY( -3px );
    box-shadow: 0 8px 24px rgba( 0, 0, 0, 0.13 );
    outline-color: var( --lmdoow-color-error );
}

.lmdoow-dest-card.is-selected {
    outline: 2.5px solid var( --lmdoow-color-error );
    outline-offset: 2px;
}

/* Media area — covers the full card */
.lmdoow-dest-card__media {
    position: relative;
    overflow: hidden;
    aspect-ratio: 2 / 3;
    background: #e5e7eb;
    flex: 1;
}

.lmdoow-dest-card__img {
    width: 100%;
    height: 100%!important;
    object-fit: cover;
    display: block;
    transition: transform 0.35s ease;
}

.lmdoow-dest-card:hover .lmdoow-dest-card__img {
    transform: scale( 1.04 );
}

/* Zone badge — white pill top-left */
.lmdoow-dest-card__zone-badge {
    position: absolute;
    top: 10px;
    left: 10px;
    background: rgba( 255, 255, 255, 0.92 );
    color: #374151;
    font-size: 0.6875rem;
    font-weight: 600;
    line-height: 1;
    padding: 0.25rem 0.625rem;
    border-radius: 100px;
    z-index: 2;
    letter-spacing: 0.02em;
    backdrop-filter: blur( 4px );
}

/* Gradient + title + price overlaid at bottom — covers full card */
.lmdoow-dest-card__gradient {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    padding: 3rem 0.875rem 0.875rem;
    background: linear-gradient( to top, rgba( 0, 0, 0, 0.72 ) 0%, transparent 100% );
    z-index: 1;
}

.lmdoow-dest-card__title {
    color: #fff;
    font-size: 1.75rem!important;
    font-weight: 700;
    margin: 0 0 0.375rem;
    line-height: 1.25;
    text-shadow: 0 1px 4px rgba( 0, 0, 0, 0.35 );
    font-family: "Gilroy ExtraBold", Sans-serif!important;
}

/* Price line inside the gradient, below the title */
.lmdoow-dest-card__price-line {
    display: flex;
    align-items: baseline;
    gap: 0.3rem;
    margin: 0;
}

.lmdoow-dest-card__desde {
    font-size: 0.6875rem;
    color: rgba( 255, 255, 255, 0.75 );
    font-weight: 400;
}

.lmdoow-dest-card__price {
    font-size: 1.50rem;
    font-weight: 800;
    color: #fff;
    letter-spacing: -0.01em;
    text-shadow: 0 1px 3px rgba( 0, 0, 0, 0.3 );
    font-family: "Gilroy ExtraBold", Sans-serif!important;
}

.lmdoow-dest-card__currency {
    font-size: 0.6875rem;
    color: rgba( 255, 255, 255, 0.75 );
    font-weight: 400;
}

/* Checkmark badge when selected (CSS-only) */
.lmdoow-dest-card.is-selected .lmdoow-dest-card__media::after {
    content: '✓';
    position: absolute;
    top: 10px;
    right: 10px;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background: var( --lmdoow-color-error );
    color: #fff;
    font-size: 0.8125rem;
    font-weight: 700;
    line-height: 26px;
    text-align: center;
    z-index: 3;
    box-shadow: 0 2px 6px rgba( 0, 0, 0, 0.25 );
}

/* ── Dates & Guests step ────────────────────────────────────────────────── */

/* Cream wrapper that holds both date and guest sections */
.lmdoow-step__content {
    background: #FEFBF4;
    border-radius: var( --lmdoow-radius-lg, 12px );
    padding: 1.75rem;
}

.lmdoow-step__section {
    margin-bottom: var( --lmdoow-space-xl, 2.5rem );
}

.lmdoow-step__section:last-child {
    margin-bottom: 0;
}

.lmdoow-step__section-title {
    font-size: 1.5rem!important;
    color: var( --lmdoow-color-error, #C5111A );
    margin: 0 0 var( --lmdoow-space-md, 1rem );
    padding-bottom: 0.5rem;
    border-bottom: 1px solid var( --lmdoow-color-border, #e5e7eb );
    font-family: "Gilroy ExtraBold", Sans-serif!important;
}

/* Date range */
.lmdoow-date-range {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var( --lmdoow-space-md, 1rem );
}

@media ( max-width: 480px ) {
    .lmdoow-date-range { grid-template-columns: 1fr; }
}

body .lmdoow-date-field label {
    display: block;
    font-size: 0.875rem;
    font-weight: 500;
    color: var( --lmdoow-color-text, #374151 );
    margin-bottom: 0.375rem;
}

.lmdoow-date-field input[type="date"] {
    width: 100%;
    padding: 0.625rem 0.875rem;
    border: 1px solid var( --lmdoow-color-border, #d1d5db );
    border-radius: var( --lmdoow-radius-md, 8px );
    font-size: 0.9375rem;
    color: var( --lmdoow-color-text, #374151 );
    background: #fff;
    transition: border-color 0.15s;
    -webkit-appearance: none;
}

.lmdoow-date-field input[type="date"]:focus {
    outline: 2px solid var( --lmdoow-color-primary, #1a56db );
    outline-offset: 1px;
    border-color: var( --lmdoow-color-primary, #1a56db );
}

.lmdoow-nights-display {
    margin-top: 0.5rem;
    font-size: 0.875rem;
    color: var( --lmdoow-color-primary, #1a56db );
    font-weight: 600;
}

.lmdoow-date-error {
    margin-top: 0.5rem;
    font-size: 0.8125rem;
    color: var( --lmdoow-color-error, #dc2626 );
}

/* Guest counters */
.lmdoow-guest-rows {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var( --lmdoow-space-sm, 0.75rem );
}

@media ( max-width: 480px ) {
    .lmdoow-guest-rows {
        grid-template-columns: 1fr;
    }
}

.lmdoow-guest-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    align-items: center;
    padding: 0.75rem var( --lmdoow-space-md, 1rem );
    background: #fff;
    border: 1px solid var( --lmdoow-color-border, #e5e7eb );
    border-radius: var( --lmdoow-radius-md, 8px );
}

.lmdoow-guest-row__label {
    font-size: 0.9375rem;
    color: var( --lmdoow-color-text, #374151 );
}

.lmdoow-guest-row__sub {
    display: block;
    font-size: 0.75rem;
    color: var( --lmdoow-color-text-muted, #9ca3af );
    margin-top: 0.125rem;
}

.lmdoow-guest-counter {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 0.75rem;
    justify-self: end;
}

.lmdoow-guest-counter__btn {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    border: 1px solid var( --lmdoow-color-border, #d1d5db );
    background: #fff;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.125rem;
    line-height: 1;
    color: var( --lmdoow-color-text, #374151 );
    transition: background-color 0.15s, border-color 0.15s;
}

.lmdoow-guest-counter__btn:hover:not( :disabled ) {
    background: var( --lmdoow-color-primary, #1a56db );
    border-color: var( --lmdoow-color-primary, #1a56db );
    color: #fff;
}

.lmdoow-guest-counter__btn:disabled {
    opacity: 0.35;
    cursor: not-allowed;
}

/* Specificity (0,2,1): .lmdoow-guest-counter input[type]
   Beats hello-elementor reset (0,1,1): input[type=number] */
.lmdoow-guest-counter input[type="number"].lmdoow-guest-counter__value,
.lmdoow-guest-counter__value {
    min-width: 2.5ch;
    width: auto;           /* override theme width: 100% */
    padding: 0;            /* override theme padding: .5rem 1rem */
    border: none;          /* override theme border: 1px solid #666 */
    border-radius: 0;      /* override theme border-radius: 3px */
    text-align: center;
    font-size: 1rem;
    font-weight: 600;
    color: var( --lmdoow-color-heading, #023149 );
    background: transparent;
    box-shadow: none;
    outline: none;
    -moz-appearance: textfield;
    transition: none;      /* override theme transition: all .3s */
}

.lmdoow-guest-counter input[type="number"].lmdoow-guest-counter__value::-webkit-inner-spin-button,
.lmdoow-guest-counter input[type="number"].lmdoow-guest-counter__value::-webkit-outer-spin-button,
.lmdoow-guest-counter__value::-webkit-inner-spin-button,
.lmdoow-guest-counter__value::-webkit-outer-spin-button {
    -webkit-appearance: none;
    display: none;
}

/* Child ages wrapper — single-room mode: header + selects */
.lmdoow-child-ages-wrapper {
    margin-top: var( --lmdoow-space-md );
    padding: 1rem 1.125rem;
    background: var( --lmdoow-color-primary-bg );
    border-radius: var( --lmdoow-radius-lg );
    border-left: 3px solid var( --lmdoow-color-primary );
}

.lmdoow-child-ages-wrapper[hidden] {
    display: none !important;
}

.lmdoow-child-ages-header {
    margin-bottom: 0.75rem;
}

.lmdoow-child-ages-header__title {
    font-size: 0.9375rem;
    font-weight: 700;
    color: var( --lmdoow-color-heading );
    margin: 0 0 0.2rem;
}

.lmdoow-child-ages-header__hint {
    font-size: 0.8125rem;
    color: var( --lmdoow-color-text-muted );
    margin: 0;
    line-height: 1.4;
}

/* Child ages */
.lmdoow-child-ages {
    display: flex;
    flex-wrap: wrap;
    gap: var( --lmdoow-space-sm, 0.75rem );
}

.lmdoow-child-ages[hidden] {
    display: none !important;
}

.lmdoow-step__child-age-label {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    font-size: 0.8125rem;
    color: var( --lmdoow-color-text-muted, var( --lmdoow-color-text-muted ) );
    min-width: 100px;
}

.lmdoow-step__child-age-select {
    padding: 0.375rem 0.625rem;
    border: 1px solid var( --lmdoow-color-border, #d1d5db );
    border-radius: var( --lmdoow-radius-sm, 4px );
    font-size: 0.875rem;
    background: var( --lmdoow-color-surface );
}

/* ── Room occupancy distribution (Step 2, rooms > 1) ───────────────────── */

.lmdoow-room-occupancies {
    animation: lmdoow-fade-in 0.22s ease;
}

.lmdoow-room-occupancies[hidden] {
    display: none !important;
}

.lmdoow-room-occupancies__hint {
    font-size: 0.8125rem;
    color: var( --lmdoow-color-text-muted );
    margin: -0.5rem 0 var( --lmdoow-space-md );
    line-height: 1.4;
}

/* Room panels list */
.lmdoow-room-panels {
    display: flex;
    flex-direction: column;
    gap: 0.875rem;
    margin-bottom: 1.125rem;
}

/* Individual room panel card */
.lmdoow-room-panel {
    border: 1.5px solid var( --lmdoow-color-border );
    border-radius: var( --lmdoow-radius-xl );
    background: var( --lmdoow-color-surface );
    overflow: hidden;
    transition: border-color var( --lmdoow-transition ),
                box-shadow var( --lmdoow-transition );
}

.lmdoow-room-panel:focus-within {
    border-color: var( --lmdoow-color-accent );
    box-shadow: var( --lmdoow-shadow-hover );
}

/* Panel header: icon + room name + occupancy summary */
.lmdoow-room-panel__header {
    display: flex;
    align-items: center;
    gap: 0.625rem;
    padding: 0.75rem 1rem;
    background: var( --lmdoow-color-bg );
    border-bottom: 1px solid var( --lmdoow-color-border );
}

.lmdoow-room-panel__icon {
    flex-shrink: 0;
    color: var( --lmdoow-color-primary );
    display: flex;
    align-items: center;
}

.lmdoow-room-panel__name {
    font-size: 0.9375rem;
    font-weight: 700;
    color: var( --lmdoow-color-heading );
    flex-shrink: 0;
}

.lmdoow-room-panel__summary {
    margin-left: auto;
    font-size: 0.8rem;
    color: var( --lmdoow-color-text-muted );
    text-align: right;
    line-height: 1.3;
}

/* Panel body: guest counter rows */
.lmdoow-room-panel__body {
    padding: 0.875rem 1rem;
    display: flex;
    flex-direction: column;
    gap: 0;
}

/* Counter row inside a room — same layout as .lmdoow-guest-row */
.lmdoow-room-panel__row {
    display: grid;
    grid-template-columns: 1fr auto;
    align-items: center;
    padding: 0.625rem 0;
    border-bottom: 1px solid var( --lmdoow-color-border );
}

.lmdoow-room-panel__row:last-child {
    border-bottom: none;
    padding-bottom: 0;
}

/* Child ages block inside a room panel */
.lmdoow-room-panel__child-ages {
    padding: 0.75rem 0 0.375rem;
    border-bottom: 1px solid var( --lmdoow-color-border );
}

.lmdoow-room-panel__child-ages[hidden] {
    display: none !important;
}

.lmdoow-room-panel__child-ages-label {
    font-size: 0.8125rem;
    font-weight: 600;
    color: var( --lmdoow-color-text-muted );
    margin: 0 0 0.5rem;
}

.lmdoow-room-panel__child-ages-grid {
    display: flex;
    flex-wrap: wrap;
    gap: 0.625rem;
}

/* Child age item inside a room: label + select stacked */
.lmdoow-room-panel__child-age-item {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    font-size: 0.8125rem;
    color: var( --lmdoow-color-text-muted );
    min-width: 110px;
}

/* Distribution summary — shows assigned vs total per type */
.lmdoow-room-distribution-summary {
    border-radius: var( --lmdoow-radius-md );
    border: 1.5px solid var( --lmdoow-color-border );
    overflow: hidden;
}

.lmdoow-room-distribution-summary--ok {
    border-color: var( --lmdoow-color-success );
    background: var( --lmdoow-color-success-bg );
}

.lmdoow-room-distribution-summary--warn {
    border-color: var( --lmdoow-color-warning );
    background: var( --lmdoow-color-warning-bg );
}

.lmdoow-room-distribution-summary__row {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 0.875rem;
    border-bottom: 1px solid var( --lmdoow-color-border );
    font-size: 0.85rem;
}

.lmdoow-room-distribution-summary__row:last-of-type {
    border-bottom: none;
}

.lmdoow-room-distribution-summary__icon {
    font-size: 0.8125rem;
    font-weight: 700;
    flex-shrink: 0;
    width: 18px;
    text-align: center;
}

.lmdoow-room-distribution-summary__row.is-ok .lmdoow-room-distribution-summary__icon {
    color: var( --lmdoow-color-success );
}

.lmdoow-room-distribution-summary__row.is-warn .lmdoow-room-distribution-summary__icon {
    color: var( --lmdoow-color-warning );
}

.lmdoow-room-distribution-summary__label {
    flex: 1;
    color: var( --lmdoow-color-text );
}

.lmdoow-room-distribution-summary__count {
    font-weight: 700;
    color: var( --lmdoow-color-heading );
    font-variant-numeric: tabular-nums;
}

.lmdoow-room-distribution-summary__warning {
    margin: 0;
    padding: 0.5rem 0.875rem;
    font-size: 0.8125rem;
    color: var( --lmdoow-color-warning );
    border-top: 1px solid var( --lmdoow-color-border );
    line-height: 1.4;
}

/* Fade-in for when the section appears */
@keyframes lmdoow-fade-in {
    from { opacity: 0; transform: translateY( 6px ); }
    to   { opacity: 1; transform: translateY( 0 ); }
}

/* ── Hotel step ─────────────────────────────────────────────────────────── */

/* ── Hotel grid (step 3) ─────────────────────────────────────────────────── */

.lmdoow-hotel-grid {
    display: grid;
    grid-template-columns: repeat( 2, 1fr );
    gap: var( --lmdoow-space-md, 1rem );
}

@media ( max-width: 600px ) {
    .lmdoow-hotel-grid { grid-template-columns: 1fr; }
}

/* ── Hotel card ──────────────────────────────────────────────────────────── */

.lmdoow-hotel-card {
    position: relative;
    border-radius: var( --lmdoow-radius-lg, 12px );
    overflow: hidden;
    cursor: pointer;
    user-select: none;
    -webkit-user-select: none;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.lmdoow-hotel-card:hover {
    transform: translateY( -3px );
    box-shadow: 0 8px 24px rgba( 0, 0, 0, 0.18 );
}

.lmdoow-hotel-card:focus-visible {
    outline: 3px solid var( --lmdoow-color-accent, #96C0CE );
    outline-offset: 3px;
}

/* ── Media wrapper ───────────────────────────────────────────────────────── */

.lmdoow-hotel-card__media {
    position: relative;
    width: 100%;
    aspect-ratio: 4 / 3;
    display: block;
}

.lmdoow-hotel-card__img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

/* [hidden] must win over display:block from the base class */
.lmdoow-hotel-card__img[hidden] {
    display: none !important;
}

/* Fallback shown when image is absent or fails to load */
.lmdoow-hotel-card__img--fallback {
    width: 100%;
    height: 100%;
    background: linear-gradient( 135deg, #1a3a4f 0%, #023149 60%, #0a4a6b 100% );
}

.lmdoow-hotel-card__img--fallback[hidden] {
    display: none !important;
}

/* ── Gradient overlay ────────────────────────────────────────────────────── */

.lmdoow-hotel-card__gradient {
    position: absolute;
    inset: 0;
    background: linear-gradient(
        to top,
        rgba( 0, 0, 0, 0.82 ) 0%,
        rgba( 0, 0, 0, 0.45 ) 45%,
        transparent 75%
    );
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    padding: 1rem 1rem 0.875rem;
    gap: 0.35rem;
}

/* ── Stars ───────────────────────────────────────────────────────────────── */

.lmdoow-hotel-card__stars {
    font-size: 0.8125rem;
    color: #F5C518;
    letter-spacing: 0.05em;
    line-height: 1;
}

/* ── Hotel name ──────────────────────────────────────────────────────────── */

body .lmdoow-hotel-card__name {
    font-size: 1.0625rem;
    font-weight: 700;
    color: #fff;
    margin: 0;
    line-height: 1.25;
    font-family: "Gilroy ExtraBold", sans-serif;
}

/* ── Price row ───────────────────────────────────────────────────────────── */

.lmdoow-hotel-card__price-row {
    display: flex;
    align-items: baseline;
    gap: 0.4rem;
    flex-wrap: wrap;
}

.lmdoow-hotel-card__price {
    font-size: 1.125rem;
    font-weight: 800;
    color: #fff;
    font-family: "Gilroy ExtraBold", sans-serif;
    line-height: 1;
}

.lmdoow-hotel-card__price-label {
    font-size: 0.75rem;
    color: rgba( 255, 255, 255, 0.8 );
    font-weight: 400;
}

/* ── Amenity chips ───────────────────────────────────────────────────────── */

.lmdoow-hotel-card__tags {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
    margin-top: 0.2rem;
}

.lmdoow-hotel-card__tag {
    font-size: 0.6875rem;
    font-weight: 600;
    color: var( --lmdoow-color-primary-dark, #012334 );
    background: rgba( 255, 255, 255, 0.92 );
    border-radius: 999px;
    padding: 0.2rem 0.6rem;
    line-height: 1.4;
    white-space: nowrap;
}

/* ── Selected checkmark (top-right corner) ───────────────────────────────── */

.lmdoow-hotel-card__check {
    position: absolute;
    top: 0.625rem;
    right: 0.625rem;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var( --lmdoow-color-error, #C5111A );
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    transform: scale( 0.6 );
    transition: opacity 0.2s ease, transform 0.2s ease;
    pointer-events: none;
}

.lmdoow-hotel-card.is-selected .lmdoow-hotel-card__check {
    opacity: 1;
    transform: scale( 1 );
}

/* Hotel skeleton */
.lmdoow-hotel-skeleton {
    aspect-ratio: 4 / 3;
    border-radius: var( --lmdoow-radius-lg, 12px );
    overflow: hidden;
}

/* ── Tours step ─────────────────────────────────────────────────────────── */

.lmdoow-tours-grid {
    display: grid;
    grid-template-columns: repeat( 2, 1fr );
    gap: var( --lmdoow-space-md, 1rem );
}

@media ( max-width: 540px ) {
    .lmdoow-tours-grid { grid-template-columns: 1fr; }
}

/* ── Card shell ── */

.lmdoow-tour-card {
    display: flex;
    flex-direction: column;
    border-radius: 24px;
    overflow: hidden;
    cursor: pointer;
    background: var( --lmdoow-color-surface, #fff );
    box-shadow: var( --lmdoow-shadow, 0 4px 20px rgba(0,0,0,0.08) );
    transition: transform 0.2s ease, box-shadow 0.2s ease, outline-color 0.15s;
    outline: 3px solid transparent;
    outline-offset: 0;
}

.lmdoow-tour-card:hover {
    transform: translateY( -2px );
    box-shadow: 0 8px 28px rgba( 0, 0, 0, 0.15 );
}

.lmdoow-tour-card.is-selected {
    outline-color: var( --lmdoow-color-error, #C5111A );
    transform: none;
    box-shadow: 0 0 0 3px var( --lmdoow-color-error, #C5111A ),
                var( --lmdoow-shadow, 0 4px 20px rgba(0,0,0,0.08) );
}

.lmdoow-tour-card.is-selected:hover {
    transform: none;
}

.lmdoow-tour-card:focus-visible {
    outline-color: var( --lmdoow-color-primary, #023149 );
}

/* ── Media zone (image — keeps own aspect-ratio) ── */

.lmdoow-tour-card__media {
    position: relative;
    width: 100%;
    aspect-ratio: 4 / 3;
    flex-shrink: 0;
}

.lmdoow-tour-card__img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%!important;
    object-fit: cover;
    display: block;
}

/* ── Checkmark (top-right, scales in when selected) ── */

.lmdoow-tour-card__check {
    position: absolute;
    top: 0.625rem;
    right: 0.625rem;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background: var( --lmdoow-color-error, #C5111A );
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    opacity: 0;
    transform: scale( 0.5 );
    transition: opacity 0.2s ease, transform 0.2s ease;
    z-index: 4;
    pointer-events: none;
}

.lmdoow-tour-card.is-selected .lmdoow-tour-card__check {
    opacity: 1;
    transform: scale( 1 );
}

/* ── Gradient overlay (absolute, full bleed) ── */

.lmdoow-tour-card__gradient {
    position: absolute;
    inset: 0;
    z-index: 2;
    background: linear-gradient(
        to top,
        rgba(0,0,0,0.88) 0%,
        rgba(0,0,0,0.50) 40%,
        rgba(0,0,0,0.08) 70%,
        transparent 100%
    );
    /* nothing here affects card height */
}

/* ── Tipo badge (absolute top-left of gradient) ── */

.lmdoow-tour-card__tipo {
    position: absolute;
    top: 0.625rem;
    left: 0.625rem;
    z-index: 3;
    font-size: 0.6875rem;
    font-weight: 700;
    background: rgba(255,255,255,0.9);
    color: #c05621;
    border-radius: 999px;
    padding: 0.2rem 0.6rem;
    line-height: 1.4;
    pointer-events: none;
}

/* ── Bottom content block ── */

.lmdoow-tour-card__bottom {
    position: absolute;
    inset-inline: 0;
    bottom: 0;
    z-index: 3;
    padding: 0.75rem 0.875rem 0.8rem;
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
}

body .lmdoow-tour-card__name {
    font-size: 1.75rem;
    font-weight: 800;
    font-family: "Gilroy ExtraBold", sans-serif;
    color: #fff;
    margin: 0;
    line-height: 1.25;
}

.lmdoow-tour-card__dur {
    font-size: 0.6875rem;
    color: rgba(255,255,255,0.72);
    margin-top: -0.1rem;
}

/* ── 2. Price line (always visible, sits between title and action row) ── */

.lmdoow-tour-card__price-line {
    display: flex;
    align-items: baseline;
    gap: 0.3rem;
    line-height: 1.2;
}

.lmdoow-tour-card__price {
    font-size: 1rem;
    font-weight: 800;
    font-family: "Gilroy ExtraBold", sans-serif;
    color: #fff;
}

.lmdoow-tour-card__price-cur {
    font-size: 0.6875rem;
    font-weight: 400;
    font-family: inherit;
    opacity: 0.82;
    margin-left: 0.1rem;
}

.lmdoow-tour-card__per-person {
    font-size: 0.6875rem;
    color: rgba(255,255,255,0.65);
}

/* ── 3a. Add row (default: full-width Agregar button) ── */

.lmdoow-tour-card__add-row {
    margin-top: 0.35rem;
}

.lmdoow-tour-card__add-row[hidden] { display: none !important; }

.lmdoow-tour-card__add-btn {
    display: block;
    width: 100%;
    background: var(--lmdoow-color-primary);
    border: 1px solid var(--lmdoow-color-primary);
    border-radius: 24px;
    padding: 0.6875rem 1.75rem;
    font-size: 1rem;
    font-weight: 700;
    font-family: "Gilroy ExtraBold", sans-serif;
    color: #fff;
    line-height: 1;
    cursor: pointer;
    transition: background 0.15s, border-color 0.15s;
    white-space: nowrap;
    text-align: center;
}

.lmdoow-tour-card__add-btn:hover {
    background: rgba(255,255,255,0.28);
    border-color: rgba(255,255,255,0.65);
}

.lmdoow-tour-card.is-selected .lmdoow-tour-card__add-btn {
    /* safety: keep hidden via JS, this prevents any flash */
    display: none;
}

/* ── 3b. Panel de steppers (fuera del gradiente — panel blanco bajo la imagen) ── */

.lmdoow-tour-card__panel {
    background: var( --lmdoow-color-surface, #fff );
    border-top: 1px solid var( --lmdoow-color-border, #e5e7eb );
    padding: 0 1rem 0.75rem;
}

.lmdoow-tour-card__panel[hidden] { display: none !important; }

/* Alias para compatibilidad JS — [data-tour-counter-row] se mapea a __panel */
.lmdoow-tour-card__counter-inner {
    /* vacío — legacy class sin uso en el nuevo HTML */
}

/* ── Fila de pax (label + stepper + subtotal) ── */

.lmdoow-tour-card__pax-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.625rem;
    padding: 0.625rem 0;
    border-bottom: 1px solid var( --lmdoow-color-border, #e5e7eb );
}

.lmdoow-tour-card__pax-row:first-child {
    padding-top: 0.875rem;
}

.lmdoow-tour-card__pax-row:last-of-type {
    border-bottom: none;
}

.lmdoow-tour-card__pax-label {
    font-size: 0.8125rem;
    color: var( --lmdoow-color-text-muted, #6b7280 );
    font-weight: 500;
    flex: 1;
}

.lmdoow-tour-card__pax-subtotal {
    font-size: 0.8125rem;
    font-weight: 700;
    color: var( --lmdoow-color-heading, #023149 );
    text-align: right;
    min-width: 5rem;
}

/* ── Stepper pill (fondo claro, colores del sistema) ── */

.lmdoow-tour-card__stepper {
    display: flex;
    align-items: center;
    border: 1.5px solid var( --lmdoow-color-border, #e5e7eb );
    border-radius: 999px;
    overflow: hidden;
    background: var( --lmdoow-color-surface, #fff );
    flex-shrink: 0;
}

.lmdoow-tour-card__stepper-btn {
    width: 30px;
    height: 30px;
    background: transparent;
    border: none;
    color: var( --lmdoow-color-primary, #023149 );
    font-size: 1.25rem;
    line-height: 1;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background 0.12s, color 0.12s;
    flex-shrink: 0;
}

.lmdoow-tour-card__stepper-btn:hover:not( :disabled ) {
    background: var( --lmdoow-color-primary-bg, #e8f2f9 );
    color: var( --lmdoow-color-primary-dark, #012334 );
}

.lmdoow-tour-card__stepper-btn:disabled {
    opacity: 0.28;
    cursor: not-allowed;
}

.lmdoow-tour-card__stepper-val {
    width: 2.25ch;
    background: transparent;
    border: none;
    border-left: 1.5px solid var( --lmdoow-color-border, #e5e7eb );
    border-right: 1.5px solid var( --lmdoow-color-border, #e5e7eb );
    color: var( --lmdoow-color-heading, #023149 );
    font-size: 0.9375rem;
    font-weight: 700;
    text-align: center;
    height: 30px;
    -moz-appearance: textfield;
    appearance: textfield;
    padding: 0;
}

.lmdoow-tour-card__stepper-val::-webkit-inner-spin-button,
.lmdoow-tour-card__stepper-val::-webkit-outer-spin-button { display: none; }

/* ── Fila de total ── */

.lmdoow-tour-card__pax-total {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0.625rem 0 0;
    margin-top: 0.25rem;
    border-top: 2px solid var( --lmdoow-color-border, #e5e7eb );
    font-size: 0.9375rem;
    font-weight: 700;
    color: var( --lmdoow-color-heading, #023149 );
    font-family: "Gilroy ExtraBold", sans-serif;
}

/* ── Transport step ─────────────────────────────────────────────────────── */

.lmdoow-transport-options {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

/* Heading between featured and regular sections */
.lmdoow-transport-others-heading {
    font-size: 0.8125rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var( --lmdoow-color-text-muted, #6b7280 );
    margin: 0.25rem 0 0;
}

/* ── Featured transport card ─────────────────────────────────────────────── */

.lmdoow-transport-featured {
    display: flex;
    align-items: stretch;
    background: #023149;
    border-radius: 16px;
    overflow: hidden;
    cursor: pointer;
    border: 2px solid transparent;
    transition: border-color 0.2s, box-shadow 0.2s;
}

.lmdoow-transport-featured:hover {
    border-color: rgba( 150, 192, 206, 0.5 );
    box-shadow: 0 4px 24px rgba( 2, 49, 73, 0.28 );
}

.lmdoow-transport-featured.is-selected {
    border-color: var( --lmdoow-color-accent, #96C0CE );
    box-shadow: 0 4px 24px rgba( 2, 49, 73, 0.38 );
}

/* Left body */
.lmdoow-transport-featured__body {
    flex: 1;
    min-width: 0;
    padding: 1.375rem 1.5rem;
    display: flex;
    flex-direction: column;
    gap: 0.625rem;
}

.lmdoow-transport-featured__badge {
    display: inline-flex;
    align-items: center;
    align-self: flex-start;
    background: rgba( 150, 192, 206, 0.18 );
    border: 1px solid rgba( 150, 192, 206, 0.45 );
    border-radius: 999px;
    padding: 0.2rem 0.75rem;
    font-size: 0.6875rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var( --lmdoow-color-accent, #96C0CE );
}

.lmdoow-transport-featured__logo {
    height: 36px;
    width: auto;
    max-width: 140px;
    object-fit: contain;
    object-position: left center;
}

.lmdoow-transport-featured__provider-name {
    font-size: 0.875rem;
    font-weight: 700;
    color: var( --lmdoow-color-accent, #96C0CE );
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.lmdoow-transport-featured__title {
    font-family: "Gilroy ExtraBold", sans-serif;
    font-size: 1.125rem;
    font-weight: 800;
    color: #fff;
    line-height: 1.3;
    margin: 0;
}

.lmdoow-transport-featured__desc {
    font-size: 0.8125rem;
    color: rgba( 255, 255, 255, 0.72 );
    line-height: 1.5;
    margin: 0;
}

.lmdoow-transport-featured__features {
    list-style: none;
    margin: 0.25rem 0 0;
    padding: 0;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.375rem 1rem;
}

.lmdoow-transport-featured__feature {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.8125rem;
    color: rgba( 255, 255, 255, 0.85 );
    line-height: 1.3;
}

.lmdoow-transport-featured__feature-icon {
    color: var( --lmdoow-color-accent, #96C0CE );
    flex-shrink: 0;
}

/* Right panel */
.lmdoow-transport-featured__panel {
    width: 200px;
    flex-shrink: 0;
    border-left: 1px solid rgba( 255, 255, 255, 0.1 );
    background: rgba( 0, 0, 0, 0.2 );
    padding: 1.375rem 1.25rem;
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    align-items: flex-start;
}

.lmdoow-transport-featured__panel-label {
    font-size: 0.625rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var( --lmdoow-color-accent, #96C0CE );
    line-height: 1.4;
}

.lmdoow-transport-featured__price-original {
    display: flex;
    align-items: baseline;
    gap: 0.25rem;
    font-size: 0.875rem;
    color: rgba( 255, 255, 255, 0.42 );
    text-decoration: line-through;
}

.lmdoow-transport-featured__price-main {
    font-family: "Gilroy ExtraBold", sans-serif;
    font-size: 1.875rem;
    font-weight: 800;
    color: #fff;
    line-height: 1.1;
    display: flex;
    align-items: baseline;
    gap: 0.35rem;
}

.lmdoow-transport-featured__price-cur {
    font-family: inherit;
    font-size: 0.8125rem;
    font-weight: 700;
    color: rgba( 255, 255, 255, 0.6 );
}

.lmdoow-transport-featured__discount-badge {
    display: inline-flex;
    align-items: center;
    background: #22c55e;
    color: #fff;
    border-radius: 999px;
    padding: 0.175rem 0.625rem;
    font-size: 0.6875rem;
    font-weight: 700;
    letter-spacing: 0.04em;
}

.lmdoow-transport-featured__savings {
    font-size: 0.75rem;
    color: rgba( 255, 255, 255, 0.62 );
    line-height: 1.4;
}

.lmdoow-transport-featured__panel-divider {
    width: 100%;
    height: 1px;
    background: rgba( 255, 255, 255, 0.12 );
    margin: 0.375rem 0;
}

.lmdoow-transport-featured__cta {
    display: block;
    width: 100%;
    background: var( --lmdoow-color-error, #C5111A );
    color: #fff;
    border: none;
    border-radius: var( --lmdoow-radius-md, 8px );
    padding: 0.6rem 1rem;
    font-size: 0.875rem;
    font-weight: 700;
    font-family: "Gilroy ExtraBold", sans-serif;
    cursor: pointer;
    text-align: center;
    transition: background 0.15s, transform 0.1s;
    margin-top: auto;
}

.lmdoow-transport-featured__cta:hover  { background: #a80d15; }
.lmdoow-transport-featured__cta:active { transform: scale( 0.98 ); }

/* ── Simple transport card ───────────────────────────────────────────────── */

.lmdoow-transport-option {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 1rem 1.25rem;
    background: #fff;
    border: 1.5px solid var( --lmdoow-color-border, #e5e7eb );
    border-radius: var( --lmdoow-radius-lg, 12px );
    cursor: pointer;
    transition: border-color 0.2s, box-shadow 0.2s;
}

.lmdoow-transport-option:hover {
    border-color: var( --lmdoow-color-accent, #96C0CE );
    box-shadow: 0 2px 12px rgba( 2, 49, 73, 0.08 );
}

.lmdoow-transport-option.is-selected {
    border-color: var( --lmdoow-color-primary, #023149 );
    box-shadow: 0 2px 14px rgba( 2, 49, 73, 0.13 );
}

/* Vehicle icon circle */
.lmdoow-transport-option__icon-wrap {
    width: 52px;
    height: 52px;
    border-radius: 50%;
    background: #EFF4F7;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    color: var( --lmdoow-color-primary, #023149 );
}

/* Body: name + chips */
.lmdoow-transport-option__body {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
}

.lmdoow-transport-option__name {
    font-size: 0.9375rem;
    font-weight: 700;
    color: var( --lmdoow-color-heading, #111827 );
    display: block;
    line-height: 1.3;
}

.lmdoow-transport-option__chips {
    display: flex;
    flex-wrap: wrap;
    gap: 0.375rem;
}

.lmdoow-transport-option__chip {
    display: inline-flex;
    align-items: center;
    background: #EFF4F7;
    color: var( --lmdoow-color-primary, #023149 );
    border-radius: 999px;
    padding: 0.2rem 0.625rem;
    font-size: 0.75rem;
    font-weight: 600;
    line-height: 1.4;
    white-space: nowrap;
}

/* Right section: avatar + price + CTA */
.lmdoow-transport-option__right {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 0.4rem;
    flex-shrink: 0;
}

.lmdoow-transport-option__avatar {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    object-fit: cover;
    border: 2px solid var( --lmdoow-color-border, #e5e7eb );
}

.lmdoow-transport-option__price {
    font-family: "Gilroy ExtraBold", sans-serif;
    font-size: 1.0625rem;
    font-weight: 800;
    color: var( --lmdoow-color-primary, #023149 );
    white-space: nowrap;
    display: flex;
    align-items: baseline;
    gap: 0.2rem;
}

.lmdoow-transport-option__price-cur {
    font-size: 0.75rem;
    font-weight: 600;
    color: var( --lmdoow-color-text-muted, #6b7280 );
}

.lmdoow-transport-option__confirm-btn {
    background: var( --lmdoow-color-primary, #023149 );
    color: #fff;
    border: none;
    border-radius: 999px;
    padding: 0.45rem 1rem;
    font-size: 0.8125rem;
    font-weight: 700;
    font-family: "Gilroy ExtraBold", sans-serif;
    cursor: pointer;
    white-space: nowrap;
    transition: background 0.15s;
}

.lmdoow-transport-option__confirm-btn:hover {
    background: #034060;
}

.lmdoow-transport-option.is-selected .lmdoow-transport-option__confirm-btn,
.lmdoow-transport-option__confirm-btn.is-selected {
    background: var( --lmdoow-color-accent, #96C0CE );
    color: var( --lmdoow-color-primary, #023149 );
}

.lmdoow-transport-option__chip svg {
    flex-shrink: 0;
    margin-right: 0.25rem;
    opacity: 0.7;
}

/* ── No-transport option ─────────────────────────────────────────────────── */

.lmdoow-transport-none {
    text-align: center;
    padding: var( --lmdoow-space-md, 1rem );
    border: 2px dashed var( --lmdoow-color-border, #e5e7eb );
    border-radius: var( --lmdoow-radius-lg, 12px );
    color: var( --lmdoow-color-text-muted, #6b7280 );
    cursor: pointer;
    font-size: 0.9375rem;
    transition: border-color 0.2s, color 0.2s;
}

.lmdoow-transport-none:hover,
.lmdoow-transport-none.is-selected {
    border-color: var( --lmdoow-color-text-muted, #9ca3af );
    color: var( --lmdoow-color-text, #374151 );
}

/* ── Canada Transfers card inside configurator ──────────────────────────── */

/* Pointer + border behaviour — mirrors lmdoow-transport-featured */
.lmdoow-transport-canada {
    cursor: pointer;
    border: 2px solid transparent;
    transition: border-color 0.2s, box-shadow 0.2s;
}

.lmdoow-transport-canada:hover {
    border-color: rgba( 150, 192, 206, 0.5 );
    box-shadow: 0 4px 24px rgba( 2, 49, 73, 0.28 );
}

.lmdoow-transport-canada.is-selected {
    border-color: var( --lmdoow-color-accent, #96C0CE );
    box-shadow: 0 4px 24px rgba( 2, 49, 73, 0.38 );
}

/* Override .lmdoow-dest-transport outer padding — inside wizard no section padding needed */
.lmdoow-transport-canada.lmdoow-dest-transport__card {
    margin: 0;
}

/* ── Flight info panel ───────────────────────────────────────────────────── */

.lmdoow-flight-info {
    margin-top: 0.75rem;
    background: #fff;
    border: 1px solid var( --lmdoow-color-border, #e5e7eb );
    border-radius: var( --lmdoow-radius-lg, 12px );
    overflow: hidden;
    animation: lmdoow-flight-info-in 0.2s ease-out;
}

@keyframes lmdoow-flight-info-in {
    from { opacity: 0; transform: translateY( -6px ); }
    to   { opacity: 1; transform: translateY( 0 ); }
}

/* Help row */
.lmdoow-flight-info__help-row {
    padding: 1rem 1.25rem 0.875rem;
    border-bottom: 1px solid var( --lmdoow-color-border, #e5e7eb );
}

.lmdoow-flight-info__help-label {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.9375rem;
    font-weight: 600;
    color: var( --lmdoow-color-text, #111827 );
    cursor: pointer;
}

.lmdoow-flight-info__help-check {
    width: 16px;
    height: 16px;
    flex-shrink: 0;
    accent-color: var( --lmdoow-color-primary, #023149 );
    cursor: pointer;
}

.lmdoow-flight-info__help-note {
    margin: 0.375rem 0 0 1.5rem;
    font-size: 0.8125rem;
    color: var( --lmdoow-color-text-muted, #6b7280 );
    line-height: 1.5;
}

/* Data section */
.lmdoow-flight-info__data {
    padding: 1.25rem;
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.lmdoow-flight-info__section-label {
    margin: 0;
    font-size: 0.6875rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var( --lmdoow-color-text-muted, #6b7280 );
}

.lmdoow-flight-info__title {
    margin: 0;
    font-size: 1rem;
    font-weight: 700;
    color: var( --lmdoow-color-text, #111827 );
}

.lmdoow-flight-info__desc {
    margin: 0;
    font-size: 0.875rem;
    color: var( --lmdoow-color-text-muted, #6b7280 );
    line-height: 1.55;
}

/* Service type selector */
.lmdoow-flight-info__type-wrap {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.lmdoow-flight-info__type-label {
    font-size: 0.6875rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var( --lmdoow-color-text-muted, #6b7280 );
}

.lmdoow-flight-info__type-tabs {
    display: inline-flex;
    gap: 0;
    border: 1px solid var( --lmdoow-color-border, #e5e7eb );
    border-radius: 8px;
    overflow: hidden;
    width: fit-content;
}

.lmdoow-flight-info__type-btn {
    padding: 0.5rem 1rem;
    font-size: 0.875rem;
    font-weight: 500;
    background: #fff;
    color: var( --lmdoow-color-text, #374151 );
    border: none;
    border-right: 1px solid var( --lmdoow-color-border, #e5e7eb );
    cursor: pointer;
    transition: background 0.15s, color 0.15s;
    white-space: nowrap;
}

.lmdoow-flight-info__type-btn:last-child {
    border-right: none;
}

.lmdoow-flight-info__type-btn:hover {
    background: var( --lmdoow-color-surface, #f9fafb );
}

.lmdoow-flight-info__type-btn.is-active {
    background: var( --lmdoow-color-primary, #023149 );
    color: #fff;
    font-weight: 600;
}

/* Arrival + departure columns */
.lmdoow-flight-info__cols {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
}

@media ( max-width: 540px ) {
    .lmdoow-flight-info__cols {
        grid-template-columns: 1fr;
    }
}

.lmdoow-flight-info__col {
    background: var( --lmdoow-color-surface, #f9fafb );
    border: 1px solid var( --lmdoow-color-border, #e5e7eb );
    border-radius: 10px;
    padding: 1rem;
    display: flex;
    flex-direction: column;
    gap: 0.875rem;
}

.lmdoow-flight-info__col[hidden] { display: none !important; }

.lmdoow-flight-info__col-header {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    color: var( --lmdoow-color-primary, #023149 );
}

.lmdoow-flight-info__col-title {
    margin: 0;
    font-size: 1rem;
    font-weight: 700;
    color: var( --lmdoow-color-primary, #023149 );
}

.lmdoow-flight-info__field {
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
}

.lmdoow-flight-info__field-label {
    font-size: 0.6875rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var( --lmdoow-color-text-muted, #6b7280 );
}

.lmdoow-flight-info__input {
    width: 100%;
    padding: 0.5625rem 0.75rem;
    font-size: 0.9375rem;
    border: 1px solid var( --lmdoow-color-border, #d1d5db );
    border-radius: 6px;
    background: #fff;
    color: var( --lmdoow-color-text, #111827 );
    transition: border-color 0.15s, box-shadow 0.15s;
    box-sizing: border-box;
}

.lmdoow-flight-info__input:focus {
    outline: none;
    border-color: var( --lmdoow-color-primary, #023149 );
    box-shadow: 0 0 0 3px rgba( 2, 49, 73, 0.1 );
}

.lmdoow-flight-info__input--time {
    font-variant-numeric: tabular-nums;
}

/* No-info checkbox row */
.lmdoow-flight-info__no-info-label {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.9375rem;
    font-weight: 600;
    color: var( --lmdoow-color-text, #111827 );
    cursor: pointer;
    padding: 0 1.25rem;
}

.lmdoow-flight-info__no-info-check {
    width: 16px;
    height: 16px;
    flex-shrink: 0;
    accent-color: var( --lmdoow-color-primary, #023149 );
    cursor: pointer;
}

.lmdoow-flight-info__no-info-note {
    margin: 0.375rem 0 1.25rem 3rem;
    font-size: 0.8125rem;
    color: var( --lmdoow-color-text-muted, #6b7280 );
    line-height: 1.5;
    padding-right: 1.25rem;
}

/* Focus ring */
.lmdoow-transport-canada:focus-visible {
    outline: 3px solid var( --lmdoow-color-accent, #96C0CE );
    outline-offset: 2px;
}

/* ── Summary / Itinerary step ───────────────────────────────────────────── */

.lmdoow-itinerary {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

/* ── Main itinerary card ── */
.lmdoow-itinerary-card {
    background: #fff;
    border: 1px solid var( --lmdoow-color-border, #e5e7eb );
    border-radius: var( --lmdoow-radius-lg, 12px );
    overflow: hidden;
}

.lmdoow-itinerary__row {
    display: flex;
    align-items: flex-start;
    gap: 0.875rem;
    padding: 1rem 1.25rem;
    border-bottom: 1px solid var( --lmdoow-color-border, #f0f0f0 );
    background: #FEFBF4;
}

.lmdoow-itinerary__row--last {
    border-bottom: none;
}

/* Red circular icon bubble */
.lmdoow-itinerary__icon {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    border-radius: 50%;
    background: #F5E6E7;
    color: var( --lmdoow-color-error, #C5111A );
    margin-top: 2px;
}

.lmdoow-itinerary__body {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}

.lmdoow-itinerary__label {
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var( --lmdoow-color-primary, #023149 );
    font-family: "Gilroy ExtraBold", sans-serif;
}

.lmdoow-itinerary__value {
    font-size: 0.9375rem;
    font-weight: 600;
    color: var( --lmdoow-color-heading, #111827 );
    display: flex;
    align-items: center;
    gap: 0.375rem;
    flex-wrap: wrap;
}

.lmdoow-itinerary__nights {
    font-size: 0.8125rem;
    font-weight: 400;
    color: var( --lmdoow-color-text-muted, #6b7280 );
}

.lmdoow-itinerary__meta {
    font-size: 0.8125rem;
    color: var( --lmdoow-color-primary, #023149 );
    font-weight: 500;
}

/* ── Total card ── */
.lmdoow-itinerary__total-card {
    background: var( --lmdoow-color-primary, #023149 );
    border-radius: var( --lmdoow-radius-lg, 12px );
    padding: 1.25rem 1.5rem;
    color: #fff;
}

.lmdoow-itinerary__total-top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
}

.lmdoow-itinerary__total-left {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.lmdoow-itinerary__total-label {
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.1em;
    color: rgba( 255, 255, 255, 0.55 );
}

.lmdoow-itinerary__total-price {
    display: flex;
    align-items: baseline;
    gap: 0.375rem;
}

.lmdoow-itinerary__total-price strong {
    font-size: 1.875rem;
    font-weight: 800;
    line-height: 1;
    color: #fff;
}

.lmdoow-itinerary__total-cur {
    font-size: 0.9375rem;
    font-weight: 600;
    color: rgba( 255, 255, 255, 0.75 );
}

.lmdoow-btn--reserve {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.75rem 1.375rem;
    background: var( --lmdoow-color-error, #C5111A );
    color: #fff;
    border: none;
    border-radius: 100px;
    font-size: 0.9375rem;
    font-weight: 700;
    cursor: pointer;
    white-space: nowrap;
    transition: background 0.15s;
    flex-shrink: 0;
}

.lmdoow-btn--reserve:hover { background: #a00d15; }

.lmdoow-btn--reserve:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.lmdoow-itinerary__total-note {
    margin: 0.875rem 0 0;
    font-size: 0.75rem;
    color: rgba( 255, 255, 255, 0.5 );
    line-height: 1.5;
}

.lmdoow-itinerary__stripe-label {
    font-style: italic;
    color: rgba( 255, 255, 255, 0.8 );
    letter-spacing: -0.01em;
}

/* ── Session note ── */
.lmdoow-itinerary__session-note {
    text-align: center;
    font-size: 0.75rem;
    color: var( --lmdoow-color-text-muted, #9ca3af );
    margin: 0;
}

/* Legacy aliases kept for any external references */
.lmdoow-btn--edit-step {
    font-size: 0.8125rem;
    color: var( --lmdoow-color-primary, #023149 );
    background: transparent;
    border: none;
    cursor: pointer;
    padding: 0;
    text-decoration: underline;
}

/* ── Sidebar (sticky column) ────────────────────────────────────────────── */

.lmdoow-travel-sidebar {
    position: sticky;
    top: 80px;
    background: #FEFBF4;
    border: 1px solid var( --lmdoow-color-border, #e5e7eb );
    border-radius: var( --lmdoow-radius-lg, 12px );
    overflow: hidden;
    box-shadow: 0 2px 12px rgba( 0, 0, 0, 0.06 );
    overflow-y: auto;
    scrollbar-width: thin;
}

/* ── Sidebar main title ──────────────────────────────────────────────────── */

.lmdoow-sidebar__main-title {
    font-size: 0.8125rem!important;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var( --lmdoow-color-primary-dark, #1a56db );
    margin: 0 0 1rem;
}

/* ── Sidebar unified empty state ─────────────────────────────────────────── */

.lmdoow-sidebar__empty-state {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 2rem 1rem 2.5rem;
    gap: 1rem;
    text-align: center;
}

/* Ensure the hidden attribute wins over display:flex */
.lmdoow-sidebar__empty-state[hidden] {
    display: none !important;
}

.lmdoow-sidebar__empty-icon {
    width: 60px;
    height: 60px;
    border-radius: 50%;
    background: #fde8e9;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var( --lmdoow-color-error );
    flex-shrink: 0;
}

.lmdoow-sidebar__empty-icon svg {
    width: 28px;
    height: 28px;
}

.lmdoow-sidebar__empty-msg {
    font-size: 0.9375rem;
    color: var( --lmdoow-color-text-muted );
    margin: 0;
    line-height: 1.4;
}

/* ── Sidebar section rows ────────────────────────────────────────────────── */

/* Icon bubble — matches the destination/dates/hotel/transport type */
.lmdoow-sidebar__section-icon {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: #fde8e9;
    color: var( --lmdoow-color-error );
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

/* Row: icon + info + remove button */
.lmdoow-sidebar__row {
    display: flex;
    align-items: center;
    gap: 0.625rem;
}

/* Variant: pin icon and × to the first text line (used for multi-line rows like tours) */
.lmdoow-sidebar__row--top {
    align-items: flex-start;
}

.lmdoow-sidebar__row--top .lmdoow-sidebar__section-icon {
    margin-top: 1px; /* align circle centre with label cap-height */
}

.lmdoow-sidebar__row--top .lmdoow-sidebar__remove-btn {
    align-self: flex-start;
    margin-top: 3px; /* align × with row-label text */
}

/* Info block */
.lmdoow-sidebar__row-info {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 0.125rem;
}

.lmdoow-sidebar__row-title {
    font-size: 0.9375rem;
    font-weight: 600;
    color: var( --lmdoow-color-heading );
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    display: block;
}

.lmdoow-sidebar__row-sub {
    font-size: 0.75rem;
    color: var( --lmdoow-color-text-muted );
    display: block;
}

/* Category label inside a row (e.g. "TOURS") — sits above the row-title */
.lmdoow-sidebar__row-label {
    font-size: 0.6875rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var( --lmdoow-color-text-muted );
    display: block;
    line-height: 1.4;
}

.lmdoow-sidebar__row-price {
    font-size: 0.875rem;
    font-weight: 800;
    font-family: 'Gilroy', sans-serif;
    color: var( --lmdoow-color-primary-dark );
    display: block;
}

/* Guests line (sits below the dates row, no icon/button) */
.lmdoow-sidebar__guests-line {
    font-size: 0.75rem;
    color: var( --lmdoow-color-text-muted );
    margin: 0.375rem 0 0 2.625rem; /* indent to align with row text */
}

/* × remove button */
.lmdoow-sidebar__remove-btn {
    width: 26px;
    height: 26px;
    border-radius: 50%;
    border: none;
    background: #f3f4f6;
    color: #9ca3af;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    flex-shrink: 0;
    transition: background 0.15s, color 0.15s;
}

.lmdoow-sidebar__remove-btn:hover {
    background: #fee2e2;
    color: var( --lmdoow-color-error );
}

/* Tours list */
.lmdoow-sidebar__tours-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

/* Tour items now use lmdoow-sidebar__row lmdoow-sidebar__row--top */

/* ─────────────────────────────────────────────────────────────────────────── */

.lmdoow-sidebar__inner {
    padding: var( --lmdoow-space-md, 1rem );
    display: flex;
    flex-direction: column;
    gap: var( --lmdoow-space-md, 1rem );
}

.lmdoow-sidebar__section {
    padding-top: var( --lmdoow-space-md, 1rem );
    padding-bottom: var( --lmdoow-space-md, 1rem );
    border-bottom: 1px solid var( --lmdoow-color-border, #f0f0f0 );
}

.lmdoow-sidebar__section:last-child { border-bottom: none; padding-bottom: 0; }

.lmdoow-sidebar__section-title {
    font-size: 0.6875rem!important;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var( --lmdoow-color-text-muted, #9ca3af );
    margin: 0 0 0.5rem;
    font-family: "Gilroy ExtraBold", Sans-serif!important;
}

.lmdoow-sidebar__empty {
    font-size: 0.8125rem;
    color: var( --lmdoow-color-text-muted, #9ca3af );
    margin: 0;
    font-style: italic;
}

/* Sidebar sections content */
.lmdoow-sidebar__destination {
    display: flex;
    align-items: center;
    gap: 0.625rem;
}

.lmdoow-sidebar__dest-thumb {
    width: 48px;
    height: 48px;
    border-radius: var( --lmdoow-radius-md, 8px );
    object-fit: cover;
    flex-shrink: 0;
}

.lmdoow-sidebar__dest-title {
    display: block;
    font-size: 0.9375rem;
    font-weight: 700;
    color: var( --lmdoow-color-heading, var( --lmdoow-color-heading ) );
}

.lmdoow-sidebar__dest-zone {
    display: block;
    font-size: 0.75rem;
    color: var( --lmdoow-color-text-muted, #9ca3af );
    margin-top: 0.125rem;
}

.lmdoow-sidebar__dates {
    display: flex;
    flex-direction: column;
    gap: 0.125rem;
}

.lmdoow-sidebar__dates-range {
    font-size: 0.875rem;
    color: var( --lmdoow-color-text, #374151 );
}

.lmdoow-sidebar__nights {
    font-size: 0.75rem;
    color: var( --lmdoow-color-primary, #1a56db );
    font-weight: 600;
}

.lmdoow-sidebar__guests {
    font-size: 0.875rem;
    color: var( --lmdoow-color-text, #374151 );
}

.lmdoow-sidebar__hotel {
    display: flex;
    gap: 0.625rem;
    align-items: flex-start;
}

.lmdoow-sidebar__hotel-thumb {
    width: 44px;
    height: 44px;
    border-radius: var( --lmdoow-radius-sm, 4px );
    object-fit: cover;
    flex-shrink: 0;
}

.lmdoow-sidebar__hotel-info {
    display: flex;
    flex-direction: column;
    gap: 0.125rem;
    font-size: 0.8125rem;
}

.lmdoow-sidebar__hotel-info strong {
    font-size: 0.875rem;
    color: var( --lmdoow-color-heading, var( --lmdoow-color-heading ) );
}

.lmdoow-sidebar__room-type,
.lmdoow-sidebar__meal-plan {
    color: var( --lmdoow-color-text-muted, #9ca3af );
}

.lmdoow-sidebar__hotel-price {
    color: var( --lmdoow-color-primary, #1a56db );
    font-size: 0.9375rem;
    margin-top: 0.125rem;
}

/* (duplicate tour-list rules removed — canonical block is above) */

/* ── Transport summary card ─────────────────────────────────────────────── */

.lmdoow-sidebar__transport-card {
    background: var( --lmdoow-color-primary, #023149 );
    border-radius: var( --lmdoow-radius-lg, 12px );
    padding: 1rem;
    display: flex;
    flex-direction: column;
    gap: 0.625rem;
}

.lmdoow-sidebar__transport-card-header {
    display: flex;
    align-items: center;
    gap: 0.625rem;
}

.lmdoow-sidebar__transport-card-icon {
    flex-shrink: 0;
    width: 38px;
    height: 38px;
    background: rgba( 150, 192, 206, 0.15 );
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var( --lmdoow-color-accent, #96C0CE );
}

.lmdoow-sidebar__transport-card-title {
    flex: 1;
    color: #fff;
    font-size: 0.8125rem;
    font-weight: 800;
    font-family: "Gilroy ExtraBold", sans-serif;
    letter-spacing: 0.03em;
}

/* Light variant of the remove button for dark cards */
.lmdoow-sidebar__remove-btn--light {
    background: rgba( 255, 255, 255, 0.1 );
    color: rgba( 255, 255, 255, 0.75 );
    border-radius: 50%;
    width: 26px;
    height: 26px;
    flex-shrink: 0;
}

.lmdoow-sidebar__remove-btn--light:hover {
    background: rgba( 255, 255, 255, 0.2 );
    color: #fff;
}

.lmdoow-sidebar__transport-card-body {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    padding-left: calc( 38px + 0.625rem ); /* align under title */
}

.lmdoow-sidebar__transport-bundle {
    color: rgba( 255, 255, 255, 0.9 );
    font-size: 0.875rem;
    margin: 0;
    line-height: 1.4;
}

.lmdoow-sidebar__transport-bundle strong {
    color: #fff;
    font-weight: 700;
}

.lmdoow-sidebar__transport-price {
    color: rgba( 255, 255, 255, 0.65 );
    font-size: 0.8125rem;
    margin: 0;
    font-weight: 500;
}

.lmdoow-sidebar__transport-currency {
    font-size: 0.75rem;
    margin-left: 0.2rem;
}

.lmdoow-sidebar__transport-card-footer {
    padding-left: calc( 38px + 0.625rem );
}

.lmdoow-sidebar__transport-exclusive {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    background: var( --lmdoow-color-accent, #96C0CE );
    color: var( --lmdoow-color-primary, #023149 );
    font-size: 0.7rem;
    font-weight: 800;
    letter-spacing: 0.05em;
    padding: 0.3rem 0.875rem;
    border-radius: 999px;
    font-family: "Gilroy ExtraBold", sans-serif;
}

.lmdoow-sidebar__transport-exclusive img {
    flex-shrink: 0;
    width: 70px;
}

/* Totals */
.lmdoow-sidebar__totals {
    display: flex;
    flex-direction: column;
    gap: 0;
}

.lmdoow-sidebar__totals-row {
    display: flex;
    justify-content: space-between;
    font-size: 0.875rem;
    color: var( --lmdoow-color-text, #374151 );
    padding: 0.3125rem 0;
}

.lmdoow-sidebar__totals-row--subtotal {
    border-top: 1px solid var( --lmdoow-color-border, #e5e7eb );
    margin-top: 0.25rem;
    padding-top: 0.625rem;
}

.lmdoow-sidebar__totals-row--grand {
    border-top: 2px solid var( --lmdoow-color-border );
    margin-top: 0.25rem;
    padding-top: 0.75rem;
    align-items: baseline;
}

/* "Total estimado" label */
.lmdoow-sidebar__grand-label {
    font-size: 1rem;
    font-weight: 600;
    color: var( --lmdoow-color-error-dark, #dc2626 );
}

/* Precio + moneda alineados en baseline */
.lmdoow-sidebar__grand-amount {
    display: flex;
    align-items: baseline;
    gap: 0.25rem;
}

/* Número grande en Gilroy ExtraBold */
.lmdoow-sidebar__grand-price {
    font-family: "Gilroy ExtraBold", Sans-serif;
    font-weight: 800;
    font-size: 1.7rem;
    color: var( --lmdoow-color-primary-dark );
    line-height: 1;
}

/* Código de moneda (MXN / USD) más pequeño */
.lmdoow-sidebar__grand-currency {
    font-size: 0.75rem;
    font-weight: 500;
    color: var( --lmdoow-color-text-muted );
    letter-spacing: 0.03em;
}

.lmdoow-sidebar__taxes-note {
    font-size: 0.75rem;
    color: var( --lmdoow-color-text-muted );
    margin: 0.25rem 0 0;
    text-align: right;
}

/* ── Draft recovery banner ──────────────────────────────────────────────── */

.lmdoow-draft-recovery {
    background: var( --lmdoow-color-info-bg, #eff6ff );
    border: 1px solid var( --lmdoow-color-primary, #93c5fd );
    border-radius: var( --lmdoow-radius-md, 8px );
    padding: var( --lmdoow-space-md, 1rem );
    margin-bottom: var( --lmdoow-space-lg, 1.5rem );
    display: flex;
    align-items: center;
    gap: var( --lmdoow-space-md, 1rem );
    flex-wrap: wrap;
}

.lmdoow-draft-recovery__text {
    flex: 1;
    font-size: 0.9375rem;
    color: var( --lmdoow-color-primary-dark, #1e40af );
}

.lmdoow-draft-recovery__actions {
    display: flex;
    gap: 0.5rem;
}

/* ── Mobile sidebar panel ───────────────────────────────────────────────── */

@media ( max-width: 767px ) {
    .lmdoow-configurator__sidebar-col {
        position: fixed;
        bottom: 0;
        left: 0;
        right: 0;
        z-index: 200;
        margin-top: 0;
    }

    .lmdoow-travel-sidebar {
        position: static;
        max-height: none;
        overflow: visible;
        border-radius: var( --lmdoow-radius-lg, 12px ) var( --lmdoow-radius-lg, 12px ) 0 0;
        box-shadow: 0 -4px 20px rgba( 0, 0, 0, 0.12 );
        transform: translateY( calc( 100% - 60px ) );
        transition: transform 0.3s cubic-bezier( 0.4, 0, 0.2, 1 );
    }

    .lmdoow-travel-sidebar[data-mobile-open="true"] {
        transform: translateY( 0 );
        max-height: 70vh;
        overflow-y: auto;
    }

    .lmdoow-sidebar-toggle {
        display: flex;
        align-items: center;
        justify-content: space-between;
        padding: 0.875rem var( --lmdoow-space-md, 1rem );
        cursor: pointer;
        border-bottom: 1px solid var( --lmdoow-color-border, #f0f0f0 );
        background: #fff;
    }

    .lmdoow-sidebar-toggle__total {
        font-weight: 700;
        font-size: 1rem;
        color: var( --lmdoow-color-heading, var( --lmdoow-color-heading ) );
    }

    .lmdoow-sidebar-toggle__icon {
        font-size: 1.25rem;
        transition: transform 0.2s;
    }

    [data-mobile-open="true"] .lmdoow-sidebar-toggle__icon {
        transform: rotate( 180deg );
    }
}

@media ( min-width: 768px ) {
    .lmdoow-sidebar-toggle { display: none; }
    .lmdoow-sidebar-overlay { display: none !important; }
}

/* Overlay */
.lmdoow-sidebar-overlay {
    position: fixed;
    inset: 0;
    background: rgba( 0, 0, 0, 0.4 );
    z-index: 190;
}

/* ── Elementor Free compatibility ───────────────────────────────────────── */
/*
 * Elementor containers may set overflow:hidden on their sections/columns,
 * which breaks position:sticky on .lmdoow-travel-sidebar.
 * We reset overflow on the direct Elementor ancestors of our sidebar column.
 */
.elementor-widget-shortcode .lmdoow-configurator__sidebar-col,
.elementor-widget-shortcode .lmdoow-travel-sidebar {
    /* Ensure sticky is not clipped by Elementor's overflow */
    overflow: visible;
}

/* Elementor wraps shortcodes in .elementor-widget-container which can carry
   overflow:hidden. Force the container to allow sticky. */
.elementor-widget-shortcode > .elementor-widget-container {
    overflow: visible !important;
}

/* ── Focus-visible polish (keyboard nav) ────────────────────────────────── */

.lmdoow-dest-card--selectable:focus-visible,
.lmdoow-hotel-card:focus-visible,
.lmdoow-tour-card:focus-visible,
.lmdoow-transport-featured:focus-visible,
.lmdoow-transport-option:focus-visible,
.lmdoow-transport-none:focus-visible {
    outline: 3px solid var( --lmdoow-color-primary, #023149 );
    outline-offset: 2px;
}

/* ── Hotel card: focus and selected button state ────────────────────────── */

.lmdoow-btn--hotel-select:focus-visible {
    outline: 2px solid var( --lmdoow-color-primary, #1a56db );
    outline-offset: 2px;
}

/* Tour card hover/selected states are defined in the main tour-card block above */

/* Transport option selected state — defined in main Transport step block above */

/* ── Sidebar scrollbar (webkit) ─────────────────────────────────────────── */

.lmdoow-travel-sidebar::-webkit-scrollbar {
    width: 4px;
}

.lmdoow-travel-sidebar::-webkit-scrollbar-thumb {
    background: var( --lmdoow-color-border, #d1d5db );
    border-radius: 2px;
}

/* ── Notice (used in empty steps) ───────────────────────────────────────── */

.lmdoow-notice {
    padding: var( --lmdoow-space-md, 1rem );
    border-radius: var( --lmdoow-radius-md, 8px );
    font-size: 0.9375rem;
    line-height: 1.5;
}

.lmdoow-notice--info {
    background: var( --lmdoow-color-info-bg, #eff6ff );
    border: 1px solid #bfdbfe;
    color: var( --lmdoow-color-primary-dark, #1e40af );
}

/* ══════════════════════════════════════════════════════════════════════════════
   Sprint 2.5B — UX, Microinteractions & Visual Feedback
   ══════════════════════════════════════════════════════════════════════════════ */

/* ── Step enter animation ────────────────────────────────────────────────── */

@keyframes lmdoow-step-in {
    from { opacity: 0; transform: translateY( 8px ); }
    to   { opacity: 1; transform: translateY( 0 );   }
}

[data-step].lmdoow-step--entering {
    animation: lmdoow-step-in 0.2s ease forwards;
}

/* ── Destination card selected states are defined in the main dest-card block above ── */

/* ── Badge variants ──────────────────────────────────────────────────────── */

.lmdoow-badge--zone {
    background: var( --lmdoow-color-primary-bg, #e8f2f9 );
    color: var( --lmdoow-color-primary-dark, #154d76 );
    border: 1px solid rgba( 26, 92, 139, 0.2 );
}

.lmdoow-badge--tipo {
    background: #fff4ee;
    color: #c05621;
    border: 1px solid rgba( 232, 112, 42, 0.25 );
}

/* Hotel card selected/hover states are defined with the card block above */

/* Tour card selected/hover states are defined in the main tour-card block above */

/* Transport selected/hover states defined in the main Transport step block above */

/* ── Progress bar — checkmark already inline in PHP template (✓ text node) ── */
/* Done-state circle colors are defined in the main Progress Bar block above.  */

/* ── Nav buttons — press feedback + loading spinner ─────────────────────── */

.lmdoow-btn--nav {
    transition: background 0.15s ease, transform 0.1s ease, opacity 0.15s ease;
    position: relative;
}

.lmdoow-btn--nav:active,
.lmdoow-btn--nav.is-pressing {
    transform: scale( 0.97 );
}

.lmdoow-btn--nav.is-loading {
    opacity: 0.7;
    pointer-events: none;
}

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

.lmdoow-btn--nav.is-loading::after {
    content: '';
    position: absolute;
    right: 14px;
    top: 50%;
    margin-top: -7px;
    width: 14px;
    height: 14px;
    border: 2px solid rgba( 255, 255, 255, .35 );
    border-top-color: #fff;
    border-radius: 50%;
    animation: lmdoow-spin 0.6s linear infinite;
}

/* ── Date inputs — filled + invalid visual states ────────────────────────── */

[data-date-field]:not( :placeholder-shown ) {
    border-color: var( --lmdoow-color-primary, #1a5c8b );
    background: var( --lmdoow-color-primary-bg, #e8f2f9 );
}

[data-date-field].is-invalid {
    border-color: var( --lmdoow-color-error, #dc2626 ) !important;
    background: #fef2f2 !important;
}

/* ── Guest counter — press scale ─────────────────────────────────────────── */

[ data-guest-action ]:active {
    transform: scale( 0.88 );
    transition: transform 0.08s ease;
}

/* ── Nights display — pill style ─────────────────────────────────────────── */

[ data-nights-display ] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 2px 10px;
    background: var( --lmdoow-color-primary-bg, #e8f2f9 );
    color: var( --lmdoow-color-primary-dark, #154d76 );
    border-radius: 12px;
    font-size: 0.875rem;
    font-weight: 600;
}

/* ── Sidebar — flash on section update ───────────────────────────────────── */

@keyframes lmdoow-section-flash {
    0%   { background-color: var( --lmdoow-color-primary-bg, #e8f2f9 ); }
    100% { background-color: transparent; }
}

.lmdoow-sidebar__section--updating {
    animation: lmdoow-section-flash 0.55s ease-out forwards;
    border-radius: var( --lmdoow-radius-md, 8px );
}

/* ── Sidebar empty-state text ────────────────────────────────────────────── */

.lmdoow-sidebar__empty {
    color: var( --lmdoow-color-text-muted, var( --lmdoow-color-text-muted ) );
    font-size: 0.875rem;
    font-style: italic;
    margin: 0;
    padding: 4px 0;
}

/* ── Notice variants ─────────────────────────────────────────────────────── */

.lmdoow-notice--warning {
    background: #fffbeb;
    border: 1px solid #fde68a;
    color: #92400e;
}

.lmdoow-notice--success {
    background: #f0fdf4;
    border: 1px solid #bbf7d0;
    color: #166534;
}

.lmdoow-notice--error {
    background: #fef2f2;
    border: 1px solid #fecaca;
    color: #991b1b;
}

/* ── Mobile — larger touch targets ───────────────────────────────────────── */

@media ( max-width: 767px ) {

    [ data-guest-action ] {
        min-width: 40px;
        min-height: 40px;
    }

    [ data-tour-action ] {
        min-height: 40px;
        padding-top: 10px;
        padding-bottom: 10px;
    }

    [ data-select-hotel ] {
        min-height: 40px;
    }

    [ data-select-transport ] {
        min-height: 44px;
    }
}

/* ── Featured transport card — mobile stack ───────────────────────────────── */

@media ( max-width: 600px ) {
    .lmdoow-transport-featured {
        flex-direction: column;
    }

    .lmdoow-transport-featured__panel {
        width: 100%;
        border-left: none;
        border-top: 1px solid rgba( 255, 255, 255, 0.1 );
        padding: 1.125rem 1.5rem 1.25rem;
        flex-direction: row;
        flex-wrap: wrap;
        align-items: center;
        gap: 0.5rem 1rem;
    }

    .lmdoow-transport-featured__panel-label {
        width: 100%;
    }

    .lmdoow-transport-featured__price-main {
        font-size: 1.5rem;
    }

    .lmdoow-transport-featured__panel-divider {
        display: none;
    }

    .lmdoow-transport-featured__cta {
        width: 100%;
        margin-top: 0.25rem;
    }

    .lmdoow-transport-featured__features {
        grid-template-columns: 1fr;
    }

    /* Simple card stacks price under chips on very small screens */
    .lmdoow-transport-option {
        flex-wrap: wrap;
    }

    .lmdoow-transport-option__right {
        width: 100%;
        flex-direction: row;
        align-items: center;
        justify-content: flex-end;
        gap: 0.75rem;
    }

    .lmdoow-transport-option__confirm-btn {
        margin-left: auto;
    }
}

/* ── Tiny screens — hide progress labels & optional tag ──────────────────── */

@media ( max-width: 400px ) {
    .lmdoow-progress-bar__label,
    .lmdoow-progress-bar__optional {
        display: none;
    }
}

/* ── Focus-visible ring (configurator scope) ─────────────────────────────── */

[ data-component="travel-configurator" ] :focus-visible {
    outline: 2px solid var( --lmdoow-color-accent, #e8702a );
    outline-offset: 2px;
}

/* ═══════════════════════════════════════════════════════════════════════════
   Travelers — Step 6: notice, tabs, form fields
   Visually consistent with the Dates & Guests step (Step 2):
     • Same cream container (#FEFBF4)
     • Same red section titles (Gilroy ExtraBold, #C5111A)
     • Same input anatomy (label → hint → input → error)
     • Same focus ring and border system
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── Informational notice ─────────────────────────────────────────────────── */

.lmdoow-travelers-notice {
    display: flex;
    gap: 0.75rem;
    align-items: flex-start;
    background: var( --lmdoow-color-primary-bg, #e8f2f9 );
    border: 1px solid var( --lmdoow-color-accent, #96C0CE );
    border-radius: var( --lmdoow-radius-md, 8px );
    padding: 0.875rem 1rem;
    margin-bottom: var( --lmdoow-space-lg, 1.5rem );
}

.lmdoow-travelers-notice__icon {
    flex-shrink: 0;
    color: var( --lmdoow-color-primary, #023149 );
    margin-top: 0.125rem;
}

.lmdoow-travelers-notice__text {
    font-size: 0.875rem;
    color: var( --lmdoow-color-primary, #023149 );
    line-height: 1.55;
    margin: 0;
}

/* ── Tab navigation ───────────────────────────────────────────────────────── */

.lmdoow-traveler-tabs {
    display: flex;
    gap: 0.5rem;
    margin-bottom: var( --lmdoow-space-lg, 1.5rem );
    padding-bottom: 0.125rem;          /* room for the bottom border indicator */
    border-bottom: 2px solid var( --lmdoow-color-border, #e5e7eb );
    overflow-x: auto;
    scrollbar-width: none;
}

.lmdoow-traveler-tabs::-webkit-scrollbar { display: none; }

.lmdoow-traveler-tabs[hidden] { display: none; }

.lmdoow-traveler-tab {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.625rem 1.125rem;
    border: none;
    border-bottom: 3px solid transparent;
    margin-bottom: -2px;               /* overlap the nav border-bottom */
    background: transparent;
    font-size: 0.9375rem;
    font-weight: 500;
    color: var( --lmdoow-color-text-muted, #6b7280 );
    cursor: pointer;
    white-space: nowrap;
    border-radius: var( --lmdoow-radius-sm, 4px ) var( --lmdoow-radius-sm, 4px ) 0 0;
    transition: color 0.15s, border-color 0.15s, background 0.15s;
}

.lmdoow-traveler-tab:hover:not( .is-active ) {
    color: var( --lmdoow-color-text, #374151 );
    background: var( --lmdoow-color-primary-bg, #e8f2f9 );
}

.lmdoow-traveler-tab.is-active {
    color: var( --lmdoow-color-primary, #023149 );
    border-bottom-color: var( --lmdoow-color-error, #C5111A );
    font-family: "Gilroy ExtraBold", sans-serif;
}

/* Count pill (number of passengers in this type) */
.lmdoow-traveler-tab__count {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.375rem;
    height: 1.375rem;
    padding: 0 0.3rem;
    background: var( --lmdoow-color-border, #e5e7eb );
    color: var( --lmdoow-color-text-muted, #6b7280 );
    border-radius: 999px;
    font-size: 0.75rem;
    font-weight: 600;
    font-family: inherit;
    transition: background 0.15s, color 0.15s;
}

.lmdoow-traveler-tab.is-active .lmdoow-traveler-tab__count {
    background: var( --lmdoow-color-primary, #023149 );
    color: #fff;
}

/* Completion badge (X/Y filled) */
.lmdoow-traveler-tab__done {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 2rem;
    height: 1.375rem;
    padding: 0 0.35rem;
    background: #f3f4f6;
    color: var( --lmdoow-color-text-muted, #9ca3af );
    border-radius: 999px;
    font-size: 0.7rem;
    font-weight: 600;
    font-family: inherit;
    transition: background 0.2s, color 0.2s;
}

.lmdoow-traveler-tab__done.is-complete {
    background: #dcfce7;
    color: #15803d;
}

/* ── Outer wrapper ────────────────────────────────────────────────────────── */

.lmdoow-travelers-form {
    display: flex;
    flex-direction: column;
    gap: var( --lmdoow-space-lg, 1.5rem );
}

/* ── Traveler card (one per passenger) ───────────────────────────────────── */

.lmdoow-traveler-section {
    background: #FEFBF4;
    border: 1px solid var( --lmdoow-color-border, #e5e7eb );
    border-radius: var( --lmdoow-radius-lg, 12px );
    padding: 1.5rem 1.75rem;
    /* Remove browser fieldset defaults */
    margin: 0;
    min-width: 0;
}

/* ── Section legend — styled like .lmdoow-step__section-title ─────────────── */

.lmdoow-traveler-section__legend {
    /* Pull legend out of normal fieldset flow so it sits flush at the top */
    float: left;
    width: 100%;
    display: flex;
    align-items: center;
    gap: 0.625rem;
    padding: 0 0 0.625rem 0;
    margin-bottom: 1.25rem;
    border-bottom: 1px solid var( --lmdoow-color-border, #e5e7eb );
    /* Clear float after legend so fields start below it */
    & + * { clear: both; }
}

/* Fallback for browsers that don't support & nesting */
.lmdoow-traveler-section__legend + .lmdoow-traveler-section__fields {
    clear: both;
}

.lmdoow-traveler-section__number {
    font-size: 1.25rem;
    font-family: "Gilroy ExtraBold", sans-serif;
    color: var( --lmdoow-color-error, #C5111A );
    line-height: 1.2;
}

.lmdoow-traveler-section__type {
    display: inline-flex;
    align-items: center;
    padding: 0.2rem 0.65rem;
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.03em;
    text-transform: uppercase;
    border-radius: 999px;
    background: var( --lmdoow-color-primary-bg, #e8f2f9 );
    color: var( --lmdoow-color-primary, #023149 );
}

/* Type badge colour variations */
.lmdoow-traveler-section[data-traveler-age-type$="CHD"] .lmdoow-traveler-section__type {
    background: #fef3c7;
    color: #92400e;
}

.lmdoow-traveler-section[data-traveler-age-type$="INF"] .lmdoow-traveler-section__type {
    background: #fce7f3;
    color: #9d174d;
}

/* ── Fields grid ──────────────────────────────────────────────────────────── */

.lmdoow-traveler-section__fields {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var( --lmdoow-space-md, 1rem ) var( --lmdoow-space-lg, 1.5rem );
}

@media ( max-width: 560px ) {
    .lmdoow-traveler-section__fields {
        grid-template-columns: 1fr;
    }
}

/* ── Individual field ─────────────────────────────────────────────────────── */

.lmdoow-form-field {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

/* Document row spans full width so its 3 sub-inputs have room */
.lmdoow-form-field:has( .lmdoow-form-field__doc-row ) {
    grid-column: 1 / -1;
}

/* Fallback for browsers without :has() */
.lmdoow-form-field--full {
    grid-column: 1 / -1;
}

/* ── Label ────────────────────────────────────────────────────────────────── */

.lmdoow-form-field__label {
    display: flex;
    align-items: baseline;
    gap: 0.3rem;
    font-size: 0.875rem;
    font-weight: 500;
    color: var( --lmdoow-color-text, #374151 );
    cursor: default;
}

.lmdoow-form-field__required {
    color: var( --lmdoow-color-error, #C5111A );
    font-size: 0.8125rem;
    line-height: 1;
}

.lmdoow-form-field__optional {
    font-size: 0.75rem;
    font-weight: 400;
    color: var( --lmdoow-color-text-muted, #9ca3af );
}

/* ── Help text ────────────────────────────────────────────────────────────── */

.lmdoow-form-field__help {
    font-size: 0.75rem;
    color: var( --lmdoow-color-text-muted, #9ca3af );
    margin: 0;
    line-height: 1.4;
}

/* ── Base input / select / date ───────────────────────────────────────────── */

/* High specificity to win over theme resets */
.lmdoow-traveler-section .lmdoow-form-field__input,
.lmdoow-travelers-form   .lmdoow-form-field__input {
    width: 100%;
    padding: 0.625rem 0.875rem;
    background: #fff;
    border: 1px solid var( --lmdoow-color-border, #d1d5db );
    border-radius: var( --lmdoow-radius-md, 8px );
    font-size: 0.9375rem;
    color: var( --lmdoow-color-text, #374151 );
    line-height: 1.4;
    transition: border-color 0.15s, box-shadow 0.15s;
    -webkit-appearance: none;
    appearance: none;
    box-sizing: border-box;
}

.lmdoow-traveler-section .lmdoow-form-field__input:focus,
.lmdoow-travelers-form   .lmdoow-form-field__input:focus {
    outline: 2px solid var( --lmdoow-color-primary, #023149 );
    outline-offset: 1px;
    border-color: var( --lmdoow-color-primary, #023149 );
}

/* Placeholder */
.lmdoow-traveler-section .lmdoow-form-field__input::placeholder,
.lmdoow-travelers-form   .lmdoow-form-field__input::placeholder {
    color: var( --lmdoow-color-text-muted, #9ca3af );
}

/* Select — restore arrow */
.lmdoow-traveler-section select.lmdoow-form-field__input,
.lmdoow-travelers-form   select.lmdoow-form-field__input {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%239ca3af' stroke-width='1.5' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 0.875rem center;
    padding-right: 2.5rem;
    cursor: pointer;
}

/* Invalid state */
.lmdoow-traveler-section .lmdoow-form-field__input[aria-invalid="true"],
.lmdoow-travelers-form   .lmdoow-form-field__input[aria-invalid="true"] {
    border-color: var( --lmdoow-color-error, #C5111A );
    background: #fff5f5;
}

.lmdoow-traveler-section .lmdoow-form-field__input[aria-invalid="true"]:focus,
.lmdoow-travelers-form   .lmdoow-form-field__input[aria-invalid="true"]:focus {
    outline-color: var( --lmdoow-color-error, #C5111A );
}

/* ── Error message ────────────────────────────────────────────────────────── */

.lmdoow-form-field__error {
    font-size: 0.8rem;
    color: var( --lmdoow-color-error, #C5111A );
    margin: 0;
    line-height: 1.4;
    min-height: 0;
}

.lmdoow-form-field__error[hidden] {
    display: none;
}

/* ── Document row (doc-type + doc-country + doc-number) ───────────────────── */

.lmdoow-form-field__doc-row {
    display: grid;
    grid-template-columns: auto auto 1fr;
    gap: 0.5rem;
    align-items: start;
}

.lmdoow-form-field__input--doc-type,
.lmdoow-form-field__input--doc-country {
    width: auto;
    min-width: 0;
}

.lmdoow-form-field__input--doc-type {
    /* "DNI / Pasaporte" — compact */
    max-width: 8rem;
}

.lmdoow-form-field__input--doc-country {
    /* País — medium */
    max-width: 11rem;
}

.lmdoow-form-field__input--doc-number {
    /* Number — fills remaining space */
    width: 100%;
}

@media ( max-width: 560px ) {
    .lmdoow-form-field__doc-row {
        grid-template-columns: 1fr 1fr;
    }

    .lmdoow-form-field__input--doc-number {
        grid-column: 1 / -1;
    }

    .lmdoow-form-field__input--doc-type,
    .lmdoow-form-field__input--doc-country {
        max-width: none;
    }
}

/* ── Step 6 inline status messages (from Sprint A checks) ─────────────────── */

.lmdoow-step-checking {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.875rem;
    color: var( --lmdoow-color-text-muted, #6b7280 );
    padding: 0.5rem 0;
}

.lmdoow-step-checking::before {
    content: "";
    width: 14px;
    height: 14px;
    border: 2px solid var( --lmdoow-color-border, #d1d5db );
    border-top-color: var( --lmdoow-color-primary, #023149 );
    border-radius: 50%;
    animation: lmdoow-spin 0.7s linear infinite;
    flex-shrink: 0;
}

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

.lmdoow-step-error {
    font-size: 0.875rem;
    color: var( --lmdoow-color-error, #C5111A );
    padding: 0.5rem 0;
}

/* ── B2/B3: Price-changed blocking alert ─────────────────────────────────── */

.lmdoow-price-alert {
    background: #fffbeb;
    border: 1px solid #fcd34d;
    border-radius: var( --lmdoow-radius-lg, 12px );
    padding: 1.25rem;
    display: flex;
    flex-direction: column;
    gap: 0.875rem;
}

.lmdoow-price-alert__title {
    font-size: 1rem;
    font-weight: 700;
    color: #92400e;  /* amber-800 */
    margin: 0;
}

.lmdoow-price-alert__body {
    font-size: 0.875rem;
    color: #78350f;  /* amber-900 */
    margin: 0;
}

/* Price comparison block */
.lmdoow-price-alert__prices {
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
    background: #fef3c7;
    border-radius: 6px;
    padding: 0.75rem 1rem;
}

.lmdoow-price-alert__price-row {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 1rem;
    font-size: 0.875rem;
}

.lmdoow-price-alert__price-label {
    color: #92400e;
}

.lmdoow-price-alert__price-old {
    font-size: 0.875rem;
    color: #9ca3af;  /* muted — old price is stale */
    text-decoration: line-through;
}

.lmdoow-price-alert__price-new {
    font-size: 1rem;
    font-weight: 700;
    color: #92400e;
}

/* Optional Nemo message */
.lmdoow-price-alert__message {
    font-size: 0.8125rem;
    color: #78350f;
    font-style: italic;
    margin: 0;
}

/* Action buttons row */
.lmdoow-price-alert__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.625rem;
    margin-top: 0.125rem;
}

.lmdoow-price-alert__btn {
    padding: 0.5625rem 1.125rem;
    font-size: 0.875rem;
    font-weight: 600;
    border-radius: 6px;
    border: none;
    cursor: pointer;
    line-height: 1;
}

.lmdoow-price-alert__btn--accept {
    background: var( --lmdoow-color-primary, #023149 );
    color: #fff;
}

.lmdoow-price-alert__btn--accept:hover {
    opacity: 0.88;
}

.lmdoow-price-alert__btn--change {
    background: transparent;
    color: var( --lmdoow-color-primary, #023149 );
    border: 1px solid var( --lmdoow-color-primary, #023149 );
}

.lmdoow-price-alert__btn--change:hover {
    background: #f1f5f9;
}

/* ── B4: Cancellation policies card ──────────────────────────────────────── */

.lmdoow-cancpol {
    background: #fff;
    border: 1px solid var( --lmdoow-color-border, #e5e7eb );
    border-radius: var( --lmdoow-radius-lg, 12px );
    padding: 1rem 1.25rem;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.lmdoow-cancpol--unavailable {
    background: #f9fafb;
}

.lmdoow-cancpol__heading {
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var( --lmdoow-color-primary, #023149 );
    font-family: "Gilroy ExtraBold", sans-serif;
    margin: 0;
}

/* Deadline line */
.lmdoow-cancpol__deadline {
    font-size: 0.875rem;
    color: var( --lmdoow-color-text, #374151 );
    margin: 0;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.25rem;
}

.lmdoow-cancpol__deadline-label {
    color: var( --lmdoow-color-text-muted, #6b7280 );
}

.lmdoow-cancpol__deadline-date {
    color: #15803d;  /* green-700 — free cancellation is a positive signal */
    font-weight: 600;
}

/* Charge conditions list */
.lmdoow-cancpol__conditions {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.lmdoow-cancpol__condition {
    display: grid;
    grid-template-columns: 1fr 2fr auto;
    align-items: baseline;
    gap: 0.5rem 1rem;
    padding: 0.625rem 0.75rem;
    background: #f9fafb;
    border-radius: 6px;
    font-size: 0.8125rem;
}

.lmdoow-cancpol__cond-period {
    color: var( --lmdoow-color-text-muted, #6b7280 );
    font-size: 0.75rem;
    white-space: nowrap;
}

.lmdoow-cancpol__cond-desc {
    color: var( --lmdoow-color-text, #374151 );
}

.lmdoow-cancpol__cond-charge {
    color: var( --lmdoow-color-error, #C5111A );
    font-weight: 600;
    white-space: nowrap;
    text-align: right;
}

/* Empty / unavailable states */
.lmdoow-cancpol__empty {
    font-size: 0.875rem;
    color: var( --lmdoow-color-text-muted, #6b7280 );
    margin: 0;
}

/* Supplier comments */
.lmdoow-cancpol__comments {
    font-size: 0.8125rem;
    color: var( --lmdoow-color-text-muted, #6b7280 );
    border-top: 1px solid var( --lmdoow-color-border, #e5e7eb );
    padding-top: 0.75rem;
    margin: 0;
    line-height: 1.5;
}

/* Responsive: stack grid on narrow screens */
@media ( max-width: 480px ) {
    .lmdoow-cancpol__condition {
        grid-template-columns: 1fr;
    }
    .lmdoow-cancpol__cond-charge {
        text-align: left;
    }
}

/* ── B1: NOT_AVAILABLE banner ─────────────────────────────────────────────── */

.lmdoow-unavailable-banner {
    background: #fef2f2;
    border: 1px solid #fecaca;
    border-radius: 8px;
    padding: 1rem 1.25rem;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.lmdoow-unavailable-banner__title {
    font-size: 1rem;
    font-weight: 600;
    color: var( --lmdoow-color-error, #C5111A );
    margin: 0;
}

.lmdoow-unavailable-banner__body {
    font-size: 0.875rem;
    color: #6b7280;
    margin: 0;
}

.lmdoow-unavailable-banner__cta {
    align-self:    flex-start;
    margin-top:    0.25rem;
    padding:       0.625rem 1.25rem;
    font-size:     0.875rem;
    font-weight:   600;
    color:         #fff;
    background:    var( --lmdoow-color-primary, #023149 );
    border:        none;
    border-radius: 24px;
    cursor:        pointer;
    text-decoration: none;
}

.lmdoow-unavailable-banner__cta:hover {
    opacity: 0.88;
}

/* ── Availability status badge ──────────────────────────────────────────── */
.lmdoow-avail-badge {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 14px;
    border-radius: 20px;
    font-size: 0.8rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    margin-bottom: 16px;
}
.lmdoow-avail-badge--cnf {
    background: #dcfce7;
    color: #15803d;
    border: 1px solid #bbf7d0;
}
.lmdoow-avail-badge--orq {
    background: #fef9c3;
    color: #a16207;
    border: 1px solid #fde68a;
}
.lmdoow-avail-badge__dot {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: currentColor;
}
.lmdoow-avail-badge__countdown {
    font-variant-numeric: tabular-nums;
    min-width: 7ch;
    display: inline-block;
}
.lmdoow-avail-badge--expired {
    background: #fef2f2;
    color: #991b1b;
    border-color: #fecaca;
}
.lmdoow-avail-badge--loading {
    background: #eff6ff;
    color: #1d4ed8;
    border-color: #bfdbfe;
}
.lmdoow-avail-badge__refresh {
    background: none;
    border: none;
    padding: 0;
    margin: 0;
    font: inherit;
    font-weight: 600;
    color: inherit;
    text-decoration: underline;
    cursor: pointer;
}
.lmdoow-avail-badge__refresh:hover {
    opacity: 0.75;
}

/* ── B6: Revalidating state ─────────────────────────────────────────────── */
.lmdoow-step-checking--revalidating {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 16px;
    background: #eff6ff;
    border: 1px solid #bfdbfe;
    border-radius: 8px;
    color: #1d4ed8;
    font-size: 0.875rem;
    font-weight: 500;
}

.lmdoow-step-checking__spinner {
    display: inline-block;
    width: 16px;
    height: 16px;
    border: 2px solid #bfdbfe;
    border-top-color: #1d4ed8;
    border-radius: 50%;
    animation: lmdoow-spin 0.7s linear infinite;
    flex-shrink: 0;
}

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

/* Checkout button during revalidation */
[data-action="checkout"][data-revalidating="true"] {
    opacity: 0.6;
    cursor: wait;
    pointer-events: none;
}

/* ── Sprint C: Booking loading overlay ──────────────────────────────────── */

.lmdoow-booking-processing--active {
    position: relative;
    pointer-events: none;
    user-select: none;
}

.lmdoow-booking-processing {
    position: absolute;
    inset: 0;
    z-index: 10;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 16px;
    background: rgba(255, 255, 255, 0.88);
    border-radius: 8px;
    animation: lmdoow-fade-in 0.2s ease;
}

.lmdoow-booking-processing__spinner {
    width: 40px;
    height: 40px;
    border: 3px solid #e5e7eb;
    border-top-color: #2563eb;
    border-radius: 50%;
    animation: lmdoow-spin 0.8s linear infinite;
}

.lmdoow-booking-processing__message {
    font-size: 0.9375rem;
    font-weight: 500;
    color: #374151;
    margin: 0;
}

@keyframes lmdoow-fade-in {
    from { opacity: 0; }
    to   { opacity: 1; }
}

/* ── Sprint C: Booking confirmed (CNF) ──────────────────────────────────── */

.lmdoow-booking-confirmed {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 16px;
    padding: 32px 24px;
    text-align: center;
}

.lmdoow-booking-confirmed__icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 64px;
    height: 64px;
    background: #dcfce7;
    border-radius: 50%;
    font-size: 2rem;
    color: #16a34a;
}

.lmdoow-booking-confirmed__title {
    font-size: 1.375rem;
    font-weight: 700;
    color: #111827;
    margin: 0;
}

.lmdoow-booking-confirmed__subtitle {
    font-size: 0.9375rem;
    color: #6b7280;
    margin: 0;
}

.lmdoow-booking-confirmed__details {
    width: 100%;
    max-width: 360px;
    background: #f9fafb;
    border: 1px solid #e5e7eb;
    border-radius: 8px;
    padding: 16px;
    margin: 0;
}

.lmdoow-booking-confirmed__detail-row {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 8px;
    padding: 6px 0;
    border-bottom: 1px solid #f3f4f6;
    font-size: 0.875rem;
}

.lmdoow-booking-confirmed__detail-row:last-child {
    border-bottom: none;
}

.lmdoow-booking-confirmed__detail-row dt {
    color: #6b7280;
    font-weight: 400;
}

.lmdoow-booking-confirmed__detail-row dd {
    color: #111827;
    font-weight: 600;
    margin: 0;
}

.lmdoow-booking-confirmed__reference {
    font-size: 1rem;
    font-family: monospace;
    letter-spacing: 0.04em;
}

.lmdoow-booking-confirmed__supplier-comments {
    font-size: 0.8125rem;
    color: #6b7280;
    text-align: center;
    max-width: 400px;
    margin: 0;
}

/* ── Sprint C: Booking on request (ORQ) ─────────────────────────────────── */

.lmdoow-booking-onrequest {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 16px;
    padding: 32px 24px;
    text-align: center;
}

.lmdoow-booking-onrequest__icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 64px;
    height: 64px;
    background: #fef9c3;
    border-radius: 50%;
    font-size: 2rem;
    color: #ca8a04;
}

.lmdoow-booking-onrequest__title {
    font-size: 1.375rem;
    font-weight: 700;
    color: #111827;
    margin: 0;
}

.lmdoow-booking-onrequest__subtitle {
    font-size: 0.9375rem;
    color: #6b7280;
    margin: 0;
    max-width: 400px;
}

.lmdoow-booking-onrequest__details {
    width: 100%;
    max-width: 360px;
    background: #fefce8;
    border: 1px solid #fde68a;
    border-radius: 8px;
    padding: 16px;
    margin: 0;
}

.lmdoow-booking-onrequest__detail-row {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 8px;
    padding: 6px 0;
    font-size: 0.875rem;
}

.lmdoow-booking-onrequest__detail-row dt { color: #78350f; font-weight: 400; }
.lmdoow-booking-onrequest__detail-row dd { color: #92400e; font-weight: 600; margin: 0; }

.lmdoow-booking-onrequest__reference {
    font-family: monospace;
    letter-spacing: 0.04em;
}

.lmdoow-booking-onrequest__supplier-comments {
    font-size: 0.8125rem;
    color: #78350f;
    text-align: center;
    max-width: 400px;
    margin: 0;
}

/* ── Sprint C: Booking error banner ─────────────────────────────────────── */

.lmdoow-booking-error {
    display: flex;
    flex-direction: column;
    gap: 12px;
    padding: 16px;
    background: #fef2f2;
    border: 1px solid #fecaca;
    border-radius: 8px;
}

.lmdoow-booking-error__message {
    font-size: 0.9375rem;
    color: #991b1b;
    margin: 0;
}

.lmdoow-booking-error__retry {
    align-self: flex-start;
}

/* ── Sprint D.2: Stripe cancelled return notice ─────────────────────────── */

.lmdoow-cancelled-notice {
    display: flex;
    flex-direction: column;
    gap: 12px;
    padding: 16px;
    background: #fffbeb;
    border: 1px solid #fcd34d;
    border-radius: 8px;
}

.lmdoow-cancelled-notice__message {
    font-size: 0.9375rem;
    color: #92400e;
    margin: 0;
}

.lmdoow-cancelled-notice__retry {
    align-self: flex-start;
}

/* ── Sprint D.2: Stripe loading overlay ─────────────────────────────────── */

.lmdoow-stripe-loading {
    background: #f0f9ff;
    border: 1px solid #bae6fd;
}

/* Checkout button locked during booking */
[data-action="checkout"][data-booking="true"] {
    opacity: 0.6;
    cursor: wait;
    pointer-events: none;
}

/* ══════════════════════════════════════════════════════════════════════════
   Sprint E — Room & Rate Selection
   ══════════════════════════════════════════════════════════════════════════ */

/* ── Hotel wrapper ───────────────────────────────────────────────────────── */
/* Wraps <article data-hotel-card> + rates trigger + rates panel.           */
/* Acts as a single grid item — article, trigger, and panel stack vertically */
/* within the same grid column. Panel expands within its column; adjacent   */
/* hotel cards are never displaced.                                          */

.lmdoow-hotel-wrapper {
    display: flex;
    flex-direction: column;
}

/* ── Rates trigger button ────────────────────────────────────────────────── */

.lmdoow-rates-trigger {
    display: flex;
    align-items: center;
    gap: 0.375rem;
    width: 100%;
    padding: 0.5rem 0.875rem;
    background: var( --lmdoow-color-surface, #f8f5ee );
    border: 1px solid rgba( 0, 0, 0, 0.1 );
    border-top: none;
    border-radius: 0 0 var( --lmdoow-radius-lg, 12px ) var( --lmdoow-radius-lg, 12px );
    font-size: 0.8125rem;
    font-weight: 600;
    color: var( --lmdoow-color-primary, #023149 );
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease;
    text-align: left;
    line-height: 1.3;
}

.lmdoow-rates-trigger:hover {
    background: var( --lmdoow-color-primary, #023149 );
    color: #fff;
}

.lmdoow-rates-trigger:focus-visible {
    outline: 3px solid var( --lmdoow-color-accent, #96C0CE );
    outline-offset: 2px;
}

/* Chevron icon that rotates when open */
.lmdoow-rates-trigger__chevron {
    display: inline-block;
    margin-left: auto;
    transition: transform 0.2s ease;
    font-style: normal;
    line-height: 1;
}

.lmdoow-hotel-wrapper.has-rates-open .lmdoow-rates-trigger__chevron {
    transform: rotate( 180deg );
}

/* ── Rates panel ─────────────────────────────────────────────────────────── */

.lmdoow-rates-panel {
    background: #fff;
    border: 1px solid rgba( 0, 0, 0, 0.1 );
    border-top: none;
    border-radius: 0 0 var( --lmdoow-radius-lg, 12px ) var( --lmdoow-radius-lg, 12px );
    padding: 1rem 1rem 0.75rem;
    display: flex;
    flex-direction: column;
    gap: 0.875rem;
}

/* Panel is visible when wrapper has class (toggled by JS) */
.lmdoow-rates-panel[hidden] {
    display: none;
}

/* ── Rate group (one per room type) ──────────────────────────────────────── */

.lmdoow-rate-group {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

/* Separator between groups */
.lmdoow-rate-group + .lmdoow-rate-group {
    padding-top: 0.875rem;
    border-top: 1px solid rgba( 0, 0, 0, 0.07 );
}

/* Groups hidden until "Ver más" is clicked */
.lmdoow-rate-group--limit-hidden {
    display: none;
}

/* ── Rate group header ───────────────────────────────────────────────────── */

.lmdoow-rate-group__header {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
}

.lmdoow-rate-group__room-label {
    font-size: 0.875rem;
    font-weight: 700;
    color: var( --lmdoow-color-primary, #023149 );
    font-family: "Gilroy ExtraBold", sans-serif;
    letter-spacing: 0.01em;
    text-transform: uppercase;
    line-height: 1.2;
}

/* ── Rate badges ─────────────────────────────────────────────────────────── */

.lmdoow-rate-badge {
    display: inline-flex;
    align-items: center;
    font-size: 0.6875rem;
    font-weight: 600;
    padding: 0.15em 0.55em;
    border-radius: 999px;
    line-height: 1.4;
    white-space: nowrap;
}

.lmdoow-rate-badge--cnf {
    background: #dcfce7;
    color: #166534;
}

.lmdoow-rate-badge--orq {
    background: #fef9c3;
    color: #854d0e;
}

.lmdoow-rate-badge--nonref {
    background: #ffedd5;
    color: #9a3412;
}

/* ── Rate pills container ────────────────────────────────────────────────── */

.lmdoow-rate-group__pills {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}

/* ── Rate pill (individual board option) ─────────────────────────────────── */

.lmdoow-rate-pill {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    padding: 0.5rem 0.75rem;
    background: var( --lmdoow-color-surface, #f8f5ee );
    border: 1.5px solid rgba( 0, 0, 0, 0.12 );
    border-radius: var( --lmdoow-radius-md, 8px );
    cursor: pointer;
    text-align: left;
    transition: border-color 0.15s ease, background 0.15s ease, box-shadow 0.15s ease;
    min-width: 130px;
    max-width: 220px;
}

.lmdoow-rate-pill:hover {
    border-color: var( --lmdoow-color-primary, #023149 );
    background: #f0f5f8;
}

.lmdoow-rate-pill:focus-visible {
    outline: 3px solid var( --lmdoow-color-accent, #96C0CE );
    outline-offset: 2px;
}

/* Selected state */
.lmdoow-rate-pill.is-selected {
    background: var( --lmdoow-color-primary, #023149 );
    border-color: var( --lmdoow-color-primary, #023149 );
    box-shadow: 0 2px 8px rgba( 2, 49, 73, 0.25 );
}

.lmdoow-rate-pill.is-selected .lmdoow-rate-pill__board,
.lmdoow-rate-pill.is-selected .lmdoow-rate-pill__price,
.lmdoow-rate-pill.is-selected .lmdoow-rate-pill__total {
    color: #fff;
}

.lmdoow-rate-pill.is-selected .lmdoow-rate-badge--nonref {
    background: rgba( 255, 255, 255, 0.2 );
    color: #fff;
}

/* ── Pill text elements ───────────────────────────────────────────────────── */

.lmdoow-rate-pill__board {
    font-size: 0.8125rem;
    font-weight: 600;
    color: var( --lmdoow-color-primary, #023149 );
    line-height: 1.2;
}

.lmdoow-rate-pill__price {
    font-size: 0.9375rem;
    font-weight: 800;
    color: var( --lmdoow-color-primary, #023149 );
    font-family: "Gilroy ExtraBold", sans-serif;
    line-height: 1.1;
}

.lmdoow-rate-pill__price small {
    font-size: 0.6875rem;
    font-weight: 400;
    font-family: inherit;
    opacity: 0.8;
}

.lmdoow-rate-pill__total {
    font-size: 0.6875rem;
    color: var( --lmdoow-color-text-muted, #64748b );
    line-height: 1.2;
}

/* ── "Ver más habitaciones" button ───────────────────────────────────────── */

.lmdoow-rates-show-more {
    align-self: flex-start;
    margin-top: 0.25rem;
    padding: 0.35rem 0.75rem;
    background: transparent;
    border: 1.5px solid rgba( 0, 0, 0, 0.15 );
    border-radius: var( --lmdoow-radius-md, 8px );
    font-size: 0.8125rem;
    font-weight: 600;
    color: var( --lmdoow-color-primary, #023149 );
    cursor: pointer;
    transition: border-color 0.15s ease, background 0.15s ease;
}

.lmdoow-rates-show-more:hover {
    border-color: var( --lmdoow-color-primary, #023149 );
    background: rgba( 2, 49, 73, 0.05 );
}

.lmdoow-rates-show-more:focus-visible {
    outline: 3px solid var( --lmdoow-color-accent, #96C0CE );
    outline-offset: 2px;
}

/* ── Mobile overrides ────────────────────────────────────────────────────── */

@media ( max-width: 767px ) {

    /* Panel padding reducido en mobile */
    .lmdoow-rates-panel {
        padding: 0.875rem 0.75rem 0.625rem;
    }

    /* Pills ocupan el ancho completo en mobile */
    .lmdoow-rate-group__pills {
        flex-direction: column;
    }

    .lmdoow-rate-pill {
        min-width: 0;
        max-width: none;
        width: 100%;
        flex-direction: row;
        align-items: center;
        justify-content: space-between;
        padding: 0.625rem 0.875rem;
    }

    /* En mobile el precio va a la derecha */
    .lmdoow-rate-pill__price {
        font-size: 1rem;
        text-align: right;
    }

    .lmdoow-rate-pill__total {
        display: none;  /* El total se omite en mobile — demasiado texto en fila */
    }

    /* El badge de no-reembolsable en mobile va dentro de la fila */
    .lmdoow-rate-badge--nonref {
        font-size: 0.625rem;
    }
}

/* ── Panel open: adjust border-radius for visual continuity ─────────────── */
/* When trigger and panel are visible, the card's bottom corners connect     */
/* flush to the trigger, which connects flush to the panel.                  */

.lmdoow-hotel-wrapper.has-rates-open .lmdoow-hotel-card {
    border-radius: var( --lmdoow-radius-lg, 12px ) var( --lmdoow-radius-lg, 12px ) 0 0;
}

.lmdoow-hotel-wrapper.has-rates-open .lmdoow-rates-trigger {
    border-radius: 0;
}

.lmdoow-hotel-wrapper.has-rates-open .lmdoow-rates-panel {
    border-radius: 0 0 var( --lmdoow-radius-lg, 12px ) var( --lmdoow-radius-lg, 12px );
}

/* ── Step 4: Tours empty states ────────────────────────────────────────────── */

.lmdoow-tours-empty {
    display:        flex;
    flex-direction: column;
    align-items:    center;
    text-align:     center;
    padding:        3rem 1.5rem;
}

.lmdoow-tours-empty[hidden] { display: none !important; }

.lmdoow-tours-empty__icon-wrap {
    display:         flex;
    align-items:     center;
    justify-content: center;
    width:           80px;
    height:          80px;
    border-radius:   50%;
    background:      #fef2f2;
    color:           var(--lmdoow-color-error);
    margin-bottom:   1.25rem;
}

.lmdoow-tours-empty__title {
    font-family:  "Gilroy ExtraBold", sans-serif;
    font-size:    1.2rem;
    font-weight:  800;
    color:        var(--lmdoow-color-heading);
    margin:       0 0 0.75rem;
}

.lmdoow-tours-empty__desc {
    font-size:   0.875rem;
    color:       var(--lmdoow-color-text-muted);
    max-width:   320px;
    margin:      0;
    line-height: 1.55;
}

/* ── Step 5: Transport skeleton loader ─────────────────────────────────────── */

.lmdoow-transport-skeleton {
    display:        flex;
    flex-direction: column;
    gap:            1rem;
}

.lmdoow-transport-skeleton__card {
    height:        120px;
    border-radius: var(--lmdoow-radius-lg);
    width:         100%;
}

/* ── Step 5: Transport empty state ────────────────────────────────────────── */

.lmdoow-transport-empty {
    display:        flex;
    flex-direction: column;
    align-items:    center;
    text-align:     center;
    padding:        3rem 1.5rem;
    background:     var(--lmdoow-color-bg);
    border-radius:  var(--lmdoow-radius-lg);
    border:         1px dashed var(--lmdoow-color-border);
}

.lmdoow-transport-empty__icon {
    color:         var(--lmdoow-color-text-muted);
    opacity:       0.45;
    margin-bottom: 1rem;
}

.lmdoow-transport-empty__title {
    font-family:   "Gilroy ExtraBold", sans-serif;
    font-size:     1.1rem;
    font-weight:   800;
    color:         var(--lmdoow-color-heading);
    margin:        0 0 0.5rem;
}

.lmdoow-transport-empty__desc {
    font-size:   0.875rem;
    color:       var(--lmdoow-color-text-muted);
    max-width:   360px;
    margin:      0;
    line-height: 1.5;
}

/* ── Reset session link ────────────────────────────────────────────────────── */

.lmdoow-configurator__sidebar-reset {
    display:         none;
    justify-content: flex-end;
    margin-bottom:   0.5rem;
}

.lmdoow-configurator__sidebar-reset.is-visible {
    display: flex;
}

.lmdoow-link-btn {
    all:             unset;
    display:         inline-flex;
    align-items:     center;
    gap:             0.3rem;
    font-size:       0.85rem;
    color:           var(--lmdoow-color-error);
    text-decoration: underline;
    cursor:          pointer;
    white-space:     nowrap;
    transition:      color var(--lmdoow-transition);
    flex-shrink:     0;
}

.lmdoow-link-btn:hover,
.lmdoow-link-btn:focus {
    background:      none !important;
    color:           var(--lmdoow-color-error-dark);
    text-decoration: underline;
}

/* ── Reset confirmation modal ──────────────────────────────────────────────── */

.lmdoow-reset-modal__panel {
    text-align: center;
    max-width:  380px !important;
}

.lmdoow-reset-modal__body {
    padding: 0.5rem 0 1.25rem;
}

.lmdoow-reset-modal__icon {
    display:      block;
    margin:       0 auto 0.875rem;
    color:        var(--lmdoow-color-primary);
    opacity:      0.65;
}

.lmdoow-reset-modal__title {
    font-family: "Gilroy ExtraBold", sans-serif;
    font-size:   1.875rem !important;
    font-weight: 800;
    color:       var(--lmdoow-color-heading);
    margin:      0 0 0.5rem;
}

.lmdoow-reset-modal__desc {
    font-size:   0.875rem;
    color:       var(--lmdoow-color-text-muted);
    margin:      0;
    line-height: 1.5;
}

.lmdoow-reset-modal__actions {
    display:        flex;
    flex-direction: column;
    align-items:    center;
    gap:            0.75rem;
    padding-top:    0.25rem;
}
