*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--primary:#4f6ef7;--primary-hover:#3b57e0;--primary-light:#eef1fe;--surface:#fff;--surface-2:#f7f8fc;--border:#e4e7ef;--text:#1a1d2e;--text-muted:#6b7280;--text-light:#9ca3af;--danger:#ef4444;--success:#22c55e;--warning:#f59e0b;--radius:10px;--radius-sm:6px;--shadow:0 1px 4px #00000014, 0 4px 16px #0000000a;--shadow-sm:0 1px 3px #00000014;--sidebar-width:220px;--header-height:56px}html,body{height:100%;color:var(--text);background:var(--surface-2);-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif;font-size:14px}#app{height:100%}.layout{height:100vh;display:flex;overflow:hidden}.sidebar{width:var(--sidebar-width);background:var(--surface);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;display:flex}.sidebar-logo{height:var(--header-height);border-bottom:1px solid var(--border);color:var(--primary);align-items:center;gap:8px;padding:0 20px;font-size:15px;font-weight:700;display:flex}.sidebar-nav{flex:1;padding:12px 10px}.nav-item{border-radius:var(--radius-sm);cursor:pointer;color:var(--text-muted);align-items:center;gap:8px;padding:9px 12px;font-size:13px;text-decoration:none;transition:background .15s,color .15s;display:flex}.nav-item:hover,.nav-item.active{background:var(--primary-light);color:var(--primary)}.sidebar-footer{border-top:1px solid var(--border);color:var(--text-muted);justify-content:space-between;align-items:center;padding:14px 16px;font-size:12px;display:flex}.logout-btn{color:var(--danger);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;padding:4px 8px;font-size:12px;transition:background .15s}.logout-btn:hover{background:#fee2e2}.main-content,.main-content>*{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.page-header{height:var(--header-height);border-bottom:1px solid var(--border);background:var(--surface);flex-shrink:0;align-items:center;gap:12px;padding:0 24px;display:flex}.page-header h1{font-size:16px;font-weight:600}.page-body{flex:1;min-height:0;padding:20px 24px;overflow-y:auto}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%}thead th{text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);background:var(--surface-2);border-bottom:1px solid var(--border);text-align:left;white-space:nowrap;padding:10px 14px;font-size:12px;font-weight:600}tbody td{border-bottom:1px solid var(--border);color:var(--text);vertical-align:middle;padding:12px 14px}tbody tr:last-child td{border-bottom:none}tbody tr:hover{background:var(--surface-2)}.td-link{color:var(--primary);cursor:pointer;font-weight:500;text-decoration:none}.td-link:hover{text-decoration:underline}.badge{border-radius:999px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-block}.badge-h5{color:#1d4ed8;background:#dbeafe}.badge-wechat,.badge-active{color:#15803d;background:#dcfce7}.badge-closed{color:#6b7280;background:#f3f4f6}.search-bar{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:16px;display:flex}.search-input{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);outline:none;width:240px;padding:8px 12px;font-size:13px;transition:border-color .15s}.search-input:focus{border-color:var(--primary)}.select-input{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);cursor:pointer;color:var(--text);outline:none;padding:8px 12px;font-size:13px}.btn{border-radius:var(--radius-sm);cursor:pointer;border:none;align-items:center;gap:6px;padding:8px 16px;font-size:13px;font-weight:500;text-decoration:none;transition:background .15s,opacity .15s;display:inline-flex}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primary-hover)}.btn-ghost{color:var(--text-muted);border:1px solid var(--border);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--surface-2)}.pagination{border-top:1px solid var(--border);color:var(--text-muted);justify-content:flex-end;align-items:center;gap:8px;padding:14px 16px;font-size:12px;display:flex}.breadcrumb{color:var(--text-muted);align-items:center;gap:6px;font-size:13px;display:flex}.breadcrumb a{color:var(--primary);text-decoration:none}.breadcrumb a:hover{text-decoration:underline}.breadcrumb-sep{color:var(--border)}.chat-card{padding:0 20px}.chat-messages{flex-direction:column;gap:16px;padding:20px 0;display:flex}.chat-row{gap:10px;max-width:780px;display:flex}.chat-row.user{flex-direction:row-reverse;align-self:flex-end}.chat-avatar{color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;font-size:13px;font-weight:700;display:flex}.avatar-user{background:var(--primary)}.avatar-assistant{background:#6366f1}.chat-bubble{white-space:pre-wrap;word-break:break-word;border-radius:14px;max-width:640px;padding:10px 14px;font-size:13px;line-height:1.6}.bubble-user{background:var(--primary);color:#fff;border-bottom-right-radius:4px}.bubble-assistant{background:var(--surface);border:1px solid var(--border);border-bottom-left-radius:4px}.chat-time{color:var(--text-light);text-align:right;margin-top:4px;font-size:11px}.chat-row.user .chat-time{text-align:right}.chat-row.assistant .chat-time{text-align:left}.list-page-body{flex-direction:column;display:flex;overflow:hidden}.list-toolbar{flex-shrink:0;margin-bottom:16px}.list-scroll-area{flex:1;min-height:0;padding-right:4px;overflow-y:auto}.list-scroll-area .table-wrap{overflow-x:auto}.list-scroll-area thead th{z-index:1;position:sticky;top:0}.list-pagination{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text-muted);box-shadow:var(--shadow-sm);flex-shrink:0;justify-content:flex-end;align-items:center;gap:8px;margin-top:12px;padding:14px 16px;font-size:12px;display:flex}.messages-detail-body{flex-direction:column;display:flex;overflow:hidden}.session-info-fixed{flex-shrink:0;margin-bottom:12px}.messages-scroll-area{flex:1;min-height:0;padding-right:4px;overflow-y:auto}.session-info{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);flex-wrap:wrap;gap:20px;margin-bottom:16px;padding:12px 16px;display:flex}.info-item{gap:6px;font-size:12px;display:flex}.info-label{color:var(--text-muted);font-weight:500}.info-value{color:var(--text)}.state-box{text-align:center;color:var(--text-muted);padding:48px 24px;font-size:14px}.login-page{background:linear-gradient(135deg,#eef1fe 0%,#f7f8fc 100%);justify-content:center;align-items:center;min-height:100vh;display:flex}.login-card{background:var(--surface);border:1px solid var(--border);width:380px;box-shadow:var(--shadow);border-radius:16px;padding:40px 36px}.login-logo{text-align:center;margin-bottom:28px}.login-logo-icon{background:var(--primary);color:#fff;border-radius:12px;justify-content:center;align-items:center;width:48px;height:48px;margin-bottom:10px;font-size:22px;display:inline-flex}.login-logo h2{color:var(--text);font-size:18px;font-weight:700}.login-logo p{color:var(--text-muted);margin-top:4px;font-size:12px}.form-group{margin-bottom:16px}.form-label{color:var(--text);margin-bottom:6px;font-size:13px;font-weight:500;display:block}.form-control{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);width:100%;color:var(--text);outline:none;padding:10px 12px;font-size:14px;transition:border-color .15s}.form-control:focus{border-color:var(--primary)}.login-btn{background:var(--primary);color:#fff;border-radius:var(--radius-sm);cursor:pointer;border:none;width:100%;margin-top:8px;padding:11px;font-size:15px;font-weight:600;transition:background .15s}.login-btn:hover:not(:disabled){background:var(--primary-hover)}.login-btn:disabled{opacity:.6;cursor:not-allowed}.error-msg{color:var(--danger);text-align:center;margin-top:10px;font-size:13px}.back-btn{color:var(--text-muted);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;align-items:center;gap:4px;padding:4px 6px;font-size:13px;text-decoration:none;transition:background .15s,color .15s;display:inline-flex}.back-btn:hover{background:var(--surface-2);color:var(--text)}
