:root{font-family:var(--glp-font-ui);color:var(--glp-text);background:var(--glp-bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{min-width:320px;margin:0}button{font:inherit}.ide{background:var(--glp-bg);flex-direction:column;height:100dvh;display:flex}.ide :is(button,a,input,[role=separator]):focus-visible{outline:2px solid var(--glp-accent);outline-offset:2px}.ide-bar{border-bottom:1px solid var(--glp-border);flex-shrink:0;align-items:center;gap:16px;min-height:56px;padding:8px 16px;display:flex}.ide-brand{align-items:center;gap:8px;font-size:16px;font-weight:700;display:flex}.ide-channel-badge{color:var(--glp-warning);background:var(--glp-warning-bg);border:1px solid var(--glp-warning);border-radius:var(--glp-radius);font:700 12px/1.4 var(--glp-font-ui);letter-spacing:.04em;text-transform:uppercase;flex:none;padding:2px 8px}.ide-brand-mark{width:28px;height:28px;color:var(--glp-on-accent);background:var(--glp-accent);border-radius:var(--glp-radius);place-items:center;display:grid}.ide-actions{display:flex}.ide-bar-end{align-items:center;gap:8px;margin-left:auto;display:flex}.ide-share-status{color:var(--glp-text-muted);font-size:13px}.ide-menu{position:relative}.ide-menu-list{z-index:20;background:var(--glp-bg);border:1px solid var(--glp-border);border-radius:var(--glp-radius);min-width:250px;padding:6px 0;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 8px 20px #0000001f}.ide-menu-list button{width:100%;color:var(--glp-text);text-align:left;font:14px/1.3 var(--glp-font-ui);cursor:pointer;background:0 0;border:0;align-items:center;gap:10px;padding:8px 14px;display:flex}.ide-menu-list button:hover,.ide-menu-list button:focus-visible{background:var(--glp-surface);outline:none}.ide-menu-group{border-top:1px solid var(--glp-border);margin-top:4px;padding-top:4px}.ide-menu-label{color:var(--glp-text-muted);padding:6px 14px 2px;font-size:12px;font-weight:600;display:block}.ide-menu-check{text-align:center;width:15px}[aria-checked=true]>.ide-menu-check:before{content:"✓"}.ide-body{flex:1;min-height:0;display:flex;position:relative}.ide-rail{border-right:1px solid var(--glp-border);flex-direction:column;flex-shrink:0;align-items:center;gap:6px;width:52px;padding:12px 0;display:flex}.ide-rail .icon-button{width:38px;height:38px}.ide-drawer{z-index:15;background:var(--glp-bg);border-right:1px solid var(--glp-border);flex-direction:column;gap:14px;width:290px;padding:14px;display:flex;position:absolute;top:0;bottom:0;left:52px;overflow-y:auto;box-shadow:8px 0 20px #00000014}.ide-drawer-head{justify-content:space-between;align-items:center;display:flex}.ide-drawer-title{font-weight:700}.ide-project-label{color:var(--glp-text-muted);font-size:12px;font-weight:600;display:block}.ide-project-row{justify-content:space-between;align-items:center;gap:8px;display:flex}.ide-file-list{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.ide-file-list li{border-radius:var(--glp-radius);align-items:center;gap:2px;display:flex}.ide-file-list li.active{background:var(--glp-surface)}.ide-file-open{min-width:0;color:var(--glp-text);text-align:left;font:14px var(--glp-font-code);cursor:pointer;background:0 0;border:0;flex:1;align-items:center;gap:8px;padding:7px 8px;display:flex}.ide-file-open span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ide-file-delete:not(:disabled):hover{color:var(--glp-error)}.ide-file-read-only{color:var(--glp-text-muted);place-items:center;padding:6px;display:inline-grid}.ide-new-file{align-self:flex-start}.ide-main{flex-direction:column;flex:1;gap:10px;min-width:0;min-height:0;padding:14px 16px 16px;display:flex}@media (width<=900px){.ide-brand>span:last-child{display:none}.ide-bar{gap:10px;padding:8px 12px}.ide-main{padding:12px}}.ide-notice{color:var(--glp-text);background:var(--glp-info-bg);border-left:3px solid var(--glp-info);border-radius:var(--glp-radius);flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 10px;padding:6px 6px 6px 12px;font-size:14px;display:flex}.ide-notice>span{flex:1;min-width:12em}.ide-notice .secondary-button{padding:5px 10px;font-size:13px}.ide-notice--warning{background:var(--glp-warning-bg);border-left-color:var(--glp-warning)}.ide-libraries{flex-direction:column;gap:4px;display:flex}.ide-library-name{flex-direction:column;min-width:0;display:flex}.ide-library-name small{color:var(--glp-text-muted);font:12px/1.3 var(--glp-font-ui);white-space:normal}.ide-library-name small.ide-library-failed{color:var(--glp-warning)}.ide-file-open:disabled{cursor:default}.ide-dialog-backdrop{z-index:30;background:#00000040;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.ide-dialog{background:var(--glp-bg);border:1px solid var(--glp-border);border-radius:var(--glp-radius);width:min(520px,100%);max-height:80vh;padding:16px;overflow-y:auto;box-shadow:0 12px 32px #0000002e}.ide-dialog-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.ide-dialog-hint{color:var(--glp-text-muted);margin:4px 0 12px;font-size:13px}.ide-closed-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.ide-closed-list li{border-top:1px solid var(--glp-border);align-items:center;gap:8px;padding:8px 0;display:flex}.ide-closed-name{flex-direction:column;flex:1;min-width:0;display:flex}.ide-closed-name strong{font-family:var(--glp-font-code);font-weight:600}.ide-closed-name span{color:var(--glp-text-muted);font-size:13px}.ide-closed-list .secondary-button{padding:5px 10px;font-size:13px}.ide-info{width:min(380px,100%)}.ide-options-list{flex-direction:column;gap:2px;margin:8px 0 0;padding:0;list-style:none;display:flex}.ide-options-list label{border-radius:var(--glp-radius);cursor:pointer;align-items:center;gap:10px;min-height:36px;padding:2px 4px;display:flex}.ide-options-list label:hover{background:var(--glp-surface)}.ide-options-list input{width:18px;height:18px;accent-color:var(--glp-accent);margin:0}.ide-info-list{grid-template-columns:auto 1fr;gap:4px 16px;margin:12px 0;display:grid}.ide-info-list dt{color:var(--glp-text-muted)}.ide-info-list dd{margin:0}.ide-info-list code{font:600 14px var(--glp-font-code)}.ide-info-check{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:10px;font-size:14px;display:flex}.ide-info-check .secondary-button{padding:5px 10px;font-size:13px}.ide-info .ide-notice{margin:0}:root{--glp-bg:#fff;--glp-surface:#f3f4f6;--glp-border:#d1d5db;--glp-border-control:#6b7280;--glp-text:#1a1a1a;--glp-text-muted:#4b5563;--glp-accent:#1f3a5f;--glp-on-accent:#fff;--glp-current:#dce6f2;--glp-current-outline:#1f3a5f;--glp-error:#b42318;--glp-error-bg:#fdecea;--glp-warning:#8a4b00;--glp-warning-bg:#fff4e5;--glp-info:#1d5b9a;--glp-info-bg:#e3eefa;--glp-success:#1e6b3a;--glp-syntax-keyword:#1f3a5f;--glp-syntax-string:#8a3b12;--glp-syntax-number:#0f5f7a;--glp-syntax-comment:#5b6472;--glp-font-code:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--glp-font-ui:system-ui, sans-serif;--glp-radius:4px}.editor-actions,.breadcrumbs,.output-title,.secondary-button,.run-button{align-items:center;display:flex}.hidden-input{display:none}.glpython-workspace :is(button,input,select,summary,[role=button]):focus-visible{outline:2px solid var(--glp-accent);outline-offset:2px}.icon-button{color:var(--glp-text);cursor:pointer;border-radius:var(--glp-radius);background:0 0;border:0;place-items:center;padding:6px;display:inline-grid}.icon-button:hover{background:var(--glp-surface);color:var(--glp-accent)}.icon-button.small{padding:4px}.main-split{flex:1;align-items:stretch;gap:14px;min-height:0;display:flex}.editor-column{flex-direction:column;flex:1;gap:14px;min-width:0;display:flex}.editor-header{justify-content:space-between;align-items:center;gap:20px;min-height:37px;display:flex}.breadcrumbs{color:var(--glp-text-muted);gap:10px;font-size:13px}.breadcrumbs strong{color:var(--glp-text);font-family:var(--glp-font-code);font-size:13px;font-weight:500}.editor-actions{gap:8px}.secondary-button,.run-button{border-radius:var(--glp-radius);cursor:pointer;font:600 14px/1.2 var(--glp-font-ui);gap:7px;padding:8px 12px}.secondary-button{border:1px solid var(--glp-border-control);color:var(--glp-text);background:var(--glp-bg)}.secondary-button:hover:not(:disabled){border-color:var(--glp-accent);color:var(--glp-accent)}.run-button{border:1px solid var(--glp-accent);color:var(--glp-on-accent);background:var(--glp-accent)}.run-button:hover:not(:disabled){border-color:color-mix(in srgb, var(--glp-accent) 88%, black);background:color-mix(in srgb, var(--glp-accent) 88%, black)}.secondary-button:disabled,.run-button:disabled,.icon-button:disabled{opacity:.5;cursor:not-allowed}.icon-button:disabled:hover{color:var(--glp-text);background:0 0}.glpython-workspace{min-width:0;min-height:0;color:var(--glp-text);font-family:var(--glp-font-ui);flex:1;display:flex}.glpython-workspace>.main-split{width:100%}.glpython-workspace--compact .editor-header{min-height:32px}.glpython-workspace--no-breadcrumbs .breadcrumbs,.glpython-workspace--no-file-tabs .editor-tabs,.glpython-workspace--no-graphics .graphics-collapsed-toggle{display:none}.glpython-workspace--no-breadcrumbs .editor-header{justify-content:flex-end}:is(.glpython-workspace--no-reset .editor-actions .secondary-button:has(.lucide-rotate-ccw),.glpython-workspace--no-visualization .editor-actions .secondary-button:has(.lucide-workflow)),.glpython-workspace--no-actions:not(.glpython-workspace--visualizing) .editor-header,.glpython-workspace--visualizing.glpython-workspace--no-breadcrumbs .editor-header{display:none}.glpython-workspace--no-editor:not(.glpython-workspace--visualizing) .editor-column{gap:0}.auth-notice{color:var(--glp-warning);background:var(--glp-warning-bg);border-radius:var(--glp-radius);padding:10px 13px;font-size:13px}.editor-panel{background:var(--glp-surface);border:1px solid var(--glp-border);border-radius:var(--glp-radius);flex-direction:column;flex:1;min-width:0;min-height:330px;display:flex;overflow:hidden}.editor-tabs{background:var(--glp-surface);border-bottom:1px solid var(--glp-border);flex-shrink:0;align-items:stretch;min-height:38px;display:flex;overflow-x:auto}.editor-tab{border:0;border-right:1px solid var(--glp-border);min-width:130px;color:var(--glp-text-muted);background:var(--glp-surface);font:13px var(--glp-font-code);cursor:pointer;align-items:center;gap:8px;padding:0 12px;display:flex}.editor-tab.active{color:var(--glp-text);background:var(--glp-bg);box-shadow:inset 0 2px 0 var(--glp-accent)}.tab-file-icon,.tab-read-only{color:var(--glp-text-muted);display:inline-flex}.editor-tab.active .tab-file-icon{color:var(--glp-accent)}.tab-close{color:var(--glp-text-muted);border-radius:var(--glp-radius);margin-left:auto;padding:3px;display:inline-flex}.tab-close:hover{color:var(--glp-text);background:var(--glp-border)}.editor-wrap{flex:1;min-width:0;min-height:0;position:relative}.editor-host{height:100%}.markdown-switch{flex-shrink:0;align-items:center;gap:2px;margin-left:auto;padding:0 8px;display:flex}.markdown-switch button{border:1px solid var(--glp-border-control);border-radius:var(--glp-radius);color:var(--glp-text);background:var(--glp-bg);font:600 12px/1.2 var(--glp-font-ui);cursor:pointer;padding:4px 10px}.markdown-switch button[aria-pressed=true]{color:var(--glp-on-accent);background:var(--glp-accent);border-color:var(--glp-accent)}.markdown-switch button:focus-visible{outline:2px solid var(--glp-accent);outline-offset:2px}.markdown-page{z-index:2;color:var(--glp-text);background:var(--glp-bg);font:15px/1.6 var(--glp-font-ui);overflow-wrap:break-word;padding:20px 28px 32px;position:absolute;inset:0;overflow:auto}.markdown-page:focus-visible{outline:2px solid var(--glp-accent);outline-offset:-2px}.markdown-page>:first-child{margin-top:0}.markdown-page h1,.markdown-page h2,.markdown-page h3,.markdown-page h4{color:var(--glp-text);margin:1.4em 0 .5em;line-height:1.3}.markdown-page h1{font-size:1.6em}.markdown-page h2{border-bottom:1px solid var(--glp-border);padding-bottom:.2em;font-size:1.3em}.markdown-page h3{font-size:1.1em}.markdown-page p,.markdown-page ul,.markdown-page ol,.markdown-page blockquote,.markdown-page table,.markdown-page pre{margin:0 0 1em}.markdown-page ul,.markdown-page ol{padding-left:1.6em}.markdown-page li+li{margin-top:.25em}.markdown-page a{color:var(--glp-info)}.markdown-page code{color:var(--glp-text);background:var(--glp-surface);border-radius:var(--glp-radius);font:.92em var(--glp-font-code);padding:1px 5px}.markdown-page pre{background:var(--glp-surface);border:1px solid var(--glp-border);border-radius:var(--glp-radius);padding:12px 14px;overflow-x:auto}.markdown-page pre code{background:0 0;padding:0;font-size:14px;line-height:1.5}.markdown-page blockquote{color:var(--glp-text-muted);border-left:3px solid var(--glp-border-control);padding:4px 14px}.markdown-page table{border-collapse:collapse;max-width:100%;display:block;overflow-x:auto}.markdown-page th,.markdown-page td{border:1px solid var(--glp-border);text-align:left;vertical-align:top;padding:6px 10px}.markdown-page th{background:var(--glp-surface)}.markdown-page img{max-width:100%}.markdown-page hr{border:0;border-top:1px solid var(--glp-border);margin:1.5em 0}@media (width<=700px){.markdown-page{padding:16px}}.output-panel{background:var(--glp-bg);border:1px solid var(--glp-border);border-radius:var(--glp-radius);min-height:142px;overflow:hidden}.output-heading{border-bottom:1px solid var(--glp-border);justify-content:space-between;align-items:center;height:40px;padding:0 12px;display:flex}.output-title{color:var(--glp-text);gap:8px;font-size:13px;font-weight:700}.output-title svg{color:var(--glp-text-muted)}.runtime-badge{color:var(--glp-text-muted);background:var(--glp-surface);border-radius:var(--glp-radius);align-items:center;gap:5px;margin-left:7px;padding:2px 7px;font-size:13px;font-weight:500;display:inline-flex}.pulse{background:var(--glp-success);border-radius:50%;width:6px;height:6px;display:inline-block}.runtime-badge--failed{color:var(--glp-error);background:var(--glp-error-bg)}.runtime-badge--failed .pulse{background:var(--glp-error)}.output-hint{color:var(--glp-text-muted);font-size:13px}.console{min-height:90px;max-height:240px;color:var(--glp-text);background:var(--glp-surface);font:15px/1.6 var(--glp-font-code);padding:12px;overflow-y:auto}.console pre{color:inherit;white-space:pre-wrap;font:inherit;margin:0}.console-note{color:var(--glp-text-muted);font:italic 13px/1.5 var(--glp-font-ui);margin:6px 0 0}.graphics-panel{background:var(--glp-bg);border:1px solid var(--glp-border);border-radius:var(--glp-radius);flex-direction:column;flex-shrink:0;width:340px;display:flex;overflow:hidden}.graphics-canvas{image-rendering:auto;width:100%;height:auto;display:block}.graphics-empty{color:var(--glp-text-muted);margin:0;padding:12px;font-size:13px;line-height:1.5}.graphics-empty code{color:var(--glp-text);background:var(--glp-surface);border-radius:var(--glp-radius);font-family:var(--glp-font-code);padding:1px 5px}.graphics-collapsed-toggle{border:1px solid var(--glp-border);border-radius:var(--glp-radius);width:34px;color:var(--glp-text-muted);background:var(--glp-bg);cursor:pointer;flex-direction:column;flex-shrink:0;justify-content:center;align-items:center;gap:8px;padding:12px 0;display:flex}.graphics-collapsed-toggle:hover{color:var(--glp-accent);border-color:var(--glp-accent)}.graphics-collapsed-toggle span{writing-mode:vertical-rl;letter-spacing:.4px;font-size:13px;font-weight:600}.input-dialog-backdrop{z-index:20;background:#00000073;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.input-dialog{width:100%;max-width:380px;color:var(--glp-text);background:var(--glp-bg);border:1px solid var(--glp-border);border-radius:var(--glp-radius);flex-direction:column;gap:12px;padding:20px;display:flex;box-shadow:0 20px 48px #00000040}.input-dialog-heading{color:var(--glp-text);align-items:center;gap:8px;font-weight:700;display:flex}.input-dialog-prompt{color:var(--glp-text);white-space:pre-wrap;margin:0;font-size:13px;line-height:1.5}.input-dialog-field{border:1px solid var(--glp-border-control);border-radius:var(--glp-radius);font:15px var(--glp-font-code);background:var(--glp-bg);color:var(--glp-text);padding:9px 11px}.input-dialog-field:focus-visible{outline:2px solid var(--glp-accent);outline-offset:2px}.input-dialog-actions{justify-content:flex-end;gap:8px;display:flex}.full-value-dialog{box-sizing:border-box;min-width:0;max-width:min(720px,100%);max-height:calc(100vh - 40px)}.full-value-title{font-family:var(--glp-font-code)}.full-value-length{color:var(--glp-text-muted);font-size:13px;font-weight:400}.full-value-close{margin-left:auto}.full-value-text{min-height:0;color:var(--glp-text);background:var(--glp-surface);border:1px solid var(--glp-border);border-radius:var(--glp-radius);font:14px/1.6 var(--glp-font-code);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;padding:10px 12px;overflow:auto}.full-value-cut{color:var(--glp-text-muted);margin:0;font-size:13px}.full-value-tree{border:1px solid var(--glp-border);border-radius:var(--glp-radius);flex-shrink:0;min-width:0;max-height:50vh;padding:10px 12px;font-size:14px;overflow-y:auto}.value-tree-frame{--value-tree-fade:var(--glp-bg);min-width:0;max-width:100%;display:block;position:relative}.value-tree-scroll{border-radius:var(--glp-radius);display:block;overflow:auto hidden}.value-tree-scroll:focus-visible{outline:2px solid var(--glp-accent);outline-offset:-2px}.value-tree-hint{width:36px;color:var(--glp-text-muted);font:400 20px/1 var(--glp-font-ui);pointer-events:none;align-items:center;display:flex;position:absolute;top:0;bottom:0}.value-tree-hint--left{background:linear-gradient(to right, var(--value-tree-fade) 30%, transparent);justify-content:flex-start;padding-left:2px;left:0}.value-tree-hint--right{background:linear-gradient(to left, var(--value-tree-fade) 30%, transparent);justify-content:flex-end;padding-right:2px;right:0}.value-tree{font-family:var(--glp-font-code);flex-shrink:0;line-height:1.6em;display:block;position:relative}.value-tree-edges{position:absolute;top:0;left:0;overflow:visible}.value-tree-edges line{stroke:var(--glp-border-control);stroke-width:1px;vector-effect:non-scaling-stroke}.value-tree-node,.value-tree-leaf{box-sizing:border-box;text-align:center;white-space:pre;border-radius:var(--glp-radius);height:1.6em;position:absolute;overflow:hidden}.value-tree-node{color:var(--glp-syntax-keyword);background:var(--glp-surface);border:1px solid var(--glp-border-control);font-weight:600}.value-tree-leaf{color:var(--glp-text);background:var(--glp-bg);border:1px dashed var(--glp-border)}.value-tree-leaf--string{color:var(--glp-syntax-string)}.value-tree-leaf--number{color:var(--glp-syntax-number)}@media (width<=760px){.editor-header{flex-direction:column;align-items:flex-start;gap:12px}.editor-actions{width:100%}.secondary-button,.run-button{flex:1;justify-content:center}.visualizer-bar .secondary-button{flex:none}.output-hint{display:none}.main-split{flex-direction:column}.graphics-panel{width:100%}.graphics-collapsed-toggle{flex-direction:row;width:100%;padding:8px 0}.graphics-collapsed-toggle span{writing-mode:horizontal-tb}}.visualizer-bar{background:var(--glp-bg);border:1px solid var(--glp-border);border-radius:var(--glp-radius);align-items:center;gap:12px;min-height:42px;padding:0 12px;display:flex}.visualizer-step-count{color:var(--glp-text-muted);font-size:13px;font-family:var(--glp-font-ui);white-space:nowrap}.visualizer-scrubber{accent-color:var(--glp-accent);flex:1}.visualizer-controls{align-items:center;gap:2px;display:flex}.visualizer-warning{color:var(--glp-warning);background:var(--glp-warning-bg);border-radius:var(--glp-radius);align-items:center;gap:8px;padding:9px 12px;font-size:13px;display:flex}.visualizer-warning svg{color:var(--glp-warning);flex-shrink:0}.locals-row{font:inherit;border-bottom:1px solid var(--glp-border);flex-wrap:wrap;align-items:baseline;gap:0 10px;padding:6px 12px;display:flex}.locals-row:last-child{border-bottom:0}.locals-name{color:var(--glp-text);font-weight:600}.locals-value{color:var(--glp-text);overflow-wrap:anywhere}.locals-value-kind{white-space:nowrap}.locals-value-pending{color:var(--glp-text-muted);font-style:italic}.visual-current-line{background:color-mix(in srgb, var(--glp-current) 50%, transparent)}.visual-executed-line{background:color-mix(in srgb, var(--glp-current) 18%, transparent)}.visual-substituted-value{background:var(--glp-current);border-radius:var(--glp-radius);font-weight:600;color:var(--glp-text)!important}.visual-loop-annotation{font-style:italic;color:var(--glp-text-muted)!important}.visual-next-step{outline:1.5px dashed var(--glp-current-outline);outline-offset:-1px;border-radius:var(--glp-radius)}.visualizer-frame{background:var(--glp-surface);min-height:0;color:var(--glp-text);font-family:var(--glp-font-code);flex-direction:column;flex:1;font-size:15px;line-height:1.6;display:flex;position:relative;overflow:hidden}.visualizer-view{flex:auto;min-height:0;padding:12px 0 0;overflow:auto;container-type:inline-size}.visualizer-canvas{padding-bottom:12px}.visualizer-globals{border-top:1px solid var(--glp-border);background:var(--glp-surface);flex:none;min-height:calc(1.6em + 9px);max-height:calc(4.8em + 9px);padding:4px 12px;display:grid;overflow-y:auto}.visualizer-globals-list,.visualizer-globals-reserve{flex-wrap:wrap;grid-area:1/1;align-content:flex-start;gap:0 20px;min-width:0;display:flex}.visualizer-globals-reserve{visibility:hidden}.visualizer-globals .locals-row{border-radius:var(--glp-radius);cursor:default;touch-action:manipulation;-webkit-tap-highlight-color:transparent;border-bottom:0;min-width:0;margin:0 -4px;padding:0 4px}.visualizer-globals .locals-row:hover,.visualizer-globals .locals-row[aria-describedby]{background:var(--glp-bg)}.visualizer-globals .locals-row:focus-visible{outline:2px solid var(--glp-accent);outline-offset:-2px}.visualizer-globals .locals-value{overflow-wrap:anywhere}.visualizer-globals-peek{z-index:30;box-sizing:border-box;background:var(--glp-bg);border:1px solid var(--glp-border);border-radius:var(--glp-radius);overscroll-behavior:contain;width:max-content;max-width:100%;padding:8px 12px;position:absolute;left:0;overflow:auto;box-shadow:0 8px 20px #0000001f}.visualizer-globals-definition{font:inherit;white-space:pre;margin:0}.visualizer-globals-value{align-items:baseline;gap:10px;display:flex}.visualizer-globals-value .locals-value-length{display:inline}.visualizer-globals-value-text{font:inherit;white-space:pre-wrap;overflow-wrap:anywhere;margin:0}.visualizer-globals-peek .full-value-cut{margin:6px 0 0}.visualizer-globals-peek .full-value-tree{margin-top:8px}.visualizer-canvas{position:relative}.visualizer-measure{visibility:hidden;pointer-events:none;height:0;position:absolute;top:0;left:0;overflow:hidden}.visual-output-steady{display:grid}.visual-output-steady>*{grid-area:1/1}.visual-output-final{visibility:hidden}.visualizer-connectors{pointer-events:none;z-index:2;opacity:.55;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.visualizer-connectors path{fill:none;stroke:var(--glp-text-muted);stroke-width:1.5px}.visualizer-connectors marker path{fill:var(--glp-text-muted);stroke:none}.frame-box{vertical-align:top;border:1px solid var(--glp-border-control);border-left:3px solid var(--glp-border-control);border-radius:var(--glp-radius);background:var(--glp-bg);align-items:stretch;margin-left:4px;display:inline-flex;overflow:visible}.frame-box--root{background:0 0;border:0;border-radius:0;width:100%;margin-left:0;display:flex;overflow:visible}.frame-code{white-space:pre;flex:1;min-width:0;padding:2px 0}.frame-box--root .frame-code,.frame-line,.frame-line-row{padding:0 12px}.frame-box--root .frame-line,.frame-box--root .frame-line-row{padding:0}.frame-line-row{align-items:baseline;display:flex}.frame-gutter-num{width:3em;color:var(--glp-text-muted);text-align:right;-webkit-user-select:none;user-select:none;flex-shrink:0;padding-right:14px}.frame-divider{background:var(--glp-border);flex-shrink:0;align-self:stretch;width:1px}.frame-vars{flex-shrink:0;width:20ch;padding:6px 0;overflow-y:auto}.frame-child-zone{display:inline-block}.py-tok-keyword,.py-tok-decorator{color:var(--glp-syntax-keyword);font-weight:700}.py-tok-string{color:var(--glp-syntax-string)}.py-tok-number{color:var(--glp-syntax-number)}.py-tok-comment{color:var(--glp-syntax-comment);font-style:italic}.visualizer-animated .frame-line,.visualizer-animated .frame-line-row{transition:background-color .25s}.visualizer-animated .visual-current-line,.visualizer-animated .visual-executed-line,.visualizer-animated .visual-substituted-value,.visualizer-animated .visual-next-step,.visualizer-animated .visual-loop-annotation,.visualizer-animated .visual-param-annotation{transition:background-color .25s,color .25s,outline-color .25s}.visualizer-animated .locals-value{transition:color .2s}.visualizer-animated .locals-value:not(.locals-value-pending){animation:.5s visual-value-pop}.visualizer-animated .frame-box:not(.frame-box--root){animation:.42s ease-out backwards visual-frame-grow}.visualizer-animated .locals-row{animation:.22s visual-fade-in}.visualizer-animated .visualizer-connectors path{animation:.3s backwards visual-fade-in}@keyframes visual-fade-in{0%{opacity:0}to{opacity:1}}@keyframes visual-frame-grow{0%{transform:translate(var(--grow-dx,0px), var(--grow-dy,0px)) scale(.4)}to{transform:translate(0)scale(1)}}@keyframes visual-value-pop{0%{background-color:var(--glp-current);border-radius:var(--glp-radius)}to{background-color:#0000}}.visual-substituted-value{display:inline-block}.visual-substituted-value--long{white-space:pre-wrap;overflow-wrap:anywhere;-webkit-box-decoration-break:clone;box-decoration-break:clone;display:inline}.visual-value-more{cursor:pointer}.visual-value-more-text{text-underline-offset:3px;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.visual-value-more:focus-visible{outline:2px solid var(--glp-accent);outline-offset:1px}.locals-value-length{color:var(--glp-text-muted);font-size:12px;display:block}.locals-tree{flex-basis:100%;min-width:0;max-width:100%;padding:6px 0}.locals-tree-more{color:var(--glp-accent);font:600 12px/1.6 var(--glp-font-ui);flex-basis:auto;padding:0}.visualizer-animated .visual-substituted-value{animation:.4s ease-out backwards visual-return-fly-in}@keyframes visual-return-fly-in{0%{transform:translate(var(--return-dx,0px), var(--return-dy,0px))}to{transform:translate(0)}}.visualizer-closing-boxes{pointer-events:none;z-index:1;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.visual-closing-box-ghost{animation:.4s ease-in forwards visual-closing-box-fade;position:absolute}@keyframes visual-closing-box-fade{0%{opacity:1}to{opacity:0}}.visualizer-flights{pointer-events:none;z-index:3;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.visualizer-connectors--frame{z-index:25;overflow:hidden}.visualizer-flights--frame{z-index:26;overflow:hidden}.visual-flight-value{offset-rotate:0deg;background:var(--glp-current);color:var(--glp-text);border-radius:var(--glp-radius);font:600 13px/18px var(--glp-font-code);white-space:nowrap;padding:0 5px;animation:.6s ease-out forwards visual-flight-move;position:absolute;top:0;left:0;transform:translate(-50%,-50%)}.visualizer-connectors path.visual-flight-arrow{animation:.6s ease-out forwards visual-flight-arrow-fade}@keyframes visual-flight-move{0%{offset-distance:0%;opacity:1}80%{offset-distance:100%;opacity:1}to{offset-distance:100%;opacity:0}}@keyframes visual-flight-arrow-fade{0%{opacity:1}80%{opacity:1}to{opacity:0}}.visualizer-scrubber-track{flex:1;align-items:center;min-width:60px;display:flex;position:relative}.visualizer-scrubber-track .visualizer-scrubber{width:100%;margin:0}.visualizer-scrubber-error{top:50%;left:calc(8px + (100% - 16px) * var(--marker-position));background:var(--glp-error);pointer-events:none;width:4px;height:16px;box-shadow:0 0 0 1.5px var(--glp-bg);border-radius:2px;position:absolute;transform:translate(-50%,-50%)}.visualizer-truncated-hint{max-width:280px;color:var(--glp-warning);flex:0 auto;align-items:center;gap:5px;font-size:13px;line-height:1.3;display:inline-flex}.visualizer-truncated-hint svg{color:var(--glp-warning);flex-shrink:0}.visual-error-line{background:var(--glp-error-bg)}.visual-error-node{background:var(--glp-error-bg);outline:1.5px solid var(--glp-error);outline-offset:-1px;border-radius:var(--glp-radius);color:var(--glp-error)!important}.visual-error-message{color:var(--glp-error);font:600 13px/1.5 var(--glp-font-code);white-space:pre-wrap;padding:2px 8px 4px}.output-error{color:var(--glp-error)}.frame-collapsed-calls{border:1px dashed var(--glp-border-control);border-radius:var(--glp-radius);flex-direction:column;align-items:flex-start;gap:4px;margin-left:4px;padding:4px 6px 6px;display:inline-flex}.frame-collapsed-calls-label{color:var(--glp-text-muted);font:italic 13px/1.5 var(--glp-font-code);white-space:nowrap}.frame-collapsed-calls>.frame-box{margin-left:0}.repl-entry{margin-top:6px;display:block}.repl-entry>span{display:block}.repl-entry>.repl-echo{align-items:baseline;gap:12px;display:flex}.repl-echo{color:var(--glp-text-muted)}.repl-echo>span{white-space:pre-wrap;overflow-wrap:anywhere;min-width:0}.repl-entry-visualize,.repl-entry-tree{border-radius:var(--glp-radius);color:var(--glp-accent);cursor:pointer;font:600 12px/1.6 var(--glp-font-ui);background:0 0;border:0;flex-shrink:0;margin-left:auto;padding:0 4px}.repl-entry-visualize:hover:not(:disabled),.repl-entry-tree:hover{text-decoration:underline}.repl-entry-tree+.repl-entry-visualize{margin-left:0}.repl-entry-visualize:disabled{color:var(--glp-text-muted);cursor:not-allowed}.repl-note{color:var(--glp-text-muted);font:italic 13px/1.5 var(--glp-font-ui);white-space:normal}.repl-value{color:var(--glp-text)}.repl-tree{min-width:0;max-width:100%;padding:4px 0 6px;display:block}.repl-hint{color:var(--glp-warning);font-style:italic}.repl-line{background:var(--glp-surface);border-top:1px solid var(--glp-border);align-items:center;gap:8px;padding:12px;display:flex}.repl-prompt{color:var(--glp-text-muted);font:600 15px/1.6 var(--glp-font-code);flex-shrink:0}.repl-input{min-width:0;color:var(--glp-text);background:var(--glp-bg);border:1px solid var(--glp-border-control);border-radius:var(--glp-radius);font:15px/1.6 var(--glp-font-code);flex:1;padding:4px 8px}.repl-line--program .repl-prompt{max-width:60%;color:var(--glp-text);white-space:pre;text-overflow:ellipsis;font-weight:400;overflow:hidden}.repl-line--program .repl-input{border-color:var(--glp-accent)}.frame-box:not(.frame-box--root){flex-direction:column}.frame-box:not(.frame-box--root)>.frame-divider{display:none}.frame-box:not(.frame-box--root)>.frame-vars{border-top:1px solid var(--glp-border);contain:inline-size;flex-wrap:wrap;gap:0 16px;width:auto;padding:3px 12px 5px;display:flex;overflow:visible}.frame-box:not(.frame-box--root)>.frame-vars .locals-row{border-bottom:0;min-width:0;padding:0}.frame-box:not(.frame-box--root)>.frame-vars .locals-value{overflow-wrap:anywhere}.frame-box--current>.frame-vars{z-index:1;background:var(--glp-bg);position:sticky;bottom:0}.visual-param-annotation{color:var(--glp-text)!important}.visualizer-bar{flex-wrap:wrap;row-gap:6px;padding-top:6px;padding-bottom:6px}.visualizer-options{position:relative}.visualizer-options-button{white-space:nowrap;padding:4px 10px;font-size:13px}.visualizer-options-menu{z-index:20;background:var(--glp-bg);border:1px solid var(--glp-border);border-radius:var(--glp-radius);min-width:220px;padding:4px;position:absolute;top:calc(100% + 4px);right:0;box-shadow:0 8px 20px #0000001f}.visualizer-options-item{border-radius:var(--glp-radius);width:100%;color:var(--glp-text);font:14px/1.3 var(--glp-font-ui);text-align:left;white-space:nowrap;cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;padding:8px 10px;display:flex}.visualizer-options-item:hover:not(:disabled){color:var(--glp-accent);background:var(--glp-surface)}.visualizer-options-item:focus-visible{outline-offset:-2px}.visualizer-options-item:disabled{opacity:.5;cursor:not-allowed}.visualizer-options-check{border:1.5px solid var(--glp-border-control);border-radius:3px;flex-shrink:0;place-items:center;width:14px;height:14px;display:inline-grid}.visualizer-options-item[aria-checked=true] .visualizer-options-check{background:var(--glp-accent);border-color:var(--glp-accent)}.visualizer-options-item[aria-checked=true] .visualizer-options-check:after{content:"";border:solid var(--glp-on-accent);border-width:0 2px 2px 0;width:4px;height:8px;margin-top:-2px;transform:rotate(45deg)}.visualizer-mode{background:var(--glp-bg);border:1px solid var(--glp-border-control);border-radius:var(--glp-radius);padding:2px;display:inline-flex}.visualizer-mode button{color:var(--glp-text);border-radius:var(--glp-radius);font:600 13px/1.4 var(--glp-font-ui);cursor:pointer;background:0 0;border:0;padding:3px 10px}.visualizer-mode button:hover{color:var(--glp-accent)}.visualizer-mode button[aria-pressed=true]{color:var(--glp-on-accent);background:var(--glp-accent)}.frame-hint{color:var(--glp-text-muted);font:italic 13px/1.5 var(--glp-font-ui);white-space:normal;padding:2px 12px 4px}.frame-hint code{font:normal 600 13px/1.5 var(--glp-font-code);color:var(--glp-text)}.frame-tree{vertical-align:top;white-space:normal;background:var(--glp-bg);border:1px solid var(--glp-border);border-radius:var(--glp-radius);flex-direction:column;gap:8px;max-width:100%;margin:2px 0;padding:6px 8px;display:inline-flex}.frame-tree-view{min-width:0;display:block}.value-tree-box{white-space:pre;width:max-content;position:absolute;transform:translate(-50%)}.value-tree-box>.frame-child-zone{display:block}.value-tree-edge-label{color:var(--glp-text-muted);line-height:1;font-family:var(--glp-font-code);white-space:pre;pointer-events:none;position:absolute}.value-tree-probe{visibility:hidden;white-space:pre;position:absolute}.value-tree-leaf--name{color:var(--glp-text)}.value-tree-leaf--code{color:var(--glp-text-muted)}.value-tree-leaf--value{font-weight:600}.value-tree .visual-next-step{outline:1.5px dashed var(--glp-current-outline);outline-offset:1px}.value-tree .visual-error-node{outline-offset:1px}.value-tree-ghost{pointer-events:none;display:none}.visualizer-animated .value-tree-frame--animated .value-tree-node,.visualizer-animated .value-tree-frame--animated .value-tree-leaf{transition:left .35s,top .35s,width .35s,background-color .25s}.visualizer-animated .value-tree-frame--animated .value-tree-ghost{animation:.4s ease-in forwards value-tree-leave;display:block}.visualizer-animated .value-tree-frame--animated .value-tree-entering{animation:.3s backwards visual-fade-in}.visualizer-animated .value-tree-frame--animated .value-tree-leaf--value:not(.value-tree-ghost){animation:.6s visual-value-pop}@keyframes value-tree-leave{to{transform:translate(var(--value-tree-dx), var(--value-tree-dy));opacity:0}}@media (prefers-reduced-motion:reduce){.visualizer-animated .value-tree-frame--animated .value-tree-node,.visualizer-animated .value-tree-frame--animated .value-tree-leaf{transition:none;animation:none}.visualizer-animated .value-tree-frame--animated .value-tree-ghost{display:none}}.test-report{margin-top:6px}.test-report pre{white-space:pre-wrap;min-height:0;max-height:none;font:inherit;background:0 0;margin:0;padding:0}.test-output{color:var(--glp-text-muted);margin-bottom:8px!important}.test-summary{margin:0 0 8px;font-weight:700}.test-summary--passed{color:var(--glp-success)}.test-summary--failed{color:var(--glp-error)}.test-hint{color:var(--glp-warning);background:var(--glp-warning-bg);border-radius:var(--glp-radius);font:13px/1.5 var(--glp-font-ui);margin:0 0 8px;padding:6px 10px}.error-hint{color:var(--glp-warning);background:var(--glp-warning-bg);border-radius:var(--glp-radius);font:13px/1.5 var(--glp-font-ui);white-space:normal;margin:6px 0 8px;padding:6px 10px;display:block}.error-hint code{font:600 1em var(--glp-font-code)}.visual-error-hint{padding:0 8px 4px}.visual-error-hint .error-hint{margin:0}.test-coverage{color:var(--glp-text);background:var(--glp-warning-bg);border-left:3px solid var(--glp-warning);border-radius:var(--glp-radius);font:13px/1.5 var(--glp-font-ui);margin:0 0 8px;padding:6px 10px}.test-coverage--complete{background:var(--glp-info-bg);border-left-color:var(--glp-info)}.test-coverage-heading{margin:0 0 2px}.test-coverage ul{margin:0;padding:0;list-style:none}.test-coverage code{font:13px/1.5 var(--glp-font-code)}.test-report .test-coverage pre{margin:0 0 4px 1.5em}.coverage-line{background:var(--glp-warning-bg)}.coverage-gutter{background:var(--glp-warning);margin-left:3px;width:4px!important}.test-failure{background:var(--glp-error-bg);border-left:3px solid var(--glp-error);border-radius:var(--glp-radius);margin:0 0 10px;padding:8px 10px}.test-failure .secondary-button{margin-top:8px;padding:4px 10px;font-size:13px}.visual-expectation-message{color:var(--glp-error);font:600 13px/1.5 var(--glp-font-code);white-space:pre-wrap;padding:2px 8px 4px}.workspace-stack{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.workspace-stack>.editor-header{margin-bottom:12px}.stack-top{flex:1 1 0;gap:12px;min-height:120px;display:flex}.stack-top>.editor-panel{min-height:0}.stack-top .editor-wrap{flex-direction:column;display:flex}.stack-top .editor-wrap>*{flex:1;min-height:0}.stack-strip{background:var(--glp-surface);border-bottom:1px solid var(--glp-border);flex-shrink:0;align-items:stretch;min-height:44px;display:flex}.stack-strip>.editor-tabs{border-bottom:0;flex:1;min-height:0}.stack-strip>.visualizer-bar{border:0;border-radius:0;flex:1}.stack-top>.graphics-panel{width:min(42%,520px)}.stack-divider{cursor:row-resize;touch-action:none;border-radius:var(--glp-radius);flex:0 0 14px;justify-content:center;align-items:center;display:flex}.stack-divider:after{content:"";background:var(--glp-border-control);opacity:.55;border-radius:2px;width:44px;height:4px}.stack-divider:hover:after,.stack-divider:focus-visible:after{opacity:1;background:var(--glp-accent)}.stack-divider:focus-visible{outline:2px solid var(--glp-accent);outline-offset:-2px}.stack-console{flex-direction:column;flex:1 1 0;min-height:90px;display:flex}.stack-console>.output-panel{flex-direction:column;flex:1;min-height:0;display:flex}.stack-console .console{flex:1;min-height:0;max-height:none}.run-button-labels{display:inline-grid}.run-button-labels>span{grid-area:1/1;justify-content:center;align-items:center;gap:7px;display:inline-flex}.run-button-labels>[aria-hidden=true]{visibility:hidden}
