/* verde-lux.css · build 97
   Shared polish layer loaded by every page. Additive only: it never
   changes layout, copy, or behaviour, only how things respond. Every
   effect is gated by prefers-reduced-motion, and nothing here can hide
   content if scripts fail (reveal states are set by JS, with failsafes). */

:root{--lux-ease:cubic-bezier(.16,1,.30,1);}

/* Top bar: a quiet shadow once the page has moved under it */
body>nav{transition:box-shadow .5s var(--lux-ease),border-color .5s var(--lux-ease);}
body>nav.is-scrolled{box-shadow:0 14px 40px -20px rgba(0,0,0,.75);border-bottom-color:rgba(201,168,76,.28);}

/* Buttons: real press feedback, and a slow gold sheen on the primary actions */
.btn-primary,.submit-btn,.add-btn,.btn-secondary,.btn-ghost,.nav-join,.cart-btn,.filter-btn{
  -webkit-tap-highlight-color:rgba(201,168,76,.15);}
.btn-primary:active,.submit-btn:active,.btn-secondary:active,.nav-join:active{transform:scale(.985);}
.btn-primary,.submit-btn{position:relative;overflow:hidden;isolation:isolate;}
.btn-primary::after,.submit-btn::after{content:'';position:absolute;top:0;bottom:0;left:-60%;width:40%;z-index:-1;pointer-events:none;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.28),transparent);transform:skewX(-18deg);opacity:0;}
@media(hover:hover){
  .btn-primary:hover::after,.submit-btn:hover::after{animation:luxSheen 1.1s var(--lux-ease);}
}
@keyframes luxSheen{0%{left:-60%;opacity:0}20%{opacity:1}100%{left:130%;opacity:0}}

/* Form fields: a soft gold halo instead of a hard outline jump */
input:not([type=checkbox]):not([type=radio]):not([type=range]):focus,select:focus,textarea:focus{
  border-color:rgba(201,168,76,.75);box-shadow:0 0 0 3px rgba(201,168,76,.12);outline:none;}
input,select,textarea{transition:border-color .35s var(--lux-ease),box-shadow .45s var(--lux-ease),background-color .35s var(--lux-ease);}

/* Show / hide password toggle (added by verde-lux.js) */
.lux-pw-toggle{position:absolute;z-index:2;background:none;border:none;color:var(--muted,#8a9180);cursor:pointer;
  font-family:'Inter',sans-serif;font-size:10px;letter-spacing:.14em;text-transform:uppercase;padding:8px 6px;min-height:40px;}
.lux-pw-toggle:hover,.lux-pw-toggle:focus-visible{color:var(--gold,#c9a84c);}

/* Cards: the edge warms up under the cursor (desktop pointers only) */
@media(hover:hover) and (pointer:fine){
  .lux-lit{position:relative;}
  .lux-lit::before{content:'';position:absolute;inset:0;pointer-events:none;z-index:1;border-radius:inherit;opacity:0;
    background:radial-gradient(280px circle at var(--mx,50%) var(--my,50%),rgba(201,168,76,.13),transparent 62%);
    transition:opacity .5s var(--lux-ease);}
  .lux-lit:hover::before{opacity:1;}
}

/* Sign-in and sign-up card: settles in once, with a gold hairline on top */
.login-card{position:relative;box-shadow:0 30px 80px -30px rgba(0,0,0,.65);}
.login-card::before{content:'';position:absolute;top:0;left:12%;right:12%;height:1px;z-index:2;pointer-events:none;
  background:linear-gradient(90deg,transparent,rgba(201,168,76,.7),transparent);}
.js .login-card,.js .checkout-wrap>*:first-child{animation:luxRise .9s var(--lux-ease) both;}
@keyframes luxRise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}

/* Page hand-off veil (added by verde-lux.js) */
.lux-veil{position:fixed;inset:0;background:#0d1208;opacity:0;pointer-events:none;z-index:9990;transition:opacity .2s ease;}
.lux-veil.on{opacity:1;}

/* Footer links: an underline draws in instead of a colour snap */
.footer-links a{background:linear-gradient(currentColor,currentColor) 0 100%/0 1px no-repeat;padding-bottom:2px;
  transition:background-size .5s var(--lux-ease),color .35s ease;}
.footer-links a:hover{background-size:100% 1px;}

@media(prefers-reduced-motion:reduce){
  .btn-primary::after,.submit-btn::after,.lux-lit::before{display:none!important;}
  .js .login-card,.js .checkout-wrap>*:first-child{animation:none!important;}
  .lux-veil{display:none!important;}
  .footer-links a{transition:none;}
}

/* ═══ build 98 · design system pass ═══════════════════════════════════
   Sources: frontend-design, ui-ux-pro-max, impeccable rules.
   1. Type: Jost replaces Inter (Inter is the default every template uses;
      Jost is a geometric sans in the Futura family, which sits well
      beside Cormorant). The 'Inter' name is re-pointed at Jost so all 29
      pages switch without touching their markup. Loaded from Google's
      own font host, as the pages already do for Inter.
   2. One accent, not two: headline words keep their italic but drop the
      gold, so gold means "action" or "price" and nothing else.
   3. Muted text raised for contrast on the moss and forest panels.
   ================================================================== */
@font-face{font-family:'Inter';font-style:normal;font-weight:300 500;font-display:swap;
  src:url(https://fonts.gstatic.com/s/jost/v20/92zatBhPNqw73ord4iYl.woff2) format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:'Inter';font-style:normal;font-weight:300 500;font-display:swap;
  src:url(https://fonts.gstatic.com/s/jost/v20/92zatBhPNqw73oTd4g.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
body{font-weight:400;font-size:15.5px;}

h1 em,h2 em,.hero-title em,.section-title em,.age-title em,.strain-name em,.page-title em{color:inherit!important;}

/* labels: quieter tracking, Jost carries the caps better at a lower spread */
.btn-primary,.btn-ghost,.btn-secondary,.submit-btn,.nav-join,.cart-btn,.add-btn,.filter-btn{letter-spacing:.09em;font-weight:500;}
.section-eyebrow,.hero-eyebrow{letter-spacing:.18em;}

/* Homepage strain rail: a real rail at every width, with arrows on desktop.
   (The old 6-column grid left the seventh strain orphaned on its own row.) */
.feat-scroll{display:flex!important;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;gap:20px;
  padding-bottom:6px;scrollbar-width:none;margin-left:0;margin-right:0;}
.feat-scroll::-webkit-scrollbar{display:none;}
.feat-card{flex:0 0 calc((100% - 60px)/4);scroll-snap-align:start;}
.feat-name{font-size:22px;}
@media(max-width:1100px){.feat-card{flex-basis:calc((100% - 40px)/3);}}
@media(max-width:820px){.feat-card{flex-basis:calc((100% - 20px)/2.2);}}
@media(max-width:560px){
  .feat-scroll{margin:0 -20px;padding-left:20px;padding-right:20px;gap:12px;}
  .feat-card{flex-basis:68%;}
  .feat-name{font-size:19px;}
}
.rail-bar{display:flex;align-items:center;gap:28px;margin-top:22px;}
.rail-progress{display:block!important;flex:1;height:1px;margin:0!important;background:rgba(201,168,76,.22);border-radius:0;overflow:hidden;position:relative;}
.rail-progress i{display:block;height:100%;width:30%;background:var(--gold);transform:none!important;transition:margin-left .15s linear,width .25s var(--lux-ease);}
.rail-arrows{display:none;gap:10px;}
@media(min-width:901px){.rail-arrows{display:flex;}}
.rail-arrow{width:44px;height:44px;border-radius:50%;background:none;border:1px solid rgba(201,168,76,.35);color:var(--gold);
  display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background-color .3s ease,border-color .3s ease,opacity .3s ease;}
.rail-arrow:hover:not(:disabled){background:rgba(201,168,76,.12);border-color:var(--gold);}
.rail-arrow:disabled{opacity:.3;cursor:default;}
.feat-all{margin-top:44px;}
/* the hero overlaps the next section by 140px (margin-bottom:-140px), so the heading needs that much extra room */
@media(min-width:901px){.feat-wrap{padding-top:calc(140px + 72px);padding-bottom:110px;}}
