:root{color-scheme:light;--bg: #ffffff;--text: #0d0d0d;--muted: #5d5d5d;--faint: #8d8d8d;--side: #f9f9f9;--line: #ececec;--surface: #ffffff;--border: #e3e3e3;--hover: #ececec;--mine: #f4f4f4;--accent: #0285ff;--accent-strong: #0274e0;--accent-line: #0285ff;--link: #0285ff;--on-accent: #ffffff;--danger: #c1352c;--danger-fill: #c1352c;--on-danger: #ffffff;--mask: rgba(0, 0, 0, .42);--admin: #0285ff;--shadow: 0 1px 2px rgba(0, 0, 0, .04), 0 8px 24px rgba(0, 0, 0, .06);--send-disabled: #ececec;--send-disabled-icon: #a3a3a3;color:var(--text);background:var(--bg);font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Noto Sans SC,Segoe UI,sans-serif}html[data-theme=dark]{color-scheme:dark;--bg: #212121;--text: #ececec;--muted: #b4b4b4;--faint: #8e8e8e;--side: #171717;--line: #2f2f2f;--surface: #2f2f2f;--border: #424242;--hover: #2a2a2a;--mine: #303030;--accent: #339dff;--accent-strong: #5cb0ff;--accent-line: #339dff;--link: #79c0ff;--on-accent: #ffffff;--danger: #ff8d85;--danger-fill: #c1352c;--on-danger: #ffffff;--mask: rgba(0, 0, 0, .62);--admin: #79c0ff;--shadow: 0 8px 28px rgba(0, 0, 0, .35);--send-disabled: #3a3a3a;--send-disabled-icon: #8a8a8a}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0;color:var(--text);background:var(--bg);font-size:15px;overscroll-behavior:none}button,input{font:inherit;color:inherit;touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:default}button:focus-visible,input:focus-visible{outline:2px solid var(--accent-line);outline-offset:2px}input::placeholder{color:var(--faint)}.boot{min-height:100vh;margin:0;display:grid;place-items:center;color:var(--faint);font-size:14px}.shell{height:100vh;overflow:hidden;display:grid;grid-template-columns:260px minmax(0,1fr);background:var(--bg)}.shell.collapsed{grid-template-columns:minmax(0,1fr)}.shell.collapsed .side{display:none}.side{min-width:0;min-height:0;height:100%;display:flex;flex-direction:column;background:var(--side);border-right:1px solid var(--line);padding:8px 8px 10px}.side-brand{display:flex;align-items:center;justify-content:space-between;height:44px;padding:0 2px 0 10px;flex:none}.wordmark{font-size:16px;font-weight:600;letter-spacing:-.02em}.icon-btn{width:36px;height:36px;display:grid;place-items:center;border:0;border-radius:8px;background:transparent;color:var(--text);padding:0}.icon-btn:hover{background:var(--hover)}.nav{display:flex;flex-direction:column;padding:2px 4px 0;flex:none}.nav-item{display:flex;align-items:center;gap:10px;width:100%;border:0;background:transparent;color:var(--text);border-radius:10px;padding:9px 10px;font-size:14px;text-align:left}.nav-item svg{flex:none}.nav-item:hover,.nav-item.active{background:var(--hover)}.nav-item:disabled{opacity:.5}.side-label{margin:18px 14px 6px;font-size:12px;font-weight:500;color:var(--faint);flex:none}.history{flex:1;min-height:0;overflow:auto;display:flex;flex-direction:column;gap:2px;padding:0 4px}.history-row{position:relative}.history-item{display:block;width:100%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border:0;background:transparent;color:var(--text);text-align:left;border-radius:8px;padding:8px 36px 8px 10px;font-size:14px}.history-item:hover,.history-item.active{background:var(--hover)}.history-delete{position:absolute;top:50%;right:4px;width:28px;height:28px;display:grid;place-items:center;border:0;border-radius:6px;background:transparent;color:var(--faint);padding:0;transform:translateY(-50%);opacity:0}.history-row:hover .history-delete,.history-row:focus-within .history-delete{opacity:1}.history-delete:hover{background:var(--surface);color:var(--danger)}.side-foot{position:relative;z-index:2;flex:none;padding:8px 4px 2px}.account{display:flex;align-items:center;gap:10px;width:100%;border:0;background:transparent;color:inherit;border-radius:12px;padding:8px;text-align:left}.account:hover,.account[aria-expanded=true]{background:var(--hover)}.account-text{min-width:0;flex:1}.account-text strong,.account-text em{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account-text strong{font-size:14px;font-weight:600}.account-text em{margin-top:1px;color:var(--faint);font-size:12px;font-style:normal;font-weight:400}.account-menu{position:absolute;left:4px;right:4px;bottom:calc(100% - 2px);z-index:5;display:flex;flex-direction:column;max-height:min(320px,60vh);overflow:auto;padding:6px;border:1px solid var(--line);border-radius:14px;background:var(--surface);box-shadow:var(--shadow)}.account-menu button{border:0;background:transparent;color:var(--text);text-align:left;border-radius:8px;padding:10px 12px;font-size:14px}.account-menu button:hover{background:var(--hover)}.menu-sep{height:1px;margin:4px 8px;background:var(--line)}.page{position:relative;min-width:0;min-height:0;height:100%;display:flex;flex-direction:column;background:var(--bg)}.top{position:absolute;z-index:2;top:10px;left:10px}.hero{flex:1;min-height:0;overflow:auto;display:flex;flex-direction:column;align-items:center;padding:0 20px}.hero:before,.hero:after{content:"";flex:1 0 24px}.hero-block{width:min(680px,100%);flex:none;padding:8px 0 20px}.hero h1{margin:0;text-align:center;font-size:22px;font-weight:500;letter-spacing:-.02em;line-height:1.45;overflow-wrap:anywhere}.hero-sub{margin:10px auto 0;max-width:40em;text-align:center;color:var(--muted);font-size:14px;line-height:1.6}.composer{display:flex;align-items:center;gap:8px;width:100%;min-height:52px;margin-top:26px;padding:6px 6px 6px 18px;border:1px solid var(--border);border-radius:999px;background:var(--surface);box-shadow:var(--shadow)}.hero .composer{margin-top:26px}.composer input{flex:1;min-width:0;border:0;outline:none;background:transparent;color:var(--text);border-radius:0;padding:10px 0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.composer input:focus-visible{outline:none}.composer:focus-within{border-color:#d0d0d0}html[data-theme=dark] .composer:focus-within{border-color:#5a5a5a}.send{width:36px;height:36px;flex:none;display:grid;place-items:center;border:0;border-radius:50%;padding:0;background:var(--accent);color:var(--on-accent)}.send:not(:disabled):hover{background:var(--accent-strong)}.send:disabled{background:var(--send-disabled);color:var(--send-disabled-icon)}.suggestions{display:flex;flex-direction:column;margin-top:12px}.suggestions button{display:flex;align-items:center;gap:12px;width:100%;border:0;background:transparent;color:var(--text);border-radius:10px;padding:10px 8px;font-size:14px;text-align:left}.suggestions button svg{flex:none;color:var(--faint)}.suggestions button:hover:not(:disabled){background:var(--hover)}.suggestions button:disabled{opacity:.45}.log,.dock{width:min(768px,100%);margin:0 auto}.log{flex:1;min-height:0;overflow:auto;padding:28px 20px 12px}.page.has-top .log{padding-top:56px}.dock{flex:none;padding:0 20px}.dock .composer{margin-top:0}.turn{display:flex;align-items:flex-start;gap:12px;margin:0 0 22px}.turn.mine{justify-content:flex-end}.turn:not(.mine) .bubble{flex:1;max-width:100%}.bubble{min-width:0;margin:0;padding:2px 0;background:transparent;color:var(--text);font-size:16px;line-height:1.75;white-space:pre-wrap;overflow-wrap:anywhere}.bubble p{margin:0}.bubble.mine{width:fit-content;max-width:min(85%,520px);padding:10px 16px;background:var(--mine);border-radius:22px}.cite{margin-top:8px!important;color:var(--faint);font-size:12px}.pending{margin:0 0 16px;color:var(--muted)}.pending:before{content:"";display:inline-block;width:7px;height:7px;margin-right:8px;border-radius:50%;background:var(--faint);animation:pending-pulse 1.2s ease-in-out infinite}@keyframes pending-pulse{50%{opacity:.25}}.error{color:var(--danger);margin:8px 0}.foot{flex:none;margin:8px 16px 12px;color:var(--faint);font-size:12px;line-height:1.5;text-align:center}.muted{margin:2px 10px;color:var(--faint);font-size:13px}.avatar{width:32px;height:32px;border-radius:50%;display:block;object-fit:cover;flex:none}.letter{display:grid;place-items:center;flex:none;background:#e8590c;color:#fff;font-size:14px;font-weight:600}.log,.history,.modal,.auth,.hero,.admin-list,.admin-log{overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--border) transparent}.mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:flex;align-items:center;justify-content:center;padding:24px;background:var(--mask)}.modal,.auth{width:min(420px,100%);display:flex;flex-direction:column;gap:12px}.modal{margin:0;padding:22px;border:1px solid var(--line);border-radius:16px;background:var(--surface);color:var(--text);box-shadow:var(--shadow)}.modal h2,.auth h1{margin:0;font-size:18px;font-weight:600}.auth h1{font-size:28px}.modal p{margin:0}.auth{min-height:100vh;margin:0 auto;justify-content:center;padding:32px 0 48px;background:transparent}.auth-bar{position:fixed;top:calc(12px + env(safe-area-inset-top));right:calc(12px + env(safe-area-inset-right))}.brand{margin:0;color:var(--muted);font-size:13px;letter-spacing:.08em}.theme-toggle{border:0;border-radius:8px;background:transparent;color:var(--muted);padding:6px 10px}.theme-toggle:hover{background:var(--hover);color:var(--text)}.auth label,.modal label{display:flex;flex-direction:column;gap:6px;font-size:14px}.auth input:not([type=file]),.modal input:not([type=file]){border:1px solid var(--border);border-radius:12px;background:var(--bg);color:var(--text);padding:12px 14px;-webkit-appearance:none;-moz-appearance:none;appearance:none}.modal input[type=file]{max-width:100%;font-size:14px}.modal-actions{display:flex;justify-content:flex-end;gap:8px}.modal-actions button,.auth button,.admin-bar button{border:0;border-radius:999px;background:transparent;color:var(--text);padding:8px 16px}.modal-actions button:hover,.auth button:hover,.admin-bar button:hover{background:var(--hover)}.auth button[type=submit],.modal button[type=submit]{background:var(--accent);color:var(--on-accent)}.auth button[type=submit]:hover,.modal button[type=submit]:hover{background:var(--accent-strong)}.modal button.danger{background:var(--danger-fill);color:var(--on-danger)}.modal button.danger:hover{background:#a62e26}.linkish{background:transparent!important;color:var(--link)}.admin{position:fixed;z-index:45;top:var(--vv-top, 0px);left:0;right:0;display:flex;flex-direction:column;height:100vh;height:var(--vv-height, 100dvh);padding:calc(16px + env(safe-area-inset-top)) calc(16px + env(safe-area-inset-right)) calc(16px + env(safe-area-inset-bottom)) calc(16px + env(safe-area-inset-left));background:var(--bg);color:var(--text)}.admin-wrap{width:min(720px,100%);margin:0 auto;flex:1;min-height:0;display:flex;flex-direction:column}.admin-bar{display:flex;align-items:center;gap:12px}.admin-bar h2{margin:0;min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:18px;font-weight:600}.admin-bar button{flex:none}.admin-list{flex:1;min-height:0;overflow:auto;display:flex;flex-direction:column;gap:8px;margin-top:16px}.admin-user,.admin-chat,.admin-picked{display:flex;align-items:center;gap:12px;width:100%;min-height:44px;padding:12px;border:0;border-radius:14px;background:var(--surface);color:inherit;text-align:left}.admin-user,.admin-chat{cursor:pointer;border:1px solid var(--line)}.admin-user:hover,.admin-chat:hover{background:var(--hover)}.admin-user>span:not(.avatar),.admin-chat>span,.admin-picked>span:not(.avatar){min-width:0;flex:1}.admin-user>.avatar,.admin-picked>.avatar,.admin-log .avatar{width:40px;height:40px;flex:none}.admin-user strong,.admin-chat strong,.admin-picked strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-user>span>em,.admin-chat em,.admin-picked em{display:block;margin-top:2px;color:var(--faint);font-size:12px;font-style:normal;font-weight:400}.admin-tag{margin-left:8px;color:var(--admin);font-size:12px;font-style:normal;font-weight:500}.admin-log{flex:1;min-height:0;overflow:auto;margin-top:16px}@media (max-width: 800px){html,body,#root{height:100%;overflow:hidden}.shell,.auth{position:fixed;top:var(--vv-top, 0px);left:0;right:0;height:var(--vv-height, 100dvh)}.shell{display:block;overflow:hidden}.page{padding:env(safe-area-inset-top) calc(12px + env(safe-area-inset-right)) calc(8px + env(safe-area-inset-bottom)) calc(12px + env(safe-area-inset-left))}.top{top:calc(8px + env(safe-area-inset-top));left:calc(8px + env(safe-area-inset-left))}.hero{padding:0 4px}.hero:before{flex-basis:52px}.hero h1{font-size:20px}.composer input,.auth input,.modal input{font-size:16px}.foot{margin-bottom:4px;font-size:11px}.side-mask{position:fixed;top:var(--vv-top, 0px);left:0;z-index:30;width:100%;height:var(--vv-height, 100dvh);margin:0;padding:0;border:0;border-radius:0;background:var(--mask);-webkit-appearance:none;-moz-appearance:none;appearance:none}.side{position:fixed;top:var(--vv-top, 0px);left:0;z-index:31;width:min(86vw,300px);height:var(--vv-height, 100dvh);padding:calc(8px + env(safe-area-inset-top)) 8px calc(10px + env(safe-area-inset-bottom)) calc(8px + env(safe-area-inset-left));transform:translate(-100%);visibility:hidden;transition:transform .24s ease,visibility 0s linear .24s}.side.open{transform:none;visibility:visible;transition:transform .24s ease,visibility 0s;box-shadow:12px 0 32px #00000029}.history-item,.history-delete{min-height:44px}.history-delete{opacity:1;width:44px;height:44px;color:var(--muted)}.history-item{padding-right:48px}.auth{width:auto;max-width:none;margin:0;overflow:auto;justify-content:center;justify-content:safe center;padding:calc(64px + env(safe-area-inset-top)) calc(20px + env(safe-area-inset-right)) calc(24px + env(safe-area-inset-bottom)) calc(20px + env(safe-area-inset-left));background:var(--bg)}.auth button[type=submit],.modal-actions button,.admin-bar button{min-height:44px}.mask{top:var(--vv-top, 0px);right:0;bottom:auto;left:0;height:var(--vv-height, 100dvh);align-items:flex-end;padding:0}.modal{width:min(560px,100%);max-height:calc(100% - env(safe-area-inset-top) - 8px);overflow:auto;border-radius:18px 18px 0 0;border-bottom:0;padding-top:22px;padding-bottom:calc(16px + env(safe-area-inset-bottom))}.modal:before{content:"";position:absolute;top:8px;left:50%;width:36px;height:4px;border-radius:999px;background:var(--border);transform:translate(-50%)}.modal{position:relative}.modal-actions button{flex:1}}@media (max-width: 800px) and (prefers-reduced-motion: reduce){.side{transition:none}}@media (prefers-reduced-motion: reduce){.pending:before{animation:none}}
