:root{color:#eff6ff;background:linear-gradient(#020617 0%,#071a2f 100%);font-family:Inter,system-ui,sans-serif}*{box-sizing:border-box}body{background:radial-gradient(circle at top,#57d7ff1f,#0000 30%),linear-gradient(#020617 0%,#071a2f 100%);min-height:100vh;margin:0}button{font:inherit}.stage-shell{width:min(1180px,100% - 2rem);margin:0 auto;padding:2rem 0 3rem}.hero-panel{position:relative}.mobile-launcher-link{color:#04121f;background:linear-gradient(135deg,#0ea5e9,#38bdf8);border-radius:999px;padding:.5rem 1rem;font-size:.85rem;font-weight:700;text-decoration:none;transition:opacity .2s;position:absolute;top:1.5rem;right:1.5rem}.mobile-launcher-link:hover{opacity:.85}.hero-panel,.instructions-panel,.status-grid article,.viewport-shell{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#0f172abf;border:1px solid #94a3b833;border-radius:24px;box-shadow:0 20px 60px #02061759}.hero-panel,.instructions-panel,.viewport-shell{padding:1.5rem}.eyebrow{text-transform:uppercase;letter-spacing:.12em;color:#56d0ff;margin:0 0 .5rem;font-size:.8rem}.hero-panel h1,.instructions-panel h2,.status-grid h2{margin:0 0 .75rem}.hero-copy{color:#cbd5e1;max-width:65ch}.mode-actions{flex-wrap:wrap;gap:.75rem;margin-top:1.25rem;display:flex}.primary,.secondary{cursor:pointer;border:none;border-radius:999px;padding:.8rem 1.2rem;transition:transform .2s,opacity .2s}.primary{color:#04121f;background:linear-gradient(135deg,#0ea5e9,#38bdf8)}.secondary{color:#eff6ff;background:#1e293be6;border:1px solid #94a3b840}.primary:disabled,.secondary:disabled{opacity:.45;cursor:not-allowed}.status-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem;margin-top:1rem;display:grid}.status-grid article{padding:1.25rem}.status-grid ul,.instructions-panel ol{color:#cbd5e1;margin:0;padding-left:1.1rem}.instructions-panel{margin-top:1rem}.viewport-shell{margin-top:1rem;position:relative}.viewport-label{text-transform:uppercase;letter-spacing:.12em;color:#94a3b8;margin-bottom:.75rem;font-size:.85rem}.canvas-host{background:linear-gradient(#0ea5e926,#0f172ae6);border-radius:20px;min-height:420px;position:relative;overflow:hidden}.canvas-host canvas{display:block;width:100%!important;height:100%!important}.overlay-host{pointer-events:none;position:absolute;inset:auto 2rem 2rem}.overlay-card{color:#e2e8f0;background:#020617bf;border:1px solid #94a3b833;border-radius:16px;flex-direction:column;gap:.35rem;max-width:360px;padding:.9rem 1rem;display:inline-flex}.warning{color:#fecaca;margin-top:.75rem}.xr-guidance{margin-top:.75rem}.xr-guidance p{color:#cbd5e1;margin:0 0 .6rem}.xr-guidance-action{font-weight:700;text-decoration:none;display:inline-block}.xr-guidance-hint{color:#94a3b8;margin:.6rem 0 0;font-size:.85rem}.xr-guidance .secondary{margin-top:.6rem}@media (width<=768px){.stage-shell{width:min(100% - 1rem,100%);padding-top:1rem}.canvas-host{min-height:300px}.overlay-host{inset:auto 1rem 1rem}}.qr-scan-panel{background:#0f172a99;border:1px solid #7cf5c040;border-radius:16px;margin:1rem 0;padding:1rem 1.25rem}.qr-status{margin:.4rem 0;font-size:1.05rem}.qr-status[data-status=matched]{color:#7cf5c0}.qr-status[data-status=unknown],.qr-status[data-status=invalid]{color:#ffb86c}.qr-asset{color:#cbd5e1;margin:.2rem 0 .6rem;font-size:.85rem}.qr-scan-actions{flex-wrap:wrap;gap:.6rem;display:flex}.xr-view{background:#000;position:fixed;inset:0;overflow:hidden}.xr-camera{object-fit:cover;z-index:1;width:100%;height:100%;position:absolute;inset:0}.xr-canvas-host{z-index:0;position:absolute;inset:0}.xr-canvas-host>canvas{display:block;width:100%!important;height:100%!important}.xr-overlay-host{z-index:2;pointer-events:none;position:absolute;inset:0}.scan-hud{top:max(1rem, env(safe-area-inset-top));z-index:10;text-align:center;pointer-events:none;flex-direction:column;align-items:center;gap:.35rem;display:flex;position:absolute;left:50%;transform:translate(-50%)}.scan-chip{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#eff6ff;background:#02061799;border:1px solid #94a3b84d;border-radius:999px;padding:.55rem 1.1rem;font-size:.95rem;font-weight:600}.scan-chip[data-status=matched]{color:#7cf5c0;border-color:#7cf5c080}.scan-chip[data-status=unknown],.scan-chip[data-status=invalid]{color:#ffb86c;border-color:#ffb86c80}.scan-sub{color:#cbd5e1;font-size:.8rem}.scan-error{z-index:10;text-align:center;color:#fca5a5;width:min(420px,90%);font-size:.95rem;position:absolute;bottom:25%;left:50%;transform:translate(-50%)}.sim-btn{bottom:max(1rem, env(safe-area-inset-bottom));right:max(1rem, env(safe-area-inset-right));z-index:11;color:#cbd5e1;cursor:pointer;background:#0206178c;border:1px solid #94a3b859;border-radius:999px;padding:.5rem .9rem;font-size:.8rem;position:absolute}.sim-btn:hover{color:#eff6ff}.reticle{z-index:5;pointer-events:none;border:3px solid #7cf5c0e6;border-radius:50%;width:92px;height:92px;margin:-46px 0 0 -46px;animation:1.4s ease-in-out infinite reticle-pulse;position:absolute;top:56%;left:50%;box-shadow:0 0 0 2px #02061780,inset 0 0 24px #7cf5c080}.reticle:after{content:"";background:#7cf5c0f2;border-radius:50%;width:8px;height:8px;margin:-4px 0 0 -4px;position:absolute;top:50%;left:50%}@keyframes reticle-pulse{0%,to{opacity:.85;transform:scale(1)}50%{opacity:1;transform:scale(1.12)}}.placed-cube{z-index:5;perspective:600px;pointer-events:none;width:120px;height:120px;margin:-60px 0 0 -60px;position:absolute;top:56%;left:50%}.cube{transform-style:preserve-3d;animation:6s linear infinite cube-spin;position:absolute;inset:0}.cube-face{background:#38bdf852;border:1px solid #7dd3fce6;width:120px;height:120px;position:absolute;box-shadow:inset 0 0 20px #38bdf859}.cube-face--front{transform:translateZ(60px)}.cube-face--back{transform:rotateY(180deg)translateZ(60px)}.cube-face--right{transform:rotateY(90deg)translateZ(60px)}.cube-face--left{transform:rotateY(-90deg)translateZ(60px)}.cube-face--top{transform:rotateX(90deg)translateZ(60px)}.cube-face--bottom{transform:rotateX(-90deg)translateZ(60px)}@keyframes cube-spin{0%{transform:rotateX(-22deg)rotateY(0)}to{transform:rotateX(-22deg)rotateY(360deg)}}.scan-chip[data-placement=ready]{color:#7cf5c0;border-color:#7cf5c08c}.scan-chip[data-placement=placed]{color:#7dd3fc;border-color:#7dd3fc8c}
