:root{--bg: #f6f7fb;--panel: #ffffff;--border: #e3e5ec;--text: #1c1f2a;--muted: #6b7080;--accent: #6147ff;--accent-fg: #ffffff;--user-bubble: #6147ff;--user-fg: #ffffff;--assistant-bubble: #f0f1f6;--error: #c0392b}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--text)}.app{display:flex;flex-direction:column;min-height:100%}.app-header{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1.25rem;background:var(--panel);border-bottom:1px solid var(--border)}.brand{font-weight:700;letter-spacing:.2px;color:var(--text);text-decoration:none}.header-right{display:flex;gap:.75rem;align-items:center}.user{color:var(--muted);font-size:.9rem}.app-main{padding:1.25rem;max-width:880px;width:100%;margin:0 auto;flex:1;display:flex;flex-direction:column}.card{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:1.25rem}.auth-card{max-width:380px;width:100%;margin:2rem auto 0}.auth-card form{display:flex;flex-direction:column;gap:.75rem}.auth-card label{display:flex;flex-direction:column;font-size:.9rem;color:var(--muted)}.auth-card label input{margin-top:.25rem;padding:.5rem .7rem;border:1px solid var(--border);border-radius:6px;font-size:1rem}button,.primary-button{background:var(--accent);color:var(--accent-fg);border:none;padding:.55rem 1rem;border-radius:6px;font-size:.95rem;cursor:pointer;text-decoration:none;display:inline-block}button:disabled{opacity:.55;cursor:not-allowed}.link-button{background:none;color:var(--accent);border:none;cursor:pointer;padding:0;font-size:.9rem}.muted{color:var(--muted);font-size:.9rem}.error{color:var(--error);font-size:.9rem}.page-header{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem}.page-header h1{margin:0;font-size:1.3rem}.chat-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.5rem}.chat-list-item{display:flex;gap:.75rem;align-items:center;background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:.75rem;text-decoration:none;color:var(--text)}.chat-list-text{flex:1;min-width:0}.chat-list-name{font-weight:600}.chat-list-last{color:var(--muted);font-size:.85rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.avatar{width:44px;height:44px;border-radius:50%;background:var(--bg);object-fit:cover;flex-shrink:0}.empty{background:var(--panel);border:1px dashed var(--border);padding:2rem;border-radius:10px;text-align:center;color:var(--muted)}.character-grid{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.75rem}.character-card{display:flex;flex-direction:column;align-items:flex-start;gap:.4rem;background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:.9rem;color:var(--text);text-align:left;cursor:pointer}.character-card:hover{border-color:var(--accent)}.character-card-name{font-weight:600}.character-card-desc{font-size:.85rem;color:var(--muted)}.chat-page{display:flex;flex-direction:column;flex:1;min-height:0}.messages{flex:1;background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:1rem;overflow-y:auto;display:flex;flex-direction:column;gap:.65rem;margin-bottom:.75rem;min-height:300px}.message{max-width:75%;padding:.6rem .8rem;border-radius:12px;display:flex;flex-direction:column;gap:.3rem;word-break:break-word}.message-user{align-self:flex-end;background:var(--user-bubble);color:var(--user-fg)}.message-assistant{align-self:flex-start;background:var(--assistant-bubble);color:var(--text)}.message-pending{align-self:flex-start}.emotion{font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.text{white-space:pre-wrap}.time{font-size:.7rem;color:#ffffffb3;align-self:flex-end}.message-assistant .time{color:var(--muted)}.photo{display:flex;flex-direction:column;gap:.25rem;font-size:.75rem}.photo a{color:inherit;opacity:.85}.photo img{max-width:240px;border-radius:8px}.composer{display:flex;gap:.5rem}.composer input{flex:1;padding:.6rem .8rem;border-radius:8px;border:1px solid var(--border);font-size:1rem;background:var(--panel)}
