/* ============================================================
   SHRAN VISUAL FX - additive layer
   Container glow, Vault Press, guide-to-button border ring,
   keyboard-focus glow, dust, and mobile touch light.
   ============================================================ */
:root{ --shran-orange:#ff7a1a; --shran-gold:#d6a13a; }

/* ---- container hover/hold glow ---- */
.shran-pg{
  position:absolute; inset:-1px; z-index:0; border-radius:inherit; pointer-events:none;
  opacity:0; transition:opacity .45s cubic-bezier(.22,1,.36,1);
  background:radial-gradient(170px 170px at var(--shran-gx,50%) var(--shran-gy,50%),
            var(--shran-gcol,rgba(255,122,26,.5)), transparent 66%);
  mix-blend-mode:screen;
}
.shran-pg::after{
  content:""; position:absolute; inset:0; border-radius:inherit; opacity:0; mix-blend-mode:screen;
  background:linear-gradient(115deg,transparent 0 40%,rgba(255,228,194,.13) 50%,transparent 60% 100%);
  background-size:250% 100%; background-position:120% 0;
}
.shran-lit > .shran-pg{ opacity:1; }
.shran-lit > .shran-pg::after{ opacity:1; animation:shran-sheen 1s cubic-bezier(.22,1,.36,1); }
@keyframes shran-sheen{ from{background-position:120% 0} to{background-position:-55% 0} }
.shran-lit{
  border-color:var(--shran-gborder,#ff7a1a9e) !important;
  box-shadow:0 0 28px var(--shran-gsoft,rgba(255,122,26,.34)), 0 0 0 1px var(--shran-gsoft,rgba(255,122,26,.3)) !important;
  transition:border-color .4s cubic-bezier(.22,1,.36,1), box-shadow .45s cubic-bezier(.22,1,.36,1) !important;
}

/* V0.07 owns these glows. Suppress the older global pseudo-glows so the
   hover state reads as one controlled light source instead of stacked halos. */
.project-card::before,
.service-card::before,
.case-file-card::before,
.case-file-card::after,
.receipt-card::before,
.case-study-panel::before{
  opacity:0 !important;
  animation:none !important;
}
.button::before,
.button::after,
.project-card-cta::before,
.project-card-cta::after,
.press-link-button::before,
.press-link-button::after{
  opacity:0 !important;
  animation:none !important;
}

/* When the cursor enters card/column surfaces, V0.07's card glow is the
   visible pointer feedback. Hide the older cursor card-mode halo so users do
   not see two orange blobs chasing the same hover. */
.signal-cursor.is-card::before,
.signal-cursor.is-card .signal-cursor-glow,
.signal-cursor.is-card .signal-cursor-reticle{
  opacity:0 !important;
  border-color:transparent !important;
  background:transparent !important;
  box-shadow:none !important;
}

/* Keep approved press-card hover movement/depth, but remove the older
   background radial that fights the V0.07 cursor-following light. */
.press-card:hover,
.press-card:focus-within{
  background:
    linear-gradient(180deg, rgba(244,239,231,.07), rgba(255,122,26,.028)),
    rgba(11,15,26,.68) !important;
}

/* Work archive rows intentionally keep their original two-sided ambient sweep.
   This is scoped to the row pseudo layer and does not affect case-file cards. */
.archive-row::before{
  background:
    radial-gradient(circle at var(--press-x, 86%) var(--press-y, 50%), rgba(255,122,26,.2), transparent 38%),
    linear-gradient(90deg, rgba(255,122,26,.09), transparent 58%) !important;
}

.project-card, .case-file-card, .service-card, .press-card, .receipt-card,
.selected-frame, .visual-tile, .contact-panel, .case-study-panel, .archive-bubble{
  isolation:isolate;
}
.project-card > :not(.shran-pg), .case-file-card > :not(.shran-pg),
.service-card > :not(.shran-pg), .press-card > :not(.shran-pg),
.receipt-card > :not(.shran-pg), .contact-panel > :not(.shran-pg),
.case-study-panel > :not(.shran-pg), .archive-bubble > :not(.shran-pg){
  position:relative; z-index:1;
}
.project-card .project-card-body, .project-card .project-media{ position:relative; z-index:1; }
.project-card, .case-file-card, .service-card, .press-card, .receipt-card,
.selected-frame, .visual-tile, .case-study-panel{
  transition:transform .25s cubic-bezier(.22,1,.36,1), border-color .4s, box-shadow .45s;
  transform-style:preserve-3d;
}
.shran-bodypress{ transform:scale(.99); }

/* ---- text caret + selection theming ---- */
::selection{ background:rgba(255,122,26,.34); color:#fff; }
::-moz-selection{ background:rgba(255,122,26,.34); color:#fff; }
input, textarea, [contenteditable]{ caret-color:var(--shran-orange); }

input.shran-focus, textarea.shran-focus, [contenteditable].shran-focus{
  border-color:var(--shran-gfocus,#ff7a1a9e) !important;
  box-shadow:0 0 0 1px var(--shran-gfocus-s,rgba(255,122,26,.3)),
             0 0 22px var(--shran-gfocus-s,rgba(255,122,26,.24)) !important;
  transition:border-color .35s cubic-bezier(.22,1,.36,1), box-shadow .4s cubic-bezier(.22,1,.36,1);
}

/* ---- Vault Press: buttons, CTAs, self-link cards ---- */
.button, .project-card-cta, .press-link-button, .social-icon-link,
.archive-bubble-button, .case-file-card .text-link, .press-card .text-link,
a.selected-frame, a.visual-tile{
  position:relative;
  overflow:visible !important;
  isolation:isolate;
  transition:transform .15s cubic-bezier(.2,.7,.3,1), border-color .3s, box-shadow .3s, background .3s, color .3s;
}
.button:hover, .button:focus-visible,
.project-card-cta:hover, .project-card-cta:focus-visible,
.press-link-button:hover, .press-link-button:focus-visible,
.social-icon-link:hover, .social-icon-link:focus-visible,
.archive-bubble-button:hover, .archive-bubble-button:focus-visible,
.case-file-card .text-link:hover, .case-file-card .text-link:focus-visible,
.press-card .text-link:hover, .press-card .text-link:focus-visible,
a.selected-frame:hover, a.selected-frame:focus-visible,
a.visual-tile:hover, a.visual-tile:focus-visible{
  transform:translateY(-2px);
  border-color:rgba(255,122,26,.8) !important;
  box-shadow:0 10px 30px rgba(255,122,26,.18) !important;
}
.shran-ink{
  position:absolute; inset:0; z-index:0; border-radius:inherit; pointer-events:none; opacity:0;
  mix-blend-mode:screen; transition:opacity .5s cubic-bezier(.22,1,.36,1);
  background:radial-gradient(circle at var(--shran-ax,50%) var(--shran-ay,50%),
            rgba(255,170,90,.7), rgba(255,122,26,.2) 35%, transparent 60%);
}
.shran-charged{
  transform:translateY(0) scale(.97) !important;
  border-color:rgba(255,122,26,.82) !important;
  box-shadow:0 0 0 1px rgba(214,161,58,.6), inset 0 2px 12px rgba(0,0,0,.4) !important;
}
.shran-charged > .shran-ink{ opacity:.92; transition:opacity .05s; }
.button > :not(.shran-ink), .project-card-cta > :not(.shran-ink),
.press-link-button > :not(.shran-ink), .social-icon-link > :not(.shran-ink),
.archive-bubble-button > :not(.shran-ink), .case-file-card .text-link > :not(.shran-ink),
.press-card .text-link > :not(.shran-ink){ position:relative; z-index:1; }
.button > .shran-guide-ring,
.project-card-cta > .shran-guide-ring,
.press-link-button > .shran-guide-ring,
.social-icon-link > .shran-guide-ring,
.archive-bubble-button > .shran-guide-ring,
.case-file-card .text-link > .shran-guide-ring,
.press-card .text-link > .shran-guide-ring{
  position:absolute;
  z-index:3;
}
.social-icon-link.shran-charged{ transform:translateY(0) scale(.95) !important; }
.social-icon-link.shran-charged > .shran-ink{ opacity:.55; }

/* ---- guide-to-button on-border ring ---- */
.shran-guide-ring{
  position:absolute;
  pointer-events:none;
  overflow:visible;
  z-index:3;
  opacity:0;
  transition:opacity .45s cubic-bezier(.22,1,.36,1);
}
.shran-guide-base,
.shran-guide-glow{
  fill:none;
  stroke-linecap:round;
}

/* ---- background light-catch dust + mobile touch light ---- */
#shran-dust{ position:fixed; top:0; left:0; z-index:0; pointer-events:none; }
#shran-touch{ position:fixed; top:0; left:0; z-index:9997; pointer-events:none; }

html.shran-perf-lite #shran-dust{ display:none; }
html.shran-perf-lite .shran-pg::after{ display:none; }

@media (prefers-reduced-motion: reduce){
  #shran-dust, #shran-touch{ display:none !important; }
  .shran-pg, .shran-lit > .shran-pg::after{ animation:none !important; }
  .project-card, .case-file-card, .service-card, .press-card, .receipt-card,
  .selected-frame, .visual-tile, .contact-panel, .case-study-panel, .archive-bubble{
    transform:none !important;
  }
  .shran-charged{ transform:none !important; }
  .button:hover, .button:focus-visible,
  .project-card-cta:hover, .project-card-cta:focus-visible,
  .press-link-button:hover, .press-link-button:focus-visible,
  .social-icon-link:hover, .social-icon-link:focus-visible,
  .archive-bubble-button:hover, .archive-bubble-button:focus-visible,
  a.selected-frame:hover, a.selected-frame:focus-visible,
  a.visual-tile:hover, a.visual-tile:focus-visible{
    transform:none !important;
  }
}
