/**
 * Special Offers v2 — Premier Laser
 *
 * Scoped CSS for the new single offer template, archive listing,
 * and offer card partial. All selectors prefixed `plc-` (prefix:
 * Premier Laser Clinic) to avoid colliding with the existing theme.
 *
 * Revision notes:
 *  - 2026-05-05 r2: pill-shaped buttons (50px), transparent section
 *    headers, padding-bottom on #quantity, Trustindex integration
 *    live in the PHP template.
 *  - 2026-05-06 r3: sticky buy bar removed.
 *  - 2026-05-13 r4: redeem method handling (code block / auto-applied /
 *    consultation-only), T&Cs accordion at bottom of single page.
 *  - 2026-05-13 r5: tighter vertical rhythm - section padding 56→40px,
 *    header margin 32→24px, title 28→24px desktop, 20px mobile.
 *  - 2026-05-13 r6: quantity field hidden on WooCommerce buy zone form.
 *  - 2026-05-13 r7: coral palette added to match pricing app spirit.
 *    Coral now used for consultation button, savings badges, sale price,
 *    and product tab selected states. Lime remains primary buy CTA.
 *  - 2026-05-13 r8: listing page trimmed back to brief from 22 Apr call.
 *    Removed: JS filter/sort bar, card badges, card eyebrow, archive
 *    eyebrow, T&Cs link in header, page result count. Kept: title,
 *    price, conditional CTA per card + three static category anchor
 *    tabs matching the existing /special-offers/ aesthetic.
 *  - 2026-05-13 r9: card price clarity fix - center-aligned the strike-
 *    through, bumped "was" price 13→16px, "now" price now coral to
 *    match single page hero and pricing app convention.
 *  - 2026-05-13 r10: client feedback round — countdown moved to own
 *    card on right of hero, larger/bolder, sticky until purchase zone;
 *    mini countdown card on each listing card; CTA colours swapped
 *    (Add to Cart now coral, Book Consultation now lime); both CTAs
 *    equalised at 52px min-height; FAQ section removed from single
 *    page; purchase section padding/spacing opened up. Pricing logic
 *    in PHP changed to use sale price of first variation (not min).
 *
 * Default coral: #D77A6F (placeholder - update --plc-accent-coral with
 * the exact value Sean eyedropped from the pricing app screenshot).
 *
 * @package premierlaser
 * @since v2 special offers redesign
 */

:root {
    --plc-brand-teal: #599487;
    --plc-brand-teal-dark: #3f6a60;
    --plc-brand-cream: #f5f1ec;
    --plc-brand-charcoal: #1f2724;
    --plc-brand-text: #2a2f2d;
    --plc-brand-text-muted: #6b6f6d;
    --plc-brand-line: #dcd5cc;
    --plc-brand-line-soft: #ece6dd;
    --plc-accent-lime: #c1ff72;
    --plc-accent-lime-hover: #a8e85a;
    --plc-accent-text: #1f2724;
    --plc-accent-coral: #D77A6F;
    --plc-accent-coral-hover: #C56158;
    --plc-accent-coral-soft: #FCEEEC;
    --plc-accent-coral-text: #FFFFFF;
    /* Countdown background colour. Originally pink (#E84C8A) per
       Megan's first round of feedback, swapped to the existing
       coral tone on 21 May per Molly — she wanted consistency
       with the wider site palette rather than a new brand colour.
       Kept as its own variable (rather than referencing coral
       directly throughout) so we can swap back to a custom colour
       in future via a single line if needed. */
    --plc-countdown-pink: var(--plc-accent-coral);
    --plc-countdown-pink-text: #FFFFFF;
    --plc-success-soft: #eaf3de;
    --plc-success-text: #3b6d11;
    --plc-urgent-soft: #fbeae0;
    --plc-urgent-text: #993c1d;
}

/* ============================================================
   ARCHIVE / LISTING PAGE
   ============================================================ */

.plc-archive-header {
    padding: 40px 0 24px;
    background: white;
    text-align: center;
    border-bottom: 1px solid var(--plc-brand-line);
}
.plc-archive-title {
    font-family: 'League Spartan', sans-serif;
    font-size: 36px;
    font-weight: 400;
    color: var(--plc-brand-charcoal);
    line-height: 1.15;
    margin-bottom: 16px;
}
.plc-archive-intro {
    font-size: 16px;
    color: var(--plc-brand-text-muted);
    line-height: 1.6;
    margin-bottom: 0;
}

/* ============================================================
   OFFER CARD PARTIAL
   ============================================================ */

.plc-offers-section {
    padding: 40px 0 64px;
}
.plc-offers-reviews {
    padding: 24px 0 64px;
    text-align: center;
}
.plc-offers-reviews .plc-archive-title {
    margin-bottom: 24px;
}
.plc-offers-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
}

.plc-offer-card {
    background: white;
    border: 1px solid var(--plc-brand-line);
    border-radius: 2px;
    overflow: hidden;
    transition: all 0.15s;
}
.plc-offer-card:hover {
    border-color: var(--plc-brand-charcoal);
    transform: translateY(-2px);
}
.plc-offer-card-link {
    display: flex;
    flex-direction: column;
    text-decoration: none;
    color: inherit;
    height: 100%;
}
.plc-offer-card-image {
    aspect-ratio: 1 / 1;
    background-size: cover;
    background-position: center;
    background-color: var(--plc-brand-cream);
    position: relative;
}
/* ============================================================
   COUNTDOWN TABLET — shared component
   ============================================================
   A single pink/white "Offer ends in [time]" component used in
   two places:

     1. Top of each archive listing card as a banner strip
        (modifier: .plc-countdown-tablet--card)
     2. Right column of the single offer hero as a sidebar tablet
        (modifier: .plc-countdown-tablet--single)

   Brand pink hex is a placeholder until Molly confirms — see
   --plc-countdown-pink in :root. Swap that single value to
   roll out the confirmed colour everywhere.

   ARCHIVE CARD VARIANT
   -------------------- */
.plc-card-countdown {
    /* Replaces the old absolute-positioned white pill in the top
       right of the image. Sits as a full-width strip above the
       image as the first element of the card.

       Refined (June 2026 round 2): switched from coral to brand
       charcoal so the countdown reads as a confident dark strip
       rather than a warm marketing pill. Items now use align-items
       baseline so "Offer ends in" and "1D 06H" sit on the same
       text baseline — previously the align-items: center treatment
       had the label and value visually offset. */
    background: var(--plc-brand-charcoal);
    color: #ffffff;
    padding: 12px 16px;
    display: flex;
    align-items: baseline;
    justify-content: center;
    gap: 10px;
    font-size: 14px;
    font-weight: 700;
    letter-spacing: 0.02em;
    line-height: 1.2;
    text-transform: uppercase;
}
.plc-card-countdown__dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #ffffff;
    flex-shrink: 0;
    animation: plc-countdown-pulse 1.6s ease-in-out infinite;
    opacity: 0.9;
    align-self: center;
}
.plc-card-countdown__label {
    font-weight: 600;
    letter-spacing: 0.03em;
    color: #ffffff;
}
.plc-card-countdown__value {
    /* Client feedback (June 2026): "1D 06H" reads cleaner in a
       monospace face so the day/hour figures stand apart from the
       sentence-cased label. Tabular numerals keep digits aligned
       as the clock ticks down. */
    font-family: 'SF Mono', SFMono-Regular, ui-monospace, 'Roboto Mono', Menlo, Consolas, monospace;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    letter-spacing: 0.04em;
    font-size: 15px;
    color: #ffffff;
}
@media (max-width: 600px) {
    .plc-card-countdown {
        font-size: 13px;
        padding: 10px 12px;
    }
    .plc-card-countdown__value {
        font-size: 14px;
    }
}

.plc-offer-card-body {
    padding: 18px 20px 20px;
    display: flex;
    flex-direction: column;
    flex: 1;
}
.plc-card-title {
    font-family: 'League Spartan', sans-serif;
    font-size: 19px;
    font-weight: 500;
    color: var(--plc-brand-charcoal);
    line-height: 1.25;
    margin: 0 0 10px;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    min-height: 48px;
}
.plc-card-price {
    font-size: 14px;
    color: var(--plc-brand-text);
    margin: auto 0 16px;
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}
.plc-card-price .amount,
.plc-card-now {
    font-family: 'League Spartan', sans-serif;
    font-size: 22px;
    color: var(--plc-accent-coral);
    font-weight: 500;
    line-height: 1;
}
.plc-card-was {
    font-size: 16px;
    color: var(--plc-brand-text-muted);
    text-decoration: line-through;
    text-decoration-thickness: 1.5px;
    line-height: 1;
}
.plc-card-was .amount {
    font-size: 16px;
    font-weight: 400;
}
.plc-card-from {
    font-size: 12px;
    color: var(--plc-brand-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    margin-right: 2px;
}

/* Dual savings badge on the card: money saved plus percentage off.
   Mirrors the coral pill used on the single offer page (.plc-so-price-save). */
.plc-card-saving {
    background: var(--plc-accent-coral-soft);
    color: var(--plc-accent-coral);
    padding: 3px 9px;
    border-radius: 2px;
    font-size: 12px;
    font-weight: 500;
    line-height: 1.3;
    white-space: nowrap;
}
.plc-card-cta {
    display: block;
    text-align: center;
    padding: 12px 16px;
    border-radius: 50px;
    font-size: 12px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    text-decoration: none;
    transition: all 0.15s;
}
.plc-card-cta-primary {
    background: var(--plc-accent-lime);
    color: var(--plc-accent-text);
    border: 1px solid var(--plc-accent-lime);
}
.plc-card-cta-primary:hover {
    background: var(--plc-accent-lime-hover);
    border-color: var(--plc-accent-lime-hover);
}
.plc-card-cta-secondary {
    background: transparent;
    border: 1px solid var(--plc-brand-charcoal);
    color: var(--plc-brand-charcoal);
}
.plc-card-cta-secondary:hover {
    background: var(--plc-brand-charcoal);
    color: white;
}

/* ============================================================
   SINGLE OFFER TEMPLATE
   ============================================================ */

/* Hero */
.plc-so-hero {
    background: white;
    border-bottom: 1px solid var(--plc-brand-line);
}
.plc-so-hero-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    min-height: 560px;
}
.plc-so-hero-image {
    background-size: cover;
    background-position: center;
    background-color: var(--plc-brand-cream);
    position: relative;
    min-height: 360px;
}
/* ============================================================
   Countdown card (v3 — May 2026)
   ============================================================
   Per client feedback: countdown moved out of the hero image
   overlay and into a properly styled card that sits at the top
   of the right-hand column. Bigger, bolder, with sticky-to-top
   behaviour once the user scrolls past the hero, until they
   reach the purchase zone (then releases). */
/* ============================================================
   SINGLE OFFER COUNTDOWN — sidebar tablet variant
   ============================================================
   Same pink/white treatment as the archive card banner so the
   countdown feels like one consistent component across both
   surfaces. Larger and bolder than the previous coral-accent
   white pill per Megan's 18 May feedback.

   Refined (June 2026): client feedback requested a more compact,
   refined look. Padding trimmed, max-width applied so the card no
   longer fills the full content column, value font reduced. Still
   prominent, just visually quieter. */
.plc-so-countdown-card {
    background: var(--plc-countdown-pink);
    color: var(--plc-countdown-pink-text);
    border-radius: 4px;
    padding: 14px 22px;
    margin-bottom: 24px;
    max-width: 460px;
    box-shadow: 0 2px 14px rgba(31, 39, 36, 0.08);
    display: flex;
    align-items: center;
    transition: box-shadow 0.2s, transform 0.2s;
}
.plc-so-countdown-card__inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    width: 100%;
}
.plc-so-countdown-card__label {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--plc-countdown-pink-text);
    opacity: 0.95;
}
.plc-so-countdown-dot {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: var(--plc-countdown-pink-text);
    flex-shrink: 0;
    animation: plc-countdown-pulse 1.6s ease-in-out infinite;
    opacity: 0.9;
}
@keyframes plc-countdown-pulse {
    0%, 100% { opacity: 0.95; transform: scale(1); }
    50%      { opacity: 0.5;  transform: scale(1.25); }
}
.plc-so-countdown-card__value {
    font-family: 'SF Mono', SFMono-Regular, ui-monospace, 'Roboto Mono', Menlo, Consolas, monospace;
    font-size: 22px;
    font-weight: 700;
    color: var(--plc-countdown-pink-text);
    letter-spacing: 0.02em;
    font-variant-numeric: tabular-nums;
    line-height: 1.1;
    white-space: nowrap;
}

/* Sticky state — when scroll triggers the data-state hook in JS,
   the card becomes a pinned bar at top of viewport, slimmer and
   anchored to the right edge of the page on desktop. Stays pink. */
.plc-so-countdown-card.is-sticky {
    position: fixed;
    top: 12px;
    right: 24px;
    left: auto;
    z-index: 90;
    margin: 0;
    padding: 14px 20px;
    box-shadow: 0 6px 28px rgba(215, 122, 111, 0.28);
    max-width: 360px;
    animation: plc-countdown-slide-in 0.25s ease-out;
}
@keyframes plc-countdown-slide-in {
    from { transform: translateY(-12px); opacity: 0; }
    to   { transform: translateY(0); opacity: 1; }
}
.plc-so-countdown-card.is-sticky .plc-so-countdown-card__value {
    font-size: 18px;
}
.plc-so-hero-content {
    padding: 48px;
    background: white;
    display: flex;
    flex-direction: column;
    justify-content: center;
    border-left: 1px solid var(--plc-brand-line);
}
.plc-so-eyebrow {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    color: var(--plc-brand-teal);
    font-weight: 600;
    margin-bottom: 12px;
}
.plc-so-title {
    font-family: 'League Spartan', sans-serif;
    font-size: 38px;
    font-weight: 400;
    line-height: 1.15;
    color: var(--plc-brand-charcoal);
    /* Bottom margin bumped from 14px → 28px to keep the price row
       from crowding the title now that the tagline below has been
       removed (Megan 18 May feedback). */
    margin: 0 0 28px;
}
.plc-so-tagline {
    font-size: 15px;
    color: var(--plc-brand-text-muted);
    line-height: 1.6;
    margin: 0 0 28px;
}
/* ============================================================
   Book a free consultation CTA (28 Jul 2026)
   Lime band, matching the treatment and condition pages.
   ============================================================ */
.plc-so-cta {
    background: #c1ff72;
    padding: 72px 0;
    text-align: center;
}
.plc-so-cta__inner {
    max-width: 640px;
    margin: 0 auto;
}
.plc-so-cta__eyebrow {
    font-size: 12px;
    font-weight: 600;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: #34402a;
    margin: 0 0 12px;
}
.plc-so-cta__title {
    font-size: clamp(32px, 4vw, 44px);
    line-height: 1.1;
    color: #1c1c1c;
    margin: 0 0 16px;
}
.plc-so-cta__lead {
    font-size: 17px;
    line-height: 1.6;
    color: #34402a;
    margin: 0 auto 32px;
    max-width: 520px;
}
.plc-so-cta__button {
    display: inline-block;
    background: #1c1c1c;
    color: #fff;
    border-radius: 999px;
    padding: 15px 40px;
    font-size: 15px;
    font-weight: 500;
    text-decoration: none;
    transition: background 0.15s ease;
    cursor: pointer;
}
.plc-so-cta__button:hover {
    background: #34402a;
    color: #fff;
}
@media (max-width: 640px) {
    .plc-so-cta { padding: 52px 0; }
    .plc-so-cta__button { width: 100%; }
}

/* Rich intro (so_offer_intro) - allows paragraphs, links and bold. */
.plc-so-intro {
    font-size: 15px;
    color: var(--plc-brand-text-muted);
    line-height: 1.65;
    margin: 0 0 28px;
}
.plc-so-intro p { margin: 0 0 12px; }
.plc-so-intro p:last-child { margin-bottom: 0; }
.plc-so-intro a {
    color: var(--plc-accent-coral, #c0685f);
    text-decoration: underline;
    text-underline-offset: 2px;
}
.plc-so-intro strong { color: var(--plc-brand-charcoal, #1c1c1c); }
.plc-so-intro ul {
    margin: 0 0 12px;
    padding-left: 20px;
    list-style: disc;
}
.plc-so-price-row {
    /* Megan's 18 May feedback — second separator removed. The
       price row keeps a single border-top to set it apart from
       the title/tagline. The previous border-bottom created a
       redundant horizontal rule running into the buy zone.

       June 2026 feedback — bottom margin bumped from 24px to 36px
       so the price doesn't sit too close to the Add to Basket CTA. */
    display: flex;
    align-items: baseline;
    gap: 14px;
    padding: 18px 0;
    border-top: 1px solid var(--plc-brand-line);
    margin-bottom: 36px;
    flex-wrap: wrap;
}
.plc-so-price-from {
    font-size: 12px;
    color: var(--plc-brand-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.06em;
}
.plc-so-price-now {
    /* Bumped 36px → 44px (June 2026 feedback) so the headline price
       carries more weight relative to the title. League Spartan at
       weight 400 is the slim brand display face — bigger reads as
       more confident here without feeling shouty. */
    font-family: 'League Spartan', sans-serif;
    font-size: 44px;
    font-weight: 400;
    color: var(--plc-accent-coral);
    line-height: 1;
}
.plc-so-price-now .amount {
    font-size: 44px;
    font-weight: 400;
    color: var(--plc-accent-coral);
}
.plc-so-price-was {
    font-size: 16px;
    color: var(--plc-brand-text-muted);
    text-decoration: line-through;
}
.plc-so-price-save {
    margin-left: auto !important;
    background: var(--plc-accent-coral) !important;
    color: #fff !important;
    padding: 9px 18px !important;
    border-radius: 4px !important;
    font-size: 21px !important;
    font-weight: 700 !important;
    line-height: 1.15 !important;
    letter-spacing: 0.02em !important;
    text-transform: uppercase !important;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.12) !important;
}
@media (max-width: 640px) {
    .plc-so-price-save {
        margin-left: 0 !important;
        margin-top: 10px !important;
        flex-basis: 100% !important;
        text-align: center !important;
    }
}
.plc-so-product-tabs {
    display: flex;
    gap: 8px;
    margin-bottom: 16px;
    flex-wrap: wrap;
}
.plc-so-product-tab {
    background: white;
    border: 1px solid var(--plc-brand-line);
    padding: 9px 14px;
    border-radius: 50px;
    font-size: 12px;
    color: var(--plc-brand-text);
    cursor: pointer;
    font-family: inherit;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    transition: all 0.15s;
}
.plc-so-product-tab:hover {
    border-color: var(--plc-accent-coral);
    color: var(--plc-accent-coral);
}
.plc-so-product-tab.is-active {
    background: var(--plc-accent-coral-soft);
    color: var(--plc-accent-coral);
    border-color: var(--plc-accent-coral);
    font-weight: 600;
}
/* ============================================================
   Buy zone (v3 — May 2026)
   ============================================================
   CTA hierarchy intentionally swapped per client feedback:
     - Add to Cart  → CORAL (the action that produces revenue
                      today gets the warm, energetic accent)
     - Book Consultation → LIME (the secondary trust-building
                      action stays in the lime that previously
                      anchored the buy CTA)
   Both buttons are now equal in size, padding, font, and weight
   so the visual hierarchy is intentional rather than accidental.
   Spacing between price, buttons, redeem block and finance line
   has been opened up. Padding around the whole buy zone block
   increased per Sean's 20 May feedback — the area felt crowded. */
.plc-so-buy-zone {
    margin-bottom: 28px;
    padding: 8px 0 4px;
}
.plc-so-buy-zone-product {
    padding: 4px 0;
}
.plc-so-buy-zone-product.is-hidden {
    display: none;
}

/* ---------------------------------------------------------
   WooCommerce selected-variation price - HIDDEN
   ---------------------------------------------------------
   The top price row (#plc-so-price-row) now updates live on
   variation change via JS, so WC's own injected price block
   is redundant and would show as a duplicate second price.
   Hide it. Scoped to the buy zone so other Woo pages are
   unaffected. */
.plc-so-buy-zone-product .woocommerce-variation-price {
    display: none !important;
}
.plc-so-buy-zone-product .quantity {
    /* Hide quantity field — offers are always single-purchase per cart action */
    display: none !important;
}

/* ============================================================
   Variation selectors — slim layout per Megan's 18 May feedback
   ============================================================
   Default WooCommerce styling on .variations renders fat rows
   with stacked labels above tall selects, leaving heavy white
   space and making the buy zone feel crowded. Brief from the
   20 May WIP call was to make the dropdowns thinner so they
   don't dominate.

   - Label above the select, tight spacing
   - Slim select (38px tall instead of WC default ~46px)
   - Clear/reset link absorbed inline below
   - Scoped tightly to .plc-so-buy-zone-product so it doesn't
     bleed into product pages elsewhere.                       */
.plc-so-buy-zone-product .variations,
.plc-so-buy-zone-product table.variations {
    width: 100%;
    border-collapse: collapse;
    margin: 0 0 14px;
    background: transparent;
}
.plc-so-buy-zone-product .variations tbody,
.plc-so-buy-zone-product .variations tr,
.plc-so-buy-zone-product .variations td,
.plc-so-buy-zone-product .variations th {
    display: block;
    width: 100%;
    padding: 0;
    background: transparent;
    border: none;
}
.plc-so-buy-zone-product .variations tr {
    /* Margin-bottom removed — the side-by-side grid layout
       (defined further down at .plc-so-buy-zone-product .variations
       tbody) handles spacing via column-gap. Mobile media query
       restores 10px row-gap when stacked. */
    margin-bottom: 0;
}
.plc-so-buy-zone-product .variations tr:last-child {
    margin-bottom: 0;
}
.plc-so-buy-zone-product .variations .label,
.plc-so-buy-zone-product .variations th.label {
    padding-bottom: 4px;
    text-align: left;
}
.plc-so-buy-zone-product .variations .label label,
.plc-so-buy-zone-product .variations th.label label {
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--plc-brand-text-muted);
    margin: 0;
    display: block;
    /* Explicit left alignment — WooCommerce default table th.label
       inherits text-align: right in some themes, which was pulling
       the dropdown labels to the centre/right. */
    text-align: left;
}
.plc-so-buy-zone-product .variations .value,
.plc-so-buy-zone-product .variations td.value {
    position: relative;
}
.plc-so-buy-zone-product .variations select {
    width: 100%;
    height: 38px;
    padding: 0 36px 0 12px;
    border: 1px solid var(--plc-brand-line);
    border-radius: 3px;
    background: white;
    font-size: 14px;
    font-family: inherit;
    color: var(--plc-brand-charcoal);
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    cursor: pointer;
    /* Custom chevron — minimal, sits to the right inside the
       select. Uses an inline SVG so no asset request. */
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'><path d='M1 1.5L6 6.5L11 1.5' stroke='%231f2724' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>");
    background-repeat: no-repeat;
    background-position: right 12px center;
    transition: border-color 0.15s;
}
.plc-so-buy-zone-product .variations select:hover,
.plc-so-buy-zone-product .variations select:focus {
    border-color: var(--plc-accent-coral);
    outline: none;
}
.plc-so-buy-zone-product .variations .reset_variations {
    display: inline-block;
    margin-top: 6px;
    font-size: 11px;
    color: var(--plc-brand-text-muted);
    text-decoration: underline;
}
.plc-so-buy-zone-product .variations .reset_variations:hover {
    color: var(--plc-accent-coral);
}

/* Add to Cart — now CORAL (was lime) */
.plc-so-buy-zone-product .single_add_to_cart_button {
    background: var(--plc-accent-coral) !important;
    color: var(--plc-accent-coral-text, white) !important;
    border: none !important;
    padding: 16px 22px !important;
    border-radius: 50px !important;
    font-size: 14px !important;
    font-weight: 600 !important;
    text-transform: uppercase !important;
    letter-spacing: 0.06em !important;
    width: 100%;
    line-height: 1.2 !important;
    min-height: 52px;
    display: flex !important;
    align-items: center;
    justify-content: center;
    transition: background 0.15s;
}
.plc-so-buy-zone-product .single_add_to_cart_button:hover {
    background: var(--plc-accent-coral-hover) !important;
    color: white !important;
}
.plc-so-buy-zone-product .quantity input {
    padding: 14px 12px !important;
    border: 1px solid var(--plc-brand-line) !important;
    border-radius: 2px !important;
    font-size: 14px;
    text-align: center;
}
#quantity {
    padding-bottom: 10px;
}

/* Finance line — sits between the two CTAs.
   Increased breathing room so the section doesn't feel cramped. */
.plc-so-finance {
    font-size: 13px;
    color: var(--plc-brand-text-muted);
    margin: 16px 0 18px;
    padding: 8px 0;
    line-height: 1.5;
    text-align: center;
}
.plc-so-finance strong {
    color: var(--plc-brand-charcoal);
    font-weight: 500;
}

.plc-so-secondary-cta {
    border-top: 1px solid var(--plc-brand-line-soft);
    padding-top: 16px;
    margin-top: 6px;
    font-size: 13px;
    color: var(--plc-brand-text-muted);
    text-align: center;
}
.plc-so-secondary-cta a {
    color: var(--plc-brand-teal);
    text-decoration: underline;
    text-underline-offset: 3px;
    font-weight: 500;
    margin-left: 4px;
}

/* ============================================================
   Buy zone layout — vertical stack
   ============================================================
   Per Sean's 20 May feedback (round 3): the two-column grid
   layout proved fragile against WooCommerce's form markup, so
   we've gone back to a simple vertical stack:

     [ LHR Packages ▼ ]   [ Session ▼ ]    ← side-by-side dropdowns
     Clear
     [    Add to Basket          ]         ← full width
     [    Book a Free Consultation ]       ← full width
     [    Promo code              ]        ← full width
     Finance line

   Only the variation dropdowns sit side-by-side (using a grid
   on the tbody). Everything else is full width and stacks
   naturally.                                                 */

/* Two-column grid only inside the variations table tbody so the
   two dropdown rows display side-by-side. The rest of the form
   (single_variation_wrap, ATC button) is left in WC's default
   block flow. */
.plc-so-buy-zone-product .variations tbody {
    display: grid;
    grid-template-columns: 1fr 1fr;
    column-gap: 16px;
    row-gap: 0;
}

/* The Book a Free Consultation button is appended after the WC
   form by PHP. It sits full-width below the Add to Basket
   button. */

/* Book a Free Consultation — lime, centred, 50px pill — matches
   Add to Basket for visual parity. Full-width since it stacks
   below ATC rather than sitting alongside. */
.plc-so-consultation-button {
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    background: var(--plc-accent-lime);
    color: var(--plc-accent-text, var(--plc-brand-charcoal));
    padding: 16px 22px;
    border-radius: 50px;
    font-size: 14px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    text-decoration: none;
    margin-top: 12px;
    transition: background 0.15s;
    line-height: 1.2;
    width: 100%;
    box-sizing: border-box;
    min-height: 52px;
}
.plc-so-consultation-button:hover {
    background: var(--plc-accent-lime-hover);
    color: var(--plc-accent-text, var(--plc-brand-charcoal));
    text-decoration: none;
}
.plc-so-consultation-button-suffix {
    /* The FREE suffix span was removed from all PHP locations,
       but display:none is kept here defensively. */
    display: none;
}
.plc-so-consultation-button-large {
    padding: 18px 24px;
    font-size: 15px;
    margin-top: 0;
    min-height: 56px;
}

/* Trust strip */
.plc-so-trust {
    background: var(--plc-brand-cream);
    border-bottom: 1px solid var(--plc-brand-line);
    padding: 0;
}
.plc-so-trust-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
}
.plc-so-trust-cell {
    padding: 18px 24px;
    text-align: center;
    font-size: 13px;
    color: var(--plc-brand-text-muted);
    border-right: 1px solid var(--plc-brand-line);
    display: flex;
    flex-direction: column;
    gap: 4px;
    align-items: center;
}
.plc-so-trust-cell:last-child {
    border-right: none;
}
.plc-so-trust-cell strong {
    color: var(--plc-brand-charcoal);
    font-weight: 500;
    font-size: 14px;
}

/* Section structure shared by all single page sections.
   Padding increased from 40px → 64px per Megan's 18 May feedback —
   page felt squashed with the smaller value. Mobile equivalent
   bumped from 32px → 48px in the @media block below. */
.plc-so-section {
    padding: 64px 0;
    background: white;
    border-bottom: 1px solid var(--plc-brand-line);
}
.plc-so-section-alt {
    background: var(--plc-brand-cream);
}
.plc-so-section-cross-sell {
    /* Cream, 28 Jul 2026: the reviews section above is white, so leaving this
       white too made the two read as one block. Cream restores the alternation. */
    background: var(--plc-brand-cream);
}
.plc-so-section-header {
    margin-bottom: 32px;
    background: transparent;
}
.plc-so-section-eyebrow {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    color: var(--plc-brand-teal);
    font-weight: 600;
    margin-bottom: 8px;
}
.plc-so-section-title {
    font-family: 'League Spartan', sans-serif;
    font-size: 24px;
    font-weight: 400;
    color: var(--plc-brand-charcoal);
    line-height: 1.2;
    margin: 0;
}

/* Key information */
.plc-so-keyinfo-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    border: 1px solid var(--plc-brand-line);
    border-radius: 2px;
    overflow: hidden;
}
.plc-so-keyinfo-cell {
    padding: 24px;
    border-right: 1px solid var(--plc-brand-line);
    border-bottom: 1px solid var(--plc-brand-line);
    background: white;
}
.plc-so-keyinfo-cell:nth-child(3n) { border-right: none; }
.plc-so-keyinfo-cell:nth-last-child(-n+3) { border-bottom: none; }
.plc-so-keyinfo-label {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--plc-brand-text-muted);
    margin-bottom: 8px;
}
.plc-so-keyinfo-value {
    font-size: 16px;
    color: var(--plc-brand-charcoal);
    font-weight: 500;
}

/* About block */
.plc-so-about-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 64px;
    align-items: start;
}
.plc-so-about-body p {
    font-size: 16px;
    line-height: 1.75;
    color: var(--plc-brand-text);
    margin-bottom: 18px;
}
.plc-so-about-link a {
    color: var(--plc-brand-teal);
    font-weight: 500;
    text-decoration: underline;
    text-underline-offset: 3px;
}
.plc-so-about-side {
    background: white;
    border: 1px solid var(--plc-brand-line);
    border-radius: 2px;
    padding: 28px;
}
.plc-so-about-side h4 {
    font-family: 'League Spartan', sans-serif;
    font-size: 18px;
    font-weight: 400;
    margin: 0 0 16px;
    color: var(--plc-brand-charcoal);
}
.plc-so-about-side ul {
    list-style: none;
    margin: 0;
    padding: 0;
}
.plc-so-about-side li {
    padding: 8px 0;
    border-bottom: 1px solid var(--plc-brand-line-soft);
    font-size: 14px;
    color: var(--plc-brand-text);
    display: flex;
    align-items: flex-start;
    gap: 10px;
}
.plc-so-about-side li:last-child { border-bottom: none; }
.plc-so-check {
    color: var(--plc-brand-teal);
    font-weight: 600;
    flex-shrink: 0;
}

/* Clinics */
.plc-so-clinics-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 16px;
}
.plc-so-clinic-card {
    border: 1px solid var(--plc-brand-line);
    border-radius: 2px;
    padding: 20px 22px;
    background: white;
    text-decoration: none;
    color: inherit;
    transition: all 0.15s;
    display: block;
}
.plc-so-clinic-card:hover {
    border-color: var(--plc-brand-charcoal);
}
.plc-so-clinic-name {
    font-family: 'League Spartan', sans-serif;
    font-size: 18px;
    color: var(--plc-brand-charcoal);
    margin-bottom: 6px;
}
.plc-so-clinic-address {
    font-size: 13px;
    color: var(--plc-brand-text-muted);
    margin-bottom: 12px;
    line-height: 1.5;
}
.plc-so-clinic-link {
    font-size: 12px;
    color: var(--plc-brand-teal);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    font-weight: 600;
}

/* FAQ */
.plc-so-faq-list {
    border-top: 1px solid var(--plc-brand-line);
}
.plc-so-faq-item {
    border-bottom: 1px solid var(--plc-brand-line);
}
.plc-so-faq-question {
    width: 100%;
    background: none;
    border: none;
    padding: 22px 0;
    display: flex;
    justify-content: space-between;
    align-items: center;
    cursor: pointer;
    font-size: 16px;
    color: var(--plc-brand-charcoal);
    font-weight: 500;
    font-family: inherit;
    text-align: left;
}
.plc-so-faq-question:hover {
    color: var(--plc-brand-teal);
}
.plc-so-faq-toggle {
    font-size: 24px;
    color: var(--plc-brand-text-muted);
    font-weight: 300;
    transition: transform 0.15s;
}
.plc-so-faq-answer {
    padding: 0 0 22px;
    font-size: 15px;
    line-height: 1.7;
    color: var(--plc-brand-text-muted);
    max-width: 720px;
}
.plc-so-faq-answer p {
    margin-bottom: 12px;
}
.plc-so-faq-item.is-open .plc-so-faq-toggle {
    transform: rotate(45deg);
}
.plc-so-faq-item:not(.is-open) .plc-so-faq-answer {
    display: none;
}

/* ============================================================
   REDEEM METHOD - code block, auto-applied notice, consultation
   ============================================================ */

/* Discount code block — sits below the add-to-cart button */
.plc-so-redeem-code {
    margin: 14px 0 0;
    padding: 16px;
    background: var(--plc-brand-cream);
    border: 1px dashed var(--plc-brand-line);
    border-radius: 8px;
}
.plc-so-redeem-code-label {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--plc-brand-text-muted);
    margin: 0 0 10px;
    font-weight: 600;
}
.plc-so-redeem-code-row {
    display: flex;
    align-items: stretch;
    gap: 8px;
}
.plc-so-redeem-code-value {
    flex: 1;
    background: white;
    border: 1px solid var(--plc-brand-line);
    padding: 12px 16px;
    border-radius: 4px;
    font-family: 'Consolas', 'Monaco', monospace;
    font-size: 16px;
    font-weight: 600;
    color: var(--plc-brand-charcoal);
    letter-spacing: 0.05em;
    text-align: center;
    display: flex;
    align-items: center;
    justify-content: center;
    user-select: all;
}
.plc-so-redeem-code-copy {
    background: var(--plc-brand-charcoal);
    color: white;
    border: none;
    padding: 0 18px;
    border-radius: 4px;
    font-size: 12px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    cursor: pointer;
    font-family: inherit;
    transition: background 0.15s;
    min-width: 88px;
}
.plc-so-redeem-code-copy:hover {
    background: var(--plc-brand-teal-dark);
}
.plc-so-redeem-code-copy.is-copied {
    background: var(--plc-success-text);
}

/* Auto-applied reassurance line */
.plc-so-redeem-auto {
    margin: 14px 0 0;
    padding: 10px 14px;
    background: var(--plc-success-soft);
    color: var(--plc-success-text);
    border-radius: 4px;
    font-size: 13px;
    font-weight: 500;
    display: flex;
    align-items: center;
    gap: 8px;
}
.plc-so-redeem-auto-icon {
    font-weight: 700;
}

/* Consultation-only path - replaces the buy zone */
.plc-so-consultation-notice {
    padding: 20px 0;
    border-top: 1px solid var(--plc-brand-line);
    border-bottom: 1px solid var(--plc-brand-line);
    margin-bottom: 24px;
}
.plc-so-consultation-eyebrow {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    color: var(--plc-brand-teal);
    font-weight: 600;
    margin: 0 0 8px;
}
.plc-so-consultation-notice p:last-child {
    font-size: 15px;
    color: var(--plc-brand-text);
    margin: 0;
    line-height: 1.5;
}

/* ============================================================
   TERMS & CONDITIONS ACCORDION
   ============================================================ */

.plc-so-section-terms {
    padding: 32px 0;
    background: white;
}
.plc-so-terms-accordion {
    max-width: 800px;
    margin: 0 auto;
    background: white;
    border: 1px solid var(--plc-brand-line);
    border-radius: 4px;
    overflow: hidden;
}
.plc-so-terms-toggle {
    width: 100%;
    background: none;
    border: none;
    padding: 16px 20px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    cursor: pointer;
    font-size: 14px;
    color: var(--plc-brand-charcoal);
    font-weight: 500;
    font-family: inherit;
    text-align: left;
    text-transform: uppercase;
    letter-spacing: 0.06em;
}
.plc-so-terms-toggle:hover {
    color: var(--plc-brand-teal);
}
.plc-so-terms-toggle-icon {
    font-size: 22px;
    color: var(--plc-brand-text-muted);
    font-weight: 300;
    transition: transform 0.15s;
}
.plc-so-terms-accordion.is-open .plc-so-terms-toggle-icon {
    transform: rotate(45deg);
}
.plc-so-terms-content {
    padding: 0 20px 20px;
    font-size: 13px;
    line-height: 1.6;
    color: var(--plc-brand-text-muted);
    border-top: 1px solid var(--plc-brand-line-soft);
    padding-top: 16px;
}
.plc-so-terms-content p {
    margin-bottom: 10px;
}
.plc-so-terms-content p:last-child {
    margin-bottom: 0;
}
.plc-so-terms-content ul,
.plc-so-terms-content ol {
    padding-left: 20px;
    margin-bottom: 10px;
}
.plc-so-terms-accordion:not(.is-open) .plc-so-terms-content {
    display: none;
}

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

@media (max-width: 1024px) {
    .plc-offers-grid {
        grid-template-columns: repeat(3, 1fr);
    }
}

@media (max-width: 900px) {
    .plc-so-hero-grid {
        grid-template-columns: 1fr;
    }
    .plc-so-hero-image {
        min-height: 320px;
    }
    .plc-so-hero-content {
        padding: 32px 24px;
        border-left: none;
    }
    /* Variation dropdowns stack on mobile — desktop puts them
       side-by-side in a 2-col grid, mobile drops them to one
       per row so the labels and selects have enough width. */
    .plc-so-buy-zone-product .variations tbody {
        grid-template-columns: 1fr;
        row-gap: 10px;
    }
    /* Countdown card on mobile — stays in-flow at top of content, but
       full width. When sticky, becomes a full-width bar pinned to top. */
    .plc-so-countdown-card {
        padding: 16px 18px;
        margin-bottom: 18px;
    }
    .plc-so-countdown-card__value {
        font-size: 22px;
    }
    .plc-so-countdown-card.is-sticky {
        top: 0;
        right: 0;
        left: 0;
        max-width: 100%;
        border-radius: 0;
        padding: 12px 16px;
    }
    .plc-so-countdown-card.is-sticky .plc-so-countdown-card__value {
        font-size: 18px;
    }
    .plc-so-section {
        padding: 48px 0;
    }
    .plc-so-trust-grid {
        grid-template-columns: repeat(2, 1fr);
    }
    .plc-so-trust-cell:nth-child(2) {
        border-right: none;
    }
    .plc-so-trust-cell:nth-child(-n+2) {
        border-bottom: 1px solid var(--plc-brand-line);
    }
    .plc-so-keyinfo-grid {
        grid-template-columns: repeat(2, 1fr);
    }
    .plc-so-keyinfo-cell:nth-child(3n) {
        border-right: 1px solid var(--plc-brand-line);
    }
    .plc-so-keyinfo-cell:nth-child(2n) {
        border-right: none;
    }
    .plc-so-about-grid {
        grid-template-columns: 1fr;
        gap: 32px;
    }
    .plc-so-clinics-grid {
        grid-template-columns: 1fr;
    }
    .plc-so-title {
        font-size: 30px;
    }
    .plc-so-section-title {
        font-size: 20px;
    }
    .plc-archive-title {
        font-size: 32px;
    }

    .plc-offers-grid {
        grid-template-columns: repeat(2, 1fr);
        gap: 12px;
    }
    .plc-card-title {
        font-size: 16px;
        min-height: 40px;
    }
    .plc-card-now {
        font-size: 18px;
    }

    /* Redeem code block stacks on narrow screens */
    .plc-so-redeem-code-row {
        flex-direction: column;
    }
    .plc-so-redeem-code-value {
        padding: 14px;
    }
    .plc-so-redeem-code-copy {
        padding: 12px;
        min-width: 0;
    }
}

@media (max-width: 480px) {
    .plc-offers-grid {
        grid-template-columns: 1fr;
    }
}

/* ============================================================
   Hero column order - image left, text right (28 July 2026)
   ------------------------------------------------------------
   This is the natural source order (image first, then content),
   so no `order` override is needed. The base .plc-so-hero-content
   border-left provides the divider between the image on the left
   and the text on the right. An earlier override that flipped the
   columns (text left, image right) has been removed at client
   request.
   ============================================================ */
