
:root{--fx-dark:#0b1112;--fx-cyan:#72d5d5;--fx-tile:102px 54px}
.fx-bg{position:fixed;inset:0;z-index:-1;pointer-events:none;overflow:hidden;
  background:url(/fx/grain.svg?v=9541c75fee7d) 0 0/220px 220px,
    radial-gradient(125% 110% at 70% 22%,transparent 50%,rgba(4,8,9,.26) 74%,rgba(4,8,9,.58) 100%),
    radial-gradient(90% 60% at 50% 118%,rgba(0,0,0,.5),transparent 70%),
    radial-gradient(38% 36% at 84% 12%,rgba(114,213,213,.06) 0%,rgba(114,213,213,.03) 36%,rgba(114,213,213,.01) 70%,transparent 100%),
    radial-gradient(80% 75% at 84% 12%,rgba(13,176,214,.045) 0%,rgba(13,176,214,.018) 48%,transparent 100%)}
.fx-bg::before{content:'';position:absolute;inset:0;background:url(/fx/lattice.svg?v=30621fa38b4b) 0 0/var(--fx-tile) repeat;
  -webkit-mask-image:radial-gradient(80% 75% at 84% 12%,#000 0%,rgba(0,0,0,.5) 48%,rgba(0,0,0,.16) 100%);
  mask-image:radial-gradient(80% 75% at 84% 12%,#000 0%,rgba(0,0,0,.5) 48%,rgba(0,0,0,.16) 100%)}
html.fx-gpu-bg .fx-bg::before{visibility:hidden}
#fx-canvas{position:fixed;inset:0;width:100%;height:100%;z-index:-1;display:block;pointer-events:none;visibility:hidden}
html.fx-gpu-bg #fx-canvas,#fx-canvas.is-top{visibility:visible}
#fx-canvas.is-top{z-index:9000}
.site-header{background:rgba(18,25,26,.74);-webkit-backdrop-filter:blur(12px) saturate(1.15);backdrop-filter:blur(12px) saturate(1.15)}
html.fx-enter::after,html.fx-leave::after{content:'';position:fixed;inset:0;z-index:9500;pointer-events:none;
  background:#12191a url(/fx/lattice.svg?v=30621fa38b4b) 0 0/var(--fx-tile) repeat}
html.fx-enter::after{animation:fx-fade-out .35s ease 1.8s forwards} 
html.fx-enter.fx-enter-out::after{animation:fx-fade-out .32s ease forwards}
html.fx-leave::after{animation:fx-fade-in .24s ease forwards}
@keyframes fx-fade-in{from{opacity:0}to{opacity:1}}
@keyframes fx-fade-out{from{opacity:1}to{opacity:0}}
.fx-splash{position:fixed;inset:0;z-index:9100;display:none;overflow:hidden;color:#f3f3ed;
  -webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;
  background:var(--fx-dark) url(/fx/lattice.svg?v=30621fa38b4b) 0 0/var(--fx-tile) repeat;
  --cube-x:50vw;--cube-y:42vh;--cube-r:150px}
html.fx-intro .fx-splash{display:block;animation:fx-splash-gone .4s ease 8s forwards} 
@keyframes fx-splash-gone{from{opacity:1;visibility:visible}to{opacity:0;visibility:hidden;pointer-events:none}}
html.fx-intro.fx-js .fx-splash{animation:none}
html.fx-gpu-splash .fx-splash{background:transparent}
.fx-splash::before{content:'';position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(circle at var(--cube-x) var(--cube-y),rgba(114,213,213,.09),transparent calc(var(--cube-r) * 2.6)),
    radial-gradient(120% 95% at 50% 45%,transparent 38%,rgba(4,8,9,.72) 100%);transition:opacity .35s ease}
.fx-splash.is-exit::before{opacity:0}
.fx-splash__ui{position:absolute;inset:0;transition:opacity .35s ease}
.fx-splash.is-exit .fx-splash__ui{opacity:0}
.fx-corner{position:absolute;margin:0;font-size:12px;letter-spacing:.32em;color:#c9d6d3;font-weight:600;display:flex;align-items:center;gap:12px} 
.fx-corner::after{content:'';width:min(28vw,380px);height:1px;background:#ffffff26}
.fx-corner--tl{left:clamp(20px,5vw,72px);top:clamp(22px,5vh,56px)}
.fx-corner--bl{left:clamp(20px,5vw,72px);bottom:clamp(22px,5vh,56px);letter-spacing:.12em;font-weight:500;color:#a2b7b3} 
.fx-dot{width:7px;height:7px;border-radius:50%;background:var(--fx-cyan);box-shadow:0 0 12px var(--fx-cyan)}
.fx-wordmark{position:absolute;left:0;right:0;margin:0;text-align:center;font-weight:800;line-height:1;
  top:calc(var(--cube-y) + var(--cube-r) * .79 + clamp(22px,4vh,40px));
  font-size:clamp(40px,7.4vw,96px);letter-spacing:-.015em;color:#f3f3ed;opacity:0;clip-path:inset(0 50% 0 50%)}
.fx-tagline{position:absolute;left:0;right:0;margin:0;text-align:center;font-size:clamp(12px,1vw,13px);font-weight:650;
  letter-spacing:.48em;padding-left:.48em;color:var(--fx-cyan);opacity:0;
  top:calc(var(--cube-y) + var(--cube-r) * .79 + clamp(22px,4vh,40px) + clamp(40px,7.4vw,96px) + 22px)}
.fx-splash.is-hit .fx-wordmark{animation:fx-wordmark .55s cubic-bezier(.2,.8,.2,1) forwards}
.fx-splash.is-hit .fx-tagline{animation:fx-tag .5s ease .22s forwards}
@keyframes fx-wordmark{0%{opacity:1;clip-path:inset(0 50% 0 50%);filter:blur(8px);letter-spacing:.14em}
  100%{opacity:1;clip-path:inset(0 0 0 0);filter:blur(0);letter-spacing:-.015em}}
@keyframes fx-tag{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.fx-cube{position:absolute;left:var(--cube-x);top:var(--cube-y);width:calc(var(--cube-r) * 2);max-width:none;
  transform:translate(-50%,-50%) scale(.4);opacity:0}
html.fx-gpu-splash .fx-cube{display:none}
.fx-splash.is-sting .fx-cube{animation:fx-cube .7s cubic-bezier(.2,.9,.25,1.25) .45s forwards}
@keyframes fx-cube{0%{opacity:0;transform:translate(-50%,-50%) scale(.4);filter:brightness(2.2)}
  60%{opacity:1;filter:brightness(1.6)}100%{opacity:1;transform:translate(-50%,-50%) scale(1);filter:none}}
html:not(.fx-gpu-splash) .fx-splash.is-exit{transition:opacity .5s ease;opacity:0}
.site-header nav a:not(.nav-contact){position:relative}
.site-header nav a:not(.nav-contact)::before,.site-header nav a:not(.nav-contact)::after{content:'';position:absolute;width:7px;height:7px;
  border:1px solid var(--fx-cyan);opacity:0;transition:opacity .14s ease,transform .2s cubic-bezier(.2,.8,.2,1);pointer-events:none}
.site-header nav a:not(.nav-contact)::before{left:-11px;top:9px;border-right:0;border-bottom:0;transform:translate(-5px,-5px)}
.site-header nav a:not(.nav-contact)::after{right:-11px;bottom:9px;border-left:0;border-top:0;transform:translate(5px,5px)}
.site-header nav a:not(.nav-contact):is(:hover,:focus-visible,[aria-current=page])::before,
.site-header nav a:not(.nav-contact):is(:hover,:focus-visible,[aria-current=page])::after{opacity:1;transform:none}
.site-header nav a[aria-current=page]:not(:hover)::before,.site-header nav a[aria-current=page]:not(:hover)::after{opacity:.55}
.button{position:relative;overflow:hidden;isolation:isolate}
.button::after{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:linear-gradient(105deg,transparent 35%,rgba(255,255,255,.42) 50%,transparent 65%);transform:translateX(-110%)}
.button:hover::after{transform:translateX(110%);transition:transform .6s cubic-bezier(.2,.7,.2,1)}
html.fx-pad :focus{outline:3px solid var(--fx-cyan);outline-offset:4px}
.fx-toast{position:fixed;left:50%;bottom:28px;z-index:9200;transform:translate(-50%,20px);opacity:0;pointer-events:none;
  padding:12px 18px;border:1px solid #72d5d566;background:rgba(11,17,18,.92);color:#d9e6e3;font-size:13px;letter-spacing:.08em;
  transition:opacity .25s ease,transform .3s cubic-bezier(.2,.8,.2,1)}
.fx-toast.is-on{opacity:1;transform:translate(-50%,0)}
.fx-toast b{color:var(--fx-cyan);font-weight:700;margin-right:10px}
@media(max-width:700px){
  .fx-corner::after{width:18vw}
  .fx-corner--tl{letter-spacing:.24em}
  .fx-tagline{letter-spacing:.16em;padding-left:.16em}
}
@media(prefers-reduced-motion:reduce){
  .fx-splash{display:none!important}
  #fx-canvas{display:none!important}
}
