/*
Theme Name:  NDM Chrome Hearts
Theme URI:   https://chromeheartleggings.com/
Author:      NDM
Description: Custom classic WooCommerce theme for chromeheartleggings.com — the WordPress rendering of the static Astro storefront built to the accepted "HOUSE SEAM" concept. Converted with PROMPT #2 (NDM StoreKit theme conversion v1.4). SEO Core owns every head/schema node; this theme owns body, design and commerce only.
Version:     1.0.0
Requires PHP: 7.4
Text Domain: ndm-chromehearts
Tags:        e-commerce, woocommerce, one-column, custom-colors
*/

/* =======================================================================
   1. PORTED STOREFRONT CSS
   -----------------------------------------------------------------------
   Everything from here to §2 is the COMPILED stylesheet the static site
   serves (dist/_astro/_page_.*.css — Tailwind v4 preflight + the whole of
   src/styles/global.css). It is copied byte-for-byte rather than
   hand-retyped so the rendered pages are pixel-identical to the static
   build; the Astro repo has no per-page <style> blocks to merge (verified:
   zero `<style` occurrences across all .astro files), so this single file
   is the complete design surface.

   The design tokens (:root custom properties) inside it are the store
   personality surface — a next store rewrites those plus inc/config.php
   and nothing else (gate T11).

   Font files: the @font-face rules below point at /fonts/*.woff2, which
   are ROOT-absolute URLs served from the WordPress docroot (see
   THEME-NOTES.md install checklist). The same files also ship inside the
   theme at assets/fonts/ so the preload links can be theme-relative.
   ======================================================================= */

/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.5rem;--text-3xl:1.875rem;--text-4xl:2.25rem;--text-5xl:3rem;--radius-sm:.25rem;--ease-out:cubic-bezier(0, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.fixed{position:fixed}.static{position:static}.sticky{position:sticky}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.block{display:block}.grid{display:grid}.hidden{display:none}.inline{display:inline}.table{display:table}.border-collapse{border-collapse:collapse}.rounded{border-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.lowercase{text-transform:lowercase}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}}@font-face{font-family:Cinzel;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/8vIJ7ww63mVu7gt79mT7.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Cinzel;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/8vIJ7ww63mVu7gt7-GT7LEc.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Public Sans;font-style:normal;font-weight:300 500;font-display:swap;src:url(/fonts/ijwRs572Xtc6ZYQws9YVwnNGfJ4.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Public Sans;font-style:normal;font-weight:300 500;font-display:swap;src:url(/fonts/ijwRs572Xtc6ZYQws9YVwnNIfJ7Cww.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}:root{--color-bg:#0a0a0b;--color-bg-2:#131316;--color-surface:#131316;--color-line:#2a2c31;--color-line-2:#3c4046;--color-plate:#fff;--color-plate-ink:#141417;--color-plate-muted:#55595f;--color-ink:#e8e4dc;--color-muted:#9aa0a8;--color-accent:#c9ccd1;--color-accent-2:#7e838c;--color-sale:#c2454b;--color-danger:#c2454b;--font-display:"Cinzel", "Times New Roman", serif;--font-body:"Public Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;--text-xs:.75rem;--text-sm:.8125rem;--text-base:1rem;--text-md:1.125rem;--text-lg:1.125rem;--text-xl:1.375rem;--text-2xl:1.75rem;--text-3xl:2.25rem;--text-4xl:3rem;--text-5xl:4.25rem;--text-display:clamp(2rem, 6vw, 4.25rem);--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--space-8:64px;--space-9:96px;--radius-0:0px;--radius-1:0px;--radius-2:0px;--radius-sm:2px;--border-hair:1px;--shadow-plate:0 1px 0 #0009;--dur-fast:.12s;--dur-base:.24s;--dur-slow:.48s;--ease-out:cubic-bezier(.2, .7, .3, 1);--wrap:1440px;--gutter:var(--space-5)}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--color-bg);color:var(--color-ink);font-family:var(--font-body);font-size:var(--text-base);margin:0;font-weight:350;line-height:1.6;overflow-x:hidden}img{max-width:100%;height:auto;display:block}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}h1,h2,h3,h4{margin:0;font-weight:400}p{margin:0}ul,ol{margin:0;padding:0}svg{fill:none;stroke:currentColor;stroke-width:1.5px}:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px}.sr,.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.skip{left:var(--space-3);z-index:100;background:var(--color-accent);color:var(--color-bg);padding:var(--space-3) var(--space-4);font-size:var(--text-sm);letter-spacing:.08em;text-transform:uppercase;transition:top var(--dur-fast) var(--ease-out);position:absolute;top:-100px}.skip:focus{top:var(--space-3)}.wrap,.shell{max-width:var(--wrap);padding-inline:var(--gutter);margin-inline:auto}.sec{padding-block:var(--space-8)}.sec+.sec{padding-top:0}.morebar{padding-top:var(--space-7);justify-content:center;display:flex}.gap{height:var(--space-7)}.num{font-variant-numeric:tabular-nums}.kick,.hero__k{font-size:var(--text-xs);letter-spacing:.28em;text-transform:uppercase;color:var(--color-accent-2);font-weight:500}h1,h2,h3,.rail__h,.sibs__lbl{font-family:var(--font-display);text-transform:uppercase;letter-spacing:.06em;font-weight:700;line-height:1.1}h1{font-size:clamp(1.75rem,4.6vw,var(--text-4xl));letter-spacing:.04em}h2{font-size:var(--text-2xl);letter-spacing:.08em}h3{font-size:var(--text-lg)}.sec>h2{margin-bottom:var(--space-6)}.price{font-family:var(--font-display);font-variant-numeric:tabular-nums;letter-spacing:.04em;font-weight:600}.lead{color:var(--color-muted);font-size:var(--text-lg);max-width:62ch;line-height:1.65}.prose{color:var(--color-muted);max-width:68ch;margin-inline:auto}.prose h2{color:var(--color-ink);margin-block:var(--space-7) var(--space-4)}.prose h3{color:var(--color-ink);margin-block:var(--space-5) var(--space-3);font-size:var(--text-base);letter-spacing:.16em}.prose p+p,.prose ul,.prose ol{margin-top:var(--space-4)}.prose ul,.prose ol{padding-left:var(--space-5)}.prose li{margin-bottom:var(--space-2)}.prose a{color:var(--color-accent);text-underline-offset:3px;text-decoration:underline}.prose strong{color:var(--color-ink);font-weight:500}.prose details,.acc details{border-top:var(--border-hair) solid var(--color-line);padding-block:var(--space-2)}.prose details:last-of-type,.acc details:last-of-type{border-bottom:var(--border-hair) solid var(--color-line)}.prose summary,.acc summary{justify-content:space-between;align-items:center;gap:var(--space-4);padding-block:var(--space-4);cursor:pointer;min-height:44px;font-family:var(--font-display);text-transform:uppercase;font-weight:400;font-size:var(--text-lg);letter-spacing:.04em;color:var(--color-ink);list-style:none;display:flex}.prose summary::-webkit-details-marker{display:none}.acc summary::-webkit-details-marker{display:none}.prose summary:after,.acc summary:after{content:"";border-right:var(--border-hair) solid var(--color-accent-2);border-bottom:var(--border-hair) solid var(--color-accent-2);width:12px;height:12px;transition:transform var(--dur-base) var(--ease-out);flex:none;transform:rotate(45deg)}.prose details[open] summary:after,.acc details[open] summary:after{transform:rotate(-135deg)}.prose summary:hover,.acc summary:hover{color:var(--color-accent)}.btn{justify-content:center;align-items:center;gap:var(--space-3);min-height:48px;padding:var(--space-3) var(--space-6);font-size:var(--text-xs);letter-spacing:.2em;text-transform:uppercase;border:var(--border-hair) solid transparent;border-radius:var(--radius-0);transition:background var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out);font-weight:500;display:inline-flex}.btn--primary{background:var(--color-accent);color:var(--color-bg)}.btn--primary:hover{background:var(--color-ink)}.btn--primary:active{transform:translateY(1px)}.btn--ghost{border-color:var(--color-line-2);color:var(--color-ink)}.btn--ghost:hover{border-color:var(--color-accent);color:var(--color-accent)}.btn--block{width:100%}.btn[disabled],.btn.is-disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.btn-link{color:var(--color-accent);font-size:var(--text-sm);letter-spacing:.12em;text-transform:uppercase}.btn-link:hover{color:var(--color-ink)}.ann{background:var(--color-bg-2);border-bottom:var(--border-hair) solid var(--color-line);font-size:var(--text-xs);letter-spacing:.16em;text-transform:uppercase;color:var(--color-muted)}.ann[hidden]{display:none}.ann__in{justify-content:center;align-items:center;gap:var(--space-4);min-height:40px;padding-block:var(--space-2);text-align:center;display:flex;position:relative}.hd{z-index:40;background:var(--color-bg);position:sticky;top:0}@supports (color:color-mix(in lab,red,red)){.hd{background:color-mix(in srgb,var(--color-bg) 88%,transparent)}}.hd{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:var(--border-hair) solid var(--color-line);transition:background var(--dur-base) var(--ease-out),border-color var(--dur-base) var(--ease-out)}.hd.is-scrolled{background:var(--color-bg);border-bottom-color:var(--color-line-2)}.hd__in{align-items:center;gap:var(--space-4);min-height:96px;transition:min-height var(--dur-base) var(--ease-out);grid-template-columns:1fr auto 1fr;display:grid;position:relative}.hd__in:before{content:"";background:var(--color-line);width:1px;position:absolute;top:0;bottom:0;left:50%;transform:translate(-.5px)}.hd.is-scrolled .hd__in{min-height:76px}.hd__left{justify-content:flex-end;align-items:center;gap:var(--space-5);display:flex}.hd__right{justify-content:flex-start;align-items:center;gap:var(--space-5);display:flex}.hd__spacer{width:0;display:block}.logo{z-index:1;padding-inline:var(--space-5);background:var(--color-bg);place-items:center;display:inline-grid;position:relative}.logo img{width:84px;max-width:none;height:84px;transition:width var(--dur-base) var(--ease-out),height var(--dur-base) var(--ease-out)}.hd.is-scrolled .logo img{width:64px;height:64px}.hnav{align-items:center;gap:var(--space-5);display:flex}.hnav a,.hd__shop{color:var(--color-muted);padding-block:var(--space-2);white-space:nowrap;font-size:var(--text-xs);letter-spacing:.18em;text-transform:uppercase;position:relative}.hnav a:after,.hd__shop:after{content:"";background:var(--color-accent);transform-origin:0;height:1px;transition:transform var(--dur-base) var(--ease-out);position:absolute;bottom:0;left:0;right:0;transform:scaleX(0)}.hnav a:hover,.hd__shop:hover{color:var(--color-ink)}.hnav a:hover:after,.hd__shop:hover:after{transform:scaleX(1)}.hnav__tag{color:var(--color-accent-2);letter-spacing:.3em;white-space:nowrap;font-size:10px}.menu-trigger,.icon-btn{width:44px;height:44px;color:var(--color-ink);place-items:center;display:none}.menu-trigger svg,.icon-btn svg{width:20px;height:20px}.menu-trigger .lbl{display:none}.icon-btn{display:grid}.qstrip{border-bottom:var(--border-hair) solid var(--color-line);background:var(--color-bg-2)}.qstrip__in{gap:var(--space-4);padding-block:var(--space-3);scrollbar-width:none;font-size:var(--text-xs);letter-spacing:.16em;text-transform:uppercase;align-items:center;display:flex;overflow-x:auto}.qstrip__in::-webkit-scrollbar{display:none}.qstrip__lbl{color:var(--color-accent-2);letter-spacing:.3em;flex:none}.qstrip__in a{color:var(--color-muted);white-space:nowrap;padding-block:var(--space-2)}.qstrip__in a:hover{color:var(--color-ink)}.qstrip__in a[aria-current=page]{color:var(--color-accent)}.mm{z-index:60;background:var(--color-bg);flex-direction:column;display:flex;position:fixed;inset:0}.mm[hidden]{display:none}.mm__top{padding:var(--space-4) var(--gutter);border-bottom:var(--border-hair) solid var(--color-line);justify-content:space-between;align-items:center;min-height:72px;display:flex}.mm__top .logo{background:0 0;padding:0}.mm__nav{padding:var(--space-5) var(--gutter);flex:1;overflow-y:auto}.mm__nav a{padding-block:var(--space-4);border-bottom:var(--border-hair) solid var(--color-line);min-height:44px;font-family:var(--font-display);text-transform:uppercase;font-weight:400;font-size:var(--text-xl);letter-spacing:.06em;justify-content:space-between;align-items:baseline;display:flex}.mm__nav a span{font-family:var(--font-body);font-size:var(--text-xs);color:var(--color-accent-2);letter-spacing:.2em}.mm__nav a:hover{color:var(--color-accent)}.mm__lbl{font-family:var(--font-display);font-weight:700;font-size:var(--text-xs);letter-spacing:.32em;text-transform:uppercase;color:var(--color-accent);margin-block:var(--space-5) var(--space-2);display:block}.mm__lbl:first-child{margin-top:0}.mm__foot{padding:var(--space-5) var(--gutter);color:var(--color-muted);font-size:var(--text-sm);border-top:var(--border-hair) solid var(--color-line)}.thumbbar{display:none}.hero{background:var(--color-bg-2);position:relative;overflow:hidden}.hero__media{position:relative}.hero__media img{object-fit:cover;object-position:72% center;width:100%;height:clamp(420px,62vh,660px)}.hero__scrim{background:linear-gradient(90deg,var(--color-bg) 4%,var(--color-bg) 42%,transparent 78%);position:absolute;inset:0}@supports (color:color-mix(in lab,red,red)){.hero__scrim{background:linear-gradient(90deg,var(--color-bg) 4%,color-mix(in srgb,var(--color-bg) 72%,transparent) 42%,transparent 78%)}}.hero__copy{align-items:center;display:flex;position:absolute;inset:0}.hero__copy>.wrap{width:100%}.hero__inner{max-width:30rem}.hero__slogan{font-family:var(--font-display);text-transform:uppercase;font-weight:700;font-size:clamp(2rem,6vw,var(--text-5xl));letter-spacing:.04em;margin-block:var(--space-4) var(--space-5);line-height:1.02}.hero__slogan em{color:var(--color-accent-2);font-style:normal;display:block}.hero__cta{gap:var(--space-4);margin-top:var(--space-5);flex-wrap:wrap;display:flex}.hero-copy p{color:var(--color-muted);font-size:var(--text-lg);max-width:62ch;line-height:1.65}.hero-copy p+p{margin-top:var(--space-4)}.kw{border-block:var(--border-hair) solid var(--color-line);background:var(--color-bg)}.kw__grid{gap:var(--space-8);padding-block:var(--space-8);grid-template-columns:1.15fr .85fr;align-items:center;display:grid}.kw h1{margin-bottom:var(--space-5)}.kw__plate{background:var(--color-plate);padding:var(--space-5);align-self:start}.kw__plate img{aspect-ratio:4/5;object-fit:contain;width:100%}.kw__cta{gap:var(--space-4);margin-top:var(--space-6);flex-wrap:wrap;display:flex}.index{background:var(--color-bg-2);border-bottom:var(--border-hair) solid var(--color-line)}.index__grid{padding-block:var(--space-8);grid-template-columns:1fr 1px 1fr;display:grid}.index__seam{background:var(--color-line-2)}.index__house{padding-inline:var(--space-7)}.index__house:first-child{text-align:right;padding-left:0}.index__house:last-child{padding-right:0}.index__label{font-family:var(--font-display);text-transform:uppercase;font-weight:700;font-size:var(--text-sm);letter-spacing:.32em;color:var(--color-accent);margin-bottom:var(--space-2)}.index__sub{color:var(--color-muted);font-size:var(--text-xs);letter-spacing:.12em;text-transform:uppercase;margin-bottom:var(--space-5)}.index__list{list-style:none}.index__list li+li{margin-top:var(--space-1)}.index__list a{align-items:baseline;gap:var(--space-3);font-family:var(--font-display);text-transform:uppercase;font-weight:400;font-size:var(--text-lg);letter-spacing:.05em;color:var(--color-ink);padding-block:var(--space-2);min-height:44px;transition:color var(--dur-fast) var(--ease-out);display:flex}.index__house:first-child .index__list a{justify-content:flex-end}.index__list a:hover{color:var(--color-accent)}.index__n{font-family:var(--font-body);font-size:var(--text-xs);color:var(--color-accent-2);font-variant-numeric:tabular-nums;letter-spacing:.1em}.sechead{justify-content:space-between;align-items:flex-end;gap:var(--space-5);margin-bottom:var(--space-6);flex-wrap:wrap;display:flex}.sechead__note{color:var(--color-muted);font-size:var(--text-sm);max-width:46ch}.rail-block+.rail-block{margin-top:var(--space-8)}.railhead{justify-content:space-between;align-items:baseline;gap:var(--space-5);margin-bottom:var(--space-4);padding-bottom:var(--space-3);border-bottom:var(--border-hair) solid var(--color-line);flex-wrap:wrap;display:flex}.railhead h3{font-family:var(--font-display);text-transform:uppercase;font-weight:700;font-size:var(--text-lg);letter-spacing:.16em}.railhead .btn-link{white-space:nowrap}.lede{color:var(--color-ink);font-size:var(--text-lg);line-height:1.6}.home-body .lede+p{margin-top:var(--space-3)}.pgrid,.related{background:var(--color-line);content-visibility:auto;contain-intrinsic-size:1px 600px;grid-template-columns:repeat(5,1fr);gap:1px;display:grid}.pgrid--4,.related,.pgrid--jewel{grid-template-columns:repeat(4,1fr)}.card{background:var(--color-plate);color:var(--color-plate-ink);transition:opacity var(--dur-base) var(--ease-out),transform var(--dur-base) var(--ease-out);display:block;position:relative}.pgrid:hover .card,.related:hover .card{opacity:.28;transform:scale(.985)}.pgrid:hover .card:hover,.related:hover .card:hover,.pgrid .card:focus-within,.related .card:focus-within{opacity:1;transform:scale(1)}.pgrid.is-touch .card,.related.is-touch .card{opacity:.34;transform:scale(.985)}.pgrid.is-touch .card.is-lit,.related.is-touch .card.is-lit{opacity:1;transform:scale(1)}.card__media{position:relative}.card__media img,.pi{aspect-ratio:4/5;object-fit:contain;width:100%;padding:var(--space-4)}.pi-2{opacity:0;transition:opacity var(--dur-base) var(--ease-out);position:absolute;inset:0}.card:hover .pi-2{opacity:1}.card__tag{left:var(--space-4);bottom:var(--space-1);z-index:2;letter-spacing:.2em;text-transform:uppercase;color:var(--color-plate-muted);font-size:10px;position:absolute}.card__badge{top:var(--space-3);left:var(--space-3);z-index:2;background:var(--color-plate-ink);color:var(--color-plate);letter-spacing:.2em;text-transform:uppercase;padding:var(--space-1) var(--space-3);font-size:10px;position:absolute}.card__noimg,.gal__noimg{aspect-ratio:4/5;background:repeating-linear-gradient(45deg,#eceae5 0 8px,var(--color-plate) 8px 16px);place-items:center;display:grid}.card__noimg span,.gal__noimg span{font-family:var(--font-display);text-transform:uppercase;font-weight:700;font-size:var(--text-xs);letter-spacing:.24em;color:var(--color-plate-muted);border:var(--border-hair) solid var(--color-plate-muted);padding:var(--space-3) var(--space-4);background:var(--color-plate);text-align:center}.card__b{padding:0 var(--space-4) var(--space-4)}.card__title{font-family:var(--font-body);text-transform:none;letter-spacing:0;font-weight:400;font-size:var(--text-sm);color:var(--color-plate-ink);line-height:1.4}.card__row{justify-content:space-between;align-items:baseline;gap:var(--space-3);margin-top:var(--space-2);display:flex}.card__row .price{font-size:var(--text-lg);color:var(--color-plate-ink)}.card__row .price del{color:var(--color-plate-muted);margin-right:var(--space-2);font-size:var(--text-sm)}.card__row .price ins{color:var(--color-sale);text-decoration:none}.sku{letter-spacing:.2em;text-transform:uppercase;color:var(--color-plate-muted);font-size:10px}.shell{gap:var(--space-8);grid-template-columns:264px 1fr;align-items:start;display:grid}.rail{top:calc(76px + var(--space-5));position:sticky}.rail__box{border:var(--border-hair) solid var(--color-line);background:var(--color-bg-2);padding:var(--space-5)}.rail__h{font-size:var(--text-sm);letter-spacing:.24em;margin-bottom:var(--space-4)}.rail__note{color:var(--color-muted);font-size:var(--text-sm);margin-top:var(--space-4)}.rail__nav{flex-direction:column;display:flex}.rail__nav a{justify-content:space-between;align-items:baseline;gap:var(--space-3);padding-block:var(--space-3);min-height:44px;color:var(--color-muted);font-size:var(--text-sm);border-top:var(--border-hair) solid var(--color-line);transition:color var(--dur-fast) var(--ease-out);display:flex}.rail__nav a:first-child{border-top:0}.rail__nav a:hover{color:var(--color-ink)}.rail__nav a[aria-current=page]{color:var(--color-accent)}.rail__nav a span{color:var(--color-accent-2);font-size:var(--text-xs);font-variant-numeric:tabular-nums;letter-spacing:.1em;flex:none}.chead{padding-block:var(--space-2) var(--space-6);border-bottom:var(--border-hair) solid var(--color-line)}.chead h1{margin-bottom:var(--space-4)}.catintro{color:var(--color-muted);max-width:68ch}.catintro p+p{margin-top:var(--space-3)}.catintro a{color:var(--color-accent);text-underline-offset:3px;text-decoration:underline}.sortwrap{justify-content:flex-end;align-items:center;gap:var(--space-3);padding-block:var(--space-4);display:flex}.sortwrap label{letter-spacing:.24em;text-transform:uppercase;color:var(--color-accent-2);flex:none;font-size:10px}.sortwrap select{background:var(--color-bg-2);color:var(--color-ink);border:var(--border-hair) solid var(--color-line);padding:var(--space-3) var(--space-4);min-height:44px;font:inherit;font-size:var(--text-sm)}.gtool{padding-block:var(--space-4);justify-content:space-between;align-items:center;gap:var(--space-4);flex-wrap:wrap;display:flex}.gtool__count{color:var(--color-accent-2);font-size:var(--text-xs);letter-spacing:.2em;text-transform:uppercase}.sibs{border-top:var(--border-hair) solid var(--color-line);padding-block:var(--space-7)}.sibs__lbl{font-size:var(--text-sm);letter-spacing:.24em;margin-bottom:var(--space-2);flex:0 0 100%}.sibs__in{gap:var(--space-3);flex-wrap:wrap;display:flex}.sibs__in a{border:var(--border-hair) solid var(--color-line);padding:var(--space-3) var(--space-5);font-size:var(--text-xs);letter-spacing:.16em;text-transform:uppercase;color:var(--color-muted);align-items:center;min-height:44px;display:inline-flex}.sibs__in a:hover{border-color:var(--color-accent);color:var(--color-ink)}.pager{justify-content:center;align-items:center;gap:var(--space-2);padding-block:var(--space-7);flex-wrap:wrap;display:flex}.pager a,.pager span{min-width:44px;min-height:44px;padding-inline:var(--space-3);border:var(--border-hair) solid var(--color-line);font-size:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--color-muted);place-items:center;display:grid}.pager a:hover{border-color:var(--color-accent);color:var(--color-ink)}.pager [aria-current=page]{background:var(--color-accent);color:var(--color-bg);border-color:var(--color-accent)}.pager .is-disabled{opacity:.35;pointer-events:none}.crumb{padding-block:var(--space-5);font-size:var(--text-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--color-accent-2)}.crumb a{color:var(--color-muted)}.crumb a:hover{color:var(--color-ink)}.crumb span{margin-inline:var(--space-2)}.pdp{gap:var(--space-8);padding-bottom:var(--space-9);grid-template-columns:1.05fr .95fr;display:grid}.pdp__cat{font-size:var(--text-xs);letter-spacing:.28em;text-transform:uppercase;color:var(--color-accent-2)}.pdp h1{font-size:clamp(1.5rem,3.4vw,var(--text-2xl));margin-block:var(--space-3) var(--space-4)}.pdp__price{font-family:var(--font-display);font-weight:600;font-size:var(--text-3xl);color:var(--color-accent);margin-bottom:var(--space-5);font-variant-numeric:tabular-nums}.pdp__price del{color:var(--color-muted);font-size:var(--text-xl);margin-right:var(--space-3)}.pdp__price ins{color:var(--color-sale);text-decoration:none}.pdp__short{color:var(--color-muted);margin-bottom:var(--space-6);max-width:52ch}.pdp__desc{border-top:var(--border-hair) solid var(--color-line);padding-top:var(--space-6);margin-top:var(--space-7)}.pdp__desc a,.pdp__short a,.autolink{color:var(--color-accent);text-underline-offset:3px;text-decoration:underline}.pdp__desc a:hover,.pdp__short a:hover,.autolink:hover{color:var(--color-ink)}.pdp__desc p+p{margin-top:var(--space-4)}.pdp__buy{align-self:start}.gal__main{background:var(--color-plate)}.gal__main img{aspect-ratio:4/5;object-fit:contain;width:100%;padding:var(--space-6)}.gal__thumbs{gap:var(--space-3);margin-top:var(--space-3);flex-wrap:wrap;display:flex}.gal__thumb{background:var(--color-plate);width:84px;padding:var(--space-2);transition:border-color var(--dur-fast) var(--ease-out);border:2px solid #0000}.gal__thumb img{aspect-ratio:1;object-fit:contain;width:100%}.gal__thumb[aria-current=true]{border-color:var(--color-accent)}.gal__thumb:hover{border-color:var(--color-accent-2)}.specs{gap:var(--space-6) var(--space-5);border-top:var(--border-hair) solid var(--color-line);padding-top:var(--space-5);margin-top:var(--space-6);grid-template-columns:repeat(auto-fit,minmax(150px,1fr));display:grid}.specs dt{letter-spacing:.24em;text-transform:uppercase;color:var(--color-accent-2);font-size:10px}.specs dd{margin:var(--space-2) 0 0;font-size:var(--text-sm)}.acc{margin-top:var(--space-7)}.pdp__card{border:var(--border-hair) solid var(--color-line);padding:var(--space-6);background:var(--color-bg-2)}.buybox{margin-top:var(--space-5)}.buybox__hint{color:var(--color-muted);font-size:var(--text-sm);margin-bottom:var(--space-3)}.trust{gap:var(--space-2);margin-top:var(--space-4);color:var(--color-muted);font-size:var(--text-sm);flex-direction:column;display:flex}.trust span{align-items:center;gap:var(--space-3);display:flex}.trust svg{width:16px;height:16px;color:var(--color-accent-2);flex:none}.ndm-pa{margin-block:var(--space-2) var(--space-5)}.mono-lbl,.ndm-pa-label{letter-spacing:.24em;text-transform:uppercase;color:var(--color-accent-2);margin-bottom:var(--space-3);font-size:10px}.chips{gap:var(--space-2);flex-wrap:wrap;display:flex}.chip{white-space:nowrap;min-width:56px;min-height:44px;padding:var(--space-2) var(--space-4);border:var(--border-hair) solid var(--color-line-2);border-radius:var(--radius-sm);color:var(--color-muted);font-size:var(--text-sm);letter-spacing:.1em;transition:border-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),background var(--dur-fast) var(--ease-out)}.chip:hover{border-color:var(--color-accent-2);color:var(--color-ink)}.chip:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.chip[aria-pressed=true]{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-bg)}.chip[disabled]{opacity:.35;cursor:not-allowed}.usp-line{border-block:var(--border-hair) solid var(--color-line);background:var(--color-bg-2);margin-top:var(--space-7);grid-template-columns:repeat(4,1fr);display:grid}.usp-line>div{padding:var(--space-6) var(--space-5);border-left:var(--border-hair) solid var(--color-line)}.usp-line>div:first-child{border-left:0}.usp-line b{font-family:var(--font-display);text-transform:uppercase;letter-spacing:.3em;color:var(--color-accent-2);margin-bottom:var(--space-2);font-size:10px;font-weight:700;display:block}.usp-line span{color:var(--color-ink);font-size:var(--text-base);line-height:1.45}.about{gap:var(--space-8);grid-template-columns:.9fr 1.1fr;align-items:start;display:grid}.about>:last-child{border-left:var(--border-hair) solid var(--color-line);padding-left:var(--space-8)}.about h2{margin:0}.about p{color:var(--color-muted);font-size:var(--text-lg);line-height:1.65}.about p+p{margin-top:var(--space-4)}.form{gap:var(--space-4);max-width:34rem;display:grid}.field{gap:var(--space-2);display:grid}.field label{letter-spacing:.24em;text-transform:uppercase;color:var(--color-accent-2);font-size:10px}.field input,.field textarea,.field select{background:var(--color-bg-2);color:var(--color-ink);border:var(--border-hair) solid var(--color-line);padding:var(--space-3) var(--space-4);min-height:48px;font:inherit;font-size:var(--text-base);border-radius:var(--radius-0)}.field input:focus-visible,.field textarea:focus-visible{border-color:var(--color-accent)}.field textarea{resize:vertical;min-height:140px}.form__fallback{color:var(--color-muted);font-size:var(--text-sm)}.formmsg{padding:var(--space-3) var(--space-4);font-size:var(--text-sm);border:var(--border-hair) solid var(--color-line)}.formmsg--ok{border-color:var(--color-accent);color:var(--color-ink)}.formmsg--err{border-color:var(--color-danger);color:var(--color-danger)}.bloglist{gap:var(--space-6);grid-template-columns:repeat(3,1fr);display:grid}.bcard{border:var(--border-hair) solid var(--color-line);background:var(--color-bg-2);transition:border-color var(--dur-fast) var(--ease-out);display:block}.bcard:hover{border-color:var(--color-accent-2)}.bcard__img img{aspect-ratio:16/10;object-fit:cover;width:100%}.bcard__b{padding:var(--space-5)}.bcard__t{font-family:var(--font-display);text-transform:uppercase;font-weight:700;font-size:var(--text-base);letter-spacing:.06em;line-height:1.25}.bcard__d{color:var(--color-muted);font-size:var(--text-sm);margin-top:var(--space-3)}.bcard__date{color:var(--color-accent-2);font-size:var(--text-xs);letter-spacing:.2em;text-transform:uppercase;margin-bottom:var(--space-3);display:block}.blog-empty{color:var(--color-muted);padding-block:var(--space-7)}.post{max-width:68ch;margin-inline:auto}.post__hero img{aspect-ratio:16/9;object-fit:cover;width:100%;margin-bottom:var(--space-6)}.sitemap-cols{gap:var(--space-7);grid-template-columns:repeat(3,1fr);display:grid}.sitemap-cols a{color:var(--color-muted);padding-block:var(--space-2);display:block}.sitemap-cols a:hover{color:var(--color-accent)}.foot{border-top:var(--border-hair) solid var(--color-line-2);background:var(--color-bg)}.foot__cross{border-block:var(--border-hair) solid var(--color-line);padding-block:var(--space-5);gap:var(--space-3) var(--space-6);font-size:var(--text-xs);letter-spacing:.16em;text-transform:uppercase;flex-wrap:wrap;justify-content:center;display:flex}.foot__cross a{color:var(--color-muted)}.foot__cross a:hover{color:var(--color-accent)}.foot__base{gap:var(--space-6);padding-block:var(--space-6);grid-template-columns:auto 1fr auto;align-items:center;display:grid}.foot__base img{width:40px;height:40px}.foot__addr{color:var(--color-muted);font-size:var(--text-sm)}.foot__addr a{color:var(--color-ink)}.foot__social{gap:var(--space-3);margin-top:var(--space-3);display:flex}.foot__social svg{width:18px;height:18px}.foot__badges{gap:var(--space-4);flex-wrap:wrap;display:flex}.badge{align-items:center;gap:var(--space-2);border:var(--border-hair) solid var(--color-line);padding:var(--space-2) var(--space-3);letter-spacing:.16em;text-transform:uppercase;color:var(--color-muted);font-size:10px;display:flex}.badge svg{width:14px;height:14px;color:var(--color-accent-2)}.foot__legal{padding-bottom:var(--space-7);color:var(--color-accent-2);font-size:var(--text-xs);text-align:center;justify-content:center;gap:var(--space-4);flex-wrap:wrap;display:flex}.disc{color:var(--color-accent-2);max-width:78ch}.rv{opacity:1}@media(prefers-reduced-motion:no-preference){.rv{opacity:0;transition:opacity var(--dur-slow) var(--ease-out),transform var(--dur-slow) var(--ease-out);transform:translateY(14px)}.rv.in{opacity:1;transform:none}}@media(max-width:1100px){.hnav,.hd__shop{display:none}.menu-trigger{display:grid}.hd__in{grid-template-columns:1fr auto 1fr}.hd__in:before{display:none}.hd__left{justify-content:flex-start}.hd__right{justify-content:flex-end}.logo{justify-self:center}.pgrid,.related{grid-template-columns:repeat(4,1fr)}.pgrid--jewel{grid-template-columns:repeat(3,1fr)}.shell{gap:var(--space-6);grid-template-columns:1fr}.rail{position:static}.usp-line{grid-template-columns:repeat(2,1fr)}.usp-line>div:nth-child(3){border-left:0}.bloglist,.sitemap-cols{grid-template-columns:repeat(2,1fr)}}@media(max-width:860px){:root{--gutter:var(--space-4)}.kw__grid,.about,.pdp{gap:var(--space-6);grid-template-columns:1fr}.about>:last-child{border-left:0;border-top:var(--border-hair) solid var(--color-line);padding-left:0;padding-top:var(--space-5)}.pgrid,.pgrid--4,.pgrid--jewel,.related{grid-template-columns:repeat(2,1fr)}.sec{padding-block:var(--space-7)}.index__grid{padding-block:var(--space-7);grid-template-columns:1fr}.index__seam{height:1px;margin-block:var(--space-6)}.index__house,.index__house:first-child,.index__house:last-child,.index__house:first-child .index__list a{justify-content:flex-start}.foot__base{gap:var(--space-5);grid-template-columns:1fr}.specs,.bloglist,.sitemap-cols{grid-template-columns:repeat(2,1fr)}.hero__media img{object-position:66% center;height:clamp(380px,56vh,520px)}.hero__scrim{background:linear-gradient(180deg,var(--color-bg) 0%,var(--color-bg) 58%,var(--color-bg) 100%)}@supports (color:color-mix(in lab,red,red)){.hero__scrim{background:linear-gradient(180deg,color-mix(in srgb,var(--color-bg) 30%,transparent) 0%,color-mix(in srgb,var(--color-bg) 88%,transparent) 58%,var(--color-bg) 100%)}}.hero__copy{padding-bottom:var(--space-6);align-items:flex-end}.pgrid:hover .card,.related:hover .card{opacity:1;transform:none}}@media(max-width:420px){.logo{padding-inline:var(--space-3)}.logo img,.hd.is-scrolled .logo img{width:64px;height:64px}.usp-line{grid-template-columns:1fr}.usp-line>div{border-left:0;border-top:var(--border-hair) solid var(--color-line)}.usp-line>div:first-child{border-top:0}.card__b{padding:0 var(--space-3) var(--space-3)}.bloglist,.sitemap-cols,.specs{grid-template-columns:1fr}}@media(hover:none){.pgrid:hover .card,.related:hover .card{opacity:1;transform:none}.pgrid.is-touch:hover .card,.related.is-touch:hover .card{opacity:.34;transform:scale(.985)}.pgrid.is-touch:hover .card.is-lit,.related.is-touch:hover .card.is-lit{opacity:1;transform:scale(1)}.card:hover .pi-2{opacity:0}}@media(prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important}}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}



/* =======================================================================
   2. WORDPRESS-ONLY SURFACES
   -----------------------------------------------------------------------
   Nothing below has a static counterpart, so nothing below carries a
   parity constraint (PROMPT #2 §COMMERCE). These rules only have to look
   native to the HOUSE SEAM design. Pure-CSS skinning is preferred: the
   only Woo template overrides this theme ships are archive-product.php
   and single-product.php, and both exist for BODY PARITY, never styling.
   ======================================================================= */

/* ---- header bag / account links -------------------------------------
   The static masthead has no cart affordance at all (the validation phase
   had no cart). These are NEW links, documented in THEME-NOTES.md
   §Deviations, and are styled as another .hnav-weight item so the split
   masthead keeps its balance. */
.hd__util { display: flex; align-items: center; gap: var(--space-4); }
.hd__bag, .hd__acct {
  font-size: var(--text-xs); letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--color-muted); white-space: nowrap; padding-block: var(--space-2);
  transition: color var(--dur-fast) var(--ease-out);
}
.hd__bag:hover, .hd__acct:hover { color: var(--color-ink); }
.hd__bagn { color: var(--color-accent); font-variant-numeric: tabular-nums; }
@media (max-width: 1100px) { .hd__acct { display: none; } }

/* ---- NDM Product Add-ons 1.1.1 -------------------------------------
   .chips / .chip / .chip[aria-pressed] / .mono-lbl / .ndm-pa-label are
   already styled in §1 (the static BuyBox emitted the identical markup on
   purpose). The plugin shipped here is 1.1.1, not the 1.0.0 the prompt's
   contract was written against, so it can additionally render a DROPDOWN
   (style "auto" picks it when any label is longer than 14 characters or
   there are more than 8 options — which is exactly what the rings /
   pendants / bracelet scales do) plus a per-option price note. Both are
   skinned here so the plugin never falls back to its neutral styling. */
.ndm-pa-select {
  width: 100%; max-width: 340px;
  padding: var(--space-3) var(--space-4); min-height: 48px;
  background: var(--color-bg); color: var(--color-ink);
  border: var(--border-hair) solid var(--color-line-2); border-radius: var(--radius-0);
  font: inherit; font-size: var(--text-sm); letter-spacing: 0.06em; cursor: pointer;
}
.ndm-pa-select:focus-visible { border-color: var(--color-accent); }
.ndm-pa-select option { background: var(--color-bg); color: var(--color-ink); }
.ndm-pa-price-note {
  margin-top: var(--space-3); font-size: var(--text-xs);
  letter-spacing: 0.16em; text-transform: uppercase; color: var(--color-accent);
}

/* ---- Woo notices ---- */
.woocommerce-notices-wrapper { display: grid; gap: var(--space-3); }
.woocommerce-message, .woocommerce-info, .woocommerce-error, .woocommerce-noreviews {
  list-style: none;
  padding: var(--space-4) var(--space-5);
  border: var(--border-hair) solid var(--color-line-2);
  background: var(--color-bg-2);
  color: var(--color-ink);
  font-size: var(--text-sm);
  display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-3);
  margin-block: var(--space-4);
}
.woocommerce-message { border-inline-start: 2px solid var(--color-accent); }
.woocommerce-info { border-inline-start: 2px solid var(--color-accent-2); }
.woocommerce-error { border-inline-start: 2px solid var(--color-danger); color: var(--color-danger); }
.woocommerce-error li { list-style: none; }
.woocommerce-message .button, .woocommerce-info .button { margin-inline-start: auto; }
/* Woo absolutely-positions its notice glyph at left:1.5em and reserves
   padding-left:3.5em for it. This theme sets symmetric padding, so the
   glyph would land on the first words. The 2px accent/danger edge above
   already carries the success-vs-error meaning. */
.woocommerce-message::before, .woocommerce-info::before,
.woocommerce-error::before, .woocommerce-noreviews::before { content: none; }
/* .woocommerce-error is a <ul>: checkout validation emits one <li> per
   failed field, and as a flex row they would sit side by side. */
.woocommerce-error { flex-direction: column; align-items: stretch; gap: var(--space-2); }

/* ---- Woo buttons ---- */
.woocommerce a.button, .woocommerce button.button, .woocommerce input.button,
.woocommerce a.button.alt, .woocommerce button.button.alt, .woocommerce input.button.alt {
  display: inline-flex; align-items: center; justify-content: center; gap: var(--space-3);
  min-height: 48px; padding: var(--space-3) var(--space-6);
  border: var(--border-hair) solid var(--color-line-2); border-radius: var(--radius-0);
  font-size: var(--text-xs); letter-spacing: 0.2em; text-transform: uppercase; font-weight: 500;
  background: transparent; color: var(--color-ink); cursor: pointer;
  transition: background var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out),
              border-color var(--dur-fast) var(--ease-out);
}
.woocommerce a.button:hover, .woocommerce button.button:hover, .woocommerce input.button:hover {
  border-color: var(--color-accent); color: var(--color-accent);
}
.woocommerce a.button.alt, .woocommerce button.button.alt, .woocommerce input.button.alt,
.woocommerce #payment #place_order, .woocommerce .checkout-button {
  background: var(--color-accent); border-color: var(--color-accent); color: var(--color-bg);
}
.woocommerce a.button.alt:hover, .woocommerce button.button.alt:hover,
.woocommerce input.button.alt:hover, .woocommerce #payment #place_order:hover,
.woocommerce .checkout-button:hover {
  background: var(--color-ink); border-color: var(--color-ink); color: var(--color-bg);
}
.woocommerce button.button:disabled, .woocommerce button.button[disabled] { opacity: 0.4; cursor: not-allowed; }

/* ---- commerce page wrapper -----------------------------------------
   Cart / Checkout / My Account are ordinary WP pages and render through
   page.php. `.prose` (68ch measure, centred, muted colour) is for policy
   copy and would crush the commerce UI into a narrow low-contrast column,
   so page.php emits `.commerce` on those routes instead. */
.commerce { max-width: none; margin-inline: 0; color: var(--color-ink); }

/* ---- neutralise woocommerce-layout.css -----------------------------
   Woo's layout sheet is float + percentage based. It stays enqueued (it
   also carries the small-screen table behaviour we want), but this theme
   lays these surfaces out with grid, and left alone Woo's rules apply
   INSIDE the grid tracks: checkout columns collapse to 48% of a track,
   form rows to 47% of that, .cart_totals floats right at 48%. Only the
   LAYOUT declarations are reset; the cosmetics stay. */
.woocommerce .col2-set .col-1, .woocommerce .col2-set .col-2,
.woocommerce-page .col2-set .col-1, .woocommerce-page .col2-set .col-2,
.woocommerce form .form-row, .woocommerce form .form-row-first,
.woocommerce form .form-row-last, .woocommerce form .form-row-wide,
.woocommerce .cart-collaterals, .woocommerce .cart-collaterals .cart_totals,
.woocommerce-page .cart-collaterals, .woocommerce-page .cart-collaterals .cart_totals,
.woocommerce .woocommerce-checkout-review-order {
  float: none; width: auto;
}
/* Woo clearfixes its float containers with ::before/::after {content:" ";
   display:table}. Harmless around floats — but in the containers this
   theme converts to grid they become real grid items and take cell 1,
   pushing billing into column 2 and shipping onto row 2. */
.woocommerce-checkout #customer_details::before,
.woocommerce-checkout #customer_details::after,
.woocommerce-cart .cart-collaterals::before,
.woocommerce-cart .cart-collaterals::after,
.woocommerce-billing-fields__field-wrapper::before,
.woocommerce-billing-fields__field-wrapper::after,
.woocommerce-shipping-fields__field-wrapper::before,
.woocommerce-shipping-fields__field-wrapper::after,
.woocommerce-address-fields__field-wrapper::before,
.woocommerce-address-fields__field-wrapper::after,
.woocommerce form .form-row::before,
.woocommerce form .form-row::after,
.woocommerce .cart .coupon::before,
.woocommerce .cart .coupon::after { content: none; }

@media (min-width: 640px) {
  .woocommerce-billing-fields__field-wrapper,
  .woocommerce-shipping-fields__field-wrapper,
  .woocommerce-address-fields__field-wrapper {
    display: grid; grid-template-columns: 1fr 1fr; column-gap: var(--space-4);
  }
  .woocommerce-billing-fields__field-wrapper > .form-row-wide,
  .woocommerce-shipping-fields__field-wrapper > .form-row-wide,
  .woocommerce-address-fields__field-wrapper > .form-row-wide { grid-column: 1 / -1; }
}

/* ---- cart ---- */
.woocommerce-cart-form, .woocommerce-cart .cart-collaterals { color: var(--color-ink); }
.woocommerce-cart .cart-collaterals { display: flex; justify-content: flex-end; margin-top: var(--space-6); }
.woocommerce-cart .cart-collaterals .cart_totals { width: 100%; max-width: 420px; }
.woocommerce table.shop_table {
  width: 100%; border: var(--border-hair) solid var(--color-line); border-collapse: collapse;
  font-size: var(--text-sm); margin-bottom: var(--space-6);
}
.woocommerce table.shop_table th {
  text-align: start; padding: var(--space-4);
  font-size: 10px; letter-spacing: 0.24em; text-transform: uppercase;
  color: var(--color-accent-2); font-weight: 500;
  border-bottom: var(--border-hair) solid var(--color-line);
}
.woocommerce table.shop_table td {
  padding: var(--space-4); border-bottom: var(--border-hair) solid var(--color-line); vertical-align: middle;
}
/* the product photography is white — the cart thumb keeps the plate */
.woocommerce table.shop_table img { width: 68px; background: var(--color-plate); padding: 4px; }
.woocommerce table.shop_table .product-name a { color: var(--color-ink); }
.woocommerce table.shop_table .product-name a:hover { color: var(--color-accent); }
.woocommerce .cart_item .amount, .woocommerce .order-total .amount {
  color: var(--color-accent); font-family: var(--font-display); font-weight: 600;
  font-variant-numeric: tabular-nums;
}

/* ADD-ONS CONTRACT ITEM 5 — the chosen option renders in Woo's item-meta
   rows. These MUST stay visible in the cart and the order review; never
   collapse them to display:none. */
.woocommerce-cart .product-name dl.variation,
.woocommerce-checkout .product-name dl.variation,
.wc-item-meta {
  display: block; margin: var(--space-2) 0 0; padding: 0;
  font-size: var(--text-xs); letter-spacing: 0.1em; color: var(--color-muted);
}
.woocommerce-cart .product-name dl.variation dt,
.woocommerce-checkout .product-name dl.variation dt,
.wc-item-meta li strong { font-weight: 500; display: inline; color: var(--color-accent-2); }
.woocommerce-cart .product-name dl.variation dd,
.woocommerce-checkout .product-name dl.variation dd,
.wc-item-meta li p { display: inline; margin: 0; }
.wc-item-meta, .wc-item-meta li { list-style: none; }

.woocommerce .quantity input.qty {
  width: 68px; height: 48px; padding: 0 var(--space-2); text-align: center;
  background: var(--color-bg-2); color: var(--color-ink);
  border: var(--border-hair) solid var(--color-line-2); border-radius: var(--radius-0);
  font: inherit;
}
.woocommerce .cart .coupon { display: flex; gap: var(--space-3); flex-wrap: wrap; align-items: center; }
.woocommerce .cart input#coupon_code {
  min-width: 200px; min-height: 48px; padding: var(--space-3) var(--space-4);
  background: var(--color-bg-2); color: var(--color-ink);
  border: var(--border-hair) solid var(--color-line-2); border-radius: var(--radius-0); font: inherit;
}
.woocommerce .cart_totals {
  border: var(--border-hair) solid var(--color-line); padding: var(--space-5); background: var(--color-bg-2);
}
.woocommerce .cart_totals h2 {
  font-family: var(--font-display); font-weight: 700; text-transform: uppercase;
  font-size: var(--text-lg); letter-spacing: 0.16em; margin-bottom: var(--space-4);
}
.woocommerce-cart .wc-proceed-to-checkout { margin-top: var(--space-5); }
.woocommerce-cart .wc-proceed-to-checkout .checkout-button { width: 100%; }
.woocommerce .cart-empty, .woocommerce .return-to-shop { text-align: center; }
.woocommerce .cart-empty { color: var(--color-muted); margin-block: var(--space-7) var(--space-5); }

/* ---- checkout / account forms ---- */
.woocommerce form .form-row { display: grid; gap: var(--space-2); margin-bottom: var(--space-4); }
.woocommerce form .form-row label, .woocommerce-account label {
  font-size: 10px; letter-spacing: 0.24em; text-transform: uppercase; color: var(--color-accent-2);
}
.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce form .form-row select,
.woocommerce-account input.input-text,
.select2-container .select2-selection--single {
  width: 100%; padding: var(--space-3) var(--space-4); min-height: 48px;
  background: var(--color-bg-2); color: var(--color-ink);
  border: var(--border-hair) solid var(--color-line); border-radius: var(--radius-0);
  font: inherit; font-size: var(--text-base);
}
.woocommerce form .form-row input.input-text:focus-visible,
.woocommerce form .form-row textarea:focus-visible,
.woocommerce form .form-row select:focus-visible { border-color: var(--color-accent); }
.woocommerce form .form-row .required { color: var(--color-accent); border: 0; }
.select2-container--default .select2-selection--single .select2-selection__rendered { color: var(--color-ink); line-height: 28px; }
.select2-dropdown { background: var(--color-bg-2); border-color: var(--color-line-2); color: var(--color-ink); }
.select2-container--default .select2-results__option--highlighted[aria-selected] { background: var(--color-accent); color: var(--color-bg); }

.woocommerce-checkout h3, .woocommerce-checkout h2, .woocommerce-account h2 {
  font-family: var(--font-display); font-weight: 700; text-transform: uppercase;
  font-size: var(--text-xl); letter-spacing: 0.08em; margin-block: var(--space-6) var(--space-4);
}
.woocommerce-checkout #customer_details { display: grid; gap: var(--space-6); }
@media (min-width: 900px) { .woocommerce-checkout #customer_details { grid-template-columns: 1fr 1fr; } }
.woocommerce-checkout-review-order {
  border: var(--border-hair) solid var(--color-line); padding: var(--space-5); background: var(--color-bg-2);
}
.woocommerce-checkout #payment { background: transparent; border-radius: 0; }
.woocommerce-checkout #payment ul.payment_methods {
  list-style: none; padding: 0; border-bottom: var(--border-hair) solid var(--color-line);
  margin-bottom: var(--space-5);
}
.woocommerce-checkout #payment ul.payment_methods li { margin-bottom: var(--space-3); }
.woocommerce-checkout #payment div.payment_box {
  background: var(--color-bg); color: var(--color-muted); font-size: var(--text-sm);
  padding: var(--space-4); border-radius: var(--radius-0);
}
.woocommerce-checkout #payment div.payment_box::before { display: none; }
.woocommerce-terms-and-conditions-wrapper { font-size: var(--text-sm); color: var(--color-muted); }

/* ---- my account ---- */
.woocommerce-account .woocommerce { display: grid; gap: var(--space-6); }
@media (min-width: 900px) { .woocommerce-account .woocommerce { grid-template-columns: 220px 1fr; } }
.woocommerce-MyAccount-navigation ul { list-style: none; padding: 0; display: grid; gap: var(--space-2); }
.woocommerce-MyAccount-navigation a {
  display: block; padding: var(--space-3) 0; min-height: 44px; color: var(--color-muted);
  font-size: var(--text-sm); border-bottom: var(--border-hair) solid var(--color-line);
}
.woocommerce-MyAccount-navigation a:hover { color: var(--color-ink); }
.woocommerce-MyAccount-navigation li.is-active a { color: var(--color-accent); border-bottom-color: var(--color-accent); }
.woocommerce-form-login, .woocommerce-form-register {
  border: var(--border-hair) solid var(--color-line); padding: var(--space-5);
  max-width: 520px; background: var(--color-bg-2);
}

/* ---- misc Woo chrome ---- */
.woocommerce .woocommerce-breadcrumb { display: none; }   /* ndm_breadcrumbs() renders ours */
.woocommerce .star-rating { color: var(--color-accent); }
.woocommerce div.product form.cart { margin: 0; }
.woocommerce-privacy-policy-text, .woocommerce-privacy-policy-text a { color: var(--color-muted); font-size: var(--text-sm); }
/* Woo prints its own price wrapper on some surfaces; keep it on the scale
   the ported .price / .pdp__price rules already establish. */
.woocommerce .price, .woocommerce .amount { font-family: var(--font-display); font-variant-numeric: tabular-nums; }

/* =======================================================================
   3. WOOCOMMERCE DEFECT FIXES
   -----------------------------------------------------------------------
   Each rule below was found by reading WooCommerce 11.0.0's own stylesheets
   against this theme's tokens, then confirming the clash on the running
   test site. They are grouped separately from §2 so a future base-theme
   extraction can lift them wholesale — every one of them is generic
   WooCommerce-on-a-dark-theme repair, nothing store-specific.
   ======================================================================= */

/* ---- 3.1 nested shop_table double border --------------------------
   .cart_totals and .woocommerce-checkout-review-order are BOXES this theme
   draws a hairline around (§2). Each contains a table that also matches
   `table.shop_table`, so the generic border + 32px bottom margin painted a
   second frame inside the first and left a gap under it. */
.woocommerce .cart_totals table.shop_table,
.woocommerce .woocommerce-checkout-review-order table.shop_table {
  border: 0;
  margin-bottom: 0;
}
.woocommerce .cart_totals table.shop_table td,
.woocommerce .cart_totals table.shop_table th,
.woocommerce .woocommerce-checkout-review-order table.shop_table td,
.woocommerce .woocommerce-checkout-review-order table.shop_table th {
  padding-inline: 0;
}
/* The last row of a totals table sits on the box's own edge. */
.woocommerce .cart_totals table.shop_table tr:last-child td,
.woocommerce .cart_totals table.shop_table tr:last-child th { border-bottom: 0; }

/* ---- 3.2 the order-review table must never force a sideways scroll --
   woocommerce-checkout-review-order-table does NOT carry
   `shop_table_responsive`, so it stays a real table at 375px. A long product
   name plus its Option meta row pushed it past the viewport. */
.woocommerce .woocommerce-checkout-review-order-table { table-layout: fixed; }
.woocommerce .woocommerce-checkout-review-order-table th,
.woocommerce .woocommerce-checkout-review-order-table td { overflow-wrap: anywhere; }

/* ---- 3.3 the mobile zebra stripe is invisible on this ground --------
   woocommerce-smallscreen.css stripes alternate rows with
   `rgba(0,0,0,.025)` — black at 2.5% over a #0A0A0B page, i.e. nothing.
   The stripe is what separates one stacked cart item from the next on a
   phone, so it is re-tinted upward instead of being dropped. */
@media (max-width: 768px) {
  .woocommerce table.shop_table_responsive tr:nth-child(2n) td,
  .woocommerce-page table.shop_table_responsive tr:nth-child(2n) td {
    background-color: rgba(255, 255, 255, 0.028);
  }
}

/* ---- 3.4 responsive-table row labels in the design's label idiom ----
   On small screens Woo replaces the hidden <thead> with
   `td::before { content: attr(data-title) ": " }`. Left as-is that label is
   bold body text at full ink; every other label in this store is small,
   letter-spaced and accent-2. */
@media (max-width: 768px) {
  .woocommerce table.shop_table_responsive tr td::before,
  .woocommerce-page table.shop_table_responsive tr td::before {
    font-family: var(--font-body);
    font-weight: 500;
    font-size: 10px;
    letter-spacing: 0.24em;
    text-transform: uppercase;
    color: var(--color-accent-2);
    line-height: 2.4;
  }
  /* stacked cells earn their own rhythm rather than the desktop cell pad */
  .woocommerce table.shop_table_responsive tr td { padding: var(--space-3) var(--space-4); }
  .woocommerce table.shop_table_responsive tr { border-bottom: var(--border-hair) solid var(--color-line); }
  .woocommerce table.shop_table_responsive tr td { border-bottom: 0; }
}

/* ---- 3.5 the coupon row overflowed at 375px ------------------------
   woocommerce-smallscreen.css sizes the coupon field and its button at 48%
   each. §2 gave the field `min-width: 200px` for the desktop layout, and at
   375px (≈343px of usable width) that min-width beat the 48%, so the two
   controls totalled ~365px and pushed the page sideways. Below 768px the
   two controls stack to full width instead. */
@media (max-width: 768px) {
  .woocommerce .cart .coupon { display: block; }
  .woocommerce #content table.cart td.actions .coupon .input-text,
  .woocommerce table.cart td.actions .coupon .input-text,
  .woocommerce-page table.cart td.actions .coupon .input-text,
  .woocommerce #content table.cart td.actions .coupon .button,
  .woocommerce table.cart td.actions .coupon .button,
  .woocommerce-page table.cart td.actions .coupon .button {
    width: 100%;
    float: none;
    margin-bottom: var(--space-3);
  }
  .woocommerce .cart input#coupon_code { min-width: 0; }
}

/* ---- 3.6 the AJAX block overlay flashed white ----------------------
   Woo blocks the cart/checkout during every AJAX recalculation with
   jQuery blockUI, whose overlay colour is written as an INLINE style
   (`background:#fff; opacity:.6`) — so this is the one place the skin
   legitimately needs !important. Its spinner is a dark SVG, invisible on
   the dark ground, so it is inverted. */
.blockUI.blockOverlay {
  background: var(--color-bg) !important;
  opacity: 0.72 !important;
}
.blockUI.blockOverlay::before { filter: invert(1); }

/* ---- 3.7 assorted small-screen commerce polish --------------------- */
@media (max-width: 768px) {
  /* Woo hides the cart thumbnail column on mobile; the remove control then
     has no anchor, so give it the row's leading edge. */
  .woocommerce table.shop_table_responsive tr td.product-remove { text-align: left !important; }
  .woocommerce table.shop_table_responsive tr td.product-remove .remove { font-size: var(--text-xl); }

  /* the totals box is the page's last block — let it breathe above the footer */
  .woocommerce-cart .cart-collaterals .cart_totals { max-width: none; }

  /* Woo forces #place_order full width; match the theme's control height */
  .woocommerce #payment #place_order { min-height: 52px; }

  /* the quantity control is a touch target */
  .woocommerce .quantity input.qty { width: 88px; }
}

/* ---- 3.8 select2 (country / state) on a dark ground ----------------
   Woo enqueues select2 for the address selects; its default skin is a white
   field with a light dropdown, which reads as a hole in the page. */
.select2-container--default .select2-selection--single { height: auto; min-height: 48px; }
.select2-container--default .select2-selection--single .select2-selection__arrow { height: 46px; }
.select2-container--default .select2-search--dropdown .select2-search__field {
  background: var(--color-bg); color: var(--color-ink);
  border: var(--border-hair) solid var(--color-line-2);
}
.select2-container--default .select2-results__option { color: var(--color-ink); }
.select2-container--open .select2-dropdown { border-color: var(--color-accent-2); }

/* =======================================================================
   4. SKIN OVERRIDE — full-width long-form content
   -----------------------------------------------------------------------
   DELIBERATE DIVERGENCE FROM THE STATIC BUILD (operator request, recorded
   in THEME-NOTES.md §Deviations).

   §1 ships the static site's rule verbatim:
       .prose { max-width: 68ch; margin-inline: auto }
   which renders the stored body copy as a ~680px column centred in a
   1425px wrap. That measure is kept for the POLICY pages, where it is a
   reading aid, but the homepage's deferred body and the category intro are
   the store's long-form SEO surfaces and are asked to run the full width
   of their container instead.

   Scope is exactly those two blocks — .home-body (front-page.php) and
   .catintro (woocommerce/archive-product.php). page.php's plain `.prose`
   is untouched, so /about-us/, /terms/ and the rest keep the 68ch measure.

   The block stays CENTRED (margin-inline: auto is retained and is a no-op
   once the block fills its container). Body text stays left-aligned:
   centring paragraphs of long-form copy would hurt both readability and
   the design. Flip `text-align` here if centred text is what is wanted.

   Parity note: this changes rendering against the static site on those two
   surfaces only. It touches no head node, no heading, no link and no image
   URL, so head parity (807/807) and the body gate (808/808) are unaffected
   — both were re-run after this change.
   ======================================================================= */
.prose.home-body,
.prose.catintro {
  max-width: none;
  margin-inline: auto;
}

/* Everything inside those blocks inherits the new width: paragraphs, the
   FAQ <details>/<summary> rows, headings and lists all run edge to edge of
   the wrap rather than stopping at the old 68ch column. */
.prose.home-body > *,
.prose.catintro > * { max-width: none; }
