:root,[data-theme=dark]{--bg: #0f0f12;--bg-elevated: #16161b;--panel: #1a1a1f;--panel-hover: #22222a;--border: #2a2a30;--border-strong: #3a3a44;--text: #e8e8ea;--text-secondary: #b4b4bc;--muted: #8b8b92;--accent: #ffd966;--accent2: #ff9f43;--accent-fg: #000;--danger: #ff6b6b;--danger-bg: rgba(255, 107, 107, .12);--ok: #51cf66;--ok-bg: rgba(81, 207, 102, .12);--warn: #ffa94d;--user-bubble: #ffd966;--user-bubble-fg: #000;--assistant-bubble: #1f1f26;--assistant-bubble-border: #2e2e36;--shadow-sm: 0 1px 2px rgba(0,0,0,.3);--shadow-md: 0 4px 12px rgba(0,0,0,.4);--shadow-lg: 0 10px 30px rgba(0,0,0,.5);--radius-sm: 6px;--radius: 8px;--radius-lg: 12px;--radius-xl: 16px;--ease: cubic-bezier(.16, 1, .3, 1);--transition: .2s var(--ease);color-scheme:dark}[data-theme=light]{--bg: #fafaf9;--bg-elevated: #ffffff;--panel: #ffffff;--panel-hover: #f3f3f0;--border: #e5e5e0;--border-strong: #d0d0c8;--text: #1a1a1f;--text-secondary: #4a4a52;--muted: #7a7a82;--accent: #d97706;--accent2: #f59e0b;--accent-fg: #fff;--danger: #dc2626;--danger-bg: rgba(220, 38, 38, .1);--ok: #16a34a;--ok-bg: rgba(22, 163, 74, .1);--warn: #ea580c;--user-bubble: #fef3c7;--user-bubble-fg: #1a1a1f;--assistant-bubble: #ffffff;--assistant-bubble-border: #e5e5e0;--shadow-sm: 0 1px 2px rgba(0,0,0,.05);--shadow-md: 0 4px 12px rgba(0,0,0,.08);--shadow-lg: 0 10px 30px rgba(0,0,0,.12);color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:-apple-system,BlinkMacSystemFont,Apple SD Gothic Neo,Pretendard,Malgun Gothic,Segoe UI,system-ui,sans-serif;background:var(--bg);color:var(--text);font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background var(--transition),color var(--transition)}*{transition-property:background-color,border-color,color,box-shadow;transition-duration:.15s}*:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button,input,select,textarea{font-family:inherit;font-size:inherit}button{cursor:pointer}.app{display:flex;flex-direction:column;height:100%;max-width:880px;margin:0 auto;padding:16px}@media(max-width:600px){.app{padding:10px}}header.top{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 0;border-bottom:1px solid var(--border);margin-bottom:16px;flex-wrap:wrap}header.top h1{font-size:22px;margin:0;font-weight:800;letter-spacing:-.02em;display:flex;align-items:center;gap:8px}header.top .badge{background:linear-gradient(135deg,var(--accent),var(--accent2));color:var(--accent-fg);font-size:10px;padding:4px 10px;border-radius:12px;font-weight:800;letter-spacing:.05em}header.top .badge.demo{background:var(--accent2)}header.top .actions{display:flex;gap:8px;align-items:center;font-size:12px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 14px;border-radius:var(--radius);font-weight:600;border:1px solid var(--border);background:var(--panel);color:var(--text);transition:all var(--transition);white-space:nowrap}.btn:hover{border-color:var(--accent);background:var(--panel-hover)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.4;cursor:not-allowed;transform:none}.btn.primary{background:var(--accent);color:var(--accent-fg);border-color:var(--accent)}.btn.primary:hover{background:var(--accent2);border-color:var(--accent2)}.btn.danger{background:var(--danger-bg);color:var(--danger);border-color:var(--danger)}.btn.icon{padding:6px 8px}.btn.ghost{background:transparent;border-color:transparent}.btn.ghost:hover{background:var(--panel-hover);border-color:var(--border)}.tabs{display:flex;gap:4px;margin-bottom:12px;border-bottom:1px solid var(--border);overflow-x:auto;scrollbar-width:thin}.tab{padding:10px 18px;background:transparent;border:none;border-bottom:2px solid transparent;cursor:pointer;color:var(--muted);font-weight:600;margin-bottom:-1px;transition:all var(--transition);white-space:nowrap}.tab:hover{color:var(--text-secondary)}.tab.active{color:var(--accent);border-bottom-color:var(--accent)}.status{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--muted)}.status .dot{width:8px;height:8px;border-radius:50%;background:var(--muted)}.status.ok .dot{background:var(--ok);box-shadow:0 0 8px var(--ok)}.status.demo .dot{background:var(--accent2);box-shadow:0 0 8px var(--accent2)}.status.err .dot{background:var(--danger)}.chat{flex:1;display:flex;flex-direction:column;min-height:0}.messages{flex:1;overflow-y:auto;padding:16px;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);margin-bottom:12px;display:flex;flex-direction:column;gap:12px;scrollbar-width:thin}.messages::-webkit-scrollbar{width:8px}.messages::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:4px}.msg{padding:10px 14px;border-radius:var(--radius-lg);max-width:85%;white-space:pre-wrap;word-break:break-word;line-height:1.55;position:relative;animation:msgIn .2s var(--ease)}@keyframes msgIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.msg.user{background:var(--user-bubble);color:var(--user-bubble-fg);margin-left:auto;font-weight:500;border-bottom-right-radius:4px}.msg.assistant{background:var(--assistant-bubble);border:1px solid var(--assistant-bubble-border);margin-right:auto;border-bottom-left-radius:4px}.msg.system{background:var(--danger-bg);color:var(--danger);margin:0 auto;font-size:12px;font-style:italic;text-align:center;border-radius:var(--radius)}.msg-actions{position:absolute;top:6px;right:6px;display:flex;gap:2px;opacity:0;transition:opacity var(--transition)}.msg:hover .msg-actions,.msg:focus-within .msg-actions{opacity:1}.msg .icon-btn{background:var(--bg);border:1px solid var(--border);color:var(--muted);padding:4px 6px;border-radius:var(--radius-sm);font-size:11px;cursor:pointer}.msg .icon-btn:hover{color:var(--accent);border-color:var(--accent)}.msg strong{font-weight:700}.msg em{font-style:italic}.msg code{background:var(--bg);padding:2px 6px;border-radius:4px;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.9em;border:1px solid var(--border)}.msg pre{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);padding:12px;overflow-x:auto;margin:8px 0}.msg pre code{border:none;padding:0;background:transparent}.msg ul,.msg ol{margin:8px 0;padding-left:20px}.msg li{margin:2px 0}.msg h1,.msg h2,.msg h3{margin:12px 0 6px;font-weight:700}.msg h1{font-size:18px}.msg h2{font-size:16px}.msg h3{font-size:14px}.msg blockquote{border-left:3px solid var(--accent);margin:8px 0;padding-left:12px;color:var(--text-secondary)}.typing{display:inline-flex;gap:4px;padding:4px 0}.typing span{width:6px;height:6px;background:var(--muted);border-radius:50%;animation:typing 1.4s infinite}.typing span:nth-child(2){animation-delay:.2s}.typing span:nth-child(3){animation-delay:.4s}@keyframes typing{0%,60%,to{transform:translateY(0);opacity:.4}30%{transform:translateY(-6px);opacity:1}}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;color:var(--muted);padding:40px 20px;text-align:center;gap:8px}.empty-state .emoji{font-size:48px;margin-bottom:8px}.empty-state h2{font-size:18px;font-weight:700;margin:0;color:var(--text-secondary)}.empty-state p{margin:0;font-size:13px}.empty-state .suggestions{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:12px}.empty-state .suggestions button{background:var(--panel);border:1px solid var(--border);padding:6px 12px;border-radius:16px;font-size:12px;color:var(--text-secondary)}.empty-state .suggestions button:hover{border-color:var(--accent);color:var(--accent)}.input-row{display:flex;gap:8px;align-items:flex-end;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);padding:8px;transition:border-color var(--transition)}.input-row:focus-within{border-color:var(--accent)}.input-row textarea{flex:1;padding:8px;background:transparent;border:none;color:var(--text);resize:none;font-size:14px;line-height:1.5;min-height:24px;max-height:160px;font-family:inherit}.input-row textarea:focus{outline:none}.input-row .send{padding:8px 18px;background:var(--accent);color:var(--accent-fg);border:none;border-radius:var(--radius);font-weight:700;cursor:pointer;transition:background var(--transition);min-height:40px}.input-row .send:hover:not(:disabled){background:var(--accent2)}.input-row .send:disabled{background:var(--border);color:var(--muted);cursor:not-allowed}.input-row .send.demo-send{background:var(--accent2)}.quick-chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}.quick-chips .chip{background:var(--panel);border:1px solid var(--border);color:var(--text-secondary);padding:4px 10px;border-radius:14px;font-size:11px;cursor:pointer}.quick-chips .chip:hover{border-color:var(--accent);color:var(--accent)}.panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px;box-shadow:var(--shadow-sm)}.panel h3{margin:0 0 4px;font-size:16px;font-weight:700}.panel hr{border:none;border-top:1px solid var(--border);margin:20px 0}.field{margin-top:16px}.field label{display:block;font-size:11px;font-weight:700;color:var(--muted);margin-bottom:6px;text-transform:uppercase;letter-spacing:.05em}.field .label-row{display:flex;justify-content:space-between;align-items:baseline}.field .help{font-size:11px;color:var(--muted);font-weight:400;text-transform:none;letter-spacing:0}.field input,.field select,.field textarea{width:100%;padding:10px 12px;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);font-size:14px;transition:border-color var(--transition)}.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #ffd9661a}.field .key-input-wrap{position:relative;display:flex;gap:6px}.field .key-input-wrap input{flex:1;font-family:ui-monospace,monospace}.field .key-toggle{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:0 10px;font-size:12px;color:var(--muted)}.field .key-toggle:hover{color:var(--accent);border-color:var(--accent)}.field .model-desc{margin-top:6px;font-size:11px;color:var(--muted);display:flex;gap:12px;flex-wrap:wrap}.field .model-desc span{background:var(--bg);padding:2px 6px;border-radius:4px}.toast-host{position:fixed;bottom:24px;right:24px;display:flex;flex-direction:column;gap:8px;z-index:9999;pointer-events:none}.toast{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);padding:12px 16px;box-shadow:var(--shadow-lg);min-width:240px;max-width:360px;font-size:13px;animation:toastIn .2s var(--ease);pointer-events:auto}.toast.err{border-left:3px solid var(--danger)}.toast.ok{border-left:3px solid var(--ok)}@keyframes toastIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.qr-section{display:flex;gap:20px;align-items:center;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px;margin-bottom:16px;flex-wrap:wrap}.qr-section img{width:180px;height:180px;background:#fff;padding:8px;border-radius:var(--radius);box-shadow:var(--shadow-md)}.qr-section code{background:var(--bg);padding:6px 10px;border-radius:var(--radius-sm);font-size:13px;-webkit-user-select:all;user-select:all;font-family:ui-monospace,monospace}@media(max-width:600px){header.top{padding:8px 0}header.top h1{font-size:18px}.msg{max-width:92%}.tab{padding:8px 12px;font-size:13px}.input-row{padding:6px}.input-row .send{padding:6px 12px;min-height:36px}.qr-section{flex-direction:column;text-align:center}}.text-muted{color:var(--muted);font-size:12px}.row{display:flex;gap:12px;align-items:center}.spacer{flex:1}
