/* ==========================================================================
   BULLY — section widgets
   ========================================================================== */

.bully-sec{position:relative; padding-block:clamp(56px,8vw,140px)}

/* the measure itself lives in bully-hf.css so it is always present */
.bully-sec__t{
  margin:0; font-family:var(--bully-display); font-weight:800; font-variation-settings:'wdth' 112;
  font-size:clamp(1.7rem,3.4vw,3.1rem); line-height:.98; text-transform:uppercase; letter-spacing:-.02em;
  max-width:20ch; text-wrap:balance;
  /* a single long Italian word in a heavy condensed face will run off a
     phone unless it is allowed to break */
  overflow-wrap:anywhere; hyphens:auto;
}
.bully-w{max-width:100%; overflow-wrap:anywhere}
.bully-hero .bully-sec__t{max-width:22ch}
.bully-ed.is-align-center .bully-sec__t,
.bully-ed.is-cinematic .bully-sec__t{margin-inline:auto}
.bully-sec__hd{display:flex; justify-content:space-between; align-items:flex-end; gap:32px; flex-wrap:wrap; margin-bottom:clamp(26px,3.4vw,52px)}
.bully-sec__hd-l{display:flex; flex-direction:column; gap:16px; max-width:70ch}
.bully-sec__cta{margin-top:clamp(22px,2.6vw,36px)}
.bully-sec .bully-lede{max-width:60ch}

/* ---------- reveals ---------- */
[data-bully-rv]{opacity:0; transition:opacity 1s var(--bully-ease), transform 1.1s var(--bully-ease), clip-path 1.2s var(--bully-ease); will-change:opacity,transform}
[data-bully-rv="up"]{transform:translateY(42px)}
[data-bully-rv="left"]{transform:translateX(-42px)}
[data-bully-rv="right"]{transform:translateX(42px)}
[data-bully-rv="clip"]{opacity:1; clip-path:inset(0 0 100% 0)}
[data-bully-rv].is-in{opacity:1; transform:none; clip-path:inset(0 0 0 0)}

/* word-by-word headings */
.bully-w{display:inline-block; overflow:hidden; vertical-align:top; padding-bottom:.09em; margin-bottom:-.09em}
/* a word-sized slice of the ramp reads as grey; give every word the whole
   sweep instead so split headings stay consistent */
.bully-w > i.bully-metal{background-size:100% 100%; background-position:0 0}
.bully-w > i{display:inline-block; font-style:normal; transform:translateY(105%); transition:transform .95s var(--bully-ease)}
.is-in .bully-w > i,
[data-bully-rv].is-in .bully-w > i{transform:none}

/* ---------- media frame ---------- */
.bully-frame{
  position:relative; overflow:hidden; display:block; margin:0; isolation:isolate;
  background:linear-gradient(160deg,var(--bully-smoke),var(--bully-ink) 62%,var(--bully-char));
}
.bully-frame__img{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
  /* Dimming a photo on a black page is backwards: a dark subject sinks into
     the background and the frame reads as empty. Lift it instead. */
  filter:contrast(1.04);
  transition:transform 1.3s var(--bully-ease), filter .9s var(--bully-ease);
}
.is-mono .bully-frame__img{filter:grayscale(1) contrast(1.1) brightness(1.06)}
.bully-frame:hover .bully-frame__img{transform:scale(1.05)}

/* the veil exists so copy stays legible over an image — a plain media column
   has nothing on top of it, so it only needs a whisper of depth */
.bully-frame__veil{
  position:absolute; inset:0;
  background:linear-gradient(180deg,transparent 72%,rgba(5,5,6,.3));
}
.bully-ed__bg .bully-frame__veil,
.bully-drop__media .bully-frame__veil,
.bully-hero .bully-frame__veil{
  background:linear-gradient(180deg,rgba(5,5,6,.35),rgba(5,5,6,.2) 45%,rgba(5,5,6,.9));
}
.bully-frame__ph{
  position:absolute; left:14px; bottom:12px; font-family:var(--bully-mono);
  font-size:.58rem; letter-spacing:.22em; text-transform:uppercase; color:var(--bully-25);
}

/* ==========================================================================
   HERO
   ========================================================================== */
.bully-hero{
  display:flex; overflow:hidden; padding:0;
  --bully-veil:.55;
}
.bully-hero.is-full{min-height:100svh}
.bully-hero.is-tall{min-height:78svh}
.bully-hero.is-short{min-height:58svh}
.bully-hero.is-bottom-left{align-items:flex-end; text-align:left}
.bully-hero.is-middle-left{align-items:center; text-align:left}
.bully-hero.is-center{align-items:center; justify-content:center; text-align:center}
.bully-hero.is-center .bully-hero__in{align-items:center}
.bully-hero.is-center .bully-eyebrow{justify-content:center}
.bully-hero.is-center .bully-lede{margin-inline:auto}

.bully-hero__bg{position:absolute; inset:0; z-index:0}
.bully-hero__img,
.bully-hero__video{position:absolute; inset:0; width:100%; height:100%; object-fit:cover}
.bully-hero .bully-hero__img,
.bully-hero .bully-hero__video{filter:contrast(1.04)}
.bully-hero.is-mono .bully-hero__img,
.bully-hero.is-mono .bully-hero__video{filter:grayscale(1) contrast(1.08) brightness(.85)}
.bully-hero.is-drift .bully-hero__img{animation:bullyDrift 24s var(--bully-ease) infinite alternate}
@keyframes bullyDrift{to{transform:scale(1.1) translate3d(-1.5%,-1%,0)}}
.bully-hero__video ~ picture .bully-hero__img{opacity:0}
.bully-hero__veil{
  position:absolute; inset:0; z-index:1;
  background:linear-gradient(180deg,
    rgba(5,5,6,calc(.6 * var(--bully-veil))) 0%,
    rgba(5,5,6,calc(.2 * var(--bully-veil))) 38%,
    rgba(5,5,6,calc(1.4 * var(--bully-veil))) 100%);
}
.bully-hero__in{
  position:relative; z-index:2; width:100%; max-width:var(--bully-max,1200px); margin-inline:auto;
  padding:clamp(90px,14vh,150px) clamp(18px,4vw,64px) clamp(70px,10vh,110px);
  display:flex; flex-direction:column; align-items:flex-start; gap:22px;
}
/* 50px on a desktop, capped at 30px on a phone */
.bully-hero .bully-sec__t{font-size:clamp(1.6rem,5.2vw,50px); line-height:1.04}

.bully-scroller{
  position:absolute; left:50%; bottom:24px; transform:translateX(-50%); z-index:3;
  display:flex; flex-direction:column; align-items:center; gap:10px;
}
.bully-scroller span{font-family:var(--bully-mono); font-size:.56rem; letter-spacing:.3em; text-transform:uppercase; color:var(--bully-45)}
.bully-scroller i{width:1px; height:48px; background:linear-gradient(var(--bully-25),transparent); position:relative; overflow:hidden}
.bully-scroller i::after{content:''; position:absolute; inset:0; background:var(--m-spec); animation:bullyScroll 2.4s var(--bully-ease) infinite}
@keyframes bullyScroll{0%{transform:translateY(-100%)}60%,100%{transform:translateY(100%)}}

/* ==========================================================================
   EDITORIAL
   ========================================================================== */
.bully-ed__in{
  max-width:var(--bully-max,1200px); margin-inline:auto; padding-inline:clamp(18px,4vw,64px);
  display:grid; gap:clamp(26px,4vw,72px); align-items:center;
}
.bully-ed.is-media-right .bully-ed__in,
.bully-ed.is-media-left .bully-ed__in,
.bully-ed.is-panel .bully-ed__in,
.bully-ed.is-text .bully-ed__in{grid-template-columns:1fr 1fr}
.bully-ed.is-pair .bully-ed__in{grid-template-columns:1.1fr .9fr}
.bully-ed__copy{display:flex; flex-direction:column; gap:18px}
.bully-ed.is-align-center .bully-ed__copy{align-items:center; text-align:center}
.bully-ed.is-align-center .bully-eyebrow{justify-content:center}

.bully-ed.is-panel .bully-ed__copy{
  background:linear-gradient(180deg,var(--bully-char),var(--bully-ink) 70%);
  padding:clamp(24px,3vw,48px); position:relative;
}
.bully-ed.is-panel .bully-ed__copy::before{
  content:''; position:absolute; inset:0; padding:1px; pointer-events:none; opacity:.55;
  background:var(--metal); background-size:400% 100%; background-position:var(--sheen,0%) 0;
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  -webkit-mask-composite:xor; mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  mask-composite:exclude;
}

.bully-ed.is-pair .bully-ed__media{display:grid; grid-template-columns:1fr 1fr; gap:clamp(10px,1.4vw,20px)}
.bully-ed.is-pair .bully-ed__media2{margin-top:clamp(20px,6vw,90px)}

.bully-ed.is-cinematic{overflow:hidden}
.bully-ed.is-cinematic .bully-ed__bg{position:absolute; inset:0; z-index:0}
.bully-ed.is-cinematic .bully-ed__bg .bully-frame{position:absolute; inset:0; aspect-ratio:auto}
.bully-ed.is-cinematic .bully-ed__bg .bully-frame__veil{background:linear-gradient(180deg,rgba(5,5,6,.72),rgba(5,5,6,.4) 45%,rgba(5,5,6,.92))}
.bully-ed.is-cinematic .bully-ed__in{position:relative; z-index:2; grid-template-columns:1fr; justify-items:center; text-align:center}
.bully-ed.is-cinematic .bully-ed__copy{align-items:center; max-width:62ch}
.bully-ed.is-cinematic .bully-eyebrow{justify-content:center}

.bully-ed.is-text .bully-ed__in{align-items:start}

@media(max-width:900px){
  .bully-ed__in{grid-template-columns:1fr !important}
  .bully-ed.is-media-left .bully-ed__media{order:2}
  .bully-ed.is-pair .bully-ed__media2{margin-top:0}
}

/* ==========================================================================
   STATEMENT · PILLARS · VALUES · NUMBERS · WORDMARK
   ========================================================================== */
.bully-stmt{position:relative; overflow:hidden}
.bully-stmt__in{
  max-width:var(--bully-max,1200px); margin-inline:auto; padding-inline:clamp(18px,4vw,48px);
  display:flex; flex-direction:column;
}
.bully-stmt__row{position:relative; display:grid; align-items:center; gap:clamp(14px,2.4vw,40px)}
.bully-stmt__idx{
  font-family:var(--bully-mono); font-size:.58rem; letter-spacing:.2em; color:var(--bully-25);
  align-self:center; transition:color .5s var(--bully-ease);
}
.bully-stmt__row.is-in .bully-stmt__idx{color:var(--bully-45)}
.bully-stmt__line{
  margin:0; font-family:var(--bully-display); font-weight:800; font-variation-settings:'wdth' 110;
  font-size:clamp(1.4rem,4vw,3.4rem); line-height:1.02; text-transform:uppercase; letter-spacing:-.02em;
}
/* each line wipes in behind its own mask */
.bully-stmt__line > span{
  display:inline-block; clip-path:inset(0 100% 0 0);
  transition:clip-path 1s var(--bully-ease);
}
.bully-stmt__row.is-in .bully-stmt__line > span{clip-path:inset(0 0 0 0)}

.bully-stmt__fig{
  position:relative; margin:0; overflow:hidden; aspect-ratio:4/3;
  opacity:0; transform:translateY(20px) scale(.98);
  transition:opacity .9s var(--bully-ease) .15s, transform 1s var(--bully-ease) .15s;
}
.bully-stmt__row.is-in .bully-stmt__fig{opacity:1; transform:none}
.bully-stmt__fig img{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
  transition:transform 1.3s var(--bully-ease), filter .9s var(--bully-ease);
}
.bully-stmt__fig:hover img{transform:scale(1.05)}

/* --- alternate: statement and answer face each other across the measure --- */
.bully-stmt.is-alternate .bully-stmt__row{
  grid-template-columns:3.2em minmax(0,1fr) minmax(0,.62fr);
  padding-block:clamp(14px,2vw,26px);
  border-top:1px solid var(--bully-line);
}
.bully-stmt.is-alternate .bully-stmt__row:last-child{border-bottom:1px solid var(--bully-line)}
.bully-stmt.is-alternate .bully-stmt__row.is-answer{
  grid-template-columns:minmax(0,.62fr) minmax(0,1fr) 3.2em;
}
.bully-stmt.is-alternate .bully-stmt__row.is-answer .bully-stmt__idx{order:3; text-align:right}
.bully-stmt.is-alternate .bully-stmt__row.is-answer .bully-stmt__line{order:2; text-align:right}
.bully-stmt.is-alternate .bully-stmt__row.is-answer .bully-stmt__fig{order:1}
.bully-stmt.is-alternate .bully-stmt__row.is-answer .bully-stmt__line > span{clip-path:inset(0 0 0 100%)}
.bully-stmt.is-alternate .bully-stmt__row.is-answer.is-in .bully-stmt__line > span{clip-path:inset(0 0 0 0)}
.bully-stmt.is-alternate .bully-stmt__row:not(.is-answer) .bully-stmt__line{color:var(--bully-45)}

/* --- cinematic: over a still --- */
.bully-stmt.is-cinematic .bully-stmt__bg{position:absolute; inset:0; z-index:0}
.bully-stmt.is-cinematic .bully-stmt__bg img{
  width:100%; height:100%; object-fit:cover; filter:grayscale(1) contrast(1.08) brightness(.45);
}
.bully-stmt__veil{
  position:absolute; inset:0;
  background:linear-gradient(180deg,rgba(5,5,6,.75),rgba(5,5,6,.5) 45%,rgba(5,5,6,.92));
}
.bully-stmt.is-cinematic .bully-stmt__in{position:relative; z-index:2; gap:clamp(6px,1vw,14px)}
.bully-stmt.is-cinematic .bully-stmt__row{grid-template-columns:3.2em minmax(0,1fr)}
.bully-stmt.is-cinematic .bully-stmt__row:not(.is-answer) .bully-stmt__line{color:var(--bully-45)}

/* --- stack: the original, tightened --- */
.bully-stmt.is-stack .bully-stmt__in{gap:clamp(6px,1vw,14px)}
.bully-stmt.is-stack .bully-stmt__row{grid-template-columns:3.2em minmax(0,1fr)}
.bully-stmt.is-stack.is-align-center .bully-stmt__row{grid-template-columns:1fr; text-align:center}
.bully-stmt.is-stack.is-align-center .bully-stmt__idx{display:none}
.bully-stmt.is-stack .bully-stmt__row:not(.is-answer) .bully-stmt__line{color:var(--bully-45)}

@media(max-width:860px){
  .bully-stmt.is-alternate .bully-stmt__row,
  .bully-stmt.is-alternate .bully-stmt__row.is-answer{grid-template-columns:2.4em minmax(0,1fr)}
  .bully-stmt.is-alternate .bully-stmt__row.is-answer .bully-stmt__idx{order:1; text-align:left}
  .bully-stmt.is-alternate .bully-stmt__row.is-answer .bully-stmt__line{order:2; text-align:left}
  .bully-stmt.is-alternate .bully-stmt__fig{display:none}
}

.bully-pillars{
  --bully-cols:3;
  max-width:var(--bully-max,1200px); margin-inline:auto; padding-inline:clamp(18px,4vw,64px);
  display:grid; grid-template-columns:repeat(var(--bully-cols),minmax(0,1fr)); gap:clamp(26px,4vw,64px);
}
.bully-pillar__n{font-family:var(--bully-mono); font-size:.7rem; letter-spacing:.24em; color:var(--bully-25)}
.bully-pillar__t{
  margin:14px 0 12px; font-family:var(--bully-display); font-weight:800; font-variation-settings:'wdth' 112;
  font-size:clamp(1.4rem,2.6vw,2.3rem); text-transform:uppercase; line-height:1;
}
.bully-pillar__bar{
  display:block; height:1px; transform:scaleX(0); transform-origin:left;
  background:var(--metal); background-size:400% 100%; background-position:var(--sheen,0%) 0;
  transition:transform 1.4s var(--bully-ease) .2s;
}
.bully-pillar.is-in .bully-pillar__bar{transform:scaleX(1)}
.bully-pillar .bully-lede{margin-top:16px}

.bully-values{max-width:var(--bully-max,1200px); margin-inline:auto; padding-inline:clamp(18px,4vw,64px)}
.bully-value{
  position:relative; display:grid; grid-template-columns:90px 1fr 1fr; gap:clamp(18px,3vw,50px);
  align-items:start; padding-block:clamp(24px,3.2vw,48px); border-top:1px solid var(--bully-line);
}
.bully-value:last-child{border-bottom:1px solid var(--bully-line)}
.bully-value__t{
  margin:0; font-family:var(--bully-display); font-weight:800; font-variation-settings:'wdth' 112;
  font-size:clamp(1.4rem,3.2vw,2.6rem); text-transform:uppercase; line-height:1; transition:color .5s;
}
.bully-value:hover .bully-value__t{color:var(--m-spec)}
.bully-value__img{
  position:absolute; right:0; top:50%; width:190px; height:auto; aspect-ratio:4/5; object-fit:cover;
  transform:translate(20px,-50%) scale(.94); opacity:0; pointer-events:none; z-index:2;
  transition:opacity .5s var(--bully-ease), transform .7s var(--bully-ease);
}
.bully-value:hover .bully-value__img{opacity:1; transform:translate(0,-50%) scale(1)}
@media(max-width:860px){
  .bully-value{grid-template-columns:56px 1fr}
  .bully-value .bully-lede{grid-column:2}
  .bully-value__img{display:none}
}

.bully-numbers{
  max-width:var(--bully-max,1200px); margin-inline:auto; padding-inline:clamp(18px,4vw,48px);
  display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:clamp(14px,1.8vw,26px);
  align-items:stretch;
}
.bully-number{
  position:relative; overflow:hidden; display:flex; flex-direction:column;
  min-height:clamp(220px,22vw,280px);
  padding:clamp(22px,2.4vw,34px);
  background:linear-gradient(160deg,rgba(var(--m-glow,232,200,106),.09),rgba(var(--m-glow,232,200,106),.03) 45%,transparent);
  border:1px solid var(--bully-line);
  transition:border-color .5s var(--bully-ease), transform .5s var(--bully-ease), background .5s var(--bully-ease);
}
.bully-number:hover{
  border-color:var(--bully-line-2); transform:translateY(-4px);
  background:linear-gradient(160deg,rgba(var(--m-glow,232,200,106),.14),rgba(var(--m-glow,232,200,106),.05) 45%,transparent);
}
/* the ghost index, outlined, in the corner */
.bully-number__ghost{
  position:absolute; top:clamp(10px,1.4vw,18px); right:clamp(12px,1.6vw,22px);
  font-family:var(--bully-display); font-weight:800; font-variation-settings:'wdth' 118;
  font-size:clamp(3.2rem,6vw,5.4rem); line-height:.8; letter-spacing:-.03em;
  -webkit-text-fill-color:transparent; -webkit-text-stroke:1px var(--bully-line-2);
  pointer-events:none; transition:-webkit-text-stroke-color .5s;
}
.bully-number:hover .bully-number__ghost{-webkit-text-stroke-color:var(--m-steel)}
.bully-number__rule{
  display:block; width:36px; height:1px; margin-bottom:clamp(16px,2vw,26px);
  background:var(--metal,linear-gradient(90deg,#5F6C79,#FFF,#9AA7B4));
  background-size:400% 100%; background-position:var(--sheen,0%) 0;
  transform:scaleX(0); transform-origin:left; transition:transform 1s var(--bully-ease) .15s;
}
.bully-number.is-in .bully-number__rule,
.bully-number[data-bully-rv].is-in .bully-number__rule{transform:scaleX(1)}
body.elementor-editor-active .bully-number__rule{transform:scaleX(1)}

/* one type size for every card, whatever the value is */
.bully-number__v{
  position:relative; z-index:1; display:block;
  font-family:var(--bully-display); font-weight:800; font-variation-settings:'wdth' 110;
  font-size:clamp(1.5rem,2.6vw,2.2rem); line-height:1.02; letter-spacing:-.015em;
  text-transform:uppercase; font-variant-numeric:tabular-nums; text-wrap:balance;
}
.bully-number__v em{font-style:normal; font-weight:700; font-size:.62em; letter-spacing:.02em}
.bully-number__t{
  margin:14px 0 0; max-width:34ch;
  font-size:.9rem; line-height:1.6; font-weight:300; color:var(--bully-70);
}
.bully-number__v + .bully-number__t{margin-top:auto; padding-top:16px}
@media(max-width:860px){.bully-numbers{grid-template-columns:1fr}}

.bully-word{
  display:flex; flex-wrap:wrap; justify-content:center; align-items:center;
  max-width:var(--bully-max,1200px); margin-inline:auto; padding-inline:clamp(18px,4vw,64px);
}
.bully-word span{
  font-family:var(--bully-display); font-weight:900; font-variation-settings:'wdth' 120;
  line-height:.9; text-transform:uppercase;
  opacity:0; transform:translateY(30px);
  transition:opacity .7s var(--bully-ease), transform .9s var(--bully-ease);
  transition-delay:calc(var(--i,0) * 70ms);
}
.bully-word.is-in span,
[data-bully-rv].is-in .bully-word span,
.is-in.bully-word span{opacity:1; transform:none}
.bully-word.is-outline span:nth-child(even){
  -webkit-text-fill-color:transparent; -webkit-text-stroke:1px var(--m-mid); background:none;
}

/* ==========================================================================
   DROP
   ========================================================================== */
.bully-drop__in{
  max-width:var(--bully-max,1200px); margin-inline:auto; padding-inline:clamp(18px,4vw,64px);
  display:grid; grid-template-columns:1.15fr .85fr; gap:clamp(20px,3vw,48px); align-items:stretch;
}
.bully-drop__media .bully-frame{height:100%; aspect-ratio:auto; min-height:340px}
.bully-drop__panel{
  position:relative; display:flex; flex-direction:column; justify-content:space-between; gap:30px;
  padding:clamp(24px,3vw,46px); background:linear-gradient(180deg,var(--bully-char),var(--bully-ink) 70%);
}
.bully-drop__panel::before{
  content:''; position:absolute; inset:0; padding:1px; pointer-events:none; opacity:.5;
  background:var(--metal); background-size:400% 100%; background-position:var(--sheen,0%) 0;
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  -webkit-mask-composite:xor; mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  mask-composite:exclude;
}
.bully-drop__top,.bully-drop__bottom{position:relative; z-index:1; display:flex; flex-direction:column; gap:18px}
.bully-drop__product{display:flex; flex-direction:column; gap:10px}
.bully-count__row{display:flex; gap:clamp(10px,2vw,24px); margin-top:12px}
.bully-count__row div{text-align:center}
.bully-count__row b{
  display:block; font-family:var(--bully-display); font-weight:800;
  font-size:clamp(1.5rem,3vw,2.5rem); font-variant-numeric:tabular-nums; line-height:1;
}
.bully-count__row small{font-family:var(--bully-mono); font-size:.54rem; letter-spacing:.2em; text-transform:uppercase; color:var(--bully-45)}
@media(max-width:940px){.bully-drop__in{grid-template-columns:1fr}}

/* ---------- coming soon ---------- */
.bully-soon__in{
  max-width:1000px; margin-inline:auto; padding:clamp(40px,6vw,90px) clamp(20px,4vw,60px);
  display:flex; flex-direction:column; align-items:center; gap:18px; text-align:center; position:relative;
}
.bully-soon__in::before{
  content:''; position:absolute; inset:0; padding:1px; pointer-events:none; opacity:.5;
  background:var(--metal); background-size:400% 100%; background-position:var(--sheen,0%) 0;
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  -webkit-mask-composite:xor; mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  mask-composite:exclude;
}
.bully-soon .bully-eyebrow{justify-content:center}
.bully-soon .bully-sec__t{max-width:22ch}

/* ==========================================================================
   MARQUEE
   ========================================================================== */
.bully-marq{overflow:hidden; padding-block:clamp(24px,4vw,52px); border-block:1px solid var(--bully-line)}
.bully-marq__t{display:flex; width:max-content; align-items:center; animation:bullyMarq 34s linear infinite}
.bully-marq.is-rev .bully-marq__t{animation-direction:reverse}
.bully-marq:hover .bully-marq__t{animation-play-state:paused}
.bully-marq__t span{
  font-family:var(--bully-display); font-weight:800; font-variation-settings:'wdth' 118;
  font-size:clamp(2rem,6.6vw,5.4rem); line-height:1; text-transform:uppercase;
  padding-inline:.22em; white-space:nowrap;
}
.bully-marq__sep{color:var(--m-mid); opacity:.7}
.bully-marq.is-alt .bully-marq__t > span:not(.bully-marq__sep):nth-of-type(4n+3){
  -webkit-text-stroke:1px var(--m-mid); -webkit-text-fill-color:transparent;
}
@keyframes bullyMarq{to{transform:translateX(-50%)}}

/* ==========================================================================
   FAQ
   ========================================================================== */
.bully-faqsec__in{
  max-width:var(--bully-max,1200px); margin-inline:auto; padding-inline:clamp(18px,4vw,48px);
  display:grid; grid-template-columns:minmax(230px,.44fr) 1fr; gap:clamp(28px,5vw,80px); align-items:start;
}
.bully-faqsec__hd{
  display:flex; flex-direction:column; gap:18px;
  position:sticky; top:calc(var(--bully-hd-h,88px) + 32px);
}
@media(max-width:900px){
  .bully-faqsec__in{grid-template-columns:1fr}
  .bully-faqsec__hd{position:static}
}

.bully-faq{--faq-n:2.5em; border-top:1px solid var(--bully-line)}

.bully-faq__i{
  position:relative; border-bottom:1px solid var(--bully-line);
  transition:background .55s var(--bully-ease);
}
/* a metal rule draws across the top edge of the open row */
.bully-faq__i::before{
  content:''; position:absolute; left:0; top:-1px; height:1px; width:0; z-index:2;
  background:var(--metal,linear-gradient(90deg,#5F6C79,#FFF,#9AA7B4));
  background-size:400% 100%; background-position:var(--sheen,0%) 0;
  transition:width .8s var(--bully-ease);
}
.bully-faq__i.is-open::before{width:100%}
.bully-faq__i.is-open{background:linear-gradient(180deg,rgba(var(--m-glow,232,200,106),.08),transparent 72%)}
.bully-faq__i:not(.is-open):hover{background:rgba(var(--m-glow,232,200,106),.04)}

.bully-faq__h{margin:0}
.bully-faq__q{
  width:100%; display:grid; grid-template-columns:var(--faq-n) 1fr auto;
  gap:clamp(12px,1.6vw,24px); align-items:center; text-align:left;
  padding:clamp(20px,2.4vw,30px) clamp(8px,1.2vw,16px);
  transition:padding-left .45s var(--bully-ease);
}
.bully-faq__i:not(.is-open) .bully-faq__q:hover{padding-left:clamp(14px,1.8vw,24px)}
.bully-faq__q:focus-visible{outline:2px solid var(--m-light); outline-offset:-4px}

.bully-faq__n{
  font-style:normal; font-family:var(--bully-mono); font-size:.6rem; letter-spacing:.2em;
  color:var(--bully-25); transition:color .45s var(--bully-ease); align-self:start; padding-top:.35em;
}
.bully-faq__i:hover .bully-faq__n{color:var(--bully-45)}
.bully-faq__i.is-open .bully-faq__n{
  background:var(--metal-text,linear-gradient(90deg,#9AA7B4,#FFF,#DCE5EC));
  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-faq__t{
  font-family:var(--bully-display); font-weight:700; font-variation-settings:'wdth' 104;
  font-size:clamp(1rem,1.5vw,1.28rem); line-height:1.24; letter-spacing:.005em;
  text-transform:uppercase; color:var(--bully-70);
  transition:color .4s var(--bully-ease);
  text-wrap:balance;
}
.bully-faq__i:hover .bully-faq__t,
.bully-faq__i.is-open .bully-faq__t{color:var(--bully-bone)}

/* the marker: a ring that fills with metal when the answer is open */
.bully-faq__ic{
  position:relative; flex:none; width:36px; height:36px; border-radius:50%;
  border:1px solid var(--bully-line-2); align-self:start;
  transition:background .5s var(--bully-ease), border-color .5s var(--bully-ease), transform .5s var(--bully-ease);
}
.bully-faq__ic::before,
.bully-faq__ic::after{
  content:''; position:absolute; left:50%; top:50%; width:12px; height:1px;
  margin:-.5px 0 0 -6px; background:var(--bully-70);
  transition:transform .5s var(--bully-ease), background .5s var(--bully-ease);
}
.bully-faq__ic::after{transform:rotate(90deg)}
.bully-faq__i:hover .bully-faq__ic{border-color:var(--m-mid)}
.bully-faq__i.is-open .bully-faq__ic{
  border-color:transparent; transform:rotate(180deg);
  background-color:#C9D3DC;
  background-image:var(--m-fill,linear-gradient(100deg,#8E9BA8,#FFFFFF 26%,#DCE5EC 48%,#7F8D9B 72%,#EEF4F8));
  background-size:100% 100%;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.5);
}
.bully-faq__i.is-open .bully-faq__ic::before,
.bully-faq__i.is-open .bully-faq__ic::after{background:var(--m-on,#08090B)}
.bully-faq__i.is-open .bully-faq__ic::after{transform:rotate(0)}

.bully-faq__a{display:grid; grid-template-rows:0fr; transition:grid-template-rows .6s var(--bully-ease)}
.bully-faq__i.is-open .bully-faq__a{grid-template-rows:1fr}
.bully-faq__a > .bully-faq__inner{overflow:hidden}
.bully-faq__a p{
  margin:0;
  padding:0 clamp(8px,1.2vw,16px) clamp(24px,3vw,34px)
          calc(var(--faq-n) + clamp(12px,1.6vw,24px) + clamp(8px,1.2vw,16px));
  max-width:70ch; color:var(--bully-70); font-weight:300; line-height:1.75; font-size:.94rem;
  opacity:0; transform:translateY(8px);
  transition:opacity .5s var(--bully-ease) .1s, transform .55s var(--bully-ease) .1s;
}
.bully-faq__i.is-open .bully-faq__a p{opacity:1; transform:none}

@media(max-width:600px){
  .bully-faq{--faq-n:2em}
  .bully-faq__ic{width:30px; height:30px}
  .bully-faq__a p{padding-left:calc(var(--faq-n) + 12px + 8px)}
}

/* ==========================================================================
   NEWSLETTER SECTION
   ========================================================================== */
.bully-nlsec{overflow:hidden; background:linear-gradient(180deg,var(--bully-char),var(--bully-ink) 70%)}
.bully-nlsec__bg{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
  filter:brightness(.42); opacity:.75;
}
.bully-nlsec__glow{
  position:absolute; inset:auto -10% -60%; height:70%; pointer-events:none;
  background:radial-gradient(50% 100% at 50% 100%, rgba(var(--m-glow),.2), transparent 70%);
}
.bully-nlsec__in{
  position:relative; z-index:2; max-width:var(--bully-max,1200px); margin-inline:auto;
  padding-inline:clamp(18px,4vw,64px);
  display:grid; grid-template-columns:1fr 1fr; gap:clamp(26px,4vw,64px); align-items:center;
}
.bully-nlsec__copy{display:flex; flex-direction:column; gap:16px}
@media(max-width:860px){.bully-nlsec__in{grid-template-columns:1fr}}

/* ==========================================================================
   GALLERY
   ========================================================================== */
.bully-gal{
  --bully-cols:3; --bully-gap:14px; --bully-zoom:1.06; --bully-veil:.45;
  display:grid; gap:var(--bully-gap);
}
.bully-gal__i{
  position:relative; display:block; padding:0; border:0; background:none; text-align:left;
  cursor:pointer; opacity:0; transform:translateY(22px);
  animation:bullyCardIn .8s var(--bully-ease) forwards;
  animation-delay:calc(var(--i,0) * 55ms);
}
.bully-gal__frame{
  position:relative; overflow:hidden; isolation:isolate;
  background:linear-gradient(160deg,var(--bully-smoke),var(--bully-ink) 62%,var(--bully-char));
}
.bully-gal__img{
  display:block; width:100%; height:100%; object-fit:cover;
  scale:1; translate:0 0;
  transition:scale 1.15s var(--bully-ease), translate .4s var(--bully-ease), filter .9s var(--bully-ease);
}
.bully-gal__i:hover .bully-gal__img{scale:var(--bully-zoom,1.06)}
.bully-gal:not(.bully-gal--masonry) .bully-gal__img{position:absolute; inset:0}
.bully-gal.is-mono .bully-gal__img{filter:grayscale(1) contrast(1.06) brightness(.88)}
.bully-gal__i:hover .bully-gal__img{filter:grayscale(.15) brightness(1)}
.bully-gal__veil{
  position:absolute; inset:0; pointer-events:none;
  background:linear-gradient(180deg,transparent 40%,rgba(5,5,6,calc(.2 + var(--bully-veil) * .8)));
  opacity:.85; transition:opacity .6s;
}
.bully-gal__i:hover .bully-gal__veil{opacity:1}

.bully-gal__n{
  position:absolute; top:12px; left:12px; z-index:3;
  font-family:var(--bully-mono); font-size:.56rem; letter-spacing:.2em; color:var(--bully-45);
}
.bully-gal:not(.is-numbered) .bully-gal__n{display:none}

.bully-gal__cap{
  position:absolute; left:0; right:0; bottom:0; z-index:3; padding:16px;
  display:flex; flex-direction:column; gap:4px;
}
.bully-gal__cap b{
  font-family:var(--bully-display); font-weight:700; font-variation-settings:'wdth' 106;
  font-size:.95rem; text-transform:uppercase; letter-spacing:.01em; line-height:1.2;
}
.bully-gal__cap span{font-family:var(--bully-mono); font-size:.58rem; letter-spacing:.18em; text-transform:uppercase; color:var(--bully-45)}
.bully-gal.is-cap-hover .bully-gal__cap{
  opacity:0; transform:translateY(10px);
  transition:opacity .5s var(--bully-ease), transform .6s var(--bully-ease);
}
.bully-gal.is-cap-hover .bully-gal__i:hover .bully-gal__cap,
.bully-gal.is-cap-hover .bully-gal__i:focus-visible .bully-gal__cap{opacity:1; transform:none}
.bully-gal__cap--below{position:relative; padding:12px 0 0}

.bully-gal.is-gilded .bully-gal__frame::after{
  content:''; position:absolute; inset:0; padding:1px; pointer-events:none; z-index:4; opacity:.5;
  background:var(--metal); background-size:400% 100%; background-position:var(--sheen,0%) 0;
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  -webkit-mask-composite:xor; mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  mask-composite:exclude; transition:opacity .5s;
}
.bully-gal.is-gilded .bully-gal__i:hover .bully-gal__frame::after{opacity:1}

/* --- mosaic --- */
.bully-gal--mosaic{grid-template-columns:repeat(6,1fr)}
.bully-gal--mosaic > *{grid-column:span 2}
.bully-gal--mosaic > *:nth-child(6n+1){grid-column:span 2; grid-row:span 2}
.bully-gal--mosaic > *:nth-child(6n+1) .bully-gal__frame{height:100%}
.bully-gal--mosaic > *:nth-child(6n+4){grid-column:span 4}
.bully-gal--mosaic > *.is-wide{grid-column:span 4}

/* --- masonry --- */
.bully-gal--masonry{display:block; columns:var(--bully-cols); column-gap:var(--bully-gap)}
.bully-gal--masonry > *{break-inside:avoid; margin-bottom:var(--bully-gap); display:block; width:100%}
.bully-gal--masonry .bully-gal__img{position:relative; height:auto}

/* --- rail: drag-scrolled, overlaid captions, its own progress line --- */
.bully-gal--rail{
  display:flex; overflow-x:auto; scroll-snap-type:x mandatory; cursor:grab;
  scrollbar-width:none; -ms-overflow-style:none; padding-bottom:0;
  overscroll-behavior-x:contain;
}
.bully-gal--rail::-webkit-scrollbar{display:none}
.bully-gal--rail.is-dragging{cursor:grabbing; scroll-snap-type:none; user-select:none}
.bully-gal--rail > *{
  flex:none; width:clamp(250px,26vw,370px); scroll-snap-align:start; position:relative;
  transition:transform .5s var(--bully-ease);
}
.bully-gal--rail > *:hover{transform:translateY(-6px)}
.bully-gal--rail .bully-gal__frame::after{
  content:''; position:absolute; inset:0; z-index:4; pointer-events:none; opacity:0;
  box-shadow:inset 0 0 0 1px var(--m-mid); transition:opacity .45s var(--bully-ease);
}
.bully-gal--rail > *:hover .bully-gal__frame::after{opacity:.85}

/* captions ride on the image instead of sitting in a row underneath */
.bully-gal--rail .bully-gal__cap--below{
  position:absolute; left:0; right:0; bottom:0; z-index:4; padding:18px 18px 16px;
  background:linear-gradient(180deg,transparent,rgba(5,5,6,.92));
}
.bully-gal--rail .bully-gal__n{
  top:auto; bottom:16px; left:auto; right:16px; z-index:5;
  font-size:.58rem; color:var(--m-light);
}

/* progress line, built by JS so the markup stays clean */
.bully-rail-bar{
  position:relative; height:1px; margin-top:clamp(18px,2vw,28px);
  background:var(--bully-line); overflow:hidden;
}
.bully-rail-bar i{
  position:absolute; inset:0 auto 0 0; width:30%;
  background:var(--metal); background-size:400% 100%; background-position:var(--sheen,0%) 0;
  transform-origin:left; transition:transform .18s linear;
}
@media(max-width:600px){
  .bully-gal--rail > *{width:clamp(230px,78vw,300px)}
}

/* --- stack --- */
.bully-gal--stack{grid-template-columns:repeat(var(--bully-cols),minmax(0,1fr)); align-items:start}
.bully-gal--stack > *:nth-child(even){margin-top:clamp(24px,7vw,110px)}
.bully-gal--stack > *:nth-child(3n){margin-top:clamp(12px,3vw,54px)}

/* --- strip --- */
.bully-gal--strip{display:block; overflow:hidden; gap:0}
.bully-gal--strip .bully-gal__track{
  display:flex; gap:var(--bully-gap); width:max-content;
  animation:bullyMarq 42s linear infinite;
}
.bully-gal--strip:hover .bully-gal__track{animation-play-state:paused}
.bully-gal--strip .bully-gal__i{flex:none; width:clamp(220px,24vw,340px); animation:none; opacity:1; transform:none}

/* --- split --- */
.bully-gal--split{grid-template-columns:1fr 1fr}
.bully-gal--split > *:nth-child(even){margin-top:clamp(30px,8vw,120px)}

@media(max-width:1024px){
  .bully-gal--mosaic{grid-template-columns:repeat(2,1fr)}
  .bully-gal--mosaic > *{grid-column:span 1 !important; grid-row:span 1 !important}
  .bully-gal--masonry{columns:2}
}
@media(max-width:600px){
  .bully-gal--mosaic,.bully-gal--split,.bully-gal--stack{grid-template-columns:1fr}
  .bully-gal--masonry{columns:1}
  .bully-gal--stack > *{margin-top:0 !important}
  .bully-gal--split > *:nth-child(even){margin-top:0}
}

/* ==========================================================================
   LIGHTBOX
   ========================================================================== */
.bully-lb{
  position:fixed; inset:0; z-index:140; display:grid; place-items:center;
  background:rgba(3,3,4,.94); backdrop-filter:blur(14px);
  opacity:0; visibility:hidden; transition:opacity .4s, visibility .4s;
}
.bully-lb.is-on{opacity:1; visibility:visible}
.bully-lb__img{
  max-width:min(1200px,92vw); max-height:82vh; object-fit:contain;
  transform:scale(.97); transition:transform .5s var(--bully-ease);
  box-shadow:0 40px 120px rgba(0,0,0,.6);
}
.bully-lb.is-on .bully-lb__img{transform:none}
.bully-lb__bar{
  position:absolute; left:0; right:0; bottom:0; z-index:2;
  display:flex; align-items:center; justify-content:space-between; gap:20px;
  padding:20px clamp(16px,4vw,44px);
}
.bully-lb__cap{font-family:var(--bully-mono); font-size:.64rem; letter-spacing:.18em; text-transform:uppercase; color:var(--bully-70); margin:0}
.bully-lb__n{font-family:var(--bully-mono); font-size:.62rem; letter-spacing:.2em; color:var(--bully-45)}
.bully-lb__x{position:absolute; top:18px; right:clamp(16px,4vw,40px); z-index:3}
.bully-lb__nav{
  position:absolute; top:50%; transform:translateY(-50%); z-index:3;
  width:52px; height:52px; display:grid; place-items:center;
  border:1px solid var(--bully-line-2); color:var(--bully-70); background:rgba(5,5,6,.4);
  transition:.35s;
}
.bully-lb__nav:hover{border-color:var(--m-mid); color:var(--m-spec)}
.bully-lb__nav svg{width:20px; height:20px}
.bully-lb__nav.is-prev{left:clamp(10px,3vw,32px); transform:translateY(-50%) rotate(180deg)}
.bully-lb__nav.is-next{right:clamp(10px,3vw,32px)}
@media(max-width:600px){
  .bully-lb__nav{width:42px; height:42px}
  .bully-lb__img{max-height:70vh}
}

@media (prefers-reduced-motion: reduce){
  [data-bully-rv]{opacity:1 !important; transform:none !important; clip-path:none !important}
  .bully-w > i{transform:none !important}
  .bully-word span{opacity:1 !important; transform:none !important}
  .bully-gal__i,.bully-marq__t,.bully-hero__img{animation:none !important; opacity:1 !important}
  .bully-gal--strip .bully-gal__track{animation:none !important}
}

/* ==========================================================================
   FORM SECTION
   ========================================================================== */
.bully-formsec__in{display:grid; gap:clamp(26px,4vw,64px); align-items:start}
.bully-formsec.is-split .bully-formsec__in{grid-template-columns:.9fr 1.1fr}
.bully-formsec.is-single .bully-formsec__in{grid-template-columns:1fr; max-width:64ch; margin-inline:auto}
.bully-formsec__copy{display:flex; flex-direction:column; gap:16px}
.bully-details{display:flex; flex-direction:column; gap:18px; margin-top:4px}
.bully-details li{display:flex; flex-direction:column; gap:6px}
.bully-details b{font-family:var(--bully-display); font-weight:700; font-size:1rem; text-transform:uppercase}
.bully-form--contact{
  display:flex; flex-direction:column; gap:16px;
  background:linear-gradient(180deg,var(--bully-char),var(--bully-ink) 70%);
  padding:clamp(22px,3vw,40px); position:relative;
}
.bully-form--contact::before{
  content:''; position:absolute; inset:0; padding:1px; pointer-events:none; opacity:.5;
  background:var(--metal); background-size:400% 100%; background-position:var(--sheen,0%) 0;
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  -webkit-mask-composite:xor; mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  mask-composite:exclude;
}
.bully-form--contact > *{position:relative; z-index:1}
.bully-form__row{display:grid; grid-template-columns:1fr 1fr; gap:16px}
.bully-form--contact textarea,
.bully-form--contact select{
  width:100%; background:transparent; color:var(--bully-bone);
  border:1px solid var(--bully-line-2); padding:13px 15px;
  font-family:var(--bully-body); font-size:.94rem; transition:border-color .4s;
}
.bully-form--contact textarea{resize:vertical; min-height:140px}
.bully-form--contact textarea:focus,
.bully-form--contact select:focus{outline:none; border-color:var(--m-mid)}
.bully-form--contact select option{background:var(--bully-char)}
@media(max-width:860px){
  .bully-formsec.is-split .bully-formsec__in{grid-template-columns:1fr}
  .bully-form__row{grid-template-columns:1fr}
}

/* ==========================================================================
   CATEGORY PANELS
   Collapsed panels show a vertical label; the active one opens and reveals
   its copy. Hover on desktop, tap on touch.
   ========================================================================== */
.bully-cats-grid--panels{
  --bully-panel-h:620px; --bully-panel-grow:5;
  display:flex; gap:clamp(4px,.5vw,9px); height:var(--bully-panel-h);
}
.bully-panel{
  position:relative; flex:1 1 0%; min-width:0; overflow:hidden; display:block;
  background:var(--bully-char); border:1px solid var(--bully-line); cursor:pointer;
  transition:flex-grow .8s var(--bully-ease);
}
.bully-panel:hover,
.bully-panel:focus-visible,
.bully-panel.is-active{flex-grow:var(--bully-panel-grow)}
.bully-panel:focus-visible{outline:2px solid var(--m-light); outline-offset:-2px}

.bully-panel__img{
  position:absolute; inset:0; background-size:cover; background-position:center;
  transform:scale(1.08); filter:brightness(.9);
  transition:transform 1.1s var(--bully-ease), filter 1s var(--bully-ease);
}
.bully-panel:hover .bully-panel__img,
.bully-panel.is-active .bully-panel__img{transform:scale(1); filter:brightness(1)}
.bully-panel__tint{
  position:absolute; inset:0;
  background:linear-gradient(180deg,rgba(5,5,6,.08) 0%,rgba(5,5,6,.28) 52%,rgba(5,5,6,.88) 100%);
}
.bully-panel__n{
  position:absolute; top:clamp(16px,1.8vw,24px); left:clamp(16px,1.8vw,24px); z-index:3;
  font-family:var(--bully-mono); font-size:.6rem; letter-spacing:.2em; color:var(--m-light);
}
.bully-panel__vert{
  position:absolute; bottom:clamp(18px,2.4vw,32px); left:50%; z-index:3;
  transform:translateX(-50%) rotate(180deg); writing-mode:vertical-rl; white-space:nowrap;
  font-family:var(--bully-display); font-weight:800; font-variation-settings:'wdth' 112;
  font-size:clamp(1.1rem,1.8vw,1.6rem); text-transform:uppercase; letter-spacing:.02em;
  color:var(--bully-bone); transition:opacity .4s;
}
.bully-panel:hover .bully-panel__vert,
.bully-panel:focus-visible .bully-panel__vert,
.bully-panel.is-active .bully-panel__vert{opacity:0}

.bully-panel__body{
  position:absolute; inset:0; z-index:2; display:flex; flex-direction:column;
  justify-content:flex-end; padding:clamp(18px,2vw,32px);
}
.bully-panel__rich{
  display:flex; flex-direction:column; gap:12px; opacity:0; transform:translateY(20px);
  transition:opacity .55s var(--bully-ease) .12s, transform .6s var(--bully-ease) .12s;
}
.bully-panel:hover .bully-panel__rich,
.bully-panel:focus-visible .bully-panel__rich,
.bully-panel.is-active .bully-panel__rich{opacity:1; transform:none}
.bully-panel__t{
  font-family:var(--bully-display); font-weight:800; font-variation-settings:'wdth' 112;
  font-size:clamp(1.3rem,2.4vw,2.1rem); line-height:1; text-transform:uppercase; color:var(--bully-bone);
}
.bully-panel__d{font-size:.88rem; line-height:1.6; font-weight:300; color:var(--bully-70); max-width:44ch}
.bully-panel__m{
  display:flex; align-items:center; gap:16px; margin-top:4px;
  font-family:var(--bully-mono); font-size:.6rem; letter-spacing:.18em;
  text-transform:uppercase; color:var(--bully-45);
}
.bully-panel__m b{
  font-weight:500;
  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-panel__m .bully-arr{display:inline-block; font-style:normal; transition:transform .35s var(--bully-ease)}
.bully-panel:hover .bully-panel__m .bully-arr{transform:translateX(5px)}

@media(max-width:860px){
  .bully-cats-grid--panels{flex-direction:column; height:auto}
  .bully-panel{flex:none; height:88px; transition:height .7s var(--bully-ease)}
  .bully-panel:hover{flex-grow:0}
  .bully-panel.is-active{height:clamp(400px,60vh,520px); flex-grow:0}
  .bully-panel__vert{
    writing-mode:horizontal-tb; left:clamp(18px,5vw,26px); bottom:auto; top:50%;
    transform:translateY(-50%);
  }
  .bully-panel.is-active .bully-panel__vert{opacity:0}
}

/* ==========================================================================
   GALLERY — TILT
   ========================================================================== */
.bully-gal--tilt{
  grid-template-columns:repeat(12,1fr);
  perspective:1400px; perspective-origin:50% 22%;
}
.bully-gal--tilt .bully-gal__i{
  transform:perspective(1000px);
  transition:transform .45s var(--bully-ease), box-shadow .5s var(--bully-ease);
  box-shadow:0 18px 40px -26px rgba(0,0,0,.7);
  will-change:transform;
}
.bully-gal--tilt .bully-gal__i:hover{z-index:6; box-shadow:0 38px 72px -32px rgba(0,0,0,.85)}
/* span and height come from the row plan, written inline per tile.
   No forced grid-row: rows are implicit, so nothing can be dragged back
   to the top when the item count does not match the pattern. */
.bully-gal--tilt > *{
  grid-column:span var(--span,4);
  height:var(--row-h,auto);
  position:relative; overflow:hidden;
}
.bully-gal--tilt .bully-gal__frame{aspect-ratio:auto; height:100%; position:absolute; inset:0}

/* pointer-following metallic sheen */
.bully-gal__glare{
  position:absolute; inset:0; z-index:3; pointer-events:none; opacity:0; mix-blend-mode:screen;
  background:radial-gradient(240px circle at var(--mx,50%) var(--my,50%), rgba(var(--m-glow),.30), transparent 60%);
  transition:opacity .45s var(--bully-ease);
}
.bully-gal__i:hover .bully-gal__glare{opacity:1}

/* entrance curtain */
.bully-gal__curtain{
  position:absolute; inset:0; z-index:5; pointer-events:none;
  background:var(--metal); background-size:300% 100%; background-position:var(--sheen,0%) 0;
  transition:transform 1.05s var(--bully-ease); transition-delay:var(--d,0s);
}
.bully-gal--tilt .bully-gal__i{opacity:1; transform:perspective(1000px); animation:none}
.bully-gal--tilt.is-ready .sw-left.is-in  .bully-gal__curtain{transform:translateX(-102%)}
.bully-gal--tilt.is-ready .sw-right.is-in .bully-gal__curtain{transform:translateX(102%)}
.bully-gal--tilt.is-ready .sw-up.is-in    .bully-gal__curtain{transform:translateY(-102%)}
.bully-gal--tilt.is-ready .sw-down.is-in  .bully-gal__curtain{transform:translateY(102%)}
.bully-gal--tilt:not(.is-ready) .bully-gal__curtain{transform:none}

/* card entrance variants */
.bully-gal--tilt.is-ready .bully-gal__frame{
  transition:transform 1.05s var(--bully-ease), opacity 1s var(--bully-ease);
  transition-delay:var(--d,0s);
}
.bully-gal--tilt.is-ready .rv-up:not(.is-in) .bully-gal__frame{opacity:0; transform:translateY(48px)}
.bully-gal--tilt.is-ready .rv-zoom:not(.is-in) .bully-gal__frame{opacity:0; transform:scale(.84)}
.bully-gal--tilt.is-ready .rv-flip-x:not(.is-in) .bully-gal__frame{opacity:0; transform:perspective(1100px) rotateX(26deg) translateY(40px); transform-origin:50% 100%}
.bully-gal--tilt.is-ready .rv-flip-y:not(.is-in) .bully-gal__frame{opacity:0; transform:perspective(1100px) rotateY(-28deg) translateX(34px); transform-origin:100% 50%}
.bully-gal--tilt .is-in .bully-gal__frame{opacity:1; transform:none}

@media(max-width:900px){
  .bully-gal--tilt{grid-template-columns:repeat(2,1fr); perspective:1000px}
  .bully-gal--tilt > *{grid-column:span 1; height:var(--bully-row-h-m,320px)}
  /* a tile that wanted more than half the width keeps the full row */
  .bully-gal--tilt > *[style*="--span:7"],
  .bully-gal--tilt > *[style*="--span:8"],
  .bully-gal--tilt > *[style*="--span:12"]{grid-column:span 2}
}
@media(max-width:560px){
  .bully-gal--tilt{grid-template-columns:1fr}
  .bully-gal--tilt > *{grid-column:span 1 !important}
}
@media (prefers-reduced-motion: reduce){
  .bully-gal__curtain{display:none}
  .bully-gal--tilt .bully-gal__frame{opacity:1 !important; transform:none !important}
  .bully-panel__rich{opacity:1 !important; transform:none !important}
}

/* ==========================================================================
   ELEMENTOR EDITOR
   Every entrance state here starts hidden and is released by JS on scroll.
   Inside the editor there is no scroll trigger and widgets are re-rendered
   on each keystroke, so nothing must ever depend on that.
   ========================================================================== */
body.elementor-editor-active .bully-stmt__line > span{clip-path:none !important}
body.elementor-editor-active .bully-stmt__fig{opacity:1 !important; transform:none !important}
body.elementor-editor-active [data-bully-rv],
body.elementor-editor-active .bully-word span,
body.elementor-editor-active .bully-panel__rich,
body.elementor-editor-active .bully-pillar,
body.elementor-editor-active .bully-value,
body.elementor-editor-active .bully-gal--tilt .bully-gal__frame{
  opacity:1 !important;
  transform:none !important;
  clip-path:none !important;
  transition:none !important;
}
body.elementor-editor-active .bully-w > i{transform:none !important}
body.elementor-editor-active .bully-pillar__bar{transform:scaleX(1) !important}
body.elementor-editor-active .bully-gal__curtain{display:none !important}
body.elementor-editor-active .bully-card,
body.elementor-editor-active .bully-gal__i,
body.elementor-editor-active .bully-cat-tile{
  opacity:1 !important; transform:none !important; animation:none !important;
}
/* the pinned header would float over the canvas while editing */
body.elementor-editor-active .bully-hd.is-fixed{position:relative}
body.elementor-editor-active .bully-hd__spacer{display:none}

/* ==========================================================================
   FRAME BACKDROP
   A transparent product cut-out with a dark subject is invisible against a
   dark frame. These give the slot something to sit on.
   ========================================================================== */
.bully-frame.is-bg-light{background:linear-gradient(160deg,#EDF1F4,#C6D0D8 60%,#DDE4E9)}
.bully-frame.is-bg-light .bully-frame__img{filter:contrast(1.02)}
.bully-frame.is-bg-light .bully-frame__veil{display:none}
.bully-frame.is-bg-light .bully-frame__ph{color:rgba(20,20,23,.4)}
.is-mono .bully-frame.is-bg-light .bully-frame__img{filter:grayscale(1) contrast(1.05)}

.bully-frame.is-bg-metal{
  background-color:#C9D3DC;
  background-image:var(--m-fill,linear-gradient(100deg,#8E9BA8,#FFFFFF 26%,#DCE5EC 48%,#7F8D9B 72%,#EEF4F8));
  background-size:100% 100%;
}
.bully-frame.is-bg-metal .bully-frame__veil{display:none}
.bully-frame.is-bg-metal .bully-frame__img{filter:contrast(1.02)}

.bully-frame.is-bg-none{background:transparent}
.bully-frame.is-bg-none .bully-frame__veil{display:none}

/* show the whole subject rather than cropping it */
.bully-frame.is-fit-contain .bully-frame__img{
  object-fit:contain;
  padding:clamp(18px,3vw,44px);
  box-sizing:border-box;
}
.bully-frame.is-fit-contain:hover .bully-frame__img{transform:none}

/* a very dark photo needs exposure and an edge, or the frame reads as a hole */
.bully-frame.is-lift{box-shadow:inset 0 0 0 1px var(--bully-line-2)}
.bully-frame.is-lift .bully-frame__img{filter:grayscale(1) contrast(1.22) brightness(1.5)}
.is-mono .bully-frame.is-lift .bully-frame__img{filter:grayscale(1) contrast(1.22) brightness(1.5)}
.bully-frame.is-lift .bully-frame__veil{display:none}
.bully-frame.is-lift:hover .bully-frame__img{filter:grayscale(.3) contrast(1.18) brightness(1.55)}


/* ==========================================================================
   PHONE TYPE CEILING
   Headlines are capped rather than merely scaled: a viewport unit still
   overflows once a word is long enough. body-prefixed so a per-widget size
   set in Elementor cannot push past the ceiling on a phone.
   ========================================================================== */
@media(max-width:781px){
  body .bully-sec .bully-sec__t{font-size:clamp(1.2rem,5.6vw,30px); line-height:1.08; max-width:none}
  body .bully-sec.bully-hero .bully-sec__t{font-size:clamp(1.2rem,5.6vw,30px)}
  body .bully-hero__in{gap:16px; padding-block:clamp(80px,16vh,120px) clamp(48px,8vh,72px)}
  body .bully-stmt__line{font-size:clamp(1.15rem,5.4vw,28px)}
  body .bully-products__t{font-size:clamp(1.2rem,5.6vw,30px)}
  body .bully-shophero__t{font-size:clamp(1.3rem,6vw,32px)}
  body .bully-cat-tile__t,
  body .bully-panel__t{font-size:clamp(1.05rem,4.8vw,24px)}
  body .bully-number__v{font-size:clamp(1.2rem,5.2vw,26px)}
  body .bully-word span{font-size:clamp(2rem,13vw,58px)}
  body .bully-marq__t span{font-size:clamp(1.6rem,9vw,40px)}
  body .bully-faq__t{font-size:clamp(.95rem,4.2vw,19px)}
  body .bully-lede{font-size:.92rem}
}
