:root{--bg: #0b0a0d;--ink: #f2eee9;--muted: #a49c95;--dim: #6f6862;--accent: #e8624a;--line: rgba(255, 255, 255, .12);--glass: rgba(18, 16, 20, .62);font-family:-apple-system,PingFang SC,Noto Sans SC,system-ui,sans-serif;color-scheme:dark;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--ink);line-height:1.75;overflow:hidden}button{font:inherit;cursor:pointer;border:none;border-radius:999px;padding:12px 26px;flex-shrink:0;white-space:nowrap;background:#ffffff1f;color:var(--ink);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transition:background .15s,transform .1s}button:hover:not(:disabled){background:#fff3}button:active:not(:disabled){transform:scale(.97)}button:disabled{opacity:.4;cursor:not-allowed}button.primary{background:var(--accent);color:#fff;font-weight:600}button.primary:hover:not(:disabled){background:#f2735c}button.ghost{background:transparent;border:1px solid var(--line);padding:8px 18px;font-size:14px}button.ghost:hover:not(:disabled){background:#ffffff14}input,textarea{font:inherit;width:100%;color:var(--ink);background:#ffffff14;border:1px solid var(--line);border-radius:22px;padding:13px 20px;outline:none;resize:none}input::placeholder,textarea::placeholder{color:var(--dim)}input:focus,textarea:focus{border-color:#ffffff4d}.muted{color:var(--muted)}.dim{color:var(--dim)}.portrait{position:absolute;top:0;right:0;bottom:0;left:0;background-size:cover;background-position:center 22%}.portrait.placeholder{background:radial-gradient(120% 90% at 50% 20%,#3a2f3d,#191520 55%,#0b0a0d)}.scrim-bottom{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(to bottom,#0b0a0d00 30%,#0b0a0d8c 62%,#0b0a0df5)}.bubble{background:var(--glass);-webkit-backdrop-filter:blur(18px) saturate(1.2);backdrop-filter:blur(18px) saturate(1.2);border:1px solid var(--line);border-radius:20px;padding:14px 18px;white-space:pre-wrap}.bubble.me{background:#e8624ad1;border-color:transparent;border-bottom-right-radius:6px}.bubble.char{border-bottom-left-radius:6px}.caret:after{content:"▍";opacity:.7;animation:blink 1.05s steps(2) infinite}@keyframes blink{50%{opacity:0}}@keyframes spin{to{transform:rotate(360deg)}}.snap{height:100%;overflow-y:scroll;scroll-snap-type:y mandatory;scrollbar-width:none}.snap::-webkit-scrollbar{display:none}.snap>*{scroll-snap-align:start}.scroll{overflow-y:auto}.scroll::-webkit-scrollbar{width:6px}.scroll::-webkit-scrollbar-thumb{background:#ffffff2e;border-radius:3px}.scroll::-webkit-scrollbar-track{background:transparent}@keyframes bubbleIn{0%{opacity:0;transform:translateY(7px) scale(.94)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes orbBreath{0%,to{opacity:.5;transform:scale(.9)}50%{opacity:1;transform:scale(1.12)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes drift{0%,to{transform:translateY(0) rotate(var(--tilt, 0deg))}50%{transform:translateY(-11px) rotate(var(--tilt, 0deg))}}@keyframes pianobar{0%,to{transform:scaleY(.45)}50%{transform:scaleY(1)}}@keyframes pulse{0%,to{box-shadow:0 0 #e8624a8c}50%{box-shadow:0 0 0 9px #e8624a00}}.msg{display:flex;flex-direction:column;gap:18px}.msg.tight{gap:9px}.msg .say{color:#f4ece4;font-weight:600;line-height:1.65}.msg .narrate{color:#bfb5ac;font-style:italic;font-weight:400;line-height:1.8}.msg .narrate em{font-style:normal;color:#d8cec4}.msg .say em{font-style:italic;font-weight:400}.msg p{margin:0}.msg img{max-width:100%;border-radius:12px;display:block}.msg code{background:#ffffff14;border-radius:5px;padding:1px 5px;font-size:.92em}.msg a{color:var(--accent)}
