/* Shared motion language for the landing page and market workspace. */
html{scroll-behavior:smooth}
body{transition:opacity .2s ease,filter .2s ease}
body.is-leaving{opacity:.45;filter:blur(3px);pointer-events:none}
#zoom-page,.live-page{animation:zoom-page-enter .55s cubic-bezier(.2,.75,.25,1) both}
@keyframes zoom-page-enter{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}

.zoom-orbit{transform:translate3d(var(--pointer-x,0px),var(--pointer-y,0px),0);transition:transform .65s cubic-bezier(.2,.7,.2,1)}
.zoom-orbit img{animation:zoom-artwork-float 9s ease-in-out infinite;will-change:transform}
@keyframes zoom-artwork-float{0%,100%{transform:translate3d(0,0,0) scale(1)}50%{transform:translate3d(0,-10px,0) scale(1.018)}}
.zoom-card{position:relative;overflow:hidden;transition:transform .26s cubic-bezier(.2,.75,.25,1),border-color .26s ease,background .26s ease,box-shadow .26s ease}
.zoom-card::before{content:"";position:absolute;inset:0;background:linear-gradient(115deg,transparent 20%,rgba(223,255,112,.065) 55%,transparent 85%);transform:translateX(-130%);transition:transform .65s ease;pointer-events:none}
.zoom-card:hover{transform:translateY(-4px);border-color:#6e7954;background:#1b1e1b;box-shadow:0 15px 32px #0005}
.zoom-card:hover::before{transform:translateX(130%)}
.zoom-card[role="button"]{cursor:pointer;pointer-events:auto}
.zoom-card[role="button"]:focus-visible{outline:2px solid #dfff70;outline-offset:3px}
.zoom-card-head strong{transition:transform .25s ease}
.zoom-card:hover .zoom-card-head strong{transform:translate(3px,-3px)}
.zoom-nav a,.zoom-brand,.zoom-launch,.zoom-open-app,.zoom-close{transition:color .2s ease,background .2s ease,border-color .2s ease,transform .2s ease,box-shadow .2s ease}
.zoom-nav a:hover,.zoom-brand:hover{color:#e5ff68;transform:translateY(-2px)}
.zoom-launch:hover,.zoom-open-app:hover{transform:translateY(-2px);box-shadow:0 9px 25px #dfff7025}
.zoom-launch:active,.zoom-open-app:active{transform:translateY(1px) scale(.98)}
#zoom-modal{display:flex;visibility:hidden;opacity:0;pointer-events:none;transition:opacity .24s ease,visibility .24s ease}
#zoom-modal.open{visibility:visible;opacity:1;pointer-events:auto}
.zoom-window{transform:translateY(22px) scale(.975);opacity:0;transition:transform .32s cubic-bezier(.2,.75,.2,1),opacity .26s ease}
#zoom-modal.open .zoom-window{transform:translateY(0) scale(1);opacity:1}
body.zoom-modal-open{overflow:hidden}
.zoom-side-options button,.zoom-upload,.zoom-field input,.zoom-field textarea,.zoom-field select{transition:border-color .2s ease,background .2s ease,box-shadow .2s ease,transform .2s ease}
.zoom-side-options button:hover,.zoom-upload:hover{transform:translateY(-2px)}
.zoom-field input:focus,.zoom-field textarea:focus,.zoom-field select:focus{box-shadow:0 0 0 3px #dfff7020}
.zoom-status:not(:empty){animation:zoom-status-enter .28s ease both}
@keyframes zoom-status-enter{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}

.live-asset-card,.live-market-row,.watch-row,.scenario-row,.panel,.live-stats>div{transition:background .22s ease,border-color .22s ease,box-shadow .22s ease,transform .22s ease}
.live-asset-card:hover{transform:translateY(-5px);box-shadow:0 14px 35px #0005;border-color:#81965a}
.live-asset-card:hover .real-asset-icon{transform:rotate(-6deg) scale(1.08)}
.real-asset-icon{transition:transform .3s cubic-bezier(.2,.75,.25,1)}
.live-market-row:hover,.watch-row:hover,.scenario-row:hover{background:#252a27;box-shadow:inset 3px 0 #dfff70}
.live-market-row,.watch-row,.scenario-row{animation:zoom-row-enter .25s ease both}
@keyframes zoom-row-enter{from{opacity:.55;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
.live-filters button,.chart-controls button,.side-picker button,.watch-button,.strategy-save,.primary-link,.header-launch,.asset-heading-actions>a{transition:color .2s ease,background .2s ease,border-color .2s ease,transform .2s ease,box-shadow .2s ease}
.live-filters button:hover,.chart-controls button:hover,.side-picker button:hover{background:#2a3226;color:#e5ff8c}
.watch-button:hover,.strategy-save:hover,.primary-link:hover,.header-launch:hover,.asset-heading-actions>a:hover{transform:translateY(-2px);box-shadow:0 7px 18px #0005}
button:active,.primary-link:active,.header-launch:active{transform:scale(.97)}
.market-tick{animation:zoom-market-tick .75s ease}
@keyframes zoom-market-tick{0%{background:#dfff7040;box-shadow:0 0 0 4px #dfff7020}100%{background:transparent;box-shadow:none}}
.markets-loading .live-card-price [data-field="price"],.markets-loading .live-stats strong[id="stat-volume"],.markets-loading .price-cell [data-field="price"]{display:inline-block;min-width:64px;color:transparent!important;border-radius:3px;background:linear-gradient(100deg,#262b28 20%,#3a4433 50%,#262b28 80%);background-size:200% 100%;animation:zoom-shimmer 1.5s linear infinite}
@keyframes zoom-shimmer{to{background-position-x:-200%}}
.chart-message{position:relative;overflow:hidden}
.chart-message::before{content:"";position:absolute;inset:20% 10%;background:repeating-linear-gradient(90deg,transparent 0 12%,#dfff7014 12.1% 12.3%,transparent 12.4% 24%),linear-gradient(180deg,transparent,#dfff7008,transparent);mask-image:linear-gradient(180deg,transparent,#000 30% 70%,transparent);animation:zoom-chart-breathe 2.2s ease-in-out infinite;pointer-events:none}
@keyframes zoom-chart-breathe{50%{opacity:.4;transform:scaleY(.9)}}
.live-status:not(.offline) i,.real-data-dot{animation:zoom-live-pulse 2.6s ease-in-out infinite}
@keyframes zoom-live-pulse{50%{box-shadow:0 0 0 5px #dfff7018,0 0 14px #dfff70aa}}

@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}body.is-leaving{opacity:1;filter:none}}
