/* ==========================================================================
   BULLY Header, Footer & Shop UI
   Everything is scoped to .bully-scope so the plugin never leaks into the
   theme. The accent metal arrives as CSS variables from PHP.
   ========================================================================== */

:root{
  /* the shared moving reflection — declared only here so the value JS writes
     to the document element is inherited everywhere. Redeclaring it inside
     .bully-scope froze it at 0% for every element in a scope. */
  --sheen:0%;
}

:root,
.bully-scope{
  /* Warm blacks, not neutral ones: a grey-black beside gold still reads as
     black and white. */
  --bully-ink:#070503;
  --bully-char:#100C06;
  --bully-smoke:#181209;

  /* hairlines and washes are mixed from the accent, so the interface follows
     whichever metal is selected */
  --bully-line:rgba(var(--m-glow,232,200,106),.20);
  --bully-line-2:rgba(var(--m-glow,232,200,106),.34);
  --bully-tint:rgba(var(--m-glow,232,200,106),.05);
  --bully-tint-2:rgba(var(--m-glow,232,200,106),.10);
  --bully-bone:#FFFFFF;
  --bully-70:color-mix(in srgb, var(--bully-bone) 70%, transparent);
  --bully-45:color-mix(in srgb, var(--bully-bone) 45%, transparent);
  --bully-25:color-mix(in srgb, var(--bully-bone) 25%, transparent);

  --bully-display:'Archivo','Helvetica Neue',Arial,sans-serif;
  --bully-body:'Inter Tight',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  --bully-mono:'JetBrains Mono',ui-monospace,Menlo,monospace;

  --bully-h:88px;
  --bully-h-stuck:66px;
  --bully-pad:clamp(18px,4vw,64px);
  --bully-ease:cubic-bezier(.19,1,.22,1);


  --metal:linear-gradient(100deg,
    var(--m-void) 0%, var(--m-steel) 9%, var(--m-mid) 19%,
    var(--m-spec) 30%, var(--m-light) 40%, var(--m-steel) 52%,
    var(--m-mid) 64%, var(--m-spec) 75%, var(--m-light) 85%,
    var(--m-steel) 94%, var(--m-void) 100%);
  --metal-text:linear-gradient(100deg,
    var(--m-steel) 0%, var(--m-mid) 13%, var(--m-spec) 27%,
    var(--m-light) 39%, var(--m-mid) 53%, var(--m-spec) 69%,
    var(--m-light) 83%, var(--m-mid) 100%);

}

.bully-scope{
  color:var(--bully-bone);
  font-family:var(--bully-body);
}

.bully-scope *,
.bully-scope *::before,
.bully-scope *::after{box-sizing:border-box}

.bully-scope button{background:none;border:0;padding:0;cursor:pointer;color:inherit;font:inherit}
.bully-scope a{color:inherit;text-decoration:none}
.bully-scope ul{list-style:none;margin:0;padding:0}
.bully-scope img{display:block;max-width:100%}
.bully-scope :focus-visible{outline:2px solid var(--m-light);outline-offset:3px}

/* --------------------------------------------------------------------------
   THE CONTENT MEASURE
   Every section is full-bleed; its children are held to --bully-max and
   centred. High specificity on purpose: this must not lose to a widget rule
   or a theme reset.
   -------------------------------------------------------------------------- */
.bully-sec > *:not(.bully-ed__bg):not(.bully-hero__bg):not(.bully-hero__veil):not(.bully-nlsec__bg):not(.bully-nlsec__glow):not(.bully-scroller):not(.bully-gal--strip):not(.bully-marq__t),
.bully-scope .bully-inner{
  width:100%;
  max-width:var(--bully-max,1200px);
  margin-inline:auto;
  padding-inline:clamp(18px,4vw,48px);
  box-sizing:border-box;
}
.bully-sec{overflow-x:clip}
.bully-sec.bully-hero,
.bully-sec.bully-marq{overflow:hidden}

/* logos must keep the size the widget asked for, whatever the theme resets */
.bully-scope .bully-credit img{height:var(--bully-credit-h,20px); width:auto; filter:none}
.bully-scope .bully-brand__mark{height:var(--bully-logo-h,38px); width:auto}
.bully-hd.is-stuck .bully-scope .bully-brand__mark,
.bully-scope.bully-hd.is-stuck .bully-brand__mark{height:var(--bully-logo-h-stuck,30px)}
.bully-scope .bully-ft__logo{height:var(--bully-ft-logo-h,52px); width:auto}


/* ==========================================================================
   SHARED UTILITIES
   These are used by section widgets as well as the shop, so they must live
   in the stylesheet that always loads. Keeping the ratio classes in the
   shop sheet meant an editorial frame on a page with no products had no
   aspect ratio, no height, and therefore no visible image.
   ========================================================================== */
/* ---------- aspect ratios ---------- */
.bully-ratio-4-5{aspect-ratio:4/5}
.bully-ratio-1-1{aspect-ratio:1/1}
.bully-ratio-3-4{aspect-ratio:3/4}
.bully-ratio-2-3{aspect-ratio:2/3}
.bully-ratio-16-9{aspect-ratio:16/9}

/* a frame with no explicit ratio still needs one */
.bully-frame:not([class*="bully-ratio-"]){aspect-ratio:4/5}

.bully-card__sweep{position:absolute; inset:0; z-index:2; pointer-events:none; overflow:hidden}
.bully-card__sweep::before{
  content:''; position:absolute; inset:-30% -60%; opacity:.26;
  background:linear-gradient(100deg,transparent 40%,var(--m-spec) 50%,transparent 60%);
  transform:translateX(-130%) skewX(-16deg); transition:transform 1.1s var(--bully-ease);
}
.bully-card:hover .bully-card__sweep::before{transform:translateX(130%) skewX(-16deg)}

.bully-badge{
  font-family:var(--bully-mono); font-size:.55rem; letter-spacing:.2em; text-transform:uppercase;
  padding:5px 9px; background:rgba(5,5,6,.75); backdrop-filter:blur(6px);
  color:var(--bully-bone); border:1px solid var(--bully-line-2); line-height:1;
}
.bully-badge.is-metal{
  border:0; color:var(--m-on,#08090B); font-weight:500;
  background:var(--m-fill,linear-gradient(100deg,#8E9BA8 0%,#FFFFFF 26%,#DCE5EC 48%,#7F8D9B 72%,#EEF4F8 100%)); background-size:300% 100%; background-position:var(--sheen,0%) 0;
}
.bully-badge.is-out{color:var(--bully-45)}

/* ---------- shared type ---------- */
.bully-dsp{
  font-family:var(--bully-display); font-weight:800; font-variation-settings:'wdth' 110;
  text-transform:uppercase; line-height:.95; letter-spacing:-.01em; margin:0;
  font-size:clamp(1.3rem,2.2vw,1.9rem);
}
.bully-lede{margin:0;font-size:.95rem;line-height:1.6;font-weight:300;color:var(--bully-70)}
.bully-mono{
  font-family:var(--bully-mono); font-size:.68rem; letter-spacing:.2em;
  text-transform:uppercase; margin:0;
}
.bully-dim{color:var(--bully-45)}
.bully-eyebrow{
  font-family:var(--bully-mono); font-size:.62rem; letter-spacing:.32em;
  text-transform:uppercase; color:var(--bully-45); margin:0;
  display:flex; align-items:center; gap:12px;
}
.bully-eyebrow::before{
  content:''; width:28px; height:1px; flex:none;
  background:var(--metal); background-size:400% 100%; background-position:var(--sheen,0%) 0;
}
.bully-metal{
  background:var(--metal-text); background-size:400% 100%; background-position:var(--sheen,0%) 0;
  -webkit-background-clip:text; background-clip:text;
  color:transparent; -webkit-text-fill-color:transparent;
}
.bully-hair{
  display:block; height:1px; border:0; width:100%;
  background:var(--metal); background-size:400% 100%; background-position:var(--sheen,0%) 0;
}
.bully-row{display:flex; gap:12px; align-items:center; flex-wrap:wrap}
.bully-row--between{justify-content:space-between; width:100%}
.bully-row--tight{gap:8px}

/* ---------- buttons ---------- */
.bully-btn{
  position:relative; display:inline-flex; align-items:center; justify-content:center; gap:10px;
  padding:15px 28px; overflow:hidden; isolation:isolate; text-align:center;
  font-family:var(--bully-mono); font-size:.82rem; font-weight:600;
  letter-spacing:.2em; text-transform:uppercase; line-height:1;
  transition:color .4s var(--bully-ease), transform .4s var(--bully-ease), opacity .3s;
}
.bully-btn::after{
  content:''; position:absolute; inset:-40% -60%; z-index:1; pointer-events:none; opacity:.7;
  background:linear-gradient(100deg,transparent 35%,var(--m-spec) 50%,transparent 65%);
  transform:translateX(-120%) skewX(-18deg); transition:transform .85s var(--bully-ease);
  mix-blend-mode:overlay;
}
.bully-btn:hover::after{transform:translateX(120%) skewX(-18deg)}
.bully-btn--metal,
.bully-scope .bully-btn--metal,
.bully-card__act .bully-btn--metal{
  /* black and gold, not a gold slab: dark ground, gold rim, gold wash,
     white label */
  background-color:#0C0803;
  background-image:
    linear-gradient(100deg,transparent 38%,rgba(255,255,255,.16) 50%,transparent 62%),
    linear-gradient(155deg,
      rgba(var(--m-glow,232,200,106),.42) 0%,
      rgba(var(--m-glow,232,200,106),.14) 38%,
      rgba(0,0,0,.55) 72%,
      rgba(var(--m-glow,232,200,106),.26) 100%);
  background-size:220% 100%, 100% 100%;
  background-position:var(--sheen,0%) 0, 0 0;
  background-repeat:no-repeat;
  border:1px solid rgba(var(--m-glow,232,200,106),.55);
  color:#FFFFFF;
  min-height:48px;
  box-shadow:
    inset 0 1px 0 rgba(var(--m-glow,232,200,106),.32),
    inset 0 -1px 0 rgba(0,0,0,.5),
    0 12px 26px -16px rgba(0,0,0,.85);
}
.bully-btn--metal:hover{transform:translateY(-2px)}
.bully-btn--ghost{color:var(--bully-bone); border:1px solid var(--bully-line-2)}
.bully-btn--ghost:hover{border-color:var(--m-mid); color:var(--m-spec)}
.bully-btn--sm{padding:12px 18px; font-size:.74rem}
.bully-btn--full{width:100%}
.bully-btn[disabled],.bully-btn.is-busy{opacity:.5; pointer-events:none}
.bully-btn.is-busy span{opacity:.35}

.bully-ulink{
  position:relative; align-self:flex-start; padding-bottom:4px;
  font-family:var(--bully-mono); font-size:.66rem; letter-spacing:.18em; text-transform:uppercase;
  color:var(--bully-70);
}
.bully-ulink::after{
  content:''; position:absolute; left:0; bottom:0; width:100%; height:1px;
  background:var(--metal); background-size:400% 100%; background-position:var(--sheen,0%) 0;
  transform:scaleX(0); transform-origin:right; transition:transform .5s var(--bully-ease);
}
.bully-ulink:hover{color:var(--bully-bone)}
.bully-ulink:hover::after{transform:scaleX(1); transform-origin:left}

/* ==========================================================================
   HEADER
   ========================================================================== */
.bully-hd{position:relative; z-index:96}
/* `position:sticky` can only move within its own parent. Elementor wraps the
   widget in a container exactly as tall as the header, so sticky had nothing
   to travel through. JS promotes it to fixed and inserts a flow spacer. */
.bully-hd.is-fixed{position:fixed; top:0; left:0; right:0; width:100%; z-index:96}
.bully-hd__spacer{display:block; width:100%; flex:none}

.bully-hd__bar{
  position:relative;
  transition:background .5s var(--bully-ease), backdrop-filter .5s var(--bully-ease);
}
.bully-hd:not(.is-transparent) .bully-hd__bar{background:var(--bully-ink)}
.bully-hd__bar::after{
  content:''; position:absolute; left:0; right:0; bottom:0; height:1px; opacity:0;
  background:var(--metal); background-size:400% 100%; background-position:var(--sheen,0%) 0;
  transition:opacity .5s;
}
.bully-hd.is-stuck .bully-hd__bar{background:rgba(5,5,6,.72); backdrop-filter:blur(16px) saturate(140%)}
.bully-hd.is-stuck .bully-hd__bar::after{opacity:.7}

.bully-hd__in{
  display:flex; align-items:center; justify-content:space-between; gap:22px;
  height:var(--bully-h); padding-inline:var(--bully-pad);
  max-width:var(--bully-max,1200px); margin-inline:auto;
  transition:height .5s var(--bully-ease);
}
.bully-hd.is-stuck .bully-hd__in{height:var(--bully-h-stuck)}

/* brand */
.bully-brand{display:flex; align-items:center; gap:12px}
.bully-brand__mark{height:38px; width:auto; transition:height .5s var(--bully-ease)}
.bully-brand__mark.is-tinted{
  display:block; aspect-ratio:1/.93; width:auto;
  background:var(--metal-text); background-size:400% 100%; background-position:var(--sheen,0%) 0;
  -webkit-mask:var(--bully-logo) center/contain no-repeat;
  mask:var(--bully-logo) center/contain no-repeat;
}
.bully-hd.is-stuck .bully-brand__mark{height:30px}
.bully-brand__txt{
  font-family:var(--bully-display); font-weight:900; font-variation-settings:'wdth' 120;
  font-size:1.05rem; letter-spacing:.24em; text-indent:.24em; text-transform:uppercase;
}

/* nav */
.bully-nav{display:flex; gap:clamp(16px,2.2vw,36px)}
.bully-nav a{
  position:relative; padding-block:8px; color:var(--bully-70);
  font-family:var(--bully-mono); font-size:.7rem; letter-spacing:.2em; text-transform:uppercase;
  transition:color .4s;
}
.bully-nav a::after{
  content:''; position:absolute; left:0; bottom:0; width:100%; height:1px;
  background:var(--metal); background-size:400% 100%; background-position:var(--sheen,0%) 0;
  transform:scaleX(0); transform-origin:right; transition:transform .5s var(--bully-ease);
}
.bully-nav a:hover,
.bully-nav .current-menu-item > a{color:var(--bully-bone)}
.bully-nav a:hover::after,
.bully-nav .current-menu-item > a::after{transform:scaleX(1); transform-origin:left}
.bully-nav .bully-menu{display:flex; gap:clamp(16px,2.2vw,36px); align-items:center}
.bully-nav li{display:inline-block}
.bully-mob .bully-menu{display:block}
.bully-mob .bully-menu li + li{margin-top:2px}

/* utility icons */
.bully-tools{display:flex; align-items:center; gap:4px}
.bully-ico{
  position:relative; width:42px; height:42px; display:grid; place-items:center;
  color:var(--bully-70); transition:color .35s;
}
.bully-ico:hover{color:var(--m-spec)}
.bully-ico svg{width:19px; height:19px}
.bully-count{
  position:absolute; top:5px; right:3px; min-width:16px; height:16px; padding:0 4px;
  border-radius:9px; display:grid; place-items:center;
  background-color:#C9D3DC;
  background-image:var(--m-fill,linear-gradient(100deg,#8E9BA8 0%,#FFFFFF 26%,#DCE5EC 48%,#7F8D9B 72%,#EEF4F8 100%));
  background-size:300% 100%; background-position:var(--sheen,0%) 0;
  color:var(--m-on,#08090B); font-family:var(--bully-mono); font-size:.56rem; font-weight:500;
  transform:scale(0); transition:transform .4s var(--bully-ease);
}
.bully-count.is-on{transform:scale(1)}

.bully-burger{position:relative; z-index:2; width:44px; height:44px; display:none; place-items:center}
.bully-burger span{display:block; width:22px; height:1.5px; background:currentColor; transition:transform .4s var(--bully-ease), opacity .3s}
.bully-burger span + span{margin-top:6px}
.bully-menu-open .bully-burger span:nth-child(1){transform:translateY(7.5px) rotate(45deg)}
.bully-menu-open .bully-burger span:nth-child(2){opacity:0}
.bully-menu-open .bully-burger span:nth-child(3){transform:translateY(-7.5px) rotate(-45deg)}

/* announcement */
.bully-ann{position:relative; background:#000; overflow:hidden}
.bully-ann__track{
  position:relative; display:grid; place-items:center;
  min-height:38px; padding:8px 46px; text-align:center;
}
.bully-ann__msg{
  grid-area:1/1; opacity:0; transform:translateY(6px); pointer-events:none;
  transition:opacity .5s, transform .5s;
  font-family:var(--bully-mono); font-size:.62rem; letter-spacing:.22em;
  text-transform:uppercase; color:var(--bully-70); margin:0;
}
.bully-ann__msg.is-on{opacity:1; transform:none; pointer-events:auto}
.bully-ann__msg a:hover{color:var(--m-spec)}
.bully-ann__x{
  position:absolute; right:12px; top:50%; transform:translateY(-50%);
  width:28px; height:28px; display:grid; place-items:center; color:var(--bully-45);
}
.bully-ann__x svg{width:13px; height:13px}
.bully-ann__x:hover{color:var(--bully-bone)}
.bully-ann .bully-hair{position:absolute; left:0; right:0; bottom:0; opacity:.5}

/* mobile drawer */
.bully-mob{
  position:fixed; inset:0; z-index:95;
  background:linear-gradient(180deg,var(--bully-char),var(--bully-ink) 60%);
  padding:0 var(--bully-pad) calc(var(--bully-pad) + env(safe-area-inset-bottom,0px));
  display:flex; flex-direction:column;
  overflow-y:auto; overscroll-behavior:contain;
  clip-path:inset(0 0 100% 0);
  transition:clip-path .65s var(--bully-ease); visibility:hidden;
}
.bully-mob__top{
  position:sticky; top:0; z-index:3;
  display:flex; align-items:center; justify-content:space-between;
  padding-block:clamp(16px,4vw,22px); margin-bottom:clamp(8px,2vw,18px);
  background:linear-gradient(180deg,var(--bully-char) 70%,transparent);
}
.bully-mob__close{
  width:46px; height:46px; display:grid; place-items:center; margin-right:-10px;
  border:1px solid var(--bully-line-2); color:var(--bully-bone);
  transition:border-color .35s, color .35s, transform .35s;
}
.bully-mob__close svg{width:18px; height:18px}
.bully-mob__close:hover,
.bully-mob__close:focus-visible{border-color:var(--m-mid); color:var(--m-spec); transform:rotate(90deg)}
.bully-menu-open .bully-mob{clip-path:inset(0 0 0 0); visibility:visible}
.bully-mob a,
.bully-mob .bully-mlink{
  overflow-wrap:anywhere; hyphens:auto;
  display:block; padding-block:6px; opacity:0; transform:translateY(26px);
  font-family:var(--bully-display); font-weight:800; font-variation-settings:'wdth' 115;
  font-size:clamp(1.35rem,6.4vw,2rem); line-height:1.08; text-transform:uppercase; letter-spacing:-.02em;
  transition:opacity .5s var(--bully-ease), transform .6s var(--bully-ease), color .3s;
}
.bully-mob__foot a{font-family:var(--bully-mono); font-size:.7rem; opacity:1; transform:none}
.bully-menu-open .bully-mob a{opacity:1; transform:none}
.bully-mob__links > *:nth-child(1){transition-delay:.14s}
.bully-mob__links > *:nth-child(2){transition-delay:.19s}
.bully-mob__links > *:nth-child(3){transition-delay:.24s}
.bully-mob__links > *:nth-child(4){transition-delay:.29s}
.bully-mob__links > *:nth-child(5){transition-delay:.34s}
.bully-mob__links > *:nth-child(6){transition-delay:.39s}
.bully-mob__links > *:nth-child(7){transition-delay:.44s}
.bully-mob__foot{
  margin-top:auto; display:flex; flex-direction:column; gap:16px;
  padding-top:clamp(20px,4vw,28px); border-top:1px solid var(--bully-line);
}
.bully-mob__foot .bully-row{display:grid; grid-template-columns:1fr 1fr; gap:10px}
.bully-mob__foot .bully-btn{width:100%; min-height:50px}
.bully-mob__foot a,
.bully-mob__foot .bully-btn{
  font-family:var(--bully-mono); font-size:.68rem; font-weight:500;
  letter-spacing:.16em; opacity:1; transform:none; padding-block:0;
}

/* ==========================================================================
   OVERLAYS
   ========================================================================== */
.bully-scrim{
  position:fixed; inset:0; z-index:100; background:rgba(3,3,4,.72); backdrop-filter:blur(4px);
  opacity:0; transition:opacity .45s;
}
.bully-scrim.is-on{opacity:1}
body.bully-locked{overflow:hidden}

.bully-drawer{
  position:fixed; top:0; right:0; bottom:0; width:min(440px,100%); z-index:110;
  background:var(--bully-char); display:flex; flex-direction:column;
  transform:translateX(101%); transition:transform .65s var(--bully-ease);
  box-shadow:-30px 0 60px rgba(0,0,0,.55);
}
.bully-drawer.is-on{transform:none}
.bully-drawer__hd{
  display:flex; align-items:center; justify-content:space-between;
  padding:20px 22px; border-bottom:1px solid var(--bully-line); flex:none;
}
.bully-drawer__bd,
.bully-cart__body{flex:1; overflow-y:auto; padding:6px 22px 22px}
.bully-cart__inner{flex:1; display:flex; flex-direction:column; min-height:0}
.bully-cart__foot{
  flex:none; padding:18px 22px; border-top:1px solid var(--bully-line);
  display:flex; flex-direction:column; gap:12px;
}

/* cart lines */
.bully-line{
  display:grid; grid-template-columns:74px 1fr auto; gap:14px;
  padding-block:16px; border-bottom:1px solid var(--bully-line); align-items:start;
}
.bully-line__media img{width:74px; height:92px; object-fit:cover}
.bully-line__body{display:flex; flex-direction:column; gap:8px; min-width:0}
.bully-line__name{
  font-family:var(--bully-display); font-weight:700; font-size:.95rem;
  text-transform:uppercase; margin:0; line-height:1.2;
}
.bully-line__meta{margin:0; font-family:var(--bully-mono); font-size:.6rem; letter-spacing:.12em; color:var(--bully-45)}
.bully-line__end{display:flex; flex-direction:column; align-items:flex-end; gap:10px}
.bully-line__rm{font-family:var(--bully-mono); font-size:.58rem; letter-spacing:.16em; text-transform:uppercase; color:var(--bully-45)}
.bully-line__rm:hover{color:var(--m-spec)}
.bully-price{margin:0; font-family:var(--bully-mono); font-size:.8rem; white-space:nowrap}
.bully-price del{color:var(--bully-25); margin-right:6px; font-size:.72rem}
.bully-price ins{text-decoration:none}
.bully-qty{display:inline-flex; align-items:center; border:1px solid var(--bully-line-2); width:max-content}
.bully-qty button{width:28px; height:28px; display:grid; place-items:center; color:var(--bully-70)}
.bully-qty button:hover{color:var(--m-spec)}
.bully-qty span{min-width:26px; text-align:center; font-family:var(--bully-mono); font-size:.7rem}
.bully-cart__total{font-size:.95rem}

.bully-empty{
  display:flex; flex-direction:column; align-items:center; gap:16px;
  text-align:center; padding:clamp(40px,8vw,80px) 0;
}

/* stock */
.bully-stock{margin:0; font-family:var(--bully-mono); font-size:.58rem; letter-spacing:.16em; text-transform:uppercase; color:var(--bully-45)}
.bully-stock.is-out{color:#a06060}

/* ---------- wishlist ---------- */
.bully-wish__list{display:flex; flex-direction:column}
.bully-wish__i{
  display:grid; grid-template-columns:74px 1fr; gap:14px;
  padding-block:16px; border-bottom:1px solid var(--bully-line); align-items:start;
}
.bully-wish__media img{width:74px; height:92px; object-fit:cover}

.bully-wish__body{display:flex; flex-direction:column; gap:7px; min-width:0}
.bully-wish__name{font-family:var(--bully-display); font-weight:700; font-size:.95rem; text-transform:uppercase; line-height:1.2}
.bully-wish__act{display:flex; align-items:center; gap:10px; margin-top:4px}
.bully-wish__rm{width:30px; height:30px; display:grid; place-items:center; color:var(--bully-45)}
.bully-wish__rm svg{width:15px; height:15px}
.bully-wish__rm:hover{color:#c47c7c}
.bully-wish__list--grid{
  display:grid; grid-template-columns:repeat(auto-fill,minmax(min(260px,100%),1fr));
  gap:clamp(18px,2vw,32px);
}
.bully-wish__list--grid .bully-wish__i{grid-template-columns:1fr; border:0; padding:0}
.bully-wish__list--grid .bully-wish__media img{width:100%; height:auto; aspect-ratio:4/5}
.bully-wish__page{padding-block:clamp(30px,5vw,60px)}

/* heart on product cards */
.bully-heart{
  position:absolute; top:12px; right:12px; z-index:3;
  width:34px; height:34px; display:grid; place-items:center;
  background:rgba(5,5,6,.6); backdrop-filter:blur(6px);
  color:var(--bully-70, #F2EDE4); transition:color .3s, transform .3s;
}
.bully-heart svg{width:15px; height:15px}
.bully-heart:hover{transform:scale(1.08); color:var(--m-spec)}
.bully-heart.is-on{color:var(--m-light)}
.bully-heart.is-on svg{fill:currentColor}
.woocommerce ul.products li.product{position:relative}

/* ---------- search ---------- */
.bully-search{
  position:fixed; inset:0; z-index:115; background:rgba(5,5,6,.94); backdrop-filter:blur(20px);
  opacity:0; visibility:hidden; transition:opacity .45s, visibility .45s; padding-top:16vh;
}
.bully-search.is-on{opacity:1; visibility:visible}
.bully-search__in{
  width:100%; max-width:1000px; margin-inline:auto; padding-inline:var(--bully-pad);
  display:flex; flex-direction:column; gap:18px;
}
.bully-search input[type=search]{
  width:100%; background:transparent; border:0; border-bottom:1px solid var(--bully-line-2);
  padding:16px 0; color:var(--bully-bone);
  font-family:var(--bully-display); font-weight:700; font-size:clamp(1.5rem,4vw,2.8rem);
  text-transform:uppercase; letter-spacing:-.01em;
}
.bully-search input[type=search]:focus{outline:none; border-color:var(--m-mid)}
.bully-search input::placeholder{color:var(--bully-25)}

/* ---------- toast ---------- */
.bully-toast{
  position:fixed; left:50%; bottom:28px; z-index:130; transform:translate(-50%,160%);
  padding:13px 22px; background:var(--bully-smoke); border:1px solid var(--bully-line-2);
  font-family:var(--bully-mono); font-size:.65rem; letter-spacing:.16em; text-transform:uppercase;
  transition:transform .55s var(--bully-ease); max-width:min(90vw,420px); text-align:center;
}
.bully-toast.is-on{transform:translate(-50%,0)}

/* ==========================================================================
   LOGIN POPUP
   ========================================================================== */
.bully-modal{
  position:fixed; inset:0; z-index:120; display:grid; place-items:center;
  padding:clamp(12px,3vw,32px); opacity:0; visibility:hidden;
  transition:opacity .45s, visibility .45s;
}
.bully-modal.is-on{opacity:1; visibility:visible}
.bully-modal__box{
  position:relative; width:min(940px,100%); max-height:min(92vh,760px); overflow:hidden;
  display:grid; grid-template-columns:.9fr 1.1fr; background:var(--bully-char);
  transform:translateY(26px) scale(.985); transition:transform .6s var(--bully-ease);
  border:1px solid var(--bully-line);
}
.bully-modal.is-on .bully-modal__box{transform:none}
.bully-modal__x{position:absolute; top:12px; right:12px; z-index:4}

/* media side */
.bully-auth__media{
  position:relative; overflow:hidden; display:flex; align-items:flex-end;
  padding:clamp(22px,3vw,34px); min-height:280px;
  background:
    radial-gradient(120% 90% at 20% 0%, rgba(var(--m-glow),.18), transparent 60%),
    linear-gradient(160deg,#141417,#08080a 60%,#101013);
}
.bully-auth__media::before{
  content:''; position:absolute; inset:0;
  background:var(--bully-auth-img,none) center/cover no-repeat;
  filter:grayscale(1) contrast(1.08) brightness(.6);
  transform:scale(1.04);
  animation:bullyAuthDrift 18s var(--bully-ease) infinite alternate;
}
@keyframes bullyAuthDrift{to{transform:scale(1.12) translate3d(-2%,-1%,0)}}
.bully-auth__veil{
  position:absolute; inset:0;
  background:linear-gradient(180deg,rgba(5,5,6,.30),rgba(5,5,6,.88));
}
.bully-auth__pitch{position:relative; z-index:2; display:flex; flex-direction:column; gap:16px}
.bully-auth__claim{font-size:clamp(1.5rem,2.6vw,2.2rem)}
.bully-auth__perks{display:flex; flex-direction:column; gap:10px}
.bully-auth__perks li{
  display:flex; align-items:flex-start; gap:10px;
  font-size:.82rem; color:var(--bully-70); line-height:1.45;
}
.bully-auth__perks svg{width:14px; height:14px; flex:none; margin-top:3px; color:var(--m-light)}

/* form side */
.bully-auth__panel{
  position:relative; padding:clamp(24px,3.2vw,42px); overflow-y:auto;
  display:flex; flex-direction:column; gap:20px;
}
.bully-tabs{position:relative; display:flex; gap:26px; border-bottom:1px solid var(--bully-line)}
.bully-tab{
  padding:0 0 14px; color:var(--bully-45); transition:color .35s;
  font-family:var(--bully-mono); font-size:.7rem; letter-spacing:.2em; text-transform:uppercase;
}
.bully-tab:hover{color:var(--bully-70)}
.bully-tab.is-on{color:var(--bully-bone)}
.bully-tabs__ink{
  position:absolute; left:0; bottom:-1px; height:1px; width:0;
  background:var(--metal); background-size:400% 100%; background-position:var(--sheen,0%) 0;
  transition:transform .5s var(--bully-ease), width .5s var(--bully-ease);
}

.bully-form{display:none; flex-direction:column; gap:16px}
.bully-form.is-on{display:flex; animation:bullyFade .5s var(--bully-ease)}
@keyframes bullyFade{from{opacity:0; transform:translateY(10px)}to{opacity:1; transform:none}}

.bully-field{position:relative; display:flex; flex-direction:column; gap:7px}
.bully-flabel{font-family:var(--bully-mono); font-size:.58rem; letter-spacing:.2em; text-transform:uppercase; color:var(--bully-45)}
.bully-field input{
  width:100%; background:transparent; color:var(--bully-bone);
  border:1px solid var(--bully-line-2); padding:13px 15px; font-size:.94rem;
  transition:border-color .4s, background .4s;
}
.bully-field input:focus{outline:none; border-color:var(--m-mid); background:var(--bully-tint)}
.bully-field--pass input{padding-right:46px}
.bully-peek{
  position:absolute; right:8px; top:26px; width:32px; height:38px;
  display:grid; place-items:center; color:var(--bully-45);
}
.bully-peek svg{width:17px; height:17px}
.bully-peek:hover{color:var(--bully-bone)}
.bully-strength{position:absolute; left:0; right:0; bottom:-6px; height:2px; background:var(--bully-line)}
.bully-strength b{
  display:block; height:100%; width:0; transition:width .4s var(--bully-ease), background .4s;
  background:var(--m-mid);
}
.bully-strength[data-level="1"] b{width:33%; background:#a06060}
.bully-strength[data-level="2"] b{width:66%; background:var(--m-mid)}
.bully-strength[data-level="3"] b{width:100%; background:var(--m-light)}

.bully-check{display:flex; gap:11px; align-items:flex-start; font-size:.8rem; line-height:1.5; color:var(--bully-45); font-weight:300; cursor:pointer}
.bully-check a{color:var(--bully-70); text-decoration:underline; text-underline-offset:3px}
.bully-check input{
  appearance:none; -webkit-appearance:none; width:16px; height:16px; flex:none; margin-top:2px;
  border:1px solid var(--bully-line-2); position:relative; cursor:pointer; background:transparent;
}
.bully-check input:checked{background:var(--m-fill); background-size:300% 100%; background-position:var(--sheen,0%) 0; border-color:transparent}
.bully-check input:checked::after{
  content:''; position:absolute; left:5px; top:1px; width:4px; height:9px;
  border:solid var(--m-on); border-width:0 1.5px 1.5px 0; transform:rotate(45deg);
}
.bully-hp{position:absolute!important; left:-9999px!important; width:1px!important; height:1px!important; opacity:0!important}

.bully-msg{
  margin:0; min-height:1.1em; font-family:var(--bully-mono);
  font-size:.63rem; letter-spacing:.14em; text-transform:uppercase; line-height:1.6;
}
.bully-msg.is-ok{color:var(--m-light)}
.bully-msg.is-err{color:#c47c7c}

@media(max-width:760px){
  .bully-modal__box{grid-template-columns:1fr; max-height:94vh}
  .bully-auth__media{min-height:190px}
  .bully-auth__perks{display:none}
}

/* ==========================================================================
   FOOTER
   ========================================================================== */
.bully-ft{background:#020203; padding:clamp(48px,6vw,100px) var(--bully-pad) 0}
.bully-ft__cols{
  display:grid; grid-template-columns:1.6fr repeat(4,1fr);
  gap:clamp(26px,3vw,48px); max-width:var(--bully-max,1200px); margin-inline:auto;
}
.bully-ft__brand{display:flex; flex-direction:column; gap:18px}
.bully-ft__logo{height:56px; width:auto}
.bully-ft__logo.is-tinted{aspect-ratio:1/.93}
.bully-ft__statement{max-width:32ch}
.bully-ft__col h4{
  margin:0 0 16px; font-family:var(--bully-mono); font-size:.6rem;
  letter-spacing:.24em; text-transform:uppercase; color:var(--bully-45); font-weight:400;
}
.bully-ft__col li + li{margin-top:10px}
.bully-ft__col a{font-size:.88rem; font-weight:300; color:var(--bully-70); transition:color .35s}
.bully-ft__col a:hover{color:var(--m-spec)}

.bully-ft__nl{display:flex; flex-direction:column; gap:12px; margin-top:6px; max-width:340px}
.bully-nl{display:flex; flex-direction:column; gap:12px}
.bully-nl__field{display:flex; align-items:center; border-bottom:1px solid var(--bully-line-2)}
.bully-nl__field input{
  flex:1; min-width:0; background:transparent; border:0; color:var(--bully-bone);
  padding:14px 0; font-size:.92rem;
}
.bully-nl__field input:focus{outline:none}
.bully-nl__field input::placeholder{color:var(--bully-25)}

.bully-socials{display:flex; gap:8px; margin-top:18px; flex-wrap:wrap}
.bully-soc{
  width:40px; height:40px; display:grid; place-items:center;
  border:1px solid var(--bully-line-2); color:var(--bully-70); transition:.4s;
}
.bully-soc svg{width:16px; height:16px}
.bully-soc:hover{border-color:var(--m-mid); color:var(--m-spec); transform:translateY(-2px)}

.bully-ft__bottom{
  display:grid; grid-template-columns:auto 1fr auto; align-items:center;
  gap:clamp(14px,2vw,32px);
  max-width:var(--bully-max,1200px); margin:clamp(36px,4vw,64px) auto 0;
  padding-block:20px; border-top:1px solid var(--bully-line);
}
.bully-ft__bottom > .bully-pay{justify-content:center}
.bully-pay{display:flex; gap:8px; align-items:center; flex-wrap:wrap}
.bully-pay span{
  padding:4px 8px; border:1px solid var(--bully-line); white-space:nowrap;
  font-family:var(--bully-mono); font-size:.52rem; letter-spacing:.1em; color:var(--bully-45);
}
.bully-pay img{height:18px; width:auto}
.bully-credit{
  display:flex; align-items:center; gap:9px; white-space:nowrap;
  font-family:var(--bully-mono); font-size:.55rem; letter-spacing:.16em;
  text-transform:uppercase; color:var(--bully-45);
}
.bully-credit a{display:flex; align-items:center; gap:9px; transition:opacity .35s}
.bully-credit a:hover{opacity:.75}
/* the agency mark keeps its original colours — never tinted, never greyscaled */
.bully-credit img{height:22px; width:auto; filter:none}
.bully-credit strong{
  font-family:var(--bully-display); font-weight:700; font-variation-settings:'wdth' 105;
  font-size:.66rem; letter-spacing:.12em; text-transform:uppercase; color:var(--bully-bone);
  white-space:nowrap; line-height:1;
}

@media(max-width:1080px){.bully-ft__cols{grid-template-columns:1fr 1fr}}
@media(max-width:980px){
  .bully-ft__bottom{grid-template-columns:1fr; justify-items:start; gap:16px; text-align:left}
  .bully-ft__bottom > .bully-pay{justify-content:flex-start}
}
@media(max-width:600px){
  .bully-ft__cols{grid-template-columns:1fr}
  .bully-drawer{width:100%}
}

/* ==========================================================================
   MOTION PREFERENCES
   ========================================================================== */
@media (prefers-reduced-motion: reduce){
  .bully-scope *,
  .bully-scope *::before,
  .bully-scope *::after{
    animation-duration:.001ms!important; animation-iteration-count:1!important;
    transition-duration:.12s!important;
  }
  .bully-mob a{opacity:1!important; transform:none!important}
}

/* ==========================================================================
   METAL BUTTONS — SURFACE
   At 400% background-size only a quarter of the ramp was visible, and on a
   wide button that quarter is almost flat: the result read as a plain light
   slab. Show the whole ramp, and move a separate specular band across it.
   ========================================================================== */
.bully-btn--metal,
.bully-scope .bully-btn--metal,
.bully-card__act .bully-btn--metal{
  background-color:#C9D3DC;
  background-image:
    linear-gradient(100deg,transparent 38%,rgba(255,255,255,.42) 50%,transparent 62%),
    var(--m-fill,linear-gradient(100deg,#8E9BA8 0%,#FFFFFF 26%,#DCE5EC 48%,#7F8D9B 72%,#EEF4F8 100%));
  background-size:220% 100%, 100% 100%;
  background-position:var(--sheen,0%) 0, 0 0;
  background-repeat:no-repeat, no-repeat;
  color:var(--m-on,#08090B);
  min-height:48px;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.5),
    inset 0 -1px 0 rgba(0,0,0,.22),
    0 12px 26px -16px rgba(0,0,0,.8);
}
.bully-btn--metal.bully-btn--full{min-height:54px}
.bully-btn--metal.bully-btn--sm{min-height:42px; box-shadow:inset 0 1px 0 rgba(255,255,255,.45), inset 0 -1px 0 rgba(0,0,0,.2)}
.bully-btn--metal:hover{transform:translateY(-2px)}
.bully-btn--metal:active{transform:translateY(0); box-shadow:inset 0 2px 4px rgba(0,0,0,.28)}

/* ghost buttons deserve a floor too, so rows of mixed buttons line up */
.bully-btn--ghost{min-height:48px}
.bully-btn--ghost.bully-btn--sm{min-height:42px}

/* newsletter row: the field must never crowd the button */
.bully-nl__field{display:flex; gap:12px; align-items:center}
.bully-nl__field input{flex:1 1 auto; min-width:0}
.bully-nl__field .bully-btn{flex:0 0 auto; white-space:nowrap; min-height:44px}

/* ==========================================================================
   NEWSLETTER FIELD
   A hairline-underlined input beside a filled metal button read as two
   unrelated controls. Treat the pair as one machined component.
   ========================================================================== */
.bully-nl__field{
  display:flex; align-items:stretch; gap:0;
  border:1px solid var(--bully-line-2); background:var(--bully-tint);
  transition:border-color .4s var(--bully-ease);
}
.bully-nl__field:focus-within{border-color:var(--m-mid,#9AA7B4)}
.bully-nl__field input{
  flex:1 1 auto; min-width:0; border:0; background:transparent;
  padding:0 16px; min-height:54px; color:var(--bully-bone); font-size:.94rem;
}
.bully-nl__field input:focus{outline:none}
.bully-nl__field .bully-btn{
  flex:0 0 auto; min-height:54px; margin:0; white-space:nowrap;
  padding-inline:clamp(18px,2vw,30px); border:0;
}
/* the ghost variant inside the box becomes a divider, not a second border */
.bully-nl__field .bully-btn--ghost{
  border:0; border-left:1px solid var(--bully-line-2);
  background:var(--bully-tint-2); color:var(--bully-bone);
}
.bully-nl__field .bully-btn--ghost:hover{background:rgba(242,237,228,.07); color:var(--m-spec)}
@media(max-width:480px){
  .bully-nl__field{flex-direction:column; border:0; background:none; gap:10px}
  .bully-nl__field input{border:1px solid var(--bully-line-2); padding:0 15px}
  .bully-nl__field .bully-btn{width:100%}
  .bully-nl__field .bully-btn--ghost{border:1px solid var(--bully-line-2)}
}


/* ---------- metal button states ---------- */
.bully-btn--metal:hover{
  transform:translateY(-2px);
  border-color:rgba(var(--m-glow,232,200,106),.9);
  background-color:#140D04;
  box-shadow:
    inset 0 1px 0 rgba(var(--m-glow,232,200,106),.5),
    0 16px 34px -18px rgba(0,0,0,.9),
    0 0 22px -8px rgba(var(--m-glow,232,200,106),.35);
}
.bully-btn--metal:active{transform:translateY(0); box-shadow:inset 0 2px 6px rgba(0,0,0,.55)}
.bully-btn--metal.bully-btn--full{min-height:54px}
.bully-btn--metal.bully-btn--sm{min-height:42px}
.bully-btn--ghost{min-height:48px}
.bully-btn--ghost.bully-btn--sm{min-height:42px}

/* ---------- newsletter field is one component ---------- */
.bully-nl__field{
  display:flex; align-items:stretch; gap:0;
  border:1px solid var(--bully-line-2); background:var(--bully-tint);
  transition:border-color .4s var(--bully-ease);
}
.bully-nl__field:focus-within{border-color:var(--m-mid)}
.bully-nl__field input{
  flex:1 1 auto; min-width:0; border:0; background:transparent;
  padding:0 16px; min-height:54px; color:var(--bully-bone); font-size:.94rem;
}
.bully-nl__field input:focus{outline:none}
.bully-nl__field .bully-btn{flex:0 0 auto; min-height:54px; margin:0; white-space:nowrap; padding-inline:clamp(18px,2vw,30px)}

/* ==========================================================================
   GOLD AMBIENCE
   ========================================================================== */
.bully-sec{isolation:isolate}
.bully-sec::before{
  content:''; position:absolute; inset:0; z-index:-1; pointer-events:none;
  background:
    radial-gradient(120% 70% at 15% 0%, rgba(var(--m-glow,232,200,106),.055), transparent 62%),
    radial-gradient(90% 60% at 90% 100%, rgba(var(--m-glow,232,200,106),.035), transparent 60%);
}
.bully-sec.bully-hero::before,
.bully-sec.bully-marq::before,
.bully-sec.bully-nlsec::before{content:none}

/* ==========================================================================
   TOAST — confirmation for add-to-cart and wishlist
   ========================================================================== */
.bully-toast{
  position:fixed; z-index:150; left:50%; bottom:28px; transform:translate(-50%,16px);
  max-width:min(460px,calc(100vw - 32px)); padding:15px 22px;
  background:linear-gradient(155deg,rgba(var(--m-glow,232,200,106),.30),rgba(0,0,0,.72) 60%),#0C0803;
  border:1px solid rgba(var(--m-glow,232,200,106),.5);
  color:#FFFFFF;
  font-family:var(--bully-mono); font-size:.66rem; font-weight:500;
  letter-spacing:.16em; text-transform:uppercase; line-height:1.45; text-align:center;
  box-shadow:0 20px 48px -22px rgba(0,0,0,.95), inset 0 1px 0 rgba(var(--m-glow,232,200,106),.3);
  opacity:0; visibility:hidden; pointer-events:none;
  transition:opacity .4s var(--bully-ease), transform .5s var(--bully-ease), visibility .4s;
}
.bully-toast.is-on{opacity:1; visibility:visible; transform:translate(-50%,0)}
.bully-toast:empty{display:none}

/* ==========================================================================
   MOBILE
   ========================================================================== */
@media(max-width:767px){
  .bully-toast{left:12px; right:12px; bottom:12px; transform:translateY(16px); max-width:none; font-size:.62rem; padding:14px 16px}
  .bully-toast.is-on{transform:translateY(0)}
  .bully-scope img,
  .bully-scope video{max-width:100%}
  .bully-scope table{max-width:100%}
  .bully-row{flex-wrap:wrap}
  .bully-row .bully-btn{flex:1 1 100%}
  .bully-drawer{width:100%}
  .bully-modal__in{grid-template-columns:1fr}
  .bully-modal__media{display:none}
  .bully-ft__cols{grid-template-columns:1fr 1fr; gap:24px}
  .bully-nl__field{flex-direction:column; border:0; background:none; gap:10px}
  .bully-nl__field input{border:1px solid var(--bully-line-2)}
  .bully-nl__field .bully-btn{width:100%}
}
@media(max-width:480px){
  .bully-ft__cols{grid-template-columns:1fr}
}
