/** Shopify CDN: Minification failed

Line 2152:48 Expected "}" to go with "{"

**/
/* ============================================================================
   ROWMAN — shopify layer
   Additive only. Every rule here exists because Shopify requires a component
   the prototype did not contain (mobile navigation, search, focus states,
   empty image states, native comments) or because an accessibility gap in
   the source had to be closed. Nothing here overrides approved design values.
   Built entirely from existing ROWMAN primitives: glass panel, hairline rule,
   mono micro-label, fuchsia accent, Greek cross.
   ============================================================================ */

/* ═══════════════════ 1. MOBILE NAVIGATION DRAWER ═══════════════════
   Mirrors .cart-drawer exactly: same glass, same border, same shadow,
   same cubic-bezier, same clinical grid texture. Slides from the left. */

.nav-toggle{
  display: none;
  background: none; border: none; padding: 6px;
  color: var(--ink); place-items: center;
  transition: color 0.3s ease, transform 0.3s ease;
}
.nav-toggle:hover{ color: var(--fuchsia); }
.nav-toggle svg{ display: block; }
.nav-toggle[aria-expanded="true"] svg{ transform: rotate(45deg); }
.nav-toggle svg{ transition: transform 0.4s cubic-bezier(.2,.7,.2,1); }

.nav-overlay{
  position: fixed; inset: 0; z-index: 90;
  background: rgba(0,0,0,0.55);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  opacity: 0; pointer-events: none;
  transition: opacity 0.4s ease;
}
.nav-overlay.is-open{ opacity: 1; pointer-events: auto; }

.nav-drawer{
  position: fixed; top: 0; left: 0; bottom: 0;
  width: 420px; max-width: 100vw;
  z-index: 100;
  background: rgba(10,10,14,0.78);
  backdrop-filter: blur(24px) saturate(125%);
  -webkit-backdrop-filter: blur(24px) saturate(125%);
  border-right: 1px solid rgba(255,255,255,0.14);
  box-shadow: 40px 0 80px -20px rgba(0,0,0,0.8), inset -1px 0 0 rgba(255,255,255,0.05);
  transform: translateX(-100%);
  transition: transform 0.5s cubic-bezier(.2,.7,.2,1);
  display: flex; flex-direction: column;
}
.nav-drawer.is-open{ transform: translateX(0); }

.nav-drawer::before{
  content:""; position:absolute; inset:0; pointer-events:none; opacity:0.4;
  background-image:
    linear-gradient(rgba(255,255,255,0.02) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,0.02) 1px, transparent 1px);
  background-size: 26px 26px;
}

.nav-drawer-head{
  display: flex; justify-content: space-between; align-items: center;
  padding: 16px 22px;
  border-bottom: 1px solid rgba(255,255,255,0.10);
  background: rgba(255,255,255,0.02);
  position: relative; z-index: 1;
}
.nav-drawer-id{
  display: flex; align-items: center; gap: 10px;
  font-family: var(--mono); font-size: 9px; letter-spacing: 0.2em;
  text-transform: uppercase; color: var(--ink);
}
.nav-drawer-close{
  background: none; border: none; padding: 6px;
  color: var(--ink-dim); transition: color 0.3s ease;
  display: grid; place-items: center;
}
.nav-drawer-close:hover{ color: var(--fuchsia); }

.nav-drawer-body{
  flex: 1; overflow-y: auto;
  padding: 30px 22px 18px;
  position: relative; z-index: 1;
  scrollbar-width: thin;
  scrollbar-color: rgba(255,255,255,0.15) transparent;
}
.nav-drawer-body::-webkit-scrollbar{ width: 6px; }
.nav-drawer-body::-webkit-scrollbar-thumb{ background: rgba(255,255,255,0.15); }

.nav-drawer-eyebrow{
  display: flex; align-items: center; gap: 8px;
  font-family: var(--mono); font-size: 9px; letter-spacing: 0.32em;
  text-transform: uppercase; color: var(--ink-dim);
  margin-bottom: 22px;
}
.nav-drawer-eyebrow .dot{
  width: 6px; height: 6px; border-radius: 50%;
  background: var(--fuchsia);
  box-shadow: 0 0 6px rgba(255,30,90,0.55);
  animation: paPulse 2.2s ease-in-out infinite;
}

.nav-drawer-group{ margin-bottom: 26px; }
.nav-drawer-group-title{
  font-family: var(--mono); font-size: 8.5px; letter-spacing: 0.28em;
  text-transform: uppercase; color: var(--accent-muted);
  padding-bottom: 10px; margin-bottom: 4px;
  border-bottom: 1px solid var(--line);
}
.nav-drawer-link{
  display: flex; align-items: baseline; gap: 12px;
  padding: 14px 2px;
  border-bottom: 1px solid var(--line);
  color: var(--ink); text-decoration: none;
  font-family: var(--serif); font-weight: 300; font-size: 21px;
  letter-spacing: -0.01em; line-height: 1;
  min-height: 48px;
  transition: color 0.3s ease, padding-left 0.35s cubic-bezier(.2,.7,.2,1);
}
.nav-drawer-link:hover,
.nav-drawer-link:focus-visible{ color: var(--fuchsia); padding-left: 8px; }
.nav-drawer-link .nav-drawer-num{
  font-family: var(--mono); font-size: 8.5px; letter-spacing: 0.16em;
  color: var(--ink-low); flex: 0 0 auto;
}
.nav-drawer-link[aria-current="page"]{ color: var(--fuchsia); }
.nav-drawer-link[aria-current="page"] .nav-drawer-num{ color: var(--fuchsia); }

.nav-drawer-foot{
  padding: 14px 22px;
  border-top: 1px solid rgba(255,255,255,0.10);
  background: rgba(255,255,255,0.02);
  display: flex; justify-content: space-between; align-items: center;
  font-family: var(--mono); font-size: 8.5px; letter-spacing: 0.2em;
  text-transform: uppercase; color: var(--ink-low);
  position: relative; z-index: 1;
}
.nav-drawer-foot .stamp{ color: var(--fuchsia); }

body.nav-open, body.cart-open, body.search-open, body.modal-open{ overflow: hidden; }

@media (max-width: 720px){
  .nav-toggle{ display: grid; }
}

/* ═══════════════════ 2. SEARCH OVERLAY + PREDICTIVE SEARCH ═══════════════════
   Built from the clinical input treatment used on the login and contact forms.
   Predictive results reuse the chamber card grid and the .cf-empty state. */

.search-toggle{
  background: none; border: none; padding: 4px;
  color: inherit; display: inline-grid; place-items: center;
  transition: color 0.3s ease;
}
.search-toggle:hover{ color: var(--fuchsia); }

.search-overlay{
  position: fixed; inset: 0; z-index: 120;
  background: rgba(6,5,9,0.86);
  backdrop-filter: blur(26px) saturate(120%);
  -webkit-backdrop-filter: blur(26px) saturate(120%);
  opacity: 0; pointer-events: none;
  transition: opacity 0.4s ease;
  display: flex; flex-direction: column;
  overflow-y: auto;
}
.search-overlay.is-open{ opacity: 1; pointer-events: auto; }

.search-overlay::before{
  content:""; position:absolute; inset:0; pointer-events:none; opacity:0.35;
  background-image:
    linear-gradient(rgba(255,255,255,0.02) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,0.02) 1px, transparent 1px);
  background-size: 26px 26px;
}

.search-head{
  display: flex; justify-content: space-between; align-items: center;
  padding: 18px 40px;
  border-bottom: 1px solid rgba(255,255,255,0.10);
  position: relative; z-index: 1;
}
.search-head-id{
  display: flex; align-items: center; gap: 10px;
  font-family: var(--mono); font-size: 9px; letter-spacing: 0.2em;
  text-transform: uppercase; color: var(--ink-dim);
}
.search-close{
  background: none; border: none; padding: 6px;
  color: var(--ink-dim); transition: color 0.3s ease;
  display: grid; place-items: center;
}
.search-close:hover{ color: var(--fuchsia); }

.search-inner{
  position: relative; z-index: 1;
  width: 100%; max-width: 1100px; margin: 0 auto;
  padding: 70px 40px 90px;
}
.search-field-wrap{ position: relative; margin-bottom: 10px; }
.search-field-label{
  display: flex; align-items: center; gap: 10px;
  font-family: var(--mono); font-size: 9px; letter-spacing: 0.3em;
  text-transform: uppercase; color: var(--ink-low);
  margin-bottom: 16px;
}
.search-input{
  width: 100%;
  background: transparent; border: none; outline: none;
  color: var(--ink);
  font-family: var(--serif); font-weight: 300;
  font-size: clamp(30px, 5vw, 58px); line-height: 1.05;
  letter-spacing: -0.025em;
  padding: 6px 0 18px;
  -webkit-appearance: none; appearance: none;
}
.search-input::placeholder{ color: rgba(180,174,184,0.35); }
.search-input::-webkit-search-cancel-button{ display: none; }
.search-underline{
  height: 1px; background: var(--line-strong);
  position: relative; overflow: hidden;
}
.search-underline::after{
  content:""; position:absolute; inset:0;
  background: linear-gradient(90deg, transparent, var(--fuchsia), transparent);
  transform: translateX(-100%);
}
.search-field-wrap:focus-within .search-underline::after{
  animation: ctaEdgeSweep 1.6s ease-in-out infinite;
}
.search-hint{
  display: flex; justify-content: space-between; gap: 20px;
  font-family: var(--mono); font-size: 8.5px; letter-spacing: 0.2em;
  text-transform: uppercase; color: var(--ink-low);
  padding-top: 14px;
}

.search-results{ margin-top: 54px; }
.search-results-head{
  display: flex; align-items: center; justify-content: space-between;
  gap: 20px; padding-bottom: 14px; margin-bottom: 26px;
  border-bottom: 1px solid var(--line);
  font-family: var(--mono); font-size: 9px; letter-spacing: 0.28em;
  text-transform: uppercase; color: var(--ink-dim);
}
.search-results-count{ color: var(--fuchsia); }
.search-grid{
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px;
}
.search-section + .search-section{ margin-top: 46px; }
.search-article-list{ display: flex; flex-direction: column; }
.search-article-row{
  display: flex; align-items: baseline; gap: 18px;
  padding: 16px 2px; border-bottom: 1px solid var(--line);
  text-decoration: none; color: var(--ink);
  transition: color 0.3s ease, padding-left 0.35s cubic-bezier(.2,.7,.2,1);
}
.search-article-row:hover{ color: var(--fuchsia); padding-left: 8px; }
.search-article-row .sar-tag{
  font-family: var(--mono); font-size: 8.5px; letter-spacing: 0.2em;
  text-transform: uppercase; color: var(--ink-low); flex: 0 0 110px;
}
.search-article-row .sar-title{
  font-family: var(--serif); font-weight: 300; font-size: 20px; letter-spacing: -0.01em;
}
.search-loading{
  font-family: var(--mono); font-size: 9px; letter-spacing: 0.28em;
  text-transform: uppercase; color: var(--ink-low);
  padding: 30px 0;
}
.search-loading .dot{
  display: inline-block; width: 5px; height: 5px; border-radius: 50%;
  background: var(--fuchsia); margin-right: 8px;
  animation: paPulse 1.2s ease-in-out infinite;
}

@media (max-width: 1024px){ .search-grid{ grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 900px){
  .search-grid{ grid-template-columns: repeat(2, 1fr); }
  .search-inner{ padding: 46px 24px 70px; }
  .search-head{ padding: 16px 20px; }
}
@media (max-width: 560px){
  .search-grid{ grid-template-columns: 1fr; }
  .search-article-row{ flex-direction: column; gap: 6px; }
  .search-article-row .sar-tag{ flex: none; }
}

/* Search results template head reuses the collection headline treatment */
.search-page{ position: relative; z-index: 2; padding: 0 40px 100px; max-width: 1500px; margin: 0 auto; }
.search-page-head{ padding: 40px 0 34px; border-bottom: 1px solid var(--line); margin-bottom: 34px; }
@media (max-width: 900px){ .search-page{ padding: 0 24px 70px; } }

/* ═══════════════════ 3. IMAGE EMPTY STATES ═══════════════════
   Every image slot in the source was a localStorage upload. Until a merchant
   supplies artwork the slot must hold its exact box, not collapse. */

.rowman-empty{
  position: relative;
  background:
    linear-gradient(135deg, rgba(255,255,255,0.035) 0%, rgba(255,255,255,0.012) 50%, rgba(255,30,90,0.05) 100%);
  border: 1px solid var(--line);
  display: grid; place-items: center;
  overflow: hidden;
}
.rowman-empty::before{
  content:""; position:absolute; inset:0; opacity:0.5;
  background-image:
    linear-gradient(rgba(255,255,255,0.025) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,0.025) 1px, transparent 1px);
  background-size: 22px 22px;
}
.rowman-empty-mark{
  position: relative; z-index: 1;
  display: flex; flex-direction: column; align-items: center; gap: 10px;
  text-align: center; padding: 16px;
}
.rowman-empty-cross{
  width: 22px; height: 22px; opacity: 0.35; color: var(--ink-low);
}
.rowman-empty-label{
  font-family: var(--mono); font-size: 8px; letter-spacing: 0.26em;
  text-transform: uppercase; color: var(--ink-low);
  opacity: 0.7; max-width: 200px; line-height: 1.7;
}
.rowman-empty--fill{ position: absolute; inset: 0; }

/* ═══════════════════ 4. NATIVE ARTICLE COMMENTS ═══════════════════
   Shopify's comment form replaces the prototype's localStorage store.
   Styled to the existing .ja-comments system. */

.ja-comment-status{
  display: flex; align-items: center; gap: 10px;
  font-family: var(--mono); font-size: 9px; letter-spacing: 0.22em;
  text-transform: uppercase; color: var(--ink-dim);
  padding: 14px 16px; margin-bottom: 22px;
  border: 1px solid var(--line);
  background: rgba(255,255,255,0.02);
}
.ja-comment-status .dot{
  width: 6px; height: 6px; border-radius: 50%;
  background: var(--fuchsia); box-shadow: 0 0 6px rgba(255,30,90,0.55);
}
.ja-comment-status.is-error{ border-color: rgba(255,30,90,0.4); }
.ja-comment-errors{ list-style: none; margin: 0; padding: 0; }
.ja-comment-errors li{
  font-family: var(--mono); font-size: 9px; letter-spacing: 0.16em;
  text-transform: uppercase; color: var(--fuchsia); padding: 3px 0;
}
.ja-comment-fields{ display: grid; grid-template-columns: 1fr 1fr; gap: 18px; margin-bottom: 18px; }
@media (max-width: 640px){ .ja-comment-fields{ grid-template-columns: 1fr; } }
.ja-comment-moderated{
  font-family: var(--mono); font-size: 8.5px; letter-spacing: 0.2em;
  text-transform: uppercase; color: var(--ink-low); margin-top: 14px;
}

/* ═══════════════════ 5. PRE-CHECKOUT REVIEW ═══════════════════
   The prototype's checkout collected payment data. Shopify hosts checkout,
   so this page is now a branded review that hands off to /checkout.
   Payment marks are informational only. */

.co-payment-note{
  font-family: var(--mono); font-size: 8.5px; line-height: 1.8;
  letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--ink-low); padding: 14px 0 0;
  border-top: 1px solid var(--line); margin-top: 16px;
}
.co-option.is-informational{ cursor: default; pointer-events: none; opacity: 0.9; }
.co-option.is-informational input{ display: none; }
.co-handoff{
  display: flex; align-items: center; justify-content: center; gap: 12px;
  width: 100%; text-align: center; text-decoration: none;
}
.co-handoff[aria-disabled="true"]{ opacity: 0.4; pointer-events: none; }

/* ═══════════════════ 6. FOCUS VISIBILITY ═══════════════════
   The source had no focus styling at all. Browser defaults would break the
   design, so focus is drawn in the ROWMAN accent instead of removed. */

:focus{ outline: none; }
:focus-visible{
  outline: 2px solid var(--fuchsia);
  outline-offset: 3px;
  border-radius: 2px;
}
a:focus-visible, button:focus-visible,
input:focus-visible, select:focus-visible, textarea:focus-visible,
[tabindex]:focus-visible, summary:focus-visible{
  outline: 2px solid var(--fuchsia);
  outline-offset: 3px;
}
.chamber:focus-visible, .release-card:focus-visible,
.collection-card:focus-visible, .jr-card:focus-visible,
.archive-folder:focus-visible{
  outline: 2px solid var(--fuchsia);
  outline-offset: 4px;
}

.skip-to-content{
  position: absolute; top: -100px; left: 20px; z-index: 200;
  padding: 12px 20px;
  background: var(--bg-0); color: var(--ink);
  border: 1px solid var(--fuchsia);
  font-family: var(--mono); font-size: 9px; letter-spacing: 0.24em;
  text-transform: uppercase; text-decoration: none;
  transition: top 0.25s ease;
}
.skip-to-content:focus{ top: 20px; }

.visually-hidden{
  position: absolute !important;
  width: 1px; height: 1px;
  margin: -1px; padding: 0; overflow: hidden;
  clip: rect(0 0 0 0); clip-path: inset(50%);
  white-space: nowrap; border: 0;
}

/* Minimum touch targets on coarse pointers */
@media (pointer: coarse){
  .cart-link, .nav-toggle, .search-toggle, .cart-close, .nav-drawer-close,
  .search-close, .ci-qty button, .ci-remove, .cf-link, .size-btn, .pc-nav{
    min-width: 44px; min-height: 44px;
  }
  .ci-qty button{ display: grid; place-items: center; }
}

/* ═══════════════════ 7. GLOBAL MOTION CONTROL ═══════════════════
   The source guarded only six decorative rules. Every rAF-driven system now
   honours the OS setting and the Theme Editor motion setting. */

html[data-rowman-motion="off"] *,
html[data-rowman-motion="off"] *::before,
html[data-rowman-motion="off"] *::after{
  animation-duration: 0.001ms !important;
  animation-iteration-count: 1 !important;
  transition-duration: 0.001ms !important;
  scroll-behavior: auto !important;
}
html[data-rowman-motion="off"] .bg-stage .bg-layer{ transform: none !important; }
html[data-rowman-motion="off"] [class*="reveal"]{ opacity: 1 !important; transform: none !important; }

html[data-rowman-motion="reduced"] .bg-stage .bg-layer{ transform: none !important; }
html[data-rowman-motion="reduced"] .phil-cross,
html[data-rowman-motion="reduced"] .phil-bow,
html[data-rowman-motion="reduced"] .giftcard{ transform: none !important; }
html[data-rowman-motion="reduced"] .ecg-path,
html[data-rowman-motion="reduced"] .ecg-edge{ animation: none !important; }

@media (prefers-reduced-motion: reduce){
  *, *::before, *::after{
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
  .bg-stage .bg-layer{ transform: none !important; }
  .phil-cross, .phil-bow, .giftcard{ transform: none !important; }
  [class*="reveal"]{ opacity: 1 !important; transform: none !important; }
  html, body, a, button{ cursor: auto !important; }
}

/* Scroll reveal — replaces the SPA router's animation re-trigger */
.rw-reveal{ opacity: 0; transform: translateY(18px); }
.rw-reveal.is-visible{
  animation: rise 0.9s cubic-bezier(.2,.6,.2,1) var(--rw-delay, 0s) forwards;
}
html[data-rowman-motion="off"] .rw-reveal{ opacity: 1; transform: none; animation: none; }

/* ═══════════════════ 8. SHOPIFY FORM STATES ═══════════════════ */

.rw-form-status{
  display: flex; align-items: center; gap: 10px;
  font-family: var(--mono); font-size: 9px; letter-spacing: 0.22em;
  text-transform: uppercase;
  padding: 13px 16px; margin-bottom: 20px;
  border: 1px solid var(--line);
  background: rgba(255,255,255,0.02);
  color: var(--ink-dim);
}
.rw-form-status .dot{
  width: 6px; height: 6px; border-radius: 50%; flex: 0 0 auto;
  background: var(--fuchsia); box-shadow: 0 0 6px rgba(255,30,90,0.55);
}
.rw-form-status.is-success{ border-color: rgba(255,255,255,0.22); }
.rw-form-status.is-error{ border-color: rgba(255,30,90,0.45); color: var(--fuchsia); }
.rw-field-error{
  display: block;
  font-family: var(--mono); font-size: 8.5px; letter-spacing: 0.16em;
  text-transform: uppercase; color: var(--fuchsia); padding-top: 6px;
}
.rw-btn-loading{ opacity: 0.55; pointer-events: none; }

/* ═══════════════════ 9. PASSWORD (LOCKED STORE) ═══════════════════
   Reuses .lock-stage from the source, connected to Shopify's real password
   form and storefront_password_link. */

.lock-shopify-errors{ list-style: none; margin: 0 0 16px; padding: 0; }
.lock-shopify-errors li{
  font-family: var(--mono); font-size: 9px; letter-spacing: 0.18em;
  text-transform: uppercase; color: var(--fuchsia); padding: 3px 0;
}
.lock-admin-link{
  display: inline-block; margin-top: 22px;
  font-family: var(--mono); font-size: 8.5px; letter-spacing: 0.24em;
  text-transform: uppercase; color: var(--ink-low); text-decoration: none;
  border-bottom: 1px solid var(--line);
  padding-bottom: 3px;
}
.lock-admin-link:hover{ color: var(--fuchsia); border-color: var(--fuchsia); }
.lock-modal{
  position: fixed; inset: 0; z-index: 140;
  display: none; place-items: center;
  background: rgba(6,5,9,0.88);
  backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px);
  padding: 24px;
}
.lock-modal.is-open{ display: grid; }
.lock-modal-panel{
  width: 100%; max-width: 420px;
  background: rgba(10,10,14,0.9);
  border: 1px solid rgba(255,255,255,0.14);
  padding: 34px 30px;
}

/* ═══════════════════ 10. THEME EDITOR PLACEHOLDERS ═══════════════════
   Shown only inside the customiser when a required selection is unset, so a
   live storefront never displays invented products or prices. */

.rw-editor-note{
  border: 1px dashed rgba(255,30,90,0.4);
  background: rgba(255,30,90,0.05);
  padding: 40px 30px; text-align: center;
  grid-column: 1 / -1;
}
.rw-editor-note-title{
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.28em;
  text-transform: uppercase; color: var(--fuchsia); margin-bottom: 12px;
}
.rw-editor-note-body{
  font-family: var(--mono); font-size: 9px; line-height: 1.9;
  letter-spacing: 0.1em; color: var(--ink-dim);
  max-width: 460px; margin: 0 auto;
}

/* ═══════════════════ 11. PAGINATION ═══════════════════ */

.rw-pagination{
  display: flex; align-items: center; justify-content: center; gap: 6px;
  padding: 60px 0 0; margin-top: 40px;
  border-top: 1px solid var(--line);
}
.rw-pagination a, .rw-pagination span{
  min-width: 40px; height: 40px;
  display: grid; place-items: center;
  font-family: var(--mono); font-size: 9.5px; letter-spacing: 0.14em;
  color: var(--ink-low); text-decoration: none;
  border: 1px solid transparent;
  transition: color 0.3s ease, border-color 0.3s ease;
}
.rw-pagination a:hover{ color: var(--fuchsia); border-color: rgba(255,30,90,0.35); }
.rw-pagination .rw-page-current{ color: var(--ink); border-color: var(--line-strong); }

/* ═══════════════════ 12. HEADER ADJUSTMENTS ═══════════════════ */

header .nav-right-group{ display: flex; align-items: center; gap: 20px; }
@media (max-width: 720px){
  header{ grid-template-columns: auto 1fr auto; }
  .nav-right-group{ gap: 14px; }
}

/* Cart bubble reflects real Shopify item count */
.cart-link .count[data-cart-count="0"]{ opacity: 0.5; }

/* ═══════════════════ 13. RESPONSIVE SAFETY ═══════════════════ */

html, body{ max-width: 100%; }
img, svg, video{ max-width: 100%; }
.rw-no-overflow{ overflow-x: clip; }

@media (max-width: 420px){
  .search-input{ font-size: 26px; }
  .nav-drawer{ width: 100vw; }
}

/* ═══════════════════ 14. COMPONENTS WITH NO SOURCE RULE ═══════════════════
   The original stylesheet never styled these, either because the prototype
   faked the data (prices, badges, SKU) or because Shopify requires a component
   the design did not contain (pagination, order lists, prev/next). Each is
   built from the existing tokens so nothing renders unstyled. */

/* Product card text stack + real Shopify images */
.chamber-text{ display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.chamber-img,
.release-img-el{
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
}
.chamber-stage{ position: relative; overflow: hidden; }
.chamber-grid{ grid-template-columns: repeat(var(--cols, 3), 1fr); }
@media (max-width: 1024px){ .chamber-grid{ grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 640px){ .chamber-grid{ grid-template-columns: 1fr; } }

/* Availability badges — prototype had product status but no badge chrome */
.chamber-badge{
  position: absolute; top: 12px; left: 12px; z-index: 3;
  padding: 5px 9px;
  font-family: var(--mono); font-size: 8px; letter-spacing: 0.22em;
  text-transform: uppercase;
  background: rgba(8,7,10,0.86);
  border: 1px solid var(--line-strong);
  color: var(--ink-dim);
  backdrop-filter: blur(10px);
}
.chamber-badge.is-preorder{ border-color: rgba(248,198,107,0.5); color: #f8c66b; }
.chamber-badge.is-locked{ border-color: rgba(255,30,90,0.5); color: var(--fuchsia); }
.chamber-badge.is-soldout{ opacity: 0.8; }
.chamber.is-soldout .chamber-stage{ opacity: 0.62; }
.chamber-qa, .release-qa{ position: relative; display: inline-flex; }
.chamber-add.is-static{ opacity: 0.3; pointer-events: none; }

/* Price — the prototype hard-coded price strings, so nothing was styled */
.price-value{ display: inline; }
.price-value.is-sale{ color: var(--fuchsia); }
.price-compare{
  margin-left: 7px; opacity: 0.55;
  font-size: 0.85em; text-decoration: line-through;
}
.price-from{
  font-family: var(--mono); font-size: 0.7em;
  letter-spacing: 0.16em; text-transform: uppercase;
  color: var(--ink-low); margin-right: 5px;
}

/* Variant option unavailable states */
.size-btn.is-unavailable, .cw-swatch.is-unavailable{
  opacity: 0.25; pointer-events: none;
  text-decoration: line-through;
}
.size-btn.is-soldout, .cw-swatch.is-soldout, .qa-size.is-soldout{
  opacity: 0.42; text-decoration: line-through;
}
.cw-swatch{
  width: 26px; height: 26px; padding: 0;
  border: 1px solid var(--line-strong);
  background: rgba(255,255,255,0.06);
  transition: border-color 0.3s ease, box-shadow 0.3s ease;
}
.cw-swatch.is-active{
  border-color: var(--fuchsia);
  box-shadow: 0 0 0 2px rgba(255,30,90,0.22);
}

/* SKU row */
.product-sku{
  display: flex; gap: 10px; align-items: baseline;
  padding-top: 12px; margin-top: 12px;
  border-top: 1px solid var(--line);
  font-family: var(--mono); font-size: 9px;
  letter-spacing: 0.18em; text-transform: uppercase;
}
.product-sku .k{ color: var(--ink-low); }
.product-sku .v{ color: var(--ink-dim); }

/* Carousel slide transitions — 3D right-to-left, as the source described */
.pis-slide{
  position: absolute; inset: 0;
  opacity: 0; pointer-events: none;
  transform: translateX(0) rotateY(0deg) scale(0.96);
  transition: transform 0.6s cubic-bezier(.2,.7,.2,1), opacity 0.5s ease;
  transform-origin: center;
}
.pis-slide.is-active{ opacity: 1; pointer-events: auto; transform: none; }
.pis-slide.is-enter-right{ transform: translateX(14%) rotateY(-14deg) scale(0.94); }
.pis-slide.is-enter-left{ transform: translateX(-14%) rotateY(14deg) scale(0.94); }
.pis-slide.is-exit-left{ opacity: 0; transform: translateX(-14%) rotateY(14deg) scale(0.94); }
.pis-slide.is-exit-right{ opacity: 0; transform: translateX(14%) rotateY(-14deg) scale(0.94); }
.pis-track{ position: relative; width: 100%; height: 100%; transform-style: preserve-3d; }
.pis-slide img{ width: 100%; height: 100%; object-fit: contain; display: block; }

/* Cart line extras Shopify provides that the prototype had no model for */
.ci-props{ margin: 4px 0 0; font-family: var(--mono); font-size: 8.5px; letter-spacing: 0.12em; color: var(--ink-low); }
.ci-props dt{ display: inline; }
.ci-props dt::after{ content: ': '; }
.ci-props dd{ display: inline; margin: 0 8px 0 0; }
.ci-discounts{ list-style: none; margin: 4px 0 0; padding: 0; }
.ci-discounts li{ font-family: var(--mono); font-size: 8.5px; letter-spacing: 0.12em; color: var(--fuchsia); }
.ci-thumb img{ width: 100%; height: 100%; object-fit: cover; display: block; }
.ci-qty-num{
  width: 42px; text-align: center;
  background: transparent; border: none; color: var(--ink);
  font-family: var(--mono); font-size: 12px;
  -moz-appearance: textfield;
}
.ci-qty-num::-webkit-outer-spin-button,
.ci-qty-num::-webkit-inner-spin-button{ -webkit-appearance: none; margin: 0; }
.cart-note{ padding-top: 20px; margin-top: 20px; border-top: 1px solid var(--line); }
[data-cart-root].is-busy{ opacity: 0.55; pointer-events: none; transition: opacity 0.2s ease; }

/* Checkout review — informational payment marks */
.co-options{ display: flex; flex-wrap: wrap; gap: 10px; }
.co-payment-icon{ height: 22px; width: auto; display: block; }
.checkout-right{ position: relative; }

/* Journal additions */
.jr-share{ position: relative; display: inline-flex; }
.jr-local-note{
  font-family: var(--mono); font-size: 8px; letter-spacing: 0.2em;
  text-transform: uppercase; color: var(--ink-low);
  opacity: 0.7; padding-top: 10px;
}
.jr-card-media{ position: relative; overflow: hidden; }
.jr-card-media img,
.jr-featured-media img,
.ja-media img,
.folder-thumb img,
.ad-grid-item img,
.id-photo img,
.product-img img,
.figure img,
.phil-image img{ width: 100%; height: 100%; object-fit: cover; display: block; }
.jr-card.is-coming-soon .jr-card-title{ pointer-events: none; }
.jr-card-title a, .jr-featured-title a{ color: inherit; text-decoration: none; }
.jr-card-title a:hover, .jr-featured-title a:hover{ color: var(--fuchsia); }

/* Article prev / next and tags */
.ja-nav{
  display: grid; grid-template-columns: 1fr 1fr; gap: 20px;
  padding: 44px 0; margin-top: 44px;
  border-top: 1px solid var(--line);
}
.ja-nav-link{
  display: flex; flex-direction: column; gap: 8px;
  text-decoration: none; color: var(--ink);
  transition: color 0.3s ease;
}
.ja-nav-link:hover{ color: var(--fuchsia); }
.ja-nav-next{ text-align: right; }
.ja-nav-label{
  font-family: var(--mono); font-size: 8.5px; letter-spacing: 0.24em;
  text-transform: uppercase; color: var(--ink-low);
}
.ja-nav-title{ font-family: var(--serif); font-weight: 300; font-size: 18px; letter-spacing: -0.01em; }
@media (max-width: 640px){ .ja-nav{ grid-template-columns: 1fr; } .ja-nav-next{ text-align: left; } }
.ja-tags{ display: flex; flex-wrap: wrap; gap: 8px; padding-top: 20px; }
.ja-tag-link{
  padding: 5px 10px; border: 1px solid var(--line);
  font-family: var(--mono); font-size: 8.5px; letter-spacing: 0.18em;
  text-transform: uppercase; color: var(--ink-dim); text-decoration: none;
}
.ja-tag-link:hover{ border-color: var(--fuchsia); color: var(--fuchsia); }

/* Patient portal — order record list (Shopify data the prototype lacked) */
.id-locked{ display: flex; flex-direction: column; gap: 18px; align-items: flex-start; padding: 20px 0; }
.id-locked-text{ font-family: var(--serif); font-size: 16px; font-weight: 300; color: var(--ink-dim); }
.id-value{ pointer-events: none; }
.id-orders{ max-width: 900px; margin: 46px auto 0; padding: 0 24px; }
.id-orders-title{
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.3em;
  text-transform: uppercase; color: var(--ink-dim);
  padding-bottom: 12px; margin-bottom: 4px;
  border-bottom: 1px solid var(--line);
}
.id-orders-list{ display: flex; flex-direction: column; }
.id-order-row{
  display: grid; grid-template-columns: 1fr 1fr 1fr auto; gap: 14px;
  padding: 14px 2px; border-bottom: 1px solid var(--line);
  text-decoration: none; color: var(--ink);
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.1em;
  transition: color 0.3s ease;
}
.id-order-row:hover{ color: var(--fuchsia); }
.id-order-row .k{ color: var(--ink); }
.id-order-row .v{ color: var(--ink-low); }
.id-orders-empty{
  font-family: var(--mono); font-size: 9.5px; letter-spacing: 0.18em;
  text-transform: uppercase; color: var(--ink-low); padding: 22px 0;
}
@media (max-width: 640px){ .id-order-row{ grid-template-columns: 1fr 1fr; } }

/* Login / register additions */
.login-newpatient{
  padding-top: 20px; margin-top: 20px;
  border-top: 1px solid var(--line);
  font-family: var(--mono); font-size: 9px; letter-spacing: 0.18em;
  text-transform: uppercase; color: var(--ink-low);
}
.login-newpatient a{ color: var(--fuchsia); text-decoration: none; }
.login-newpatient a:hover{ text-decoration: underline; }
.login-sub{ font-size: clamp(24px, 3vw, 32px); margin-bottom: 14px; }
.field-underline{
  height: 1px; background: var(--line);
  position: relative; overflow: hidden;
}
.field-row:focus-within .field-underline{ background: var(--fuchsia); }

/* Contact aside rows */
.contact-doc-row{
  display: flex; flex-direction: column; gap: 5px;
  padding: 14px 0; border-bottom: 1px solid var(--line);
}

/* Archive additions */
.ad-description{
  max-width: 720px; margin: 0 auto 34px;
  font-family: var(--serif); font-weight: 300; font-size: 16px;
  line-height: 1.65; color: var(--ink-dim);
}
.ad-foot{ display: flex; justify-content: center; padding-top: 46px; }
.archive-folder{ text-decoration: none; display: block; }

/* Policy body — Shopify rich text inside the clinical document frame */
.rp-body{ font-family: var(--serif); font-weight: 300; font-size: 15.5px; line-height: 1.75; color: var(--ink-dim); }
.rp-body p{ margin-bottom: 14px; }
.rp-body ul, .rp-body ol{ margin: 0 0 14px 18px; }
.rp-body li{ margin-bottom: 6px; }
.rp-body h2, .rp-body h3{ font-family: var(--mono); font-size: 11px; letter-spacing: 0.24em; text-transform: uppercase; color: var(--ink); margin: 24px 0 12px; }
.rp-body a{ color: var(--fuchsia); }

/* Search page form */
.search-page-form{ margin-top: 26px; }

/* Similar products row accepts chamber cards */
.sp-grid{ display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
@media (max-width: 1024px){ .sp-grid{ grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 720px){ .sp-grid{ grid-template-columns: repeat(2, 1fr); } }

/* Coming-soon overlay form */
.essentials-cs-form{ display: flex; gap: 10px; flex-wrap: wrap; justify-content: center; margin: 22px 0 8px; }
.essentials-cs-form .clinical-input{ min-width: 240px; }

/* Editorial hero card title link */
.editorial .title{ color: inherit; text-decoration: none; }
.editorial .title:hover{ color: var(--fuchsia); }
.editorial-form{ display: contents; }

/* Gift card QR (issued card) */
.gc-qr{ display: flex; justify-content: center; padding: 22px 0; }
.gc-qr img, .gc-qr svg{ background: #fff; padding: 10px; }

/* ═══════════════════ 15. FIDELITY REPAIR LAYER ═══════════════════
   Added during the fidelity repair pass. Each rule exists because a component
   from the original HTML had no CSS in the extracted stylesheet, or because a
   Shopify constraint required new chrome. Nothing overrides approved values. */

/* ── Coming-soon gate ──
   Root cause of the invisible overlay: `.essentials-cs-overlay` is
   position:absolute, so when the gated collection is empty the `.grid-scrim`
   collapsed to the height of its empty state and the overlay had nothing to
   fill. The gate class gives the scrim real height. */
.grid-scrim.is-gated{ min-height: clamp(420px, 60vh, 680px); }
.grid-scrim.is-gated .chamber-grid{ min-height: 320px; }
.grid-scrim.is-gated .cf-empty{ display: none !important; }
.cs-standalone-stage{ position: relative; min-height: clamp(420px, 60vh, 680px); margin: 40px 0; }

.essentials-cs-form{
  display: flex; gap: 10px; flex-wrap: wrap;
  justify-content: center; margin: 26px 0 10px;
}
.essentials-cs-input{
  min-width: 260px; padding: 12px 14px;
  background: rgba(255,255,255,0.6);
  border: 1px solid rgba(26,20,32,0.18);
  color: #1a1420;
  font-family: var(--mono); font-size: 11px; letter-spacing: 0.1em;
}
.essentials-cs-input::placeholder{ color: rgba(26,20,32,0.4); }
.essentials-cs-input:focus-visible{ outline: 2px solid var(--fuchsia); outline-offset: 2px; }
.essentials-cs-submit{
  padding: 12px 22px;
  background: #1a1420; color: #f3eef0; border: 1px solid #1a1420;
  font-family: var(--mono); font-size: 9px; letter-spacing: 0.24em;
  text-transform: uppercase; cursor: pointer;
  transition: background 0.3s ease, color 0.3s ease;
}
.essentials-cs-submit:hover{ background: var(--fuchsia); border-color: var(--fuchsia); }
.essentials-cs-success,
.essentials-cs-error{
  display: flex; align-items: center; gap: 9px;
  font-family: var(--mono); font-size: 9.5px; letter-spacing: 0.18em;
  text-transform: uppercase; color: #1a1420; margin: 20px 0 6px;
}
.essentials-cs-error{ color: #b3123f; }

/* ── Patient entry ── */
.login-status-row{
  display: flex; align-items: center; gap: 10px;
  padding: 14px 0 22px; border-bottom: 1px solid var(--line); margin-bottom: 26px;
  font-family: var(--mono); font-size: 9px; letter-spacing: 0.24em;
  text-transform: uppercase; color: var(--ink-dim);
}
.login-hosted-note{
  font-family: var(--mono); font-size: 8.5px; line-height: 1.9;
  letter-spacing: 0.08em; color: var(--ink-low);
  padding-top: 16px; margin-top: 16px; border-top: 1px solid var(--line);
}
.login-doc-foot{
  display: flex; justify-content: space-between; align-items: center; gap: 14px;
  flex-wrap: wrap; padding: 14px 0 0; margin-top: 28px;
  border-top: 1px solid var(--line);
  font-family: var(--mono); font-size: 8.5px; letter-spacing: 0.2em;
  text-transform: uppercase; color: var(--ink-low);
}

/* ── Archive fallback folders ── */
.archive-folder.is-static{ cursor: default; }
.folder-desc{
  font-family: var(--sans); font-size: 12.5px; line-height: 1.6;
  color: var(--ink-low); padding-top: 8px;
}

/* ═══════════════════ 16. FORM STATE MESSAGES ═══════════════════
   The approved stylesheet defines every .np-* and .cf-* rule, so the
   duplicated typography block that previously lived here has been removed —
   it was silently overriding the approved display/serif/mono assignments on
   Field Notes and Contact. Only the two Shopify-specific state messages that
   the original never needed are kept, styled from the same tokens. */

.cf-message{
  display: flex; align-items: center; gap: 10px;
  padding: 14px 16px; margin-bottom: 22px;
  border: 1px solid var(--line);
  font-family: var(--mono); font-size: 9.5px; letter-spacing: 0.2em;
  text-transform: uppercase; color: var(--ink-dim);
}
.cf-message .dot{
  width: 6px; height: 6px; border-radius: 50%; flex: 0 0 auto;
  background: var(--fuchsia); box-shadow: 0 0 6px rgba(255,30,90,0.55);
}
.cf-message.is-error{ border-color: rgba(255,30,90,0.45); color: var(--fuchsia); }
.cf-errors{ list-style: none; margin: 0 0 20px; padding: 0; }
.cf-errors li{
  font-family: var(--mono); font-size: 9px; letter-spacing: 0.14em;
  color: var(--fuchsia); padding: 3px 0;
}

/* Coming-soon waitlist form — light-on-light, so it cannot inherit the dark
   field treatment. No original rule exists for these. */
.essentials-cs-form{ display: flex; gap: 10px; flex-wrap: wrap; justify-content: center; margin: 26px 0 10px; }
.essentials-cs-input{
  min-width: 260px; padding: 12px 14px;
  background: rgba(255,255,255,0.6);
  border: 1px solid rgba(26,20,32,0.18);
  color: #1a1420;
  font-family: var(--mono); font-size: 11px; letter-spacing: 0.1em;
}
.essentials-cs-input::placeholder{ color: rgba(26,20,32,0.4); }
.essentials-cs-submit{
  padding: 12px 22px;
  background: #1a1420; color: #f3eef0; border: 1px solid #1a1420;
  font-family: var(--mono); font-size: 9px; letter-spacing: 0.24em;
  text-transform: uppercase; cursor: pointer;
  transition: background 0.3s ease, border-color 0.3s ease;
}
.essentials-cs-submit:hover{ background: var(--fuchsia); border-color: var(--fuchsia); }
.essentials-cs-success, .essentials-cs-error{
  display: flex; align-items: center; gap: 9px;
  font-family: var(--mono); font-size: 9.5px; letter-spacing: 0.18em;
  text-transform: uppercase; color: #1a1420; margin: 20px 0 6px;
}
.essentials-cs-error{ color: #b3123f; }

/* ═══════════════════ 17. WELLNESS EMPTY-DATA MOTION ═══════════════════
   The approved stylesheet defines .status-dot.active and .status-dot.inactive
   but nothing between them, so a patient with no record saw a page of dead
   grey dots and a flat trace. "monitoring" is the designed awaiting state:
   alive, but clearly not yet carrying a signal. */

.status-dot.monitoring{
  background: var(--accent-muted);
  box-shadow: 0 0 7px rgba(156,106,130,0.5);
  animation: paPulse 2.6s ease-in-out infinite;
}

/* Null trace reads dimmer than a live one without going invisible */
[data-radar-trace][data-state="null"]{
  fill: rgba(255,30,90,0.07);
  stroke: rgba(255,30,90,0.42);
}
[data-radar-trace]{ transition: fill 0.6s ease, stroke 0.6s ease; }
.radar-sweep{ transform-origin: 0 0; }

/* Indeterminate metric bar — a travelling sweep instead of a false 0% */
.id-metric-bar-fill[data-indeterminate]{
  width: 34% !important;
  background: linear-gradient(90deg, transparent, var(--accent-muted), transparent);
  opacity: 0.55;
  animation: rwBarSweep 2.8s ease-in-out infinite;
}
@keyframes rwBarSweep{
  0%   { transform: translateX(-120%); }
  100% { transform: translateX(320%); }
}
.id-metric-bar{ overflow: hidden; }
.id-metric-caption{ display: flex; align-items: center; gap: 7px; }

/* Wellness ECG strip spacing inside the card */
.id-vitals{ margin: 4px 0 8px; }

html[data-rowman-motion="off"] .status-dot.monitoring,
html[data-rowman-motion="off"] .id-metric-bar-fill[data-indeterminate],
html[data-rowman-motion="off"] .ecg-scroll{ animation: none !important; }

@media (prefers-reduced-motion: reduce){
  .status-dot.monitoring,
  .id-metric-bar-fill[data-indeterminate],
  .ecg-scroll{ animation: none !important; }
}

/* ═══════════════════ 18. GIFT CARD PURCHASE ═══════════════════
   The approved stylesheet already defines .gc-denom, .gc-denom-btn, .gc-cta,
   .gc-meta-row and the card faces. Only states Shopify introduces and the
   editorial section below the fold need rules. */

.gc-denom-btn.is-soldout,
.gc-denom-btn[disabled]{
  opacity: 0.3; pointer-events: none; text-decoration: line-through;
}
.gc-security{
  display: flex; align-items: center; gap: 9px;
  padding-top: 16px; margin-top: 18px; border-top: 1px solid var(--line);
  font-family: var(--mono); font-size: 8.5px; line-height: 1.7;
  letter-spacing: 0.12em; text-transform: uppercase; color: var(--ink-low);
}

.gc-editorial{
  position: relative; z-index: 2;
  padding: 90px 40px 110px; border-top: 1px solid var(--line);
}
.gc-editorial-inner{ max-width: 720px; margin: 0 auto; text-align: center; }
.gc-editorial-title{
  font-family: var(--serif); font-weight: 300; font-style: italic;
  font-size: clamp(30px, 4.5vw, 52px); line-height: 1.08;
  letter-spacing: -0.025em; color: var(--ink); margin: 20px 0 22px;
}
.gc-editorial-body{
  font-family: var(--serif); font-weight: 300; font-size: 16px;
  line-height: 1.72; color: var(--ink-dim);
}
.gc-editorial-body p{ margin-bottom: 16px; }
.gc-editorial .gc-eyebrow{ justify-content: center; }
@media (max-width: 720px){ .gc-editorial{ padding: 60px 22px 80px; } }

/* ═══════════════════ 20. PATIENT ENTRY PRESENTATION ═══════════════════ */
.login-section{ position: relative; }
.pe-bg{
  position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background-image: var(--pe-bg); background-size: cover; background-position: center;
}
.pe-bg::after{
  content: ""; position: absolute; inset: 0;
  background: rgba(8,7,10, var(--pe-overlay, 0.65));
}
.login-section > .login-doc{ position: relative; z-index: 1; }
.rw-motion-off *,
.rw-motion-off *::before,
.rw-motion-off *::after{ animation: none !important; transition: none !important; }

/* ═══════════════════ 21. REMAINING UNSTYLED SPANS ═══════════════════
   Inner spans the original markup carried but never styled explicitly; they
   inherit correctly and only need to not collapse. */
.cf-label-text{ display: inline; }
.np-submit-label{ display: inline; }
.id-rev{ font-family: var(--mono); font-size: 8.5px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--ink-low); }
.gc-id{ font-family: var(--mono); font-size: 8px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--ink-low); }

/* ═══════════════════ 22. NATIVE SHOPIFY POLICY PAGES ═══════════════════
   /policies/* is rendered by Shopify, not by a theme template. Shopify injects
   its own .shopify-policy__container markup into content_for_layout, so the
   layout captures it and wraps it in the ROWMAN document frame via
   snippets/rowman-native-policy-frame.liquid.

   Everything below either neutralises Shopify's default presentation or styles
   its real markup into the approved .rp-* legal-document system. The policy
   text itself stays in Shopify Admin → Settings → Policies. */

/* ── Clear the fixed header ──
   The site header is position:fixed, so the document needs real top padding or
   it starts underneath the wordmark. */
.rp-native-wrap{
  padding-top: 150px;
  max-width: 880px;
  margin: 0 auto;
}
@media (max-width: 900px){ .rp-native-wrap{ padding-top: 122px; } }
@media (max-width: 640px){ .rp-native-wrap{ padding-top: 104px; } }

.rp-status-active{ display: inline-flex; align-items: center; gap: 6px; }

/* ── Neutralise Shopify's defaults ──
   Shopify ships a narrow, centred, serif container. All three fight the
   ROWMAN document frame, so they are reset rather than overridden piecemeal. */
.rp-native .shopify-policy__container{
  max-width: none !important;
  width: 100% !important;
  margin: 0 !important;
  padding: 0 !important;
  text-align: left !important;
}
.rp-native .shopify-policy__title{
  display: none !important;   /* the frame supplies the single visible title */
}
.rp-native .shopify-policy__body{
  max-width: none !important;
  margin: 0 !important;
  padding: 0 !important;
  text-align: left !important;
  font-family: var(--serif);
  font-weight: 300;
  font-size: 15.5px;
  line-height: 1.78;
  color: var(--ink-dim);
}

/* ── Body typography ──
   Selectors are doubled up (.rp-native X and .shopify-policy__body X) so the
   rules hold whether or not Shopify wraps the body in its own class. */
.rp-native p,
.shopify-policy__body p{
  margin: 0 0 16px;
  font-family: var(--serif);
  font-weight: 300;
  font-size: 15.5px;
  line-height: 1.78;
  color: var(--ink-dim);
}

.rp-native h1,
.shopify-policy__body h1{
  font-family: var(--display);
  font-weight: 700;
  font-size: 22px;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: #ece7ee;
  margin: 44px 0 18px;
}

/* h2 carries the clinical section-heading treatment with its accent rule */
.rp-native h2,
.shopify-policy__body h2{
  font-family: var(--mono);
  font-weight: 600;
  font-size: 10px;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: var(--fuchsia);
  margin: 48px 0 18px;
  display: flex;
  align-items: center;
  gap: 12px;
}
.rp-native h2::after,
.shopify-policy__body h2::after{
  content: "";
  flex: 1;
  height: 1px;
  background: var(--line);
}

.rp-native h3,
.shopify-policy__body h3{
  font-family: var(--mono);
  font-weight: 500;
  font-size: 10px;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--ink);
  margin: 32px 0 12px;
}

.rp-native h4, .rp-native h5, .rp-native h6,
.shopify-policy__body h4,
.shopify-policy__body h5,
.shopify-policy__body h6{
  font-family: var(--mono);
  font-weight: 500;
  font-size: 9.5px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--ink-dim);
  margin: 26px 0 10px;
}

.rp-native strong, .rp-native b,
.shopify-policy__body strong,
.shopify-policy__body b{ color: var(--ink); font-weight: 500; }

.rp-native em, .rp-native i,
.shopify-policy__body em,
.shopify-policy__body i{ font-style: italic; }

/* ── Links ── */
.rp-native a,
.shopify-policy__body a{
  color: var(--fuchsia);
  text-decoration: none;
  border-bottom: 1px solid rgba(255,30,90,0.35);
  transition: border-color 0.25s ease;
  word-break: break-word;          /* long policy URLs must not overflow */
}
.rp-native a:hover,
.shopify-policy__body a:hover{ border-bottom-color: var(--fuchsia); }
.rp-native a:focus-visible,
.shopify-policy__body a:focus-visible{
  outline: 2px solid var(--fuchsia);
  outline-offset: 3px;
}

/* ── Lists: ROWMAN legal treatment, not browser bullets ── */
.rp-native ul, .rp-native ol,
.shopify-policy__body ul,
.shopify-policy__body ol{
  list-style: none;
  margin: 0 0 20px;
  padding: 0;
}
.rp-native li,
.shopify-policy__body li{
  position: relative;
  margin-bottom: 10px;
  font-family: var(--serif);
  font-weight: 300;
  font-size: 15.5px;
  line-height: 1.7;
  color: var(--ink-dim);
}

/* Unordered: a short accent rule in place of a bullet */
.rp-native ul > li,
.shopify-policy__body ul > li{ padding-left: 22px; }
.rp-native ul > li::before,
.shopify-policy__body ul > li::before{
  content: "";
  position: absolute;
  left: 0;
  top: 0.72em;
  width: 8px;
  height: 1px;
  background: var(--fuchsia);
}

/* Ordered: zero-padded clinical numerals */
.rp-native ol,
.shopify-policy__body ol{ counter-reset: rpnative; }
.rp-native ol > li,
.shopify-policy__body ol > li{
  padding-left: 34px;
  counter-increment: rpnative;
}
.rp-native ol > li::before,
.shopify-policy__body ol > li::before{
  content: counter(rpnative, decimal-leading-zero);
  position: absolute;
  left: 0;
  top: 0.2em;
  font-family: var(--mono);
  font-size: 9px;
  letter-spacing: 0.12em;
  color: var(--fuchsia);
}

/* Nested lists keep the indent but drop back to a fainter mark */
.rp-native li ul, .rp-native li ol,
.shopify-policy__body li ul,
.shopify-policy__body li ol{ margin: 10px 0 0; }
.rp-native li ul > li::before,
.shopify-policy__body li ul > li::before{ background: var(--accent-muted); }

/* ── Callouts ── */
.rp-native blockquote,
.shopify-policy__body blockquote{
  margin: 26px 0;
  padding: 18px 22px;
  border-left: 2px solid var(--fuchsia);
  background: rgba(255,255,255,0.025);
  font-family: var(--serif);
  font-weight: 300;
  font-style: normal;
  font-size: 15px;
  line-height: 1.7;
  color: var(--ink);
}
.rp-native blockquote p:last-child,
.shopify-policy__body blockquote p:last-child{ margin-bottom: 0; }

/* ── Tables ── */
.rp-native table,
.shopify-policy__body table{
  width: 100%;
  border-collapse: collapse;
  margin: 24px 0;
  font-family: var(--sans);
  font-size: 13.5px;
}
.rp-native th, .rp-native td,
.shopify-policy__body th,
.shopify-policy__body td{
  padding: 12px 14px;
  border: 1px solid var(--line);
  text-align: left;
  vertical-align: top;
  color: var(--ink-dim);
}
.rp-native th,
.shopify-policy__body th{
  font-family: var(--mono);
  font-size: 9px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--ink);
  background: rgba(255,255,255,0.03);
  font-weight: 500;
}
.rp-native tbody tr:nth-child(even) td,
.shopify-policy__body tbody tr:nth-child(even) td{
  background: rgba(255,255,255,0.012);
}

/* ── Contact treatment ──
   Shopify policy bodies usually end with a contact paragraph. The last block
   is given the clinical contact-card treatment automatically. */
.rp-native .shopify-policy__body > p:last-of-type,
.shopify-policy__body > p:last-of-type{
  margin-top: 34px;
  padding: 18px 22px;
  border: 1px solid var(--line);
  background: rgba(255,255,255,0.02);
  font-family: var(--mono);
  font-size: 10.5px;
  line-height: 1.9;
  letter-spacing: 0.08em;
  color: var(--ink-dim);
}

/* ── Misc ── */
.rp-native hr,
.shopify-policy__body hr{
  border: none;
  border-top: 1px solid var(--line);
  margin: 34px 0;
}
.rp-native img,
.shopify-policy__body img{ max-width: 100%; height: auto; margin: 20px 0; }
.rp-native > *:first-child,
.shopify-policy__body > *:first-child{ margin-top: 0; }

/* ── Mobile: no horizontal overflow ── */
.rp-native, .shopify-policy__body{ overflow-wrap: break-word; }
@media (max-width: 700px){
  .rp-native table,
  .shopify-policy__body table{ display: block; overflow-x: auto; }
  .rp-native h2,
  .shopify-policy__body h2{ letter-spacing: 0.22em; }
  .rp-native p, .rp-native li,
  .shopify-policy__body p,
  .shopify-policy__body li{ font-size: 15px; }
}

/* Ensure the removed legacy policy decoration cannot be reintroduced. */
.rp-native h2::before,
.shopify-policy__body h2::before {
  content: none !important;
  display: none !important;
}
/* Hide empty Shopify form-status containers */
.rw-form-status[hidden],
.rw-form-status:empty {
  display: none !important;
}

/* Lower the Patient Entry document beneath the fixed header */
.rowman-patient-entry-section .login-section {
  padding-top: 110px;
}

@media (max-width: 720px) {
  .rowman-patient-entry-section .login-section {
    padding-top: 90px;
  }
}/* =========================================================
   EMAIL POPUP — Shopify wrapper and visibility repair
   ========================================================= */

.rowman-email-popup-section {
  height: 0 !important;
  min-height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
}

.email-popup {
  position: fixed;
  inset: 0;
  z-index: 280;
  display: grid;
  place-items: center;
  padding: 24px;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity 0.35s ease, visibility 0.35s ease;
}

.email-popup.is-open {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}

.email-popup .epop-backdrop {
  position: absolute;
  inset: 0;
  z-index: 0;
  display: block;
  padding: 0;
  opacity: 1;
  pointer-events: auto;
}

.email-popup .epop-card {
  position: relative;
  z-index: 1;
  width: min(900px, calc(100vw - 48px));
  max-height: calc(100vh - 48px);
  overflow: auto;
}

.email-popup.is-open .epop-card {
  opacity: 1;
  transform: translateY(0) scale(1);
}

.email-popup:not(.is-open) .epop-card {
  opacity: 0;
  transform: translateY(20px) scale(0.96);
}

@media (max-width: 760px) {
  .email-popup {
    padding: 16px;
  }

  .email-popup .epop-card {
    width: calc(100vw - 32px);
    max-height: calc(100vh - 32px);
  }
}/* =========================================================
   HEADER — desktop navigation and logo proportion repair
   ========================================================= */

@media (min-width: 721px) {
  header {
    grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
    column-gap: 24px;
    padding-inline: 32px;
  }

  header nav.left,
  header nav.right {
    flex-wrap: nowrap;
    min-width: 0;
    gap: 24px;
  }

  header nav a {
    white-space: nowrap;
  }

  header .logo {
    display: flex;
    justify-content: center;
    min-width: 0;
  }

  header .logo .logo-img {
    width: auto !important;
    height: 27px !important;
    max-width: 220px;
    object-fit: contain;
  }
}

@media (min-width: 1700px) {
  header nav.left,
  header nav.right {
    gap: 24px;
  }

  header nav a {
    font-size: 11px;
    letter-spacing: 0.18em;
  }

  header .logo .logo-img {
    height: 28px !important;
    max-width: 225px;
  }
}/* =========================================================
   MOBILE FOOTER ACCORDION
   Desktop footer remains unchanged
   ========================================================= */

.footer-menu-toggle {
  appearance: none;
  background: transparent;
  border: 0;
  color: inherit;
  display: block;
  font: inherit;
  margin: 0;
  padding: 0;
  text-align: left;
  width: 100%;
}

.footer-menu-icon {
  display: none;
}

@media (max-width: 760px) {
  footer {
    padding: 42px 20px 24px;
  }

  footer .footer-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 0;
  }

  footer .brand {
    padding-bottom: 28px;
  }

  footer .footer-menu {
    border-top: 1px solid rgba(255, 255, 255, 0.12);
  }

  footer .footer-menu:last-of-type {
    border-bottom: 1px solid rgba(255, 255, 255, 0.12);
  }

  footer .footer-menu-toggle {
    align-items: center;
    cursor: pointer;
    display: flex;
    justify-content: space-between;
    min-height: 58px;
    padding: 0;
  }

  footer .footer-menu-toggle > span:first-child {
    color: rgba(255, 255, 255, 0.82);
    font-family: var(--font-mono, monospace);
    font-size: 10px;
    font-weight: 600;
    letter-spacing: 0.22em;
    line-height: 1.2;
    text-transform: uppercase;
  }

  footer .footer-menu-icon {
    display: block;
    height: 12px;
    position: relative;
    width: 12px;
  }

  footer .footer-menu-icon::before,
  footer .footer-menu-icon::after {
    background: rgba(255, 255, 255, 0.72);
    content: "";
    left: 50%;
    position: absolute;
    top: 50%;
    transform: translate(-50%, -50%);
    transition: opacity 180ms ease, transform 180ms ease;
  }

  footer .footer-menu-icon::before {
    height: 1px;
    width: 12px;
  }

  footer .footer-menu-icon::after {
    height: 12px;
    width: 1px;
  }

  footer .footer-menu.is-open .footer-menu-icon::after {
    opacity: 0;
    transform: translate(-50%, -50%) rotate(90deg);
  }

  footer .footer-menu-panel {
    max-height: 0;
    opacity: 0;
    overflow: hidden;
    transition: max-height 260ms ease, opacity 180ms ease;
  }

  footer .footer-menu.is-open .footer-menu-panel {
    max-height: 500px;
    opacity: 1;
  }

  footer .footer-menu-panel ul {
    display: block;
    margin: 0;
    padding: 0 0 16px;
  }

  footer .footer-menu-panel li {
    margin: 0;
  }

  footer .footer-menu-panel a {
    display: block;
    padding: 9px 0;
  }

  footer .footer-bottom {
    align-items: flex-start;
    flex-direction: column;
    gap: 10px;
    margin-top: 28px;
  }
}/* =========================================================
   RESPONSIVE HEADER CORRECTION
   ========================================================= */

/* Full desktop header */
@media (min-width: 1101px) {
  header {
    grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
    column-gap: 24px;
    padding-inline: 32px;
  }

  header nav.left,
  header nav.right {
    align-items: center;
    flex-wrap: nowrap;
    gap: 24px;
    min-width: 0;
  }

  header nav a {
    white-space: nowrap;
  }

  header .logo {
    justify-self: center;
    min-width: 0;
  }

  header .logo .logo-img {
    height: 27px !important;
    max-width: 220px;
    object-fit: contain;
    width: auto !important;
  }
}

/* Mobile and crowded tablet widths */
@media (max-width: 1100px) {
  header {
    column-gap: 8px;
    grid-template-columns: 44px minmax(0, 1fr) auto;
    padding: 14px 16px;
  }

  header nav.left {
    display: none !important;
  }

  header nav.right a:not(.cart-link) {
    display: none !important;
  }

  header .nav-toggle {
    display: grid !important;
    height: 44px;
    place-items: center;
    position: relative;
    width: 44px;
  }

  /* Hide the duplicate-looking Greek cross */
  header .nav-toggle svg {
    display: none !important;
  }

  /* Replace it with a minimal two-line menu icon */
  header .nav-toggle::before,
  header .nav-toggle::after {
    background: rgba(255, 255, 255, 0.86);
    content: "";
    height: 1px;
    left: 11px;
    position: absolute;
    transition: transform 180ms ease, top 180ms ease;
    width: 22px;
  }

  header .nav-toggle::before {
    top: 17px;
  }

  header .nav-toggle::after {
    top: 26px;
  }

  header .nav-toggle[aria-expanded="true"]::before {
    top: 22px;
    transform: rotate(45deg);
  }

  header .nav-toggle[aria-expanded="true"]::after {
    top: 22px;
    transform: rotate(-45deg);
  }

  header .logo {
    justify-self: center;
    min-width: 0;
    width: 100%;
  }

  header .logo .logo-img {
    display: block;
    height: auto !important;
    margin: 0 auto;
    max-height: 26px;
    max-width: 190px;
    object-fit: contain;
    width: 100% !important;
  }

  header .nav-right-group {
    gap: 8px;
  }

  header .cart {
    white-space: nowrap;
  }
}

@media (max-width: 420px) {
  header .logo .logo-img {
    max-width: 175px;
  }
}/* Restore original desktop footer heading appearance */
@media (min-width: 761px) {
  footer .footer-menu-toggle {
    color: var(--fuchsia);
    cursor: default;
    font-family: var(--mono);
    font-size: 10px;
    font-weight: 600;
    letter-spacing: 0.22em;
    margin-bottom: 18px;
    text-transform: uppercase;
  }

  footer .footer-menu-panel {
    max-height: none;
    opacity: 1;
    overflow: visible;
  }
}/* Ensure Journal filtering can hide featured and empty-state panels */
.journal-index [data-article-card][hidden],
.journal-index [data-journal-empty][hidden] {
  display: none !important;
}/* =========================================================
   RESTORE ORIGINAL HTML DESKTOP HEADER SCALE
   ========================================================= */

@media (min-width: 1101px) {
  header {
    padding: 22px 40px;
  }

  header nav.left,
  header nav.right {
    gap: 26px;
  }

  header nav a {
    font-size: 11px;
    letter-spacing: 0.18em;
    white-space: nowrap;
  }

  header .logo .logo-img {
    height: 28px !important;
    max-width: none;
    width: auto !important;
  }
}

/* Original HTML ultrawide values */
@media (min-width: 1700px) {
  header nav.left,
  header nav.right {
    gap: 32px;
  }

  header nav a {
    font-size: 13px;
    letter-spacing: 0.22em;
  }

  header .logo .logo-img {
    height: 36px !important;
    max-width: none;
    width: auto !important;
  }

  header .nav-home {
    height: 28px;
    width: 28px;
  }
}/* =========================================================
   LATEST RELEASES — TIGHT FOUR-CARD PRODUCT SHELF
   ========================================================= */

@media (min-width: 1101px) {
  .releases-row {
    grid-template-columns: repeat(auto-fit, minmax(280px, 380px));
    justify-content: center;
    gap: 26px;
    max-width: 1600px;
  }

  .release-img {
    aspect-ratio: 8 / 9;
  }
}

/* Tablet configuration */
@media (min-width: 761px) and (max-width: 1100px) {
  .releases-row {
    grid-template-columns: repeat(2, minmax(0, 380px));
    justify-content: center;
    gap: 24px;
  }

  .release-img {
    aspect-ratio: 8 / 9;
  }
}/* =========================================================
   LATEST RELEASES — ACTIVE PRE-ORDER BADGE
   ========================================================= */

.release-card .release-badge.is-preorder {
  align-items: center;
  background:
    linear-gradient(
      180deg,
      rgba(248, 198, 107, 0.10),
      rgba(248, 198, 107, 0.035)
    ),
    rgba(8, 7, 10, 0.90);
  border: 1px solid rgba(248, 198, 107, 0.72);
  box-shadow:
    0 0 0 1px rgba(248, 198, 107, 0.05),
    0 0 14px rgba(248, 198, 107, 0.08),
    inset 0 1px 0 rgba(255, 235, 185, 0.08);
  color: #f8c66b;
  display: inline-flex;
  font-family: var(--mono);
  font-size: 9px;
  font-weight: 600;
  gap: 8px;
  left: 14px;
  letter-spacing: 0.24em;
  line-height: 1;
  padding: 8px 11px;
  position: absolute;
  text-transform: uppercase;
  top: 14px;
  z-index: 5;
}

.release-card .release-badge.is-preorder::before {
  animation: rowman-preorder-pulse 2.4s ease-in-out infinite;
  background: #f8c66b;
  border-radius: 50%;
  box-shadow:
    0 0 5px rgba(248, 198, 107, 0.80),
    0 0 10px rgba(248, 198, 107, 0.35);
  content: "";
  flex: 0 0 auto;
  height: 5px;
  width: 5px;
}

@keyframes rowman-preorder-pulse {
  0%,
  100% {
    opacity: 1;
    transform: scale(1);
  }

  50% {
    opacity: 0.48;
    transform: scale(0.78);
  }
}

@media (prefers-reduced-motion: reduce) {
  .release-card .release-badge.is-preorder::before {
    animation: none;
  }
}/* Keep preorder badge black, restrained, and dimensionally stable */
.release-card .release-badge.is-preorder {
  background: #08070a;
  box-shadow:
    0 0 8px rgba(248, 198, 107, 0.10),
    inset 0 1px 0 rgba(255, 235, 185, 0.07);
}

/* Move the hover zoom from the whole image stage onto the product image only */
.release-card:hover .release-img {
  transform: none;
}

.release-card .release-img-el {
  transition: transform 0.7s cubic-bezier(.2, .7, .2, 1);
  will-change: transform;
}

.release-card:hover .release-img-el {
  transform: scale(1.06) translateY(-1.5%);
}

/* Counteract the card's slight scale so the badge retains its own dimensions */
.release-card:hover .release-badge {
  transform: scale(0.9785);
  transform-origin: top left;
}/* =========================================================
   PRODUCT PAGE — ORIGINAL HTML CLARITY RESTORATION
   ========================================================= */

/* Remove the artificial blurred-image backdrop */
.product-image-stage .pis-blur-bg {
  display: none !important;
}

.product-image-stage {
  background: #060509 !important;
}

/* Restore the sharp single product image */
.product-image-stage > .pis-image {
  height: 100%;
  object-fit: contain;
  opacity: 1 !important;
  width: 100%;
}

/* Restore sharp images inside the multi-image carousel */
.product-image-stage.has-carousel .pis-slide .pis-image {
  display: block;
  height: 100%;
  object-fit: contain;
  opacity: 1 !important;
  width: 100%;
}

/* Reduce the heavy atmospheric overlays on the image */
.product-image-stage::before {
  opacity: 0.25;
}

.product-image-stage::after {
  background:
    radial-gradient(
      80% 75% at 50% 50%,
      transparent 72%,
      rgba(0, 0, 0, 0.18) 100%
    );
}

/* Make color choices readable instead of anonymous squares */
.product-right .cw-swatch {
  align-items: center;
  background: rgba(8, 7, 10, 0.72);
  color: var(--ink-dim);
  display: inline-flex;
  font-family: var(--mono);
  font-size: 9px;
  height: 40px;
  justify-content: center;
  letter-spacing: 0.12em;
  min-width: 68px;
  padding: 0 12px;
  text-transform: uppercase;
  width: auto;
}

.product-right .cw-swatch::after {
  content: attr(title);
}

.product-right .cw-swatch:hover {
  border-color: rgba(255, 255, 255, 0.30);
  color: var(--ink);
}

.product-right .cw-swatch.is-active {
  background: rgba(20, 17, 24, 0.88);
  border-color: var(--fuchsia);
  color: #f3eef2;
}

/* Keep More to Consider substantial but clearly secondary */
.rowman-similar-section .similar-products {
  box-sizing: border-box;
  margin: 64px auto 0;
  max-width: 1600px;
  padding: 28px 40px 0;
}

.rowman-similar-section .sp-grid {
  gap: 18px;
}

.rowman-similar-section .sp-grid .chamber-stage {
  padding-bottom: 100% !important;
}

@media (max-width: 760px) {
  .rowman-similar-section .similar-products {
    margin-top: 48px;
    padding: 22px 20px 0;
  }

  .rowman-similar-section .sp-grid {
    gap: 12px;
  }
}/* =========================================================
   PRODUCT GALLERY — QUIET EDITORIAL CROSSFADE
   ========================================================= */

/* Remove the theatrical 3D travel */
.product-image-stage .pis-slide,
.product-image-stage .pis-slide.is-prev,
.product-image-stage .pis-slide.is-next,
.product-image-stage .pis-slide.is-enter-right,
.product-image-stage .pis-slide.is-enter-left,
.product-image-stage .pis-slide.is-exit-left,
.product-image-stage .pis-slide.is-exit-right,
.product-image-stage .pis-slide.is-leaving-left,
.product-image-stage .pis-slide.is-leaving-right,
.product-image-stage .pis-slide.is-far-left,
.product-image-stage .pis-slide.is-far-right {
  opacity: 0;
  transform: none !important;
  transition: opacity 520ms cubic-bezier(.22, .61, .36, 1);
}

.product-image-stage .pis-slide.is-active {
  opacity: 1;
  transform: none !important;
}

/* Remove the literal row of navigation dots */
.product-image-stage .pis-dots {
  display: none !important;
}

/* Quiet edge controls */
.product-image-stage .pis-arrow,
.product-image-stage.has-carousel .pis-arrow {
  background: rgba(8, 7, 10, 0.18);
  backdrop-filter: none;
  border: 0;
  border-radius: 0;
  color: rgba(255, 255, 255, 0.72);
  height: 64px;
  opacity: 0 !important;
  transition:
    opacity 220ms ease,
    color 220ms ease,
    transform 220ms ease;
  width: 32px;
}

.product-image-stage:hover .pis-arrow,
.product-image-stage:focus-within .pis-arrow {
  opacity: 0.68 !important;
}

.product-image-stage .pis-arrow:hover {
  color: var(--fuchsia);
}

/* Minimal editorial image count */
.product-image-stage .pis-counter,
.product-image-stage.has-carousel .pis-counter {
  background: rgba(8, 7, 10, 0.42);
  backdrop-filter: none;
  border: 0;
  color: rgba(255, 255, 255, 0.62);
  font-size: 8.5px;
  letter-spacing: 0.24em;
  padding: 6px 8px;
  right: 16px;
  top: 16px;
}

/* Keep unavailable options readable */
.product-right .size-btn.is-unavailable,
.product-right .cw-swatch.is-unavailable {
  opacity: 0.48 !important;
}

.product-right .size-btn.is-soldout,
.product-right .cw-swatch.is-soldout {
  color: rgba(238, 232, 240, 0.55);
  opacity: 0.68 !important;
  text-decoration: line-through;
  text-decoration-thickness: 1px;
}

/* Maintain usable gallery controls on touch devices */
@media (pointer: coarse) {
  .product-image-stage.has-carousel .pis-arrow {
    opacity: 0.52 !important;
  }
}/* Product gallery — clearer quiet controls */
.product-image-stage .pis-arrow,
.product-image-stage.has-carousel .pis-arrow {
  background: rgba(8, 7, 10, 0.5);
  border: 1px solid rgba(255, 255, 255, 0.18);
  color: rgba(255, 255, 255, 0.9);
  opacity: 0.72 !important;
}

.product-image-stage .pis-arrow:hover {
  background: rgba(8, 7, 10, 0.78);
  border-color: rgba(214, 20, 87, 0.65);
  color: #ffffff;
  opacity: 1 !important;
/* Product-page background adjustment removed */