:root{--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono: "Fira code", "Fira Mono", monospace;--bg-dark: #1e1e1e;--bg-medium: #252526;--bg-light: #2d2d2d;--border-color: #3e3e42;--text-primary: #d4d4d4;--text-secondary: #a0a0a0;--accent-blue: #0e639c;--accent-blue-hover: #157ec5;--accent-green: #2c9a2c;--accent-red: #be1100;--color-c: #61afef;--color-py: #e5c07b;--color-java: #e06c75}*{box-sizing:border-box}body{font-family:var(--font-sans);background-color:var(--bg-dark);color:var(--text-primary);margin:0;overflow:hidden}.app-container{display:flex;flex-direction:column;height:100vh}header{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1.5rem;background-color:var(--bg-medium);border-bottom:1px solid var(--border-color);flex-shrink:0}header h1{font-size:1.2rem;margin:0}.main-layout{display:grid;grid-template-columns:280px 3fr 2fr;flex-grow:1;height:calc(100vh - 58px)}.controls-pane,.editor-pane,.output-pane{padding:1rem;overflow-y:auto;height:100%}.editor-pane{padding:0;border-left:1px solid var(--border-color);border-right:1px solid var(--border-color);background-color:#282c34}.output-pane{background-color:var(--bg-medium)}.controls-pane h2{margin-top:0;padding-bottom:.5rem;border-bottom:1px solid var(--border-color);font-size:1.1rem}.run-button,.upload-button,.debug-button,.test-button{display:flex;align-items:center;justify-content:center;width:100%;padding:.75rem;margin-bottom:.75rem;border:none;border-radius:5px;font-size:1rem;font-weight:700;cursor:pointer;transition:background-color .2s;gap:.5rem}.run-button svg,.upload-button svg,.debug-button svg{fill:#fff}.run-button{background-color:var(--accent-green);color:#fff}.run-button:hover{background-color:#38b038}.upload-button{background-color:var(--accent-blue);color:#fff}.upload-button:hover{background-color:var(--accent-blue-hover)}.debug-button{background-color:#666;color:#fff}.debug-button:hover{background-color:#777}.debug-button.active{background-color:#ff6b35}.debug-button.active:hover{background-color:#ff7a47}.test-button{background-color:#17a2b8;color:#fff}.test-button:hover{background-color:#138496}.run-button:disabled{background-color:#555;cursor:not-allowed}.instructions{margin-top:2rem;font-size:.9rem;color:var(--text-secondary)}.instructions ol{padding-left:1.2rem}.instructions li{margin-bottom:.5rem}.code-editor{font-family:var(--font-mono)!important;font-size:14px!important;min-height:100%}.code-editor>textarea{-webkit-text-fill-color:transparent!important}.editor-pane{position:relative;transition:background-color .2s ease}.editor-pane.drag-over{background-color:#4caf501a;border:2px dashed var(--accent-green)}.editor-pane.drag-over:after{content:"Drop your .poly file here";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:#000c;color:#fff;padding:1rem 2rem;border-radius:5px;font-weight:700;pointer-events:none;z-index:1000}.code-editor>textarea,.code-editor>pre{outline:none;white-space:pre-wrap!important;word-wrap:break-word!important}.code-editor .lang-tag-open,.code-editor .lang-tag-close{position:relative;display:inline-block;font-weight:700;opacity:.8;padding-left:12px}.code-editor .lang-tag-open:before{content:"";position:absolute;left:0;top:0;height:100%;width:3px;border-radius:2px}.code-editor .lang-tag-open[data-lang=c],.code-editor .lang-tag-close[data-lang=c]{color:var(--color-c)!important}.code-editor .lang-tag-open[data-lang=c]:before{background-color:var(--color-c)}.code-editor .lang-tag-open[data-lang=py],.code-editor .lang-tag-close[data-lang=py]{color:var(--color-py)!important}.code-editor .lang-tag-open[data-lang=py]:before{background-color:var(--color-py)}.code-editor .lang-tag-open[data-lang=java],.code-editor .lang-tag-close[data-lang=java]{color:var(--color-java)!important}.code-editor .lang-tag-open[data-lang=java]:before{background-color:var(--color-java)}.output-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.output-header h2{font-size:1.1rem;margin:0}.output-header button{background:var(--bg-light);border:1px solid var(--border-color);color:var(--text-primary);border-radius:4px;padding:.2rem .5rem;cursor:pointer}.output-header button:disabled{opacity:.4;cursor:not-allowed}.output-log{white-space:pre-wrap;word-wrap:break-word;margin:0;font-family:var(--font-mono);font-size:.9rem;color:var(--text-secondary)}.status-container{display:flex;gap:.5rem;align-items:center}.status{padding:.25rem .75rem;border-radius:99px;font-size:.8rem;font-weight:700;background-color:var(--accent-red);color:#fff}.status.connected{background-color:var(--accent-green)}.nested-status{padding:.25rem .75rem;border-radius:99px;font-size:.8rem;font-weight:700;background-color:#ff6b35;color:#fff;animation:pulse 2s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.7}}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-track{background:var(--bg-dark)}::-webkit-scrollbar-thumb{background:#555;border-radius:5px}::-webkit-scrollbar-thumb:hover{background:#777}code[class*=language-],pre[class*=language-]{color:#f8f8f2;background:none;text-shadow:0 1px rgba(0,0,0,.3);font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;border-radius:.3em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#272822}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:#8292a2}.token.punctuation{color:#f8f8f2}.token.namespace{opacity:.7}.token.property,.token.tag,.token.constant,.token.symbol,.token.deleted{color:#f92672}.token.boolean,.token.number{color:#ae81ff}.token.selector,.token.attr-name,.token.string,.token.char,.token.builtin,.token.inserted{color:#a6e22e}.token.operator,.token.entity,.token.url,.language-css .token.string,.style .token.string,.token.variable{color:#f8f8f2}.token.atrule,.token.attr-value,.token.function,.token.class-name{color:#e6db74}.token.keyword{color:#66d9ef}.token.regex,.token.important{color:#fd971f}.token.important,.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}
