:root{--ink:#2b2b33;--ink-soft:#5b5b69;--ink-faint:#8a8a99;--glass:#ffffff9e;--glass-strong:#ffffffd1;--user-bubble:#ffffffdb;--line:#786e8c2e;--op-bg:linear-gradient(135deg, #7c6cf0, #a987f5);--op-ink:#fff;--comp-bg:#ffffffb8;--comp-ink:#34323d;--comp-line:#7c6cf047;--special-bg:#ffe9d6d9;--special-ink:#b5651d;--radius-lg:26px;--radius-md:18px;--radius-sm:12px;--shadow-soft:0 10px 30px #5a46821f;--shadow-pop:0 16px 44px #46376e38;--font-cjk:"PingFang SC", "Microsoft YaHei", "Hiragino Sans GB", "Noto Sans CJK SC", "Source Han Sans SC", "Segoe UI", system-ui, sans-serif;--font-glyph:"Noto Serif CJK SC", "Source Han Serif SC", "Songti SC", "SimSun", "PingFang SC", "Microsoft YaHei", serif}*{box-sizing:border-box}html,body{height:100%;margin:0;padding:0}body{font-family:var(--font-cjk);color:var(--ink);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;background:#fbf7fb;overflow:hidden}.bg{z-index:-2;background-color:#fff;position:fixed;inset:0;overflow:hidden}.bg:before,.bg:after{content:"";pointer-events:none;position:absolute;inset:-12%}.bg:before{will-change:filter, transform;background:radial-gradient(92% 58% at 10% 6%,#fbb6def2,#fbb6de00 74%),radial-gradient(88% 56% at 78% 4%,#ffd4b8e6,#ffd4b800 74%),radial-gradient(120% 72% at 48% 0,#fbdae08c,#fbdae000 82%);animation:20s linear infinite hue-spin,17s ease-in-out infinite alternate breathe}.bg:after{will-change:transform;background:radial-gradient(56% 38% at 28% 16%,#fffaeb99,#0000 74%);animation:23s ease-in-out infinite alternate glow-float}@keyframes hue-spin{0%{filter:hue-rotate()saturate(1.02)}to{filter:hue-rotate(360deg)saturate(1.02)}}@keyframes breathe{0%{transform:scale(1)translateY(0)}to{transform:scale(1.06)translateY(-1.5%)}}@keyframes glow-float{0%{transform:translate(0,0)}to{transform:translate(8vw,5vh)}}@media (prefers-reduced-motion:reduce){.bg:before,.bg:after{animation:none}}.app{flex-direction:column;max-width:920px;height:100dvh;margin:0 auto;padding:0 16px;display:flex;position:relative}.topbar{flex:none;align-items:center;gap:12px;padding:18px 8px 10px;display:flex}.topbar .logo{background:var(--op-bg);color:#fff;width:38px;height:38px;font-family:var(--font-glyph);box-shadow:var(--shadow-soft);border-radius:12px;justify-content:center;align-items:center;font-size:20px;display:inline-flex}.topbar .title{letter-spacing:.3px;font-size:17px;font-weight:650}.topbar .subtitle{color:var(--ink-faint);margin-top:1px;font-size:12.5px}.topbar .source-pick{color:var(--ink-soft);align-items:center;gap:8px;margin-left:auto;font-size:13px;display:flex}.source-select{appearance:none;border:1px solid var(--line);background:var(--glass);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);font:inherit;color:var(--ink);cursor:pointer;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%237c6cf0' stroke-width='3'><path d='M6 9l6 6 6-6'/></svg>");background-position:right 11px center;background-repeat:no-repeat;border-radius:999px;padding:7px 30px 7px 14px;font-size:13px}.scroll{scroll-behavior:smooth;flex:auto;padding:6px 4px 18px;overflow-y:auto}.scroll::-webkit-scrollbar{width:8px}.scroll::-webkit-scrollbar-thumb{background:#7c6cf040;border-radius:999px}.empty{text-align:center;height:100%;color:var(--ink-soft);flex-direction:column;justify-content:center;align-items:center;gap:18px;padding-bottom:8vh;display:flex}.empty h1{color:var(--ink);letter-spacing:1px;margin:0;font-size:26px;font-weight:650}.empty p{margin:0;font-size:14px}.chips-row{flex-wrap:wrap;justify-content:center;gap:10px;max-width:560px;display:flex}.example-chip{border:1px solid var(--line);background:var(--glass);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);font-family:var(--font-glyph);color:var(--ink);cursor:pointer;border-radius:999px;padding:9px 16px;font-size:16px;transition:transform .16s,box-shadow .16s,background .16s}.example-chip:hover{box-shadow:var(--shadow-soft);background:var(--glass-strong);transform:translateY(-2px)}.msg{margin:14px 0;animation:.32s cubic-bezier(.2,.8,.2,1) both rise;display:flex}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.msg.user{justify-content:flex-end}.msg.assistant{justify-content:flex-start}.msg-col{flex-direction:column;min-width:0;max-width:88%;display:flex}.msg.user .msg-col{align-items:flex-end}.msg.assistant .msg-col{align-items:flex-start}.bubble-caption{color:var(--ink-faint);letter-spacing:.2px;align-self:flex-end;margin:5px 10px 0 0;font-size:11.5px}.bubble{border-radius:var(--radius-lg);max-width:100%;box-shadow:var(--shadow-soft);-webkit-backdrop-filter:blur(14px)saturate(1.2);backdrop-filter:blur(14px)saturate(1.2);border:1px solid #ffffff80;padding:14px 18px;line-height:1.7}.msg.user .bubble{background:var(--user-bubble);font-family:var(--font-glyph);border-bottom-right-radius:8px;font-size:18px}.msg.assistant .bubble{background:var(--glass);border-bottom-left-radius:8px}.assistant-head{color:var(--ink-faint);align-items:center;gap:6px;margin-bottom:8px;font-size:12.5px;display:flex}.assistant-head .dot{background:var(--op-bg);border-radius:50%;width:8px;height:8px}.typing{gap:4px;padding:2px 0;display:inline-flex}.typing span{background:#7c6cf099;border-radius:50%;width:7px;height:7px;animation:1.1s ease-in-out infinite blink}.typing span:nth-child(2){animation-delay:.18s}.typing span:nth-child(3){animation-delay:.36s}@keyframes blink{0%,80%,to{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}}.char-card{border-radius:var(--radius-md);border:1px solid var(--line);background:#ffffff80;margin:10px 0;padding:12px 14px}.char-card:first-of-type{margin-top:2px}.char-card-head{flex-wrap:wrap;align-items:baseline;gap:12px;margin-bottom:8px;display:flex}.char-card-head .ids-string{font-family:var(--font-glyph);letter-spacing:2px;color:var(--ink);font-size:20px}.char-card-head .cp{color:var(--ink-faint);font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:12px}.char-card-head .src-tag{color:#7c6cf0;background:#7c6cf01f;border-radius:999px;padding:2px 8px;font-size:11px}.char-card .atomic-note{color:var(--ink-faint);font-size:13px}.plain-text{font-family:var(--font-glyph);color:var(--ink-soft);font-size:16px}.glyph{font-family:var(--font-glyph);cursor:help;border-radius:8px;padding:0 2px;transition:background .14s,color .14s,box-shadow .14s}.glyph.comp{color:var(--comp-ink)}.glyph.comp:hover{box-shadow:inset 0 0 0 1.5px var(--comp-line);background:#7c6cf024}.glyph.op{background:var(--op-bg);color:var(--op-ink);border-radius:9px;justify-content:center;align-items:center;display:inline-flex;box-shadow:0 3px 8px #7c6cf04d}.glyph.op:hover{filter:brightness(1.07)}.glyph.special{background:var(--special-bg);color:var(--special-ink);border-radius:8px;padding:0 5px}.glyph .vmark{color:#d08bd0;vertical-align:super;font-size:.7em}.bubble .glyph.comp:hover{background:#7c6cf01f}.tree{font-size:15px}.tree-node{position:relative}.tree-row{align-items:center;gap:9px;padding:3px 0;display:flex}.tree-row .op{flex:none;width:30px;height:30px;font-size:19px}.tree-row .op-desc{color:var(--ink-faint);font-size:12px}.tree-row .leaf-glyph{background:var(--comp-bg);box-shadow:inset 0 0 0 1px var(--comp-line);border-radius:9px;padding:1px 6px;font-size:24px;line-height:1.25}.tree-row .cycle-note{color:var(--ink-faint);font-size:11px}.tree-children{border-left:2px solid #7c6cf038;margin-left:15px;padding-left:16px}.composer{flex:none;padding:8px 4px 20px}.composer-inner{background:var(--glass-strong);-webkit-backdrop-filter:blur(16px)saturate(1.3);backdrop-filter:blur(16px)saturate(1.3);border-radius:var(--radius-lg);box-shadow:var(--shadow-soft);border:1px solid #ffffffb3;align-items:center;gap:10px;padding:6px 6px 6px 18px;display:flex}.composer textarea{resize:none;font:inherit;color:var(--ink);min-height:26px;max-height:140px;font-size:16px;line-height:1.6;font-family:var(--font-glyph);background:0 0;border:none;outline:none;flex:auto;padding:0;display:block}.composer textarea::placeholder{color:var(--ink-faint)}.send-btn{background:var(--op-bg);color:#fff;cursor:pointer;border:none;border-radius:50%;flex:none;justify-content:center;align-items:center;width:42px;height:42px;transition:transform .14s,opacity .14s;display:inline-flex;box-shadow:0 6px 16px #7c6cf066}.send-btn:hover{transform:scale(1.06)}.send-btn:disabled{opacity:.4;cursor:not-allowed;transform:none}.composer .hint{text-align:center;color:var(--ink-faint);margin-top:8px;font-size:11.5px}.tooltip{z-index:50;-webkit-backdrop-filter:blur(18px)saturate(1.4);backdrop-filter:blur(18px)saturate(1.4);min-width:180px;max-width:320px;box-shadow:var(--shadow-pop);pointer-events:none;background:#ffffffeb;border:1px solid #fffc;border-radius:16px;padding:12px 14px;animation:.16s both pop;position:fixed}@keyframes pop{0%{opacity:0;transform:translateY(6px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}.tooltip .tt-head{align-items:center;gap:10px;margin-bottom:8px;display:flex}.tooltip .tt-glyph{font-family:var(--font-glyph);color:var(--ink);font-size:30px;line-height:1}.tooltip .tt-op-glyph{font-family:var(--font-glyph);background:var(--op-bg);color:#fff;border-radius:11px;justify-content:center;align-items:center;width:40px;height:40px;font-size:26px;display:inline-flex}.tooltip .tt-title{color:var(--ink);font-size:14px;font-weight:650}.tooltip .tt-cp{color:var(--ink-faint);font-family:ui-monospace,Menlo,Consolas,monospace;font-size:11px}.tooltip .tt-detail{color:var(--ink-soft);font-size:13px;line-height:1.55}.tooltip .tt-section-label{color:var(--ink-faint);text-transform:uppercase;letter-spacing:.6px;margin:6px 0 4px;font-size:11px}.tooltip .tt-parse{border-top:1px dashed var(--line);align-items:baseline;gap:8px;padding:3px 0;display:flex}.tooltip .tt-parse:first-of-type{border-top:none}.tooltip .tt-parse.is-default .tt-ids{color:#6a4ddb;font-weight:650}.tooltip .tt-src{color:#fff;white-space:nowrap;background:linear-gradient(135deg,#8b78f0,#b79bf3);border-radius:6px;flex:none;padding:2px 7px;font-size:10.5px}.tooltip .tt-parse.is-default .tt-src{background:linear-gradient(135deg,#5a8bff,#5ad1c4)}.tooltip .tt-ids{font-family:var(--font-glyph);letter-spacing:1px;color:var(--ink);font-size:16px}.tooltip .tt-srcnames{color:var(--ink-faint);margin-top:1px;font-size:11px}.tooltip .tt-loading,.tooltip .tt-atomic{color:var(--ink-faint);font-size:13px}.summary-row{align-items:center;gap:10px;display:flex}.summary-ids{min-width:0;font-family:var(--font-glyph);letter-spacing:1.5px;color:var(--ink);word-break:break-all;flex:auto;font-size:19px;line-height:1.6}.think-btn{color:#7c6cf0;cursor:pointer;background:#7c6cf01f;border:none;border-radius:50%;flex:none;justify-content:center;align-items:center;width:30px;height:30px;transition:background .16s,transform .16s,box-shadow .16s;display:inline-flex}.think-btn:hover{background:#7c6cf038;transform:scale(1.06)}.think-btn.open{background:var(--op-bg);color:#fff;box-shadow:0 4px 12px #7c6cf066}.think-btn.placeholder{cursor:default;background:0 0}.think-btn.placeholder:hover{transform:none}.copy-btn{width:30px;height:30px;color:var(--ink-faint);cursor:pointer;background:0 0;border:none;border-radius:9px;flex:none;justify-content:center;align-items:center;transition:background .16s,color .16s;display:inline-flex}.copy-btn:hover{color:#7c6cf0;background:#7c6cf01f}.copy-btn.done{color:#2bb673}.expanded{border-top:1px dashed var(--line);margin-top:6px;padding-top:4px;animation:.28s cubic-bezier(.2,.8,.2,1) both rise}.atomic-note{color:var(--ink-faint);margin:8px 2px 2px;font-size:13px}.glyph.op-inline{color:#6a4ddb;cursor:help;border-radius:5px;padding:0 1px;font-weight:600}.glyph.op-inline:hover{background:#7c6cf029}.glyph.numbered-inline{color:var(--special-ink);cursor:help;background:#ffe9d6b3;border-radius:6px;padding:0 4px;font-size:.86em}.glyph.numbered-inline:hover{background:#ffd6b2f2}.glyph.numbered{background:var(--special-bg);color:var(--special-ink);cursor:help;border-radius:8px;justify-content:center;align-items:center;padding:0 6px;display:inline-flex;box-shadow:inset 0 0 0 1px #b5651d40}.glyph.numbered:hover{background:#ffd6b2f2}.leaf-glyph.num{box-shadow:none;background:0 0;padding:0;font-size:18px}.tooltip .tt-num-glyph{letter-spacing:0;background:linear-gradient(135deg,#f0a060,#f6c08a);font-size:17px}.composer-tools{align-items:center;gap:12px;padding:0 6px 8px;display:flex}.tool-toggle{border:1px solid var(--line);background:var(--glass);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);font:inherit;color:var(--ink-soft);cursor:pointer;border-radius:999px;align-items:center;gap:7px;padding:7px 14px;font-size:13px;transition:all .18s;display:inline-flex}.tool-toggle:hover{box-shadow:var(--shadow-soft);transform:translateY(-1px)}.tool-toggle.on{background:var(--op-bg);color:#fff;border-color:#0000;box-shadow:0 6px 16px #7c6cf059}.tool-note{color:var(--ink-faint);font-size:12px}@media (max-width:560px){.msg-col{max-width:94%}.empty h1{font-size:22px}.summary-ids{font-size:17px}}
