/* ===================================================================
   Nisseem India — visual polish layer (ADDITIVE ONLY).
   Adds professional micro-interactions & effects.
   Does NOT alter the hero background, the infinity logo, logo style,
   layout or any content — only layers effects on top.
   =================================================================== */

/* honour the brand palette already defined on :root in index.html */

/* smoother, more intentional transitions across interactive elements */
@media (prefers-reduced-motion: no-preference) {
  nav .links a, .card, .kpi, .specbox, .fcard, .metric, .chip, .chip-stage,
  .fs, .btn, .tgl, .footer li a, footer li a {
    transition: transform .4s cubic-bezier(.2,.7,.2,1), box-shadow .4s cubic-bezier(.2,.7,.2,1),
                border-color .4s, color .28s, text-shadow .28s, background .3s;
  }
}

/* ---- fine film-grain overlay: the biggest "hand-built vs demo" tell ---- */
#nzGrain {
  position: fixed; inset: 0; z-index: 2; pointer-events: none;
  opacity: .04; mix-blend-mode: overlay;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  background-size: 140px 140px;
}

/* ---- ambient cursor glow that follows the pointer ---- */
#curGlow {
  position: fixed; top: 0; left: 0; width: 460px; height: 460px; border-radius: 50%;
  pointer-events: none; z-index: 3; transform: translate3d(-50%, -50%, 0);
  opacity: 0; transition: opacity .45s ease; will-change: transform;
  background: radial-gradient(circle, rgba(111,227,136,.10), rgba(244,123,32,.055) 42%, transparent 64%);
  mix-blend-mode: screen; filter: blur(4px);
}
body.cursor-on #curGlow { opacity: 1; }

/* ---- top scroll-progress line ---- */
#scrollBar {
  position: fixed; top: 0; left: 0; height: 2px; width: 0; z-index: 55;
  background: linear-gradient(90deg, var(--green-600, #2E6B34), var(--neon, #6FE388), var(--orange, #F47B20));
  box-shadow: 0 0 12px rgba(111,227,136,.55); transition: width .12s ease-out;
}

/* touch devices: no pointer-driven glows */
@media (hover: none), (pointer: coarse) { #curGlow, #nzGrain { display: none; } }

/* ---- navigation: spotlight + per-link glow ---- */
nav { position: fixed; }                    /* already fixed; ensures a positioning context */
#navGlow {
  position: absolute; top: 0; bottom: 0; width: 220px; left: 0; z-index: 0;
  pointer-events: none; opacity: 0; transition: opacity .35s ease;
  transform: translateX(-50%);
  background: radial-gradient(closest-side, rgba(111,227,136,.16), transparent 72%);
}
nav.nav-hot #navGlow { opacity: 1; }
nav .links, nav .logo, nav .burger { position: relative; z-index: 1; }
nav .links a { position: relative; }
nav .links a:not(.btn)::after {
  content: ""; position: absolute; left: 50%; right: 50%; bottom: -3px; height: 2px; border-radius: 2px;
  background: linear-gradient(90deg, var(--neon, #6FE388), var(--orange, #F47B20));
  box-shadow: 0 0 10px rgba(111,227,136,.6); transition: left .3s cubic-bezier(.2,.7,.2,1), right .3s cubic-bezier(.2,.7,.2,1);
}
nav .links a:not(.btn):hover { color: #fff; text-shadow: 0 0 16px rgba(111,227,136,.5); }
nav .links a:not(.btn):hover::after { left: 6px; right: 6px; }
nav .links a.nav-on:not(.btn)::after { left: 0; right: 0; }   /* keep active-state underline visible */

/* ---- cards / boxes: cursor-tracked spotlight (glow sits above bg, below text) ---- */
.card, .specbox, .fcard, .kpi, .metric, .chip-stage {
  position: relative; isolation: isolate;
}
.card::after, .specbox::after, .fcard::after, .kpi::after, .metric::after, .chip-stage::after {
  content: ""; position: absolute; inset: 0; border-radius: inherit; z-index: -1;
  pointer-events: none; opacity: 0; transition: opacity .4s ease;
  background: radial-gradient(340px circle at var(--mx, 50%) var(--my, 50%), rgba(111,227,136,.16), transparent 46%);
}
.card:hover::after, .specbox:hover::after, .fcard:hover::after,
.kpi:hover::after, .metric:hover::after, .chip-stage:hover::after { opacity: 1; }

/* subtle gradient border reveal on the larger cards */
.card::before, .fcard::before {
  content: ""; position: absolute; inset: 0; border-radius: inherit; padding: 1px; z-index: -1;
  pointer-events: none; opacity: 0; transition: opacity .4s ease;
  background: linear-gradient(135deg, rgba(111,227,136,.55), transparent 38%, transparent 62%, rgba(244,123,32,.5));
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor; mask-composite: exclude;
}
.card:hover::before, .fcard:hover::before { opacity: 1; }

/* ---- primary buttons: light sheen sweep on hover ---- */
.btn-o, .btn-g { position: relative; overflow: hidden; }
.btn-o::after, .btn-g::after {
  content: ""; position: absolute; top: 0; left: -140%; width: 55%; height: 100%; pointer-events: none;
  background: linear-gradient(100deg, transparent, rgba(255,255,255,.38), transparent);
  transform: skewX(-20deg); transition: left .6s ease;
}
.btn-o:hover::after, .btn-g:hover::after { left: 155%; }

/* ---- brand gradient text: gentle shimmer ---- */
@media (prefers-reduced-motion: no-preference) {
  .grad { background-size: 220% 100%; animation: nisGrad 10s ease-in-out infinite; }
  @keyframes nisGrad { 0%,100% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } }
}

/* ---- scroll reveal (class added by JS; safe if JS never runs) ---- */
.nis-rise { opacity: 0; transform: translateY(26px); will-change: opacity, transform;
  transition: opacity .75s cubic-bezier(.2,.7,.2,1), transform .75s cubic-bezier(.2,.7,.2,1); }
.nis-rise.nis-in { opacity: 1; transform: none; }

/* ---- crisp keyboard focus (accessibility polish) ---- */
a:focus-visible, button:focus-visible, select:focus-visible, input:focus-visible {
  outline: 2px solid var(--neon, #6FE388); outline-offset: 3px; border-radius: 8px;
}

@media (prefers-reduced-motion: reduce) {
  #curGlow, #nzGrain { display: none; }
  .nis-rise { opacity: 1; transform: none; }
}
