dialog.character-chat{position:fixed;inset:0;width:100vw;max-width:none;height:var(--chat-height,100dvh);max-height:none;margin:0;padding:0;border:0;background:transparent;color:var(--ink);overflow:hidden;overscroll-behavior:contain}
.character-chat::backdrop{background:#020202b3;backdrop-filter:blur(14px) saturate(.45);-webkit-backdrop-filter:blur(14px) saturate(.45)}
body.chat-open{overflow:hidden}
.chat-shell{position:absolute;inset:28px 28px 28px auto;width:min(590px,calc(100vw - 56px));display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;background:#090909f5;border:1px solid #d7d7ce35;box-shadow:0 24px 90px #000a;overflow:clip;isolation:isolate}
.chat-header{display:flex;align-items:center;gap:15px;padding:22px 24px 16px;border-bottom:1px solid #ededeb22}
.chat-header img{width:48px;height:58px;object-fit:cover;filter:saturate(.65)}
.chat-header img:not([src]){display:none}
.chat-header>div{min-width:0;flex:1}
.chat-header .micro{font-size:9px;letter-spacing:.12em}
.chat-header h2{font-size:30px;line-height:1.08;letter-spacing:-.055em;margin-top:8px;overflow-wrap:anywhere}
.chat-close{border:1px solid #ededeb35;background:none;color:#dddcd4;font:28px Arial;width:44px;height:44px;flex:none}
.chat-close:hover{background:#ededeb12}
.chat-context{padding:13px 24px 12px}
.chat-context>span{font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:#d0d0c5}
.chat-context p{font-size:11px;line-height:1.5;color:#92928b;margin-top:5px}
.chat-reading{position:relative;overflow:auto;min-height:0;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#56564e transparent;scroll-behavior:auto}
.chat-messages{display:flex;flex-direction:column;gap:28px;padding:20px 24px 28px;min-height:100%;outline-offset:-6px}
.chat-message{position:relative;max-width:94%;padding-left:17px;border-left:1px solid #aaa99c55;overflow-wrap:anywhere}
.chat-message .chat-speaker{display:block;font-size:10px;line-height:1.3;letter-spacing:.12em;text-transform:uppercase;color:#a1a197;margin-bottom:10px}
.chat-message-text{font-size:17px;line-height:1.7;white-space:pre-wrap;color:#d9d8ce}
.chat-message-text p{font-size:inherit;line-height:inherit;color:inherit;max-width:none;margin:0 0 15px}
.chat-message-text p:last-child{margin-bottom:0}
.chat-message-text a{color:inherit;text-decoration:underline;text-underline-offset:4px}
.chat-message-text pre{font:13px/1.6 monospace;white-space:pre-wrap;padding:12px;background:#ededeb08}
.chat-message-text code{font-size:.88em}
.chat-user{margin-left:auto;max-width:85%;border-left:0;border-right:1px solid #d5d4c13d;padding:0 16px 0 0}
.chat-user .chat-message-text{color:#b2b1a8;font-size:15px}
.chat-message.is-forming{animation:chat-words-form 580ms steps(1,end) both}
.chat-message-echo{opacity:0;pointer-events:none}.chat-message.is-forming .chat-message-echo{position:absolute;inset:18px 0 0 17px;pointer-events:none;clip-path:polygon(0 18%,100% 18%,100% 31%,0 31%,0 62%,100% 62%,100% 77%,0 77%);opacity:0;font-size:17px;animation:chat-word-fragments 580ms steps(1,end) both}
.chat-message.is-streaming .chat-message-text::after{content:'';display:inline-block;width:5px;height:14px;background:currentColor;vertical-align:text-bottom;opacity:.65;animation:chat-cursor 1.7s steps(1,end) infinite}
.chat-jump{position:sticky;bottom:8px;left:50%;transform:translateX(-50%);z-index:2;border:1px solid #aaa99c55;background:#11110ff0;color:#dad9cf;min-height:36px;padding:4px 14px;font-size:12px}
.chat-composer{padding:14px 24px 18px;border-top:1px solid #ededeb25;overflow:visible}
.chat-prompts{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.chat-prompts button{border:1px solid #ededeb26;background:none;color:#bcbbae;font-size:11px;line-height:1.35;padding:8px 10px;min-height:36px;text-align:left}
.chat-prompts button:hover{border-color:#c2c2b5;color:#ededeb}
.chat-status{min-height:18px;font-size:11px;line-height:1.5;margin:0 0 10px;color:#aaa99d}
.chat-composer form{display:flex;align-items:end;gap:10px;border:1px solid #b9b8a955;padding:10px 11px;background:#121211}
.chat-composer textarea{flex:1;min-width:0;min-height:48px;max-height:120px;width:100%;resize:vertical;background:none;border:0;outline-offset:4px;color:#e4e3d9;font:16px/1.5 Arial;padding:3px}
.chat-composer textarea::placeholder{color:#939389}
.chat-send{width:44px;height:44px;flex:none;background:#d9d8ce;color:#080808;border:0;font-size:27px}
.chat-send:disabled{opacity:.3;cursor:default}
.chat-stop{height:44px;border:1px solid #aaa99c55;background:none;color:#dddcd0;font-size:12px;padding:0 10px}
.chat-bottom-note{display:flex;justify-content:space-between;align-items:center;gap:18px;font-size:10px;line-height:1.5;color:#89897f;margin-top:10px}
.chat-bottom-note a{color:#b3b2a7;min-height:28px;display:inline-flex;align-items:center}
.chat-presence{position:absolute;left:5vw;top:18%;width:min(33vw,450px);height:65%;pointer-events:auto;display:flex;flex-direction:column;align-items:center;justify-content:center}
.chat-presence img{width:100%;height:90%;object-fit:contain;filter:grayscale(.4) brightness(.62);mask-image:radial-gradient(ellipse,#000 33%,transparent 74%)}
.chat-presence img:not([src]){display:none}
.chat-presence span{font-size:clamp(32px,4.5vw,70px);letter-spacing:-.07em;color:#b1b0a34d}
.character-chat.is-chat-opening .chat-shell{animation:chat-panel-form 740ms steps(1,end) both}
.character-chat.is-chat-closing .chat-shell{animation:chat-panel-leave 360ms steps(1,end) both}
@keyframes chat-panel-form{0%{opacity:0;clip-path:inset(46% 0 47%);transform:translateX(28px)}17%{opacity:.7;clip-path:inset(11% 0 29%);transform:translateX(-10px) skewX(-1deg)}36%{opacity:.4;clip-path:inset(0 0 12%);transform:translateX(8px)}58%{opacity:.9;transform:translateX(-3px)}83%,100%{opacity:1;clip-path:inset(0);transform:none}}
@keyframes chat-panel-leave{0%{opacity:1;transform:none}28%{opacity:.6;clip-path:inset(9% 0 29%);transform:translateX(12px)}66%{opacity:.3;clip-path:inset(48% 0 37%);transform:translateX(-9px)}100%{opacity:0;clip-path:inset(48% 0 50%);transform:translateX(22px)}}
@keyframes chat-words-form{0%{opacity:.3;transform:translateX(-7px);filter:blur(1px)}22%{opacity:.7;transform:translateX(4px);clip-path:inset(8% 0 18%)}43%{opacity:.5;transform:translateX(-3px)}74%,100%{opacity:1;transform:none;clip-path:inset(0);filter:none}}
@keyframes chat-word-fragments{0%,100%{opacity:0;transform:none}18%{opacity:.35;transform:translateX(12px)}38%{opacity:.18;transform:translateX(-8px)}61%{opacity:.25;transform:translateX(4px)}82%{opacity:0}}
@keyframes chat-cursor{0%,44%,72%,100%{opacity:.6}51%,64%,86%{opacity:.15}}
@media(max-width:899px){.chat-presence{display:none}.chat-shell{inset:20px;width:auto}}
@media(max-width:767px){dialog.character-chat{top:var(--chat-top,0px);bottom:auto}.chat-shell{inset:0;width:100%;border-width:0}.character-chat::backdrop{backdrop-filter:blur(9px)}.chat-header{padding:14px 18px 12px;gap:12px}.chat-header img{width:38px;height:46px}.chat-header h2{font-size:25px;margin-top:6px}.chat-context{padding:10px 18px}.chat-messages{padding:17px 18px 25px;gap:24px}.chat-message-text{font-size:16px;line-height:1.65}.chat-composer{padding:12px 18px max(12px,env(safe-area-inset-bottom));margin:0}.chat-prompts{flex-wrap:nowrap;overflow:auto;scrollbar-width:none;max-height:70px}.chat-prompts button{flex:none;max-width:190px;min-height:40px}.chat-bottom-note>span{display:none}.chat-bottom-note{justify-content:flex-end;margin-top:5px}.chat-message{max-width:96%}.chat-user{max-width:88%}}
@media(prefers-reduced-motion:reduce){.character-chat .chat-shell,.character-chat .chat-message,.character-chat .chat-message-echo,.character-chat .is-streaming .chat-message-text::after{animation:none!important}}
