*,*:before,*:after{box-sizing:border-box}body{margin:0;padding:0}.app-container{display:flex;flex-direction:column;height:100vh;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;background-color:#f4f6f9;color:#2c3e50}.app-header{background-color:#2c3e50;color:#fff;padding:0 24px;height:64px;display:flex;align-items:center;justify-content:space-between;box-shadow:0 2px 8px #00000026;z-index:20}.logo{font-size:1.4rem;font-weight:700;display:flex;align-items:center;gap:10px;letter-spacing:.5px}.header-left{display:flex;align-items:center;gap:20px}.file-controls{display:flex;gap:8px}.header-controls{display:flex;align-items:center;gap:10px}.theme-btn{background:none;border:1px solid rgba(255,255,255,.2);border-radius:50%;width:36px;height:36px;display:flex;align-items:center;justify-content:center;font-size:1.2rem;cursor:pointer;margin-right:10px;transition:all .2s ease;background-color:#ffffff1a}.theme-btn:hover{background-color:#fff3;transform:rotate(15deg)}.run-btn{background-color:#2ecc71;color:#fff;border:none;padding:10px 28px;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s ease}.stop-btn{background-color:#e74c3c}.stop-btn:hover{background-color:#c0392b}.run-btn:not(.stop-btn):hover:not(:disabled){background-color:#27ae60}.run-btn:disabled{background-color:#95a5a6;cursor:not-allowed;opacity:.8;box-shadow:none;transform:none}.small-btn{padding:4px 12px;font-size:.85rem;height:28px;display:flex;align-items:center;gap:4px}.main-content{flex:1;display:flex;overflow:hidden;position:relative}.editor-pane{display:flex;flex-direction:column;border-right:1px solid #e1e4e8;background-color:#fff;transition:width .1s ease;box-shadow:2px 0 10px #00000005;z-index:5}.editor-wrapper{flex:1;overflow:hidden;position:relative}.editor-wrapper>div{width:100%!important;height:100%!important}.preview-pane{display:flex;flex-direction:column;background-color:#f8f9fa;transition:width .1s ease}.resizer{position:absolute;top:0;bottom:0;width:4px;background-color:#ddd;cursor:col-resize;-webkit-user-select:none;user-select:none;z-index:10;transition:background-color .2s ease}.resizer:hover{background-color:#bbb}.resizer:active{background-color:#999;cursor:col-resize}body.resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}body.resizing-v{cursor:row-resize;-webkit-user-select:none;user-select:none}.pane-header{padding:0 20px;height:45px;background-color:#f8f9fa;border-bottom:1px solid #e1e4e8;font-size:.85rem;font-weight:700;color:#5c6b7f;text-transform:uppercase;letter-spacing:.8px;display:flex;justify-content:space-between;align-items:center;-webkit-user-select:none;user-select:none}.font-size-controls{display:flex;gap:8px}.icon-btn{width:32px;height:32px;border:1px solid transparent;background-color:transparent;border-radius:6px;font-size:1rem;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;color:#6b7280}.icon-btn:hover{background-color:#f3f4f6;color:#111827}.icon-btn:active{background-color:#e5e7eb;transform:scale(.96)}.icon-btn.theme-toggle{font-size:1.2rem}.divider{width:1px;height:18px;background-color:#e1e4e8;margin:0 4px;align-self:center}body.dark-mode .icon-btn{color:#a0a0a0}body.dark-mode .icon-btn:hover{background-color:#333;color:#fff}.app-header .header-icon-btn{color:#ffffffe6;border:1px solid rgba(255,255,255,.15);height:32px;width:auto;padding:0 12px;gap:6px;font-size:.9rem;display:flex;align-items:center;justify-content:center;white-space:nowrap;background-color:transparent;transition:all .2s ease;border-radius:4px}.app-header .header-icon-btn .icon{font-size:1.1rem}.app-header .header-icon-btn .btn-text{font-weight:500}.app-header .header-icon-btn:hover{background-color:#ffffff26!important;color:#fff!important;border-color:#ffffff4d}body.dark-mode .divider{background-color:#444}.run-icon-btn{color:#2ecc71}.run-icon-btn:hover{background-color:#e8f8f0;color:#27ae60}.stop-icon-btn{color:#e74c3c}.stop-icon-btn:hover{background-color:#fce8e6;color:#c0392b}body.dark-mode .run-icon-btn:hover{background-color:#2ecc7133}body.dark-mode .stop-icon-btn:hover{background-color:#e74c3c33}.clear-btn:hover{background-color:#fee2e2!important;color:#dc2626!important}body.dark-mode .clear-btn:hover{background-color:#4a1818!important;color:#ff6b6b!important}.vertical-resizer{height:6px;background-color:#f0f2f5;cursor:row-resize;z-index:10;transition:background-color .2s ease;border-top:1px solid #e1e4e8;border-bottom:1px solid #e1e4e8;display:flex;justify-content:center;align-items:center}.vertical-resizer:after{content:"";width:30px;height:2px;background-color:#cbd5e1;border-radius:2px}.vertical-resizer:hover{background-color:#e2e8f0}.vertical-resizer:hover:after{background-color:#94a3b8}.vertical-resizer:active{background-color:#cbd5e1}.canvas-container{display:flex;flex-direction:column;border-bottom:1px solid #e0e0e0;position:relative;transition:all .3s ease}.canvas-container.fullscreen{position:fixed;top:0;left:0;width:100vw;height:100vh!important;z-index:2000;background-color:#f8f9fa}.canvas-container.collapsed{height:45px!important;flex:0 0 45px;overflow:hidden}.canvas-container.collapsed .canvas-wrapper{display:none}.canvas-controls{display:flex;gap:8px}.canvas-wrapper{flex:1;position:relative;display:flex;justify-content:center;align-items:center;overflow:auto;background-color:#fff;padding:10px}#turtle-canvas-container{box-shadow:0 0 10px #0000000d}#turtle-canvas-container canvas{border:1px solid #ddd;box-shadow:0 0 5px #0000001a}.cm-editor{height:100%}.cm-scroller{overflow:auto}.console-container{display:flex;flex-direction:column;background-color:#1e1e1e;color:#ccc;min-height:150px}.console-container .pane-header{background-color:#252526;color:#ccc;border-bottom:1px solid #333333}.console-wrapper pre{color:#d4d4d4;font-family:Consolas,Courier New,monospace;font-size:inherit;line-height:1.5}.terminal-output{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-all;color:#d4d4d4;display:inline}.terminal-input-line{display:inline-flex;align-items:baseline;max-width:100%;color:#d4d4d4;vertical-align:middle}.terminal-input-field{background:transparent;border:none;outline:none;color:#4ec9b0;font-family:Consolas,Monaco,monospace;font-size:inherit;font-weight:700;width:14ch;min-width:120px;flex:1 1 14ch;padding:0;margin:0;caret-color:#d4d4d4}.error-text{color:#ff6b6b!important}.input-text{color:#4ec9b0}.console-wrapper{flex:1;padding:10px;overflow-y:auto;font-family:Consolas,Monaco,monospace;outline:none}body.dark-mode .app-container{background-color:#121212;color:#e0e0e0}body.dark-mode .app-header{background-color:#1f1f1f;border-bottom:1px solid #333}body.dark-mode .editor-pane{background-color:#1e1e1e;border-right:1px solid #333}body.dark-mode .pane-header{background-color:#252526;color:#ccc;border-bottom:1px solid #333}body.dark-mode .resizer,body.dark-mode .vertical-resizer{background-color:#333}body.dark-mode .preview-pane{background-color:#121212}body.dark-mode .canvas-container{background-color:#1e1e1e;border-bottom:1px solid #333}body.dark-mode .canvas-wrapper{background-color:#1e1e1e}body.dark-mode #turtle-canvas-container canvas{border-color:#444;box-shadow:0 0 10px #00000080}.custom-context-menu{position:fixed;z-index:9999;background-color:#fff;border:1px solid #e1e4e8;box-shadow:0 4px 12px #00000026;border-radius:6px;padding:4px 0;margin:0;list-style:none;min-width:160px}.custom-context-menu li{padding:8px 16px;display:flex;align-items:center;cursor:pointer;font-size:14px;color:#333;transition:background-color .1s}.custom-context-menu li:hover{background-color:#f0f1f4}.custom-context-menu .menu-icon{margin-right:8px;font-size:16px;width:20px;text-align:center}.custom-context-menu .menu-text{flex:1}.custom-context-menu .menu-shortcut{color:#999;font-size:12px;margin-left:10px}.custom-context-menu .menu-divider{height:1px;background-color:#e1e4e8;margin:4px 0;padding:0;cursor:default}body.dark-mode .custom-context-menu{background-color:#252526;border-color:#454545;box-shadow:0 4px 12px #0000004d}body.dark-mode .custom-context-menu li{color:#ccc}body.dark-mode .custom-context-menu li:hover{background-color:#37373d}body.dark-mode .custom-context-menu .menu-divider{background-color:#454545}
