@font-face{font-family:"Nora Soft CN";src:url("/nora-soft-cn-v1.ttf") format("truetype");font-display:swap}
:root{--accent:#9f9be8;--accent-ink:#625ea8;--tint:#F2F1FD;--nora-bubble:#7067C8;--nora-bubble-ink:#FFFFFF;--ink:#282638;--quiet:#8b8899;font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","PingFang SC","Helvetica Neue",Arial,sans-serif;color:var(--ink);background:#fff;-webkit-text-size-adjust:100%;text-size-adjust:100%}
*{box-sizing:border-box;min-width:0}
html,body{width:100%;height:100%;margin:0;overflow:hidden;background:#fff;-webkit-text-size-adjust:100%;text-size-adjust:100%}
button,textarea{font:inherit}
button{cursor:pointer;touch-action:manipulation}
.station-shell{display:grid;place-items:center;width:100%;height:100dvh;padding:max(10px,env(safe-area-inset-top)) 12px max(10px,env(safe-area-inset-bottom));background:#fafaff}
.chat-app{display:grid;grid-template-rows:auto minmax(0,1fr) auto;width:min(100%,760px);height:calc(100dvh - max(20px,env(safe-area-inset-top)) - max(20px,env(safe-area-inset-bottom)));overflow:hidden;border:1px solid rgba(28,28,32,.08);border-radius:10px;background:#fff;box-shadow:0 14px 34px rgba(28,28,32,.04)}
.chat-nav{display:grid;grid-template-columns:90px minmax(0,1fr) 90px;align-items:center;min-height:74px;padding:9px 14px 11px;background:#fff}
.brand{display:grid;gap:3px;color:#55605a;font-size:12px;line-height:1.1}
.brand strong{display:flex;align-items:center;gap:3px;font-family:"Nora Soft CN","PingFang SC",sans-serif;font-size:15px;font-weight:400}
.brand-heart{display:block;width:11px;height:10px;flex:0 0 11px;background-color:var(--accent);mask-image:url("/home-kicker-heart.svg");-webkit-mask-image:url("/home-kicker-heart.svg");mask-size:contain;-webkit-mask-size:contain;mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-position:center;-webkit-mask-position:center}
.brand small{color:#9aa19d;font-size:10px}
.doorplate{display:flex;align-items:center;justify-content:center;gap:8px;min-width:0}
.doorplate img{width:38px;height:38px;flex:0 0 38px;border-radius:50%;object-fit:cover;background:var(--tint)}
.doorplate-copy{display:grid;gap:2px;min-width:0}
.doorplate strong{overflow:hidden;color:var(--accent-ink);font-family:"Nora Soft CN","PingFang SC",sans-serif;font-size:19px;font-weight:400;line-height:1;text-overflow:ellipsis;white-space:nowrap}
.doorplate small{overflow:hidden;color:#7e7a91;font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","PingFang SC","Helvetica Neue",Arial,sans-serif;font-size:11px;font-weight:400;line-height:1.1;text-overflow:ellipsis;white-space:nowrap}
.health{justify-self:end;display:grid;justify-items:center;gap:3px;min-width:62px}
.blink-count{color:#929a95;font-size:9px;line-height:1;white-space:nowrap}
.health-dot{width:13px;height:13px;border:0;border-radius:50%;background:var(--accent);box-shadow:0 0 6px rgba(159,155,232,.22);animation:breathe 2.4s ease-in-out infinite}
.health-dot[data-state="offline"]{background:#b8bdbc;box-shadow:none}
.health-status{min-height:9px;color:#9aa19d;font-size:8px;line-height:1;white-space:nowrap}
.health-status[data-visible="false"]{visibility:hidden}
.chat-log{display:grid;grid-template-columns:minmax(0,1fr);align-content:start;gap:13px;width:100%;min-height:0;padding:13px 16px 18px 13px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:none;-webkit-overflow-scrolling:touch;touch-action:pan-y;background:#fff}
.chat-log::-webkit-scrollbar{display:none}
.msg{display:flex;gap:8px;width:fit-content;max-width:min(88%,650px);min-width:0}
.msg.chu{justify-self:start}
.msg.nora{flex-direction:row-reverse;justify-self:end}
.avatar{width:31px;height:31px;flex:0 0 31px;border-radius:50%;object-fit:cover;background:#fff}
.msg.nora .avatar{padding:1px;object-fit:contain}
.message-stack{display:grid;gap:4px;max-width:100%;min-width:0}
.turn-header{display:flex;align-items:center;gap:6px;min-height:24px}
.bubble{width:fit-content;max-width:100%;min-width:0;padding:9px 11px 10px;border:0;border-radius:10px;background:#fff;box-shadow:none}
.msg.chu .bubble{justify-self:start;background:var(--tint)}
.msg.nora .bubble{justify-self:end;background:var(--nora-bubble)}
.sender{margin-bottom:4px;color:#78827c;font-size:9px}
.msg.nora .sender{color:#fff}
.bubble-content{max-width:100%;color:#242825;font-size:14px;line-height:1.62;overflow-wrap:anywhere;word-break:break-word}
.msg.nora .bubble-content{color:var(--nora-bubble-ink)}
.plain-user-text{white-space:pre-wrap}
.bubble-content p,.bubble-content ul,.bubble-content ol,.bubble-content blockquote,.bubble-content pre,.bubble-content .md-heading{margin:0;font-size:14px;font-weight:400;line-height:1.62}
.bubble-content>*+*{margin-top:8px}
.bubble-content ul,.bubble-content ol{padding-left:20px}
.bubble-content li+li{margin-top:3px}
.bubble-content blockquote{padding-left:9px;border-left:2px solid rgba(98,94,168,.24);color:#6b6780}
.bubble-content code{padding:1px 4px;border-radius:4px;background:rgba(32,36,34,.06);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9em}
.bubble-content pre{max-width:100%;padding:8px;overflow:auto;border-radius:6px;background:rgba(32,36,34,.06)}
.bubble-content pre code{padding:0;background:transparent}
.bubble-content a{color:#5f5aa7;text-decoration:underline;text-underline-offset:2px}
.turn-actions,.message-actions{display:flex;align-items:center;justify-content:flex-start;gap:6px;width:max-content;max-width:100%;height:24px;min-height:24px;padding:0 2px;touch-action:pan-y}
.message-actions{justify-self:end}
.heart-action,.copy-action,.retry-action,.thinking-save,.thinking-toggle{display:grid;place-items:center;width:24px;height:24px;flex:0 0 24px;padding:0;color:#6d6992;font-size:14px;line-height:1;touch-action:pan-y;border:0;border-radius:0;background:transparent;box-shadow:none;outline:0;-webkit-appearance:none;appearance:none}
.heart-action{color:#807aa2}
.heart-action .heart-glyph{display:block;font-family:-apple-system,BlinkMacSystemFont,"PingFang SC",sans-serif;font-size:14px;line-height:1;color:inherit;opacity:.58}
.heart-action[data-heart-status="prepared"],.heart-action[data-heart-status="queued"],.heart-action[data-heart-status="withdrawal_prepared"],.heart-action[data-heart-status="withdrawal_queued"]{color:var(--accent-ink)}
.heart-action[data-heart-status="prepared"] .heart-glyph,.heart-action[data-heart-status="queued"] .heart-glyph,.heart-action[data-heart-status="withdrawal_prepared"] .heart-glyph,.heart-action[data-heart-status="withdrawal_queued"] .heart-glyph{opacity:.86}
.heart-action[data-heart-status="accepted"],.heart-action[data-heart-status="duplicate"]{color:var(--accent-ink)}
.heart-action[data-heart-status="accepted"] .heart-glyph,.heart-action[data-heart-status="duplicate"] .heart-glyph{opacity:1}
.heart-action[data-heart-status="retry"]{color:#7d759f}
.heart-action[data-heart-status="retry"] .heart-glyph{opacity:.78}
.heart-action[data-heart-status="withdrawn"],.heart-action[data-heart-status="cancelled"]{color:#a3a0b5}
.heart-action[data-heart-status="withdrawn"] .heart-glyph,.heart-action[data-heart-status="cancelled"] .heart-glyph{opacity:.34}
.copy-action,.retry-action,.thinking-save,.thinking-toggle{color:#7a7599}
.copy-action:hover,.copy-action:focus-visible,.retry-action:hover,.retry-action:focus-visible,.heart-action:hover,.heart-action:focus-visible,.thinking-save:hover,.thinking-save:focus-visible,.thinking-toggle:hover,.thinking-toggle:focus-visible{text-decoration:none;outline:0;opacity:.72}
.copy-action:active,.retry-action:active,.heart-action:active,.thinking-save:active,.thinking-toggle:active{opacity:.84}
.spinner-cue{display:inline-flex;align-items:baseline;gap:1px;margin-left:2px;user-select:none;pointer-events:none;opacity:.58}
.spinner-char{display:inline-block;font-family:"Nora Soft CN","PingFang SC",sans-serif;font-size:9px;font-weight:400;line-height:1;color:color-mix(in srgb,var(--accent) 20%,#7e7a91);animation:spinner-bounce 1.8s ease-in-out infinite}
.spinner-char--zh{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC",sans-serif;color:#8d9890}
.thinking-toggle{font-size:11px;color:#85809f}
.private-thinking{justify-self:start;max-width:min(100%,540px);color:#777193;font-size:11px;line-height:1.48}
.thinking-body{white-space:pre-wrap;overflow-wrap:anywhere;color:#5f5a7d}
.thinking-save{margin-top:4px;font-size:13px}
.copy-fallback{position:fixed;left:-9999px;top:0}
.composer-wrap{display:grid;gap:7px;padding:8px 10px calc(9px + env(safe-area-inset-bottom));background:#fff}
.composer{display:grid;grid-template-columns:minmax(0,1fr) 52px;gap:8px;align-items:end}
.composer textarea{width:100%;min-height:42px;max-height:116px;resize:none;padding:10px 12px;border:0;border-radius:10px;outline:0;background:#f7f6ff;box-shadow:inset 0 0 0 1px rgba(28,28,32,.06);color:#2d2a40;font-size:14px;line-height:1.45}
.send{display:grid;place-content:center;min-width:52px;min-height:42px;padding:5px;border:0;border-radius:10px;background:#f0efff;color:#5f5aa7}
.send strong{font-family:"Nora Soft CN","PingFang SC",sans-serif;font-size:14px;font-weight:400}
.send small{color:#809087;font-size:9px}
@keyframes breathe{0%,100%{opacity:.45;transform:scale(.95)}50%{opacity:1;transform:scale(1.04)}}
@keyframes spinner-bounce{0%,100%{transform:translateY(0)}18%{transform:translateY(-3.5px)}34%{transform:translateY(1.4px)}50%{transform:translateY(-2.2px)}68%{transform:translateY(.6px)}}
@media(max-width:640px){.station-shell{padding:0;background:#fff}.chat-app{width:100%;height:100dvh;border:0;border-radius:0;box-shadow:none}.chat-nav{grid-template-columns:72px minmax(0,1fr) 72px;min-height:70px;padding:8px 10px 10px}.brand strong{font-size:13px}.doorplate img{width:33px;height:33px;flex-basis:33px}.doorplate strong{max-width:145px;font-size:17px}.chat-log{padding:12px max(15px,env(safe-area-inset-right)) 15px max(10px,env(safe-area-inset-left))}.msg{max-width:92%}.avatar{width:29px;height:29px;flex-basis:29px}.bubble{padding:8px 10px 9px}.composer-wrap{padding-inline:9px}}
@media(prefers-reduced-motion:reduce){.health-dot{animation:none!important}}
