:root{--bg:#f6f7f9;--panel:#fff;--border:#e3e5ea;--text:#1d2330;--muted:#7a8190;--primary:#2563eb;--user:#e8efff;--assistant:#f1f3f6;--error:#c0392b}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font:14px/1.45 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;color:var(--text);background:var(--bg)}a{color:var(--primary);text-decoration:none}h1{font-size:22px;margin:0 0 8px}h2{font-size:16px;margin:2px 0}.muted{color:var(--muted)}.error{color:var(--error);white-space:pre-wrap}.row{display:flex;gap:8px;align-items:center}.between{justify-content:space-between}button{border:1px solid var(--border);background:var(--panel);color:var(--text);padding:7px 14px;border-radius:6px;cursor:pointer;font:inherit}button:hover:not(:disabled){border-color:#c5c9d2}button:disabled{opacity:.5;cursor:default}button.primary{background:var(--primary);border-color:var(--primary);color:#fff}button.link{border:none;background:none;color:var(--primary);padding:0}input,textarea{width:100%;border:1px solid var(--border);border-radius:6px;padding:8px 10px;font:inherit;background:var(--panel)}textarea{resize:vertical}.center{min-height:100%;display:flex;align-items:center;justify-content:center;padding:24px}.card{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:28px;width:360px;display:flex;flex-direction:column;gap:12px}.card.wide{width:560px}.sites{list-style:none;padding:0;margin:0}.sites li{padding:10px 0;border-top:1px solid var(--border)}.editor{display:grid;grid-template-columns:420px 1fr;height:100%}.chat{display:flex;flex-direction:column;background:var(--panel);border-right:1px solid var(--border);min-height:0}.chat header{padding:14px 16px;border-bottom:1px solid var(--border)}.actions{display:flex;gap:6px}.token{padding:12px 16px;background:#fff8e1;border-bottom:1px solid #f3e3a4;font-size:13px}.messages{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:12px}.msg{display:flex;flex-direction:column;gap:4px}.msg.user{align-items:flex-end}.bubble{max-width:92%;padding:9px 12px;border-radius:10px;white-space:pre-wrap;word-break:break-word;background:var(--assistant)}.msg.user .bubble{background:var(--user)}.bubble.thinking{color:var(--muted);font-style:italic}.commits{list-style:none;margin:0;padding:0 4px;font-size:12px;color:var(--muted)}.commits code{background:var(--assistant);padding:1px 4px;border-radius:4px;color:var(--text)}.composer{padding:12px 16px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:8px}.composer button{align-self:flex-end}.preview{display:flex;flex-direction:column;min-width:0}.preview-bar{padding:8px 14px;border-bottom:1px solid var(--border);background:var(--panel);display:flex;gap:12px;align-items:center;font-size:13px;white-space:nowrap;overflow:hidden}.preview iframe{flex:1;border:none;width:100%;background:#fff}.loader{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;font-size:18px}.spinner{width:44px;height:44px;border:4px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width: 900px){.editor{grid-template-columns:1fr;grid-template-rows:1fr 1fr}.chat{border-right:none;border-bottom:1px solid var(--border)}}.label{display:block;font-weight:600;margin:10px 0 4px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#14182173;display:flex;align-items:flex-start;justify-content:center;padding:32px 16px;overflow-y:auto;z-index:10}.modal{background:var(--panel);border-radius:12px;padding:24px 28px;width:620px;max-width:100%;box-shadow:0 18px 48px #14182140}.modal form{display:flex;flex-direction:column}.modal .token{border-radius:8px;border:1px solid #f3e3a4;margin-bottom:8px}.explain{background:var(--assistant);border-radius:8px;padding:12px 14px;margin:10px 0 4px;font-size:13px}.explain p{margin:0 0 6px}.explain ol{margin:0;padding-left:20px}.explain li{margin:4px 0}.explain code,.steps code{background:var(--panel);padding:1px 5px;border-radius:4px;word-break:break-all}.steps{list-style:none;margin:16px 0;padding:0}.steps li{display:flex;align-items:center;gap:10px;padding:7px 0;color:var(--muted)}.steps li.done{color:var(--text)}.steps li.current{color:var(--text);font-weight:600}.steps li.failed{color:var(--error);font-weight:600}.steps .mark{width:18px;display:inline-flex;justify-content:center}.steps li.done .mark{color:#16a34a}.spinner.small{width:14px;height:14px;border-width:2px;display:inline-block;vertical-align:-2px}
