/* NEXFIN GROUP premium visual layer (all pages) */
:root{--nx1:#2f4bff;--nx2:#8b5cf6;--nx3:#22d3ee}
body{animation:nxIn .55s cubic-bezier(.2,.7,.2,1) both}
body.nx-leave{opacity:0;transform:translateY(-8px);transition:.28s ease}
@keyframes nxIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
/* ambient background blobs */
.nx-blobs{position:fixed;inset:0;z-index:-1;overflow:hidden;pointer-events:none}
.nx-blobs i{position:absolute;border-radius:50%;filter:blur(80px);opacity:.28;animation:nxF 22s ease-in-out infinite alternate}
.nx-blobs i:nth-child(1){width:46vw;height:46vw;left:-12vw;top:-14vw;background:var(--nx1)}
.nx-blobs i:nth-child(2){width:38vw;height:38vw;right:-10vw;top:20vh;background:var(--nx2);animation-delay:-7s}
.nx-blobs i:nth-child(3){width:34vw;height:34vw;left:30vw;bottom:-18vw;background:var(--nx3);animation-delay:-13s;opacity:.18}
@keyframes nxF{to{transform:translate(6vw,5vh) scale(1.15)}}
/* cursor glow */
.nx-glow{position:fixed;left:0;top:0;width:340px;height:340px;margin:-170px 0 0 -170px;border-radius:50%;background:radial-gradient(circle,rgba(47,75,255,.16),transparent 65%);pointer-events:none;z-index:-1;transition:opacity .3s}
/* reveal variants */
.rv{opacity:0;transform:translateY(34px) scale(.98);transition:opacity .8s cubic-bezier(.2,.7,.2,1),transform .8s cubic-bezier(.2,.7,.2,1)}
.rv.in{opacity:1;transform:none}
/* interactive cards */
.nx-tilt{transform-style:preserve-3d;transition:transform .2s ease-out,box-shadow .3s;will-change:transform;position:relative}
.nx-tilt::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:radial-gradient(260px circle at var(--px,50%) var(--py,0%),rgba(255,255,255,.35),transparent 60%);opacity:0;transition:opacity .25s}
.nx-tilt:hover::after{opacity:1}
.nx-tilt:hover{box-shadow:0 30px 60px -22px rgba(47,75,255,.35)}
.btn{position:relative;overflow:hidden}
.btn .nx-rip{position:absolute;border-radius:50%;background:rgba(255,255,255,.45);transform:scale(0);animation:nxR .6s ease-out;pointer-events:none}
@keyframes nxR{to{transform:scale(3);opacity:0}}
.btn:not(.g){background-image:linear-gradient(135deg,var(--a,#2f4bff),var(--nx2));background-size:140% 100%;transition:background-position .4s,transform .22s,box-shadow .3s}
.btn:not(.g):hover{background-position:100% 0;box-shadow:0 14px 30px -10px rgba(47,75,255,.55)}
h1 em,h2 em{background:linear-gradient(90deg,var(--nx1),var(--nx2),var(--nx3));-webkit-background-clip:text;background-clip:text;color:transparent!important;background-size:200%;animation:nxG 6s linear infinite}
@keyframes nxG{to{background-position:200% 0}}
/* floating illustration */
.nx-ill{position:absolute;right:max(2vw,10px);top:50%;width:min(44vw,520px);transform:translateY(-50%);pointer-events:none;z-index:0;opacity:.95}
.nx-ill svg{width:100%;height:auto;overflow:visible}
.nx-ill .fl{animation:nxFl 6s ease-in-out infinite}.nx-ill .fl2{animation:nxFl 8s ease-in-out infinite reverse}
@keyframes nxFl{50%{transform:translateY(-14px)}}
.hero>.w{position:relative;z-index:1}
@media(max-width:900px){.nx-ill{display:none}}
.nx-float{position:absolute;display:flex;gap:8px;align-items:center;padding:10px 14px;border-radius:14px;background:rgba(255,255,255,.88);backdrop-filter:blur(12px);border:1px solid rgba(110,125,170,.2);box-shadow:0 20px 40px -18px rgba(16,24,40,.35);font:600 12px Inter,sans-serif;color:#10172a;animation:nxFl 7s ease-in-out infinite;z-index:2}
.nx-float b{font-size:15px;color:var(--nx1)}
/* back to top polish */
#up{backdrop-filter:blur(8px);box-shadow:0 10px 30px -10px rgba(47,75,255,.5)}
/* ===== DASHBOARDS (client / company / staff / admin) ===== */
body[data-pg=portal],body[data-pg=staff],body[data-pg=admin]{background:#f3f5fc}
.pt{grid-template-columns:250px 1fr}
aside{padding:14px;border-radius:22px;background:#fff;border:1px solid var(--line);box-shadow:var(--sh);top:100px;max-height:calc(100vh - 120px);overflow:auto}
aside button{display:flex;align-items:center;gap:10px;text-align:left;border:0;background:none;padding:11px 14px;border-radius:12px;font:600 14px Inter,sans-serif;color:var(--mut);cursor:pointer;transition:.2s}
aside button:hover{background:rgba(47,75,255,.07);color:var(--ink);transform:translateX(3px)}
aside button.on{background:linear-gradient(135deg,var(--a,#2f4bff),var(--nx2));color:#fff;box-shadow:0 10px 24px -10px var(--a,#2f4bff)}
#view{animation:nxIn .45s both;min-width:0}
#view h2{font-size:clamp(26px,3vw,36px);margin-bottom:18px}
.stat,.kpi{transition:transform .25s,box-shadow .25s}.stat:hover,.kpi:hover{transform:translateY(-4px);box-shadow:0 22px 40px -22px rgba(47,75,255,.45)}
.stat b{font-size:34px;background:linear-gradient(135deg,var(--a,#2f4bff),var(--nx2));-webkit-background-clip:text;background-clip:text;color:transparent}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:16px;margin:0 0 22px}
.kpi{position:relative;padding:20px;border-radius:20px;background:#fff;border:1px solid var(--line);overflow:hidden}
.kpi::before{content:"";position:absolute;right:-30px;top:-30px;width:110px;height:110px;border-radius:50%;background:var(--k);opacity:.12}
.kpi em{font-style:normal;font-size:22px;display:block;margin-bottom:6px}.kpi b{display:block;font:700 30px/1.1 Inter;color:var(--k)}.kpi span{font-size:13px;color:var(--mut)}
.ahero,.chero{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:30px 34px;border-radius:26px;margin-bottom:22px;color:#fff;background:linear-gradient(120deg,#0b1533,#1a00aa 55%,#2f4bff);position:relative;overflow:hidden}
.ahero h2,.chero h2{color:#fff;margin:6px 0 8px!important}.ahero small,.chero small{letter-spacing:.14em;font-weight:700;opacity:.75;font-size:11px}.ahero p,.chero p{opacity:.85;max-width:520px}
.ahero svg{width:min(260px,34%);flex:none}.chero svg{width:150px;flex:none;color:#fff}
.chero{background:linear-gradient(120deg,var(--cd,#0b1533),var(--a,#2f4bff))}
.spark{display:flex;align-items:flex-end;gap:10px;height:150px;padding-top:10px}.spark div{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;height:100%;gap:4px;font-size:11px;color:var(--mut)}
.spark i{width:100%;border-radius:8px 8px 3px 3px;background:linear-gradient(180deg,var(--nx2),var(--nx1));animation:nxGrow .9s cubic-bezier(.2,.7,.2,1) both;transform-origin:bottom}.spark b{font-size:12px;color:currentColor}
@keyframes nxGrow{from{transform:scaleY(0)}}
.dn{display:flex;gap:18px;align-items:center}.dn svg{width:130px;flex:none;color:var(--ink)}.dn ul{list-style:none;padding:0;display:grid;gap:7px;font-size:13px}.dn li i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:8px}
.pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px;margin-top:14px}
.pcard{padding:20px;border-radius:20px;background:#fff;border:1px solid var(--line);display:grid;gap:5px;transition:.25s}.pcard:hover{transform:translateY(-4px);box-shadow:0 24px 44px -24px rgba(47,75,255,.45)}
.pcard small{color:var(--mut);font-size:12px;word-break:break-all}.pcard small:nth-of-type(1){color:var(--nx1);font-weight:700;letter-spacing:.06em}.pcard label{font-size:12px;color:var(--mut);display:grid;gap:3px;margin-top:4px}
.av{width:56px;height:56px;border-radius:50%;display:grid;place-items:center;font:700 22px Inter;color:#fff;background:linear-gradient(135deg,var(--nx1),var(--nx2));overflow:hidden;margin-bottom:6px}.av img{width:100%;height:100%;object-fit:cover}
.row2{display:flex;gap:6px;margin:4px 0}
/* per-company portal themes */
body[data-company="NEXFIN Tech"]{--a:#2f4bff;--cd:#0b1533;--nx1:#2f4bff;--nx2:#00c2a8}
body[data-company="NEXFIN AI"]{--a:#8b5cf6;--cd:#1e0b44;--nx1:#8b5cf6;--nx2:#ec4899}
body[data-company="NEXFIN Commerce"]{--a:#e8590c;--cd:#3a1405;--nx1:#e8590c;--nx2:#f59e0b}
body[data-company="NEXFIN Consulting"]{--a:#0f8f6e;--cd:#05261f;--nx1:#0f8f6e;--nx2:#0891b2}
/* admin = separate control centre (light) */
body[data-pg=admin]{--a:#4f46e5;--nx1:#4f46e5;--nx2:#22d3ee}
body[data-pg=staff]{--a:#0891b2;--nx2:#2f4bff}
@media(max-width:900px){.pt{grid-template-columns:1fr}aside{max-height:none;display:flex;overflow-x:auto;gap:6px}aside button{white-space:nowrap}.ahero svg,.chero svg{display:none}}
@media(prefers-reduced-motion:reduce){.nx-blobs i,.nx-float,.nx-ill .fl,.nx-ill .fl2,h1 em,h2 em{animation:none!important}.rv{opacity:1;transform:none}}
.nx-glow{opacity:0}.nx-glow.on{opacity:1}
body aside button.on{background:linear-gradient(135deg,var(--a,#2f4bff),var(--nx2))!important;color:#fff!important}
body .stat b{background:linear-gradient(135deg,var(--a,#2f4bff),var(--nx2));-webkit-background-clip:text;background-clip:text;color:transparent}

.cos .co:nth-child(5){grid-column:1/-1}
.big[style*="b08d4f"] small{color:#b08d4f}
/* profile page */
.prof{display:grid;grid-template-columns:300px 1fr;gap:22px;align-items:start}
.pcd{padding:28px;border-radius:24px;background:linear-gradient(160deg,#fff,#eef1ff);border:1px solid var(--line);box-shadow:var(--sh);text-align:center;display:grid;gap:8px;justify-items:center}
.pcd .av{width:112px;height:112px;font-size:44px;box-shadow:0 0 0 4px #fff,0 0 0 7px rgba(79,70,229,.35);margin:0}
.pcd b{font-size:20px}.pcd small{color:var(--mut);word-break:break-all}.pcd .mid{font:700 12px Inter;letter-spacing:.1em;color:var(--a,#2f4bff);background:rgba(79,70,229,.1);padding:5px 12px;border-radius:99px}
.pcd label.btn{cursor:pointer;margin-top:8px}.pcd input[type=file]{display:none}
@media(max-width:900px){.prof{grid-template-columns:1fr}}
