/* Shared effects layer. Loaded after each page's own styles. */
.fx-canvas{position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none}
.page-shell,.thankyou-shell,.login-shell,.admin-shell,.fx-main{position:relative;z-index:1}
body::before{content:"";position:fixed;inset:0;z-index:0;pointer-events:none;background:radial-gradient(520px circle at var(--mx,50%) var(--my,25%),rgba(154,162,242,.13),transparent 60%)}
body{animation:fxEnter .6s ease both}
body.fx-leave{opacity:0;transition:opacity .22s ease}
@keyframes fxEnter{from{opacity:0}to{opacity:1}}

.fx-progress{position:fixed;top:0;left:0;width:100%;height:3px;z-index:100;transform:scaleX(0);transform-origin:left;background:linear-gradient(90deg,#4fa8d8,#9aa2f2,#c9ceff)}

.fx-nav{position:fixed;top:14px;left:50%;z-index:90;display:flex;gap:4px;padding:5px;border-radius:99px;background:rgba(33,40,70,.72);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.12);box-shadow:0 14px 34px -12px rgba(0,0,0,.7);animation:fxDrop .7s .3s cubic-bezier(.2,.7,.2,1) both}
.fx-nav a{padding:8px 16px;border-radius:99px;color:#c5cbe6;font:500 14px "Instrument Sans",system-ui,sans-serif;text-decoration:none;white-space:nowrap;transition:background .25s,color .25s}
.fx-nav a:hover,.fx-nav a[aria-current]{background:#9aa2f2;color:#181c2d}
@keyframes fxDrop{from{opacity:0;transform:translate(-50%,-24px)}to{opacity:1;transform:translate(-50%,0)}}

.enquiry-body .page-shell{padding-top:clamp(76px,10vw,100px)}
@media (min-width:960px){.enquiry-body .hero{top:88px}}

.fx-glow{position:relative}
.fx-glow::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:2;opacity:0;transition:opacity .3s;background:radial-gradient(420px circle at var(--gx,50%) var(--gy,50%),rgba(154,162,242,.14),transparent 45%)}
.fx-glow:hover::before{opacity:1}
[data-tilt],.thankyou-card,.enquiry-body .hero{transition:transform .18s ease-out;will-change:transform}

.primary-button,.save-button,.secondary-button,.fx-btn{position:relative;overflow:hidden}
.fx-ripple{position:absolute;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;background:rgba(255,255,255,.55);pointer-events:none;animation:fxRipple .6s ease-out forwards}
@keyframes fxRipple{to{transform:scale(28);opacity:0}}

[data-reveal]{opacity:0;transform:translateY(26px);transition:opacity .8s ease,transform .8s cubic-bezier(.2,.7,.2,1);transition-delay:calc(var(--d,0)*90ms)}
[data-reveal].in{opacity:1;transform:none}

.fx-word{display:inline-block;white-space:nowrap}
.fx-char{display:inline-block;opacity:0;transform:translateY(.6em) rotate(6deg);animation:fxChar .7s cubic-bezier(.2,.7,.2,1) forwards;animation-delay:calc(var(--i)*38ms + 250ms)}
@keyframes fxChar{to{opacity:1;transform:none}}

@media (prefers-reduced-motion:reduce){
  body,.fx-nav,.fx-char{animation:none!important}
  .fx-canvas,body::before{display:none}
  [data-reveal]{opacity:1;transform:none;transition:none}
  .fx-char{opacity:1;transform:none}
}
@media (max-width:560px){.fx-nav a{padding:8px 11px;font-size:13px}}
