/* JSN motion layer: moving ancient-world heroes, gold dust, scroll reveals */
:root{--jsn-night:#14110E;--jsn-gold:#B88A2E;--jsn-gold-l:#D9B45E;--jsn-ease:cubic-bezier(.2,.7,.2,1)}

/* ---------- hero stage ---------- */
.jsn-fx-host{position:relative;overflow:hidden;isolation:isolate}
.jsn-fx-host > :not(.jsn-fx){position:relative;z-index:2}
.jsn-fx{position:absolute!important;inset:0;z-index:0;pointer-events:none;overflow:hidden;max-width:none!important;width:auto!important;margin:0!important}
.jsn-fx-pan{position:absolute;inset:-10% 0;will-change:transform}
.jsn-fx-slide{position:absolute;inset:-6%;background-size:cover;background-position:center;opacity:0;
  filter:sepia(.38) saturate(.95) brightness(.62) contrast(1.06);transition:opacity 2.6s ease-in-out;transform-origin:50% 50%}
.jsn-fx-slide.is-on{opacity:1}
.jsn-fx-slide.kb1{animation:jsn-kb1 22s ease-out both}
.jsn-fx-slide.kb2{animation:jsn-kb2 22s ease-out both}
.jsn-fx-slide.kb3{animation:jsn-kb3 22s ease-out both}
.jsn-fx-slide.kb4{animation:jsn-kb4 22s ease-out both}
@keyframes jsn-kb1{from{transform:scale(1.02) translate3d(0,0,0)}to{transform:scale(1.16) translate3d(-2.5%,-1.5%,0)}}
@keyframes jsn-kb2{from{transform:scale(1.16) translate3d(2%,1%,0)}to{transform:scale(1.03) translate3d(0,0,0)}}
@keyframes jsn-kb3{from{transform:scale(1.04) translate3d(2%,-1%,0)}to{transform:scale(1.17) translate3d(-1%,1.5%,0)}}
@keyframes jsn-kb4{from{transform:scale(1.14) translate3d(-2%,0,0)}to{transform:scale(1.04) translate3d(1.5%,-1%,0)}}

/* readability veil: dark on the text side, image breathing through on the right */
.jsn-fx-veil{position:absolute;inset:0;
  background:
    radial-gradient(120% 90% at 85% 40%,rgba(20,17,14,0) 0%,rgba(20,17,14,.35) 60%,rgba(20,17,14,.75) 100%),
    linear-gradient(90deg,rgba(20,17,14,.88) 0%,rgba(20,17,14,.66) 40%,rgba(20,17,14,.28) 72%,rgba(20,17,14,.12) 100%),
    linear-gradient(0deg,rgba(20,17,14,.9) 0%,rgba(20,17,14,0) 28%),
    linear-gradient(180deg,rgba(20,17,14,.55) 0%,rgba(20,17,14,0) 22%)}
.jsn-fx-veil::after{content:"";position:absolute;inset:0;opacity:.35;mix-blend-mode:overlay;
  background:radial-gradient(60% 60% at 70% 30%,rgba(217,180,94,.35),transparent 70%);animation:jsn-breathe 9s ease-in-out infinite}
@keyframes jsn-breathe{0%,100%{opacity:.18}50%{opacity:.45}}

/* museum-label caption + credit */
.jsn-fx-cap{position:absolute;right:22px;bottom:16px;z-index:3;font:500 10.5px/1.35 Inter,system-ui,sans-serif;letter-spacing:.14em;
  text-transform:uppercase;color:rgba(241,234,223,.72);text-align:right;transition:opacity 1.2s ease;max-width:46%}
.jsn-fx-cap b{display:block;font:italic 400 13px/1.3 Fraunces,Georgia,serif;letter-spacing:.01em;text-transform:none;color:var(--jsn-gold-l)}
.jsn-fx-cap.is-fading{opacity:0}

/* progress ticks */
.jsn-fx-dots{position:absolute;left:50%;bottom:18px;transform:translateX(-50%);z-index:3;display:flex;gap:7px}
.jsn-fx-dots span{width:18px;height:2px;background:rgba(241,234,223,.25);overflow:hidden;position:relative}
.jsn-fx-dots span.is-on::after{content:"";position:absolute;inset:0;background:var(--jsn-gold-l);transform-origin:left;animation:jsn-tick var(--jsn-dur,8s) linear both}
@keyframes jsn-tick{from{transform:scaleX(0)}to{transform:scaleX(1)}}

.jsn-fx-host h1,.jsn-fx-host h2,.jsn-fx-host p,.jsn-fx-host li{text-shadow:0 1px 2px rgba(20,17,14,.45),0 2px 22px rgba(20,17,14,.55)}

/* ---------- gold dust ---------- */
.jsn-dust{position:absolute;inset:0;z-index:1;pointer-events:none;overflow:hidden}
.jsn-dust i{position:absolute;left:var(--x);bottom:-12px;width:var(--s);height:var(--s);border-radius:50%;
  background:radial-gradient(circle,rgba(240,206,128,.95) 0%,rgba(217,180,94,.55) 40%,rgba(217,180,94,0) 70%);
  opacity:0;animation:jsn-rise-dust var(--d) linear var(--dl) infinite}
@keyframes jsn-rise-dust{0%{opacity:0;transform:translate3d(0,0,0)}12%{opacity:var(--o)}50%{transform:translate3d(var(--dx),-48vh,0)}
  85%{opacity:calc(var(--o) * .6)}100%{opacity:0;transform:translate3d(calc(var(--dx) * -.6),-96vh,0)}}

/* ---------- hero entrance ---------- */
.jsn-fx-host.jsn-enter > :not(.jsn-fx){animation:jsn-rise 1.4s var(--jsn-ease) both}
.jsn-fx-host.jsn-enter > :not(.jsn-fx):nth-child(3){animation-delay:.12s}
.jsn-fx-host.jsn-enter > :not(.jsn-fx):nth-child(4){animation-delay:.24s}
@keyframes jsn-rise{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:none}}
.jsn-fx-host .jsn-hero-title em,.jsn-fx-host h1 em{background:linear-gradient(100deg,#B88A2E 0%,#F0D58C 45%,#B88A2E 90%);background-size:220% 100%;
  -webkit-background-clip:text;background-clip:text;color:transparent;animation:jsn-sheen 7s ease-in-out infinite}
@keyframes jsn-sheen{0%,100%{background-position:100% 0}50%{background-position:0 0}}

/* ---------- marquee of ancient names (home) ---------- */
.jsn-marquee{position:relative;max-width:none!important;width:auto;margin:0!important;overflow:hidden;background:var(--jsn-night);border-top:1px solid rgba(184,138,46,.35);border-bottom:1px solid rgba(184,138,46,.35);
  padding:15px 0;-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.jsn-marquee-track{display:flex;width:max-content;animation:jsn-scroll 70s linear infinite}
.jsn-marquee:hover .jsn-marquee-track{animation-play-state:paused}
.jsn-marquee span{font:italic 300 clamp(18px,2.2vw,26px)/1 Fraunces,Georgia,serif;color:#F1EADF;white-space:nowrap;padding:0 22px;opacity:.88}
.jsn-marquee span.st{color:var(--jsn-gold);font-style:normal;padding:0;opacity:1;font-size:16px;align-self:center}
@keyframes jsn-scroll{to{transform:translateX(-50%)}}

/* ---------- scroll reveals ---------- */
.jsn-rv{opacity:0;transform:translateY(26px);transition:opacity 1s var(--jsn-ease),transform 1.1s var(--jsn-ease);transition-delay:var(--rd,0s)}
.jsn-rv.jsn-in{opacity:1;transform:none}

/* ---------- living details ---------- */
.jsn-card{transition:transform .6s var(--jsn-ease),box-shadow .6s var(--jsn-ease)}
.jsn-card:hover{transform:translateY(-5px);box-shadow:0 18px 40px -18px rgba(20,17,14,.45)}
.wp-block-button__link{position:relative;overflow:hidden}
.wp-block-button__link::after{content:"";position:absolute;top:0;left:-60%;width:40%;height:100%;pointer-events:none;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.28),transparent);transform:skewX(-18deg);transition:left .9s var(--jsn-ease)}
.wp-block-button__link:hover::after{left:120%}
.jsn-bookcta img,.jsn-hero-cols .wp-block-image img{animation:jsn-float 9s ease-in-out infinite}
@keyframes jsn-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}

/* dark header / footer get a faint dust too */
.jsn-fx-band{position:relative;isolation:isolate}
.jsn-fx-band > :not(.jsn-dust):not(.jsn-fx-band-img){position:relative;z-index:2}
.jsn-fx-band-img{position:absolute;inset:-10%;z-index:0;background-size:cover;background-position:center;opacity:.16;
  filter:sepia(.5) brightness(.7);animation:jsn-kb1 40s ease-in-out infinite alternate;pointer-events:none}

@media (max-width:781px){
  .jsn-fx-cap{max-width:70%;right:14px;bottom:12px;font-size:9.5px}
  .jsn-fx-dots{display:none}
  .jsn-fx-veil{background:linear-gradient(180deg,rgba(20,17,14,.72) 0%,rgba(20,17,14,.82) 55%,rgba(20,17,14,.95) 100%)}
}
@media (prefers-reduced-motion:reduce){
  .jsn-fx-slide,.jsn-dust i,.jsn-marquee-track,.jsn-fx-veil::after,.jsn-fx-band-img,.jsn-bookcta img,.jsn-hero-cols .wp-block-image img,
  .jsn-fx-host.jsn-enter > *,.jsn-fx-host h1 em,.jsn-fx-dots span::after{animation:none!important}
  .jsn-dust{display:none}
  .jsn-rv{opacity:1;transform:none;transition:none}
}

/* ---------- single posts: dark moving title area ---------- */
body.single-post main.wp-block-group{position:relative;padding-top:0!important;margin-top:0!important}
body.single-post main > .wp-block-post-title,
body.single-post main > .wp-block-post-terms:first-child,
body.single-post main > .wp-block-post-title + .wp-block-post-excerpt,
body.single-post main > .wp-block-post-excerpt + .wp-block-group{position:relative;z-index:2;background:var(--jsn-night);box-shadow:0 0 0 100vmax var(--jsn-night);clip-path:inset(-3rem -100vmax)}
body.single-post main > .wp-block-post-terms:first-child{padding-top:4.5rem;clip-path:inset(0 -100vmax -3rem)}
body.single-post main > .wp-block-post-excerpt + .wp-block-group{padding-bottom:3.2rem;clip-path:inset(-3rem -100vmax 0)}
body.single-post main > .wp-block-post-title{color:#FAF7F1}
body.single-post main > .wp-block-post-terms:first-child a{color:#D9B45E!important;text-decoration-color:rgba(217,180,94,.4)}
body.single-post main > .wp-block-post-title + .wp-block-post-excerpt,
body.single-post main > .wp-block-post-title + .wp-block-post-excerpt *{color:rgba(241,234,223,.84)!important}
body.single-post main > .wp-block-post-excerpt + .wp-block-group,
body.single-post main > .wp-block-post-excerpt + .wp-block-group *{color:rgba(241,234,223,.7)!important}
body.single-post main > .wp-block-post-excerpt + .wp-block-group a{color:#D9B45E!important}
body.single-post main > .wp-block-post-excerpt + .wp-block-group + .wp-block-post-featured-image{margin-top:3.5rem}
body.jsn-ph-ready.single-post main > .wp-block-post-title,
body.jsn-ph-ready.single-post main > .wp-block-post-terms:first-child,
body.jsn-ph-ready.single-post main > .wp-block-post-title + .wp-block-post-excerpt,
body.jsn-ph-ready.single-post main > .wp-block-post-excerpt + .wp-block-group{background:transparent;box-shadow:none}
.jsn-ph-stage{position:absolute;left:50%;width:100vw;margin:0 0 0 -50vw!important;max-width:none!important;z-index:0;background:var(--jsn-night);overflow:hidden;pointer-events:none}
.jsn-ph-stage.jsn-fx-host > :not(.jsn-fx){position:static}
.jsn-ph-enter{animation:jsn-rise 1.3s var(--jsn-ease) both}
body.single-post main > .wp-block-post-title,body.single-post main > .wp-block-post-title + .wp-block-post-excerpt{text-shadow:0 1px 2px rgba(20,17,14,.45),0 2px 22px rgba(20,17,14,.55)}
@media (prefers-reduced-motion:reduce){.jsn-ph-enter{animation:none}}
