:root{--color-primary:#2563eb;--color-primary-hover:#1d4ed8;--color-primary-light:#eff6ff;--color-primary-border:#bfdbfe;--color-bg:#f8fafc;--color-surface:#fff;--color-border:#e2e8f0;--color-border-light:#f1f5f9;--color-text:#0f172a;--color-text-secondary:#475569;--color-text-muted:#64748b;--color-success:#059669;--color-success-bg:#ecfdf5;--color-success-border:#a7f3d0;--color-error:#dc2626;--color-error-bg:#fef2f2;--color-error-border:#fecaca;--color-warning:#d97706;--color-warning-bg:#fffbeb;--color-warning-border:#fde68a;--color-info:#0284c7;--color-info-bg:#f0f9ff;--color-info-border:#bae6fd;--color-purple:#7c3aed;--color-purple-bg:#f5f3ff;--color-purple-border:#ddd6fe;--space-xs:4px;--space-sm:8px;--space-md:12px;--space-lg:16px;--space-xl:24px;--space-2xl:32px;--radius-sm:6px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--shadow-sm:0 1px 2px #0000000d;--shadow-md:0 4px 6px -1px #00000012, 0 2px 4px -2px #0000000d;--shadow-lg:0 10px 15px -3px #00000014, 0 4px 6px -4px #0000000a;--shadow-card:0 1px 3px #0000000f, 0 1px 2px #0000000a;--font-sans:system-ui, -apple-system, "Segoe UI", Roboto, "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;--font-mono:"Cascadia Code", Consolas, "Courier New", monospace;--sidebar-width:260px;--info-panel-width:320px}*{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-sans);background:var(--color-bg);color:var(--color-text);line-height:1.5;overflow:hidden}#root{min-height:100vh}.auth-loading{min-height:100vh;color:var(--color-text-muted);place-items:center;font-size:14px;display:grid}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--color-text-muted)}::selection{color:var(--color-text);background:#2563eb26}.sidebar{width:var(--sidebar-width);background:var(--color-surface);border-right:1px solid var(--color-border);z-index:100;flex-direction:column;height:100vh;display:flex;position:fixed;top:0;left:0;overflow-y:auto}.sidebar-header{padding:var(--space-xl) var(--space-lg);border-bottom:1px solid var(--color-border-light)}.sidebar-logo{align-items:flex-start;gap:var(--space-md);display:flex}.logo-icon{width:32px;height:32px;color:var(--color-primary);border:1px solid var(--color-primary-border);background:var(--color-primary-light);border-radius:10px;flex-shrink:0;place-items:center;display:grid}.logo-text{min-width:0}.logo-title{color:var(--color-text);letter-spacing:-.02em;margin:0;font-size:16px;font-weight:700;line-height:1.3}.logo-subtitle{color:var(--color-text-muted);margin:4px 0 0;font-size:12px;line-height:1.4}.sidebar-nav{padding:var(--space-lg) var(--space-md);flex:1}.nav-section-label{text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);padding:0 var(--space-sm) var(--space-sm);margin-bottom:var(--space-xs);font-size:11px;font-weight:600}.nav-item{align-items:flex-start;gap:var(--space-md);width:100%;padding:var(--space-md) var(--space-md);border-radius:var(--radius-md);cursor:pointer;text-align:left;margin-bottom:var(--space-xs);background:0 0;border:none;transition:all .15s;display:flex;position:relative}.nav-item:hover:not(:disabled){background:var(--color-primary-light)}.nav-item.active{background:var(--color-primary-light);border:1px solid var(--color-primary-border)}.nav-item:disabled{opacity:.5;cursor:not-allowed}.nav-icon{width:30px;height:30px;color:var(--color-text-muted);border-radius:var(--radius-sm);background:var(--color-bg);flex-shrink:0;place-items:center;display:grid}.nav-item.active .nav-icon{color:var(--color-primary);background:var(--color-surface)}.nav-content{flex-direction:column;min-width:0;display:flex}.nav-label{color:var(--color-text);font-size:14px;font-weight:600;line-height:1.3}.nav-desc{color:var(--color-text-muted);margin-top:2px;font-size:11px;line-height:1.4}.nav-active-dot{background:var(--color-primary);border-radius:50%;width:6px;height:6px;position:absolute;top:50%;right:12px;transform:translateY(-50%)}.sidebar-footer{padding:var(--space-lg);border-top:1px solid var(--color-border-light)}.env-badge{align-items:center;gap:var(--space-sm);color:var(--color-success);font-size:12px;font-weight:500;display:flex}.env-dot{background:var(--color-success);border-radius:50%;width:6px;height:6px}.env-info{color:var(--color-text-muted);margin-top:var(--space-xs);font-size:11px}@media (width<=1024px){.sidebar{display:none}}.ui-icon{flex-shrink:0;display:block}.info-panel{width:var(--info-panel-width);gap:var(--space-md);height:100vh;padding:var(--space-lg);border-left:1px solid var(--color-border);z-index:100;background:#f4f7fb;flex-direction:column;display:flex;position:fixed;top:0;right:0;overflow-y:auto}.info-panel.inline-details{display:none}.info-panel-heading{padding:4px 2px var(--space-sm)}.info-panel-kicker{color:var(--color-primary);letter-spacing:.1em;margin-bottom:3px;font-size:10px;font-weight:700;display:block}.info-panel-heading h2{color:var(--color-text);margin:0;font-size:16px;line-height:1.35}.info-panel-heading p{color:var(--color-text-muted);margin:3px 0 0;font-size:11px}.info-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-lg);box-shadow:var(--shadow-card)}.info-card-overview{border-top:3px solid var(--color-primary)}.info-card-header{align-items:flex-start;gap:var(--space-sm);margin-bottom:var(--space-md);display:flex}.info-card-icon{border-radius:var(--radius-sm);background:var(--color-primary-light);width:28px;height:28px;color:var(--color-primary);flex-shrink:0;place-items:center;display:grid}.info-card-title{color:var(--color-text);letter-spacing:-.01em;margin:0;font-size:13px;font-weight:650;line-height:1.35}.info-card-caption{color:var(--color-text-muted);margin:2px 0 0;font-size:11px}.meta-list{flex-direction:column;gap:10px;display:flex}.meta-item{justify-content:space-between;align-items:baseline;gap:var(--space-sm);display:flex}.meta-label{color:var(--color-text-muted);flex-shrink:0;font-size:12px}.meta-value{align-items:center;gap:var(--space-xs);min-width:0;color:var(--color-text);text-align:right;word-break:break-all;font-size:12px;font-weight:550;display:flex}.meta-value.mono{font-family:var(--font-mono);font-size:11px;font-weight:400}.meta-value.tone-success{color:var(--color-success)}.meta-value.tone-error{color:var(--color-error)}.copy-btn-sm{border:1px solid var(--color-primary-border);background:var(--color-primary-light);color:var(--color-primary);cursor:pointer;border-radius:4px;flex-shrink:0;padding:1px 6px;font-size:10px;transition:all .15s}.copy-btn-sm:hover{border-color:var(--color-primary)}.info-empty{align-items:center;gap:var(--space-sm);padding:var(--space-lg) var(--space-sm);color:var(--color-text-muted);text-align:center;flex-direction:column;font-size:12px;line-height:1.5;display:flex}.info-empty.compact{padding:var(--space-sm) 0;text-align:left;display:block}.sources-list{gap:var(--space-sm);flex-direction:column;display:flex}.source-item{align-items:flex-start;gap:var(--space-sm);border:1px solid var(--color-border-light);border-radius:var(--radius-sm);background:var(--color-bg);padding:10px;display:flex}.source-index{background:var(--color-primary-light);width:18px;height:18px;color:var(--color-primary);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;margin-top:1px;font-size:10px;font-weight:700;display:flex}.source-name{color:var(--color-text-secondary);font-family:var(--font-mono);word-break:break-all;font-size:11px;line-height:1.45}.technical-details{border:1px solid var(--color-border);border-radius:var(--radius-lg);background:#ffffffb8}.technical-details summary{align-items:center;gap:var(--space-sm);padding:var(--space-md) var(--space-lg);color:var(--color-text-secondary);cursor:pointer;font-size:12px;font-weight:600;list-style:none;display:flex}.technical-details summary::-webkit-details-marker{display:none}.technical-details summary:hover{color:var(--color-primary)}.technical-summary-icon{color:var(--color-text-muted)}.technical-summary-hint{color:var(--color-text-muted);margin-left:auto;font-size:10px;font-weight:400}.technical-body{padding:0 var(--space-lg) var(--space-lg);border-top:1px solid var(--color-border-light)}.technical-meta{gap:var(--space-sm);padding:var(--space-md) 0;border-bottom:1px solid var(--color-border-light);flex-direction:column;display:flex}.pipeline-chain{padding-top:var(--space-md);flex-direction:column;gap:9px;display:flex}.pipeline-step{align-items:flex-start;gap:var(--space-sm);display:flex}.pipeline-index{background:var(--color-border-light);width:18px;height:18px;color:var(--color-text-muted);border-radius:50%;flex-shrink:0;place-items:center;margin-top:1px;font-size:9px;font-weight:700;display:grid}.pipeline-node{flex-direction:column;min-width:0;display:flex}.pipeline-label{color:var(--color-text-secondary);letter-spacing:.04em;text-transform:uppercase;font-size:10px;font-weight:700}.pipeline-detail{color:var(--color-text-muted);font-family:var(--font-mono);word-break:break-all;margin-top:1px;font-size:10px;line-height:1.4}@media (width<=1024px){.info-panel:not(.inline-details){display:none}.info-panel.inline-details{width:auto;height:auto;max-height:45vh;margin:0 var(--space-xl) var(--space-md);padding:var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-lg);z-index:auto;display:flex;position:static;overflow-y:auto}}@media (width<=480px){.info-panel.inline-details{margin:0 var(--space-md) var(--space-md)}}.welcome{padding:var(--space-2xl);flex:1;justify-content:center;align-items:center;min-height:400px;display:flex}.welcome-content{text-align:center;max-width:520px}.welcome-icon{width:56px;height:56px;margin:0 auto var(--space-lg);color:var(--color-primary);border:1px solid var(--color-primary-border);background:linear-gradient(145deg, var(--color-surface), var(--color-primary-light));box-shadow:var(--shadow-sm);border-radius:18px;place-items:center;display:grid}.welcome-eyebrow{margin-bottom:var(--space-sm);color:var(--color-primary);letter-spacing:.08em;text-transform:uppercase;font-size:11px;font-weight:700;display:block}.welcome-title{color:var(--color-text);margin:0 0 var(--space-md);letter-spacing:-.02em;font-size:26px;font-weight:700}.welcome-desc{color:var(--color-text-secondary);margin:0 0 var(--space-2xl);font-size:14px;line-height:1.6}.quick-questions{text-align:center}.quick-label{color:var(--color-text-muted);text-transform:none;letter-spacing:.05em;margin-bottom:var(--space-md);font-size:12px;font-weight:600;display:block}.quick-grid{gap:var(--space-sm);grid-template-columns:repeat(2,1fr);display:grid}.quick-card{align-items:center;gap:var(--space-md);min-height:58px;padding:var(--space-md) var(--space-lg);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;text-align:left;transition:all .15s;display:flex}.quick-card:hover:not(:disabled){border-color:var(--color-primary-border);background:var(--color-primary-light);box-shadow:var(--shadow-sm)}.quick-card:disabled{opacity:.5;cursor:not-allowed}.quick-icon{border-radius:var(--radius-sm);background:var(--color-primary-light);width:32px;height:32px;color:var(--color-primary);flex-shrink:0;place-items:center;display:grid}.quick-text{color:var(--color-text);font-size:13px;font-weight:600}@media (width<=600px){.quick-grid{grid-template-columns:1fr}}.pending-action-card{margin-top:var(--space-md);padding:var(--space-lg);border:1px solid var(--color-primary-border);border-radius:var(--radius-lg);background:linear-gradient(145deg, var(--color-surface), var(--color-primary-light));box-shadow:var(--shadow-card);overflow:hidden}.action-card-header{justify-content:space-between;align-items:flex-start;gap:var(--space-md);display:flex}.action-eyebrow{color:var(--color-primary);letter-spacing:.08em;text-transform:uppercase;margin:0 0 2px;font-size:11px;font-weight:700}.action-card-header h3{color:var(--color-text);margin:0;font-size:16px}.action-status{background:var(--color-warning-bg);color:var(--color-warning);border-radius:999px;flex-shrink:0;padding:4px 10px;font-size:12px;font-weight:600}.phase-succeeded .action-status,.phase-cancelled .action-status{color:#065f46;background:#d1fae5}.phase-expired .action-status,.phase-error .action-status{background:var(--color-error-bg);color:var(--color-error)}.action-safety-note{margin:var(--space-md) 0;padding:var(--space-sm) var(--space-md);border-left:3px solid var(--color-primary);background:var(--color-primary-light);color:var(--color-text-secondary);font-size:12px;line-height:1.6}.action-summary-grid{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-border);grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;margin:0;display:grid;overflow:hidden}.action-summary-item{min-width:0;padding:var(--space-sm) var(--space-md);background:var(--color-surface)}.action-summary-item dt{color:var(--color-text-muted);font-size:11px}.action-summary-item dd{color:var(--color-text);overflow-wrap:anywhere;margin:2px 0 0;font-size:13px;font-weight:500}.action-buttons{gap:var(--space-sm);margin-top:var(--space-lg);display:flex}.action-btn{min-height:38px;padding:var(--space-sm) var(--space-lg);border-radius:var(--radius-sm);cursor:pointer;font-size:13px;font-weight:600}.action-btn-primary{border:1px solid var(--color-primary);background:var(--color-primary);color:#fff}.action-btn-secondary{border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-secondary)}.action-btn:disabled{cursor:not-allowed;opacity:.55}.action-result,.action-error{gap:var(--space-xs);margin-top:var(--space-md);padding:var(--space-md);border-radius:var(--radius-sm);background:var(--color-info-bg);color:var(--color-info);flex-direction:column;font-size:13px;display:flex}.action-result-success{color:#065f46;background:#d1fae5}.action-result-warning{background:var(--color-warning-bg);color:var(--color-warning)}.action-error{background:var(--color-error-bg);color:var(--color-error)}@media (width<=600px){.action-card-header,.action-buttons{flex-direction:column;align-items:stretch}.action-status{align-self:flex-start}.action-summary-grid{grid-template-columns:minmax(0,1fr)}.action-btn{width:100%}}.chat-message{gap:var(--space-md);padding:var(--space-lg) 0;max-width:100%;display:flex}.chat-message.user{justify-content:flex-end}.message-avatar{border-radius:var(--radius-md);background:var(--color-primary-light);border:1px solid var(--color-primary-border);flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;display:flex}.message-avatar .avatar-icon{color:var(--color-primary);font-size:16px;font-weight:700}.message-avatar.user-avatar{background:var(--color-text);border-color:var(--color-text)}.message-avatar.user-avatar .avatar-icon{color:#fff;font-size:13px}.message-body{flex:1;min-width:0;max-width:820px}.chat-message.user .message-body{text-align:right;max-width:65%}.message-header{align-items:center;gap:var(--space-sm);margin-bottom:var(--space-sm);flex-wrap:wrap;display:flex}.message-sender{color:var(--color-text);font-size:13px;font-weight:600}.msg-tags{gap:var(--space-xs);flex-wrap:wrap;display:flex}.msg-tag{border-radius:4px;padding:1px 8px;font-size:11px;font-weight:500;line-height:1.6}.tag-green{color:#065f46;background:#d1fae5}.tag-red{color:#991b1b;background:#fee2e2}.tag-blue{color:#1e40af;background:#dbeafe}.tag-purple{color:#6b21a8;background:#ede9fe}.tag-orange{color:#92400e;background:#fef3c7}.tag-gray{color:#374151;background:#e5e7eb}.access-denied-banner{padding:var(--space-sm) var(--space-md);background:var(--color-warning-bg);border:1px solid var(--color-warning-border);border-radius:var(--radius-sm);color:var(--color-warning);margin-bottom:var(--space-sm);font-size:12px;line-height:1.5}.unsupported-action{margin-top:var(--space-md);padding:var(--space-md);border:1px solid var(--color-warning-border);border-radius:var(--radius-sm);background:var(--color-warning-bg);color:var(--color-warning);font-size:13px}.message-reason{color:var(--color-text-muted);margin-bottom:var(--space-sm);padding:var(--space-sm) var(--space-md);background:var(--color-bg);border-radius:var(--radius-sm);font-size:12px}.message-content{color:var(--color-text);white-space:pre-wrap;word-break:break-word;padding:var(--space-md) var(--space-lg);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);font-size:14px;line-height:1.7}.chat-message.user .message-content{background:var(--color-primary);color:#fff;border-color:var(--color-primary);text-align:left;max-width:85%;margin-left:auto;display:inline-block}.message-actions{gap:var(--space-sm);margin-top:var(--space-sm);opacity:0;transition:opacity .15s;display:flex}.chat-message:hover .message-actions{opacity:1}.msg-copy-btn{border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text-muted);cursor:pointer;background:0 0;padding:3px 10px;font-size:11px;transition:all .15s}.msg-copy-btn:hover{background:var(--color-primary-light);border-color:var(--color-primary-border);color:var(--color-primary)}.loading-indicator{align-items:center;gap:var(--space-md);padding:var(--space-md) var(--space-lg);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);display:flex}.loading-dots{gap:4px;display:flex}.loading-dots span{background:var(--color-primary);border-radius:50%;width:6px;height:6px;animation:1.4s ease-in-out infinite both loadingBounce}.loading-dots span:first-child{animation-delay:-.32s}.loading-dots span:nth-child(2){animation-delay:-.16s}@keyframes loadingBounce{0%,80%,to{opacity:.4;transform:scale(0)}40%{opacity:1;transform:scale(1)}}.loading-text{color:var(--color-text-muted);font-size:13px}.markdown-body{word-break:break-word;overflow-wrap:break-word;line-height:1.7}.markdown-body p{margin:0 0 12px}.markdown-body p:last-child{margin-bottom:0}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin:16px 0 8px;font-weight:600;line-height:1.4}.markdown-body h1{font-size:18px}.markdown-body h2{font-size:16px}.markdown-body h3{font-size:15px}.markdown-body ul,.markdown-body ol{margin:8px 0;padding-left:24px}.markdown-body li,.markdown-body li>p{margin:4px 0}.markdown-body strong{color:var(--color-text);font-weight:600}.markdown-body em{font-style:italic}.markdown-body blockquote{border-left:3px solid var(--color-primary-border);background:var(--color-primary-light);color:var(--color-text-secondary);margin:12px 0;padding:8px 16px}.markdown-body blockquote p{margin:0}.markdown-body code{font-family:var(--font-mono);background:var(--color-bg);border:1px solid var(--color-border);color:var(--color-error);border-radius:4px;padding:2px 6px;font-size:13px}.markdown-body pre{border-radius:var(--radius-md);background:#1e293b;margin:12px 0;padding:16px;overflow-x:auto}.markdown-body pre code{color:#e2e8f0;background:0 0;border:none;padding:0;font-size:13px;line-height:1.5}.markdown-body a{color:var(--color-primary);text-decoration:none}.markdown-body a:hover{text-decoration:underline}.markdown-body table{border-collapse:collapse;width:100%;margin:12px 0;display:block;overflow-x:auto}.markdown-body thead{background:var(--color-bg)}.markdown-body th,.markdown-body td{border:1px solid var(--color-border);text-align:left;padding:8px 12px;font-size:13px}.markdown-body th{color:var(--color-text);font-weight:600}.markdown-body tr:nth-child(2n){background:var(--color-bg)}.markdown-body hr{border:none;border-top:1px solid var(--color-border);margin:16px 0}.markdown-body img{border-radius:var(--radius-sm);max-width:100%}.chat-input-area{padding:var(--space-lg) var(--space-xl);background:var(--color-surface);border-top:1px solid var(--color-border)}.chat-input-wrapper{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);transition:border-color .15s,box-shadow .15s;overflow:hidden}.chat-input-wrapper:focus-within{border-color:var(--color-primary);box-shadow:0 0 0 3px #2563eb1a}.chat-textarea{width:100%;padding:var(--space-md) var(--space-lg);font-size:14px;font-family:var(--font-sans);color:var(--color-text);resize:none;background:0 0;border:none;outline:none;min-height:44px;max-height:120px;line-height:1.5}.chat-textarea::placeholder{color:var(--color-text-muted)}.chat-textarea:disabled{background:var(--color-bg);cursor:not-allowed}.chat-input-footer{padding:var(--space-sm) var(--space-md);justify-content:space-between;align-items:center;display:flex}.char-count{color:var(--color-text-muted);font-size:11px}.char-count.over{color:var(--color-error);font-weight:600}.send-btn{align-items:center;gap:var(--space-xs);padding:var(--space-sm) var(--space-lg);background:var(--color-primary);color:#fff;border-radius:var(--radius-md);cursor:pointer;border:none;font-size:13px;font-weight:600;transition:all .15s;display:flex}.send-btn:hover:not(:disabled){background:var(--color-primary-hover);box-shadow:var(--shadow-md)}.send-btn:disabled{opacity:.5;cursor:not-allowed}.send-icon{font-size:14px;font-weight:700}.send-loading{align-items:center;gap:var(--space-xs);display:flex}.send-loading:after{content:"";border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:12px;height:12px;animation:.6s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.admin-log-console{min-width:0;height:100%;padding:var(--space-xl);gap:var(--space-lg);background:var(--color-bg);flex-direction:column;display:flex;overflow:auto}.admin-log-header{justify-content:space-between;align-items:center;gap:var(--space-md);display:flex}.admin-log-title{margin:0;font-size:20px;font-weight:700}.admin-log-subtitle{color:var(--color-text-muted);margin:3px 0 0;font-size:12px}.admin-log-actions{align-items:center;gap:var(--space-sm);display:flex}.admin-log-count{margin-right:var(--space-xs);background:var(--color-primary-light);color:var(--color-primary);border-radius:999px;padding:4px 9px;font-size:11px;font-weight:600}.admin-log-refresh,.admin-log-back{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);cursor:pointer;padding:7px 12px;font-size:13px;transition:all .15s}.admin-log-refresh:hover:not(:disabled),.admin-log-back:hover{border-color:var(--color-primary-border);background:var(--color-primary-light);color:var(--color-primary)}.admin-log-refresh:disabled{opacity:.6;cursor:not-allowed}.admin-log-filters{align-items:flex-end;gap:var(--space-md);padding:var(--space-lg);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-sm);flex-wrap:wrap;display:flex}.admin-log-filter{color:var(--color-text-secondary);flex-direction:column;gap:5px;font-size:12px;font-weight:600;display:flex}.admin-log-filter select,.admin-log-filter input{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);min-width:160px;color:var(--color-text);outline:none;padding:8px 10px;font-size:13px;font-weight:400}.admin-log-filter input{min-width:240px}.admin-log-filter select:focus,.admin-log-filter input:focus{border-color:var(--color-primary);box-shadow:0 0 0 2px #2563eb1a}.admin-log-error{border:1px solid var(--color-error-border);border-radius:var(--radius-sm);background:var(--color-error-bg);color:var(--color-error);margin:0;padding:10px 12px;font-size:13px}.admin-log-empty{padding:var(--space-xl);border:1px dashed var(--color-border);border-radius:var(--radius-md);color:var(--color-text-muted);text-align:center;margin:0;font-size:13px}.admin-log-table-wrap{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);width:100%;min-width:0;max-width:100%;box-shadow:var(--shadow-sm);overflow-x:auto}.admin-log-table{border-collapse:collapse;width:100%;min-width:980px;font-size:13px}.admin-log-pagination{justify-content:flex-end;align-items:center;gap:var(--space-sm);color:var(--color-text-secondary);font-size:12px;display:flex}.admin-log-pagination button{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);cursor:pointer;padding:6px 11px}.admin-log-pagination button:disabled{opacity:.5;cursor:not-allowed}.admin-log-table th,.admin-log-table td{border-bottom:1px solid var(--color-border-light);text-align:left;white-space:nowrap;padding:10px 12px}.admin-log-table thead th{color:var(--color-text-secondary);letter-spacing:.03em;text-transform:uppercase;background:#f1f5f9;font-size:11px;font-weight:700;position:sticky;top:0}.admin-log-table tbody tr{transition:background .12s}.admin-log-table tbody tr:hover{background:var(--color-primary-light)}.admin-log-cell-time{color:var(--color-text-secondary);font-family:var(--font-mono,monospace);font-size:12px}.admin-log-cell-category{color:var(--color-text-secondary);font-weight:600}.admin-log-cell-event{text-overflow:ellipsis;max-width:230px;font-family:var(--font-mono,monospace);font-size:12px;overflow:hidden}.admin-log-cell-trace{max-width:220px;color:var(--color-text-secondary);font-family:var(--font-mono,monospace);text-overflow:ellipsis;font-size:12px;overflow:hidden}.admin-log-cell-message{max-width:360px;color:var(--color-text-secondary);text-overflow:ellipsis;overflow:hidden}.admin-log-level{letter-spacing:.02em;border-radius:999px;padding:2px 8px;font-size:11px;font-weight:700;display:inline-block}.admin-log-level-INFO{color:#15803d;background:#2ea04326}.admin-log-level-WARN{color:#a16207;background:#d491002e}.admin-log-level-ERROR{color:#b91c1c;background:#c0392b2e}.mock-oa-console{min-width:0;height:100%;padding:var(--space-xl);gap:var(--space-lg);background:var(--color-bg);flex-direction:column;display:flex;overflow:auto}.mock-oa-header,.mock-oa-card-header,.mock-oa-actions,.mock-oa-card-actions{align-items:center;display:flex}.mock-oa-header{justify-content:space-between;gap:var(--space-md)}.mock-oa-title{margin:0;font-size:20px;font-weight:700}.mock-oa-subtitle{color:var(--color-text-muted);margin:3px 0 0;font-size:12px}.mock-oa-actions,.mock-oa-card-actions{gap:var(--space-sm)}.mock-oa-count{margin-right:var(--space-xs);background:var(--color-primary-light);color:var(--color-primary);border-radius:999px;padding:4px 9px;font-size:11px;font-weight:600}.mock-oa-refresh,.mock-oa-back,.mock-oa-approve,.mock-oa-reject{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);cursor:pointer;padding:7px 12px;font-size:13px}.mock-oa-refresh:hover:not(:disabled),.mock-oa-back:hover,.mock-oa-approve:hover:not(:disabled),.mock-oa-reject:hover:not(:disabled){border-color:var(--color-primary-border);background:var(--color-primary-light);color:var(--color-primary)}.mock-oa-refresh:disabled,.mock-oa-approve:disabled,.mock-oa-reject:disabled{cursor:not-allowed;opacity:.55}.mock-oa-notice,.mock-oa-error,.mock-oa-empty{border-radius:var(--radius-sm);margin:0;padding:10px 12px;font-size:13px}.mock-oa-notice{color:#166534;background:#f0fdf4;border:1px solid #bbf7d0}.mock-oa-error{border:1px solid var(--color-error-border);background:var(--color-error-bg);color:var(--color-error)}.mock-oa-empty{border:1px dashed var(--color-border);color:var(--color-text-muted);text-align:center}.mock-oa-list{gap:var(--space-lg);grid-template-columns:repeat(auto-fill,minmax(330px,1fr));align-items:start;display:grid}.mock-oa-card{padding:var(--space-lg);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-sm)}.mock-oa-card-header{justify-content:space-between;gap:var(--space-md);margin-bottom:var(--space-lg)}.mock-oa-card-header h3{color:var(--color-text);margin:0;font-size:15px}.mock-oa-card-header p{color:var(--color-text-muted);font-family:var(--font-mono,monospace);margin:5px 0 0;font-size:11px}.mock-oa-status{border-radius:999px;flex-shrink:0;padding:4px 9px;font-size:12px;font-weight:700}.mock-oa-status-PENDING{color:#92400e;background:#fef3c7}.mock-oa-status-APPROVED{color:#166534;background:#dcfce7}.mock-oa-status-REJECTED{color:#991b1b;background:#fee2e2}.mock-oa-details{gap:var(--space-md);margin:0 0 var(--space-lg);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.mock-oa-details div{min-width:0}.mock-oa-details dt{color:var(--color-text-muted);margin-bottom:3px;font-size:11px}.mock-oa-details dd{color:var(--color-text);text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:13px;overflow:hidden}.mock-oa-card-actions{padding-top:var(--space-md);border-top:1px solid var(--color-border-light);justify-content:flex-end}.mock-oa-approve{color:#166534;background:#f0fdf4;border-color:#86efac}.mock-oa-reject{color:#991b1b;background:#fef2f2;border-color:#fecaca}@media (width<=768px){.mock-oa-console{padding:var(--space-lg)}.mock-oa-header{flex-direction:column;align-items:flex-start}.mock-oa-actions{justify-content:flex-end;width:100%}}@media (width<=420px){.mock-oa-list,.mock-oa-details{grid-template-columns:minmax(0,1fr)}}.app-layout{background:var(--color-bg);min-height:100vh;display:flex}.main-area{min-width:0;margin-left:var(--sidebar-width);margin-right:var(--info-panel-width);background:var(--color-bg);flex-direction:column;flex:1;height:100vh;display:flex}.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}.main-area.admin-view{margin-right:0}.main-header{padding:var(--space-lg) var(--space-xl);background:var(--color-surface);border-bottom:1px solid var(--color-border);z-index:50;justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.header-left{align-items:center;gap:var(--space-md);display:flex}.header-title{color:var(--color-text);letter-spacing:-.01em;margin:0;font-size:16px;font-weight:700}.header-badge{color:var(--color-primary);background:var(--color-primary-light);border:1px solid var(--color-primary-border);border-radius:10px;padding:2px 10px;font-size:11px;font-weight:500}.mobile-mode-switch{display:none}.mode-select{padding:var(--space-sm) var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);cursor:pointer;outline:none;font-size:13px}.mode-select:focus{border-color:var(--color-primary);box-shadow:0 0 0 2px #2563eb1a}.clear-btn{padding:var(--space-sm) var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text-muted);cursor:pointer;background:0 0;font-size:12px;transition:all .15s}.clear-btn:hover:not(:disabled){background:var(--color-error-bg);border-color:var(--color-error-border);color:var(--color-error)}.clear-btn:disabled{opacity:.5;cursor:not-allowed}.header-actions{align-items:center;gap:var(--space-sm);display:flex}.current-user{max-width:120px;color:var(--color-text-secondary);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.logout-btn{padding:var(--space-sm) var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text-muted);cursor:pointer;font-size:12px}.logout-btn:hover:not(:disabled){border-color:var(--color-error-border);background:var(--color-error-bg);color:var(--color-error)}.logout-btn:disabled{cursor:not-allowed;opacity:.5}.chat-area{overscroll-behavior:contain;flex-direction:column;flex:1;min-height:0;scroll-padding-top:72px;display:flex;overflow-y:auto}.messages-list{padding:var(--space-xl);flex-direction:column;width:100%;max-width:1080px;margin:0 auto;display:flex}.input-section{padding:0 var(--space-xl) var(--space-xl);gap:var(--space-md);flex-direction:column;display:flex}.error-banner{align-items:center;gap:var(--space-sm);padding:var(--space-md) var(--space-lg);background:var(--color-error-bg);border:1px solid var(--color-error-border);border-radius:var(--radius-md);margin:var(--space-md) 0;display:flex}.error-icon{flex-shrink:0;font-size:16px}.error-text{color:var(--color-error);font-size:13px}.error-retry{border:1px solid var(--color-error-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-error);cursor:pointer;flex-shrink:0;margin-left:auto;padding:5px 10px;font-size:12px}@media (width<=1024px){.main-area{margin-left:0;margin-right:0}.mobile-mode-switch{display:block}}@media (width<=768px){.main-header{padding:var(--space-md) var(--space-lg);align-items:flex-start;gap:var(--space-sm);flex-wrap:wrap}.header-left{gap:var(--space-sm);flex:auto;min-width:0}.header-title{white-space:nowrap}.header-actions{margin-left:auto}.header-badge{display:none}.messages-list{padding:var(--space-lg)}.input-section{padding:0 var(--space-lg) var(--space-lg)}}@media (width<=480px){.main-header{padding:10px 12px}.mobile-mode-switch{flex:100%}.mode-select{width:100%}.current-user,.header-title{display:none}.header-actions{justify-content:flex-end;width:100%}.messages-list{padding:var(--space-md)}.input-section{padding:0 var(--space-md) var(--space-md)}}.login-page{min-height:100vh;padding:var(--space-xl);background:var(--color-bg);place-items:center;display:grid}.auth-recovery{background:var(--color-bg);place-items:center;min-height:100vh;padding:24px;display:grid}.auth-switch-account{width:100%;color:var(--color-text-muted);cursor:pointer;background:0 0;border:0;margin-top:10px;font-size:13px}.login-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);width:min(100%,420px);box-shadow:var(--shadow-lg);padding:40px}.login-brand{margin-bottom:var(--space-xl);color:var(--color-primary);letter-spacing:.03em;font-size:13px;font-weight:700}.login-card h1{color:var(--color-text);font-size:28px;line-height:1.2}.login-subtitle{margin-top:var(--space-sm);color:var(--color-text-muted);font-size:13px}.login-form{gap:var(--space-sm);margin-top:var(--space-xl);flex-direction:column;display:flex}.login-form label{color:var(--color-text-secondary);font-size:13px;font-weight:600}.login-form input{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);width:100%;color:var(--color-text);outline:none;padding:11px 12px;font-size:14px}.login-form input:focus{border-color:var(--color-primary);box-shadow:0 0 0 2px #2563eb1a}.login-demo-hint{margin-top:var(--space-md);color:var(--color-text-muted);font-size:12px}.login-error{padding:var(--space-sm) var(--space-md);border:1px solid var(--color-error-border);border-radius:var(--radius-sm);background:var(--color-error-bg);color:var(--color-error);font-size:12px}.login-submit{margin-top:var(--space-md);border-radius:var(--radius-sm);background:var(--color-primary);color:#fff;cursor:pointer;border:0;padding:12px;font-size:14px;font-weight:700}.login-submit:disabled{cursor:not-allowed;opacity:.55}@media (width<=520px){.login-card{padding:var(--space-xl)}}
