.emulator-container { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; height: calc(100vh - var(--header-height)); padding: 1rem 2rem 2rem 2rem; overflow: hidden; } .editor-pane, .preview-pane { display: flex; flex-direction: column; gap: 1rem; height: 100%; overflow: hidden; } .code-editor { flex: 1; background: var(--bg-sidebar); border: 1px solid var(--border); border-radius: var(--radius-md); color: #d4d4d8; font-family: 'Consolas', 'Monaco', monospace; font-size: 14px; padding: 1rem; resize: none; line-height: 1.5; tab-size: 4; } .code-editor:focus { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent-glow); } .control-bar { display: flex; gap: 0.5rem; background: var(--bg-surface); padding: 1rem; border-radius: var(--radius-md); border: 1px solid var(--border); align-items: center; flex-wrap: wrap; } .control-group { display: flex; flex-direction: column; gap: 0.25rem; flex: 1; } .control-group label { font-size: 0.75rem; color: var(--text-secondary); border: none; padding: 0; margin: 0; } .control-input { background: var(--bg-base); border: 1px solid var(--border); color: var(--text-primary); padding: 0.5rem; border-radius: var(--radius-md); font-size: 0.9rem; width: 100%; } .btn-run { background: var(--accent); color: white; border: none; padding: 0.6rem 1.5rem; border-radius: var(--radius-md); font-weight: 600; cursor: pointer; height: 40px; align-self: flex-end; transition: 0.2s; } .btn-run:hover { opacity: 0.9; transform: translateY(-1px); } .tabs { display: flex; gap: 0.5rem; border-bottom: 1px solid var(--border); margin-bottom: 0.5rem; } .tab-btn { background: transparent; border: none; color: var(--text-secondary); padding: 0.5rem 1rem; cursor: pointer; border-bottom: 2px solid transparent; font-weight: 500; } .tab-btn.active { color: var(--accent); border-bottom-color: var(--accent); } .output-area { flex: 1; background: var(--bg-sidebar); border: 1px solid var(--border); border-radius: var(--radius-md); overflow: auto; padding: 1rem; position: relative; } pre { margin: 0; white-space: pre-wrap; word-wrap: break-word; color: #a5b4fc; } .visual-card { display: inline-flex; flex-direction: column; width: 150px; margin: 0.5rem; background: var(--bg-surface); border-radius: var(--radius-md); overflow: hidden; border: 1px solid var(--border); vertical-align: top; } .visual-card img { width: 100%; height: 200px; object-fit: cover; background: #27272a; } .visual-card .title { padding: 0.5rem; font-size: 0.8rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .visual-chapter { padding: 0.5rem; border-bottom: 1px solid var(--border); cursor: pointer; } .visual-chapter:hover { background: var(--bg-surface-hover); } .log-entry { font-family: monospace; border-bottom: 1px solid var(--border); padding: 2px 0; } .log-info { color: #60a5fa; } .log-warn { color: #facc15; } .log-error { color: #f87171; } .loading-state { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); color: var(--text-secondary); } .loading-state.hidden { display: none; }