
/* =========================================================
   PBR MOTION SYSTEM — additive only; preserves layout/workflow
   ========================================================= */
:root{
  --pbr-ease:cubic-bezier(.22,1,.36,1);
  --pbr-spring:cubic-bezier(.16,1,.3,1);
}
html{scroll-behavior:smooth}
body{overflow-x:hidden}
body:not(.site-loading):not(.motion-ready){opacity:1}

/* cinematic page transitions */
.pbr-page-transition{
  position:fixed;inset:0;z-index:99999;pointer-events:none;
  background:linear-gradient(135deg,rgba(247,252,253,.98),rgba(230,247,252,.96) 48%,rgba(232,243,227,.98));
  opacity:0;transform:scaleY(0);transform-origin:bottom;
  transition:opacity .45s var(--pbr-ease),transform .62s var(--pbr-ease);
}
.pbr-page-transition.is-in{opacity:1;transform:scaleY(1);transform-origin:bottom}
.pbr-page-transition.is-out{opacity:0;transform:scaleY(0);transform-origin:top}
.pbr-page-transition::after{
  content:"PURULIA BOOK OF RECORDS";
  position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) translateY(10px);
  font:800 10px/1 "Inter",sans-serif;letter-spacing:.22em;color:#18343a;opacity:0;
  transition:opacity .35s .1s,transform .55s var(--pbr-ease);
}
.pbr-page-transition.is-in::after{opacity:.62;transform:translate(-50%,-50%) translateY(0)}

/* universal reveal-on-scroll */
[data-pbr-reveal]{
  opacity:0;transform:translate3d(0,28px,0) scale(.985);
  transition:opacity .75s var(--pbr-ease),transform .85s var(--pbr-ease);
  transition-delay:var(--pbr-delay,0ms);
}
[data-pbr-reveal].pbr-visible{opacity:1;transform:none}
[data-pbr-reveal="left"]{transform:translate3d(-32px,0,0)}
[data-pbr-reveal="right"]{transform:translate3d(32px,0,0)}
[data-pbr-reveal="scale"]{transform:scale(.94)}
[data-pbr-reveal].pbr-visible{transform:none}

/* subtle interactive lift — no layout shift */
.btn,.gallery-card,.credit-final-card,.modal-card,.rep-card,.rep-step,
.profile-card,.admin-card,.record-card{
  transition:transform .4s var(--pbr-ease),box-shadow .4s var(--pbr-ease),filter .4s var(--pbr-ease),border-color .4s var(--pbr-ease);
}
.btn:hover{transform:translateY(-3px)}
.gallery-card:hover,.credit-final-card:hover,.rep-card:hover,.rep-step:hover,
.profile-card:hover,.admin-card:hover,.record-card:hover{
  transform:translateY(-5px);
}

/* buttons get a contained light sweep */
.btn{position:relative;overflow:hidden;isolation:isolate}
.btn::after{
  content:"";position:absolute;inset:-40% auto -40% -80%;width:45%;
  transform:skewX(-18deg);background:rgba(255,255,255,.28);
  transition:left .65s var(--pbr-ease);pointer-events:none;z-index:-1;
}
.btn:hover::after{left:145%}

/* navigation underline motion */
header nav a,.gallery-topbar nav a,.profile-topbar nav a{
  position:relative;transition:color .3s var(--pbr-ease),background .3s var(--pbr-ease),transform .3s var(--pbr-ease)
}
header nav a::after,.gallery-topbar nav a::after,.profile-topbar nav a::after{
  content:"";position:absolute;left:10px;right:10px;bottom:3px;height:2px;border-radius:2px;
  background:currentColor;transform:scaleX(0);transform-origin:center;
  transition:transform .35s var(--pbr-ease);opacity:.65
}
header nav a:hover::after,.gallery-topbar nav a:hover::after,.profile-topbar nav a:hover::after,
header nav a.active::after,.gallery-topbar nav a.active::after,.profile-topbar nav a.active::after{transform:scaleX(1)}

/* images: gentle depth without changing their boxes */
img:not(.loader-core img){transition:transform .8s var(--pbr-ease),filter .6s var(--pbr-ease)}
.gallery-card img{transition:transform 1s var(--pbr-ease),filter .7s var(--pbr-ease)}
.gallery-card:hover img{transform:scale(1.035);filter:saturate(1.05)}
a.brand img{transition:transform .5s var(--pbr-spring)}
a.brand:hover img{transform:rotate(-3deg) scale(1.06)}

/* ambient floating elements */
.ambient-orbs .orb,.gallery-ambient .ambient-layer,.cursor-glow{
  will-change:transform
}
.ambient-orbs .orb:nth-child(1){animation:pbrFloatA 10s ease-in-out infinite}
.ambient-orbs .orb:nth-child(2){animation:pbrFloatB 13s ease-in-out infinite}
.ambient-orbs .orb:nth-child(3){animation:pbrFloatC 16s ease-in-out infinite}
@keyframes pbrFloatA{0%,100%{transform:translate3d(0,0,0)}50%{transform:translate3d(18px,-22px,0)}}
@keyframes pbrFloatB{0%,100%{transform:translate3d(0,0,0)}50%{transform:translate3d(-22px,16px,0)}}
@keyframes pbrFloatC{0%,100%{transform:translate3d(0,0,0)}50%{transform:translate3d(12px,22px,0)}}

/* gallery cards enter in waves; existing inline animation-delay is preserved */
.gallery-card{animation-duration:.75s;animation-timing-function:var(--pbr-ease);animation-fill-mode:both}
.gallery-card:hover{z-index:2}

/* form focus transition */
input,textarea,select,button{transition:border-color .3s var(--pbr-ease),box-shadow .3s var(--pbr-ease),transform .25s var(--pbr-ease)}
input:focus,textarea:focus,select:focus{transform:translateY(-1px)}

/* ripple */
.pbr-ripple{
  position:absolute;border-radius:50%;pointer-events:none;transform:scale(0);
  background:rgba(255,255,255,.42);animation:pbrRipple .65s ease-out forwards;
}
@keyframes pbrRipple{to{transform:scale(4);opacity:0}}

/* accessibility */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}
  [data-pbr-reveal]{opacity:1!important;transform:none!important}
  .pbr-page-transition{display:none}
}
