@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600&display=swap");:root{--bg-workspace:#F5F2EC;--grid-line:#DDD9D0;--surface-primary:#FFFFFF;--surface-secondary:#F8F7F4;--surface-elevated:#FFFFFF;--surface-border:#E2DFD8;--shell-bg:#0D1B3E;--shell-bg-light:#142754;--shell-bg-hover:#1A3068;--shell-border:#1E3570;--action-primary:#E8480A;--action-hover:#d13e06;--action-active:#B83505;--action-glow:rgba(232,72,10,0.25);--text-primary:#0D1B3E;--text-secondary:#5A6478;--text-tertiary:#8B95A8;--text-on-dark:#FFFFFF;--text-on-dark-secondary:#A8B4CC;--success:#22C55E;--success-bg:#F0FDF4;--error:#EF4444;--error-bg:#FEF2F2;--warning:#F59E0B;--warning-bg:#FFFBEB;--info:#3B82F6;--code-bg:#1E1E2E;--code-text:#CDD6F4;--code-keyword:#CBA6F7;--code-string:#A6E3A1;--code-comment:#6C7086;--code-function:#89B4FA;--terminal-bg:#0C0E14;--terminal-text:#CDD6F4;--terminal-cursor:#F5E0DC;--sidebar-width:220px;--topbar-height:52px;--terminal-height:200px;--panel-gap:1px;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--radius-xl:20px;--shadow-sm:0 1px 3px rgba(0,0,0,0.06);--shadow-md:0 4px 12px rgba(0,0,0,0.08);--shadow-lg:0 8px 30px rgba(0,0,0,0.12);--shadow-glow:0 0 20px var(--action-glow);--transition-fast:120ms ease;--transition-normal:200ms ease;--transition-slow:350ms ease;--z-sidebar:100;--z-topbar:200;--z-modal:500;--z-toast:600}[data-theme=dark]{--bg-workspace:#0F1729;--grid-line:#1C2A4A;--surface-primary:#142754;--surface-secondary:#111D3A;--surface-elevated:#1A3068;--surface-border:#1E3570;--shell-bg:#090F1F;--shell-bg-light:#0D1B3E;--shell-bg-hover:#142754;--shell-border:#1C2A4A;--text-primary:#E8EAF0;--text-secondary:#8B95A8;--text-tertiary:#5A6478;--success-bg:rgba(34,197,94,0.1);--error-bg:rgba(239,68,68,0.1);--warning-bg:rgba(245,158,11,0.1);--code-bg:#0C0E14;--terminal-bg:#080A10}*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--bg-workspace);color:var(--text-primary);line-height:1.5;overflow:hidden;height:100vh;transition:background-color var(--transition-normal),color var(--transition-normal)}.mono,code,pre{font-family:JetBrains Mono,Fira Code,monospace}button{cursor:pointer;border:none;outline:none;background:none}button,input,select,textarea{font-family:inherit;font-size:inherit}a{color:inherit;text-decoration:none}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--text-tertiary);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-secondary)}.app-layout{display:grid;grid-template-rows:var(--topbar-height) 1fr;grid-template-columns:var(--sidebar-width) 1fr;grid-template-areas:"topbar topbar" "sidebar main";height:100vh;width:100vw;overflow:hidden}.topbar{grid-area:topbar;background:var(--shell-bg);justify-content:space-between;padding:0 16px;height:var(--topbar-height);z-index:var(--z-topbar);border-bottom:1px solid var(--shell-border)}.topbar,.topbar__left{display:flex;align-items:center}.topbar__left{gap:16px}.topbar__logo{display:flex;align-items:center;gap:10px;color:var(--text-on-dark);font-weight:700;font-size:1.1rem;letter-spacing:-.02em}.topbar__logo-icon{width:28px;height:28px;background:var(--action-primary);border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;font-size:14px;color:white;font-weight:800}.topbar__project-name{display:flex;align-items:center;gap:6px;padding:5px 12px;background:var(--shell-bg-light);border:1px solid var(--shell-border);border-radius:var(--radius-sm);color:var(--text-on-dark-secondary);font-size:.85rem;cursor:pointer;transition:all var(--transition-fast)}.topbar__project-name:hover{background:var(--shell-bg-hover);color:var(--text-on-dark)}.topbar__right{gap:8px}.topbar__btn,.topbar__right{display:flex;align-items:center}.topbar__btn{gap:6px;padding:6px 12px;border-radius:var(--radius-sm);font-size:.8rem;font-weight:500;color:var(--text-on-dark-secondary);transition:all var(--transition-fast)}.topbar__btn:hover{background:var(--shell-bg-light);color:var(--text-on-dark)}.topbar__btn--save{background:var(--shell-bg-light);border:1px solid var(--shell-border)}.topbar__btn--save:hover{background:var(--shell-bg-hover)}.theme-toggle{position:relative;width:44px;height:24px;background:var(--shell-bg-light);border:1px solid var(--shell-border);border-radius:12px;cursor:pointer;transition:background var(--transition-normal);padding:0}.theme-toggle__track{position:relative;width:100%;height:100%}.theme-toggle__thumb{position:absolute;top:2px;left:2px;width:18px;height:18px;background:var(--text-on-dark);border-radius:50%;transition:transform var(--transition-normal);display:flex;align-items:center;justify-content:center;font-size:10px}[data-theme=dark] .theme-toggle__thumb{transform:translateX(20px)}.status-badge{display:flex;align-items:center;gap:6px;padding:5px 12px;border-radius:var(--radius-sm);font-size:.78rem;font-weight:500;border:1px solid var(--shell-border)}.status-badge--disconnected{color:var(--text-on-dark-secondary)}.status-badge--connected{color:var(--success);border-color:rgba(34,197,94,.3)}.status-badge__dot{width:7px;height:7px;border-radius:50%;background:var(--text-tertiary)}.status-badge--connected .status-badge__dot{background:var(--success);box-shadow:0 0 6px var(--success);animation:pulse-glow 2s ease-in-out infinite}@keyframes pulse-glow{0%,to{opacity:1;box-shadow:0 0 6px var(--success)}50%{opacity:.6;box-shadow:0 0 12px var(--success)}}.sidebar{grid-area:sidebar;background:var(--shell-bg);border-right:1px solid var(--shell-border);display:flex;flex-direction:column;z-index:var(--z-sidebar);overflow-y:auto;padding:8px 0}.sidebar__section-title{padding:12px 16px 6px;font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text-on-dark-secondary);opacity:.6}.sidebar__item{display:flex;align-items:center;gap:10px;padding:9px 16px;color:var(--text-on-dark-secondary);font-size:.84rem;font-weight:500;cursor:pointer;transition:all var(--transition-fast);border-left:3px solid transparent;margin:1px 0}.sidebar__item--active,.sidebar__item:hover{background:var(--shell-bg-light);color:var(--text-on-dark)}.sidebar__item--active{border-left-color:var(--action-primary)}.sidebar__item-icon{width:20px;height:20px;display:flex;align-items:center;justify-content:center;font-size:14px;flex-shrink:0}.sidebar__item-color{width:10px;height:10px;border-radius:3px;flex-shrink:0}.main-content{grid-area:main;display:flex;flex-direction:column;overflow:hidden;background:var(--bg-workspace)}.editor-area{display:flex}.blockly-panel,.editor-area{flex:1 1;overflow:hidden;position:relative}.blockly-panel{min-width:300px}.blockly-panel__container{width:100%;height:100%}.blockly-panel .blocklySvg{background-color:var(--bg-workspace)!important}.resizer{width:5px;cursor:col-resize;background:var(--surface-border);transition:background var(--transition-fast);position:relative;z-index:10;flex-shrink:0}.resizer--active,.resizer:hover{background:var(--action-primary)}.resizer:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:3px;height:30px;border-radius:2px;background:var(--text-tertiary);opacity:0;transition:opacity var(--transition-fast)}.resizer:hover:after{opacity:.6}.code-panel{width:400px;min-width:250px;display:flex;flex-direction:column;background:var(--code-bg);border-left:1px solid var(--surface-border);overflow:hidden}.code-panel--collapsed{width:0;min-width:0;border-left:none}.code-panel__header{display:flex;align-items:center;justify-content:space-between;padding:8px 14px;background:rgba(0,0,0,.2);border-bottom:1px solid rgba(255,255,255,.06);flex-shrink:0}.code-panel__title{font-size:.78rem;font-weight:600;color:var(--code-text);opacity:.7;display:flex;align-items:center;gap:6px}.code-panel__actions{display:flex;align-items:center;gap:4px}.code-panel__btn{padding:4px 8px;border-radius:4px;font-size:.72rem;font-weight:500;color:var(--code-text);opacity:.6;transition:all var(--transition-fast)}.code-panel__btn:hover{opacity:1;background:rgba(255,255,255,.08)}.code-panel__editor{flex:1 1;overflow:auto;font-size:13px;line-height:1.6}.code-panel__editor .cm-editor{height:100%;background:transparent!important}.code-panel__editor .cm-gutters{background:transparent!important;border-right:1px solid rgba(255,255,255,.06)!important}.control-bar{padding:8px 14px;background:var(--surface-primary);border-top:1px solid var(--surface-border);flex-shrink:0}.btn-run,.control-bar{display:flex;align-items:center;gap:8px}.btn-run{padding:8px 24px;background:var(--action-primary);color:white;font-weight:700;font-size:.88rem;border-radius:var(--radius-sm);transition:all var(--transition-fast);box-shadow:var(--shadow-glow);letter-spacing:.01em}.btn-run:hover{background:var(--action-hover);transform:translateY(-1px);box-shadow:0 0 30px var(--action-glow)}.btn-run:active{background:var(--action-active);transform:translateY(0)}.btn-run--disabled{opacity:.5;pointer-events:none}.btn-run__icon{font-size:14px}.btn-stop{display:flex;align-items:center;gap:6px;padding:8px 16px;background:var(--surface-secondary);color:var(--text-secondary);font-weight:600;font-size:.84rem;border-radius:var(--radius-sm);border:1px solid var(--surface-border);transition:all var(--transition-fast)}.btn-stop:hover{background:var(--error-bg);color:var(--error);border-color:var(--error)}.btn-connect{display:flex;align-items:center;gap:6px;padding:8px 16px;background:var(--surface-secondary);color:var(--text-secondary);font-weight:600;font-size:.84rem;border-radius:var(--radius-sm);border:1px solid var(--surface-border);margin-left:auto;transition:all var(--transition-fast)}.btn-connect:hover{background:var(--shell-bg);color:var(--text-on-dark)}.btn-connect--connected{color:var(--success);border-color:rgba(34,197,94,.3)}.terminal-panel{height:var(--terminal-height);min-height:80px;background:var(--terminal-bg);border-top:1px solid var(--surface-border);display:flex;flex-direction:column;flex-shrink:0;overflow:hidden}.terminal-panel--collapsed{height:32px;min-height:32px}.terminal-panel__header{display:flex;align-items:center;justify-content:space-between;padding:6px 14px;background:rgba(0,0,0,.3);border-bottom:1px solid rgba(255,255,255,.04);flex-shrink:0;cursor:pointer}.terminal-panel__title{font-size:.75rem;font-weight:600;color:var(--terminal-text);opacity:.6;display:flex;align-items:center;gap:6px}.terminal-panel__actions{display:flex;gap:4px}.terminal-panel__btn{padding:3px 8px;border-radius:3px;font-size:.7rem;color:var(--terminal-text);opacity:.5;transition:all var(--transition-fast)}.terminal-panel__btn:hover{opacity:1;background:rgba(255,255,255,.08)}.terminal-panel__body{flex:1 1;overflow:hidden;padding:0}.terminal-panel__body .xterm{padding:8px}.toast{position:fixed;bottom:20px;right:20px;padding:10px 18px;background:var(--shell-bg);color:var(--text-on-dark);font-size:.82rem;font-weight:500;border-radius:var(--radius-md);box-shadow:var(--shadow-lg);z-index:var(--z-toast);animation:toast-in .3s ease,toast-out .3s ease 2.7s forwards;display:flex;align-items:center;gap:8px}.toast--success{border-left:3px solid var(--success)}.toast--error{border-left:3px solid var(--error)}.toast--info{border-left:3px solid var(--info)}@keyframes toast-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes toast-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(10px)}}.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:var(--z-modal);display:flex;align-items:center;justify-content:center;animation:fade-in .2s ease}.modal{background:var(--surface-primary);border:1px solid var(--surface-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:420px;max-width:90vw;animation:scale-in .2s ease}.modal__header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--surface-border)}.modal__title{font-weight:700;font-size:1rem}.modal__close{padding:4px;border-radius:4px;color:var(--text-secondary);transition:all var(--transition-fast)}.modal__close:hover{background:var(--surface-secondary);color:var(--text-primary)}.modal__body{padding:20px}.modal__footer{display:flex;justify-content:flex-end;gap:8px;padding:12px 20px;border-top:1px solid var(--surface-border)}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes scale-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.browser-banner{position:fixed;top:0;left:0;right:0;padding:12px 20px;background:var(--warning);color:#0D1B3E;font-size:.85rem;font-weight:600;text-align:center;z-index:9999;display:flex;align-items:center;justify-content:center;gap:8px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}