:root{--bg: #0f1115;--panel: #171a21;--panel2: #1e222b;--border: #2a2f3a;--text: #e8eaed;--muted: #9aa3af;--accent: #7c5cff;--accent2: #5c8aff;--user: #2b3050;--err: #ff5c6c;--ok: #4cd97b;--sidebar-w: 280px;--sidebar-strip: 56px;--chat-w: 1080px}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);font:14px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}a{color:var(--accent2)}.app{display:flex;flex-direction:column;height:100vh}header.top{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 16px;background:var(--panel);border-bottom:1px solid var(--border)}.brand{display:flex;align-items:center;gap:10px;font-size:13px;font-weight:400;margin-right:auto;white-space:nowrap;flex:0 0 auto}.brand img{height:34px;width:auto;display:block}.brand .divider{width:1px;height:24px;background:var(--border)}.brand .sub{color:var(--muted);font-size:13px;display:inline-flex;align-items:center;gap:8px}.cost-wrap{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:12px;white-space:nowrap}.cost-wrap b{color:var(--ok);font-size:13px}.content{flex:1;display:flex;min-height:0;min-width:0;position:relative}main{flex:1;overflow-y:auto;padding:20px 16px;min-width:0}.chat-page{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0}.chat-page main{padding:0}aside.sidebar{width:var(--sidebar-w);flex:0 0 auto;background:var(--panel);border-right:1px solid var(--border);display:flex;flex-direction:column;min-height:0;transition:width .2s ease,flex-basis .2s ease;overflow:hidden}aside.sidebar.collapsed{width:var(--sidebar-strip)}aside.sidebar.collapsed .side-head,aside.sidebar.collapsed .chat-list{display:none}.side-strip{display:none}aside.sidebar.collapsed .side-strip{display:flex;flex-direction:column;align-items:center;justify-content:space-between;flex:1;padding:12px 0}.side-head{display:flex;flex-direction:column;gap:8px;padding:12px;border-bottom:1px solid var(--border)}.side-title{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.chat-list{flex:1;overflow-y:auto;min-height:0}.chat-item{display:flex;align-items:center;gap:8px;padding:10px 12px;width:100%;border:none;border-bottom:1px solid var(--border);border-left:3px solid transparent;background:none;color:inherit;text-align:left;cursor:pointer;font:inherit}.chat-item:hover{background:#1c212b}.chat-item.active{background:var(--user);border-left-color:var(--accent)}.chat-item .thumb{width:36px;height:36px;border-radius:8px;object-fit:cover;background:var(--panel2);flex:0 0 auto}.chat-item .ci-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.chat-item .ci-title{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-item .ci-sub{font-size:11px;color:var(--muted)}.chat-item .ci-actions{display:flex;gap:2px;flex:0 0 auto}.ci-btn{opacity:0;background:none;border:none;color:var(--muted);cursor:pointer;font-size:13px;padding:2px 4px;border-radius:6px;transition:opacity .15s,color .15s,background .15s}.chat-item:hover .ci-btn,.chat-item.active .ci-btn,.ci-btn:focus-visible{opacity:1}.ci-btn:hover{color:var(--text);background:#262b36}.ci-btn.del:hover{color:var(--err);background:#2a1e22}.side-foot{border-top:1px solid var(--border);padding:10px 12px}.side-user{display:flex;align-items:center;gap:10px;width:100%;padding:8px;border-radius:10px;background:none;border:none;color:inherit;cursor:pointer;text-align:left;font:inherit}.side-user:hover{background:#1c212b}.side-user .uinfo{min-width:0;display:flex;flex-direction:column}.side-user .uname{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.side-user .urole{font-size:11px;color:var(--muted)}.avatar{width:34px;height:34px;border-radius:50%;flex:0 0 auto;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;font-size:13px;font-weight:600;letter-spacing:.02em}@media(max-width:720px){aside.sidebar{position:absolute;inset:0 auto 0 0;z-index:30;box-shadow:0 0 40px #0009}aside.sidebar.collapsed{width:0;border-right:none}.scrim{position:absolute;inset:0;background:#00000080;z-index:20;border:none;cursor:pointer}}#messages{max-width:var(--chat-w);margin:0 auto;display:flex;flex-direction:column;gap:18px;padding:20px 16px}.empty{text-align:center;color:var(--muted);margin-top:15vh;padding:0 20px}.empty .big{font-size:40px;margin-bottom:12px}.msg{display:flex;flex-direction:column;gap:8px}.msg .who{font-size:12px;color:var(--muted);font-weight:600}.msg .bubble{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:12px 14px;white-space:pre-wrap;word-wrap:break-word;max-width:90%}.msg.user{align-items:flex-end}.msg.user .who{order:2}.msg.user .bubble{background:var(--user);border-color:#3a4170}.msg.ai{align-items:flex-start}.thumbs{display:flex;gap:8px;flex-wrap:wrap}.thumbs img{height:90px;border-radius:10px;border:1px solid var(--border);object-fit:cover;cursor:pointer}.result{display:flex;flex-direction:column;gap:8px;max-width:100%}.chat-head-wrap{flex:0 0 auto;background:var(--panel);border-bottom:1px solid var(--border);padding:12px 16px}.chat-head{max-width:var(--chat-w);margin:0 auto;display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:12px;color:var(--muted)}.chat-head .ch-title{font-size:14px;color:var(--text);font-weight:600}.chat-head .ch-model{display:inline-flex;align-items:center;gap:6px}.chat-head .ch-model.unknown{font-style:italic}.result img{max-width:100%;max-height:520px;border-radius:14px;border:1px solid var(--border);cursor:pointer;background:#000}.meta{display:flex;align-items:center;gap:10px;font-size:12px;color:var(--muted);flex-wrap:wrap}.meta .cost{color:var(--ok);font-weight:600}.pending{display:flex;align-items:center;gap:10px;color:var(--muted)}.btn{background:var(--panel2);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:6px 12px;font-size:12px;cursor:pointer;text-decoration:none;transition:background .15s;display:inline-flex;align-items:center;gap:6px}.btn:hover:not(:disabled){background:#262b36}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.btn.primary:hover:not(:disabled){background:#8f74ff}.btn.danger{color:var(--err);border-color:#3a2630}.btn:disabled{opacity:.5;cursor:default}.btn.icon{padding:4px 8px}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}input,select,textarea{background:var(--panel2);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:7px 8px;font-size:13px;font-family:inherit}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent)}textarea{width:100%;border-radius:12px;padding:12px 14px;resize:vertical;min-height:60px;max-height:180px;font:inherit}label.field{display:flex;flex-direction:column;gap:6px;font-size:12px;color:var(--muted)}label.field input,label.field select{color:var(--text)}footer.composer{border-top:1px solid var(--border);background:var(--panel);padding:12px 16px}.composer-inner{max-width:var(--chat-w);margin:0 auto;display:flex;flex-direction:column;gap:10px}.attach-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.attach-row .thumbs img{height:64px;border-color:var(--accent)}.input-row{display:flex;gap:10px;align-items:stretch}.input-row textarea{flex:1;min-width:0}.input-row .send{padding:10px 22px;font-size:14px;white-space:nowrap}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.row label{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:6px}.grow{flex:1}.hint{font-size:12px;color:var(--muted)}.err{color:var(--err);font-size:13px}.ok{color:var(--ok);font-size:13px}.spin{width:18px;height:18px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:rot .8s linear infinite;display:inline-block;flex:0 0 auto}@keyframes rot{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){aside.sidebar,.ci-btn,.btn{transition:none!important}.spin{animation-duration:2s}}.toast{position:fixed;bottom:20px;left:50%;transform:translate(-50%);background:var(--panel2);border:1px solid var(--border);border-radius:10px;padding:10px 16px;font-size:13px;z-index:200;box-shadow:0 4px 20px #00000080;max-width:90vw}.lightbox{position:fixed;inset:0;background:#000000d9;z-index:300;display:flex;align-items:center;justify-content:center;cursor:zoom-out;border:none;width:100%}.lightbox img{max-width:92vw;max-height:92vh;border-radius:8px;box-shadow:0 8px 40px #000000b3}.lightbox .close-x{position:fixed;top:16px;right:24px;color:#fff;font-size:32px;line-height:1}.modal-backdrop{position:fixed;inset:0;background:#0009;z-index:250;display:flex;align-items:center;justify-content:center;padding:20px}.modal{width:100%;max-width:400px;background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:18px;display:flex;flex-direction:column;gap:12px;box-shadow:0 12px 48px #0009}.modal h3{font-size:15px;font-weight:600}.modal-body{font-size:13px;color:var(--text);display:flex;flex-direction:column;gap:8px}.modal-actions{display:flex;gap:10px;justify-content:flex-end}.page{max-width:860px;margin:0 auto;display:flex;flex-direction:column;gap:16px}.page h2{font-size:18px;font-weight:600}.card{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:16px;display:flex;flex-direction:column;gap:12px}.card h3{font-size:14px;font-weight:600}.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.auth-card{width:100%;max-width:420px;background:var(--panel);border:1px solid var(--border);border-radius:16px;padding:24px;display:flex;flex-direction:column;gap:14px}.auth-card .logo{height:46px;width:auto;align-self:center}table{width:100%;border-collapse:collapse;font-size:13px}th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border);vertical-align:middle}th{color:var(--muted);font-weight:500;font-size:12px}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:11px;border:1px solid var(--border);color:var(--muted)}.badge.ok{color:var(--ok);border-color:#234}.badge.warn{color:#ffcf5c;border-color:#3a3222}.badge.err{color:var(--err);border-color:#3a2630}.switch{display:flex;align-items:center;gap:10px;font-size:13px;cursor:pointer;width:fit-content}.switch input{width:18px;height:18px;accent-color:var(--accent);cursor:pointer}.stat-num{font-size:20px;font-weight:600}.stat-label{font-size:12px;color:var(--muted)}
