:root{--color-bg: #FAFAFA;--color-surface: #FFFFFF;--color-surface-2: #F4F4F5;--color-border: #E4E4E7;--color-border-strong: #D4D4D8;--color-text: #18181B;--color-text-secondary: #71717A;--color-text-faint: #737373;--color-accent: #4F46E5;--color-accent-hover: #4338CA;--color-accent-soft: #EEF2FF;--color-accent-border: #C7D2FE;--color-success: #10B981;--color-error: #EF4444;--color-error-soft: #FEF2F2;--color-error-border: #FECACA;--color-warning: #F59E0B;--color-citation-bg: #EEF2FF;--color-citation-text: #4338CA;--font-sans: "Inter", system-ui, -apple-system, sans-serif;--text-body: 14px;--text-secondary: 13px;--text-caption: 12px;--text-heading: 16px;--text-title: 20px;--leading: 1.6;--leading-tight: 1.3;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 12px;--shadow-modal: 0 4px 12px rgba(0, 0, 0, .08);--shadow-toast: 0 4px 12px rgba(0, 0, 0, .1);--shadow-pop: 0 1px 2px rgba(0, 0, 0, .06);--transition: .18s ease-out;--sidebar-width: 300px;--header-height: 56px}*,*:before,*:after{box-sizing:border-box}*{margin:0}html,body{height:100%;overflow:hidden}body{font-family:var(--font-sans);font-size:var(--text-body);line-height:var(--leading);color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}button,input,textarea,select{font:inherit;color:inherit}a{color:inherit}img,svg{display:block}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}input:focus-visible,textarea:focus-visible,select:focus-visible{outline:none}.app-header{height:var(--header-height);display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:0 var(--space-4);background:var(--color-surface);border-bottom:1px solid var(--color-border);position:relative;z-index:30}.app-header__brand{display:flex;align-items:center;gap:var(--space-3);min-width:0}.app-header__logo{width:30px;height:30px;flex:none;display:grid;place-items:center;background:var(--color-accent);border-radius:9px}.app-header__logo svg{width:18px;height:18px}.app-header__text{display:flex;flex-direction:column;line-height:var(--leading-tight);min-width:0}.app-header__name{font-size:var(--text-heading);font-weight:600;letter-spacing:-.01em}.app-header__tagline{font-size:var(--text-caption);color:var(--color-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.app-header__actions{margin-left:auto;display:flex;align-items:center;gap:var(--space-2)}.app-shell{display:grid;grid-template-columns:var(--sidebar-width) 1fr;height:calc(100vh - var(--header-height));height:calc(100dvh - var(--header-height));overflow:hidden;transition:grid-template-columns var(--transition)}.sidebar{background:var(--color-surface);border-right:1px solid var(--color-border);overflow-y:auto;padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-4)}.chat-area{display:flex;flex-direction:column;min-width:0;min-height:0;height:100%}.sidebar-backdrop{display:none}@media(max-width:640px){.app-shell{grid-template-columns:1fr}.sidebar{position:fixed;top:var(--header-height);bottom:0;left:0;width:min(340px,88vw);z-index:50;transform:translate(-105%);transition:transform var(--transition);box-shadow:var(--shadow-modal)}.sidebar.is-open{transform:translate(0)}.sidebar-backdrop{display:block;position:fixed;top:var(--header-height);right:0;bottom:0;left:0;background:#18181b66;z-index:40;opacity:0;visibility:hidden;transition:opacity var(--transition),visibility var(--transition)}.sidebar-backdrop.is-open{opacity:1;visibility:visible}.chat-area{position:relative;z-index:41}.app-header__tagline{display:none}}@media(min-width:641px){.app-shell.is-collapsed{grid-template-columns:0 1fr}.app-shell.is-collapsed .sidebar{visibility:hidden;border-right-width:0}}.settings-drawer{position:fixed;top:var(--header-height);right:0;bottom:0;width:min(360px,88vw);z-index:50;background:var(--color-surface);border-left:1px solid var(--color-border);display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-4);overflow-y:auto;transform:translate(105%);visibility:hidden;transition:transform var(--transition),visibility var(--transition);box-shadow:var(--shadow-modal)}.settings-drawer.is-open{transform:translate(0);visibility:visible}.settings-drawer__header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.settings-drawer__title{font-size:var(--text-heading);font-weight:600}.settings-backdrop{position:fixed;top:var(--header-height);right:0;bottom:0;left:0;background:#18181b66;z-index:40;opacity:0;visibility:hidden;transition:opacity var(--transition),visibility var(--transition)}.settings-backdrop.is-open{opacity:1;visibility:visible}.panel{position:relative;display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4);border-radius:var(--radius-md);background:var(--color-surface);border:1px solid var(--color-border);box-shadow:var(--shadow-pop);transition:border-color var(--transition)}.panel:focus-within{border-color:var(--color-border-strong)}.panel__header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);padding-bottom:var(--space-2)}.panel__title{position:relative;margin:0;padding-left:var(--space-3);font-size:var(--text-secondary);font-weight:700;line-height:1.3;letter-spacing:.02em;text-transform:uppercase;color:var(--color-text)}.panel__title:before{content:"";position:absolute;left:0;top:.15em;bottom:.15em;width:3px;border-radius:999px;background:var(--color-accent)}.panel__divider{height:1px;background:var(--color-border);flex:none}.materi-input{display:flex;flex-direction:column;gap:var(--space-3)}.panel--loading:after{content:"";position:absolute;inset:0 0 auto;height:3px;border-radius:var(--radius-md) var(--radius-md) 0 0;background:linear-gradient(90deg,transparent,var(--color-accent),transparent);transform:translate(-100%);animation:panel-loading-shimmer 1.4s ease-in-out infinite}@keyframes panel-loading-shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}@media(prefers-reduced-motion:reduce){.panel--loading:after{animation:none;transform:translate(0);opacity:.5}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);height:36px;padding:0 var(--space-4);border:1px solid transparent;border-radius:var(--radius-sm);font-size:var(--text-secondary);font-weight:500;cursor:pointer;white-space:nowrap;transition:background var(--transition),border-color var(--transition),color var(--transition),opacity var(--transition),transform var(--transition)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:disabled:active{transform:none}.btn--primary{background:var(--color-accent);color:#fff}.btn--primary:hover:not(:disabled){background:var(--color-accent-hover)}.btn--secondary{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border-strong)}.btn--secondary:hover:not(:disabled){background:var(--color-surface-2)}.btn--ghost{background:transparent;color:var(--color-text-secondary)}.btn--ghost:hover:not(:disabled){background:var(--color-surface-2);color:var(--color-text)}.btn--danger{background:var(--color-surface);color:var(--color-error);border-color:var(--color-error-border)}.btn--danger:hover:not(:disabled){background:var(--color-error-soft)}.btn--icon{width:36px;padding:0}.btn--sm{height:30px;padding:0 var(--space-3);font-size:var(--text-caption)}.btn svg{width:16px;height:16px;flex:none}.msg__actions{display:flex;align-items:center;gap:var(--space-2);width:100%;margin-top:var(--space-1)}.msg--model .msg__actions{justify-content:flex-start}.msg--user .msg__actions{justify-content:flex-end}.msg__action{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:1px solid transparent;border-radius:999px;background:transparent;color:var(--color-text-secondary);cursor:pointer;transition:background var(--transition),color var(--transition),border-color var(--transition)}.msg__action svg{width:18px;height:18px;flex:none}.msg__action:hover:not(:disabled){background:var(--color-accent-soft);color:var(--color-accent);border-color:var(--color-accent-border)}.msg__action[aria-label*=Hapu]:hover:not(:disabled){background:var(--color-error-soft);color:var(--color-error);border-color:var(--color-error-border)}.msg__action:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}.msg__action[disabled]{opacity:.4;cursor:not-allowed}@media(hover:hover)and (pointer:fine){.msg__actions{opacity:0;visibility:hidden;height:0;margin-top:0;overflow:hidden;pointer-events:none;transition:opacity var(--transition),transform var(--transition),height var(--transition),margin-top var(--transition),visibility 0s linear var(--transition)}.msg:hover>.msg__col .msg__actions,.msg.is-actions-open .msg__actions,.msg__actions:focus-within{opacity:1;visibility:visible;height:auto;margin-top:var(--space-1);pointer-events:auto;transform:translateY(0);transition:opacity var(--transition),transform var(--transition),height var(--transition),margin-top var(--transition),visibility 0s}}@media(hover:none)and (pointer:coarse){.msg__actions{opacity:1;transform:none;pointer-events:auto}}.msg__edit{display:block;width:100%;box-sizing:border-box;min-height:3.5rem;padding:var(--space-2) var(--space-3);font-family:inherit;font-size:var(--text-body);line-height:1.5;color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);resize:none;max-height:160px;outline:none;transition:border-color var(--transition),box-shadow var(--transition)}.msg__edit:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-soft)}.dropzone{display:flex;align-items:center;gap:var(--space-3);width:100%;min-height:56px;padding:var(--space-2) var(--space-3);border:1.5px dashed var(--color-border-strong);border-radius:var(--radius-sm);color:var(--color-text-secondary);cursor:pointer;text-align:left;transition:background var(--transition),border-color var(--transition),color var(--transition)}.dropzone:hover{border-color:var(--color-accent-border);background:var(--color-surface-2);color:var(--color-text)}.dropzone:focus-visible{border-color:var(--color-accent);background:var(--color-surface-2);color:var(--color-text);outline:2px solid var(--color-accent);outline-offset:2px}.dropzone--active{border-color:var(--color-accent);background:var(--color-accent-soft);color:var(--color-accent)}.dropzone__icon{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;flex:none;border-radius:50%;background:var(--color-surface-2);color:var(--color-text-secondary)}.dropzone--active .dropzone__icon{background:var(--color-accent-soft);color:var(--color-accent)}.dropzone__icon svg{width:18px;height:18px}.dropzone__body{display:flex;flex-direction:column;gap:2px;min-width:0}.dropzone__title{font-size:var(--text-secondary);font-weight:600;line-height:1.35;color:var(--color-text)}.dropzone__meta{font-size:var(--text-caption);line-height:1.4;color:var(--color-text-secondary)}.file-chips{display:flex;flex-wrap:wrap;gap:var(--space-2);margin:0;padding:0;list-style:none}.file-chip{display:inline-flex;align-items:center;gap:var(--space-2);max-width:100%;padding:var(--space-1) var(--space-2);border:1px solid var(--color-accent-border);border-radius:var(--radius-sm);background:var(--color-accent-soft)}.file-chip__name{font-size:var(--text-caption);font-weight:600;color:var(--color-text);max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-chip__meta{font-size:var(--text-caption);color:var(--color-text-secondary);white-space:nowrap}.file-chip__del{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;flex:none;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-secondary);cursor:pointer;transition:background var(--transition),color var(--transition)}.file-chip__del:hover,.file-chip__del:focus-visible{background:var(--color-error-soft);color:var(--color-error);outline:none}.file-chip__del svg{width:12px;height:12px}.field{display:flex;flex-direction:column;gap:var(--space-2)}.field__label{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);font-size:var(--text-secondary);font-weight:500}.field__hint{font-size:var(--text-caption);color:var(--color-text-secondary);line-height:1.5}.field__hint a{color:var(--color-accent);text-decoration:underline;text-underline-offset:2px}.input,.select{width:100%;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--text-secondary);transition:border-color var(--transition),box-shadow var(--transition)}.input{height:36px;padding:0 var(--space-3)}.input::placeholder{color:var(--color-text-faint)}.input:focus,.select:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-soft)}.input-wrap{position:relative}.input-wrap .input{padding-right:40px;font-family:var(--font-sans);letter-spacing:.02em}.input-wrap__btn{position:absolute;top:50%;right:4px;transform:translateY(-50%);width:30px;height:30px;display:grid;place-items:center;border:none;background:transparent;border-radius:var(--radius-sm);color:var(--color-text-secondary);cursor:pointer;transition:background var(--transition),color var(--transition)}.input-wrap__btn:hover{background:var(--color-surface-2);color:var(--color-text)}.input-wrap__btn svg{width:16px;height:16px}.provider-list{list-style:none;display:flex;flex-direction:column;gap:var(--space-2);margin-top:0;padding:0}.provider-list__bar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);margin-top:var(--space-3);margin-bottom:var(--space-2)}.provider-list__title{font-size:var(--text-secondary);font-weight:500;color:var(--color-text)}.provider-item{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-2)}.provider-item__main{display:flex;flex-direction:column;gap:2px;min-width:0}.provider-item__name{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-secondary);font-weight:600;color:var(--color-text);overflow-wrap:anywhere}.provider-item__badge{font-size:11px;font-weight:600;letter-spacing:.02em;text-transform:uppercase;color:var(--color-text-secondary);background:var(--color-surface);border:1px solid var(--color-border);border-radius:999px;padding:1px 6px}.provider-item__url{font-size:var(--text-caption);color:var(--color-text-secondary);overflow-wrap:anywhere}.provider-item__keywrap{position:relative}.provider-item__key{width:100%;height:30px;padding:0 34px 0 var(--space-2);font-family:var(--font-sans);font-size:var(--text-caption);color:var(--color-text-secondary);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm)}.provider-item__key:focus{outline:none;border-color:var(--color-border-strong)}.provider-item__toggle{position:absolute;top:50%;right:2px;transform:translateY(-50%);width:26px;height:26px;display:grid;place-items:center;border:none;background:transparent;border-radius:var(--radius-sm);color:var(--color-text-secondary);cursor:pointer}.provider-item__toggle:hover{background:var(--color-surface-2);color:var(--color-text)}.provider-item__toggle svg{width:15px;height:15px}.provider-item__nokey{font-size:var(--text-caption);color:var(--color-text-faint)}.provider-item__actions{display:flex;justify-content:flex-end;gap:var(--space-2)}.provider-item__actions .btn svg{width:13px;height:13px}.provider-list__empty{font-size:var(--text-caption);color:var(--color-text-faint);padding:var(--space-2) 0}.select{appearance:none;height:36px;padding:0 34px 0 var(--space-3);cursor:pointer;background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%2371717A' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}.model-search{position:relative;display:flex;align-items:center}.model-search__input{width:100%;height:36px;padding-right:40px}.model-search__clear{position:absolute;right:6px;top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;padding:0;margin:0;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-secondary);cursor:pointer;transition:background var(--transition),color var(--transition)}.model-search__clear:hover{background:var(--color-surface-2);color:var(--color-text)}.model-search__clear:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}.model-search__clear svg{width:16px;height:16px}.model-search__count{display:inline-block;flex:none;margin-left:var(--space-2);padding:2px 8px;border-radius:999px;background:var(--color-accent-soft);color:var(--color-accent);font-size:var(--text-caption);font-weight:600;line-height:1.4;white-space:nowrap}.segmented{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:2px;padding:3px;background:var(--color-surface-2);border-radius:var(--radius-sm)}.segmented__btn{height:30px;border:none;border-radius:4px;background:transparent;font-size:var(--text-caption);font-weight:500;color:var(--color-text-secondary);cursor:pointer;padding:0 var(--space-1);transition:background var(--transition),color var(--transition),box-shadow var(--transition)}.segmented__btn:hover{color:var(--color-text)}.segmented__btn[aria-pressed=true]{background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-pop)}.slider{display:flex;flex-direction:column;gap:var(--space-2)}.slider__row{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-2)}.slider__label{font-size:var(--text-secondary);font-weight:500}.slider__value{font-size:var(--text-caption);font-weight:600;color:var(--color-accent)}.range{-webkit-appearance:none;appearance:none;width:100%;height:4px;border-radius:999px;background:var(--color-border);cursor:pointer}.range::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:var(--color-accent);border:2px solid var(--color-surface);box-shadow:0 1px 3px #0003;transition:transform var(--transition)}.range::-webkit-slider-thumb:hover{transform:scale(1.15)}.range::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--color-accent);border:2px solid var(--color-surface);box-shadow:0 1px 3px #0003}.range:focus-visible{outline:2px solid var(--color-accent);outline-offset:6px}.slider__ticks{display:flex;justify-content:space-between;font-size:var(--text-caption);color:var(--color-text-faint);padding:0 2px}.chat-header{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-4);background:var(--color-surface);border-bottom:1px solid var(--color-border)}.chat-header__stats{display:flex;align-items:center;gap:var(--space-4);min-width:0}.conn-status{font-size:var(--text-caption);color:var(--color-text-secondary);white-space:nowrap}.conn-status.is-ok{color:var(--color-success, #16a34a)}.conn-status.is-error{color:var(--color-danger, #dc2626)}.stat{display:inline-flex;align-items:center;gap:var(--space-2);font-size:var(--text-caption);color:var(--color-text-secondary);white-space:nowrap}.stat svg{width:14px;height:14px;flex:none;color:var(--color-text-faint)}.stat strong{font-size:var(--text-secondary);font-weight:600;color:var(--color-text);font-variant-numeric:tabular-nums}.chat-header__actions{margin-left:auto;display:flex;gap:var(--space-2)}.chat-scroll{flex:1;min-height:0;overflow-y:auto;scroll-behavior:smooth}.chat-messages{display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-4);min-height:100%;max-width:860px;margin:0 auto}.msg{display:flex;gap:var(--space-3);align-items:flex-start}.msg--user{flex-direction:row-reverse}.msg__avatar{width:28px;height:28px;flex:none;display:grid;place-items:center;border-radius:50%;font-size:var(--text-caption);font-weight:600}.msg--model .msg__avatar{background:var(--color-accent);color:#fff}.msg--user .msg__avatar{background:var(--color-accent-soft);color:var(--color-accent)}.msg__col{display:flex;flex-direction:column;position:relative;min-width:0;max-width:82%}.msg--user .msg__col{align-items:flex-end}.msg__meta{font-size:var(--text-caption);color:var(--color-text-secondary);margin-bottom:4px;padding:0 var(--space-1)}.msg__bubble{padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-size:var(--text-body);line-height:1.6;overflow-wrap:break-word}.msg--model .msg__bubble{background:var(--color-surface);border:1px solid var(--color-border);border-bottom-left-radius:4px}.msg--user .msg__bubble{background:var(--color-accent-soft);color:var(--color-text);border-bottom-right-radius:4px}.msg--user .msg__content{white-space:pre-wrap}.msg--notice{justify-content:center}.msg--notice .msg__bubble{background:transparent;border:1px dashed var(--color-border);border-radius:var(--radius-sm);color:var(--color-text-secondary);font-size:var(--text-secondary);max-width:100%}.msg--notice.msg--error .msg__bubble{border:1px solid var(--color-error-border);background:var(--color-error-soft);color:#b91c1c}.msg__content :is(p,ul,ol,pre,table){margin:0 0 var(--space-2)}.msg__content :is(p,ul,ol,pre,table):last-child{margin-bottom:0}.msg__content ul,.msg__content ol{padding-left:var(--space-6)}.msg__content li{margin-bottom:var(--space-1)}.msg__content h1,.msg__content h2,.msg__content h3,.msg__content h4{font-size:var(--text-body);font-weight:600;line-height:var(--leading-tight);margin:var(--space-3) 0 var(--space-2)}.msg__content strong{font-weight:600}.msg__content code{background:var(--color-surface-2);border-radius:4px;padding:.1em .35em;font-size:.9em}.msg__content pre{background:#18181b;color:#f4f4f5;padding:var(--space-3);border-radius:var(--radius-sm);overflow-x:auto}.msg__content pre code{background:none;padding:0;color:inherit}.msg__content a{color:var(--color-accent);text-decoration:underline;text-underline-offset:2px}.msg__content blockquote{border-left:2px solid var(--color-border-strong);padding-left:var(--space-3);color:var(--color-text-secondary)}.msg__content .math{font-size:1em;line-height:1.2;white-space:nowrap}.msg__content .math--display{display:block;width:100%;box-sizing:border-box;overflow-x:auto;-webkit-overflow-scrolling:touch;margin:var(--space-3) 0}.msg__content .math--raw{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.85em;background:var(--color-surface-2);border-radius:var(--radius-sm);padding:.15em .4em}.msg__content .math--error{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.85em;color:var(--color-error);background:var(--color-error-soft);border:1px solid var(--color-error-border);border-radius:var(--radius-sm);padding:.15em .4em;white-space:pre-wrap}.citation{background:var(--color-citation-bg);color:var(--color-citation-text);border-radius:4px;padding:.05em .35em;font-weight:500;cursor:help;position:relative}.citation__tip{position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);background:var(--color-text);color:#fff;font-size:var(--text-caption);font-weight:400;line-height:1.5;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);width:max-content;max-width:240px;opacity:0;visibility:hidden;pointer-events:none;transition:opacity var(--transition),visibility var(--transition);z-index:20;box-shadow:var(--shadow-toast)}.citation__tip:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:var(--color-text)}.citation:hover .citation__tip,.citation:focus-visible .citation__tip{opacity:1;visibility:visible}.typing{display:inline-flex;align-items:center;gap:5px;padding:var(--space-3) var(--space-4)}.typing span{width:6px;height:6px;border-radius:50%;background:var(--color-text-faint);animation:typing-pulse 1.2s infinite ease-in-out}.typing span:nth-child(2){animation-delay:.15s}.typing span:nth-child(3){animation-delay:.3s}.sources-loading{display:inline-flex;align-items:center;gap:6px;padding:var(--space-1) 0}.sources-loading .dot{width:7px;height:7px;border-radius:50%;background:var(--color-accent);animation:sources-pulse 1.2s infinite ease-in-out}@keyframes sources-pulse{0%,to{opacity:.35;transform:scale(.85)}50%{opacity:1;transform:scale(1.15)}}.typing__status{flex:1;min-width:0;padding:0;margin:0;border:0;font-size:var(--text-caption);line-height:1.4;color:var(--color-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;animation:none}.typing__caret{display:inline-block;width:2px;height:1em;margin:0 0 2px 3px;padding:0;align-self:center;background:var(--color-accent);border-radius:1px}.typing__caret.is-on{animation:caret-blink 1s steps(1) infinite}@keyframes caret-blink{0%,50%{opacity:1}50.01%,to{opacity:0}}@keyframes typing-pulse{0%,60%,to{transform:translateY(0);opacity:.4}30%{transform:translateY(-4px);opacity:1}}.empty-state{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-3);text-align:center;padding:var(--space-8);color:var(--color-text-secondary)}.empty-state__icon{width:48px;height:48px;display:grid;place-items:center;background:var(--color-accent-soft);border-radius:var(--radius-lg);color:var(--color-accent);margin-bottom:var(--space-2)}.empty-state__icon svg{width:24px;height:24px}.empty-state__title{font-size:var(--text-heading);font-weight:600;color:var(--color-text)}.empty-state__text{max-width:380px;font-size:var(--text-secondary);line-height:1.6}.composer{padding:var(--space-3) var(--space-4) var(--space-4);background:var(--color-surface);border-top:1px solid var(--color-border)}.composer__inner{max-width:860px;margin:0 auto;display:flex;align-items:flex-end;gap:var(--space-2)}.composer__input-wrap{flex:1;display:flex;align-items:flex-end;gap:var(--space-2);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-2);transition:border-color var(--transition),box-shadow var(--transition)}.composer__input-wrap:focus-within{border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-soft)}.composer textarea{flex:1;border:none;resize:none;max-height:160px;padding:var(--space-2) var(--space-1);line-height:1.5;background:transparent}.composer textarea:focus{outline:none}.composer__actions{display:flex;gap:var(--space-2)}.modal-overlay{position:fixed;inset:0;background:#18181b80;display:grid;place-items:center;padding:var(--space-4);z-index:100;animation:modal-fade .18s ease-out}.modal{width:100%;max-width:460px;max-height:90vh;overflow-y:auto;background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-modal);padding:var(--space-6);animation:modal-rise .2s ease-out}.modal__header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-3);min-width:0;flex-wrap:wrap}.modal__title{flex:1 1 auto;min-width:0;font-size:var(--text-title);font-weight:600;line-height:var(--leading-tight)}.modal__text{color:var(--color-text-secondary);font-size:var(--text-secondary);line-height:1.6}.modal__text+.modal__text{margin-top:var(--space-3)}.modal__body{display:flex;flex-direction:column;gap:var(--space-4);margin-top:var(--space-3)}.endpoint-edit__keyrow{display:flex;gap:var(--space-2);align-items:center}.endpoint-edit__keyrow .input{flex:1}.modal__actions{display:flex;justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-6)}.modal__close{width:32px;height:32px;flex:none;display:grid;place-items:center;border:none;background:transparent;border-radius:var(--radius-sm);color:var(--color-text-secondary);cursor:pointer;transition:background var(--transition),color var(--transition)}.modal__close:hover{background:var(--color-surface-2);color:var(--color-text)}.onboarding__steps{display:flex;flex-direction:column;gap:var(--space-4)}.onboarding__progress{display:flex;gap:var(--space-2)}.modal--onboarding__footer{display:flex;justify-content:space-between;align-items:center;gap:var(--space-4);margin-top:var(--space-6)}.modal--onboarding .modal__actions{margin-top:0}.modal--onboarding .onboarding__progress{align-self:auto}.modal--onboarding{display:flex;flex-direction:column;max-height:90vh}.modal--onboarding .onboarding__steps{flex:1 1 auto;overflow-y:auto}.onboarding__dot{width:6px;height:6px;border-radius:50%;background:var(--color-border);transition:background var(--transition),width var(--transition)}.onboarding__dot.is-active{background:var(--color-accent);width:20px;border-radius:999px}.onboard-providers{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-3)}.onboard-provider{min-height:44px;padding:0 var(--space-3);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-surface);font-family:var(--font-sans);font-size:var(--text-secondary);font-weight:500;color:var(--color-text);cursor:pointer}.onboard-provider:hover{background:var(--color-surface-2)}.onboard-provider.is-active{background:var(--color-accent-soft);border-color:var(--color-accent);color:var(--color-accent-hover);font-weight:600}@keyframes modal-fade{0%{opacity:0}}@keyframes modal-rise{0%{opacity:0;transform:translateY(8px)}}.toast-region{position:fixed;bottom:var(--space-4);right:var(--space-4);display:flex;flex-direction:column;gap:var(--space-2);z-index:200}.toast{display:flex;align-items:flex-start;gap:var(--space-2);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);box-shadow:var(--shadow-toast);padding:var(--space-3) var(--space-4);font-size:var(--text-secondary);line-height:1.5;max-width:340px;animation:toast-in .2s ease-out;transition:opacity var(--transition),transform var(--transition)}.toast.is-leaving{opacity:0;transform:translateY(4px)}.toast__icon{width:16px;height:16px;flex:none;margin-top:2px}.toast--success .toast__icon{color:var(--color-success)}.toast--error .toast__icon{color:var(--color-error)}.toast--info .toast__icon{color:var(--color-accent)}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}}.session-list{flex:1;min-height:0;display:flex;flex-direction:column;gap:2px;overflow-y:auto}.session-list__empty{padding:var(--space-3);font-size:var(--text-caption);color:var(--color-text-faint);text-align:center}.session-item{position:relative;display:flex;align-items:flex-start;gap:var(--space-2);width:100%;text-align:left;padding:var(--space-2) var(--space-3) var(--space-2) var(--space-3);background:transparent;border-radius:var(--radius-sm);cursor:pointer;transition:background var(--transition)}.session-item__main{min-width:0;flex:1 1 auto;display:flex;flex-direction:column;gap:2px}.session-item:hover,.session-item:focus-visible{background:var(--color-surface-2);outline:none}.session-item.is-active{background:var(--color-accent-soft)}.session-item__title{font-size:var(--text-secondary);font-weight:500;color:var(--color-text);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.session-item__date{font-size:var(--text-caption);color:var(--color-text-faint)}.session-item__menu{flex:0 0 auto;align-self:stretch;width:32px;display:grid;place-items:center;border:none;background:transparent;border-radius:var(--radius-sm);color:var(--color-text-secondary);cursor:pointer;opacity:0;transition:opacity var(--transition),background var(--transition),color var(--transition)}.session-item:hover .session-item__menu,.session-item:focus-within .session-item__menu{opacity:1}.session-item__menu svg{width:18px;height:18px}.session-item__menu:hover,.session-item__menu:focus-visible{background:var(--color-accent-soft);color:var(--color-accent);outline:none}.session-item__dropdown{position:fixed;display:flex;flex-direction:column;min-width:200px;padding:var(--space-1);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-modal);opacity:0;transform:translateY(-4px);pointer-events:none;transition:opacity var(--transition),transform var(--transition);z-index:90}.session-item__dropdown.is-open{opacity:1;transform:translateY(0);pointer-events:auto}.session-item__action{display:flex;align-items:center;gap:var(--space-2);width:100%;padding:var(--space-2) var(--space-2);background:transparent;border:none;border-radius:var(--radius-sm);text-align:left;font:inherit;color:var(--color-text);cursor:pointer;transition:background var(--transition),color var(--transition)}.session-item__action:hover,.session-item__action:focus-visible{background:var(--color-surface-2);outline:none}.session-item__action--danger{color:var(--color-error)}.session-item__action--danger:hover{background:var(--color-error-soft)}.session-item__action__icon{flex:0 0 auto;display:grid;place-items:center;width:18px;height:18px;color:var(--color-text-secondary)}.session-item__action--danger .session-item__action__icon{color:var(--color-error)}.session-item__action__icon svg{width:16px;height:16px}.session-item__action__label{flex:1 1 auto;font-size:var(--text-secondary);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}[hidden]{display:none!important}.muted{color:var(--color-text-secondary)}.msg__sources{margin-top:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:var(--radius-sm)}.msg__sources-title{margin:0 0 var(--space-1);font-size:var(--text-caption);font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--color-text-secondary)}.msg__sources ol{margin:0 0 var(--space-2);padding-left:1.4em;display:grid;gap:6px;font-size:var(--text-caption)}.msg__sources li{color:var(--color-text-secondary)}.msg__sources a{font-size:var(--text-caption);color:var(--color-accent);text-decoration:none;overflow-wrap:anywhere;display:block;max-width:100%}.msg__sources a:hover{text-decoration:underline}.msg__sources-snippet{margin:2px 0 0;font-size:var(--text-caption);color:var(--color-text-secondary);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.msg__sources-meta{margin:2px 0 0;font-size:var(--text-caption);color:var(--color-text-tertiary, var(--color-text-secondary));opacity:.85}.msg__sources .btn{margin-top:0}.msg__footer{margin-top:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--text-caption);color:var(--color-text-secondary)}.toggle{display:flex;align-items:center;gap:var(--space-2);cursor:pointer;user-select:none}.toggle__input{width:16px;height:16px;accent-color:var(--color-accent);cursor:pointer;margin:0}.toggle__text{font-size:var(--text-body);color:var(--color-text);font-weight:500}.toggle.is-disabled{cursor:not-allowed;opacity:.6}.toggle.is-disabled .toggle__input{cursor:not-allowed}.url-materi__label{display:block;margin-bottom:var(--space-1);font-size:var(--text-caption);font-weight:600;color:var(--color-text-secondary)}.url-materi__row{display:flex;gap:var(--space-2);align-items:stretch}.url-materi__input{flex:1 1 auto;min-width:0;min-height:44px;padding:0 var(--space-3);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);font:inherit;font-size:max(16px,var(--text-body))}.url-materi__input:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}.url-materi__row .btn{flex:none;min-height:44px;padding-inline:var(--space-4)}@media(max-width:640px){.url-materi__row{flex-direction:column}.url-materi__row .btn{width:100%}}input,textarea,select,.input,.select,.composer textarea{font-size:16px}.segmented{grid-auto-flow:row;grid-template-columns:repeat(2,1fr)}.segmented__btn{height:auto;min-height:34px;padding:6px var(--space-2)}@media(max-width:640px){.app-header{gap:var(--space-2);padding:var(--space-2) var(--space-3)}.chat-header__stats{gap:var(--space-3)}.stat__label{display:none}.chat-header{padding:var(--space-2) var(--space-3);gap:var(--space-2)}.btn__label{display:none}#sendBtn{width:42px;height:42px;min-width:42px;padding:0;border-radius:50%;justify-content:center}#sendBtn svg{width:18px;height:18px}.composer{padding:var(--space-2) var(--space-3)}.composer__inner{gap:var(--space-2)}.composer textarea{font-size:16px}.btn--icon{width:44px;height:44px}.select,.input{min-height:44px}.provider-item__actions .btn--sm{min-height:40px}.setup-guide__toggle{min-height:44px}.modal .btn{height:auto;min-height:44px}}@media(min-width:641px)and (max-width:820px){.app-header__tagline{display:none}}@media(hover:none){.session-item__menu{opacity:1}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.citation--unverified{background:var(--color-surface-2);color:var(--color-text-secondary);border-bottom:1px dashed var(--color-warning)}.empty-state__checklist{list-style:none;margin:0;padding:0;display:flex;gap:var(--space-4);justify-content:center;font-size:var(--text-secondary);color:var(--color-text-secondary)}.empty-state__checklist li{display:inline-flex;align-items:center;gap:var(--space-1)}.empty-state__checklist li.is-done{color:var(--color-success);font-weight:500}.empty-state__actions{display:flex;gap:var(--space-2);justify-content:center;flex-wrap:wrap}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.setup-guide{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);overflow:hidden}.setup-guide__toggle{width:100%;display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3);background:transparent;border:none;border-radius:var(--radius-md);cursor:pointer;font-family:var(--font-sans);text-align:left}.setup-guide__toggle:hover{background:var(--color-surface-2)}.setup-guide__toggle:focus-visible{outline:2px solid var(--color-accent-border);outline-offset:-2px}.setup-guide__label{display:flex;align-items:center;gap:var(--space-2);flex:1;min-width:0;font-size:var(--text-secondary);font-weight:600;color:var(--color-text)}.setup-guide__icon{flex:none;width:18px;height:18px;color:var(--color-text-secondary);transition:transform var(--transition)}.setup-guide__toggle[aria-expanded=true] .setup-guide__icon{transform:rotate(90deg)}.setup-guide__body{padding:var(--space-3)}.setup-guide__body[hidden]{display:none}.setup-guide__body{max-height:52vh;overflow-y:auto}.setup-card{padding:var(--space-3);border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-surface-2)}.setup-card+.setup-card{margin-top:var(--space-3)}.setup-card--cloud,.setup-card--mobile{border-color:var(--color-accent-border);background:linear-gradient(180deg,#fbfaff 0%,var(--color-surface-2) 100%)}.setup-card__head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-2)}.setup-card__title{display:flex;align-items:center;gap:var(--space-1);margin:0;min-width:0;font-size:var(--text-heading);font-weight:700;color:var(--color-text)}.setup-card__emoji{font-size:1.1em;line-height:1}.setup-card__text{margin:0 0 var(--space-2);font-size:var(--text-body);line-height:var(--leading);color:var(--color-text)}.setup-badge{flex:0 1 auto;max-width:100%;white-space:nowrap;font-size:var(--text-caption);font-weight:600;padding:3px 9px;border-radius:999px;background:var(--color-surface);color:var(--color-text-secondary);border:1px solid var(--color-border)}.setup-badge--sm{font-size:11px;padding:2px 7px}.setup-badge--accent{background:var(--color-accent-soft);color:var(--color-accent);border-color:var(--color-accent-border)}.setup-list{margin:0;padding-left:1.25em}.setup-list li{margin-bottom:var(--space-2);line-height:var(--leading)}.setup-list strong{color:var(--color-text)}.setup-card code,.setup-col code{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;background:var(--color-surface);border:1px solid var(--color-border);border-radius:5px;padding:1px 6px;font-size:var(--text-caption);color:var(--color-text);white-space:nowrap}.setup-code{display:inline-block;max-width:100%;margin-top:2px;padding:4px 8px;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;background:var(--color-surface);border:1px solid var(--color-border);border-radius:6px;font-size:var(--text-caption);color:var(--color-accent-hover);white-space:pre-wrap;word-break:break-all}.setup-card .setup-code,.setup-col .setup-code{white-space:pre-wrap;word-break:break-all}.setup-two-col{display:flex;flex-direction:column;gap:var(--space-3);margin-top:var(--space-3)}.setup-col{padding:var(--space-3);border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-surface)}.setup-col--primary{border-color:var(--color-accent-border);box-shadow:0 0 0 1px var(--color-accent-border) inset}.setup-col__title{display:flex;align-items:flex-start;gap:var(--space-2);margin:0 0 var(--space-2);font-size:var(--text-body);font-weight:700;color:var(--color-accent)}.setup-col__note{margin:var(--space-2) 0 0;font-size:var(--text-caption);line-height:var(--leading);color:var(--color-text-secondary)}@media(min-width:520px){.setup-two-col{flex-direction:row}.setup-col{flex:1 1 0;min-width:0}}
