/* Dark Flow Futures — Ultra Motion v3
   Premium mission-control motion. Fail-open, transform/opacity first, reduced-motion aware. */
:root{--df-v3-x:50%;--df-v3-y:42%;--df-v3-ease:cubic-bezier(.18,.78,.2,1);--df-v3-fast:180ms;--df-v3-med:360ms;--df-v3-slow:900ms}
@keyframes df3Aurora{0%{transform:translate3d(-2%,-1%,0) scale(1);opacity:.28}50%{transform:translate3d(2.4%,1.2%,0) scale(1.045);opacity:.42}100%{transform:translate3d(-.8%,2%,0) scale(1.02);opacity:.32}}
@keyframes df3Grid{to{background-position:58px 58px,58px 58px}}
@keyframes df3Scan{0%{transform:translateY(-130%);opacity:0}12%{opacity:.12}68%{opacity:.045}100%{transform:translateY(140vh);opacity:0}}
@keyframes df3Reveal{from{opacity:0;transform:translate3d(0,10px,0) scale(.995);filter:blur(2.5px)}to{opacity:1;transform:none;filter:none}}
@keyframes df3Tab{from{opacity:.35;transform:translate3d(8px,0,0)}to{opacity:1;transform:none}}
@keyframes df3Pulse{0%,100%{filter:brightness(1)}50%{filter:brightness(1.12)}}
@keyframes df3Logo{0%,100%{filter:drop-shadow(0 0 0 transparent) brightness(1)}50%{filter:drop-shadow(0 0 16px rgba(69,154,255,.28)) brightness(1.06)}}
@keyframes df3Sweep{0%{transform:translateX(-170%) skewX(-18deg);opacity:0}18%{opacity:.36}100%{transform:translateX(430%) skewX(-18deg);opacity:0}}
@keyframes df3Ripple{from{transform:translate(-50%,-50%) scale(0);opacity:.3}to{transform:translate(-50%,-50%) scale(5.5);opacity:0}}
@keyframes df3Row{0%{background:rgba(64,155,255,.12);box-shadow:inset 3px 0 0 rgba(73,171,255,.85)}100%{background:transparent;box-shadow:inset 0 0 0 transparent}}
@keyframes df3Bell{0%,100%{transform:rotate(0)}20%{transform:rotate(8deg)}40%{transform:rotate(-7deg)}60%{transform:rotate(4deg)}80%{transform:rotate(-2deg)}}
@keyframes df3Edge{0%{background-position:0% 50%}50%{background-position:100% 50%}100%{background-position:0% 50%}}
@keyframes df3Particle{0%{transform:translate3d(0,14px,0) scale(.8);opacity:0}20%{opacity:.22}80%{opacity:.12}100%{transform:translate3d(var(--dx,16px),-70px,0) scale(1.05);opacity:0}}
@keyframes df3Value{0%{text-shadow:0 0 0 transparent;filter:brightness(1)}35%{text-shadow:0 0 14px rgba(87,181,255,.48);filter:brightness(1.16)}100%{text-shadow:0 0 0 transparent;filter:brightness(1)}}

body::before{content:"";position:fixed;z-index:-4;inset:-4%;pointer-events:none;background:radial-gradient(circle at var(--df-v3-x) var(--df-v3-y),rgba(45,117,222,.085),transparent 28rem),radial-gradient(circle at 14% 18%,rgba(35,170,224,.07),transparent 31rem),radial-gradient(circle at 86% 74%,rgba(40,210,222,.05),transparent 32rem);animation:df3Aurora 22s ease-in-out infinite alternate}
body::after{content:"";position:fixed;z-index:-3;inset:0;pointer-events:none;opacity:.085;background-image:linear-gradient(rgba(112,150,205,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(112,150,205,.08) 1px,transparent 1px);background-size:58px 58px;animation:df3Grid 52s linear infinite}
.df-ultra-v3-layer{position:fixed;z-index:-2;inset:0;pointer-events:none;overflow:hidden}.df-ultra-v3-particle{position:absolute;width:2px;height:2px;border-radius:50%;background:#6ed8ff;box-shadow:0 0 8px rgba(82,190,255,.55);animation:df3Particle var(--dur,11s) linear infinite;animation-delay:var(--delay,0s)}
.df-ultra-scanline-v3{position:fixed;z-index:5;left:var(--df-sidebar,0);right:0;top:0;height:100px;pointer-events:none;opacity:0;background:linear-gradient(180deg,transparent,rgba(64,193,229,.055),transparent);animation:df3Scan 13s linear infinite}

.brand-lockup,.auth-brand{position:relative;isolation:isolate;overflow:hidden}.brand-lockup img,.auth-brand img{animation:df3Logo 5.4s ease-in-out infinite}.brand-lockup::after,.auth-brand::after{content:"";position:absolute;pointer-events:none;z-index:3;top:-45%;bottom:-45%;left:-20%;width:18%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);animation:df3Sweep 8.2s ease-in-out infinite}
.nav{position:relative;overflow:hidden}.nav::before{transition:transform .22s var(--df-v3-ease),opacity .2s ease}.nav.active::after{content:"";position:absolute;left:0;top:15%;bottom:15%;width:2px;border-radius:9px;background:linear-gradient(180deg,#4f8cff,#43d0e8);box-shadow:0 0 14px rgba(79,140,255,.42)}

/* Fail-open reveal system */
.df-v3-reveal{opacity:1;transform:none;filter:none}
html.df-v3-motion-ready .df-v3-reveal:not(.df-v3-inview){opacity:0;transform:translate3d(0,10px,0) scale(.995);filter:blur(2.5px)}
html.df-v3-motion-ready .df-v3-reveal.df-v3-inview{animation:df3Reveal .48s var(--df-v3-ease) both;animation-delay:var(--df-v3-stagger,0ms)}
.tab.active.df-v3-tab-motion{animation:df3Tab .3s var(--df-v3-ease) both}

.df-v3-hover{position:relative;isolation:isolate;transition:transform .22s var(--df-v3-ease),border-color .2s ease,box-shadow .26s ease,filter .2s ease!important;transform:perspective(1300px) rotateX(var(--df-v3-tilt-x,0deg)) rotateY(var(--df-v3-tilt-y,0deg)) translateZ(0)}
.df-v3-hover:hover{border-color:rgba(94,155,247,.26)!important;box-shadow:0 18px 42px rgba(0,0,0,.2),0 0 26px rgba(64,139,240,.055)!important}
.df-v3-hover::after{content:"";position:absolute;z-index:-1;inset:-1px;border-radius:inherit;pointer-events:none;opacity:0;background:linear-gradient(120deg,transparent 28%,rgba(103,188,255,.13),transparent 58%);background-size:220% 220%;transition:opacity .25s ease}.df-v3-hover:hover::after{opacity:1;animation:df3Edge 3.2s ease infinite}

button,.primary,.secondary,.danger,.logout-button,.df-icon-btn,.df-profile-btn{transition:transform .16s ease,box-shadow .2s ease,filter .2s ease!important}button:hover:not(:disabled),.primary:hover:not(:disabled),.secondary:hover:not(:disabled),.danger:hover:not(:disabled){transform:translateY(-1px);filter:brightness(1.055)}button:active:not(:disabled){transform:scale(.975)}
.df-v3-ripple-host{position:relative!important;overflow:hidden!important}.df-v3-ripple-wave{position:absolute;z-index:40;width:30px;height:30px;border-radius:50%;pointer-events:none;background:radial-gradient(circle,rgba(157,205,255,.42),rgba(78,146,238,.11) 56%,transparent 72%);animation:df3Ripple .58s ease-out forwards}
.status-dot,.mc-led,.df-security-led,.auth-status i,.auth-foot i,.badge.active,.mc-status.good{animation:df3Pulse 3s ease-in-out infinite}

/* Live data / table treatment */
tbody tr{transition:background-color .16s ease,box-shadow .18s ease,filter .18s ease!important}tbody tr:hover{filter:brightness(1.045);box-shadow:inset 2px 0 0 rgba(79,140,255,.62)!important}.df-v3-live-row{animation:df3Row 1.5s ease-out both}.df-v3-value-update{animation:df3Value 1.2s ease-out both}
.df-v3-bell-ring svg{transform-origin:50% 10%;animation:df3Bell .7s ease-in-out both}

/* AI Command Center polish */
.df-ai2{box-shadow:0 28px 82px rgba(0,0,0,.4),0 0 48px rgba(36,166,201,.055),inset 0 1px 0 rgba(135,238,255,.05)!important}
.df-ai2-core{will-change:transform,filter}.df-ai2-network path{filter:drop-shadow(0 0 2px rgba(76,214,232,.2))}.df-ai2-node,.df-ai2-gate{will-change:filter,box-shadow}.df-ai2-card{transition:transform .22s var(--df-v3-ease),border-color .2s ease,box-shadow .22s ease}.df-ai2-card:hover{transform:translateY(-2px);border-color:rgba(69,201,220,.38);box-shadow:0 16px 30px rgba(0,0,0,.16),inset 0 0 34px rgba(27,132,163,.055)}

/* Motion level: reduced keeps polish, removes ambient continuous motion. */
html[data-df-motion="reduced"] body::before,html[data-df-motion="reduced"] body::after,html[data-df-motion="reduced"] .df-ultra-scanline-v3,html[data-df-motion="reduced"] .df-ultra-v3-particle,html[data-df-motion="reduced"] .brand-lockup img,html[data-df-motion="reduced"] .auth-brand img,html[data-df-motion="reduced"] .brand-lockup::after,html[data-df-motion="reduced"] .auth-brand::after,html[data-df-motion="reduced"] .status-dot,html[data-df-motion="reduced"] .mc-led{animation:none!important}
html[data-df-motion="off"] *,html[data-df-motion="off"] *::before,html[data-df-motion="off"] *::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}html[data-df-motion="off"] .df-v3-reveal{opacity:1!important;transform:none!important;filter:none!important}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}.df-v3-reveal{opacity:1!important;transform:none!important;filter:none!important}}
