.app{max-width:800px;margin:0 auto;padding:1.5rem;min-height:100vh;display:flex;flex-direction:column}header{text-align:center;margin-bottom:1.5rem}header h1{font-size:1.75rem;font-weight:700;margin:0 0 .25rem;letter-spacing:-.02em}header p{color:var(--muted);font-size:.9rem;margin:0 0 1rem}.status{display:inline-flex;align-items:center;gap:.5rem;padding:.35rem .75rem;background:var(--surface);border:1px solid var(--border);border-radius:999px;font-size:.8rem;color:var(--muted)}.dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.dot.pulse{background:var(--accent);animation:pulse 1.2s ease-in-out infinite}.dot.ok{background:var(--success)}.dot.warn{background:#f59e0b}.dot.err{background:var(--error)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.model-select{margin-top:.75rem}.model-select select{background:var(--surface);border:1px solid var(--border);color:var(--text);padding:.45rem .75rem;border-radius:8px;font-family:inherit;font-size:.85rem;cursor:pointer}.model-select select:disabled{opacity:.5;cursor:not-allowed}.chat{flex:1;min-height:200px;margin-bottom:1rem}.empty{text-align:center;padding:3rem 1rem;color:var(--muted)}.empty .sub{font-size:.9rem;margin-top:.5rem}.msg{padding:.75rem 0;border-bottom:1px solid var(--border)}.msg .role{display:inline-block;font-size:.7rem;text-transform:uppercase;font-weight:600;color:var(--accent);margin-bottom:.25rem}.msg.user .role{color:var(--success)}.msg-image{display:block;max-width:240px;max-height:180px;border-radius:8px;margin:.4rem 0;border:1px solid var(--border)}.msg .content{white-space:pre-wrap;word-break:break-word;line-height:1.6}.msg .content .cursor{display:inline-block;width:2px;height:1em;background:var(--accent);margin-left:2px;animation:blink .8s step-end infinite}@keyframes blink{50%{opacity:0}}.msg.error .content{color:var(--error)}.input-area{position:sticky;bottom:0;background:var(--bg);padding-top:.5rem}.image-preview{position:relative;display:inline-block;margin-bottom:.5rem}.image-preview img{max-width:120px;max-height:90px;border-radius:8px;border:1px solid var(--border)}.remove-image{position:absolute;top:-6px;right:-6px;width:22px;height:22px;border-radius:50%;background:var(--error);color:#fff;border:none;font-size:14px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}.input-row{display:flex;gap:.5rem;align-items:flex-end}.attach-btn{padding:.6rem;background:var(--surface);border:1px solid var(--border);border-radius:10px;font-size:1.1rem;cursor:pointer;line-height:1}.attach-btn:hover:not(:disabled){border-color:var(--accent)}.attach-btn:disabled{opacity:.5;cursor:not-allowed}.input-row textarea{flex:1;min-height:52px;resize:none;background:var(--surface);border:1px solid var(--border);color:var(--text);padding:.6rem 1rem;border-radius:10px;font-family:inherit;font-size:.95rem}.input-row textarea::placeholder{color:var(--muted)}.input-row textarea:focus{outline:none;border-color:var(--accent)}.input-row button:not(.attach-btn){padding:.6rem 1.25rem;background:var(--accent);border:none;color:#fff;font-weight:600;border-radius:10px;cursor:pointer;font-family:inherit}.input-row button:not(.attach-btn):hover:not(:disabled){background:var(--accent-hover)}.input-row button:not(.attach-btn):disabled{opacity:.5;cursor:not-allowed}*{box-sizing:border-box}:root{--bg: #0d0e12;--surface: #16181d;--border: #2a2d36;--text: #e8eaed;--muted: #9aa0a6;--accent: #7c3aed;--accent-hover: #8b5cf6;--success: #22c55e;--error: #ef4444}body{margin:0;font-family:Outfit,system-ui,sans-serif;background:var(--bg);color:var(--text);min-height:100vh;-webkit-font-smoothing:antialiased}code,pre{font-family:JetBrains Mono,monospace}
