/** Shopify CDN: Minification failed

Line 24:0 All "@import" rules must come first

**/
/* ============================================================
   Owl & Twig — Version 12 (footer fix + stock counter)
   v20: added .otg override to stop the site-wide heading/reveal
   rules from leaking into custom blog-article layouts
   ============================================================ */

:root {
  --owt-gold:        #C9A84C;
  --owt-gold-light:  #E8D5A3;
  --owt-gold-dark:   #9A7330;
  --owt-cream:       #FAF6EE;
  --owt-brown:       #3D2B1F;
  --owt-brown-mid:   #6B4C3B;
  --owt-brown-light: #A08070;
  --owt-white:       #FFFFFF;
  --owt-shadow:      rgba(61,43,31,0.15);
}

@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,600;0,700;1,400&family=Jost:wght@300;400;500;600&display=swap');

body {
  font-family: 'Jost', sans-serif;
  background-color: var(--owt-cream);
  color: var(--owt-brown);
}

h1, h2, h3, h4, .heading {
  font-family: 'Playfair Display', serif;
  color: var(--owt-brown);
}

/* ---------- STICKY NAV ---------- */
header-component {
  transition: background 0.4s ease, box-shadow 0.4s ease;
}
header-component.scrolled {
  background: var(--owt-cream) !important;
  box-shadow: 0 2px 20px var(--owt-shadow);
}

/* ---------- SCROLL REVEAL ---------- */
/* v26 fix: the activator JS that adds .owt-visible is not present on live
   pages, so .owt-reveal elements were stranded at opacity:0 (46 of 55 on a
   PDP, incl. product photos). Neutralised to a visible no-op — content
   renders immediately whether or not the observer ever runs. The .owt-visible
   and nth-child rules are retained inert so any markup/JS referencing them
   stays valid; re-enable motion later per-element, never blanket. */
.owt-reveal {
  opacity: 1;
  transform: none;
}
.owt-reveal.owt-visible { opacity: 1; transform: none; }

/* ---------- PARALLAX HERO ---------- */
.owt-parallax-hero {
  position: relative;
  overflow: hidden;
  min-height: 85vh;
  display: flex;
  align-items: center;
  justify-content: center;
}
.owt-parallax-hero__bg {
  position: absolute;
  inset: -15%;
  background-size: cover;
  background-position: center;
  will-change: transform;
}
.owt-parallax-hero__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(to bottom, rgba(61,43,31,0.45) 0%, rgba(61,43,31,0.20) 50%, rgba(61,43,31,0.55) 100%);
}
.owt-parallax-hero__content {
  position: relative;
  z-index: 2;
  text-align: center;
  padding: 3rem;
  color: var(--owt-white);
}
.owt-parallax-hero__content h1,
.owt-parallax-hero__content h2 {
  font-family: 'Playfair Display', serif;
  color: var(--owt-white);
  font-size: clamp(2.5rem, 6vw, 5rem);
  font-weight: 700;
  line-height: 1.1;
  margin-bottom: 1rem;
  text-shadow: 0 2px 20px rgba(0,0,0,0.35);
}
.owt-parallax-hero__content p {
  font-family: 'Jost', sans-serif;
  font-weight: 300;
  font-size: clamp(1rem, 2vw, 1.3rem);
  letter-spacing: 0.08em;
  color: var(--owt-gold-light);
  margin-bottom: 2rem;
}

/* ---------- HERO CTA ---------- */
.owt-hero-btn {
  display: inline-block;
  padding: 0.9rem 2.4rem;
  background: var(--owt-gold);
  color: var(--owt-white);
  font-family: 'Jost', sans-serif;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  font-size: 0.85rem;
  text-decoration: none;
  border: 2px solid var(--owt-gold);
  transition: background 0.3s, color 0.3s, transform 0.3s;
}
.owt-hero-btn:hover { background: transparent; color: var(--owt-white); transform: translateY(-2px); }

/* ---------- MARQUEE ---------- */
.owt-marquee-bar { background: var(--owt-brown); color: var(--owt-gold-light); padding: 0.7rem 0; overflow: hidden; }
.owt-marquee-track { display: flex; white-space: nowrap; animation: owt-marquee 28s linear infinite; }
.owt-marquee-item {
  display: inline-flex; align-items: center; padding: 0 3rem;
  font-family: 'Jost', sans-serif; font-weight: 500; font-size: 0.8rem;
  letter-spacing: 0.18em; text-transform: uppercase; color: var(--owt-gold-light);
}
.owt-marquee-item::before { content: '\2726'; margin-right: 1.5rem; color: var(--owt-gold); font-size: 0.6rem; }
@keyframes owt-marquee { 0% { transform: translateX(0); } 100% { transform: translateX(-50%); } }

/* ---------- CARD HOVER LIFT ---------- */
.card-wrapper, .product-card-wrapper {
  transition: transform 0.35s cubic-bezier(0.22,1,0.36,1), box-shadow 0.35s cubic-bezier(0.22,1,0.36,1);
}
.card-wrapper:hover, .product-card-wrapper:hover { transform: translateY(-6px); box-shadow: 0 16px 40px rgba(61,43,31,0.18); }
.card__media img { transition: transform 0.5s cubic-bezier(0.22,1,0.36,1); }
.card-wrapper:hover .card__media img, .product-card-wrapper:hover .card__media img { transform: scale(1.04); }

/* ---------- SECTION HEADINGS ---------- */
.shopify-section h2, .shopify-section .section-header__title {
  font-family: 'Playfair Display', serif;
  position: relative; display: inline-block; padding-bottom: 0.6rem;
}
.shopify-section h2::after, .shopify-section .section-header__title::after {
  content: ''; position: absolute; bottom: 0; left: 50%; transform: translateX(-50%);
  width: 48px; height: 2px; background: var(--owt-gold);
}

/* v20 fix: the rule above targets every h2 in every .shopify-section, which
   catches custom blog-article layouts (class "otg" — Hen on Nest, Boehm,
   Steuben, Palatnik, etc.) and forces their headings to shrink-to-content
   width with an unwanted gold underline. Reset both properties inside .otg
   so those posts keep their own typography untouched. */
.otg h2, .otg h3, .otg .section-header__title {
  display: block !important;
  padding-bottom: 0 !important;
}
.otg h2::after, .otg h3::after, .otg .section-header__title::after {
  content: none !important;
}

/* ---------- BUTTONS ---------- */
.button, .btn { font-family: 'Jost', sans-serif !important; letter-spacing: 0.1em !important; transition: background 0.3s, transform 0.3s !important; }
.button:hover, .btn:hover { transform: translateY(-2px); }

/* ============================================================
   STOCK COUNTER — Owl & Twig palette
   ============================================================ */

/* Override Whisper's default color vars for inventory states */
:root {
  --color-lowstock:   #C9A84C;   /* gold — matches brand perfectly for 'limited batch' feel */
  --color-instock:    #5C7A4E;   /* muted botanical green */
  --color-outofstock: #9A7070;   /* muted dusty rose-brown */
}

/* Base inventory row */
product-inventory {
  display: block;
}

.product-inventory__status {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-family: 'Jost', sans-serif;
  font-size: 0.8rem;
  font-weight: 500;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

/* LOW STOCK — warm amber pill, matches gold brand tone */
.product-inventory__icon-low ~ .product-inventory__text,
product-inventory:has(.product-inventory__icon-low) .product-inventory__text {
  color: #7A5A1E;
}

product-inventory:has(.product-inventory__icon-low) .product-inventory__status {
  background: #FDF3DC;
  color: #7A5A1E;
  padding: 6px 12px;
  border-radius: 2px;
  border-left: 3px solid var(--owt-gold);
}

/* IN STOCK — subtle botanical green */
product-inventory:has(.product-inventory__icon-in_stock) .product-inventory__status {
  color: #3D5C30;
}

/* OUT OF STOCK — muted, not alarming */
product-inventory:has(.product-inventory__icon-out_of_stock) .product-inventory__status {
  color: var(--owt-brown-light);
}

/* Icon sizing */
.product-inventory__icon,
.product-inventory__icon svg {
  width: 14px;
  height: 14px;
  flex-shrink: 0;
}

/* Low stock pulse animation on the icon */
.product-inventory__icon-low {
  animation: owt-pulse 2s ease-in-out infinite;
}

@keyframes owt-pulse {
  0%, 100% { opacity: 1; }
  50%       { opacity: 0.5; }
}

/* ============================================================
   FOOTER FIX
   ============================================================ */
footer, footer > *, footer .shopify-section {
  background-color: var(--owt-brown) !important;
  --color-background: 61 43 31 !important;
  --color-foreground: 232 213 163 !important;
  --color-foreground-heading: 250 246 238 !important;
  --color-border: 250 246 238 !important;
}
footer, footer *:not(a):not(button) { color: var(--owt-cream); }
footer p, footer li, footer label, footer span:not(.owt-marquee-item),
footer [class*='copyright'], footer [class*='policy'], footer .footer-utilities {
  color: var(--owt-brown-light) !important;
}
footer a { color: var(--owt-gold-light) !important; text-decoration: none; }
footer a:hover { color: var(--owt-gold) !important; }
footer h2, footer h3, footer h4 { font-family: 'Playfair Display', serif; color: var(--owt-cream) !important; }
footer input[type='email'], footer input[type='text'], footer input {
  background: rgba(250,246,238,0.07) !important;
  border-color: rgba(250,246,238,0.22) !important;
  color: var(--owt-cream) !important;
}
footer input::placeholder { color: var(--owt-brown-light) !important; opacity: 1; }
footer button, footer [type='submit'] { background: var(--owt-gold) !important; border-color: var(--owt-gold) !important; color: var(--owt-white) !important; }
footer svg, footer svg path, footer svg use { fill: var(--owt-gold-light) !important; color: var(--owt-gold-light) !important; stroke: var(--owt-gold-light) !important; }
footer a:hover svg, footer a:hover svg path { fill: var(--owt-gold) !important; stroke: var(--owt-gold) !important; }
footer .footer-utilities, footer [class*='footer-utilities'], footer [class*='utilities'] {
  border-top: 1px solid rgba(250,246,238,0.12) !important;
  background-color: var(--owt-brown) !important;
}
footer * { border-color: rgba(250,246,238,0.10) !important; }

/* ============================================================
   PDP REDESIGN — v26
   Root cause of the washed-out product page: scheme-1 sets
   --color-foreground to rgb(61 48 32 / 0.8) — an 80% alpha that
   drags the badge, stock line, price and body copy to ~3.9:1 on
   cream (fails AA). Everything below restores contrast and builds
   a real type/spacing hierarchy. Scoped to the product template
   only via [data-template^="product"] so nothing else shifts.
   No JSON template edits — Horizon's product.json is left intact.
   ============================================================ */
[data-template^="product"] {
  /* full-opacity foreground: 4.5:1+ on cream, brand-consistent */
  --color-foreground: 61 43 31;
}

/* ---- Eyebrow: "Curated by Owl & Twig" ---- */
[data-template^="product"] .product-details > .group-block:first-child p,
[data-template^="product"] [data-testid="product-information-details"] > .group-block:first-child p {
  color: var(--owt-gold-dark) !important;
  font-family: 'Jost', sans-serif;
  font-weight: 600;
  letter-spacing: 0.16em;
  font-size: 0.72rem;
}

/* ---- Product title: cap runaway vintage titles, tighten ---- */
[data-template^="product"] .product-details h1 {
  font-family: 'Playfair Display', serif;
  font-size: clamp(1.9rem, 1.2rem + 2.2vw, 2.9rem) !important;
  line-height: 1.08 !important;
  color: var(--owt-brown) !important;
  letter-spacing: -0.01em;
  margin-bottom: 0.35rem;
  text-wrap: balance;
}

/* ---- Price: promote to the anchor it should be ---- */
[data-template^="product"] .product-details .price,
[data-template^="product"] [class*="price"] .price__current {
  font-family: 'Jost', sans-serif;
  font-size: 1.4rem !important;
  font-weight: 500;
  color: var(--owt-brown) !important;
  letter-spacing: 0.01em;
}

/* ---- Stock counter: let the botanical green actually win ---- */
[data-template^="product"] product-inventory:has(.product-inventory__icon-in_stock) .product-inventory__status,
[data-template^="product"] .product-inventory__status {
  color: #3D5C30 !important;
  font-weight: 600;
}

/* ---- Buy area rhythm: consistent vertical scale ---- */
[data-template^="product"] .product-details .group-block { row-gap: 0; }
[data-template^="product"] buy-buttons,
[data-template^="product"] [class*="buy-buttons"] {
  margin-top: 0.5rem;
}

/* ---- Primary CTA: gold, confident, full-width on mobile ---- */
[data-template^="product"] .add-to-cart-button,
[data-template^="product"] button[name="add"] {
  background: var(--owt-gold) !important;
  border: 2px solid var(--owt-gold) !important;
  color: var(--owt-brown) !important;
  font-family: 'Jost', sans-serif !important;
  font-weight: 600 !important;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  font-size: 0.82rem !important;
  min-height: 52px;
  transition: background 0.25s, transform 0.25s, box-shadow 0.25s;
}
[data-template^="product"] .add-to-cart-button:hover,
[data-template^="product"] button[name="add"]:hover {
  background: var(--owt-gold-dark) !important;
  border-color: var(--owt-gold-dark) !important;
  transform: translateY(-1px);
  box-shadow: 0 8px 22px rgba(154,115,48,0.28);
}

/* ---- Gallery: thumbnail rail visible on desktop, tidy on mobile ---- */
@media screen and (min-width: 750px) {
  [data-template^="product"] .product-media-container [class*="thumbnail"] {
    opacity: 1;
    visibility: visible;
  }
}

/* ---- Shipping note: quieter, less boxed ---- */
[data-template^="product"] [class*="shipping"] p,
[data-template^="product"] .product-details [style*="c8d4b8"] {
  color: var(--owt-brown-mid) !important;
}

/* ---- Mobile: full-width CTA, safe tap targets ---- */
@media screen and (max-width: 749px) {
  [data-template^="product"] .add-to-cart-button,
  [data-template^="product"] button[name="add"] {
    width: 100%;
    min-height: 54px;
  }
  [data-template^="product"] .product-details h1 {
    font-size: clamp(1.7rem, 6vw, 2.2rem) !important;
  }
}
