:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--app-bg:#111317;--panel-bg:#1b1f27;--panel-bg-soft:#161a21;--panel-border:#2e3440;--panel-border-strong:#3a4352;--text-primary:#e5e7eb;--text-secondary:#aab2bf;--text-muted:#7b8594;--accent:#60a5fa;--accent-strong:#93c5fd;--success:#22c55e;--warning:#f59e0b;--danger:#ef4444}*{box-sizing:border-box}html,body,#root{height:100%}body{color:var(--text-primary);background:var(--app-bg);margin:0;padding:0;font-family:IBM Plex Sans,Segoe UI,sans-serif;overflow:hidden}.root-container{width:100%;height:100vh;position:relative;overflow:hidden}.app-container{height:100vh;margin:0 auto;margin-left:var(--sidebar-collapsed-width);transition:margin-left var(--sidebar-transition-duration) ease;flex-direction:column;padding:24px;display:flex}.root-container.sidebar-expanded .app-container{margin-left:var(--sidebar-expanded-width)}.root-container.sidebar-collapsed .app-container{margin-left:var(--sidebar-collapsed-width)}.app-header{color:var(--text-primary);letter-spacing:-.03em;align-items:center;gap:12px;margin:0 0 18px;font-size:2rem;font-weight:650;display:flex}.layout-container{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.sidebar-menu{height:100%}.sidebar-menu h4{color:var(--text-secondary);letter-spacing:.08em;text-transform:uppercase;margin:18px 0 10px;font-size:.78rem;font-weight:700}.sample-list{margin:0;padding:0;list-style:none}.sample-list li{border:1px solid var(--panel-border);background:var(--panel-bg-soft);color:var(--text-primary);cursor:pointer;border-radius:4px;margin-bottom:8px;padding:10px 12px;transition:border-color .18s,background-color .18s}.sample-list li:hover{border-color:var(--panel-border-strong);background:var(--panel-bg)}.package-loader{margin-top:12px}.package-form{gap:8px;margin-bottom:10px;display:flex}.package-input{border:1px solid var(--panel-border);background:var(--panel-bg-soft);min-width:0;color:var(--text-primary);font:inherit;border-radius:4px;flex:1;padding:9px 10px}.package-input::placeholder{color:var(--text-muted)}.package-input:disabled{opacity:.55;cursor:not-allowed}.package-install-button{color:var(--text-primary);cursor:pointer;background:#182130;border:1px solid #38bdf847;border-radius:4px;padding:7px 12px;font-size:.8rem;transition:background-color .18s,border-color .18s}.package-install-button:hover{background:#38bdf833;border-color:#67e8f966}.package-install-button:disabled{opacity:.45;cursor:not-allowed}.package-status{color:var(--text-muted);margin:0 0 10px;font-size:.78rem}.package-status.error{color:#fecaca}.installed-packages-panel{border:1px solid var(--panel-border);background:var(--panel-bg-soft);border-radius:6px;height:168px;overflow:auto}.installed-packages-empty{color:var(--text-muted);padding:10px 12px;font-size:.82rem}.installed-package-list{margin:0;padding:0;list-style:none}.installed-package-item{border-bottom:1px solid #94a3b814;justify-content:space-between;align-items:baseline;gap:10px;padding:9px 12px;font-size:.82rem;display:flex}.installed-package-item:last-child{border-bottom:0}.installed-package-name{min-width:0;color:var(--text-primary);overflow-wrap:anywhere}.installed-package-version{color:var(--text-muted);flex-shrink:0;font-family:SFMono-Regular,JetBrains Mono,Consolas,monospace}.sidebar-info{color:var(--text-secondary);margin-top:20px;font-size:.9rem}.sidebar-info p{margin:0 0 8px}.editor-with-button-container{flex-direction:column;min-height:220px;display:flex;position:relative;overflow:hidden}.editor-container{border:1px solid var(--panel-border);background:#1e1e1e;border-radius:6px;flex:1;height:100%;overflow:hidden}.code-editor{height:100%}.code-editor .cm-editor{height:100%;color:var(--text-primary);background:#1e1e1e}.code-editor .cm-scroller{font-family:SFMono-Regular,JetBrains Mono,Consolas,monospace;line-height:1.5;overflow:auto}.code-editor .cm-gutters{color:#5f7399;background:#181b21;border-right:1px solid #94a3b81f;min-width:52px}.code-editor .cm-activeLineGutter{color:#d0ddf7;background:#33415559}.code-editor .cm-activeLine{background:#1e293b57}.code-editor .cm-content{caret-color:var(--accent-strong);padding:18px 0 32px}.code-editor .cm-line{padding:0 18px}.code-editor .cm-cursor,.code-editor .cm-dropCursor{border-left-color:var(--accent-strong)}.code-editor .cm-selectionBackground{background:#38bdf847}.code-editor .cm-content ::selection{background:#38bdf847}.code-editor .cm-focused{outline:none}.code-editor .cm-tooltip{border:1px solid var(--panel-border);background:var(--panel-bg);color:var(--text-primary);border-radius:6px}.code-editor .cm-tooltip.cm-tooltip-hover{overscroll-behavior:contain;max-width:min(720px,100vw - 64px);max-height:min(420px,55vh);overflow:auto}.cm-lsp-hover-tooltip{overflow-wrap:anywhere;max-width:100%;line-height:1.55}.cm-lsp-hover-tooltip>:first-child{margin-top:0}.cm-lsp-hover-tooltip>:last-child{margin-bottom:0}.cm-lsp-hover-tooltip pre{background:0 0;border:0;margin:0;padding:0;overflow:auto}.cm-lsp-hover-tooltip pre:last-child,.cm-lsp-hover-tooltip>:last-child{margin-bottom:0}.run-button{z-index:10;color:#ecfdf5;cursor:pointer;background:#166534;border:1px solid #34d39959;border-radius:4px;padding:10px 16px;font-size:.9rem;font-weight:700;transition:background-color .18s,opacity .18s;position:absolute;bottom:18px;right:18px}.run-button:hover{background:#15803d}.run-button:disabled{opacity:.55;cursor:not-allowed;transform:none}.run-button.running{background:#b45309;border-color:#fbbf2459}.error-message{border:1px solid #f8717152;border-left:4px solid var(--danger);color:#fecaca;background:#7f1d1d29;border-radius:4px;margin-bottom:12px;padding:12px 14px;font-size:.92rem}.output-container{flex-direction:column;min-height:120px;display:flex;overflow:hidden}.resize-handle{cursor:row-resize;touch-action:none;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;height:18px;display:flex}.resize-handle-line{background:#94a3b861;border-radius:2px;width:72px;height:4px;transition:background-color .18s}.resize-handle:hover .resize-handle-line{background:#67e8f98c}.output{border:1px solid var(--panel-border);background:var(--panel-bg-soft);color:var(--text-primary);white-space:normal;border-radius:6px;flex:1;padding:12px;font-family:SFMono-Regular,JetBrains Mono,Consolas,monospace;overflow-y:auto}.output>*+*{margin-top:8px}.output .log,.output .stdout,.output .info,.output .warn,.output .error,.output .stderr,.output .result{border-radius:4px;padding:10px 12px}.output .log,.output .stdout{background:#0f172ab3;border:1px solid #94a3b81f}.output .info{background:#0e749029;border:1px solid #38bdf83d}.output .warn{background:#78350f2e;border:1px solid #f59e0b3d}.output .error,.output .stderr{color:#fecaca;background:#7f1d1d2e;border:1px solid #f871713d}.output .result{color:#d1fae5;background:#065f462e;border:1px solid #34d3993d}.output .mpl-figure{border:1px solid var(--panel-border);background:var(--panel-bg);color:var(--text-primary);white-space:normal;border-radius:4px;font-family:IBM Plex Sans,Segoe UI,sans-serif;overflow:hidden}.output .matplotlib-output-target{white-space:normal}.output .sdl-output-target{border:1px solid var(--panel-border);background:#0f172ab8;border-radius:4px;padding:10px 12px;overflow:auto}.output .sdl-canvas,.output canvas#canvas{max-width:100%;height:auto;image-rendering:pixelated;background:#000;margin:0;display:block}.output .terminal-block{--terminal-bg:#0f172ab8;--terminal-fg:#dbe4ee;background:var(--terminal-bg);color:var(--terminal-fg);border:1px solid #94a3b81f;border-radius:4px;padding:10px 12px}.output .terminal-block.stdout{--terminal-bg:#0f172ab8;--terminal-fg:#dbe4ee}.output .terminal-block.stderr{--terminal-bg:#7f1d1d2e;--terminal-fg:#fecaca;border-color:#f871713d}.output .terminal-screen{white-space:pre;word-break:normal}.output .terminal-line{min-height:1.4em}.output .stdin-host{align-items:center;min-width:1ch;display:inline-flex}.output .stdin-input{width:auto;min-width:8ch;color:inherit;font:inherit;background:0 0;border:0;outline:none;padding:0}.output .stdin-value{color:inherit;white-space:pre-wrap}.output .mpl-figure .mpl-toolbar{background:var(--panel-bg-soft);border-bottom:1px solid #94a3b824;padding:8px 10px}.output .mpl-figure .mpl-widget{border:1px solid var(--panel-border);background:var(--panel-bg);color:var(--text-secondary);border-radius:4px}.output .mpl-figure button.mpl-widget{cursor:pointer;padding:6px}.output .mpl-figure button.mpl-widget:hover,.output .mpl-figure button.mpl-widget:focus,.output .mpl-figure .mpl-widget.active{border-color:var(--panel-border-strong);color:var(--text-primary);background:#232832}.output .mpl-figure .mpl-widget img{opacity:.92;display:block}.output .mpl-figure .pyodide-mpl-toolbar-icon{opacity:.96;width:16px;height:16px;display:block}.output .mpl-figure .mpl-canvas,.output .mpl-figure canvas{background:#fff}.output .mpl-figure .mpl-message{color:var(--text-secondary);border-top:1px solid #94a3b824;padding:8px 10px;font-size:.85rem}.output .mpl-figure .mpl-message:empty{display:none}.what-is{color:var(--accent-strong);cursor:pointer;text-underline-offset:.18em;font-size:.95rem;font-weight:500;text-decoration:underline}.dialog-overlay{z-index:1000;background:#030712b8;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.dialog{border:1px solid var(--panel-border);background:var(--panel-bg);border-radius:6px;width:min(760px,100vw - 32px);max-height:min(92vh,860px);overflow-y:auto}.dialog-header{border-bottom:1px solid #94a3b824;justify-content:space-between;align-items:center;padding:18px 22px;display:flex}.dialog-header h2{color:var(--text-primary);margin:0}.close-button{border:1px solid var(--panel-border);background:var(--panel-bg-soft);width:36px;height:36px;color:var(--text-secondary);cursor:pointer;border-radius:4px;font-size:1.2rem}.close-button:hover{color:var(--text-primary);border-color:var(--panel-border-strong)}.dialog-content{color:var(--text-secondary);padding:22px;line-height:1.7}.dialog-content p,.dialog-content li{color:inherit}.dialog-content ul{padding-left:18px}.dialog-content a{color:var(--accent-strong)}@media (width<=900px){.app-container{padding:16px}.app-header{flex-wrap:wrap;font-size:1.6rem}}@media (width<=768px){.run-button{padding:9px 14px;bottom:14px;right:14px}.resize-handle{height:22px}.resize-handle-line{width:92px}}:root{--sidebar-expanded-width:250px;--sidebar-collapsed-width:50px;--sidebar-transition-duration:.24s}.sidebar{z-index:1000;height:100vh;transition:width var(--sidebar-transition-duration) ease, min-width var(--sidebar-transition-duration) ease;background:#151922;border-right:1px solid #94a3b81f;position:absolute;top:0;left:0}.sidebar-header{box-sizing:border-box;background:#11151d;border-bottom:1px solid #94a3b81f;justify-content:space-between;align-items:center;height:52px;padding:10px 12px;display:flex;position:relative}.sidebar-title{z-index:1;color:#e6eefc;white-space:nowrap;text-overflow:ellipsis;pointer-events:none;max-width:calc(100% - 40px);transition:opacity var(--sidebar-transition-duration) ease;margin:0;font-size:1rem;font-weight:650}.sidebar.collapsed .sidebar-title{opacity:0;width:0}.sidebar.expanded .sidebar-title{opacity:1;width:auto}.sidebar-toggle{z-index:2;color:#c9d7ef;cursor:pointer;background:#1b2130;border:1px solid #94a3b824;border-radius:4px;justify-content:center;align-items:center;width:32px;min-width:32px;height:32px;margin-left:6px;font-size:1rem;display:inline-flex;position:relative}.sidebar-toggle:hover{color:#f8fbff;border-color:#67e8f94d}.sidebar.collapsed .sidebar-toggle{position:absolute;right:9px}.sidebar-content{height:calc(100% - 52px);transition:opacity var(--sidebar-transition-duration) ease, visibility var(--sidebar-transition-duration) ease;padding:12px;overflow-y:auto}.sidebar.collapsed .sidebar-content{opacity:0;visibility:hidden}.sidebar.expanded .sidebar-content{opacity:1;visibility:visible}
