.tower-stage{width:100%;height:100%;min-height:420px;position:relative;-webkit-mask-image:linear-gradient(90deg,#0000,#000 12% 88%,#0000),linear-gradient(#0000,#000 10% 94%,#0000);mask-image:linear-gradient(90deg,#0000,#000 12% 88%,#0000),linear-gradient(#0000,#000 10% 94%,#0000);-webkit-mask-composite:source-in;mask-composite:intersect}.tower-poster,.tower-canvas-host,.tower-canvas{width:100%;height:100%;position:absolute;inset:0}.tower-poster{object-fit:contain;object-position:center bottom;pointer-events:none;transition:opacity var(--dur-slow) var(--ease)}.tower-poster-dark,:root[data-theme=dark] .tower-poster-light{display:none}:root[data-theme=dark] .tower-poster-dark{display:block}.tower-canvas{opacity:0;visibility:hidden;touch-action:pan-y;cursor:grab;transition:opacity .6s var(--ease)}.tower-canvas:active{cursor:grabbing}.tower-stage[data-gl=ready] .tower-canvas{opacity:1;visibility:visible}.tower-stage[data-gl=ready] .tower-poster{opacity:0}.tower-stage[data-gl=failed] .tower-canvas,.tower-stage[data-poster] .tower-poster{display:none}.tower-canvas:focus-visible{outline:2px solid var(--redline);outline-offset:-2px}.tower-hint{inset-inline:0;text-align:center;font-size:var(--fs-xs);color:var(--ink-muted);opacity:0;transition:opacity var(--dur-slow) var(--ease);margin:0;position:absolute;bottom:8px}.tower-stage[data-gl=ready] .tower-hint{opacity:1}.tower-hint-touch{display:none}.tower-loading{inset-inline:0;font-size:var(--fs-xs);color:var(--ink-muted);opacity:0;pointer-events:none;transition:opacity var(--dur-slow) var(--ease);justify-content:center;align-items:center;gap:8px;margin:0;display:flex;position:absolute;bottom:8px}.tower-stage[data-gl=loading] .tower-loading{opacity:1}.tower-loading-dot{background:var(--signature);border-radius:999px;width:6px;height:6px;animation:1.1s ease-in-out infinite tower-pulse}@keyframes tower-pulse{0%,to{opacity:.25;transform:scale(.8)}50%{opacity:1;transform:scale(1)}}@media (prefers-reduced-motion:reduce){.tower-loading-dot{animation:none}}@media (pointer:coarse){.tower-hint-pointer{display:none}.tower-hint-touch{display:inline}}
