.viewer{position:relative;width:100%;height:100%}.viewer-frame{position:relative;width:100%;height:100%;overflow:hidden;touch-action:none;background:#1a1a1a}.viewer-hotspot-overlay{width:100%;height:100%}.viewer-hotspot-overlay path[id]{fill:transparent;stroke:transparent;stroke-width:6px;vector-effect:non-scaling-stroke;pointer-events:fill;cursor:pointer;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}.viewer-hotspot-overlay path[id]:hover{fill:#4ade8033}.viewer-hotspot-overlay path[id].selected{fill:#4ade8059;stroke:#4ade80;filter:drop-shadow(0 0 4px #4ade80)}.viewer-hotspot-overlay.highlight-all path[id]{fill:#4ade8033;stroke:#4ade80}.viewer-controls{position:absolute;top:8px;left:8px}.spec-panel{position:fixed;left:0;right:0;bottom:0;max-height:45vh;overflow-y:auto;background:var(--surface-accent);border-top:1px solid var(--border);border-radius:12px 12px 0 0;padding:12px 16px 16px;box-shadow:0 -8px 24px #0006;z-index:10}.spec-panel-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;font-size:1.1em;color:var(--text)}.spec-panel-close{background:none;border:none;color:var(--text-muted);font-size:1.1em;line-height:1;cursor:pointer;padding:4px}.spec-panel-close:hover{color:var(--text)}.spec-panel-error{color:var(--status-error);margin:0}.spec-panel-fields{margin:0}.spec-panel-field{display:grid;grid-template-columns:140px 1fr;gap:8px;padding:6px 0;border-bottom:1px solid var(--border)}.spec-panel-field:last-child{border-bottom:none}.spec-panel-field dt{color:var(--text-muted);font-size:.85em}.spec-panel-field dd{margin:0;color:var(--text)}.spec-panel-empty{color:var(--text-muted);font-style:italic;margin:0}@media(min-width:768px){.spec-panel{left:auto;top:0;right:0;bottom:0;width:320px;max-height:none;border-top:none;border-left:1px solid var(--border);border-radius:0;box-shadow:-8px 0 24px #0006}}.dev-viewer-page{display:flex;flex-direction:column;width:100%;height:100%}.dev-viewer-frame{flex:1;min-height:0}.dev-viewer-log{flex:0 0 auto;max-height:25vh;overflow-y:auto;background:var(--surface);color:var(--text-muted);font-family:monospace;font-size:.8em;padding:8px}.signin-page{min-height:100vh;display:flex;background:var(--bg);color:var(--text)}.signin-brand{display:none}.signin-form-panel{flex:1;display:flex;align-items:center;justify-content:center;padding:24px 16px}.signin-card{background:var(--surface-accent);border:1px solid var(--border);border-radius:16px;padding:40px 36px 32px;width:100%;max-width:400px;box-shadow:0 24px 64px #00000073}.signin-logo-block{display:flex;flex-direction:column;align-items:center;gap:10px;margin-bottom:28px}.signin-logo-mark{font-size:22px;font-weight:700;letter-spacing:-.3px;color:var(--text)}.signin-tagline{font-size:10px;font-weight:600;letter-spacing:.1em;color:var(--text-muted);text-transform:uppercase;text-align:center;line-height:1.5}.signin-heading{text-align:center;margin-bottom:28px}.signin-heading h1{font-size:22px;font-weight:700;margin-bottom:6px;letter-spacing:-.2px}.signin-heading p{font-size:13.5px;color:var(--text-muted)}.signin-divider{border:none;border-top:1px solid var(--border);margin:0 -36px 28px}.signin-form{display:flex;flex-direction:column;gap:14px}.signin-error{background:color-mix(in srgb,var(--status-error) 15%,var(--surface));border:1px solid var(--status-error);border-radius:8px;padding:.6rem .9rem;font-size:13px}.signin-field{display:flex;flex-direction:column;gap:6px}.signin-field label{font-size:12.5px;font-weight:500;color:var(--text-muted)}.signin-field input{width:100%;background:#ffffff0d;border:1px solid var(--border);border-radius:10px;padding:12px 14px;font-size:14px;font-family:inherit;color:var(--text);outline:none;transition:border-color .15s,background .15s}.signin-field input::placeholder{color:var(--text-muted)}.signin-field input:focus{border-color:var(--primary);background:color-mix(in srgb,var(--primary) 6%,transparent)}.signin-password-wrap{position:relative;display:flex;align-items:center}.signin-eye-btn{position:absolute;right:10px;background:none;border:none;cursor:pointer;padding:4px 8px;color:var(--text-muted);font-size:12px}.signin-eye-btn:hover{color:var(--text)}.signin-submit{width:100%;background:var(--primary);color:var(--bg);border:none;border-radius:10px;padding:13px 20px;font-size:14.5px;font-weight:600;font-family:inherit;cursor:pointer;margin-top:4px}.signin-submit:hover{background:color-mix(in srgb,var(--primary) 85%,black)}.signin-submit:disabled{opacity:.5;cursor:not-allowed}.signin-footer-note{text-align:center;font-size:12.5px;color:var(--text-muted);margin-top:20px}.signin-footer-note a{color:var(--primary)}@media(min-width:900px){.signin-form-panel{width:460px;flex-shrink:0;background:var(--surface);border-left:1px solid var(--border);padding:48px 40px}.signin-card{border:none;box-shadow:none;background:transparent;padding:0;max-width:360px}.signin-brand{display:flex;flex:1;flex-direction:column;align-items:flex-start;justify-content:center;padding:60px 64px;background:radial-gradient(ellipse 70% 60% at 30% 40%,color-mix(in srgb,var(--primary) 18%,transparent) 0%,transparent 65%),var(--bg)}.signin-brand-logo{display:flex;flex-direction:column;align-items:flex-start;gap:4px;margin-bottom:48px}.signin-brand .signin-logo-mark{font-size:26px}.signin-brand .signin-tagline{text-align:left}.signin-headline{font-size:36px;font-weight:700;line-height:1.25;letter-spacing:-.5px;margin-bottom:20px;max-width:380px}.signin-headline span{color:var(--primary)}.signin-desc{font-size:15px;color:var(--text-muted);line-height:1.65;max-width:360px;margin-bottom:48px}.signin-pills{display:flex;gap:10px;flex-wrap:wrap}.signin-pill{background:#ffffff0f;border:1px solid var(--border);border-radius:100px;padding:7px 14px;font-size:12.5px;color:var(--text-muted)}}.presentation-page{min-height:100vh;background:var(--bg);color:var(--text);padding:48px 24px;display:flex;flex-direction:column;align-items:center;gap:40px}.presentation-hero{max-width:560px;text-align:center}.presentation-logo{font-size:20px;font-weight:700;color:var(--primary)}.presentation-hero h1{font-size:28px;font-weight:700;margin:16px 0 12px;letter-spacing:-.3px}.presentation-hero p{color:var(--text-muted);font-size:15px;line-height:1.6}.presentation-back{margin-top:16px}.presentation-back a{color:var(--primary)}.presentation-forms{display:flex;flex-wrap:wrap;gap:24px;justify-content:center;width:100%;max-width:800px}.presentation-card{background:var(--surface-accent);border:1px solid var(--border);border-radius:12px;padding:24px;flex:1;min-width:280px;max-width:360px}.presentation-card h2{font-size:17px;margin-bottom:4px}.presentation-card-note{color:var(--text-muted);font-size:12.5px;margin-bottom:16px}.presentation-card form{display:flex;flex-direction:column;gap:10px}.presentation-card input,.presentation-card textarea{background:#ffffff0d;border:1px solid var(--border);border-radius:8px;padding:10px 12px;font-size:13.5px;font-family:inherit;color:var(--text);outline:none}.presentation-card input::placeholder,.presentation-card textarea::placeholder{color:var(--text-muted)}.presentation-card input:focus,.presentation-card textarea:focus{border-color:var(--primary)}.presentation-card button{background:var(--primary);color:var(--bg);border:none;border-radius:8px;padding:10px 16px;font-weight:600;font-size:13.5px;font-family:inherit;cursor:pointer;margin-top:4px}.presentation-card button:hover{background:color-mix(in srgb,var(--primary) 85%,black)}.presentation-card button:disabled{opacity:.5;cursor:not-allowed}.presentation-error{background:color-mix(in srgb,var(--status-error) 15%,var(--surface));border:1px solid var(--status-error);border-radius:8px;padding:.5rem .75rem;font-size:12.5px}.presentation-success{background:color-mix(in srgb,var(--status-ok) 15%,var(--surface));border:1px solid var(--status-ok);border-radius:8px;padding:.6rem .9rem;font-size:13px}:root{--bg: #060a14;--surface: #0a0f1e;--surface-raised: #10141f;--surface-accent: #0d1b3e;--text: #ffffff;--text-muted: #93c5fd;--primary: #60a5fa;--status-ok: #4ade80;--status-warn: #fbbf24;--status-error: #f87171;--status-special: #a78bfa;--border: #1e293b}html,body,#root{height:100%;margin:0}body{font-family:sans-serif}
