/* GSI Cricket theme. Built by bin/build.php from assets/css/parts. Edit the parts, not this file. */

/* ==== 00-tokens.css ==== */
/* Tokens: the prototype's :root (prototype/assets/css/01-tokens.css), verbatim, then the starter's
   names for the same values, so its parts (02-base, 20-columns, 52, 55) and the plugin's blocks read
   GSI's palette. The page's own ground is the dark one (ink). */
:root{
  color-scheme:dark;

  /* ---- grounds (dark) ---- */
  --ink:#120F0E;        /* page ground, warm red bias so the black shield still separates */
  --ink-2:#1B1615;      /* raised: cards, inputs, panels */
  --ink-3:#272020;      /* hairline */
  --ink-4:#3A3130;      /* border, stronger */
  --ink-rgb:18 15 14;
  --fg:#F4EDE4;         /* 16.4:1 on --ink, 15.4:1 on --ink-2 */
  --fg-dim:#BDB1A6;     /*  9.1:1 on --ink,  8.5:1 on --ink-2 */
  --fg-mute:#978B80;    /*  5.7:1 on --ink,  5.4:1 on --ink-2 */
  --fg-rgb:244 237 228;

  /* ---- second ground: willow cream ---- */
  --cream:#EFE3CF;      /* a bat face */
  --cream-2:#E4D5BA;    /* raised on cream */
  --cream-3:#D6C4A4;    /* hairline on cream */
  --cream-rgb:239 227 207;
  --c-ink:#1A1412;      /* 14.4:1 on --cream, 12.6:1 on --cream-2 */
  --c-dim:#5E5248;      /*  6.0:1 on --cream,  5.2:1 on --cream-2 */
  --c-mute:#756659;     /*  4.4:1 on --cream: captions ≥ 18.66px bold or ≥ 24px only */
  --c-ink-rgb:26 20 18;

  /* ---- the one accent ---- */
  --accent:#E0141F;     /* GSI red. 3.9:1 on --ink: large text / UI only (≥ 24px, or 18.66px bold) */
  --accent-hi:#FF2A33;  /* 5.1:1 on --ink: small accent text (prices, links) on dark */
  --on-accent:#FFF6F4;  /* 4.6:1 on --accent: button labels */
  --accent-deep:#B80F18;/* 5.3:1 on --cream: small accent text on the cream ground */
  --accent-rgb:224 20 31;

  /* ---- silver, from the shield bevel ---- */
  --silver:#C9CBD0;     /* 11.8:1 on --ink */
  --silver-dim:#8E9299; /*  6.1:1 on --ink: UI borders, icons (≥ 3:1) */

  /* ---- semantic, a separate axis ---- */
  --ok:#5FD38D; --warn:#F2C14E; --bad:#FF6B6B;

  /* ---- type ---- */
  --font-display:'Sofia Sans Extra Condensed','Arial Narrow',system-ui,sans-serif;
  --font-body:'Sofia Sans',system-ui,-apple-system,sans-serif;

  /* the scale: neutral, ordered largest to smallest (custom-typography §1b).
     Hero : body ≥ 6:1 at 1280 (108px : 17px), ≥ 2.5:1 at 375 (56px : 17px). */
  --fs-01:clamp(3.5rem, 7.2vw + 1rem, 8.5rem);
  --fs-02:clamp(2.75rem, 4.6vw + 1rem, 5.5rem);
  --fs-03:clamp(2.1rem, 2.6vw + 1rem, 3.6rem);
  --fs-04:clamp(1.6rem, 1.4vw + 1rem, 2.25rem);
  --fs-05:1.5rem;
  --fs-06:1.25rem;
  --fs-07:1.15rem;
  --fs-08:1.0625rem;   /* 17px body */
  --fs-09:0.9rem;
  --fs-10:0.75rem;    /* 12px floor for anything functional */

  --t-hero:var(--fs-01);
  --t-display:var(--fs-02);
  --t-section:var(--fs-03);
  --t-sub:var(--fs-04);
  --t-stat:var(--fs-05);
  --t-card:var(--fs-06);
  --t-lead:var(--fs-07);
  --t-body:var(--fs-08);
  --t-small:var(--fs-09);
  --t-label:var(--fs-10);

  --lh-display:.9;
  --lh-tight:1.1;
  --lh-body:1.55;
  --ls-display:-.015em;
  --ls-label:.14em;

  /* ---- spacing (03 §1, Premium roles from 08 §2) ---- */
  --s-1:.25rem; --s-2:.5rem; --s-3:.75rem; --s-4:1rem; --s-5:1.5rem; --s-6:2rem;
  --s-7:3rem; --s-8:4rem; --s-9:6rem; --s-10:8rem; --s-11:10rem;
  --space-section:clamp(5rem, 10vw, 10rem);
  --space-section-lg:clamp(6rem, 13vw, 13rem);
  --space-section-sm:clamp(2.5rem, 5vw, 4rem);
  --space-block:clamp(2rem, 4vw, 3.5rem);
  --space-element:var(--s-5);
  --space-tight:var(--s-3);
  --container:1280px;
  --container-wide:1600px;
  --container-prose:680px;
  --gutter:clamp(1rem, 4vw, 3rem);

  /* ---- radius: industrial-premium, harder corners (08 §1) ---- */
  --r-sm:6px; --r-md:10px; --r-lg:16px; --r-pill:999px; --frame-pad:6px;

  /* ---- depth: dark ground → rings and surface steps, shadows only on cream ---- */
  --shadow-tint:12 8 6;
  --shadow-soft:0 1px 1px rgb(var(--shadow-tint)/.06),0 12px 24px -12px rgb(var(--shadow-tint)/.18),0 32px 64px -32px rgb(var(--shadow-tint)/.28);
  --shadow-float:0 2px 4px rgb(var(--shadow-tint)/.08),0 24px 48px -16px rgb(var(--shadow-tint)/.28),0 60px 120px -40px rgb(var(--shadow-tint)/.40);
  --ring:0 0 0 1px rgb(var(--fg-rgb)/.10);
  --ring-strong:0 0 0 1px rgb(var(--fg-rgb)/.18);
  --ring-cream:0 0 0 1px rgb(var(--c-ink-rgb)/.12);
  --border-ui:rgb(142 146 153/.55); /* silver-dim at alpha: inputs, chips (≥ 3:1 on both grounds) */

  /* ---- the concept spine: willow grain as fine vertical rules ---- */
  --grain:repeating-linear-gradient(90deg, rgb(var(--fg-rgb)/.045) 0 1px, transparent 1px 11px),
          repeating-linear-gradient(90deg, rgb(var(--fg-rgb)/.03) 0 1px, transparent 1px 29px);
  --grain-cream:repeating-linear-gradient(90deg, rgb(var(--c-ink-rgb)/.06) 0 1px, transparent 1px 11px),
          repeating-linear-gradient(90deg, rgb(var(--c-ink-rgb)/.04) 0 1px, transparent 1px 29px);

  /* ---- motion: two easings ---- */
  --ease-spring:cubic-bezier(.32,.72,0,1);
  --ease-out-expo:cubic-bezier(.16,1,.3,1);
  --dur-fast:120ms; --dur-base:240ms; --dur-slow:480ms; --dur-reveal:900ms; --dur-hero:1100ms;

  /* ---- ui ---- */
  --btn-h:3rem; --btn-h-lg:3.5rem; --btn-pad-x:1.5rem;
  --icon:1.25rem;
  --focus-ring:2px; --focus-color:var(--accent-hi);
  --header-h:72px; --topbar-h:36px;
  --z-base:0; --z-sticky:100; --z-header:200; --z-dropdown:300; --z-overlay:400; --z-modal:500;
}

/* The starter's names: the two grounds and the page's (02-base.css reads these). */
:root{
  --r:var(--r-md); --btn-h-md:2.75rem; --btn-pad-x:1.5rem; --focus-offset:3px;
  --lh-panel:var(--lh-tight); --lh-lead:1.5; --t-panel:var(--t-sub); --ls-btn:0; --ease-out:var(--ease-out-expo); --z-raised:10;
  --accent-dark:#C9101A;
  --dark-bg:var(--ink); --dark-c:var(--fg); --dark-c-dim:var(--fg-dim); --dark-c-mute:var(--fg-mute);
  --dark-line:var(--ink-3); --dark-hair:var(--ink-3); --dark-raised:var(--ink-2); --dark-em:var(--accent-hi); --dark-field-line:var(--silver-dim);
  --light-bg:var(--cream); --light-c:var(--c-ink); --light-c-dim:var(--c-dim); --light-c-mute:var(--c-mute);
  --light-line:var(--cream-3); --light-hair:var(--cream-3); --light-raised:var(--cream-2); --light-em:var(--accent-deep); --light-field-line:var(--c-mute);
  --page-bg:var(--dark-bg); --page-c:var(--dark-c); --page-c-dim:var(--dark-c-dim); --page-c-mute:var(--dark-c-mute);
  --page-line:var(--dark-line); --page-hair:var(--dark-hair); --page-raised:var(--dark-raised); --page-em:var(--dark-em); --page-field-line:var(--dark-field-line);
  --tick:var(--accent);
}

/* The parent's names for the same values: its own CSS and the blocks plugin read these. */
:root{
  --font-heading:var(--font-display);
  --body-size:var(--t-body);
  --container-max-width:calc(var(--container) + 2 * var(--gutter));
  --container-padding:var(--gutter);
}


/* ==== 01-fonts.css ==== */
/* The self-hosted faces, from the prototype's assets/fonts (latin subset, OFL). Display: Sofia Sans Extra Condensed 800 + italic. Body: Sofia Sans 400–600 (variable). Each checked upright, with digits, ₹ and curly quotes. */
@font-face{font-family:'Sofia Sans';font-style:normal;font-weight:400 600;font-display:swap;src:url('../fonts/SofiaSans-var.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+20B9,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Sofia Sans Extra Condensed';font-style:italic;font-weight:800;font-display:swap;src:url('../fonts/SofiaSansExtraCondensed-800i.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+20B9,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Sofia Sans Extra Condensed';font-style:normal;font-weight:800;font-display:swap;src:url('../fonts/SofiaSansExtraCondensed-800.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+20B9,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}


/* ==== 02-base.css ==== */
/* Base: the reset, the two grounds, section rhythm, the container, type roles, the flow of a
   text column, the eyebrow, buttons, links and the phone line, on WordPress's markup.
   From Eastern Christmas Lights (4 Oct 2026), where each rule was measured against the
   prototype at 1440, 1169, 768 and 390 (check-site.mjs). Written against the house tokens
   (00-tokens.css); a site changes values there, and adds its own looks in 40-… parts. */

/* ---- reset ------------------------------------------------------------------------------- */
/* The parent sets overflow-x:hidden on html AND body, which makes body a scroll box: a sticky
   header or a pinned hero then stops sticking. clip on html stops sideways scroll without that. */
html{-webkit-text-size-adjust:100%;scroll-padding-top:calc(var(--header-h) + var(--s-4));overflow-x:clip}
body{margin:0;overflow-x:visible;background:var(--page-bg);color:var(--page-c);font-family:var(--font-body);font-size:var(--t-body);font-weight:400;line-height:var(--lh-body);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img{display:block;max-width:100%;height:auto}
h1,h2,h3,h4,h5,h6,p,ul,ol,figure,blockquote{margin:0}   /* plain, not :where(): the parent's p{margin:0 0 1rem} loads first at the same weight */
:where(ul,ol){padding:0;list-style:none}
a,a:hover{color:inherit}
button{font:inherit;color:inherit}
:where(a,button,summary,input,select,textarea,[tabindex]):focus-visible{outline:var(--focus-ring) solid var(--focus,var(--accent));outline-offset:var(--focus-offset);border-radius:4px}
[hidden]{display:none!important}

/* ---- grounds: every section sets its own palette, so nothing inside has to guess ---------- */
/* A core Group picks a ground with its style (Dark band / Light band); an Arenex block, which
   has a style of its own, with its Background colour (the palette's Dark or Light). */
:root{--bg:var(--page-bg);--c:var(--page-c);--c-dim:var(--page-c-dim);--c-mute:var(--page-c-mute);--line:var(--page-line);--hair:var(--page-hair);--raised:var(--page-raised);--em:var(--page-em);--focus:var(--page-em);--field-line:var(--page-field-line)}
.is-style-band-dark,.is-style-panel-dark,.has-dark-background-color,.has-primary-background-color,.arenex-steps.is-style-dark{
  --bg:var(--dark-bg);--c:var(--dark-c);--c-dim:var(--dark-c-dim);--c-mute:var(--dark-c-mute);--line:var(--dark-line);--hair:var(--dark-hair);--raised:var(--dark-raised);--em:var(--dark-em);--focus:var(--dark-em);--field-line:var(--dark-field-line)}
.is-style-band-light,.is-style-form-card,.has-light-background-color{
  --bg:var(--light-bg);--c:var(--light-c);--c-dim:var(--light-c-dim);--c-mute:var(--light-c-mute);--line:var(--light-line);--hair:var(--light-hair);--raised:var(--light-raised);--em:var(--light-em);--focus:var(--light-em);--field-line:var(--light-field-line)}
.is-style-band-dark,.is-style-band-light,.arenex-steps.is-style-dark{background:var(--bg);color:var(--c)}
.has-dark-background-color,.has-primary-background-color,.has-light-background-color{color:var(--c)}

/* GSI: every rule below that would space or paint a block is scoped to blocks without a gsi- class;
   those carry the prototype's own classes and its CSS (03, 30, 35, 89) does it (04-wp.css). */
/* ---- section rhythm: padding only, one token, same-ground neighbours join ----------------- */
.site-main{display:flow-root}
.site-main>:is(.wp-block-group.alignfull:not([class*="gsi-"]),.arenex-split,.arenex-cards,.arenex-steps,.arenex-strip,.arenex-project-gallery,.arenex-process,.arenex-testimonials){margin:0;padding-block:var(--space-section)}
/* two bands on the same ground read as one: the second loses its top padding (custom-design 03 §2) */
.site-main>:is(.is-style-band-light,.has-light-background-color)+:is(.is-style-band-light,.has-light-background-color),
.site-main>:is(.is-style-band-dark,.has-dark-background-color,.has-primary-background-color,.arenex-steps.is-style-dark)+:is(.is-style-band-dark,.has-dark-background-color,.has-primary-background-color,.arenex-steps.is-style-dark){padding-top:0}

/* every section paints its own ground, so nothing pinned behind it (a hero with position:sticky)
   shows through as it scrolls up over it. Weightless: a section's own background still wins.
   Eastern, 6 Oct 2026: the hero's heading and buttons read through a night Split and Strip. */
:where(.site-main>*){background-color:var(--bg)}

/* the container: a full-width Group's and Cover's contents (the plugin's blocks use
   --container-max-width, 00-tokens.css, for the same edge) */
.wp-block-group.alignfull:not([class*="gsi-"])>.wp-block-group__inner-container,
.wp-block-cover.alignfull>.wp-block-cover__inner-container{width:min(var(--container),100% - 2*var(--gutter));max-width:none;margin-inline:auto;padding:0}

/* ---- type roles ---------------------------------------------------------------------------- */
/* :where() keeps these at element weight, so a role class (.t-display, .gsi-shop__count) wins (GSI). */
:where(.site-main) :is(h1,h2,h3,h4){font-family:var(--font-display);font-weight:800;letter-spacing:var(--ls-display);text-wrap:balance;text-transform:none;color:inherit;margin:0}
:where(.site-main) h1{font-size:var(--t-hero);line-height:var(--lh-display)}
:where(.site-main) h2{font-size:var(--t-section);line-height:var(--lh-display)}
:where(.site-main) h3{font-size:var(--t-card);line-height:var(--lh-panel)}
:where(.site-main) p{font-size:inherit;line-height:inherit}
.site-main .is-style-lead{font-size:var(--t-lead);line-height:var(--lh-lead);color:var(--c-dim)}

/* Body text in any block container. A styled paragraph (is-style-…) overrides it. */
:is(.wp-block-group:not([class*="gsi-"])>.wp-block-group__inner-container,.wp-block-column,.acf-innerblocks-container:not([class*="gsi-"] *),.wp-block-cover__inner-container,.wp-block-accordion-panel)>p:not([class*="is-style-"]){color:var(--c-dim);max-width:65ch;text-wrap:pretty}

/* Flow: the gaps between blocks in a text column, as a prototype's heading block spaces them:
   eyebrow → heading tight, heading → text 24px, text → text 16px, buttons 24px. */
:is(.wp-block-group:not([class*="gsi-"])>.wp-block-group__inner-container,.wp-block-column,.acf-innerblocks-container:not([class*="gsi-"] *),.wp-block-cover__inner-container)>*+*{margin-top:var(--s-4)}
:is(.wp-block-group:not([class*="gsi-"])>.wp-block-group__inner-container,.wp-block-column,.acf-innerblocks-container:not([class*="gsi-"] *),.wp-block-cover__inner-container)>.is-style-eyebrow+*{margin-top:0}
:is(.wp-block-group:not([class*="gsi-"])>.wp-block-group__inner-container,.wp-block-column,.acf-innerblocks-container:not([class*="gsi-"] *),.wp-block-cover__inner-container)>:is(h1,h2)+*{margin-top:var(--s-5)}
:is(.wp-block-group:not([class*="gsi-"])>.wp-block-group__inner-container,.wp-block-column,.acf-innerblocks-container:not([class*="gsi-"] *),.wp-block-cover__inner-container)>*+.wp-block-buttons{margin-top:var(--space-element)}
/* A band's heading (eyebrow, heading, lead) and its content: the heading's own 24px, then the
   block gap (a prototype's .head .t-section{margin-bottom:24px} and .head+*{margin-top:block}). */
.wp-block-group.alignfull:not([class*="gsi-"])>.wp-block-group__inner-container>h2+*:not(.is-style-lead){margin-top:calc(var(--s-5) + var(--space-block))}
.wp-block-group.alignfull:not([class*="gsi-"])>.wp-block-group__inner-container>h2+.is-style-lead+*{margin-top:var(--space-block)}

/* ---- the eyebrow (the plugin registers the style) ------------------------------------------ */
.site-main .is-style-eyebrow{display:flex;align-items:center;gap:var(--s-3);margin:0 0 var(--space-tight);font-family:var(--font-body);font-size:var(--t-label);font-weight:600;line-height:var(--lh-body);letter-spacing:var(--ls-label);text-transform:uppercase;color:var(--c-dim)}

/* ---- buttons: the theme's (.gs-btn) and the Buttons block share one look ---------------- */
.wp-block-buttons{display:flex;flex-wrap:wrap;gap:var(--s-3)}
.wp-block-buttons>.wp-block-button{margin:0}
.gs-btn,.wp-block-button:not([class*="gsi-"])>.wp-block-button__link{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);min-height:var(--btn-h-lg);padding:0 var(--btn-pad-x);border-radius:var(--r);border:2px solid transparent;font-family:var(--font-display);font-weight:700;font-size:1.0625rem;line-height:1;letter-spacing:var(--ls-btn);text-transform:uppercase;text-decoration:none;cursor:pointer;transition:background-color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out)}
.gs-btn--primary,.wp-block-button:not(.is-style-outline,.is-style-arrow-link,[class*="gsi-"])>.wp-block-button__link{background:var(--accent);color:var(--on-accent)}
.gs-btn--primary:hover,.wp-block-button:not(.is-style-outline,.is-style-arrow-link,[class*="gsi-"])>.wp-block-button__link:hover{background:var(--accent-dark);color:var(--on-accent)}
/* the second button in a row is the ghost one (a prototype's .btn--ghost); Outline makes any button one */
.gs-btn--ghost,.wp-block-button.is-style-outline>.wp-block-button__link,.wp-block-buttons>.wp-block-button:nth-child(2):not(.is-style-arrow-link,[class*="gsi-"])>.wp-block-button__link{background:transparent;border-color:currentColor;color:var(--c)}
.gs-btn--ghost:hover,.wp-block-button.is-style-outline>.wp-block-button__link:hover,.wp-block-buttons>.wp-block-button:nth-child(2):not(.is-style-arrow-link,[class*="gsi-"])>.wp-block-button__link:hover{background:var(--hair);color:var(--c)}
.gs-btn:active,.wp-block-button:not([class*="gsi-"])>.wp-block-button__link:active{transform:translateY(1px) scale(.99)}
.gs-btn svg{width:1.1em;height:1.1em;flex:none}

/* a link with an arrow: the Button style "Link with an arrow", and the paragraph style */
.wp-block-button.is-style-arrow-link>.wp-block-button__link,.site-main .is-style-link-arrow a{display:inline-flex;align-items:center;gap:var(--s-2);min-height:var(--btn-h-md);padding:0;border:0;border-radius:0;background:none;font-family:var(--font-body);font-size:inherit;font-weight:600;letter-spacing:0;text-transform:none;color:var(--c);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.2em;transition:text-decoration-thickness var(--dur-fast) var(--ease-out)}
.wp-block-button.is-style-arrow-link>.wp-block-button__link::after,.site-main .is-style-link-arrow a::after{content:"→";display:inline-block;text-decoration:none;transition:transform var(--dur-fast) var(--ease-out)}
.wp-block-button.is-style-arrow-link>.wp-block-button__link:hover,.site-main .is-style-link-arrow a:hover{text-decoration-thickness:2px;color:var(--c)}
.wp-block-button.is-style-arrow-link>.wp-block-button__link:hover::after,.site-main .is-style-link-arrow a:hover::after{transform:translateX(3px)}

/* ---- a phone number: label over a big number (paragraph "Phone number": a link holding two
   spans) and the "Call or text" line under buttons ------------------------------------------ */
.site-main :is(.is-style-phone,.is-style-link-arrow){display:flex;flex-direction:column;align-items:flex-start}   /* flex: no line box (and its strut) around the link */
.site-main .is-style-phone a{display:inline-grid;gap:2px;text-decoration:none}
.site-main .is-style-phone a>span:first-child{font-size:var(--t-label);font-weight:600;letter-spacing:var(--ls-label);text-transform:uppercase;color:var(--c-mute)}
.site-main .is-style-phone a>span:last-child{font-family:var(--font-display);font-weight:800;font-size:1.625rem;line-height:1.05;letter-spacing:.01em;color:var(--c);font-variant-numeric:tabular-nums;white-space:nowrap;text-decoration:underline;text-decoration-color:transparent;text-underline-offset:.15em;transition:text-decoration-color var(--dur-fast) var(--ease-out)}
.site-main .is-style-phone a:hover>span:last-child{text-decoration-color:currentColor}
.site-main .is-style-call{margin-top:var(--s-4);font-size:var(--t-small);color:var(--c-dim)}
.site-main .is-style-call a{color:var(--c);font-weight:600;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.2em;white-space:nowrap}

/* ---- photos the client places, rounded like a prototype's --------------------------------- */
.site-main .wp-block-image{margin:0}
.site-main .wp-block-image img{border-radius:var(--r-lg)}

/* ---- lists: reset padding and bullets, never margins (the flow rules above set those: a
   list-level margin:0 outweighs them, and every list sat flush under its paragraph) --------- */
.site-main .wp-block-list:not([class*="gsi-"] *){padding:0;list-style:none}
.site-main .is-style-ticks{display:grid;gap:var(--s-3);margin-top:var(--space-element)}
.site-main .is-style-ticks>li{display:grid;grid-template-columns:1.5rem 1fr;gap:var(--s-2);color:var(--c-dim)}
.site-main .is-style-ticks>li::before{content:"";width:1.25rem;height:1.25rem;margin-top:.2rem;background:var(--tick);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.25' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.25' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center/contain no-repeat}


/* ==== 03-components.css ==== */
/* Components: type roles, grounds, buttons, chips, cards, reviews, accordion, frames — from the prototype's assets/css/02-base.css, verbatim. Edit here, not in the prototype, from now on. */
/* Base: reset, type roles, grounds, containers, section rhythm, buttons, chips, cards, reveals. */
*,*::before,*::after{box-sizing:border-box}
html{overflow-x:clip;-webkit-text-size-adjust:100%;scroll-padding-top:calc(var(--header-h) + var(--s-4))}
body{margin:0;background:var(--ink);color:var(--fg);font-family:var(--font-body);font-size:var(--t-body);line-height:var(--lh-body);font-weight:400;-webkit-font-smoothing:antialiased;overflow-x:clip}
img,svg,video{display:block;max-width:100%;height:auto}
img{color:transparent}
[hidden]{display:none!important}
h1,h2,h3,h4{margin:0;font-family:var(--font-display);font-weight:800;line-height:var(--lh-display);letter-spacing:var(--ls-display);text-wrap:balance;scroll-margin-top:calc(var(--header-h) + var(--s-4))}
p{margin:0;max-width:var(--container-prose);text-wrap:pretty}
ul,ol{margin:0;padding:0;list-style:none}
a{color:inherit}
button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}
input,select,textarea{font:inherit;color:inherit}
strong{font-weight:600}
em{font-style:italic}
:focus-visible{outline:var(--focus-ring) solid var(--focus-color);outline-offset:3px}
::selection{background:var(--accent);color:var(--on-accent)}

/* ---- type roles ---- */
.t-hero{font-size:var(--t-hero);line-height:.88;letter-spacing:-.02em}
.t-display{font-size:var(--t-display);line-height:.9;letter-spacing:-.02em}
.t-section{font-size:var(--t-section);line-height:.94}
.t-sub{font-size:var(--t-sub);line-height:1.02;letter-spacing:-.01em}
.t-card{font-family:var(--font-display);font-size:var(--t-card);line-height:1.05;letter-spacing:0}
.t-lead{font-size:var(--t-lead);line-height:1.5;color:var(--fg-dim)}
.t-small{font-size:var(--t-small)}
.t-num{font-variant-numeric:tabular-nums}
.gsi-em{font-style:italic;color:var(--accent)} /* the one accent treatment inside a headline, ≥ 24px only */

/* eyebrow: small caps label with the red star. Max two eyebrow pills per page; plain eyebrows are fine */
.gsi-eyebrow{display:inline-flex;align-items:center;gap:var(--s-2);margin:0 0 var(--space-tight);font-size:var(--t-label);font-weight:600;letter-spacing:var(--ls-label);text-transform:uppercase;color:var(--fg-dim)}
.gsi-eyebrow::before{content:"";inline-size:.5rem;block-size:.5rem;background:var(--accent);clip-path:polygon(50% 0,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%)}
.gsi-num{font-family:var(--font-display);font-weight:800;font-size:var(--t-label);letter-spacing:.08em;color:var(--fg-mute);padding:.15rem .5rem;border-radius:var(--r-pill);box-shadow:var(--ring)}
.gsi-head{display:grid;gap:var(--space-tight);margin-block-end:var(--space-block);max-width:52rem}
.gsi-head p{color:var(--fg-dim)}
.gsi-head--center{margin-inline:auto;text-align:center;justify-items:center}

/* ---- grounds ---- */
.band-dark{background:var(--ink);color:var(--fg)}
.band-raised{background:var(--ink-2);color:var(--fg)}
.band-cream{background:var(--cream);color:var(--c-ink);color-scheme:light}
.band-cream .gsi-eyebrow,.band-cream .gsi-head p,.band-cream .t-lead{color:var(--c-dim)}
.band-cream .gsi-review__stars,.band-cream .gsi-em{color:var(--accent-deep)}
.band-cream .gsi-num{color:var(--c-dim);box-shadow:var(--ring-cream)}
.band-grain{background-image:var(--grain);background-color:var(--ink)}
.band-cream.band-grain{background-image:var(--grain-cream);background-color:var(--cream)}

/* ---- layout ---- */
.gsi-wrap{width:min(100% - 2*var(--gutter), var(--container));margin-inline:auto}
.gsi-wrap--wide{width:min(100% - 2*var(--gutter), var(--container-wide))}
.gsi-wrap--prose{width:min(100% - 2*var(--gutter), var(--container-prose))}
.gsi-section{padding-block:var(--space-section)}
.gsi-section--lg{padding-block:var(--space-section-lg)}
.gsi-section--sm{padding-block:var(--space-section-sm)}
/* R5: same-ground neighbours share one gap (set by build-time join marker) */
.gsi-section.is-joined{padding-block-start:0}
.gsi-grid{display:grid;gap:var(--space-element)}
.gsi-grid--2{grid-template-columns:repeat(2,minmax(0,1fr))}
.gsi-grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.gsi-grid--4{grid-template-columns:repeat(4,minmax(0,1fr))}
.gsi-actions{display:flex;flex-wrap:wrap;gap:var(--space-tight);align-items:center}
.gsi-rule{border:0;border-top:1px solid var(--ink-3);margin:0}
.band-cream .gsi-rule{border-color:var(--cream-3)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* ---- the big split: the signature composition ---- */
.gsi-split{display:grid;grid-template-columns:1fr 1fr;align-items:stretch;min-height:80vh}
.gsi-split--60{grid-template-columns:3fr 2fr}
.gsi-split__media{position:relative;min-height:60vh;overflow:hidden}
.gsi-split__media img{width:100%;height:100%;object-fit:cover}
.gsi-split__body{display:grid;align-content:center;gap:var(--space-element);padding:var(--space-section) var(--gutter)}
.gsi-split__body > .gsi-wrap-half{width:min(100%, 36rem);margin-inline:auto}
.gsi-split--rev .gsi-split__media{order:2}

/* ---- buttons: island primary, ghost secondary, WhatsApp as a ghost with the glyph ---- */
.gsi-btn{display:inline-flex;align-items:center;gap:.85rem;min-height:var(--btn-h);padding:.3rem .3rem .3rem var(--btn-pad-x);border-radius:var(--r-pill);background:var(--accent);color:var(--on-accent);font-weight:600;font-size:var(--t-body);line-height:1;text-decoration:none;white-space:nowrap;transition:transform var(--dur-fast) var(--ease-spring),background-color var(--dur-fast) var(--ease-out-expo)}
.gsi-btn__icon{inline-size:2.4rem;block-size:2.4rem;flex:none;display:grid;place-items:center;border-radius:var(--r-pill);background:rgb(255 255 255/.16);transition:transform var(--dur-base) var(--ease-spring)}
.gsi-btn__icon svg{inline-size:1rem;block-size:1rem}
.gsi-btn:hover{background:#C9101A}
.gsi-btn:hover .gsi-btn__icon{transform:translate(2px,-2px)}
.gsi-btn:active{transform:scale(.98)}
.gsi-btn--ghost{background:transparent;color:var(--fg);box-shadow:var(--ring-strong);padding-inline-end:var(--btn-pad-x)}
.gsi-btn--ghost:hover{background:rgb(var(--fg-rgb)/.06);box-shadow:0 0 0 1px rgb(var(--fg-rgb)/.3)}
.gsi-btn--ghost .gsi-btn__icon{background:rgb(var(--fg-rgb)/.08)}
.band-cream .gsi-btn--ghost{color:var(--c-ink);box-shadow:var(--ring-cream)}
.band-cream .gsi-btn--ghost:hover{background:rgb(var(--c-ink-rgb)/.06)}
.gsi-btn--wa{gap:.6rem;padding-inline:1.1rem var(--btn-pad-x)}
.gsi-btn--wa > svg{inline-size:1.2rem;block-size:1.2rem;flex:none}
.gsi-btn--sm{min-height:2.5rem;font-size:var(--t-small);padding-inline-start:1.1rem;padding-inline-end:1.1rem}
.gsi-btn--lg{min-height:var(--btn-h-lg);font-size:var(--t-lead)}
.gsi-btn--block{width:100%;justify-content:center}
.gsi-btn[aria-disabled="true"]{opacity:.5;pointer-events:none}
.gsi-link{display:inline-flex;align-items:center;gap:.4rem;font-weight:600;text-decoration:none;color:var(--fg)}
.gsi-link::before{content:"[";color:var(--fg-mute)}
.gsi-link::after{content:"]";color:var(--fg-mute)}
.gsi-link:hover{color:var(--accent-hi)}
.band-cream .gsi-link{color:var(--c-ink)}
.band-cream .gsi-link:hover{color:var(--accent)}
.gsi-link--arrow::before{content:none}
.gsi-link--arrow::after{content:"→";color:var(--accent-hi);transition:transform var(--dur-fast) var(--ease-spring)}
.gsi-link--arrow:hover::after{transform:translateX(3px)}
.band-cream .gsi-link--arrow::after{color:var(--accent-deep)}
p a:not([class]){text-decoration:underline;text-underline-offset:.15em;text-decoration-thickness:1px}
p a:not([class]):hover{text-decoration-thickness:2px}

/* ---- chips: sizes, filters, tabs ---- */
.gsi-chips{display:flex;flex-wrap:wrap;gap:var(--s-2)}
.gsi-chip{white-space:nowrap;display:inline-flex;align-items:center;justify-content:center;min-height:2.75rem;min-width:2.75rem;padding:.4rem .9rem;border-radius:var(--r-pill);box-shadow:var(--ring-strong);font-size:var(--t-small);font-weight:500;text-decoration:none;color:var(--fg);transition:background-color var(--dur-fast) var(--ease-out-expo),box-shadow var(--dur-fast) var(--ease-out-expo)}
.gsi-chip:hover{background:rgb(var(--fg-rgb)/.06)}
.gsi-chip[aria-pressed="true"],.gsi-chip.is-active,.gsi-chip[aria-selected="true"]{background:var(--fg);color:var(--ink);box-shadow:none}
.band-cream .gsi-chip{color:var(--c-ink);box-shadow:var(--ring-cream)}
.band-cream .gsi-chip.is-active,.band-cream .gsi-chip[aria-pressed="true"]{background:var(--c-ink);color:var(--cream)}
.gsi-chip--sm{min-height:2rem;min-width:2rem;padding:.2rem .6rem;font-size:var(--t-label);font-weight:600;letter-spacing:.04em}
.gsi-chips--scroll{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;padding-block:2px;-webkit-overflow-scrolling:touch}
.gsi-chips--scroll::-webkit-scrollbar{display:none}

/* ---- framed object (08 §5a): ≤ 2 per screen, ≤ 5 per page ---- */
.gsi-frame{padding:var(--frame-pad);border-radius:var(--r-lg);background:rgb(var(--fg-rgb)/.05);box-shadow:var(--ring-strong)}
.gsi-frame__core{border-radius:calc(var(--r-lg) - var(--frame-pad));overflow:hidden;background:var(--ink-2);box-shadow:inset 0 1px 0 rgb(255 255 255/.08)}
.band-cream .gsi-frame{background:rgb(var(--c-ink-rgb)/.05);box-shadow:var(--ring-cream),var(--shadow-float)}
.band-cream .gsi-frame__core{background:var(--cream-2)}

/* ---- tonal placeholder (08 §7): reads as "a photo goes here", never a hatch ---- */
.gsi-ph{position:relative;background:radial-gradient(120% 90% at 22% 18%, rgb(255 236 214/.22), transparent 55%),linear-gradient(160deg,#2A2320,#120F0E);overflow:hidden}
.gsi-ph::after{content:attr(data-ph);position:absolute;inset-inline-end:.6rem;inset-block-end:.5rem;font-size:var(--t-label);letter-spacing:.08em;text-transform:uppercase;color:var(--fg-mute);font-weight:600}
.gsi-ph--cream{background:radial-gradient(120% 90% at 22% 18%, rgb(255 255 255/.55), transparent 55%),linear-gradient(160deg,#EDE0C8,#D3BF9C)}
.gsi-ph--cream::after{color:var(--c-mute)}
.gsi-ph--grain{background-image:var(--grain),radial-gradient(120% 90% at 22% 18%, rgb(255 236 214/.22), transparent 55%),linear-gradient(160deg,#2A2320,#120F0E)}

/* ---- product card (WooCommerce loop, skinned) ---- */
.gsi-card{display:grid;grid-template-rows:auto 1fr;gap:var(--s-4);padding:var(--s-3);border-radius:var(--r-lg);background:var(--ink-2);box-shadow:var(--ring);transition:transform var(--dur-base) var(--ease-spring),box-shadow var(--dur-base) var(--ease-out-expo);text-decoration:none;color:inherit}
.gsi-card:hover{transform:translateY(-4px);box-shadow:var(--ring-strong)}
.gsi-card__media{position:relative;aspect-ratio:4/5;border-radius:var(--r-md);overflow:hidden;background:var(--ink-3)}
.gsi-card__media img{width:100%;height:100%;object-fit:cover;transition:opacity var(--dur-slow) var(--ease-out-expo)}
.gsi-card__media img + img{position:absolute;inset:0;opacity:0}
.gsi-card:hover .gsi-card__media img + img{opacity:1}
.gsi-card__tag{position:absolute;inset-inline-start:.6rem;inset-block-start:.6rem;padding:.25rem .6rem;border-radius:var(--r-pill);background:rgb(var(--ink-rgb)/.78);backdrop-filter:blur(6px);font-size:var(--t-label);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--silver)}
.gsi-card__body{display:grid;gap:var(--s-2);padding:0 var(--s-1) var(--s-1)}
.gsi-card__name{font-family:var(--font-display);font-size:var(--t-card);line-height:1.05;text-decoration:none;color:var(--fg)}
.gsi-card__line{font-size:var(--t-small);color:var(--fg-dim)}
.gsi-card__price{font-family:var(--font-display);font-size:var(--t-stat);color:var(--accent-hi);font-variant-numeric:tabular-nums}
.gsi-card__sizes{display:flex;flex-wrap:wrap;gap:.3rem;font-size:var(--t-label);color:var(--fg-mute);letter-spacing:.04em}
.gsi-card__sizes span::before{content:"("}
.gsi-card__sizes span::after{content:")"}
.gsi-card__actions{display:grid;grid-template-columns:1fr auto;gap:var(--s-2);margin-block-start:var(--s-2)}
.gsi-card__actions .gsi-btn{min-height:2.75rem;font-size:var(--t-small);padding-inline-start:1.1rem}
.gsi-card__actions .gsi-btn--wa{padding-inline:.8rem}
.gsi-card__actions .gsi-btn--wa > svg{margin:0}

/* ---- review card ---- */
.gsi-review{display:grid;gap:var(--s-3);padding:var(--s-5);border-radius:var(--r-lg);background:var(--ink-2);box-shadow:var(--ring)}
.gsi-review__stars{color:var(--accent-hi);letter-spacing:.1em;font-size:var(--t-small)}
.gsi-review__quote{font-size:var(--t-lead);line-height:1.45;color:var(--fg)}
.gsi-review__who{display:flex;align-items:center;gap:var(--s-2);font-size:var(--t-small);color:var(--fg-dim)}
.gsi-review__who strong{color:var(--fg)}
.gsi-g{display:inline-grid;place-items:center;inline-size:1.25rem;block-size:1.25rem;border-radius:50%;background:var(--fg);color:var(--ink);font-weight:700;font-size:.7rem;font-family:var(--font-body)}

/* ---- accordion (core/accordion) ---- */
.gsi-acc{border-top:1px solid var(--ink-3)}
.gsi-acc details{border-bottom:1px solid var(--ink-3)}
.gsi-acc summary{display:flex;justify-content:space-between;align-items:center;gap:var(--s-4);padding:var(--s-4) 0;cursor:pointer;font-weight:600;list-style:none}
.gsi-acc summary::-webkit-details-marker{display:none}
.gsi-acc summary::after{content:"+";font-family:var(--font-display);font-size:var(--t-stat);color:var(--fg-mute);transition:transform var(--dur-base) var(--ease-spring)}
.gsi-acc details[open] summary::after{transform:rotate(45deg)}
.gsi-acc details > p{padding-block:0 var(--s-4);color:var(--fg-dim)}
.band-cream .gsi-acc,.band-cream .gsi-acc details{border-color:var(--cream-3)}
.band-cream .gsi-acc details > p{color:var(--c-dim)}

/* ---- slot / confirm placeholders: small, tidy, never lorem ---- */
.gsi-slot{display:inline-block;padding:.05em .45em;border-radius:var(--r-sm);background:rgb(var(--accent-rgb)/.12);color:var(--fg-dim);font-size:.85em;font-style:italic;box-shadow:inset 0 0 0 1px rgb(var(--accent-rgb)/.35)}
.band-cream .gsi-slot{color:var(--c-dim)}

/* ---- marquee (arenex/ticker) ---- */
.gsi-marquee{overflow:hidden;border-block:1px solid var(--ink-3);padding-block:var(--s-3);background:var(--ink);mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.gsi-marquee__track{display:flex;gap:var(--s-7);width:max-content;animation:gsi-marquee 42s linear infinite}
.gsi-marquee__item{display:inline-flex;align-items:center;gap:var(--s-7);font-family:var(--font-display);font-size:var(--t-stat);letter-spacing:.02em;text-transform:uppercase;color:var(--fg-dim);white-space:nowrap}
.gsi-marquee__item::after{content:"✦";color:var(--accent);font-size:.8em}
@keyframes gsi-marquee{to{transform:translateX(-50%)}}

/* ---- reveals (08 §5i): hidden only under .js, with a timeout fallback ---- */
.js .gsi-reveal{opacity:0;transform:translateY(28px);transition:opacity var(--dur-reveal) var(--ease-out-expo),transform var(--dur-reveal) var(--ease-spring)}
.js .gsi-reveal.is-in{opacity:1;transform:none}

/* ---- the hero load sequence (08 §5h) ---- */
.gsi-hero__line{display:block;overflow:hidden}
.gsi-hero__line > span{display:block}
@media (prefers-reduced-motion:no-preference){
  .gsi-hero__line > span{animation:gsi-rise var(--dur-hero) var(--ease-spring) both;animation-delay:calc(var(--i,0) * 80ms)}
  .gsi-hero__media{animation:gsi-settle var(--dur-hero) var(--ease-out-expo) both}
  .gsi-hero__late{animation:gsi-fade 700ms var(--ease-out-expo) both;animation-delay:420ms}
}
@keyframes gsi-rise{from{transform:translateY(108%)}}
@keyframes gsi-settle{from{transform:scale(1.04);opacity:.001}}
@keyframes gsi-fade{from{opacity:0;transform:translateY(10px)}}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
  .js .gsi-reveal{opacity:1;transform:none}
  .gsi-marquee__track{animation:none}
}
@media (forced-colors:active){.gsi-btn,.gsi-chip{border:1px solid ButtonText}}
.gsi-num{justify-self:start;width:max-content}
.gsi-slot{font-size:max(.85em, .75rem)}
.gsi-g{inline-size:1.35rem;block-size:1.35rem;font-size:.75rem}
/* reviewer line: name over detail, the Google mark on the right */
.gsi-review__who{display:grid;grid-template-columns:1fr auto;column-gap:var(--s-3);row-gap:.1rem;align-items:center}
.gsi-review__who strong{grid-column:1;white-space:nowrap}
.gsi-review__who > span:not(.gsi-g){grid-column:1;grid-row:2;font-size:var(--t-label);letter-spacing:.02em}
.gsi-review__who .gsi-g{grid-column:2;grid-row:1/3}

/* the Google mark on review cards: the real G on a white disc, so it reads on cream and on dark */
.gsi-g{display:inline-grid;place-items:center;inline-size:1.5rem;block-size:1.5rem;border-radius:50%;background:#fff;box-shadow:0 0 0 1px rgb(0 0 0/.08)}
.gsi-g svg{inline-size:.9rem;block-size:.9rem}
.gsi-arc__card.is-center .gsi-g{background:#fff;color:inherit}


/* ==== 04-wp.css ==== */
/* WordPress glue. The homepage, the policy pages and the sections under each shop category are
   blocks that keep the prototype's own class names (prototype/tools/mark-for-wp.js), so the
   prototype's CSS (03, 30, 35, 89) draws them. These rules take WordPress's own wrappers and
   defaults out of its way, and nothing else. */

/* ---- a Group's inner wrapper (a classic theme's) is not a box: its children are the group's,
   as in the prototype's grid and flex rows ---- */
.wp-block-group[class*="gsi-"]>.wp-block-group__inner-container{display:contents}
.wp-block-group[class*="gsi-"]{box-sizing:border-box}

/* ---- a section is the prototype's section: no block margins, its own padding ---- */
.site-main>.wp-block-group[class*="gsi-"]{margin:0}

/* ---- photos: a plain photo is the prototype's <img> (its frame sizes it); a photo that carried
   a class in the prototype keeps that class on its block and fills it ---- */
.wp-block-group[class*="gsi-"] figure.wp-block-image:not([class*="gsi-"]),
.wp-block-group[class*="gsi-"] figure.wp-block-image:not([class*="gsi-"])>a{display:contents}
.wp-block-group[class*="gsi-"] figure.wp-block-image{margin:0}
figure.wp-block-image[class*="gsi-"] img{display:block;width:100%;height:100%;object-fit:cover}
/* a linked photo (the map): the Image block puts the link round the <img>, so the link fills the figure too */
figure.wp-block-image[class*="gsi-"]>a{display:block;width:100%;height:100%}
.wp-block-image img{box-sizing:border-box}

/* ---- a paragraph made round one inline element (a label, a price, a name; mark-for-wp.js): a flex
   box, so the element sizes as the prototype's grid item did, with no text line round it ---- */
/* weightless: a class of its own on the paragraph (.gsi-steps__num: a centred disc) still decides its layout */
:where(p.gsi-inline){display:flex;flex-direction:column;align-items:flex-start}
p.gsi-inline{max-width:none}

/* ---- buttons: the prototype drew the arrow disc and the WhatsApp glyph inline; here the link draws them ---- */
.wp-block-button.gsi-btn--icon>.wp-block-button__link::after{content:"";inline-size:2.4rem;block-size:2.4rem;flex:none;border-radius:var(--r-pill);background:rgb(255 255 255/.16) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3 8h9M8 4l4 4-4 4' fill='none' stroke='%23FFF6F4' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/1rem no-repeat;transition:transform var(--dur-base) var(--ease-spring)}
.wp-block-button.gsi-btn--icon.gsi-btn--ghost>.wp-block-button__link::after{background-color:rgb(var(--fg-rgb)/.08);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3 8h9M8 4l4 4-4 4' fill='none' stroke='%23F4EDE4' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}
.wp-block-button.gsi-btn--icon>.wp-block-button__link:hover::after{transform:translate(2px,-2px)}
.wp-block-button.gsi-btn--wa>.wp-block-button__link::before{content:"";inline-size:1.2rem;block-size:1.2rem;flex:none;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a10 10 0 0 0-8.6 15.1L2 22l5-1.3A10 10 0 1 0 12 2zm0 1.8a8.2 8.2 0 1 1-4.2 15.3l-.3-.2-3 .8.8-2.9-.2-.3A8.2 8.2 0 0 1 12 3.8zm-3 4.4c-.2 0-.5.1-.8.4-.3.3-1 1-1 2.4s1 2.8 1.2 3c.1.2 2 3.2 5 4.4 2.4 1 2.9.8 3.4.7.5 0 1.7-.7 1.9-1.4.2-.7.2-1.2.2-1.3l-.5-.3-1.8-.9c-.3-.1-.4-.1-.6.1l-.9 1.1c-.2.2-.3.2-.6.1a6.7 6.7 0 0 1-3.3-2.9c-.2-.4.3-.4.7-1.3.1-.2 0-.4 0-.5l-.9-2c-.2-.5-.4-.4-.6-.4z'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a10 10 0 0 0-8.6 15.1L2 22l5-1.3A10 10 0 1 0 12 2zm0 1.8a8.2 8.2 0 1 1-4.2 15.3l-.3-.2-3 .8.8-2.9-.2-.3A8.2 8.2 0 0 1 12 3.8zm-3 4.4c-.2 0-.5.1-.8.4-.3.3-1 1-1 2.4s1 2.8 1.2 3c.1.2 2 3.2 5 4.4 2.4 1 2.9.8 3.4.7.5 0 1.7-.7 1.9-1.4.2-.7.2-1.2.2-1.3l-.5-.3-1.8-.9c-.3-.1-.4-.1-.6.1l-.9 1.1c-.2.2-.3.2-.6.1a6.7 6.7 0 0 1-3.3-2.9c-.2-.4.3-.4.7-1.3.1-.2 0-.4 0-.5l-.9-2c-.2-.5-.4-.4-.6-.4z'/%3E%3C/svg%3E") center/contain no-repeat}
/* The Buttons block puts the prototype's classes on its wrapper: the wrapper is only a box in the
   row, the link draws the button (05-wp-buttons.css). Weight: above any prototype rule on the class. */
.wp-block-buttons>.wp-block-button[class*="gsi-"]{display:block;min-height:0;padding:0;margin:0;border-radius:0;background:none;box-shadow:none;transform:none}
.wp-block-buttons>.wp-block-button[class*="gsi-"]::before,.wp-block-buttons>.wp-block-button[class*="gsi-"]::after{content:none}
/* the link's baseline, under the generated button rules: WordPress's own button look (wp-element-button) gone */
.wp-block-button[class*="gsi-"]>.wp-block-button__link{padding:0;min-height:0;border:0;border-radius:0;background:none;box-shadow:none;color:inherit;font-family:var(--font-body);font-size:inherit;letter-spacing:normal;text-transform:none;text-decoration:none}

/* ---- a linked tile (a price): its main line carries the link, the whole tile answers ---- */
.gsi-linked{position:relative}
.gsi-linked a{color:inherit;text-decoration:none}
.gsi-linked a::after{content:"";position:absolute;inset:0;border-radius:inherit}

/* ---- the prototype's <dl> as groups: each row a group (.gsi-facts div), dt and dd paragraphs ---- */
.gsi-facts .gsi-dt{font-size:var(--t-label);letter-spacing:var(--ls-label);text-transform:uppercase;font-weight:600;color:var(--c-dim)}
.gsi-facts .gsi-dd{margin:0;font-family:var(--font-display);font-weight:800;font-size:var(--t-card);line-height:1.1}

/* ---- a table's wrapper: the prototype's .gsi-table ---- */
.gsi-tablewrap table{width:100%;border-collapse:collapse}

/* ---- ACF's InnerBlocks wrapper (a GSI block's heading area) is not a box either ---- */
[class*="gsi-"] .acf-innerblocks-container{display:contents}

/* ---- the prototype's cream-ground text colours: the starter's 02-base reuses --c-dim and --c-mute
   for its own grounds (:root{--c-dim:var(--page-c-dim)}), which turned text on cream light ---- */
:root{--c-dim:#5E5248;--c-mute:#756659}

/* ---- a polaroid's caption (the prototype's <figcaption>) is a paragraph ---- */
.gsi-polaroid .gsi-figcaption{margin-top:.6rem;font-size:var(--t-label);letter-spacing:.06em;text-transform:uppercase;font-weight:600;color:var(--c-dim);text-align:center}

/* ---- a FAQ: the core Accordion in the prototype's .gsi-acc look (03-components "accordion"), over
   the starter's FAQ look (20-columns) ---- */
.site-main .gsi-acc.wp-block-accordion{border-top:1px solid var(--ink-3);margin:0}
.site-main .gsi-acc .wp-block-accordion-item{border-bottom:1px solid var(--ink-3);margin:0}
.site-main .gsi-acc .wp-block-accordion-heading{margin:0;font-family:var(--font-body);font-size:var(--t-body);line-height:var(--lh-body)}
.site-main .gsi-acc .wp-block-accordion-heading__toggle{display:flex;justify-content:space-between;align-items:center;gap:var(--s-4);width:100%;min-height:0;padding:var(--s-4) 0;border:0;background:none;color:inherit;font:inherit;font-weight:600;text-align:start;cursor:pointer}
.site-main .gsi-acc .wp-block-accordion-heading__toggle-icon{width:auto;height:auto;border:0;border-radius:0;background:none;font-family:var(--font-display);font-size:var(--t-stat);line-height:var(--lh-body);color:var(--fg-mute)}
.site-main .gsi-acc .wp-block-accordion-panel{padding:0}
.site-main .gsi-acc .wp-block-accordion-panel>p{padding-block:0 var(--s-4);color:var(--fg-dim);max-width:none}
.site-main .band-cream .gsi-acc.wp-block-accordion,.site-main .band-cream .gsi-acc .wp-block-accordion-item{border-color:var(--cream-3)}
.site-main .band-cream .gsi-acc .wp-block-accordion-panel>p{color:var(--c-dim)}
.site-main .band-cream .gsi-acc .wp-block-accordion-heading__toggle-icon{color:var(--c-dim)}


/* ==== 05-wp-buttons.css ==== */
/* Buttons block = the prototype's buttons. GENERATED by bin/make-wp-buttons.py from parts 03-components.css, 30-shop.css, 35-home.css, 89-responsive.css: edit those, then run it again. */
.wp-block-buttons>.wp-block-button[class*="gsi-"]{margin:0}
/* from 03-components.css */
.wp-block-button.gsi-btn>.wp-block-button__link{display:inline-flex;align-items:center;gap:.85rem;min-height:var(--btn-h);padding:.3rem .3rem .3rem var(--btn-pad-x);border-radius:var(--r-pill);background:var(--accent);color:var(--on-accent);font-weight:600;font-size:var(--t-body);line-height:1;text-decoration:none;white-space:nowrap;transition:transform var(--dur-fast) var(--ease-spring),background-color var(--dur-fast) var(--ease-out-expo)}
.wp-block-button.gsi-btn>.wp-block-button__link:hover{background:#C9101A}
.wp-block-button.gsi-btn>.wp-block-button__link:active{transform:scale(.98)}
.wp-block-button.gsi-btn--ghost>.wp-block-button__link{background:transparent;color:var(--fg);box-shadow:var(--ring-strong);padding-inline-end:var(--btn-pad-x)}
.wp-block-button.gsi-btn--ghost>.wp-block-button__link:hover{background:rgb(var(--fg-rgb)/.06);box-shadow:0 0 0 1px rgb(var(--fg-rgb)/.3)}
.band-cream .wp-block-button.gsi-btn--ghost>.wp-block-button__link{color:var(--c-ink);box-shadow:var(--ring-cream)}
.band-cream .wp-block-button.gsi-btn--ghost>.wp-block-button__link:hover{background:rgb(var(--c-ink-rgb)/.06)}
.wp-block-button.gsi-btn--wa>.wp-block-button__link{gap:.6rem;padding-inline:1.1rem var(--btn-pad-x)}
.wp-block-button.gsi-btn--sm>.wp-block-button__link{min-height:2.5rem;font-size:var(--t-small);padding-inline-start:1.1rem;padding-inline-end:1.1rem}
.wp-block-button.gsi-btn--lg>.wp-block-button__link{min-height:var(--btn-h-lg);font-size:var(--t-lead)}
.wp-block-button.gsi-btn--block>.wp-block-button__link{width:100%;justify-content:center}
.wp-block-button.gsi-btn[aria-disabled="true"]>.wp-block-button__link{opacity:.5;pointer-events:none}
.wp-block-button.gsi-link>.wp-block-button__link{display:inline-flex;align-items:center;gap:.4rem;font-weight:600;text-decoration:none;color:var(--fg)}
.wp-block-button.gsi-link>.wp-block-button__link::before{content:"[";color:var(--fg-mute)}
.wp-block-button.gsi-link>.wp-block-button__link::after{content:"]";color:var(--fg-mute)}
.wp-block-button.gsi-link>.wp-block-button__link:hover{color:var(--accent-hi)}
.band-cream .wp-block-button.gsi-link>.wp-block-button__link{color:var(--c-ink)}
.band-cream .wp-block-button.gsi-link>.wp-block-button__link:hover{color:var(--accent)}
.wp-block-button.gsi-link--arrow>.wp-block-button__link::before{content:none}
.wp-block-button.gsi-link--arrow>.wp-block-button__link::after{content:"→";color:var(--accent-hi);transition:transform var(--dur-fast) var(--ease-spring)}
.wp-block-button.gsi-link--arrow>.wp-block-button__link:hover::after{transform:translateX(3px)}
.band-cream .wp-block-button.gsi-link--arrow>.wp-block-button__link::after{color:var(--accent-deep)}
.gsi-card__actions .wp-block-button.gsi-btn>.wp-block-button__link{min-height:2.75rem;font-size:var(--t-small);padding-inline-start:1.1rem}
.gsi-card__actions .wp-block-button.gsi-btn--wa>.wp-block-button__link{padding-inline:.8rem}
@media (forced-colors:active){
  .wp-block-button.gsi-btn>.wp-block-button__link{border:1px solid ButtonText}
}
/* from 30-shop.css */
.gsi-promo > .wp-block-buttonspan:not(.gsi-eyebrow):not(.gsi-link)>.wp-block-button__link{color:var(--c-dim);font-size:var(--t-small)}
.gsi-promo .wp-block-button.gsi-link>.wp-block-button__link{color:var(--c-ink)}
.gsi-revstrip__rating .wp-block-button.gsi-btn>.wp-block-button__link{margin-top:var(--s-3)}
.gsi-sizes-pick legend .wp-block-button.gsi-link>.wp-block-button__link{text-transform:none;letter-spacing:0;font-size:var(--t-small)}
.gsi-buy__actions .wp-block-button.gsi-btn--wa>.wp-block-button__link{grid-column:1/-1;justify-content:center}
.gsi-complete__total .wp-block-button.gsi-link>.wp-block-button__link{color:var(--c-ink)}
.gsi-buybar .wp-block-button.gsi-btn--wa>.wp-block-button__link{padding-inline:.8rem}
/* from 35-home.css */
.gsi-picks__more .wp-block-button.gsi-btn--ghost>.wp-block-button__link{padding-inline-end:.3rem}
/* from 89-responsive.css */
@media (max-width:767px){
  .gsi-card__actions .wp-block-button.gsi-btn--wa>.wp-block-button__link{display:none}
  .gsi-summary__actions .wp-block-button.gsi-btn>.wp-block-button__link{min-height:2.75rem;font-size:var(--t-small);padding-inline:.9rem}
}
@media (max-width:767px){
  .wp-block-button.gsi-link>.wp-block-button__link{min-height:2.75rem}
}


/* ==== 10-header.css ==== */
/* Header, mega menus, phone sheet, footer, bottom bar — from the prototype's assets/css/10-chrome.css, verbatim. Edit here, not in the prototype, from now on. */
/* Chrome: top bar, header + mega-menu, phone sheet, phone bottom bar, service row, footer, WhatsApp float.
   All theme parts in WordPress (never blocks); phone, address and socials come from Site Settings. */

/* ---- skip link ---- */
.gsi-skip{position:absolute;inset-inline-start:var(--s-4);inset-block-start:-100px;z-index:var(--z-modal);padding:.6rem 1rem;border-radius:var(--r-pill);background:var(--fg);color:var(--ink);font-weight:600;text-decoration:none}
.gsi-skip:focus{inset-block-start:var(--s-4)}

/* ---- top bar ---- */
.gsi-topbar{display:flex;justify-content:center;align-items:center;gap:var(--s-4);min-height:var(--topbar-h);padding-inline:var(--gutter);background:var(--ink-2);border-bottom:1px solid var(--ink-3);font-size:var(--t-small);color:var(--fg-dim);text-align:center}
.gsi-topbar a{color:var(--fg);text-decoration:none;font-weight:600}
.gsi-topbar a:hover{color:var(--accent-hi)}
.gsi-topbar__sep{color:var(--fg-mute)}

/* ---- header ---- */
.gsi-header{position:sticky;top:0;z-index:var(--z-header);background:rgb(var(--ink-rgb)/.86);backdrop-filter:blur(12px) saturate(140%);-webkit-backdrop-filter:blur(12px) saturate(140%);border-bottom:1px solid var(--ink-3)}
.gsi-header__in{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:var(--s-6);min-height:var(--header-h)}
.gsi-logo{display:inline-flex;align-items:center;gap:.6rem;text-decoration:none;color:var(--fg)}
.gsi-logo svg{inline-size:2.4rem;block-size:2.4rem}
.gsi-logo > span{display:grid;line-height:1}
.gsi-logo__word{font-family:var(--font-display);font-size:1.75rem;font-style:italic;letter-spacing:.02em;line-height:1}
.gsi-logo__tag{font-size:var(--t-label);letter-spacing:var(--ls-label);text-transform:uppercase;color:var(--fg-mute);font-weight:600;line-height:1;margin-top:.25rem}
.gsi-nav{display:flex;justify-content:center}
.gsi-nav__list{display:flex;gap:var(--s-2)}
.gsi-nav__item{position:relative}
.gsi-nav__link{display:inline-flex;align-items:center;gap:.35rem;min-height:2.75rem;padding:.5rem .85rem;border-radius:var(--r-pill);font-weight:500;text-decoration:none;color:var(--fg);transition:background-color var(--dur-fast) var(--ease-out-expo)}
.gsi-nav__link:hover,.gsi-nav__link[aria-expanded="true"]{background:rgb(var(--fg-rgb)/.07)}
.gsi-nav__link svg{inline-size:.8rem;block-size:.8rem;opacity:.6}
.gsi-nav__link--strong{font-weight:600}
.gsi-tools{display:flex;align-items:center;gap:var(--s-2)}
.gsi-iconbtn{display:inline-grid;place-items:center;inline-size:2.75rem;block-size:2.75rem;border-radius:var(--r-pill);color:var(--fg);transition:background-color var(--dur-fast) var(--ease-out-expo);position:relative;text-decoration:none}
.gsi-iconbtn:hover{background:rgb(var(--fg-rgb)/.07)}
.gsi-iconbtn svg{inline-size:1.3rem;block-size:1.3rem}
.gsi-iconbtn__count{position:absolute;inset-inline-end:.2rem;inset-block-start:.2rem;min-width:1.1rem;height:1.1rem;padding-inline:.25rem;border-radius:var(--r-pill);background:var(--accent);color:var(--on-accent);font-size:var(--t-label);font-weight:700;display:grid;place-items:center}
.gsi-burger{display:none}

/* mega-menu (desktop) */
.gsi-mega{position:absolute;inset-inline-start:50%;top:calc(100% + .5rem);transform:translateX(-50%);width:min(64rem, calc(100vw - 2*var(--gutter)));padding:var(--s-5);border-radius:var(--r-lg);background:var(--ink-2);box-shadow:var(--ring-strong),0 30px 60px -20px rgb(0 0 0/.6);display:none;z-index:var(--z-dropdown)}
.gsi-mega.is-open{display:grid}
.gsi-mega--bats{grid-template-columns:1.2fr 1fr 1fr 1fr 1.1fr;gap:var(--s-5)}
.gsi-mega--gear{width:min(40rem,calc(100vw - 2*var(--gutter)));grid-template-columns:1fr 1fr;gap:var(--s-5)}
.gsi-mega__col{display:grid;gap:var(--s-2);align-content:start}
.gsi-mega__title{display:block;font-family:var(--font-display);font-size:var(--t-card);letter-spacing:.01em;text-decoration:none;color:var(--fg);padding-block-end:var(--s-2);border-bottom:1px solid var(--ink-3)}
.gsi-mega__title small{display:block;font-family:var(--font-body);font-size:var(--t-label);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--accent-hi);margin-top:.2rem}
.gsi-mega__link{display:flex;justify-content:space-between;gap:var(--s-2);padding:.35rem 0;font-size:var(--t-small);text-decoration:none;color:var(--fg-dim);border-radius:var(--r-sm)}
.gsi-mega__link:hover{color:var(--fg)}
.gsi-mega__link span{color:var(--fg-mute);font-variant-numeric:tabular-nums}
.gsi-mega__feature{display:grid;grid-template-rows:1fr auto;gap:var(--s-3);padding:var(--s-3);border-radius:var(--r-md);background:var(--ink);box-shadow:var(--ring);text-decoration:none;color:var(--fg)}
.gsi-mega__feature img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:var(--r-sm)}
.gsi-mega__feature strong{font-family:var(--font-display);font-size:var(--t-card);font-weight:800}
.gsi-mega__feature small{color:var(--fg-dim);font-size:var(--t-small)}

/* ---- phone sheet ---- */
.gsi-sheet{position:fixed;inset:0;z-index:var(--z-modal);background:var(--ink);display:none;flex-direction:column;overflow:auto;padding:var(--s-4) var(--gutter) calc(var(--s-8) + env(safe-area-inset-bottom))}
.gsi-sheet.is-open{display:flex}
.gsi-sheet__top{display:flex;justify-content:space-between;align-items:center;min-height:var(--header-h)}
.gsi-sheet__list{display:grid;margin-block:var(--s-5)}
.gsi-sheet__row{display:flex;justify-content:space-between;align-items:center;gap:var(--s-3);padding:var(--s-4) 0;border-bottom:1px solid var(--ink-3);font-family:var(--font-display);font-size:var(--t-sub);text-decoration:none;color:var(--fg)}
.gsi-sheet__row small{font-family:var(--font-body);font-size:var(--t-small);color:var(--fg-mute);font-weight:500}
.gsi-sheet__sub{display:grid;gap:.2rem;padding:var(--s-2) 0 var(--s-4)}
.gsi-sheet__sub a{padding:.5rem 0;font-size:var(--t-body);text-decoration:none;color:var(--fg-dim)}
@media (prefers-reduced-motion:no-preference){.gsi-sheet.is-open .gsi-sheet__row{animation:gsi-fade 500ms var(--ease-out-expo) both;animation-delay:calc(var(--i,0) * 60ms)}}

/* ---- phone bottom bar ---- */
.gsi-bottombar{display:none;position:fixed;inset-inline:0;inset-block-end:0;z-index:var(--z-sticky);grid-template-columns:repeat(4,1fr);background:rgb(var(--ink-rgb)/.92);backdrop-filter:blur(12px);border-top:1px solid var(--ink-3);padding-block-end:env(safe-area-inset-bottom)}
.gsi-bottombar a,.gsi-bottombar button{display:grid;justify-items:center;gap:.2rem;padding:.55rem 0 .5rem;font-size:var(--t-label);font-weight:600;letter-spacing:.04em;text-decoration:none;color:var(--fg-dim)}
.gsi-bottombar svg{inline-size:1.35rem;block-size:1.35rem}
.gsi-bottombar .is-primary{color:var(--fg)}

/* ---- WhatsApp float (desktop) ---- */
.gsi-float{position:fixed;inset-inline-end:var(--s-5);inset-block-end:var(--s-5);z-index:var(--z-sticky);display:inline-flex;align-items:center;gap:.6rem;min-height:3.25rem;padding:.5rem 1.1rem .5rem .8rem;border-radius:var(--r-pill);background:var(--fg);color:var(--ink);font-weight:600;text-decoration:none;box-shadow:0 20px 40px -16px rgb(0 0 0/.7)}
.gsi-float svg{inline-size:1.4rem;block-size:1.4rem}
.gsi-float:hover{background:#fff}

/* ---- service row + footer ---- */
.gsi-service{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--s-4);padding-block:var(--s-6);border-top:1px solid var(--ink-3)}
.gsi-service__item{display:flex;gap:var(--s-3);align-items:flex-start;font-size:var(--t-small);color:var(--fg-dim)}
.gsi-service__item svg{inline-size:1.4rem;block-size:1.4rem;flex:none;color:var(--silver)}
.gsi-service__item strong{display:block;color:var(--fg);font-size:var(--t-body)}
.gsi-footer{position:relative;overflow:hidden;background:var(--ink);border-top:1px solid var(--ink-3)}
.gsi-footer__grid{display:grid;grid-template-columns:1.6fr 1fr 1fr 1.2fr;gap:var(--s-7);padding-block:var(--space-section-sm) var(--s-8)}
.gsi-footer__brand{display:grid;gap:var(--s-3);align-content:start}
.gsi-footer__brand p{color:var(--fg-dim);font-size:var(--t-small);max-width:30ch}
.gsi-footer__logo{gap:.8rem;justify-self:start}
.gsi-footer__logo svg{inline-size:3.5rem;block-size:3.5rem}
.gsi-footer__logo .gsi-logo__word{font-size:2rem}
.gsi-footer__logo .gsi-logo__tag{display:block;margin-top:.35rem}
.gsi-footer__tag{font-family:var(--font-display);font-style:italic;font-size:var(--t-sub);color:var(--fg)}
.gsi-footer h2{font-family:var(--font-body);font-size:var(--t-label);font-weight:600;letter-spacing:var(--ls-label);text-transform:uppercase;color:var(--fg-mute);margin-block-end:var(--s-3)}
.gsi-footer__list{display:grid;gap:.45rem}
.gsi-footer__list a{text-decoration:none;color:var(--fg-dim);font-size:var(--t-small)}
.gsi-footer__list a:hover{color:var(--fg)}
.gsi-footer address{font-style:normal;font-size:var(--t-small);color:var(--fg-dim);display:grid;gap:.45rem}
.gsi-footer address a{color:var(--fg);text-decoration:none;font-weight:500}
.gsi-footer__social{display:flex;gap:var(--s-2);margin-top:var(--s-3)}
.gsi-footer__social a{display:grid;place-items:center;inline-size:2.5rem;block-size:2.5rem;border-radius:var(--r-pill);box-shadow:var(--ring);color:var(--fg)}
.gsi-footer__social svg{inline-size:1.1rem;block-size:1.1rem}
.gsi-footer__legal{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--s-3);padding-block:var(--s-4) var(--s-5);border-top:1px solid var(--ink-3);font-size:var(--t-label);color:var(--fg-mute);letter-spacing:.02em}
.gsi-footer__legal a{color:var(--fg-dim);text-decoration:none;margin-inline-start:var(--s-4)}
.gsi-footer__word{position:relative;overflow:hidden;padding-block:var(--s-5);background-image:var(--grain)}
.gsi-footer__word span{display:block;text-align:center;font-family:var(--font-display);font-size:clamp(7rem,22vw,20rem);font-style:italic;line-height:1;letter-spacing:-.01em;color:rgb(var(--fg-rgb)/.06);user-select:none;white-space:nowrap}
.gsi-nav__link{white-space:nowrap}

/* ---- search: a bar under the header (header.php), opened by the search icon (15-search.js);
   the same form on the search results page ---- */
.gsi-search{border-top:1px solid var(--ink-3);background:rgb(var(--ink-rgb)/.97);padding-block:var(--s-4)}
.gsi-search__form{display:flex;align-items:center;gap:var(--s-3)}
.gsi-search__input{flex:1;min-width:0;min-height:var(--btn-h);padding:0 var(--s-5);border:1px solid var(--border-ui);border-radius:var(--r-pill);background:var(--ink-2);color:var(--fg);font:inherit;font-size:var(--t-body);-webkit-appearance:none;appearance:none}
.gsi-search__input::placeholder{color:var(--fg-mute)}
.gsi-search__input:focus{outline:0;border-color:var(--accent-hi);box-shadow:0 0 0 1px var(--accent-hi)}
.gsi-search__input::-webkit-search-cancel-button{filter:invert(1);opacity:.6}
.gsi-search__form .gsi-btn{flex:none;padding-inline:var(--btn-pad-x)}
.gsi-pagehead .gsi-search__form{max-width:44rem;margin-top:var(--s-2)}
.gsi-pagehead .gsi-search__close{display:none}
@media (max-width:767px){
  .gsi-search__form .gsi-btn{padding-inline:1rem}
  .gsi-search__close{inline-size:2.5rem;block-size:2.5rem}
}


/* ==== 20-columns.css ==== */
/* Columns as a grid, numbered rows, and the FAQ (a heading rail beside core/accordion).
   From Eastern Christmas Lights (4 Oct 2026).

   WordPress's own Columns CSS loads after the theme's (block styles print when the block
   renders) and sets display:flex and align-items:normal !important. So display needs two
   classes, every section's align-items needs !important, and the default track list is
   weightless, so any section's own list wins whatever the file order (gotchas.md). */

.site-main .wp-block-columns{display:grid;gap:var(--space-block) clamp(2rem,6vw,6rem);align-items:start!important;margin-bottom:0}
:where(.site-main .wp-block-columns){grid-template-columns:repeat(auto-fit,minmax(0,1fr))}
.site-main .wp-block-columns>.wp-block-column{min-width:0;margin:0;flex-basis:auto!important}
/* a band's own two columns: 7 / 5 (the house intro grid); a site changes the split here */
.wp-block-group.alignfull>.wp-block-group__inner-container>.wp-block-columns:not([class*="is-style-"]){grid-template-columns:minmax(0,7fr) minmax(0,5fr)}

/* numbered rows (core/list ordered, "Numbered rows") */
.site-main ol.is-style-numbered-rows{counter-reset:n;border-top:2px solid var(--c)}
.site-main .is-style-numbered-rows>li{counter-increment:n;display:grid;grid-template-columns:3.25rem 1fr;align-items:baseline;padding-block:var(--s-4);border-bottom:1px solid var(--line);font-family:var(--font-display);font-weight:800;font-size:var(--t-card);line-height:1.1;color:var(--c)}
.site-main .is-style-numbered-rows>li::before{content:counter(n,decimal-leading-zero);font-family:var(--font-body);font-size:var(--t-small);font-weight:600;letter-spacing:.08em;color:var(--em)}

/* FAQ: the heading rail sticks beside the answers (core/accordion, WordPress 7.1) */
.wp-block-group.alignfull>.wp-block-group__inner-container>.wp-block-columns:has(>.wp-block-accordion){grid-template-columns:minmax(0,4fr) minmax(0,7fr)}
.wp-block-columns:has(>.wp-block-accordion)>.wp-block-column:first-child{position:sticky;top:calc(var(--header-h) + var(--s-6))}
.wp-block-columns:has(>.wp-block-accordion)>.wp-block-column:first-child>.is-style-phone{margin-top:var(--s-5)}
.site-main .wp-block-accordion{border-top:2px solid var(--c);margin:0}
.site-main .wp-block-accordion-item{border-bottom:1px solid var(--line);margin:0}
.site-main .wp-block-accordion-heading{margin:0;font-size:var(--t-card);line-height:1.1}
.site-main .wp-block-accordion-heading__toggle{display:flex;align-items:center;justify-content:space-between;gap:var(--s-4);width:100%;min-height:var(--btn-h-lg);padding:var(--s-5) 0;border:0;background:none;color:var(--c);font-family:var(--font-display);font-weight:800;font-size:inherit;line-height:inherit;letter-spacing:var(--ls-display);text-align:left;cursor:pointer}
.site-main .wp-block-accordion-heading__toggle-title{flex:1}
.site-main .wp-block-accordion-heading__toggle-icon{flex:none;display:block;width:1.75rem;height:1.75rem;border:1.5px solid var(--c);border-radius:50%;font-size:0;color:var(--c);background:linear-gradient(currentColor,currentColor) center/10px 1.5px no-repeat,linear-gradient(currentColor,currentColor) center/1.5px 10px no-repeat;transition:transform var(--dur-base) var(--ease-out)}
.site-main .wp-block-accordion-panel{padding-bottom:var(--s-5)}
.site-main .wp-block-accordion-panel>p{color:var(--c-dim);max-width:62ch}
.site-main .wp-block-accordion-panel>p+p{margin-top:var(--s-4)}

@media (max-width:1024px){
  .wp-block-group.alignfull>.wp-block-group__inner-container>.wp-block-columns:has(>.wp-block-accordion){grid-template-columns:minmax(0,1fr)}
  .wp-block-columns:has(>.wp-block-accordion)>.wp-block-column:first-child{position:static}
}
@media (max-width:900px){
  .wp-block-group.alignfull>.wp-block-group__inner-container>.wp-block-columns:not([class*="is-style-"]){grid-template-columns:minmax(0,1fr)}
}


/* ==== 30-shop.css ==== */
/* Shop: page header, filters, product grid, product page — from the prototype's assets/css/30-shop.css, verbatim. Edit here, not in the prototype, from now on. */
/* Shop: page header, chips, filters, grid, promo, size table, compare, about, product page. WooCommerce templates skinned in the child theme. */

/* ---- page header (compact split, 04 §3b) ---- */
.gsi-pagehead{padding-block:var(--s-6) var(--s-6);border-bottom:1px solid var(--ink-3)}
.gsi-pagehead__grid{display:grid}
.gsi-pagehead__body{display:grid;gap:var(--space-element);max-width:52rem}
.gsi-pagehead__body h1{max-width:12em}
.gsi-crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:0 .5rem;font-size:var(--t-small);color:var(--fg-mute)}
.gsi-crumbs a{color:var(--fg-dim);text-decoration:none}
.gsi-crumbs a:hover{color:var(--fg)}
.gsi-facts-row{display:flex;flex-wrap:wrap;gap:var(--s-2) var(--s-5);font-size:var(--t-small);color:var(--fg-dim)}
.gsi-facts-row li::before{content:"✦ ";color:var(--accent)}
.gsi-subcats{padding-block:var(--s-4);border-bottom:1px solid var(--ink-3)}

/* ---- shop grid: filters + products ---- */
.gsi-shop__grid{display:grid;grid-template-columns:16rem 1fr;gap:var(--s-7) var(--s-6);align-items:start}
.gsi-shop__bar{grid-column:1/-1;display:flex;align-items:center;gap:var(--s-4);position:sticky;top:var(--header-h);z-index:var(--z-sticky);padding-block:var(--s-3);background:rgb(var(--ink-rgb)/.92);backdrop-filter:blur(10px);border-bottom:1px solid var(--ink-3)}
.gsi-shop__filterbtn{display:none}
.gsi-shop__count{color:var(--fg-dim);font-size:var(--t-small);margin-inline-end:auto}
.gsi-shop__count strong{color:var(--fg)}
.gsi-shop__sort{display:inline-flex;align-items:center;gap:.5rem;font-size:var(--t-small);color:var(--fg-dim)}
.gsi-shop__sort select{min-height:2.5rem;padding:.3rem 2rem .3rem .8rem;border-radius:var(--r-pill);background:var(--ink-2);border:1px solid var(--border-ui);color:var(--fg);appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3 6l5 5 5-5' fill='none' stroke='%23BDB1A6' stroke-width='2'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .7rem center;background-size:.8rem}
.gsi-filters{position:sticky;top:calc(var(--header-h) + 4.2rem);display:grid;gap:var(--s-4);align-self:start}
.gsi-filters__top{display:none}
.gsi-filter{margin:0;padding:0 0 var(--s-4);border:0;border-bottom:1px solid var(--ink-3);display:grid;gap:var(--s-2)}
.gsi-filter legend{font-size:var(--t-label);font-weight:600;letter-spacing:var(--ls-label);text-transform:uppercase;color:var(--fg-mute);margin-block-end:var(--s-2)}
.gsi-check{display:flex;align-items:center;gap:.6rem;min-height:2.5rem;font-size:var(--t-small);color:var(--fg-dim);cursor:pointer}
.gsi-check input{inline-size:1.15rem;block-size:1.15rem;accent-color:var(--accent);margin:0}
.gsi-check > span{margin-inline-start:auto;color:var(--fg-mute)}
.gsi-filters__actions{display:grid;gap:var(--s-2);justify-items:center}
.gsi-shop__products{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s-4)}
.gsi-promo{display:grid;gap:var(--s-3);align-content:center;padding:var(--s-6);border-radius:var(--r-lg);background:var(--cream);color:var(--c-ink);text-decoration:none;box-shadow:var(--ring-cream);background-image:var(--grain-cream)}
.gsi-promo .gsi-eyebrow{color:var(--c-dim)}
.gsi-promo > span:not(.gsi-eyebrow):not(.gsi-link){color:var(--c-dim);font-size:var(--t-small)}
.gsi-promo .gsi-link{color:var(--c-ink)}

/* ---- size split + table ---- */
.gsi-sizes__ph{display:block;height:100%;min-height:60vh}
.gsi-table{width:100%;border-collapse:collapse;font-size:var(--t-small);font-variant-numeric:tabular-nums}
.gsi-table th,.gsi-table td{text-align:left;padding:.55rem .6rem;border-bottom:1px solid var(--cream-3)}
.gsi-table thead th{font-size:var(--t-label);letter-spacing:var(--ls-label);text-transform:uppercase;color:var(--c-dim);font-weight:600}
.gsi-table tbody th{font-family:var(--font-display);font-size:var(--t-card);font-weight:800}
.band-dark .gsi-table th,.band-dark .gsi-table td,.band-raised .gsi-table th,.band-raised .gsi-table td{border-color:var(--ink-3)}
.band-dark .gsi-table thead th{color:var(--fg-mute)}

/* ---- compare ---- */
.gsi-compare__grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-4);margin-block-end:var(--space-block)}
.gsi-compare__col{display:grid;gap:var(--s-3);align-content:start;padding:var(--s-6);border-radius:var(--r-lg)}
.gsi-compare__col.band-raised{box-shadow:var(--ring)}
.gsi-compare__col p{color:inherit;opacity:.85}

/* ---- about + faq ---- */
.gsi-about__grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-8);align-items:start}
.gsi-about__text{display:grid;gap:var(--s-4)}
.gsi-about__text h2{margin-top:var(--s-3)}
.gsi-about__text p{color:var(--fg-dim)}

/* ---- reviews strip ---- */
.gsi-revstrip__grid{display:grid;grid-template-columns:12rem 1fr;gap:var(--s-6);align-items:center}
.gsi-revstrip__rating{display:grid;gap:.2rem;justify-items:start}
.gsi-revstrip__rating > span:nth-child(2){color:var(--accent-hi);letter-spacing:.1em}
.gsi-revstrip__rating .t-small{color:var(--fg-dim)}
.gsi-revstrip__rating .gsi-btn{margin-top:var(--s-3)}
.gsi-revstrip__cards{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s-3)}
.gsi-revstrip .gsi-review{background:var(--ink)}

/* ---- other categories ---- */
.gsi-others__grid{display:grid;grid-template-columns:repeat(6,1fr);gap:var(--s-3)}
.gsi-others__tile{display:grid;gap:var(--s-2);text-decoration:none;color:var(--fg);font-weight:600;font-size:var(--t-small)}
.gsi-others__tile .gsi-ph{display:block;aspect-ratio:1;border-radius:var(--r-md);transition:transform var(--dur-base) var(--ease-spring)}
.gsi-others__tile:hover .gsi-ph{transform:translateY(-3px)}

/* ---- product page ---- */
.gsi-product .gsi-crumbs{margin-block-end:var(--s-5)}
.gsi-product__grid{display:grid;grid-template-columns:3fr 2fr;gap:var(--s-7);align-items:start}
.gsi-gallery{display:grid;gap:var(--s-3)}
.gsi-gallery__main .gsi-frame__core{aspect-ratio:4/5}
.gsi-gallery__main img{width:100%;height:100%;object-fit:cover}
.gsi-gallery__thumbs{display:grid;grid-template-columns:repeat(6,1fr);gap:var(--s-2)}
.gsi-gallery__thumb{position:relative;display:block;width:100%;aspect-ratio:4/5;border-radius:var(--r-sm);overflow:hidden;box-shadow:var(--ring);background:var(--ink-2);padding:0;transition:box-shadow var(--dur-fast) var(--ease-out-expo)}
.gsi-gallery__thumb img,.gsi-gallery__thumb .gsi-ph{width:100%;height:100%;object-fit:cover;display:block;position:absolute;inset:0}
.gsi-gallery__thumb.is-active,.gsi-gallery__thumb[aria-pressed="true"]{box-shadow:0 0 0 2px var(--accent)}
.gsi-gallery__thumb--video .gsi-video__play{inset-inline-start:50%;inset-block-start:50%;transform:translate(-50%,-50%);inline-size:2.2rem;block-size:2.2rem}
.gsi-gallery__note{color:var(--fg-mute)}
.gsi-buy{position:sticky;top:calc(var(--header-h) + var(--s-4))}
.gsi-buy__in{display:grid;gap:var(--s-4);padding:var(--s-6);border-radius:var(--r-lg);background:var(--ink-2);box-shadow:var(--ring)}
.gsi-buy__tags{display:flex;gap:.4rem}
.gsi-buy__tag{position:static}
.gsi-buy__rating{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;font-size:var(--t-small);color:var(--fg-dim)}
.gsi-buy__price{display:flex;align-items:baseline;gap:var(--s-3)}
.gsi-buy__price .t-display{color:var(--accent-hi);font-family:var(--font-display);font-variant-numeric:tabular-nums}
.gsi-buy__desc{color:var(--fg-dim)}
.gsi-sizes-pick,.gsi-addons{margin:0;padding:0;border:0;display:grid;gap:var(--s-2)}
.gsi-sizes-pick legend,.gsi-addons legend{display:flex;justify-content:space-between;align-items:center;width:100%;font-size:var(--t-label);font-weight:600;letter-spacing:var(--ls-label);text-transform:uppercase;color:var(--fg-mute);margin-block-end:var(--s-2)}
.gsi-sizes-pick legend .gsi-link{text-transform:none;letter-spacing:0;font-size:var(--t-small)}
.gsi-addons .gsi-check{border-bottom:1px solid var(--ink-3)}
.gsi-buy__actions{display:grid;grid-template-columns:5rem 1fr;gap:var(--s-2);padding-top:var(--s-2)}
.gsi-buy__actions .gsi-btn--wa{grid-column:1/-1;justify-content:center}
.gsi-qty input{width:100%;min-height:var(--btn-h-lg);padding:.4rem .8rem;border-radius:var(--r-pill);background:var(--ink);border:1px solid var(--border-ui);text-align:center;font-weight:600}
.gsi-buy__info{display:grid;gap:.5rem;padding-top:var(--s-3);border-top:1px solid var(--ink-3);font-size:var(--t-small);color:var(--fg-dim)}
.gsi-buy__info li{display:flex;gap:.6rem;align-items:center}
.gsi-buy__info svg{inline-size:1.2rem;block-size:1.2rem;flex:none;color:var(--silver)}
.gsi-spec{display:grid;grid-template-columns:repeat(2,1fr);gap:0 var(--s-8);margin:var(--space-block) 0 0;padding:var(--s-5) var(--s-6);border-radius:var(--r-lg);box-shadow:var(--ring);background:var(--ink-2);background-image:var(--grain)}
.gsi-spec div{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-3);padding-block:.7rem;border-bottom:1px solid var(--ink-3)}
.gsi-spec dt{font-size:var(--t-label);font-weight:600;letter-spacing:var(--ls-label);text-transform:uppercase;color:var(--fg-mute);align-self:center}
.gsi-spec dd{margin:0;font-weight:500}
.gsi-watchbat__media{min-height:60vh}
.gsi-watchbat__video{position:relative;display:block;height:100%;min-height:60vh}
.gsi-watchbat__video .gsi-ph{position:absolute;inset:0}
.gsi-watchbat__play{inset-inline-start:50%;inset-block-start:50%;transform:translate(-50%,-50%);inline-size:4.5rem;block-size:4.5rem}
.gsi-watchbat__play svg{inline-size:1.8rem;block-size:1.8rem}
.gsi-tablist{display:flex;gap:var(--s-2);border-bottom:1px solid var(--ink-3);margin-block-end:var(--space-element);overflow-x:auto}
.gsi-tab{padding:.8rem 1rem;font-weight:600;color:var(--fg-dim);border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap}
.gsi-tab[aria-selected="true"]{color:var(--fg);border-color:var(--accent)}
.gsi-tabpanel p{color:var(--fg-dim)}
.gsi-complete__grid{display:grid;grid-template-columns:repeat(4,1fr) 1.4fr;gap:var(--s-3)}
.gsi-complete__slot{display:grid;gap:.3rem;padding:var(--s-3);border-radius:var(--r-md);background:var(--ink);box-shadow:var(--ring)}
.gsi-complete__slot .gsi-ph{display:block;aspect-ratio:1;border-radius:var(--r-sm)}
.gsi-complete__name{font-weight:600;font-size:var(--t-small)}
.gsi-complete__price{font-family:var(--font-display);font-size:var(--t-card);color:var(--accent-hi)}
.gsi-complete__total{display:grid;gap:.3rem;align-content:center;padding:var(--s-5);border-radius:var(--r-md);background:var(--cream);color:var(--c-ink);background-image:var(--grain-cream)}
.gsi-complete__total .t-display{font-family:var(--font-display);line-height:1}
.gsi-complete__total .t-small{color:var(--c-dim)}
.gsi-complete__total .gsi-link{color:var(--c-ink)}
.gsi-complete__total .gsi-actions{margin-top:var(--s-3)}
.gsi-prodreviews__grid{display:grid;grid-template-columns:12rem 1fr;gap:var(--s-6);align-items:start}
.gsi-prodreviews__list{display:grid;gap:var(--s-3)}
.gsi-related__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--s-4)}
.gsi-buybar{display:none;position:fixed;inset-inline:0;inset-block-end:0;z-index:var(--z-sticky);grid-template-columns:1fr auto auto;gap:var(--s-2);align-items:center;padding:.6rem var(--gutter) calc(.6rem + env(safe-area-inset-bottom));background:rgb(var(--ink-rgb)/.94);backdrop-filter:blur(12px);border-top:1px solid var(--ink-3)}
.gsi-buybar__info{display:grid;line-height:1.1}
.gsi-buybar__info strong{font-family:var(--font-display);font-size:var(--t-stat);color:var(--accent-hi)}
.gsi-buybar .gsi-btn--wa{padding-inline:.8rem}

/* ---- images in the former placeholder slots ---- */
.gsi-others__tile img{display:block;width:100%;aspect-ratio:1;object-fit:cover;border-radius:var(--r-md);transition:transform var(--dur-base) var(--ease-spring)}
.gsi-others__tile:hover img{transform:translateY(-3px)}
.gsi-complete__slot img{display:block;width:100%;aspect-ratio:1;object-fit:cover;border-radius:var(--r-sm)}
.gsi-watchbat__video img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}

/* ---- product: the Panther video as a framed 16:9 card, so the thumbnail shows whole ---- */
.gsi-watchbat__media{display:grid;place-items:center;min-height:0;padding:var(--space-section) var(--gutter);background:var(--cream-2)}
.gsi-watchbat__video{width:100%;max-width:44rem;min-height:0;height:auto;aspect-ratio:16/9;border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--ring-cream),var(--shadow-float)}
.gsi-tabpanel p + p{margin-top:var(--s-4)}
.gsi-sizes__img{display:block;width:100%;height:100%;min-height:60vh;object-fit:cover}
.band-cream.gsi-about .gsi-about__text p{color:var(--c-dim)}
/* gear cut-outs (kit-scene layers) sit whole on a cream card, matching the studio shots' backdrop */
.gsi-card__media--cutout{background:var(--cream-2)}
.gsi-card__media--cutout img{object-fit:contain;padding:var(--s-5)}
/* policy pages: readable prose on cream */
.gsi-legal__body{display:grid;gap:var(--space-tight)}
.gsi-legal__body h2{font-family:var(--font-display);font-size:var(--t-sub);line-height:1.05;margin-top:var(--space-block)}
.gsi-legal__body h2:first-child{margin-top:0}
.gsi-legal__body ul{display:grid;gap:var(--s-2);padding-inline-start:1.2em;list-style:disc}
.gsi-legal__body a{color:var(--c-ink);text-decoration:underline;text-underline-offset:.2em}
.gsi-legal__updated{margin-top:var(--space-block);font-size:var(--t-small);color:var(--c-dim)}

/* ---- WordPress: the size and filter chips are form inputs (WooCommerce's forms) ---- */
.gsi-chip--check{position:relative;cursor:pointer}
.gsi-chip--check>input{position:absolute;inset:0;opacity:0;margin:0;cursor:pointer}
.gsi-chip--check:has(input:checked){background:var(--fg);color:var(--ink);box-shadow:none}
.gsi-chip--check:has(input:focus-visible){outline:var(--focus-ring) solid var(--focus-color);outline-offset:3px}
.gsi-shop__empty{grid-column:1/-1;color:var(--fg-dim)}
a.gsi-complete__slot{text-decoration:none;color:inherit}
.gsi-shop__products .added_to_cart{grid-column:1/-1}
.gsi-card__actions .added_to_cart{display:none}


/* ==== 35-home.css ==== */
/* Homepage sections, by the prototype's class names — from the prototype's assets/css/20-home.css, verbatim. Edit here, not in the prototype, from now on. */
/* Homepage looks. One class per look; each becomes is-style-<name> in WordPress. */

/* ---- 1. hero: split ---- */
.gsi-hero{position:relative;overflow:hidden;padding-block:var(--s-7) var(--s-6);min-height:calc(100vh - var(--header-h) - var(--topbar-h))}
.gsi-hero__grid{display:grid;grid-template-columns:7fr 5fr;gap:var(--s-8);align-items:center;min-height:calc(100vh - var(--header-h) - var(--topbar-h) - 9rem)}
.gsi-hero__body{display:grid;gap:var(--space-element);align-content:center}
.gsi-hero__title{margin-block:var(--s-2) var(--s-2);max-width:11em}
.gsi-hero__sub{max-width:34rem}
.gsi-hero__from{font-size:var(--t-small);color:var(--fg-mute)}
.gsi-hero__chips{display:flex;flex-wrap:wrap;gap:var(--s-2);padding-block-start:var(--s-2);border-top:1px solid var(--ink-3);padding-top:var(--s-5)}
.gsi-hero__media{position:relative;justify-self:end;width:min(100%,30rem)}
.gsi-hero__frame{aspect-ratio:4/5;box-shadow:var(--ring-strong),0 60px 120px -40px rgb(0 0 0/.8)}
.gsi-hero__frame .gsi-frame__core,.gsi-hero__frame img{height:100%}
.gsi-hero__frame img{object-fit:cover;width:100%}
.gsi-hero__card{position:absolute;inset-inline-start:-14%;inset-block-end:9%;display:grid;gap:.15rem;padding:var(--s-4) var(--s-5);border-radius:var(--r-md);background:var(--ink-2);box-shadow:var(--ring-strong),0 30px 60px -20px rgb(0 0 0/.7);max-width:16rem}
.gsi-hero__card-label{font-size:var(--t-label);letter-spacing:var(--ls-label);text-transform:uppercase;color:var(--fg-mute);font-weight:600}
.gsi-hero__card strong{font-family:var(--font-display);font-size:var(--t-stat);line-height:1;letter-spacing:.01em}
.gsi-hero__card-sub{font-size:var(--t-small);color:var(--fg-dim)}
.gsi-hero__trust{display:flex;flex-wrap:wrap;gap:var(--s-3) var(--s-6);margin-top:var(--s-7);padding-top:var(--s-4);border-top:1px solid var(--ink-3);font-size:var(--t-small);color:var(--fg-dim)}
.gsi-hero__trust strong{color:var(--fg);font-weight:600}

/* hero option A: centred bat with the giant faded word and drifting shavings (essentia faded word · stone-sip particles) */
.gsi-hero--centre .gsi-hero__grid{grid-template-columns:1fr;justify-items:center;text-align:center}
.gsi-hero--centre .gsi-hero__body{justify-items:center}
.gsi-hero--centre .gsi-hero__title{max-width:14em}
.gsi-hero--centre .gsi-hero__sub{margin-inline:auto}
.gsi-hero--centre .gsi-hero__chips{justify-content:center}
.gsi-hero--centre .gsi-hero__media{justify-self:center;width:min(100%,24rem);margin-top:var(--s-6)}
.gsi-hero--centre .gsi-hero__card{inset-inline-start:auto;inset-inline-end:-18%;inset-block-end:18%;text-align:left}
.gsi-hero__word{position:absolute;inset-inline:0;inset-block-start:38%;text-align:center;font-family:var(--font-display);font-size:clamp(8rem,26vw,24rem);line-height:.8;letter-spacing:-.02em;color:rgb(var(--fg-rgb)/.045);user-select:none;pointer-events:none;white-space:nowrap}
.gsi-shavings{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.gsi-shavings span{position:absolute;inset-inline-start:var(--x);inset-block-start:-4%;width:.35rem;height:.9rem;border-radius:40% 60% 50% 50%;background:rgb(239 227 207/.35);transform:rotate(var(--r));animation:gsi-drift var(--d) linear infinite;animation-delay:var(--delay)}
@keyframes gsi-drift{to{transform:translateY(110vh) rotate(calc(var(--r) + 540deg))}}
@media (prefers-reduced-motion:reduce){.gsi-shavings{display:none}}

/* hero option C: full-bleed muted video loop behind the type (poster first; video after load, never on phones) */
.gsi-hero--video{isolation:isolate}
.gsi-hero--video .gsi-hero__grid{grid-template-columns:1fr;min-height:70vh;align-items:end;position:relative;z-index:1}
.gsi-hero--video .gsi-hero__trust{position:relative;z-index:1}
.gsi-hero--video .gsi-hero__bg{position:absolute;inset:0;z-index:0}
.gsi-hero--video .gsi-hero__bg img,.gsi-hero--video .gsi-hero__bg video{width:100%;height:100%;object-fit:cover;opacity:.55}
.gsi-hero--video .gsi-hero__bg::after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgb(var(--ink-rgb)/.96) 20%,rgb(var(--ink-rgb)/.35) 60%,rgb(var(--ink-rgb)/.2))}
.gsi-hero--video .gsi-hero__body{max-width:48rem}

/* ---- 3. categories: tiles ---- */
.gsi-cats__grid{display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(2,minmax(14rem,1fr));gap:var(--s-4)}
.gsi-cat{position:relative;display:grid;grid-template-rows:1fr auto;min-height:14rem;border-radius:var(--r-lg);overflow:hidden;background:var(--cream-2);box-shadow:var(--ring-cream);text-decoration:none;color:var(--c-ink);transition:transform var(--dur-base) var(--ease-spring),box-shadow var(--dur-base) var(--ease-out-expo)}
.gsi-cat:hover{transform:translateY(-4px);box-shadow:var(--ring-cream),var(--shadow-float)}
.gsi-cat--big{grid-column:span 2;grid-row:span 2}
.gsi-cat > img,.gsi-cat__ph{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform var(--dur-slow) var(--ease-out-expo)}
.gsi-cat:hover > img{transform:scale(1.03)}
.gsi-cat--big::before{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgb(var(--ink-rgb)/.82),rgb(var(--ink-rgb)/.1) 55%)}
.gsi-cat__body{position:relative;grid-row:2;display:grid;gap:.15rem;padding:var(--s-4) var(--s-5)}
.gsi-cat--big .gsi-cat__body{color:var(--fg);padding:var(--s-5) var(--s-6);margin:var(--s-4);border-radius:var(--r-md);background:var(--ink-2);box-shadow:var(--ring)}
.gsi-cat:not(.gsi-cat--big) .gsi-cat__body{background:rgb(var(--cream-rgb)/.92);backdrop-filter:blur(6px)}
.gsi-cat__name{font-family:var(--font-display);font-size:var(--t-sub);line-height:1}
.gsi-cat--big .gsi-cat__name{font-size:var(--t-display)}
.gsi-cat__line{font-size:var(--t-small);color:var(--c-dim)}
.gsi-cat--big .gsi-cat__line{color:var(--fg-dim)}
.gsi-cat__meta{font-size:var(--t-label);letter-spacing:.06em;text-transform:uppercase;font-weight:600;color:var(--c-dim);margin-top:.35rem}
.gsi-cat--big .gsi-cat__meta{color:var(--silver)}
.gsi-cat__arrow{position:absolute;inset-inline-end:var(--s-4);inset-block-start:var(--s-4);display:grid;place-items:center;inline-size:2.5rem;block-size:2.5rem;border-radius:var(--r-pill);background:rgb(var(--cream-rgb)/.9);color:var(--c-ink);font-weight:600;transition:transform var(--dur-base) var(--ease-spring)}
.gsi-cat:hover .gsi-cat__arrow{transform:translate(2px,-2px)}

/* ---- 4. top picks ---- */
.gsi-picks__head{display:flex;justify-content:space-between;align-items:end;gap:var(--s-6);flex-wrap:wrap;margin-block-end:var(--space-block)}
.gsi-picks__head .gsi-head{margin:0}
.gsi-picks__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s-4)}
.gsi-card[hidden]{display:none}
.gsi-picks__more{margin-top:var(--space-block);display:flex;justify-content:center;max-width:none}
.gsi-picks__more .gsi-btn--ghost{padding-inline-end:.3rem}

/* ---- 5. willow halves ---- */
.gsi-willow{position:relative;display:grid;grid-template-columns:1fr 1fr}
.gsi-willow__half{position:relative;display:grid;grid-template-rows:1fr auto;min-height:80vh;overflow:hidden}
.gsi-willow__body{position:relative;z-index:1;display:grid;gap:var(--space-element);align-content:start;padding:var(--space-section-lg) var(--gutter) var(--space-block);max-width:34rem;justify-self:center}
.gsi-willow__half:first-child .gsi-willow__body{justify-self:end;padding-inline-end:clamp(2rem,6vw,6rem)}
.gsi-willow__half:last-child .gsi-willow__body{justify-self:start;padding-inline-start:clamp(2rem,6vw,6rem)}
.gsi-willow__img{position:absolute;inset-inline:0;inset-block-end:0;height:46%;width:100%;object-fit:cover;object-position:center 30%;mask-image:linear-gradient(180deg,transparent,#000 40%)}
.gsi-willow__half:last-child .gsi-willow__img{height:46%}
.gsi-willow__lede{grid-column:1/-1;order:-1;justify-self:center;max-width:44rem;margin:0;padding:var(--space-section-sm) var(--gutter) var(--s-6);text-align:center;font-size:var(--t-lead);color:var(--fg-dim)}

/* ---- 6. price tiles ---- */
.gsi-price__h{margin-block-end:var(--s-5)}
.gsi-price__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--s-3)}
.gsi-price__tile{display:grid;gap:.1rem;padding:var(--s-5);border-radius:var(--r-md);background:var(--ink);box-shadow:var(--ring);text-decoration:none;color:var(--fg);transition:box-shadow var(--dur-fast) var(--ease-out-expo),transform var(--dur-base) var(--ease-spring)}
.gsi-price__tile:hover{box-shadow:var(--ring-strong);transform:translateY(-3px)}
.gsi-price__tile span{font-size:var(--t-label);letter-spacing:var(--ls-label);text-transform:uppercase;font-weight:600;color:var(--fg-mute)}
.gsi-price__tile strong{font-family:var(--font-display);font-size:var(--t-display);line-height:.95;letter-spacing:-.01em}
.gsi-price__tile small{font-size:var(--t-small);color:var(--fg-dim);margin-top:.4rem}
.gsi-price__tile--ew strong{color:var(--accent-hi)}

/* ---- 7. craft ---- */
.gsi-craft__grid{display:grid;grid-template-columns:5fr 6fr;gap:var(--s-9);align-items:start}
.gsi-craft__media{position:sticky;top:calc(var(--header-h) + var(--s-5));display:grid;gap:var(--s-4)}
.gsi-craft__ph{display:block;aspect-ratio:4/5}
.gsi-video{position:relative;display:grid;grid-template-columns:7rem 1fr;align-items:center;gap:var(--s-4);padding:var(--s-3);border-radius:var(--r-md);background:var(--ink-2);box-shadow:var(--ring);text-decoration:none;color:var(--fg-dim);font-size:var(--t-small)}
.gsi-video strong{color:var(--fg)}
.gsi-video__thumb{display:block;aspect-ratio:16/9;border-radius:var(--r-sm);overflow:hidden}
.gsi-video__play{position:absolute;inset-inline-start:2.4rem;inset-block-start:50%;transform:translateY(-50%);display:grid;place-items:center;inline-size:2.6rem;block-size:2.6rem;border-radius:var(--r-pill);background:var(--accent);color:var(--on-accent);box-shadow:0 10px 30px -8px rgb(0 0 0/.8)}
.gsi-video__play svg{inline-size:1.1rem;block-size:1.1rem}
.gsi-video:hover .gsi-video__play{background:#C9101A}
.gsi-steps{display:grid;position:relative;padding-inline-start:4.5rem;background:linear-gradient(var(--ink-4),var(--ink-4)) 1.35rem 0/1px 100% no-repeat}
.gsi-steps__row{position:relative;display:grid;gap:var(--s-3);padding-block:var(--s-5);border-bottom:1px solid var(--ink-3)}
.gsi-steps__row:last-child{border-bottom:0}
.gsi-steps__row > div{display:grid;gap:var(--s-2)}
.gsi-steps__row p{color:var(--fg-dim)}
.gsi-steps__num{position:absolute;inset-inline-start:-4.5rem;inset-block-start:var(--s-5);display:grid;place-items:center;inline-size:2.75rem;block-size:2.75rem;border-radius:var(--r-pill);background:var(--ink);box-shadow:var(--ring-strong);font-family:var(--font-display);font-size:var(--t-card);color:var(--fg)}
.gsi-steps__row:first-child .gsi-steps__num{background:var(--accent);color:var(--on-accent);box-shadow:none}

/* ---- 8. custom: ticks + proof clips ---- */
.gsi-ticks{display:grid;grid-template-columns:1fr 1fr;gap:.5rem var(--s-5)}
.gsi-ticks li{display:flex;gap:.6rem;align-items:baseline;font-weight:500}
.gsi-ticks li::before{content:"✓";color:var(--accent);font-weight:700}
.gsi-proof{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s-3);padding-top:var(--s-4);border-top:1px solid var(--cream-3)}
.gsi-proof__label{grid-column:1/-1;font-size:var(--t-label);letter-spacing:var(--ls-label);text-transform:uppercase;font-weight:600;color:var(--c-dim)}
.gsi-proof__clip{display:grid;gap:.4rem;text-decoration:none;color:var(--c-ink);font-size:var(--t-small);font-weight:600}
.gsi-proof__clip .gsi-ph{display:block;aspect-ratio:16/10;border-radius:var(--r-sm)}

/* ---- 9. kit teaser ---- */
.gsi-kitteaser__grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-9);align-items:center}
.gsi-kitteaser__body{display:grid;gap:var(--space-element)}
.gsi-kits{display:grid;border-top:1px solid var(--ink-3)}
.gsi-kits__row{display:grid;grid-template-columns:7rem 1fr auto;gap:var(--s-4);align-items:center;padding-block:var(--s-4);border-bottom:1px solid var(--ink-3)}
.gsi-kits__name{font-family:var(--font-display);font-size:var(--t-card)}
.gsi-kits__items{font-size:var(--t-small);color:var(--fg-dim)}
.gsi-kits__price{font-family:var(--font-display);font-size:var(--t-stat);color:var(--accent-hi);font-variant-numeric:tabular-nums}
.gsi-kitteaser__note{font-size:var(--t-small);color:var(--fg-mute)}
.gsi-kitteaser__media .gsi-frame__core{aspect-ratio:4/3}
.gsi-kitteaser__media img{width:100%;height:100%;object-fit:cover}

/* ---- 10. the Gateway portal ---- */
.gsi-portal{position:relative}
.gsi-portal__track{position:relative}
.gsi-portal__stage{position:relative;height:70vh;min-height:30rem;overflow:hidden;display:grid;place-items:center;isolation:isolate}
.gsi-portal__world{position:absolute;inset:0;z-index:0;overflow:hidden;will-change:transform;transform-origin:50% 50%}
.gsi-portal__valley{width:100%;height:100%}
.gsi-portal__ph{position:absolute;inset-inline-end:var(--s-4);inset-block-end:var(--s-4);font-size:var(--t-label);letter-spacing:.08em;text-transform:uppercase;font-weight:600;color:var(--fg-dim);background:rgb(var(--ink-rgb)/.6);padding:.3rem .6rem;border-radius:var(--r-sm)}
.gsi-portal__plate{position:absolute;inset:0;z-index:1;will-change:transform,opacity;transform-origin:50% 42.5%}
.gsi-portal__plate svg{width:100%;height:100%}
.gsi-portal__intro{position:relative;z-index:2;display:grid;justify-items:center;text-align:center;gap:var(--space-tight);padding:var(--s-6) var(--gutter);max-width:46rem;will-change:opacity,transform}
.gsi-portal__intro .t-lead{color:var(--fg)}
.gsi-portal__intro .gsi-eyebrow{color:var(--fg)}
.gsi-portal__intro > *{text-shadow:0 2px 18px rgb(0 0 0/.7),0 1px 3px rgb(0 0 0/.6)}
.gsi-portal__after .gsi-head h2,.gsi-portal__after .gsi-head p{text-shadow:0 2px 18px rgb(0 0 0/.7)}
.gsi-portal__after .gsi-head p{color:var(--fg)}
.gsi-portal__hint{margin-top:var(--s-5);font-size:var(--t-label);letter-spacing:var(--ls-label);text-transform:uppercase;font-weight:600;color:var(--fg-dim);display:inline-flex;align-items:center;gap:.5rem}
.gsi-portal__hint::after{content:"↓";animation:gsi-bob 1.6s var(--ease-spring) infinite}
@keyframes gsi-bob{0%,100%{transform:translateY(0)}50%{transform:translateY(5px)}}
.gsi-portal__after{position:relative;z-index:3;padding-block:var(--space-block) var(--space-section)}
.gsi-portal--live .gsi-portal__track{height:160vh}
.gsi-portal--live .gsi-portal__stage{position:sticky;top:0;height:100vh}
.gsi-portal--live .gsi-portal__after{margin-top:-20vh;background:linear-gradient(180deg,transparent,rgb(var(--ink-rgb)/.85) 30%,var(--ink) 55%)}
.gsi-portal--live .gsi-portal__hint{display:inline-flex}
.gsi-portal:not(.gsi-portal--live) .gsi-portal__hint{display:none}
/* fallback (no JS, reduced motion): a plain band and a row of cards */
.gsi-portal:not(.gsi-portal--live) .gsi-portal__plate{display:none}
.gsi-portal:not(.gsi-portal--live) .gsi-portal__world{opacity:.35}
.gsi-portal:not(.gsi-portal--live) .gsi-arc{display:grid;grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));gap:var(--s-4);height:auto}
.gsi-portal:not(.gsi-portal--live) .gsi-arc__card{position:static;transform:none!important;opacity:1!important}
.gsi-portal:not(.gsi-portal--live) .gsi-arc__nav{display:none}
/* arc carousel */
.gsi-arc{position:relative;height:30rem;margin-block:var(--s-5) var(--s-4)}
.gsi-arc__card{position:absolute;inset-inline-start:50%;inset-block-start:0;width:19rem;min-height:21rem;margin-inline-start:-9.5rem;transition:transform 550ms var(--ease-spring),opacity 550ms var(--ease-out-expo);will-change:transform;pointer-events:none}
.gsi-arc__card.is-center{pointer-events:auto;background:var(--cream);color:var(--c-ink);box-shadow:0 0 0 1px rgb(255 255 255/.5),0 0 60px rgb(239 227 207/.25),0 30px 60px -20px rgb(0 0 0/.7)}
.gsi-arc__card.is-center .gsi-review__quote{color:var(--c-ink)}
.gsi-arc__card.is-center .gsi-review__who{color:var(--c-dim)}
.gsi-arc__card.is-center .gsi-review__who strong{color:var(--c-ink)}
.gsi-arc__card.is-center .gsi-review__stars{color:var(--accent-deep)}
.gsi-arc__card.is-center .gsi-slot{color:var(--c-dim)}
.gsi-arc__card.is-center .gsi-g{background:var(--c-ink);color:var(--cream)}
.gsi-arc__card:not(.is-center){background:linear-gradient(135deg,rgb(var(--fg-rgb)/.14),rgb(var(--fg-rgb)/.06));backdrop-filter:blur(14px) saturate(140%);-webkit-backdrop-filter:blur(14px) saturate(140%);box-shadow:inset 0 1px 1px rgb(255 255 255/.25),0 0 0 1px rgb(var(--fg-rgb)/.12)}
.gsi-arc__nav{display:flex;justify-content:center;align-items:center;gap:var(--s-3)}
.gsi-arc__btn{display:grid;place-items:center;inline-size:2.9rem;block-size:2.9rem;border-radius:var(--r-pill);background:rgb(var(--fg-rgb)/.12);color:var(--fg);transition:background-color var(--dur-fast) var(--ease-out-expo),transform var(--dur-fast) var(--ease-spring)}
.gsi-arc__btn svg{inline-size:1.2rem;block-size:1.2rem}
.gsi-arc__btn:hover{background:rgb(var(--fg-rgb)/.2)}
.gsi-arc__btn:active{transform:scale(.96)}
.gsi-arc__btn--next{background:var(--fg);color:var(--ink)}
.gsi-arc__btn--next:hover{background:#fff}
.gsi-arc__status{font-size:var(--t-small);color:var(--fg-mute);min-width:7rem;text-align:center;font-variant-numeric:tabular-nums}
.gsi-portal__links{justify-content:center;margin-top:var(--space-block)}

/* ---- 11. since 1950: polaroids (the page's one tilt) ---- */
.gsi-story__media{display:grid;place-items:center;padding:var(--space-section) var(--gutter);background:var(--cream-2)}
.gsi-polaroids{position:relative;display:grid;grid-template-columns:repeat(2,minmax(0,16rem));gap:var(--s-5);justify-content:center}
.gsi-polaroid{margin:0;padding:.6rem .6rem 1rem;background:#FBF6EC;box-shadow:var(--shadow-float),var(--ring-cream);transform:rotate(var(--tilt,-2deg))}
.gsi-polaroid:nth-child(2){--tilt:2deg;margin-top:var(--s-7)}
.gsi-polaroid:nth-child(3){--tilt:-1.5deg;grid-column:1/-1;justify-self:center;width:min(100%,18rem);margin-top:calc(-1 * var(--s-6))}
.gsi-polaroid img,.gsi-polaroid .gsi-ph{display:block;aspect-ratio:4/5;width:100%;height:auto;object-fit:cover}
.gsi-polaroid figcaption{margin-top:.6rem;font-size:var(--t-label);letter-spacing:.06em;text-transform:uppercase;font-weight:600;color:var(--c-dim);text-align:center}
.gsi-facts{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-3) var(--s-5);margin:0;border-top:1px solid var(--cream-3);padding-top:var(--s-4)}
.gsi-facts div{display:grid;gap:.1rem;padding-block:.4rem;border-bottom:1px solid var(--cream-3)}
.gsi-facts dt{font-size:var(--t-label);letter-spacing:var(--ls-label);text-transform:uppercase;font-weight:600;color:var(--c-dim)}
.gsi-facts dd{margin:0;font-family:var(--font-display);font-size:var(--t-card);line-height:1.1}

/* ---- 12. watch: phone reel ---- */
.gsi-watch__grid{display:grid;grid-template-columns:5fr 7fr;gap:var(--s-9);align-items:center}
.gsi-watch .gsi-head{margin:0}
.gsi-reel{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--s-3);align-items:end}
.gsi-phone{display:grid;gap:var(--s-2);text-decoration:none;color:var(--fg-dim);font-size:var(--t-small)}
.gsi-phone:nth-child(2n){margin-bottom:var(--s-6)}
.gsi-phone__screen{position:relative;display:block;aspect-ratio:9/16;border-radius:1.4rem;overflow:hidden;box-shadow:var(--ring-strong),inset 0 0 0 4px var(--ink-2);background:var(--ink-2)}
.gsi-phone__screen img{width:100%;height:100%;object-fit:cover}
.gsi-phone__screen .gsi-video__play{inset-inline-start:50%;inset-block-start:50%;transform:translate(-50%,-50%)}
.gsi-phone:hover .gsi-video__play{background:#C9101A}
.gsi-phone__cap{padding-inline:.3rem}

/* ---- 13. how to order ---- */
.gsi-order__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s-4)}
.gsi-order__card{display:grid;gap:var(--s-3);align-content:start;padding:var(--s-6);border-radius:var(--r-lg);background:var(--ink);box-shadow:var(--ring)}
.gsi-order__card p{color:var(--fg-dim)}
.gsi-order__icon{inline-size:2rem;block-size:2rem;color:var(--silver)}

/* ---- 14. visit ---- */
.gsi-visit__map{min-height:60vh}
.gsi-visit__maplink{position:relative;display:block;height:100%;min-height:60vh;text-decoration:none;color:var(--c-ink)}
.gsi-visit__maplink .gsi-ph{position:absolute;inset:0}
.gsi-visit__pin{position:absolute;inset-inline-start:50%;inset-block-start:50%;inline-size:1.2rem;block-size:1.2rem;border-radius:50% 50% 50% 0;background:var(--accent);transform:translate(-50%,-100%) rotate(-45deg);box-shadow:0 10px 20px -6px rgb(0 0 0/.5)}
.gsi-visit__open{position:absolute;inset-inline-start:var(--s-5);inset-block-end:var(--s-5);padding:.6rem 1rem;border-radius:var(--r-pill);background:var(--c-ink);color:var(--cream);font-weight:600;font-size:var(--t-small)}
.gsi-places{display:grid;gap:var(--s-4)}
.gsi-place{display:grid;gap:var(--s-2);padding:var(--s-5);border-radius:var(--r-lg);background:rgb(var(--c-ink-rgb)/.04);box-shadow:var(--ring-cream)}
.gsi-place p{color:var(--c-dim)}

/* ---- 15. closing ---- */
.gsi-closing__in{display:grid;grid-template-columns:1fr auto;gap:var(--s-6);align-items:center}
.gsi-closing .gsi-head{margin:0;max-width:40rem}

/* ---- real and generated images in the slots that held placeholders ---- */
.gsi-cat__img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform var(--dur-slow) var(--ease-out-expo)}
.gsi-cat:hover .gsi-cat__img{transform:scale(1.03)}
.gsi-craft__img{display:block;width:100%;aspect-ratio:4/5;object-fit:cover}
.gsi-video__thumb{width:100%;aspect-ratio:16/9;object-fit:cover}
.gsi-proof__clip img{display:block;width:100%;aspect-ratio:16/10;object-fit:cover;border-radius:var(--r-sm);box-shadow:var(--ring-cream)}
.gsi-proof__clip{position:relative}
.gsi-ticks + .gsi-proof{margin-top:var(--space-element)}
.gsi-wrap-half > * + .gsi-actions{margin-top:var(--s-6)}
.gsi-visit__mapimg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.gsi-visit__credit{position:absolute;inset-inline-end:var(--s-3);inset-block-end:var(--s-3);padding:.15rem .45rem;border-radius:var(--r-sm);background:rgb(var(--cream-rgb)/.85);font-size:var(--t-label);color:var(--c-dim)}

/* ---- category tiles v2: photo on top, text below; the big tile keeps a compact label card ---- */
.gsi-cats__grid{grid-template-rows:auto auto}
.gsi-cat:not(.gsi-cat--big){grid-template-rows:auto 1fr;min-height:0}
.gsi-cat:not(.gsi-cat--big) .gsi-cat__img{position:static;display:block;width:100%;height:auto;aspect-ratio:16/10;object-fit:cover}
.gsi-cat:not(.gsi-cat--big) .gsi-cat__body{grid-row:2;background:none;backdrop-filter:none;padding:var(--s-4) var(--s-5) var(--s-5)}
.gsi-cat--big{min-height:34rem}
.gsi-cat--big::before{background:linear-gradient(0deg,rgb(var(--ink-rgb)/.55),transparent 45%)}
.gsi-cat--big .gsi-cat__body{justify-self:start;align-self:end;width:auto;max-width:calc(100% - 2*var(--s-4));padding:var(--s-4) var(--s-5)}
.gsi-cat--big .gsi-cat__name{font-size:var(--t-section)}

/* ---- portal v2: a real photo behind the shield, the willow-cleft plate around it ---- */
.gsi-portal__valley{width:100%;height:100%;object-fit:cover}
.gsi-portal__world::after{content:"";position:absolute;inset:0;background:radial-gradient(70% 60% at 50% 48%,rgb(var(--ink-rgb)/.62),rgb(var(--ink-rgb)/.82) 100%);opacity:var(--veil,1);transition:opacity 120ms linear}
.gsi-portal__credit{position:absolute;z-index:3;inset-inline-end:var(--s-4);inset-block-end:var(--s-4);padding:.2rem .5rem;border-radius:var(--r-sm);background:rgb(var(--ink-rgb)/.7);font-size:var(--t-label);color:var(--fg-dim)}

/* ---- willow halves v2: text, then the photo below it. No overlap ---- */
.gsi-willow__half{grid-template-rows:auto 1fr;min-height:0}
.gsi-willow__body{padding-block-end:var(--space-block)}
.gsi-willow__img{position:static;display:block;width:100%;height:clamp(16rem,28vw,26rem);mask-image:none;align-self:end}
.gsi-willow__half{grid-template-rows:auto;min-height:0}
.gsi-willow__body{padding-block:var(--space-section-lg)}
/* willow: the intro sits right under the dark top-picks band, so the picks' bottom padding is the only gap (03 §2 R5) */
.gsi-willow__lede{padding-block-start:0}
.gsi-willow__body{padding-block:var(--space-section)}
/* heading → its text is tight (03 §3 R6): the body column uses the element gap, the h3 pulls its paragraph closer */
.gsi-willow__body h3 + p{margin-top:calc(var(--space-tight) - var(--space-element))}
.gsi-polaroids{align-items:start}


/* ==== 41-ticker.css ==== */
/* The marquee: the Text Ticker block (arenex/ticker) in the prototype's .gsi-marquee look.
   The band (border, padding, ground, fade at the edges) is .gsi-marquee itself (03-components);
   this maps the item look onto the block's list. The block keeps its pause button and stands
   still with reduced motion. */
.gsi-marquee.arenex-ticker{position:relative;margin:0}
.gsi-marquee .arenex-ticker__track{gap:var(--s-7);align-items:center}
.gsi-marquee .arenex-ticker__list{display:flex;gap:var(--s-7);margin:0;padding:0;list-style:none}
.gsi-marquee .arenex-ticker__item{display:inline-flex;align-items:center;gap:var(--s-7);margin:0;padding:0;font-family:var(--font-display);font-weight:800;font-size:var(--t-stat);line-height:var(--lh-body);letter-spacing:.02em;text-transform:uppercase;color:var(--fg-dim);white-space:nowrap}
.gsi-marquee .arenex-ticker__item::before{content:none}
.gsi-marquee .arenex-ticker__item::after{content:"✦";color:var(--accent);font-size:.8em}
.gsi-marquee .arenex-ticker__text{color:inherit;font:inherit}
@media (max-width:767px){
  .gsi-marquee .arenex-ticker__item{font-size:var(--t-card)}
}


/* ==== 50-forms.css ==== */
/* The form card (core/group "Form card") and Fluent Forms skinned to a house prototype's form:
   labels over 52px fields, help under the field, choices as tiles, one full-width button.
   From Eastern Christmas Lights (4 Oct 2026), measured field by field against the prototype.
   Setup writes each form with its help under the field (inc/setup.php, helpMessagePlacement). */

.wp-block-group.is-style-form-card{background:var(--light-raised);color:var(--light-c);border-radius:var(--r-lg);padding:clamp(1.25rem,3vw,2rem);box-shadow:0 4px 12px rgb(0 0 0 / .18),0 18px 40px rgb(0 0 0 / .22)}
:is(.is-style-band-light,.has-light-background-color) .wp-block-group.is-style-form-card{box-shadow:none;border:1px solid var(--light-line)}
.is-style-form-card>.wp-block-group__inner-container>:is(h2,h3){margin-bottom:var(--s-2);font-size:var(--t-card);line-height:var(--lh-panel);color:var(--light-c)}
.is-style-form-card>.wp-block-group__inner-container>:is(h2,h3)+p{margin-top:0}
.is-style-form-card>.wp-block-group__inner-container>p:not([class*="is-style-"]){max-width:none;color:var(--light-c-dim);font-size:var(--t-small)}
.is-style-form-card>.wp-block-group__inner-container>.fluentform{margin-top:var(--s-5)}
.is-style-form-card>.wp-block-group__inner-container>.fluentform+*,.is-style-form-card>.wp-block-group__inner-container>.is-style-fine{margin-top:var(--s-3)}
.site-main .is-style-fine{font-size:var(--t-caption);color:var(--c-mute)}

/* two phone numbers side by side (core/group "Two phone numbers") */
.wp-block-group.is-style-phones{margin-top:var(--space-element)}
.is-style-phones>.wp-block-group__inner-container{display:grid;grid-template-columns:repeat(2,minmax(0,max-content));gap:var(--s-3) var(--s-6)}
.is-style-phones>.wp-block-group__inner-container>*{margin:0}

/* Fluent Forms */
.is-style-form-card .fluentform{font-family:var(--font-body);font-size:var(--t-body);color:var(--light-c)}
.is-style-form-card .fluentform .ff-el-group{margin-bottom:var(--s-4)}
.is-style-form-card .fluentform .ff-el-input--label{display:flex;margin:0 0 var(--s-1);padding:0}
.is-style-form-card .fluentform .ff-el-input--label label{margin:0;font-size:var(--t-small);font-weight:600;line-height:1.6;color:var(--light-c)}
.is-style-form-card .fluentform .ff-el-input--label.ff-el-is-required.asterisk-right label::after{content:none}   /* optional fields say "(optional)" instead */
.is-style-form-card .fluentform .ff-el-group:has(.ff-el-form-check)>.ff-el-input--label{margin-bottom:var(--s-3)}
.is-style-form-card .fluentform .ff-el-group:has(.ff-el-form-check)>.ff-el-input--label label{font-size:var(--t-body)}
.is-style-form-card .fluentform .ff-el-form-control{width:100%;min-height:var(--btn-h-lg);padding:0 var(--s-4);border:1.5px solid var(--light-field-line);border-radius:var(--r);background:#FFFFFF;color:var(--light-c);font:inherit;font-size:1rem;line-height:1.4;box-shadow:none;transition:border-color var(--dur-fast) var(--ease-out)}
.is-style-form-card .fluentform textarea.ff-el-form-control{min-height:6rem;padding-block:var(--s-3);resize:vertical}
.is-style-form-card .fluentform .ff-el-form-control:hover{border-color:var(--light-c)}
.is-style-form-card .fluentform .ff-el-form-control:focus{border-color:var(--light-c);outline:var(--focus-ring) solid var(--light-em);outline-offset:1px;box-shadow:none}
.is-style-form-card .fluentform .ff-el-help-message{margin-top:var(--s-1);font-size:var(--t-caption);font-style:normal;color:var(--light-c-mute)}
.is-style-form-card .fluentform .ff-el-is-error .ff-el-form-control{border-color:var(--light-em)}
.is-style-form-card .fluentform :is(.error,.text-danger){font-size:var(--t-small);font-weight:600;color:var(--light-em)}
.is-style-form-card .fluentform .ff-t-container{gap:var(--s-3)}
.is-style-form-card .fluentform .ff-t-cell{padding:0}
/* choices as tiles: three across, two when there are two */
.is-style-form-card .fluentform .ff-el-input--content:has(>.ff-el-form-check){display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s-2)}
.is-style-form-card .fluentform .ff-el-input--content:has(>.ff-el-form-check:nth-child(2):last-child){grid-template-columns:repeat(2,minmax(0,1fr))}
.is-style-form-card .fluentform .ff-el-form-check{position:relative;margin:0!important}
.is-style-form-card .fluentform .ff-el-form-check .ff-el-form-check-label{display:flex;flex-direction:column;margin:0;padding:0;cursor:pointer}   /* flex: the space between input and words makes no line */
.is-style-form-card .fluentform .ff-el-form-check-label .ff-el-form-check-input{position:absolute;top:0;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}
.is-style-form-card .fluentform .ff-el-form-check-label>span{display:flex;align-items:center;justify-content:center;min-height:var(--btn-h-md);padding:var(--s-2) var(--s-3);border:1.5px solid var(--light-field-line);border-radius:var(--r);background:var(--light-raised);font-size:var(--t-small);font-weight:600;line-height:1.2;text-align:center;color:var(--light-c);transition:background-color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}
.is-style-form-card .fluentform .ff-el-form-check-input:hover+span{border-color:var(--light-c)}
.is-style-form-card .fluentform .ff-el-form-check-input:checked+span{background:var(--light-c);border-color:var(--light-c);color:var(--light-raised)}
.is-style-form-card .fluentform .ff-el-form-check-input:focus-visible+span{outline:var(--focus-ring) solid var(--light-em);outline-offset:2px}
/* the button: padding, not margin, so the field's 16px below doesn't swallow these 8 */
.is-style-form-card .fluentform .ff-el-group.ff_submit_btn_wrapper{margin:0;padding-top:var(--s-2)}
.is-style-form-card .fluentform .ff-btn-submit{display:inline-flex;align-items:center;justify-content:center;width:100%;min-height:var(--btn-h-lg);padding:0 var(--btn-pad-x);border:2px solid transparent;border-radius:var(--r);background:var(--accent)!important;color:var(--on-accent)!important;font-family:var(--font-display);font-weight:700;font-size:1.0625rem;line-height:1;letter-spacing:var(--ls-btn);text-transform:uppercase;box-shadow:none;cursor:pointer;transition:background-color var(--dur-fast) var(--ease-out)}
.is-style-form-card .fluentform .ff-btn-submit:hover{background:var(--accent-dark)!important;opacity:1}
.is-style-form-card .ff-message-success{margin-top:var(--s-4);padding:var(--s-4);border:0;border-radius:var(--r);background:var(--light-bg);color:var(--light-c);font-weight:600;box-shadow:none}

@media (max-width:768px){.is-style-phones>.wp-block-group__inner-container{grid-template-columns:1fr 1fr}}
@media (max-width:560px){
  .is-style-phones>.wp-block-group__inner-container{grid-template-columns:minmax(0,1fr);gap:var(--s-4)}
  .is-style-form-card .fluentform .ff-t-container{flex-direction:column;gap:0}
}


/* ==== 52-page-header.css ==== */
/* Inner-page headers: Group "Page header with photo" (text left, framed photo right, never the
   home hero again) and "Page header, text only", plus the breadcrumbs inc/breadcrumbs.php adds
   above their heading. From Eastern Christmas Lights (4 Oct 2026). On the page's ground. */

.site-main>.wp-block-group.alignfull:is(.is-style-page-header,.is-style-page-head){padding-block:var(--space-section-sm) var(--space-block);border-bottom:1px solid var(--hair)}
.is-style-page-header>.wp-block-group__inner-container>.wp-block-columns{grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:var(--space-block) clamp(2rem,5vw,4.5rem);align-items:center!important}
:is(.is-style-page-header,.is-style-page-head) h1+.is-style-lead{margin-top:var(--s-4);max-width:36rem}
.is-style-page-head h1,.is-style-page-head h1+.is-style-lead{max-width:44rem}   /* the heading keeps to the text column, so it breaks into balanced lines */
.is-style-page-header .wp-block-buttons{margin-top:var(--space-element)}
.is-style-page-header .wp-block-image{position:relative;aspect-ratio:4/3;margin:0;border-radius:var(--r-lg);overflow:hidden;border:1px solid var(--line);background:var(--raised)}
.is-style-page-header .wp-block-image img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:0}

/* breadcrumbs: Home / this page */
.gs-crumbs ol{display:flex;flex-wrap:wrap;gap:var(--s-2);margin:0 0 var(--s-4);padding:0;list-style:none;font-size:var(--t-small);color:var(--c-mute)}
.gs-crumbs li+li::before{content:"/";margin-right:var(--s-2)}
.gs-crumbs a{display:inline-flex;align-items:center;min-height:var(--btn-h-md);color:var(--c-dim);text-decoration:underline;text-underline-offset:.2em}
.gs-crumbs a:hover{color:var(--c)}
.gs-crumbs li[aria-current]{display:inline-flex;align-items:center;min-height:var(--btn-h-md)}
.site-main .gs-crumbs+h1{margin-top:0}

@media (max-width:900px){
  .is-style-page-header>.wp-block-group__inner-container>.wp-block-columns{grid-template-columns:minmax(0,1fr)}
  .is-style-page-header .wp-block-image{aspect-ratio:16/10}
  .site-main>.wp-block-group.alignfull.is-style-page-header{padding-bottom:calc(var(--space-block) + 1.5rem)}   /* stacked, the photo ends the header: more room under it */
}
/* never two photos back to back on phones: after the page header's photo, a split shows its
   text first (custom-design 04-layout §3c) */
@media (max-width:1024px){.is-style-page-header+.arenex-split .arenex-split__figure{order:2}}


/* ==== 55-photo-band.css ==== */
/* Cover "Photo band": the photo is a band across the top, and the text (with, say, a form card
   in a second column) overlaps its foot. The photo stays the Cover's own background, so the
   client swaps it and sets its focal point in the editor. Eastern Christmas Lights' home hero
   and closing band are this, plus a lights effect (theirs, not the starter's).

   An absolutely placed grid item needs both lines: with grid-row:1 alone the other edge is the
   container's own and the photo fills the whole Cover (gotchas.md). Set --band-h and
   --band-overlap per site. */

.wp-block-cover.is-style-photo-band{--band-h:clamp(20rem,46vw,40rem);--band-overlap:clamp(6rem,11vw,10rem);
  --bg:var(--dark-bg);--c:var(--dark-c);--c-dim:var(--dark-c-dim);--c-mute:var(--dark-c-mute);--line:var(--dark-line);--hair:var(--dark-hair);--raised:var(--dark-raised);--em:var(--dark-em);
  display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:var(--band-h) auto;align-items:start;justify-content:stretch;min-height:0;margin:0;padding:0 0 var(--space-section);overflow:hidden;background:var(--bg);color:var(--c)}
.is-style-photo-band>.wp-block-cover__image-background{position:absolute;grid-row:1/2;grid-column:1/2;inset:0;width:100%;height:100%;object-fit:cover}
.is-style-photo-band>.wp-block-cover__background{display:none}
.is-style-photo-band::after{content:"";position:absolute;grid-row:1/2;grid-column:1/2;inset:0;z-index:1;pointer-events:none;background:linear-gradient(0deg,var(--bg) 4%,rgb(0 0 0 / .45) 32%,rgb(0 0 0 / 0) 60%),linear-gradient(180deg,var(--bg) 0%,rgb(0 0 0 / 0) 16%)}
.is-style-photo-band>.wp-block-cover__inner-container{grid-row:2;grid-column:1;position:relative;z-index:var(--z-raised)}
.is-style-photo-band>.wp-block-cover__inner-container>.wp-block-columns{margin-top:calc(-1 * var(--band-overlap))}
.site-main .is-style-photo-band .wp-block-columns:has(>.wp-block-column>.is-style-form-card){grid-template-columns:minmax(0,6fr) minmax(0,5fr);gap:var(--space-block) clamp(2rem,5vw,5rem)}

@media (max-width:1024px){
  .site-main .is-style-photo-band .wp-block-columns:has(>.wp-block-column>.is-style-form-card){grid-template-columns:minmax(0,1fr)}
}


/* ==== 60-woo.css ==== */
/* WooCommerce's own pages (Cart, Checkout, My Account) and its notices, in the GSI look.
   Those pages are WooCommerce's blocks inside the parent's page template (.fpd-pagehero, then
   .container--content); everything here is scoped to them or to WooCommerce's own classes. */

/* ---- the page: GSI's compact page header and the full container (the parent's is the reading
   column, which put the order summary under the items instead of beside them) ---- */
:is(.woocommerce-cart,.woocommerce-checkout,.woocommerce-account) .fpd-pagehero{padding-block:var(--s-7) var(--s-6);border-bottom:1px solid var(--ink-3);background:var(--ink)}
:is(.woocommerce-cart,.woocommerce-checkout,.woocommerce-account) .fpd-pagehero__inner{width:min(100% - 2*var(--gutter),var(--container));max-width:none;margin-inline:auto;padding:0}
:is(.woocommerce-cart,.woocommerce-checkout,.woocommerce-account) .fpd-pagehero__title{margin:0;font-family:var(--font-display);font-weight:800;font-size:var(--t-display);line-height:.9;letter-spacing:-.02em;color:var(--fg)}
:is(.woocommerce-cart,.woocommerce-checkout,.woocommerce-account) .container--content{width:min(100% - 2*var(--gutter),var(--container));max-width:none;margin-inline:auto;padding-block:var(--space-section-sm) var(--space-section);padding-inline:0}
:is(.woocommerce-cart,.woocommerce-checkout,.woocommerce-account) .entry__content{max-width:none}
:is(.woocommerce-cart,.woocommerce-checkout) .wp-block-woocommerce-cart,:is(.woocommerce-cart,.woocommerce-checkout) .wp-block-woocommerce-checkout{max-width:none;margin:0;color:var(--fg);font-family:var(--font-body)}

/* ---- words and links on the dark ground ---- */
:is(.wc-block-cart,.wc-block-checkout,.wp-block-woocommerce-cart,.wp-block-woocommerce-checkout) :is(h1,h2,h3,.wc-block-components-title){font-family:var(--font-display);font-weight:800;letter-spacing:-.01em;color:var(--fg)}
:is(.wp-block-woocommerce-cart,.wp-block-woocommerce-checkout) a{color:var(--fg)}
:is(.wp-block-woocommerce-cart,.wp-block-woocommerce-checkout) a:hover{color:var(--accent-hi)}

/* ---- the cart's items ---- */
.wc-block-cart-items{border-collapse:collapse}
.wc-block-cart-items th,.wc-block-cart-items__header{font-family:var(--font-body);font-size:var(--t-label);font-weight:600;letter-spacing:var(--ls-label);text-transform:uppercase;color:var(--fg-mute)}
.wc-block-cart-items td,.wc-block-cart-items th{border-color:var(--ink-3)!important}
.wc-block-cart-items .wc-block-cart-items__row{border-bottom:1px solid var(--ink-3)}
.wc-block-cart-item__image img{border-radius:var(--r-md);background:var(--ink-2);box-shadow:var(--ring)}
.wc-block-cart .wc-block-components-product-name{font-family:var(--font-display);font-weight:800;font-size:var(--t-card)!important;line-height:1.05;text-decoration:none;color:var(--fg)}
.wc-block-cart .wc-block-cart-item__prices .wc-block-components-product-price,.wc-block-cart-item__total .wc-block-components-product-price__value{font-family:var(--font-display);font-weight:800;font-size:var(--t-card);color:var(--accent-hi)}
.wc-block-cart .wc-block-cart-item__prices .wc-block-components-product-price{font-size:var(--t-body);color:var(--fg-dim);font-family:var(--font-body);font-weight:500}
.wc-block-components-product-metadata,.wc-block-components-product-details{font-size:var(--t-small);color:var(--fg-mute)}
.wc-block-components-product-details__name{font-weight:600;color:var(--fg-dim)}
/* quantity: the prototype's chips */
.wc-block-components-quantity-selector{border:0!important;border-radius:var(--r-pill)!important;box-shadow:var(--ring-strong);background:transparent!important;overflow:hidden}
.wc-block-components-quantity-selector::after{display:none!important}
.wc-block-components-quantity-selector input.wc-block-components-quantity-selector__input{background:transparent!important;color:var(--fg)!important;font-weight:600;border:0!important;box-shadow:none!important}
.wc-block-components-quantity-selector .wc-block-components-quantity-selector__button{color:var(--fg-dim)!important;background:transparent!important;opacity:1}
.wc-block-components-quantity-selector .wc-block-components-quantity-selector__button:hover{color:var(--fg)!important;background:rgb(var(--fg-rgb)/.06)!important}
.wc-block-cart-item__remove-link{color:var(--fg-mute)!important}
.wc-block-cart-item__remove-link:hover{color:var(--accent-hi)!important}

/* ---- the summary: a raised card beside the items ---- */
.wc-block-components-sidebar-layout:is(.is-large,.is-medium)>.wc-block-components-sidebar{width:calc(35% - var(--s-6));margin-inline-start:var(--s-6)} /* the gap comes out of the summary's own 35%, so the row still fits */
.wc-block-cart .wc-block-components-sidebar,.wc-block-checkout .wc-block-components-sidebar{padding:var(--s-5)!important;border-radius:var(--r-lg);background:var(--ink-2);box-shadow:var(--ring)}
.wc-block-cart__totals-title{font-family:var(--font-body)!important;font-size:var(--t-label)!important;font-weight:600!important;letter-spacing:var(--ls-label)!important;text-transform:uppercase!important;color:var(--fg-mute)!important;text-align:start!important}
.wc-block-components-totals-wrapper{border-color:var(--ink-3)!important}
.wc-block-components-totals-item__label{color:var(--fg-dim)}
.wc-block-components-totals-footer-item .wc-block-components-totals-item__label{font-family:var(--font-display);font-weight:800;font-size:var(--t-card);color:var(--fg)}
.wc-block-components-totals-footer-item .wc-block-components-totals-item__value{font-family:var(--font-display);font-weight:800;font-size:var(--t-stat);color:var(--accent-hi)}
.wc-block-components-totals-item__description{color:var(--fg-mute);font-size:var(--t-small)}
.wc-block-components-panel__button{color:var(--fg)!important;font-weight:600}
.wc-block-components-panel__button-icon{fill:currentColor}

/* ---- buttons: the prototype's island button (Proceed to checkout, Place order, Apply, Add to cart) ---- */
:is(.wp-block-woocommerce-cart,.wp-block-woocommerce-checkout) .wc-block-components-button:not(.is-link),
.wc-block-components-product-button__button,
:is(.wp-block-woocommerce-cart,.wp-block-woocommerce-checkout) .wp-element-button{display:inline-flex;align-items:center;justify-content:center;gap:.6rem;min-height:var(--btn-h-lg);padding:0 var(--btn-pad-x);border:0!important;border-radius:var(--r-pill)!important;background:var(--accent)!important;color:var(--on-accent)!important;font-family:var(--font-body)!important;font-weight:600!important;font-size:var(--t-body)!important;letter-spacing:normal!important;text-transform:none!important;text-decoration:none!important;box-shadow:none!important;transition:background-color var(--dur-fast) var(--ease-out-expo),transform var(--dur-fast) var(--ease-spring)}
:is(.wp-block-woocommerce-cart,.wp-block-woocommerce-checkout) .wc-block-components-button:not(.is-link):hover,
.wc-block-components-product-button__button:hover{background:#C9101A!important}
:is(.wp-block-woocommerce-cart,.wp-block-woocommerce-checkout) .wc-block-components-button:not(.is-link):active{transform:scale(.98)}
.wc-block-cart__submit-button,.wc-block-components-checkout-place-order-button{width:100%}
.wc-block-components-product-button__button{min-height:2.75rem!important;padding-inline:1.1rem!important;font-size:var(--t-small)!important;white-space:nowrap}

/* ---- "You may be interested in…": the shop's card look ---- */
.wp-block-woocommerce-cart .wc-block-product{padding:var(--s-3);border-radius:var(--r-lg);background:var(--ink-2);box-shadow:var(--ring)}
.wp-block-woocommerce-cart .wc-block-product img{border-radius:var(--r-md)}
.wp-block-woocommerce-cart .wc-block-product :is(h2,h3,.wp-block-post-title){font-family:var(--font-display);font-weight:800;font-size:var(--t-card);line-height:1.05}
.wp-block-woocommerce-cart .wc-block-product .wp-block-post-title a{text-decoration:none}
.wp-block-woocommerce-cart .wc-block-product .wc-block-components-product-price{font-family:var(--font-display);font-weight:800;font-size:var(--t-card);color:var(--accent-hi)}

/* ---- checkout: fields on the dark ground, labels you can read ---- */
.wc-block-checkout .wc-block-components-checkout-step__title,.wc-block-checkout .wc-block-components-title{font-size:var(--t-sub)!important;line-height:1.05}
.wc-block-components-checkout-step__description,.wc-block-checkout .wc-block-components-checkout-step__container p{color:var(--fg-dim)}
:is(.wc-block-components-text-input,.wc-blocks-components-select,.wc-block-components-combobox,.wc-block-components-textarea) :is(input,select,textarea){background:var(--ink-2)!important;color:var(--fg)!important;border:1px solid var(--border-ui)!important;border-radius:var(--r-md)!important;box-shadow:none!important;font-family:var(--font-body)!important}
:is(.wc-block-components-text-input,.wc-blocks-components-select,.wc-block-components-combobox) :is(input,select):focus{border-color:var(--accent-hi)!important;box-shadow:0 0 0 1px var(--accent-hi)!important;outline:0}
:is(.wc-block-components-text-input,.wc-blocks-components-select,.wc-block-components-combobox,.wc-block-components-textarea) label,.wc-blocks-components-select__label{color:var(--fg-mute)!important}
.wc-blocks-components-select__container{background:var(--ink-2)!important;border-radius:var(--r-md)}
.wc-blocks-components-select__expand{fill:var(--fg-dim)}
.wc-block-components-address-form__address_2-toggle,.wc-block-components-checkout-step a{color:var(--fg-dim)!important}
.wc-block-components-checkbox__input[type="checkbox"],.wc-block-components-radio-control__input{accent-color:var(--accent);background:var(--ink-2)!important;border-color:var(--border-ui)!important}
.wc-block-components-checkbox__input[type="checkbox"]:checked{background:var(--accent)!important;border-color:var(--accent)!important}
.wc-block-components-checkbox__mark{fill:var(--on-accent)}
.wc-block-components-radio-control__input:checked::before{background:var(--accent)!important}
.wc-block-components-radio-control-accordion-option{border-radius:var(--r-md)!important;box-shadow:inset 0 0 0 1px var(--ink-4)!important;background:var(--ink-2)}
.wc-block-components-radio-control--highlight-checked .wc-block-components-radio-control-accordion-option--checked-option-highlighted{box-shadow:inset 0 0 0 2px var(--accent)!important}
.wc-block-components-radio-control__label,.wc-block-components-radio-control__option{color:var(--fg)}
.wc-block-components-radio-control-accordion-content,.wc-block-components-radio-control__description{color:var(--fg-dim)}
.wc-block-checkout__terms,.wc-block-checkout__terms a{color:var(--fg-dim)}
.wc-block-components-order-summary-item__image img{border-radius:var(--r-sm)}
.wc-block-components-order-summary-item__quantity{background:var(--accent)!important;color:var(--on-accent)!important;border-color:var(--ink-2)!important;box-shadow:none!important}
.wc-block-components-order-summary-item__total-price,.wc-block-components-order-summary-item__individual-price{color:var(--fg-dim)}
.wc-block-components-checkout-return-to-cart-button{color:var(--fg-dim)!important}
.wc-block-components-checkout-order-summary__title-text,.wc-block-components-checkout-order-summary__title-price{color:var(--fg)}

/* ---- notices: "added to your cart", errors, info ---- */
:is(.woocommerce-message,.woocommerce-info,.woocommerce-error){display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-3) var(--s-5);margin:0 0 var(--s-5);padding:var(--s-4) var(--s-5);list-style:none;border:0;border-radius:var(--r-lg);background:var(--ink-2);box-shadow:var(--ring-strong),inset 4px 0 0 var(--ok);color:var(--fg);font-size:var(--t-body);font-weight:500;line-height:1.4}
.woocommerce-message::before{content:"";flex:none;inline-size:1.6rem;block-size:1.6rem;border-radius:50%;background:var(--ok) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5' fill='none' stroke='%23120F0E' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/1rem no-repeat}
.woocommerce-info{box-shadow:var(--ring-strong),inset 4px 0 0 var(--silver-dim)}
.woocommerce-error{box-shadow:var(--ring-strong),inset 4px 0 0 var(--accent-hi)}
.woocommerce-error li{margin:0}
:is(.woocommerce-message,.woocommerce-info,.woocommerce-error) a.button,:is(.woocommerce-message,.woocommerce-info) .wc-forward{order:2;margin-inline-start:auto;display:inline-flex;align-items:center;gap:.6rem;min-height:2.75rem;padding:0 var(--btn-pad-x);border-radius:var(--r-pill);background:var(--accent);color:var(--on-accent);font-weight:600;font-size:var(--t-small);text-decoration:none;white-space:nowrap;transition:background-color var(--dur-fast) var(--ease-out-expo)}
:is(.woocommerce-message,.woocommerce-info,.woocommerce-error) a.button::after{content:"→"}
:is(.woocommerce-message,.woocommerce-info,.woocommerce-error) a.button:hover{background:#C9101A}
.woocommerce-notices-wrapper:empty{display:none}
.gsi-product .woocommerce-notices-wrapper{margin-block-end:var(--s-5)}
/* the blocks' own banners (cart and checkout) */
.wc-block-components-notice-banner{border-radius:var(--r-lg)!important;background:var(--ink-2)!important;color:var(--fg)!important;border:0!important;box-shadow:var(--ring-strong),inset 4px 0 0 var(--ok)!important}
.wc-block-components-notice-banner.is-error{box-shadow:var(--ring-strong),inset 4px 0 0 var(--accent-hi)!important}
.wc-block-components-notice-banner.is-info{box-shadow:var(--ring-strong),inset 4px 0 0 var(--silver-dim)!important}
.wc-block-components-notice-banner>svg{fill:var(--ok)}
.wc-block-components-notice-banner .wc-forward{color:var(--fg)!important;font-weight:600}

@media (max-width:767px){
  :is(.woocommerce-cart,.woocommerce-checkout,.woocommerce-account) .fpd-pagehero{padding-block:var(--s-6) var(--s-5)}
  .wc-block-cart .wc-block-components-sidebar,.wc-block-checkout .wc-block-components-sidebar{padding:var(--s-4)!important}
  :is(.woocommerce-message,.woocommerce-info,.woocommerce-error) a.button{margin-inline-start:0;width:100%;justify-content:center}
}

/* ---- My Account, logged out: log in | create an account (woocommerce/myaccount/form-login.php) ---- */
.gsi-account{display:grid;gap:var(--s-5);max-width:30rem}
.gsi-account--two{grid-template-columns:repeat(2,minmax(0,1fr));max-width:none;align-items:start}
.gsi-account__card{display:grid;gap:var(--s-4);padding:clamp(1.5rem,3vw,2.5rem);border-radius:var(--r-lg);background:var(--ink-2);box-shadow:var(--ring)}
.gsi-account__card--new{background:var(--ink);box-shadow:var(--ring-strong)}
.gsi-account__card .gsi-eyebrow{margin:0}
.gsi-account__card h2{margin:0 0 var(--s-2);font-family:var(--font-display);font-weight:800;color:var(--fg)}
.gsi-account__card form{display:grid;gap:var(--s-4);margin:0}
.gsi-field{display:grid;gap:.4rem;margin:0}
.gsi-field label{font-size:var(--t-small);font-weight:600;color:var(--fg-dim)}
.gsi-account__row{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:var(--s-3);font-size:var(--t-small)}
.gsi-account__remember{display:inline-flex;align-items:center;gap:.5rem;color:var(--fg-dim);cursor:pointer}
.gsi-account__remember input{inline-size:1.1rem;block-size:1.1rem;accent-color:var(--accent)}
.gsi-account__lost{color:var(--fg);font-weight:600;text-decoration:underline;text-underline-offset:.2em;text-decoration-color:rgb(var(--fg-rgb)/.35)}
.gsi-account__lost:hover{color:var(--accent-hi)}
.gsi-account__perks{grid-template-columns:1fr;margin:0}
.gsi-account__note{margin:0;font-size:var(--t-small);color:var(--fg-mute)}
.gsi-account .gsi-btn{justify-content:center;padding-inline:var(--btn-pad-x)}

/* every WooCommerce form field on these pages (log in, addresses, account details, lost password) */
.woocommerce-account :is(input.input-text,input[type="text"],input[type="email"],input[type="password"],input[type="tel"],select,textarea),.gsi-account input:is([type="text"],[type="email"],[type="password"]){width:100%;min-height:var(--btn-h);padding:.6rem 1rem;border:1px solid var(--border-ui);border-radius:var(--r-md);background:var(--ink-2);color:var(--fg);font:inherit;font-size:var(--t-body);box-shadow:none}
.gsi-account__card--new input:is([type="text"],[type="email"],[type="password"]){background:var(--ink-2)}
.woocommerce-account :is(input.input-text,input[type="text"],input[type="email"],input[type="password"],input[type="tel"],select,textarea):focus{outline:0;border-color:var(--accent-hi);box-shadow:0 0 0 1px var(--accent-hi)}
.woocommerce-account .woocommerce form .form-row label,.woocommerce-account .woocommerce-form-row label{font-size:var(--t-small);font-weight:600;color:var(--fg-dim)}
.woocommerce-account .required{color:var(--accent-hi);text-decoration:none}

/* ---- My Account, logged in: the menu on the left, the content in a card ---- */
.woocommerce-account .woocommerce:has(.woocommerce-MyAccount-navigation){display:grid;grid-template-columns:16rem minmax(0,1fr);gap:var(--s-6);align-items:start}
.woocommerce-MyAccount-navigation ul{display:grid;gap:.25rem;margin:0;padding:var(--s-3);list-style:none;border-radius:var(--r-lg);background:var(--ink-2);box-shadow:var(--ring)}
.woocommerce-MyAccount-navigation a{display:flex;align-items:center;min-height:2.75rem;padding:0 var(--s-4);border-radius:var(--r-md);color:var(--fg-dim);font-weight:500;text-decoration:none}
.woocommerce-MyAccount-navigation a:hover{background:rgb(var(--fg-rgb)/.06);color:var(--fg)}
.woocommerce-MyAccount-navigation .is-active a{background:var(--fg);color:var(--ink);font-weight:600}
.woocommerce-MyAccount-navigation-link--customer-logout a{color:var(--fg-mute)}
.woocommerce-MyAccount-content{padding:clamp(1.25rem,3vw,2rem);border-radius:var(--r-lg);background:var(--ink-2);box-shadow:var(--ring);color:var(--fg-dim)}
.woocommerce-MyAccount-content>p:first-child{color:var(--fg)}
.woocommerce-MyAccount-content :is(h2,h3,legend){font-family:var(--font-display);font-weight:800;color:var(--fg)}
.woocommerce-MyAccount-content a:not(.button){color:var(--fg);text-decoration:underline;text-underline-offset:.2em;text-decoration-color:rgb(var(--fg-rgb)/.35)}
.woocommerce-MyAccount-content a:not(.button):hover{color:var(--accent-hi)}
.woocommerce-account table.shop_table{width:100%;border-collapse:collapse;border:0}
.woocommerce-account table.shop_table :is(th,td){padding:.8rem .6rem;border:0;border-bottom:1px solid var(--ink-3);text-align:start;color:var(--fg-dim);background:none}
.woocommerce-account table.shop_table thead th{font-size:var(--t-label);letter-spacing:var(--ls-label);text-transform:uppercase;color:var(--fg-mute)}
.woocommerce-account .woocommerce-Addresses{display:grid;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:var(--s-5)}
.woocommerce-account .woocommerce-Address{padding:var(--s-5);border-radius:var(--r-md);background:var(--ink);box-shadow:var(--ring)}
.woocommerce-account address{font-style:normal;color:var(--fg-dim)}
.woocommerce-account fieldset{margin:var(--s-5) 0 0;padding:0;border:0}
/* buttons on these pages: the island button */
.woocommerce-account :is(.button,.woocommerce-Button,button[type="submit"]):not(.gsi-btn){display:inline-flex;align-items:center;justify-content:center;min-height:var(--btn-h);padding:0 var(--btn-pad-x);border:0;border-radius:var(--r-pill);background:var(--accent);color:var(--on-accent);font:inherit;font-weight:600;font-size:var(--t-small);text-decoration:none;cursor:pointer;transition:background-color var(--dur-fast) var(--ease-out-expo)}
.woocommerce-account :is(.button,.woocommerce-Button,button[type="submit"]):not(.gsi-btn):hover{background:#C9101A}
.woocommerce-account .woocommerce-ResetPassword,.woocommerce-account .woocommerce-ResetPassword p{max-width:30rem}
.woocommerce-account .woocommerce-ResetPassword{display:grid;gap:var(--s-4);padding:clamp(1.5rem,3vw,2.5rem);border-radius:var(--r-lg);background:var(--ink-2);box-shadow:var(--ring)}

@media (max-width:900px){
  .gsi-account--two{grid-template-columns:1fr}
  .woocommerce-account .woocommerce:has(.woocommerce-MyAccount-navigation){grid-template-columns:1fr}
  .woocommerce-MyAccount-navigation ul{display:flex;overflow-x:auto;scrollbar-width:none}
  .woocommerce-MyAccount-navigation a{white-space:nowrap}
}

/* WooCommerce's own frame round its log-in and register forms: the card is the frame here */
.woocommerce .gsi-account form.woocommerce-form{margin:0;padding:0;border:0;border-radius:0}
.gsi-account .woocommerce-privacy-policy-text,.gsi-account .woocommerce-privacy-policy-text p{margin:0;font-size:var(--t-small);line-height:1.5;color:var(--fg-mute)}
.gsi-account .woocommerce-privacy-policy-text a{color:var(--fg-dim)}

/* The empty cart (inc/store.php): a short head with the Shop bats button, then four bats */
.gsi-emptycart{display:grid;gap:var(--s-7);padding-block:var(--s-5) var(--s-4)}
.gsi-emptycart__head{display:grid;justify-items:center;gap:var(--s-4);text-align:center}
.gsi-emptycart__title{margin:0;font-family:var(--font-display);font-weight:800;font-size:var(--t-section);line-height:1;color:var(--fg)}
.gsi-emptycart__text{margin:0;max-width:40ch;color:var(--fg-dim)}
.gsi-emptycart__head .gsi-btn{margin-block-start:var(--s-2)}
@media (max-width:1180px){.gsi-emptycart__grid{grid-template-columns:repeat(2,1fr)}}

/* The show-password eye: WooCommerce draws it in black, invisible on the dark fields */
.show-password-input::before,.show-password-input.display-password::before{filter:invert(1);opacity:.75}
.show-password-input:hover::before{opacity:1}


/* ==== 63-blog.css ==== */
/* Blog — the post cards (Blog page and "More articles" under a post), their page
   numbers, and the single post (inc/blog.php, inc/content/parts/blog-posts.php).

   The four values below are the only ones a new site normally changes. */

:root {
	--blog-link:  var(--color-primary, #082246);   /* titles, links, current page */
	--blog-line:  var(--gold-muted, #B09850);      /* link underlines, list markers, dots */
	--blog-text:  var(--ink-2, #3C4852);           /* body copy and excerpts */
	--blog-muted: var(--ink-3, #5B6875);           /* dates, reading time */
}

/* ---- Post cards ------------------------------------------------------------ */

.gs-post-grid .wp-block-post {
	display: flex;
	flex-direction: column;
}
.gs-post-grid .wp-block-post-featured-image {
	margin: 0;
	overflow: hidden;
	border-radius: var(--radius-sm, 14px);
}
.gs-post-grid .wp-block-post-featured-image img {
	transition: transform .9s var(--ease, ease);
}
.gs-post-grid .wp-block-post:hover .wp-block-post-featured-image img { transform: scale(1.03); }

.gs-post-grid .wp-block-post-date {
	margin-top: 1.15rem;
	font-size: .85rem;
	color: var(--blog-muted);
}
.gs-post-grid .wp-block-post-title {
	margin: .45rem 0 0;
	font-size: clamp(1.2rem, 1.6vw, 1.35rem);
	line-height: 1.25;
	text-wrap: balance;
}
.gs-post-grid .wp-block-post-title a {
	color: var(--blog-link);
	text-decoration: none;
	transition: color .3s var(--ease, ease);
}
.gs-post-grid .wp-block-post-title a:hover { color: var(--blog-line); }

/* Title to excerpt: a clear step, smaller than the gap between cards. */
.gs-post-grid .wp-block-post-excerpt { margin-top: .85rem; }
.gs-post-grid .wp-block-post-excerpt__excerpt {
	margin: 0;
	color: var(--blog-text);
	line-height: 1.6;
}
.gs-post-grid .wp-block-post-excerpt__more-text { margin: 1rem 0 0; }
.gs-post-grid .wp-block-post-excerpt__more-link {
	font-weight: 500;
	color: var(--blog-link);
	text-decoration: none;
	border-bottom: 1.5px solid var(--blog-line);
	padding-bottom: 2px;
	transition: color .3s var(--ease, ease);
}
.gs-post-grid .wp-block-post-excerpt__more-link:hover { color: var(--blog-line); }

/* Three across on desktop, two on tablets, one on phones (core stacks below 600). */
@media (min-width: 601px) and (max-width: 960px) {
	.gs-post-grid .wp-block-post-template.is-layout-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
}

/* ---- Page numbers ----------------------------------------------------------- */

.gs-post-grid .wp-block-query-pagination {
	margin-top: clamp(2.75rem, 5vw, 4rem);
	gap: .6rem;
	align-items: center;
	justify-content: center;
}
.gs-post-grid .wp-block-query-pagination-numbers {
	display: flex;
	gap: .6rem;
	margin: 0;
}
.gs-post-grid .wp-block-query-pagination .page-numbers,
.gs-post-grid .wp-block-query-pagination-previous,
.gs-post-grid .wp-block-query-pagination-next {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: .5rem;
	min-width: 2.9rem;
	height: 2.9rem;
	margin: 0;
	padding: 0 1.15rem;
	border: 1px solid rgb(8 34 70 / .18);
	border-radius: 999px;
	font-size: 1rem;
	font-weight: 500;
	line-height: 1;
	color: var(--blog-link);
	text-decoration: none;
	transition: background-color .3s var(--ease, ease), border-color .3s var(--ease, ease), color .3s var(--ease, ease);
}
.gs-post-grid .wp-block-query-pagination .page-numbers { padding: 0; }
.gs-post-grid .wp-block-query-pagination a:hover { border-color: var(--blog-link); }
.gs-post-grid .wp-block-query-pagination .page-numbers.current {
	background: var(--blog-link);
	border-color: var(--blog-link);
	color: #fff;
}
.gs-post-grid .wp-block-query-pagination .page-numbers.dots { border-color: transparent; min-width: 1.5rem; }

/* ---- Single post ------------------------------------------------------------ */

.single-post .site-main > .container--content.section {
	max-width: calc(780px + 2 * var(--gut, 2rem));
	padding: clamp(3.5rem, 7vw, 6rem) var(--gut, 2rem) clamp(3.5rem, 6vw, 5.5rem);
}

.single-post .entry { margin-bottom: 0; }
.single-post .entry__title {
	margin-bottom: 1.35rem;
	font-size: clamp(2.2rem, 4.4vw, 3.4rem);
	line-height: 1.08;
	letter-spacing: -.025em;
	text-wrap: balance;
}

/* The line under the title: back to the blog, the date, the reading time. */
.gs-entry-meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: .35rem 1rem;
	margin: 0 0 clamp(1.8rem, 3.5vw, 2.6rem);
	font-size: .95rem;
	color: var(--blog-muted);
}
.gs-entry-meta > :not(:first-child)::before {
	content: "";
	display: inline-block;
	width: 4px;
	height: 4px;
	margin-right: 1rem;
	border-radius: 50%;
	background: var(--blog-line);
	vertical-align: middle;
}
.gs-entry-meta a {
	font-weight: 500;
	color: var(--blog-link);
	text-decoration: none;
	transition: color .3s var(--ease, ease);
}
.gs-entry-meta a::before { content: "\2190\00a0"; }
.gs-entry-meta a:hover { color: var(--blog-line); }
@media (max-width: 600px) {
	.gs-entry-meta { gap: .35rem .65rem; font-size: .86rem; }
	.gs-entry-meta > :not(:first-child)::before { margin-right: .65rem; }
}

/* The date line sits inside the thumbnail wrapper, so the rounding moves to the image. */
.single-post .entry__thumb {
	overflow: visible;
	border-radius: 0;
	margin-bottom: clamp(2.4rem, 4.5vw, 3.4rem);
}
.single-post .entry__thumb img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 16 / 9;
	object-fit: cover;
	border-radius: var(--radius, 24px);
}

/* Reading type: body size a step up, a 70ch column, clear heading steps. */
.single-post .entry__content {
	font-size: 1.1rem;
	line-height: 1.75;
	color: var(--blog-text);
}
.single-post .entry__content > * { margin-block: 0; }
.single-post .entry__content > * + * { margin-top: 1.25em; }
.single-post .entry__content > p:first-child {
	font-size: 1.22rem;
	line-height: 1.65;
	color: var(--ink, #101820);
}
.single-post .entry__content h2 {
	font-size: clamp(1.45rem, 2.4vw, 1.8rem);
	line-height: 1.25;
	letter-spacing: -.015em;
	color: var(--blog-link);
	text-wrap: balance;
}
.single-post .entry__content h3 {
	font-size: 1.2rem;
	line-height: 1.35;
	color: var(--blog-link);
}
.single-post .entry__content > h2 { margin-top: 1.9em; }
.single-post .entry__content > h3 { margin-top: 1.7em; }
.single-post .entry__content > :is(h2, h3) + * { margin-top: .6em; }
.single-post .entry__content :is(ul, ol) { padding-left: 1.3em; }
.single-post .entry__content li + li { margin-top: .5em; }
.single-post .entry__content li::marker { color: var(--blog-line); }
.single-post .entry__content a {
	color: var(--blog-link);
	text-decoration: underline;
	text-decoration-color: var(--blog-line);
	text-decoration-thickness: 1.5px;
	text-underline-offset: 3px;
}
.single-post .entry__content strong { font-weight: 600; color: var(--ink, #101820); }
.single-post .entry__content hr {
	border: 0;
	border-top: 1px solid rgb(8 34 70 / .12);
	margin-block: 2.5em;
}
.single-post .entry__content img { height: auto; border-radius: var(--radius-sm, 14px); }

/* ---- After the article ------------------------------------------------------ */

.gs-more-posts {
	background: #fff;
	padding: var(--sec, 90px) var(--gut, 2rem);
}
.gs-more-posts__inner {
	max-width: calc(var(--wrap, 1240px) - 2 * var(--gut, 2rem));
	margin-inline: auto;
}
.gs-more-posts__head {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	justify-content: space-between;
	gap: 1rem 2rem;
	margin-bottom: clamp(2rem, 4vw, 3rem);
}
.gs-more-posts__head h2 { margin: 0; }
.gs-more-posts__all {
	font-weight: 500;
	color: var(--blog-link);
	text-decoration: none;
	border-bottom: 1.5px solid var(--blog-line);
	padding-bottom: 2px;
	transition: color .3s var(--ease, ease);
}
.gs-more-posts__all:hover { color: var(--blog-line); }

/* The closing card, as on every page (45-cta.css scopes its band to block-built pages). */
.single-post .site-main > .wp-block-columns.is-style-cta {
	max-width: none;
	margin: 0;
	background: #fff;
	padding-inline: max(var(--gut, 2rem), calc((100% - var(--wrap, 1240px)) / 2 + var(--gut, 2rem)));
	padding-block: 0 var(--sec, 90px);
	gap: 0;
	border-radius: 0;
}
@media (max-width: 899px) {
	.single-post .site-main > .wp-block-columns.is-style-cta {
		flex-direction: column;
		flex-wrap: nowrap;
	}
}

/* The Blog page's band (inc/content/parts/blog-posts.php) follows the page header, so it
   takes no top padding of its own, as the Projects gallery doesn't. */
:is(.home, .page-template-page-blocks) .site-main > .wp-block-group.alignfull.gs-blog-band { padding-top: 0; }


/* ==== 89-responsive.css ==== */
/* Breakpoints for the parts above — from the prototype's assets/css/90-responsive.css, verbatim. Edit here, not in the prototype, from now on. */
/* Responsive: @media blocks only (HOUSE-STYLE §1). Verified at 375 / 768 / 1024 / 1280 / 1600. */

@media (max-width:1280px){
  .gsi-hero__grid{gap:var(--s-6)}
  .gsi-mega--bats{grid-template-columns:1.2fr 1fr 1fr 1fr}
  .gsi-mega__feature{display:none}
}

@media (max-width:1100px){
  .gsi-nav__list{gap:0}
  .gsi-nav__link{padding-inline:.6rem}
  .gsi-tools__wa{display:none}
  .gsi-picks__grid{grid-template-columns:repeat(2,1fr)}
  .gsi-shop__products{grid-template-columns:repeat(2,1fr)}
  .gsi-reel{grid-template-columns:repeat(2,1fr)}
  .gsi-others__grid{grid-template-columns:repeat(3,1fr)}
  .gsi-complete__grid{grid-template-columns:repeat(2,1fr);}
  .gsi-complete__total{grid-column:1/-1}
  .gsi-related__grid{grid-template-columns:repeat(2,1fr)}
  .gsi-options{grid-template-columns:repeat(2,1fr)}
}

@media (max-width:1180px){
  .gsi-nav{display:none}
  .gsi-burger{display:inline-grid}
  .gsi-header__in{grid-template-columns:auto 1fr} /* the menu is hidden: logo and tools only, so the tools sit flush right */
  .gsi-burger svg{inline-size:1.6rem;block-size:1.6rem}
  .gsi-burger{margin-inline-end:-.45rem} /* the icon's own edge on the container's edge */
  .gsi-tools{justify-content:flex-end}
}

@media (max-width:1024px){
  .gsi-hero{min-height:0;padding-block:var(--s-6)}
  .gsi-hero__grid{grid-template-columns:1fr;min-height:0}
  .gsi-hero__media{justify-self:start;width:min(100%,22rem)}
  .gsi-hero__card{inset-inline-start:auto;inset-inline-end:-6%}
  .gsi-cats__grid{grid-template-columns:repeat(2,1fr);grid-template-rows:none}
  .gsi-cat--big{grid-column:1/-1;grid-row:auto;min-height:22rem}
  .gsi-willow{grid-template-columns:1fr}
  .gsi-willow__half{min-height:0}
  .gsi-willow__half .gsi-willow__body{justify-self:start;padding:var(--space-section) var(--gutter)}
  .gsi-willow__img{position:relative;height:16rem;mask-image:none}
  .gsi-willow__lede{text-align:left;justify-self:start;font-size:var(--t-body)}
  .gsi-price__grid{grid-template-columns:repeat(2,1fr)}
  .gsi-craft__grid{grid-template-columns:1fr;gap:var(--space-block)}
  .gsi-craft__media{position:static;order:2}
  .gsi-split{grid-template-columns:1fr;min-height:0}
  .gsi-split__media{min-height:0;aspect-ratio:4/3}
  .gsi-visit__map,.gsi-visit__maplink{min-height:0} /* the map fits its 4:3 frame, badges on it */
  .gsi-split__body{padding-block:var(--space-section)}
  .gsi-split--rev .gsi-split__media{order:2}
  /* phones/tablets: text first after a photo (04 §3c) */
  .gsi-split .gsi-split__media{order:2}
  .gsi-kitteaser__grid{grid-template-columns:1fr;gap:var(--space-block)}
  .gsi-watch__grid{grid-template-columns:1fr;gap:var(--space-block)}
  .gsi-order__grid{grid-template-columns:1fr}
  .gsi-closing__in{grid-template-columns:1fr}
  .gsi-footer__grid{grid-template-columns:1fr 1fr}
  .gsi-service{grid-template-columns:1fr 1fr}
  .gsi-shop__grid{grid-template-columns:1fr}
  .gsi-shop__filterbtn{display:inline-flex}
  .gsi-filters{position:fixed;inset:0;z-index:var(--z-modal);top:auto;max-height:88vh;overflow:auto;border-radius:var(--r-lg) var(--r-lg) 0 0;background:var(--ink-2);padding:var(--s-5) var(--gutter) calc(var(--s-6) + env(safe-area-inset-bottom));box-shadow:0 -30px 60px -20px rgb(0 0 0/.8);transform:translateY(100%);visibility:hidden;transition:transform var(--dur-slow) var(--ease-spring),visibility 0s linear var(--dur-slow)}
  .gsi-filters.is-open{transform:none;visibility:visible;transition-delay:0s}
  .gsi-filters__top{display:flex;justify-content:space-between;align-items:center}
  .gsi-about__grid{grid-template-columns:1fr}
  .gsi-compare__grid{grid-template-columns:1fr}
  .gsi-revstrip__grid{grid-template-columns:1fr}
  .gsi-revstrip__cards{grid-template-columns:1fr}
  .gsi-product__grid{grid-template-columns:1fr}
  .gsi-buy{position:static}
  .gsi-spec{grid-template-columns:1fr}
  .gsi-prodreviews__grid{grid-template-columns:1fr}
  .gsi-kit__head{grid-template-columns:1fr}
  .gsi-summary{grid-template-columns:1fr}
  .gsi-summary__total{justify-items:start;text-align:left}
  .gsi-summary__slots{grid-template-columns:repeat(3,1fr)}
  .gsi-portal__intro .t-display{font-size:var(--fs-03)}
}

@media (max-width:767px){
  :root{--header-h:60px}
  .gsi-topbar{font-size:var(--t-label)}
  .gsi-topbar span:first-child,.gsi-topbar .gsi-topbar__sep{display:none}
  .gsi-logo__tag{display:none}
  .gsi-logo__word{font-size:1.4rem}
  .gsi-bottombar{display:grid}
  .gsi-float{display:none}
  body{padding-block-end:4.2rem}
  .gsi-hero__title{max-width:none}
  .gsi-hero__chips{display:flex;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin-inline:calc(-1 * var(--gutter));padding-inline:var(--gutter)}
  .gsi-hero__chips::-webkit-scrollbar{display:none}
  .gsi-hero__media{width:100%;max-width:22rem}
  .gsi-hero__card{position:static;margin-top:var(--s-3);max-width:none}
  .gsi-hero__trust{gap:var(--s-2) var(--s-4)}
  .gsi-marquee__item{font-size:var(--t-card)}
  .gsi-cats__grid{grid-template-columns:1fr 1fr;gap:var(--s-3)}
  .gsi-cat{min-height:11rem}
  .gsi-cat--big{min-height:18rem}
  .gsi-cat__body{padding:var(--s-3)}
  .gsi-cat--big .gsi-cat__body{padding:var(--s-4)}
  .gsi-cat__arrow{display:none}
  .gsi-picks__grid{grid-template-columns:1fr 1fr;gap:var(--s-2)}
  .gsi-card{padding:var(--s-2)}
  .gsi-card__actions{grid-template-columns:1fr}
  .gsi-card__actions .gsi-btn--wa{display:none}
  .gsi-card__sizes{display:none}
  .gsi-price__grid{grid-template-columns:1fr}
  .gsi-ticks{grid-template-columns:1fr}
  .gsi-proof{grid-template-columns:repeat(3,1fr)}
  .gsi-kits__row{grid-template-columns:1fr auto;}
  .gsi-kits__items{grid-column:1/-1}
  .gsi-portal__stage{height:60vh}
  .gsi-portal--live .gsi-portal__track{height:120vh}
  .gsi-portal--live .gsi-portal__stage{height:100vh}
  .gsi-portal--live .gsi-portal__after{margin-top:-12vh}
  .gsi-arc{height:24rem}
  .gsi-arc__card{width:15rem;min-height:18rem;margin-inline-start:-7.5rem;padding:var(--s-4)}
  .gsi-review__quote{font-size:var(--t-body)}
  .gsi-polaroids{grid-template-columns:repeat(2,minmax(0,1fr))}
  .gsi-polaroid{transform:none}
  .gsi-polaroid:nth-child(3){width:min(100%,14rem);margin-top:0}  /* the third photo (with Virender Sehwag) shows on phones too, centred under the two */
  .gsi-story__media{padding:var(--s-6) var(--gutter)}
  .gsi-facts{grid-template-columns:1fr 1fr}
  .gsi-reel{grid-template-columns:repeat(2,1fr)}
  .gsi-phone:nth-child(2n){margin-bottom:0}
  .gsi-places{gap:var(--s-3)}
  .gsi-service{grid-template-columns:1fr;gap:var(--s-3)}
  .gsi-footer__grid{grid-template-columns:1fr;gap:var(--s-6)}
  .gsi-footer__legal{flex-direction:column}
  .gsi-footer__legal a{margin:0 var(--s-3) 0 0}
  .gsi-shop__products{grid-template-columns:1fr 1fr;gap:var(--s-2)}
  .gsi-promo{grid-column:1/-1}
  .gsi-shop__bar{flex-wrap:wrap}
  .gsi-shop__sort{width:100%}
  .gsi-shop__sort select{flex:1}
  .gsi-others__grid{grid-template-columns:repeat(2,1fr)}
  .gsi-gallery__thumbs{grid-template-columns:repeat(6,1fr)}
  .gsi-buy__in{padding:var(--s-4)}
  .gsi-buy__actions{grid-template-columns:4.5rem 1fr}
  .gsi-complete__grid{grid-template-columns:1fr 1fr}
  .gsi-related__grid{grid-template-columns:1fr 1fr}
  .gsi-buybar{display:grid;inset-block-end:4.2rem}
  .page-product .gsi-bottombar{display:none}
  .page-product body,.page-product{padding-block-end:4.5rem}
  .gsi-scene__core{aspect-ratio:1}
  .gsi-point__label{display:none}
  .gsi-options{grid-template-columns:1fr}
  .gsi-panel{padding:var(--s-4)}
  .gsi-summary{position:sticky;inset-block-end:4.4rem;z-index:var(--z-sticky);padding:var(--s-3);gap:var(--s-3);box-shadow:var(--shadow-float),0 -20px 40px -20px rgb(0 0 0/.6)}
  .gsi-summary__slots{display:flex;overflow-x:auto;gap:var(--s-2);scrollbar-width:none;margin-inline:calc(-1 * var(--s-3));padding-inline:var(--s-3)}
  .gsi-summary__slot{flex:0 0 9rem}
  .gsi-summary__total{display:grid;grid-template-columns:1fr 1fr;align-items:center;width:100%}
  .gsi-summary__total .t-small:first-child{grid-column:1}
  .gsi-summary__total .t-display{font-size:var(--fs-04);grid-column:1}
  .gsi-summary__total > .t-small:nth-child(3){grid-column:1}
  .gsi-summary__actions{grid-column:2;grid-row:1/4;margin:0}
  .gsi-summary__actions .gsi-btn{min-height:2.75rem;font-size:var(--t-small);padding-inline:.9rem}
  .gsi-summary__actions .gsi-btn__icon{display:none}
}

@media (max-width:767px){
  .gsi-chip--sm{min-height:2.75rem;min-width:2.75rem}
  .gsi-footer__list a,.gsi-sheet__sub a,.gsi-mega__link,.gsi-crumbs a{display:inline-flex;align-items:center;min-height:2.75rem}
  .gsi-link{min-height:2.75rem}
  .gsi-check{min-height:2.75rem}
}

@media (max-width:480px){
  .gsi-card__line{display:none}
  .gsi-card__body{padding:0}
  .gsi-cats__grid{grid-template-columns:1fr}
  .gsi-cat--big{grid-column:auto}
  .gsi-proof{grid-template-columns:1fr 1fr 1fr}
  .gsi-hero__trust{display:grid;grid-template-columns:1fr 1fr}
  .gsi-reel{grid-template-columns:1fr 1fr}
  .gsi-facts-row{display:grid;grid-template-columns:1fr 1fr}
  .gsi-summary__total{grid-template-columns:1fr}
  .gsi-summary__actions{grid-column:1;grid-row:auto;grid-template-columns:1fr 1fr}
}

@media (min-width:1600px){
  .gsi-hero__media{width:min(100%,34rem)}
}

@media (hover:none){
  .gsi-card__media img + img{display:none}
}

@media (max-height:700px) and (min-width:1025px){
  .gsi-hero{min-height:0}
  .gsi-hero__grid{min-height:0}
}

@media (max-width:1024px){
  .gsi-cat--big{min-height:24rem}
}
/* tablets: the homepage hero keeps its split (text left, the bat standing tall on the right) instead of
   stacking and leaving half the screen empty; the Bats tile stays tall over two rows so its upright photo
   isn't cropped into a wide strip */
@media (min-width:768px) and (max-width:1024px){
  .gsi-hero--split{padding-block:var(--s-7)}
  .gsi-hero--split .gsi-hero__grid{grid-template-columns:1.25fr 1fr;gap:var(--s-6);align-items:stretch}
  .gsi-hero--split .gsi-hero__body{align-content:center}
  .gsi-hero--split .gsi-hero__media{justify-self:stretch;width:auto}
  .gsi-hero--split .gsi-hero__frame{aspect-ratio:auto;height:100%;min-height:28rem}
  .gsi-hero--split .gsi-hero__card{inset-inline-start:calc(-1 * var(--s-5));inset-inline-end:auto;inset-block-end:var(--s-5)}
  .gsi-cat--big{grid-column:1;grid-row:span 2}
}
@media (max-width:767px){
  .gsi-cat--big{min-height:20rem}
  .gsi-cat:not(.gsi-cat--big) .gsi-cat__body{padding:var(--s-3)}
}
@media (max-width:1024px){
  .gsi-willow__img{height:16rem}
  .gsi-watchbat__media{aspect-ratio:auto;padding:var(--s-5) var(--gutter) var(--space-section)}
}
/* phones and tablets: the kit teaser shows its plain variant, so it never puts a photo straight above the portal photo (04 §3c P2) */
@media (max-width:1024px){
  .gsi-kitteaser__media{display:none}
}

/* phones: product photos at their own shape, and a one-row shop bar that doesn't cover them */
@media (max-width:767px){
  .gsi-card__media{aspect-ratio:3/4}
  .gsi-shop__bar{flex-wrap:nowrap;gap:var(--s-2);padding-block:var(--s-2)}
  .gsi-shop__filterbtn{min-height:2.75rem;padding-inline:1rem}
  .gsi-shop__count{margin-inline-end:auto;font-size:var(--t-label);white-space:nowrap}
  .gsi-shop__sort{width:auto}
  .gsi-shop__sortlabel{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
  .gsi-shop__sort select{flex:none;min-height:2.75rem;font-size:var(--t-small);max-width:11rem}
  .gsi-custom .gsi-split__media,.gsi-sizes .gsi-split__media{aspect-ratio:4/5}
  .gsi-sizes__img{min-height:0}
}

/* phones/tablets: the polaroids set their own height (no 4:3 crop), sit level, and never overflow into the next section */
@media (max-width:1024px){
  .gsi-story__media{aspect-ratio:auto;overflow:visible;padding-block:var(--space-section-sm)}
  .gsi-polaroids{align-items:start}
  .gsi-polaroid:nth-child(2){margin-top:0}
}


/* ==== 90-motion.css ==== */
/* Motion. Parts 90–99 are left out of the editor build.
   Reveal on scroll (assets/js/parts/20-reveal.js marks what moves): content shows without the
   script, the .js class on <html> gates the motion, and a script error shows everything. */

.js .gs-reveal{opacity:0;transform:translateY(16px);transition:opacity var(--dur-slow) var(--ease-out),transform var(--dur-slow) var(--ease-out)}
.js .gs-reveal.is-shown{opacity:1;transform:none}
.has-js-error .gs-reveal{opacity:1!important;transform:none!important}

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after {
		animation-duration: .001ms !important;
		transition-duration: .001ms !important;
		scroll-behavior: auto !important;
	}
	.js .gs-reveal { opacity: 1; transform: none; }
}

