/* Shared first-paint state: no model or empty controls before preparation finishes. */
.matrix-loader{position:absolute;inset:0;z-index:20;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:22px;background:#f4f4f4;color:#74777c;pointer-events:none;opacity:1;visibility:visible}
.workspace>#loading.matrix-loader{inset:0;transition:opacity .35s,visibility 0s .35s}
.loading-matrix{display:grid;grid-template-columns:repeat(5,8px);gap:6px}
.loading-matrix i{width:8px;height:8px;border-radius:2px;background:#303238;animation:matrix-pulse 1.6s ease-in-out infinite;animation-delay:var(--delay)}
.matrix-loader .loading-copy{font:12px/1.5 -apple-system,BlinkMacSystemFont,"PingFang SC",sans-serif;letter-spacing:.08em;margin:0}
@keyframes matrix-pulse{0%,100%{opacity:.15;transform:scale(.7)}45%{opacity:.8;transform:scale(1)}}
.viewer-loading #stage,.viewer-loading .control-panel,.viewer-loading .summary,.viewer-loading .scene-hint{opacity:0;visibility:hidden;pointer-events:none}
.viewer-ready #stage{animation:viewer-enter .45s ease-out both}
.viewer-ready .control-panel,.viewer-ready .summary,.viewer-ready .scene-hint{animation:viewer-enter .45s .1s ease-out both}
.viewer-ready .workspace>#loading.matrix-loader{opacity:0;visibility:hidden}
.mk-demo-comparison .mk-loading{transition:opacity .35s,visibility 0s .35s}
.mk-demo-comparison .mk-manual{transition:opacity .4s .1s,visibility 0s}
.mk-demo-comparison:not(.is-ready) .mk-manual{opacity:0;visibility:hidden;pointer-events:none}
.mk-demo-comparison.is-ready .mk-loading{opacity:0;visibility:hidden}
@keyframes viewer-enter{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:reduce){.loading-matrix i{animation:none;opacity:.35}.viewer-ready #stage,.viewer-ready .control-panel,.viewer-ready .summary,.viewer-ready .scene-hint{animation:none}.matrix-loader,.mk-demo-comparison .mk-manual{transition:none!important}}
