/* All accepted layers share a registered 1600 x 1000 canvas. */
.project-grid .project-art{height:auto;aspect-ratio:8/5}
.detail-main>.project-art{height:auto;aspect-ratio:8/5;max-height:none}
.asset-scene,.scene-stack{display:block;position:absolute;inset:0;overflow:hidden;pointer-events:none}
.asset-scene img{display:block;position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transform:none!important;filter:none!important}
.scene-poster{z-index:0;transition:opacity .7s}
.scene-stack{z-index:1;opacity:0;transition:opacity .7s}
.scene-ready .scene-stack{opacity:1}
.scene-ready[data-mode="layers"] .scene-poster{opacity:0}
.scene-fallback .scene-stack{display:none}
.scene-fallback .scene-poster{opacity:1!important}
.scene-background{z-index:0}.scene-subject{z-index:2}.scene-foreground{z-index:3}
.scene-light{position:absolute;inset:-15%;z-index:5;background:radial-gradient(ellipse at var(--mx,50%) var(--my,35%),#ffcfa516,transparent 55%);mix-blend-mode:screen;pointer-events:none;opacity:.4;transition:opacity .7s;animation:scene-breathe 12s ease-in-out infinite;animation-play-state:paused}
.scene-visible .scene-light{animation-play-state:running}
.project-art:hover .scene-light{opacity:.8}
.detail-main>.project-art{isolation:isolate;--mx:55%;--my:30%;transform:perspective(1200px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transition:transform .6s ease}
.detail-main>.project-art:before{display:none}
.detail-main>.project-art:after{background:linear-gradient(180deg,#0003,transparent 28%,transparent 76%,#0004)}
.detail-main .art-label{z-index:6;background:#0a0d1780;border:1px solid #ffffff1a;font-size:8px}
.scene-toolbar{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:13px 0;border-bottom:1px solid var(--line);font-size:10px;color:#8d929d}
.scene-toolbar button{font-size:10px;color:#ccb39d;padding:7px 12px;border:1px solid #5e50434d;border-radius:20px;white-space:nowrap}
.scene-toolbar button:hover{border-color:var(--accent);color:var(--accent)}
.cosmos{isolation:isolate}
.cosmos .cosmos-background{position:absolute;inset:-10%;z-index:-2;background:url('/assets/scenes/home-background.webp') 60% 50%/cover;opacity:.55;mask-image:radial-gradient(ellipse,#000 35%,transparent 72%);pointer-events:none}
.cosmos .cosmos-dust{position:absolute;inset:0;z-index:3;pointer-events:none;width:100%;height:100%;object-fit:cover;opacity:.26;animation:dust-drift 20s ease-in-out infinite}
.cosmos .planet{width:320px;height:320px;animation:planet-drift 18s ease-in-out infinite;filter:drop-shadow(0 0 28px #b8774533)}
.cosmos .planet-image{width:100%;height:100%;inset:0;object-fit:contain;mask-image:none;-webkit-mask-image:none;mix-blend-mode:normal;filter:none;transform:none}
.constellation-pins{position:absolute;inset:0;z-index:5}.cosmos canvas{z-index:-1}
.planet-halo{box-shadow:0 0 70px 40px #ab8aca12}
.neural{background:linear-gradient(#0b0a1466,#0b0a14aa),url('/assets/scenes/model-poster.webp') center/cover}
.paused .scene-light,.paused .cosmos-dust{animation-play-state:paused!important}
@keyframes scene-breathe{0%,100%{opacity:.25;transform:translate(-.5%,0)}50%{opacity:.55;transform:translate(.5%,-.5%)}}
@keyframes dust-drift{0%,100%{transform:translate(0,0);opacity:.18}50%{transform:translate(-3px,-4px);opacity:.3}}
@media(min-width:1500px){.cosmos .planet{width:365px;height:365px}}
@media(max-width:1100px) and (min-width:701px){.cosmos .planet{width:240px;height:240px}}
@media(max-width:700px){.cosmos .planet{width:235px;height:235px}.project-grid .project-art,.detail-main>.project-art{aspect-ratio:8/5;height:auto}.scene-toolbar{gap:12px;font-size:9px;align-items:start}.scene-toolbar span{max-width:68%}.scene-light{animation:none;opacity:.35}.cosmos .cosmos-dust{animation:none;opacity:.2}}
@media(prefers-reduced-motion:reduce){.scene-light,.cosmos-dust{animation:none!important}.detail-main>.project-art{transform:none!important}}

.cosmos .cosmos-dust{mask-image:radial-gradient(ellipse at 65% 65%,#000 15%,transparent 72%);-webkit-mask-image:radial-gradient(ellipse at 65% 65%,#000 15%,transparent 72%)}
