/* ===== SwarSampada shared interactivity layer ===== */
body{ overflow-x:hidden; }


/* Custom cursor (fine-pointer, motion-ok only) */
@media (hover:hover) and (pointer:fine){
  html.cursor-on, html.cursor-on * { cursor: none !important; }
  .cursor-dot, .cursor-ring{
    position:fixed; top:0; left:0; z-index:9999; pointer-events:none;
    border-radius:50%; mix-blend-mode:difference; will-change:transform; opacity:0;
  }
  .cursor-dot{ width:20px; height:24px; background:none; border-radius:0; }
  .cursor-dot svg{ display:block; width:100%; height:100%; }
  .cursor-ring{
    width:40px; height:40px; border:1.5px solid #fff;
    transition:width .28s ease, height .28s ease, background-color .28s ease, opacity .28s ease;
  }
  .cursor-ring.grow{ width:66px; height:66px; background:rgba(255,255,255,.10); }
  .cursor-ring.press{ width:30px; height:30px; }
}

/* Card lift + image zoom on hover
   The hover state is read off .gi-hover (a wrapper site.js adds around every
   .gi), never off .gi itself. .gi is the thing that visually lifts; if it
   also owned its own :hover, lifting it away from the pointer at the bottom
   edge would drop the hover state, snap back down, regain hover, and repeat
   forever. The wrapper's own box never moves, so its hover state can't glitch. */
.gi{ transition: box-shadow .5s ease, transform .5s cubic-bezier(.22,1,.36,1); }
@media (hover:hover){
  .gi-hover:hover .gi{ transform: translateY(-7px) !important; }
  .gi > img, .gi img{ transition: transform .7s cubic-bezier(.22,1,.36,1); }
  .gi-hover:hover .gi img{ transform: scale(1.06); }
}

/* Animated underline on nav links (not pill buttons) */
#nav nav a[href]:not([class*="rounded-full"]){ position:relative; }
#nav nav a[href]:not([class*="rounded-full"])::after{
  content:''; position:absolute; left:0; bottom:-5px; height:1.5px; width:0;
  background:currentColor; opacity:.65; transition:width .32s cubic-bezier(.22,1,.36,1);
}
#nav nav a[href]:not([class*="rounded-full"]):hover::after{ width:100%; }

/* Pill buttons: gentle rise + shadow */
a[class*="rounded-full"], button[class*="rounded-full"]{
  transition: transform .3s ease, background-color .3s ease, border-color .3s ease, color .3s ease, box-shadow .3s ease;
}
@media (hover:hover){
  a[class*="rounded-full"]:hover{ transform: translateY(-2px); box-shadow: 0 14px 30px -14px rgba(0,0,0,.45); }
}

/* Reduced motion: strip the movement, keep the site usable */
@media (prefers-reduced-motion: reduce){
  .gi-hover:hover .gi{ transform:none !important; }
  .gi-hover:hover .gi img{ transform:none; }
  a[class*="rounded-full"]:hover{ transform:none; }
}

/* Video galleries shared by Academy and Events. The iframe loads only on play. */
.video-gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:1rem;}
.video-gallery--performances{grid-template-columns:repeat(auto-fit,minmax(min(100%,310px),1fr));}
.vidcard{position:relative;display:block;width:100%;overflow:hidden;border-radius:.75rem;text-align:left;background:#241A10;color:#fff;isolation:isolate;}
.vidcard img{display:block;width:100%;aspect-ratio:16/9;object-fit:cover;}
.vidcard::after{content:"";position:absolute;inset:35% 0 0;background:linear-gradient(transparent,rgba(0,0,0,.82));pointer-events:none;}
.vidcard__play{position:absolute;inset:0;z-index:1;display:grid;place-items:center;pointer-events:none;}
.vidcard__play svg{width:3.25rem;height:3.25rem;filter:drop-shadow(0 3px 12px rgba(0,0,0,.5));transition:transform .3s ease;}
.vidcard__title{position:absolute;z-index:2;right:.8rem;bottom:.8rem;left:.8rem;display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;font:600 .875rem/1.35 Poppins,sans-serif;text-shadow:0 1px 8px rgba(0,0,0,.8);pointer-events:none;}
.vidcard:focus-visible{outline:3px solid #D2A945;outline-offset:3px;}
@media (hover:hover){.vidcard:hover .vidcard__play svg{transform:scale(1.1);}}
@media (prefers-reduced-motion:reduce){.vidcard__play svg{transition:none;}.vidcard:hover .vidcard__play svg{transform:none;}}

.video-dialog{width:min(94vw,1100px,calc(177.78dvh - 9.34rem));max-width:none;max-height:calc(100dvh - 2rem);padding:0;overflow:visible;border:0;background:transparent;color:#fff;}
.video-dialog::backdrop{background:rgba(0,0,0,.88);backdrop-filter:blur(6px);}
.video-dialog__frame{width:100%;aspect-ratio:16/9;overflow:hidden;border-radius:.75rem;background:#000;box-shadow:0 30px 80px rgba(0,0,0,.6);}
.video-dialog__frame iframe{display:block;width:100%;height:100%;border:0;}
.video-dialog__close{display:grid;place-items:center;width:2.75rem;height:2.75rem;margin:0 0 .5rem auto;border:1px solid rgba(255,255,255,.35);border-radius:50%;background:rgba(30,25,20,.9);color:#fff;}
.video-dialog__close:focus-visible{outline:3px solid #D2A945;outline-offset:2px;}
.video-dialog.is-short{width:min(88vw,390px,calc(56.25dvh - 3rem));}
.video-dialog.is-short .video-dialog__frame{aspect-ratio:9/16;max-height:calc(100dvh - 4rem);}
