:root{--blue: #1677ff;--blue-50: #eaf3ff;--green: #24a75a;--green-50: #eafaf0;--orange: #f97316;--red: #f04438;--ink: #172033;--muted: #667085;--line: #e6eaf0;--bg: #f5f7fb;--card: #ffffff}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,PingFang SC,Microsoft YaHei,Arial,sans-serif}.login-shell{align-items:center;background:var(--bg);display:flex;min-height:100vh;justify-content:center;padding:24px}.login-card{background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:0 18px 48px #10243e1f;display:grid;gap:14px;padding:28px;width:min(420px,100%)}.login-brand{color:var(--ink);margin-bottom:8px}.login-error{color:var(--red);font-size:13px;margin:0}.toast{border-radius:8px;box-shadow:0 12px 32px #10243e2e;color:#fff;font-weight:700;min-width:180px;padding:12px 16px;position:fixed;right:22px;top:22px;z-index:20}.toast.success{background:var(--green)}.toast.error{background:var(--red)}button,input,select,textarea{font:inherit}button{border:0;border-radius:6px;background:var(--blue);color:#fff;cursor:pointer;padding:9px 12px}button:disabled{cursor:default;opacity:.55}input,select,textarea{border:1px solid var(--line);border-radius:6px;color:var(--ink);outline:none;padding:9px 11px}.upload-row{display:grid;gap:8px;grid-template-columns:minmax(0,1fr) auto}.upload-button{align-items:center;background:var(--blue);border-radius:6px;color:#fff;cursor:pointer;display:inline-flex;justify-content:center;min-width:92px;overflow:hidden;padding:9px 12px;position:relative}.upload-button input{cursor:pointer;top:0;right:0;bottom:0;left:0;opacity:0;position:absolute}.image-preview{border:1px solid var(--line);border-radius:6px;display:block;height:120px;margin-top:8px;object-fit:cover;width:100%}.media-field{border:1px solid var(--line);border-radius:8px;margin-bottom:12px;padding:12px}.media-field-head{align-items:center;display:flex;justify-content:space-between;margin-bottom:10px}.media-field-head b,.checkbox-title{color:var(--ink);font-size:13px}.media-field-head span{color:var(--muted);font-size:12px}.media-grid{display:grid;gap:10px}.media-item,.media-add{align-items:center;display:grid;gap:8px;grid-template-columns:88px minmax(0,1fr) auto}.media-add{grid-template-columns:minmax(0,1fr) auto}.video-media-list{display:grid;gap:10px}.video-media-item{align-items:start;display:grid;gap:8px;grid-template-columns:88px minmax(0,1fr) auto}.video-media-fields{display:grid;gap:8px;min-width:0}.upload-row.compact{gap:8px}.companion-review-manager{background:#f8fafc;border:1px solid var(--line);border-radius:8px;display:grid;gap:12px;padding:14px}.review-editor-grid{display:grid;gap:12px;grid-template-columns:repeat(3,minmax(0,1fr))}.companion-review-list{display:grid;gap:8px}.review-head-actions{align-items:center;display:flex;gap:10px}.companion-review-item{background:#fff;border:1px solid var(--line);border-radius:8px;color:inherit;display:grid;gap:4px;padding:10px;text-align:left}.companion-review-item span,.companion-review-item small,.empty-inline{color:var(--muted);font-size:12px}.review-list-layout{align-items:start;display:grid;gap:16px;grid-template-columns:minmax(0,1fr) 360px}.review-list-main,.review-edit-panel{min-width:0}.review-list-toolbar{flex-wrap:wrap;margin-bottom:14px}.review-list-toolbar input{min-width:240px}.single-column-review-editor{grid-template-columns:1fr}.pagination-row{align-items:center;display:flex;justify-content:space-between;margin-top:14px}.media-preview{background:#f8fafc;border:1px solid var(--line);border-radius:8px;height:72px;overflow:hidden;padding:0}.media-preview img,.media-preview video{display:block;height:100%;object-fit:cover;width:100%}.preview-mask{align-items:center;background:#101828b8;display:flex;top:0;right:0;bottom:0;left:0;justify-content:center;padding:24px;position:fixed;z-index:50}.preview-box{background:#fff;border-radius:8px;max-height:86vh;max-width:min(920px,92vw);padding:14px;position:relative}.preview-box img,.preview-box video{border-radius:6px;display:block;max-height:78vh;max-width:100%}.preview-close{position:absolute;right:12px;top:12px;z-index:1}.checkbox-group{border:1px solid var(--line);border-radius:8px;margin-bottom:12px;padding:12px}.checkbox-options{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.checkbox-pill{align-items:center;background:#f8fafc;border:1px solid var(--line);border-radius:999px;display:inline-flex;gap:6px;margin:0;padding:7px 10px}.checkbox-pill input{width:auto}.route-companion-picker{border:1px solid var(--line);border-radius:8px;display:grid;gap:14px;padding:12px}.route-companion-picker-head{align-items:flex-start;display:flex;gap:16px;justify-content:space-between}.route-companion-picker-head .muted-copy{margin:6px 0 0}.route-selected-companions{border-top:1px solid var(--line);padding-top:12px}.route-selected-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.route-selected-item{align-items:center;background:#f8fafc;border:1px solid var(--line);border-radius:999px;display:inline-flex;gap:8px;padding:7px 10px 7px 12px}.route-companion-picker-panel{background:#fff;border-radius:8px;box-shadow:0 24px 80px #10243e38;display:grid;gap:14px;max-height:82vh;max-width:min(680px,92vw);padding:18px;width:640px}.route-companion-picker-title{align-items:center;display:flex;justify-content:space-between}.route-companion-picker-title h3{margin:0}.route-companion-choice-list{display:grid;gap:8px;max-height:52vh;overflow-y:auto}.route-companion-choice{align-items:center;background:#f8fafc;border:1px solid var(--line);color:var(--ink);display:flex;justify-content:space-between;padding:11px 12px}.route-companion-choice.selected{background:#eaf3ff;border-color:#b9d6ff;color:var(--blue)}.switch-row{align-items:center;background:#f8fafc;border:1px solid var(--line);border-radius:8px;display:flex;flex-direction:row;justify-content:space-between;padding:10px 12px}.switch-row input{width:auto}textarea{min-height:86px;resize:vertical;width:100%}.admin-shell{display:grid;grid-template-columns:248px minmax(0,1fr);min-height:100vh}.sidebar{background:#10243e;color:#fff;padding:20px 16px}.brand{align-items:center;display:flex;gap:12px;margin-bottom:26px}.brand-mark{align-items:center;background:linear-gradient(145deg,var(--blue),#42a5ff);border-radius:14px 14px 14px 4px;display:flex;font-size:24px;font-weight:900;height:48px;justify-content:center;width:48px}.brand h1{font-size:22px;line-height:1;margin:0 0 5px}.brand span,.topbar p,small{color:#98a2b3;font-size:12px}nav{display:grid;gap:6px}nav button{align-items:center;background:transparent;border-radius:8px;color:#d8e6ff;display:flex;justify-content:space-between;padding:11px 12px;text-align:left}nav button.active{background:#1677ff38;color:#fff}nav b{background:var(--red);border-radius:999px;font-size:11px;padding:2px 6px}.workspace{min-width:0;padding:20px}.topbar{align-items:center;display:flex;justify-content:space-between;margin-bottom:18px}.topbar h2{font-size:24px;margin:0 0 4px}.top-actions,.toolbar,.actions,.review-actions,.quick-replies,.reply-box{align-items:center;display:flex;gap:8px}.top-actions input{width:260px}.secondary{background:#fff;border:1px solid var(--line);color:var(--ink)}.module-grid{display:grid;gap:16px;grid-template-columns:repeat(12,1fr)}.kpi-grid{display:grid;gap:12px;grid-column:1 / -1;grid-template-columns:repeat(5,minmax(0,1fr))}.kpi-card,.panel,.detail-panel,.route-editor-page,.settings-card{background:var(--card);border:1px solid var(--line);border-radius:8px;box-shadow:0 8px 24px #10243e0a}.kpi-card{padding:16px}.kpi-card span{color:var(--muted);font-size:13px}.kpi-card strong{display:block;font-size:28px;margin:8px 0 6px}.kpi-card em{color:var(--green);font-size:12px;font-style:normal}.panel{padding:16px}.settings-page{display:grid;gap:16px}.settings-card{max-width:760px;padding:18px}.settings-password-form{display:grid;gap:14px}.settings-password-form label{color:var(--muted);display:grid;gap:7px}.settings-actions{display:flex;justify-content:flex-start;padding-top:4px}.price-settings-table input{min-width:96px}.panel.large{grid-column:span 7}.panel.chart:not(.large){grid-column:span 5}.panel.wide{grid-column:span 8}.module-grid>.panel:not(.large):not(.chart):not(.wide){grid-column:span 4}.panel-title{align-items:center;display:flex;justify-content:space-between;margin-bottom:14px}.panel-title h3{font-size:16px;margin:0}.text-button,.link-button{background:transparent;color:var(--blue);padding:0}.support-metrics{display:grid;gap:8px}.metric-row,.queue-summary{align-items:center;background:#f8fafc;border:1px solid var(--line);border-radius:8px;display:flex;justify-content:space-between;padding:10px 12px}.metric-row span,.queue-summary span{color:var(--muted);font-size:12px}.metric-row b{color:var(--ink);font-size:18px}.date-range{align-items:center;display:grid;gap:8px;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr) minmax(96px,.8fr) minmax(96px,.8fr) 92px auto;margin-bottom:10px}.date-range span{color:var(--muted);font-size:12px}.agent-stat-list,.quality-list,.ranking-list{display:grid;gap:10px}.agent-stat-card,.quality-card{background:#f8fafc;border:1px solid var(--line);border-radius:8px;padding:12px}.agent-stat-card div,.quality-card{align-items:flex-start;display:flex;gap:10px;justify-content:space-between}.agent-stat-card b,.quality-card b{display:block;font-size:13px;margin-bottom:4px}.agent-stat-card span,.quality-card p{color:var(--muted);font-size:12px;margin:0}.agent-stat-card p{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 0}.quality-card{justify-content:flex-start}.quality-card.compact{margin-bottom:8px}.quality-card>div{flex:1;min-width:0}.quality-card em{color:var(--blue);font-size:12px;font-style:normal;white-space:nowrap}.quality-card .link-button{flex:0 0 auto;font-size:12px;white-space:nowrap}.quality-actions,.quality-record-actions{align-items:center;display:flex;flex-wrap:wrap;gap:8px}.severity{border-radius:999px;color:#fff;flex:0 0 auto;font-size:12px;padding:3px 8px}.severity-high{background:var(--red)}.severity-medium{background:var(--orange)}.severity-low{background:var(--green)}.ranking-row{align-items:center;background:#f8fafc;border:1px solid var(--line);border-radius:8px;display:grid;gap:10px;grid-template-columns:28px minmax(0,1fr);padding:10px 12px}.ranking-row>b{align-items:center;background:var(--blue-50);border-radius:999px;color:var(--blue);display:inline-flex;font-size:12px;height:24px;justify-content:center;width:24px}.ranking-row strong{display:block;font-size:13px;margin-bottom:3px}.ranking-row span{color:var(--muted);font-size:12px}.time-series-list{display:grid;gap:8px}.time-series-row{align-items:center;background:#f8fafc;border:1px solid var(--line);border-radius:8px;display:grid;gap:8px;grid-template-columns:minmax(110px,1fr) repeat(4,minmax(70px,auto));padding:10px 12px}.time-series-row b{font-size:13px}.time-series-row span,.quality-record span{color:var(--muted);font-size:12px}.quality-record{background:#f8fafc;border:1px solid var(--line);border-radius:8px;display:grid;gap:4px;margin-bottom:8px;padding:10px 12px}.quality-record b{font-size:13px}.quality-record small{color:var(--muted);font-size:12px}.danger-link{color:var(--red)}button.danger{background:var(--red);color:#fff}.line-chart,.bar-chart{align-items:end;border-bottom:1px solid var(--line);display:flex;gap:18px;height:220px;padding:18px 12px 0}.line-chart i,.bar-chart i{background:linear-gradient(180deg,var(--blue),#95c3ff);border-radius:8px 8px 0 0;flex:1}.line-chart i{background:var(--green)}.split-layout{display:grid;gap:16px;grid-template-columns:minmax(0,1fr) 360px}.support-layout{display:grid;gap:16px;grid-template-columns:300px minmax(0,1fr) 340px}.table-panel{overflow:hidden}.toolbar{margin-bottom:14px}.toolbar input{min-width:230px}.plan-toolbar{align-items:center;flex-wrap:wrap}.plan-toolbar select{min-width:128px}.plan-toolbar span{color:var(--muted);font-size:12px;margin-left:auto}.batch-toolbar{align-items:center;background:#f8fafc;border:1px solid var(--line);border-radius:8px;display:flex;flex-wrap:wrap;gap:10px;margin:0 0 14px;padding:10px 12px}.batch-toolbar label{align-items:center;color:var(--ink);display:inline-flex;font-size:13px;gap:6px}.batch-toolbar input[type=checkbox],td input[type=checkbox]{min-width:auto;padding:0}.batch-toolbar span{color:var(--muted);font-size:12px;margin-right:auto}.danger-soft{border-color:#ffd1cd;color:var(--red)}.log-toolbar{align-items:center;display:grid;gap:8px;grid-template-columns:minmax(220px,1fr) 160px 140px auto;margin-bottom:12px}.log-toolbar span{color:var(--muted);font-size:12px;text-align:right}table{border-collapse:collapse;width:100%}th,td{border-bottom:1px solid var(--line);font-size:13px;padding:12px 10px;text-align:left;vertical-align:top}th{background:#f8fafc;color:var(--muted);font-weight:600}td b{display:block;margin-bottom:4px}.status,.tag-list span,.chips span{background:var(--blue-50);border-radius:999px;color:var(--blue);display:inline-flex;font-size:12px;margin:2px;padding:4px 8px}.status-success{background:var(--green-50);color:var(--green)}.status-muted{background:#f2f4f7;color:var(--muted)}.status-warning{background:#fff7ed;color:var(--orange)}.muted-row{opacity:.7}.tag-list span:nth-child(2n),.chips span:nth-child(2n){background:var(--green-50);color:var(--green)}.detail-panel{padding:16px}.route-cover{background:linear-gradient(135deg,#d9ebff,#f1f7ff);border-radius:8px;height:160px;margin-bottom:14px}.detail-panel h3{margin:8px 0}.detail-panel h4{margin:18px 0 8px}.detail-panel p{color:var(--muted);line-height:1.6}.timeline{color:var(--muted);line-height:1.8;padding-left:20px}.tabs{display:flex;gap:8px;margin-bottom:14px}.tabs span{background:#f2f4f7;border-radius:999px;color:var(--muted);font-size:13px;padding:7px 12px}.tabs .active{background:var(--blue);color:#fff}.avatar-card{background:#f8fafc;border-radius:8px;display:grid;gap:7px;padding:16px;text-align:center}.avatar-card span{align-items:center;background:var(--blue);border-radius:50%;color:#fff;display:flex;font-weight:800;height:72px;justify-content:center;margin:0 auto;width:72px}.avatar-card em{color:var(--orange);font-size:12px;font-style:normal}.info-row{border-bottom:1px solid var(--line);display:grid;gap:8px;grid-template-columns:92px 1fr;padding:12px 0}.info-row span{color:var(--muted)}.info-row b{font-weight:600}.review-actions{flex-wrap:wrap;margin-top:16px}.danger{background:var(--red)}.form-panel label{color:var(--muted);display:grid;gap:7px;margin-bottom:12px}.form-panel input,.form-panel select,.form-panel textarea{width:100%}.form-panel textarea{min-height:96px;resize:vertical}.form-grid,.route-form-grid{display:grid;gap:14px 16px;grid-template-columns:repeat(2,minmax(0,1fr))}.route-list-page{display:grid;gap:16px}.route-list-panel{min-height:520px}.route-editor-page{display:grid;gap:18px;min-height:640px;padding:16px}.route-editor-header{align-items:flex-start;border-bottom:1px solid var(--line);display:flex;gap:16px;justify-content:space-between;padding-bottom:16px}.route-editor-header h3{font-size:20px;margin:8px 0 6px}.route-editor-header p{color:var(--muted);margin:0}.route-editor-actions{margin-top:0}.route-editor-form{gap:18px}.route-package-block{background:#f8fbff;border:1px solid #e3edf9;border-radius:8px;display:grid;gap:14px;padding:18px}.route-package-block h4{color:#102033;font-size:16px;margin:0}.route-package-block p{color:var(--muted);font-size:13px;margin:0}.route-field-wide{grid-column:1 / -1}.route-long-textareas{border-top:1px solid var(--line);grid-template-columns:repeat(3,minmax(0,1fr));padding-top:18px}.route-long-textareas textarea{min-height:180px}.muted-chip span{background:#f2f4f7;color:var(--muted)}.refund-panel .status{margin-bottom:10px}.refund-review-card{background:#fff7ed;border:1px solid #fed7aa;border-radius:8px;margin:16px 0;padding:12px}.refund-review-card h4{margin:0 0 8px}.order-filters{display:grid;gap:10px;grid-template-columns:minmax(220px,1fr) 140px 110px 130px auto;margin-bottom:14px}.order-filters button{white-space:nowrap}.refund-audit-filters{display:grid;gap:10px;grid-template-columns:minmax(180px,1fr) 130px 140px 140px;margin:-4px 0 14px}.refund-reason-manager,.refund-policy-manager,.refund-template-manager{border-top:1px solid var(--line);display:grid;gap:10px;margin-top:16px;padding-top:14px}.manager-title{align-items:center;display:flex;justify-content:space-between}.manager-title span{color:var(--muted);font-size:12px}.refund-reason-form{display:grid;gap:8px;grid-template-columns:120px minmax(180px,1fr) 76px 92px auto}.refund-policy-form{display:grid;gap:8px;grid-template-columns:150px minmax(180px,1fr) 110px 82px 92px auto}.refund-template-form{display:grid;gap:8px;grid-template-columns:140px minmax(220px,1fr) 108px 76px 92px auto}.refund-reason-form input,.refund-reason-form select,.refund-policy-form input,.refund-policy-form select,.refund-template-form input,.refund-template-form select{width:100%}.refund-template-selects{display:grid;gap:8px;grid-template-columns:1fr 1fr;margin-top:12px}.refund-template-selects label{color:var(--muted);display:grid;font-size:12px;gap:6px}.refund-reason-list{display:flex;flex-wrap:wrap;gap:8px}.refund-reason-list button{background:#f8fafc;border:1px solid var(--line);color:var(--text);display:grid;gap:3px;padding:8px 10px;text-align:left}.refund-reason-list span{color:var(--muted);font-size:12px}.refund-reason-list .muted-row{opacity:.62}.pager{align-items:center;color:var(--muted);display:flex;gap:10px;justify-content:flex-end;margin-top:14px}.pager button{background:#eef5ff;color:var(--blue);padding:7px 12px}.pager button:disabled{color:var(--muted);opacity:.65}.operation-log-list{border-top:1px solid var(--line);display:grid;gap:8px;margin-top:16px;padding-top:14px}.operation-log-list h4{margin:0}.operation-log-list p{background:#f8fafc;border-radius:8px;display:grid;gap:4px;margin:0;padding:8px 10px}.operation-log-list span{color:var(--muted);font-size:12px}.queue,.chat-panel,.context-panel{min-height:680px}.full-input{margin-bottom:12px;width:100%}.queue-summary{margin-bottom:12px}.conversation{background:#fff;border:1px solid var(--line);color:var(--ink);display:grid;gap:5px;margin-bottom:8px;padding:12px;position:relative;text-align:left;width:100%}.conversation.active{background:var(--blue-50);border-color:#cfe2ff}.conversation span{color:var(--muted);font-size:12px}.conversation em{color:var(--green);font-size:12px;font-style:normal}.conversation i{background:var(--red);border-radius:50%;color:#fff;font-size:11px;height:20px;line-height:20px;position:absolute;right:10px;text-align:center;top:10px;width:20px}.empty-queue{background:#f8fafc;border:1px dashed var(--line);border-radius:8px;color:var(--muted);font-size:13px;padding:18px;text-align:center}.chat-panel{display:grid;grid-template-rows:auto auto auto auto 1fr auto auto}.support-actions{align-items:center;display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.support-actions button{background:#eef5ff;color:var(--blue);padding:7px 12px}.support-actions button:disabled{color:var(--muted);opacity:.65}.support-actions span{color:var(--muted);font-size:12px}.socket-state{align-items:center;background:#f8fafc;border-radius:999px;color:var(--muted);display:inline-flex;font-size:12px;gap:8px;margin-top:8px;padding:7px 12px;width:fit-content}.socket-state span{background:var(--orange);border-radius:50%;height:8px;width:8px}.socket-state.online{background:#edfdf4;color:var(--green)}.socket-state.online span{background:var(--green)}.socket-state.offline{background:#fff3f1;color:var(--red)}.socket-state.offline span{background:var(--red)}.history-bar{align-items:center;color:var(--muted);display:flex;font-size:12px;justify-content:space-between;margin:8px 0 12px}.history-bar button{background:#eef5ff;color:var(--blue);padding:7px 12px}.history-bar button:disabled{color:var(--muted);opacity:.7}.chat-body{background:#f8fafc;border-radius:8px;display:flex;flex-direction:column;gap:12px;min-height:420px;overflow-y:auto;padding:16px}.bubble{border-radius:8px;max-width:70%;padding:10px 12px}.bubble.user{background:#fff;border:1px solid var(--line)}.bubble.agent{align-self:flex-end;background:var(--blue);color:#fff}.bubble.image-message{background:transparent;border:0;padding:0}.bubble.image-message img{border-radius:8px;display:block;max-height:220px;object-fit:cover;width:280px}.bubble.card-message{background:#fff;border:1px solid #cfe2ff;color:var(--ink);display:flex;gap:12px;padding:10px;width:min(420px,80%)}.bubble.card-message img{border-radius:6px;height:88px;object-fit:cover;width:88px}.bubble.card-message div{display:grid;gap:4px;min-width:0}.bubble.card-message em{color:var(--blue);font-size:12px;font-style:normal;font-weight:700}.bubble.card-message b,.bubble.card-message span,.bubble.card-message small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bubble.card-message span,.bubble.card-message small{color:var(--muted);font-size:12px}.support-meta{border-top:1px solid var(--line);display:grid;gap:10px;margin-top:16px;padding-top:16px}.support-meta label{color:var(--muted);display:grid;font-size:12px;gap:6px}.support-meta textarea{min-height:84px;resize:vertical}.support-meta button{background:var(--blue);color:#fff;width:fit-content}.report-panel{border-top:1px solid var(--line);margin-top:16px;padding-top:16px}.report-card{background:#fff7ed;border:1px solid #fed7aa;border-radius:8px;display:grid;gap:6px;margin-top:10px;padding:10px}.report-card span,.muted-copy{color:var(--muted);font-size:12px}.report-card div{display:flex;gap:8px}.report-card button{background:#fff;color:var(--orange);padding:6px 10px}.order-card{background:#fff;border:1px solid #cfe2ff;border-radius:8px;color:var(--blue);padding:12px;width:fit-content}.quick-replies{flex-wrap:wrap;margin:12px 0}.quick-replies span{background:#f2f4f7;border-radius:999px;color:var(--muted);font-size:12px;padding:6px 10px}.reply-box input{flex:1}.todo{align-items:center;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;padding:12px 0}.todo b{background:#fff3e6;border-radius:999px;color:var(--orange);font-size:12px;padding:4px 8px}@media (max-width: 1180px){.admin-shell,.split-layout,.support-layout{grid-template-columns:1fr}.sidebar{display:none}.kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.panel.large,.panel.chart,.panel.wide,.module-grid>.panel:not(.large):not(.chart):not(.wide){grid-column:1 / -1}.order-filters,.refund-audit-filters,.refund-reason-form,.refund-policy-form{grid-template-columns:1fr 1fr}.refund-template-form,.refund-template-selects{grid-template-columns:1fr}.route-editor-header{display:grid}.route-form-grid,.route-long-textareas{grid-template-columns:1fr}}
