/* ╔══════════════════════════════════════════════════════════════════════════
   ║ LANDING PAGE OVERRIDES — contrast / copy / SEO remediation (July 2026)
   ║
   ║ Loads AFTER transfers-wizard.css (enqueued with it as a dependency) so
   ║ every rule here wins on source order; where the base rule uses !important
   ║ we match it with a modest specificity bump (.pca-lp prefix), never by
   ║ editing transfers-wizard.css — a parallel workstream owns that file.
   ║ Everything is scoped under .pca-lp so nothing leaks to other pages.
   ╚══════════════════════════════════════════════════════════════════════════ */

/* — Token pass: supporting-copy floor -----------------------------------
   Owner critique: light-gray secondary text failed contrast. Floor the
   muted token at #5C6B73 (was #6b7280). The soft token (#4b5563) is
   already darker than the floor and stays. */
.pca-lp {
    --pca-lp-text-muted: #5c6b73;
}

/* — Hero CTA microcopy: one claim, 14px readable gray ------------------- */
.pca-lp .pca-lp-cta-meta {
    font-size: 14px;
    font-weight: 500;
    color: #5c6b73;
}

/* Hero rating meta rides the muted token. Explicit 14px: the base parent
   (.pca-lp-hero__rating) is 14px on desktop but drops to 12px !important on
   mobile — an explicit size here keeps the meta readable on both. */
.pca-lp .pca-lp-hero__rating-meta {
    font-size: 14px;
}

/* — Trust ticker: short labels, no truncation, two-row wrap, darker ----- */
.pca-lp aside.pca-trust-strip {
    display: flex !important;
    flex-wrap: wrap !important;
    justify-content: center !important;
    align-items: center !important;
    gap: 12px 28px !important;
}
.pca-lp aside.pca-trust-strip .pca-trust-strip__item {
    flex: 0 0 auto !important;
    color: #37424a !important;
    font-size: 13px !important;
    font-weight: 600 !important;
}
.pca-lp aside.pca-trust-strip .pca-trust-strip__item span {
    white-space: normal !important;   /* kill the nowrap… */
    overflow: visible !important;     /* …and the ellipsis truncation */
    text-overflow: clip !important;
    flex: 0 1 auto !important;
    color: #37424a !important;
    font-size: 13px !important;
    font-weight: 600 !important;
}
.pca-lp aside.pca-trust-strip .pca-trust-strip__icon {
    color: #0e6b54 !important;
}
@media (max-width: 759px) {
    .pca-lp aside.pca-trust-strip {
        gap: 10px 18px !important;
        padding: 12px 14px !important;
    }
    .pca-lp aside.pca-trust-strip .pca-trust-strip__item span {
        font-size: 13px !important;   /* base had 12px here */
    }
}

/* — Eyebrows: 12px / 700 / letter-spaced / darker teal ------------------- */
.pca-lp .pca-lp-section__eyebrow,
.pca-lp .pca-lp-eyebrow {
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.1em;
    color: #0e6b54;
}
.pca-lp .pca-lp-eyebrow__dot {
    background: #0e6b54;
    box-shadow: 0 0 0 4px rgba(14, 107, 84, 0.12);
}

/* — How-it-works step numbers: 14px bold in a filled circle ------------- */
.pca-lp .pca-lp-step__num {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    border-radius: 999px;
    background: #0e6b54;
    color: #ffffff;
    font-size: 14px;
    font-weight: 700;
    letter-spacing: 0.02em;
    margin-bottom: 14px;
}
/* Step descriptions: keep ≥14px in the soft (dark-enough) color. */
.pca-lp .pca-lp-step__body {
    font-size: 14.5px;
    color: var(--pca-lp-text-soft);
}

/* — Reviews: attribution readable; route is part of the attribution ----- */
.pca-lp .pca-lp-review__attr {
    font-size: 13px;
    color: #5c6b73;
}

/* — FAQ answers: body color, 15px — NOT gray ---------------------------- */
.pca-lp .pca-lp-faq__item p {
    color: var(--pca-lp-text);
    font-size: 15px;
    line-height: 1.65;
}

/* — Embedded wizard: type-chooser card text ≥14px ------------------------
   The landing hero embeds the wizard; base CSS renders card subtitles at
   13px (12px ≤640px). Scope the bump to the landing context only. */
.pca-lp .pca-transfers-wizard .pca-type-card__subtitle,
.pca-lp .pca-transfers-wizard .pca-type-card__desc {
    font-size: 14px !important;
    line-height: 1.45 !important;
}
.pca-lp .pca-transfers-wizard .pca-type-card__title {
    font-size: 16px !important;
}
/* With bigger text, two columns get cramped inside the 760px wizard card —
   drop to one column earlier than the base 600px breakpoint. */
@media (max-width: 700px) {
    .pca-lp .pca-transfers-wizard .pca-transfer-type-cards {
        grid-template-columns: 1fr !important;
    }
}

/* — Final CTA band -------------------------------------------------------
   Primary matches the hero CTA (17px/600, 16×32 padding); WhatsApp is a
   real secondary outline button with the brand-green icon. */
.pca-lp .pca-lp-final__ctas {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 14px;
}
.pca-lp .pca-lp-final__cta {
    padding: 16px 32px;
    font-size: 17px;
    font-weight: 600;
    gap: 10px;
}
.pca-lp .pca-lp-final__wa-btn {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 15px 26px;
    border: 1.5px solid #b8c4c9;
    border-radius: 8px;
    background: transparent;
    color: #1f2937 !important;
    font-size: 15px;
    font-weight: 600;
    letter-spacing: -0.005em;
    text-decoration: none !important;
    transition: border-color 0.15s ease, background-color 0.15s ease;
}
.pca-lp .pca-lp-final__wa-btn:hover {
    border-color: #25d366;
    background: #f4fbf6;
    color: #1f2937 !important;
}
.pca-lp .pca-lp-final__wa-icon {
    color: #25d366;   /* WhatsApp green */
    flex: 0 0 auto;
}
.pca-lp .pca-lp-final__sub {
    font-size: 17px;
    color: var(--pca-lp-text-soft);
    margin-bottom: 30px;
}

/* — Routes section (SEO partial) ----------------------------------------- */
.pca-lp .pca-lp-routes__grid {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    grid-template-columns: 1fr;
    gap: 12px;
}
@media (min-width: 640px) {
    .pca-lp .pca-lp-routes__grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 14px 20px;
    }
}
.pca-lp .pca-lp-routes__cell { min-width: 0; }
.pca-lp .pca-lp-route {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    background: var(--pca-lp-surface);
    border: 1px solid var(--pca-lp-border);
    border-radius: 10px;
    padding: 16px 18px;
    text-decoration: none !important;
    transition: border-color 0.15s ease, background-color 0.15s ease;
}
.pca-lp .pca-lp-route:hover {
    border-color: #0e6b54;
    background: #fafffe;
}
.pca-lp .pca-lp-route__name {
    color: var(--pca-lp-text);
    font-size: 15px;
    font-weight: 600;
    letter-spacing: -0.01em;
    min-width: 0;
}
.pca-lp .pca-lp-route__time {
    color: #5c6b73;
    font-size: 13px;
    font-weight: 600;
    white-space: nowrap;
    flex: 0 0 auto;
}

/* ── Desktop focus mode (Mode A): once the customer engages the wizard, the
   hero collapses to a slim single-line bar and everything below the wizard
   dims, so the booking flow owns the viewport. UX-only: the H1 is restyled,
   never removed; every claim stays in the DOM. JS toggles .pca-lp--focus
   (wizard-orchestrator.js, wireFocusMode). Desktop only: mobile books
   through the bottom sheets. ─────────────────────────────────────────── */
@media (min-width: 768px) {
    .pca-lp #pca-transfers-wizard { scroll-margin-top: 84px; }

    .pca-lp .pca-lp-eyebrow,
    .pca-lp .pca-lp-sub,
    .pca-lp .pca-lp-hero__cta-row,
    .pca-lp .pca-lp-hero__rating {
        max-height: 240px;
        overflow: hidden;
    }
    .pca-lp--focus .pca-lp-hero {
        padding-top: 12px;
        padding-bottom: 12px;
        cursor: pointer;
        position: relative;
    }
    .pca-lp--focus .pca-lp-eyebrow,
    .pca-lp--focus .pca-lp-sub,
    .pca-lp--focus .pca-lp-hero__cta-row,
    .pca-lp--focus .pca-lp-hero__rating {
        max-height: 0;
        opacity: 0;
        margin-top: 0;
        margin-bottom: 0;
        pointer-events: none;
    }
    .pca-lp--focus .pca-lp-h1 {
        font-size: 16px;
        line-height: 1.3;
        margin: 0;
    }
    .pca-lp-hero__expand {
        display: none;
        font-family: inherit;
        font-size: 12.5px;
        font-weight: 600;
        color: #0e6d7c;
        background: none;
        border: none;
        cursor: pointer;
        padding: 4px 8px;
        position: absolute;
        right: 18px;
        top: 50%;
        transform: translateY(-50%);
    }
    .pca-lp--focus .pca-lp-hero__expand { display: inline-block; }
    .pca-lp--focus > .pca-lp-wizard-section ~ * { opacity: 0.35; }
}
@media (min-width: 768px) and (prefers-reduced-motion: no-preference) {
    .pca-lp .pca-lp-hero {
        transition: padding 320ms cubic-bezier(0.22, 1, 0.36, 1);
    }
    .pca-lp .pca-lp-eyebrow,
    .pca-lp .pca-lp-sub,
    .pca-lp .pca-lp-hero__cta-row,
    .pca-lp .pca-lp-hero__rating {
        transition:
            max-height 320ms cubic-bezier(0.22, 1, 0.36, 1),
            opacity 200ms ease,
            margin 320ms cubic-bezier(0.22, 1, 0.36, 1);
    }
    .pca-lp .pca-lp-h1 { transition: font-size 320ms cubic-bezier(0.22, 1, 0.36, 1); }
    .pca-lp > .pca-lp-wizard-section ~ * { transition: opacity 260ms ease 120ms; }
    /* Draft restores land collapsed with no animation. */
    .pca-lp--focus-instant .pca-lp-hero,
    .pca-lp--focus-instant .pca-lp-h1,
    .pca-lp--focus-instant .pca-lp-eyebrow,
    .pca-lp--focus-instant .pca-lp-sub,
    .pca-lp--focus-instant .pca-lp-hero__cta-row,
    .pca-lp--focus-instant .pca-lp-hero__rating,
    .pca-lp--focus-instant > .pca-lp-wizard-section ~ * { transition: none; }
}

/* — Review = single-column "confirm your details" (2026-07-19) --------------
   The review step no longer carries a price panel (price was shown twice
   upstream + is identical at checkout, so a panel here made review look like a
   second checkout and hurt conversion; see step-review.php CRO note). With the
   price column gone, undo the desktop two-column grid that transfers-wizard.css
   applies at >=1024px so review renders as one clean column of detail cards
   followed by the CTA. Matching the source selector's specificity + loading
   after it lets these win without touching the parallel-workstream file. This
   also permanently retires the `grid-row: 1 / 999` phantom-height bug (there is
   no grid to explode anymore).
   :not(.is-rv2): Review v2 (flag pca_transfers_review_v2_on) reinstates a price
   rail and takes its own two-column grid further down this file; this block
   must keep winning ONLY for the flag-off v1 review. */
@media (min-width: 1024px) {
    .pca-transfers-wizard .pca-transfer-step[data-step="review"]:not(.is-rv2)[style*="block"] {
        display: block !important;
    }
    .pca-transfers-wizard .pca-transfer-step[data-step="review"]:not(.is-rv2) > .pca-review-submit-wrap {
        grid-column: auto !important;
        grid-row: auto !important;
        position: static !important;
        max-width: 560px;
        margin-top: 8px;
    }
}

/* — Mobile review CTA at the bottom (2026-07-19) ----------------------------
   In the mobile sheet, transfers-wizard.css (max-width:640px) flex-orders the
   CTA wrap (order:1) ABOVE the detail cards (order:2), so after scrolling down
   to review the cards the customer had to scroll back UP to reach "Confirm &
   continue". Put the CTA below the cards instead (order:3) so it sits at the
   natural end of a scan-then-confirm read. Overriding here (not in the parallel
   -workstream transfers-wizard.css); same selector specificity, loaded later. */
@media (max-width: 640px) {
    .pca-sheet .pca-transfer-step[data-step="review"] > .pca-review-submit-wrap {
        order: 3;
    }
}

/* — Airport pickup-time reassurance note (2026-07-19) -----------------------
   Soft brand-tinted note under the Travel Info card; filled + toggled by
   populateReview for the departure-leg transfer types. */
.pca-review-pickup-note {
    margin: 12px 0 0;
    padding: 10px 14px;
    background: rgba(20, 83, 107, 0.06);
    border: 1px solid rgba(20, 83, 107, 0.14);
    border-radius: 10px;
    font-size: 13px;
    line-height: 1.45;
    color: #14536b;
}

/* — Zone "from $X" price line (2026-07-19) ----------------------------------
   Early price cue on the resort step's zone-preview card; filled + unhidden by
   pricing-display.js updateZonePricePreview. [hidden] keeps it out of custom-
   quote paths. */
.pca-zone-price {
    margin: 8px 0 0;
    font-size: 13.5px;
    color: #3f5661;
}
.pca-zone-price strong {
    font-size: 15px;
    font-weight: 800;
    color: #14536b;
}
.pca-zone-price[hidden] { display: none; }

/* — Start over escape hatch (2026-07-19) ------------------------------------
   Quiet text control to wipe the persisted draft and reload. display:block is
   deliberate: the JS toggle sets style.display='' to show, which falls back to
   THIS rule (the .pca-submit-error bug class; never leave the CSS default as
   none for a JS-shown element). Armed state = inline confirm, brand danger. */
.pca-start-over {
    display: block;
    width: max-content;
    margin: 8px 0 0 auto;
    padding: 4px 6px;
    background: none;
    border: 0;
    cursor: pointer;
    font-size: 12.5px;
    color: #6b7280;
    text-decoration: underline;
    text-underline-offset: 2px;
}
.pca-start-over:hover { color: #b91c1c; }
.pca-start-over.is-armed { color: #b91c1c; font-weight: 700; }
.pca-start-over--hub {
    width: 100%;
    margin: 10px 0 0;
    text-align: center;
}

/* — Step transitions: fade only, no vertical slide (2026-07-19) -------------
   transfers-wizard.css animates each step in with translateY(10px) (and the
   tf-layer added translateY(26px)); both made the screen visibly move top-to-
   bottom on every step. Cross-fade instead. Same specificity as the source
   `.pca-transfer-step` rule but loaded later, so this wins for the base path;
   tf-layer.css's own keyframe is updated to fade-only in lockstep. */
.pca-transfer-step {
    animation: pca-step-fade 0.24s ease-out;
}
@keyframes pca-step-fade {
    from { opacity: 0; }
    to   { opacity: 1; }
}
@media (prefers-reduced-motion: reduce) {
    .pca-transfer-step { animation: none; }
}

/* — Review v2: exact-price summary, SINGLE COLUMN at every width ------------
   Applies only when step-review.php stamps .is-rv2 (pca_transfers_review_v2_on),
   so the flag-off v1 review is untouched by everything below. Owner directive
   (2026-07-19) supersedes the earlier two-column/sticky-rail spec: v2 renders
   as ONE column at all viewports — step header, detail cards, then the summary
   card + CTA + upsell module in document order. The v1 single-column override
   above carries :not(.is-rv2), so this .is-rv2 branch must neutralize the base
   transfers-wizard.css review grid itself (display:grid !important + sticky
   submit-wrap at >=1024px); the extra class + !important here outrank it. */
@media (min-width: 1024px) {
    .pca-transfers-wizard .pca-transfer-step.is-rv2[data-step="review"][style*="block"] {
        display: block !important;   /* matches the base rule's !important */
    }
    .pca-transfers-wizard .pca-transfer-step.is-rv2[data-step="review"] > .pca-review-submit-wrap {
        grid-column: auto !important;
        grid-row: auto !important;
        position: static !important;
        max-width: 600px;   /* readable measure for the summary + CTA column */
        margin-top: 8px;
    }
}

/* Summary card: quiet bordered card, NOT a checkout panel. Left-aligned
   inside the centered submit-wrap so the price scans like a fact sheet. */
.pca-transfer-step.is-rv2 .pca-rv2-summary {
    margin: 0 0 14px;
    padding: 18px;
    background: #fff;
    border: 1px solid #e2e8ec;
    border-radius: 12px;
    text-align: left;
}
.pca-transfer-step.is-rv2 .pca-rv2-summary__label {
    margin: 0;
    font-size: 14px;
    font-weight: 600;
    color: #37424a;
}
.pca-transfer-step.is-rv2 .pca-rv2-summary__total {
    margin: 4px 0 0;
    font-size: 20px;
    font-weight: 800;
    color: #14536b;
}
.pca-transfer-step.is-rv2 .pca-rv2-summary__taxes,
.pca-transfer-step.is-rv2 .pca-rv2-summary__line {
    margin: 6px 0 0;
    font-size: 12.5px;
    line-height: 1.45;
    color: #5c6b73;
}
.pca-transfer-step.is-rv2 .pca-rv2-summary__inclusions {
    list-style: none;
    margin: 12px 0 0;
    padding: 10px 0 0;
    border-top: 1px solid #eef2f4;
}
.pca-transfer-step.is-rv2 .pca-rv2-summary__inclusions li {
    position: relative;
    padding-left: 20px;
    font-size: 13px;
    line-height: 1.5;
    color: #3f5661;
}
.pca-transfer-step.is-rv2 .pca-rv2-summary__inclusions li + li { margin-top: 4px; }
.pca-transfer-step.is-rv2 .pca-rv2-summary__inclusions li::before {
    content: "\2713";   /* checkmark, escaped so minifiers never mangle it */
    position: absolute;
    left: 0;
    color: #0e6b54;
    font-weight: 700;
}

/* Price error: same red family as .pca-submit-error so "something failed"
   reads consistently across the step. */
.pca-transfer-step.is-rv2 .pca-rv2-price-error {
    margin: 4px 0 0;
    padding: 10px 12px;
    background: rgba(185, 28, 28, 0.06);
    border: 1px solid rgba(185, 28, 28, 0.2);
    border-radius: 10px;
    font-size: 13px;
    color: #b91c1c;
}
.pca-transfer-step.is-rv2 .pca-rv2-price-error p { margin: 0 0 8px; }
.pca-transfer-step.is-rv2 .pca-rv2-price-retry {
    border: 0;
    background: none;
    padding: 0;
    font-family: inherit;
    font-size: 13px;
    font-weight: 700;
    color: #b91c1c;
    text-decoration: underline;
    text-underline-offset: 2px;
    cursor: pointer;
}

/* Repaint notice: soft brand-green status line, auto-hidden by JS after 6s. */
.pca-transfer-step.is-rv2 .pca-rv2-price-updated {
    margin: 10px 0 0;
    padding: 8px 12px;
    background: rgba(14, 107, 84, 0.08);
    border: 1px solid rgba(14, 107, 84, 0.18);
    border-radius: 10px;
    font-size: 12.5px;
    color: #0e6b54;
}

/* — Review v2: quiet upsell module + rail dedupe (P3) -----------------------
   The Experiences step is out of the v2 flow; the module below the CTA is the
   only doorway to tours. Quiet secondary treatment: overrides the v1 dashed
   reprise (base selector .pca-transfers-wizard .pca-review-add-tour — the
   .is-rv2 chain is one class more specific AND this file loads later). */
.pca-transfer-step.is-rv2 .pca-review-add-tour {
    margin: 12px 0 0;
    padding: 10px 12px;
    background: none;
    border: 1px solid #e2e8ec;
    border-radius: 10px;
    text-align: left;
}
.pca-transfer-step.is-rv2 .pca-review-add-tour:hover { background: #f6f9f8; }
.pca-transfer-step.is-rv2 .pca-review-add-tour__line {
    display: block;
    font-size: 13px;
    font-weight: 400;
    line-height: 1.4;
    color: #5c6b73;
}
.pca-transfer-step.is-rv2 .pca-review-add-tour__cta {
    display: block;
    margin-top: 2px;
    font-size: 13.5px;
    font-weight: 700;
    color: #0a7d62;
    text-decoration: underline;
    text-underline-offset: 2px;
}

/* v2 rail dedupe: the static reassurance line and the CTA caption both repeat
   what the summary card now computes exactly (payment date + cancellation
   deadline lines), so under .is-rv2 they come off. Rail order becomes:
   summary card → CTA → upsell module, nothing above the summary. */
.pca-transfer-step.is-rv2 .pca-review-reassurance,
.pca-transfer-step.is-rv2 .pca-btn-book-now__caption {
    display: none;
}

/* — Review v2: Start-over confirmation dialog (P5) --------------------------
   JS-built (wizard-orchestrator.js buildStartOverDialog), so none of this
   markup exists when the flag is off; no .is-rv2 scoping needed. z-index sits
   above every wizard layer (tf-shell + edit overlay 100000, flatpickr 100001)
   because the dialog can open from inside booking mode. */
.pca-rv2so {
    position: fixed;
    inset: 0;
    z-index: 100010;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 16px;
}
/* Author display:flex above outranks the UA [hidden] rule; restate it. */
.pca-rv2so[hidden] { display: none; }
.pca-rv2so__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(15, 23, 32, 0.55);
    /* Click target for "keep": everything that is not the card. */
    cursor: default;
}
.pca-rv2so__card {
    position: relative; /* stacks above the absolute backdrop */
    width: 100%;
    max-width: 420px;
    padding: 22px;
    background: #fff;
    border-radius: 14px;
    box-shadow: 0 18px 48px rgba(15, 23, 32, 0.28);
}
.pca-rv2so__title {
    margin: 0 0 6px;
    font-size: 18px;
    font-weight: 800;
    color: #14536b;
}
.pca-rv2so__body {
    margin: 0 0 18px;
    font-size: 14px;
    line-height: 1.5;
    color: #5c6b73;
}
.pca-rv2so__actions {
    display: flex;
    gap: 10px;
    justify-content: flex-end;
    flex-wrap: wrap;
}
.pca-rv2so__actions button {
    min-height: 44px; /* touch target */
    padding: 10px 16px;
    border-radius: 10px;
    font-family: inherit;
    font-size: 14px;
    font-weight: 700;
    cursor: pointer;
}
/* Quiet secondary: the safe way out should not compete with page CTAs. */
.pca-rv2so__keep {
    background: #fff;
    border: 1px solid #d5dde2;
    color: #3f5661;
}
.pca-rv2so__keep:hover { background: #f6f9f8; }
/* Danger primary: same red family as .pca-submit-error / armed start-over. */
.pca-rv2so__confirm {
    background: #b91c1c;
    border: 1px solid #b91c1c;
    color: #fff;
}
.pca-rv2so__confirm:hover { background: #991b1b; border-color: #991b1b; }
.pca-rv2so__keep:focus-visible,
.pca-rv2so__confirm:focus-visible {
    outline: 2px solid #14536b;
    outline-offset: 2px;
}
/* Visually hidden aria-live slot for the "Starting over." confirm announce. */
.pca-rv2so__live {
    position: absolute;
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
    border: 0;
}
/* Entry motion opt-in only: reduced-motion users get an instant dialog. */
@media (prefers-reduced-motion: no-preference) {
    .pca-rv2so__card { animation: pca-rv2so-in 0.16s ease-out; }
    @keyframes pca-rv2so-in {
        from { opacity: 0; transform: scale(0.96); }
        to   { opacity: 1; transform: scale(1); }
    }
}

/* — Review v2: restored-draft notice (P6) -----------------------------------
   JS-built (wizard-orchestrator.js showRestoredNotice) as the wizard's first
   child; none of this markup exists when the flag is off. Quiet informational
   bar — it must never compete with the step content below it. */
.pca-rv2restored {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0 0 12px;
    padding: 10px 12px;
    background: #f6f9f8;
    border: 1px solid #d5dde2;
    border-radius: 10px;
    font-size: 14px;
    line-height: 1.4;
    color: #3f5661;
}
/* Author display:flex above outranks the UA [hidden] rule; restate it (the
   auto-hide keeps the node in the DOM, hidden, as a QA-detectable marker). */
.pca-rv2restored[hidden] { display: none; }
.pca-rv2restored__msg { flex: 1 1 auto; }
.pca-rv2restored__close {
    flex: 0 0 auto;
    width: 28px;
    height: 28px;
    padding: 0;
    border: 0;
    border-radius: 8px;
    background: transparent;
    color: #5c6b73;
    font-size: 18px;
    line-height: 1;
    cursor: pointer;
}
.pca-rv2restored__close:hover { background: #e8eef2; color: #14536b; }
.pca-rv2restored__close:focus-visible {
    outline: 2px solid #14536b;
    outline-offset: 2px;
}

/* — Engaged wizard: hide the marketing sections entirely (2026-07-19) -------
   Owner call: once the customer starts the wizard, the below-wizard marketing
   (how-it-works, reviews, routes, FAQ, final CTA band) is a distraction with
   competing CTAs, not persuasion; the review now carries price, cancellation
   and payment reassurance inline. Full display:none beats the old 35% dim:
   dimmed content still invites scrolling away mid-booking. Engagement-only
   (JS-stamped classes), so the crawled default page is unchanged. Desktop
   stamps .pca-lp--focus (existing focus mode); mobile stamps .pca-lp--engaged
   on first sheet open (mobile-sheets.js). Start over / reload restores. */
.pca-lp--focus > .pca-lp-wizard-section ~ *,
.pca-lp--engaged > .pca-lp-wizard-section ~ * {
    display: none !important;
}
/* The trust ticker's own display:flex !important (higher specificity) beats
   the sibling hide above; match it explicitly so it hides with the rest. */
.pca-lp--focus aside.pca-trust-strip,
.pca-lp--engaged aside.pca-trust-strip {
    display: none !important;
}
