/* ===== Maiden City Digital · shared polish layer ===== */
:root{ --px-ease:cubic-bezier(.22,1,.36,1); }
html{ scroll-behavior:smooth; }

/* Scroll progress */
.px-progress{ position:fixed; top:0; left:0; height:2px; width:100%; z-index:9999; pointer-events:none;
  background:linear-gradient(90deg,#7A2438,#C43F58 55%,#E7B9C7); transform-origin:0 50%; transform:scaleX(0); }

/* Button shine */
.btn{ position:relative; overflow:hidden; isolation:isolate; }
.btn-solid::after{ content:""; position:absolute; top:0; bottom:0; left:-60%; width:40%; z-index:-1;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.35),transparent); transform:skewX(-20deg);
  transition:left .9s var(--px-ease); pointer-events:none; }
.btn-solid:hover::after{ left:130%; }

/* Fade-up reveal */
.px-rv{ opacity:0; translate:0 30px; transition:opacity .9s var(--px-ease), translate .9s var(--px-ease); transition-delay:var(--px-d,0s); }
.px-rv.px-in{ opacity:1; translate:0 0; }

/* Image unveil */
.px-unveil{ clip-path:inset(12% 12% 12% 12% round 6px); opacity:.2; transition:clip-path 1.4s var(--px-ease), opacity 1.1s var(--px-ease); transition-delay:var(--px-d,0s); }
.px-unveil img{ transform:scale(1.14); transition:transform 1.8s var(--px-ease); }
.px-unveil.px-in{ clip-path:inset(0 0 0 0 round 4px); opacity:1; }
.px-unveil.px-in img{ transform:scale(1); }

/* Gallery lightbox */
[data-px-lightbox] img{ cursor:zoom-in; }
.px-lb{ position:fixed; inset:0; z-index:10000; background:rgba(20,7,12,.95); display:flex; align-items:center; justify-content:center;
  opacity:0; pointer-events:none; transition:opacity .45s var(--px-ease); }
.px-lb.open{ opacity:1; pointer-events:auto; }
.px-lb figure{ margin:0; max-width:92vw; max-height:88vh; display:flex; flex-direction:column; align-items:center; gap:14px;
  transform:scale(.96); transition:transform .5s var(--px-ease); }
.px-lb.open figure{ transform:scale(1); }
.px-lb img{ max-width:92vw; max-height:80vh; width:auto; height:auto; border-radius:3px; box-shadow:0 30px 80px -20px rgba(0,0,0,.8); }
.px-lb figcaption{ font-family:'Bodoni Moda',Georgia,serif; font-style:italic; color:#F6E7E2; font-size:15px; text-align:center; padding:0 20px; }
.px-lb button{ position:fixed; background:rgba(46,15,24,.7); border:1px solid rgba(246,231,226,.25); color:#F6E7E2; cursor:pointer;
  width:46px; height:46px; border-radius:50%; font-size:26px; line-height:1; display:flex; align-items:center; justify-content:center; transition:background .3s; }
.px-lb button:hover{ background:#C43F58; }
.px-lb .px-x{ top:16px; right:18px; }
.px-lb .px-prev{ left:16px; top:50%; transform:translateY(-50%); }
.px-lb .px-next{ right:16px; top:50%; transform:translateY(-50%); }
.px-lb .px-count{ position:fixed; top:28px; left:24px; font:11px/1 Jost,system-ui,sans-serif; letter-spacing:.16em; color:rgba(246,231,226,.65); }
@media (max-width:680px){ .px-lb .px-prev, .px-lb .px-next{ top:auto; bottom:18px; transform:none; } .px-lb img{ max-height:72vh; } }

@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
  .px-rv, .px-unveil, .px-unveil img{ opacity:1 !important; transform:none !important; translate:none !important; clip-path:none !important; transition:none !important; }
  .btn-solid::after{ display:none; }
}

/* ===== Interacción y micro-animaciones ===== */
.cal-row{ transition:background .5s var(--px-ease), transform .5s var(--px-ease); border-radius:3px; }
.cal-row:not(.past):hover{ background:rgba(231,185,199,0.07); transform:translateX(6px); }
.cal-row:not(.past):hover .cal-date .d{ color:var(--blush); }
.cal-site{ display:inline-flex; align-items:center; justify-content:center; gap:9px; }
.cal-site::after{ content:"\2192"; transition:transform .4s var(--px-ease); }
.cal-site:hover::after{ transform:translateX(4px); }
.cal-site:hover{ transform:translateY(-2px); box-shadow:0 12px 26px -14px rgba(196,63,88,0.9); }
.album-card, .pillar, .quote-card, .review-card, .acad-card{ transition:transform .6s var(--px-ease), box-shadow .6s var(--px-ease), background .6s var(--px-ease); }
.album-card:hover, .acad-card:hover{ transform:translateY(-7px); box-shadow:0 28px 55px -30px rgba(46,15,24,0.6); }
.pillar:hover{ transform:translateY(-5px); }
.quote-card:hover, .review-card:hover{ background:rgba(231,185,199,0.10); }
.acad-feature-img img, .week-photo-img img{ transition:transform 1.6s var(--px-ease); }
.acad-feature-img:hover img, .week-photo-img:hover img{ transform:scale(1.04); }
.eyebrow{ transition:letter-spacing .6s var(--px-ease); }
section:hover > .wrap > .eyebrow{ letter-spacing:0.28em; }
@media (prefers-reduced-motion: reduce){
  .cal-row:hover, .album-card:hover, .pillar:hover, .acad-card:hover, .cal-site:hover{ transform:none; }
}

/* ===== Fotos en escena: aparición al hacer scroll ===== */
.m-item.px-unveil{ clip-path:inset(16% 16% 16% 16% round 6px); }
.m-item.px-unveil.px-in{ clip-path:inset(0 0 0 0 round 3px); }
.m-item img{ transform:scale(1.09); filter:saturate(.82) contrast(.96); transition:transform 1.5s var(--px-ease), filter 1.2s var(--px-ease); }
.m-item.px-in img{ transform:scale(1); filter:none; }
.m-item:hover img{ transform:scale(1.05); }
.tile{ will-change:transform, opacity; }
@media (prefers-reduced-motion: reduce){
  .m-item img{ transform:none !important; filter:none !important; }
}
