:root{--base03: #002b36;--base02: #002b36;--base01: #586e75;--base00: #657b83;--base0: #839496;--base1: #93a1a1;--base2: #eee8d5;--base3: #fdf6e3;--yellow: #b58900;--orange: #cb4b16;--red: #dc322f;--magenta: #d33682;--violet: #6c71c4;--blue: #268bd2;--cyan: #2aa198;--green: #859900;--bg-primary: var(--base03);--bg-secondary: var(--base02);--bg-tertiary: #073642cc;--border-color: #033643;--text-primary: var(--base1);--text-secondary: var(--base0);--text-muted: var(--base00);--accent-primary: var(--blue);--accent-hover: var(--violet);--success-color: var(--green);--error-color: var(--red);--space-2: .125rem;--space-4: .25rem;--space-6: .375rem;--space-8: .5rem;--space-12: .75rem;--space-16: 1rem;--space-24: 1.5rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--shadow-sm: 0 2px 4px rgba(0, 0, 0, .4);--shadow-lg: 0 8px 16px rgba(0, 0, 0, .6);--transition-all: all .1s cubic-bezier(.4, 0, .2, 1)}*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}html{touch-action:manipulation;-webkit-text-size-adjust:100%}html,body,#root{height:100%;width:100%;overflow:hidden}body{font-family:Fira Code,monospace;background-color:var(--bg-primary);color:var(--text-primary);line-height:1.6;-webkit-font-smoothing:antialiased}input,button,select,textarea{font-family:Fira Code,monospace;font-size:16px;background-color:transparent;border:none;color:inherit;-webkit-appearance:none;-moz-appearance:none;appearance:none}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--bg-tertiary);border-radius:var(--radius-sm)}.editor-container{height:100%;display:flex;flex-direction:column;background-color:var(--bg-primary);margin-bottom:200px}.editor-layout{flex:1;display:grid;grid-template-columns:1fr;overflow:hidden;gap:1px;background-color:var(--border-color)}.editor-pane{background-color:var(--bg-primary);overflow:hidden;position:relative}.monaco-editor-wrapper{height:100%;width:100%}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-8);padding:var(--space-8) var(--space-16);background-color:var(--bg-secondary);border-bottom:1px solid var(--border-color);position:sticky;top:0;z-index:101}.toolbar-group{display:flex;align-items:center;gap:var(--space-8);flex-shrink:0}.language-select{width:132px;padding:var(--space-8) var(--space-12);background-color:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border-color);border-radius:var(--radius-md);font-size:14px;background-image:url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1L5 5L9 1' stroke='%2393a1a1' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--space-8) center;padding-right:var(--space-24)}.editor-tools{display:flex;align-items:center;justify-content:center;gap:var(--space-4);padding:var(--space-12);background-color:var(--bg-secondary);border-bottom:1px solid var(--border-color);position:sticky;top:0;z-index:10;flex-wrap:wrap}.tool-button{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:var(--space-4);border-radius:var(--radius-sm);color:var(--text-secondary);background-color:var(--bg-tertiary);transition:var(--transition-all)}.tool-divider{width:1px;height:16px;background-color:var(--border-color);margin:0 var(--space-2)}.font-size-display{color:var(--text-secondary);font-size:var(--font-size-sm);padding:0 var(--space-2);min-width:16px;text-align:center;-webkit-user-select:none;user-select:none}.tool-button:disabled{opacity:.5;pointer-events:none}.button{display:inline-flex;align-items:center;gap:var(--space-8);padding:var(--space-8) var(--space-12);border-radius:var(--radius-md);font-size:var(--font-size-base);font-weight:500;background-color:var(--bg-tertiary);color:var(--text-primary);border:1px solid transparent;transition:var(--transition-all)}.button-primary{background-color:var(--accent-primary);color:var(--base2)}.button-danger{background-color:var(--error-color);color:var(--base2)}.button:disabled,.button-primary:disabled,.button-danger:disabled{opacity:.5;pointer-events:none}.button-icon{padding:var(--space-8);width:36px;height:36px;border-radius:var(--radius-md);background-color:var(--bg-tertiary);color:var(--text-secondary);border:1px solid var(--border-color);display:flex;align-items:center;justify-content:center;transition:var(--transition-all)}.success-icon{color:var(--success-color);animation:popIn .3s ease}@keyframes popIn{0%{transform:scale(.9)}50%{transform:scale(1.1)}to{transform:scale(1)}}@keyframes spin{to{transform:rotate(360deg)}}.spinner{animation:spin 1s linear infinite}.console-panel{position:fixed;top:52px;right:0;bottom:0;left:0;background-color:var(--bg-secondary);display:flex;flex-direction:column;z-index:99;transform:translate(100%);transition:transform .1s ease;overflow-y:scroll}.console-panel.show{transform:translate(0)}.console-header{padding:var(--space-16) var(--space-16);background-color:var(--bg-secondary);border-bottom:1px solid var(--border-color);display:flex;align-items:center;justify-content:space-between;-webkit-user-select:none;user-select:none}.console-header-text{display:flex;gap:var(--space-8);align-items:center;color:var(--text-primary);padding-left:2px}.console-content{flex:1;overflow-y:auto;padding:var(--space-16);font-size:var(--font-size-base);-webkit-overflow-scrolling:touch;background-color:var(--bg-secondary);padding-bottom:20px}.output-text{white-space:pre-wrap;word-wrap:break-word;font-family:Fira Code,monospace;margin-bottom:var(--space-8);color:var(--text-primary)}.error-text{color:var(--error-color);white-space:pre-wrap;word-wrap:break-word;font-family:Fira Code,monospace;margin-bottom:var(--space-8)}.console-input-container{display:flex;gap:var(--space-8);padding:var(--space-12);background-color:var(--bg-secondary);align-items:center;position:sticky;bottom:0}.console-input{flex:1;background-color:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:var(--space-12);color:var(--text-primary);font-size:14px;min-height:44px;line-height:1.5;transition:border-color .1s ease}.console-input:focus{outline:none;border-color:var(--accent-primary)}.console-input:disabled{opacity:.6;cursor:not-allowed}.console-input-button{display:inline-flex;align-items:center;justify-content:center;padding:var(--space-8) var(--space-16);background-color:var(--accent-primary);color:var(--base2);border-radius:var(--radius-md);font-size:var(--font-size-base);min-height:44px;min-width:80px;font-size:14px;transition:var(--transition-all)}.console-input-button:disabled{opacity:.6;pointer-events:none}.plot-container{background-color:var(--bg-primary);border-radius:var(--radius-lg);padding:var(--space-8);margin:var(--space-16) 0 68px 0;border:1px solid var(--border-color);transition:var(--transition-all);position:relative}.plot-container img{width:100%;height:auto;border-radius:var(--radius-md);display:block;transition:var(--transition-all);cursor:default}.plot-modal{position:fixed;top:0;right:0;bottom:0;left:0;background-color:#002b36e6;display:flex;justify-content:center;align-items:center;z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.plot-modal-content{position:relative;padding:var(--space-16);max-width:90vw;max-height:90vh}.plot-modal img{max-width:100%;max-height:80vh;object-fit:contain;border-radius:var(--radius-md)}.plot-modal-close{position:absolute;top:-44px;right:0;background-color:var(--error-color);border:none;color:var(--base2);width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:var(--transition-all)}.plot-actions{position:absolute;right:0;bottom:-40px;display:flex;gap:8px}.plot-modal .plot-actions{position:absolute;right:16px;bottom:-48px}.info-content{color:var(--text-primary);max-width:90vw;padding:var(--space-16)}.console-close{top:-10px}.info-title{font-size:var(--font-size-lg);font-weight:600;margin-bottom:var(--space-16);color:var(--text-primary)}.info-section{margin-bottom:var(--space-16)}.info-section h3{font-size:var(--font-size-base);font-weight:600;margin-bottom:var(--space-8);color:var(--accent-primary)}.library-list{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}.library-item{background-color:var(--bg-tertiary);color:var(--text-primary);padding:4px 8px;border-radius:var(--radius-sm);font-family:Fira Code,monospace;font-size:12px}.info-footer{margin-top:var(--space-16);padding-top:var(--space-12);border-top:1px solid var(--border-color);text-align:center}.console-loading{display:flex;align-items:center;justify-content:center;gap:var(--space-8);padding:var(--space-24);color:var(--text-secondary)}.monaco-editor .suggest-widget,.monaco-editor .suggest-details,.monaco-editor .parameter-hints-widget,.monaco-editor .context-view,.monaco-editor .codicon-light-bulb,.monaco-editor .codicon-error,.monaco-editor .codicon-warning{display:none!important}.monaco-editor,.monaco-editor .overflow-guard,.monaco-editor .inputarea{-webkit-user-select:text!important;user-select:text!important;-webkit-text-size-adjust:none!important}.attribution{position:fixed;bottom:var(--space-8);right:var(--space-8);background-color:var(--bg-secondary);padding:var(--space-8) var(--space-12);border-radius:var(--radius-md);font-size:var(--font-size-sm);color:var(--text-primary);z-index:100;box-shadow:var(--shadow-sm);display:flex;align-items:center!important;gap:6px;text-decoration:none}.attribution a{text-decoration:none}.attribution-color{color:var(--accent-primary)}.attribution-icon{color:var(--text-secondary);margin:0!important;padding:0!important;height:18px;width:auto;display:flex;align-items:center;position:relative;top:-1px}.button-close{background-color:var(--error-color);color:var(--base2)}.plot-actions button{background-color:var(--bg-tertiary);color:var(--text-secondary)}@media (min-width: 768px){.toolbar{padding:var(--space-12) var(--space-16);gap:var(--space-12)}.editor-layout{grid-template-columns:1fr .4fr}.editor-layout.full{grid-template-columns:1fr}.console-header{padding:var(--space-6) var(--space-16)}.console-panel{position:relative;transform:none;top:0}.language-select{width:130px}.attribution{bottom:var(--space-16);right:var(--space-16);padding:var(--space-12) var(--space-16)}.info-content{max-width:600px}.plot-modal-content{max-width:80vw}.tool-tooltip{display:block;position:absolute;top:38px;left:50%;transform:translate(-50%);background-color:var(--bg-tertiary);color:var(--text-primary);padding:var(--space-4) var(--space-8);border-radius:var(--radius-sm);font-size:var(--font-size-sm);white-space:nowrap;pointer-events:none;opacity:0;visibility:hidden;transition:all .1s ease;z-index:100}.editor-tools{padding:var(--space-8) var(--space-16);gap:var(--space-4);justify-content:flex-start}.tool-button{width:32px;height:32px}.tool-divider{height:20px;margin:0 var(--space-4)}.font-size-display{min-width:20px;padding:0 var(--space-4)}.plot-actions{bottom:-40px}.plot-modal .plot-actions{bottom:-52px}}@media (hover: hover) and (pointer: fine){.tool-button:hover{background-color:var(--blue);color:#fff}.tool-button:disabled:hover{background-color:var(--bg-tertiary);pointer-events:none;color:var(--text-secondary)}.tool-button:hover .tool-tooltip{opacity:1;visibility:visible;top:44px}.button-primary:hover,.button-danger:hover{transform:scale(1.05)}.plot-container img:hover{cursor:not-allowed}.attribution-color:hover{text-decoration:underline}.console-input-button:hover:not(:disabled){background-color:var(--accent-hover)}.plot-modal-close:hover{transform:scale(1.1)}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.attribution-icon:hover{color:var(--accent-primary)}.button-close:hover{transform:scale(1.1)}.button-icon:hover svg{color:#fff}.plot-actions button:hover{background-color:var(--blue)}.language-select,.tool-button,.button,.button-icon,.button-primary,.button-danger,.console-input-button,.plot-modal-close,.plot-actions button,.plot-container img,.attribution,.attribution a,.attribution-icon,input[type=submit],input[type=button],select,button,a{cursor:pointer}input[type=text],input[type=number],textarea,.console-input{cursor:text}.button:disabled,.button-primary:disabled,.button-danger:disabled,.tool-button:disabled,.console-input-button:disabled,.console-input:disabled,button:disabled{cursor:not-allowed}.plot-modal,.plot-modal-content{cursor:default}}@media (min-width: 768px){.keyboard-shortcuts-section{display:flex;flex-wrap:wrap;gap:var(--space-12)}.keyboard-shortcuts{display:flex;flex-wrap:wrap;gap:var(--space-4)}.keyboard-shortcut{background-color:var(--bg-tertiary);color:var(--text-primary);padding:var(--space-6) var(--space-8);border-radius:var(--radius-sm);font-family:Fira Code,monospace;font-size:13px;display:flex;align-items:center;gap:var(--space-8)}.keyboard-shortcut span:first-child{background-color:var(--accent-primary);color:var(--base2);padding:var(--space-4) var(--space-6);border-radius:var(--radius-sm)}.keyboard-shortcut span:first-child svg{position:relative;top:1.8px}.keyboard-shortcut span:last-child{color:var(--text-secondary)}.keyboard-section-title{display:flex;gap:var(--space-6);align-items:center}}@media (max-width: 767px){.keyboard-shortcuts-section{display:none}}.p5-canvas-wrapper{position:relative;width:100%;margin:var(--space-16) 0;z-index:1;pointer-events:none}.p5-canvas-container{width:100%;min-height:420px;display:flex;justify-content:center;align-items:center;background:var(--bg-primary);border-radius:var(--radius-lg);overflow:hidden;pointer-events:auto}.p5-canvas-container>canvas{pointer-events:auto!important;touch-action:none!important}.toolbar,.console-header,.editor-tools,.console-input-container,.button,.button-icon,.tool-button,select,input,.attribution{pointer-events:auto!important;z-index:10}.console-loading{background-color:var(--bg-tertiary);color:var(--cyan);padding:6px 12px;margin-bottom:20px;border-radius:var(--radius-sm);font-size:14px;z-index:10;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border:1px solid var(--border-color);display:flex;gap:8px;text-align:center;align-items:center;justify-content:center}
