/* GMH premium preloader */
html.pl-lock,html.pl-lock body{overflow:hidden!important;height:100%}
#gmh-preloader{--pl-size:min(300px,76vw);--pl-mint:#4ecfa2;--pl-mint-2:#7ce0bd;--pl-blue:#2a8dda;position:fixed;inset:0;z-index:2147483000;display:flex;align-items:center;justify-content:center;overflow:hidden;color:#fff;font-family:"Cabinet Grotesk Variable","Cabinet Grotesk",system-ui,-apple-system,"Segoe UI",sans-serif;-webkit-font-smoothing:antialiased;pointer-events:all}
#gmh-preloader *{box-sizing:border-box}

/* curtain halves (continuous gradient across both) */
#gmh-preloader .pl-panel{position:absolute;left:0;width:100%;height:50.2%;background:linear-gradient(180deg,#010f1b 0%,#022b4c 46%,#024275 100%);background-size:100% 199.6%;transition:transform .85s cubic-bezier(.77,0,.18,1);will-change:transform}
#gmh-preloader .pl-top{top:0;background-position:50% 0}
#gmh-preloader .pl-bottom{bottom:0;background-position:50% 100%}
#gmh-preloader.pl-open .pl-top{transform:translateY(-101%)}
#gmh-preloader.pl-open .pl-bottom{transform:translateY(101%)}

/* ambient light */
#gmh-preloader .pl-glow{position:absolute;border-radius:50%;filter:blur(30px);opacity:0;animation:plGlowIn 1.6s ease .1s forwards;will-change:transform}
#gmh-preloader .pl-glow-1{width:70vmax;height:70vmax;left:-25vmax;top:-30vmax;background:radial-gradient(circle,rgba(78,207,162,.20) 0%,rgba(78,207,162,0) 62%);animation:plGlowIn 1s ease .05s forwards,plDriftA 9s ease-in-out infinite alternate}
#gmh-preloader .pl-glow-2{width:80vmax;height:80vmax;right:-30vmax;bottom:-38vmax;background:radial-gradient(circle,rgba(42,141,218,.30) 0%,rgba(42,141,218,0) 62%);animation:plGlowIn 1s ease .15s forwards,plDriftB 11s ease-in-out infinite alternate}
#gmh-preloader .pl-vignette{position:absolute;inset:0;background:radial-gradient(ellipse at center,rgba(1,22,38,0) 40%,rgba(1,10,20,.55) 100%);pointer-events:none}
#gmh-preloader .pl-dust{position:absolute;inset:0;overflow:hidden;pointer-events:none}
#gmh-preloader .pl-dust i{position:absolute;bottom:-12px;width:3px;height:3px;border-radius:50%;background:rgba(124,224,189,.85);box-shadow:0 0 10px 2px rgba(78,207,162,.55);opacity:0;animation:plRise linear infinite}
#gmh-preloader .pl-dust i:nth-child(1){left:12%;animation-duration:7s;animation-delay:.2s}
#gmh-preloader .pl-dust i:nth-child(2){left:27%;animation-duration:9s;animation-delay:1.4s;width:2px;height:2px}
#gmh-preloader .pl-dust i:nth-child(3){left:43%;animation-duration:8s;animation-delay:.8s}
#gmh-preloader .pl-dust i:nth-child(4){left:58%;animation-duration:10s;animation-delay:2.1s;width:2px;height:2px}
#gmh-preloader .pl-dust i:nth-child(5){left:72%;animation-duration:7.5s;animation-delay:.5s}
#gmh-preloader .pl-dust i:nth-child(6){left:86%;animation-duration:9.5s;animation-delay:1.8s;width:4px;height:4px}
#gmh-preloader .pl-dust i:nth-child(7){left:35%;animation-duration:11s;animation-delay:3s;width:2px;height:2px}
#gmh-preloader .pl-dust i:nth-child(8){left:92%;animation-duration:8.5s;animation-delay:2.6s;width:2px;height:2px}

/* centre split line used during exit */
#gmh-preloader .pl-line{position:absolute;left:0;top:50%;width:100%;height:2px;margin-top:-1px;background:linear-gradient(90deg,transparent 0%,var(--pl-mint) 50%,transparent 100%);box-shadow:0 0 24px 4px rgba(78,207,162,.55);transform:scaleX(0);opacity:0;z-index:3}
#gmh-preloader.pl-exit .pl-line{animation:plLine .95s cubic-bezier(.77,0,.18,1) .1s forwards}

/* stage */
#gmh-preloader .pl-stage{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;transition:opacity .45s ease,transform .55s cubic-bezier(.4,0,.2,1),filter .45s ease}
#gmh-preloader.pl-exit .pl-stage{opacity:0;transform:scale(1.07);filter:blur(6px)}
#gmh-preloader.pl-exit .pl-glow,#gmh-preloader.pl-exit .pl-dust{opacity:0!important;transition:opacity .5s ease}

#gmh-preloader .pl-ring{position:relative;width:var(--pl-size);height:var(--pl-size);display:flex;align-items:center;justify-content:center}
#gmh-preloader .pl-ring svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
#gmh-preloader .pl-ring-track{fill:none;stroke:rgba(255,255,255,.09);stroke-width:1.5}
#gmh-preloader .pl-ring-progress{fill:none;stroke:url(#plGrad);stroke-width:2.6;stroke-linecap:round;transform:rotate(-90deg);transform-origin:150px 150px;transition:stroke-dashoffset .09s linear;filter:drop-shadow(0 0 7px rgba(78,207,162,.75))}
#gmh-preloader .pl-orbit{transform-origin:150px 150px;animation:plSpin 14s linear infinite;opacity:0;animation:plSpin 14s linear infinite,plFade .8s ease .25s forwards}
#gmh-preloader .pl-orbit circle.pl-dashes{fill:none;stroke:rgba(255,255,255,.22);stroke-width:1.2;stroke-dasharray:1.5 9}
#gmh-preloader .pl-orbit circle.pl-dot{fill:var(--pl-mint-2);filter:drop-shadow(0 0 8px rgba(124,224,189,.95))}
#gmh-preloader .pl-orbit-2{transform-origin:150px 150px;animation:plSpinR 22s linear infinite;opacity:0}
#gmh-preloader .pl-orbit-2{animation:plSpinR 22s linear infinite,plFade .8s ease .4s forwards}
#gmh-preloader .pl-orbit-2 circle{fill:none;stroke:rgba(42,141,218,.55);stroke-width:1;stroke-dasharray:60 240}
#gmh-preloader .pl-pulse{position:absolute;width:62%;height:62%;border-radius:50%;background:radial-gradient(circle,rgba(78,207,162,.30) 0%,rgba(78,207,162,0) 68%);animation:plPulse 2s ease-in-out .6s infinite;opacity:0}

#gmh-preloader .pl-logo{position:relative;width:64%;opacity:0;transform:scale(.88);filter:blur(14px);animation:plLogoIn 1s cubic-bezier(.2,.8,.2,1) .25s forwards}
#gmh-preloader .pl-logo img{display:block;width:100%;height:auto;filter:drop-shadow(0 0 16px rgba(78,207,162,.35));user-select:none;-webkit-user-drag:none}
#gmh-preloader .pl-shine{position:absolute;inset:0;-webkit-mask:url("../images/gmh-logo.png") center/100% 100% no-repeat;mask:url("../images/gmh-logo.png") center/100% 100% no-repeat;background:linear-gradient(105deg,rgba(124,224,189,0) 38%,rgba(124,224,189,.95) 50%,rgba(124,224,189,0) 62%);background-size:260% 100%;background-position:170% 0;animation:plShine 1.8s cubic-bezier(.4,0,.2,1) 1s infinite}

/* ECG heartbeat line */
#gmh-preloader .pl-ecg{position:relative;width:min(380px,82vw);height:54px;margin-top:6px;opacity:0;animation:plFadeUp .7s ease .5s forwards;-webkit-mask:linear-gradient(90deg,transparent 0%,#000 22%,#000 78%,transparent 100%);mask:linear-gradient(90deg,transparent 0%,#000 22%,#000 78%,transparent 100%)}
#gmh-preloader .pl-ecg svg{width:100%;height:100%;display:block;overflow:visible}
#gmh-preloader .pl-ecg path{fill:none;stroke-linecap:round;stroke-linejoin:round}
#gmh-preloader .pl-ecg .base{stroke:rgba(255,255,255,.13);stroke-width:1.2}
#gmh-preloader .pl-ecg .beat{stroke:var(--pl-mint-2);stroke-width:2;stroke-dasharray:.26 1.3;stroke-dashoffset:.26;filter:drop-shadow(0 0 6px rgba(78,207,162,.95));animation:plBeat 1.4s cubic-bezier(.45,.05,.55,.95) .6s infinite}

/* name + counter */
#gmh-preloader .pl-name{margin-top:16px;font-size:clamp(11px,1.5vw,13px);font-weight:700;letter-spacing:.62em;text-transform:uppercase;white-space:nowrap;color:rgba(255,255,255,.88);padding-left:.62em;opacity:0;transform:translateY(10px);animation:plName 1.1s cubic-bezier(.2,.8,.2,1) .7s forwards}
#gmh-preloader .pl-sub{margin-top:9px;font-size:10px;font-weight:600;letter-spacing:.42em;text-transform:uppercase;color:var(--pl-mint-2);padding-left:.42em;opacity:0;animation:plFadeUp 1s ease 1.7s forwards}
#gmh-preloader .pl-count{display:inline-block;margin-top:22px;font-size:12px;font-weight:700;letter-spacing:.28em;font-variant-numeric:tabular-nums;color:rgba(255,255,255,.75);opacity:0;animation:plFadeUp .7s ease .8s forwards}
#gmh-preloader .pl-count i{font-style:normal;color:var(--pl-mint);margin-left:2px}

@keyframes plLogoIn{0%{opacity:0;transform:scale(.88);filter:blur(14px)}60%{filter:blur(2px)}100%{opacity:1;transform:scale(1);filter:blur(0)}}
@keyframes plShine{0%{background-position:170% 0}55%,100%{background-position:-70% 0}}
@keyframes plGlowIn{to{opacity:1}}
@keyframes plFade{to{opacity:1}}
@keyframes plFadeUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
@keyframes plName{0%{opacity:0;transform:translateY(10px);letter-spacing:.95em}100%{opacity:1;transform:translateY(0);letter-spacing:.62em}}
@keyframes plSpin{to{transform:rotate(360deg)}}
@keyframes plSpinR{to{transform:rotate(-360deg)}}
@keyframes plPulse{0%,100%{opacity:.35;transform:scale(.92)}50%{opacity:1;transform:scale(1.08)}}
@keyframes plBeat{0%{stroke-dashoffset:.26}100%{stroke-dashoffset:-1}}
@keyframes plRise{0%{transform:translateY(0) scale(.6);opacity:0}15%{opacity:.9}100%{transform:translateY(-105vh) scale(1.2);opacity:0}}
@keyframes plDriftA{from{transform:translate3d(0,0,0)}to{transform:translate3d(8vmax,6vmax,0)}}
@keyframes plDriftB{from{transform:translate3d(0,0,0)}to{transform:translate3d(-7vmax,-5vmax,0)}}
@keyframes plLine{0%{transform:scaleX(0);opacity:0}30%{opacity:1}60%{transform:scaleX(1);opacity:1}100%{transform:scaleX(1);opacity:0}}

@media (max-width:480px){#gmh-preloader .pl-name{letter-spacing:.42em;padding-left:.42em}@keyframes plName{0%{opacity:0;transform:translateY(10px);letter-spacing:.7em}100%{opacity:1;transform:translateY(0);letter-spacing:.42em}}}
@media (prefers-reduced-motion:reduce){#gmh-preloader .pl-glow,#gmh-preloader .pl-dust i,#gmh-preloader .pl-orbit,#gmh-preloader .pl-orbit-2,#gmh-preloader .pl-shine{animation:none}#gmh-preloader .pl-logo{animation:plFade 1s ease .3s forwards;filter:none;transform:none}#gmh-preloader .pl-glow{opacity:1}#gmh-preloader .pl-orbit,#gmh-preloader .pl-orbit-2{opacity:1}}
