:root{--bg-primary: #0d1117;--bg-secondary: #161b22;--bg-tertiary: #1c2333;--bg-editor: #0d1117;--bg-hover: #21262d;--border-primary: #30363d;--border-accent: #58a6ff;--text-primary: #e6edf3;--text-secondary: #8b949e;--text-muted: #6e7681;--accent-blue: #58a6ff;--accent-green: #3fb950;--accent-orange: #d29922;--accent-red: #f85149;--accent-purple: #bc8cff;--gradient-primary: linear-gradient(135deg, #58a6ff 0%, #bc8cff 100%);--gradient-success: linear-gradient(135deg, #3fb950 0%, #56d364 100%);--gradient-error: linear-gradient(135deg, #f85149 0%, #da3633 100%);--font-mono: "JetBrains Mono", "Fira Code", "Cascadia Code", monospace;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, sans-serif;--radius: 8px;--radius-lg: 12px;--shadow: 0 4px 24px rgba(0, 0, 0, .4);--transition: all .2s ease}*{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--font-sans);background:var(--bg-primary);color:var(--text-primary);overflow:hidden;height:100vh}#root{height:100vh;display:flex;flex-direction:column}.app{display:flex;flex-direction:column;height:100vh}.header{display:flex;align-items:center;justify-content:space-between;padding:0 20px;height:52px;background:var(--bg-secondary);border-bottom:1px solid var(--border-primary);flex-shrink:0;gap:12px}.header-brand{display:flex;align-items:center;gap:10px;flex-shrink:0}.header-logo{font-size:20px;font-weight:700;background:var(--gradient-primary);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;letter-spacing:-.5px}.header-version{font-size:11px;color:var(--text-muted);background:var(--bg-tertiary);padding:2px 8px;border-radius:12px;font-family:var(--font-mono)}.header-center{flex:1;display:flex;justify-content:center}.header-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.sample-selector{display:flex;align-items:center;gap:8px;background:var(--bg-tertiary);border:1px solid var(--border-primary);border-radius:var(--radius);padding:4px 6px 4px 10px;transition:var(--transition)}.sample-selector:hover{border-color:var(--accent-blue)}.sample-label{font-size:14px;flex-shrink:0}.sample-select{background:transparent;border:none;color:var(--text-primary);font-family:var(--font-sans);font-size:13px;font-weight:500;cursor:pointer;outline:none;padding:4px 8px;min-width:160px}.sample-select option{background:var(--bg-secondary);color:var(--text-primary);padding:8px}.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 16px;border:none;border-radius:var(--radius);font-family:var(--font-sans);font-size:13px;font-weight:600;cursor:pointer;transition:var(--transition);white-space:nowrap}.btn-compile{background:var(--bg-tertiary);color:var(--text-secondary);border:1px solid var(--border-primary)}.btn-compile:hover{background:var(--bg-hover);color:var(--text-primary);border-color:var(--accent-blue)}.btn-run{background:var(--accent-green);color:#fff}.btn-run:hover{background:#46d35a;box-shadow:0 0 20px #3fb9504d}.btn:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}.btn .spinner{width:14px;height:14px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.main{display:flex;flex:1;overflow:hidden}.editor-panel{flex:1;display:flex;flex-direction:column;border-right:1px solid var(--border-primary);min-width:0}.panel-header{display:flex;align-items:center;justify-content:space-between;padding:0 16px;height:36px;background:var(--bg-secondary);border-bottom:1px solid var(--border-primary);flex-shrink:0}.panel-title{font-size:12px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.panel-badge{font-size:10px;font-family:var(--font-mono);color:var(--text-muted);background:var(--bg-tertiary);padding:1px 6px;border-radius:8px}.editor-container{flex:1;overflow:hidden}.output-panel{width:420px;display:flex;flex-direction:column;flex-shrink:0}.output-tabs{display:flex;align-items:center;justify-content:space-between;background:var(--bg-secondary);border-bottom:1px solid var(--border-primary);flex-shrink:0;padding:0 8px}.output-tab{padding:8px 16px;font-size:12px;font-weight:600;color:var(--accent-blue);border:none;background:none;border-bottom:2px solid var(--accent-blue);font-family:var(--font-sans)}.clear-btn{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:14px;padding:4px 8px;border-radius:4px;transition:var(--transition)}.clear-btn:hover{color:var(--accent-red);background:#f851491a}.output-content{flex:1;overflow-y:auto;padding:16px;font-family:var(--font-mono);font-size:13px;line-height:1.6;white-space:pre-wrap;word-break:break-word}.output-content::-webkit-scrollbar{width:6px}.output-content::-webkit-scrollbar-thumb{background:var(--border-primary);border-radius:3px}.output-line{margin-bottom:2px}.output-success{color:var(--accent-green)}.output-error{color:var(--accent-red)}.output-info{color:var(--text-secondary)}.output-program{color:var(--text-primary)}.output-placeholder{color:var(--text-muted);font-family:var(--font-sans);font-size:13px}.output-placeholder strong{color:var(--accent-green)}.output-phase{display:inline-block;font-size:10px;font-weight:700;text-transform:uppercase;padding:2px 6px;border-radius:4px;margin-right:6px}.phase-lexer{background:#f8514920;color:var(--accent-red)}.phase-parser{background:#d2992220;color:var(--accent-orange)}.phase-checker{background:#bc8cff20;color:var(--accent-purple)}.phase-codegen{background:#58a6ff20;color:var(--accent-blue)}.phase-assembly{background:#d2992220;color:var(--accent-orange)}.phase-runtime{background:#f8514920;color:var(--accent-red)}.phase-success{background:#3fb95020;color:var(--accent-green)}.status-bar{display:flex;align-items:center;justify-content:space-between;padding:0 16px;height:24px;background:var(--bg-secondary);border-top:1px solid var(--border-primary);font-size:11px;color:var(--text-muted);flex-shrink:0}.status-bar-left,.status-bar-right{display:flex;align-items:center;gap:16px}.status-dot{width:6px;height:6px;border-radius:50%;display:inline-block;margin-right:4px}.status-dot.connected{background:var(--accent-green)}.status-dot.error{background:var(--accent-red)}@media (max-width: 900px){.main{flex-direction:column}.editor-panel{border-right:none;border-bottom:1px solid var(--border-primary)}.output-panel{width:100%;height:40vh}.header-center{display:none}}
