:root{--a-bg:#05070b;--a-panel:#0b1018;--a-line:rgba(167,193,231,.16);--a-line2:rgba(167,193,231,.28);--a-text:#f1f5fa;--a-muted:#8795a8;--a-blue:#6797ff;--a-blue2:#9bbcff}
*{box-sizing:border-box}.authoring-body{margin:0;background:var(--a-bg);color:var(--a-text);font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}.authoring-body.is-locked{min-height:100vh;overflow:hidden}.authoring-lock{position:relative;min-height:100svh;display:grid;place-items:center;padding:92px 24px 48px;background:radial-gradient(circle at 72% 18%,rgba(83,132,255,.12),transparent 31%),radial-gradient(circle at 16% 78%,rgba(83,132,255,.06),transparent 32%),#05070b}.authoring-lock-grid{position:absolute;inset:0;opacity:.22;background-image:linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px);background-size:52px 52px;mask-image:linear-gradient(to bottom,black,transparent 82%)}.authoring-lock-brand{position:absolute;top:30px;left:clamp(24px,5vw,72px);z-index:2;color:#fff;text-decoration:none;font-size:24px;font-weight:800;letter-spacing:-.07em}.authoring-lock-brand b{color:var(--a-blue);margin-left:2px}.authoring-login-card{position:relative;z-index:2;width:min(100%,510px);border:1px solid var(--a-line);background:rgba(8,12,18,.84);backdrop-filter:blur(24px);padding:clamp(30px,5vw,54px);box-shadow:0 30px 90px rgba(0,0,0,.35)}.authoring-kicker{font-size:9px;letter-spacing:.18em;color:var(--a-blue2);margin-bottom:28px}.authoring-login-card h1{font-size:clamp(46px,7vw,76px);line-height:.9;letter-spacing:-.065em;font-weight:520;margin:0 0 22px}.authoring-login-card>p{color:#a6b1bf;font-size:16px;line-height:1.55;margin:0 0 34px;max-width:420px}.authoring-login-card form{display:grid;gap:18px}.authoring-login-card label{display:grid;gap:8px}.authoring-login-card label span{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:#8795a8}.authoring-login-card input{width:100%;height:52px;border:1px solid var(--a-line2);background:#070b11;color:#fff;padding:0 14px;font:inherit;outline:none;border-radius:0}.authoring-login-card input:focus{border-color:rgba(103,151,255,.72);box-shadow:0 0 0 3px rgba(103,151,255,.08)}.authoring-login-card button{height:52px;border:1px solid rgba(103,151,255,.55);background:var(--a-blue);color:#04070c;font-weight:750;font-size:12px;letter-spacing:.06em;text-transform:uppercase;cursor:pointer;margin-top:4px}.authoring-login-card button:hover{background:#83a9ff}.authoring-login-card small{display:block;margin-top:25px;color:#667386;font-size:10px;letter-spacing:.05em}.authoring-error{border:1px solid rgba(255,119,133,.3);background:rgba(255,119,133,.07);color:#ffc0c7;font-size:12px;line-height:1.5;padding:13px 14px;margin:0 0 20px}.authoring-workspace{height:100dvh;width:100%;overflow:hidden;background:#05070b}.authoring-session-bar{position:absolute;z-index:999999;top:0;left:0;right:0;height:40px;display:flex;align-items:center;justify-content:space-between;padding:0 14px;background:rgba(4,7,11,.88);border-bottom:1px solid rgba(167,193,231,.13);backdrop-filter:blur(12px);font-size:9px;letter-spacing:.13em;color:#8390a1;pointer-events:auto}.authoring-session-bar b{color:#eaf1fa}.authoring-session-bar>div{display:flex;align-items:center;gap:14px}.authoring-session-bar a{color:#9bbcff;text-decoration:none}.authoring-session-user{color:#667386}.authoring-mount{position:absolute;inset:40px 0 0;overflow:hidden}.authoring-mount>.nmx3d-authoring-embed{height:calc(100dvh - 40px)!important;min-height:0!important}.authoring-empty{height:100%;display:grid;place-items:center;padding:40px}.authoring-empty>div{max-width:680px}.authoring-empty span{font-size:9px;letter-spacing:.18em;color:#9bbcff}.authoring-empty h2{font-size:clamp(38px,6vw,72px);line-height:.95;letter-spacing:-.055em;font-weight:520;margin:18px 0}.authoring-empty p{color:#8795a8;font-size:15px;line-height:1.6}@media(max-width:720px){.authoring-lock{padding-left:18px;padding-right:18px}.authoring-login-card{padding:30px 24px}.authoring-session-user{display:none}}

/* NMX3D authoring first-paint curtain. This exists outside React/R3F so it can
   paint immediately while the protected authoring bundle and .nmxa are still
   downloading/decrypting. It hands off only after the real NMX loader mounts. */
.authoring-bootstrap-loader{position:absolute;inset:0;z-index:999990;display:grid;place-items:center;background:#05070b;pointer-events:none;opacity:1;transition:opacity 140ms ease;contain:strict;transform:translateZ(0);backface-visibility:hidden}
.authoring-bootstrap-loader.is-releasing{opacity:0}
.authoring-bootstrap-box{pointer-events:none;display:grid;place-items:center;gap:10px;padding:14px 16px;border:1px solid rgba(255,255,255,.14);border-radius:14px;background:radial-gradient(circle at 30% 25%,rgba(255,255,255,.12),rgba(255,255,255,.02) 60%),linear-gradient(180deg,rgba(255,255,255,.08),rgba(255,255,255,.02)),rgba(12,12,14,.84);box-shadow:0 1px 0 rgba(255,255,255,.06) inset,0 18px 44px rgba(0,0,0,.55)}
.authoring-bootstrap-spinner{width:26px;height:26px;border:2px solid rgba(255,255,255,.22);border-top-color:rgba(160,255,210,.92);border-radius:999px;will-change:transform;transform:translate3d(0,0,0) rotate(0deg);backface-visibility:hidden;contain:layout paint style;animation:nmxAuthoringBootSpin .9s linear infinite}
.authoring-bootstrap-text{color:rgba(255,255,255,.82);font-size:12px;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap}
@keyframes nmxAuthoringBootSpin{from{transform:translate3d(0,0,0) rotate(0deg)}to{transform:translate3d(0,0,0) rotate(360deg)}}
