/* =========================================================
   BOHEMILK — scroll-driven demo
   Signature: "nalití mléka" — milk rises and re-reveals the
   headline in navy as it floods the hero.
   ========================================================= */

:root{
  --navy:#101c4d;
  --navy-2:#213a8f;
  --navy-3:#2b4bb0;
  --milk:#fbf6ea;
  --milk-2:#f2e9d5;
  --butter:#f5b301;
  --butter-2:#ffcf4d;
  --ink:#101c4d;
  --header-h:82px;
  --ease:cubic-bezier(.22,.8,.28,1);
}

*,*::before,*::after{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;}
body{
  margin:0;
  background:var(--navy);
  color:var(--milk);
  font-family:'Manrope',system-ui,sans-serif;
  font-weight:500;
  overflow-x:hidden;
  transition:background-color .7s var(--ease);
}
body.theme-cream{background:var(--milk);}
body.theme-navy{background:var(--navy);}

img{display:block;max-width:100%;}
a{color:inherit;text-decoration:none;}
p{margin:0;}
h1,h2,h3{
  margin:0;
  font-family:'Bricolage Grotesque','Manrope',sans-serif;
  font-weight:800;
  line-height:.94;
  letter-spacing:-.025em;
}

.shell{width:100%;max-width:1240px;margin:0 auto;padding:0 28px;}

.eyebrow{
  font-family:'Manrope',sans-serif;
  font-size:.78rem;font-weight:700;
  letter-spacing:.2em;text-transform:uppercase;
  color:var(--butter);
  margin:0 0 18px;
}
.section-title{font-size:clamp(2.1rem,5.4vw,4.2rem);}
.section-lead{
  font-size:clamp(1rem,1.5vw,1.18rem);
  line-height:1.6;max-width:600px;opacity:.82;margin-top:22px;
}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;
  font-family:'Manrope',sans-serif;font-weight:700;
  background:var(--butter);color:var(--navy);
  border-radius:999px;white-space:nowrap;
  transition:background-color .3s ease,color .3s ease;
}
.btn:hover{background:var(--butter-2);}
.btn-sm{padding:12px 24px;font-size:.88rem;}
.btn-lg{padding:17px 38px;font-size:1rem;}
.btn-xl{padding:23px 56px;font-size:clamp(1rem,1.6vw,1.22rem);}
.btn-ghost{background:var(--navy);color:var(--milk);}
.magnetic{will-change:transform;}

/* ---------- progress + cursor ---------- */
.progress-bar{position:fixed;inset:0 0 auto 0;height:3px;z-index:900;background:transparent;pointer-events:none;}
.progress-bar i{display:block;height:100%;width:0;background:var(--butter);}
.cursor{
  position:fixed;top:0;left:0;width:26px;height:26px;margin:-13px 0 0 -13px;
  border:2px solid var(--butter);border-radius:50%;
  pointer-events:none;z-index:950;opacity:0;
  transition:opacity .3s ease,transform .18s ease;
}

/* ---------- header ---------- */
.site-header{
  position:fixed;inset:0 0 auto 0;height:var(--header-h);z-index:800;
  display:flex;align-items:center;
  transition:background-color .4s ease,box-shadow .4s ease;
}
.site-header.solid{background:rgba(16,28,77,.92);backdrop-filter:blur(12px);box-shadow:0 10px 40px rgba(0,0,0,.22);}
.header-inner{display:flex;align-items:center;justify-content:space-between;gap:16px;}
.brand{display:flex;align-items:center;height:36px;}
/* the real logo is a blue mark with a white wordmark — never recolour it,
   just lift it off the navy with a soft halo */
.brand img{
  height:36px;width:auto;
  filter:drop-shadow(0 0 14px rgba(255,255,255,.30));
}
.brand-fallback{
  display:none;font-family:'Bricolage Grotesque',sans-serif;font-weight:800;
  font-size:1.35rem;letter-spacing:-.02em;color:var(--milk);
}
.brand:not(:has(img)) .brand-fallback{display:block;}

/* ---------- split text ---------- */
.line{display:block;}
.word{display:inline-block;overflow:hidden;vertical-align:bottom;}
.word > i{
  display:inline-block;font-style:inherit;
  transform:translateY(105%);opacity:0;
  transition:transform .8s var(--ease),opacity .8s var(--ease);
}
.in-view .word > i{transform:translateY(0);opacity:1;}

/* =========================================================
   HERO
   ========================================================= */
.hero{height:340vh;position:relative;}
.hero-stage{
  position:sticky;top:0;height:100vh;overflow:hidden;
  background:radial-gradient(120% 85% at 50% 8%,#1b2e75 0%,var(--navy) 62%);
  isolation:isolate;
}
.hero-layer{
  position:absolute;inset:0;
  display:flex;align-items:center;
  padding:var(--header-h) 28px 0;
}
.hero-copy{width:100%;max-width:1240px;margin:0 auto;}
.hero-title{
  font-size:clamp(3.4rem,13.5vw,11.5rem);
  color:var(--milk);
  margin-bottom:26px;
}
.hero-sub{
  font-size:clamp(1rem,1.7vw,1.3rem);
  max-width:420px;margin-bottom:34px;opacity:.85;line-height:1.5;
}
.hero-base .hero-title{color:var(--milk);}
.hero-base .hero-sub{color:var(--milk);}

/* product, floats above both layers */
.hero-product{
  position:absolute;z-index:3;
  right:6vw;top:50%;
  width:min(34vw,430px);
  transform:translateY(-50%);
  will-change:transform;
}
.product-disc{
  position:relative;isolation:isolate;
  width:100%;aspect-ratio:1;border-radius:50%;
  background:var(--milk);
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 40px 90px rgba(0,0,0,.35);
}
.product-disc img{
  width:62%;mix-blend-mode:multiply;
}

/* milk layer */
.hero-milk{
  position:absolute;inset:0;z-index:2;
  pointer-events:none;will-change:transform;
}
.milk-wave{
  position:absolute;left:0;bottom:100%;
  width:100%;height:64px;display:block;
}
.milk-wave path{fill:var(--milk);}
.milk-body{position:absolute;inset:0;background:var(--milk);overflow:hidden;}
.milk-inner{position:absolute;inset:0;will-change:transform;}
.milk-inner .hero-title,
.milk-inner .hero-sub{color:var(--navy);}
.milk-inner .eyebrow{color:var(--navy-2);}
/* the milk copy is a static mirror — never animates, so it always
   aligns pixel-for-pixel with the navy copy underneath it */
.milk-inner .word > i{transform:none !important;opacity:1 !important;transition:none !important;}

.scroll-hint{
  position:absolute;left:50%;bottom:30px;z-index:4;
  transform:translateX(-50%);
  display:flex;flex-direction:column;align-items:center;gap:10px;
  font-size:.68rem;letter-spacing:.22em;text-transform:uppercase;
  font-weight:700;color:var(--milk);opacity:.65;
}
.scroll-hint i{
  display:block;width:1px;height:44px;background:rgba(251,246,234,.35);
  position:relative;overflow:hidden;
}
.scroll-hint i::after{
  content:"";position:absolute;left:0;top:0;width:100%;height:14px;
  background:var(--butter);animation:hint 1.7s ease-in-out infinite;
}
@keyframes hint{0%{transform:translateY(-16px);}100%{transform:translateY(46px);}}

/* =========================================================
   MARQUEE
   ========================================================= */
.marquee{
  background:var(--milk);color:var(--navy);
  padding:34px 0;overflow:hidden;
  border-top:1px solid rgba(16,28,77,.08);
  border-bottom:1px solid rgba(16,28,77,.08);
}
.marquee-track{
  display:flex;flex-wrap:nowrap;width:max-content;
  will-change:transform;
}
.marquee-track span{
  font-family:'Bricolage Grotesque',sans-serif;font-weight:800;
  font-size:clamp(1.5rem,3.6vw,2.9rem);
  letter-spacing:-.02em;color:var(--navy);
  padding-right:40px;white-space:nowrap;
}
.marquee-track span em{font-style:normal;color:var(--butter);}

/* =========================================================
   STORY
   ========================================================= */
.story{
  position:relative;overflow:hidden;
  background:var(--navy);color:var(--milk);
  padding:clamp(90px,12vw,150px) 0;
}
.orb{position:absolute;border-radius:50%;filter:blur(70px);will-change:transform;}
.orb-1{width:460px;height:460px;background:rgba(33,58,143,.75);top:-120px;left:-140px;}
.orb-2{width:340px;height:340px;background:rgba(245,179,1,.20);bottom:-100px;right:-90px;}
.story-inner{position:relative;z-index:2;}
.story-shots{
  display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(16px,3vw,34px);
  margin-top:clamp(50px,7vw,84px);
}
.story-shot{margin:0;will-change:transform;}
.story-shot img{
  width:100%;height:clamp(200px,26vw,340px);object-fit:cover;
  border-radius:22px;box-shadow:0 30px 60px rgba(0,0,0,.35);
}
.shot-lift{margin-top:clamp(20px,5vw,64px);}

/* =========================================================
   SHOWCASE — pinned fan-out
   ========================================================= */
.showcase{height:300vh;position:relative;background:var(--milk);}
.showcase-stage{
  position:sticky;top:0;height:100vh;overflow:hidden;
  background:var(--milk);color:var(--navy);
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  text-align:center;padding:var(--header-h) 28px 40px;
}
.showcase-head{position:relative;z-index:3;}
.showcase-head .section-title{color:var(--navy);}
.fan{
  position:relative;z-index:2;
  width:min(1100px,92vw);
  height:min(46vh,400px);
  margin-top:clamp(24px,4vw,50px);
}
/* NOTE: no opacity/filter on this element — any of them would create a
   stacking context and disable the children's mix-blend-mode: multiply,
   which is what drops the white photo backgrounds into the milk page. */
/* The item is transformed, so it forms its own stacking context and the
   image has no page backdrop to blend with. Painting the milk colour here
   gives multiply something to composite against, which drops the white
   photo backgrounds invisibly into the page. */
.fan-item{
  position:absolute;left:50%;top:50%;margin:0;
  width:clamp(120px,15vw,190px);
  background:var(--milk);
  will-change:transform;
}
.fan-item img{
  width:100%;mix-blend-mode:multiply;
}
.fan-item figcaption{
  margin-top:10px;font-size:.8rem;font-weight:700;
  letter-spacing:.04em;color:var(--navy);opacity:.7;
}

/* =========================================================
   HORIZONTAL GALLERY
   ========================================================= */
.hgal{height:340vh;position:relative;background:var(--navy);}
.hgal-stage{
  position:sticky;top:0;height:100vh;overflow:hidden;
  background:var(--navy);color:var(--milk);
  display:flex;flex-direction:column;justify-content:center;gap:clamp(28px,5vh,56px);
  padding-top:var(--header-h);
}
.hgal-head .section-title{color:var(--milk);}
.hgal-track{
  display:flex;flex-wrap:nowrap;gap:24px;
  padding:0 max(28px,calc((100vw - 1240px)/2));
  width:max-content;will-change:transform;
}
.pcard{
  flex:0 0 auto;width:clamp(260px,25vw,330px);
  background:rgba(255,255,255,.055);
  border:1px solid rgba(251,246,234,.13);
  border-radius:24px;padding:18px 18px 24px;
}
.pcard-img{
  background:var(--milk);border-radius:16px;
  height:clamp(170px,20vh,215px);
  display:flex;align-items:center;justify-content:center;
  overflow:hidden;margin-bottom:18px;
}
.pcard-img img{max-height:100%;width:auto;object-fit:contain;mix-blend-mode:multiply;}
.pcard h3{font-size:1.24rem;margin-bottom:8px;color:var(--milk);}
.pcard p{font-size:.92rem;line-height:1.5;opacity:.72;}

/* =========================================================
   PROOF
   ========================================================= */
.proof{
  background:var(--milk);color:var(--navy);
  padding:clamp(90px,12vw,150px) 0;text-align:center;
}
.stats{
  display:grid;grid-template-columns:repeat(3,1fr);
  gap:clamp(24px,4vw,60px);
}
.stat .num{
  display:block;
  font-family:'Bricolage Grotesque',sans-serif;font-weight:800;
  font-size:clamp(2.4rem,6vw,4.6rem);line-height:1;
  color:var(--navy-2);letter-spacing:-.03em;
}
.stat p{margin-top:12px;font-weight:600;font-size:.95rem;opacity:.7;}
.quote{
  margin-top:clamp(50px,7vw,80px);
  font-family:'Bricolage Grotesque',sans-serif;font-weight:700;
  font-size:clamp(1.3rem,3vw,2.2rem);line-height:1.25;
  max-width:760px;margin-left:auto;margin-right:auto;
  color:var(--navy);letter-spacing:-.02em;
}

/* =========================================================
   FINAL CTA
   ========================================================= */
.cta{
  position:relative;overflow:hidden;
  background:var(--navy);color:var(--milk);
  min-height:100vh;display:flex;align-items:center;
  padding:110px 0;
}
.cta-glow{
  position:absolute;left:50%;top:50%;
  width:min(120vw,1100px);height:min(120vw,1100px);
  transform:translate(-50%,-50%);
  background:radial-gradient(circle,rgba(245,179,1,.20),rgba(33,58,143,.22) 45%,transparent 68%);
  border-radius:50%;
}
.cta-inner{position:relative;z-index:2;text-align:center;}
.cta-title{
  font-size:clamp(2.8rem,9vw,7rem);color:var(--milk);
  margin-bottom:44px;
}

/* =========================================================
   FOOTER
   ========================================================= */
.site-footer{background:var(--navy);color:var(--milk);padding:70px 0 34px;border-top:1px solid rgba(251,246,234,.12);}
.foot-top{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;}
.foot-nav{display:flex;gap:22px;flex-wrap:wrap;font-weight:600;font-size:.92rem;}
.foot-nav a{opacity:.75;transition:opacity .25s ease,color .25s ease;}
.foot-nav a:hover{opacity:1;color:var(--butter);}
.foot-contacts{
  display:grid;grid-template-columns:repeat(3,1fr);gap:28px;
  margin-top:48px;padding-top:38px;border-top:1px solid rgba(251,246,234,.12);
}
.foot-contacts div{display:flex;flex-direction:column;gap:5px;font-size:.9rem;opacity:.78;}
.foot-contacts strong{
  font-family:'Bricolage Grotesque',sans-serif;font-weight:700;
  font-size:1rem;opacity:1;margin-bottom:4px;
}
.foot-copy{margin-top:40px;font-size:.78rem;opacity:.45;}

/* =========================================================
   RESPONSIVE
   ========================================================= */
@media (max-width:1024px){
  .hero-product{width:min(38vw,320px);right:4vw;}
  .hero-title{font-size:clamp(3rem,11vw,7rem);}
}

@media (max-width:820px){
  :root{--header-h:70px;}
  .hero{height:300vh;}
  .hero-layer{align-items:flex-start;padding-top:calc(var(--header-h) + 34px);}
  .hero-copy{max-width:520px;}
  .hero-title{font-size:clamp(3rem,15vw,5rem);}
  .hero-sub{max-width:340px;font-size:1rem;margin-bottom:26px;}
  .hero-product{
    right:50%;top:auto;bottom:12vh;
    transform:translate(50%,0);
    width:min(52vw,250px);
  }
  .scroll-hint{display:none;}

  .story-shots{grid-template-columns:1fr;}
  .shot-lift{margin-top:0;}

  .showcase{height:auto;}
  .showcase-stage{position:relative;height:auto;min-height:auto;padding:90px 24px;}
  .fan{
    position:static;width:100%;height:auto;
    display:grid;grid-template-columns:repeat(2,1fr);
    gap:26px;margin-top:44px;
  }
  .fan-item{
    position:static;width:100%;
    transform:none !important;opacity:1 !important;
  }

  .hgal{height:auto;}
  .hgal-stage{position:relative;height:auto;padding:90px 0;}
  .hgal-track{
    width:auto;overflow-x:auto;overflow-y:hidden;
    scroll-snap-type:x mandatory;
    -webkit-overflow-scrolling:touch;
    padding:4px 24px 18px;
    transform:none !important;
  }
  .pcard{width:78vw;max-width:320px;scroll-snap-align:center;}

  .stats{grid-template-columns:1fr;gap:38px;}
  .foot-contacts{grid-template-columns:1fr;}
  .cursor{display:none;}
}

@media (max-width:420px){
  .header-inner .btn-sm{padding:10px 16px;font-size:.78rem;}
  .brand img{height:30px;}
}

/* =========================================================
   REDUCED MOTION
   ========================================================= */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none !important;transition:none !important;}
  .hero{height:auto;}
  .hero-stage{position:relative;height:auto;min-height:100vh;}
  .hero-layer{position:relative;inset:auto;min-height:70vh;padding-top:calc(var(--header-h) + 46px);}
  .hero-milk{display:none;}
  .hero-product{position:relative;right:auto;top:auto;transform:none;margin:0 auto 60px;}
  .scroll-hint{display:none;}
  .showcase{height:auto;}
  .showcase-stage{position:relative;height:auto;padding:90px 24px;}
  .fan{position:static;width:100%;height:auto;display:grid;grid-template-columns:repeat(2,1fr);gap:26px;margin-top:44px;}
  .fan-item{position:static;width:100%;transform:none !important;opacity:1 !important;}
  .hgal{height:auto;}
  .hgal-stage{position:relative;height:auto;padding:90px 0;}
  .hgal-track{width:auto;overflow-x:auto;transform:none !important;padding:4px 24px 18px;}
  .marquee-track{transform:none !important;}
  .word > i{transform:none;opacity:1;}
  .orb,.story-shot{transform:none !important;}
}
