:root{--ease:cubic-bezier(.22,1,.36,1)}
html{scroll-behavior:smooth}
body{overflow-x:hidden}
.top{position:relative;z-index:20;box-shadow:0 8px 28px #04132f22}
.top:after{content:"";position:absolute;right:0;bottom:0;left:0;width:auto;height:2px;background:linear-gradient(90deg,transparent 0,#d8b45b 20%,#f2d98b 50%,#d8b45b 80%,transparent 100%);background-size:100% 100%;animation:none;pointer-events:none}
.brand>b{position:relative;overflow:hidden;box-shadow:0 0 0 0 #d8b45b55;animation:brandPulse 3.5s ease-in-out infinite}
.brand>b:after{content:"";position:absolute;inset:-50%;background:linear-gradient(110deg,transparent 35%,#fff9 50%,transparent 65%);transform:translateX(-70%);animation:shine 5s ease-in-out infinite}
.top nav a{position:relative;transition:color .25s,background .25s,transform .25s}
.top nav a:hover{transform:translateY(-2px)}
.top nav a:after{display:none;content:none}
.login{position:relative;isolation:isolate}
.login:before{content:none}
.login:after{content:"";position:fixed;inset:0;z-index:0;opacity:.18;background-image:radial-gradient(circle,#e1bd62 1px,transparent 1px);background-size:34px 34px;mask-image:linear-gradient(90deg,#000,transparent 72%);pointer-events:none;animation:gridMove 20s linear infinite}
.login-card{animation:cardArrival .75s var(--ease) both}
.login-hero{position:relative;background:linear-gradient(135deg,#071a3d,#0b4786)!important}
.login-hero__media img{animation:loginAirportDrift 18s ease-in-out infinite alternate}
.login-form>*{animation:riseIn .55s var(--ease) both}
.login-form>*:nth-child(2){animation-delay:.08s}
.login-form>*:nth-child(3){animation-delay:.16s}
.login-form>*:nth-child(4){animation-delay:.24s}
.asset-hero{background:linear-gradient(90deg,#041632f2 0%,#0b376fd4 48%,#0b376f66),url('media/immigration-autogate.jpg?v=42.0') right center/cover no-repeat!important}
.asset-hero.governance{background:linear-gradient(90deg,#041632f2 0%,#0b376fd4 48%,#0b376f55),url('media/airport-terminal.jpg?v=42.0') right center/cover no-repeat!important}
.asset-hero>div:first-child{position:relative;z-index:2;animation:slideRight .7s var(--ease) both}
.asset-hero:before{content:"";position:absolute;inset:0;background:linear-gradient(115deg,transparent 30%,#f2d27b20 49%,transparent 68%);transform:translateX(-100%);animation:heroSweep 9s ease-in-out infinite}
.map-panel{position:relative}
.map-panel:before{content:"AIRPORT NETWORK";position:absolute;right:22px;top:18px;z-index:500;padding:6px 10px;border:1px solid #fff3;border-radius:8px;color:#fff8;font-size:10px;font-weight:800;letter-spacing:.18em;pointer-events:none}
.map-panel:after{content:"";position:absolute;inset:0;z-index:450;pointer-events:none;box-shadow:inset 0 0 70px #03142f55}
.panel,.stats article,.request-card,.asset-label{will-change:transform;transition:transform .3s var(--ease),box-shadow .3s var(--ease),border-color .3s}
.panel:hover,.stats article:hover,.request-card:hover{transform:translateY(-5px);box-shadow:0 18px 36px #071a3d18;border-color:#d8b45b88}
.stats article{position:relative;overflow:hidden}
.stats article:after{content:"";position:absolute;top:-80%;left:-45%;width:55%;height:240%;background:linear-gradient(90deg,transparent,#fff9,transparent);transform:rotate(22deg);transition:left .7s var(--ease)}
.stats article:hover:after{left:115%}
.alert{animation:alertIn .45s var(--ease) both}
.bell em{animation:notifyPulse 1.8s ease-in-out infinite}
.notification{transition:background .2s,padding-left .25s}
.notification:hover{padding-left:21px;background:#f7f9fc}
.tabs a{position:relative;overflow:hidden}
.tabs a.active{box-shadow:0 7px 18px #0c397035}
.tabs a:before{content:"";position:absolute;inset:0;background:linear-gradient(105deg,transparent,#fff3,transparent);transform:translateX(-120%);transition:transform .55s}
.tabs a:hover:before{transform:translateX(120%)}
button,.btn{position:relative;overflow:hidden;transition:transform .2s var(--ease),box-shadow .2s}
button:hover,.btn:hover{transform:translateY(-2px);box-shadow:0 9px 20px #9b772e38}
button:active,.btn:active{transform:translateY(0) scale(.98)}
input:focus,select:focus,textarea:focus{outline:none;border-color:#c9a44c;box-shadow:0 0 0 3px #c9a44c22}
.table-scroll tbody tr{transition:background .2s,transform .2s}
.table-scroll tbody tr:hover{background:#f7f9fc}
.meter i{position:relative;overflow:hidden;transition:width .8s var(--ease)}
.meter i:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,#fff9,transparent);animation:meterShine 2.5s linear infinite}
.fake-qr{transition:transform .25s}
.asset-label:hover .fake-qr{transform:scale(1.06) rotate(-1deg)}
.modal-card{animation:modalLift .4s var(--ease) both}
.airport-sky .plane{filter:drop-shadow(0 6px 7px #0c397066)}
.page-enter>*>*{animation:contentFade .48s var(--ease) both}
.page-enter>*>*:nth-child(2){animation-delay:.05s}
.page-enter>*>*:nth-child(3){animation-delay:.1s}
.skeleton{position:relative;overflow:hidden;background:#e9edf3;color:transparent}
.skeleton:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,#fff9,transparent);animation:skeleton 1.4s linear infinite}
@keyframes goldFlow{to{background-position:240% 0}
}
@keyframes brandPulse{50%{box-shadow:0 0 0 8px #d8b45b00}
}
@keyframes shine{0%,65%{transform:translateX(-70%)}
85%,100%{transform:translateX(70%)}
}
@keyframes bgDrift{to{background-position:52% center}
}
@keyframes loginAirportDrift{from{transform:scale(1.015);object-position:52% center}
to{transform:scale(1.055);object-position:60% center}
}
@keyframes gridMove{to{background-position:68px 34px}
}
@keyframes cardArrival{from{opacity:0;transform:translateY(24px) scale(.98)}
to{opacity:1;transform:none}
}
@keyframes riseIn{from{opacity:0;transform:translateY(12px)}
to{opacity:1;transform:none}
}
@keyframes slideRight{from{opacity:0;transform:translateX(-22px)}
to{opacity:1;transform:none}
}
@keyframes heroSweep{0%,70%{transform:translateX(-100%)}
90%,100%{transform:translateX(100%)}
}
@keyframes alertIn{from{opacity:0;transform:translateY(-8px)}
to{opacity:1;transform:none}
}
@keyframes notifyPulse{50%{transform:scale(1.14);box-shadow:0 0 0 7px #e5484d00}
}
@keyframes meterShine{to{transform:translateX(100%)}
}
@keyframes modalLift{from{opacity:0;transform:translateY(20px) scale(.97)}
to{opacity:1;transform:none}
}
@keyframes contentFade{from{opacity:0;transform:translateY(8px)}
to{opacity:1;transform:none}
}
@keyframes skeleton{to{transform:translateX(100%)}
}
@media(max-width:760px){.asset-hero{background-position:65% center!important}
.login-hero__media img{object-position:58% center}
.map-panel:before{display:none}
}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}
*,*:before,*:after{animation:none!important;transition:none!important}
}

.support-fab{position:fixed;right:22px;bottom:22px;z-index:9000;display:flex;align-items:center;gap:9px;padding:13px 18px;border-radius:999px;background:linear-gradient(135deg,#c9a44c,#efd175);color:#10264b!important;text-decoration:none!important;font-size:12px;font-weight:900;box-shadow:0 14px 34px #06142f45;animation:fabIn .5s ease}
.support-fab span{color:#24a867;animation:livePulse 1.8s infinite}
@keyframes fabIn{from{opacity:0;transform:translateY(15px)}
to{opacity:1;transform:none}
}
@keyframes livePulse{50%{opacity:.35;transform:scale(.8)}
}

.geotag-fab{position:fixed;right:22px;bottom:78px;z-index:8999;padding:11px 17px;border-radius:999px;background:#0a326c;color:#fff!important;text-decoration:none!important;font-size:12px;font-weight:900;box-shadow:0 12px 28px #06142f35;animation:fabIn .6s ease}
.geotag-fab:hover{background:#124a96;transform:translateY(-2px)}
