:root{--radius-xs: 6px;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--sidebar-w: 272px;--chat-max: 56rem;--chat-pad-x: clamp(.875rem, 2.5vw, 2rem);--safe-b: env(safe-area-inset-bottom, 0px);--safe-l: env(safe-area-inset-left, 0px);--safe-r: env(safe-area-inset-right, 0px);--font-sans: "Be Vietnam Pro", "Segoe UI", sans-serif;--ease: cubic-bezier(.22, 1, .36, 1);--dur: .16s}@media(min-width:1280px){:root{--chat-max: 64rem}}@media(min-width:1536px){:root{--chat-max: 72rem}}:root,[data-theme=light]{--bg: #f7f9fc;--bg-sidebar: #eef2f7;--bg-sidebar-hover: #e4eaf2;--bg-sidebar-active: #d9e4f2;--bg-surface: #ffffff;--bg-user: #d4e3fc;--bg-composer: #ffffff;--bg-overlay: rgba(15, 23, 42, .4);--text: #0f172a;--text-secondary: #3f4f63;--text-tertiary: #64748b;--text-on-primary: #ffffff;--primary: #155eef;--primary-hover: #1249cc;--primary-soft: #e8f0fe;--primary-muted: #b4c9f5;--danger: #c0392b;--danger-soft: #fdecea;--success: #1570ef;--warning: #b54708;--border: #dde5ef;--border-strong: #c5d0de;--focus: rgba(21, 94, 239, .28);--shadow-composer: 0 4px 20px rgba(15, 23, 42, .06);--shadow-float: 0 8px 28px rgba(15, 23, 42, .08)}[data-theme=dark]{--bg: #0f1419;--bg-sidebar: #0b1015;--bg-sidebar-hover: #171e27;--bg-sidebar-active: #1c2a3d;--bg-surface: #171e27;--bg-user: #243552;--bg-composer: #171e27;--bg-overlay: rgba(0, 0, 0, .55);--text: #eef3f8;--text-secondary: #9aabbd;--text-tertiary: #6f8094;--text-on-primary: #ffffff;--primary: #4c8dff;--primary-hover: #6ba1ff;--primary-soft: rgba(76, 141, 255, .16);--primary-muted: #2a4570;--danger: #f07167;--danger-soft: rgba(240, 113, 103, .14);--success: #4c8dff;--warning: #fdb022;--border: #273140;--border-strong: #3a4a5c;--focus: rgba(76, 141, 255, .35);--shadow-composer: 0 4px 20px rgba(0, 0, 0, .35);--shadow-float: 0 8px 28px rgba(0, 0, 0, .4)}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}html{-webkit-text-size-adjust:100%;text-rendering:optimizeLegibility}body{font-family:var(--font-sans);font-size:15px;line-height:1.55;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}button,input,textarea{font:inherit;color:inherit}button{cursor:pointer;border:none;background:none;padding:0}button:disabled{cursor:not-allowed;opacity:.42}a{color:var(--primary)}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--text-tertiary) 45%,transparent);border-radius:6px}::selection{background:var(--primary-soft);color:var(--text)}.app-shell{display:flex;height:100%;min-height:100dvh;background:var(--bg);color:var(--text);overflow:hidden}.sidebar{width:var(--sidebar-w);flex-shrink:0;display:flex;flex-direction:column;background:var(--bg-sidebar);border-right:1px solid var(--border);z-index:20}.sidebar__brand{display:flex;align-items:center;gap:10px;padding:16px 14px 10px}.sidebar__mark{width:30px;height:30px;border-radius:8px;background:var(--primary-soft);color:var(--primary);display:grid;place-items:center;flex-shrink:0}.sidebar__brand-text{min-width:0;flex:1}.sidebar__brand-name{font-size:.98rem;font-weight:700;letter-spacing:-.015em;line-height:1.25;color:var(--text)}.sidebar__new{margin:2px 10px 10px;display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;border-radius:var(--radius-sm);color:var(--text);font-weight:600;font-size:.9rem;transition:background var(--dur) var(--ease)}.sidebar__new:hover:not(:disabled){background:var(--bg-sidebar-hover)}.sidebar__scroll{flex:1;overflow-y:auto;padding:0 8px 12px}.sidebar__section{margin-bottom:14px}.sidebar__section-head{display:flex;align-items:center;justify-content:space-between;padding-right:4px}.sidebar__section-toggle{display:flex;align-items:center;gap:8px;width:100%;padding:8px 10px;border-radius:var(--radius-sm);font-size:.8rem;font-weight:600;color:var(--text-secondary);text-align:left}.sidebar__section-toggle:hover{background:var(--bg-sidebar-hover);color:var(--text)}.sidebar__section-toggle svg:last-child{margin-left:auto}.sidebar__section-label{padding:6px 10px;font-size:.78rem;font-weight:700;color:var(--text-secondary)}.sidebar__section-action{width:28px;height:28px;border-radius:6px;display:grid;place-items:center;color:var(--text-secondary)}.sidebar__section-action:hover{background:var(--bg-sidebar-hover);color:var(--text)}.sidebar__empty{padding:4px 10px 8px;color:var(--text-secondary);font-size:.8rem;line-height:1.4;opacity:.85}.sidebar__row-wrap{position:relative}.sidebar__row-wrap--nested{padding-left:14px}.sidebar__project{position:relative}.sidebar__item{display:flex;align-items:center;gap:8px;width:100%;text-align:left;padding:8px 8px 8px 10px;border-radius:var(--radius-sm);color:var(--text);transition:background var(--dur) var(--ease),color var(--dur) var(--ease)}.sidebar__item:hover{background:var(--bg-sidebar-hover)}.sidebar__item--active{background:var(--bg-sidebar-active);font-weight:600}.sidebar__item--folder{font-weight:600}.sidebar__item-icon,.sidebar__chev{flex-shrink:0;color:var(--text-secondary)}.sidebar__item--active .sidebar__item-icon{color:var(--primary)}.sidebar__item-title{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.875rem;font-weight:500;color:var(--text)}.sidebar__item-more{opacity:0;width:28px;height:28px;border-radius:6px;display:grid;place-items:center;color:var(--text-tertiary);flex-shrink:0}.sidebar__item:hover .sidebar__item-more,.sidebar__item:focus-within .sidebar__item-more,.sidebar__item-more.is-open{opacity:1}.sidebar__item-more:hover,.sidebar__item-more.is-open{background:var(--bg-surface);color:var(--text)}.sidebar__menu{position:absolute;top:calc(100% - 4px);right:6px;z-index:8;min-width:190px;padding:6px;border-radius:var(--radius-md);border:1px solid var(--border);background:var(--bg-surface);box-shadow:var(--shadow-float);display:flex;flex-direction:column;gap:2px}.sidebar__menu button{display:flex;align-items:center;gap:8px;width:100%;text-align:left;padding:8px 10px;border-radius:7px;font-size:.82rem;color:var(--text)}.sidebar__menu button:hover{background:var(--bg-sidebar-hover)}.sidebar__menu button.is-active{background:var(--primary-soft);color:var(--primary)}.sidebar__menu button.is-danger{color:var(--danger)}.sidebar__menu-sep{height:1px;background:var(--border);margin:4px 0}.sidebar__menu-label{padding:4px 10px 2px;font-size:.68rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--text-tertiary)}.sidebar__more-link{display:block;width:100%;text-align:left;padding:8px 12px;font-size:.8rem;font-weight:600;color:var(--text-secondary);border-radius:var(--radius-sm)}.sidebar__more-link:hover{color:var(--text);background:var(--bg-sidebar-hover)}.sidebar__footer{padding:10px 12px calc(12px + var(--safe-b));border-top:1px solid var(--border)}.sidebar__user{display:flex;align-items:center;gap:10px;width:100%;padding:8px;border-radius:var(--radius-sm)}.sidebar__avatar{width:36px;height:36px;border-radius:50%;background:var(--primary);color:var(--text-on-primary);display:grid;place-items:center;font-size:.75rem;font-weight:700;letter-spacing:.02em;flex-shrink:0}.sidebar__user-meta{min-width:0;flex:1}.sidebar__user-name{font-size:.875rem;font-weight:700;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}.sidebar__user-role{margin-top:2px;font-size:.75rem;font-weight:500;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-settings{position:relative}.header-settings__panel{position:absolute;top:calc(100% + 6px);right:0;width:max-content;min-width:260px;padding:8px;border-radius:var(--radius-md);border:1px solid var(--border);background:var(--bg-surface);box-shadow:var(--shadow-float);z-index:40}.header-settings__label{font-size:.68rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-secondary);padding:4px 8px 8px}.header-settings__opt{display:flex;align-items:center;gap:8px;width:100%;height:36px;padding:0 12px;border-radius:var(--radius-sm);font-size:.875rem;font-weight:500;color:var(--text);text-align:left;white-space:nowrap}.header-settings__opt:hover{background:var(--bg-sidebar-hover)}.header-settings__opt.is-active{background:var(--primary-soft);color:var(--primary);font-weight:600}.header-settings__opt.is-danger{color:var(--danger)}.header-settings__opt.is-danger:hover{background:var(--danger-soft)}.header-settings__opt--sub{padding-left:28px;font-size:.84rem;white-space:nowrap}.header-settings__sub{display:flex;flex-direction:column;gap:2px;margin:2px 0 4px}.header-settings__hint{margin:0;padding:6px 10px 8px 28px;font-size:.78rem;color:var(--text-secondary)}.header-settings__sep{height:1px;background:var(--border);margin:4px 0}.icon-btn.is-active{background:var(--primary-soft);color:var(--primary)}.sidebar-backdrop{display:none}.sidebar__close-mobile{display:none;color:var(--text-secondary)}.main{flex:1;min-width:0;display:flex;flex-direction:column;position:relative;background:var(--bg);overflow-x:hidden}.main__header{position:absolute;top:0;left:0;right:0;z-index:12;display:flex;align-items:center;justify-content:flex-end;height:52px;padding:0 10px;pointer-events:none;background:transparent;border-bottom:1px solid transparent}.main__header>*{pointer-events:auto}.main__menu{display:none;width:36px;height:36px;border-radius:10px;place-items:center;color:var(--text-secondary);flex-shrink:0}.main__menu:hover{background:var(--bg-sidebar-hover);color:var(--text)}.main__rail{display:flex;flex-direction:row;align-items:center;gap:2px;margin-left:auto}.icon-btn{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;color:var(--text-secondary);transition:background var(--dur) var(--ease),color var(--dur) var(--ease)}.icon-btn:hover:not(:disabled){background:var(--bg-sidebar-hover);color:var(--text)}.icon-btn--danger:hover:not(:disabled){background:var(--danger-soft);color:var(--danger)}.chat-stage{flex:1;min-height:0;overflow-x:hidden;overflow-y:auto}.chat-stage__inner{width:min(100%,var(--chat-max));margin:0 auto;padding:3.25rem max(var(--chat-pad-x),var(--safe-r)) 20px max(var(--chat-pad-x),var(--safe-l));min-height:100%;display:flex;flex-direction:column;box-sizing:border-box}.chat-stage__inner--empty{justify-content:center}.empty{display:flex;flex-direction:column;align-items:center;text-align:center;padding:24px 8px 32px;min-height:calc(100dvh - 140px);justify-content:center;animation:fade-up .4s var(--ease) both}.empty__icon{width:40px;height:40px;border-radius:10px;background:var(--primary-soft);color:var(--primary);display:grid;place-items:center;margin-bottom:18px}.empty__hello{margin:0 0 6px;font-size:1.5rem;font-weight:700;letter-spacing:-.02em;color:var(--text)}.empty__lead{margin:0 0 8px;font-size:1rem;font-weight:500;color:var(--text-secondary)}.empty__tags{margin:0 0 28px;font-size:.82rem;color:var(--text-tertiary);font-weight:500}.empty__suggestions{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;width:min(100%,48rem)}.empty__chip{display:inline-flex;align-items:center;gap:8px;padding:9px 14px;border-radius:999px;border:1px solid var(--border);background:var(--bg-surface);color:var(--text);font-size:.84rem;font-weight:500;transition:border-color var(--dur) var(--ease),background var(--dur) var(--ease),color var(--dur) var(--ease)}.empty__chip:hover{border-color:var(--primary);background:var(--primary-soft);color:var(--primary)}.empty__chip-icon{color:var(--primary);display:grid;place-items:center;flex-shrink:0}.msg{display:flex;gap:12px;padding:18px 0;width:100%;box-sizing:border-box;animation:fade-up .3s var(--ease) both}.msg--user{flex-direction:row;justify-content:flex-end;margin-left:auto}.msg__avatar{width:28px;height:28px;border-radius:8px;flex-shrink:0;margin-top:2px;display:grid;place-items:center}.msg--assistant .msg__avatar{background:var(--primary-soft);color:var(--primary)}.msg__body{min-width:0;max-width:100%;flex:1}.msg__content{flex:1;min-width:0;display:flex;align-items:flex-start;gap:16px}.msg--user .msg__content{flex:0 1 auto;width:fit-content;max-width:min(85%,42rem);margin-left:auto;justify-content:flex-end}.msg__content--split .msg__body{flex:1;min-width:0}.msg__rail{width:min(240px,32%);flex-shrink:0;position:sticky;top:12px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-surface)}.msg__related-label,.msg__sources-label{font-size:.75rem;font-weight:700;color:var(--text-tertiary);margin-bottom:8px}.msg__related{display:flex;flex-direction:column;gap:6px}.msg__related-btn{width:100%;padding:8px 10px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg);font-size:.8rem;font-weight:500;color:var(--text);text-align:left;line-height:1.35;overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}.msg__related-btn:hover:not(:disabled){border-color:var(--primary);background:var(--primary-soft);color:var(--primary)}.msg--user .msg__body{display:flex;flex-direction:column;align-items:flex-end;flex:0 1 auto;width:100%;max-width:100%}.msg__name{font-size:.75rem;font-weight:700;color:var(--primary);margin-bottom:6px}.msg__bubble{font-size:.95rem;line-height:1.65;word-break:break-word}.msg--assistant .msg__bubble{text-align:justify;text-justify:inter-word;-webkit-hyphens:auto;hyphens:auto}.msg--user .msg__bubble{background:var(--bg-user);padding:10px 14px;border-radius:14px 14px 4px;white-space:pre-wrap;color:var(--text);text-align:left;max-width:100%;box-sizing:border-box}.msg__bubble--error{color:var(--danger)}.msg__label{display:inline-block;font-size:.72rem;font-weight:700;color:var(--primary);margin-bottom:6px}.md{color:var(--text)}.md>*:first-child{margin-top:0}.md>*:last-child{margin-bottom:0}.md p{margin:0 0 .8em}.md h1,.md h2,.md h3{font-weight:700;letter-spacing:-.01em;line-height:1.3;margin:1em 0 .4em}.md h1{font-size:1.15rem}.md h2{font-size:1.05rem}.md h3{font-size:.98rem}.md ul,.md ol{margin:0 0 .8em;padding-left:1.3em}.md li{margin:.22em 0}.md strong{font-weight:600}.md a{text-decoration:underline;text-underline-offset:2px}.md code{font-family:ui-monospace,Cascadia Code,monospace;font-size:.88em;background:var(--bg-sidebar);padding:.1em .35em;border-radius:4px}.md pre{background:#17211f;color:#eef3f1;padding:12px 14px;border-radius:var(--radius-sm);overflow-x:auto;margin:0 0 .8em}.md pre code{background:none;padding:0;color:inherit}.md blockquote{margin:0 0 .8em;padding:0 0 0 12px;border-left:3px solid var(--primary);color:var(--text-secondary)}.md table{width:100%;max-width:100%;border-collapse:collapse;margin:0 0 .8em;font-size:.88rem;display:block;overflow-x:auto}.md th,.md td{border:1px solid var(--border);padding:7px 9px;text-align:left}.md th{background:var(--bg-sidebar);font-weight:600}.msg__meta{margin-top:12px;display:flex;flex-direction:column;gap:10px}.msg__dvc-link{display:inline-flex;align-items:center;gap:.35rem;font-size:.85rem;font-weight:600;color:#1d4ed8;text-decoration:none;margin-bottom:.35rem}.msg__dvc-link:hover{color:#1e40af;text-decoration:underline}.msg__counter{display:inline-flex;align-items:center;gap:6px;padding:7px 11px;border-radius:var(--radius-sm);background:var(--primary-soft);color:var(--primary);font-size:.82rem;font-weight:600;width:fit-content}.msg__sources{font-size:.8rem;color:var(--text-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-surface)}.msg__sources summary{cursor:pointer;padding:8px 12px;font-weight:600;list-style:none}.msg__sources summary::-webkit-details-marker{display:none}.msg__sources[open] summary{border-bottom:1px solid var(--border)}.msg__sources ul{margin:0;padding:10px 12px 12px 26px}.msg__sources li+li{margin-top:8px}.msg__sources p{margin:3px 0 0;color:var(--text-tertiary)}.typing{display:inline-flex;gap:5px;padding:4px 0}.typing span{width:5px;height:5px;border-radius:50%;background:var(--primary);animation:typing-bounce 1.1s ease-in-out infinite}.typing span:nth-child(2){animation-delay:.15s}.typing span:nth-child(3){animation-delay:.3s}.msg--processing{padding-top:8px;padding-bottom:8px}.processing{display:inline-flex;align-items:center;gap:10px;min-height:1.65em;color:var(--text-secondary);font-size:.9rem;font-weight:500}.processing__dots{display:inline-flex;gap:4px;flex-shrink:0}.processing__dots span{width:5px;height:5px;border-radius:50%;background:var(--primary);opacity:.85;animation:typing-bounce 1.1s ease-in-out infinite}.processing__dots span:nth-child(2){animation-delay:.15s}.processing__dots span:nth-child(3){animation-delay:.3s}.processing__text{animation:processing-fade .35s var(--ease) both}@keyframes processing-fade{0%{opacity:0;transform:translateY(3px)}to{opacity:1;transform:translateY(0)}}.field-picker{width:min(100%,var(--chat-max));margin:0 auto;padding:0 max(var(--chat-pad-x),var(--safe-r)) 10px max(var(--chat-pad-x),var(--safe-l));box-sizing:border-box}.field-picker__card{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-surface);padding:12px 14px 14px}.field-picker__title{display:flex;align-items:center;gap:8px;width:100%;margin:0 0 10px;padding:0;border:none;background:none;font:inherit;font-size:.92rem;font-weight:650;line-height:1.35;color:var(--text);text-align:left;cursor:default;pointer-events:none}.field-picker__title-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.field-picker__chevron{flex-shrink:0;color:var(--text-tertiary);display:none;transition:transform var(--dur) var(--ease)}.field-picker.is-open .field-picker__chevron{transform:rotate(180deg)}.field-picker__actions{display:flex;flex-wrap:wrap;gap:6px}.field-picker__btn{padding:7px 11px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg);font-size:.78rem;font-weight:600;color:var(--text-secondary)}.field-picker__btn:hover:not(:disabled){border-color:var(--primary);color:var(--primary);background:var(--primary-soft)}.field-picker__search-link{display:inline-flex;margin-top:12px;padding:0;border:none;background:none;font-size:.84rem;font-weight:600;color:#1d4ed8;text-decoration:underline;text-underline-offset:3px;cursor:pointer}.field-picker__search-link:hover:not(:disabled){color:#1e40af}.field-picker__search-link:disabled{opacity:.5;cursor:not-allowed}.msg__search-other{display:inline-flex;align-items:center;padding:0;border:none;background:none;font-size:.84rem;font-weight:600;color:#1d4ed8;text-decoration:underline;text-underline-offset:3px;width:fit-content;cursor:pointer}.msg__search-other:hover:not(:disabled){color:#1e40af}.msg__search-other:disabled{opacity:.5;cursor:not-allowed}.proc-search{position:fixed;inset:0;z-index:80;display:grid;place-items:center;padding:16px;background:var(--bg-overlay)}.proc-search__dialog{width:min(100%,28rem);max-height:min(80dvh,32rem);display:flex;flex-direction:column;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-float);overflow:hidden}.proc-search__head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:14px 14px 8px}.proc-search__title{margin:0;font-size:1rem;font-weight:700;color:var(--text)}.proc-search__close{width:32px;height:32px;border-radius:8px;display:grid;place-items:center;color:var(--text-secondary)}.proc-search__close:hover{background:var(--bg-sidebar-hover);color:var(--text)}.proc-search__field{display:flex;align-items:center;gap:8px;margin:0 14px 10px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg);color:var(--text-secondary)}.proc-search__field:focus-within{border-color:var(--border-strong);box-shadow:0 0 0 3px var(--focus)}.proc-search__field input{flex:1;min-width:0;border:none;background:transparent;color:var(--text);font:inherit;font-size:.92rem;outline:none}.proc-search__body{flex:1;min-height:0;overflow-y:auto;padding:0 8px 12px}.proc-search__hint{margin:8px 6px;font-size:.84rem;color:var(--text-tertiary)}.proc-search__hint--error{color:var(--danger)}.proc-search__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.proc-search__item{width:100%;display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:10px 12px;border-radius:var(--radius-sm);border:1px solid transparent;background:transparent;text-align:left;color:var(--text)}.proc-search__item:hover:not(:disabled){background:var(--primary-soft);border-color:var(--border)}.proc-search__item-name{font-size:.88rem;font-weight:600;line-height:1.35}.proc-search__item-code{font-size:.75rem;color:var(--text-tertiary);font-weight:500}.composer-wrap{flex-shrink:0;padding:0 max(var(--chat-pad-x),var(--safe-r)) calc(16px + var(--safe-b)) max(var(--chat-pad-x),var(--safe-l));width:min(100%,var(--chat-max));margin:0 auto;box-sizing:border-box}.composer-error{margin:0 0 8px;padding:8px 12px;border-radius:var(--radius-sm);background:var(--danger-soft);color:var(--danger);font-size:.84rem;font-weight:500}.composer{position:relative;display:flex;flex-direction:column;gap:6px;padding:14px 14px 10px;background:var(--bg-composer);border:1px solid var(--border);border-radius:28px;box-shadow:var(--shadow-composer);transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}.composer--search{border-color:#93c5fd}.composer__suggest{max-height:220px;overflow-y:auto;margin:0 0 4px;padding:4px 2px 8px;border-bottom:1px solid var(--border)}.composer__suggest-hint{margin:0;padding:8px 10px;font-size:.82rem;color:var(--text-secondary)}.composer__suggest-hint--error{color:var(--danger)}.composer__suggest-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.composer__suggest-item{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;padding:8px 10px;border:none;border-radius:var(--radius-sm);background:transparent;text-align:left;cursor:pointer}.composer__suggest-item:hover:not(:disabled){background:var(--primary-soft)}.composer__suggest-name{font-size:.88rem;font-weight:600;color:var(--text);line-height:1.3}.composer__suggest-code{font-size:.75rem;color:var(--text-tertiary);font-weight:500}.composer:focus-within{border-color:var(--border-strong);box-shadow:var(--shadow-composer),0 0 0 3px var(--focus)}.composer__input{width:100%;border:none;outline:none;resize:none;background:transparent;max-height:160px;min-height:28px;padding:2px 8px 4px;line-height:1.5;font-size:.98rem;color:var(--text)}.composer__input::placeholder{color:var(--text-tertiary)}.composer__bar{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:2px 2px 2px 4px}.composer__plus{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;color:var(--text-secondary);transition:background var(--dur) var(--ease),color var(--dur) var(--ease)}.composer__plus:hover:not(:disabled){background:var(--bg-sidebar);color:var(--text)}.composer__right{display:flex;align-items:center;gap:4px}.composer__mode{position:relative}.composer__mode-btn{display:inline-flex;align-items:center;gap:4px;height:34px;max-width:min(52vw,220px);padding:0 10px;border-radius:999px;font-size:.84rem;font-weight:600;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:background var(--dur) var(--ease),color var(--dur) var(--ease)}.composer__mode-btn:hover:not(:disabled){background:var(--bg-sidebar);color:var(--text)}.composer__mode-menu{position:absolute;right:0;bottom:calc(100% + 6px);min-width:max-content;width:max-content;max-width:min(92vw,320px);padding:6px;border-radius:12px;border:1px solid var(--border);background:var(--bg-surface);box-shadow:var(--shadow-float);z-index:6;display:flex;flex-direction:column;gap:2px}.composer__mode-menu button{text-align:left;padding:8px 12px;border-radius:8px;font-size:.84rem;font-weight:500;color:var(--text);white-space:nowrap}.composer__mode-menu button:hover,.composer__mode-menu button.is-active{background:var(--primary-soft);color:var(--primary)}.composer__mic{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;color:var(--text-secondary);transition:background var(--dur) var(--ease),color var(--dur) var(--ease)}.composer__mic:hover:not(:disabled){background:var(--bg-sidebar);color:var(--text)}.composer__mic.is-active{background:var(--primary-soft);color:var(--primary)}.composer__primary{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--primary);color:var(--text-on-primary);transition:background var(--dur) var(--ease),transform var(--dur) var(--ease)}.composer__primary:hover:not(:disabled){background:var(--primary-hover)}.composer__primary:active:not(:disabled){transform:scale(.96)}.composer__primary:disabled{opacity:.4}.composer__primary.is-active{box-shadow:0 0 0 3px var(--primary-soft)}.has-tip{position:relative}.has-tip:after{content:attr(data-tooltip);position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%) translateY(4px);padding:6px 10px;border-radius:8px;background:#0f172a;color:#f8fafc;font-size:.75rem;font-weight:500;line-height:1.3;white-space:nowrap;pointer-events:none;opacity:0;visibility:hidden;transition:opacity .12s ease,transform .12s ease,visibility .12s ease;z-index:30;box-shadow:0 4px 14px #0f172a33}.has-tip:before{content:"";position:absolute;bottom:calc(100% + 2px);left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:#0f172a;pointer-events:none;opacity:0;visibility:hidden;transition:opacity .12s ease,visibility .12s ease;z-index:30}.has-tip:hover:after,.has-tip:hover:before,.has-tip:focus-visible:after,.has-tip:focus-visible:before{opacity:1;visibility:visible}.has-tip:hover:after,.has-tip:focus-visible:after{transform:translate(-50%) translateY(0)}[data-theme=dark] .has-tip:after{background:#e2e8f0;color:#0f172a}[data-theme=dark] .has-tip:before{border-top-color:#e2e8f0}.voice-overlay{position:absolute;inset:0;z-index:30;display:flex;flex-direction:column;background:var(--bg);animation:fade-in .22s var(--ease) both}.voice-overlay__top{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--border)}.voice-overlay__badge{display:inline-flex;align-items:center;gap:8px;font-size:.84rem;font-weight:600;color:var(--text-secondary)}.voice-overlay__dot{width:8px;height:8px;border-radius:50%;background:var(--text-tertiary)}.voice-overlay__dot.is-live{background:var(--success);box-shadow:0 0 0 4px var(--primary-soft);animation:pulse-soft 1.6s ease-in-out infinite}.voice-overlay__dot.is-busy{background:var(--warning)}.voice-overlay__body{flex:1;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px;gap:24px}.voice-ring{width:120px;height:120px;border-radius:50%;display:grid;place-items:center;position:relative}.voice-ring__halo{position:absolute;inset:0;border-radius:50%;border:1.5px solid var(--primary);transform:scale(calc(1 + var(--level, 0) * .3));opacity:calc(.2 + var(--level, 0) * .5);transition:transform 80ms linear,opacity 80ms linear}.voice-ring__core{width:72px;height:72px;border-radius:50%;background:var(--primary-soft);color:var(--primary);display:grid;place-items:center;z-index:1}.voice-overlay__status{font-size:1.2rem;font-weight:700;text-align:center;letter-spacing:-.015em}.voice-overlay__sub{margin-top:6px;font-size:.9rem;color:var(--text-secondary);text-align:center;max-width:22rem}.voice-overlay__stream{width:min(100%,var(--chat-max));max-height:36vh;overflow-y:auto;padding:4px 8px;text-align:left}.voice-overlay__error{color:var(--danger);font-size:.9rem;text-align:center}.voice-overlay__footer{padding:14px 20px calc(20px + var(--safe-b));display:flex;justify-content:center;gap:10px;border-top:1px solid var(--border)}.voice-overlay__end{height:42px;padding:0 20px;border-radius:10px;background:var(--primary);color:var(--text-on-primary);font-weight:600;font-size:.88rem}.voice-overlay__end:hover{background:var(--primary-hover)}@keyframes fade-up{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes typing-bounce{0%,60%,to{transform:translateY(0);opacity:.4}30%{transform:translateY(-3px);opacity:1}}@keyframes pulse-soft{0%,to{opacity:1}50%{opacity:.6}}@media(max-width:860px){.sidebar{position:fixed;inset:0 auto 0 0;transform:translate(-105%);transition:transform .26s var(--ease);box-shadow:var(--shadow-float)}.sidebar.is-open{transform:translate(0)}.sidebar-backdrop{display:block;position:fixed;inset:0;background:var(--bg-overlay);z-index:15;opacity:0;pointer-events:none;transition:opacity .26s var(--ease)}.sidebar-backdrop.is-open{opacity:1;pointer-events:auto}.sidebar__close-mobile{display:grid;width:32px;height:32px;place-items:center;border-radius:7px}.main__header{position:relative;flex-shrink:0;justify-content:space-between;height:calc(52px + env(safe-area-inset-top,0px));padding:env(safe-area-inset-top,0px) 10px 0;background:var(--bg);border-bottom:1px solid var(--border);box-shadow:0 1px #0f172a0a;pointer-events:auto}.main__menu{display:grid}.chat-stage__inner{padding-top:16px;padding-left:max(var(--chat-pad-x),var(--safe-l));padding-right:max(var(--chat-pad-x),var(--safe-r))}.composer__mode-btn{padding:0 8px;font-size:.8rem}.msg--assistant,.msg--assistant .msg__content,.msg--assistant .msg__body,.msg--assistant .msg__bubble{width:100%;max-width:100%}.msg--assistant .msg__bubble{text-align:left;text-justify:auto;-webkit-hyphens:manual;hyphens:manual}.msg--user .msg__content{max-width:min(88%,42rem)}.msg--user .msg__body{max-width:100%}.field-picker__card{padding:8px 10px}.field-picker__title{margin:0;padding:6px 4px;pointer-events:auto;cursor:pointer;border-radius:var(--radius-sm)}.field-picker__title:hover,.field-picker__title:focus-visible{background:var(--bg-sidebar-hover)}.field-picker__chevron{display:block}.field-picker:not(.is-open) .field-picker__actions{display:none}.field-picker.is-open .field-picker__actions{display:flex;margin-top:10px;padding-top:10px;border-top:1px solid var(--border)}.md pre,.md table{max-width:100%}.empty__suggestions{width:100%;padding:0 2px}.empty__chip{max-width:100%}.msg__content--split{flex-direction:column}.msg__rail{width:100%;position:static}.msg__related{flex-direction:row;flex-wrap:wrap}.msg__related-btn{width:auto;max-width:100%;-webkit-line-clamp:2}}@media(max-width:480px){:root{--chat-pad-x: .75rem;--chat-max: 100%}.msg{gap:10px;padding:14px 0}.msg__avatar{width:24px;height:24px}.msg--user .msg__content{max-width:88%}.msg--user .msg__bubble{padding:9px 12px;font-size:.92rem}.composer{border-radius:20px;padding:12px 12px 8px}.empty__hello{font-size:1.28rem}.empty{padding-left:0;padding-right:0;min-height:calc(100dvh - 160px)}}@media(min-width:861px)and (max-width:1100px){:root{--sidebar-w: 240px}}
