/* ============================================================
   ATAVUS — Cinematic FX styles (CSS-timeline driven)
   ============================================================ */

/* ---------- entrance keyframes ---------- */
@keyframes av-rise{0%{opacity:0;transform:translateY(42px)}100%{opacity:1;transform:none}}
@keyframes av-fade{0%{opacity:0}100%{opacity:1}}
@keyframes av-unmask{0%{transform:translateY(115%)}100%{transform:translateY(0)}}
@keyframes av-lnx{0%{transform:scaleX(0)}100%{transform:scaleX(1)}}

/* ---------- REVEAL (scroll, non-hero) ---------- */
.js-ready [data-reveal]:not([data-hero]){opacity:0;transition:opacity 1.2s cubic-bezier(.2,.7,.2,1),transform 1.2s cubic-bezier(.2,.7,.2,1)}
.js-ready [data-reveal="up"]:not([data-hero]){transform:translateY(42px)}
.js-ready [data-reveal="scale"]:not([data-hero]){transform:scale(.94)}
.js-ready [data-reveal="left"]:not([data-hero]){transform:translateX(-44px)}
.js-ready [data-reveal="right"]:not([data-hero]){transform:translateX(44px)}
.js-ready [data-reveal]:not([data-hero]).in{opacity:1;transform:none}
.js-ready .av-stag-item{opacity:0;transform:translateY(40px);transition:opacity 1.05s cubic-bezier(.2,.7,.2,1),transform 1.05s cubic-bezier(.2,.7,.2,1)}
.js-ready [data-stagger].in .av-stag-item{opacity:1;transform:none}

/* masked text */
.av-u{display:inline-block;overflow:hidden;vertical-align:top;line-height:inherit}
.av-ui{display:inline-block;transform:translateY(115%);will-change:transform}
.js-ready [data-mask]:not([data-hero]) .av-ui{transition:transform 1.05s cubic-bezier(.2,.75,.15,1)}
.js-ready [data-mask]:not([data-hero]).in .av-ui{transform:translateY(0)}

/* ============================================================
   PRELOADER — pure CSS curtain
   ============================================================ */
.av-preload{position:fixed;inset:0;z-index:99999;background:var(--deeper,#0C1A15);
  display:flex;align-items:center;justify-content:center;
  animation:av-curtain 1.9s cubic-bezier(.76,0,.18,1) forwards}
@keyframes av-curtain{0%,52%{transform:translateY(0)}100%{transform:translateY(-101%);visibility:hidden}}
.av-preload-inner{display:flex;flex-direction:column;align-items:center;gap:30px;
  animation:av-inner-out .5s ease .92s forwards}
@keyframes av-inner-out{to{opacity:0;transform:translateY(-24px)}}
.av-pl-mark{width:124px;height:138px}
.av-pl-mark img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 0 36px rgba(167,130,55,.45));
  opacity:0;transform:scale(.82);animation:av-mark-in .8s cubic-bezier(.2,.7,.2,1) forwards}
@keyframes av-mark-in{to{opacity:1;transform:scale(1)}}
.av-pl-word{display:flex;gap:.14em;overflow:hidden;padding:0 0 .12em .34em;
  font-family:"Cormorant Garamond",serif;font-weight:300;font-size:clamp(40px,7vw,76px);
  letter-spacing:.34em;color:var(--cream,#F0E8D5)}
.av-pl-word span{display:inline-block;transform:translateY(120%);opacity:0;animation:av-word-in .7s cubic-bezier(.2,.75,.15,1) forwards}
@keyframes av-word-in{to{transform:translateY(0);opacity:1}}
.av-pl-line{width:min(340px,60vw);height:1px;background:var(--brass,#A78237);transform:scaleX(0);transform-origin:left center;
  animation:av-lnpl .85s cubic-bezier(.5,0,.1,1) .35s forwards}
@keyframes av-lnpl{to{transform:scaleX(1)}}
.av-pl-count{position:fixed;right:40px;bottom:34px;font-family:"JetBrains Mono",monospace;font-size:12px;
  letter-spacing:.18em;color:var(--brass,#A78237);display:flex;align-items:baseline;gap:2px;animation:av-fade .6s ease .3s both}
.av-pl-count .pct{opacity:.55;font-size:10px}
.av-pl-meta{position:fixed;left:40px;bottom:34px;font-family:"JetBrains Mono",monospace;font-size:10px;
  letter-spacing:.22em;text-transform:uppercase;color:var(--stone,#9E978E);opacity:0;animation:av-fade .6s ease .3s forwards;animation-fill-mode:forwards}
.av-preload .av-pl-meta{opacity:.7}

/* ============================================================
   CUSTOM CURSOR
   ============================================================ */
@media (hover:hover){ html.av-has-cursor,html.av-has-cursor *{cursor:none !important} }
.av-cursor-dot{position:fixed;top:0;left:0;width:6px;height:6px;border-radius:50%;background:var(--brass,#A78237);
  margin:-3px 0 0 -3px;z-index:100000;pointer-events:none;transition:opacity .3s}
.av-cursor-ring{position:fixed;top:0;left:0;width:42px;height:42px;border-radius:50%;border:1px solid rgba(167,130,55,.55);
  margin:-21px 0 0 -21px;z-index:100000;pointer-events:none;display:flex;align-items:center;justify-content:center;
  transition:transform .42s cubic-bezier(.2,.7,.2,1),width .35s,height .35s,background .35s,border-color .35s}
.av-cursor-label{font-family:"JetBrains Mono",monospace;font-size:9px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--deeper,#0C1A15);opacity:0;transition:opacity .3s;white-space:nowrap}
html.av-cursor-active .av-cursor-ring{width:62px;height:62px;border-color:var(--brass,#A78237);background:rgba(167,130,55,.10)}
html.av-cursor-active .av-cursor-dot{opacity:0}
html.av-cursor-labeled .av-cursor-ring{width:88px;height:88px;background:var(--brass,#A78237);border-color:var(--brass,#A78237)}
html.av-cursor-labeled .av-cursor-label{opacity:1}

/* ============================================================
   FILM GRAIN + AMBIENT
   ============================================================ */
.av-grain{position:fixed;inset:-50%;z-index:9000;pointer-events:none;opacity:.05;mix-blend-mode:overlay;
  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='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  animation:av-grain 1.1s steps(4) infinite}
@keyframes av-grain{0%{transform:translate(0,0)}25%{transform:translate(-3%,2%)}50%{transform:translate(2%,-3%)}75%{transform:translate(-2%,-2%)}100%{transform:translate(3%,2%)}}
.av-ambient{position:absolute;top:0;left:0;width:680px;height:680px;margin:-340px 0 0 -340px;border-radius:50%;
  pointer-events:none;z-index:0;mix-blend-mode:screen;will-change:transform;transition:transform .9s cubic-bezier(.2,.7,.2,1),opacity .8s ease;
  background:radial-gradient(circle,rgba(167,130,55,.16),rgba(167,130,55,.05) 38%,transparent 66%)}

/* magnetic / tilt smoothing */
.av-mag{transition:transform .55s cubic-bezier(.2,.8,.2,1)}
.av-mag .av-mag-inner{transition:transform .55s cubic-bezier(.2,.8,.2,1)}
.av-tilt{transition:transform .5s cubic-bezier(.2,.8,.2,1)}

@media (prefers-reduced-motion:reduce){
  .av-grain,.av-ambient{display:none}
  .js-ready [data-reveal],.js-ready .av-stag-item,.av-ui,.av-hero-anim{opacity:1 !important;transform:none !important;transition:none !important;animation:none !important}
}
