/* ============================================================
   ECLECTIC GROUP — cinematic experience
   Design tokens & global system
   ============================================================ */
:root{
  --black:#050505;
  --black-2:#0b0b0c;
  --cream:#F7F2EA;
  --cream-dim:#cdc7bd;
  --magenta:#FF2E7A;
  --peach:#FFB199;
  --line:rgba(247,242,234,.14);
  --line-soft:rgba(247,242,234,.07);

  --ff-disp:"Archivo Expanded","Archivo",system-ui,sans-serif;
  --ff-text:"Archivo",system-ui,sans-serif;

  --ease:cubic-bezier(.16,1,.3,1);
  --ease-in-out:cubic-bezier(.76,0,.24,1);

  --pad:clamp(20px,5vw,90px);
}

*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{
  background:var(--black);
  color:var(--cream);
  font-family:var(--ff-text);
  font-weight:400;
  line-height:1.4;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  cursor:default;
}
body.loading{overflow:hidden;height:100vh}
img{display:block;max-width:100%}
::selection{background:var(--magenta);color:var(--black)}

/* lenis */
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto!important}
.lenis.lenis-stopped{overflow:hidden}

/* ---------- type helpers ---------- */
.display{
  font-family:var(--ff-disp);
  font-weight:800;
  text-transform:uppercase;
  line-height:.86;
  letter-spacing:-.02em;
  text-wrap:balance;
}
.eyebrow{
  font-family:var(--ff-text);
  font-weight:600;
  text-transform:uppercase;
  letter-spacing:.32em;
  font-size:clamp(10px,.78vw,13px);
  color:var(--cream-dim);
}
.mag{color:var(--magenta)}
.peach{color:var(--peach)}

/* reveal primitives (driven by JS) */
.r-line{display:block;overflow:hidden}
.r-line > *{display:block;transform:translateY(110%)}

/* ============================================================
   FILM GRAIN + VIGNETTE (global overlay)
   ============================================================ */
.grain{
  position:fixed;inset:-50%;z-index:9000;pointer-events:none;
  width:200%;height:200%;
  opacity:var(--grain-opacity,.05);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  animation:grain 6s steps(8) infinite;
  mix-blend-mode:overlay;
}
@keyframes grain{
  0%{transform:translate(0,0)}10%{transform:translate(-5%,-5%)}20%{transform:translate(-10%,5%)}
  30%{transform:translate(5%,-10%)}40%{transform:translate(-5%,12%)}50%{transform:translate(-10%,5%)}
  60%{transform:translate(8%,0)}70%{transform:translate(0,8%)}80%{transform:translate(-8%,-8%)}
  90%{transform:translate(5%,5%)}100%{transform:translate(0,0)}
}
.vignette{
  position:fixed;inset:0;z-index:8999;pointer-events:none;
  opacity:var(--vignette,1);transition:opacity .5s var(--ease);
  background:radial-gradient(130% 100% at 50% 50%,transparent 55%,rgba(0,0,0,.55) 100%);
}
@media(prefers-reduced-motion:reduce){
  .grain{animation:none}
  *{scroll-behavior:auto!important}
}

/* ============================================================
   CHROME — logo, audio, progress
   ============================================================ */
.chrome{position:fixed;inset:0;z-index:7000;pointer-events:none}
.chrome > *{pointer-events:auto}

:root{--banner-h:clamp(44px,4.8vh,54px)}
/* ============================================================
   BRAND-HOUSE TICKER BANNER
   ============================================================ */
.topbanner{position:fixed;top:0;left:0;width:100%;height:var(--banner-h);z-index:7100;
  background:var(--black);border-bottom:1px solid var(--line);overflow:hidden;
  display:flex;align-items:center}
.topbanner.hidden{opacity:0;transform:translateY(-100%);
  transition:opacity .5s ease,transform .65s var(--ease)}
.topbanner__track{display:flex;align-items:center;white-space:nowrap;will-change:transform;
  animation:bannerMarquee 30s linear infinite}
.topbanner:hover .topbanner__track{animation-play-state:paused}
@keyframes bannerMarquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.topbanner__item{display:inline-flex;align-items:center;
  font-family:"Syne",var(--ff-disp);font-weight:800;text-transform:uppercase;
  font-size:clamp(13px,1.45vw,18px);letter-spacing:.05em;color:var(--cream-dim);padding:0 .2em}
.topbanner__item em{color:var(--cream)}
.topbanner__item .star{display:inline-block;margin:0 1.1em;font-size:.62em;
  transform:translateY(-1px);color:var(--magenta)}

.brandmark{
  position:fixed;top:calc(var(--banner-h) + clamp(14px,1.8vh,24px));left:var(--pad);
  text-decoration:none;line-height:1;mix-blend-mode:difference;
  display:flex;align-items:center;
}
.brandmark.is-hidden{opacity:0;pointer-events:none;transition:opacity .45s ease}
.brandmark__logo{
  display:block;
  height:clamp(24px,2.4vw,34px);
  width:calc(clamp(24px,2.4vw,34px) * 6.54);
  background:var(--cream);
  -webkit-mask:url("../assets/eclectic-logo.svg") left center / contain no-repeat;
  mask:url("../assets/eclectic-logo.svg") left center / contain no-repeat;
}

.audio-btn{
  position:fixed;top:clamp(16px,2.2vw,30px);right:var(--pad);
  display:flex;align-items:center;gap:10px;background:none;border:0;color:var(--cream);
  font-family:var(--ff-text);font-size:11px;font-weight:600;letter-spacing:.22em;
  text-transform:uppercase;cursor:pointer;mix-blend-mode:difference;padding:6px 0;
}
.audio-btn .eq{display:flex;align-items:flex-end;gap:2px;height:14px;width:18px}
.audio-btn .eq i{width:2px;background:var(--cream);height:30%;border-radius:1px;
  transition:height .25s var(--ease)}
.audio-btn.on .eq i{animation:eq 1s ease-in-out infinite}
.audio-btn.on .eq i:nth-child(2){animation-delay:.2s}
.audio-btn.on .eq i:nth-child(3){animation-delay:.4s}
.audio-btn.on .eq i:nth-child(4){animation-delay:.1s}
@keyframes eq{0%,100%{height:25%}50%{height:100%}}

.progress{position:fixed;left:0;top:var(--banner-h);height:2px;width:100%;z-index:7099;
  background:transparent;transform-origin:0 0;pointer-events:none}
.progress i{display:block;height:100%;width:100%;background:var(--magenta);
  transform:scaleX(0);transform-origin:0 0;box-shadow:0 0 12px var(--magenta)}

/* hide chrome during loader + hero */
.chrome.hidden{opacity:0;transition:opacity .6s ease}

/* ============================================================
   INTRO REVEAL — word-by-word "eyes opening"
   ============================================================ */
.intro{position:fixed;inset:0;z-index:9500;background:#0A0A0B;
  display:flex;align-items:center;justify-content:center;flex-direction:column;
  text-align:center;padding:0 6vw;overflow:hidden;
  clip-path:circle(150% at 50% 50%);will-change:clip-path,opacity}
.intro__line{font-family:var(--ff-disp);font-weight:800;text-transform:lowercase;
  font-size:clamp(2.4rem,9.5vw,8.6rem);line-height:.94;letter-spacing:-.045em;color:var(--cream);
  display:flex;flex-wrap:wrap;justify-content:center;gap:0 .26em;max-width:15ch;margin:0}
.intro__line .iw{display:inline-block}
.intro__line .iw b{display:inline-block;font-weight:800;opacity:0;transform:translateY(20px);
  filter:blur(8px);will-change:transform,opacity,filter}
.intro__line .iw:last-child b{color:var(--magenta)}
.intro.play .iw b{animation:eyeOpen .9s cubic-bezier(.16,1,.3,1) forwards}
.intro.play .iw:nth-child(1) b{animation-delay:.05s}
.intro.play .iw:nth-child(2) b{animation-delay:.15s}
.intro.play .iw:nth-child(3) b{animation-delay:.25s}
.intro.play .iw:nth-child(4) b{animation-delay:.35s}
.intro.play .iw:nth-child(5) b{animation-delay:.45s}
.intro.play .iw:nth-child(6) b{animation-delay:.55s}
@keyframes eyeOpen{to{opacity:1;transform:translateY(0);filter:blur(0)}}
.intro__sweep{position:absolute;left:0;top:50%;height:3px;width:34vw;max-width:520px;
  background:linear-gradient(90deg,transparent,var(--magenta) 40%,var(--peach));
  box-shadow:0 0 22px rgba(255,46,122,.7);opacity:0;
  transform:translate(-60vw,-50%) scaleX(0);transform-origin:0 50%}
.intro.sweep .intro__sweep{animation:introSweep .72s cubic-bezier(.16,1,.3,1) forwards}
@keyframes introSweep{
  0%{opacity:1;transform:translate(-60vw,-50%) scaleX(.2)}
  50%{opacity:1;transform:translate(0,-50%) scaleX(1)}
  100%{opacity:1;transform:translate(70vw,-50%) scaleX(.2)}}
.intro__skip{position:absolute;bottom:clamp(22px,5vh,46px);left:50%;
  transform:translateX(-50%);font-family:var(--ff-text);font-size:10px;letter-spacing:.3em;
  text-transform:uppercase;color:var(--cream-dim);opacity:0;
  animation:skipFade .9s ease 1.3s forwards}
@keyframes skipFade{to{opacity:.55}}
.intro.exit{clip-path:circle(0% at 50% 50%);opacity:0;
  transition:clip-path .85s cubic-bezier(.7,0,.3,1),opacity .55s ease .2s}
@media(prefers-reduced-motion:reduce){
  .intro__line .iw b{opacity:1;transform:none;filter:none}
  .intro__skip{display:none}
}

/* ============================================================
   SECTION SCAFFOLD
   ============================================================ */
section{position:relative}
.sec-pad{padding-left:var(--pad);padding-right:var(--pad)}
.sec-label{position:absolute;top:clamp(90px,12vh,150px);left:var(--pad);z-index:5;
  display:flex;gap:14px;align-items:center}
.sec-label b{font-weight:600}
.sec-num{color:var(--magenta)}

/* ============================================================
   S1 HERO — editorial, bottom-left, single idea
   ============================================================ */
.hero{height:100vh;height:100svh;min-height:480px;position:relative;overflow:hidden;background:var(--black)}
/* ---- cinematic owl emerging from the dark (right side) ---- */
.hero__owl{position:absolute;top:0;right:0;bottom:0;width:min(58vw,880px);z-index:1;
  pointer-events:none;overflow:hidden;
  opacity:0;transform:translateX(6%) scale(1.28);filter:blur(14px);transform-origin:62% 42%}
.hero.in .hero__owl{opacity:1;transform:translateX(0) scale(1);filter:blur(0);
  transition:opacity 2.2s var(--ease) .2s,transform 2.6s var(--ease) .2s,filter 2.2s var(--ease) .2s}
.hero__owl-inner{position:absolute;inset:0;animation:owlFloat 9s ease-in-out infinite;will-change:transform}
.hero__owl-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:54% 38%;
  filter:grayscale(.55) contrast(1.12) brightness(.78);
  -webkit-mask:radial-gradient(135% 115% at 72% 40%,#000 38%,rgba(0,0,0,.55) 58%,transparent 78%),
    linear-gradient(90deg,transparent,#000 42%);
  -webkit-mask-composite:source-in;
  mask:radial-gradient(135% 115% at 72% 40%,#000 38%,rgba(0,0,0,.55) 58%,transparent 78%),
    linear-gradient(90deg,transparent,#000 42%);
  mask-composite:intersect}
@keyframes owlFloat{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-2.2%) scale(1.012)}}
/* glowing eyes that blink */
.hero__eye{position:absolute;width:clamp(20px,2.5vw,40px);height:clamp(20px,2.5vw,40px);
  border-radius:50%;z-index:2;
  background:radial-gradient(circle at 50% 45%,rgba(255,210,120,.95),rgba(255,140,40,.5) 40%,rgba(255,46,122,.18) 65%,transparent 75%);
  mix-blend-mode:screen;opacity:0;transform-origin:50% 50%;filter:blur(.4px)}
.hero.in .hero__eye{animation:eyeGlow 2s var(--ease) 1.6s forwards,owlBlink 6.5s ease-in-out 3.6s infinite}
.hero__eye.e-l{top:8%;right:74%}
.hero__eye.e-r{top:8%;right:60.5%}
@keyframes eyeGlow{from{opacity:0}to{opacity:.92}}
@keyframes owlBlink{0%,90%,100%{transform:scaleY(1)}93%,96%{transform:scaleY(.06)}}
@media(prefers-reduced-motion:reduce){
  .hero__owl{transition:none}
  .hero__owl-inner,.hero.in .hero__eye{animation:none}
  .hero.in .hero__eye{opacity:.92}
}
/* top meta row */
.hero__meta{position:absolute;left:var(--pad);right:var(--pad);
  top:calc(var(--banner-h) + clamp(20px,3vh,38px));z-index:3;
  display:flex;justify-content:flex-end;align-items:baseline;gap:20px;opacity:0}
.hero.in .hero__meta{opacity:1;transition:opacity 1.2s var(--ease) .2s}
.hero__meta span{font-family:var(--ff-text);font-weight:600;text-transform:uppercase;
  letter-spacing:.26em;font-size:clamp(9px,.72vw,11px);color:var(--cream-dim)}
.hero__meta-r{display:inline-flex;gap:.7em;align-items:center;color:var(--cream)!important}
.hero__meta-r i{font-style:normal;color:var(--magenta)}
/* statement block pinned bottom-left */
.hero__inner{position:absolute;left:var(--pad);bottom:clamp(48px,10vh,128px);z-index:2;
  max-width:min(1500px,94vw)}
.hero__index{display:block;font-family:var(--ff-text);font-weight:600;text-transform:uppercase;
  letter-spacing:.3em;font-size:clamp(10px,.8vw,12px);color:var(--cream-dim);
  margin-bottom:clamp(20px,3.4vh,40px);padding-left:.18em;opacity:0;transform:translateY(14px)}
.hero.in .hero__index{opacity:1;transform:none;transition:opacity 1s var(--ease) .35s,transform 1s var(--ease) .35s}
.hero__h{font-family:var(--ff-disp);font-weight:800;text-transform:lowercase;
  font-size:min(clamp(3rem,12.5vw,15rem),19vh);line-height:.9;letter-spacing:-.045em;
  color:var(--cream);margin:0;text-align:left}
.hero__h .r-line{display:block;overflow:hidden;margin-bottom:-.12em}
.hero__h .r-line:last-child{margin-bottom:0}
.hero__h .r-line > *{display:block;transform:translateY(108%);will-change:transform;padding-bottom:.14em}
.hero.in .hero__h .r-line:nth-child(1) > *{transition:transform 1.05s var(--ease) .42s;transform:translateY(0)}
.hero.in .hero__h .r-line:nth-child(2) > *{transition:transform 1.05s var(--ease) .52s;transform:translateY(0)}
.hero.in .hero__h .r-line:nth-child(3) > *{transition:transform 1.05s var(--ease) .62s;transform:translateY(0)}
.hero__h .mag{color:var(--magenta)}
/* scroll cue — bottom right, minimal */
.hero__scroll{position:absolute;right:var(--pad);bottom:clamp(54px,11vh,120px);z-index:2;
  display:flex;flex-direction:column;align-items:center;gap:12px;opacity:0;
  font-size:9px;letter-spacing:.34em;text-transform:uppercase;color:var(--cream-dim)}
.hero.in .hero__scroll{opacity:1;transition:opacity 1s var(--ease) 1s}
.hero__scroll .ln{width:1px;height:54px;background:linear-gradient(var(--cream-dim),transparent);
  position:relative;overflow:hidden}
.hero__scroll .ln::after{content:"";position:absolute;top:-50%;left:0;width:100%;height:50%;
  background:var(--magenta);animation:drop 2.1s var(--ease-in-out) infinite}
@keyframes drop{0%{top:-50%}60%,100%{top:100%}}
@media(prefers-reduced-motion:reduce){
  .hero__meta,.hero__index,.hero__scroll{opacity:1}
  .hero__h .r-line > *{transform:none}
}

/* ============================================================
   S2 MONTAGE
   ============================================================ */
.montage{position:relative}
.montage__stage{position:sticky;top:0;height:100vh;overflow:hidden;background:var(--black)}
.montage__frame{position:absolute;inset:0;opacity:0}
.montage__frame img{width:100%;height:100%;object-fit:cover;
  filter:grayscale(var(--img-gray,1)) contrast(1.08) brightness(.62);transform:scale(1.08)}
.montage__frame::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(5,5,5,.35),rgba(5,5,5,.65))}
/* coloured frame (e.g. the FOOD flatlay) — full colour, lighter veil for legible white outline */
.montage__frame--color img{filter:none!important;transform:scale(1.06)}
.montage__frame--color::after{
  background:radial-gradient(120% 100% at 50% 45%,rgba(5,5,5,.12),rgba(5,5,5,.5))}
.montage__word{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  z-index:3;mix-blend-mode:difference;pointer-events:none}
.montage__word span{font-family:var(--ff-disp);font-weight:800;text-transform:uppercase;
  font-size:clamp(3rem,17vw,20rem);letter-spacing:-.03em;color:var(--cream);opacity:0;
  white-space:nowrap;max-width:94vw}
/* solid-white word state (for bright frames where 'difference' blend would invert it) */
.montage__word.is-solid{mix-blend-mode:normal}
.montage__word.is-solid span{
  color:var(--cream);
  -webkit-text-stroke:0;
  text-shadow:0 6px 50px rgba(0,0,0,.5),0 2px 14px rgba(0,0,0,.35);
}
.montage__end{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  text-align:center;z-index:4;padding:var(--pad);opacity:0}
.montage__end h2{font-size:clamp(2.4rem,8.5vw,9rem)}
.montage__tick{position:absolute;bottom:var(--pad);left:var(--pad);z-index:5;
  display:flex;gap:8px;flex-wrap:wrap;font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--cream-dim)}

/* ============================================================
   S3 CATEGORY UNIVERSE
   ============================================================ */
.universe{min-height:100vh;padding:clamp(120px,18vh,220px) 0 clamp(80px,12vh,140px);position:relative}
.universe__head{padding:0 var(--pad);max-width:1100px;margin-bottom:clamp(40px,6vh,80px)}
.universe__head h2{font-size:clamp(2rem,6vw,5.4rem);margin-top:18px}
.worlds{position:relative;padding:0 var(--pad);
  display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(10px,1.4vw,22px);
  grid-auto-rows:clamp(150px,21vh,260px)}
.world{position:relative;overflow:hidden;background:var(--black-2);cursor:pointer;
  border:1px solid var(--line-soft)}
.world img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  filter:grayscale(var(--img-gray,1)) brightness(.5) contrast(1.05);transition:transform 1.1s var(--ease),filter .9s var(--ease)}
.world::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(5,5,5,.1),rgba(5,5,5,.78))}
.world__meta{position:absolute;left:0;bottom:0;z-index:2;padding:clamp(16px,1.6vw,26px);width:100%;
  display:flex;align-items:flex-end;justify-content:space-between;gap:10px}
.world__name{font-family:var(--ff-disp);font-weight:800;text-transform:uppercase;
  font-size:clamp(20px,2.2vw,40px);line-height:.9;letter-spacing:-.01em}
.world__idx{font-size:11px;letter-spacing:.2em;color:var(--cream-dim)}
.world__plus{position:absolute;top:clamp(14px,1.4vw,22px);right:clamp(14px,1.4vw,22px);z-index:2;
  width:34px;height:34px;border:1px solid var(--line);border-radius:50%;display:grid;place-items:center;
  transition:background .4s var(--ease),color .4s var(--ease),border-color .4s;color:var(--cream)}
.world:hover img{transform:scale(1.07);filter:grayscale(0) brightness(.72) contrast(1.02)}
.world:hover::after{background:linear-gradient(180deg,rgba(5,5,5,.05),rgba(255,46,122,.32),rgba(5,5,5,.78))}
.world:hover .world__plus{background:var(--magenta);color:var(--black);border-color:var(--magenta)}
/* grid placement — 7 tiles, 12-col mosaic */
.world.w1{grid-column:span 6;grid-row:span 2}
.world.w2{grid-column:span 6}
.world.w3{grid-column:span 3}
.world.w4{grid-column:span 3}
.world.w5{grid-column:span 4}
.world.w6{grid-column:span 4}
.world.w7{grid-column:span 4}

/* category overlay */
.cat-overlay{position:fixed;inset:0;z-index:8000;background:var(--black);
  opacity:0;visibility:hidden;transition:opacity .55s var(--ease),visibility .55s;
  display:grid;grid-template-columns:1.05fr .95fr;overflow:hidden}
.cat-overlay.open{opacity:1;visibility:visible}
.cat-overlay__media{position:relative;overflow:hidden}
.cat-overlay__media img{width:100%;height:100%;object-fit:cover;
  filter:grayscale(.35) contrast(1.05);transform:scale(1.08)}
.cat-overlay__media::after{content:"";position:absolute;inset:0;
  background:linear-gradient(90deg,transparent,rgba(5,5,5,.55))}
.cat-overlay__body{padding:clamp(28px,6vw,90px);display:flex;flex-direction:column;
  justify-content:center;position:relative;overflow-y:auto}
.cat-overlay__num{font-family:var(--ff-disp);font-weight:800;font-size:clamp(60px,11vw,180px);
  color:transparent;-webkit-text-stroke:1px var(--line);line-height:.8;position:absolute;
  top:clamp(20px,4vw,60px);right:clamp(20px,4vw,60px);pointer-events:none}
.cat-overlay__body h3{font-family:var(--ff-disp);font-weight:800;text-transform:uppercase;
  font-size:clamp(2.2rem,4.4vw,4.6rem);line-height:.86;letter-spacing:-.025em;margin:14px 0 22px;
  overflow-wrap:break-word}
.cat-overlay__lead{font-size:clamp(15px,1.25vw,20px);max-width:34ch;color:var(--cream-dim);margin-bottom:34px}
.signals{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:30px}
.signals .chip{border:1px solid var(--line);border-radius:100px;padding:9px 16px;font-size:12px;
  letter-spacing:.06em;color:var(--cream);transition:.35s var(--ease)}
.signals .chip:hover{background:var(--cream);color:var(--black)}
.cat-rows{border-top:1px solid var(--line-soft)}
.cat-rows .row{display:flex;justify-content:space-between;gap:20px;padding:14px 0;
  border-bottom:1px solid var(--line-soft);font-size:14px}
.cat-rows .row span:last-child{color:var(--cream-dim);text-align:right}
.cat-close{position:fixed;top:24px;right:var(--pad);z-index:8001;background:none;border:0;
  color:var(--cream);font-size:12px;letter-spacing:.22em;text-transform:uppercase;cursor:pointer;
  display:flex;align-items:center;gap:10px}
.cat-close .x{width:30px;height:30px;border:1px solid var(--line);border-radius:50%;display:grid;place-items:center}

/* ============================================================
   S4 SIGNALS WALL
   ============================================================ */
.signalwall{padding:clamp(110px,16vh,200px) 0;background:var(--cream);color:var(--black);overflow:hidden}
.signalwall .head{padding:0 var(--pad);margin-bottom:clamp(40px,7vh,90px)}
.signalwall .head h2{font-size:clamp(2.4rem,8.5vw,9.5rem);color:var(--black)}
.signalwall .head .eyebrow{color:rgba(5,5,5,.5)}
.marquee{display:flex;gap:0;white-space:nowrap;will-change:transform}
.marquee .item{font-family:var(--ff-disp);font-weight:800;text-transform:uppercase;
  font-size:clamp(2.2rem,7vw,7rem);letter-spacing:-.02em;line-height:1.05;display:inline-flex;align-items:center}
.marquee .item .sep{display:inline-block;width:.32em;height:.32em;border-radius:50%;
  background:var(--magenta);margin:0 .42em;transform:translateY(-.18em)}
.marquee .item.ghost{color:transparent;-webkit-text-stroke:1.5px var(--black)}
.signalrow + .signalrow{margin-top:clamp(2px,.4vw,8px)}

/* ============================================================
   S5 BRAND UNIVERSE
   ============================================================ */
.brands{position:relative;min-height:100vh;padding:clamp(120px,16vh,200px) 0 clamp(100px,14vh,180px);
  overflow:hidden}
.brands__head{padding:0 var(--pad);max-width:1200px;margin-bottom:clamp(30px,5vh,60px);position:relative;z-index:3}
.brands__head h2{font-size:clamp(2rem,6vw,5.2rem);margin-top:16px}
.brands__head p{color:var(--cream-dim);max-width:42ch;margin-top:20px;font-size:clamp(14px,1.1vw,17px)}
.field{position:relative;padding:0 var(--pad);display:grid;
  grid-template-columns:repeat(3,1fr);gap:clamp(16px,1.8vw,30px);align-items:start;margin-top:clamp(34px,5vh,60px)}
.field > .brand-card:nth-child(3n-1){margin-top:clamp(28px,7vh,84px)}
.brand-card{position:relative;overflow:hidden;cursor:pointer;background:var(--black-2);
  border:1px solid var(--line-soft);will-change:transform;isolation:isolate;
  transition:border-color .5s var(--ease)}
.brand-card .ph{position:relative;overflow:hidden;aspect-ratio:4/5}
.brand-card .ph img{width:100%;height:100%;object-fit:cover;
  filter:grayscale(.85) brightness(.6) contrast(1.06);
  transition:transform 1.3s var(--ease),filter 1s var(--ease)}
.brand-card::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
  background:linear-gradient(180deg,rgba(5,5,5,.45) 0%,rgba(5,5,5,.05) 26%,rgba(5,5,5,.12) 52%,rgba(5,5,5,.78) 82%,rgba(5,5,5,.95));
  transition:opacity .6s var(--ease)}
/* accent reveal line */
.bc-line{position:absolute;top:0;left:0;height:3px;width:100%;z-index:4;background:var(--magenta);
  transform:scaleX(0);transform-origin:0 50%;transition:transform .6s var(--ease);box-shadow:0 0 16px var(--magenta)}
/* top chrome */
.bc-top{position:absolute;top:0;left:0;right:0;z-index:3;display:flex;justify-content:space-between;
  align-items:flex-start;padding:clamp(14px,1.3vw,22px)}
.bc-idx{font-family:var(--ff-disp);font-weight:800;font-size:clamp(24px,2.3vw,42px);line-height:.8;
  color:transparent;-webkit-text-stroke:1px rgba(247,242,234,.55);transition:.5s var(--ease)}
.bc-status{display:inline-flex;align-items:center;gap:8px;font-size:9px;letter-spacing:.18em;
  text-transform:uppercase;color:var(--cream);background:rgba(5,5,5,.35);backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);border:1px solid var(--line);border-radius:100px;padding:7px 12px}
.bc-status .dot{width:6px;height:6px;border-radius:50%;background:var(--magenta);
  box-shadow:0 0 0 0 rgba(255,46,122,.6);animation:pulse 2.4s infinite}
/* bottom block */
.bc-bot{position:absolute;left:0;bottom:0;z-index:3;width:100%;padding:clamp(16px,1.5vw,26px)}
.bc-name{font-family:var(--ff-disp);font-weight:800;text-transform:uppercase;
  font-size:clamp(20px,2vw,38px);line-height:.9;letter-spacing:-.01em;transition:transform .6s var(--ease)}
.bc-meta{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-top:12px;
  padding-top:12px;border-top:1px solid var(--line-soft)}
.bc-cat,.bc-when{font-size:10px;letter-spacing:.16em;text-transform:uppercase;white-space:nowrap}
.bc-cat{color:var(--cream)}
.bc-when{color:var(--peach)}
.bc-cta{display:flex;align-items:center;gap:8px;margin-top:0;font-size:11px;letter-spacing:.18em;
  text-transform:uppercase;color:var(--cream);
  max-height:0;opacity:0;overflow:hidden;transition:max-height .5s var(--ease),opacity .5s var(--ease),margin-top .5s var(--ease)}
.bc-cta i{font-style:normal;transition:transform .5s var(--ease)}
/* hover state */
.brand-card:hover{border-color:rgba(247,242,234,.32)}
.brand-card:hover .ph img{transform:scale(1.08);filter:grayscale(0) brightness(.82) contrast(1.02)}
.brand-card:hover::after{opacity:.92}
.brand-card:hover .bc-line{transform:scaleX(1)}
.brand-card:hover .bc-idx{color:var(--magenta);-webkit-text-stroke-color:var(--magenta)}
.brand-card:hover .bc-name{transform:translateY(-2px)}
.brand-card:hover .bc-cta{max-height:30px;opacity:1;margin-top:14px}
.brand-card:hover .bc-cta i{transform:translateX(5px)}

/* brand takeover */
.brand-takeover{position:fixed;inset:0;z-index:8200;background:var(--black);
  opacity:0;visibility:hidden;transition:opacity .6s var(--ease),visibility .6s;overflow:hidden}
.brand-takeover.open{opacity:1;visibility:visible}
.bt-bg{position:absolute;inset:0}
.bt-bg img{width:100%;height:100%;object-fit:cover;filter:none;
  transform:scale(1.08)}
.bt-bg::after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(5,5,5,.82),rgba(5,5,5,.25) 30%,transparent 52%)}
.bt-inner{position:relative;z-index:2;height:100%;display:flex;flex-direction:column;
  justify-content:flex-end;padding:clamp(70px,9vh,120px) var(--pad) var(--pad)}
.bt-status{margin-bottom:auto}
.bt-status{display:flex;gap:12px;align-items:center;font-size:11px;letter-spacing:.28em;
  text-transform:uppercase;color:var(--peach)}
.bt-status .pulse{width:8px;height:8px;border-radius:50%;background:var(--magenta);
  box-shadow:0 0 0 0 rgba(255,46,122,.6);animation:pulse 2s infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(255,46,122,.5)}70%{box-shadow:0 0 0 16px rgba(255,46,122,0)}100%{box-shadow:0 0 0 0 rgba(255,46,122,0)}}
.bt-name{font-family:var(--ff-disp);font-weight:800;text-transform:uppercase;
  font-size:clamp(2.6rem,9vw,8rem);line-height:.84;letter-spacing:-.03em;margin-bottom:clamp(20px,4vh,46px)}
.bt-foot{display:flex;justify-content:space-between;align-items:flex-end;gap:30px;flex-wrap:wrap}
.bt-foot .meta{display:flex;gap:clamp(20px,4vw,70px);flex-wrap:wrap}
.bt-foot .meta div span{display:block}
.bt-foot .meta .k{font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--cream-dim);margin-bottom:6px}
.bt-foot .meta .v{font-family:var(--ff-disp);font-weight:700;text-transform:uppercase;font-size:clamp(15px,1.4vw,22px)}
.bt-right{display:flex;flex-direction:column;align-items:flex-end;gap:clamp(14px,1.6vh,20px)}
.bt-gallery{display:flex;gap:10px}
.bt-thumb{position:relative;width:clamp(54px,4.4vw,76px);aspect-ratio:3/4;padding:0;border:1px solid var(--line);
  background:var(--black-2);overflow:hidden;cursor:pointer;opacity:.62;
  transition:opacity .35s var(--ease),border-color .35s var(--ease),transform .35s var(--ease)}
.bt-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.bt-thumb:hover{opacity:1;transform:translateY(-2px)}
.bt-thumb.active{opacity:1;border-color:var(--magenta);box-shadow:0 0 0 1px var(--magenta)}
.bt-nav{display:flex;gap:12px}
.bt-nav button,.brand-close{background:none;border:1px solid var(--line);color:var(--cream);
  border-radius:100px;padding:12px 20px;font-size:11px;letter-spacing:.2em;text-transform:uppercase;
  cursor:pointer;transition:.35s var(--ease)}
.bt-nav button:hover,.brand-close:hover{background:var(--cream);color:var(--black);border-color:var(--cream)}
.brand-close{position:fixed;top:24px;right:var(--pad);z-index:8201;border-radius:50%;width:46px;height:46px;padding:0;display:grid;place-items:center}

/* ============================================================
   S6 VAULT
   ============================================================ */
.vault{padding:clamp(120px,17vh,210px) 0 clamp(100px,14vh,170px);position:relative;
  background:linear-gradient(180deg,var(--black),#070708)}
.vault__head{padding:0 var(--pad);max-width:1100px;margin-bottom:clamp(40px,6vh,80px)}
.vault__head h2{font-size:clamp(2.4rem,7vw,6.4rem);margin-top:16px}
.vault__head p{color:var(--cream-dim);max-width:40ch;margin-top:18px}
.vault__grid{padding:0 var(--pad);display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,280px),1fr));
  gap:clamp(12px,1.5vw,22px)}
.vcard{position:relative;aspect-ratio:1/1.18;overflow:hidden;border:1px solid var(--line-soft);
  background:var(--black-2);display:flex;flex-direction:column;justify-content:flex-end;padding:clamp(18px,1.6vw,26px)}
.vcard img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  filter:grayscale(1) brightness(.45) blur(14px);transform:scale(1.18);transition:filter .8s var(--ease)}
.vcard::after{content:"";position:absolute;inset:0;background:rgba(5,5,5,.55)}
.vcard__lock{position:absolute;top:clamp(16px,1.5vw,24px);left:clamp(16px,1.5vw,24px);z-index:3;
  display:flex;align-items:center;gap:8px;font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--cream-dim)}
.vcard__lock .ic{width:14px;height:14px;border:1.5px solid var(--cream-dim);border-radius:3px;position:relative}
.vcard__lock .ic::before{content:"";position:absolute;width:8px;height:6px;border:1.5px solid var(--cream-dim);
  border-bottom:0;border-radius:4px 4px 0 0;top:-6px;left:1px}
.vcard__id{position:relative;z-index:3;font-family:var(--ff-disp);font-weight:800;text-transform:uppercase;
  font-size:clamp(22px,2vw,34px);line-height:.92;letter-spacing:-.01em}
.vcard__tag{position:relative;z-index:3;font-size:11px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--peach);margin-top:10px}
.vcard:hover img{filter:grayscale(.6) brightness(.55) blur(6px)}
.vault__foot{padding:clamp(46px,7vh,90px) var(--pad) 0;font-size:clamp(15px,1.4vw,22px);color:var(--cream-dim);max-width:46ch}
.vault__foot a{color:var(--cream);text-decoration:none;border-bottom:1px solid var(--magenta)}

/* ============================================================
   S7 CLOSING
   ============================================================ */
.closing{background:var(--black);position:relative}
.closing__scroller{position:relative;height:230vh}
.closing__pin{height:100vh;display:flex;align-items:center;justify-content:center;position:sticky;top:0;padding:var(--pad);overflow:hidden}
.closing__lines{text-align:center;max-width:1500px;width:100%}
.closing__lines .cl{font-family:var(--ff-disp);font-weight:800;text-transform:uppercase;
  font-size:clamp(1.5rem,5vw,5.4rem);line-height:1.04;letter-spacing:-.02em;opacity:.12;
  transition:opacity .5s var(--ease),color .5s;margin:.12em 0}
.closing__lines .cl.active{opacity:1}
.closing__lines .cl.accent.active{color:var(--magenta)}

.endcard{height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;
  text-align:center;gap:clamp(20px,4vh,44px);position:relative;z-index:2;background:var(--black)}
.endcard__logo{display:flex;align-items:center;justify-content:center;width:100%}
.endcard__mark{display:block;height:clamp(46px,11vw,150px);width:min(82vw,1000px);
  background:var(--cream);
  -webkit-mask:url("../assets/eclectic-logo.svg") center / contain no-repeat;
  mask:url("../assets/eclectic-logo.svg") center / contain no-repeat}
.endcard__mail{margin-top:10px}
.endcard__mail a{display:inline-block;font-family:var(--ff-disp);font-weight:700;text-transform:uppercase;
  font-size:clamp(18px,2.4vw,40px);color:var(--cream);text-decoration:none;letter-spacing:-.01em;
  will-change:transform;transition:color .4s,transform .45s cubic-bezier(.16,1,.3,1)}
.endcard__mail a:hover{color:var(--magenta)}

footer{position:relative;z-index:2;background:var(--black);
  display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:16px;
  padding:clamp(24px,3vh,40px) var(--pad);border-top:1px solid var(--line-soft);
  font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--cream-dim)}
footer .links{display:flex;gap:clamp(16px,2vw,34px)}

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media(max-width:900px){
  .cat-overlay{grid-template-columns:1fr;grid-template-rows:38vh 1fr}
  .worlds{grid-auto-rows:clamp(140px,26vh,220px)}
  .world.w1{grid-column:span 12;grid-row:span 1}
  .world.w2,.world.w3{grid-column:span 6}
  .world.w4{grid-column:span 12;grid-row:span 1}
  .world.w5,.world.w6{grid-column:span 6}
  .world.w7{grid-column:span 12;grid-row:span 1}
  .field{grid-template-columns:repeat(2,1fr)!important}
  .field > .brand-card:nth-child(3n-1){margin-top:0!important}
  .field > .brand-card:nth-child(2n){margin-top:clamp(24px,5vh,60px)!important}
}
/* ---- image mood (tweakable) ---- */
body.mood-muted .montage__frame img{filter:grayscale(.5) contrast(1.08) brightness(.62)!important}
body.mood-muted .world img{filter:grayscale(.5) brightness(.52) contrast(1.04)!important}
body.mood-muted .brand-card .ph img{filter:grayscale(.5) brightness(.64) contrast(1.03)!important}
body.mood-vivid .montage__frame img{filter:grayscale(0) contrast(1.05) brightness(.66)!important}
body.mood-vivid .world img{filter:grayscale(0) brightness(.58) contrast(1.02)!important}
body.mood-vivid .brand-card .ph img{filter:grayscale(0) brightness(.7) contrast(1)!important}

@media(max-width:560px){
  .worlds{grid-template-columns:repeat(2,1fr)}
  .world[class*=w]{grid-column:span 1;grid-row:span 1}
  .field{grid-template-columns:1fr!important}
  .field > .brand-card{margin-top:0!important}
  .audio-btn span.t{display:none}
}