.app{height:100%;min-height:100dvh;display:flex;position:relative;overflow:hidden}.bg-glow{pointer-events:none;z-index:0;background:radial-gradient(60% 50% at 20% 30%,#1a7a6d38,#0000 60%),radial-gradient(50% 40% at 85% 10%,#46785a2e,#0000 55%);height:55%;animation:14s ease-in-out infinite alternate glow-drift;position:absolute;inset:-20% -10% auto}.bg-grid{pointer-events:none;z-index:0;background-image:linear-gradient(#15201c09 1px,#0000 1px),linear-gradient(90deg,#15201c09 1px,#0000 1px);background-size:28px 28px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(80% 60% at 50% 0,#000 20%,#0000 75%);mask-image:radial-gradient(80% 60% at 50% 0,#000 20%,#0000 75%)}@keyframes glow-drift{0%{transform:translate(0,0)scale(1)}to{transform:translate(2%,3%)scale(1.05)}}.main{z-index:1;flex-direction:column;flex:1;min-width:0;height:100%;display:flex;position:relative}.topbar{padding:calc(10px + var(--safe-top)) 14px 8px;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;display:grid}.topbar-left{justify-self:start;align-items:center;gap:6px;min-width:0;display:flex}.topbar-brand{text-align:center;justify-self:center}.topbar-logo{font-family:var(--font-display);letter-spacing:-.02em;font-size:1.05rem;font-weight:700}.topbar>.icon-btn:last-child{justify-self:end}.price-badge{border:1px solid var(--line);background:var(--bg-elevated);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:10px;flex-wrap:wrap;align-items:baseline;gap:3px 5px;max-width:min(52vw,220px);padding:5px 8px;line-height:1.2;display:flex}.price-main{color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.72rem;font-weight:700}.price-unit{color:var(--ink-muted);white-space:nowrap;font-size:.62rem}.price-search{color:var(--accent-strong);white-space:nowrap;font-size:.62rem;font-weight:600}.icon-btn{width:42px;height:42px;color:var(--ink);border-radius:12px;place-items:center;transition:background .2s,transform .2s;display:grid}.icon-btn:active{background:var(--accent-soft);transform:scale(.96)}.provider-bar{flex-direction:column;gap:8px;padding:4px 12px 8px;display:flex}.provider-bar-tools{flex-wrap:wrap;align-items:center;gap:8px 10px;display:flex}.modality-filters{flex-wrap:wrap;flex:1;gap:6px;min-width:0;display:flex}.modality-chip{border:1px solid var(--line);background:var(--bg-elevated);color:var(--ink-muted);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:8px;align-items:center;gap:5px;padding:5px 9px;font-size:.72rem;font-weight:600;line-height:1;display:inline-flex}.modality-chip input{width:13px;height:13px;accent-color:var(--accent-strong);cursor:pointer;margin:0}.modality-chip.is-checked{color:var(--ink);border-color:color-mix(in srgb, var(--accent) 45%, transparent);background:color-mix(in srgb, var(--accent) 12%, white)}.provider-empty,.model-select-empty{color:var(--ink-muted);margin:0;padding:8px 0;font-size:.75rem;line-height:1.4}.provider-groups{flex-direction:column;flex:1;gap:6px;min-width:0;display:flex}.provider-group{align-items:flex-start;gap:8px;min-width:0;display:flex}.provider-group-label{border:1px solid var(--line);background:var(--bg-elevated);letter-spacing:.04em;color:var(--ink-muted);cursor:pointer;border-radius:8px;flex:none;margin-top:2px;padding:5px 8px;font-size:.68rem;font-weight:600;line-height:1}.provider-group-label.is-active{color:var(--ink);border-color:color-mix(in srgb, var(--accent) 40%, transparent);background:color-mix(in srgb, var(--accent) 10%, white)}.provider-group.is-collapsed{align-items:center}.provider-chips{flex-wrap:wrap;flex:1;gap:5px;min-width:0;display:flex;overflow:visible}.provider-chip.is-hub{border-style:dashed}.provider-chip.is-free{border-color:color-mix(in srgb, #22c55e 45%, var(--line))}.provider-chip{white-space:nowrap;border:1px solid var(--line);background:var(--bg-elevated);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:var(--ink-soft);border-radius:999px;flex:none;align-items:center;gap:5px;padding:5px 8px;font-size:.72rem;font-weight:500;line-height:1.2;transition:border-color .2s,background .2s,color .2s,transform .2s;display:inline-flex}.provider-chip.is-active{color:var(--ink);border-color:color-mix(in srgb, var(--chip-accent,var(--accent)) 45%, transparent);background:color-mix(in srgb, var(--chip-accent,var(--accent)) 12%, white);box-shadow:0 0 0 1px color-mix(in srgb, var(--chip-accent,var(--accent)) 18%, transparent)}.provider-chip.is-soon{opacity:.55}.provider-chip:disabled{cursor:not-allowed}.chip-dot{border-radius:50%;flex-shrink:0;width:6px;height:6px}.chip-soon{text-transform:uppercase;letter-spacing:.04em;color:var(--ink-muted);font-size:.65rem}.model-select select{appearance:none;border:1px solid var(--line);background:var(--bg-elevated) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%234a5c54' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 12px center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:12px;width:100%;padding:10px 36px 10px 12px}.chat-scroll{-webkit-overflow-scrolling:touch;flex:1;padding:8px 12px 12px;overflow-y:auto}.hero{text-align:center;max-width:520px;margin:8vh auto 0;animation:.55s both hero-in}@keyframes hero-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.hero-brand{font-family:var(--font-display);letter-spacing:-.04em;background:linear-gradient(135deg, var(--ink) 30%, var(--accent));color:#0000;-webkit-background-clip:text;background-clip:text;margin:0 0 10px;font-size:clamp(2.4rem,10vw,3.4rem);font-weight:700;line-height:1}.hero-title{letter-spacing:-.01em;margin:0 0 10px;font-size:1.15rem;font-weight:600}.hero-sub{max-width:34em;color:var(--ink-soft);margin:0 auto 22px;font-size:.92rem;line-height:1.6}.hero-hints{flex-direction:column;gap:8px;display:flex}.hint-chip{text-align:left;border:1px solid var(--line);background:var(--bg-elevated);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:var(--ink-soft);border-radius:14px;padding:12px 14px;font-size:.9rem;transition:border-color .2s,transform .2s,background .2s}.hint-chip:active{border-color:color-mix(in srgb, var(--accent) 40%, transparent);background:#fff;transform:scale(.99)}.msg-list{flex-direction:column;gap:14px;width:100%;max-width:none;margin:0;padding-bottom:8px;display:flex}.msg{align-items:flex-start;gap:8px;width:100%;animation:.28s both msg-in;display:flex}@keyframes msg-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.msg.is-user{justify-content:flex-end}.msg-avatar{width:28px;height:28px;font-size:.65rem;font-weight:700;font-family:var(--font-display);color:#fff;background:var(--accent);border-radius:9px;flex:none;place-items:center;margin-top:4px;display:grid}.msg-col{flex-direction:column;flex:1;gap:6px;min-width:0;display:flex}.msg.is-user .msg-col{flex:0 auto;align-items:flex-end;max-width:min(92%,720px)}.msg-body{width:100%;min-width:0}.msg-actions{flex-wrap:wrap;gap:4px;padding-left:2px;display:flex}.msg-actions.is-user{justify-content:flex-end;padding-right:2px}.msg-action{color:var(--ink-muted);border-radius:8px;align-items:center;gap:5px;padding:5px 9px;font-size:.75rem;font-weight:500;transition:background .15s,color .15s;display:inline-flex}.msg-action:hover,.msg-action:active{color:var(--ink-soft);background:#15201c0f}.msg-action.is-done{color:var(--accent-strong)}.msg.is-user .msg-body{background:var(--ink);color:#f4f8f6;border-radius:16px 16px 4px;padding:10px 14px}.msg.is-assistant .msg-body{border:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffffe0;border-radius:4px 16px 16px;max-width:100%;padding:12px 14px;overflow:hidden}.msg-text{white-space:pre-wrap;overflow-wrap:break-word;word-break:normal;margin:0;font-size:.95rem;line-height:1.55}.msg-md{overflow-wrap:break-word;word-break:normal;color:var(--ink);font-size:.92rem;line-height:1.7}.msg-reasoning{border:1px solid var(--line);background:#15201c0d;border-radius:10px;margin:0 0 .75em}.msg-reasoning summary{cursor:pointer;color:var(--ink-soft);align-items:center;gap:6px;padding:8px 10px;font-size:.8rem;font-weight:600;list-style:none;display:flex}.msg-reasoning summary::-webkit-details-marker{display:none}.msg-reasoning summary:before{content:"▸";font-size:.75rem;transition:transform .15s}.msg-reasoning[open] summary:before{transform:rotate(90deg)}.msg-reasoning-body{color:var(--ink-muted);white-space:pre-wrap;word-break:break-word;max-height:220px;padding:0 10px 10px;font-size:.82rem;line-height:1.55;overflow-y:auto}.msg-md>:first-child{margin-top:0}.msg-md>:last-child{margin-bottom:0}.msg-md p{margin:.5em 0}.msg-md h1,.msg-md h2,.msg-md h3,.msg-md h4{letter-spacing:-.01em;margin:.9em 0 .4em;font-weight:700;line-height:1.35}.msg-md h1{font-size:1.15rem}.msg-md h2{font-size:1.05rem}.msg-md h3,.msg-md h4{font-size:.98rem}.msg-md hr{border:none;border-top:1px solid var(--line);margin:.9em 0}.msg-md pre{-webkit-overflow-scrolling:touch;background:#15201c0f;border-radius:10px;margin:.65em 0;padding:12px;font-size:.8rem;overflow-x:auto}.msg-md code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.88em}.msg-md :not(pre)>code{word-break:break-all;background:#15201c12;border-radius:5px;padding:.12em .35em}.msg-md ul,.msg-md ol{margin:.45em 0;padding-left:1.35em}.msg-md li{margin:.25em 0}.msg-md li+li{margin-top:.35em}.msg-md a{color:var(--accent-strong);text-underline-offset:2px;word-break:break-all;text-decoration:underline}.md-table-wrap{-webkit-overflow-scrolling:touch;border:1px solid var(--line);background:#ffffffb3;border-radius:12px;margin:.7em 0;overflow-x:auto}.msg-md table{border-collapse:collapse;width:max-content;min-width:100%;font-size:.8rem;line-height:1.45}.msg-md thead th{white-space:nowrap;background:#e8f0ecf2;font-weight:700;position:sticky;top:0}.msg-md th,.msg-md td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;word-break:keep-all;overflow-wrap:break-word;padding:9px 12px}.msg-md th:first-child,.msg-md td:first-child{white-space:nowrap;min-width:9.5em}.msg-md th:nth-child(2),.msg-md td:nth-child(2){min-width:7.5em}.msg-md th:nth-child(3),.msg-md td:nth-child(3){min-width:12em;max-width:22em}.msg-md th:nth-child(4),.msg-md td:nth-child(4){min-width:11em}.msg-md tbody tr:last-child th,.msg-md tbody tr:last-child td{border-bottom:none}.msg-md blockquote{border-left:3px solid var(--accent);color:var(--ink-soft);margin:.6em 0;padding:.35em 0 .35em .85em}.typing{gap:5px;padding:4px 2px;display:inline-flex}.typing i{background:var(--ink-muted);border-radius:50%;width:6px;height:6px;animation:1.1s ease-in-out infinite bounce}.typing i:nth-child(2){animation-delay:.15s}.typing i:nth-child(3){animation-delay:.3s}@keyframes bounce{0%,80%,to{opacity:.45;transform:translateY(0)}40%{opacity:1;transform:translateY(-4px)}}.error-bar{color:var(--danger);background:#c23b3b1a;border-radius:12px;justify-content:space-between;align-items:center;gap:10px;margin:0 14px 8px;padding:10px 12px;font-size:.875rem;display:flex}.error-bar button{color:inherit;opacity:.7;font-size:1.2rem;line-height:1}.composer-wrap{padding:0 12px calc(10px + var(--safe-bottom))}.composer-card{border:1px solid var(--line);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#fffffff0;border-radius:20px;flex-direction:column;gap:8px;width:100%;padding:12px 12px 10px;display:flex;box-shadow:0 8px 28px #15201c14}.chip-toggle{border:1px solid var(--line);color:var(--ink-soft);-webkit-user-select:none;user-select:none;cursor:pointer;background:#15201c08;border-radius:999px;align-items:center;padding:5px 10px;font-size:.75rem;font-weight:600;transition:border-color .15s,background .15s,color .15s;display:inline-flex;position:relative}.chip-toggle input{opacity:0;cursor:inherit;margin:0;position:absolute;inset:0}.chip-toggle.is-on{border-color:color-mix(in srgb, var(--accent) 40%, transparent);background:var(--accent-soft);color:var(--accent-strong)}.chip-toggle.is-disabled{opacity:.5;cursor:not-allowed}.composer-previews{flex-wrap:wrap;gap:8px;display:flex}.composer-preview{border:1px solid var(--line);background:#f3f6f4;border-radius:10px;width:56px;height:56px;position:relative;overflow:hidden}.composer-preview img{object-fit:cover;width:100%;height:100%;display:block}.preview-remove{color:#fff;background:#15201cb8;border-radius:50%;place-items:center;width:18px;height:18px;font-size:13px;line-height:1;display:grid;position:absolute;top:2px;right:2px}.composer-bar{justify-content:space-between;align-items:center;gap:10px;display:flex}.composer-bar-left{flex-wrap:wrap;align-items:center;gap:6px;min-width:0;display:flex}.composer-icon-btn{width:32px;height:32px;color:var(--ink-soft);border-radius:9px;place-items:center;display:grid}.composer-icon-btn:not(:disabled):hover{color:var(--ink);background:#15201c0f}.composer-icon-btn:disabled{opacity:.35;cursor:not-allowed}.msg-images{flex-wrap:wrap;gap:6px;margin-bottom:8px;display:flex}.msg-images a{border-radius:10px;max-width:160px;display:block;overflow:hidden}.msg.is-user .msg-images a{border:1px solid #ffffff40}.msg-images img{object-fit:cover;width:100%;max-height:160px;display:block}.msg-status{color:var(--accent-strong);margin:0 0 .6em;font-size:.85rem;font-weight:600}.msg-sources{border:1px solid color-mix(in srgb, var(--accent) 22%, transparent);background:#1a7a6d0f;border-radius:10px;margin:0 0 .75em}.msg-sources summary{cursor:pointer;color:var(--accent-strong);align-items:center;gap:6px;padding:8px 10px;font-size:.8rem;font-weight:600;list-style:none;display:flex}.msg-sources summary::-webkit-details-marker{display:none}.msg-sources summary:before{content:"▸";font-size:.75rem;transition:transform .15s}.msg-sources[open] summary:before{transform:rotate(90deg)}.msg-sources-list{flex-direction:column;gap:8px;margin:0;padding:0 12px 10px 28px;display:flex}.msg-sources-list a{word-break:break-word;font-size:.85rem;font-weight:600;text-decoration:none}.msg-sources-list a:hover{text-decoration:underline}.src-site{color:var(--ink-muted);margin-left:6px;font-size:.72rem}.src-snippet{color:var(--ink-soft);margin:2px 0 0;font-size:.78rem;line-height:1.45}.composer-input{resize:none;background:0 0;border:none;outline:none;width:100%;max-height:168px;padding:2px 2px 4px;font-size:.95rem;line-height:1.5}.composer-send{background:var(--accent);color:#fff;border-radius:11px;flex:none;place-items:center;width:36px;height:36px;transition:background .2s,transform .2s,opacity .2s;display:grid}.composer-send:disabled{opacity:.4;cursor:not-allowed}.composer-send:not(:disabled):active{transform:scale(.96)}.composer-send.is-stop{background:var(--ink)}.composer-note{text-align:center;color:var(--ink-muted);margin:8px 4px 0;font-size:.72rem}.sidebar-backdrop{opacity:0;pointer-events:none;z-index:20;background:#15201c59;transition:opacity .25s;position:fixed;inset:0}.sidebar-backdrop.is-open{opacity:1;pointer-events:auto}.sidebar{z-index:30;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-right:1px solid var(--line);width:min(86vw,320px);padding-top:var(--safe-top);padding-bottom:var(--safe-bottom);background:#f8fcfaf5;flex-direction:column;transition:transform .28s cubic-bezier(.22,1,.36,1);display:flex;position:fixed;top:0;bottom:0;left:0;transform:translate(-105%)}.sidebar.is-open{transform:translate(0)}.sidebar-head{align-items:center;gap:10px;padding:16px 14px 10px;display:flex}.brand-mark{width:36px;height:36px;font-family:var(--font-display);color:#fff;background:var(--accent);border-radius:11px;place-items:center;font-weight:700;display:grid}.brand-text{flex-direction:column;flex:1;min-width:0;display:flex}.brand-name{font-family:var(--font-display);letter-spacing:-.03em;font-weight:700}.brand-tag{color:var(--ink-muted);font-size:.72rem}.sidebar-close{display:grid}.new-chat-btn{background:var(--accent);color:#fff;border-radius:14px;justify-content:center;align-items:center;gap:8px;margin:6px 14px 12px;padding:12px;font-weight:600;transition:background .2s,transform .2s;display:flex}.new-chat-btn:active{background:var(--accent-strong);transform:scale(.98)}.conv-list{flex:1;padding:0 10px 10px;overflow-y:auto}.conv-empty{text-align:center;color:var(--ink-muted);margin:24px 8px;font-size:.875rem}.conv-item{border-radius:12px;align-items:stretch;margin-bottom:4px;display:flex}.conv-item.is-active{background:var(--accent-soft)}.conv-main{text-align:left;flex-direction:column;flex:1;gap:2px;min-width:0;padding:10px 8px 10px 10px;display:flex}.conv-title{white-space:nowrap;text-overflow:ellipsis;font-size:.9rem;overflow:hidden}.conv-meta{color:var(--ink-muted);font-size:.72rem}.conv-delete{opacity:.35;width:36px;color:var(--ink-soft);transition:opacity .2s}.conv-item:hover .conv-delete,.conv-item:focus-within .conv-delete{opacity:.85}.sidebar-foot{border-top:1px solid var(--line);padding:10px 14px 14px}.settings-link{width:100%;color:var(--ink-soft);border-radius:12px;align-items:center;gap:8px;padding:10px;font-size:.9rem;display:flex}.settings-link:active{background:var(--accent-soft)}.modal-backdrop{z-index:40;background:#15201c66;place-items:end center;padding:0;animation:.2s fade-in;display:grid;position:fixed;inset:0}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.modal{width:100%;max-width:480px;max-height:min(88dvh,640px);padding:18px 18px calc(18px + var(--safe-bottom));background:#f8fcfa;border-radius:22px 22px 0 0;animation:.28s cubic-bezier(.22,1,.36,1) sheet-up;overflow-y:auto}@keyframes sheet-up{0%{opacity:.6;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}.modal-head{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.modal-head h2{font-size:1.15rem;font-family:var(--font-display);letter-spacing:-.02em;margin:0}.modal-desc{color:var(--ink-soft);margin:0 0 16px;font-size:.875rem;line-height:1.55}.field-label{color:var(--ink-soft);margin-bottom:6px;font-size:.8rem;font-weight:600;display:block}.field-row{gap:8px;display:flex}.field-input{border:1px solid var(--line);background:#fff;border-radius:12px;outline:none;flex:1;min-width:0;padding:12px 14px}.field-input:focus{border-color:color-mix(in srgb, var(--accent) 50%, transparent);box-shadow:0 0 0 3px var(--accent-soft)}.field-toggle{border:1px solid var(--line);color:var(--ink-soft);background:#fff;border-radius:12px;flex:none;padding:0 14px;font-size:.85rem}.help-link{margin-top:12px;font-size:.85rem;text-decoration:none;display:inline-block}.help-link:hover{text-decoration:underline}.modal-actions{justify-content:flex-end;gap:8px;margin-top:20px;display:flex}.btn{border-radius:12px;padding:11px 18px;font-size:.9rem;font-weight:600}.btn.ghost{color:var(--ink-soft)}.btn.primary{background:var(--accent);color:#fff}.btn.primary:active{background:var(--accent-strong)}@media (width>=768px){.sidebar-backdrop{display:none}.sidebar{background:#f8fcfab3;flex-shrink:0;width:280px;position:relative;transform:none}.sidebar-close{display:none}.topbar .menu-btn{visibility:hidden;pointer-events:none}.price-badge{max-width:none}.price-main{font-size:.78rem}.provider-bar{flex-direction:row;align-items:flex-start;gap:12px;padding-left:20px;padding-right:20px}.provider-chip{padding:6px 10px;font-size:.78rem}.provider-bar-tools{flex-direction:column;flex-shrink:0;align-items:stretch;width:220px}.modality-filters{flex:none}.model-select{flex-shrink:0;width:100%;margin-top:0}.chat-scroll,.composer-wrap,.error-bar{padding-left:20px;padding-right:20px}.msg-list,.composer-card,.composer-note{max-width:860px;margin-left:auto;margin-right:auto}.error-bar{margin-left:24px;margin-right:24px}.hero-hints{flex-flow:wrap;justify-content:center}.hint-chip{flex:180px;max-width:240px}.modal-backdrop{place-items:center;padding:24px}.modal{border-radius:20px;padding:22px}}:root{--bg:#e8f0ec;--bg-elevated:#ffffffb8;--ink:#15201c;--ink-soft:#4a5c54;--ink-muted:#7a8a82;--line:#15201c1a;--accent:#1a7a6d;--accent-strong:#13655a;--accent-soft:#1a7a6d1f;--danger:#c23b3b;--shadow:0 12px 40px #15201c14;--radius:16px;--safe-bottom:env(safe-area-inset-bottom,0px);--safe-top:env(safe-area-inset-top,0px);--font-display:"Sora", "Noto Sans SC", system-ui, sans-serif;--font-body:"Noto Sans SC", system-ui, -apple-system, sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%}body{font-family:var(--font-body);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:none}a{color:var(--accent)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-thumb{background:#15201c2e;border-radius:999px}
