:root{--bg-base: #0a0a14;--bg-surface: #0f0f1a;--bg-elevated: rgba(15, 15, 26, .94);--bg-overlay: rgba(0, 0, 0, .55);--bg-input: rgba(255, 255, 255, .04);--bg-hover: rgba(39, 39, 42, .8);--bg-card: rgba(30, 30, 50, .5);--border-subtle: rgba(255, 255, 255, .06);--border-default: rgba(255, 255, 255, .08);--border-hover: rgba(255, 255, 255, .15);--accent: #7c3aed;--accent-hover: #6d28d9;--accent-light: #a78bfa;--accent-dim: rgba(124, 58, 237, .15);--accent-glow: rgba(124, 58, 237, .3);--text-primary: #e4e4e7;--text-secondary: #a1a1aa;--text-dim: #71717a;--text-muted: #52525b;--text-subtle: #3f3f46;--success: #10b981;--success-dim: rgba(16, 185, 129, .15);--error: #ef4444;--error-dim: rgba(239, 68, 68, .15);--warning: #f59e0b;--warning-dim: rgba(245, 158, 11, .15);--font-mono: "SF Mono", "Fira Code", "JetBrains Mono", monospace;--font-size-xs: 10px;--font-size-sm: 11px;--font-size-base: 12px;--font-size-md: 13px;--font-size-lg: 14px;--font-size-xl: 16px;--space-xs: 4px;--space-sm: 8px;--space-md: 12px;--space-lg: 16px;--space-xl: 20px;--space-2xl: 24px;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-xl: 12px;--radius-2xl: 14px;--z-world: 0;--z-hud: 5;--z-labels: 5;--z-panels: 50;--z-terminal: 100;--z-shop: 150;--z-console: 200;--z-overlay: 1000;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--shadow-lg: 0 8px 32px rgba(0, 0, 0, .5);--shadow-xl: 0 12px 48px rgba(0, 0, 0, .6);--transition-fast: .15s ease;--transition-normal: .2s ease;--transition-slow: .25s cubic-bezier(.4, 0, .2, 1)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;background:var(--bg-surface);color:var(--text-primary);font-family:var(--font-mono);font-size:var(--font-size-md);overflow:hidden}canvas#world-canvas{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block;z-index:var(--z-world)}#lab-overlay{display:none;position:absolute;top:0;right:0;bottom:0;left:0;z-index:10;grid-template-rows:44px 1fr;grid-template-columns:1fr 240px;grid-template-areas:"header  header" "main    main";pointer-events:none}#lab-overlay.visible{display:grid}#lab-overlay.visible>*{pointer-events:auto}#lab-header{grid-area:header;display:flex;align-items:center;gap:var(--space-lg);padding:0 var(--space-lg);border-bottom:1px solid var(--border-subtle);background:var(--bg-elevated);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}#lab-header h1{font-size:var(--font-size-lg);font-weight:600;color:var(--accent);letter-spacing:.5px}#lab-status{display:flex;align-items:center;gap:6px;font-size:var(--font-size-sm);color:var(--text-dim)}.status-dot{width:8px;height:8px;border-radius:50%;background:var(--warning);transition:background var(--transition-normal)}#lab-main{grid-area:main;display:grid;grid-template-rows:1fr 180px;grid-template-columns:1fr 240px;grid-template-areas:"sequencer  mixer" "peers      peers";gap:1px;background:var(--border-subtle)}section{background:#0f0f1aed;overflow:hidden;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}#sequencer-panel{grid-area:sequencer}#mixer-panel{grid-area:mixer}#peers-panel{grid-area:peers}.panel-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-sm) var(--space-md);border-bottom:1px solid var(--border-subtle)}.panel-header h2{font-size:var(--font-size-sm);font-weight:500;text-transform:uppercase;letter-spacing:1px;color:var(--text-dim)}.panel-controls{display:flex;align-items:center;gap:6px}#bpm-display{font-size:var(--font-size-lg);font-weight:600;color:var(--text-primary);min-width:30px;text-align:center}.btn-icon{background:var(--border-subtle);border:1px solid var(--bg-hover);color:var(--text-secondary);font-size:var(--font-size-base);width:28px;height:24px;border-radius:var(--radius-sm);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background var(--transition-fast),border-color var(--transition-fast)}.btn-icon:hover{background:var(--bg-hover);border-color:var(--accent);color:var(--text-primary)}.btn-icon.header-btn{width:28px;height:24px;margin-left:auto;font-size:var(--font-size-md);color:var(--error)}.btn-icon:active{background:#18181b}#sequencer-panel{grid-area:sequencer;display:flex;flex-direction:column}#step-grid{flex:1;overflow-y:auto;padding:8px}#mixer-panel{grid-area:mixer;display:flex;flex-direction:column}#track-meters{flex:1;padding:8px;font-size:10px;color:#52525b;display:flex;flex-direction:column;justify-content:center;align-items:center}#peers-panel{grid-area:peers;display:flex;flex-direction:column}#peer-count{background:#1e1e32;color:#a1a1aa;font-size:11px;padding:1px 8px;border-radius:8px}#peer-canvas-container{flex:1;overflow:hidden}#peer-canvas{width:100%;height:100%;display:block}.join-overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:transparent;z-index:var(--z-terminal);pointer-events:none}.join-overlay>*{pointer-events:auto}.join-box{text-align:center;max-width:340px;width:100%;padding:32px 24px;background:#0f0f1af0;border:1px solid rgba(255,255,255,.08);border-radius:12px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 8px 32px #00000080}.join-box h2{font-size:28px;color:#7c3aed;margin-bottom:4px}.join-sub{font-size:var(--font-size-sm);color:var(--text-muted);margin-bottom:var(--space-md);min-height:18px}.join-field{margin-bottom:var(--space-lg)}.join-input{width:100%;padding:10px 14px;background:var(--border-subtle);border:1px solid var(--bg-hover);border-radius:var(--radius-md);color:var(--text-primary);font-family:var(--font-mono);font-size:var(--font-size-lg);text-align:center;outline:none;transition:border-color var(--transition-fast);box-sizing:border-box}.join-input:focus{border-color:var(--accent)}.join-input::placeholder{color:var(--text-muted)}.join-status{font-size:var(--font-size-base);color:var(--text-dim);margin-bottom:var(--space-xl);min-height:20px}.join-status.brand{color:var(--accent)}.join-status.searching{display:flex;align-items:center;justify-content:center;gap:var(--space-sm)}.btn{padding:10px var(--space-2xl);border:none;border-radius:var(--radius-md);font-family:var(--font-mono);font-size:var(--font-size-lg);font-weight:600;cursor:pointer;transition:background var(--transition-fast),opacity var(--transition-fast);width:100%;box-sizing:border-box}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-secondary{background:var(--border-subtle);color:var(--text-primary);border:1px solid var(--bg-hover)}.btn-secondary:hover:not(:disabled){background:var(--bg-hover);border-color:var(--accent)}.spinner{display:inline-block;width:14px;height:14px;border:2px solid var(--text-muted);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--bg-hover);border-radius:2px}.world-label{position:absolute;pointer-events:none;font-size:var(--font-size-sm);color:var(--text-secondary);white-space:nowrap;transform:translate(-50%);z-index:var(--z-labels);padding:3px 10px;background:#0a0a14c7;border:1px solid var(--border-default);border-radius:4px;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);text-transform:uppercase;letter-spacing:.05em;transition:opacity .3s}.world-label-accent{display:block;width:20px;height:2px;margin:4px auto 0;border-radius:1px}#minimap-wrap{position:fixed;top:16px;right:16px;z-index:var(--z-hud);border:1px solid var(--border-default);border-radius:var(--radius-lg);background:#0a0a14e0;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);padding:8px;box-shadow:var(--shadow-md);transition:transform .2s,box-shadow .2s}#minimap-wrap:hover{transform:scale(1.05);box-shadow:0 4px 32px #7c3aed26}#minimap-wrap canvas{display:block;width:200px;height:150px;border-radius:var(--radius-sm);cursor:pointer}#minimap-tooltip{position:fixed;z-index:calc(var(--z-hud) + 5);padding:4px 10px;background:#0a0a14eb;border:1px solid var(--accent);border-radius:var(--radius-sm);font-size:var(--font-size-xs);color:var(--text-primary);pointer-events:none;opacity:0;transition:opacity .15s;white-space:nowrap;letter-spacing:.02em;font-family:var(--font-mono)}#minimap-tooltip.visible{opacity:1}#controls-hint{position:fixed;bottom:24px;left:50%;transform:translate(-50%);z-index:var(--z-hud);padding:8px 18px;background:#0a0a14b3;border:1px solid var(--border-default);border-radius:var(--radius-lg);font-size:var(--font-size-xs);color:var(--text-muted);letter-spacing:.06em;text-transform:uppercase;pointer-events:none;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);transition:opacity .6s;display:flex;align-items:center;gap:12px}.controls-key{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:20px;padding:0 5px;background:#7c3aed1f;border:1px solid rgba(124,58,237,.25);border-radius:3px;font-size:10px;color:var(--accent-light)}#building-panel{position:fixed;bottom:0;left:50%;transform:translate(-50%) translateY(100%);width:min(480px,92vw);max-width:92vw;max-height:55vh;background:#0c0c1af0;border:1px solid var(--border-default);border-radius:var(--radius-xl) var(--radius-xl) 0 0;padding:20px 24px 24px;color:var(--text-primary);z-index:var(--z-panels);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:var(--shadow-lg);transition:transform .35s cubic-bezier(.16,1,.3,1);overflow:hidden}#building-panel.visible{transform:translate(-50%) translateY(0)}#building-panel .panel-grabber{width:36px;height:3px;border-radius:2px;background:var(--border-default);margin:0 auto 14px}#building-panel .panel-close-btn{position:absolute;top:14px;right:16px;background:none;border:none;color:var(--text-dim);font-size:16px;cursor:pointer;font-family:var(--font-mono);padding:4px;line-height:1;z-index:1}#building-panel .panel-close-btn:hover{color:var(--text-primary)}#building-panel .panel-scroll{padding:var(--space-lg) var(--space-xl);overflow-y:auto;max-height:50vh}#building-panel h2{font-size:15px;margin-bottom:var(--space-md);display:flex;align-items:center;gap:var(--space-sm)}#building-panel .level-badge{font-size:var(--font-size-xs);background:#ffffff14;padding:2px 6px;border-radius:var(--radius-sm);color:var(--text-secondary)}#building-panel .access-badge{font-size:9px;padding:2px 6px;border-radius:var(--radius-sm);text-transform:uppercase;letter-spacing:.3px}#building-panel .access-badge.restricted{background:var(--error-dim);color:var(--error)}.access-toggle-btn{font-family:var(--font-mono);font-size:9px;padding:2px 8px;border-radius:var(--radius-sm);text-transform:uppercase;letter-spacing:.4px;cursor:pointer;border:1px solid;transition:background var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast);line-height:1.4;background:none}.access-toggle-btn.public{color:var(--success);border-color:#10b98140;background:#10b9810f}.access-toggle-btn.public:hover{background:#10b98126;border-color:#10b98166;color:#6ee7b7}.access-toggle-btn.restricted{color:var(--error);border-color:#ef444440;background:#ef44440f}.access-toggle-btn.restricted:hover{background:#ef444426;border-color:#ef444466;color:#fca5a5}.module-section{margin-bottom:var(--space-md)}.module-section-header{font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.8px;color:var(--text-dim);margin-bottom:6px;display:flex;align-items:center;justify-content:space-between}.module-count{font-size:var(--font-size-xs);color:var(--text-muted);background:#ffffff0d;padding:1px 6px;border-radius:var(--radius-lg)}.module-empty{font-size:var(--font-size-sm);color:var(--text-muted);text-align:center;padding:10px;border:1px dashed var(--border-subtle);border-radius:var(--radius-md)}.module-entry{display:flex;align-items:center;gap:10px;width:100%;padding:var(--space-sm) 10px;background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-md);color:var(--text-primary);cursor:pointer;font-family:inherit;font-size:var(--font-size-base);text-align:left;transition:background var(--transition-fast),border-color var(--transition-fast);margin-bottom:var(--space-xs)}.module-entry:last-child{margin-bottom:0}.module-entry:hover{background:var(--bg-hover);border-color:var(--accent-glow)}.module-entry.active{border-color:var(--accent);background:var(--accent-dim)}.module-entry.available{opacity:.8;cursor:default}.module-entry.available:hover{opacity:1;border-color:var(--border-default)}.module-icon{font-size:18px;flex-shrink:0}.module-info{flex:1;min-width:0}.module-name{display:block;font-size:var(--font-size-base);font-weight:500;color:var(--text-primary)}.module-desc{display:block;font-size:var(--font-size-xs);color:var(--text-dim);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.module-action{font-size:var(--font-size-xs);font-weight:600;text-transform:uppercase;letter-spacing:.3px;color:var(--accent);flex-shrink:0;padding:4px 10px;border-radius:var(--radius-sm);background:var(--accent-dim);transition:background var(--transition-fast)}.module-entry:hover .module-action{background:var(--accent-glow)}.module-entry.active .module-action{color:var(--error);background:var(--error-dim)}.module-entry.active:hover .module-action{background:#ef444433}.module-entry.available .module-action.btn-install{color:var(--success);background:var(--success-dim)}.module-entry.available:hover .module-action.btn-install{background:#10b98133}.stats-section{border-top:1px solid var(--border-subtle);padding-top:var(--space-sm)}.stat-row{display:flex;justify-content:space-between;align-items:center;padding:5px 0;font-size:var(--font-size-base);border-bottom:1px solid rgba(255,255,255,.04)}.stat-row:last-child{border-bottom:none}.stat-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;font-size:var(--font-size-xs);min-width:100px}.stat-value{font-weight:600;font-size:var(--font-size-base);min-width:60px;text-align:right}.stat-bar-bg{flex:1;max-width:120px;height:6px;background:#ffffff14;border-radius:3px;overflow:hidden;margin:0 var(--space-sm)}.stat-bar-fill{height:100%;border-radius:3px;transition:width .3s ease}#console-panel{position:fixed;right:-480px;top:0;width:480px;max-width:100vw;height:100vh;background:#0a0a14f2;border-left:1px solid var(--border-default);z-index:var(--z-console);display:flex;flex-direction:column;transition:right var(--transition-slow);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:-4px 0 24px #0006}#console-panel.visible{right:0}.console-header{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-md) var(--space-lg);border-bottom:1px solid var(--border-subtle);flex-shrink:0}.console-title{font-size:var(--font-size-md);font-weight:600;color:var(--accent-light);white-space:nowrap}.console-settings{display:flex;align-items:center;gap:6px;flex:1}.console-api-key{flex:1;min-width:0;padding:6px 10px;background:var(--bg-input);border:1px solid var(--border-default);border-radius:var(--radius-sm);color:var(--text-primary);font-family:inherit;font-size:var(--font-size-sm);outline:none;transition:border-color var(--transition-fast)}.console-api-key:focus{border-color:var(--accent)}.console-api-key::placeholder{color:var(--text-muted)}.console-model-select{padding:5px 8px;background:var(--bg-input);border:1px solid var(--border-default);border-radius:var(--radius-sm);color:var(--text-secondary);font-family:inherit;font-size:var(--font-size-xs);cursor:pointer;outline:none}.console-model-select:focus{border-color:var(--accent)}.console-model-select option{background:#1a1a2e;color:var(--text-primary)}.console-workspace-select{max-width:130px;padding:5px 8px;background:var(--bg-input);border:1px solid var(--border-default);border-radius:var(--radius-sm);color:var(--text-secondary);font-family:inherit;font-size:var(--font-size-xs);cursor:pointer;outline:none;transition:border-color var(--transition-fast)}.console-workspace-select:focus{border-color:var(--accent)}.console-workspace-select option{background:#1a1a2e;color:var(--text-primary)}.console-status{font-size:var(--font-size-xs);color:var(--text-muted);min-width:12px}.console-voice-toggle{background:none;border:1px solid rgba(255,255,255,.08);border-radius:4px;color:#52525b;cursor:pointer;padding:4px 6px;font-size:14px;line-height:1;transition:color .15s,border-color .15s}.console-voice-toggle:hover{color:#a1a1aa;border-color:#ffffff26}.console-voice-toggle.active{color:#7c3aed;border-color:#7c3aed}.console-close-btn{background:none;border:none;color:#52525b;cursor:pointer;padding:4px 6px;font-size:14px;line-height:1;transition:color .15s}.console-close-btn:hover{color:#ef4444}.console-messages{flex:1;overflow-y:auto;padding:var(--space-md) var(--space-lg);display:flex;flex-direction:column;gap:var(--space-sm)}.console-msg{padding:10px 12px;border-radius:var(--radius-lg);font-size:var(--font-size-base);line-height:1.6;max-width:100%;white-space:pre-wrap;word-wrap:break-word}.console-msg.user{background:var(--accent-dim);border:1px solid rgba(124,58,237,.2);color:#c4b5fd;align-self:flex-end;max-width:85%}.console-msg.assistant{background:#ffffff0a;border:1px solid var(--border-subtle);color:#d4d4d8;align-self:flex-start;border-left:3px solid var(--accent-glow)}.console-msg.system{background:#ffffff05;color:var(--text-dim);font-size:var(--font-size-sm);text-align:center;border:none;padding:var(--space-sm)}.console-msg code{background:#0000004d;padding:1px 5px;border-radius:3px;font-family:inherit;font-size:var(--font-size-sm);color:var(--accent-light)}.console-msg pre{background:#0000004d;padding:var(--space-sm) 10px;border-radius:var(--radius-md);overflow-x:auto;margin:6px 0}.console-msg pre code{background:none;padding:0;font-size:var(--font-size-sm);color:var(--text-secondary)}.console-msg strong{color:var(--text-primary);font-weight:600}.console-msg.typing{background:#ffffff0a;border:1px solid var(--border-subtle);align-self:flex-start;padding:10px 14px}.typing-dots{color:var(--text-dim);font-size:var(--font-size-md)}.cursor-blink{animation:blink .8s step-end infinite;color:var(--accent)}.console-input-row{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-md) var(--space-lg);border-top:1px solid var(--border-subtle);flex-shrink:0}.console-input{flex:1;padding:10px 14px;background:var(--bg-input);border:1px solid var(--border-default);border-radius:var(--radius-md);color:var(--text-primary);font-family:inherit;font-size:var(--font-size-md);outline:none;transition:border-color var(--transition-fast)}.console-input:focus{border-color:var(--accent)}.console-input::placeholder{color:var(--text-muted)}.console-send,.console-mic{padding:var(--space-sm) 14px;border:1px solid var(--border-default);border-radius:var(--radius-md);font-family:inherit;font-size:var(--font-size-md);cursor:pointer;transition:background var(--transition-fast),border-color var(--transition-fast);flex-shrink:0}.console-send{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:500}.console-send:hover:not(:disabled){background:var(--accent-hover)}.console-send:disabled{opacity:.4;cursor:not-allowed}.console-mic{background:var(--bg-input);color:var(--text-secondary);font-size:var(--font-size-xl);padding:var(--space-sm) 10px}.console-mic:hover{background:#ffffff1a;border-color:var(--border-hover)}.console-mic.listening{background:var(--error-dim);border-color:var(--error);animation:micPulse 1s ease-in-out infinite}@keyframes micPulse{0%,to{box-shadow:0 0 #ef44444d}50%{box-shadow:0 0 0 8px #ef444400}}#login-overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:var(--bg-base);z-index:var(--z-overlay);opacity:0;transition:opacity .3s ease}#login-overlay.visible{opacity:1}.login-box{text-align:center;max-width:340px;width:100%;padding:48px 28px}.login-logo{font-size:48px;margin-bottom:var(--space-sm)}.login-box h2{font-size:28px;color:var(--accent-light);margin-bottom:var(--space-xs);font-weight:600}.login-sub{font-size:var(--font-size-md);color:var(--text-muted);margin-bottom:32px}.login-form{display:flex;flex-direction:column;gap:var(--space-md)}.login-field{width:100%}.login-input{width:100%;padding:var(--space-md) var(--space-lg);background:var(--bg-input);border:1px solid var(--border-default);border-radius:var(--radius-lg);color:var(--text-primary);font-family:inherit;font-size:var(--font-size-lg);outline:none;transition:border-color var(--transition-fast);box-sizing:border-box}.login-input:focus{border-color:var(--accent)}.login-input::placeholder{color:var(--text-subtle)}.login-error{font-size:var(--font-size-base);color:var(--error);min-height:18px;display:none}.login-error.visible{display:block}.login-btn{margin-top:var(--space-sm)}.login-loading{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);font-size:var(--font-size-md);color:var(--text-dim);padding:10px var(--space-2xl)}.login-hint{font-size:var(--font-size-sm);color:var(--text-subtle);margin-top:var(--space-2xl)}#world-hud{position:fixed;top:12px;left:12px;min-width:140px;background:#0a0a14cc;border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:10px 14px;z-index:var(--z-hud);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.hud-title{font-size:var(--font-size-xs);font-weight:600;color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px;margin-bottom:var(--space-sm)}.hud-stats{display:flex;flex-direction:column;gap:var(--space-xs)}.hud-row{display:flex;align-items:center;gap:6px;font-size:var(--font-size-sm)}.hud-icon{font-size:var(--font-size-base);width:16px;text-align:center}.hud-value{font-weight:700;color:var(--text-primary);min-width:18px;text-align:right;font-variant-numeric:tabular-nums}.hud-label{color:var(--text-muted);font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.3px}.hud-row-credits{border-top:1px solid var(--border-subtle);margin-top:var(--space-xs);padding-top:var(--space-xs)}.hud-row-credits .hud-value{color:var(--accent-light)}.hud-row-workspace{border-bottom:1px solid var(--border-subtle);margin-bottom:var(--space-xs);padding-bottom:var(--space-xs)}.hud-row-workspace .hud-icon{font-size:11px}.hud-row-workspace .hud-value{font-size:var(--font-size-sm);font-weight:700;color:var(--accent-light);text-transform:uppercase;letter-spacing:.3px}.hud-actions{display:flex;flex-direction:column;gap:var(--space-xs);margin-top:var(--space-sm);border-top:1px solid var(--border-subtle);padding-top:var(--space-sm)}.hud-btn{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:5px;color:var(--text-secondary);cursor:pointer;font-family:inherit;font-size:var(--font-size-sm);padding:6px 10px;text-align:left;display:flex;align-items:center;gap:6px;transition:background var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast)}.hud-btn:hover{background:var(--bg-hover);border-color:var(--accent-glow);color:var(--text-primary)}.hud-btn:active{background:var(--accent-dim)}#user-badge{position:fixed;top:12px;left:170px;font-size:var(--font-size-sm);color:var(--text-secondary);background:#0f0f1ab3;padding:var(--space-xs) 10px;border-radius:var(--radius-md);border:1px solid var(--border-subtle);z-index:10;pointer-events:none}#logout-btn{position:fixed;top:12px;left:140px;font-size:var(--font-size-lg);color:var(--text-muted);background:#0f0f1ab3;border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:3px var(--space-sm);cursor:pointer;z-index:10;line-height:1;transition:color var(--transition-fast),border-color var(--transition-fast)}#logout-btn:hover{color:var(--error);border-color:#ef44444d}#terminal-panel{position:fixed;bottom:0;left:0;right:0;height:45vh;max-height:400px;min-height:200px;background:#05050ff7;border-top:2px solid var(--accent-glow);z-index:var(--z-terminal);display:none;flex-direction:column;font-family:var(--font-mono);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 -4px 24px #0009}#terminal-panel.visible{display:flex}.terminal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-sm) var(--space-lg);border-bottom:1px solid var(--border-subtle);background:#0f0f1acc;flex-shrink:0}.terminal-title{font-size:var(--font-size-base);font-weight:600;color:var(--accent);letter-spacing:.5px}.terminal-title-hint{font-weight:400;color:var(--text-muted);font-size:var(--font-size-sm)}.terminal-close{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:var(--font-size-lg);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);transition:color var(--transition-fast),background var(--transition-fast)}.terminal-close:hover{color:var(--error);background:var(--error-dim)}.terminal-output{flex:1;overflow-y:auto;padding:var(--space-md) var(--space-lg);background:#0006}.terminal-line{font-size:var(--font-size-md);line-height:1.6;color:var(--text-secondary);word-wrap:break-word;white-space:pre-wrap}.terminal-input-row{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-lg);border-top:1px solid var(--border-subtle);background:#0a0a14e6;flex-shrink:0}.terminal-prompt{font-size:var(--font-size-lg);font-weight:600;color:var(--accent);flex-shrink:0;min-width:80px}.terminal-input{flex:1;background:transparent;border:none;outline:none;color:var(--text-primary);font-family:var(--font-mono);font-size:var(--font-size-lg);caret-color:var(--success)}.terminal-input::placeholder{color:var(--text-subtle)}.terminal-prompt-echo{color:var(--accent);font-weight:500}.terminal-error{color:var(--error)}.terminal-success{color:var(--success)}.terminal-highlight{color:var(--accent-light);font-weight:600}.terminal-heading{color:var(--text-primary);font-weight:600;text-transform:uppercase;letter-spacing:.5px;font-size:var(--font-size-base)}.terminal-cmd{color:var(--success);font-weight:500}.terminal-dim{color:var(--text-muted)}#terminal-panel ::-webkit-scrollbar{width:4px}#terminal-panel ::-webkit-scrollbar-track{background:transparent}#terminal-panel ::-webkit-scrollbar-thumb{background:var(--accent-glow);border-radius:2px}#building-shop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-shop);display:none}#building-shop.visible{display:block}.hub-menu-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:300;background:var(--bg-overlay);display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);visibility:hidden;opacity:0;transition:opacity .2s ease,visibility .2s ease}.hub-menu-overlay.visible{visibility:visible;opacity:1}.hub-menu-card{width:420px;max-width:92vw;background:#0a0a18f5;border:1px solid var(--border-default);border-radius:var(--radius-2xl);overflow:hidden;box-shadow:0 25px 80px #0009;animation:hubSlideIn .3s cubic-bezier(.16,1,.3,1)}@keyframes hubSlideIn{0%{transform:translateY(24px) scale(.96);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}.hub-menu-header{display:flex;align-items:center;gap:10px;padding:20px 24px 16px;border-bottom:1px solid var(--border-subtle)}.hub-menu-icon{font-size:22px;line-height:1}.hub-menu-title-group{flex:1;display:flex;align-items:baseline;gap:10px}.hub-menu-title{font-size:18px;font-weight:700;color:var(--accent-light);letter-spacing:.3px}.hub-menu-level{font-size:11px;color:var(--text-dim);background:var(--bg-input);padding:2px 8px;border-radius:99px}.hub-menu-close{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:18px;padding:4px 8px;border-radius:var(--radius-md);transition:color .15s,background .15s;line-height:1}.hub-menu-close:hover{color:var(--error);background:var(--error-dim)}.hub-menu-body{padding:16px 24px;display:flex;flex-direction:column;gap:10px}.hub-menu-option{display:flex;align-items:center;gap:14px;padding:14px 16px;border:1px solid var(--border-subtle);border-radius:var(--radius-xl);background:var(--bg-card);cursor:pointer;transition:background .15s,border-color .15s,transform .15s;text-align:left;width:100%;font-family:inherit}.hub-menu-option:hover{background:var(--bg-hover);border-color:var(--border-hover);transform:translate(4px)}.hub-menu-option:active{transform:translate(2px) scale(.99)}.hub-menu-option.primary{background:var(--accent-dim);border-color:#7c3aed4d}.hub-menu-option.primary:hover{background:#7c3aed40;border-color:var(--accent)}.hub-menu-option-icon{font-size:24px;line-height:1;flex-shrink:0;width:36px;text-align:center}.hub-menu-option-content{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.hub-menu-option-title{font-size:14px;font-weight:600;color:var(--text-primary)}.hub-menu-option-desc{font-size:11px;color:var(--text-dim);line-height:1.4}.hub-menu-option-arrow{font-size:14px;color:var(--text-muted);opacity:0;transition:opacity .15s,transform .15s}.hub-menu-option:hover .hub-menu-option-arrow{opacity:1;transform:translate(4px)}.hub-menu-option.primary .hub-menu-option-arrow{opacity:.6}.hub-menu-footer{padding:12px 24px 16px;border-top:1px solid var(--border-subtle);display:flex;justify-content:center}.hub-menu-hint{font-size:11px;color:var(--text-muted)}.hub-menu-hint kbd{display:inline-block;padding:1px 6px;font-size:10px;font-family:var(--font-mono);color:var(--text-secondary);background:var(--bg-input);border:1px solid var(--border-subtle);border-radius:4px;margin:0 1px}.shop-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--bg-overlay);display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:shopFadeIn var(--transition-normal) ease}@keyframes shopFadeIn{0%{opacity:0}to{opacity:1}}.shop-panel{width:640px;max-width:92vw;max-height:80vh;background:#0a0a18f5;border:1px solid var(--border-default);border-radius:var(--radius-2xl);display:flex;flex-direction:column;overflow:hidden;box-shadow:var(--shadow-xl);animation:shopSlideIn var(--transition-normal) ease}@keyframes shopSlideIn{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.shop-header{display:flex;align-items:center;gap:10px;padding:var(--space-lg) var(--space-xl);border-bottom:1px solid var(--border-subtle);flex-shrink:0}.shop-title{font-size:16px;font-weight:700;color:#a78bfa;letter-spacing:.3px}.shop-header-hint{flex:1;font-size:11px;color:#52525b}.shop-close{background:none;border:none;color:#52525b;cursor:pointer;font-size:16px;padding:4px 8px;border-radius:4px;transition:color .15s,background .15s;line-height:1}.shop-close:hover{color:#ef4444;background:#ef44441a}.shop-grid{flex:1;overflow-y:auto;padding:16px 20px;display:flex;flex-direction:column;gap:8px}.shop-empty{text-align:center;padding:32px;color:#52525b;font-size:13px}.shop-card{display:flex;align-items:center;gap:14px;padding:14px 16px;background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-xl);transition:background var(--transition-fast),border-color var(--transition-fast),transform .15s}.shop-card:hover{background:#27272a99;border-color:var(--accent-glow);transform:translateY(-2px)}.shop-card.installed{border-color:#10b98133;background:#10b9810a}.shop-card.installed:hover{border-color:#10b98159;background:#10b98114}.shop-card-icon{font-size:36px;flex-shrink:0;width:48px;text-align:center;line-height:1}.shop-card-body{flex:1;min-width:0}.shop-card-name{font-size:var(--font-size-lg);font-weight:600;color:var(--text-primary);margin-bottom:3px}.shop-card-desc{font-size:var(--font-size-sm);color:var(--text-dim);margin-bottom:6px;line-height:1.4}.shop-card-tags{display:flex;gap:var(--space-xs);flex-wrap:wrap}.shop-tag{font-size:9px;text-transform:uppercase;letter-spacing:.4px;padding:2px 7px;border-radius:var(--radius-sm);background:var(--accent-dim);color:var(--accent-light);border:1px solid rgba(124,58,237,.15)}.shop-card.installed .shop-tag{background:var(--success-dim);color:var(--success);border-color:#10b98133}.shop-card-action{flex-shrink:0}.shop-btn{padding:7px 16px;border:none;border-radius:var(--radius-md);font-family:inherit;font-size:var(--font-size-base);font-weight:600;cursor:pointer;transition:background var(--transition-fast),transform .1s;white-space:nowrap;line-height:1}.shop-btn:active{transform:scale(.96)}.shop-btn-install{background:var(--accent-dim);color:var(--accent-light);border:1px solid rgba(124,58,237,.2)}.shop-btn-install:hover{background:#7c3aed40;border-color:var(--accent-glow)}.shop-btn-remove{background:var(--error-dim);color:#fca5a5;border:1px solid rgba(239,68,68,.15)}.shop-btn-remove:hover{background:#ef444433;border-color:#ef44444d}.shop-footer{padding:10px var(--space-xl);border-top:1px solid var(--border-subtle);flex-shrink:0;text-align:center}.shop-footer-hint{font-size:var(--font-size-xs);color:var(--text-subtle)}.shop-toast{position:absolute;bottom:70px;left:50%;transform:translate(-50%);padding:10px var(--space-xl);background:var(--success-dim);border:1px solid rgba(16,185,129,.3);border-radius:var(--radius-lg);color:#34d399;font-size:var(--font-size-md);font-weight:500;animation:toastIn .25s ease;pointer-events:none;white-space:nowrap}.shop-toast.fading{animation:toastOut .3s ease forwards}@keyframes toastIn{0%{opacity:0;transform:translate(-50%) translateY(10px)}to{opacity:1;transform:translate(-50%) translateY(0)}}@keyframes toastOut{0%{opacity:1}to{opacity:0}}#building-shop ::-webkit-scrollbar{width:4px}#building-shop ::-webkit-scrollbar-track{background:transparent}#building-shop ::-webkit-scrollbar-thumb{background:var(--accent-glow);border-radius:2px}.shop-card.constructing{border-color:#f59e0b4d;background:var(--warning-dim)}.workload-owner{font-size:var(--font-size-xs);color:var(--text-muted);margin-bottom:var(--space-sm);padding-left:8px}.shop-tag.status-tag{background:var(--warning-dim);color:var(--warning);border-color:#f59e0b33}#touch-dpad{position:fixed;bottom:100px;left:24px;z-index:var(--z-hud);opacity:0;visibility:hidden;transition:opacity .3s ease,visibility .3s ease;user-select:none;-webkit-user-select:none;touch-action:none;pointer-events:none}#touch-dpad.visible{opacity:1;visibility:visible;pointer-events:auto}.dpad-container{display:flex;flex-direction:column;align-items:center;gap:2px;width:160px}.dpad-middle-row{display:flex;align-items:center;gap:2px}.dpad-btn{width:52px;height:52px;border-radius:12px;background:#7c3aed26;border:1.5px solid rgba(124,58,237,.3);color:#ffffffb3;font-size:18px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .1s,transform .1s,border-color .1s;-webkit-tap-highlight-color:transparent;touch-action:none;user-select:none;-webkit-user-select:none}.dpad-btn.pressed{background:#7c3aed66;border-color:var(--accent);transform:scale(.92);color:#fff}.dpad-center{width:52px;height:52px;border-radius:12px;background:#ffffff08;border:1px solid rgba(255,255,255,.05);display:flex;align-items:center;justify-content:center;font-size:11px;color:#ffffff26}.touch-ripple{position:fixed;width:40px;height:40px;border-radius:50%;border:2px solid var(--accent);background:#7c3aed1a;pointer-events:none;z-index:calc(var(--z-hud) + 10);animation:rippleFadeOut .5s ease-out forwards}@keyframes rippleFadeOut{0%{transform:scale(.5);opacity:1}to{transform:scale(2);opacity:0}}@media(max-width:480px){#touch-dpad{bottom:80px;left:12px}.dpad-btn{width:48px;height:48px;font-size:16px}.dpad-center{width:48px;height:48px}.dpad-container{width:148px}}@media(max-width:768px){html,body{font-size:14px}#world-hud{top:8px;left:8px;right:8px;min-width:auto;display:flex;align-items:center;gap:8px;padding:6px 10px;border-radius:10px}#world-hud .hud-title{display:none}#world-hud .hud-stats{flex-direction:row;gap:10px;flex:1}#world-hud .hud-row{gap:3px}#world-hud .hud-icon{width:14px;font-size:12px}#world-hud .hud-value{font-size:11px;min-width:14px}#world-hud .hud-label{display:none}#world-hud .hud-row-credits{border-top:none;margin-top:0;padding-top:0}#world-hud .hud-actions{flex-direction:row;margin-top:0;padding-top:0;border-top:none}.hud-btn{padding:4px 8px;font-size:10px;gap:3px}#minimap-wrap{top:auto;bottom:90px;right:8px;transform:scale(.55);transform-origin:bottom right}#minimap-wrap:hover{transform:scale(.6)}#controls-hint{display:none}#user-badge{top:8px;left:auto;right:8px;font-size:10px;padding:2px 8px}#logout-btn{display:none}#building-panel{width:100%;max-width:100%;left:0;transform:translateY(100%);border-radius:16px 16px 0 0;max-height:60vh}#building-panel.visible{transform:translateY(0)}#building-panel .panel-scroll{padding:12px 16px}.interior-panel{width:100vw;height:100vh;max-width:100vw;max-height:100vh;border-radius:0}.interior-header{padding:12px 14px}.interior-title{font-size:14px}.interior-stats{display:none}.interior-chat-messages{padding:10px 14px}.interior-input-row{padding:10px 14px;gap:6px}.interior-input{font-size:14px}.interior-send{padding:10px 14px}.interior-msg{max-width:92%}.interior-settings{padding:4px 14px}.interior-settings.visible{height:40px;padding:4px 14px}.interior-key-input,.interior-model-select{font-size:11px}.hub-menu-card{width:100vw;max-width:100vw;height:100vh;max-height:100vh;border-radius:0;display:flex;flex-direction:column}.hub-menu-body{flex:1;justify-content:center;padding:20px}.hub-menu-option{padding:18px 16px}#console-panel{width:100vw;max-width:100vw;right:-100vw}#terminal-panel{height:50vh;max-height:50vh}.shop-panel{width:100vw;max-width:100vw;height:100vh;max-height:100vh;border-radius:0}.shop-grid,.shop-card{padding:12px 14px}.shop-card-icon{font-size:28px;width:40px}}@media(max-width:360px){#world-hud .hud-stats{gap:6px}#world-hud .hud-actions{gap:4px}.hud-btn{font-size:9px;padding:3px 6px}.dpad-btn{width:42px;height:42px;font-size:14px}.dpad-center{width:42px;height:42px}.dpad-container{width:130px}}@media(max-width:768px)and (orientation:landscape){#touch-dpad{bottom:20px;left:16px}.dpad-btn{width:40px;height:40px;font-size:14px}.dpad-center{width:40px;height:40px}.dpad-container{width:124px}#minimap-wrap{transform:scale(.4)}.interior-panel{height:100vh}#terminal-panel{height:60vh;max-height:60vh}}.llmchat-panel{display:flex;flex-direction:column;height:100%;min-height:400px;max-height:70vh}.llmchat-header{display:flex;align-items:center;gap:8px;padding:12px 16px;border-bottom:1px solid #27272a;background:#1c1c1f;flex-shrink:0}.llmchat-title{font-weight:600;font-size:14px;color:#e4e4e7}.llmchat-model-tag{font-size:11px;color:#71717a;background:#27272a;padding:2px 8px;border-radius:4px;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.llmchat-status{margin-left:auto;font-size:11px;font-weight:500}.llmchat-status.online{color:#22c55e}.llmchat-status.fallback{color:#3b82f6}.llmchat-messages{flex:1;overflow-y:auto;padding:12px 16px;display:flex;flex-direction:column;gap:8px;min-height:0}.llmchat-msg{max-width:85%;padding:8px 12px;border-radius:8px;font-size:13px;line-height:1.5;word-wrap:break-word}.llmchat-msg code{background:#27272a;padding:1px 5px;border-radius:3px;font-size:12px;color:#a1a1aa}.llmchat-msg strong{color:#e4e4e7}.llmchat-user{align-self:flex-end;background:#3b82f6;color:#fff}.llmchat-assistant{align-self:flex-start;background:#27272a;color:#d4d4d8}.llmchat-system{align-self:center;background:transparent;color:#71717a;font-size:12px;text-align:center;max-width:100%}.llmchat-error{align-self:center;background:#7f1d1d;color:#fca5a5;font-size:12px}.llmchat-streaming{border-left:2px solid #3b82f6}.cursor-blink{animation:blink 1s step-end infinite;color:#a1a1aa}@keyframes blink{50%{opacity:0}}.llmchat-input-row{display:flex;gap:8px;padding:12px 16px;border-top:1px solid #27272a;background:#1c1c1f;flex-shrink:0}.llmchat-input{flex:1;background:#27272a;border:1px solid #3f3f46;border-radius:8px;padding:8px 12px;color:#e4e4e7;font-size:13px;outline:none}.llmchat-input:focus{border-color:#3b82f6}.llmchat-input::placeholder{color:#52525b}.llmchat-send{background:#3b82f6;color:#fff;border:none;border-radius:8px;padding:8px 16px;font-size:13px;font-weight:500;cursor:pointer;transition:background .15s}.llmchat-send:hover:not(:disabled){background:#2563eb}.llmchat-send:disabled{opacity:.4;cursor:default}.typing-dots span{animation:dotPulse 1.4s infinite;opacity:0}.typing-dots span:nth-child(1){animation-delay:0s}.typing-dots span:nth-child(2){animation-delay:.2s}.typing-dots span:nth-child(3){animation-delay:.4s}@keyframes dotPulse{0%,60%,to{opacity:0}30%{opacity:1}}.building-interior-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:250;background:#0009;display:flex;align-items:center;justify-content:center;animation:interiorFadeIn .2s ease;visibility:hidden;opacity:0;transition:opacity .2s ease,visibility .2s ease}.building-interior-overlay.visible{visibility:visible;opacity:1}.interior-panel{width:min(800px,94vw);height:min(700px,90vh);background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-xl);display:flex;flex-direction:column;overflow:hidden;box-shadow:var(--shadow-xl);animation:interiorSlideIn .3s cubic-bezier(.16,1,.3,1)}.interior-header{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-lg) var(--space-xl);border-bottom:1px solid var(--border-subtle);background:var(--bg-elevated);flex-shrink:0}.interior-icon{font-size:20px;line-height:1}.interior-title{font-weight:600;font-size:var(--font-size-lg);color:var(--text-primary)}.interior-level{color:var(--text-dim);font-size:var(--font-size-sm);padding:2px 8px;background:var(--bg-input);border-radius:var(--radius-sm)}.interior-stats{display:flex;gap:var(--space-md);margin-left:auto}.interior-stats span{font-size:var(--font-size-xs);color:var(--text-secondary);font-family:var(--font-mono)}.interior-close{background:none;border:none;color:var(--text-dim);cursor:pointer;padding:4px 12px;font-size:18px;line-height:1;border-radius:var(--radius-sm);transition:color var(--transition-fast)}.interior-close:hover{color:var(--error);background:var(--error-dim)}.interior-body{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.interior-chat-messages{flex:1;overflow-y:auto;padding:var(--space-md) var(--space-xl);display:flex;flex-direction:column;gap:var(--space-sm)}.interior-msg{max-width:85%;padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);font-size:var(--font-size-base);line-height:1.5;white-space:pre-wrap;word-break:break-word}.interior-msg.interior-user{align-self:flex-end;background:var(--accent-dim);color:var(--text-primary);border:1px solid var(--accent-glow)}.interior-msg.interior-assistant{align-self:flex-start;background:var(--bg-card);color:var(--text-primary);border:1px solid var(--border-subtle)}.interior-msg.interior-system{align-self:center;background:transparent;color:var(--text-secondary);font-size:var(--font-size-sm);text-align:center;max-width:100%;border:none}.interior-msg.interior-error{align-self:center;background:var(--error-dim);color:var(--error);font-size:var(--font-size-sm);border:1px solid rgba(239,68,68,.2)}.interior-msg strong{color:var(--accent-light)}.interior-msg code{background:#ffffff0f;padding:1px 5px;border-radius:3px;font-family:var(--font-mono);font-size:var(--font-size-xs)}.interior-msg.interior-typing{align-self:flex-start;background:transparent;border:none}.interior-output-area{border-top:1px solid var(--border-subtle);max-height:0;overflow:hidden;transition:max-height .3s ease;flex-shrink:0}.interior-output-area.has-output{max-height:150px;overflow-y:auto}.interior-output-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-xs) var(--space-xl);background:var(--bg-elevated);font-size:var(--font-size-xs);color:var(--text-dim);position:sticky;top:0}.interior-output-clear{background:none;border:none;color:var(--text-dim);cursor:pointer;font-size:var(--font-size-xs);padding:2px 8px;border-radius:var(--radius-sm)}.interior-output-clear:hover{color:var(--text-primary);background:var(--bg-hover)}.interior-output-content{padding:var(--space-sm) var(--space-xl);font-size:var(--font-size-sm);font-family:var(--font-mono);color:var(--text-secondary);white-space:pre-wrap;line-height:1.4}.interior-output-line{padding:1px 0}.interior-input-row{display:flex;gap:var(--space-sm);padding:var(--space-md) var(--space-xl);border-top:1px solid var(--border-subtle);background:var(--bg-elevated);flex-shrink:0}.interior-input{flex:1;background:var(--bg-input);border:1px solid var(--border-default);border-radius:var(--radius-md);padding:var(--space-sm) var(--space-md);color:var(--text-primary);font-size:var(--font-size-base);font-family:var(--font-mono);outline:none;transition:border-color var(--transition-fast)}.interior-input:focus{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent-glow)}.interior-input::placeholder{color:var(--text-muted)}.interior-send{background:var(--accent);color:#fff;border:none;border-radius:var(--radius-md);padding:var(--space-sm) var(--space-lg);font-size:var(--font-size-base);font-weight:500;cursor:pointer;transition:background var(--transition-fast),opacity var(--transition-fast)}.interior-send:hover:not(:disabled){background:var(--accent-hover)}.interior-send:disabled{opacity:.4;cursor:default}.interior-mic{background:var(--bg-input);border:1px solid var(--border-default);border-radius:var(--radius-md);padding:var(--space-sm) 12px;cursor:pointer;font-size:16px;line-height:1;transition:background var(--transition-fast),border-color var(--transition-fast),transform var(--transition-fast);flex-shrink:0}.interior-mic:hover{background:var(--bg-hover);border-color:var(--border-hover)}.interior-mic:active{transform:scale(.95)}.interior-mic.listening{background:#ef444433;border-color:var(--error);animation:micPulse 1.2s ease-in-out infinite}@keyframes micPulse{0%,to{box-shadow:0 0 #ef44444d}50%{box-shadow:0 0 0 6px #ef444400}}.interior-settings{display:flex;align-items:center;gap:var(--space-sm);padding:6px var(--space-xl);background:#0000004d;border-bottom:1px solid var(--border-subtle);flex-shrink:0;visibility:hidden;height:0;overflow:hidden;opacity:0;transition:height .2s ease,opacity .2s ease,visibility .2s ease,padding .2s ease}.interior-settings.visible{visibility:visible;height:36px;opacity:1;padding:6px var(--space-xl)}.interior-key-input{flex:1;min-width:0;background:var(--bg-input);border:1px solid var(--border-default);border-radius:var(--radius-md);padding:4px 10px;color:var(--text-primary);font-size:var(--font-size-sm);font-family:var(--font-mono);outline:none;transition:border-color var(--transition-fast)}.interior-key-input:focus{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent-glow)}.interior-key-input::placeholder{color:var(--text-muted);font-family:var(--font-mono);font-size:var(--font-size-xs)}.interior-model-select{background:var(--bg-input);border:1px solid var(--border-default);border-radius:var(--radius-md);padding:4px 8px;color:var(--text-primary);font-size:var(--font-size-sm);outline:none;cursor:pointer;transition:border-color var(--transition-fast);flex-shrink:0}.interior-model-select:focus{border-color:var(--accent)}.interior-model-select option{background:var(--bg-surface);color:var(--text-primary)}.interior-local-badge{font-size:10px;white-space:nowrap;display:flex;align-items:center;gap:4px;margin-left:auto}.interior-local-badge.online{color:var(--success);cursor:help}.interior-local-badge.offline{color:var(--text-muted);cursor:pointer;padding:2px 8px;border:1px dashed var(--border-subtle);border-radius:var(--radius-sm);transition:border-color var(--transition-fast),color var(--transition-fast)}.interior-local-badge.offline:hover{color:var(--accent-light);border-color:var(--accent-glow)}.interior-key-input.hidden{display:none}.interior-deploy-prompt{background:var(--accent-dim);border:1px solid rgba(124,58,237,.25);border-radius:var(--radius-xl);padding:0;margin:8px 0;overflow:hidden}.deploy-prompt-content{display:flex;align-items:center;gap:14px;padding:16px}.deploy-prompt-icon{font-size:28px;line-height:1;flex-shrink:0}.deploy-prompt-text{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.deploy-prompt-text strong{font-size:13px;color:var(--text-primary)}.deploy-prompt-desc{font-size:11px;color:var(--text-dim);line-height:1.4}.deploy-prompt-btn{background:var(--accent);color:#fff;border:none;border-radius:var(--radius-md);padding:8px 18px;font-size:12px;font-weight:600;cursor:pointer;white-space:nowrap;flex-shrink:0;transition:background var(--transition-fast),transform var(--transition-fast)}.deploy-prompt-btn:hover{background:var(--accent-hover);transform:scale(1.03)}.deploy-prompt-btn:active{transform:scale(.97)}.deploy-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:350;background:#000000a6;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);visibility:hidden;opacity:0;transition:opacity .25s ease,visibility .25s ease}.deploy-overlay.visible{visibility:visible;opacity:1}.deploy-card{width:min(460px,92vw);background:#0a0a18f7;border:1px solid var(--border-default);border-radius:var(--radius-2xl);overflow:hidden;box-shadow:0 25px 80px #0009;animation:deploySlideIn .3s cubic-bezier(.16,1,.3,1)}@keyframes deploySlideIn{0%{transform:translateY(24px) scale(.96);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}.deploy-header{display:flex;align-items:center;gap:12px;padding:20px 24px 16px;border-bottom:1px solid var(--border-subtle)}.deploy-header-icon{font-size:24px;line-height:1;flex-shrink:0}.deploy-header-text{flex:1;min-width:0}.deploy-title{font-size:16px;font-weight:700;color:var(--text-primary);letter-spacing:.3px}.deploy-subtitle{font-size:11px;color:var(--text-dim);margin-top:2px}.deploy-close{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:20px;padding:2px 8px;border-radius:var(--radius-md);transition:color .15s,background .15s;line-height:1}.deploy-close:hover{color:var(--error);background:var(--error-dim)}.deploy-steps{padding:20px 24px 8px;display:flex;flex-direction:column;gap:0}.deploy-step{display:flex;gap:12px;padding:8px 0;position:relative}.deploy-step:before{content:"";position:absolute;left:15px;top:36px;bottom:-8px;width:2px;background:var(--border-subtle);transition:background .3s ease}.deploy-step:last-child:before{display:none}.deploy-step.step-done:before{background:var(--success)}.deploy-step-indicator{flex-shrink:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;position:relative;z-index:1}.deploy-step-icon{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;line-height:1;transition:background .2s,border-color .2s,color .2s}.step-pending .deploy-step-icon{background:#ffffff0a;border:1.5px solid var(--border-default);color:var(--text-muted)}.step-active .deploy-step-icon{background:#7c3aed26;border:1.5px solid var(--accent);color:var(--accent-light)}.step-done .deploy-step-icon{background:#10b98126;border:1.5px solid rgba(16,185,129,.4);color:var(--success)}.step-error .deploy-step-icon{background:var(--error-dim);border:1.5px solid rgba(239,68,68,.4);color:var(--error)}.deploy-spinner{display:inline-block;width:14px;height:14px;border:2px solid rgba(124,58,237,.3);border-top-color:var(--accent);border-radius:50%;animation:deploySpin .7s linear infinite}@keyframes deploySpin{to{transform:rotate(360deg)}}.deploy-step-body{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center;gap:2px;padding-bottom:4px}.deploy-step-label{font-size:13px;font-weight:500;color:var(--text-primary);transition:color .2s}.step-pending .deploy-step-label{color:var(--text-muted)}.step-done .deploy-step-label{color:var(--success)}.step-error .deploy-step-label{color:var(--error)}.deploy-step-detail{font-size:11px;color:var(--text-dim);line-height:1.3;min-height:14px}.deploy-footer{padding:12px 24px 20px;border-top:1px solid var(--border-subtle);display:flex;flex-direction:column;gap:10px}.deploy-status-text{font-size:11px;color:var(--text-muted);text-align:center}.deploy-action-btn{width:100%;padding:12px 20px;border:none;border-radius:var(--radius-lg);font-family:inherit;font-size:14px;font-weight:600;cursor:pointer;background:var(--accent);color:#fff;transition:background .15s,transform .1s}.deploy-action-btn:hover{background:var(--accent-hover)}.deploy-action-btn:active{transform:scale(.98)}.deploy-action-btn.deploy-action-danger{background:var(--error-dim);color:var(--error);border:1px solid rgba(239,68,68,.2)}.deploy-action-btn.deploy-action-danger:hover{background:#ef444433}.deploy-overlay.final .deploy-step-icon{transition:none}.deploy-overlay.final .deploy-step{pointer-events:none}.deploy-overlay.final-success .deploy-header-icon{content:"✅"}@media(max-width:768px){.deploy-card{width:92vw;border-radius:var(--radius-xl)}.deploy-header{padding:16px 18px 12px}.deploy-steps{padding:16px 18px 4px}.deploy-footer{padding:10px 18px 16px}}@keyframes wsSlideIn{0%{transform:translateY(16px) scale(.98);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}@keyframes mcpSlideIn{0%{transform:translateY(16px) scale(.98);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}@keyframes interiorSlideIn{0%{transform:translateY(20px) scale(.98);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}@keyframes interiorFadeIn{0%{opacity:0}to{opacity:1}}
