/* ZHONGLIAN BEOGRAD — home.css
   index.html only. Loads after base.css.
   Hero slider, ticker, audience split, systems list, bento, cross-section,
   breather band, process, archive + map, showroom band. */

/* ---------------------------------------------------------------- HERO */
.hero{
  position:relative;
  min-height:100vh;
  min-height:100svh;
  display:flex;flex-direction:column;justify-content:flex-end;
  /* Tuned so the whole hero — headline, CTAs, indicators and stat bar — fits inside
     100svh at 1440x900 without the stat bar falling below the fold. */
  padding-top:112px;
  /* Clears the fixed assistant launcher (56px + 24px inset) so it never sits on the stat bar. */
  padding-bottom:clamp(38px,5vh,54px);
  overflow:hidden;
  isolation:isolate;
}
/* ---- slider ---- */
.hero__media{position:absolute;inset:0;z-index:0;overflow:hidden;background:var(--sunken)}
.hero__media img{
  position:absolute;inset:0;
  width:100%;height:100%;
  object-fit:cover;
}
.slide{
  position:absolute;inset:0;
  opacity:0;
  transition:opacity 1200ms cubic-bezier(.4,0,.2,1);
  will-change:opacity;
}
.slide.is-on{opacity:1}
/* Ken Burns runs only on the visible slide; origin alternates so consecutive
   slides never drift the same way. Set per slide from data-o via JS. */
.slide img{transform:scale(1);transition:none}
.slide.is-on img{
  animation:kb 7700ms linear forwards;
  transform-origin:var(--o, center 40%);
}
@keyframes kb{from{transform:scale(1)}to{transform:scale(1.08)}}
.hero.is-paused .slide.is-on img{animation-play-state:paused}

/* Day / night grade over the photography */
.hero__media{transition:filter 700ms var(--ease)}
.hero[data-light="dan"] .hero__media{filter:brightness(1.06) contrast(1.02) saturate(.96) hue-rotate(-4deg)}
.hero[data-light="noc"] .hero__media{filter:brightness(.82) contrast(1.12) saturate(1.06) sepia(.12)}

/* Warm raking glow, night only */
.hero__glow{
  position:absolute;inset:0;z-index:2;pointer-events:none;
  opacity:0;transition:opacity 700ms var(--ease);
  background:radial-gradient(120% 90% at 88% 6%, rgba(168,122,44,.42), rgba(168,122,44,0) 62%);
}
.hero[data-light="noc"] .hero__glow{opacity:.34}

/* Two-layer scrim. Layer 1 protects the left-aligned headline, layer 2 seats the
   header and the stat bar. Measured against the brightest frame of all three slides. */
/* Layer 1 is deeper than the first draft: the gold italic line runs to 67% of the
   viewport, and at the brief's original stops it measured 1.95–2.93:1 over the bright
   skies in slides 2 and 3. Deepened through the headline band, released after 68%. */
.hero__veil{
  position:absolute;inset:0;z-index:3;pointer-events:none;
  background:
    linear-gradient(100deg, rgba(10,10,6,.95) 0%,  rgba(10,10,6,.84) 38%,
                            rgba(10,10,6,.56) 68%, rgba(10,10,6,.36) 86%,
                            rgba(10,10,6,.50) 100%),
    linear-gradient(180deg, rgba(10,10,6,.85) 0%, transparent 22%,
                            transparent 62%, rgba(10,10,6,.92) 100%);
}

.hero__in{
  position:relative;z-index:5;
  width:100%;max-width:1440px;margin:0 auto;
  padding-inline:var(--pad);
  padding-bottom:clamp(26px,4vw,50px);
}
.hero__h{
  font-size:clamp(48px,9.8vw,158px);
  letter-spacing:-.025em;line-height:.92;
  margin:14px 0 20px;
  max-width:14ch;
}
.hero__h span{display:block}
/* --muted fails AA over photography; this tone measures 5.19:1 on the worst frame. */
.hero__sub{color:var(--muted-photo);max-width:52ch;font-size:clamp(16px,1.5vw,18.5px)}
.hero__cta{display:flex;flex-wrap:wrap;gap:14px;margin-top:24px}

/* ---- slide indicators ---- */
.dots{
  position:absolute;z-index:6;right:var(--pad);
  bottom:calc(var(--ctlBottom, 200px) + 22px);
  display:flex;gap:10px;
}
.dots__b{
  background:none;border:0;cursor:pointer;
  /* 32x2 bar inside a 44px tap target */
  padding:21px 6px;display:block;line-height:0;
}
/* --line vanishes over photography, so the inactive track is a translucent white */
.dots__bar{display:block;width:32px;height:2px;background:rgba(239,235,224,.30);position:relative;overflow:hidden}
.dots__bar i{
  display:block;position:absolute;inset:0;
  background:var(--gold);
  transform:scaleX(0);transform-origin:left center;
}
.dots__b[aria-selected="true"] .dots__bar i{
  animation:fill var(--slideMs, 6500ms) linear forwards;
}
.hero.is-paused .dots__b[aria-selected="true"] .dots__bar i{animation-play-state:paused}
@keyframes fill{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.dots__b:hover .dots__bar{background:rgba(217,183,92,.55)}

/* ---- scroll cue ---- */
.cue{
  position:absolute;z-index:6;left:50%;transform:translateX(-50%);
  bottom:calc(var(--ctlBottom, 200px) + 18px);
  display:flex;flex-direction:column;align-items:center;gap:10px;
  opacity:1;transition:opacity 500ms var(--ease);
  pointer-events:none;
}
.cue.is-gone{opacity:0}
.cue__t{font-size:10px;letter-spacing:.28em;text-transform:uppercase;color:var(--muted)}
.cue__l{display:block;width:1px;height:38px;background:linear-gradient(180deg,var(--gold-deep),transparent);position:relative;overflow:hidden}
.cue__l::after{
  content:'';position:absolute;left:0;top:0;width:1px;height:14px;background:var(--gold-hi);
  animation:cue 2s var(--ease) infinite;
}
@keyframes cue{0%{transform:translateY(-16px);opacity:0}30%{opacity:1}100%{transform:translateY(38px);opacity:0}}

/* Day / night toggle. The whole control carries the backdrop, so its label stays
   legible wherever the photograph happens to be bright behind it. */
.daynight{
  position:absolute;z-index:6;right:var(--pad);top:clamp(120px,15vh,170px);
  display:flex;align-items:center;gap:12px;
  background:rgba(10,10,6,.62);border:1px solid var(--line);
  padding:8px 14px;
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
}
.daynight__lbl{
  font-family:var(--mono);font-size:10.5px;letter-spacing:.2em;
  text-transform:uppercase;color:var(--muted);
}
.daynight__sw{
  display:flex;align-items:center;gap:10px;
  background:none;border:0;padding:0;cursor:pointer;position:relative;
}
.daynight__t{
  background:none;border:0;cursor:pointer;padding:2px 3px;
  font-size:10px;letter-spacing:.16em;color:var(--muted);
  transition:color 400ms var(--ease);
}
.daynight__t[aria-checked="true"]{color:var(--gold-hi)}
.daynight__knob{
  width:26px;height:12px;border:1px solid var(--gold-deep);position:relative;flex:0 0 auto;
}
.daynight__knob::after{
  content:'';position:absolute;top:1px;left:1px;width:10px;height:8px;
  background:var(--gold);
  transition:transform 400ms var(--ease);
}
.daynight[data-mode="noc"] .daynight__knob::after{transform:translateX(12px)}

/* stat bar */
.stats{
  position:relative;z-index:5;
  width:100%;max-width:1440px;margin:0 auto;
  padding-inline:var(--pad);
  display:grid;grid-template-columns:repeat(4,1fr);
  border-top:1px solid var(--line);
}
.stats li{
  padding:22px 20px 22px 22px;
  display:flex;flex-direction:column;gap:6px;
  border-left:1px solid var(--line);
}
.stats li:first-child{border-left:0;padding-left:0}
.stats__n{font-size:clamp(24px,2.8vw,36px);color:var(--gold);letter-spacing:-.02em;line-height:1}
.stats__l{font-family:var(--mono);font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--dim)}

/* ---------------------------------------------------------------- TICKER */
.ticker{
  border-block:1px solid var(--line);
  overflow:hidden;background:var(--sunken);
}
.ticker__track{
  display:flex;width:max-content;
  animation:tick 42s linear infinite;
}
.ticker:hover .ticker__track{animation-play-state:paused}
.ticker__set{
  display:flex;align-items:center;gap:26px;
  padding:16px 13px;
  font-size:11.5px;letter-spacing:.22em;text-transform:uppercase;
  color:var(--muted);white-space:nowrap;
}
.ticker__set b{color:var(--gold-deep);font-weight:400}
@keyframes tick{to{transform:translateX(-50%)}}

/* ---------------------------------------------------------------- AUDIENCE SPLIT */
.split{
  display:grid;grid-template-columns:1fr 1fr;
  gap:1px;background:var(--line);
  border-bottom:1px solid var(--line);
}
.split__p{
  position:relative;background:var(--ink);
  padding:clamp(40px,6vw,84px) var(--pad);
  overflow:hidden;
  display:block;
}
/* Gold duotone so the photograph reads as a surface, not a picture, and the copy stays legible. */
.split__tex{
  position:absolute;inset:0;z-index:0;display:block;overflow:hidden;
  opacity:.22;
  filter:grayscale(1) sepia(.55) saturate(1.4) brightness(.5);
  transition:opacity 600ms var(--ease), transform 900ms var(--ease);
}
.split__tex img{display:block;width:100%;height:100%;object-fit:cover}
.split__p:hover .split__tex,
.split__p:focus-visible .split__tex{opacity:.34;transform:scale(1.04)}
.split__body{position:relative;z-index:2;display:flex;flex-direction:column;gap:12px;max-width:44ch}
.split__h{font-family:var(--serif);font-size:clamp(26px,3.4vw,44px);letter-spacing:-.03em;line-height:1}
.split__t{color:var(--muted);font-size:16px}
.split__a{
  font-family:var(--mono);font-size:11.5px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--gold);display:inline-flex;gap:.7em;align-items:center;margin-top:8px;
}
.split__p:hover .split__a i{transform:translateX(5px)}
.split__a i{font-style:normal;transition:transform 340ms var(--ease)}

/* ---------------------------------------------------------------- SISTEMI */
.sys{border-top:1px solid var(--line)}
.sys__row{border-bottom:1px solid var(--line)}
.sys__link{
  display:grid;
  grid-template-columns:58px minmax(0,1fr) minmax(0,270px) 158px 24px;
  align-items:center;gap:24px;
  padding:24px 0;
  position:relative;
  transition:transform 420ms var(--ease);
}
.sys__link::before{
  content:'';position:absolute;inset:0 auto 0 -24px;width:0;
  background:linear-gradient(90deg, rgba(217,183,92,.10), rgba(217,183,92,0));
  transition:width 420ms var(--ease);
  pointer-events:none;
}
.sys__n{font-size:11.5px;color:var(--gold-deep);letter-spacing:.1em}
.sys__name{
  font-family:var(--serif);
  font-size:clamp(19px,2.3vw,32px);letter-spacing:-.02em;line-height:1.05;
  transition:color 420ms var(--ease);
}
.sys__dim{font-size:11.5px;color:var(--dim);letter-spacing:.04em}
.sys__price{display:flex;flex-direction:column;align-items:flex-end;text-align:right;gap:2px}
.sys__price b{font-size:15px;font-weight:400;color:var(--text);letter-spacing:.01em}
.sys__price i{font-family:var(--mono);font-style:normal;font-size:10.5px;color:var(--dim);letter-spacing:.06em}
.sys__go{color:var(--dim);text-align:right;transition:color 420ms var(--ease), transform 420ms var(--ease)}

.sys__link:hover .sys__name,.sys__link:focus-visible .sys__name{color:var(--gold-hi)}
.sys__link:hover .sys__go,.sys__link:focus-visible .sys__go{color:var(--gold);transform:translateX(4px)}
.sys__link:hover::before,.sys__link:focus-visible::before{width:56%}

.sys__peek{
  /* Sits clear of the price column — the price must never be covered by the preview. */
  position:absolute;right:calc(var(--pad) + 200px);top:0;width:180px;height:112px;
  pointer-events:none;z-index:6;
  opacity:0;transform:scale(.9);
  transition:opacity 450ms var(--ease), transform 450ms var(--ease), top 450ms var(--ease);
  outline:1px solid var(--line);
}
.sys__peek.is-on{opacity:1;transform:scale(1)}
.sys__peek .mat{display:block;width:100%;height:100%}

/* ---------------------------------------------------------------- BENTO */
.bento{
  display:grid;grid-template-columns:repeat(12,1fr);
  gap:1px;background:var(--line);
  border:1px solid var(--line);
}
.bento__t{
  position:relative;overflow:hidden;isolation:isolate;
  grid-column:span 4;
  min-height:clamp(200px,26vw,300px);
  background:var(--sunken);
}
.bento__t--x8{grid-column:span 8}
.bento__t:nth-child(-n+2){min-height:clamp(300px,40vw,520px)}

/* texture lives in its own layer so hover can scale it without touching layout */
.bento__tex{
  position:absolute;inset:0;z-index:0;display:block;overflow:hidden;
  transform-origin:center;
  transition:transform 1s var(--ease);
}
/* The single photographic tile, pushed in onto the slatted cladding and the ribbed
   stone. Scaled rather than pre-cropped so it still draws from the 1600px source. */
.bento__t--photo .bento__tex img{
  display:block;width:100%;height:100%;
  object-fit:cover;object-position:78% 46%;
  transform:scale(1.38);transform-origin:80% 50%;
}
.bento__t--photo .bento__tex{filter:saturate(.86) brightness(.82) contrast(1.06)}
.bento__t:hover .bento__tex,
.bento__t:focus-within .bento__tex{transform:scale(1.06)}

.bento__t::after{
  content:'';position:absolute;inset:auto 0 0 0;height:62%;z-index:1;
  background:linear-gradient(180deg, rgba(6,6,4,0), rgba(6,6,4,.92));
  pointer-events:none;
}
.bento__lb{position:absolute;z-index:2;left:0;bottom:0;padding:22px 24px;display:grid;gap:5px}
.bento__lb .mono:first-child{font-size:10.5px;letter-spacing:.2em;color:var(--gold)}
.bento__lb h3{font-size:clamp(18px,2vw,26px);letter-spacing:-.02em}
.bento__lb p{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;color:var(--muted)}

/* ---------------------------------------------------------------- PRESEK (cross-section) */
.xsec{
  border:1px solid var(--line);
  background:
    linear-gradient(180deg, rgba(18,18,16,.6), rgba(6,6,4,.6)),
    radial-gradient(70% 60% at 30% 40%, rgba(217,183,92,.05), transparent 70%);
  padding:clamp(16px,3vw,40px);
}
.xsec__svg{width:100%;height:auto}
.xsec__svg path{fill:none;stroke:var(--gold);stroke-width:1.4;vector-effect:non-scaling-stroke}
.xsec__svg path.hair{stroke:var(--gold-dark);stroke-width:1}
.xsec__svg path.lead{stroke:var(--gold-deep);stroke-width:1}
.xsec__svg path.dim{stroke:var(--muted);stroke-width:1}
.xsec__svg .lb{
  font-family:var(--mono);font-size:15px;fill:var(--text);letter-spacing:.02em;
}
.xsec__svg .lb--s{font-size:12px;fill:var(--dim)}
.xsec__cap{
  margin-top:18px;font-size:10.5px;letter-spacing:.18em;
  text-transform:uppercase;color:var(--dim);
}
/* line-draw state — JS sets --len per path, then flips .is-draw on the figure */
.js .xsec[data-anim] path{
  stroke-dasharray:var(--len);
  stroke-dashoffset:var(--len);
}
.js .xsec[data-anim] text{opacity:0}
.js .xsec[data-anim].is-draw path{
  stroke-dashoffset:0;
  transition:stroke-dashoffset 900ms var(--ease) var(--d,0ms);
}
.js .xsec[data-anim].is-draw text{
  opacity:1;
  transition:opacity 500ms linear calc(var(--d,0ms) + 700ms);
}

/* ---------------------------------------------------------------- BREATHER BAND */
.band{
  position:relative;
  height:56vh;min-height:340px;
  display:grid;place-items:center;
  overflow:hidden;isolation:isolate;
  border-block:1px solid var(--line);
}
.band__media{position:absolute;inset:0;z-index:0;overflow:hidden}
/* Overscan so the scroll-linked translate never exposes an edge. */
.band__media img{
  display:block;position:absolute;left:0;top:-8%;
  width:100%;height:116%;
  object-fit:cover;object-position:center 42%;
  will-change:transform;
}
/* Desktop pointer devices get a deeper parallax; touch gets the JS translate instead —
   background-attachment:fixed stutters badly on iOS. */
@media (hover:hover) and (pointer:fine) and (min-width:1025px){
  .band__media{background-attachment:fixed}
  .band__media img{top:-13%;height:126%}
}
.band__veil{
  position:absolute;inset:0;z-index:1;
  background:
    linear-gradient(180deg, rgba(10,10,6,.86) 0%, rgba(10,10,6,.52) 34%, rgba(10,10,6,.52) 66%, rgba(10,10,6,.88) 100%);
}
.band__t{
  position:relative;z-index:2;
  font-family:var(--serif);font-weight:400;
  font-size:clamp(28px,5.2vw,74px);
  letter-spacing:-.02em;line-height:1.04;
  text-align:center;max-width:20ch;
  padding-inline:var(--pad);
}


/* ---------------------------------------------------------------- PROCES */
.proc{
  display:grid;grid-template-columns:repeat(5,1fr);
  border-top:1px solid var(--line);
}
.proc li{
  padding:30px 22px 40px;
  border-left:1px solid var(--line);
  border-bottom:1px solid var(--line);
  transition:background 400ms var(--ease);
}
.proc li:first-child{border-left:0}
.proc li:hover{background:var(--elev)}
.proc__n{display:block;font-size:11px;letter-spacing:.16em;color:var(--gold-deep);margin-bottom:18px}
.proc h3{font-size:clamp(19px,1.8vw,24px);margin-bottom:10px;letter-spacing:-.02em}
.proc p{font-size:14px;color:var(--muted)}

/* ---------------------------------------------------------------- OBJEKTI */
.arch{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);gap:clamp(30px,5vw,72px);align-items:start;position:relative}
.arch__list{border-top:1px solid var(--line)}
.arch__row{
  display:grid;grid-template-columns:54px minmax(0,1fr) 150px 74px 54px;
  align-items:center;gap:18px;
  padding:20px 0;border-bottom:1px solid var(--line);
  transition:transform 420ms var(--ease);
}
.arch__n{font-size:11px;color:var(--gold-deep);letter-spacing:.1em}
.arch__loc{font-size:16px}
.arch__sys,.arch__m2,.arch__y{font-size:11.5px;color:var(--dim);letter-spacing:.06em}
.arch__m2,.arch__y{text-align:right}
.arch__row:hover .arch__loc{color:var(--gold-hi)}

.arch__peek{
  position:absolute;left:0;width:180px;height:112px;
  pointer-events:none;z-index:6;opacity:0;transform:scale(.9);
  transition:opacity 450ms var(--ease), transform 450ms var(--ease), top 450ms var(--ease);
  outline:1px solid var(--line);
}
.arch__peek.is-on{opacity:1;transform:scale(1)}
.arch__peek img{display:block;width:100%;height:100%;object-fit:cover}

.map{border:1px solid var(--line);padding:clamp(16px,2.4vw,28px);background:var(--elev)}
.map__svg{width:100%;height:auto}
.zone{cursor:pointer}
.zone polygon{
  fill:#1a1a16;stroke:var(--line);stroke-width:1;
  transition:fill 360ms var(--ease), stroke 360ms var(--ease);
}
.zone__c{font-size:19px;fill:var(--muted);transition:fill 360ms var(--ease), font-size 360ms var(--ease)}
.zone__n{font-size:8px;letter-spacing:.14em;fill:var(--dim);transition:fill 360ms var(--ease)}
.zone:hover polygon,.zone:focus-visible polygon,.zone.is-on polygon{fill:rgba(217,183,92,.16);stroke:var(--gold)}
.zone:hover .zone__c,.zone:focus-visible .zone__c,.zone.is-on .zone__c{fill:var(--gold-hi);font-size:25px}
.zone:hover .zone__n,.zone:focus-visible .zone__n,.zone.is-on .zone__n{fill:var(--gold)}
.map__cap{
  display:flex;justify-content:space-between;gap:12px;
  margin-top:16px;padding-top:14px;border-top:1px solid var(--line);
  font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--dim);
}
#mapName{color:var(--gold)}

/* ---------------------------------------------------------------- SHOWROOM */
.show{position:relative;overflow:hidden;isolation:isolate;border-block:1px solid var(--line)}
.show__tex{position:absolute;inset:0;z-index:0;opacity:.30}
.show__tex img{display:block;width:100%;height:100%;object-fit:cover;object-position:60% 46%}
.show__veil{
  position:absolute;inset:0;z-index:1;
  background:linear-gradient(180deg, rgba(10,10,6,.92), rgba(10,10,6,.82));
}
.show__in{
  position:relative;z-index:3;
  max-width:820px;margin:0 auto;
  padding:clamp(64px,10vw,140px) var(--pad);
  text-align:center;
}
.show__h{font-size:clamp(30px,5.4vw,72px);letter-spacing:-.03em;line-height:1;margin:16px 0 20px}
.show__t{color:var(--muted);max-width:52ch;margin:0 auto}
.show__act{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;margin-top:34px}


/* =====================================================================
   RESPONSIVE — homepage sections
   ===================================================================== */
@media (max-width:1180px){
  .sys__link{grid-template-columns:52px minmax(0,1fr) 150px 24px}
  .sys__dim{display:none}
  .arch{grid-template-columns:1fr;gap:44px}
  .arch__peek{display:none}
}

@media (max-width:1024px){
  .proc{grid-template-columns:repeat(2,1fr)}
  .proc li:nth-child(odd){border-left:0}
  .bento__t,.bento__t--x8{grid-column:span 6}
  .bento__t:nth-child(-n+2){min-height:clamp(260px,34vw,400px)}
  .bento__t:last-child{grid-column:span 12}
}

@media (max-width:900px){
  .sys__peek{display:none}
  .sys__link{transform:none !important}
  .split{grid-template-columns:1fr}
}

@media (max-width:768px){
  .hero{padding-top:96px;padding-bottom:clamp(76px,10vh,96px)}

  /* Reserve a clear row above the stat bar for the toggle + indicators, so they
     never land on the stacked CTA buttons. */
  .hero__in{padding-bottom:78px}

  /* Toggle moves out of the eyebrow's way, down to the controls row: toggle left, dots right */
  .daynight{
    left:var(--pad);right:auto;top:auto;
    bottom:calc(var(--ctlBottom, 200px) + 16px);
    height:34px;
  }
  .daynight__lbl{display:none}
  .daynight__sw{padding:6px 10px;height:34px}
  .dots{bottom:calc(var(--ctlBottom, 200px) + 16px)}
  .cue{display:none}

  .stats{grid-template-columns:repeat(2,1fr)}
  .stats li:nth-child(odd){border-left:0;padding-left:0}
  .stats li:nth-child(n+3){border-top:1px solid var(--line)}
  .band{height:44vh}
  .arch__row{grid-template-columns:44px minmax(0,1fr) 62px;row-gap:4px}
  .arch__sys{grid-column:2;font-size:11px}
  .arch__y{display:none}
  .proc{grid-template-columns:1fr}
  .proc li{border-left:0}
  .bento__t,.bento__t--x8,.bento__t:last-child{grid-column:span 12}
  .bento__t:nth-child(-n+2){min-height:clamp(220px,52vw,320px)}
}

@media (max-width:640px){
  .sys__link{grid-template-columns:44px minmax(0,1fr) 118px;gap:14px}
  .sys__go{display:none}
  .sys__price b{font-size:14px}
  .show__act .btn,.hero__cta .btn{flex:1 1 100%;justify-content:center}
}

@media (max-width:480px){
  /* photographs behind the headline need more room than a flat ground did */
  .hero__h{font-size:clamp(38px,11vw,56px);line-height:.96;margin:16px 0 22px}
  .hero__sub{font-size:15.5px}
  .hero__cta{margin-top:26px;gap:10px}
  .hero{padding-top:88px}
}

@media (max-width:400px){
  .stats__n{font-size:20px}
}

@media (prefers-reduced-motion: reduce){
  .ticker__track{animation:none;transform:none}
  .js .xsec[data-anim] path{stroke-dasharray:none;stroke-dashoffset:0}
  .js .xsec[data-anim] text{opacity:1}
  /* slider: first frame only, no Ken Burns, no autoplay — indicators stay operable */
  .slide.is-on img{animation:none;transform:none}
  .dots__b[aria-selected="true"] .dots__bar i{animation:none;transform:scaleX(1)}
  .cue{display:none}
  .cue__l::after{animation:none}
}
