:root{color-scheme:light;--bg:#eef0f3;--bg-soft:#f6f7f9;--panel:#ffffff;--panel-2:#f8f9fb;--text:#1f2937;--muted:#6b7280;--placeholder:#9ca3af;--line:#d6dae0;--line-soft:#e6e9ee;--accent:#6f8197;--accent-strong:#53677f;--accent-soft:#e9eef5;--danger:#c96b6b;--danger-soft:#fff1f1;--success:#3f8f6b;--success-soft:#edf8f2;--radius:16px;--text-size:14px}*{box-sizing:border-box}body,html{padding:0;margin:0;min-height:100%;background:radial-gradient(circle at 10% 0,rgba(255,255,255,.85),transparent 34%),linear-gradient(135deg,#f3f4f6,#e9edf2);color:var(--text);font-size:var(--text-size);font-family:Aptos,Microsoft YaHei UI,PingFang SC,Noto Sans CJK SC,sans-serif}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{transition:background .15s ease,border-color .15s ease,transform .12s ease}button:hover:not(:disabled){transform:translateY(-1px)}.shell{min-height:100vh;display:grid;place-items:center;padding:24px}.attachment-chip,.card,.character-card,.file-card,.import-box,.panel,.provider-card{border:1px solid var(--line);background:var(--panel);box-shadow:0 12px 36px rgba(31,41,55,.08)}.card{width:min(100%,520px);border-radius:20px;padding:24px}.stack{display:grid;grid-gap:16px;gap:16px}.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.field{display:grid;grid-gap:7px;gap:7px}.field label{font-size:.92rem;font-weight:700;color:#374151}.field input,.field select,.field textarea{width:100%;border-radius:12px;border:1px solid var(--line);background:#ffffff;color:var(--text);padding:11px 13px;outline:none}.field input::placeholder,.field textarea::placeholder{color:var(--placeholder)}.field input:focus,.field select:focus,.field textarea:focus{border-color:#aebccc;box-shadow:0 0 0 3px rgba(111,129,151,.14)}.field textarea{min-height:116px;resize:vertical}.textarea-medium{min-height:140px!important}.textarea-large{min-height:190px!important}.hint{margin:0;color:var(--muted);font-size:.84rem;line-height:1.45}.password-row{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-gap:8px;gap:8px}.password-toggle{min-width:72px;padding-inline:12px}.button{border:1px solid transparent;border-radius:12px;padding:10px 15px;background:var(--accent);color:#ffffff;font-weight:700;cursor:pointer}.button:hover:not(:disabled){background:var(--accent-strong)}.button:disabled,.icon-button:disabled{cursor:not-allowed;opacity:.55}.button.secondary{background:var(--panel-2);color:var(--text);border-color:var(--line)}.button.secondary:hover:not(:disabled){background:var(--accent-soft);border-color:#c7d0dc}.button.danger{background:var(--danger-soft);border-color:rgba(201,107,107,.42);color:#a74747}.button.danger:hover:not(:disabled){background:#ffe6e6}.panel{border-radius:18px;padding:16px}.muted{color:var(--muted)}.grid{display:grid;grid-gap:16px;gap:16px}.app-frame{min-height:100vh;display:grid;grid-template-columns:320px minmax(0,1fr) 480px;background:transparent}.app-frame.settings-collapsed{grid-template-columns:320px minmax(0,1fr)}.chat-pane,.settings-pane,.sidebar{min-height:100vh;padding:18px}.settings-pane,.sidebar{background:rgba(248,249,251,.86);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.sidebar{border-right:1px solid var(--line)}.settings-pane{border-left:1px solid var(--line)}.chat-pane{display:grid;grid-template-rows:auto auto auto minmax(0,1fr) auto auto;grid-gap:16px;gap:16px;min-width:0;background:rgba(255,255,255,.48)}.settings-pane,.split-sidebar{max-height:100vh;overflow:auto}.split-sidebar{display:grid;align-content:start;grid-gap:18px;gap:18px}.sidebar-section{border-top:1px solid var(--line);padding-top:18px}.toolbar,.topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.topbar h1{margin:0;font-size:24px;letter-spacing:-.02em}.topbar p{margin:6px 0 0}.chat-meta{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.chat-meta span{display:inline-flex;border:1px solid var(--line);border-radius:999px;background:var(--panel);color:var(--muted);padding:5px 9px;font-size:.84rem}.icon-button{width:34px;height:34px;border:1px solid var(--line);border-radius:10px;background:var(--panel);color:var(--text);cursor:pointer}.list{display:grid;grid-gap:8px;gap:8px;margin-top:14px}.list.compact{max-height:240px;overflow:auto}.list-item{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;min-height:42px;border:1px solid transparent;border-radius:12px;background:transparent;color:var(--text);padding:8px 10px;text-align:left;cursor:pointer}.list-item.active,.list-item:hover{border-color:var(--line);background:var(--panel)}.avatar{display:grid;place-items:center;width:34px;height:34px;overflow:hidden;border-radius:12px;background:linear-gradient(135deg,#dbe2ec,#f5f7fa);color:#52677f;font-weight:800;border:1px solid var(--line)}.avatar img{width:100%;height:100%;object-fit:cover}.avatar-large{width:82px;height:82px;border-radius:24px;font-size:28px}.messages{overflow:auto;display:flex;flex-direction:column;gap:12px;padding:8px 2px}.message{max-width:min(720px,86%);border:1px solid var(--line);border-radius:16px;padding:12px 14px;line-height:1.6;white-space:pre-wrap;box-shadow:0 8px 22px rgba(31,41,55,.06)}.message.user{align-self:flex-end;background:#e7edf5}.message.assistant{align-self:flex-start;background:#ffffff}.composer{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-gap:10px;gap:10px}.composer textarea{min-height:62px;max-height:180px;resize:vertical;border:1px solid var(--line);border-radius:16px;background:#ffffff;color:var(--text);padding:13px;outline:none}.composer textarea:focus{border-color:#aebccc;box-shadow:0 0 0 3px rgba(111,129,151,.14)}.toggle{display:flex;align-items:center;gap:10px;color:var(--muted)}.error-line,.success-line{margin:0;border-radius:12px;padding:10px 12px}.error-line{color:#9f3a3a;background:var(--danger-soft);border:1px solid rgba(201,107,107,.28)}.success-line{color:#2f7557;background:var(--success-soft);border:1px solid rgba(63,143,107,.2)}.full-width{width:100%;margin-top:12px}.composer-actions{display:grid;grid-gap:8px;gap:8px;align-content:end}.attachment-list,.pending-files{display:flex;flex-wrap:wrap;gap:8px}.attachment-chip,.file-card,.import-box,.provider-card{border-radius:14px}.file-card{display:grid;grid-gap:6px;gap:6px;width:min(220px,100%);padding:10px;color:var(--muted)}.file-card strong{color:var(--text)}.file-card img{max-width:100%;max-height:120px;object-fit:cover;border-radius:10px}.attachment-chip{display:inline-flex;margin-top:8px;padding:4px 8px;font-size:.85rem;color:var(--muted)}.import-box,.provider-card{display:grid;grid-gap:12px;gap:12px;padding:12px}.character-card-list{display:grid;grid-gap:12px;gap:12px;margin-top:14px}.character-card{display:grid;grid-gap:10px;gap:10px;border-radius:16px;padding:12px}.character-card.active{border-color:#b8c5d4;background:#f6f8fb}.character-main{display:grid;grid-template-columns:auto minmax(0,1fr);grid-gap:10px;gap:10px;border:0;padding:0;background:transparent;color:var(--text);text-align:left;cursor:pointer}.character-main small{display:block;margin-top:4px;color:var(--muted);line-height:1.35}.card-actions{justify-content:flex-end}.card-actions .button{padding:7px 10px}.character-editor{gap:14px}.tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:6px;gap:6px;border:1px solid var(--line);border-radius:14px;background:var(--panel-2);padding:5px}.mobile-tabs{display:none}.tab{border:0;border-radius:10px;background:transparent;color:var(--muted);padding:9px 8px;cursor:pointer}.tab.active{background:#ffffff;color:var(--text);box-shadow:0 4px 14px rgba(31,41,55,.08)}.tab-panel{display:grid;grid-gap:15px;gap:15px}.avatar-editor{grid-template-columns:auto minmax(0,1fr);align-items:center}.api-layout,.avatar-editor{display:grid;grid-gap:14px;gap:14px}.compact-mode .card,.compact-mode .message,.compact-mode .panel{padding:10px}.game-shell{min-height:100vh;display:grid;place-items:center;padding:20px;background:linear-gradient(135deg,#f3f4f6,#e8edf3)}.game-panel{width:min(96vw,720px)}.game-title{margin:0}.gomoku-board{display:grid;grid-template-columns:repeat(15,minmax(18px,1fr));width:min(90vw,620px);aspect-ratio:1;margin:0 auto;border:2px solid #9c825f;background:linear-gradient(#ad936d 1px,transparent 0),linear-gradient(90deg,#ad936d 1px,transparent 0),#dec08c;background-size:calc(100% / 15) calc(100% / 15)}.gomoku-cell{display:grid;place-items:center;border:0;background:transparent;cursor:pointer}.piece{width:72%;height:72%;border-radius:999px;box-shadow:0 2px 8px rgba(31,41,55,.28)}.piece.black{background:radial-gradient(circle at 35% 28%,#4b5563,#111827 58%)}.piece.white{background:radial-gradient(circle at 35% 28%,#fff,#e5e7eb 62%)}@media (max-width:1180px){.app-frame,.app-frame.settings-collapsed{grid-template-columns:280px minmax(0,1fr)}.settings-pane{grid-column:1/-1;min-height:auto;max-height:none;border-left:0;border-top:1px solid var(--line)}}@media (max-width:820px){.app-frame,.app-frame.settings-collapsed{grid-template-columns:1fr}.mobile-tabs{position:-webkit-sticky;position:sticky;top:0;z-index:10;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-gap:6px;gap:6px;padding:10px;background:rgba(246,247,249,.94);border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.chat-pane,.settings-pane,.sidebar{min-height:auto}.split-sidebar{max-height:none}.composer,.composer-actions{grid-template-columns:1fr}.tabs{grid-template-columns:repeat(2,minmax(0,1fr))}.app-frame[data-mobile-panel=api] .character-editor-section,.app-frame[data-mobile-panel=api] .chat-pane,.app-frame[data-mobile-panel=api] .sidebar,.app-frame[data-mobile-panel=api] .tools-section,.app-frame[data-mobile-panel=characters] .api-section,.app-frame[data-mobile-panel=characters] .chat-pane,.app-frame[data-mobile-panel=characters] .session-section,.app-frame[data-mobile-panel=characters] .tools-section,.app-frame[data-mobile-panel=chat] .settings-pane,.app-frame[data-mobile-panel=chat] .sidebar,.app-frame[data-mobile-panel=sessions] .chat-pane,.app-frame[data-mobile-panel=sessions] .role-section,.app-frame[data-mobile-panel=sessions] .settings-pane,.app-frame[data-mobile-panel=tools] .api-section,.app-frame[data-mobile-panel=tools] .character-editor-section,.app-frame[data-mobile-panel=tools] .chat-pane,.app-frame[data-mobile-panel=tools] .sidebar{display:none}}