/* Joy's Box V16 — quieter luxury, cinematic entrance, living WebGL close */
:root{
  --v16-gold:#cbae59;
  --v16-gold-hi:#f4dda0;
  --v16-ink:#050505;
  --v16-cream:#f2eee5;
}

/* ---------- Entrance: a quiet luminous aperture ---------- */
body.is-loading{overflow:hidden}
.preloader-v16{
  position:fixed;inset:0;z-index:3000;overflow:hidden;isolation:isolate;
  background:transparent;color:var(--v16-cream);pointer-events:auto;
}
.preloader-v16__canvas{position:absolute;inset:0;z-index:0;width:100%;height:100%;display:block;background:#050505;opacity:1;transition:opacity .72s ease .38s,transform 1.15s cubic-bezier(.16,1,.3,1)}
.preloader-v16__halo{position:absolute;z-index:1;left:50%;top:50%;width:min(62vw,840px);height:min(26vw,330px);transform:translate(-50%,-50%) scale(.72);border-radius:50%;background:radial-gradient(ellipse at center,rgba(221,188,96,.12),rgba(221,188,96,.025) 37%,transparent 70%);filter:blur(25px);opacity:0;transition:opacity .7s ease,transform 1.05s cubic-bezier(.16,1,.3,1)}
.preloader-v16__curtain{position:absolute;z-index:2;left:0;width:100%;height:50.2%;background:rgba(4,4,4,.74);backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px);will-change:transform}
.preloader-v16__curtain--top{top:0;border-bottom:1px solid rgba(232,207,139,.12)}
.preloader-v16__curtain--bottom{bottom:0;border-top:1px solid rgba(232,207,139,.12)}
.preloader-v16__center{position:absolute;z-index:4;left:50%;top:50%;transform:translate(-50%,-50%);display:grid;justify-items:center;gap:22px;pointer-events:none}
.preloader-v16__logo{width:clamp(88px,7.2vw,122px);height:auto;opacity:0;transform:translateY(10px) scale(.96);filter:drop-shadow(0 18px 52px rgba(203,174,89,.16));will-change:opacity,transform,filter}
.preloader-v16__line{display:block;width:min(190px,38vw);height:1px;background:rgba(255,255,255,.08);overflow:hidden;opacity:0;transform:scaleX(.34);transform-origin:center}
.preloader-v16__line i{display:block;width:100%;height:100%;background:linear-gradient(90deg,transparent,var(--v16-gold-hi),transparent);transform:translateX(-105%)}
.preloader-v16.is-armed .preloader-v16__halo{opacity:1;transform:translate(-50%,-50%) scale(1)}
.preloader-v16.is-armed .preloader-v16__line i{animation:v16LineSweep 1.1s cubic-bezier(.65,0,.35,1) .18s both}
.preloader-v16.is-exiting .preloader-v16__curtain--top{transform:translateY(-102%);transition:transform 1.08s cubic-bezier(.76,0,.24,1) .08s}
.preloader-v16.is-exiting .preloader-v16__curtain--bottom{transform:translateY(102%);transition:transform 1.08s cubic-bezier(.76,0,.24,1) .08s}
.preloader-v16.is-exiting .preloader-v16__canvas{opacity:0;transform:scale(1.035)}
.preloader-v16.is-exiting .preloader-v16__halo{opacity:0;transform:translate(-50%,-50%) scale(1.28)}
@keyframes v16LineSweep{0%{transform:translateX(-105%)}100%{transform:translateX(105%)}}

/* ---------- Hero cleanup: let the image + type do the work ---------- */
.hero-v11__copy{padding-bottom:clamp(46px,7vh,86px)}
.hero-v11__title{max-width:min(1050px,82vw)}
.hero-v15__beam{opacity:.34}
.hero-v11__topline{opacity:.82}
.hero-v11__eyebrow{color:rgba(255,255,255,.7)}
.hero-v11__media::after{content:"";position:absolute;z-index:2;inset:0;pointer-events:none;background:linear-gradient(180deg,transparent 72%,rgba(0,0,0,.18))}

/* remove old experimental helper UI even if cached markup survives */
.hero-v11__footer,.hero-v11__index,.hero-v15__interaction{display:none!important}

/* ---------- Footer / close: one final immersive moment ---------- */
.closing-v16{
  position:relative;min-height:100svh;overflow:hidden;isolation:isolate;background:#050505;color:#f5f0e6;
  padding:clamp(24px,3vw,46px) clamp(20px,4.2vw,72px) clamp(18px,2.2vw,34px);
  display:flex;flex-direction:column;
}
.closing-v16__webgl{position:absolute;z-index:0;inset:0 0 0 38%;pointer-events:none;opacity:.98;overflow:hidden}
.closing-v16__webgl canvas{display:block;width:100%;height:100%}
.closing-v16__haze{position:absolute;z-index:1;inset:0;pointer-events:none;background:
  radial-gradient(ellipse at 78% 45%,rgba(193,155,67,.12),transparent 31%),
  linear-gradient(90deg,#050505 0%,rgba(5,5,5,.98) 34%,rgba(5,5,5,.67) 57%,rgba(5,5,5,.3) 100%),
  linear-gradient(180deg,rgba(5,5,5,.12),rgba(5,5,5,.58));
}
.closing-v16::before{content:"";position:absolute;z-index:2;inset:14px;border:1px solid rgba(255,255,255,.08);pointer-events:none}
.closing-v16__topline{position:relative;z-index:3;display:grid;grid-template-columns:1fr auto auto;align-items:start;gap:35px;padding-bottom:22px;border-bottom:1px solid rgba(255,255,255,.1);font:700 6.5px/1 var(--sans);letter-spacing:.16em;color:rgba(255,255,255,.5)}
.closing-v16__logo{width:74px;display:block}.closing-v16__logo img{display:block;width:100%;height:auto}
.closing-v16__topline>span{padding-top:6px}
.closing-v16__copy{position:relative;z-index:3;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;flex:1;min-height:68vh;padding:8vh 0 7vh;max-width:min(930px,76vw)}
.closing-v16__eyebrow{margin:0 0 24px;font:700 7px/1 var(--sans);letter-spacing:.18em;color:rgba(255,255,255,.48)}
.closing-v16__copy h2{margin:0;font:600 clamp(70px,10.6vw,174px)/.73 var(--cond);letter-spacing:-.047em;text-transform:uppercase;color:#f3efe6;max-width:1050px}
.closing-v16__copy h2 em{font:400 1.03em/.78 var(--serif);letter-spacing:-.055em;text-transform:none;color:var(--v16-gold-hi);font-style:italic;white-space:nowrap}
.closing-v16__mail{margin-top:clamp(38px,6vh,72px);width:min(720px,70vw);display:flex;align-items:center;justify-content:space-between;gap:30px;padding:18px 0;border-top:1px solid rgba(255,255,255,.22);border-bottom:1px solid rgba(255,255,255,.22);font:500 clamp(25px,3.25vw,52px)/1 var(--cond);letter-spacing:-.015em}
.closing-v16__mail b{font:300 clamp(22px,2.4vw,40px)/1 var(--sans);color:var(--v16-gold);transition:transform .35s cubic-bezier(.16,1,.3,1)}
.closing-v16__mail:hover b{transform:translate(6px,-6px)}
.footer-v16{position:relative;z-index:3;display:grid;grid-template-columns:1fr auto;gap:18px 34px;padding-top:18px;border-top:1px solid rgba(255,255,255,.1)}
.footer-v16 nav,.footer-v16__social{display:flex;flex-wrap:wrap;gap:22px;font:700 7px/1 var(--sans);letter-spacing:.13em;text-transform:uppercase;color:#aaa69d}
.footer-v16__social{justify-content:flex-end;color:#d9d3c7}
.footer-v16 a{transition:color .25s ease,opacity .25s ease}.footer-v16 a:hover{color:var(--v16-gold-hi)}
.footer-v16__meta{grid-column:1/-1;margin-top:3px;padding-top:15px;border-top:1px solid rgba(255,255,255,.07);display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:20px;font:700 6.3px/1 var(--sans);letter-spacing:.14em;color:#615e58}
.footer-v16__meta span:nth-child(2){justify-self:center}.footer-v16__meta a{justify-self:end;color:#9b978f}

@media(max-width:900px){
  .closing-v16{min-height:92svh;padding:20px 18px 18px}.closing-v16::before{inset:8px}.closing-v16__webgl{inset:16% -25% 0 18%;opacity:.82}.closing-v16__haze{background:linear-gradient(180deg,#050505 0%,rgba(5,5,5,.76) 48%,rgba(5,5,5,.55) 100%),radial-gradient(ellipse at 62% 55%,rgba(193,155,67,.12),transparent 37%)}
  .closing-v16__topline{grid-template-columns:1fr auto}.closing-v16__topline span:first-of-type{display:none}.closing-v16__logo{width:61px}.closing-v16__copy{max-width:100%;min-height:62vh;padding:9vh 0 6vh;justify-content:flex-end}.closing-v16__copy h2{font-size:clamp(68px,18.5vw,118px);line-height:.74}.closing-v16__copy h2 em{white-space:normal}.closing-v16__mail{width:100%;font-size:clamp(27px,7.1vw,43px)}
  .footer-v16{grid-template-columns:1fr}.footer-v16__social{justify-content:flex-start}.footer-v16__meta{grid-template-columns:1fr auto}.footer-v16__meta span:nth-child(2){display:none}
}
@media(max-width:600px){
  .preloader-v16__logo{width:82px}.preloader-v16__line{width:140px}.preloader-v16__curtain{backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}
  .closing-v16__topline span:last-child{font-size:5.7px}.footer-v16 nav{gap:15px 18px}.footer-v16__social{gap:18px}.closing-v16__copy{padding-bottom:4vh}
}
@media(prefers-reduced-motion:reduce){
  .preloader-v16__line i{animation:none!important}.preloader-v16__curtain,.preloader-v16__canvas,.preloader-v16__halo{transition:none!important}.closing-v16__webgl{display:none}
}
