/*
Theme Name:   GetSetYo Store
Theme URI:    https://getsetyo.com
Description:  GetSetYo branded storefront. Child theme of Twenty Twenty-Five that
              carries the shared branding (creator banner, colors, buttons) used
              across every creator store. Edit this one theme to restyle all.
Author:       GetSetYo
Template:     twentytwentyfive
Version:      1.0.2
Text Domain:  getsetyo-store
*/

/* ============================================================================
   BRAND TOKENS — GetSetYo design system (matches getsetyo.com)
   ========================================================================== */
:root {
    --gsy-accent:       #5b42f5; /* GetSetYo purple */
    --gsy-accent-hover: #4a34d6;
    --gsy-accent-soft:  #ede9fe;
    --gsy-ink:          #161227;
    --gsy-muted:        #6e6883;
    --gsy-tint:         #f6f4fc;
    --gsy-line:         #e7e3f2;
    --gsy-radius:       10px;
    /* Single shared content container — every top-level storefront section
       (Shop toolbar, product grid, travel widget) resolves to this exact width
       and left/right edges. --gsy-cw = width incl. gutter; sections compute
       width: min(--gsy-cw, 100% - 2*--gsy-gutter) and center via margin auto. */
    --gsy-cw:           1240px;
    --gsy-gutter:       clamp(20px, 4vw, 40px);

    /* Type scale (Plus Jakarta Sans) — anchored on getsetyo.com's system.
       Deterministic px so sizes never depend on the parent theme's root size.
       Weights: 400 body · 500 meta · 600 nav/emphasis · 700 heading · 800 display. */
    --gsy-fs-display:   clamp(30px, 5vw, 40px);   /* hero, page H1 */
    --gsy-fs-h1:        clamp(26px, 3.4vw, 32px); /* product title */
    --gsy-fs-h2:        24px;                      /* section headings */
    --gsy-fs-h3:        20px;                      /* card-group titles */
    --gsy-fs-h4:        18px;                      /* leads */
    --gsy-fs-body:      16px;                      /* default text */
    --gsy-fs-sm:        14px;                      /* meta, secondary */
    --gsy-fs-caption:   13px;                      /* helper text */
    --gsy-fs-eyebrow:   12px;                      /* labels, badges */
    --gsy-lh-display:   1.15;
    --gsy-lh-heading:   1.25;
    --gsy-lh-body:      1.5;
    --gsy-ls-heading:   -0.01em;                   /* tightened headings, getsetyo-style */
}

/* Figtree — getsetyo.com's typeface (brand-consistent), with the fixed type scale below. */
body,
.wp-site-blocks,
.wp-block-post-content,
button, input, select, textarea,
h1, h2, h3, h4, h5, h6,
.woocommerce, .woocommerce-page {
    font-family: "Figtree", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
}
body {
    color: var(--gsy-ink);
    font-size: var(--gsy-fs-body);
    font-weight: 400;
    line-height: var(--gsy-lh-body);
    letter-spacing: 0;
}
/* Tightened, consistent heading rhythm (component rules still override sizes) */
.single-product .wp-block-post-title,
h1.wp-block-post-title,
h1, h2, h3, h4 {
    letter-spacing: var(--gsy-ls-heading);
}

/* ============================================================================
   CREATOR BANNER — verbatim port of components/AuthorBanner/AuthorBanner.css
   (do not edit here; mirror the repo)
   ========================================================================== */
.article-author-banner {
  background: #f6f8fb;
  font-size: 12px;
  font-weight: 400;
  line-height: 17px;
  color: #757c8d;
  display: flex;
  gap: 8px;
  padding: 12px;
  margin: 16px;
  box-sizing: border-box;
  max-height: 56px;
  border-radius: 12px;
}

.article-author-banner .profile-pic-cont {
  border-radius: 100%;
  overflow: hidden;
}
.article-author-banner .article-author-name {
  font-size: 14px;
  font-weight: 600;
  line-height: 20px;
  letter-spacing: -0.003em;
  margin: 0;
  color: #0f232f;
}
.article-author-banner .powered-by {
  display: flex;
  align-items: center;
}
.article-author-banner .powered-by img {
  height: 20px;
}
.article-author-banner .default-image {
  padding: 4px;
  background: #5b42f5;
}

@media screen and (min-width: 1000px) {
  .article-author-banner {
    font-size: 14px;
    font-weight: 400;
    line-height: 17px;
    color: #757c8d;
    display: flex;
    gap: 16px;
    padding: 16px;
    margin: 16px 0px;
    box-sizing: border-box;
    max-height: 72px;
  }

  .article-author-banner .profile-pic-cont {
    border-radius: 100%;
    overflow: hidden;
  }
  .article-author-banner .profile-pic-cont img {
    height: 40px;
    width: 40px;
  }
  .article-author-banner .article-author-name {
    font-size: 16px;
  }
  .article-author-banner .powered-by img {
    height: 24px;
  }
}

/* When the banner is used as the header branding (in place of the logo):
   no card background/padding, and a clean uncropped round avatar. */
.gsy-header-banner {
    margin: 0 !important;
    padding: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    border: none !important;
    max-height: none !important;
    align-items: center;
    gap: 12px;
}
.gsy-header-banner .profile-pic-cont {
    width: 44px !important;
    height: 44px !important;
    flex: 0 0 auto;
    border-radius: 50% !important;
    overflow: hidden;
}
.gsy-header-banner .profile-pic-cont img {
    width: 100% !important;
    height: 100% !important;
    object-fit: cover !important;
    object-position: center !important;
    display: block;
    padding: 0 !important;
}

/* ============================================================================
   BRAND BUTTONS (site + WooCommerce/blocks)
   ========================================================================== */
.wp-element-button,
.wp-block-button__link,
button:not(.wp-block-navigation-item__content),
input[type="submit"],
.woocommerce a.button,
.woocommerce button.button,
.woocommerce .button,
.wc-block-components-button {
    background-color: var(--gsy-accent) !important;
    color: #ffffff !important;
    border-radius: var(--gsy-radius) !important;
    border: none !important;
}
.wp-element-button:hover,
.wp-block-button__link:hover,
.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce .button:hover,
.wc-block-components-button:hover {
    background-color: var(--gsy-accent-hover) !important;
    color: #ffffff !important;
}
.woocommerce span.onsale {
    background-color: var(--gsy-accent) !important;
    border-radius: 999px;
}

/* ============================================================================
   HEADER POLISH
   ========================================================================== */
.gsy-site-header {
    border-bottom: 1px solid #ececf1;
    background: #ffffff;
}
.gsy-header-actions .wp-block-navigation {
    font-size: 15px;
}
.gsy-header-actions .wp-block-navigation-item__content {
    font-weight: 500;
    color: #14142b;
}
.gsy-header-actions .wp-block-navigation-item__content:hover {
    color: var(--gsy-accent);
}
/* Mini-cart trigger: make it a subtle icon button, not a big solid block */
.gsy-header-actions .wc-block-mini-cart__button {
    background: transparent !important;
    color: #14142b !important;
    padding: 6px !important;
    border-radius: 8px !important;
}
.gsy-header-actions .wc-block-mini-cart__button:hover {
    background: #f0f3f8 !important;
    color: var(--gsy-accent) !important;
}
.gsy-header-actions .wc-block-mini-cart__badge {
    background: var(--gsy-accent) !important;
    color: #fff !important;
}

/* Travel category strip under the header (Flights / Hotels / Activities / Itineraries) */
.gsy-travelnav {
    background: #ffffff;
    border-bottom: 1px solid #ececf1;
}
.gsy-travelnav-inner {
    width: min(var(--gsy-cw), 100% - 2 * var(--gsy-gutter));
    margin-inline: auto;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 7px 0;
    overflow-x: auto;
    scrollbar-width: none;
    -ms-overflow-style: none;
}
.gsy-travelnav-inner::-webkit-scrollbar {
    display: none;
}
.gsy-tn-item {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 8px 16px;
    border-radius: 999px;
    font-size: 14px;
    font-weight: 600;
    line-height: 1;
    letter-spacing: .01em;
    color: var(--gsy-ink);
    text-decoration: none;
    white-space: nowrap;
    transition: background .15s ease, color .15s ease;
}
.gsy-tn-item svg {
    width: 17px;
    height: 17px;
    flex: 0 0 auto;
    opacity: .85;
}
.gsy-tn-item:hover,
.gsy-tn-item:focus-visible {
    background: var(--gsy-accent-soft);
    color: var(--gsy-accent);
    outline: none;
}
.gsy-tn-item:hover svg,
.gsy-tn-item:focus-visible svg {
    opacity: 1;
}
@media (max-width: 640px) {
    .gsy-travelnav-inner {
        justify-content: flex-start;
        gap: 4px;
        padding-left: var(--gsy-gutter);
        padding-right: var(--gsy-gutter);
        width: 100%;
    }
    .gsy-tn-item {
        padding: 7px 13px;
        font-size: 14px;
    }
}
/* Header travel-nav jumps to on-page sections — smooth, with a little breathing room */
html {
    scroll-behavior: smooth;
}
/* Kill stray horizontal overflow (a ~40px sideways scroll on mobile that also
   widened the fixed menu layer). `clip` doesn't create a scroll container, so it
   won't disturb sticky elements or the smooth anchor scrolling above. Applied to
   both html and body since the stray overflow sits on the document scroller. */
html,
body {
    overflow-x: clip;
}
.gsy-anchor {
    display: block;
    height: 0;
    scroll-margin-top: 20px;
}
#gsy-booking,
#gsy-itineraries,
#gsy-activities {
    scroll-margin-top: 20px;
}

/* ============================================================================
   MOBILE MENU — the hamburger opens a compact pop-up modal (dimmed backdrop +
   a content-sized card that drops from the top-right), not a full-page sheet.
   The four travel categories are added to the sheet (gsy-mmenu-item), hidden in
   the inline desktop header where the travel strip already covers them.
   ========================================================================== */
/* travel links live in the nav only for the mobile sheet — hide them elsewhere */
.wp-block-navigation-item.gsy-mmenu-item {
    display: none !important;
}
.wp-block-navigation__responsive-container-open {
    color: var(--gsy-ink) !important;
    padding: 6px !important;
}
.wp-block-navigation__responsive-container-open svg {
    width: 26px;
    height: 26px;
    fill: currentColor;
}
/* backdrop / scrim */
.wp-block-navigation__responsive-container.is-menu-open {
    position: fixed !important;
    inset: 0 !important;
    width: 100% !important;
    height: 100% !important;
    max-width: none !important;
    background: rgba(18, 12, 34, 0.5) !important;
    z-index: 100000 !important;
    padding: 68px 12px 20px !important;
    display: flex !important;
    flex-direction: row !important;
    align-items: flex-start !important;
    justify-content: flex-end !important;
    box-sizing: border-box !important;
}
/* pass-through wrapper so the dialog is the flex child */
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-close {
    display: contents !important;
}
/* kill core's 56px top padding on the content wrapper (caused a gap under "Menu") */
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content {
    padding: 0 !important;
    width: 100% !important;
    display: block !important;
}
/* the modal card — sized to its content, never the full page */
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-dialog {
    position: relative !important;
    width: min(82vw, 340px) !important;
    max-height: calc(100vh - 92px) !important;
    overflow-y: auto !important;
    margin: 0 !important;
    padding: 46px 18px 8px !important;
    background: #ffffff !important;
    border-radius: 16px !important;
    box-shadow: 0 24px 60px rgba(20, 10, 40, 0.28) !important;
    box-sizing: border-box !important;
}
/* "MENU" label, top-left of the card */
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-dialog::before {
    content: "Menu";
    position: absolute;
    top: 17px;
    left: 18px;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--gsy-muted);
}
/* close (×) button, top-right of the card */
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-close {
    top: 8px !important;
    right: 8px !important;
    width: 34px !important;
    height: 34px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    background: var(--gsy-tint) !important;
    border-radius: 999px !important;
    color: var(--gsy-ink) !important;
    padding: 0 !important;
}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-close svg {
    width: 20px;
    height: 20px;
    fill: currentColor;
}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container {
    display: flex !important;
    flex-direction: column !important;
    align-items: stretch !important;
    gap: 0 !important;
    width: 100% !important;
    margin: 0 !important;
}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item {
    width: 100% !important;
    border-bottom: 1px solid var(--gsy-line);
}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item:last-child {
    border-bottom: 0;
}
/* travel links ARE shown inside the sheet */
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item.gsy-mmenu-item {
    display: block !important;
}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content {
    display: flex !important;
    align-items: center !important;
    gap: 13px;
    width: 100% !important;
    padding: 15px 2px !important;
    font-size: 16px !important;
    font-weight: 600 !important;
    color: var(--gsy-ink) !important;
}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content:hover {
    color: var(--gsy-accent) !important;
}
/* Each row gets a leading icon (fixed column → labels line up perfectly).
   The per-item content rules must match the base rule's specificity, so they
   target the same .wp-block-navigation-item__content element (which carries href). */
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content::before {
    content: "";
    flex: 0 0 26px;
    text-align: center;
    font-size: 18px;
    line-height: 1;
}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content[href*="/shop/"]::before { content: "\1F6CD\FE0F"; }
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content[href*="/cart/"]::before { content: "\1F6D2"; }
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content[href*="gsy-book-flight"]::before { content: "\2708\FE0F"; }
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content[href*="gsy-book-hotel"]::before { content: "\1F3E8"; }
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content[href*="gsy-itineraries"]::before { content: "\1F5FA\FE0F"; }
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content[href*="gsy-activities"]::before { content: "\1F9ED"; }

/* Mobile header: cart first, then the ☰ menu button (matches how users expect it) */
@media (max-width: 600px) {
    .gsy-header-actions {
        gap: 6px;
    }
    .gsy-header-actions .wc-block-mini-cart,
    .gsy-header-actions .wp-block-woocommerce-mini-cart {
        order: -1;
    }
}

/* ============================================================================
   MOBILE CART — stack each line item (image / details / total) so the product
   name no longer collides with the price + savings badge on narrow screens.
   ========================================================================== */
@media (max-width: 600px) {
    .wc-block-cart-items__row {
        display: grid !important;
        grid-template-columns: 74px 1fr !important;
        grid-template-areas:
            "image product"
            "total total" !important;
        column-gap: 14px !important;
        row-gap: 8px !important;
        align-items: start !important;
        padding: 18px 2px !important;
    }
    .wc-block-cart-items__row > td {
        display: block !important;
        padding: 0 !important;
        border: 0 !important;
        width: auto !important;
    }
    td.wc-block-cart-item__image { grid-area: image !important; }
    td.wc-block-cart-item__image,
    td.wc-block-cart-item__image img {
        width: 74px !important;
        min-width: 74px !important;
        height: auto !important;
    }
    td.wc-block-cart-item__product { grid-area: product !important; }
    td.wc-block-cart-item__total {
        grid-area: total !important;
        display: flex !important;
        align-items: center !important;
        gap: 10px !important;
        padding-top: 4px !important;
        border-top: 1px dashed var(--gsy-line) !important;
        margin-top: 2px !important;
    }
    /* line total + savings badge sit inline, left-aligned, and never overflow */
    .wc-block-cart-item__total .wc-block-components-product-price {
        font-size: 16px !important;
        font-weight: 700 !important;
        white-space: nowrap !important;
    }
    .wc-block-cart-item__total .wc-block-components-sale-badge,
    .wc-block-cart-item__total-price-and-sale-badge-wrapper .wc-block-components-sale-badge {
        font-size: 11px !important;
        padding: 3px 8px !important;
        line-height: 1.2 !important;
        white-space: normal !important;
        margin: 0 !important;
    }
    .wc-block-cart-item__product .wc-block-components-product-name {
        font-size: 15px !important;
        line-height: 1.32 !important;
        display: block;
    }
    .wc-block-cart-item__product .wc-block-components-product-metadata {
        font-size: 13px !important;
    }
}

/* ============================================================================
   HERO
   ========================================================================== */
.gsy-hero {
    background:
        radial-gradient(1100px 420px at 50% -12%, var(--gsy-accent-soft) 0%, rgba(237,233,254,0) 62%),
        linear-gradient(180deg, var(--gsy-tint) 0%, #ffffff 72%);
    border-bottom: 1px solid var(--gsy-line);
    padding: 72px 24px 84px !important;
}
.gsy-hero-inner { max-width: 780px; margin: 0 auto; text-align: center; }
.gsy-hero-eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    font-size: 12px;
    font-weight: 700;
    color: var(--gsy-accent);
    background: #fff;
    border: 1px solid var(--gsy-line);
    box-shadow: 0 2px 8px rgba(91,66,245,.06);
    padding: 7px 14px;
    border-radius: 999px;
    margin-bottom: 20px;
}
.gsy-hero-avatar { width: 22px; height: 22px; border-radius: 50%; object-fit: cover; }
.gsy-hero-title {
    font-size: clamp(2.3rem, 5.5vw, 3.6rem);
    font-weight: 800;
    letter-spacing: -0.03em;
    color: var(--gsy-ink);
    line-height: 1.05;
    margin: 0 0 16px;
}
.gsy-hero-sub {
    font-size: 18px;
    line-height: 1.6;
    color: var(--gsy-muted);
    max-width: 540px;
    margin: 0 auto 28px;
}
.gsy-hero-cta { display: flex; flex-direction: column; align-items: center; gap: 14px; }
.gsy-hero-btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: var(--gsy-accent);
    color: #fff !important;
    font-weight: 600;
    font-size: 16px;
    padding: 14px 30px;
    border-radius: 12px;
    text-decoration: none;
    box-shadow: 0 10px 26px rgba(91,66,245,.28);
    transition: transform .15s ease, box-shadow .15s ease;
}
.gsy-hero-btn:hover { transform: translateY(-1px); box-shadow: 0 14px 32px rgba(91,66,245,.36); color: #fff !important; }
.gsy-hero-trust { display: flex; gap: 16px; flex-wrap: wrap; justify-content: center; font-size: 13px; font-weight: 500; color: var(--gsy-muted); }
.gsy-hero-trust span { display: inline-flex; align-items: center; gap: 6px; }
.gsy-hero-trust svg { color: var(--gsy-accent); }

/* ============================================================================
   PRODUCT CARDS (shop grid + homepage)
   ========================================================================== */
.gsy-products-section > h2 {
    font-size: clamp(1.7rem, 3vw, 2.15rem);
    font-weight: 800;
    letter-spacing: -0.025em;
    color: var(--gsy-ink);
    margin-bottom: 4px;
}
.gsy-section-sub {
    color: var(--gsy-muted);
    font-size: 16px;
    margin: 0 0 28px;
}
.woocommerce ul.products li.product,
.woocommerce-page ul.products li.product {
    text-align: left;
    border: 1px solid var(--gsy-line);
    border-radius: 16px;
    padding: 12px;
    background: #fff;
    box-shadow: 0 1px 2px rgba(22,18,39,.04);
    transition: box-shadow .18s ease, transform .18s ease, border-color .18s ease;
}
.woocommerce ul.products li.product:hover {
    box-shadow: 0 22px 44px rgba(91,66,245,.14);
    border-color: #d9d2fb;
    transform: translateY(-3px);
}
.woocommerce ul.products li.product a img {
    border-radius: 10px;
    margin-bottom: 12px;
    /* Skeleton tint + shimmer so the card holds its shape before the photo
       paints; the opaque image covers this once loaded. */
    aspect-ratio: 1 / 1;
    object-fit: cover;
    width: 100%;
    color: transparent;
    background-color: var(--gsy-tint);
    background-image: linear-gradient(100deg, rgba(255,255,255,0) 30%, rgba(255,255,255,.65) 50%, rgba(255,255,255,0) 70%);
    background-size: 220% 100%;
    background-repeat: no-repeat;
    animation: gsy-skeleton 1.4s ease-in-out infinite;
}
.woocommerce ul.products li.product .woocommerce-loop-product__title {
    font-size: 16px;
    font-weight: 600;
    line-height: 1.35;
    color: #14142b;
    padding: 0 2px 6px;
}
.woocommerce ul.products li.product .price {
    color: #0f232f;
    font-weight: 600;
    padding: 0 2px;
}
.woocommerce ul.products li.product .price del {
    color: #9aa1ad;
    font-weight: 400;
    margin-right: 6px;
}
.woocommerce ul.products li.product .button {
    display: inline-block;
    margin-top: 10px;
}
.woocommerce span.onsale {
    top: 14px !important;
    right: 14px !important;
    left: auto !important;
    min-height: auto;
    min-width: auto;
    padding: 4px 12px;
    line-height: 1.5;
    font-weight: 600;
}

/* On the single product image, keep the sale badge clear of the zoom icon
   (top-left instead of top-right). Higher specificity than the grid rule. */
body.single-product span.onsale {
    left: 14px !important;
    right: auto !important;
    top: 14px !important;
}

/* ============================================================================
   TRAVEL SEARCH WIDGET (footer) — mirror of FlightAndStaySearchForm
   Values ported from components/util_components/FlightAndStaySearchForm.css
   ========================================================================== */
.gsy-tw-wrap {
    /* shared content container — aligns exactly with the Shop toolbar + grid */
    width: min(var(--gsy-cw), 100% - 2 * var(--gsy-gutter));
    max-width: none;
    margin: 32px auto;
    padding: 0;
    box-sizing: border-box;
}
.flight-and-stay-search-form.gsy-tw {
    border-radius: 16px;
    border: 1px solid #f1f5f9;
    background: #fff;
    box-shadow: 0 4px 8px -2px rgba(23,23,23,.1), 0 2px 4px -2px rgba(23,23,23,.06);
    padding: 24px;
    position: relative;
}
/* Coupon banner — verbatim port of .coupon-and-offerings */
.gsy-tw .coupon-and-offerings {
    display: flex;
    gap: 4px;
    align-items: center;
    flex-wrap: wrap;
    margin-bottom: 8px;
}
.gsy-tw .coupon-and-offerings > div { display: flex; align-items: center; gap: 4px; }
.gsy-tw .coupon-and-offerings img { height: 20px; width: auto; }
.gsy-tw .coupon-and-offerings h4 {
    color: #0f232f;
    font-size: 14px;
    font-weight: 500;
    letter-spacing: -0.112px;
    margin: 0;
}
.gsy-tw .coupon-and-offerings .coupon {
    color: #0f232f;
    font-size: 14px;
    font-weight: 500;
    line-height: 16px;
    margin: 0;
    display: flex;
    align-items: center;
    gap: 4px;
    text-transform: uppercase;
}
.gsy-tw .coupon-and-offerings .coupon > span { color: #f20089; font-size: 14px; font-weight: 500; }
.gsy-tw-tabs {
    display: flex;
    align-items: center;
    gap: 8px;
    border-bottom: 1px solid #e2e8f0;
    position: relative;
}
.gsy-tw .gsy-tw-tab {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    background: transparent !important;
    border: none !important;
    border-bottom: 2px solid transparent !important;
    border-radius: 0 !important;
    padding: 8px 16px 14px !important;
    margin-bottom: -1px;
    cursor: pointer;
    color: #475569 !important;
    font-size: 16px;
    font-weight: 600;
    line-height: 22px;
    letter-spacing: -0.112px;
    text-transform: capitalize;
}
.gsy-tw .gsy-tw-tab:hover { background: transparent !important; color: #0f232f !important; }
.gsy-tw-tab .gsy-tw-ic-on { display: none; }
.gsy-tw-tab .gsy-tw-ic-off { display: inline-block; }
.gsy-tw-tab img { height: 22px; width: auto; }
.gsy-tw .gsy-tw-tab.is-active {
    color: #0f232f !important;
    border-bottom-color: #4f46e5 !important;
}
.gsy-tw-tab.is-active .gsy-tw-ic-on { display: inline-block; }
.gsy-tw-tab.is-active .gsy-tw-ic-off { display: none; }
.gsy-tw-badge {
    width: 120px;
    height: auto;
    position: absolute;
    right: 8px;
    bottom: 0;
    transform: translateY(30%);
    pointer-events: none;
    z-index: 1;
}
.gsy-tw-panel { display: none; padding-top: 20px; }
.gsy-tw-panel.is-active { display: block; }
.gsy-tw-fields {
    display: flex;
    gap: 12px;
    align-items: stretch;
    flex-wrap: wrap;
}
.gsy-tw-field {
    flex: 1 1 220px;
    display: flex;
    align-items: center;
    gap: 8px;
    height: 48px;
    padding: 4px 16px;
    border-radius: 8px;
    border: 1px solid #ebecef;
    background: #fff;
    cursor: pointer;
    transition: border-color .15s ease, box-shadow .15s ease;
}
/* Non-preview (stacked) layout: search button + copy on their own row */
.gsy-tw-searchcont {
    display: flex;
    gap: 16px;
    align-items: center;
    justify-content: flex-start;
    margin-top: 16px;
}
.gsy-tw-searchcopy {
    color: #757c8d;
    font-size: 14px;
    font-weight: 500;
    margin: 0;
}
.gsy-tw-field:hover {
    border-color: #c7cbf5;
    box-shadow: 0 0 0 3px rgba(79,70,229,.08);
}
.gsy-tw-field .gsy-tw-ic { color: #94a3b8; flex: 0 0 auto; }
.gsy-tw-field h2 {
    color: #0f232f;
    font-size: 15px;
    font-weight: 500;
    line-height: 18.5px;
    margin: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.gsy-tw-field h2.gsy-tw-ph {
    color: #64748b;
    font-weight: 400;
}
.gsy-tw .search-stays-cta {
    flex: 0 0 auto;
    border-radius: 8px !important;
    background: #5b42f5 !important;
    box-shadow: 0 1px 4px rgba(25,33,61,.08);
    color: #fff !important;
    font-size: 16px;
    font-weight: 500;
    line-height: 24px;
    letter-spacing: -0.112px;
    border: none !important;
    outline: none;
    padding: 0 24px !important;
    height: 48px;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    cursor: pointer;
    white-space: nowrap;
}
.gsy-tw .search-stays-cta:hover { background: #4a34d6 !important; }

/* Trip type toggle (flight) */
.gsy-tw-triptype { display: flex; gap: 8px; margin-bottom: 14px; }
.gsy-tw-triptype button {
    background: #f6f8fb !important;
    color: #475569 !important;
    border: 1px solid #ebecef !important;
    border-radius: 999px !important;
    padding: 6px 16px !important;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
}
.gsy-tw-triptype button.is-active {
    background: #eef0ff !important;
    color: #4f46e5 !important;
    border-color: #c7cbf5 !important;
}
.gsy-tw-field { position: relative; }
.gsy-shake { animation: gsy-shake .4s ease; border-color: #f20089 !important; }
@keyframes gsy-shake { 0%,100%{transform:translateX(0)} 25%{transform:translateX(-5px)} 75%{transform:translateX(5px)} }

/* ---- floating popups (autocomplete / calendar / guests) ---- */
.gsy-tw-pop {
    z-index: 100000;
    background: #fff;
    border: 1px solid #ebecef;
    border-radius: 12px;
    box-shadow: 0 12px 40px rgba(0,0,23,.14);
    padding: 12px;
    box-sizing: border-box;
    max-height: 420px;
    overflow: auto;
    font-size: 14px;
    color: #0f232f;
}
.gsy-ac-field { position: relative; margin-bottom: 8px; }
.gsy-ac-input {
    width: 100%; height: 40px; box-sizing: border-box;
    border: 1px solid #ebecef; border-radius: 8px; padding: 0 12px;
    outline: none; font-size: 14px;
}
.gsy-ac-input:focus { border-color: #c7cbf5; }
.gsy-ac-item {
    display: flex; justify-content: space-between; align-items: center; gap: 12px;
    padding: 9px 6px; cursor: pointer; border-radius: 8px;
}
.gsy-ac-item:hover { background: #f6f8fb; }
.gsy-ac-item h3 { margin: 0; font-size: 14px; font-weight: 500; color: #0f232f; text-transform: capitalize; }
.gsy-ac-item p { margin: 0; font-size: 12px; font-weight: 300; color: #757c8d; }
.gsy-ac-item > span { flex: 0 0 auto; border-radius: 4px; background: #f6f8fb; color: #0f232f; font-size: 10px; font-weight: 600; text-transform: uppercase; padding: 4px 6px; }
.gsy-ac-empty { padding: 12px 6px; color: #757c8d; font-size: 13px; }

/* calendar */
.gsy-cal-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.gsy-cal-title { font-weight: 600; font-size: 14px; }
.gsy-tw-pop .gsy-cal-nav { background: #f6f8fb !important; border: none !important; border-radius: 8px !important; width: 30px; height: 30px; cursor: pointer; font-size: 18px; color: #0f232f !important; line-height: 1; }
.gsy-cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; }
.gsy-cal-dow { text-align: center; font-size: 11px; color: #94a3b8; padding: 4px 0; font-weight: 600; }
.gsy-cal-empty { height: 34px; }
.gsy-tw-pop .gsy-cal-day { height: 34px; border: none !important; background: transparent !important; border-radius: 8px !important; cursor: pointer; font-size: 13px; color: #0f232f !important; padding: 0 !important; }
.gsy-tw-pop .gsy-cal-day:hover:not(.is-disabled) { background: #f0f3f8 !important; }
.gsy-tw-pop .gsy-cal-day.is-inrange { background: #eef0ff !important; border-radius: 0 !important; }
.gsy-tw-pop .gsy-cal-day.is-selected { background: #5b42f5 !important; color: #fff !important; }
.gsy-tw-pop .gsy-cal-day.is-disabled { color: #cbd5e1 !important; cursor: default; }

/* guests / pax */
.gsy-guests-room { border: 1px solid #eef0f4; border-radius: 10px; padding: 10px 12px; margin-bottom: 10px; }
.gsy-guests-room-title { font-weight: 600; font-size: 13px; margin-bottom: 6px; display: flex; justify-content: space-between; align-items: center; }
.gsy-tw-pop .gsy-guests-remove { background: transparent !important; border: none !important; color: #f20089 !important; font-size: 12px; cursor: pointer; padding: 0 !important; }
.gsy-stepper { display: flex; align-items: center; justify-content: space-between; padding: 6px 0; }
.gsy-stepper-label { font-size: 14px; color: #0f232f; }
.gsy-stepper-ctrls { display: flex; align-items: center; gap: 12px; }
.gsy-tw-pop .gsy-stepper-btn { width: 30px; height: 30px; border-radius: 50% !important; border: 1px solid #ebecef !important; background: #fff !important; color: #0f232f !important; font-size: 18px; line-height: 1; cursor: pointer; padding: 0 !important; }
.gsy-stepper-num { min-width: 18px; text-align: center; font-weight: 600; }
.gsy-guests-ages { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.gsy-guests-age { height: 34px; border: 1px solid #ebecef; border-radius: 8px; padding: 0 8px; font-size: 13px; }
.gsy-tw-pop .gsy-guests-add { background: transparent !important; border: 1px dashed #c7cbf5 !important; color: #4f46e5 !important; border-radius: 8px !important; padding: 8px !important; width: 100%; cursor: pointer; font-weight: 600; margin-bottom: 8px; }
.gsy-tw-pop .gsy-guests-done { background: #5b42f5 !important; color: #fff !important; border: none !important; border-radius: 8px !important; padding: 10px !important; width: 100%; cursor: pointer; font-weight: 600; }
@media (max-width: 782px) {
    .gsy-tw-badge { width: 84px; }
    .gsy-tw-field { min-width: 100%; }
    .search-stays-cta.gsy-tw-cta { width: 100%; justify-content: center; }
}
/* On phones the two trip tabs + stamp can't share the row without colliding;
   hide the decorative stamp (its "best price" promise is repeated in the
   widget subtext and the trust band below). */
@media (max-width: 600px) {
    .gsy-tw-badge { display: none !important; }
}

/* ============================================================================
   FOOTER — verbatim port of TrustMarker/TrustMarker.jsx + .css (the generic
   getsetyo.com footer). Font Figtree falls back to the theme sans.
   ========================================================================== */
.gsy-site-footer { margin: 0; padding: 0; }
.gsy-trust-marker-footer { display: flex; flex-direction: column; align-items: stretch; background: #fafaff; }
.gsy-trust-marker-footer .gsy-trust-marker { padding: 54px 0; display: flex; flex-direction: column; gap: 16px; width: min(var(--gsy-cw), 100% - 2 * var(--gsy-gutter)); max-width: none; margin-inline: auto; box-sizing: border-box; }
.gsy-trust-marker-footer .gsy-trust-marker-title { color: #0f172a; font-size: 20px; font-weight: 700; line-height: 28px; }
.gsy-trust-marker-footer .gsy-trust-marker-list { display: grid; grid-gap: 16px; grid-template-columns: 1fr 1fr 1fr 1fr; }
.gsy-trust-marker-footer .gsy-trust-marker-item { padding: 16px; display: flex; gap: 12px; border-radius: 16px; border: 1px solid #e2e8f0; background: #fff; box-shadow: 0 4px 24px -4px rgba(24,39,75,.08); }
.gsy-trust-marker-footer .gsy-trust-marker-item .item-graphic { flex: 0 0 56px; height: 56px; display: grid; place-items: center; border-radius: 8px; }
.gsy-trust-marker-footer .gsy-trust-marker-item .item-graphic img { height: 60% !important; width: 60% !important; }
.gsy-trust-marker-footer .gsy-trust-marker-item .item-heading { color: #1c2051; font-size: 18px; font-weight: 700; line-height: 24px; }
.gsy-trust-marker-footer .gsy-trust-marker-item .item-subheading { color: #64748b; font-size: 14px; font-weight: 500; line-height: 20px; letter-spacing: -0.07px; }

.gsy-trust-marker-footer .gsy-footer { padding: 52px 120px; display: flex; flex-direction: column; gap: 40px; background: #0f232f; }
.gsy-trust-marker-footer .gsy-footer .gsy-footer-content { display: flex; justify-content: space-between; gap: 72px; }
.gsy-trust-marker-footer .gsy-footer .gsy-footer-company-info { flex: 1 1 257px; display: flex; flex-direction: column; gap: 22px; }
.gsy-trust-marker-footer .gsy-footer .gsy-footer-logo { display: none; }
.gsy-trust-marker-footer .gsy-footer .gsy-footer-address { color: #fff; font-size: 14px; font-weight: 600; line-height: 20px; letter-spacing: -0.042px; }
.gsy-trust-marker-footer .gsy-footer .gsy-footer-company-cred { display: flex; flex-direction: column; color: rgba(255,255,255,.8); font-size: 14px; font-weight: 400; line-height: 20px; }
.gsy-trust-marker-footer .gsy-footer .gsy-footer-links-rating { flex: 2 2 auto; display: flex; gap: 40px; justify-content: space-between; }
.gsy-trust-marker-footer .gsy-footer .gsy-footer-links-container { flex: 2 2 auto; display: flex; gap: 40px; justify-content: space-between; }
.gsy-trust-marker-footer .gsy-footer .gsy-footer-links { flex: 1 1 170px; display: flex; flex-direction: column; gap: 12px; align-items: flex-start; }
.gsy-trust-marker-footer .gsy-footer .gsy-footer-links-header { color: #fff; font-size: 14px; font-weight: 700; line-height: 20px; }
.gsy-trust-marker-footer .gsy-footer .gsy-footer-link { color: rgba(255,255,255,.8); font-size: 12px; font-weight: 700; line-height: 20px; text-decoration: none; }
.gsy-trust-marker-footer .gsy-footer .gsy-footer-link:hover { text-decoration: underline; }
.gsy-trust-marker-footer .gsy-footer .gsy-footer-ratings { display: flex; flex-direction: column; gap: 16px; align-items: flex-start; }
.gsy-trust-marker-footer .gsy-footer .gsy-footer-rating-container { display: flex; gap: 6px; align-items: center; color: #fff; font-size: 24px; font-weight: 700; line-height: 32px; }
.gsy-trust-marker-footer .gsy-footer .gsy-footer-google-logo { display: block; width: 24px !important; height: 24px !important; border-radius: 50%; object-fit: cover; }
.gsy-trust-marker-footer .gsy-footer .gsy-footer-review-container { display: flex; flex-direction: column; color: #fff; font-size: 14px; font-weight: 600; line-height: 20px; letter-spacing: -0.042px; }
.gsy-trust-marker-footer .gsy-footer .gsy-footer-review-container span { color: rgba(255,255,255,.8); font-size: 12px; font-weight: 500; line-height: 17px; }
.gsy-trust-marker-footer .gsy-footer .gsy-footer-social-copyright { padding: 20px 0 0; border-top: 1px solid #fff; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 12px; }
.gsy-trust-marker-footer .gsy-footer .gsy-footer-copyright { color: #fff; font-size: 14px; font-weight: 400; line-height: 20px; }
.gsy-trust-marker-footer .gsy-footer .gsy-footer-socials { display: flex; align-items: center; gap: 24px; }
.gsy-trust-marker-footer .gsy-footer .gsy-footer-socials a { line-height: 0; }
/* Meta Tech Provider badge */
.gsy-footer-meta-verified-badge { display: inline-flex; flex-direction: column; align-items: center; justify-content: center; width: 96px; margin-top: 8px; }
.gsy-footer-meta-verified-badge .meta-tech-provider-badge-logo { display: block; width: 100%; aspect-ratio: 4.55; overflow: hidden; }
.gsy-footer-meta-verified-badge .meta-tech-provider-badge-logo img { display: block; width: 100% !important; height: auto !important; }
.gsy-footer-meta-verified-badge .meta-tech-provider-badge-label { margin-top: 2px; color: #fff; font-size: 13px; font-weight: 500; line-height: 1; white-space: nowrap; }
@media only screen and (max-width: 1049px) {
    .gsy-trust-marker-footer .gsy-trust-marker-list { grid-template-columns: 1fr 1fr; }
    .gsy-trust-marker-footer .gsy-footer { padding: 40px 70px; }
}
@media only screen and (max-width: 661px) {
    .gsy-trust-marker-footer .gsy-footer .gsy-footer-content { flex-direction: column-reverse; gap: 24px; }
    .gsy-trust-marker-footer .gsy-footer .gsy-footer-links-rating { flex-direction: column; }
    .gsy-trust-marker-footer .gsy-footer .gsy-footer-logo { display: block; width: 108px !important; height: auto !important; }
    .gsy-trust-marker-footer .gsy-footer .gsy-footer-company-info { flex: 0 0 auto; }
    .gsy-trust-marker-footer .gsy-trust-marker-item { flex-direction: column; align-items: center; text-align: center; }
    .gsy-trust-marker-footer .gsy-footer { padding: 24px 24px; }
}

/* ============================================================================
   PREMIUM WOOCOMMERCE PAGES (shop / product / cart / account / checkout)
   ========================================================================== */

/* --- Page titles + breadcrumb --- */
.woocommerce-breadcrumb {
    font-size: 13px !important;
    color: var(--gsy-muted) !important;
    margin-bottom: 18px !important;
}
.woocommerce-breadcrumb a { color: var(--gsy-muted) !important; }
.woocommerce-breadcrumb a:hover { color: var(--gsy-accent) !important; }
.woocommerce .woocommerce-result-count { color: var(--gsy-muted); font-size: 14px; }
.woocommerce .woocommerce-ordering select {
    border: 1px solid var(--gsy-line);
    border-radius: 10px;
    padding: 8px 12px;
    font-size: 14px;
    background: #fff;
}

/* --- Product grid: consistent cards, centered so few products don't look sparse --- */
.woocommerce ul.products,
.woocommerce-page ul.products {
    display: grid !important;
    grid-template-columns: repeat(auto-fit, minmax(250px, 320px)) !important;
    justify-content: center !important;
    gap: 28px !important;
    margin: 0 auto 48px !important;
    max-width: 1200px;
}
.woocommerce ul.products::before,
.woocommerce ul.products::after { content: none !important; display: none !important; }
.woocommerce ul.products li.product,
.woocommerce-page ul.products li.product {
    width: auto !important;
    margin: 0 !important;
    float: none !important;
    display: flex;
    flex-direction: column;
}
.woocommerce ul.products li.product a.woocommerce-LoopProduct-link { display: block; }
.woocommerce ul.products li.product .button {
    margin-top: auto !important;
    width: 100%;
    text-align: center;
}
.woocommerce ul.products li.product .woocommerce-loop-product__title { min-height: 2.7em; }

/* --- Sale badge: purple everywhere (archive + loop + single) --- */
.woocommerce span.onsale,
.woocommerce ul.products li.product .onsale,
.wc-block-components-product-sale-badge,
.wc-block-grid__product-onsale {
    background: var(--gsy-accent) !important;
    color: #fff !important;
    border-radius: 999px !important;
    border: none !important;
    box-shadow: 0 4px 12px rgba(91,66,245,.28) !important;
    font-weight: 600 !important;
    text-transform: none !important;
    padding: 5px 13px !important;
    min-height: 0 !important;
    min-width: 0 !important;
}

/* --- Form inputs (account / checkout / coupon) --- */
.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce-page form .form-row input.input-text,
.woocommerce input.input-text,
.woocommerce input[type="text"],
.woocommerce input[type="email"],
.woocommerce input[type="password"],
.woocommerce input[type="tel"],
.woocommerce input[type="number"],
.woocommerce select,
.woocommerce textarea,
.select2-container .select2-selection {
    border: 1px solid var(--gsy-line) !important;
    border-radius: 10px !important;
    padding: 12px 14px !important;
    font-size: 15px !important;
    background: #fff !important;
    box-shadow: none !important;
    color: var(--gsy-ink) !important;
    line-height: 1.4 !important;
}
.woocommerce input.input-text:focus,
.woocommerce input[type="email"]:focus,
.woocommerce input[type="password"]:focus,
.woocommerce input[type="text"]:focus,
.woocommerce textarea:focus,
.woocommerce select:focus {
    border-color: var(--gsy-accent) !important;
    outline: none !important;
    box-shadow: 0 0 0 3px var(--gsy-accent-soft) !important;
}
.woocommerce form .form-row label { font-weight: 500; color: var(--gsy-ink); }

/* --- My account: center login / register --- */
.woocommerce-account .woocommerce > .u-columns,
.woocommerce-account .woocommerce > .woocommerce-form-login,
.woocommerce-account .woocommerce > .woocommerce-form-register,
.woocommerce-account .woocommerce > .customer-login-form {
    max-width: 460px;
    margin-left: auto !important;
    margin-right: auto !important;
    float: none !important;
}
.woocommerce-account .col2-set .col-1,
.woocommerce-account .col2-set .col-2 { width: 100%; float: none; }
.woocommerce form.login,
.woocommerce form.register,
.woocommerce-EditAccountForm {
    border: 1px solid var(--gsy-line) !important;
    border-radius: 16px !important;
    padding: 28px !important;
    box-shadow: 0 4px 24px rgba(22,18,39,.05) !important;
    margin-top: 8px !important;
}
.woocommerce-account .woocommerce-MyAccount-navigation ul {
    border: 1px solid var(--gsy-line);
    border-radius: 14px;
    overflow: hidden;
    list-style: none;
    margin: 0;
    padding: 0;
}
.woocommerce-account .woocommerce-MyAccount-navigation li { border-bottom: 1px solid var(--gsy-line); }
.woocommerce-account .woocommerce-MyAccount-navigation li:last-child { border-bottom: 0; }
.woocommerce-account .woocommerce-MyAccount-navigation li a { display: block; padding: 12px 16px; color: var(--gsy-ink); text-decoration: none; font-weight: 500; }
.woocommerce-account .woocommerce-MyAccount-navigation li.is-active a,
.woocommerce-account .woocommerce-MyAccount-navigation li a:hover { background: var(--gsy-tint); color: var(--gsy-accent); }

/* --- Single product --- */
.woocommerce div.product .product_title { line-height: 1.1; margin-bottom: 12px; }
.woocommerce div.product p.price,
.woocommerce div.product span.price { color: var(--gsy-ink) !important; font-weight: 700; font-size: 28px; }
.woocommerce div.product p.price del { color: #b3aecb !important; font-weight: 400; font-size: 18px; }
.woocommerce div.product p.price ins { text-decoration: none; }
.woocommerce .quantity .qty {
    border: 1px solid var(--gsy-line) !important;
    border-radius: 10px !important;
    height: 48px;
    width: 72px;
    text-align: center;
    font-weight: 600;
}
.woocommerce div.product form.cart .button {
    height: 48px;
    padding: 0 28px !important;
    font-size: 16px;
    vertical-align: top;
}
.woocommerce div.product .product_meta {
    border-top: 1px solid var(--gsy-line);
    margin-top: 22px;
    padding-top: 16px;
    font-size: 13px;
    color: var(--gsy-muted);
}
.gsy-prod-trust {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 22px;
    margin: 22px 0 4px;
}
.gsy-prod-trust span {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 14px;
    font-weight: 500;
    color: var(--gsy-ink);
}
.gsy-prod-trust svg { color: var(--gsy-accent); flex: 0 0 auto; }
/* product tabs + related */
.woocommerce div.product .woocommerce-tabs ul.tabs { border-bottom: 1px solid var(--gsy-line); }
.woocommerce div.product .woocommerce-tabs ul.tabs li { background: transparent; border: none; border-radius: 0; }
.woocommerce div.product .woocommerce-tabs ul.tabs li.active { border-bottom: 2px solid var(--gsy-accent); }
.woocommerce div.product .woocommerce-tabs ul.tabs li a { color: var(--gsy-ink); font-weight: 600; }
.woocommerce div.product .woocommerce-tabs ul.tabs::before { border-color: var(--gsy-line); }
.woocommerce .related > h2, .woocommerce .upsells > h2 {
    font-size: 24px; font-weight: 800; letter-spacing: -0.02em; color: var(--gsy-ink); margin-bottom: 20px;
}

/* --- Cart --- */
.woocommerce table.shop_table {
    border: 1px solid var(--gsy-line) !important;
    border-radius: 14px !important;
    overflow: hidden;
    border-collapse: separate !important;
}
.woocommerce table.shop_table th { background: var(--gsy-tint); color: var(--gsy-ink); font-weight: 700; }
.woocommerce-cart .cart-collaterals .cart_totals,
.woocommerce .cart_totals {
    border: 1px solid var(--gsy-line);
    border-radius: 14px;
    padding: 20px;
    background: #fff;
}
.woocommerce a.remove {
    color: var(--gsy-accent) !important;
    border: 1px solid var(--gsy-line);
    border-radius: 50%;
}
.woocommerce a.remove:hover { background: var(--gsy-accent) !important; color: #fff !important; }
/* empty cart state */
.wc-block-cart__empty-cart__title,
.cart-empty.woocommerce-info,
.woocommerce-mini-cart__empty-message { text-align: center; }
.wc-block-cart__empty-cart__title { font-size: 24px !important; font-weight: 700 !important; color: var(--gsy-ink) !important; }
.woocommerce .wc-block-cart-items, .is-large.wc-block-cart .wc-block-cart-items { border: 1px solid var(--gsy-line); border-radius: 14px; }
.wp-block-woocommerce-cart-order-summary-block { border: 1px solid var(--gsy-line) !important; border-radius: 14px !important; padding: 6px 22px 20px !important; }

/* --- Checkout --- */
.woocommerce-checkout #payment { background: var(--gsy-tint); border-radius: 14px; }
.woocommerce-checkout #payment ul.payment_methods { border-bottom: 1px solid var(--gsy-line); }
.woocommerce-checkout .woocommerce-checkout-review-order-table { border-radius: 14px; }
#add_payment_method #payment div.payment_box, .woocommerce-checkout #payment div.payment_box { background: #fff; border: 1px solid var(--gsy-line); }
#add_payment_method #payment div.payment_box::before, .woocommerce-checkout #payment div.payment_box::before { border-bottom-color: #fff; }

/* --- Notices --- */
.woocommerce-message, .woocommerce-info, .woocommerce-error, .woocommerce-noreviews {
    border-top-color: var(--gsy-accent) !important;
    border-radius: 10px;
    background: var(--gsy-tint);
}
.woocommerce-message::before, .woocommerce-info::before { color: var(--gsy-accent) !important; }

/* --- Empty cart state --- */
.wc-block-cart__empty-cart__title.with-empty-cart-icon::before {
    width: 84px !important;
    height: 84px !important;
    opacity: .4 !important;
    margin-bottom: 12px !important;
}
.wc-block-cart__empty-cart__title {
    font-size: 24px !important;
    font-weight: 700 !important;
    color: var(--gsy-ink) !important;
    margin-bottom: 6px !important;
}
.wp-block-woocommerce-empty-cart-block .is-style-dots {
    max-width: 180px;
    margin: 18px auto 44px !important;
    opacity: .45;
}
.wp-block-woocommerce-empty-cart-block > h2:not(.wc-block-cart__empty-cart__title) {
    font-size: 24px !important;
    font-weight: 800 !important;
    letter-spacing: -0.02em;
    color: var(--gsy-ink) !important;
}
/* Cross-sell / block product grid (empty cart, etc.) */
.wc-block-grid__products {
    display: grid !important;
    grid-template-columns: repeat(auto-fit, minmax(250px, 320px)) !important;
    justify-content: center !important;
    gap: 28px !important;
    list-style: none !important;
    padding: 0 !important;
    margin: 0 !important;
}
/* Recommendation cards mirror the shop product-card shell.
   The <li> is a grid item; force it to fill its track (it defaults to
   display:list-item and shrinks to content width otherwise) and lay its
   children out as a flex column. */
.wc-block-grid__product {
    display: flex !important;
    flex-direction: column;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0;
    box-sizing: border-box !important;
    list-style: none !important;
    text-align: left !important;
    position: relative;
    border: 1px solid var(--gsy-line);
    border-radius: 16px;
    padding: 12px;
    background: #fff;
    box-shadow: 0 1px 2px rgba(22,18,39,.04);
    transition: box-shadow .18s ease, transform .18s ease, border-color .18s ease;
    margin: 0 !important;
}
.wc-block-grid__product::marker { content: none; }
.wc-block-grid__product:hover {
    box-shadow: 0 22px 44px rgba(91,66,245,.14);
    border-color: #d9d2fb;
    transform: translateY(-3px);
}
.wc-block-grid__product-link,
.wc-block-grid__product-image { display: block; text-decoration: none !important; }
/* Skeleton tint + shimmer on the image itself so the card keeps its square
   shape while the photo loads (or if it fails) — no layout shift, no broken
   alt-text flash. The opaque photo covers this once it paints. */
.wc-block-grid__product-image img,
.wc-block-grid__product .wc-block-grid__product-image img {
    border-radius: 10px !important;
    margin-bottom: 12px !important;
    width: 100%;
    aspect-ratio: 1 / 1;
    object-fit: cover;
    color: transparent;
    background-color: var(--gsy-tint);
    background-image: linear-gradient(100deg, rgba(255,255,255,0) 30%, rgba(255,255,255,.65) 50%, rgba(255,255,255,0) 70%);
    background-size: 220% 100%;
    background-repeat: no-repeat;
    animation: gsy-skeleton 1.4s ease-in-out infinite;
}
@keyframes gsy-skeleton {
    0%   { background-position: 180% 0; }
    100% { background-position: -80% 0; }
}
@media (prefers-reduced-motion: reduce) {
    .wc-block-grid__product-image img,
    .woocommerce ul.products li.product a img { animation: none; }
}
.wc-block-grid__product-title {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    font-size: 16px !important;
    font-weight: 600 !important;
    line-height: 1.35 !important;
    color: #14142b !important;
    text-decoration: none !important;
    padding: 0 2px 6px;
    margin: 0 !important;
}
.wc-block-grid__product-title:hover { color: var(--gsy-accent) !important; }
.wc-block-grid__product-price {
    display: block;
    color: #0f232f !important;
    font-weight: 600 !important;
    text-decoration: none !important;
    padding: 0 2px;
    margin: 0 0 2px !important;
}
.wc-block-grid__product-price .wc-block-grid__product-price__regular,
.wc-block-grid__product-price del {
    color: #9aa1ad !important;
    font-weight: 400 !important;
    margin-right: 6px;
    text-decoration: line-through !important;
}
.wc-block-grid__product-price ins { text-decoration: none !important; }
/* Sale badge tucked inside the image, top-right */
.wc-block-grid__product .wc-block-grid__product-onsale {
    position: absolute !important;
    top: 20px !important;
    right: 20px !important;
    left: auto !important;
    margin: 0 !important;
    z-index: 2;
}
/* Quiet, secondary Add-to-cart pill — must not out-shout the primary CTA above */
.wc-block-grid__product .wp-block-button__link,
.wc-block-grid__product .wc-block-grid__product-add-to-cart .button,
.wc-block-grid__product .add_to_cart_button {
    display: inline-block !important;
    width: auto !important;
    align-self: flex-start;
    white-space: nowrap !important;
    margin-top: 12px !important;
    padding: 9px 20px !important;
    background: var(--gsy-accent-soft) !important;
    color: var(--gsy-accent) !important;
    border: 1px solid transparent !important;
    border-radius: 10px !important;
    font-size: 14px !important;
    font-weight: 600 !important;
    box-shadow: none !important;
    transition: background .15s ease, color .15s ease;
}
.wc-block-grid__product .wp-block-button__link:hover,
.wc-block-grid__product .wc-block-grid__product-add-to-cart .button:hover,
.wc-block-grid__product .add_to_cart_button:hover {
    background: var(--gsy-accent) !important;
    color: #fff !important;
}
.wc-block-grid__product .wc-block-grid__product-add-to-cart { margin: 0 !important; }
.wc-block-grid__product .added_to_cart {
    display: inline-block;
    margin: 10px 0 0 10px;
    font-size: 14px;
    color: var(--gsy-accent) !important;
    font-weight: 600;
    text-decoration: none !important;
}

/* --- Shop landing header (front page) --- */
.woocommerce-products-header {
    text-align: center;
    max-width: 720px;
    margin: 8px auto 4px !important;
}
.woocommerce-products-header__title.page-title,
.woocommerce-products-header .page-title {
    font-size: clamp(2.1rem, 4.5vw, 3rem) !important;
    font-weight: 800 !important;
    letter-spacing: -0.03em !important;
    color: var(--gsy-ink) !important;
    margin-bottom: 6px !important;
}
.gsy-shop-sub {
    color: var(--gsy-muted);
    font-size: 16px;
    line-height: 1.55;
    margin: 4px auto 16px;
    max-width: 540px;
    text-align: center;
}
.gsy-shop-trust {
    display: flex;
    gap: 20px;
    flex-wrap: wrap;
    justify-content: center;
    margin: 0 auto 8px;
}
.gsy-shop-trust span {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    font-size: 13px;
    font-weight: 500;
    color: var(--gsy-muted);
}
.gsy-shop-trust svg { color: var(--gsy-accent); flex: 0 0 auto; }
/* result count + ordering row: give it breathing room under the centered header */
.woocommerce .woocommerce-result-count { margin-top: 26px; }
.woocommerce-shop .woocommerce > .woocommerce-notices-wrapper:first-child { display: none; }

/* --- Storefront landing header band (front-page) --- */
.gsy-shophead-band {
    background: linear-gradient(180deg, var(--gsy-tint) 0%, #ffffff 100%);
    border-bottom: 1px solid var(--gsy-line);
    padding: 52px 24px 44px !important;
}
.gsy-shophead { max-width: 720px; margin: 8px auto 30px; text-align: center; }
.gsy-shop-eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    font-size: 12px;
    font-weight: 700;
    color: var(--gsy-accent);
    background: #fff;
    border: 1px solid var(--gsy-line);
    box-shadow: 0 2px 8px rgba(91,66,245,.06);
    padding: 6px 14px;
    border-radius: 999px;
    margin-bottom: 16px;
}
.gsy-shop-eyebrow img { width: 20px; height: 20px; border-radius: 50%; object-fit: cover; }
.gsy-shop-title {
    font-size: clamp(2.1rem, 4.6vw, 3rem);
    font-weight: 800;
    letter-spacing: -0.03em;
    color: var(--gsy-ink);
    line-height: 1.06;
    margin: 0 0 12px;
}

/* Let the product grid use the full section width (defeat constrained max-width) */
.gsy-products-section > .woocommerce,
.gsy-products-section .woocommerce { max-width: none !important; width: 100%; }
.gsy-products-section { max-width: 1180px !important; margin-left: auto !important; margin-right: auto !important; }

/* ============================================================================
   BLOCK QUANTITY SELECTOR + REMOVE (mini-cart drawer & cart block)
   ========================================================================== */
.wc-block-components-quantity-selector {
    border: 1px solid var(--gsy-line) !important;
    border-radius: 10px !important;
    display: inline-flex !important;
    align-items: center;
    width: fit-content !important;
    max-width: none !important;
    background: #fff;
}
.wc-block-components-quantity-selector__button,
.wc-block-components-quantity-selector button {
    background: transparent !important;
    color: var(--gsy-ink) !important;
    border: none !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    flex: 0 0 auto !important;
    width: 36px !important;
    min-width: 36px !important;
    height: 38px !important;
    font-size: 18px !important;
    line-height: 1 !important;
    padding: 0 !important;
    opacity: 1 !important;
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
}
.wc-block-components-quantity-selector__button:disabled {
    opacity: .3 !important;
    cursor: default;
}
.wc-block-components-quantity-selector__button:hover:not(:disabled),
.wc-block-components-quantity-selector button:hover:not(:disabled) {
    background: var(--gsy-tint) !important;
    color: var(--gsy-accent) !important;
}
.wc-block-components-quantity-selector__input {
    background: #fff !important;
    border: 0 !important;
    border-left: 1px solid var(--gsy-line) !important;
    border-right: 1px solid var(--gsy-line) !important;
    border-radius: 0 !important;
    font-weight: 600 !important;
    color: var(--gsy-ink) !important;
    width: 42px !important;
    flex: 0 0 auto !important;
    text-align: center;
}
/* Remove item — subtle, not a solid purple block */
.wc-block-cart-item__remove-link,
button.wc-block-cart-item__remove-link,
.wc-block-mini-cart__item .wc-block-cart-item__remove-link {
    background: transparent !important;
    color: var(--gsy-muted) !important;
    border: none !important;
    box-shadow: none !important;
    text-decoration: underline;
    text-transform: none;
    font-size: 13px !important;
    font-weight: 500;
    padding: 0 !important;
    width: auto !important;
    height: auto !important;
    min-width: 0 !important;
}
.wc-block-cart-item__remove-link:hover { color: var(--gsy-accent) !important; }

/* Mini-cart drawer polish */
.wc-block-mini-cart__drawer .wc-block-components-drawer__content { padding-top: 8px; }
.wc-block-mini-cart__title, .wc-block-mini-cart__drawer h2 {
    font-weight: 800 !important;
    letter-spacing: -0.02em;
    color: var(--gsy-ink) !important;
}
.wc-block-mini-cart__items .wc-block-cart-items,
.wc-block-mini-cart__items { border: 1px solid var(--gsy-line); border-radius: 14px; padding: 4px 14px; }
.wc-block-mini-cart__footer .wc-block-components-totals-item__value { color: var(--gsy-ink); font-weight: 700; }
.wc-block-mini-cart__footer-actions .wc-block-mini-cart__footer-checkout { border-radius: 10px !important; }
.wc-block-cart-item__prices .wc-block-components-product-price__value.is-discounted,
.wc-block-components-sale-badge { color: var(--gsy-accent) !important; }

/* --- Product names in black (not purple links) --- */
.woocommerce ul.products li.product .woocommerce-loop-product__title,
.woocommerce ul.products li.product a .woocommerce-loop-product__title,
.woocommerce-page ul.products li.product .woocommerce-loop-product__title,
.wc-block-grid__product-title,
.wc-block-grid__product-title a,
.wc-block-cart-item__name,
.wc-block-cart-item__name a,
.wc-block-components-product-name,
a.wc-block-components-product-name,
.woocommerce-cart-form .product-name a,
.wc-block-cart-item__total-price-and-sale-badge-wrapper ~ * .wc-block-cart-item__name {
    color: var(--gsy-ink) !important;
}
.woocommerce ul.products li.product a:hover .woocommerce-loop-product__title,
.wc-block-cart-item__name a:hover,
a.wc-block-components-product-name:hover,
.wc-block-grid__product-title a:hover {
    color: var(--gsy-accent) !important;
}

/* Product Collection block (shop grid) titles -> black */
.wc-block-product-template .wp-block-post-title,
.wc-block-product-template .wp-block-post-title a,
.wp-block-woocommerce-product-collection .wp-block-post-title,
.wp-block-woocommerce-product-collection .wp-block-post-title a,
.wc-block-grid__product .wp-block-post-title a {
    color: var(--gsy-ink) !important;
    text-decoration: none !important;
    font-weight: 600 !important;
}
.wc-block-product-template .wp-block-post-title a:hover,
.wp-block-woocommerce-product-collection .wp-block-post-title a:hover {
    color: var(--gsy-accent) !important;
}

/* ============================================================================
   SHARED CONTENT CONTAINER (layout alignment)
   Every top-level storefront section (Shop toolbar, product grid, travel widget)
   must share one width + left/right edges. The sections themselves set
   width: min(--gsy-cw, 100% - 2*--gsy-gutter) + margin-inline:auto; here we
   strip the parent theme's root padding and the alignwide/query/collection
   wrappers so each section measures 100% from the viewport identically.
   ========================================================================== */
.woocommerce-shop main.has-global-padding,
.post-type-archive-product main.has-global-padding {
    padding-left: 0 !important;
    padding-right: 0 !important;
}
.woocommerce-shop .wp-block-query,
.woocommerce-shop .wp-block-woocommerce-product-collection,
.post-type-archive-product .wp-block-query,
.post-type-archive-product .wp-block-woocommerce-product-collection {
    max-width: none !important;
    width: 100% !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
}
/* Header shares the SAME container so the creator logo (left) and nav (right)
   sit on the exact same vertical lines as every section below it. Strip the
   header's root padding so it measures 100% from the viewport like the rest. */
/* Covers both the full site header and WooCommerce's minimal checkout header. */
header .has-global-padding,
.gsy-site-header > .wp-block-group {
    padding-left: 0 !important;
    padding-right: 0 !important;
}
header .wp-block-group.alignwide:has(.gsy-header-banner),
.gsy-site-header .wp-block-group.alignwide {
    width: min(var(--gsy-cw), 100% - 2 * var(--gsy-gutter)) !important;
    max-width: none !important;
    margin-inline: auto !important;
    box-sizing: border-box;
}

/* ============================================================================
   ALL PAGES — extend the shared container to single-product + archive pages
   (shop/cart/checkout handled above; grid + travel + trust band already share it)
   ========================================================================== */
body.woocommerce main.has-global-padding,
.single-product main.has-global-padding,
.tax-product_cat main.has-global-padding,
.tax-product_tag main.has-global-padding { padding-left: 0 !important; padding-right: 0 !important; }

body.woocommerce .woocommerce-breadcrumb,
.single-product div.entry-content,
.single-product .product.type-product,
.tax-product_cat .wp-block-query-title,
.tax-product_cat .term-description,
.tax-product_tag .wp-block-query-title,
.post-type-archive-product .wp-block-query-title {
    width: min(var(--gsy-cw), 100% - 2 * var(--gsy-gutter)) !important;
    max-width: none !important;
    margin-inline: auto !important;
    box-sizing: border-box;
}
/* product content already inside a constrained entry-content should fill it */
.single-product div.entry-content > .product.type-product { width: 100% !important; margin-inline: 0 !important; }

/* Single-product block layout: the gallery+summary row, the tabs and the
   related-products block default to the theme's wider `alignwide` size (~1340px).
   Pull them onto the SAME 1240px shared container the shop page uses so every
   page lines up on the exact same left/right edges. */
.single-product main .wp-block-columns.alignwide,
.single-product main .wp-block-woocommerce-product-details,
.single-product main .wp-block-woocommerce-product-collection {
    width: min(var(--gsy-cw), 100% - 2 * var(--gsy-gutter)) !important;
    max-width: none !important;
    margin-inline: auto !important;
    box-sizing: border-box;
}
/* tabs live inside product-details (already constrained) — just fill it */
.single-product main .wp-block-woocommerce-product-details .woocommerce-tabs { width: 100% !important; max-width: none !important; margin-inline: 0 !important; }

/* ============================================================================
   RELATED PRODUCTS (single product) — prominent heading + tidy fixed-width card
   grid. The default is-flex-container/columns-5 shrank a lone related item to
   ~189px and floated it under a tiny 14px heading; this makes it read as a real
   section with shop-sized cards, however few products exist.
   ========================================================================== */
.single-product main .wp-block-woocommerce-product-collection { margin-top: 20px; padding-top: 28px; border-top: 1px solid var(--gsy-line); }
.single-product main .wp-block-woocommerce-product-collection > h2.wp-block-heading,
.single-product main .wp-block-woocommerce-product-collection h2.wp-block-heading {
    font-size: 24px !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
    letter-spacing: -0.015em !important;
    color: var(--gsy-ink) !important;
    text-align: left !important;
    margin: 0 0 20px !important;
}
/* fixed-width auto-fill grid so cards stay a comfortable size (never stretch to
   fill the row when only 1–2 related products exist) and wrap left-aligned */
.single-product main .wp-block-woocommerce-product-collection .wc-block-product-template {
    display: grid !important;
    grid-template-columns: repeat(auto-fill, minmax(232px, 264px)) !important;
    justify-content: start !important;
    align-items: stretch !important;
    gap: 24px !important;
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
}
.single-product main .wp-block-woocommerce-product-collection .wc-block-product-template > li.product,
.single-product main .wp-block-woocommerce-product-collection .wc-block-product-template > .wc-block-product {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    height: 100% !important;
    justify-self: stretch !important;
}

/* ============================================================================
   CART / CHECKOUT — sync layout + typography with the shop page
   ========================================================================== */
/* measure from the viewport like the shop sections */
.woocommerce-cart main.has-global-padding,
.woocommerce-checkout main.has-global-padding {
    padding-left: 0 !important;
    padding-right: 0 !important;
}
/* page title + cart/checkout blocks share the one container */
.woocommerce-cart .wp-block-post-title,
.woocommerce-cart .wp-block-query-title,
.woocommerce-cart .wp-block-woocommerce-cart,
.woocommerce-checkout .wp-block-post-title,
.woocommerce-checkout .wp-block-query-title,
.woocommerce-checkout .wp-block-woocommerce-checkout {
    width: min(var(--gsy-cw), 100% - 2 * var(--gsy-gutter)) !important;
    max-width: none !important;
    margin-inline: auto !important;
    box-sizing: border-box;
}
/* "Cart" / "Checkout" title matches the shop "Shop" heading exactly */
.woocommerce-cart .wp-block-post-title,
.woocommerce-cart .wp-block-query-title,
.woocommerce-checkout .wp-block-post-title,
.woocommerce-checkout .wp-block-query-title {
    font-size: clamp(1.4rem, 3vw, 1.75rem) !important;
    font-weight: 800 !important;
    letter-spacing: -0.02em !important;
    line-height: 1.2 !important;
    color: var(--gsy-ink) !important;
    margin: 8px auto 24px !important;
}
/* Typography: replace the oversized thin base (was 22px / weight 300) with the
   shop's body scale so cart text no longer reads as weird. */
.wp-block-woocommerce-cart,
.wc-block-cart,
.wp-block-woocommerce-checkout,
.wc-block-checkout {
    font-size: 16px !important;
    font-weight: 400 !important;
    line-height: 1.5 !important;
    color: var(--gsy-ink);
}
.wc-block-components-product-name {
    font-size: 16px !important;
    font-weight: 600 !important;
    color: var(--gsy-ink) !important;
}
.wc-block-cart-item__prices,
.wc-block-components-product-price,
.wc-block-components-formatted-money-amount {
    font-size: 15px !important;
    font-weight: 500 !important;
}
.wc-block-components-totals-item__label { font-size: 15px !important; font-weight: 500 !important; }
.wc-block-components-totals-item__value { font-size: 15px !important; }
/* keep the grand total a touch stronger for hierarchy */
.wc-block-components-totals-footer-item .wc-block-components-totals-item__label,
.wc-block-components-totals-footer-item .wc-block-components-totals-item__value {
    font-size: 16px !important;
    font-weight: 700 !important;
    color: var(--gsy-ink) !important;
}

/* ============================================================================
   SHOP / HOME PRODUCT COLLECTION GRID
   Left-aligned auto-fill grid: cards begin under the Shop title and fill the
   shared container from the left, with equal gaps.
   ========================================================================== */
.wc-block-product-template.columns-1,
.wc-block-product-template.columns-2,
.wc-block-product-template.columns-3,
.wc-block-product-template.columns-4,
.wc-block-product-template.columns-5,
.wc-block-product-template.columns-6,
.wc-block-product-template {
    display: grid !important;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)) !important;
    justify-content: start !important;
    gap: 28px !important;
    /* shared content container */
    width: min(var(--gsy-cw), 100% - 2 * var(--gsy-gutter)) !important;
    max-width: none !important;
    margin-inline: auto !important;
    box-sizing: border-box;
}
/* Card as a tidy bordered shell (mirrors the shop li.product / rec cards).
   width:100% + justify-self:stretch forces each grid item to fill its track —
   the is-flex-container template variant (used by related products) otherwise
   gives the <li> a small intrinsic width and it collapses. */
.wc-block-product-template > li.product,
.wc-block-product-template > .wc-block-product {
    display: flex !important;
    flex-direction: column;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0;
    justify-self: stretch;
    box-sizing: border-box !important;
    text-align: left !important;
    border: 1px solid var(--gsy-line);
    border-radius: 16px;
    padding: 12px;
    background: #fff;
    box-shadow: 0 1px 2px rgba(22,18,39,.04);
    transition: box-shadow .18s ease, transform .18s ease, border-color .18s ease;
    margin: 0 !important;
}
.wc-block-product-template > li.product:hover,
.wc-block-product-template > .wc-block-product:hover {
    box-shadow: 0 22px 44px rgba(91,66,245,.14);
    border-color: #d9d2fb;
    transform: translateY(-3px);
}
/* Left-align every element inside the card, kill the block-centred defaults */
.wc-block-product-template .wp-block-post-title,
.wc-block-product-template .wp-block-woocommerce-product-price,
.wc-block-product-template .wc-block-components-product-price,
.wc-block-product-template .wp-block-woocommerce-product-button {
    text-align: left !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
}
.wc-block-product-template .wp-block-post-title {
    font-size: 16px !important;
    line-height: 1.35 !important;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    min-height: 2.7em;
    margin-bottom: 4px !important;
}
.wc-block-product-template .wp-block-woocommerce-product-price,
.wc-block-product-template .wc-block-components-product-price {
    font-weight: 600 !important;
    color: #0f232f !important;
}
/* Add-to-cart: left-aligned, comfortable, not a full-width centred slab */
.wc-block-product-template .wp-block-woocommerce-product-button {
    display: flex !important;
    justify-content: flex-start !important;
    margin-top: 12px !important;
}
.wc-block-product-template .wp-block-woocommerce-product-button .wp-block-button__link {
    width: auto !important;
    white-space: nowrap;
}
/* Product image fills the card top with a consistent square crop */
.wc-block-product-template .wc-block-components-product-image,
.wc-block-product-template .wp-block-woocommerce-product-image {
    margin-bottom: 12px !important;
}
.wc-block-product-template .wc-block-components-product-image img,
.wc-block-product-template .wp-block-woocommerce-product-image img {
    border-radius: 10px !important;
    aspect-ratio: 1 / 1;
    object-fit: cover;
    width: 100%;
    color: transparent;
    background-color: var(--gsy-tint);
    background-image: linear-gradient(100deg, rgba(255,255,255,0) 30%, rgba(255,255,255,.65) 50%, rgba(255,255,255,0) 70%);
    background-size: 220% 100%;
    background-repeat: no-repeat;
    animation: gsy-skeleton 1.4s ease-in-out infinite;
}

/* Storefront toolbar: keep the native [count] <-> [sort] space-between row, but
   swap the "Showing all N results" text (it advertises a thin catalog) for a
   neutral label, and anchor the row + a hairline divider to the grid width. */
.woocommerce-shop .woocommerce-result-count,
.post-type-archive-product .woocommerce-result-count {
    margin: 0 !important;
    font-size: 0 !important;
}
.woocommerce-shop .woocommerce-result-count::before,
.post-type-archive-product .woocommerce-result-count::before {
    content: "Shop";
    font-size: clamp(1.4rem, 3vw, 1.75rem);
    font-weight: 800;
    letter-spacing: -0.02em;
    text-transform: none;
    color: var(--gsy-ink);
}
.woocommerce-shop .woocommerce-ordering,
.post-type-archive-product .woocommerce-ordering { float: none !important; margin: 0 !important; }
/* The block template wraps count + sort in a space-between flex group; align it
   to the grid and give it a hairline divider so it reads as a real toolbar. */
.woocommerce-shop .wp-block-group.is-content-justification-space-between:has(> .wp-block-woocommerce-catalog-sorting),
.post-type-archive-product .wp-block-group.is-content-justification-space-between:has(> .wp-block-woocommerce-catalog-sorting) {
    /* shared content container */
    width: min(var(--gsy-cw), 100% - 2 * var(--gsy-gutter)) !important;
    max-width: none !important;
    margin: 32px auto 24px !important;
    padding-bottom: 16px;
    border-bottom: 1px solid var(--gsy-line);
    align-items: center;
    box-sizing: border-box;
}

/* Remove the black focus outline on the travel widget tabs/fields/buttons */
.gsy-tw button:focus,
.gsy-tw button:focus-visible,
.gsy-tw-tab:focus,
.gsy-tw-tab:focus-visible,
.gsy-tw-field:focus,
.gsy-tw-field:focus-visible,
.gsy-tw-triptype button:focus,
.gsy-tw .search-stays-cta:focus,
.gsy-tw .search-stays-cta:focus-visible {
    outline: none !important;
    box-shadow: none !important;
}

/* Robust cross-sell / block product grid (empty cart etc.) — beat has-N-columns */
.wc-block-grid.has-1-columns .wc-block-grid__products,
.wc-block-grid.has-2-columns .wc-block-grid__products,
.wc-block-grid.has-3-columns .wc-block-grid__products,
.wc-block-grid.has-4-columns .wc-block-grid__products,
.wc-block-grid.has-5-columns .wc-block-grid__products,
.wc-block-grid.has-6-columns .wc-block-grid__products,
.wp-block-woocommerce-empty-cart-block .wc-block-grid__products {
    display: grid !important;
    /* fixed-width tracks so 2 items stay a tidy centered pair, not stretched */
    grid-template-columns: repeat(auto-fit, minmax(220px, 260px)) !important;
    justify-content: center !important;
    gap: 24px !important;
    max-width: 900px;
    margin: 0 auto !important;
    padding: 0 !important;
}

/* Neutralize any stray wpautop <br> injected directly into the footer group */
.gsy-site-footer > br { display: none !important; }

/* Creator banner is a link to the creator's GetSetYo profile */
a.gsy-banner-link { text-decoration: none !important; color: inherit !important; cursor: pointer; }
a.gsy-banner-link:hover { opacity: .88; }
a.gsy-banner-link .article-author-name { color: #0f232f !important; }

/* No black focus outline on the clickable creator banner */
a.gsy-banner-link:focus,
a.gsy-banner-link:focus-visible,
a.gsy-banner-link:active { outline: none !important; box-shadow: none !important; }

/* wpautop wraps footer link lists in a <p> — restack them, kill stray spacing */
.gsy-footer-links > p,
.gsy-footer-links p {
    margin: 0 !important;
    padding: 0 !important;
    display: flex !important;
    flex-direction: column;
    gap: 12px;
    align-items: flex-start;
}
.gsy-trust-marker-footer p:empty,
.gsy-site-footer p:empty,
.gsy-footer p:empty { display: none !important; margin: 0 !important; }
/* no extra gap under the dark footer */
.gsy-site-footer { margin-bottom: 0 !important; padding-bottom: 0 !important; }
.gsy-trust-marker-footer .gsy-footer { margin-bottom: 0 !important; }

/* ============================================================================
   PREMIUM EMPTY CART (branded badge + message + CTA + recommendations)
   ========================================================================== */
.wp-block-woocommerce-empty-cart-block { text-align: center; padding: 20px 16px 8px; }
.wc-block-cart__empty-cart__title.with-empty-cart-icon::before {
    content: "";
    display: block;
    width: 92px !important;
    height: 92px !important;
    margin: 8px auto 22px !important;
    border-radius: 50% !important;
    background-color: var(--gsy-accent-soft) !important;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235b42f5' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 2 3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4z'/%3E%3Cpath d='M3 6h18'/%3E%3Cpath d='M16 10a4 4 0 0 1-8 0'/%3E%3C/svg%3E") !important;
    background-repeat: no-repeat !important;
    background-position: center !important;
    background-size: 42px 42px !important;
    opacity: 1 !important;
    -webkit-mask: none !important;
    mask: none !important;
}
.wc-block-cart__empty-cart__title {
    font-size: 24px !important;
    font-weight: 800 !important;
    letter-spacing: -0.02em;
    color: var(--gsy-ink) !important;
    margin: 0 0 8px !important;
}
.gsy-empty-sub {
    color: var(--gsy-muted);
    font-size: 16px;
    line-height: 1.55;
    max-width: 380px;
    margin: 0 auto 24px;
}
.gsy-empty-cta {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: var(--gsy-accent);
    color: #fff !important;
    font-weight: 600;
    font-size: 15px;
    padding: 13px 28px;
    border-radius: 12px;
    text-decoration: none;
    box-shadow: 0 10px 24px rgba(91,66,245,.26);
    transition: transform .15s ease, box-shadow .15s ease;
}
.gsy-empty-cta:hover { transform: translateY(-1px); box-shadow: 0 14px 30px rgba(91,66,245,.34); color: #fff !important; }
.wp-block-woocommerce-empty-cart-block > h2:not(.wc-block-cart__empty-cart__title) {
    font-size: 20px !important;
    font-weight: 800 !important;
    letter-spacing: -0.02em;
    color: var(--gsy-ink) !important;
    margin: 52px 0 28px !important;
    padding-top: 44px;
    border-top: 1px solid var(--gsy-line);
    max-width: 900px;
    margin-left: auto !important;
    margin-right: auto !important;
}


/* ============================================================================
   ADVISOR PROFILE CAROUSELS (Itineraries / Hotels / Activities)
   Horizontal, scrollable carousels — verbatim look of getsetyo.com
   RelevanceAdvisor (ItinerariesCarousel / StayCarousel / ActivitiesCarousel).
   Scoped to .gsy-adv-root.
   ========================================================================== */
.gsy-adv-root { background: #f6f8fb; padding: 28px 0 40px; }
.gsy-adv-root * { box-sizing: border-box; }
.gsy-adv-container { width: min(var(--gsy-cw), 100% - 2 * var(--gsy-gutter)); margin-inline: auto; display: flex; flex-direction: column; gap: 24px; }

/* carousel shell: a white rounded panel (matches .destination-*-carousel) */
.gsy-adv-carousel { display: flex; flex-direction: column; gap: 16px; min-width: 0; padding: 24px 12px 24px 24px; border-radius: 16px; border: 1px solid #eaecf5; background: #fff; box-shadow: 0 1px 4px rgba(25,33,61,.08); }
.gsy-adv-carousel-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.gsy-adv-title { margin: 0; color: #0f232f; font-size: 20px; font-weight: 600; line-height: 24px; letter-spacing: -0.112px; }
.gsy-adv-root .navigation-buttons { display: flex; flex-direction: row; justify-content: flex-end; gap: 12px; align-items: center; }
.gsy-adv-root .navigation-buttons .button-container { -webkit-appearance: none; appearance: none; display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; padding: 6px; border-radius: 50%; border: 1px solid #5b42f5; background: #fff; background-image: none; box-shadow: none; cursor: pointer; line-height: 0; }
.gsy-adv-root .navigation-buttons .button-container:hover { background: #f4f2ff; }
.gsy-adv-root .navigation-buttons .button-container:focus-visible { outline: 2px solid #5b42f5; outline-offset: 2px; }
.gsy-adv-root .ask-for-a-custom-plan { border-radius: 8px; border: 1px solid #5b42f5; background: #fff; box-shadow: 0 1px 4px rgba(25,33,61,.08); color: #5b42f5; font-size: 14px; font-weight: 500; line-height: 20px; letter-spacing: -.042px; padding: 10px 18px; text-decoration: none; white-space: nowrap; }

.gsy-adv-scroll { display: flex; flex-direction: row; gap: 12px; overflow-x: auto; overflow-y: hidden; align-items: flex-start; padding-bottom: 8px; scrollbar-width: none; scroll-snap-type: x proximity; -webkit-overflow-scrolling: touch; }
.gsy-adv-scroll::-webkit-scrollbar { display: none; }

/* shared card bits */
.gsy-adv-card { position: relative; scroll-snap-align: start; text-decoration: none; color: inherit; }
.gsy-adv-stretch { position: absolute; inset: 0; z-index: 1; border-radius: inherit; }
.gsy-adv-root .my-recommended, .gsy-adv-root .go-to-video { position: absolute; top: 12px; left: 12px; z-index: 3; pointer-events: none; border-radius: 50px; border: 1px solid #fef3c7; background: #fffbeb; padding: 4px 12px; display: flex; align-items: center; gap: 4px; }
.gsy-adv-root .my-recommended > img { height: 18px; width: 18px; border-radius: 50%; object-fit: cover; }
.gsy-adv-root .my-recommended > span { color: #0f232f; font-size: 14px; font-weight: 400; line-height: 20px; }
.gsy-adv-root .go-to-video > span { color: #0f172a; font-size: 14px; font-weight: 500; line-height: 20px; text-decoration: underline; }
.gsy-adv-root .go-to-video .gsy-adv-diag { flex: 0 0 auto; display: block; width: 18px; height: 18px; }

/* proposition strip ("See in my video") */
.gsy-adv-root .proposition-cont { position: relative; z-index: 2; pointer-events: none; display: flex; align-items: center; justify-content: space-between; gap: 6px; border: 1px solid #ebecef; background: #f3faf8; padding: 8px 12px; }
.gsy-adv-root .proposition-cont > div { display: flex; align-items: center; gap: 6px; min-width: 0; }
.gsy-adv-root .proposition-cont img { height: 18px; width: 18px; border-radius: 50%; object-fit: cover; flex: 0 0 auto; }
.gsy-adv-root .gsy-adv-see-video { pointer-events: auto; color: #0f232f; font-size: 12px; font-weight: 400; line-height: 16px; text-decoration: underline; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* itinerary card (272px) */
.gsy-adv-root .itinerary-search-results-card { min-width: 272px; width: 272px; padding-bottom: 16px; border-radius: 8px; background: #fff; overflow: hidden; border: 1px solid #e3e6eb; box-shadow: 0 4px 15px rgba(185,186,195,.15); }
.gsy-adv-root .itinerary-search-results-card > img { height: 190px; width: 100%; object-fit: cover; display: block; }
.gsy-adv-root .itinerary-search-results-card .card-content h3 { color: #0f232f; font-size: 14px; font-weight: 600; line-height: 20px; letter-spacing: -.042px; margin: 8px 12px 6px; display: -webkit-box; overflow: hidden; -webkit-line-clamp: 2; -webkit-box-orient: vertical; min-height: 40px; }
.gsy-adv-root .itinerary-search-results-card .pricing > p { display: flex; gap: 4px; align-items: baseline; margin: 0 12px; color: #757c8d; font-size: 10px; font-weight: 400; letter-spacing: -.05px; min-height: 16px; }
.gsy-adv-root .itinerary-search-results-card .pricing > p span { color: #0f232f; font-size: 16px; font-weight: 600; }

/* stay / hotel card (256px) */
.gsy-adv-root .stay-carousel-card { min-width: 256px; width: 256px; display: flex; flex-direction: column; border-radius: 16px; border: 1px solid #e3e6eb; background: #fff; box-shadow: 0 4px 15px rgba(185,186,195,.08); overflow: hidden; }
.gsy-adv-root .stay-carousel-card .main-image { position: relative; }
.gsy-adv-root .stay-carousel-card .main-image img { height: 190px; width: 100%; object-fit: cover; display: block; }
.gsy-adv-root .stay-carousel-card .proposition-cont { position: absolute; bottom: 0; left: 0; right: 0; }
.gsy-adv-root .stay-carousel-card .stay-info { padding: 16px; display: flex; flex-direction: column; justify-content: space-between; flex: 1; gap: 12px; }
.gsy-adv-root .stay-heading { display: flex; gap: 12px; align-items: flex-start; justify-content: space-between; }
.gsy-adv-root .stay-name { flex: 1 1 auto; color: #1c2051; font-size: 16px; font-weight: 700; line-height: 24px; display: -webkit-box; overflow: hidden; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.gsy-adv-root .stay-rating { flex: 0 0 auto; display: flex; gap: 2px; align-items: center; padding: 4px 8px; color: #0f232f; font-size: 12px; font-weight: 700; line-height: 12px; border-radius: 16px; border: 1px solid #fef3c7; background: #fffbeb; }
.gsy-adv-root .stay-rating .gsy-adv-star { color: #f8a13b; }
.gsy-adv-root .stay-subheading { color: #0f232f; font-size: 14px; font-weight: 500; line-height: 20px; margin-top: 4px; }
.gsy-adv-root .stay-price-section { display: flex; gap: 12px; align-items: center; }
.gsy-adv-root .stay-price { color: #000; font-size: 16px; font-weight: 700; line-height: 20px; }
.gsy-adv-root .stay-price-strike-through { color: #000; font-size: 14px; font-weight: 400; line-height: 20px; text-decoration: line-through; }

/* activity card (233x338, gradient overlay) */
.gsy-adv-root .activity-search-results-card { min-width: 233px; width: 233px; height: 338px; border-radius: 12px; box-shadow: 0 4px 15px rgba(185,186,195,.08); overflow: hidden; }
.gsy-adv-root .activity-search-results-card > img { height: 100%; width: 100%; object-fit: cover; display: block; }
.gsy-adv-root .activity-search-results-card .content { position: absolute; inset: 0; z-index: 2; pointer-events: none; border: 1px solid #e3e6eb; border-radius: 12px; background: linear-gradient(180deg, rgba(58,58,64,0) 57.22%, rgba(40,40,43,.42) 72.03%, #3a3a40 95.1%); display: flex; flex-direction: column; justify-content: flex-end; padding: 16px 12px; }
.gsy-adv-root .activity-search-results-card .card-content { border: none; }
.gsy-adv-root .activity-search-results-card .card-content h4 { color: #fff; font-size: 11px; font-weight: 300; line-height: 16px; text-transform: uppercase; margin: 0 0 2px; }
.gsy-adv-root .activity-search-results-card .card-content h3 { color: #fff; font-size: 14px; font-weight: 600; line-height: 20px; letter-spacing: -.042px; margin: 0; display: -webkit-box; overflow: hidden; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.gsy-adv-root .activity-search-results-card .card-content h5 { color: #fff; font-size: 14px; font-weight: 300; line-height: 20px; margin: 2px 0 0; display: -webkit-box; overflow: hidden; -webkit-line-clamp: 1; -webkit-box-orient: vertical; }
.gsy-adv-root .activity-search-results-card .pricing { margin-top: 8px; }
.gsy-adv-root .activity-search-results-card .pricing > p { margin: 0; color: #fff; font-size: 11px; font-weight: 400; display: flex; gap: 4px; align-items: baseline; }
.gsy-adv-root .activity-search-results-card .pricing > p span { color: #fff; font-size: 16px; font-weight: 600; }
.gsy-adv-root .activity-card-footer { margin-top: 8px; padding-top: 8px; border-top: 1px solid rgba(226,232,240,.4); }
.gsy-adv-root .activity-card-footer .gsy-adv-details { color: #fff; font-size: 14px; font-weight: 600; line-height: 18px; display: inline-flex; align-items: center; gap: 6px; }

/* activities "Plan your trip" static card (first tile) */
.gsy-adv-root .static-card { min-width: 233px; width: 233px; height: 338px; display: flex; flex-direction: column; align-items: flex-start; scroll-snap-align: start; }
.gsy-adv-root .static-card > img { width: 64px; height: 64px; }
.gsy-adv-root .static-card h3 { color: #212735; font-size: 20px; font-weight: 600; line-height: 26px; margin: 16px 0 0; }
.gsy-adv-root .static-card p { color: #7f8a89; font-size: 16px; font-weight: 300; line-height: normal; margin: 8px 0 0; }
.gsy-adv-root .static-card .static-plan-btn { margin-top: 32px; border-radius: 6px; background: #5b42f5; color: #fff; font-size: 16px; font-weight: 600; line-height: 23px; letter-spacing: -0.112px; padding: 14px 40px; text-decoration: none; }
.gsy-adv-root .static-card .static-plan-btn:hover { background: #4a35e0; }

@media (max-width: 667px) {
    .gsy-adv-root { padding: 0 0 24px; }
    .gsy-adv-container { gap: 8px; }
    .gsy-adv-carousel { padding: 16px; border-radius: 0; border: none; box-shadow: none; }
    .gsy-adv-root .navigation-buttons .button-container { display: none; }
    .gsy-adv-carousel-head { flex-wrap: wrap; row-gap: 10px; }
    .gsy-adv-carousel-head .navigation-buttons { flex: 1 0 100%; justify-content: flex-start; }
    .gsy-adv-root .ask-for-a-custom-plan { padding: 8px 14px; font-size: 13px; }
    .gsy-adv-title { font-size: 16px; }
}

/* ============================================================================
   TRAVEL-PLANNING RIGHT-RAIL WIDGET (single product page)
   Verbatim look of getsetyo.com RelevancePageComponent sidebar
   (map-and-creator-services-widget + CreatorService + InquiryTouchPointWidget).
   ========================================================================== */
.gsy-planning-sidebar { display: flex; flex-direction: column; gap: 24px; margin-top: 24px; width: 100%; max-width: 420px; margin-left: auto; }
.gsy-planning-sidebar * { box-sizing: border-box; }

/* card 1 — white panel */
.gsy-cs-widget { padding: 16px; border-radius: 16px; background: #fff; box-shadow: 0 4px 15px rgba(185,186,195,.15); }

/* "Why book from my travel store?" gradient box */
.gsy-cs-widget .unlock-discount-coupon { padding: 12px; border-radius: 12px; background: linear-gradient(90deg, #f9ecfd 0%, #fff 50%, #f9ecfd 100%); position: relative; }
.gsy-cs-widget .unlock-discount-coupon h3 { color: #0f232f; font-size: 16px; font-weight: 600; letter-spacing: -0.112px; margin: 0; display: flex; align-items: center; gap: 6px; }
.gsy-cs-widget .unlock-discount-coupon ul { list-style: none; padding: 4px 0 0; margin: 0; }
.gsy-cs-widget .unlock-discount-coupon ul li { display: flex; align-items: flex-start; font-size: 12px; line-height: 1.5; color: #0f232f; }
.gsy-cs-widget .unlock-discount-coupon ul li + li { margin-top: 2px; }
.gsy-cs-widget .unlock-discount-coupon ul li .check-emoji { display: inline-flex; margin-right: 6px; flex: 0 0 auto; line-height: 1; }

/* "Start your Travel Planning" */
.gsy-cs-widget .helper-copy { margin-top: 24px; display: flex; align-items: center; gap: 8px; }
.gsy-cs-widget .helper-copy > img { height: 40px; width: 40px; border-radius: 50%; object-fit: cover; flex: 0 0 auto; }
.gsy-cs-widget .helper-copy h3 { color: #0f232f; font-size: 16px; font-weight: 600; line-height: 20px; letter-spacing: -0.112px; margin: 0; }
.gsy-cs-widget .helper-copy .hc-sub { color: #212529; font-size: 12px; margin-top: 2px; }

/* creator-service rows */
.gsy-cs-widget .creator-services-cont { margin-top: 16px; }
.gsy-cs-widget .creator-service { display: grid; grid-template-columns: auto 60px; align-items: center; justify-content: space-between; gap: 10px; padding: 14px 10px; color: #212735; background: #fff; border-bottom: 1px solid #ebecef; text-decoration: none; }
.gsy-cs-widget .creator-service:hover { background: #faf9ff; }
.gsy-cs-widget .creator-service.last-card { border-bottom: none; padding-bottom: 0; }
.gsy-cs-widget .creator-service > div:first-child { display: flex; gap: 15px; justify-content: flex-start; align-items: center; }
.gsy-cs-widget .creator-service .icon img { height: 24px; width: 24px; }
.gsy-cs-widget .creator-service h4 { font-size: 14px; margin: 0; font-weight: 500; color: #212735; }
.gsy-cs-widget .creator-service p { font-size: 12px; color: #7f8a89; margin: 0; font-weight: 300; }
.gsy-cs-widget .creator-service .pricing { display: flex; align-items: center; gap: 5px; justify-content: flex-end; color: #5b42f5; font-size: 14px; font-weight: 600; line-height: 18px; }

/* card 2 — "Planning a trip? Ask us for help" */
.gsy-planning-sidebar .inquiry-touch-point-widget { border-radius: 12px; border: 1px solid #ebecef; background: #fff; box-shadow: 0 4px 15px rgba(185,186,195,.15); padding: 16px; width: 100%; height: fit-content; }
.gsy-planning-sidebar .inquiry-touch-point-widget .component-copy { color: #0f232f; font-size: 16px; font-weight: 600; letter-spacing: -0.112px; margin: 0; }
.gsy-planning-sidebar .inquiry-touch-point-widget .get-a-callback-cta { border-radius: 8px; border: 1px solid #ebecef; background: #0f232f; height: 40px; width: 100%; color: #fff; font-size: 14px; font-weight: 500; line-height: 18px; display: flex; align-items: center; justify-content: center; gap: 8px; margin-top: 24px; text-decoration: none; }
.gsy-planning-sidebar .inquiry-touch-point-widget .whatsapp-cta { border-radius: 8px; border: 1px solid #0f232f; background: #fff; height: 40px; width: 100%; color: #0f232f; font-size: 14px; font-weight: 500; line-height: 18px; display: flex; align-items: center; justify-content: center; gap: 8px; margin-top: 8px; text-decoration: none; }
.gsy-planning-sidebar .inquiry-touch-point-widget .get-a-callback-cta:hover { background: #1c3242; }
.gsy-planning-sidebar .inquiry-touch-point-widget .whatsapp-cta:hover { background: #f7f7fa; }

/* mobile: widget goes full-width when the product columns stack */
@media (max-width: 781px) {
  .gsy-planning-sidebar { max-width: none; margin-left: 0; }
}

/* ============================================================================
   INQUIRY MODAL ("Add your details" → /send-service-request/v1 → success)
   Ported from getsetyo ContextGathering / InquiryFlowController.
   ========================================================================== */
.gsy-inq-overlay { position: fixed; inset: 0; z-index: 100000; background: rgba(0,0,0,.6); display: flex; align-items: center; justify-content: center; padding: 16px; }
.gsy-inq-overlay[hidden] { display: none; }
.gsy-inq-overlay * { box-sizing: border-box; }
.gsy-inq-dialog { background: #fff; border-radius: 12px; width: 100%; max-width: 460px; max-height: 92vh; overflow-y: auto; box-shadow: 0 20px 60px rgba(15,35,47,.35); }
.gsy-inq-dialog::-webkit-scrollbar { width: 8px; }
.gsy-inq-dialog::-webkit-scrollbar-thumb { background: #e3e6eb; border-radius: 8px; }

.gsy-inq-form { padding: 28px 28px 24px; }
.gsy-inq-topbar { display: flex; align-items: center; gap: 16px; margin-bottom: 24px; }
.gsy-inq-topbar .gsy-inq-close { border-radius: 8px; border: 1px solid #e9eef2; background: #fff; width: 32px; height: 32px; display: grid; place-items: center; cursor: pointer; padding: 0; }
.gsy-inq-topbar h3 { color: #0f232f; font-size: 20px; font-weight: 600; line-height: 26px; letter-spacing: -0.1px; margin: 0; }

.gsy-inq-svccard { display: flex; align-items: center; gap: 12px; padding: 12px; border: 1px solid #ebecef; border-radius: 12px; background: linear-gradient(94deg, #f5f4ff 0%, #fffeee 85.83%); margin-bottom: 4px; }
.gsy-inq-svccard[hidden] { display: none; }
.gsy-inq-svccard .ic { width: 36px; height: 36px; display: grid; place-items: center; flex: 0 0 auto; }
.gsy-inq-svccard .ic img { width: 26px; height: 26px; }
.gsy-inq-svccard h4 { margin: 0; font-size: 14px; font-weight: 600; color: #212735; }
.gsy-inq-svccard p { margin: 2px 0 0; font-size: 12px; font-weight: 300; color: #757c8d; }

.gsy-inq-fields { margin-top: 24px; display: flex; flex-direction: column; gap: 22px; }
.gsy-inq-field { display: flex; flex-direction: column; gap: 10px; }
.gsy-inq-fields .cap { color: #6d7486; font-size: 10px; font-weight: 500; line-height: 12px; letter-spacing: 0.2px; text-transform: uppercase; }
.gsy-inq-fields .cap > span { color: #fa4242; }
.gsy-inq-field input { height: 48px; border-radius: 8px; border: 1px solid #ebecef; background: #fff; outline: none; padding: 4px 16px; color: #0f232f; font-size: 14px; font-weight: 400; }
.gsy-inq-field input:focus { border-color: #5b42f5; }
.gsy-inq-phone { display: flex; align-items: center; height: 48px; border: 1px solid #ebecef; border-radius: 8px; overflow: hidden; }
.gsy-inq-phone:focus-within { border-color: #5b42f5; }
.gsy-inq-phone .cc { display: flex; align-items: center; height: 100%; padding: 0 12px; background: #f6f8fb; border-right: 1px solid #ebecef; color: #0f232f; font-size: 14px; font-weight: 500; }
.gsy-inq-phone input { flex: 1; min-width: 0; height: 100%; border: none; outline: none; padding: 0 16px; color: #0f232f; font-size: 14px; }

.gsy-inq-slotsblock { border-top: 1px solid #ebecef; padding-top: 16px; display: flex; flex-direction: column; gap: 16px; }
.gsy-inq-slotsblock .slotcap { display: flex; align-items: center; gap: 8px; text-transform: none; font-size: 12px; font-weight: 400; letter-spacing: 0; color: #0f232f; }
.gsy-inq-slotsblock .slotcap .icon-cont { width: 32px; height: 32px; background: #f6f8fb; border-radius: 50%; display: grid; place-items: center; flex: 0 0 auto; }
.gsy-inq-slotsblock .slots-cont { display: flex; gap: 8px; flex-wrap: wrap; }
.gsy-inq-slot { border-radius: 6px; border: 1.3px solid #ebecef; background: #fff; padding: 8px 16px; color: #262a33; font-size: 12px; font-weight: 500; line-height: 16.6px; cursor: pointer; user-select: none; }
.gsy-inq-slot.active { border-color: #262a33; font-weight: 600; }

.gsy-inq-consent { color: #6d7486; font-size: 12px; font-weight: 400; line-height: 1.5; border-top: 1px solid #ebecef; padding-top: 16px; }
.gsy-inq-err { color: #fa4242; font-size: 12px; font-weight: 500; line-height: 1.4; }
.gsy-inq-err[hidden] { display: none; }
.gsy-inq-continue { width: 100%; height: 48px; border-radius: 8px; border: 1px solid #0f232f; background: #0f232f; color: #fff; font-size: 14px; font-weight: 500; line-height: 18px; cursor: pointer; }
.gsy-inq-continue:disabled { opacity: .7; cursor: default; }

.gsy-inq-success { padding: 36px 28px; text-align: center; display: flex; flex-direction: column; align-items: center; gap: 10px; }
.gsy-inq-success[hidden] { display: none; }
.gsy-inq-success > img { width: 48px; height: 48px; border-radius: 50%; object-fit: cover; }
.gsy-inq-success h3 { margin: 6px 0 0; font-size: 20px; font-weight: 600; color: #0f232f; letter-spacing: -0.1px; }
.gsy-inq-success p { margin: 0; font-size: 14px; font-weight: 400; line-height: 1.5; color: #6d7486; max-width: 320px; }
.gsy-inq-success .gsy-inq-done { margin-top: 12px; min-width: 160px; height: 46px; border-radius: 8px; border: none; background: #5b42f5; color: #fff; font-size: 15px; font-weight: 600; cursor: pointer; }

@media (max-width: 560px) {
  .gsy-inq-overlay { padding: 0; align-items: flex-end; }
  .gsy-inq-dialog { max-width: 100%; max-height: 94vh; border-radius: 16px 16px 0 0; }
  .gsy-inq-form { padding: 24px 20px 20px; }
}

/* override the theme's global `button { background: accent !important }` for widget + modal buttons */
.gsy-planning-sidebar .inquiry-touch-point-widget .get-a-callback-cta,
.gsy-inq-overlay .gsy-inq-continue {
  background-color: #0f232f !important; color: #fff !important; border: 1px solid #0f232f !important; border-radius: 8px !important;
}
.gsy-planning-sidebar .inquiry-touch-point-widget .get-a-callback-cta:hover,
.gsy-inq-overlay .gsy-inq-continue:hover { background-color: #1c3242 !important; }
.gsy-planning-sidebar .inquiry-touch-point-widget .whatsapp-cta {
  background-color: #fff !important; color: #0f232f !important; border: 1px solid #0f232f !important; border-radius: 8px !important;
}
.gsy-planning-sidebar .inquiry-touch-point-widget .whatsapp-cta:hover { background-color: #f7f7fa !important; }
.gsy-inq-overlay .gsy-inq-close {
  background-color: #fff !important; color: #3c4852 !important; border: 1px solid #e9eef2 !important; border-radius: 8px !important;
}
.gsy-inq-overlay .gsy-inq-slot {
  background-color: #fff !important; color: #262a33 !important; border: 1.3px solid #ebecef !important; border-radius: 6px !important;
}
.gsy-inq-overlay .gsy-inq-slot.active { border-color: #262a33 !important; }
.gsy-inq-overlay .gsy-inq-done {
  background-color: #5b42f5 !important; color: #fff !important; border: none !important; border-radius: 8px !important;
}
.gsy-inq-overlay .gsy-inq-done:hover { background-color: #4a35e0 !important; }

/* inquiry modal — OTP verification step */
.gsy-inq-otp { padding: 28px 28px 24px; }
.gsy-inq-otp[hidden] { display: none; }
.gsy-inq-otp .gsy-inq-otp-sent { margin: 0 0 20px; color: #6d7486; font-size: 13px; line-height: 1.5; }
.gsy-inq-otp .gsy-inq-otp-sent b { color: #0f232f; font-weight: 600; }
.gsy-inq-otp-inputs { display: flex; gap: 8px; justify-content: space-between; }
.gsy-inq-otpbox { width: 46px; height: 52px; flex: 1 1 auto; text-align: center; border-radius: 8px; border: 1px solid #ebecef; background: #fff; color: #0f232f; font-size: 20px; font-weight: 600; outline: none; }
.gsy-inq-otpbox:focus { border-color: #5b42f5; }
.gsy-inq-otp-form { display: flex; flex-direction: column; gap: 20px; }
.gsy-inq-resend { display: flex; align-items: center; justify-content: flex-end; min-height: 18px; }
.gsy-inq-resend .gsy-inq-resend-timer { color: #6d7486; font-size: 13px; }
.gsy-inq-otp-err { margin-top: -8px; }

/* WhatsApp "Chat with us" icon spacing (button style handled by .whatsapp-cta override) */
.gsy-planning-sidebar .inquiry-touch-point-widget .whatsapp-cta svg { flex: 0 0 auto; }

/* override the theme's global `button { background: accent !important }` for the OTP-step buttons */
.gsy-inq-overlay .gsy-inq-verify {
  width: 100%; height: 48px; background-color: #0f232f !important; color: #fff !important; border: 1px solid #0f232f !important; border-radius: 8px !important; font-size: 14px; font-weight: 500; cursor: pointer;
}
.gsy-inq-overlay .gsy-inq-verify:hover { background-color: #1c3242 !important; }
.gsy-inq-overlay .gsy-inq-back-otp {
  background-color: #fff !important; color: #3c4852 !important; border: 1px solid #e9eef2 !important; border-radius: 8px !important;
}
.gsy-inq-overlay .gsy-inq-edit,
.gsy-inq-overlay .gsy-inq-resend-btn {
  background-color: transparent !important; color: #5b42f5 !important; border: none !important; padding: 0 !important; font-size: 13px; font-weight: 600; text-decoration: underline; cursor: pointer; width: auto; height: auto;
}

/* ============================================================================
   AVAILABLE OFFERS — product page (info + copy code) & cart/checkout (apply).
   Flipkart-style offers list (see inc/coupons.php).
   ========================================================================== */
.gsy-offers { border: 1px solid var(--gsy-line, #e7e3f2); border-radius: 14px; background: #fff; box-sizing: border-box; }
.gsy-offers * { box-sizing: border-box; }
.gsy-offers-head { display: flex; align-items: center; gap: 8px; padding: 14px 16px; border-bottom: 1px solid #f0edf9; }
.gsy-offers-head svg { flex: 0 0 auto; }
.gsy-offers-head h3 { margin: 0; font-size: 16px; font-weight: 700; color: var(--gsy-ink, #161227); letter-spacing: -0.01em; }
.gsy-offers-list { display: flex; flex-direction: column; }

/* one offer row */
.gsy-offer { display: grid; grid-template-columns: auto 1fr auto; align-items: start; gap: 12px; padding: 14px 16px; border-top: 1px solid #f4f2fb; }
.gsy-offer:first-child { border-top: none; }
.gsy-offer.is-applied { background: #f4fbf6; }
.gsy-offer-tag { flex: 0 0 auto; margin-top: 1px; line-height: 0; }
.gsy-offer-main { min-width: 0; }
.gsy-offer-title { margin: 0; font-size: 14px; color: #161227; line-height: 1.4; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.gsy-offer-badge { display: inline-block; background: #eae6fe; color: #4a35e0; font-size: 11px; font-weight: 800; letter-spacing: .02em; padding: 3px 8px; border-radius: 5px; white-space: nowrap; }
.gsy-offer.is-applied .gsy-offer-badge { background: #d9f3e1; color: #1a8f47; }
.gsy-offer-meta { margin: 5px 0 0; font-size: 12px; color: #6e6883; line-height: 1.5; }
.gsy-offer-meta b { color: #2e2746; font-weight: 700; letter-spacing: .03em; }
.gsy-offers .gsy-offer-tnc { background: none !important; border: none !important; padding: 0 !important; margin-left: 4px; color: #5b42f5 !important; font-size: 12px; font-weight: 600; cursor: pointer; white-space: nowrap; }
.gsy-offer-tnc::after { content: " \25BE"; font-size: 10px; }
.gsy-offer-tnc.open::after { content: " \25B4"; }
.gsy-offer-terms { list-style: none; margin: 8px 0 0; padding: 10px 12px; background: #faf9ff; border-radius: 8px; display: flex; flex-direction: column; gap: 5px; }
.gsy-offer-terms[hidden] { display: none; }
.gsy-offer-terms li { position: relative; padding-left: 16px; font-size: 12px; color: #6e6883; line-height: 1.4; }
.gsy-offer-terms li::before { content: ""; position: absolute; left: 3px; top: 7px; width: 5px; height: 5px; border-radius: 50%; background: #b3a9ee; }

/* action (apply / applied / copy) */
.gsy-offer-action { flex: 0 0 auto; align-self: center; }
.gsy-offers .gsy-offer-apply, .gsy-offers .gsy-offer-copy { border-radius: 8px !important; padding: 8px 18px !important; font-size: 13px !important; font-weight: 600 !important; line-height: 1 !important; cursor: pointer; white-space: nowrap; }
.gsy-offers .gsy-offer-apply { background-color: #5b42f5 !important; color: #fff !important; border: none !important; }
.gsy-offers .gsy-offer-apply:hover { background-color: #4a35e0 !important; }
.gsy-offers .gsy-offer-apply:disabled { opacity: .7; cursor: default; }
.gsy-offers .gsy-offer-copy { background-color: #fff !important; color: #5b42f5 !important; border: 1px solid #5b42f5 !important; }
.gsy-offers .gsy-offer-copy:hover { background-color: #f4f2ff !important; }
.gsy-offers .gsy-offer-copy.copied { background-color: #eafaf0 !important; color: #1a8f47 !important; border-color: #1a8f47 !important; }
.gsy-offer-applied { color: #1a8f47; font-size: 13px; font-weight: 700; white-space: nowrap; }

.gsy-offers-msg { padding: 0 16px 14px; font-size: 13px; font-weight: 500; }
.gsy-offers-msg[hidden] { display: none; }
.gsy-offers-msg.ok { color: #1a8f47; }
.gsy-offers-msg.err { color: #fa4242; }

.gsy-offers--product { margin: 18px 0 4px; }
.gsy-offers--cart { margin: 0 0 20px; }

/* collapse extra offers behind "View all" */
.gsy-offer--extra { display: none; }
.gsy-offers.show-all .gsy-offer--extra { display: grid; }
.gsy-offers .gsy-offers-viewall { display: block; width: 100%; text-align: center; background: none !important; border: none !important; border-top: 1px solid #f0edf9 !important; border-radius: 0 !important; padding: 12px 16px !important; color: #5b42f5 !important; font-size: 13px !important; font-weight: 600 !important; cursor: pointer; }
.gsy-offers .gsy-offers-viewall:hover { background: #faf9ff !important; }

/* product-page min-spend hint ("Add ₹X more to use this offer") */
.gsy-offer-hint { margin: 6px 0 0; font-size: 12px; font-weight: 600; color: #b45309; display: flex; align-items: center; gap: 6px; }
.gsy-offer-hint[hidden] { display: none; }
.gsy-offer-hint::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: #f59e0b; flex: 0 0 auto; }

/* mobile: stack the offer action full-width below the details */
@media (max-width: 600px) {
  .gsy-offer { grid-template-columns: auto 1fr; gap: 10px; padding: 14px; }
  .gsy-offer-action { grid-column: 1 / -1; margin-top: 4px; padding-left: 28px; }
  .gsy-offers .gsy-offer-apply { width: 100%; padding: 11px 18px !important; }
  .gsy-offer-applied { display: inline-block; padding-left: 0; }
  .gsy-offers-head { padding: 13px 14px; }
  .gsy-offer-title { font-size: 14px; }
  .gsy-offer-meta { font-size: 12px; }
  .gsy-offers--product { margin: 16px 0 4px; }
}

/* ============================================================================
   SINGLE PRODUCT — mobile gallery cap + conversion boosters (see inc/product-page.php)
   ========================================================================== */
/* #3 mobile: cap the main image height + make thumbnails a horizontal strip */
@media (max-width: 782px) {
  .single-product .woocommerce-product-gallery .flex-viewport { max-height: 46vh; }
  .single-product .woocommerce-product-gallery .flex-viewport img,
  .single-product .woocommerce-product-gallery__image img { max-height: 46vh !important; width: auto !important; margin-inline: auto !important; object-fit: contain; }
  .single-product .flex-control-thumbs { display: flex !important; flex-wrap: nowrap !important; overflow-x: auto; gap: 8px; margin: 10px 0 0 !important; padding-bottom: 4px; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
  .single-product .flex-control-thumbs::-webkit-scrollbar { display: none; }
  .single-product .flex-control-thumbs li { flex: 0 0 58px !important; width: 58px !important; margin: 0 !important; }
  .single-product .flex-control-thumbs li img { width: 58px !important; height: auto !important; }
}

/* #4b — "Save up to ₹X with offers" teaser under the price */
/* Merged rewards panel — free GetSetYo voucher + best offer savings.
   Warm amber tone: it contrasts against the store's purple UI far better than a
   purple-on-purple card, so the reward genuinely stands out. */
.gsy-rewards {
    margin: 12px 0 0;
    border: 1px solid #fcd9a8;
    border-radius: 11px;
    background: #fff7ed;
    overflow: hidden;
}
.gsy-rewards .gsy-reward {
    display: flex;
    align-items: center;
    gap: 10px;
    width: 100%;
    margin: 0 !important;
    padding: 8px 13px !important;
    background: transparent !important;
    border: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    text-align: left;
    font: inherit;
    color: #b45309 !important;
    cursor: default;
}
.gsy-rewards .gsy-reward + .gsy-reward {
    border-top: 1px dashed #fcd9a8 !important;
}
.gsy-rewards .gsy-reward--offers {
    cursor: pointer;
}
.gsy-rewards .gsy-reward--offers:hover {
    background: rgba(255, 237, 213, 0.6) !important;
}
.gsy-rewards .gsy-reward-ico {
    font-size: 18px;
    line-height: 1.15;
    flex: 0 0 auto;
    margin-top: 0;
}
.gsy-rewards .gsy-reward-copy {
    display: flex;
    flex-direction: column;
    gap: 0;
    min-width: 0;
}
.gsy-rewards .gsy-reward-copy strong {
    color: #b45309 !important;
    font-size: 14px !important;
    font-weight: 700 !important;
    line-height: 1.35 !important;
}
.gsy-rewards .gsy-reward-copy > span {
    color: #c2410c !important;
    font-size: 12px !important;
    font-weight: 500 !important;
    line-height: 1.32 !important;
}
.gsy-rewards .gsy-reward--offers:hover .gsy-reward-copy > span {
    color: #9a3412 !important;
}
/* the same voucher benefit, reinforced after the description */
.gsy-voucher-benefit--afterdesc {
    margin-top: 22px;
}

/* --- Product CTA pair: Add-to-cart (tonal) + Buy-now (primary) — built from the design system --- */
.gsy-cta-ico { width: 18px; height: 18px; flex: 0 0 auto; fill: currentColor; }
/* [ Quantity ] on its own row, then the two buttons below */
.single-product .wp-block-add-to-cart-form form.cart { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin: 6px 0 0; }
/* quantity stepper: [Quantity]  [ − N + ] on its own row */
.single-product .gsy-qty-row { flex: 0 0 100%; display: flex; align-items: center; gap: 12px; margin: 2px 0; }
.single-product .gsy-qty-label { font-size: 13px; font-weight: 600; color: var(--gsy-muted); }
.single-product .wp-block-add-to-cart-form .quantity { display: inline-flex !important; align-items: stretch; width: auto; margin: 0; border: 1.5px solid var(--gsy-line); border-radius: 10px; overflow: hidden; background: #fff; }
.single-product .gsy-qty-dec, .single-product .gsy-qty-inc { width: 40px; height: 44px; border: 0 !important; background: var(--gsy-tint) !important; color: var(--gsy-accent) !important; font-size: 18px; font-weight: 600; line-height: 1; display: inline-flex; align-items: center; justify-content: center; border-radius: 0 !important; cursor: pointer; box-shadow: none !important; padding: 0 !important; transition: background .15s; }
.single-product .gsy-qty-dec:hover, .single-product .gsy-qty-inc:hover { background: var(--gsy-accent-soft) !important; }
.single-product .wp-block-add-to-cart-form input.qty { width: 52px !important; height: 44px; padding: 0 6px; border: 0 !important; border-left: 1px solid var(--gsy-line) !important; border-right: 1px solid var(--gsy-line) !important; border-radius: 0 !important; box-shadow: none !important; text-align: center; font-size: 16px; font-weight: 600; color: var(--gsy-ink); background: #fff; box-sizing: border-box; -moz-appearance: textfield; appearance: textfield; }
.single-product .wp-block-add-to-cart-form input.qty::-webkit-outer-spin-button, .single-product .wp-block-add-to-cart-form input.qty::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
/* shared shape */
.single-product .wp-block-add-to-cart-form .single_add_to_cart_button,
.single-product .gsy-buynow { flex: 1 1 190px; min-width: 150px; display: inline-flex; align-items: center; justify-content: center; gap: 9px; width: auto; max-width: none; height: 54px !important; margin: 0 !important; padding: 0 20px !important; font-size: 15px !important; font-weight: 700 !important; letter-spacing: .01em; text-transform: none; line-height: 1 !important; border: 0 !important; border-radius: 12px !important; cursor: pointer; transition: background .18s ease, box-shadow .18s ease, transform .05s ease; }
/* Add to cart — tonal / secondary (soft accent) */
.single-product .wp-block-add-to-cart-form .single_add_to_cart_button { background: var(--gsy-accent-soft) !important; color: var(--gsy-accent) !important; box-shadow: inset 0 0 0 1px #ddd2fb; }
.single-product .wp-block-add-to-cart-form .single_add_to_cart_button:hover { background: #e3dafc !important; box-shadow: inset 0 0 0 1px #cebefa; }
/* Buy now — primary / filled accent with a soft purple glow */
.single-product .gsy-buynow { background: linear-gradient(135deg, #6b54ff 0%, var(--gsy-accent) 55%, #4e37e0 100%) !important; color: #fff !important; box-shadow: 0 8px 20px rgba(91,66,245,.26); }
.single-product .gsy-buynow:hover { background: linear-gradient(135deg, #5f48f2 0%, #5039e6 55%, #4531cf 100%) !important; box-shadow: 0 10px 24px rgba(91,66,245,.34); }
.single-product .single_add_to_cart_button:active, .single-product .gsy-buynow:active { transform: translateY(1px); }
.single-product .gsy-buynow:disabled { opacity: .7; cursor: default; }

/* #4a — sticky mobile bar: same hierarchy, floating pill style */
.gsy-buybar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 9000; display: flex; align-items: stretch; gap: 10px; background: #fff; border-top: 1px solid var(--gsy-line); box-shadow: 0 -6px 20px rgba(22,18,39,.10); padding: 9px 14px calc(9px + env(safe-area-inset-bottom)); }
.gsy-buybar[hidden] { display: none; }
.gsy-buybar button { flex: 1 1 50%; display: inline-flex; align-items: center; justify-content: center; gap: 8px; border: 0 !important; height: 48px; border-radius: 11px !important; font-size: 15px !important; font-weight: 700 !important; letter-spacing: .01em; line-height: 1 !important; cursor: pointer; }
.gsy-buybar .gsy-buybar-add { background: var(--gsy-accent-soft) !important; color: var(--gsy-accent) !important; box-shadow: inset 0 0 0 1px #ddd2fb; }
.gsy-buybar .gsy-buybar-buy { background: linear-gradient(135deg, #6b54ff 0%, var(--gsy-accent) 55%, #4e37e0 100%) !important; color: #fff !important; box-shadow: 0 6px 16px rgba(91,66,245,.28); }
.gsy-buybar button:disabled { opacity: .8; }
@media (min-width: 783px) { .gsy-buybar { display: none !important; } }

/* --- Product meta (Category / SKU): clean, left-aligned, muted --- */
.single-product .wp-block-woocommerce-product-meta { margin-top: 20px; padding-top: 16px; border-top: 1px solid var(--gsy-line); }
.single-product .wp-block-woocommerce-product-meta > .wp-block-group { display: flex !important; flex-direction: column !important; align-items: flex-start !important; justify-content: flex-start !important; gap: 5px !important; }
.single-product .wp-block-woocommerce-product-meta,
.single-product .wp-block-woocommerce-product-meta span { font-size: 13px !important; color: var(--gsy-muted) !important; line-height: 1.4; }
.single-product .wp-block-woocommerce-product-meta a { color: var(--gsy-accent) !important; text-decoration: none; font-weight: 600; }
.single-product .wp-block-woocommerce-product-meta a:hover { text-decoration: underline; }

/* --- Gallery thumbnails: single scrollable row on desktop (mobile strip is handled above) --- */
@media (min-width: 783px) {
  .single-product .woocommerce-product-gallery .flex-control-thumbs { display: flex !important; flex-wrap: nowrap !important; gap: 10px !important; margin: 12px 0 0 !important; padding: 0 0 2px !important; list-style: none; overflow-x: auto; scrollbar-width: thin; }
  .single-product .woocommerce-product-gallery .flex-control-thumbs li { flex: 0 0 auto !important; width: 90px !important; margin: 0 !important; }
  .single-product .woocommerce-product-gallery .flex-control-thumbs li img { width: 90px !important; height: auto !important; border-radius: 8px; display: block; cursor: pointer; }
}

/* --- Description (left) + advisor widget (right), adjacent on desktop --- */
/* constrain to the shared 1240 container so edges line up with the gallery/summary above */
.gsy-info-row.alignwide { max-width: var(--gsy-cw) !important; margin-left: auto !important; margin-right: auto !important; }
/* fill the cell + left-align (beat the container-sync margin-inline:auto and the legacy tab-panel indent) */
.single-product .gsy-info-main > .wp-block-woocommerce-product-details { margin: 0 !important; max-width: none !important; width: 100% !important; }
.single-product .gsy-info-main .wp-block-woocommerce-product-details .wc-tabs-wrapper,
.single-product .gsy-info-main .wp-block-woocommerce-product-details .woocommerce-tabs,
.single-product .gsy-info-main .wp-block-woocommerce-product-details ul.tabs,
.single-product .gsy-info-main .wp-block-woocommerce-product-details .woocommerce-Tabs-panel { margin-left: 0 !important; margin-right: 0 !important; max-width: none !important; }
.gsy-info-side .gsy-planning-sidebar { margin: 0 !important; max-width: none !important; width: 100% !important; }
@media (min-width: 900px) {
  .gsy-info-row { display: grid; grid-template-columns: minmax(0, 1fr) 400px; gap: 44px; align-items: start; }
}
@media (max-width: 899px) {
  .gsy-info-row { display: flex; flex-direction: column; gap: 30px; }
  /* Support box now follows the description (natural DOM order) — the tall
     advisor rail that used to warrant order:-1 was removed. */
}

/* ============================================================================
   GETSETYO VOUCHER — product-page benefit + thank-you reassurance
   ========================================================================== */
.gsy-voucher-benefit,
.gsy-voucher-thankyou {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    background: #fff7ed;
    border: 1px solid #fcd9a8;
    border-radius: 12px;
    padding: 12px 14px;
}
.gsy-voucher-benefit {
    margin: 12px 0 0;
}
.gsy-voucher-thankyou {
    margin: 0 0 22px;
}
.gsy-voucher-ico {
    font-size: 22px;
    line-height: 1.1;
    flex: 0 0 auto;
}
.gsy-voucher-copy,
.gsy-voucher-thankyou > div {
    display: flex;
    flex-direction: column;
    gap: 2px;
}
.gsy-voucher-benefit strong,
.gsy-voucher-thankyou strong {
    color: #b45309;
    font-size: 15px;
    font-weight: 700;
    line-height: 1.3;
}
.gsy-voucher-benefit span,
.gsy-voucher-thankyou span:not(.gsy-voucher-ico) {
    color: #c2410c;
    font-size: 13px;
    line-height: 1.42;
}
/* the free voucher line in cart/checkout: badge its "free" item-data note */
.wc-block-components-product-details__free-voucher,
.wc-block-cart-item__product .wc-block-components-product-details li {
    color: var(--gsy-accent);
}

/* ============================================================================
   TYPOGRAPHY — PRODUCT PAGE (Step 2): tame the oversized title + tab headings
   ========================================================================== */
.single-product .wp-block-post-title,
.single-product h1.wp-block-post-title {
    /* Amazon-style product title: modest size + medium weight + roomy leading,
       so long multi-line names read cleanly instead of a heavy 38px/800 wall. */
    font-size: clamp(20px, 2.2vw, 26px) !important;
    font-weight: 500 !important;
    line-height: 1.3 !important;
    letter-spacing: -0.01em !important;
    margin-bottom: 10px !important;
}
/* Description / Reviews tab headings — from ~32px down to the H2 token */
.single-product .wp-block-woocommerce-product-details h2,
.single-product .woocommerce-Tabs-panel h2,
.single-product .wc-tab h2,
.single-product .wc-tabs-wrapper h2 {
    font-size: var(--gsy-fs-h2) !important;
    font-weight: 700 !important;
    line-height: var(--gsy-lh-heading) !important;
    letter-spacing: -0.015em !important;
}
/* Product long-description body copy → comfortable 16/1.65 */
.single-product .wp-block-woocommerce-product-details .woocommerce-Tabs-panel p,
.single-product .wc-tab p,
.single-product .woocommerce-product-details__short-description p {
    font-size: var(--gsy-fs-body) !important;
    font-weight: 400 !important;
    line-height: 1.65 !important;
}

/* ============================================================================
   RELATED PRODUCTS (single-product) — the block uses .wp-block-post-title with
   WP's has-medium-font-size preset, which rendered the card titles huge (6+
   lines) and dwarfed the "Related products" heading. Bring them in line with
   the shop grid: normal size, 2-line clamp, ink colour.
   ========================================================================== */
.single-product .wc-block-product-template .wp-block-post-title {
    font-size: 16px !important;
    font-weight: 600 !important;
    line-height: 1.35 !important;
    letter-spacing: -0.01em !important;
    margin: 10px 0 4px !important;
    min-height: 43px; /* ~2 lines → keeps card tops aligned */
}
/* clamp on the <a> (it holds the text; WP forces it inline-block otherwise) */
.single-product .wc-block-product-template .wp-block-post-title a {
    color: var(--gsy-ink) !important;
    display: -webkit-box !important;
    -webkit-line-clamp: 2 !important;
    -webkit-box-orient: vertical !important;
    overflow: hidden !important;
}
.single-product .wc-block-product-template .wp-block-post-title a:hover {
    color: var(--gsy-accent) !important;
}
/* give the section heading a touch more presence above the cards */
.single-product .wp-block-woocommerce-related-products > h2,
.single-product .related.products > h2 {
    font-size: var(--gsy-fs-h2) !important;
    font-weight: 800 !important;
    margin-bottom: 18px !important;
}

/* ============================================================================
   SHOP GRID PAGER — the numbered Previous / 1 2 3 / Next pagination
   ========================================================================== */
.wp-block-woocommerce-product-collection .wp-block-query-pagination {
    justify-content: center; gap: 6px; padding: 26px 0 8px; font-size: 15px;
}
.wp-block-query-pagination .page-numbers,
.wp-block-query-pagination-next, .wp-block-query-pagination-previous {
    min-width: 38px; padding: 7px 12px; border-radius: 9px; text-align: center;
    color: var(--gsy-ink); text-decoration: none; border: 1px solid transparent;
}
.wp-block-query-pagination a.page-numbers:hover,
.wp-block-query-pagination-next:hover, .wp-block-query-pagination-previous:hover {
    border-color: var(--gsy-line); background: var(--gsy-soft, rgba(0,0,0,.03));
}
.wp-block-query-pagination .page-numbers.current {
    background: var(--gsy-accent); color: #fff; font-weight: 600;
}

/* ============================================================================
   PRODUCT — Delivery & Returns assurance card
   ========================================================================== */
.gsy-assure {
    margin: 16px 0 0;
    border: 1px solid var(--gsy-line);
    border-radius: 12px;
    overflow: hidden;
    background: #fff;
}
.gsy-assure-row {
    display: flex;
    gap: 12px;
    align-items: flex-start;
    padding: 12px 14px;
}
.gsy-assure-row + .gsy-assure-row { border-top: 1px solid var(--gsy-line); }
.gsy-assure-ic { width: 22px; height: 22px; flex: 0 0 auto; margin-top: 1px; color: var(--gsy-accent); }
.gsy-assure-copy { display: flex; flex-direction: column; gap: 1px; }
.gsy-assure-copy strong { color: var(--gsy-ink); font-size: 14px; font-weight: 700; line-height: 1.3; }
.gsy-assure-copy span { color: var(--gsy-muted); font-size: 13px; line-height: 1.42; }
