/* A light field and signal pulses follow the site's network visual language. */
.signal-layer{position:fixed;inset:0;z-index:50;pointer-events:none!important;overflow:hidden;contain:strict;--signal-rgb:197,237,97}
.signal-layer *{pointer-events:none!important}
.signal-light,.signal-cursor{position:absolute;top:0;left:0;opacity:0;will-change:transform;transition:opacity .22s ease}
.signal-light{width:260px;height:260px;background:radial-gradient(circle,rgba(var(--signal-rgb),.115),rgba(var(--signal-rgb),.04) 37%,transparent 70%);border-radius:50%}
.signal-cursor{width:36px;height:36px;display:grid;place-items:center}
.signal-cursor::before{content:'';width:28px;height:28px;border:1px solid rgba(var(--signal-rgb),.55);border-radius:50%;box-shadow:0 0 15px rgba(var(--signal-rgb),.12);transition:width .22s,height .22s,border-color .22s,background .22s}
.signal-layer[data-tone="light"]{--signal-rgb:67,101,24}
.signal-layer[data-active="true"] .signal-light,.signal-layer[data-active="true"] .signal-cursor{opacity:1}
.signal-layer[data-link="true"] .signal-cursor::before{width:46px;height:46px;border-color:rgba(var(--signal-rgb),.8);background:rgba(var(--signal-rgb),.045)}
.signal-burst{position:absolute;top:0;left:0;width:0;height:0;--burst-rgb:197,237,97;animation:signal-retire .72s linear both}
.signal-burst[data-tone="light"]{--burst-rgb:67,101,24}
.signal-burst::before,.signal-burst::after{content:'';position:absolute;left:-15px;top:-15px;width:30px;height:30px;border:1px solid rgba(var(--burst-rgb),.8);border-radius:50%;animation:signal-ring .68s cubic-bezier(.12,.5,.3,1) both}
.signal-burst::after{left:-8px;top:-8px;width:16px;height:16px;animation-duration:.48s;border-color:rgba(var(--burst-rgb),.45)}
.signal-packet{position:absolute;left:-2px;top:-1px;width:4px;height:2px;border-radius:1px;background:rgb(var(--burst-rgb));box-shadow:0 0 6px rgba(var(--burst-rgb),.4);animation:signal-packet .6s cubic-bezier(.1,.55,.25,1) both}
@keyframes signal-ring{from{transform:scale(.5);opacity:.8}to{transform:scale(3.3);opacity:0}}
@keyframes signal-packet{from{transform:translate(0,0) rotate(var(--angle));opacity:.85}to{transform:translate(var(--dx),var(--dy)) rotate(var(--angle));opacity:0}}
@keyframes signal-retire{from{visibility:visible}to{visibility:visible}}
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
  .button{position:relative;isolation:isolate;overflow:hidden}
  .button::before{content:'';position:absolute;inset:-50% auto -50% -60%;width:40%;background:linear-gradient(90deg,transparent,#ffffff30,transparent);transform:skewX(-22deg) translateX(0);transition:transform .75s cubic-bezier(.18,.65,.3,1);pointer-events:none}
  .button:hover::before{transform:skewX(-22deg) translateX(500%)}
  .button>span,.nav-contact>span{transition:transform .25s ease}
  .button:hover>span,.nav-contact:hover>span{transform:translate(3px,-3px)}
  .desktop-nav a{position:relative}
  .desktop-nav a::after{content:'';position:absolute;inset:auto 0 -7px;height:1px;background:var(--lime);transform:scaleX(0);transform-origin:left;transition:transform .25s ease}
  .desktop-nav a:hover::after{transform:scaleX(1)}
}
@media(hover:none),(pointer:coarse){.signal-cursor,.signal-light{display:none}.signal-burst{scale:.75}}
@media(prefers-reduced-motion:reduce){.signal-layer{display:none}}
