:root{--bg-color:#0f172a;--glass-bg:#1e293bb3;--glass-border:#ffffff1a;--primary:#3b82f6;--primary-hover:#2563eb;--text-main:#f8fafc;--text-muted:#94a3b8;--accent-pink:#ec4899;--accent-green:#10b981}body{color:var(--text-main);background:linear-gradient(135deg,#0f172a 0%,#1e1b4b 100%);height:100vh;margin:0;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;overflow:hidden}#root{height:100%}.app-container{box-sizing:border-box;height:100vh;padding:16px}.resize-handle{cursor:col-resize;background-color:#0000;justify-content:center;align-items:center;width:16px;margin:0 4px;transition:background-color .2s;display:flex}.resize-handle:hover,.resize-handle[data-resize-handle-active]{background-color:#ffffff1a;border-radius:4px}.glass-panel{background:var(--glass-bg);-webkit-backdrop-filter:blur(12px);border:1px solid var(--glass-border);border-radius:16px;flex-direction:column;padding:20px;display:flex;overflow:hidden;box-shadow:0 8px 32px #0000005e}.story-pane{flex-direction:column;gap:16px;display:flex}.story-header{color:var(--accent-pink);margin-bottom:8px;font-size:1.5rem;font-weight:800}.story-text{flex:1;font-size:1.1rem;line-height:1.6}.task-box{border-left:4px solid var(--accent-green);background:#10b9811a;border-radius:4px 8px 8px 4px;padding:12px}.task-box h3{color:var(--accent-green);margin:0 0 8px;font-size:1.1rem}.chapter-nav{justify-content:space-between;margin-top:16px;display:flex}.btn{background:var(--primary);color:#fff;cursor:pointer;border:none;border-radius:8px;align-items:center;gap:8px;padding:10px 16px;font-weight:600;transition:all .2s;display:flex}.btn:hover:not(:disabled){background:var(--primary-hover);transform:translateY(-2px);box-shadow:0 4px 12px #3b82f666}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-run{background:var(--accent-green)}.btn-run:hover:not(:disabled){background:#059669;box-shadow:0 4px 12px #10b98166}.ide-pane{flex-direction:column;gap:16px;display:flex}.ide-header{justify-content:space-between;align-items:center;display:flex}.editor-container{border:1px solid var(--glass-border);border-radius:8px;flex:1;overflow:hidden}.console-container{border:1px solid var(--glass-border);background:#000;border-radius:8px;height:200px;padding:12px;font-family:Fira Code,monospace;overflow-y:auto}.console-output{color:#10b981;white-space:pre-wrap;margin:0}.console-error{color:#ef4444;white-space:pre-wrap;margin:0}.chat-pane{flex-direction:column;display:flex}.chat-header{color:var(--primary);align-items:center;gap:8px;margin-bottom:16px;font-size:1.2rem;font-weight:700;display:flex}.chat-messages{flex-direction:column;flex:1;gap:12px;margin-bottom:16px;display:flex;overflow-y:auto}.chat-msg{border-radius:12px;max-width:85%;padding:10px 14px;line-height:1.4;animation:.3s ease-out fadeIn}.msg-ai{background:#3b82f633;border-bottom-left-radius:2px;align-self:flex-start}.msg-user{background:#ec489933;border-bottom-right-radius:2px;align-self:flex-end}.chat-msg .markdown-body p{margin:0}.chat-msg .markdown-body p+p{margin-top:8px}.chat-msg .markdown-body pre{background:#00000040;border-radius:6px;margin:8px 0;padding:8px;overflow-x:auto}.chat-msg .markdown-body code{font-family:Fira Code,monospace;font-size:.85rem}.thinking-dots{gap:4px;padding:4px 8px;display:flex}.thinking-dots span{background-color:#94a3b8;border-radius:50%;width:6px;height:6px;animation:1.4s linear infinite dot-flashing;display:inline-block}.thinking-dots span:nth-child(2){animation-delay:.2s}.thinking-dots span:nth-child(3){animation-delay:.4s}@keyframes dot-flashing{0%{opacity:.2;transform:scale(.8)}50%{opacity:1;transform:scale(1.1)}to{opacity:.2;transform:scale(.8)}}.chat-input-container{gap:8px;display:flex}.chat-input{border:1px solid var(--glass-border);color:#fff;background:#0003;border-radius:8px;outline:none;flex:1;padding:10px 12px;transition:border-color .2s}.chat-input:focus{border-color:var(--primary)}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.spinner{animation:1s linear infinite spin}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}
