@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__project-input{padding:5px 12px;background:var(--shell-bg-light);border:1px solid var(--action-primary);border-radius:var(--radius-sm);color:var(--text-on-dark);font-size:.85rem;font-family:inherit;outline:none;width:180px}.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:hidden}.sidebar__blocks-pane{flex:2 1;min-height:0;overflow-y:auto;padding:8px 0 4px;display:flex;flex-direction:column}.sidebar__tools-pane{flex:1 1;min-height:0;overflow-y:auto;border-top:1px solid var(--shell-border);padding:4px 0 8px}.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__search-wrapper{padding:8px 12px 4px;position:-webkit-sticky;position:sticky;top:0;z-index:2;background:var(--shell-bg)}.sidebar__search{display:flex;align-items:center;gap:8px;padding:7px 10px;background:var(--shell-bg-light);border:1px solid var(--shell-border);border-radius:var(--radius-sm);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.sidebar__search:focus-within{border-color:var(--action-primary);box-shadow:0 0 0 2px rgba(232,72,10,.15)}.sidebar__search-icon{font-size:11px;color:var(--text-on-dark-secondary);opacity:.5;flex-shrink:0}.sidebar__search-input{flex:1 1;background:none;border:none;outline:none;color:var(--text-on-dark);font-size:.8rem;font-weight:500;min-width:0}.sidebar__search-input::placeholder{color:var(--text-on-dark-secondary);opacity:.45}.sidebar__search-clear{display:flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:rgba(255,255,255,.08);color:var(--text-on-dark-secondary);font-size:9px;cursor:pointer;transition:all var(--transition-fast);flex-shrink:0;border:none;padding:0}.sidebar__search-clear:hover{background:rgba(255,255,255,.16);color:var(--text-on-dark)}.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}.sidebar__section-title--collapsible{cursor:pointer;display:flex;align-items:center;justify-content:space-between;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:color var(--transition-fast)}.sidebar__section-title--collapsible:hover{color:var(--text-on-dark);opacity:1}.sidebar__section-chevron{font-size:9px;transition:transform var(--transition-normal)}.sidebar__section-chevron--collapsed{transform:rotate(-90deg)}.sidebar__tools-list{overflow:hidden;transition:max-height var(--transition-normal);max-height:300px}.sidebar__tools-list--collapsed{max-height: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:200px;max-width:50vw;display:flex;flex-direction:column;background:var(--code-bg);border-left:1px solid var(--surface-border);overflow:hidden;flex-shrink:0}.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-save-board{display:flex;align-items:center;gap:8px;padding:8px 16px;background:rgba(34,197,94,.12);color:#16A34A;font-weight:700;font-size:.84rem;border-radius:var(--radius-sm);border:1px solid rgba(34,197,94,.35);transition:all var(--transition-fast)}.btn-save-board:hover{background:rgba(34,197,94,.2);border-color:rgba(34,197,94,.55)}.btn-save-board--disabled{opacity:.55;pointer-events:none}.btn-save-board__icon{font-size:14px}.btn-soft-reset{display:flex;align-items:center;gap:6px;padding:8px 16px;background:rgba(59,130,246,.12);color:#3B82F6;font-weight:700;font-size:.84rem;border-radius:var(--radius-sm);border:1px solid rgba(59,130,246,.35);transition:all var(--transition-fast)}.btn-soft-reset:hover{background:rgba(59,130,246,.2);border-color:rgba(59,130,246,.55)}.btn-soft-reset--disabled{opacity:.55;pointer-events:none}.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;align-items:center;gap:4px}.terminal-panel__flash-size{display:inline-flex;align-items:center;gap:5px;padding:0 4px;color:var(--text-on-dark-secondary);font-size:.72rem;white-space:nowrap}.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}.modal.plotter-modal{width:min(1220px,96vw);max-width:96vw;max-height:82vh;display:flex;flex-direction:column}.plotter-modal__header{gap:10px}.plotter-modal__header-actions{display:flex;align-items:center;gap:8px}.plotter-modal__body{display:flex;flex-direction:column;gap:12px;overflow:auto}.plotter-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:999px;font-size:.72rem;font-weight:600;border:1px solid var(--surface-border);color:var(--text-secondary);background:var(--surface-secondary)}.plotter-chip--connected{color:var(--success);border-color:rgba(34,197,94,.35)}.plotter-chip--warn{color:var(--warning);border-color:rgba(245,158,11,.35)}.plotter-chip--button{cursor:pointer;transition:all var(--transition-fast)}.plotter-chip--button:hover{border-color:var(--action-primary);color:var(--action-primary)}.plotter-chip--paused{border-color:var(--warning);color:var(--warning)}.plotter-meta{display:flex;flex-wrap:wrap;gap:8px}.plotter-meta__item{background:var(--surface-secondary);color:var(--text-secondary);border:1px solid var(--surface-border);border-radius:var(--radius-sm);font-size:.75rem;font-weight:600;padding:4px 8px}.plotter-chart-shell{position:relative;border:1px solid var(--surface-border);background:var(--surface-secondary);border-radius:var(--radius-md);padding:8px;min-height:280px;overflow:hidden}.plotter-chart{width:100%;height:300px;display:block}.plotter-axis-label{fill:var(--text-secondary);font-size:11px;font-weight:500}.plotter-empty{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--text-secondary);gap:4px;pointer-events:none}.plotter-empty__hint{font-size:.82rem}.plotter-empty code{background:var(--surface-primary);border:1px solid var(--surface-border);border-radius:4px;padding:2px 6px}.plotter-legend{display:flex;flex-wrap:wrap;gap:8px;max-height:84px;overflow-y:auto}.plotter-legend__item{display:inline-flex;align-items:center;gap:8px;border-radius:var(--radius-sm);border:1px solid var(--surface-border);background:var(--surface-secondary);padding:5px 10px;font-size:.76rem}.plotter-legend__swatch{width:10px;height:10px;border-radius:50%}.plotter-legend__name{color:var(--text-primary);font-weight:600}.plotter-legend__value{color:var(--text-secondary);font-family:JetBrains Mono,Fira Code,monospace}.plotter-help{font-size:.76rem;color:var(--text-secondary)}.plotter-help code{background:var(--surface-secondary);border:1px solid var(--surface-border);border-radius:4px;padding:2px 6px}.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)}.modal__btn{display:inline-flex;align-items:center;justify-content:center;padding:8px 16px;border-radius:var(--radius-md);font-family:inherit;font-weight:500;font-size:.9rem;cursor:pointer;transition:all .2s ease;border:none}.modal__btn--secondary{background:var(--surface-secondary);color:var(--text-primary);border:1px solid var(--surface-border)}.modal__btn--secondary:hover{background:rgba(255,255,255,.1)}.modal__btn--primary{background:var(--action-primary);color:white}.modal__btn--primary:hover{background:var(--action-hover);transform:translateY(-1px)}.modal__btn--primary:active{transform:translateY(0)}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes scale-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.custom-code-editor-overlay{background:rgba(0,0,0,.7);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.custom-code-editor-modal{width:min(860px,92vw);max-height:90vh;display:flex;flex-direction:column}.custom-code-editor-body{display:flex;flex-direction:column;flex:1 1;min-height:0;padding:14px 20px 8px;gap:10px}.custom-code-editor-hint{display:flex;align-items:center;gap:8px;font-size:.78rem;color:var(--text-secondary);opacity:.75;padding:6px 10px;background:var(--surface-secondary);border-radius:var(--radius-sm);border:1px solid var(--surface-border)}.custom-code-editor-hint i{color:var(--action-primary);flex-shrink:0}.custom-code-editor-hint kbd{display:inline-block;padding:1px 5px;border-radius:3px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.15);font-size:.72rem;font-family:inherit}.custom-code-editor-cm-container{flex:1 1;min-height:340px;border-radius:var(--radius-md);overflow:hidden;border:1px solid var(--surface-border);background:#1a1f2b}.custom-code-editor-cm-container .cm-editor{height:100%}.custom-code-editor-cm-container .cm-scroller{height:100%;min-height:340px}.board-prep-chip--connecting,.board-prep-chip--erasing,.board-prep-chip--flashing,.board-prep-chip--verifying{color:var(--info);border-color:rgba(59,130,246,.35)}.modal.library-manager-modal{width:min(760px,95vw);max-width:95vw;max-height:86vh;display:flex;flex-direction:column}.library-manager-modal__title{display:inline-flex;align-items:center;gap:9px}.library-manager-modal__title i{color:var(--action-primary)}.library-manager-modal__body{display:flex;flex-direction:column;gap:14px;overflow-y:auto;max-height:68vh}.library-manager__status{display:flex;flex-wrap:wrap;gap:8px}.library-manager-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:999px;font-size:.74rem;font-weight:600;border:1px solid var(--surface-border);color:var(--text-secondary);background:var(--surface-secondary)}.library-manager-chip--connected{color:var(--success);border-color:rgba(34,197,94,.35)}.library-manager-chip--warn{color:var(--warning);border-color:rgba(245,158,11,.35)}.library-manager-chip--button{cursor:pointer;transition:all var(--transition-fast)}.library-manager-chip--button:hover:not(:disabled){border-color:var(--action-primary);color:var(--action-primary)}.library-manager-chip--button:disabled{opacity:.5;cursor:not-allowed}.library-manager__upload-section{border:1px solid var(--surface-border);background:var(--surface-secondary);border-radius:var(--radius-md);padding:14px}.library-manager__section-title{font-size:.8rem;font-weight:700;color:var(--text-secondary);margin-bottom:10px;text-transform:uppercase;letter-spacing:.05em}.library-manager__upload-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.library-manager__upload-btn{display:inline-flex;align-items:center;gap:8px;padding:8px 16px;border-radius:var(--radius-sm);border:1px solid var(--action-primary);background:var(--action-primary);color:#fff;font-weight:600;font-size:.85rem;transition:all var(--transition-fast)}.library-manager__upload-btn:hover:not(:disabled){background:var(--action-hover);border-color:var(--action-hover)}.library-manager__upload-btn:disabled{opacity:.5;cursor:not-allowed}.library-manager__hint{color:var(--text-secondary);font-size:.8rem}.library-manager__list-section{display:flex;flex-direction:column;gap:8px}.library-manager__empty{border:1px dashed var(--surface-border);background:var(--surface-secondary);border-radius:var(--radius-md);padding:22px 16px;text-align:center;color:var(--text-secondary);display:flex;flex-direction:column;align-items:center;gap:7px}.library-manager__list{display:flex;flex-direction:column;gap:8px;max-height:340px;overflow-y:auto;padding-right:2px}.library-manager__item{display:flex;align-items:center;justify-content:space-between;gap:10px;border:1px solid var(--surface-border);background:var(--surface-secondary);border-radius:var(--radius-sm);padding:10px 12px;transition:border-color var(--transition-fast)}.library-manager__item:hover{border-color:rgba(232,72,10,.45)}.library-manager__meta{display:inline-flex;align-items:center;gap:9px;min-width:0}.library-manager__meta i{color:var(--text-secondary);font-size:1rem}.library-manager__name{font-size:.88rem;font-weight:600;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:360px}.library-manager__size{color:var(--text-secondary);font-size:.76rem;font-family:JetBrains Mono,Fira Code,monospace}.library-manager__delete-btn{display:inline-flex;align-items:center;gap:7px;padding:7px 12px;border-radius:var(--radius-sm);border:1px solid rgba(239,68,68,.35);background:rgba(239,68,68,.1);color:var(--error);font-size:.8rem;font-weight:600;transition:all var(--transition-fast)}.library-manager__delete-btn:hover:not(:disabled){background:rgba(239,68,68,.18);border-color:rgba(239,68,68,.5)}.library-manager__delete-btn:disabled{opacity:.5;cursor:not-allowed}.library-manager__catalog-section{border:1px solid var(--surface-border);background:var(--surface-secondary);border-radius:var(--radius-md);padding:14px}.library-manager__catalog-search{display:flex;align-items:center;gap:8px;padding:7px 10px;background:var(--shell-bg-light);border:1px solid var(--shell-border);border-radius:var(--radius-sm);transition:border-color var(--transition-fast),box-shadow var(--transition-fast);margin-bottom:12px}.library-manager__catalog-search:focus-within{border-color:var(--action-primary);box-shadow:0 0 0 2px rgba(232,72,10,.15)}.library-manager__catalog-search-icon{font-size:11px;color:var(--text-secondary);opacity:.5;flex-shrink:0}.library-manager__catalog-search-input{flex:1 1;background:none;border:none;outline:none;color:var(--text-primary);font-size:.82rem;font-weight:500;min-width:0}.library-manager__catalog-search-input::placeholder{color:var(--text-secondary);opacity:.5}.library-manager__catalog-search-clear{display:flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:rgba(255,255,255,.08);color:var(--text-secondary);font-size:9px;cursor:pointer;transition:all var(--transition-fast);flex-shrink:0;border:none;padding:0}.library-manager__catalog-search-clear:hover{background:rgba(255,255,255,.16);color:var(--text-primary)}.library-manager__catalog-list{display:flex;flex-direction:column;gap:10px;max-height:300px;overflow-y:auto;padding-right:2px}.library-manager__catalog-card{border:1px solid var(--surface-border);background:var(--surface-primary);border-radius:var(--radius-sm);padding:12px 14px;transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.library-manager__catalog-card:hover{border-color:rgba(232,72,10,.35);box-shadow:0 2px 8px rgba(0,0,0,.08)}.library-manager__catalog-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:6px}.library-manager__catalog-card-info{min-width:0}.library-manager__catalog-card-name{font-size:.92rem;font-weight:700;color:var(--text-primary);display:flex;align-items:baseline;gap:8px}.library-manager__catalog-card-version{font-size:.72rem;font-weight:500;color:var(--text-tertiary);font-family:JetBrains Mono,Fira Code,monospace}.library-manager__catalog-card-author{font-size:.76rem;color:var(--text-secondary);margin-top:1px}.library-manager__catalog-card-desc{font-size:.8rem;color:var(--text-secondary);line-height:1.45;margin-bottom:8px}.library-manager__catalog-keywords{display:flex;flex-wrap:wrap;gap:5px}.library-manager__catalog-keyword-tag{display:inline-block;padding:2px 8px;border-radius:999px;font-size:.68rem;font-weight:600;background:rgba(232,72,10,.08);color:var(--action-primary);border:1px solid rgba(232,72,10,.18)}.library-manager__install-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border-radius:var(--radius-sm);border:1px solid rgba(34,197,94,.4);background:rgba(34,197,94,.1);color:var(--success);font-size:.8rem;font-weight:600;white-space:nowrap;transition:all var(--transition-fast);flex-shrink:0}.library-manager__install-btn:hover:not(:disabled){background:rgba(34,197,94,.2);border-color:rgba(34,197,94,.6)}.library-manager__install-btn:disabled{opacity:.5;cursor:not-allowed}.library-manager__installed-badge{display:inline-flex;align-items:center;gap:5px;padding:5px 12px;border-radius:999px;font-size:.74rem;font-weight:600;background:var(--surface-secondary);color:var(--text-tertiary);border:1px solid var(--surface-border);white-space:nowrap;flex-shrink:0}.modal.board-prep-modal{width:min(540px,94vw);max-width:94vw;max-height:85vh;display:flex;flex-direction:column}.board-prep-modal__body{display:flex;flex-direction:column;gap:16px;overflow-y:auto;max-height:60vh}.board-prep-modal__status{display:flex;flex-wrap:wrap;gap:8px}.board-prep-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border-radius:999px;font-size:.74rem;font-weight:600;border:1px solid var(--surface-border);color:var(--text-secondary);background:var(--surface-secondary)}.board-prep-chip--connected{color:var(--success);border-color:rgba(34,197,94,.35)}.board-prep-chip--connecting,.board-prep-chip--flashing,.board-prep-chip--verifying{color:var(--info);border-color:rgba(59,130,246,.35)}.board-prep-chip--success{color:var(--success);border-color:rgba(34,197,94,.35)}.board-prep-chip--error{color:var(--error);border-color:rgba(239,68,68,.35)}.board-prep-chip--info{color:var(--text-secondary)}.board-prep-modal__warning{display:flex;align-items:center;gap:8px;padding:10px 14px;border-radius:var(--radius-sm);background:rgba(245,158,11,.08);border:1px solid rgba(245,158,11,.25);color:var(--warning);font-size:.8rem;font-weight:500}.board-prep-modal__action-area{display:flex;flex-direction:column;align-items:center;gap:14px;padding:20px 0;text-align:center}.board-prep-modal__hint{color:var(--text-secondary);font-size:.86rem;line-height:1.5;max-width:380px}.board-prep-modal__confirm-text{color:var(--text-primary);font-size:.92rem;font-weight:500;line-height:1.5;max-width:380px}.board-prep-modal__btn-primary{display:inline-flex;align-items:center;gap:8px;padding:10px 28px;background:var(--action-primary);color:white;font-weight:700;font-size:.9rem;border-radius:var(--radius-sm);border:none;cursor:pointer;transition:all var(--transition-fast);box-shadow:var(--shadow-glow)}.board-prep-modal__btn-primary:hover{background:var(--action-hover);transform:translateY(-1px);box-shadow:0 0 24px var(--action-glow)}.board-prep-modal__btn-secondary{display:inline-flex;align-items:center;gap:6px;padding:8px 18px;background:var(--surface-secondary);color:var(--text-secondary);font-weight:600;font-size:.82rem;border-radius:var(--radius-sm);border:1px solid var(--surface-border);cursor:pointer;transition:all var(--transition-fast)}.board-prep-modal__btn-secondary:hover{border-color:var(--text-secondary);color:var(--text-primary)}.board-prep-modal__spinner{width:32px;height:32px;border:3px solid var(--surface-border);border-top-color:var(--action-primary);border-radius:50%;animation:board-prep-spin .8s linear infinite}@keyframes board-prep-spin{to{transform:rotate(1turn)}}.board-prep-modal__progress-track{width:100%;max-width:360px;height:8px;background:var(--surface-secondary);border-radius:99px;overflow:hidden;border:1px solid var(--surface-border)}.board-prep-modal__progress-fill{height:100%;background:linear-gradient(90deg,var(--action-primary),var(--success));border-radius:99px;transition:width .3s ease}.board-prep-modal__progress-label{font-size:.82rem;font-weight:700;color:var(--text-secondary);font-family:JetBrains Mono,Fira Code,monospace}.board-prep-modal__result{padding:24px 0}.board-prep-modal__result i{font-size:2.2rem}.board-prep-modal__result p{font-size:.92rem;font-weight:500;max-width:340px}.board-prep-modal__result--success{color:var(--success)}.board-prep-modal__result--error{color:var(--error)}.board-prep-modal__log{border:1px solid var(--surface-border);border-radius:var(--radius-sm);background:var(--terminal-bg);overflow:hidden}.board-prep-modal__log-header{display:flex;align-items:center;justify-content:space-between;padding:6px 12px;background:rgba(0,0,0,.25);border-bottom:1px solid rgba(255,255,255,.04);font-size:.72rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.06em}.board-prep-modal__log-clear{padding:2px 6px;border-radius:3px;color:var(--text-secondary);opacity:.5;font-size:.68rem;cursor:pointer;transition:all var(--transition-fast);background:none;border:none}.board-prep-modal__log-clear:hover{opacity:1;background:rgba(255,255,255,.08)}.board-prep-modal__log-body{max-height:180px;overflow-y:auto;padding:8px 12px;font-family:JetBrains Mono,Fira Code,monospace;font-size:.72rem;line-height:1.6}.board-prep-modal__log-line{color:var(--terminal-text,#d4d4d4);white-space:pre-wrap;word-break:break-all}.board-prep-modal__log-line--error{color:var(--error)}.board-prep-modal__log-line--success{color:var(--success)}.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}@media (max-width:900px){.modal.plotter-modal{width:96vw;max-height:94vh}.plotter-modal__header{align-items:flex-start}.plotter-modal__header-actions{flex-wrap:wrap;justify-content:flex-end}.plotter-chart-shell{min-height:280px}.plotter-chart{height:290px}.modal.library-manager-modal{width:96vw;max-height:94vh}.library-manager-modal__body{max-height:74vh}.library-manager__name{max-width:200px}}@keyframes logoFillTopToBottom{0%{-webkit-clip-path:inset(100% 0 0 0);clip-path:inset(100% 0 0 0)}to{-webkit-clip-path:inset(0 0 0 0);clip-path:inset(0 0 0 0)}}.loading-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh;background:var(--bg-workspace);color:var(--text-secondary);font-family:Inter,sans-serif;gap:16px}.loading-logo-container{position:relative;width:96px;height:96px}.loading-logo-bg{filter:grayscale(100%) opacity(.3)}.loading-logo-bg,.loading-logo-fg{position:absolute;top:0;left:0;width:100%;height:100%}.loading-logo-fg{animation:logoFillTopToBottom 2s ease-in-out infinite alternate}.loading-text{font-size:.95rem;font-weight:500;opacity:.8;letter-spacing:.5px}