@import "https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,400;0,9..40,600;0,9..40,700;1,9..40,400&family=Fraunces:opsz,wght@9..144,600;9..144,700&display=swap";:root{--bg0:#12201c;--bg1:#1a2e28;--ink:#edf3ef;--muted:#9bb0a6;--line:#edf3ef1f;--user:#d8e7a8;--user-ink:#1a2410;--bot:#ffffff0f;--accent:#7ec8a3;--danger:#ffb4a8;--font-sans:"DM Sans", "PingFang SC", "Noto Sans SC", sans-serif;--font-display:"Fraunces", "Songti SC", serif}*{box-sizing:border-box}html,body,#app{min-height:100%}body{font-family:var(--font-sans);color:var(--ink);background:radial-gradient(1000px 520px at 10% -10%, #7ec8a32e, transparent 55%), radial-gradient(800px 480px at 100% 0%, #d8e7a81f, transparent 50%), linear-gradient(165deg, var(--bg0), var(--bg1) 55%, #0e1815);margin:0}.page{grid-template-rows:auto 1fr auto auto;gap:1rem;width:min(720px,100% - 2rem);min-height:100vh;margin:0 auto;padding:1.5rem 0 1.25rem;display:grid}.brand{animation:.6s both rise}.logo{font-family:var(--font-display);letter-spacing:-.04em;margin:0;font-size:clamp(2.4rem,8vw,3.4rem);font-weight:700;line-height:1}.brand h1{letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin:.35rem 0 0;font-size:1.05rem;font-weight:600}.sub{color:var(--muted);margin:.35rem 0 0;font-size:.95rem}.thread{flex-direction:column;gap:.85rem;min-height:40vh;max-height:min(58vh,560px);padding:.25rem .15rem .5rem;animation:.7s 50ms both rise;display:flex;overflow:auto}.empty{color:var(--muted);text-align:center;max-width:22rem;margin:auto;line-height:1.6}.bubble{border:1px solid var(--line);border-radius:1.1rem;max-width:min(92%,34rem);padding:.85rem 1rem;animation:.28s cubic-bezier(.2,.9,.3,1.2) both pop}.bubble.user{background:var(--user);color:var(--user-ink);border-color:#0000;align-self:flex-end}.bubble.assistant{background:var(--bot);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);align-self:flex-start}.who{letter-spacing:.06em;text-transform:uppercase;opacity:.7;margin-bottom:.35rem;font-size:.72rem;display:block}.bubble p{white-space:pre-wrap;word-break:break-word;margin:0;font-size:1rem;line-height:1.55}.pending .dots{opacity:.7;background:radial-gradient(circle,currentColor 1.6px,#0000 1.8px) 0/.55rem 100% repeat-x;width:1.6rem;height:.55rem;animation:1s ease-in-out infinite pulse;display:inline-block}.error{color:var(--danger);margin:0;font-size:.9rem}.composer{grid-template-columns:1fr auto;align-items:end;gap:.65rem;animation:.75s .1s both rise;display:grid}textarea{resize:none;border:1px solid var(--line);width:100%;color:var(--ink);font:inherit;background:#00000038;border-radius:1rem;outline:none;padding:.9rem 1rem;line-height:1.45;transition:border-color .2s,box-shadow .2s}textarea:focus{border-color:#7ec8a38c;box-shadow:0 0 0 3px #7ec8a326}button{background:var(--accent);color:#0e1815;font:inherit;cursor:pointer;border:0;border-radius:999px;padding:.85rem 1.25rem;font-weight:700;transition:transform .15s,opacity .15s}button:hover:not(:disabled){transform:translateY(-1px)}button:disabled{opacity:.45;cursor:not-allowed}.sr{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes pop{0%{opacity:0;transform:translateY(6px)scale(.98)}to{opacity:1;transform:none}}@keyframes pulse{0%,to{opacity:.35}50%{opacity:1}}@media (width<=560px){.composer{grid-template-columns:1fr}button{width:100%}}
