/*
Theme Name: Galuxe
Description: Galuxe storefront. Child of Twenty Twenty-Five. Tokens live in theme.json. This stylesheet adds the retail polish Global Styles cannot reach, and it does it by styling ordinary core blocks, so every section stays drag and drop in the editor. Nothing here creates a block.
Author: Verspel
Template: twentytwentyfive
Version: 4.19.1
Requires at least: 6.7
Requires PHP: 7.4
License: GNU General Public License v2 or later
Text Domain: galuxe
*/

:root{--glx-ink:#0A0A0A;--glx-paper2:#F5F5F7;--glx-line:#E5E5E7;--glx-text:#1D1D1F;--glx-muted:#6E6E73;--glx-muted-dark:#A1A1A8;--glx-ok:#0A7D3E;--glx-err:#C62828;--glx-ease:cubic-bezier(.22,.61,.36,1)}
html{scroll-behavior:smooth}
*{-webkit-tap-highlight-color:transparent}

/* Sticky header. The announcement bar scrolls away, the nav stays. */
header.wp-block-template-part{position:sticky;top:-38px;z-index:70;background:rgba(255,255,255,.94);backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px)}

/* The stage. Product photography is shot on pure black, so its surface is too. */
.galuxe-stage{background:#000;color:#fff}
.galuxe-stage :where(h1,h2,h3,h4,p,li,a){color:#fff}
.galuxe-stage .galuxe-muted{color:var(--glx-muted-dark)}
.galuxe-muted{color:var(--glx-muted)}
.galuxe-wordmark{font-weight:600;letter-spacing:.34em;text-transform:uppercase}
.galuxe-rule{border:0;border-top:1px solid var(--glx-line);margin:0}
.galuxe-stage .galuxe-rule{border-top-color:#232327}

/* Buttons */
.wp-block-button__link,.woocommerce a.button,.woocommerce button.button,.woocommerce input.button,.wc-block-components-button,.woocommerce #respond input#submit{border-radius:999px;min-height:54px;padding:15px 30px;font-weight:600;letter-spacing:-.01em;box-shadow:none;border:0;transition:transform .18s var(--glx-ease),opacity .18s var(--glx-ease)}
.wp-block-button__link:hover,.woocommerce a.button:hover,.woocommerce button.button:hover{opacity:.88}
.wp-block-button__link:active{transform:scale(.97)}
.wp-block-button.is-style-outline .wp-block-button__link{border:1.5px solid var(--glx-line);background:transparent}
.galuxe-stage .wp-block-button.is-style-outline .wp-block-button__link{border-color:#3A3A3E;color:#fff}

/* Product grid. Styles the stock Product Collection block, does not replace it. */
.wp-block-woocommerce-product-collection .wp-block-post-template,.wp-block-woocommerce-product-collection .wc-block-product-template{gap:20px}
.wp-block-woocommerce-product-collection li{background:#fff;border:1px solid var(--glx-line);border-radius:28px;overflow:hidden;padding:0 0 20px;display:flex;flex-direction:column;transition:transform .28s var(--glx-ease),box-shadow .28s var(--glx-ease)}
.wp-block-woocommerce-product-collection li:hover{transform:translateY(-4px);box-shadow:0 18px 40px rgba(29,29,31,.10)}
.wp-block-woocommerce-product-collection li > *{padding-left:20px;padding-right:20px}
.wp-block-woocommerce-product-collection .wc-block-components-product-image{margin:0;padding:0;background:#000}
.wp-block-woocommerce-product-collection .wc-block-components-product-image img{border-radius:0;width:100%;display:block}
.wp-block-woocommerce-product-collection .wp-block-post-title{margin:16px 0 2px;font-size:17px;font-weight:600;letter-spacing:-.02em;line-height:1.3}
.wp-block-woocommerce-product-collection .wp-block-post-title a{text-decoration:none}
.wp-block-woocommerce-product-collection .wc-block-components-product-price{font-size:16px;font-weight:600}
.wp-block-woocommerce-product-collection .wc-block-components-product-button{margin-top:auto;padding-top:14px}
.wp-block-woocommerce-product-collection .wc-block-components-product-button .wp-block-button__link{width:100%;justify-content:center;text-align:center}

.galuxe-media{border-radius:22px;overflow:hidden;background:#000}

/* Two hairline rings behind the product, so a black panel is not an empty box. */
.galuxe-rings{position:relative;isolation:isolate}
.galuxe-rings::before,.galuxe-rings::after{content:"";position:absolute;left:50%;top:50%;translate:-50% -50%;aspect-ratio:1;border-radius:50%;border:1px solid rgba(255,255,255,.09);pointer-events:none;z-index:-1}
.galuxe-rings::before{width:74%}
.galuxe-rings::after{width:96%}

.galuxe-swatch{width:36px;height:36px;border-radius:999px;padding:0;cursor:pointer;border:0;box-shadow:inset 0 0 0 1.5px rgba(0,0,0,.18);transition:transform .2s var(--glx-ease)}
.galuxe-stage .galuxe-swatch{box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.22)}
.galuxe-swatch:active{transform:scale(.9)}
.galuxe-swatch[aria-pressed="true"]{outline:1.5px solid var(--glx-ink);outline-offset:5px}
.galuxe-stage .galuxe-swatch[aria-pressed="true"]{outline-color:#fff}

.galuxe-specs{list-style:none;margin:0;padding:0}
.galuxe-specs li{display:flex;justify-content:space-between;gap:24px;padding:14px 0;border-bottom:1px solid var(--glx-line)}

/* FAQ, built on the core Details block. */
.wp-block-details{border-bottom:1px solid var(--glx-line);padding:0;background:transparent}
.wp-block-details summary{list-style:none;cursor:pointer;position:relative;padding:22px 44px 22px 0;font-size:17px;font-weight:600;letter-spacing:-.015em}
.wp-block-details summary::-webkit-details-marker{display:none}
.wp-block-details summary::after{content:"+";position:absolute;right:6px;top:50%;translate:0 -50%;font-size:26px;font-weight:300;color:var(--glx-muted);transition:transform .25s var(--glx-ease)}
.wp-block-details[open] summary::after{transform:rotate(45deg)}
.wp-block-details > :not(summary){margin:0 0 24px;padding-right:30px;color:var(--glx-muted);font-size:15.5px;line-height:1.6}

/* Sticky buy bar, mobile only. */
.galuxe-buybar{position:fixed;left:0;right:0;bottom:0;z-index:60;display:flex;align-items:center;gap:12px;background:rgba(255,255,255,.94);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-top:1px solid var(--glx-line);padding:10px 20px calc(10px + env(safe-area-inset-bottom));transform:translateY(110%);transition:transform .35s var(--glx-ease)}
.galuxe-buybar.is-visible{transform:translateY(0)}
.galuxe-buybar .glx-t{font-size:14px;font-weight:600;line-height:1.2}
.galuxe-buybar .glx-s{font-size:12px;color:var(--glx-muted)}
.galuxe-buybar a{margin-left:auto;display:inline-flex;align-items:center;justify-content:center;min-height:46px;padding:0 22px;border-radius:999px;background:var(--glx-ink);color:#fff;font-weight:600;text-decoration:none;white-space:nowrap}

.galuxe-wa{position:fixed;right:16px;bottom:calc(84px + env(safe-area-inset-bottom));z-index:55;width:52px;height:52px;border-radius:50%;background:var(--glx-ink);display:grid;place-items:center;box-shadow:0 8px 24px rgba(29,29,31,.3);transition:transform .2s var(--glx-ease)}
.galuxe-wa:active{transform:scale(.92)}
@media(min-width:900px){.galuxe-wa{bottom:24px}}

/* Reveal. Transform and opacity only, and visible if the script never runs. */
.galuxe-reveal{opacity:0;transform:translateY(22px);transition:opacity .7s var(--glx-ease),transform .7s var(--glx-ease)}
.galuxe-reveal.is-in{opacity:1;transform:none}

/* Checkout */
.woocommerce form .form-row input.input-text,.woocommerce form .form-row select,.woocommerce form .form-row textarea{border-radius:12px;border:1.5px solid var(--glx-line);min-height:54px;padding:0 16px;font-size:16px;background:#fff;color:var(--glx-text)}
.woocommerce form .form-row textarea{padding:14px 16px;min-height:110px}
.woocommerce form .form-row input.input-text:focus,.woocommerce form .form-row select:focus{outline:none;border-color:var(--glx-ink)}
.woocommerce form .form-row label{font-weight:600;font-size:13px;color:var(--glx-text);margin-bottom:7px;display:block}
.woocommerce form .form-row .required{color:var(--glx-err);text-decoration:none}
.woocommerce .woocommerce-error{border-top-color:var(--glx-err);border-radius:12px}
.woocommerce .woocommerce-message{border-top-color:var(--glx-ok);border-radius:12px}

@media(max-width:900px){.galuxe-flip .wp-block-column:first-child{order:2}.galuxe-flip .wp-block-column:last-child{order:1}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{animation-duration:.01ms!important;transition-duration:.01ms!important}.galuxe-reveal{opacity:1;transform:none}}

/* ---------- Column wrapping ----------
   Core Columns never wrap, so six spec groups sit on one 150px-wide row.
   These let a section reflow instead. Add galuxe-wrap to any Columns block. */
.galuxe-wrap{flex-wrap:wrap!important}
.galuxe-wrap > .wp-block-column{flex-basis:calc(33.333% - 28px)!important;min-width:220px;flex-grow:1}
@media(max-width:781px){.galuxe-wrap > .wp-block-column{flex-basis:calc(50% - 12px)!important;min-width:0}}

/* Stat rows: let a long word wrap to the next line rather than breaking
   mid-word, which is what turned Microphone into Microphon e. */
.wp-block-columns .wp-block-column p{overflow-wrap:normal;word-break:normal;hyphens:none}

/* Trust strip and stat rows stay side by side on phones but shrink. */
.is-not-stacked-on-mobile > .wp-block-column{min-width:0}
@media(max-width:600px){
  .is-not-stacked-on-mobile > .wp-block-column p:first-child{font-size:17px!important}
  .is-not-stacked-on-mobile > .wp-block-column p:last-child{font-size:12px!important}
}

/* ---------- Full bleed chrome ----------
   theme.json puts a 28px gap between every direct child of the site wrapper,
   which shows as white bands under the header and above the footer. */
.wp-site-blocks > *{margin-block-start:0!important;margin-block-end:0!important}
main.wp-block-group > .wp-block-group:first-child,
main.wp-block-group > *:first-child{margin-block-start:0}
/* The hero subline sits on black and must stay legible on a phone in daylight. */
.galuxe-stage p.has-large-font-size{color:#C9C9D0}
.galuxe-stage .galuxe-muted{color:#C9C9D0}

/* ---------- Tile media ----------
   Product photography is shot on pure black, so the tile's media area is too.
   Anything lighter frames the product in a visible black rectangle. */
.wp-block-woocommerce-product-collection .wc-block-components-product-image{background:#000;aspect-ratio:1;display:grid;place-items:center}
.wp-block-woocommerce-product-collection .wc-block-components-product-image img{width:100%;height:100%;object-fit:contain}

/* ---------- Chrome flush ----------
   The white bands under the header and above the footer are the root blockGap
   that theme.json applies between every direct child of the site wrapper, plus
   the flow gap on the first and last section inside main. All three, killed. */
.wp-site-blocks > *,
.wp-site-blocks > header,
.wp-site-blocks > main,
.wp-site-blocks > footer{margin-block-start:0!important;margin-block-end:0!important}
main.wp-block-group > .entry-content,
main.wp-block-group > .wp-block-post-content{margin-block-start:0!important;margin-block-end:0!important}
.entry-content > *:first-child,
.wp-block-post-content > *:first-child{margin-block-start:0!important}
.entry-content > *:last-child,
.wp-block-post-content > *:last-child{margin-block-end:0!important}
/* The content wrapper carries the global side padding, which indents the
     full width sections. Sections manage their own padding. */
main.wp-block-group > .entry-content.has-global-padding,
main.wp-block-group > .wp-block-post-content.has-global-padding{padding-left:0;padding-right:0}
main.wp-block-group > .entry-content > .alignfull,
main.wp-block-group > .wp-block-post-content > .alignfull{margin-left:0;margin-right:0;width:100%;max-width:none}

/* ---------- Hero swatches ----------
   The buttons are one HTML block so each can carry the photograph it swaps in.
   Colours and images are attributes on the buttons, not values in this file. */
.galuxe-swatches{display:flex;gap:12px;justify-content:center;margin:26px 0 0}
.galuxe-hero-media img{transition:opacity .25s var(--glx-ease)}
.galuxe-hero-media.is-swapping img{opacity:.35}

/* ---------- Hero image box ----------
   All three hero photographs are now the same canvas, but locking the aspect
   ratio means a future one that is not cannot shift the page on a swap. */
.galuxe-hero-media img{aspect-ratio:1374/1145;width:100%;height:auto;object-fit:contain}

/* ---------- Hero stack ----------
   All three finishes are in the page at once, stacked in one grid cell, and the
   swatch cross fades between them. Nothing is fetched on click, so the switch
   is instant. Without JavaScript the first layer simply stays visible. */
.galuxe-hero-stack{display:grid;max-width:620px;margin-inline:auto}
.galuxe-hero-stack > *{grid-area:1/1;margin:0}
.galuxe-hero-layer img{display:block;width:100%;height:auto}
.galuxe-hero-layer{opacity:0;transition:opacity .35s var(--glx-ease)}
.galuxe-hero-layer.is-active,
.galuxe-hero-stack:not(.is-ready) .galuxe-hero-layer:first-child{opacity:1}

/* ==========================================================
   Retail layout
   Everything below styles core blocks and WooCommerce's own markup.
   No block is replaced, so every section stays drag and drop.
   ========================================================== */

header.wp-block-template-part{border-bottom:1px solid rgba(0,0,0,.07)}
.wp-block-navigation{font-size:15px;font-weight:500}
.wp-block-navigation .wp-block-navigation-item__content{color:var(--glx-muted);text-decoration:none}
.wp-block-navigation .wp-block-navigation-item__content:hover{color:var(--glx-text)}
.wp-block-site-title a{text-decoration:none}

.galuxe-stage h1{max-width:14ch;margin-inline:auto}
.galuxe-hero-sub{max-width:34ch;margin-inline:auto}
.galuxe-price-line{font-size:15px;color:#8E8E96}
.galuxe-price-line strong{color:#fff;font-weight:600}
.galuxe-stage .wp-block-button.is-style-outline .wp-block-button__link{border:1.5px solid #3A3A3E;background:transparent;color:#fff}
.galuxe-stage .wp-block-button.is-style-outline .wp-block-button__link:hover{background:#1E1E21;opacity:1}
.galuxe-scroll-cue{font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:#6E6E78;text-align:center}

.galuxe-trust{background:var(--glx-paper2);border-bottom:1px solid var(--glx-line)}
.galuxe-trust .wp-block-columns{gap:1px!important;background:var(--glx-line);margin:0}
.galuxe-trust .wp-block-column{background:var(--glx-paper2);padding:22px 16px;text-align:center;margin:0}
.galuxe-trust .wp-block-column p:not(.galuxe-trust-icon):first-of-type,
.galuxe-trust .wp-block-column .galuxe-trust-icon + p{font-size:14px;font-weight:600;letter-spacing:-.01em;margin:0;color:var(--glx-text)}
.galuxe-trust .wp-block-column p:last-child{font-size:12.5px;color:var(--glx-muted);margin:3px 0 0}

.wp-block-woocommerce-product-collection li{background:#fff;border:1px solid var(--glx-line);border-radius:32px;overflow:hidden;padding:0 0 22px}
.wp-block-woocommerce-product-collection li:hover{transform:translateY(-4px);box-shadow:0 18px 40px rgba(29,29,31,.09)}
.wp-block-woocommerce-product-collection li > *{padding-left:22px;padding-right:22px}
.wp-block-woocommerce-product-collection .wc-block-components-product-image{background:linear-gradient(170deg,#F7F7F9,#ECECF0);padding:26px 20px 14px;aspect-ratio:auto;display:block}
.wp-block-woocommerce-product-collection .wc-block-components-product-image img{width:100%;height:auto;object-fit:contain}
.wp-block-woocommerce-product-collection .wp-block-post-title{margin:18px 0 4px;font-size:18px;font-weight:600;letter-spacing:-.015em}
.wp-block-woocommerce-product-collection .wc-block-components-product-summary{font-size:13.5px;color:var(--glx-muted);line-height:1.45;margin:0}
.wp-block-woocommerce-product-collection .wc-block-components-product-price{font-size:17px;font-weight:600;margin-top:10px;display:block}
.wp-block-woocommerce-product-collection .wc-block-components-product-button{margin-top:16px;padding-top:0}
.wp-block-woocommerce-product-collection .wc-block-components-product-button .wp-block-button__link{width:100%;justify-content:center;background:var(--glx-ink);color:#fff;min-height:52px}

/* Trust strip icons. Emoji render from the system font, so they add
   nothing to page weight and need no icon library. */
.galuxe-trust-icon{font-size:20px;line-height:1;margin:0 0 8px}
.galuxe-trust .wp-block-column p.galuxe-trust-icon + p{margin-top:0}

/* ---------- Section seams ----------
   theme.json puts a 28px flow gap between sibling blocks, so every full width
   section sat above a band of page background. Invisible between two white
   sections, obvious between the black hero and the grey trust strip. Each
   section carries its own padding, so the gap between them is zero. */
.entry-content > *,
.wp-block-post-content > *,
main.wp-block-group > *{margin-block-start:0!important;margin-block-end:0!important}
.entry-content,
.wp-block-post-content{--wp--style--block-gap:0}

/* ---------- Buy bar alignment ----------
   The bar spans the viewport so the blur reaches both edges, but its contents
   sit in the same 1200px column as the rest of the page. The padding grows to
   fill whatever is left over, which centres the column without a wrapper. */
.galuxe-buybar{
  display:flex;align-items:center;gap:16px;
  padding-block:10px calc(10px + env(safe-area-inset-bottom));
  padding-inline:max(20px, calc((100% - 1200px) / 2));
}
.galuxe-buybar > *{margin:0}
.galuxe-buybar a{margin-left:auto}

/* ---------- Hero glow ----------
   A soft light behind the floating watch. Safe again now the hero is a
   transparent cut-out: earlier it lit a black photograph and made it read
   as a rectangle. Behind the image only, so no other black section glows. */
.galuxe-stage:has(.galuxe-hero-stack){position:relative;overflow:hidden;isolation:isolate}
.galuxe-stage:has(.galuxe-hero-stack)::before{
  content:"";position:absolute;left:50%;top:56%;translate:-50% -50%;
  width:min(120vw,820px);aspect-ratio:1;border-radius:50%;pointer-events:none;z-index:0;
  background:radial-gradient(circle,rgba(255,255,255,.16) 0%,rgba(255,255,255,.06) 40%,transparent 68%);
  filter:blur(14px);
}
.galuxe-stage:has(.galuxe-hero-stack) > *{position:relative;z-index:1}

/* ---------- Spec chips ----------
   The icons lifted off the marketing banner, rebuilt as real page elements.
   Monochrome SVG in currentColor, so they inherit white on the black section. */
.galuxe-spec-row{display:flex;flex-wrap:wrap;gap:26px 34px;margin-top:30px}
.galuxe-spec{display:flex;align-items:flex-start;gap:12px}
.galuxe-spec svg{width:26px;height:26px;flex:none;margin-top:1px}
.galuxe-spec .t{font-size:17px;font-weight:600;letter-spacing:-.01em;line-height:1.15}
.galuxe-spec .s{font-size:13px;color:#A1A1A8;margin-top:2px}
.galuxe-compat-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:40px}
.galuxe-compat{display:flex;align-items:center;gap:14px;border:1px solid #2A2A2C;border-radius:16px;padding:18px 20px}
.galuxe-compat svg{width:30px;height:30px;flex:none}
.galuxe-compat .t{font-size:15px;font-weight:600;line-height:1.2}
.galuxe-compat .s{font-size:13px;color:#A1A1A8;margin-top:3px}
@media(max-width:600px){.galuxe-compat-row{grid-template-columns:1fr}}

/* compat in column: cards sit under the copy, not across the page */
.galuxe-compat-row{margin-top:32px;gap:12px}
.galuxe-compat{padding:14px 16px;gap:12px}
.galuxe-compat svg{width:26px;height:26px}
.galuxe-compat .t{font-size:14px}
@media(max-width:1100px){.galuxe-compat-row{grid-template-columns:1fr}}

/* ---------- Grid one per row on mobile ----------
   Two cramped columns with a wrapping Add to cart button is the mobile default.
   Below 700px each variant takes a full row. */
@media(max-width:700px){
  .wp-block-woocommerce-product-collection .wc-block-product-template,
  .wp-block-woocommerce-product-collection .wp-block-post-template{
    display:grid!important;grid-template-columns:1fr!important;gap:16px!important;
  }
  .wp-block-woocommerce-product-collection li{
    width:100%!important;max-width:100%!important;flex-basis:100%!important;
  }
  .wp-block-woocommerce-product-collection .wc-block-components-product-button .wp-block-button__link{white-space:nowrap}
}

/* ---------- Finish cards ----------
   The colour lineup rebuilt as real cards, replacing the baked-text banner.
   Clean per-colour images, a colour dot and a label, on the black stage. */
.galuxe-finish-head{display:flex;align-items:center;justify-content:center;gap:9px;margin-bottom:6px;font-size:15px;font-weight:600;color:#fff}
.galuxe-finish-dot{width:14px;height:14px;border-radius:50%;display:inline-block;box-shadow:inset 0 0 0 1px rgba(255,255,255,.3)}
.galuxe-finish-card{background:#0E0E10;border:1px solid #232327;border-radius:22px;padding:22px 18px 10px}
.galuxe-finish-card .wp-block-image{margin:0}
.galuxe-finish-card img{border-radius:12px}

/* ---------- Reel embed ----------
   One real customer reel, centred. Instagram supplies its own frame. */
.galuxe-reel{display:flex;justify-content:center}
.galuxe-reel iframe{width:360px;max-width:100%;height:640px;border:0;border-radius:16px;background:#fff;box-shadow:0 18px 40px rgba(29,29,31,.10)}

/* ---------- Reels row ----------
   Four real customer reels, four across, dropping to two then one. */
.galuxe-reels{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.galuxe-reels iframe{width:100%;min-height:640px;border:0;border-radius:16px;background:#fff;box-shadow:0 18px 40px rgba(29,29,31,.10)}
@media(max-width:1000px){.galuxe-reels{grid-template-columns:repeat(2,1fr);gap:14px}}
@media(max-width:600px){.galuxe-reels{grid-template-columns:1fr}}

/* ---------- Reel cards ----------
   The prototype look, with real reel covers. Card opens the reel on Instagram. */
.galuxe-reel-card{position:relative;display:block;aspect-ratio:9/16;border-radius:20px;overflow:hidden;background:#0A0A0A;text-decoration:none;box-shadow:0 18px 40px rgba(29,29,31,.10);transition:transform .28s var(--glx-ease),box-shadow .28s var(--glx-ease)}
.galuxe-reel-card:hover{transform:translateY(-4px);box-shadow:0 26px 54px rgba(29,29,31,.16)}
.galuxe-reel-card img{width:100%;height:100%;object-fit:cover;display:block}
.galuxe-reel-card::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(0,0,0,.72) 0%,rgba(0,0,0,0) 42%);pointer-events:none}
.galuxe-reel-play{position:absolute;top:14px;right:14px;width:34px;height:34px;border-radius:50%;background:rgba(255,255,255,.2);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:grid;place-items:center;color:#fff;z-index:2}
.galuxe-reel-play svg{width:15px;height:15px;margin-left:2px}
.galuxe-reel-meta{position:absolute;left:16px;right:16px;bottom:15px;z-index:2}
.galuxe-reel-meta b{display:block;color:#fff;font-size:14px;font-weight:600;letter-spacing:-.01em}
.galuxe-reel-meta small{color:rgba(255,255,255,.72);font-size:12px}

/* ---------- Spec grid ----------
   Multi-column so the six groups pack tight and balance by height, instead of
   the flex-wrap layout that left dead space under the short groups. */
.galuxe-specgrid{display:grid;grid-template-columns:repeat(3,1fr);column-gap:56px;row-gap:40px;align-items:start;margin-top:var(--wp--preset--spacing--40)}
.galuxe-specgroup{margin:0}
.galuxe-specgroup h3{font-size:15px;font-weight:600;letter-spacing:-.01em;margin:0 0 4px;color:var(--glx-ink)}
.galuxe-specgroup ul{list-style:none;margin:0;padding:0}
.galuxe-specgroup li{padding:13px 0;border-bottom:1px solid var(--glx-line);font-size:15px;color:var(--glx-text)}
@media(max-width:900px){.galuxe-specgrid{grid-template-columns:repeat(2,1fr);column-gap:44px}}
@media(max-width:600px){.galuxe-specgrid{grid-template-columns:1fr}}

/* ---------- Text pages: restore flow rhythm ----------
   The seam-removal rules zero margins on every direct child of the page
   content, which is right for full-width homepage sections and wrong for
   plain text pages. Headings and paragraphs get their rhythm back; sections
   (groups) keep zero margins and their own padding. */
.entry-content>p,.wp-block-post-content>p{margin-block-start:0!important;margin-block-end:18px!important;max-width:70ch}
.entry-content>h2,.wp-block-post-content>h2{margin-block-start:38px!important;margin-block-end:12px!important;font-size:clamp(24px,2.6vw,32px)}
.entry-content>h3,.wp-block-post-content>h3{margin-block-start:28px!important;margin-block-end:10px!important}
.entry-content>:is(ul,ol),.wp-block-post-content>:is(ul,ol){margin-block-start:0!important;margin-block-end:18px!important;max-width:70ch}
.entry-content>p:first-child,.wp-block-post-content>p:first-child{font-size:17px;color:var(--glx-muted)}

/* ---------- Page top rhythm (global) ----------
   Breadcrumbs and page titles on every Woo-rendered page (shop, cart,
   checkout, account, archives) were hugging the navbar. One rhythm for all:
   air below the header, breadcrumb quiet and small, title close to its
   breadcrumb, room before content. */
main>:is(.wc-block-breadcrumbs,nav.woocommerce-breadcrumb){margin-block-start:44px!important;margin-block-end:0!important}
main :is(.wc-block-breadcrumbs,nav.woocommerce-breadcrumb){font-size:13px;color:var(--glx-muted)}
main :is(.wc-block-breadcrumbs,nav.woocommerce-breadcrumb) nav{margin:0}
main :is(.wc-block-breadcrumbs a,nav.woocommerce-breadcrumb a){color:var(--glx-muted);text-decoration:none}
main :is(.wc-block-breadcrumbs a,nav.woocommerce-breadcrumb a):hover{color:var(--glx-ink)}
main>:is(h1.wp-block-post-title,h1.wp-block-query-title){margin-block-start:44px!important;margin-block-end:30px!important}
main>:is(.wc-block-breadcrumbs,nav.woocommerce-breadcrumb)+:is(h1.wp-block-post-title,h1.wp-block-query-title){margin-block-start:10px!important}

/* ---------- Page bottom rhythm (global) ----------
   Pages that end in raw content (shop grid, cart, checkout, account) ran
   straight into the footer. Pages that end in a black stage band (home,
   product, order confirmation) are excluded: the band should touch the
   footer. */
body.woocommerce-page:not(.single-product):not(.woocommerce-order-received) main{padding-bottom:72px}

/* ---------- Stage bands: filled buttons invert ----------
   An ink-filled pill on a black stage is invisible. On stage, fill means
   white with ink text; outline stays the subtle grey stroke. */
.galuxe-stage .wp-block-button:not(.is-style-outline) .wp-block-button__link{background:#fff;color:var(--glx-ink)}
.galuxe-stage .wp-block-button:not(.is-style-outline) .wp-block-button__link:hover{background:#E6E6E9;opacity:1}
.galuxe-stage :is(h1,h2,h3,h4,.wp-block-heading){color:#fff!important;-webkit-text-fill-color:#fff!important}

/* ---------- Sticky footer ----------
   On short pages (empty cart, notices) the footer used to float with white
   space under it. The site wrapper now fills the viewport and main grows. */
.wp-site-blocks{display:flex;flex-direction:column;min-height:100svh}
.wp-site-blocks>main{flex:1 0 auto}
.wp-site-blocks>header,.wp-site-blocks>footer{flex-shrink:0}

/* ---------- Block notice banners (empty cart, store notices) ---------- */
.wc-block-components-notice-banner{background:var(--wp--preset--color--galuxe-paper-alt,#F5F5F7)!important;border:1px solid var(--glx-line)!important;border-radius:14px!important;color:var(--glx-text)!important;font-size:15px}
.wc-block-components-notice-banner>svg{fill:var(--glx-ink)!important;background:transparent!important}

/* ---------- Table action buttons ----------
   Buttons inside tables (account orders, downloads) must not inherit the
   54px CTA sizing; they become quiet compact pills. */
body.woocommerce-page table.shop_table .button,body.woocommerce-account table .button{min-height:0!important;height:auto!important;padding:8px 18px!important;font-size:14px!important;line-height:1.2!important;border-radius:999px;display:inline-block}

/* ---------- Mobile menu ----------
   The header's backdrop blur made it the containing block for fixed
   descendants, so the full-screen menu overlay was imprisoned inside the
   header strip. Blur removed (solid white instead); the overlay is freed
   and styled as a proper full sheet. */
header.wp-block-template-part{background:#fff;backdrop-filter:none;-webkit-backdrop-filter:none}
.wp-block-navigation__responsive-container.is-menu-open{position:fixed;inset:0!important;z-index:120;background:#fff;padding:84px 28px 28px}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content{display:flex;flex-direction:column;align-items:flex-start;gap:0}
.wp-block-navigation__responsive-container.is-menu-open ul.wp-block-navigation__container{display:flex;flex-direction:column;align-items:flex-start;gap:4px;width:100%}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item{width:100%}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content{font-size:28px;font-weight:600;letter-spacing:-.02em;color:var(--glx-ink);padding:12px 0;display:block}
.wp-block-navigation__responsive-container-close{position:absolute;top:22px;right:22px;color:var(--glx-ink)}

/* ---------- Trust strip: two columns on phones ---------- */
@media(max-width:700px){.galuxe-trust .wp-block-columns.is-not-stacked-on-mobile{display:grid!important;grid-template-columns:1fr 1fr}}

/* ---------- Focus rings: keyboard only ----------
   Clicking a link or the logo drew the focus box before anything happened.
   Mouse and touch focus is silent; keyboard focus keeps the ring. Text
   fields count as focus-visible in every browser, so their outline stays. */
:focus:not(:focus-visible){outline:none!important}

/* ---------- Mini-cart drawer ----------
   The slide-out cart inherits the page CTA sizing; in a 480px drawer that
   reads as slabs. Compact controls, quieter title. */
.wc-block-mini-cart__title{font-size:24px!important;letter-spacing:-.02em}
.wc-block-mini-cart__footer{padding:16px 24px 20px}
.wc-block-mini-cart__footer .wc-block-components-button{min-height:48px!important;height:48px!important;padding:0 22px!important;font-size:15px!important;font-weight:600;border-radius:999px!important;line-height:1!important}
.wc-block-mini-cart__footer .wc-block-mini-cart__footer-cart{border:1px solid var(--glx-ink)!important;color:var(--glx-ink)!important;background:transparent!important}
.wc-block-mini-cart__footer .wc-block-mini-cart__footer-checkout{background:var(--glx-ink)!important;color:#fff!important}
.wc-block-mini-cart__products-table .wc-block-components-quantity-selector{height:40px}
.wp-block-woocommerce-empty-mini-cart-contents-block{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;padding:0 24px;text-align:center}
.wp-block-woocommerce-empty-mini-cart-contents-block .wc-block-mini-cart__empty-cart-wrapper{display:flex;flex-direction:column;align-items:center;gap:18px;padding:0;width:100%}
.wp-block-woocommerce-empty-mini-cart-contents-block .wp-block-button,.wp-block-woocommerce-mini-cart-shopping-button-block{display:flex!important;justify-content:center!important;width:100%!important}
a.wc-block-mini-cart__shopping-button,.wc-block-mini-cart__shopping-button{display:inline-flex!important;align-items:center!important;justify-content:center!important;flex:0 0 auto!important;width:auto!important;max-width:100%!important;min-width:0!important;min-height:46px!important;height:46px!important;padding:0 28px!important;font-size:15px!important;font-weight:600!important;line-height:1!important;border:0!important;border-radius:999px!important;text-decoration:none!important}
.wc-block-mini-cart__shopping-button .wc-block-components-button__text{display:block!important;line-height:1!important;padding:0!important;margin:0!important}

/* ---------- Power Silo page ---------- */
.galuxe-trustrow{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--glx-line)}
.galuxe-trustrow>div{background:var(--wp--preset--color--galuxe-paper-alt,#F5F5F7);padding:22px 16px;text-align:center}
.galuxe-trustrow strong{display:block;font-size:14px;font-weight:600;letter-spacing:-.01em;color:var(--glx-text)}
.galuxe-trustrow em{display:block;font-style:normal;font-size:12.5px;color:var(--glx-muted);margin-top:3px}
.galuxe-trustrow .galuxe-trust-icon{display:block;font-size:20px;line-height:1;margin-bottom:8px}
.galuxe-bignum{text-align:center;font-size:clamp(64px,13vw,150px);font-weight:700;letter-spacing:-.05em;line-height:1;margin:0 0 6px;color:#fff}
.galuxe-bignum span{font-size:.24em;font-weight:600;letter-spacing:-.01em;margin-left:.12em;color:#C9C9D0}
.galuxe-lede{font-size:17px;color:var(--glx-muted);max-width:60ch;margin-inline:auto}
@media(max-width:700px){.galuxe-trustrow{grid-template-columns:1fr 1fr}}

.galuxe-silo-hero{margin:34px 0 30px}
.galuxe-silo-hero img{max-width:min(100%,300px);height:auto;display:block;margin-inline:auto}
.galuxe-usegrid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-top:var(--wp--preset--spacing--40)}
.galuxe-usegrid.is-three{grid-template-columns:repeat(3,1fr)}
.galuxe-use{border:1px solid var(--glx-line);border-radius:18px;padding:22px 20px}
.galuxe-use h3{font-size:16px;font-weight:600;letter-spacing:-.01em;margin:14px 0 4px;color:var(--glx-ink)}
.galuxe-use p{font-size:14px;color:var(--glx-muted);margin:0}
.galuxe-use.is-dark{border-color:#232327}
.galuxe-use.is-dark h3{color:#fff}
.galuxe-use.is-dark p{color:#C9C9D0}
.galuxe-chip-ic{display:inline-flex;width:26px;height:26px;color:var(--glx-ink)}
.galuxe-use.is-dark .galuxe-chip-ic,.galuxe-stage .galuxe-chip-ic{color:#fff}
.galuxe-chip-ic svg{width:100%;height:100%}
.galuxe-spec-row{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:6px}
.galuxe-chip{display:inline-flex;align-items:center;gap:9px;border:1px solid #2A2A2E;border-radius:999px;padding:9px 18px;font-size:14px;color:#fff}
.galuxe-chip .galuxe-chip-ic{width:18px;height:18px}
@media(max-width:900px){.galuxe-usegrid{grid-template-columns:repeat(2,1fr)}.galuxe-usegrid.is-three{grid-template-columns:repeat(3,1fr)}}
@media(max-width:600px){.galuxe-usegrid,.galuxe-usegrid.is-three{grid-template-columns:1fr 1fr}}

/* ---------- Buy bar scope ----------
   The bar names one product and one price, so it belongs on that product's
   page only. It would otherwise follow the visitor onto the Power Silo. */
/* Each bar names one product, so each appears only on that product's page. */
.galuxe-buybar{display:none!important}
body.page-id-21 .galuxe-buybar:not(.galuxe-buybar-silo){display:flex!important}
body.page-id-116 .galuxe-buybar-silo{display:flex!important}
body:is(.page-id-21,.page-id-116) footer.wp-block-template-part .galuxe-stage{padding-bottom:calc(var(--wp--preset--spacing--40) + 84px)!important}
body:not(.page-id-21) footer.wp-block-template-part .galuxe-stage{padding-bottom:var(--wp--preset--spacing--40)!important}

/* ---------- Category cards (homepage) ---------- */
.galuxe-cat-card figure{margin:0}
.galuxe-cat-card img{width:100%;height:auto;aspect-ratio:1/1;object-fit:contain;background:var(--wp--preset--color--galuxe-paper-alt,#F5F5F7);border-radius:22px;padding:24px;box-sizing:border-box}
.galuxe-cat-card h3{margin:18px 0 4px}
.galuxe-cat-card h3 a{color:var(--glx-ink);text-decoration:none}
.galuxe-cat-card h3 a:hover{opacity:.7}
.galuxe-cat-card p{color:var(--glx-muted);margin:0}
.galuxe-soon-tile{aspect-ratio:1/1;border-radius:22px;background:var(--wp--preset--color--galuxe-paper-alt,#F5F5F7);display:flex;align-items:center;justify-content:center;border:1px dashed var(--glx-line)}
.galuxe-soon-tile p{color:var(--glx-muted);font-size:15px;margin:0}
.galuxe-eyebrow{font-size:12px;letter-spacing:.22em;text-transform:uppercase;color:var(--glx-muted-dark,#A1A1A8);margin:0 0 14px}

/* ---------- Footer link lists ---------- */
.galuxe-footlinks{list-style:none;margin:0}
.galuxe-footlinks li{margin:0 0 10px}
.galuxe-footlinks a{color:#C9C9D0;text-decoration:none}
.galuxe-footlinks a:hover{color:#fff}

/* ---------- Buy bar and footer clearance ----------
   An earlier edit dropped the desktop hide, so the bar sat over the footer. */
footer.wp-block-template-part .galuxe-stage{padding-bottom:calc(var(--wp--preset--spacing--40) + 84px)!important}

/* ---------- Product page (single-product.html template) ----------
   Styles WooCommerce's classic add-to-cart markup and the featured-image
   card. Ordinary blocks otherwise; the template stays drag and drop. */
.galuxe-pdp-media{background:var(--wp--preset--color--galuxe-paper-alt,#F5F5F7);border-radius:28px;display:flex;align-items:center;justify-content:center;padding:48px 40px;min-height:420px}
/* Contain, never cover: a tall product must not blow the panel open or crop. */
.galuxe-pdp-media img{max-width:min(100%,460px);max-height:420px;width:auto;height:auto;object-fit:contain!important}

/* ---------- Product hero (per-product templates) ---------- */
.galuxe-pdp-hero h1.galuxe-pdp-eyebrow{font-size:12px!important;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:#A1A1A8!important;margin:0 0 14px}
.galuxe-pdp-shot{margin:30px 0 26px}
.galuxe-pdp-shot img{max-width:min(100%,clamp(220px,40vw,400px));max-height:clamp(340px,66vh,820px);width:auto;height:auto;object-fit:contain!important;display:block;margin-inline:auto}
.galuxe-pdp-buy .wc-block-components-product-price,.galuxe-pdp-buy .price{display:block;text-align:center;font-size:26px;font-weight:600;color:#fff;margin:0 0 16px}
.galuxe-pdp-buy .price ins,.galuxe-pdp-buy .price bdi{color:#fff;text-decoration:none}
.galuxe-pdp-buy form.cart{justify-content:center}
.galuxe-pdp-buy input.qty{background:transparent!important;border-color:#3A3A3E!important;color:#fff!important}
.galuxe-pdp-buy button.single_add_to_cart_button{background:#fff!important;color:var(--glx-ink)!important}
.galuxe-pdp-buy button.single_add_to_cart_button:hover{background:#E6E6E9!important}
.galuxe-pdp-hero p.stock{text-align:center;color:#A1A1A8}
.single-product p.stock{font-size:14px;color:var(--glx-muted);margin:22px 0 0}
.single-product form.cart{display:flex;align-items:stretch;gap:12px;margin:14px 0 20px}
.single-product form.cart .quantity{display:flex}
.single-product form.cart input.qty{width:78px;height:52px;border:1px solid var(--glx-line);border-radius:14px;background:#fff;text-align:center;font-size:16px;font-family:inherit;-moz-appearance:textfield}
.single-product form.cart input.qty:focus{outline:2px solid var(--glx-ink);outline-offset:-1px}
.single-product form.cart button.single_add_to_cart_button{border:none;cursor:pointer;background:var(--glx-ink);color:#fff;border-radius:999px;height:52px;padding:0 36px;font-size:16px;font-weight:600;font-family:inherit;transition:opacity .15s ease}
.single-product form.cart button.single_add_to_cart_button:hover{opacity:.82}
.galuxe-pdp-trust{margin-top:2px}
.single-product .wc-block-store-notices{max-width:1200px;margin:16px auto 0;padding:0 var(--wp--style--root--padding-right,24px)}
.single-product .woocommerce-message,.single-product .woocommerce-info,.single-product .woocommerce-error{background:var(--wp--preset--color--galuxe-paper-alt,#F5F5F7);border:1px solid var(--glx-line);border-radius:14px;padding:14px 18px;font-size:15px;color:var(--glx-text);list-style:none}
.single-product .woocommerce-message a.button,.single-product .woocommerce-error a.button{float:right;background:var(--glx-ink);color:#fff;border-radius:999px;padding:6px 16px;font-size:14px;font-weight:600;text-decoration:none}
.single-product h1.wp-block-post-title{font-size:clamp(34px,5vw,56px);line-height:1.05;margin:0}
@media(max-width:781px){.galuxe-pdp-media{min-height:0;padding:36px 24px}.single-product h1.wp-block-post-title{margin-top:8px}}

/* ---------- WooCommerce forms: shared field styling ----------
   Cart, checkout and account inputs, including the Mora LGA and landmark
   fields, which are ordinary Woo form rows and inherit all of this. */
body.woocommerce-page .input-text,body.woocommerce-page select,body.woocommerce-page textarea{border:1px solid var(--glx-line);border-radius:12px;background:#fff;padding:12px 14px;font-size:15px;font-family:inherit;color:var(--glx-text);width:100%;box-sizing:border-box}
body.woocommerce-page .input-text:focus,body.woocommerce-page select:focus,body.woocommerce-page textarea:focus{outline:2px solid var(--glx-ink);outline-offset:-1px}
body.woocommerce-page form .form-row label{font-size:13px;font-weight:500;color:var(--glx-muted);margin-bottom:4px}
body.woocommerce-page form .form-row{margin-bottom:14px}
/* Woo paints validated fields green and invalid ones red from its own
   stylesheet. Monochrome system: validated looks like any field, invalid
   gets one restrained red. */
body.woocommerce-page form .form-row.woocommerce-validated :is(input.input-text,select,textarea){border-color:var(--glx-line)!important}
body.woocommerce-page form .form-row.woocommerce-invalid :is(input.input-text,select,textarea){border-color:#D70015!important}
body.woocommerce-page form .form-row.woocommerce-invalid label{color:var(--glx-muted)!important}
/* Fallback if anything re-enables selectWoo: its drawn box takes our field
   metrics instead of its own. */
.select2-container--default .select2-selection--single{height:48px!important;border:1px solid var(--glx-line)!important;border-radius:12px!important;background:#fff!important}
.select2-container--default .select2-selection--single .select2-selection__rendered{line-height:46px!important;padding-left:14px!important;color:var(--glx-text)!important}
.select2-container--default .select2-selection--single .select2-selection__arrow{height:46px!important;right:8px!important}
/* Uniform control metrics, hard-locked so no other stylesheet or native
   browser chrome can vary them. Selects drop OS appearance and carry our
   own chevron, so a select and an input are visually identical boxes. */
body.woocommerce-page form :is(input.input-text,select){height:48px!important;border:1px solid var(--glx-line)!important;border-radius:12px!important;background-color:#fff!important;padding:0 14px!important;font-size:15px!important;color:var(--glx-text)!important;box-shadow:none!important}
body.woocommerce-page form select{-webkit-appearance:none!important;appearance:none!important;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M4 6l4 4 4-4' stroke='%230A0A0A' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")!important;background-repeat:no-repeat!important;background-position:right 14px center!important;background-size:16px!important;padding-right:40px!important}
body.woocommerce-page form .form-row label{display:block;margin:0 0 6px;min-height:20px}
body.woocommerce-page .woocommerce-billing-fields__field-wrapper>.form-row{display:flex;flex-direction:column;justify-content:flex-end}
body.woocommerce-page form .form-row-first{float:left;width:48.5%;clear:left}
body.woocommerce-page form .form-row-last{float:right;width:48.5%}
body.woocommerce-page form .form-row-wide{clear:both}
body.woocommerce-page .woocommerce-message,body.woocommerce-page .woocommerce-info,body.woocommerce-page .woocommerce-error{background:var(--wp--preset--color--galuxe-paper-alt,#F5F5F7);border:1px solid var(--glx-line);border-radius:14px;padding:14px 18px;font-size:15px;color:var(--glx-text);list-style:none;margin-bottom:20px}
body.woocommerce-page .woocommerce-message a.button,body.woocommerce-page .woocommerce-info a.button,body.woocommerce-page .woocommerce-error a.button{float:right;background:var(--glx-ink);color:#fff;border-radius:999px;padding:6px 16px;font-size:14px;font-weight:600;text-decoration:none}
body.woocommerce-page .woocommerce a.button,body.woocommerce-page button.button{background:var(--glx-ink);color:#fff;border:none;border-radius:999px;padding:12px 26px;font-size:15px;font-weight:600;font-family:inherit;cursor:pointer}

/* ---------- Checkout ----------
   The classic shortcode form laid out as form on the left, a sticky order
   summary card on the right. Stacks to one column on phones. */
body.woocommerce-checkout form.woocommerce-checkout{display:grid;grid-template-columns:minmax(0,1fr) 400px;grid-template-rows:auto auto 1fr;column-gap:56px;align-items:start}
/* The 1fr filler row absorbs the tall left column's height, so the summary
   panel's row stays content-sized and its top aligns with the form. */
body.woocommerce-checkout #customer_details{grid-column:1;grid-row:1/4}
body.woocommerce-checkout #order_review_heading{grid-column:2;grid-row:1;margin:0 0 14px;font-size:20px}
body.woocommerce-checkout #order_review{grid-column:2;grid-row:2;background:var(--wp--preset--color--galuxe-paper-alt,#F5F5F7);border-radius:22px;padding:24px}
body.woocommerce-checkout #customer_details .col-1,body.woocommerce-checkout #customer_details .col-2{float:none;width:100%}
body.woocommerce-checkout #customer_details h3{font-size:20px;margin:0 0 14px}
/* Field pairs share a row via grid, immune to Woo's float classes and its
   client-side locale re-sorting. State first, LGA second, by DOM order. */
body.woocommerce-checkout .woocommerce-billing-fields__field-wrapper{display:grid;grid-template-columns:1fr 1fr;column-gap:16px}
body.woocommerce-checkout .woocommerce-billing-fields__field-wrapper>.form-row{grid-column:1/-1;float:none;width:100%;margin-bottom:14px}
body.woocommerce-checkout #billing_first_name_field{grid-column:1}
body.woocommerce-checkout #billing_last_name_field{grid-column:2}
body.woocommerce-checkout #billing_state_field{grid-column:1}
body.woocommerce-checkout #billing_lga_field{grid-column:2}
@media(max-width:600px){body.woocommerce-checkout .woocommerce-billing-fields__field-wrapper{grid-template-columns:1fr}body.woocommerce-checkout .woocommerce-billing-fields__field-wrapper>.form-row{grid-column:1/-1!important}}
body.woocommerce-checkout table.shop_table{width:100%;border:none;border-collapse:collapse;font-size:15px}
body.woocommerce-checkout table.shop_table th,body.woocommerce-checkout table.shop_table td{border:none;border-bottom:1px solid var(--glx-line);padding:11px 0;text-align:left;color:var(--glx-text)}
body.woocommerce-checkout table.shop_table td:last-child,body.woocommerce-checkout table.shop_table th:last-child{text-align:right}
body.woocommerce-checkout table.shop_table tr.order-total td,body.woocommerce-checkout table.shop_table tr.order-total th{border-bottom:none;font-weight:700;font-size:17px}
body.woocommerce-checkout #payment{background:transparent}
body.woocommerce-checkout #payment ul.payment_methods{border:none;padding:14px 0 0;margin:0}
body.woocommerce-checkout #payment ul.payment_methods li{background:#fff;border:1px solid var(--glx-line);border-radius:14px;padding:12px 14px;margin-bottom:10px;list-style:none}
body.woocommerce-checkout #payment ul.payment_methods li label{font-weight:600;font-size:15px}
body.woocommerce-checkout #payment div.payment_box{background:transparent;padding:8px 0 0;font-size:14px;color:var(--glx-muted)}
body.woocommerce-checkout #payment div.payment_box::before{display:none}
body.woocommerce-checkout #payment input[type=radio]{accent-color:var(--glx-ink)}
body.woocommerce-checkout #place_order{width:100%;background:var(--glx-ink);color:#fff;border:none;border-radius:999px;height:54px;font-size:16px;font-weight:600;font-family:inherit;cursor:pointer;margin-top:14px;transition:opacity .15s ease}
body.woocommerce-checkout #place_order:hover{opacity:.82}
body.woocommerce-checkout .woocommerce-terms-and-conditions-wrapper{font-size:13px;color:var(--glx-muted)}
@media(max-width:960px){body.woocommerce-checkout form.woocommerce-checkout{display:block}body.woocommerce-checkout #order_review{position:static;margin-top:24px}}

/* ---------- Cart ---------- */
body.woocommerce-cart table.shop_table{border:none;border-collapse:collapse;font-size:15px}
body.woocommerce-cart table.shop_table th,body.woocommerce-cart table.shop_table td{border:none;border-bottom:1px solid var(--glx-line);padding:14px 10px;text-align:left}
body.woocommerce-cart table.shop_table img{width:72px;border-radius:14px}
body.woocommerce-cart .product-remove a{color:var(--glx-muted);font-size:20px;text-decoration:none}
body.woocommerce-cart input.qty{width:70px;border:1px solid var(--glx-line);border-radius:12px;padding:10px;text-align:center;font-size:15px}
body.woocommerce-cart .cart_totals{box-sizing:border-box;background:var(--wp--preset--color--galuxe-paper-alt,#F5F5F7);border-radius:22px;padding:24px}
body.woocommerce-cart .cart_totals h2{font-size:20px;margin:0 0 10px}
body.woocommerce-cart .cart_totals table.shop_table td,body.woocommerce-cart .cart_totals table.shop_table th{padding:11px 0}
body.woocommerce-cart .wc-proceed-to-checkout{padding:0;margin:18px 0 0}
body.woocommerce-cart .wc-proceed-to-checkout a.checkout-button{display:flex;align-items:center;justify-content:center;height:54px;padding:0;line-height:1;background:var(--glx-ink);color:#fff;border-radius:999px;font-size:16px;font-weight:600;text-decoration:none;transition:opacity .15s ease}
body.woocommerce-cart .wc-proceed-to-checkout a.checkout-button:hover{opacity:.82}
body.woocommerce-cart button[name=update_cart]{background:transparent;border:1px solid var(--glx-line);border-radius:999px;color:var(--glx-text);padding:11px 22px;font-size:14px;font-weight:600;font-family:inherit;cursor:pointer}

/* ---------- Order received (Woo 11 block confirmation template) ---------- */
body.woocommerce-order-received ul.wc-block-order-confirmation-summary-list{list-style:none;display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;padding:0;margin:18px 0 8px;border:none}
body.woocommerce-order-received li.wc-block-order-confirmation-summary-list-item{border:1px solid var(--glx-line);border-radius:16px;padding:14px 16px;margin:0;display:block}
body.woocommerce-order-received .wc-block-order-confirmation-summary-list-item__key{display:block;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--glx-muted)}
body.woocommerce-order-received .wc-block-order-confirmation-summary-list-item__value{display:block;font-size:16px;font-weight:600;color:var(--glx-ink);margin-top:4px}
body.woocommerce-order-received .wc-block-order-confirmation-totals table{width:100%;border:none;border-collapse:collapse;font-size:15px}
body.woocommerce-order-received .wc-block-order-confirmation-totals table th,body.woocommerce-order-received .wc-block-order-confirmation-totals table td{border:none;border-bottom:1px solid var(--glx-line);padding:12px 0;text-align:left}
body.woocommerce-order-received .wc-block-order-confirmation-totals table td:last-child,body.woocommerce-order-received .wc-block-order-confirmation-totals table th:last-child{text-align:right}
body.woocommerce-order-received .wc-block-order-confirmation-totals a{text-decoration:none;font-weight:600;color:var(--glx-ink)}
body.woocommerce-order-received .wc-block-order-confirmation-shipping-wrapper,body.woocommerce-order-received .wc-block-order-confirmation-billing-wrapper{border:1px solid var(--glx-line);border-radius:16px;padding:18px 20px;margin:0}
body.woocommerce-order-received :is(.wc-block-order-confirmation-shipping-wrapper,.wc-block-order-confirmation-billing-wrapper) :is(div,address){border:none!important;box-shadow:none!important;padding:0!important;margin:0!important;background:transparent!important}
body.woocommerce-order-received .wc-block-order-confirmation-address-wrapper address{font-style:normal;font-size:15px;line-height:1.6;color:var(--glx-text)}
body.woocommerce-order-received .wc-block-order-confirmation-shipping-wrapper p,body.woocommerce-order-received .wc-block-order-confirmation-billing-wrapper p{margin:8px 0 0;font-size:15px;color:var(--glx-text)}

/* ---------- Order received (legacy classic classes, kept for safety) ---------- */
body.woocommerce-order-received .woocommerce-thankyou-order-received{font-size:clamp(24px,3.4vw,34px);font-weight:700;letter-spacing:-.02em;color:var(--glx-ink);margin:0 0 22px}
body.woocommerce-order-received ul.woocommerce-order-overview{list-style:none;margin:0 0 30px;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}
body.woocommerce-order-received ul.woocommerce-order-overview li{border:1px solid var(--glx-line)!important;border-radius:16px;padding:14px 16px!important;margin:0!important;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--glx-muted);float:none!important;width:auto!important}
body.woocommerce-order-received ul.woocommerce-order-overview li strong{display:block;font-size:16px;text-transform:none;letter-spacing:0;color:var(--glx-ink);margin-top:4px}
body.woocommerce-order-received table.shop_table{width:100%;border:none;border-collapse:collapse;font-size:15px}
body.woocommerce-order-received table.shop_table th,body.woocommerce-order-received table.shop_table td{border:none;border-bottom:1px solid var(--glx-line);padding:11px 0;text-align:left}
body.woocommerce-order-received table.shop_table td:last-child,body.woocommerce-order-received table.shop_table th:last-child{text-align:right}
body.woocommerce-order-received section.woocommerce-customer-details address{border:1px solid var(--glx-line);border-radius:16px;padding:16px 18px;font-style:normal;font-size:15px;color:var(--glx-text)}

/* ---------- Cart v2 ----------
   Two-column cart: items left, totals card right, mirroring checkout.
   Also pins the page title to the same container edge as the content,
   which the stock template did not do. */
body:is(.woocommerce-cart,.woocommerce-checkout,.woocommerce-account) main .wp-block-post-title,
body:is(.woocommerce-cart,.woocommerce-checkout,.woocommerce-account) .entry-content{max-width:1200px!important;margin-left:auto!important;margin-right:auto!important}
/* Product pages must stay full-bleed: their sections manage their own width. */
body.single-product .entry-content,body.single-product .wp-block-post-content{max-width:none!important;margin-left:0!important;margin-right:0!important;padding-left:0!important;padding-right:0!important}
body.woocommerce-cart .entry-content>.woocommerce:has(form.woocommerce-cart-form){display:grid;grid-template-columns:minmax(0,1fr) 400px;column-gap:56px;align-items:start}
body.woocommerce-cart .entry-content>.woocommerce>.woocommerce-notices-wrapper{grid-column:1/-1;grid-row:1;margin:0}
body.woocommerce-cart form.woocommerce-cart-form{grid-column:1;grid-row:2;margin:0;min-width:0}
body.woocommerce-cart .cart-collaterals{grid-column:2;grid-row:2;position:sticky;top:24px;float:none;width:auto;min-width:0}
body.woocommerce-cart .cart-collaterals .cart_totals{float:none;width:100%}
body.woocommerce-cart .woocommerce-shipping-destination{display:none}
body.woocommerce-cart table.shop_table td.actions{border-bottom:none;padding:16px 0 0;text-align:right}
body.woocommerce-cart .product-remove a.remove{color:var(--glx-muted)!important;background:transparent!important;font-weight:400}
body.woocommerce-cart .product-remove a.remove:hover{color:var(--glx-ink)!important;background:transparent!important}
body.woocommerce-cart td.product-name a{text-decoration:none;font-weight:600;color:var(--glx-ink)}
body.woocommerce-cart table.shop_table th.product-subtotal,body.woocommerce-cart table.shop_table td.product-subtotal{text-align:right}
body.woocommerce-cart .cart_totals table.shop_table td{text-align:right}
@media(max-width:960px){body.woocommerce-cart .entry-content>.woocommerce:has(form.woocommerce-cart-form){display:block}body.woocommerce-cart .cart-collaterals{position:static;margin-top:24px}}


/* ---------- Buy bar: Safari repaint ---------- */
/* backdrop-filter on an element that is position:fixed AND animated with a
   transform makes Safari promote it to its own compositing layer and then
   fail to update that layer during momentum scroll. The bar strands itself
   part-way up the screen, and sometimes paints twice. This is the same
   property that imprisoned the mobile menu overlay in the header, fixed the
   same way. At 94% opacity behind a 20px blur the bar already read as solid
   white, so making it opaque costs nothing visually. */
.galuxe-buybar{background:#fff;backdrop-filter:none;-webkit-backdrop-filter:none}
