/* Motion language derived from the live portal: quiet entrances, lift, glow and status pulse. */
@keyframes jt-fade-up{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes jt-fade-in{from{opacity:0}to{opacity:1}}
@keyframes jt-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
@keyframes jt-pulse{0%,100%{box-shadow:0 0 0 0 currentColor}50%{box-shadow:0 0 0 7px transparent}}
@keyframes jt-bar-grow{from{transform:scaleY(.08);opacity:.35}to{transform:scaleY(1);opacity:1}}
@keyframes jt-modal-pop{from{opacity:0;transform:translateY(14px) scale(.97)}to{opacity:1;transform:none}}
@keyframes jt-shine{from{transform:translateX(-140%) rotate(18deg)}to{transform:translateX(320%) rotate(18deg)}}
@keyframes jt-ambient-one{0%,100%{transform:translate3d(-4%,-3%,0) scale(1);opacity:.38}50%{transform:translate3d(12%,9%,0) scale(1.15);opacity:.58}}
@keyframes jt-ambient-two{0%,100%{transform:translate3d(4%,8%,0) scale(1.08);opacity:.3}50%{transform:translate3d(-14%,-7%,0) scale(.92);opacity:.5}}
@keyframes jt-ambient-three{0%,100%{transform:translate3d(0,0,0) rotate(0);opacity:.18}50%{transform:translate3d(8%,-10%,0) rotate(12deg);opacity:.34}}
@keyframes jt-particle{0%,100%{transform:translate3d(0,0,0) scale(.75);opacity:.12}50%{transform:translate3d(12px,-25px,0) scale(1.15);opacity:.55}}
@keyframes jt-icon-bob{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-4px) rotate(2deg)}}
@keyframes jt-icon-turn{0%,82%,100%{transform:rotate(0)}90%{transform:rotate(180deg)}}
@keyframes jt-icon-glow{0%,100%{filter:drop-shadow(0 0 0 transparent)}50%{filter:drop-shadow(0 0 7px #a78bfa88)}}
@keyframes jt-badge-breathe{0%,100%{transform:scale(1);box-shadow:0 0 0 #8b5cf600}50%{transform:scale(1.055);box-shadow:0 0 24px #8b5cf633}}

.ambient-scene{position:fixed;z-index:0;inset:0;overflow:hidden;pointer-events:none;background:linear-gradient(180deg,#090b1000,#090b1055)}
.demo-ribbon,.topbar,.section-nav,main,footer,.mobile-nav,.mobile-menu,.mobile-menu-backdrop,.demo-modal,.toast{position:relative;z-index:1}
.topbar{z-index:10}.section-nav{z-index:9}.mobile-nav{z-index:50}.mobile-menu-backdrop{position:fixed;z-index:29}.mobile-menu{position:fixed;z-index:30}.demo-modal,.toast{position:fixed}
.ambient-scene i{position:absolute;display:block;width:min(58vw,760px);aspect-ratio:1;border-radius:50%;filter:blur(80px);will-change:transform,opacity}
.ambient-scene i:nth-child(1){left:-20%;top:-24%;background:#6d3eea55;animation:jt-ambient-one 18s ease-in-out infinite}
.ambient-scene i:nth-child(2){right:-24%;top:24%;background:#8b5cf63d;animation:jt-ambient-two 24s ease-in-out infinite}
.ambient-scene i:nth-child(3){left:22%;bottom:-38%;background:#3157a733;animation:jt-ambient-three 28s ease-in-out infinite}
.ambient-scene span{position:absolute;width:4px;height:4px;border-radius:50%;background:#d8c6ff;box-shadow:0 0 12px #a78bfa;animation:jt-particle 8s ease-in-out infinite}
.ambient-scene span:nth-of-type(1){left:12%;top:27%;animation-delay:-1s}.ambient-scene span:nth-of-type(2){left:32%;top:68%;animation-delay:-5s}.ambient-scene span:nth-of-type(3){left:57%;top:18%;animation-delay:-3s}.ambient-scene span:nth-of-type(4){left:79%;top:58%;animation-delay:-7s}.ambient-scene span:nth-of-type(5){left:91%;top:31%;animation-delay:-2s}

.shell>.welcome,.shell>.page-head,.shell>.center-head,.shell>.demo-controls,.detail-grid>*{
  animation:jt-fade-up .48s cubic-bezier(.2,.75,.3,1) both;
}
.shell>.demo-controls{animation-delay:.03s}.shell>.welcome,.shell>.page-head,.shell>.center-head{animation-delay:.07s}
.hero-card,.notice,.stat-strip,.table-card,.chart-panel,.conversation,.reply,.compare,.voucher-entry{
  animation:jt-fade-up .5s .12s cubic-bezier(.2,.75,.3,1) both;
}
.action-grid>*:nth-child(1),.media-grid>*:nth-child(1),.metric-grid>*:nth-child(1),.badge-grid>*:nth-child(1),.help-grid>*:nth-child(1){animation-delay:.12s}
.action-grid>*:nth-child(2),.media-grid>*:nth-child(2),.metric-grid>*:nth-child(2),.badge-grid>*:nth-child(2),.help-grid>*:nth-child(2){animation-delay:.17s}
.action-grid>*:nth-child(3),.media-grid>*:nth-child(3),.metric-grid>*:nth-child(3),.badge-grid>*:nth-child(3),.help-grid>*:nth-child(3){animation-delay:.22s}
.action-grid>*,.media-grid>*,.metric-grid>*,.badge-grid>*,.help-grid>*,.news-grid>*,.voucher-grid>*{
  animation:jt-fade-up .48s cubic-bezier(.2,.75,.3,1) both;
}

.brand-mark{position:relative;overflow:hidden;animation:jt-float 3.6s ease-in-out infinite}
.brand-mark:after{content:"";position:absolute;inset:-45% auto -45% -55%;width:38%;background:linear-gradient(90deg,transparent,#fff8,transparent);animation:jt-shine 5.5s 1.2s ease-in-out infinite}
.status-pill i,.timeline .current i{animation:jt-pulse 2s ease-in-out infinite}
.action-card .icon,.announcement-icon,.dashboard-news-icon,.plex-mark,.support-orb,.modal-icon{animation:jt-icon-bob 3.8s ease-in-out infinite,jt-icon-glow 4.6s ease-in-out infinite}
.action-card:nth-child(2) .icon,.announcement:nth-child(2) .announcement-icon{animation-delay:-1.2s}.action-card:nth-child(3) .icon,.announcement:nth-child(3) .announcement-icon{animation-delay:-2.4s}
.action-card#extend .icon{animation:jt-icon-turn 7s ease-in-out infinite,jt-icon-glow 4.6s ease-in-out infinite}
.badge-card>span{animation:jt-badge-breathe 4.2s ease-in-out infinite}.badge-card:nth-child(2n)>span{animation-delay:-1.4s}.badge-card:nth-child(3n)>span{animation-delay:-2.8s}
.section-nav a>span,.mobile-nav a>span,.mobile-nav button>span,.mobile-menu-grid>a>span{display:inline-block;transform-origin:center;animation:jt-icon-glow 5s ease-in-out infinite}
.section-nav a:nth-child(2n)>span,.mobile-nav :nth-child(2n)>span,.mobile-menu-grid>a:nth-child(2n)>span{animation-delay:-2.5s}
.section-nav a:hover>span,.mobile-nav a:hover>span,.mobile-nav button:hover>span,.mobile-menu-grid>a:hover>span{transform:translateY(-2px) scale(1.12);transition:transform .2s ease}
.avatar{animation:jt-icon-glow 5.5s ease-in-out infinite}
.bars i{transform-origin:center bottom;animation:jt-bar-grow .7s cubic-bezier(.2,.75,.3,1) both}
.bars i:nth-child(2n){animation-delay:.06s}.bars i:nth-child(3n){animation-delay:.12s}

.button,.action-card,.media-card,.metric,.badge-card,.price-card,.help,.ticket-row,.request-row,.section-nav a,.desktop-nav a{
  transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease,background-color .2s ease,color .2s ease,filter .2s ease;
}
.button:hover{transform:translateY(-2px);filter:brightness(1.07)}
.primary:hover{box-shadow:0 12px 34px #6d3eea66}
.media-card:hover,.metric:hover,.badge-card:hover,.price-card:hover,.help:hover,.ticket-row:hover,.request-row:hover{transform:translateY(-3px)}
.poster{transition:transform .28s ease,box-shadow .28s ease,border-color .28s ease}
.media-card:hover .poster{transform:scale(1.025);box-shadow:0 20px 40px #0009;border-color:#8b5cf666}
.modal-card{animation:jt-modal-pop .24s cubic-bezier(.2,.8,.3,1) both}
.toast.show{animation:jt-fade-in .2s ease both}

@media(prefers-reduced-motion:reduce){
  .ambient-scene{display:none!important}
  *,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;animation-delay:0s!important;scroll-behavior:auto!important;transition-duration:.01ms!important}
  .shell>*,.detail-grid>*,.action-grid>*,.media-grid>*,.metric-grid>*,.badge-grid>*,.help-grid>*,.news-grid>*,.voucher-grid>*{opacity:1!important;transform:none!important}
}
