:root{--bg: #16130f;--surface: #1e1a15;--surface-2: #262119;--line: #2e2820;--ink: #ece4d6;--muted: #978b79;--faint: #6b6153;--claude: #d97757;--codex: #6fb8a8;--danger: #c96a5e;--warn: #d9a757;--font-display: "Songti TC", "Noto Serif TC", "Times New Roman", serif;--font-body: -apple-system, "PingFang TC", "Noto Sans TC", "Helvetica Neue", sans-serif;--font-mono: ui-monospace, "SF Mono", Menlo, monospace}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-body);font-size:15px;line-height:1.6;-webkit-font-smoothing:antialiased}button,input,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--warn);outline-offset:2px}.login{min-height:100%;display:grid;place-items:center;padding:24px}.login-card{width:min(360px,100%);display:flex;flex-direction:column;gap:14px}.wordmark{font-family:var(--font-display);font-size:42px;font-weight:600;letter-spacing:.04em;margin:0}.wordmark small{display:block;font-family:var(--font-body);font-size:13px;font-weight:400;color:var(--muted);letter-spacing:.14em;margin-top:6px}.field{display:flex;flex-direction:column;gap:5px}.field label{font-size:12px;letter-spacing:.1em;color:var(--muted)}.field input{background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:10px 12px}.field input::placeholder{color:var(--faint)}.btn{background:var(--surface-2);border:1px solid var(--line);border-radius:6px;padding:9px 14px;cursor:pointer;transition:border-color .15s}.btn:hover{border-color:var(--muted)}.btn-primary{background:var(--ink);color:var(--bg);border-color:var(--ink);font-weight:600}.error-text{color:var(--danger);font-size:13px;min-height:1.4em;margin:0}.room{height:100%;display:grid;grid-template-rows:auto 1fr auto;max-width:1080px;margin:0 auto;padding:0 16px}.room-main{display:grid;grid-template-columns:1fr;gap:24px;min-height:0}@media(min-width:900px){.room-main{grid-template-columns:1fr 260px}}.seats{display:flex;align-items:baseline;gap:18px;padding:14px 0 10px;border-bottom:1px solid var(--line);flex-wrap:wrap}.room-title{font-family:var(--font-display);font-size:22px;font-weight:600;margin:0 6px 0 0}.seat{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--muted)}.seat-dot{width:7px;height:7px;border-radius:50%;background:var(--muted)}.seat.ai .seat-dot{background:var(--seat-color)}.seat.ai.busy .seat-dot{animation:breathe 1.4s ease-in-out infinite}@keyframes breathe{0%,to{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.8)}}@media(prefers-reduced-motion:reduce){.seat.ai.busy .seat-dot{animation:none}*{transition:none!important}}.seat.ai{color:var(--seat-color)}.conn-status{margin-left:auto;font-size:12px;color:var(--faint)}.conn-status.offline{color:var(--warn)}.messages{overflow-y:auto;padding:18px 0 12px;display:flex;flex-direction:column;gap:14px;min-height:0}.msg{display:flex;flex-direction:column;gap:2px}.msg-meta{font-size:12px;color:var(--faint);display:flex;gap:8px;align-items:baseline}.msg-author{color:var(--muted);font-weight:600}.msg-body{white-space:pre-wrap;overflow-wrap:anywhere}.msg.ai .msg-body{border-left:2px solid var(--provider-color);background:var(--surface);border-radius:0 8px 8px 0;padding:10px 14px}.msg.ai .msg-author{color:var(--provider-color)}.msg.system .msg-body{color:var(--faint);font-size:13px}.msg.streaming .msg-body:after{content:"▍";color:var(--provider-color);animation:breathe 1s ease-in-out infinite}.msg.error .msg-body,.msg.interrupted .msg-body{opacity:.65}.msg-flag{font-size:12px;color:var(--warn)}.msg-flag button{background:none;border:none;color:var(--warn);text-decoration:underline;cursor:pointer;padding:0;font-size:12px}.msg-images{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px}.msg-images img{max-width:260px;max-height:200px;border-radius:6px;border:1px solid var(--line)}.composer{border-top:1px solid var(--line);padding:12px 0 16px;display:flex;flex-direction:column;gap:8px}.composer-row{display:flex;gap:8px;align-items:flex-end}.composer textarea{flex:1;background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:10px 12px;resize:none;min-height:42px;max-height:160px}.composer-hint{font-size:12px;color:var(--faint)}.invoke-btns{display:flex;gap:8px}.btn-invoke{font-size:13px;color:var(--muted)}.btn-invoke.claude:hover{border-color:var(--claude);color:var(--claude)}.btn-invoke.codex:hover{border-color:var(--codex);color:var(--codex)}.drop-active{outline:2px dashed var(--warn);outline-offset:-8px}.pending-files{display:flex;gap:8px;flex-wrap:wrap}.pending-file{font-size:12px;color:var(--muted);border:1px solid var(--line);border-radius:6px;padding:2px 8px;display:inline-flex;gap:6px;align-items:center}.usage-rail{padding:18px 0;display:flex;flex-direction:column;gap:12px;overflow-y:auto}.usage-card{border:1px solid var(--line);border-radius:8px;padding:12px 14px;display:flex;flex-direction:column;gap:8px;font-size:13px}.usage-card.alert{border-color:var(--danger)}.usage-head{display:flex;justify-content:space-between;align-items:baseline}.usage-provider{color:var(--provider-color);font-weight:700}.usage-state{color:var(--faint);font-size:12px}.meter{display:flex;flex-direction:column;gap:3px}.meter-label{display:flex;justify-content:space-between;color:var(--muted);font-size:12px}.meter-bar{height:4px;background:var(--surface-2);border-radius:2px;overflow:hidden}.meter-fill{height:100%;background:var(--provider-color)}.usage-card.alert .meter-fill.quota{background:var(--danger)}.usage-nums{color:var(--muted);font-family:var(--font-mono);font-size:12px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:grid;place-items:center;z-index:10}.modal{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:20px;width:min(420px,calc(100vw - 48px));display:flex;flex-direction:column;gap:12px}.modal h2{margin:0;font-size:16px}.modal p{margin:0;color:var(--muted);font-size:14px}.modal-actions{display:flex;justify-content:flex-end;gap:8px}.toast{position:fixed;bottom:20px;left:50%;transform:translate(-50%);background:var(--surface-2);border:1px solid var(--danger);color:var(--ink);border-radius:8px;padding:10px 16px;font-size:13px;z-index:20}
