/* A common scene coordinate system keeps each subject joined to its perch. */
.immersive-art{--habitat-x:var(--parallax-x,0px);--habitat-y:var(--parallax-y,0px);position:absolute;inset:0;overflow:hidden;isolation:isolate;background:#417764}
.habitat-layer{position:absolute;pointer-events:none;transition:transform .1s linear}
.card-viewer .habitat-layer{will-change:transform}
.card-viewer.is-held .habitat-layer,.card-viewer.habitat-paused .habitat-layer{transition:none}
.habitat-layer img{display:block;width:100%;height:100%;max-width:none;pointer-events:none;user-select:none;-webkit-user-drag:none}
.habitat-layer--back{inset:-7%;z-index:0;transform:translate3d(calc(var(--habitat-x)*-.4),calc(var(--habitat-y)*-.4),0) scale(1.02)}
.habitat-layer--back img{object-fit:cover;object-position:center 47%;filter:saturate(.92)}
.habitat-layer--perch,.habitat-layer--bird{inset:5% 4%;transform:translate3d(calc(var(--habitat-x)*.7),calc(var(--habitat-y)*.7),0)}
.habitat-layer--perch{z-index:1}
.habitat-layer--perch svg{width:100%;height:100%;overflow:visible;filter:drop-shadow(0 1px 1px #122c2228)}
.habitat-layer--bird{z-index:2}
.habitat-layer--bird img{object-fit:contain;object-position:center;filter:drop-shadow(1px 3px 3px #142d2733)}
.habitat-woodland .habitat-layer--bird,.habitat-woodland .habitat-layer--perch{inset:5% 8%}
.habitat-grove .habitat-layer--bird,.habitat-grove .habitat-layer--perch{inset:3% 4% 1%}
.habitat-layer--front{inset:-6%;z-index:4;transform:translate3d(calc(var(--habitat-x)*1.35),calc(var(--habitat-y)*1.35),0)}
.habitat-layer--front svg{width:100%;height:100%;stroke-width:1;overflow:visible;opacity:.82}
.habitat-light{position:absolute;inset:0;z-index:1;background:radial-gradient(ellipse at 55% 56%,#e7f5c522,transparent 60%);mix-blend-mode:screen;pointer-events:none}
.habitat-woodland{background:#172e39}.habitat-woodland .habitat-light{background:radial-gradient(ellipse at 50% 40%,#c7e4f730,transparent 60%)}
.habitat-grove{background:#526b3b}.habitat-grove .habitat-layer--back img{object-position:center 56%}.habitat-grove .habitat-light{background:radial-gradient(ellipse at 50% 35%,#fff2bc38,transparent 67%)}
/* Farm animals and contact shadows share one coordinate plane. The meadow
   recedes behind them while the corner grasses remain nearer the viewer. */
.immersive-art[class*="habitat-farm-"]{background:#819756}
.immersive-art[class*="habitat-farm-"] .habitat-layer--bird,.immersive-art[class*="habitat-farm-"] .habitat-layer--perch{inset:0;transform:translate3d(calc(var(--habitat-x)*.38),calc(var(--habitat-y)*.38),0)}
.immersive-art[class*="habitat-farm-"] .habitat-layer--bird img{filter:none}
.immersive-art[class*="habitat-farm-"] .habitat-layer--back img{object-position:center 48%;filter:saturate(.94)}
.immersive-art[class*="habitat-farm-"] .habitat-light{background:radial-gradient(ellipse at 32% 20%,#fff4c632,transparent 68%)}
.habitat-farm-paddock .habitat-light{background:radial-gradient(ellipse at 70% 20%,#ffe1a82c,transparent 68%)}
.immersive-art[class*="habitat-farm-"] .habitat-layer--front{inset:-3%;transform:translate3d(calc(var(--habitat-x)*1.15),calc(var(--habitat-y)*1.15),0)}
.habitat-air{position:absolute;inset:0;z-index:3;pointer-events:none;opacity:0}
.habitat-air i{position:absolute;width:2px;height:2px;border-radius:50%;background:#fcf5cb;box-shadow:0 0 5px #f7eb9b;opacity:.5;left:18%;top:24%}
.habitat-air i:nth-child(2){left:80%;top:44%;animation-delay:-3s}.habitat-air i:nth-child(3){left:27%;top:76%;animation-delay:-6s}.habitat-air i:nth-child(4){left:67%;top:16%;animation-delay:-9s}
.habitat-grove .habitat-air i{background:#fff0b8;box-shadow:0 0 5px #eadca5}
.trading-card.immersive{--parallax-x:0px;--parallax-y:0px;padding:5px;background:linear-gradient(125deg,#287b77,#bfe8da 20%,#38768b 44%,#daf4dc 65%,#478b82 85%,#c7e9c9);border:1px solid #66a391;box-shadow:0 5px 13px #216a5528}
.trading-card.immersive .card-inner{border-color:#8ab9a5;background:#eaf2e5}
.trading-card.immersive .card-top{color:#416957}.trading-card.immersive .card-caption{background:linear-gradient(130deg,#e7f0de,#f7f7e6,#dcebd9);color:#2b5745}
.trading-card.immersive .foil{opacity:.14;background:linear-gradient(var(--light-angle,120deg),transparent 20%,#d9fff466 48%,transparent 70%);mix-blend-mode:screen;mask-image:linear-gradient(#000 60%,transparent);-webkit-mask-image:linear-gradient(#000 60%,transparent);animation:none}
.card-viewer .immersive-art .habitat-layer--back{animation:habitat-background-breath 12s ease-in-out infinite alternate}
.card-viewer .immersive-art .habitat-air{opacity:1}.card-viewer .immersive-art .habitat-air i{animation:habitat-drift 11s ease-in-out infinite alternate}
.card-viewer .immersive-art .habitat-light{animation:habitat-luminance 8s ease-in-out infinite alternate}
.card-viewer.habitat-paused .immersive-art *,.card-viewer[data-side="back"] .immersive-art *{animation-play-state:paused!important}
.habitat-motion{font-size:9px;padding-left:10px;padding-right:10px;white-space:nowrap}
@keyframes habitat-background-breath{from{filter:brightness(.98)}to{filter:brightness(1.04)}}
@keyframes habitat-drift{from{transform:translate3d(0,0,0);opacity:.2}to{transform:translate3d(4px,-10px,0);opacity:.7}}
@keyframes habitat-luminance{from{opacity:.35}to{opacity:.7}}
@media(max-width:650px){.habitat-motion{font-size:8px;padding:7px 10px}.card-viewer.has-habitat .viewer-tools{gap:5px}}
@media(prefers-reduced-motion:reduce){
.card-viewer .immersive-art *{animation:none!important;transition:none!important}.habitat-layer{will-change:auto}
.card-viewer:not(.habitat-user-motion) .immersive-art{--habitat-x:0px;--habitat-y:0px}
.card-viewer.habitat-user-motion .immersive-art .habitat-layer--back{animation:habitat-background-breath 12s ease-in-out infinite alternate!important}
.card-viewer.habitat-user-motion .immersive-art .habitat-air i{animation:habitat-drift 11s ease-in-out infinite alternate!important}
.card-viewer.habitat-user-motion .immersive-art .habitat-light{animation:habitat-luminance 8s ease-in-out infinite alternate!important}
}

/* Keep the pause state authoritative even after reduced-motion opt-in. */
.card-viewer.habitat-paused,.card-viewer[data-side="back"]{--habitat-play-state:paused}
.card-viewer.has-habitat .immersive-art .habitat-layer--back,.card-viewer.has-habitat .immersive-art .habitat-air i,.card-viewer.has-habitat .immersive-art .habitat-light{animation-play-state:var(--habitat-play-state,running)!important}
