@import "https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700&display=swap";*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#111;--bg-surface:#191919;--bg-panel:#1e1e1e;--bg-elevated:#252525;--bg-input:#141414;--bg-hover:#2a2a2a;--border:#2e2e2e;--border-subtle:#232323;--border-focus:#4a9eff;--text:#d1d1d1;--text-dim:#777;--text-bright:#eee;--text-muted:#555;--accent:#4a9eff;--accent-hover:#6ab4ff;--accent-soft:#4a9eff1a;--accent-glow:#4a9eff26;--danger:#ef4444;--success:#22c55e;--warning:#eab308;--radius-xs:4px;--radius:8px;--radius-lg:12px;--radius-xl:16px;--radius-pill:999px;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 4px 12px #0006;--shadow-lg:0 8px 32px #00000080;--shadow-glow:0 0 20px #4a9eff14;--font:"Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--font-mono:"SF Mono", "Fira Code", "Cascadia Code", monospace;--transition:.15s ease;--transition-smooth:.25s cubic-bezier(.4, 0, .2, 1)}body{font-family:var(--font);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;height:100vh;line-height:1.5;overflow:hidden}#root{height:100vh}input,select,button,textarea{font-family:inherit;font-size:13px}::selection{background:var(--accent-soft);color:var(--text-bright)}::-webkit-scrollbar{width:5px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:var(--radius-pill)}::-webkit-scrollbar-thumb:hover{background:var(--text-dim)}.app{background:var(--bg);flex-direction:column;height:100vh;display:flex}.app-header{background:var(--bg-surface);border-bottom:1px solid var(--border-subtle);z-index:10;flex-shrink:0;align-items:center;gap:16px;height:48px;padding:0 20px;display:flex}.app-title{color:var(--text-bright);white-space:nowrap;letter-spacing:-.02em;align-items:center;gap:8px;font-size:15px;font-weight:700;display:flex}.app-title:before{content:"";background:var(--accent);border-radius:6px;flex-shrink:0;width:20px;height:20px;display:inline-block}.header-loader{flex:1}.header-loader .file-loader{max-width:none;padding:0}.header-loader .file-loader-content{flex-direction:row;gap:8px}.header-loader .drop-zone,.header-loader .url-divider{display:none}.header-loader .url-input-row{flex:1}.header-loader .url-input{border-radius:var(--radius);padding:6px 12px;font-size:12px}.header-loader .url-btn{border-radius:var(--radius);padding:6px 14px;font-size:12px}.app-main{flex:1;display:flex;overflow:hidden}.welcome-screen{background:radial-gradient(ellipse at 50% 35%, #4a9eff0d 0%, transparent 55%), radial-gradient(circle, var(--border-subtle) 1px, transparent 1px);background-color:var(--bg);z-index:100;background-size:100% 100%,24px 24px;justify-content:center;align-items:center;animation:.8s ease-out welcome-bg-in;display:flex;position:fixed;inset:0}@keyframes welcome-bg-in{0%{opacity:0}to{opacity:1}}.welcome-card{flex-direction:column;align-items:center;gap:32px;animation:.6s cubic-bezier(.16,1,.3,1) both card-entrance;display:flex}@keyframes card-entrance{0%{opacity:0;transform:translateY(24px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}.welcome-brand{flex-direction:column;align-items:center;gap:12px;animation:.7s cubic-bezier(.16,1,.3,1) .1s both brand-entrance;display:flex}@keyframes brand-entrance{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.welcome-logo{background:var(--accent);border-radius:14px;width:48px;height:48px;animation:3s ease-in-out infinite alternate logo-glow;box-shadow:0 0 32px #4a9eff33,0 4px 16px #0000004d}@keyframes logo-glow{0%{box-shadow:0 0 24px #4a9eff26,0 4px 16px #0000004d}to{box-shadow:0 0 40px #4a9eff40,0 4px 16px #0000004d}}.welcome-title{color:var(--text-bright);letter-spacing:-.03em;font-size:28px;font-weight:700}.welcome-subtitle{color:var(--text-muted);text-align:center;max-width:320px;font-size:14px;line-height:1.5}.welcome-card .file-loader{animation:.6s cubic-bezier(.16,1,.3,1) .25s both loader-entrance}@keyframes loader-entrance{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.loading-state,.error-state{color:var(--text-dim);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:16px;display:flex}.error-state{color:var(--danger)}.fade-in{animation:.4s ease-out fade-in}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.spinner{border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:32px;height:32px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.canvas-area{background:var(--bg);background-image:radial-gradient(circle, var(--border-subtle) 1px, transparent 1px);background-size:24px 24px;flex-direction:column;flex:1;align-items:stretch;display:flex;position:relative;overflow:hidden}.rive-viewport{cursor:default;flex:1;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.rive-viewport.panning{cursor:grabbing}.rive-transform{transform-origin:50%;will-change:transform;width:100%;height:100%;transition:none}.rive-canvas{width:100%!important;height:100%!important}.zoom-indicator{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-pill);font-size:11px;font-family:var(--font-mono);color:var(--text-dim);pointer-events:none;opacity:.8;padding:4px 10px;position:absolute;top:12px;right:12px}.loading-overlay{-webkit-backdrop-filter:blur(8px);z-index:5;background:#111111b3;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.canvas-drag-over{outline:2px dashed var(--accent);outline-offset:-4px}.canvas-drop-hint{-webkit-backdrop-filter:blur(4px);z-index:6;background:#4a9eff0f;justify-content:center;align-items:center;animation:.15s ease-out fade-in;display:flex;position:absolute;inset:0}.canvas-drop-hint-content{background:var(--bg-elevated);border:1px solid var(--accent);border-radius:var(--radius-pill);color:var(--accent);box-shadow:var(--shadow-glow);padding:12px 24px;font-size:13px;font-weight:600}.playback-float{z-index:4;animation:.5s cubic-bezier(.34,1.56,.64,1) .3s both playback-bounce-in;position:absolute;bottom:16px;left:50%;transform:translate(-50%)}@keyframes playback-bounce-in{0%{opacity:0;transform:translate(-50%)translateY(20px)scale(.9)}to{opacity:1;transform:translate(-50%)translateY(0)scale(1)}}.playback-controls{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-pill);box-shadow:var(--shadow-lg);-webkit-backdrop-filter:blur(12px);gap:4px;padding:4px;display:flex}.playback-btn{width:36px;height:36px;color:var(--text);cursor:pointer;transition:all var(--transition);background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;font-size:14px;display:flex}.playback-btn:hover{background:var(--bg-hover);color:var(--text-bright)}.playback-btn:active{transform:scale(.92)}.file-loader{width:100%;max-width:460px;padding:32px}.file-loader.dragging .drop-zone{border-color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 4px var(--accent-soft), var(--shadow-glow);transform:scale(1.01)}.file-loader-content{flex-direction:column;gap:20px;display:flex}.drop-zone{border:1.5px dashed var(--border);border-radius:var(--radius-xl);cursor:pointer;transition:all var(--transition-smooth);background:var(--bg-surface);flex-direction:column;align-items:center;gap:16px;padding:44px 24px 36px;display:flex;position:relative}.drop-zone:hover{border-color:var(--text-muted);background:var(--bg-panel);box-shadow:var(--shadow-md)}.drop-visual{justify-content:center;align-items:center;display:flex}.drop-icon-ring{background:var(--bg-panel);border:1px solid var(--border);width:64px;height:64px;color:var(--text-dim);transition:all var(--transition-smooth);border-radius:50%;justify-content:center;align-items:center;display:flex}.drop-zone:hover .drop-icon-ring{border-color:var(--accent);color:var(--accent);background:var(--accent-soft);box-shadow:0 0 20px var(--accent-soft)}.file-loader.dragging .drop-icon-ring{border-color:var(--accent);color:var(--accent);background:var(--accent-soft);transform:translateY(-2px)}.drop-text-group{flex-direction:column;align-items:center;gap:4px;display:flex}.drop-title{color:var(--text-bright);font-size:14px;font-weight:600}.drop-subtitle{color:var(--text-muted);font-size:12px}.drop-badge{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-pill);font-size:11px;font-family:var(--font-mono);color:var(--text-dim);letter-spacing:.02em;padding:2px 10px;display:inline-block}.url-divider{align-items:center;gap:12px;display:flex}.url-divider-line{background:var(--border-subtle);flex:1;height:1px}.url-divider-text{color:var(--text-muted);white-space:nowrap;font-size:11px}.url-input-row{gap:8px;display:flex}.url-input{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);color:var(--text);transition:all var(--transition);outline:none;flex:1;padding:10px 14px;font-size:13px}.url-input:focus{border-color:var(--border-focus);box-shadow:0 0 0 3px var(--accent-soft);background:var(--bg-panel)}.url-input::placeholder{color:var(--text-muted)}.url-btn,.add-btn{background:var(--accent);color:#fff;border-radius:var(--radius-lg);cursor:pointer;white-space:nowrap;transition:all var(--transition);border:none;padding:10px 20px;font-size:13px;font-weight:600}.url-btn:hover,.add-btn:hover{background:var(--accent-hover);box-shadow:0 0 12px #4a9eff33}.url-btn:disabled{opacity:.4;cursor:not-allowed}.sidebar{background:var(--bg-surface);border-left:1px solid var(--border-subtle);flex-direction:column;width:360px;min-width:360px;animation:.4s cubic-bezier(.16,1,.3,1) both sidebar-slide-in;display:flex;overflow:hidden}@keyframes sidebar-slide-in{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}.sidebar-header{border-bottom:1px solid var(--border-subtle);justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.sidebar-title{color:var(--text-bright);letter-spacing:-.01em;font-size:13px;font-weight:700}.sidebar-file{font-size:11px;font-family:var(--font-mono);color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;background:var(--bg-panel);border-radius:var(--radius-xs);max-width:180px;padding:2px 8px;overflow:hidden}.sidebar-scroll{flex:1;padding-bottom:20px;overflow-y:auto}.panel{border-bottom:1px solid var(--border-subtle);animation:.35s cubic-bezier(.16,1,.3,1) both panel-reveal}.panel:first-child{animation-delay:50ms}.panel:nth-child(2){animation-delay:.1s}.panel:nth-child(3){animation-delay:.15s}.panel:nth-child(4){animation-delay:.2s}.panel:nth-child(5){animation-delay:.25s}.panel:nth-child(6){animation-delay:.3s}@keyframes panel-reveal{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.panel-header{color:var(--text-dim);text-transform:uppercase;letter-spacing:.06em;background:var(--bg-panel);-webkit-user-select:none;user-select:none;align-items:center;gap:6px;padding:10px 16px;font-size:11px;font-weight:600;display:flex}.panel-body{flex-direction:column;gap:8px;padding:12px 16px;display:flex}.control-row{justify-content:space-between;align-items:center;gap:12px;min-height:28px;display:flex}.control-label{color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;flex-shrink:0;max-width:150px;font-size:12px;overflow:hidden}.text-input,.number-input{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);transition:all var(--transition);outline:none;padding:6px 10px;font-size:12px}.text-input{flex:1;min-width:0}.number-input{text-align:right;width:56px;font-family:var(--font-mono);font-size:11px}.text-input:focus,.number-input:focus{border-color:var(--border-focus);box-shadow:0 0 0 2px var(--accent-soft)}.enum-select{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);min-width:0;color:var(--text);cursor:pointer;transition:all var(--transition);outline:none;flex:1;padding:6px 10px;font-size:12px}.enum-select:focus{border-color:var(--border-focus);box-shadow:0 0 0 2px var(--accent-soft)}.color-input{border:2px solid var(--border);border-radius:var(--radius);cursor:pointer;width:32px;height:32px;transition:border-color var(--transition);background:0 0;padding:0}.color-input:hover{border-color:var(--text-dim)}.number-control{flex:1;align-items:center;gap:8px;display:flex}.number-control input[type=range]{accent-color:var(--accent);flex:1;height:4px}.toggle-switch{border-radius:var(--radius-pill);background:var(--border);cursor:pointer;width:36px;height:20px;transition:background var(--transition-smooth);border:none;flex-shrink:0;padding:0;position:relative}.toggle-switch.active{background:var(--accent)}.toggle-knob{width:16px;height:16px;transition:transform var(--transition-smooth);box-shadow:var(--shadow-sm);background:#fff;border-radius:50%;position:absolute;top:2px;left:2px}.toggle-switch.active .toggle-knob{transform:translate(16px)}.trigger-btn{border:1px solid var(--border);border-radius:var(--radius-pill);color:var(--text-dim);cursor:pointer;transition:all var(--transition);background:0 0;padding:4px 12px;font-size:11px;font-weight:500}.trigger-btn:hover{border-color:var(--warning);color:var(--warning);background:#eab3080f}.trigger-btn.fired{background:var(--warning);color:#000;border-color:var(--warning);animation:.3s ease-out fire-pulse}@keyframes fire-pulse{0%{transform:scale(1)}50%{transform:scale(1.08)}to{transform:scale(1)}}.input-row{align-items:center;gap:8px;display:flex}.input-row .control-row{flex:1;min-width:0}.type-badge{font-size:9px;font-weight:600;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.04em;border-radius:var(--radius-pill);white-space:nowrap;border:1px solid;flex-shrink:0;justify-content:center;align-items:center;padding:1px 6px;line-height:1.6;display:inline-flex}.inputs-section{flex-direction:column;gap:6px;display:flex}.section-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;margin-top:4px;margin-bottom:2px;font-size:10px;font-weight:600}.info-block{align-items:center;gap:6px;font-size:12px;display:flex}.info-label{color:var(--text-muted);font-size:11px}.info-value{color:var(--text-dim);font-size:11px;font-family:var(--font-mono)}.add-row{gap:8px;margin-top:4px;display:flex}.add-btn{padding:6px 12px;font-size:11px}.empty-hint{color:var(--text-muted);font-size:11px;line-height:1.6}.export-row{justify-content:space-between;align-items:center;padding:4px 0;display:flex}.export-actions{gap:4px;display:flex}.export-btn{border:1px solid var(--border);border-radius:var(--radius);color:var(--text-dim);cursor:pointer;transition:all var(--transition);white-space:nowrap;background:0 0;padding:5px 10px;font-size:11px;font-weight:500}.export-btn:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.export-btn.copied{border-color:var(--success);color:var(--success);background:#22c55e0f}.skeleton-panel{border-bottom:1px solid var(--border-subtle);flex-direction:column;gap:10px;padding:12px 16px;animation:.35s cubic-bezier(.16,1,.3,1) both panel-reveal;display:flex}.skeleton-bar{border-radius:var(--radius-xs);background:linear-gradient(90deg, var(--bg-panel) 25%, var(--bg-elevated) 50%, var(--bg-panel) 75%);background-size:200% 100%;height:12px;animation:1.5s ease-in-out infinite skeleton-shimmer}.skeleton-bar.w-full{width:100%}.skeleton-bar.w-3-4{width:75%}.skeleton-bar.w-1-2{width:50%}.skeleton-bar.w-1-3{width:33%}.skeleton-bar.h-8{height:8px}.skeleton-bar.h-20{height:20px}.skeleton-bar.h-28{border-radius:var(--radius);height:28px}.skeleton-row{justify-content:space-between;align-items:center;gap:12px;display:flex}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.vm-nested{flex-direction:column;gap:4px;display:flex}.vm-toggle{width:100%;color:var(--text);font-size:12px;font-family:var(--font);cursor:pointer;text-align:left;transition:color var(--transition);background:0 0;border:none;align-items:center;gap:6px;padding:4px 0;display:flex}.vm-toggle:hover{color:var(--accent)}.vm-toggle-icon{color:var(--text-muted);margin-left:auto;font-size:10px}.vm-children{border-left:1px solid var(--border-subtle);flex-direction:column;gap:6px;margin-left:6px;padding-left:14px;animation:.2s ease-out panel-reveal;display:flex}.image-control{flex-direction:column;align-items:stretch;gap:6px}.image-control-body{flex-direction:column;gap:6px;display:flex}.image-preview{border-radius:var(--radius);border:1px solid var(--border);background:var(--bg-input);width:100%;max-height:80px;overflow:hidden}.image-preview img{object-fit:contain;width:100%;height:100%;display:block}.image-actions{gap:4px;display:flex}.image-url-input{flex:1;min-width:0;padding:5px 8px;font-size:11px}@media (width<=768px){.app-main{flex-direction:column}.sidebar{border-left:none;border-top:1px solid var(--border-subtle);width:100%;min-width:100%;max-height:50vh}}
