.container{display:flex;flex-direction:column;height:100vh}.top-bar{background-color:#f0f0f0;padding:8px;border-bottom:1px solid #ccc;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;grid-gap:12px;gap:12px;max-height:44px}.header-left{justify-self:start}.header-center{justify-self:center;gap:10px}.header-center,.header-right{display:flex;align-items:center}.header-right{justify-self:end;gap:12px;white-space:nowrap}.back-link{display:inline-block;padding:6px 10px;border:1px solid #d1d5db;border-radius:8px;background:#fff;color:#111827;text-decoration:none;font-size:.95rem;line-height:1;transition:background .12s ease,border-color .12s ease}.back-link:hover{background:#f9fafb;border-color:#cbd5e1}.back-link:focus-visible{outline:3px solid #93c5fd;outline-offset:2px}.btn{border:0;border-radius:10px;padding:8px 14px;font-weight:700;font-size:.98rem;line-height:1;color:#fff;cursor:pointer;box-shadow:0 2px 6px rgba(0,0,0,.12);transition:transform 40ms ease,filter .12s ease,opacity .12s ease}.btn:active{transform:translateY(1px)}.btn:focus-visible{outline:3px solid #93c5fd;outline-offset:2px}.btn-run{background:#dc2626}.btn-run:hover{filter:brightness(.95)}.btn-save{background:#3b82f6}.btn-save:hover{filter:brightness(.95)}.btn-save:disabled{background:#9ca3af;color:#fff;cursor:default;opacity:.9;box-shadow:none}.editor-status{font-size:.95rem;color:#374151;max-width:48ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#main-container{flex:1 1;display:flex;overflow:hidden}#left-pane{overflow:scroll;background-color:#fff}.editor{height:100%}#right-pane{display:flex;flex-direction:column;overflow:hidden}.placeholder-pane{margin:auto;text-align:center;color:#666}#vpythonOutput{background-color:transparent;overflow:auto}#consoleArea{display:flex;flex-direction:column;overflow:hidden}.errorArea{background:rgba(255,0,0,.05);padding:8px}.errorText{color:red;font-weight:700}#print{width:100%;height:flex;flex:1 1;resize:none;font-family:monospace;border:1px solid #ccc;box-sizing:border-box;outline:none;padding:4px;margin:0;flex-shrink:0}@font-face{font-family:Fira Code;src:url(/styles/FiraCode-VariableFont_wght.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:Cascadia Code;src:url(/styles/CascadiaCode.ttf) format("truetype");font-weight:400;font-style:normal}.cm-line{font-family:Cascadia Code,monospace;font-size:12px}.cm-content,.cm-editor,.cm-scroller{font-variant-ligatures:none;-webkit-font-variant-ligatures:none;font-feature-settings:"liga" 0,"clig" 0,"calt" 0,"dlig" 0,none}#vpythonOutputInner{width:100%;height:100%}.output-expanded .vpython-expand-btn{position:fixed!important;z-index:2100}.output-expanded #consoleArea,.output-expanded #left-pane,.output-expanded .gutter,.output-expanded .gutterhorizontal,.output-expanded .top-bar{opacity:0;pointer-events:none}.output-expanded #vpythonOutputInner{height:100vh!important}.vpython-expand-btn{position:absolute;top:12px;right:12px;z-index:1100;width:53px;height:53px;border:2px solid rgba(63,63,63,.9);border-radius:14px;background:hsla(0,0%,71%,.9);box-shadow:0 10px 26px rgba(0,0,0,.3);display:flex;align-items:center;justify-content:center;cursor:pointer}.vpython-expand-btn img{filter:brightness(1.2)}.gutter{background-color:#444;background-repeat:no-repeat;background-position:50%;background-size:contain;transition:background-color 80ms ease}.gutter.gutter-horizontal{background-image:url(/buttons/gutterbar4.png);cursor:col-resize}.gutter.gutter-vertical{background-image:url(/buttons/gutterbar5.png);cursor:row-resize}.gutter:hover{background-color:#a3a4a7}.gutter.is-dragging{background-color:#cccdd2}#right-pane{position:relative}.vpython-expand-btn img{width:44px;height:44px;display:block}.vpython-expand-btn:active{transform:translateY(1px)}.vpython-expand-btn:focus-visible{outline:3px solid #93c5fd;outline-offset:2px}.output-expanded #vpythonOutput{position:fixed;inset:0;z-index:2000;background:#fff;overflow:auto}.output-expanded #vpythonOutputInner,.output-expanded #vpythonOutputInner canvas,.output-expanded #vpythonOutputInner>canvas{width:100%!important;height:100%!important;display:block}.output-expanded #consoleArea,.output-expanded #left-pane,.output-expanded .gutter,.output-expanded .top-bar{opacity:0;pointer-events:none}.output-expanded{overflow:hidden}.output-expanded .vpython-expand-btn{position:fixed;top:12px;right:12px;z-index:3000}