/* ═══════════════════════════════════════════════════════════════
   ZOPIC — v2 · the film is the world; gold and ink live on top
   ═══════════════════════════════════════════════════════════════ */

:root{
  --ink:#05070d; --navy:#0d1626; --navy-2:#14233d;
  --gold:#c8a15e; --gold-2:#e7cc8f; --gold-dim:#8a6d3c;
  --parchment:#efe6d0; --text:#e9e3d6; --muted:#a79d88;
  --serif:"Marcellus",serif; --body:"Cormorant Garamond",Georgia,serif;
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{
  background:var(--ink);
  color:var(--text);
  font-family:var(--body);
  font-size:1.24rem;line-height:1.75;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}
::selection{background:rgba(200,161,94,.35);color:#fff}
img{max-width:100%;height:auto;display:block}
a{color:inherit;text-decoration:none}

/* ─── Fixed layers ──────────────────────────────────────────── */

#bg{
  position:fixed;inset:0;z-index:0;
  width:100%;height:100%;object-fit:cover;
  filter:brightness(.82) saturate(1.02) contrast(1.02);
  pointer-events:none;
}
/* Edges only — the middle stays clear so the film is always seen */
.vignette{
  position:fixed;inset:0;z-index:1;pointer-events:none;
  background:
    linear-gradient(180deg,rgba(4,6,11,.62),transparent 16%),
    linear-gradient(0deg,rgba(4,6,11,.7),transparent 20%),
    radial-gradient(130% 130% at 50% 50%,transparent 54%,rgba(4,6,11,.52) 85%,rgba(4,6,11,.85) 100%);
}
body.no-video{background:radial-gradient(120% 90% at 50% 0%,#0d1626 0%,#070b14 45%,#04060b 100%)}
body.no-video .vignette{background:radial-gradient(130% 130% at 50% 42%,transparent 40%,rgba(4,6,11,.5) 90%)}

#scene{position:fixed;inset:0;z-index:2;width:100%;height:100%;display:block;pointer-events:none}

.grain{
  position:fixed;inset:-50%;z-index:40;pointer-events:none;opacity:.05;
  mix-blend-mode:soft-light;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  animation:grain 7s steps(8) infinite;
}
@keyframes grain{
  0%,100%{transform:translate(0,0)}25%{transform:translate(-1.2%,.8%)}
  50%{transform:translate(1%, -1%)}75%{transform:translate(-.6%,-1.2%)}
}

.progress{position:fixed;top:0;left:0;right:0;height:2px;z-index:90;pointer-events:none}
.progress i{
  display:block;height:100%;transform:scaleX(0);transform-origin:0 50%;
  background:linear-gradient(90deg,var(--gold-dim),var(--gold-2));
}

#cursor{
  position:fixed;top:0;left:0;z-index:120;pointer-events:none;
  width:34px;height:34px;margin:-17px 0 0 -17px;border-radius:50%;
  border:1px solid rgba(231,204,143,.65);opacity:0;
  transition:opacity .4s ease;
}
body.cursor-on #cursor{opacity:1}
#cursor::after{
  content:"";position:absolute;inset:14px;border-radius:50%;
  background:var(--gold-2);
}
@media (hover:none),(pointer:coarse){#cursor{display:none}}

.loader{
  position:fixed;inset:0;z-index:200;display:grid;place-items:center;
  background:var(--ink);transition:opacity .9s ease,visibility .9s;
}
.loader img{opacity:.9;animation:pulse 1.6s ease-in-out infinite}
@keyframes pulse{0%,100%{transform:scale(1);opacity:.65}50%{transform:scale(1.12);opacity:1}}
body.loaded .loader{opacity:0;visibility:hidden}

/* ─── Navigation ────────────────────────────────────────────── */

.nav{
  position:fixed;top:0;left:0;right:0;z-index:80;
  display:flex;align-items:center;gap:2.2rem;
  padding:1.1rem clamp(1.2rem,4vw,3rem);
  transition:background .5s ease,padding .4s ease,box-shadow .5s ease;
}
.nav.scrolled{
  background:rgba(5,7,13,.82);
  backdrop-filter:blur(10px);
  padding-block:.7rem;
  box-shadow:0 1px 0 rgba(200,161,94,.16);
}
.nav-logo img{height:30px;width:auto}
.nav-links{display:flex;gap:2rem;margin-left:auto}
.nav-links a{
  font-family:var(--serif);font-size:.82rem;letter-spacing:.22em;text-transform:uppercase;
  color:var(--muted);transition:color .3s;
}
.nav-links a:hover{color:var(--gold-2)}
.nav-cta{margin-left:.5rem}

.menu-btn{display:none;margin-left:auto;background:none;border:0;cursor:pointer;padding:.6rem;z-index:81}
.menu-btn span{display:block;width:26px;height:1px;background:var(--gold-2);margin:7px 0;transition:transform .4s,opacity .4s}
body.menu-open .menu-btn span:first-child{transform:translateY(4px) rotate(45deg)}
body.menu-open .menu-btn span:last-child{transform:translateY(-4px) rotate(-45deg)}

.menu{
  position:fixed;inset:0;z-index:70;display:grid;place-items:center;gap:0;
  background:rgba(4,6,11,.96);
  opacity:0;visibility:hidden;transition:opacity .5s ease,visibility .5s;
}
body.menu-open .menu{opacity:1;visibility:visible}
.menu nav{display:grid;gap:1.6rem;text-align:center;margin-bottom:2.4rem}
.menu nav a{font-family:var(--serif);font-size:1.6rem;letter-spacing:.18em;text-transform:uppercase;color:var(--parchment)}
.menu nav a:hover{color:var(--gold-2)}
.menu-email{margin-top:2rem;font-style:italic;color:var(--muted)}

/* ─── Type & shared pieces ──────────────────────────────────── */

.eyebrow{
  font-family:var(--serif);font-size:.88rem;letter-spacing:.42em;text-transform:uppercase;
  color:var(--gold-2);margin-bottom:1.4rem;
}
h1,h2,h3{font-family:var(--serif);font-weight:400;color:var(--parchment)}
h2{font-size:clamp(2.6rem,6vw,4.3rem);line-height:1.12;letter-spacing:.01em}
h3{font-size:1.55rem;letter-spacing:.06em}

.btn{
  display:inline-block;font-family:var(--serif);
  font-size:.8rem;letter-spacing:.24em;text-transform:uppercase;
  padding:1rem 2.1rem;border:1px solid var(--gold-dim);
  transition:background .35s,color .35s,border-color .35s,transform .35s;
}
.btn:hover{transform:translateY(-2px)}
.btn-gold{
  background:linear-gradient(120deg,var(--gold-dim),var(--gold) 45%,var(--gold-2));
  color:#171204;border-color:transparent;
}
.btn-gold:hover{filter:brightness(1.08)}
.btn-ghost{color:var(--gold-2)}
.btn-ghost:hover{background:rgba(200,161,94,.12);border-color:var(--gold)}

/* ─── Chapters ──────────────────────────────────────────────── */

main{position:relative;z-index:3}
.chapter{
  min-height:100vh;min-height:100svh;
  display:flex;flex-direction:column;justify-content:center;align-items:center;
  padding:7rem clamp(1.2rem,4vw,3rem);
  text-align:center;
}
.inner{position:relative;max-width:900px;width:100%}

/* soft dark pool behind text so the film never fights legibility */
.scrim::before{
  content:"";position:absolute;inset:-9% -16%;z-index:-1;border-radius:50%;
  background:radial-gradient(closest-side,rgba(4,6,11,.74),rgba(4,6,11,.42) 58%,transparent);
}

/* Hero — the film's own opening owns the frame; our words sit low */
.hero{justify-content:flex-end}
.hero-inner{padding-bottom:13vh;text-shadow:0 2px 26px rgba(0,0,0,.85),0 0 8px rgba(0,0,0,.5)}
.hero .reveal{transition-delay:calc(1.15s + var(--i,0)*160ms)}
.hero-tagline{
  display:flex;align-items:center;justify-content:center;gap:1.1rem;
  margin-top:.4rem;font-family:var(--serif);
  font-size:clamp(1.15rem,2.8vw,1.7rem);letter-spacing:.42em;text-transform:uppercase;
  color:var(--gold-2);
}
.hero-tagline .rule{width:clamp(34px,7vw,84px);height:1px;background:linear-gradient(90deg,transparent,var(--gold-dim));}
.hero-tagline .rule:last-child{transform:scaleX(-1)}
.hero-sub{margin-top:1.5rem;font-style:italic;font-size:clamp(1.3rem,2.8vw,1.7rem);color:var(--parchment)}
.hero-cta{display:flex;gap:1.1rem;justify-content:center;flex-wrap:wrap;margin-top:2.4rem}

.scroll-cue{
  position:absolute;bottom:2.2rem;left:50%;transform:translateX(-50%);
  display:grid;justify-items:center;gap:.7rem;
  font-family:var(--serif);font-size:.68rem;letter-spacing:.34em;text-transform:uppercase;color:var(--muted);
}
.scroll-cue i{width:1px;height:44px;background:linear-gradient(180deg,var(--gold),transparent);animation:drip 2.2s ease-in-out infinite}
@keyframes drip{0%{transform:scaleY(.2);transform-origin:top}55%{transform:scaleY(1)}100%{transform:scaleY(.2);transform-origin:bottom;opacity:0}}
@media (max-height:900px){.scroll-cue{display:none}}

/* Marquee */
.marquee{
  overflow:hidden;position:relative;z-index:3;padding:1.1rem 0;
  border-top:1px solid rgba(200,161,94,.16);border-bottom:1px solid rgba(200,161,94,.16);
  background:rgba(4,6,11,.55);backdrop-filter:blur(4px);
  mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
}
.marquee-track{display:flex;white-space:nowrap;animation:marquee 36s linear infinite;width:max-content}
.marquee-track span{
  font-family:var(--serif);font-size:.85rem;letter-spacing:.34em;text-transform:uppercase;color:var(--gold-dim);
}
@keyframes marquee{to{transform:translateX(-50%)}}
@media (prefers-reduced-motion:reduce){.marquee-track{animation:none}}

/* Story */
.panel p{margin-top:1.9rem;font-size:clamp(1.4rem,2.5vw,1.72rem);line-height:1.8}
.panel .lede{margin-top:2.6rem;font-size:clamp(1.6rem,3vw,2.05rem);color:var(--parchment)}
.panel em{font-style:italic;color:var(--gold-2)}
.signature{font-style:italic;font-size:clamp(1.6rem,3vw,2.1rem);color:var(--gold-2);letter-spacing:.02em}
.panel .signature{margin-top:3rem}

/* Word-by-word scroll reveal (containers marked data-scrub; JS adds .scrub-ready) */
[data-scrub] .w{display:inline-block}
.scrub-ready .w{
  opacity:.05;transform:translateY(.65em);filter:blur(8px);
  transition:opacity .5s ease,transform .5s ease,filter .5s ease;
  will-change:opacity,transform,filter;
}
.scrub-ready .w.on{opacity:1;transform:none;filter:none}
@media (prefers-reduced-motion:reduce){
  .scrub-ready .w{opacity:1;transform:none;filter:none;transition:none}
}

/* Principles */
.trio{
  display:grid;grid-template-columns:repeat(3,1fr);gap:1.4rem;
  max-width:1080px;margin:2.6rem auto 0;
}
.principle{
  padding:2.6rem 1.9rem;text-align:center;
  border:1px solid rgba(200,161,94,.22);
  background:linear-gradient(165deg,rgba(13,22,38,.78),rgba(5,7,13,.66));
  backdrop-filter:blur(7px);
}
.principle h3{color:var(--gold-2);margin-bottom:1rem}
.principle p{color:var(--muted);font-size:1.18rem}

/* Contact */
.contact h2{margin-bottom:.6rem}
.stores{display:flex;gap:1.1rem;justify-content:center;flex-wrap:wrap;margin-top:2.4rem}
.email{
  display:inline-block;margin-top:2.6rem;font-style:italic;
  font-size:1.25rem;color:var(--gold-2);
  border-bottom:1px solid rgba(200,161,94,.4);padding-bottom:.15rem;
  transition:border-color .3s,color .3s;
}
.email:hover{color:var(--parchment);border-color:var(--gold-2)}

/* Footer */
.footer{
  position:relative;z-index:3;text-align:center;
  padding:4.5rem 1.5rem 3rem;
  background:linear-gradient(180deg,transparent,rgba(4,6,11,.92) 30%);
}
.footer-logo{width:200px;margin:0 auto 2rem;opacity:.9}
.footer-links{display:flex;gap:2rem;justify-content:center;flex-wrap:wrap;margin-bottom:1.8rem}
.footer-links a{
  font-family:var(--serif);font-size:.78rem;letter-spacing:.24em;text-transform:uppercase;color:var(--muted);
  transition:color .3s;
}
.footer-links a:hover{color:var(--gold-2)}
.legal{color:rgba(167,157,136,.6);font-size:.95rem;font-style:italic}

/* ─── Entrance reveals ──────────────────────────────────────── */

.reveal{opacity:0;transform:translateY(44px);transition:opacity 1.15s ease,transform 1.15s ease;transition-delay:calc(var(--i,0)*110ms)}
.reveal.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}}

/* ─── No WebGL fallback ─────────────────────────────────────── */
body.no-3d #scene{display:none}

/* ─── Responsive ────────────────────────────────────────────── */

@media (max-width:900px){
  .nav-links,.nav-cta{display:none}
  .menu-btn{display:block}
  .trio{grid-template-columns:1fr;max-width:440px}
}
@media (max-width:560px){
  body{font-size:1.08rem}
  .chapter{padding-inline:1.1rem}
  .scrim::before{inset:-6% -10%}
  .hero-cta .btn{width:100%;text-align:center}
  .stores .btn{width:100%;text-align:center}
}

/* ─── Film sound toggle ─────────────────────────────────────── */
.sound-btn{
  position:fixed;right:1.4rem;bottom:1.4rem;z-index:85;
  width:52px;height:52px;border-radius:50%;
  display:grid;place-items:center;cursor:pointer;
  color:var(--gold-2);
  background:rgba(5,7,13,.66);border:1px solid rgba(200,161,94,.45);
  backdrop-filter:blur(6px);
  transition:border-color .3s,color .3s,transform .3s,background .3s;
}
.sound-btn:hover{border-color:var(--gold-2);transform:translateY(-2px);background:rgba(13,22,38,.8)}
.sound-btn .wave{opacity:0;transition:opacity .3s}
.sound-btn .slash{transition:opacity .3s}
.sound-btn.on .wave{opacity:1}
.sound-btn.on .slash{opacity:0}
@media (max-width:560px){.sound-btn{right:1rem;bottom:1rem;width:46px;height:46px}}
