/* ============================================================
   AWGroup LP — KINETIC layer (motion & ornament)
   ============================================================ */

/* ---------- intro / THEATRICAL CURTAIN ---------- */
.intro{position:fixed;inset:0;z-index:120;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(120% 80% at 50% 12%,#3A1140,#1c0820 70%,#120516);overflow:hidden;
  transition:opacity .9s ease,visibility .9s;}
.intro.gone{opacity:0;visibility:hidden;}

/* velvet drape panels */
.curtain{position:absolute;inset:0;z-index:1;pointer-events:none;}
.curtain__panel{position:absolute;top:0;bottom:0;width:56%;
  background-image:
    linear-gradient(180deg,rgba(0,0,0,.5) 0%,rgba(0,0,0,.12) 14%,rgba(255,255,255,.05) 52%,rgba(0,0,0,.26) 78%,rgba(0,0,0,.5) 100%),
    repeating-linear-gradient(90deg,
      #67102f 0px,#7d1640 9px,#a82058 24px,#cf4a82 36px,#a82058 48px,#7d1640 63px,#5d0d2a 78px);
  background-size:auto, 78px 100%;
  box-shadow:inset 0 -40px 60px -20px rgba(0,0,0,.55);
  transition:transform 1.4s cubic-bezier(.76,0,.18,1) .35s;
  will-change:transform;}
.curtain__panel.l{left:0;transform-origin:top left;border-right:2px solid rgba(60,8,30,.6);}
.curtain__panel.r{right:0;transform-origin:top right;}
/* scalloped, fringed hem */
.curtain__panel::after{content:"";position:absolute;left:0;right:0;bottom:0;height:30px;
  background:
    radial-gradient(circle at 50% 0,transparent 64%,var(--gold) 65%,var(--gold-light) 72%,transparent 80%) 0 0/26px 30px repeat-x;
  filter:drop-shadow(0 3px 2px rgba(0,0,0,.4));opacity:.9;}
/* soft sheen highlight */
.curtain__panel::before{content:"";position:absolute;top:0;bottom:0;width:40%;
  background:linear-gradient(90deg,transparent,rgba(255,210,235,.16),transparent);
  mix-blend-mode:screen;}
.curtain__panel.l::before{right:6%;} .curtain__panel.r::before{left:6%;}
.intro.open .curtain__panel.l{transform:translate(-13%,-104%) rotate(-3deg);}
.intro.open .curtain__panel.r{transform:translate(13%,-104%) rotate(3deg);}

/* top valance / pelmet with swags + gold fringe */
.curtain__valance{position:absolute;top:0;left:0;right:0;height:96px;z-index:3;
  background-image:
    linear-gradient(180deg,rgba(0,0,0,.4),rgba(0,0,0,0) 60%),
    repeating-linear-gradient(90deg,#67102f 0,#a82058 14px,#cf4a82 22px,#a82058 30px,#67102f 44px);
  background-size:auto,48px 100%;
  -webkit-mask-image:radial-gradient(circle at 50% 0,#000 62%,transparent 64%);
  mask-image:radial-gradient(circle at 50% 0,#000 62%,transparent 64%);
  -webkit-mask-size:84px 96px;mask-size:84px 96px;-webkit-mask-repeat:repeat-x;mask-repeat:repeat-x;
  box-shadow:0 6px 14px rgba(0,0,0,.4);transition:transform 1s ease .15s;}
.curtain__valance::after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:14px;
  background:repeating-linear-gradient(90deg,var(--gold) 0 3px,var(--gold-light) 3px 6px,#9a6b22 6px 9px);
  -webkit-mask-image:radial-gradient(circle at 50% 0,#000 60%,transparent 62%);
  mask-image:radial-gradient(circle at 50% 0,#000 60%,transparent 62%);
  -webkit-mask-size:18px 14px;mask-size:18px 14px;-webkit-mask-repeat:repeat-x;mask-repeat:repeat-x;}
.intro.open .curtain__valance{transform:translateY(-104%);}

.intro__core{position:relative;z-index:4;text-align:center;color:#fff;padding:0 30px;
  transition:opacity .5s,transform .6s;}
.intro.open .intro__core{opacity:0;transform:scale(1.12) translateY(-8px);}
.intro__key{width:50px;height:50px;margin:0 auto 18px;color:var(--gold-light);
  filter:drop-shadow(0 0 14px rgba(245,221,154,.8));
  animation:keyTurn 1.6s cubic-bezier(.6,0,.2,1) both;}
@keyframes keyTurn{0%{transform:rotate(-120deg) scale(.4);opacity:0;}
  60%{opacity:1;}100%{transform:rotate(0) scale(1);opacity:1;}}

/* magic shimmer sweep + glow ring behind core */
.intro__halo{position:absolute;top:50%;left:50%;width:300px;height:300px;z-index:3;
  transform:translate(-50%,-58%);pointer-events:none;
  background:radial-gradient(circle,rgba(255,240,200,.28),transparent 62%);
  animation:haloPulse 2.6s ease-in-out infinite;}
@keyframes haloPulse{0%,100%{opacity:.5;transform:translate(-50%,-58%) scale(.92);}
  50%{opacity:1;transform:translate(-50%,-58%) scale(1.08);}}
.intro__sweep{position:absolute;inset:0;z-index:3;pointer-events:none;overflow:hidden;}
.intro__sweep::after{content:"";position:absolute;top:-60%;left:-30%;width:60%;height:220%;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.18),rgba(255,240,200,.32),rgba(255,255,255,.18),transparent);
  transform:rotate(18deg);animation:sweep 3s ease-in-out .4s infinite;}
@keyframes sweep{0%{left:-40%;}60%,100%{left:120%;}}
.intro__brand{font-family:var(--f-serif);font-style:italic;font-weight:600;font-size:13px;
  letter-spacing:.42em;text-transform:uppercase;opacity:0;animation:fadeUp .7s ease .5s both;}
.intro__msg{font-family:var(--f-disp);font-weight:900;font-size:clamp(22px,6.6vw,30px);
  margin-top:12px;line-height:1.4;}
.intro__msg span{display:inline-block;opacity:0;transform:translateY(110%);
  animation:lineUp .7s cubic-bezier(.2,.7,.2,1) both;}
.intro__bar{width:120px;height:2px;margin:22px auto 0;background:rgba(255,255,255,.2);
  overflow:hidden;border-radius:2px;}
.intro__bar i{display:block;height:100%;width:0;background:var(--gold-light);
  box-shadow:0 0 8px var(--gold-light);
  animation:loadbar 2.2s ease .15s forwards;}
@keyframes loadbar{to{width:100%;}}
@keyframes fadeUp{from{opacity:0;transform:translateY(12px);}to{opacity:1;transform:none;}}
@keyframes lineUp{to{opacity:1;transform:none;}}

/* ---------- scroll progress thread ---------- */
.thread{position:fixed;top:0;left:0;height:3px;z-index:90;width:0;
  background:linear-gradient(90deg,var(--rose),var(--lav),var(--aqua));
  box-shadow:0 1px 8px rgba(216,30,114,.5);transition:width .12s linear;}

/* ---------- split-text reveal ---------- */
.kin{display:inline;}
.kin .word{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.06em;}
.kin .word>i{display:inline-block;font-style:inherit;transform:translateY(112%);
  transition:transform .82s cubic-bezier(.2,.75,.2,1);}
.kin.lit .word>i{transform:none;}
.kin .word{transition-delay:var(--d,0s);}
.kin .word>i{transition-delay:var(--d,0s);}

/* char reveal (for big serif) */
.kinc .ch{display:inline-block;opacity:0;transform:translateY(40%) rotate(6deg);filter:blur(6px);
  transition:opacity .7s ease,transform .7s cubic-bezier(.2,.7,.2,1),filter .7s ease;
  transition-delay:var(--d,0s);}
.kinc.lit .ch{opacity:1;transform:none;filter:none;}

/* generic reveal */
.rv{opacity:0;transform:translateY(34px);transition:opacity .9s ease,transform .9s cubic-bezier(.2,.7,.2,1);}
.rv.in{opacity:1;transform:none;}
.rv.d1{transition-delay:.12s;} .rv.d2{transition-delay:.24s;}
.rv.d3{transition-delay:.36s;} .rv.d4{transition-delay:.48s;}
.rv-zoom{opacity:0;transform:scale(1.12);transition:opacity 1s ease,transform 1.2s cubic-bezier(.2,.7,.2,1);}
.rv-zoom.in{opacity:1;transform:none;}
.rv-mask{clip-path:inset(0 100% 0 0);transition:clip-path 1s cubic-bezier(.76,0,.24,1);}
.rv-mask.in{clip-path:inset(0 0 0 0);}

/* ---------- marquee ribbons ---------- */
.marquee{position:relative;z-index:3;overflow:hidden;padding:16px 0;white-space:nowrap;
  border-block:1px solid rgba(255,255,255,.4);}
.marquee--rose{background:var(--rose-grad);color:#fff;}
.marquee--tri{background:var(--tri-soft);color:#fff;}
.marquee--ink{background:var(--plum);color:var(--gold-light);}
.marquee__track{display:inline-flex;gap:0;will-change:transform;animation:march 26s linear infinite;}
.marquee--rev .marquee__track{animation-direction:reverse;}
.marquee:hover .marquee__track{animation-play-state:paused;}
.marquee__track span{display:inline-flex;align-items:center;font-family:var(--f-serif);
  font-style:italic;font-weight:600;font-size:clamp(20px,5.5vw,26px);letter-spacing:.04em;padding:0 .55em;}
.marquee__track .dot{font-style:normal;opacity:.7;font-size:.7em;padding:0 .15em;}
.marquee--big .marquee__track span{font-family:var(--f-disp);font-weight:900;font-style:normal;
  font-size:clamp(26px,8vw,40px);}
@keyframes march{to{transform:translateX(-50%);}}

/* ---------- parallax ornaments ---------- */
.orn-field{position:absolute;inset:0;z-index:1;overflow:hidden;pointer-events:none;}
.orn{position:absolute;display:block;will-change:transform;opacity:.16;}
.orn.gold{color:var(--gold);} .orn.rose{color:var(--rose);}
.orn.aqua{color:var(--aqua);} .orn.lav{color:var(--lav);} .orn.white{color:#fff;}
.orn--soft{opacity:.13;}
.twinkle{position:absolute;color:#fff;animation:twk 3.2s ease-in-out infinite;pointer-events:none;
  filter:drop-shadow(0 0 5px rgba(255,220,240,.8));z-index:4;}
@keyframes twk{0%,100%{transform:scale(.7) rotate(0);opacity:.5;}50%{transform:scale(1.15) rotate(20deg);opacity:1;}}

/* ---------- ornate divider ---------- */
.divider{display:flex;align-items:center;justify-content:center;gap:13px;margin:0 auto;}
.divider .sw{width:64px;height:18px;color:var(--gold);opacity:.85;}
.divider .sw.r{transform:scaleX(-1);}
.divider .suit{width:18px;height:18px;animation:twk 3.6s ease-in-out infinite;}
.divider .suit.red{color:var(--rose);} .divider .suit.gold{color:var(--gold-mid);}

/* squiggle underline on emphasis */
.uline{position:relative;display:inline-block;}
.uline::after{content:"";position:absolute;left:-2px;right:-2px;bottom:-5px;height:8px;
  background:no-repeat center/contain;transform:scaleX(0);transform-origin:left;
  transition:transform .9s cubic-bezier(.2,.7,.2,1) .3s;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='8'%3E%3Cpath d='M1 5 C 15 1 25 7 38 4 S 62 1 76 4 S 104 7 119 3' fill='none' stroke='%23FF4F94' stroke-width='2.6' stroke-linecap='round'/%3E%3C/svg%3E");}
.in .uline::after,.lit .uline::after{transform:scaleX(1);}

/* ornate photo corners */
.frame{position:relative;}
.frame .corner{position:absolute;width:28px;height:28px;color:var(--gold-light);z-index:4;
  filter:drop-shadow(0 1px 3px rgba(120,40,80,.45));pointer-events:none;}
.frame .corner.tl{top:8px;left:8px;}
.frame .corner.tr{top:8px;right:8px;transform:scaleX(-1);}
.frame .corner.bl{bottom:8px;left:8px;transform:scaleY(-1);}
.frame .corner.br{bottom:8px;right:8px;transform:scale(-1,-1);}

/* ticking pocket watch */
.watch{position:relative;width:58px;height:58px;flex:none;}
.watch__face{position:absolute;inset:0;border-radius:50%;
  background:radial-gradient(circle at 38% 32%,#FBEBC0,#E6BE5C 70%,#B98A2E);
  border:3px solid #A9772A;box-shadow:0 6px 16px -6px rgba(120,70,10,.6),inset 0 2px 4px rgba(255,255,255,.5);}
.watch__face::before{content:"";position:absolute;top:-9px;left:50%;transform:translateX(-50%);
  width:12px;height:10px;border-radius:3px;background:#C8973B;border:2px solid #A9772A;}
.watch__tick{position:absolute;top:3px;left:50%;width:2px;height:5px;background:rgba(90,58,18,.5);
  transform:translateX(-50%);transform-origin:50% 26px;}
.watch__hand{position:absolute;left:50%;bottom:50%;transform-origin:bottom center;background:#5A3A12;border-radius:2px;}
.watch__hand.min{width:2.4px;height:19px;margin-left:-1.2px;animation:spin 10s linear infinite;}
.watch__hand.hr{width:3px;height:12px;margin-left:-1.5px;background:#3A2408;animation:spin 50s linear infinite;}
.watch__pin{position:absolute;top:50%;left:50%;width:6px;height:6px;border-radius:50%;background:#3A2408;transform:translate(-50%,-50%);}
@keyframes spin{to{transform:rotate(360deg);}}

@media (prefers-reduced-motion:reduce){
  .kin .word>i{transform:none !important;}
  .kinc .ch{opacity:1 !important;transform:none !important;filter:none !important;}
  .rv,.rv-zoom{opacity:1 !important;transform:none !important;}
  .rv-mask{clip-path:none !important;}
  .marquee__track{animation:none !important;}
  .watch__hand,.twinkle,.suit{animation:none !important;}
  .intro{display:none !important;}
}
