:root{--bg: #0f0f12;--surface: #18181c;--border: #2a2a30;--text: #e4e4e7;--text-muted: #a1a1aa;--accent: #7c3aed;--accent-hover: #8b5cf6;--error: #f87171;--radius: 8px}*{box-sizing:border-box}body{margin:0;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);line-height:1.5;min-height:100vh}#root{min-height:100vh}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover);text-decoration:underline}button{font:inherit;cursor:pointer;border-radius:var(--radius)}input,select{font:inherit;border-radius:var(--radius)}.app-loading,.app-auth{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;text-align:center}.app-auth h1{margin-top:0}.auth-message{color:var(--text);max-width:32rem}.auth-hint{color:var(--text-muted);font-size:.9rem;max-width:32rem;margin-top:1rem}.app{min-height:100vh;display:flex;flex-direction:column}.app-header{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1.5rem;background:var(--surface);border-bottom:1px solid var(--border)}.app-header .logo{font-weight:600;color:var(--text);text-decoration:none}.app-header .logo:hover{color:var(--accent);text-decoration:none}.app-header .user{color:var(--text-muted);font-size:.9rem}.app-main{flex:1;padding:1.5rem;max-width:56rem;margin:0 auto;width:100%}.page{margin:0}.page h1{margin:0 0 1rem;font-size:1.5rem}.page .muted{color:var(--text-muted);margin:.5rem 0}.breadcrumb{display:flex;gap:.35rem;margin-bottom:1rem;font-size:.9rem;color:var(--text-muted)}.breadcrumb a{color:var(--accent)}.breadcrumb [aria-hidden]{color:var(--text-muted)}.gateway-setup{margin-bottom:1.25rem}.gateway-setup .gateway-setup-label{margin-right:.5rem;color:var(--text-muted);font-size:.9rem}.gateway-setup .dashboard-create{margin-bottom:.25rem}.dashboard-create{display:flex;gap:.5rem;margin-bottom:1.25rem;flex-wrap:wrap}.dashboard-create input{flex:1;min-width:12rem;padding:.5rem .75rem;border:1px solid var(--border);background:var(--surface);color:var(--text)}.dashboard-create button{padding:.5rem 1rem;background:var(--accent);color:#fff;border:none}.dashboard-create button:hover:not(:disabled){background:var(--accent-hover)}.dashboard-create button:disabled{opacity:.7;cursor:not-allowed}.card-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.5rem}.card{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.5rem;padding:1rem 1.25rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.card a,.card .card-chat-link{display:flex;align-items:center;justify-content:space-between;gap:.5rem;flex:1;min-width:0;text-decoration:none;color:inherit}.card .card-chat-link:hover{color:inherit;text-decoration:none}.link-small{font-size:.85rem}.badge{font-size:.75rem;padding:.2rem .5rem;background:var(--accent);color:#fff;border-radius:4px}.badge.muted{background:var(--border);color:var(--text-muted)}.badge.openclaw{background:#059669}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1rem}.card-actions .link-small{margin:0}.card-claw{flex-direction:column;align-items:stretch;gap:.75rem}.card-claw-main{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem}.card-claw-label{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--accent);font-weight:600}.card-claw-name{font-size:1.1rem}.card-claw-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem}.btn-chat-claw{display:inline-block;padding:.5rem 1rem;background:var(--accent);color:#fff;border-radius:var(--radius);font-size:.95rem;font-weight:500;text-decoration:none}.btn-chat-claw:hover{background:var(--accent-hover);color:#fff;text-decoration:none}.openclaw-edit{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;width:100%;margin-top:.35rem}.openclaw-edit .openclaw-input{flex:1;min-width:14rem;padding:.4rem .6rem;border:1px solid var(--border);background:var(--bg);color:var(--text)}.openclaw-edit button{padding:.4rem .75rem;font-size:.9rem;background:var(--surface);border:1px solid var(--border);color:var(--text)}.openclaw-edit button:first-of-type{background:var(--accent);border-color:var(--accent);color:#fff}.openclaw-edit button:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.openclaw-edit .openclaw-err{width:100%;margin:.25rem 0 0}.card .id{font-size:.85rem;color:var(--text-muted);margin-left:.5rem}.card .muted{font-size:.85rem;color:var(--text-muted)}.chat-page{display:flex;flex-direction:column;height:calc(100vh - 4rem);max-height:600px}.chat-messages{flex:1;overflow-y:auto;padding:1rem 0;display:flex;flex-direction:column;gap:1rem}.chat-placeholder{margin:auto 0;text-align:center}.chat-msg{max-width:85%;align-self:flex-start}.chat-msg--user{align-self:flex-end}.chat-msg-role{font-size:.75rem;color:var(--text-muted);display:block;margin-bottom:.25rem}.chat-msg-content{padding:.75rem 1rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);white-space:pre-wrap;word-break:break-word}.chat-msg--user .chat-msg-content{background:var(--accent);border-color:var(--accent);color:#fff}.chat-msg-content.typing{color:var(--text-muted)}.chat-meta{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem 1.5rem;margin-bottom:1rem}.chat-instance{margin:0;font-size:.95rem}.chat-model-label{margin:0;font-size:.9rem;color:var(--text-muted)}.chat-model-select{margin-left:.35rem;padding:.25rem .5rem;background:var(--surface);border:1px solid var(--border);color:var(--text)}.chat-error-block{margin-top:.5rem}.chat-error{color:var(--error);font-size:.9rem;margin:0 0 .25rem}.chat-error-action{margin:0;font-size:.9rem}.chat-error-action a{font-weight:500}.gateway-error .chat-error-hint{margin:.35rem 0 0;font-size:.85rem;color:var(--text-muted)}.chat-form{display:flex;gap:.5rem;margin-top:1rem;flex-shrink:0}.chat-input{flex:1;padding:.6rem 1rem;border:1px solid var(--border);background:var(--surface);color:var(--text)}.chat-form button{padding:.6rem 1.25rem;background:var(--accent);color:#fff;border:none}.chat-form button:hover:not(:disabled){background:var(--accent-hover)}.chat-form button:disabled{opacity:.7;cursor:not-allowed}
