:root{--bg:#0d0f12;--bg-panel:#13161b;--bg-card:#1a1e25;--bg-hover:#1f242d;--border:#252a33;--border-light:#2e3540;--text-primary:#e8eaf0;--text-secondary:#7a8494;--text-muted:#4a5264;--accent:#4f9cf9;--accent-dim:#1e3a5f;--accent-glow:#4f9cf926;--success:#3ecf8e;--warning:#f5a623;--danger:#e5484d;--font-display:"Plus Jakarta Sans",sans-serif;--font-mono:"DM Mono",monospace;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--transition:180ms ease;--navbar-height:48px}*,:after,:before{box-sizing:border-box;margin:0;padding:0}#root,body,html{-webkit-font-smoothing:antialiased;background:#0d0f12;background:var(--bg);color:#e8eaf0;color:var(--text-primary);font-family:Plus Jakarta Sans,sans-serif;font-family:var(--font-display);font-size:14px;height:100%;overflow-x:hidden}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:#0000}::-webkit-scrollbar-thumb{background:#2e3540;background:var(--border-light);border-radius:99px}::-webkit-scrollbar-thumb:hover{background:#4a5264;background:var(--text-muted)}button{border:none;cursor:pointer;font-family:inherit;outline:none}a{color:inherit;text-decoration:none}.login-page{background:var(--bg);height:100vh;justify-content:center;padding:24px;width:100%}.login-brand,.login-page{align-items:center;display:flex}.login-brand{flex-direction:column;gap:6px;margin-bottom:32px;text-align:center}.login-wordmark{color:var(--text-primary);font-family:var(--font-display);font-size:28px;font-weight:800;letter-spacing:-.6px}.login-wordmark em{color:var(--accent);font-style:normal}.login-tagline{color:var(--text-muted);font-family:var(--font-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase}.login-card{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:0 20px 60px #00000059;max-width:380px;padding:32px;width:100%}.login-card-title{color:var(--text-primary);font-family:var(--font-display);font-size:17px;font-weight:700;margin:0 0 4px}.login-card-sub{color:var(--text-secondary);font-size:13px;margin:0 0 24px}.login-field{margin-bottom:16px}.login-field label{color:var(--text-muted);display:block;font-family:var(--font-mono);font-size:11px;letter-spacing:.06em;margin-bottom:6px;text-transform:uppercase}.login-submit{margin-top:8px;width:100%}.login-error{margin-bottom:16px}.login-footer{color:var(--text-muted);font-family:var(--font-mono);font-size:11px;letter-spacing:.04em;margin-top:24px;text-align:center}.welcome-page{flex:1 1;gap:36px;min-height:0;overflow-y:auto;padding:48px}.welcome-hero,.welcome-page{align-items:center;display:flex;flex-direction:column}.welcome-hero{gap:20px;width:100%}.hero-logo{flex-shrink:0;height:80px;object-fit:contain;width:auto}.hero-title{color:var(--text-primary);font-family:var(--font-display);font-size:42px;font-weight:800;letter-spacing:-1.2px;line-height:1}.hero-title em{color:var(--accent);font-style:normal}.hero-sub{color:var(--text-secondary);font-size:15px;line-height:1.65;text-align:center;white-space:nowrap}.announcement-line{align-items:center;color:var(--accent);display:flex;gap:8px}.announcement-line-text{color:var(--text-secondary);font-size:13px}.announcement-line-text strong{color:var(--text-primary);font-weight:600}.announcement-line-date{color:var(--text-muted);font-family:var(--font-mono)}.flagship-card{align-items:center;background:linear-gradient(135deg,var(--accent-dim) 0,var(--bg-panel) 55%);border:1px solid #4f9cf959;border-radius:var(--radius-lg);color:inherit;display:flex;gap:24px;max-width:860px;padding:32px 36px;text-decoration:none;transition:border-color var(--transition),transform var(--transition),box-shadow var(--transition);width:100%}.flagship-card:hover{border-color:#4f9cf9b3;box-shadow:0 12px 32px #4f9cf929;transform:translateY(-2px)}.flagship-icon{align-items:center;background:#4f9cf924;border:1px solid #4f9cf94d;border-radius:var(--radius-lg);color:var(--accent);display:flex;flex-shrink:0;height:72px;justify-content:center;width:72px}.flagship-body{flex:1 1;min-width:0}.flagship-name{color:var(--text-primary);font-family:var(--font-display);font-size:22px;font-weight:800;letter-spacing:-.3px;margin-bottom:6px}.flagship-desc{color:var(--text-secondary);font-size:13.5px;line-height:1.6}.flagship-cta{background:var(--accent);border-radius:999px;color:#fff;flex-shrink:0;font-family:var(--font-mono);font-size:12.5px;font-weight:700;letter-spacing:.03em;padding:11px 22px;transition:background var(--transition),transform var(--transition);white-space:nowrap}.flagship-card:hover .flagship-cta{transform:translateX(2px)}.quick-links-row{gap:12px}.quick-link,.quick-links-row{align-items:center;display:flex}.quick-link{background:var(--bg-panel);border:1px solid var(--border);border-radius:999px;color:var(--text-secondary);font-size:13px;font-weight:600;gap:8px;padding:9px 18px;text-decoration:none;transition:border-color var(--transition),color var(--transition),background var(--transition)}.quick-link:hover{background:var(--bg-card);border-color:var(--border-light);color:var(--text-primary)}@media (max-width:640px){.welcome-page{gap:28px;padding:24px 20px}.hero-logo{height:48px}.hero-title{font-size:28px;letter-spacing:-.8px}.hero-sub{font-size:13px;white-space:normal}.announcement-line-text{font-size:12px}.flagship-card{align-items:stretch;flex-direction:column;gap:14px;padding:24px 20px;text-align:center}.flagship-icon{align-self:center}.flagship-cta{text-align:center}.quick-links-row{flex-wrap:wrap;justify-content:center}}.viewer-viewport{background:var(--bg);overflow:hidden;position:relative}.viewer-canvas,.viewer-viewport{height:100%;width:100%}.viewer-canvas canvas{display:block;height:100%!important;width:100%!important}.viewport-overlay{align-items:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0d0f12e6;color:var(--text-secondary);display:flex;flex-direction:column;font-size:14px;gap:14px;inset:0;justify-content:center;position:absolute;z-index:5}.viewport-overlay.error{color:var(--danger)}.viewport-overlay code{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-muted);font-family:var(--font-mono);font-size:11px;max-width:340px;padding:6px 14px;text-align:center}.overlay-icon{font-size:24px}.loading-ring{animation:spin .9s linear infinite;border:2px solid var(--border-light);border-radius:50%;border-top-color:var(--accent);height:34px;width:34px}.measure-result{align-items:center;background:#1e2433;border:1px solid #63b3ed66;border-radius:8px;bottom:96px;box-shadow:0 4px 16px #0006;display:flex;gap:12px;left:50%;padding:8px 16px;position:absolute;transform:translateX(-50%);z-index:10}.measure-label{color:#94a3b8;font-size:11px;letter-spacing:.05em;text-transform:uppercase}.measure-value{color:#63b3ed;font-family:monospace;font-size:16px;font-weight:600}.measure-clear{background:none;border:none;color:#94a3b8;cursor:pointer;font-size:14px;padding:0 2px}.measure-clear:hover{color:#fff}.dt-tools-toggle{align-items:center;-webkit-appearance:none;appearance:none;background:linear-gradient(135deg,#4f9cf929,#4f9cf90a);border:1px solid #4f9cf94d;border-radius:20px;box-shadow:0 1px 3px #0000004d;color:#ffffffe0;cursor:pointer;display:flex;font-family:DM Mono,monospace;font-size:11.5px;font-weight:600;gap:8px;letter-spacing:.04em;outline:none;padding:5px 14px 5px 8px;transition:background .15s ease,border-color .15s ease,box-shadow .15s ease,transform .15s ease}.dt-tools-toggle.compact{gap:6px;padding:6px 10px}.dt-tools-toggle:hover:not(:disabled){background:linear-gradient(135deg,#4f9cf942,#4f9cf912);border-color:#4f9cf999;box-shadow:0 2px 10px #4f9cf959;transform:translateY(-1px)}.dt-tools-toggle.open{background:linear-gradient(135deg,#4f9cf966,#4f9cf924);border-color:#4f9cf9;box-shadow:0 2px 12px #4f9cf973}.dt-tools-toggle:disabled{cursor:not-allowed;opacity:.4}.dt-tools-toggle-icon{align-items:center;background:#4f9cf938;border-radius:50%;color:#7fb4ff;display:flex;flex-shrink:0;height:22px;justify-content:center;transition:background .15s ease,transform .2s ease;width:22px}.dt-tools-toggle.open .dt-tools-toggle-icon{background:#4f9cf9;color:#fff;transform:rotate(90deg)}.dt-tools-badge{background:#4f9cf9;border-radius:8px;box-shadow:0 0 6px 1px #4f9cf9b3;color:#fff;font-size:9.5px;font-weight:700;height:16px;min-width:16px;padding:0 4px}.dt-panel-toggle,.dt-tools-badge{align-items:center;display:flex;justify-content:center}.dt-panel-toggle{-webkit-appearance:none;appearance:none;background:linear-gradient(135deg,#4f9cf929,#4f9cf90a);border:1px solid #4f9cf94d;border-radius:50%;box-shadow:0 1px 3px #0000004d;color:#7fb4ff;cursor:pointer;flex-shrink:0;height:30px;outline:none;transition:background .15s ease,border-color .15s ease,box-shadow .15s ease,transform .15s ease;width:30px}.dt-panel-toggle:hover:not(:disabled){background:linear-gradient(135deg,#4f9cf942,#4f9cf912);border-color:#4f9cf999;box-shadow:0 2px 10px #4f9cf959;transform:translateY(-1px)}.dt-panel-toggle.open{background:linear-gradient(135deg,#4f9cf966,#4f9cf924);border-color:#4f9cf9;box-shadow:0 2px 12px #4f9cf973;color:#fff}.dt-panel-toggle:disabled{cursor:not-allowed;opacity:.4}.dt-panel-toggle-icon{align-items:center;display:flex;justify-content:center;transition:transform .2s ease}.dt-panel-toggle:not(.open) .dt-panel-toggle-icon{transform:rotate(180deg)}.dt-tool-group-header{cursor:pointer;transition:background .12s ease}.dt-tool-group-header:hover{background:#4f9cf912}.dt-tool-chevron{display:flex;flex-shrink:0;transition:transform .2s ease}.dt-tool-chevron.open{transform:rotate(90deg)}.dt-tool-group-body{animation:dtToolGroupIn .16s ease}@keyframes dtToolGroupIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.dt-tool-item{-webkit-appearance:none;appearance:none;cursor:pointer;outline:none;transition:background .12s ease,border-color .12s ease,color .12s ease;width:100%}.dt-tool-item:disabled{color:#ffffff40!important;opacity:1}.dt-tool-item:hover:not(:disabled){background:#4f9cf921!important;border-left-color:#4f9cf98c!important;color:#fff!important}.dt-tool-item.active{background:#4f9cf929!important;border-left-color:#4f9cf9!important;color:#fff!important}.dt-tool-item:disabled{cursor:not-allowed}.dt-header-tools-scroll{-webkit-overflow-scrolling:touch;scrollbar-width:none}.dt-header-tools-scroll::-webkit-scrollbar{display:none}@keyframes spin{to{transform:rotate(1turn)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.3}}
/*# sourceMappingURL=main.d21d51f8.css.map*/