:root {
  font-family: Inter, "Microsoft YaHei", system-ui, sans-serif;
  color: #121826;
  background: #eef6ff;
  --blue: #1239b6;
  --blue-dark: #0a276f;
  --red: #d7193f;
  --green: #07865c;
  --line: #dbe3ef;
  --muted: #687386;
}

[hidden] { display: none !important; }

* { box-sizing: border-box; }
body { margin: 0; min-width: 0; }
button, input, select, textarea { font: inherit; }
button, .button { cursor: pointer; }

.topbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-height: 76px;
  padding: 13px 4vw;
  border-bottom: 1px solid #d5e2f2;
  background: #fff;
}

.brand span, .filter-copy span, .section-heading span, dialog header span { color: var(--blue); font-size: 11px; font-weight: 800; letter-spacing: .12em; }
h1, h2, p { margin: 0; }
.brand h1 { margin-top: 3px; font-size: 23px; }
.top-actions { display: flex; align-items: center; gap: 18px; }
.top-actions label { display: flex; align-items: center; gap: 8px; color: var(--muted); font-size: 12px; }
.preview-badge { padding: 5px 8px; border: 1px solid #f4a4b6; background: #fff4f7; color: var(--red); font-size: 11px; font-weight: 700; }

main { width: min(1840px, 94vw); margin: 24px auto 50px; }
.filter-panel, .table-card, .safety-note { border: 1px solid var(--line); background: #fff; box-shadow: 0 8px 30px rgba(36, 69, 113, .05); }
.filter-panel { display: flex; align-items: end; justify-content: space-between; gap: 24px; padding: 20px; }
.filter-copy h2 { margin-top: 5px; font-size: 21px; }
.filter-copy p { margin-top: 6px; color: var(--muted); font-size: 11px; }
.filters { display: flex; flex-wrap: wrap; align-items: end; justify-content: flex-end; gap: 8px; }
.integration-state { min-width: 112px; padding: 5px 10px; border-left: 3px solid var(--blue); background: #f4f7fc; }
.integration-state span, .integration-state b { display: block; }
.integration-state span { color: var(--muted); font-size: 10px; }
.integration-state b { margin-top: 4px; font-size: 11px; }
.integration-state b.connected { color: var(--green); }
.integration-state b.waiting { color: #a56400; }
label { display: grid; gap: 5px; color: var(--muted); font-size: 11px; }
input, select, textarea { border: 1px solid #cdd7e5; border-radius: 3px; background: #fff; color: #121826; }
input, select { min-height: 36px; padding: 7px 9px; }
textarea { width: 100%; padding: 10px; line-height: 1.5; resize: vertical; }
#productInput { width: 285px; min-height: 40px; padding: 8px 12px; font: 700 15px/1.2 Consolas, "Microsoft YaHei", monospace; letter-spacing: .02em; }
#productInput::placeholder { color: #9aa5b4; font-size: 13px; font-weight: 400; }
#topFilterInput { width: 178px; min-height: 40px; padding: 8px 11px; font-size: 13px; }
#topFilterInput::placeholder { color: #9aa5b4; font-size: 12px; }
.filter-keyword { position: relative; }
.control-label { display: block; margin-bottom: 5px; color: var(--muted); font-size: 11px; }
.date-range-control { position: relative; }
.date-range-button { display: flex; min-width: 205px; align-items: center; justify-content: space-between; color: #253047; }
.date-popover { position: absolute; top: 58px; right: 0; z-index: 20; display: grid; grid-template-columns: 112px 1fr; width: 760px; border: 1px solid #cbd8e8; border-radius: 8px; background: #fff; box-shadow: 0 18px 55px rgba(18,57,105,.22); overflow: hidden; }
.date-presets { padding: 9px; border-right: 1px solid var(--line); background: #f8faff; }
.date-presets button { display: block; width: 100%; min-height: 32px; padding: 6px 10px; border: 0; background: transparent; color: #344054; text-align: left; }
.date-presets button:hover { background: #e9f1ff; color: var(--blue); }
.date-picker-panel { min-width: 0; }
.calendar-toolbar { display: flex; align-items: center; justify-content: space-between; height: 44px; padding: 0 16px; border-bottom: 1px solid var(--line); color: #354052; font-size: 12px; font-weight: 700; }
.calendar-toolbar button { width: 30px; min-height: 30px; padding: 0; border: 0; background: transparent; color: #344054; font-size: 25px; }
.date-calendars { display: grid; grid-template-columns: 1fr 1fr; gap: 22px; min-height: 280px; padding: 15px 20px 12px; }
.calendar-month h3 { margin: 0 0 12px; color: #253047; font-size: 14px; text-align: center; }
.calendar-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 3px; }
.calendar-weekday { padding: 5px 0; color: var(--muted); font-size: 10px; text-align: center; }
.calendar-day, .calendar-empty { width: 100%; min-height: 30px; }
.calendar-day { padding: 0; border: 0; border-radius: 4px; background: transparent; color: #344054; font-size: 11px; }
.calendar-day:hover { background: #e7efff; color: var(--blue); }
.calendar-day.in-range { border-radius: 0; background: #edf3ff; color: var(--blue); }
.calendar-day.selected { border-radius: 50%; background: var(--blue); color: #fff; font-weight: 800; }
.calendar-day.today:not(.selected) { color: var(--blue); font-weight: 800; box-shadow: inset 0 0 0 1px #a9bfe8; }
.custom-range { display: flex; align-items: end; gap: 8px; padding: 12px 18px 16px; border-top: 1px solid var(--line); }
.custom-range label { flex: 1; }
.custom-range input { width: 100%; }
.custom-range > span { padding-bottom: 10px; color: var(--muted); }
button, .button { min-height: 36px; padding: 8px 13px; border: 1px solid var(--blue); border-radius: 3px; background: var(--blue); color: #fff; text-align: center; text-decoration: none; }
.secondary { border-color: #aeb9c9; background: #fff; color: #283346; }
.sync-status { max-width: 150px; padding-bottom: 8px; color: var(--muted); font-size: 10px; }
.sync-status.ok { color: var(--green); }
.sync-status.error { color: var(--red); }

.warnings { margin-top: 12px; padding: 11px 14px; border-left: 4px solid var(--red); background: #fff5f7; color: #8d1830; font-size: 12px; }
.empty-home { margin-top: 14px; padding: 58px 24px; border: 1px dashed #b8c9df; background: rgba(255,255,255,.68); color: #3b4a60; text-align: center; }
.empty-home b { display: block; color: var(--blue-dark); font-size: 18px; }
.empty-home p { margin-top: 9px; color: var(--muted); font-size: 12px; }
.metric-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 10px; margin: 14px 0; }
.metric-card { min-height: 105px; padding: 15px; border: 1px solid var(--line); background: #fff; }
.metric-card span { color: var(--muted); font-size: 11px; }
.metric-card b { display: block; margin-top: 13px; font-size: 24px; }
.metric-card small { display: block; margin-top: 4px; color: var(--muted); font-size: 10px; }
.tone-positive { color: var(--green); }
.tone-negative { color: var(--red); }

.table-card { overflow: hidden; }
.section-heading { display: flex; align-items: center; justify-content: space-between; padding: 17px 18px 14px; border-bottom: 1px solid var(--line); }
.section-heading h2 { margin-top: 4px; font-size: 17px; }
.legend { display: flex; align-items: center; gap: 6px; color: var(--muted); font-size: 11px; }
.legend i { width: 8px; height: 8px; margin-left: 8px; border-radius: 50%; }
.legend .positive { background: var(--green); }
.legend .negative { background: var(--red); }
.table-scroll { overflow: auto; }
table { width: 100%; min-width: 1480px; border-collapse: collapse; }
th, td { padding: 12px 10px; border-bottom: 1px solid #e8edf4; text-align: right; vertical-align: middle; white-space: nowrap; }
th { background: #f7f9fc; color: #5d6879; font-size: 10px; font-weight: 700; }
td { font-size: 12px; }
th:first-child, td:first-child { position: sticky; left: 0; z-index: 1; min-width: 230px; background: #fff; text-align: left; }
th:first-child { background: #f7f9fc; }
.plan-name { display: block; max-width: 250px; overflow: hidden; text-overflow: ellipsis; font-weight: 700; }
.plan-id { display: block; margin-top: 4px; color: var(--muted); font: 10px Consolas, monospace; }
.rate-input { width: 76px; min-height: 30px; text-align: right; }
.material-button { min-height: 30px; margin: 0; padding: 5px 9px; font-size: 10px; }
.pending { color: var(--muted); }
tfoot td { border-top: 2px solid #9fb3d1; border-bottom: 0; background: #edf4ff; font-weight: 800; }
tfoot td:first-child { z-index: 2; background: #edf4ff; color: var(--blue-dark); }
tfoot small { display: block; margin-top: 3px; color: var(--muted); font-size: 9px; font-weight: 500; }
.table-card > footer { padding: 11px 18px; background: #f7f9fc; color: var(--muted); font-size: 11px; }
.plan-toolbar { display: flex; align-items: center; gap: 12px; padding: 12px 18px; border-bottom: 1px solid var(--line); background: #fff; }
.plan-filter { flex: 1; max-width: 460px; min-height: 34px; padding: 7px 12px; border: 1px solid var(--line); border-radius: 6px; font-size: 12px; outline: none; }
.plan-filter:focus { border-color: var(--blue); box-shadow: 0 0 0 2px rgba(18, 57, 182, .12); }
.page-size { display: flex; align-items: center; gap: 6px; margin-left: auto; color: var(--muted); font-size: 12px; white-space: nowrap; }
.page-size select { min-height: 32px; padding: 5px 8px; border: 1px solid var(--line); border-radius: 6px; background: #fff; font-size: 12px; }
.plan-pager { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; padding: 11px 18px; background: #fff; border-top: 1px solid var(--line); }
.pager-info { color: var(--muted); font-size: 12px; }
.pager-controls { display: flex; align-items: center; gap: 5px; }
.pager-controls button { min-width: 32px; height: 32px; padding: 0 8px; border: 1px solid var(--line); border-radius: 6px; background: #fff; color: #2a3550; font-size: 12px; }
.pager-controls button:hover:not(:disabled) { border-color: var(--blue); color: var(--blue); }
.pager-controls button.active { background: var(--blue); border-color: var(--blue); color: #fff; font-weight: 700; }
.pager-controls button:disabled { opacity: .4; cursor: not-allowed; }
.pager-ellipsis { padding: 0 3px; color: var(--muted); }
.safety-note { margin-top: 14px; padding: 14px 18px; border-left: 4px solid #e9a100; }
.safety-note b { font-size: 12px; }
.safety-note p { margin-top: 4px; color: var(--muted); font-size: 11px; }

dialog { width: min(760px, 90vw); padding: 0; border: 0; border-radius: 4px; box-shadow: 0 28px 80px rgba(12, 27, 52, .32); }
dialog::backdrop { background: rgba(15, 24, 40, .58); }
.dialog-card { padding: 0; }
.dialog-card > header { display: flex; align-items: center; justify-content: space-between; padding: 18px 20px; border-top: 4px solid var(--blue); border-bottom: 1px solid var(--line); }
.dialog-card h2 { margin-top: 4px; font-size: 19px; }
.dialog-card > p, .dialog-card > label, .dialog-card > output, .status-options { margin: 14px 20px 0; }
.dialog-card > p { color: var(--muted); font-size: 12px; line-height: 1.6; }
.dialog-card > footer { display: flex; justify-content: flex-end; gap: 8px; margin-top: 18px; padding: 13px 20px; border-top: 1px solid var(--line); }
.icon-button { width: 34px; min-height: 34px; padding: 0; border-color: transparent; background: transparent; color: #374151; font-size: 24px; }
output { display: block; min-height: 18px; color: var(--blue); font-size: 11px; }
.status-options { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.status-options label { display: flex; align-items: center; gap: 7px; padding: 9px; border: 1px solid var(--line); color: #253047; }
.status-options input { min-height: auto; }

.toast { position: fixed; right: 24px; bottom: 24px; z-index: 10; max-width: 420px; padding: 12px 16px; border-left: 4px solid var(--blue); background: #fff; box-shadow: 0 10px 40px rgba(12, 27, 52, .2); font-size: 12px; }
.empty-row td { padding: 40px; color: var(--muted); text-align: center; }

/* 计划归属剪辑/运营 */
.plan-owner { display: inline-block; margin-top: 3px; padding: 1px 7px; border-radius: 10px; background: #eaf2ff; color: #2b5cb8; font-size: 10px; font-weight: 700; }
.plan-owner.owner-none { background: #f1f3f7; color: #98a2b3; font-weight: 400; }

/* 运营/剪辑花名册弹窗 */
.roster-dialog { width: min(1040px, 96vw); }
.roster-tip { margin: 4px 0 10px; padding: 9px 12px; background: #f4f7fc; border-left: 3px solid var(--blue); color: #44506a; font-size: 12px; line-height: 1.6; }
.roster-tip b { color: #1239b6; }
.roster-leadership { display: flex; align-items: center; flex-wrap: wrap; gap: 12px; padding: 14px; margin: 10px 0 16px; background: #edf3ff; border: 1px solid #c7d8ff; border-radius: 12px; }
.roster-leadership[hidden] { display: none; }
.roster-toolbar { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px; margin-bottom: 10px; }
.roster-import { margin:0 0 12px; padding:10px 12px; border:1px solid #d7e2f3; border-radius:9px; background:#fbfdff; }
.roster-import summary { color:#234a9f; font-size:12px; font-weight:800; cursor:pointer; }
.roster-import p { margin:9px 0 7px; color:var(--muted); font-size:11px; }
.roster-import textarea { width:100%; min-height:105px; margin-bottom:7px; resize:vertical; font:12px/1.55 Consolas,"Microsoft YaHei",sans-serif; }
.roster-op-summary { color: var(--muted); font-size: 12px; }
.roster-tree { display: grid; gap: 12px; max-height: 56vh; overflow: auto; padding: 2px 4px 8px 0; }
.roster-manager-card { overflow: hidden; border: 1px solid #cbd9ef; border-radius: 10px; background: #f6f9ff; }
.roster-manager-head, .roster-operator-head { display: flex; align-items: center; gap: 9px; }
.roster-manager-head { padding: 11px 12px; background: #eaf2ff; border-bottom: 1px solid #d6e2f5; }
.roster-manager-head input { width: 190px; min-height: 34px; font-weight: 700; }
.roster-level-badge { flex: none; padding: 4px 8px; border-radius: 12px; background: var(--blue); color: white; font-size: 11px; font-weight: 700; }
.roster-count { color: var(--muted); font-size: 11px; white-space: nowrap; }
.roster-manager-head .roster-count, .roster-operator-head .roster-count { margin-right: auto; }
.roster-operators { display: grid; gap: 10px; padding: 10px; }
.roster-operator-card { border: 1px solid var(--line); border-radius: 8px; background: white; }
.roster-operator-head { padding: 9px 10px; border-bottom: 1px solid #edf1f7; }
.roster-operator-head label { display: flex; align-items: center; gap: 7px; color: #344054; font-size: 12px; font-weight: 700; }
.roster-operator-head input { width: 160px; min-height: 32px; }
.roster-branch { color: var(--blue); font-size: 11px; font-weight: 700; }
.roster-editor-list { display: grid; }
.roster-editor-row { display: grid; grid-template-columns: 10px minmax(130px, .7fr) minmax(250px, 1.5fr) 100px 30px; align-items: end; gap: 9px; padding: 8px 10px; border-top: 1px solid #f0f2f6; }
.roster-editor-row:first-child { border-top: 0; }
.roster-editor-row label { display: grid; gap: 4px; color: var(--muted); font-size: 10px; }
.roster-editor-row input, .roster-editor-row select { width: 100%; min-height: 32px; padding: 5px 8px; font-size: 12px; }
.roster-person-dot { align-self: center; width: 7px; height: 7px; margin-top: 14px; border-radius: 50%; background: #77a2ea; }
.roster-icon-del, .roster-text-danger { border: 0; background: transparent; color: #a34a4a; box-shadow: none; }
.roster-icon-del { min-height: 32px; padding: 0; font-size: 18px; }
.roster-text-danger { min-height: 28px; padding: 2px 5px; font-size: 11px; }
.roster-empty { display: grid; place-items: center; gap: 6px; min-height: 150px; border: 1px dashed #cbd8e8; border-radius: 10px; color: var(--muted); }
.roster-empty b { color: #344054; font-size: 14px; }
.roster-unassigned { margin-top: 10px; padding: 10px 12px; border: 1px dashed #cbd8e8; border-radius: 6px; background: #fbfdff; max-height: 150px; overflow: auto; }
.roster-unassigned b { display: block; margin-bottom: 6px; color: #a56400; font-size: 12px; }
.unassigned-list { display: flex; flex-wrap: wrap; gap: 6px; }
.unassigned-chip { padding: 3px 9px; border: 1px solid #d4deec; border-radius: 12px; background: #fff; color: #344054; font-size: 11px; cursor: pointer; }
.unassigned-chip:hover { border-color: var(--blue); color: var(--blue); background: #eef4ff; }
@media (max-width: 760px) {
  .roster-manager-head, .roster-operator-head { flex-wrap: wrap; }
  .roster-editor-row { grid-template-columns: 10px 1fr 86px 28px; }
  .roster-editor-row .roster-keywords { grid-column: 2 / -1; grid-row: 2; }
}

/* 账号注册/审核 */
.account-dialog { width: min(1080px, 96vw); }
#accountDialog, #accessPolicyDialog { width: min(1080px, 96vw); max-height: 92vh; overflow: auto; }
#accountDialog .account-dialog, #accessPolicyDialog .account-dialog { width: 100%; min-width: 0; }
#accessPolicyChoices { padding: 0 20px; }
#accessPolicyChoices fieldset { min-width: 0; }
#accessPolicyDialog p { white-space: normal; overflow-wrap: anywhere; }
#accessPolicyDialog footer { flex-wrap: wrap; }
.account-register, .account-review { border: 1px solid var(--line); border-radius: 8px; padding: 12px 14px; margin-bottom: 12px; }
.account-register h3, .account-review h3 { margin: 0 0 10px; font-size: 14px; }
.account-form { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 10px; margin-bottom: 10px; }
.account-form .full { grid-column: 1 / -1; }
.account-form input { min-height: 34px; padding: 6px 9px; font-size: 13px; }
#regStatus, #rosterStatus { font-size: 12px; color: var(--blue); }
.pending-list { display: grid; gap: 8px; max-height: 260px; overflow: auto; }
.pending-item { display: flex; align-items: center; flex-wrap:wrap; gap: 10px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 6px; background: #fbfdff; }
.pending-info { flex: 1; display: grid; gap: 2px; }
.pending-info b { font-size: 13px; }
.pending-info span { color: #344054; font-size: 12px; }
.pending-info small { color: var(--muted); font-size: 11px; }
.pending-item .mini { display: grid; gap: 3px; font-size: 11px; color: var(--muted); width: 130px; }
.pending-item .mini input, .pending-item .mini select { width:100%; min-height: 30px; font-size: 12px; }
.managed-item .pending-info { min-width:260px; }
.review-btn { min-height: 32px; padding: 4px 12px; font-size: 12px; }
.review-btn.reject { color: var(--red); }
.muted-note { color: var(--muted); font-size: 12px; }

/* 操作日志 */
.audit-dialog { width: 100%; max-width: none; }
#auditDialog { width: min(920px, 96vw); max-width: 96vw; overflow: hidden; }
.audit-toolbar { display: flex; flex-wrap:wrap; gap: 8px; margin: 14px 18px 10px; }
.audit-toolbar input { flex: 1 1 240px; min-width:0; min-height: 36px; }
.audit-toolbar select { width:auto; max-width:100%; }
.audit-list { display: grid; max-height: 58vh; margin: 0 18px; overflow-y: auto; overflow-x: hidden; border: 1px solid var(--line); border-radius: 10px; }
.audit-row { display: grid; grid-template-columns: 10px minmax(180px, .7fr) minmax(0, 1.7fr); align-items: start; gap: 12px; padding: 13px 14px; border-top: 1px solid #edf1f7; }
.audit-row:first-child { border-top: 0; }
.audit-row > div { display: grid; gap: 2px; }
.audit-row small { color: var(--muted); font-size: 11px; }
.audit-main { min-width: 0; }
.audit-detail { min-width: 0; color: #33405c; font-size: 12px; line-height: 1.55; white-space: normal; overflow-wrap: anywhere; }
.audit-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--blue); }
@media (max-width: 640px) {
  .audit-row { grid-template-columns: 8px 1fr; }
  .audit-detail { grid-column: 2; }
}

@media (max-width: 1280px) {
  .metric-grid { grid-template-columns: repeat(4, 1fr); }
  .filter-panel { align-items: stretch; flex-direction: column; }
}

/* 目标ROI / 千川赔付测算弹窗 */
.goal-dialog { width: min(660px, 94vw); }
.goal-current { margin: 16px 20px 0; font-size: 13px; color: #344054; }
.goal-current b { color: var(--blue); font-size: 14px; }
.goal-current-roi { color: var(--muted); font-size: 12px; margin-left: 8px; }
.goal-input { display: grid; gap: 6px; margin: 14px 20px 0; font-size: 12px; font-weight: 700; }
.goal-input input { min-height: 40px; padding: 0 12px; border: 1px solid var(--line); border-radius: 8px; font-size: 15px; font-weight: 600; color: #172033; }
.goal-input input:focus { outline: none; border-color: var(--blue); }
.goal-tip { margin: 14px 20px 0; background: #f4f7fb; border-radius: 8px; padding: 10px 12px; font-size: 12px; line-height: 1.75; color: #475467; }
.goal-stats { margin: 14px 20px 0; display: flex; flex-wrap: wrap; gap: 8px; align-items: center; font-size: 12px; color: #344054; }
.goal-chip { display: inline-flex; align-items: center; padding: 4px 10px; border-radius: 999px; background: #eef2f7; font-size: 12px; }
.goal-chip.ok { background: #e4f5ec; color: var(--green); font-weight: 700; }
.goal-chip.warn { background: #fdf1e2; color: #b45309; }
#goalRoiStatus { color: var(--red); font-size: 12px; }
/* 计划行赔付列：测算/到账为收入用绿色，缺目标ROI用琥珀色提示 */
#planRows td.comp-est, #planRows td.comp-actual { color: var(--green); font-weight: 700; }
#planRows td.comp-nogoal small { color: #b45309; }

/* ===================== 今日实时驾驶舱（一级首页） ===================== */
.overview-home { margin-top: 14px; display: grid; gap: 14px; }
.ov-hero {
  position: relative; overflow: hidden;
  display: flex; align-items: center; justify-content: space-between; gap: 24px;
  padding: 22px 26px; border-radius: 14px; color: #fff;
  background:
    radial-gradient(1200px 240px at 12% -40%, rgba(96,165,250,.55), transparent 60%),
    radial-gradient(900px 260px at 96% 120%, rgba(56,189,248,.4), transparent 55%),
    linear-gradient(118deg, #081d54 0%, #0e2f86 42%, #1450c8 100%);
  box-shadow: 0 18px 46px rgba(10, 39, 111, .28);
}
.ov-hero::after { content: ""; position: absolute; inset: 0; background-image: linear-gradient(rgba(255,255,255,.05) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.05) 1px, transparent 1px); background-size: 34px 34px; pointer-events: none; }
.ov-hero-left, .ov-hero-right { position: relative; z-index: 1; }
.ov-kicker { font-size: 10px; font-weight: 800; letter-spacing: .28em; color: #9ec1ff; }
.ov-hero h2 { margin: 6px 0 6px; font-size: 27px; font-weight: 800; letter-spacing: .01em; }
.ov-hero h2 b { margin-left: 10px; padding: 3px 12px; border-radius: 999px; background: rgba(255,255,255,.16); font-size: 15px; font-weight: 700; }
.ov-hero p { color: #c4d8ff; font-size: 12px; }
.ov-hero-right { display: flex; align-items: center; gap: 16px; }
.ov-live { display: flex; align-items: center; gap: 7px; font-size: 12px; font-weight: 700; color: #d7ecff; }
.ov-dot { width: 9px; height: 9px; border-radius: 50%; background: #34e0a1; box-shadow: 0 0 0 0 rgba(52,224,161,.7); animation: ovPulse 1.8s infinite; }
.ov-dot.busy { background: #ffd166; animation: none; }
.ov-dot.off { background: #ff7d7d; animation: none; }
@keyframes ovPulse { 0% { box-shadow: 0 0 0 0 rgba(52,224,161,.65);} 70% { box-shadow: 0 0 0 9px rgba(52,224,161,0);} 100% { box-shadow: 0 0 0 0 rgba(52,224,161,0);} }
.ov-updated { font-size: 12px; color: #c4d8ff; }
.ov-updated b { color: #fff; font-variant-numeric: tabular-nums; }
.ov-refresh-btn { min-height: 36px; padding: 7px 16px; border: 1px solid rgba(255,255,255,.4); border-radius: 8px; background: rgba(255,255,255,.14); color: #fff; font-weight: 700; backdrop-filter: blur(4px); }
.ov-refresh-btn:hover { background: rgba(255,255,255,.26); }
.ov-refresh-btn:disabled { opacity: .6; cursor: wait; }

.ov-range-switch { display: inline-flex; flex-wrap: wrap; gap: 4px; margin-top: 12px; padding: 4px; border-radius: 10px; background: rgba(255,255,255,.12); border: 1px solid rgba(255,255,255,.18); }
.ov-range-switch button { padding: 6px 14px; border: 0; border-radius: 7px; background: transparent; color: #cfe0ff; font-size: 12px; font-weight: 700; cursor: pointer; white-space: nowrap; }
.ov-range-switch button:hover { color: #fff; background: rgba(255,255,255,.08); }
.ov-range-switch button.active { background: #fff; color: #0e2f86; box-shadow: 0 4px 12px rgba(0,0,0,.18); }

.ov-kpis { display: grid; grid-template-columns: repeat(8, 1fr); gap: 10px; }
.ov-kpi { position: relative; padding: 15px 15px 13px; border: 1px solid var(--line); border-radius: 12px; background: #fff; box-shadow: 0 8px 26px rgba(36,69,113,.06); overflow: hidden; }
.ov-kpi::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: linear-gradient(90deg, var(--blue), #4f8bff); }
.ov-kpi.k-green::before { background: linear-gradient(90deg, #07865c, #2fbf8f); }
.ov-kpi.k-red::before { background: linear-gradient(90deg, #c3143a, #ff6b81); }
.ov-kpi.k-gold::before { background: linear-gradient(90deg, #b8860b, #f5c451); }
.ov-kpi span { color: var(--muted); font-size: 11px; font-weight: 600; }
.ov-kpi b { display: block; margin-top: 9px; font-size: 23px; font-weight: 800; font-variant-numeric: tabular-nums; letter-spacing: -.01em; }
.ov-kpi small { display: block; margin-top: 3px; color: var(--muted); font-size: 10px; }
.ov-kpi b.tone-positive { color: var(--green); }
.ov-kpi b.tone-negative { color: var(--red); }

.ov-error { padding: 11px 15px; border-left: 4px solid var(--red); background: #fff5f7; color: #8d1830; border-radius: 6px; font-size: 12px; }

.ov-columns { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; align-items: start; }
.ov-panel { border: 1px solid var(--line); border-radius: 14px; background: #fff; box-shadow: 0 8px 30px rgba(36,69,113,.05); overflow: hidden; }
.ov-panel > header { display: flex; align-items: flex-end; justify-content: space-between; gap: 12px; padding: 16px 18px 13px; border-bottom: 1px solid var(--line); }
.ov-panel > header span { color: var(--blue); font-size: 10px; font-weight: 800; letter-spacing: .1em; }
.ov-panel > header h3 { margin: 4px 0 0; font-size: 16px; }
.ov-panel > header small { color: var(--muted); font-size: 10px; text-align: right; }
.ov-rank-list { display: grid; }
.ov-skeleton { padding: 30px 18px; color: var(--muted); font-size: 12px; text-align: center; }

.ov-row { display: grid; grid-template-columns: 30px 46px 1fr auto; gap: 12px; align-items: center; padding: 12px 18px; border-bottom: 1px solid #eef2f8; }
.ov-row:last-child { border-bottom: 0; }
.ov-row.is-card { background: #fafbfd; }
.ov-rank { width: 26px; height: 26px; display: grid; place-items: center; border-radius: 8px; background: #eef2f8; color: #5d6879; font-size: 12px; font-weight: 800; }
.ov-rank.r1 { background: linear-gradient(135deg,#ffd76a,#f5a623); color: #6b3f00; }
.ov-rank.r2 { background: linear-gradient(135deg,#d7deea,#aeb9cc); color: #3a465c; }
.ov-rank.r3 { background: linear-gradient(135deg,#e8b48c,#c98a54); color: #5e3413; }
.ov-thumb { width: 46px; height: 46px; border-radius: 9px; object-fit: cover; border: 1px solid var(--line); background: #f1f4f9; }
.ov-thumb-fallback { width: 46px; height: 46px; border-radius: 9px; display: grid; place-items: center; background: #eef2f8; color: #8a97ab; font-size: 18px; }
.ov-main { min-width: 0; }
.ov-name { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; font-weight: 700; color: #1d283d; }
.ov-sub { display: flex; align-items: center; gap: 8px; margin-top: 4px; color: var(--muted); font: 11px Consolas, "Microsoft YaHei", monospace; }
.ov-tag { padding: 1px 7px; border-radius: 999px; background: #eef2f8; color: #687386; font-family: inherit; font-size: 10px; }
.ov-tag.card-tag { background: #f3e9ff; color: #7a4fd0; }
.unnamed-tag { display: inline-block; vertical-align: middle; margin-left: 2px; padding: 0 7px; border-radius: 999px; background: #f4f5f7; color: #a0a8b6; border: 1px dashed #d7dce4; font-size: 10px; font-weight: 600; font-family: "Microsoft YaHei", sans-serif; letter-spacing: .5px; }
.ov-bar { position: relative; height: 4px; margin-top: 7px; border-radius: 4px; background: #edf1f7; overflow: hidden; }
.ov-bar i { position: absolute; inset: 0 auto 0 0; border-radius: 4px; background: linear-gradient(90deg, var(--blue), #5b93ff); }
.ov-stat { text-align: right; min-width: 132px; }
.ov-stat .cost { font-size: 17px; font-weight: 800; color: var(--blue-dark); font-variant-numeric: tabular-nums; }
.ov-stat .cost small { font-size: 10px; color: var(--muted); font-weight: 600; }
.ov-stat .sub { margin-top: 3px; color: var(--muted); font-size: 10.5px; white-space: nowrap; }
.ov-stat .sub b { color: #33405c; font-weight: 700; }
.ov-stat .pr-pos { color: var(--green); font-weight: 700; }
.ov-stat .pr-neg { color: var(--red); font-weight: 700; }
.ov-detail-btn { margin-top: 6px; min-height: 26px; padding: 3px 12px; border-radius: 6px; border: 1px solid #c3d2ee; background: #f2f6ff; color: var(--blue); font-size: 11px; font-weight: 700; }
.ov-detail-btn:hover { background: var(--blue); color: #fff; border-color: var(--blue); }
.ov-material-icon { width: 46px; height: 46px; border-radius: 9px; display: grid; place-items: center; background: linear-gradient(135deg,#eaf1ff,#dbe7ff); color: var(--blue); font-size: 20px; }
.ov-row.is-card .ov-material-icon { background: linear-gradient(135deg,#f1e9ff,#e6d8ff); color: #7a4fd0; }

.back-overview { min-height: 30px; margin-bottom: 6px; padding: 4px 12px; border-radius: 7px; font-size: 12px; font-weight: 700; }

@media (max-width: 1500px) { .ov-kpis { grid-template-columns: repeat(4, 1fr); } }
@media (max-width: 1280px) { .ov-columns { grid-template-columns: 1fr; } .ov-hero { flex-direction: column; align-items: flex-start; } }

/* ===================== UI 2.0 立体化质感增强 · 领晟汇 ===================== */
:root {
  --ink: #0e1b33;
  --sh-sm: 0 2px 8px rgba(20,52,110,.06);
  --sh-md: 0 10px 30px rgba(20,52,110,.10), 0 2px 6px rgba(20,52,110,.05);
  --sh-lg: 0 22px 55px rgba(16,44,102,.16), 0 6px 16px rgba(16,44,102,.08);
  --sh-brand: 0 8px 22px rgba(28,86,220,.32);
}
/* 纵深背景：顶部双色光晕 + 浅蓝渐变 */
body {
  color: var(--ink);
  background:
    radial-gradient(1100px 480px at 6% -10%, rgba(86,140,255,.17), transparent 60%),
    radial-gradient(900px 430px at 102% -2%, rgba(56,189,248,.15), transparent 55%),
    linear-gradient(180deg,#e9f1ff 0%,#f4f9ff 42%,#edf4ff 100%);
  background-attachment: fixed;
}
/* 悬浮毛玻璃顶栏 */
.topbar {
  position: sticky; top: 0; z-index: 60;
  background: rgba(255,255,255,.84);
  -webkit-backdrop-filter: blur(14px) saturate(150%); backdrop-filter: blur(14px) saturate(150%);
  border-bottom: 1px solid rgba(190,208,235,.7);
  box-shadow: 0 6px 24px rgba(20,52,110,.08);
}
.brand { display: flex; align-items: center; gap: 13px; }
.brand-text { display: grid; gap: 2px; }
.brand-logo {
  width: 46px; height: 46px; display: grid; place-items: center; border-radius: 13px;
  font-style: normal; font-weight: 900; font-size: 23px; color: #fff;
  background: linear-gradient(140deg,#1b46d6 0%,#2f6bff 48%,#38bdf8 100%);
  box-shadow: 0 10px 22px rgba(32,88,220,.40), inset 0 1px 0 rgba(255,255,255,.45), inset 0 -3px 6px rgba(8,30,90,.28);
  position: relative; overflow: hidden;
}
.brand-logo::after { content: ""; position: absolute; inset: 0; background: linear-gradient(120deg,transparent 22%,rgba(255,255,255,.55) 46%,transparent 62%); opacity: .55; }
.brand h1 { font-size: 21px; letter-spacing: .01em; background: linear-gradient(90deg,#0a276f,#1f4fe0 60%,#0e8fd0); -webkit-background-clip: text; background-clip: text; color: transparent; }
.preview-badge { border: 0; border-radius: 999px; padding: 6px 12px; background: linear-gradient(135deg,#fff0f4,#ffe3ea); color: #c01838; box-shadow: inset 0 0 0 1px rgba(214,42,82,.18); font-weight: 800; }

/* 统一立体卡片 */
.filter-panel, .table-card, .safety-note, .ov-panel {
  border: 1px solid rgba(214,226,244,.9); border-radius: 16px;
  box-shadow: var(--sh-md); background: linear-gradient(180deg,#ffffff,#fbfdff);
}
.filter-panel { transition: box-shadow .25s ease; }
.filter-panel:hover { box-shadow: var(--sh-lg); }
.metric-card, .ov-kpi {
  border: 1px solid rgba(219,227,239,.9); border-radius: 14px;
  box-shadow: var(--sh-sm); background: linear-gradient(180deg,#ffffff,#f8fbff);
  transition: transform .22s ease, box-shadow .22s ease;
}
.metric-card:hover, .ov-kpi:hover { transform: translateY(-3px); box-shadow: var(--sh-md); }
.ov-kpi::before { height: 4px; background: linear-gradient(90deg,#1239b6,#38bdf8) !important; }
.ov-kpi.k-green::before { background: linear-gradient(90deg,#057a53,#34e0a1) !important; }
.ov-kpi.k-red::before { background: linear-gradient(90deg,#b00f33,#ff7d94) !important; }
.ov-kpi.k-gold::before { background: linear-gradient(90deg,#a9760a,#ffd166) !important; }

/* 主按钮渐变立体（.secondary 与容器内导航按钮靠更高特异性保持原样） */
button, .button {
  border: 1px solid transparent; border-radius: 9px; font-weight: 700;
  background: linear-gradient(135deg,#1a44cf 0%,#2f6bff 55%,#3b86ff 100%);
  box-shadow: var(--sh-brand), inset 0 1px 0 rgba(255,255,255,.28);
  transition: transform .15s ease, box-shadow .2s ease, filter .2s ease, background .2s ease;
}
button:hover, .button:hover { filter: brightness(1.06); transform: translateY(-1px); box-shadow: 0 12px 26px rgba(28,86,220,.40), inset 0 1px 0 rgba(255,255,255,.3); }
button:active, .button:active { transform: translateY(0); filter: brightness(.98); }
.secondary { background: linear-gradient(180deg,#ffffff,#eef3fb); border: 1px solid #c3d0e6; color: #283346; box-shadow: 0 3px 10px rgba(30,60,110,.08); }
.secondary:hover { filter: none; background: linear-gradient(180deg,#ffffff,#e3ecfb); box-shadow: 0 6px 16px rgba(30,60,110,.14); }
.ov-refresh-btn { background: rgba(255,255,255,.16) !important; border: 1px solid rgba(255,255,255,.4) !important; box-shadow: none !important; -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); }
.ov-refresh-btn:hover { background: rgba(255,255,255,.28) !important; filter: none; transform: none; }

/* 输入控件聚焦光晕 */
input, select, textarea { border-radius: 8px; transition: border-color .18s, box-shadow .18s; }
input:focus, select:focus, textarea:focus { outline: none; border-color: #2f6bff; box-shadow: 0 0 0 3px rgba(47,107,255,.16); }
#productInput { border-radius: 10px; }

/* 表格：渐变表头 + 行悬浮 */
th { background: linear-gradient(180deg,#f4f8ff,#ebf2fc) !important; color: #46566f; }
th:first-child { background: linear-gradient(180deg,#f4f8ff,#ebf2fc) !important; }
#planRows tr { transition: background .15s; }
#planRows tr:hover td { background: #f2f7ff; }
#planRows tr:hover td:first-child { background: #f2f7ff; }
tfoot td { background: linear-gradient(180deg,#eef4ff,#e3edff) !important; }
tfoot td:first-child { background: linear-gradient(180deg,#eef4ff,#e3edff) !important; }

/* 深色 Hero 强化 */
.ov-hero { border-radius: 18px; border: 1px solid rgba(255,255,255,.12); box-shadow: 0 24px 60px rgba(10,39,111,.38), inset 0 1px 0 rgba(255,255,255,.18); }
.ov-hero::before { content: ""; position: absolute; width: 520px; height: 520px; right: -120px; top: -220px; border-radius: 50%; background: radial-gradient(circle,rgba(125,190,255,.35),transparent 65%); pointer-events: none; }
.ov-hero h2 b { background: rgba(255,255,255,.14); border: 1px solid rgba(255,255,255,.22); -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); }
.ov-range-switch { box-shadow: inset 0 1px 0 rgba(255,255,255,.15); }

/* 榜单行悬浮 + 金银铜排名徽章立体 */
.ov-row { transition: background .18s, transform .18s; }
.ov-row:hover { background: linear-gradient(90deg,#f3f8ff,#fbfdff); transform: translateX(3px); }
.ov-rank { box-shadow: 0 4px 10px rgba(30,60,110,.14); }
.ov-rank.r1 { box-shadow: 0 5px 13px rgba(224,150,20,.45); }
.ov-rank.r2 { box-shadow: 0 5px 13px rgba(120,135,160,.4); }
.ov-rank.r3 { box-shadow: 0 5px 13px rgba(190,120,70,.4); }
.ov-thumb, .ov-material-icon, .ov-thumb-fallback { box-shadow: 0 4px 12px rgba(30,60,110,.12); }
.ov-bar { height: 5px; }
.ov-detail-btn { border-radius: 8px; transition: all .18s; }

/* 分页立体 */
.pager-controls button { border-radius: 8px; transition: all .15s; }
.pager-controls button:hover:not(:disabled) { transform: translateY(-1px); box-shadow: 0 4px 10px rgba(30,60,110,.12); }
.pager-controls button.active { background: linear-gradient(135deg,#1a44cf,#3b86ff); box-shadow: 0 4px 12px rgba(28,86,220,.35); }

/* 弹窗 / 提示 */
dialog { border-radius: 18px !important; box-shadow: 0 40px 100px rgba(10,26,58,.45) !important; }
.dialog-card > header { border-top: 0 !important; background: linear-gradient(180deg,#f6f9ff,#fff); }
.toast { border-radius: 12px; border-left: 4px solid #2f6bff; box-shadow: var(--sh-lg); }
.integration-state { border-radius: 0 8px 8px 0; background: linear-gradient(180deg,#f5f9ff,#eef3fb); }

/* 滚动条 */
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-thumb { background: linear-gradient(180deg,#b9cbe8,#9db4dc); border-radius: 999px; border: 2px solid transparent; background-clip: content-box; }
::-webkit-scrollbar-thumb:hover { background: linear-gradient(180deg,#93add6,#7d99c8); background-clip: content-box; border: 2px solid transparent; }
::-webkit-scrollbar-track { background: transparent; }

/* ===================== 登录 / 账号 ===================== */
.login-view {
  position: fixed; inset: 0; z-index: 200; display: grid; place-items: center; padding: 24px;
  background:
    radial-gradient(1000px 520px at 12% -12%, rgba(86,140,255,.38), transparent 60%),
    radial-gradient(900px 520px at 112% 112%, rgba(56,189,248,.32), transparent 55%),
    linear-gradient(135deg,#07163f 0%,#0e2f86 55%,#1450c8 100%);
}
.login-card {
  width: 420px; max-width: 100%; background: rgba(255,255,255,.97);
  border-radius: 22px; padding: 34px 34px 28px;
  box-shadow: 0 40px 100px rgba(4,16,46,.55), inset 0 1px 0 rgba(255,255,255,.8);
  border: 1px solid rgba(255,255,255,.6);
}
.login-brand { display: flex; align-items: center; gap: 12px; margin-bottom: 22px; padding-bottom: 18px; border-bottom: 1px solid #e7eefb; }
.login-brand h1 { font-size: 20px; margin: 2px 0 0; background: linear-gradient(90deg,#0a276f,#1f4fe0 60%,#0e8fd0); -webkit-background-clip: text; background-clip: text; color: transparent; }
.login-brand .brand-text span { font-size: 10px; letter-spacing: .18em; color: #7a8aa3; font-weight: 700; }
.login-panel h2 { font-size: 19px; margin: 0 0 16px; color: #10234d; }
.login-panel > label { display: grid; gap: 7px; font-size: 13px; color: #46566f; font-weight: 600; margin-bottom: 14px; }
.login-panel input { width: 100%; padding: 11px 13px; font-size: 14px; box-sizing: border-box; }
.login-pw { position: relative; display: flex; align-items: center; gap: 8px; }
.login-pw input { flex: 1; }
.pw-toggle { padding: 8px 12px !important; font-size: 12px !important; border-radius: 8px !important; flex: none; box-shadow: none !important; }
.login-remember { display: flex !important; flex-direction: row !important; align-items: center; gap: 8px; font-weight: 500 !important; color: #5a6a83 !important; margin-bottom: 18px !important; }
.login-remember input { width: auto !important; }
.login-btn { width: 100%; padding: 13px; font-size: 16px; letter-spacing: .3em; border-radius: 11px; margin-top: 2px; }
.login-status { display: block; min-height: 18px; font-size: 13px; color: #d33; margin-top: 10px; }
.login-tip { font-size: 12px; color: #5a6a83; background: #f4f8ff; border-radius: 10px; padding: 9px 11px; margin: 0 0 14px; line-height: 1.6; }
.login-switch { text-align: center; font-size: 13px; color: #7a8aa3; margin: 14px 0 0; }
.link-btn { background: none !important; border: 0 !important; box-shadow: none !important; color: #1f4fe0 !important; font-weight: 700; padding: 0 2px !important; cursor: pointer; }
.link-btn:hover { filter: none !important; transform: none !important; text-decoration: underline; background: none !important; }
.user-chip { display: inline-flex; align-items: center; gap: 6px; padding: 6px 12px; border-radius: 999px; background: linear-gradient(135deg,#eef4ff,#e3edff); color: #1d3f8f; font-weight: 700; font-size: 13px; border: 1px solid #cfddf6; }

/* ===================== 公司运营中台 · 应用工作台 ===================== */
.ws-nav { border: 1px solid rgba(214,226,244,.9); border-radius: 16px; padding: 16px 18px 8px; background: linear-gradient(180deg,#ffffff,#f8fbff); box-shadow: var(--sh-md); }
.ws-nav-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 12px; margin-bottom: 10px; }
.ws-nav-head span { color: var(--blue); font-size: 10px; font-weight: 800; letter-spacing: .14em; }
.ws-nav-head h3 { margin: 4px 0 0; font-size: 16px; color: #10234d; }
.ws-nav-head small { color: var(--muted); font-size: 11px; }
.ws-groups { display: grid; }
.ws-group { display: grid; grid-template-columns: 118px 1fr; gap: 14px; align-items: start; padding: 11px 0; border-top: 1px dashed #e2e9f4; }
.ws-group:first-child { border-top: 0; }
.ws-group-title { padding-top: 11px; color: #3a4a66; font-size: 12px; font-weight: 800; letter-spacing: .02em; }
.ws-grid { display: grid; grid-template-columns: repeat(auto-fill,minmax(232px,1fr)); gap: 10px; }
.ws-tile { position: relative; display: flex; align-items: center; gap: 11px; min-height: 62px; padding: 11px 13px; text-align: left;
  border: 1px solid #dbe4f2 !important; border-radius: 13px; background: linear-gradient(180deg,#ffffff,#f5f9ff) !important; color: #1d283d !important;
  box-shadow: var(--sh-sm); transition: transform .18s ease, box-shadow .18s ease, border-color .18s; }
.ws-tile:hover { transform: translateY(-2px); border-color: #9db9f2 !important; box-shadow: var(--sh-md); filter: none; }
.ws-tile:active { transform: translateY(0); }
.ws-tile .ws-ic { width: 38px; height: 38px; flex: none; display: grid; place-items: center; border-radius: 11px; font-size: 19px;
  background: linear-gradient(135deg,#eaf1ff,#dbe7ff); box-shadow: inset 0 1px 0 #fff, 0 3px 8px rgba(30,60,110,.12); }
.ws-txt { min-width: 0; display: grid; gap: 2px; padding-right: 52px; }
.ws-txt b { font-size: 13px; font-weight: 800; color: #16233c; }
.ws-txt small { color: var(--muted); font-size: 10.5px; line-height: 1.4; white-space: normal; font-weight: 500; }
.ws-badge { position: absolute; top: 8px; right: 9px; padding: 1px 7px; border-radius: 999px; background: #eaf1ff; color: #2b5cb8; font-size: 9.5px; font-weight: 800; }
.ws-badge.admin { background: #fff1e0; color: #b4690a; }
.ws-tile.soon { border-style: dashed !important; background: linear-gradient(180deg,#fafbfd,#f3f6fa) !important; opacity: .74; }
.ws-tile.soon .ws-ic { background: linear-gradient(135deg,#eef1f6,#e3e8f0); box-shadow: none; }
.ws-tile.soon .ws-badge { background: #eceff4; color: #8a94a6; }
.ws-tile.soon:hover { transform: none; border-color: #c6cfdd !important; box-shadow: var(--sh-sm); }
@media (max-width:1280px) { .ws-group { grid-template-columns: 1fr; gap: 6px; } .ws-group-title { padding-top: 0; } }

/* ===================== 工作台主页（开始菜单）===================== */
.filter-panel[hidden], #homeMenu[hidden], #overviewHome[hidden] { display: none !important; }
.home-menu { display: grid; gap: 16px; }
.menu-hero {
  position: relative; overflow: hidden; border-radius: 18px; padding: 30px 34px; color: #fff;
  display: flex; align-items: center; justify-content: space-between; gap: 18px;
  background:
    radial-gradient(680px 260px at 6% -60%, rgba(96,165,250,.5), transparent 60%),
    radial-gradient(560px 260px at 112% 150%, rgba(56,189,248,.4), transparent 55%),
    linear-gradient(125deg,#0a2370 0%,#1239b6 52%,#0e7fc4 100%);
  box-shadow: 0 24px 60px rgba(10,39,111,.38), inset 0 1px 0 rgba(255,255,255,.18);
}
.menu-hero .ov-kicker { color: rgba(255,255,255,.72); }
.menu-hero h2 { margin: 6px 0 8px; font-size: 27px; letter-spacing: .01em; }
.menu-hero p { margin: 0; color: rgba(255,255,255,.82); font-size: 13.5px; }
.menu-date { padding: 8px 15px; border-radius: 999px; background: rgba(255,255,255,.14); border: 1px solid rgba(255,255,255,.25); font-size: 13px; font-weight: 700; white-space: nowrap; -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px); }
.menu-groups { border: 1px solid rgba(214,226,244,.9); border-radius: 16px; padding: 20px 22px 14px; background: linear-gradient(180deg,#ffffff,#f8fbff); box-shadow: var(--sh-md); }
.menu-groups .ws-group { grid-template-columns: 1fr; gap: 10px; padding: 14px 0; }
.menu-groups .ws-group-title { padding-top: 0; font-size: 12.5px; letter-spacing: .04em; color: #2b4a73; }
.menu-groups .ws-grid { grid-template-columns: repeat(auto-fill,minmax(258px,1fr)); gap: 12px; }
.menu-groups .ws-tile { min-height: 78px; padding: 14px 15px; border-radius: 14px; }
.menu-groups .ws-tile .ws-ic { width: 44px; height: 44px; font-size: 22px; border-radius: 12px; }
.menu-groups .ws-txt b { font-size: 13.5px; }
.menu-groups .ws-txt small { font-size: 11px; }
.cockpit-bar { display: flex; align-items: center; gap: 12px; margin-bottom: 12px; }
.cockpit-bar span { color: var(--muted); font-size: 12.5px; font-weight: 600; }
/* ===================== v60 立体化升级：多标签 / 工具视图 / 天气名言 / 全量榜 / 代理商 / 播放 ===================== */
:root { --gold1:#ffe6ad; --gold2:#ffc876; --ink:#16233c; }

/* 顶部品牌可点回首页 */
.topbar .brand { cursor: pointer; user-select: none; border-radius: 12px; transition: background .15s; }
.topbar .brand:hover { background: #f3f7ff; }
.topbar .brand.brand-home::after { content:"返回首页"; margin-left:10px; align-self:center; padding:2px 9px; border-radius:999px; background:#eef4ff; color:var(--blue); font-size:10px; font-weight:700; }

/* 多标签导航（仿巨量后台） */
.view-tabs { display:flex; flex-wrap:wrap; gap:6px; width:min(1840px,94vw); margin:12px auto 0; }
.vt-tab { display:inline-flex; align-items:center; gap:8px; min-height:34px; padding:0 8px 0 14px; border:1px solid #cfdcee; border-bottom:0; border-radius:10px 10px 0 0; background:linear-gradient(180deg,#f6f9ff,#eaf1fc); color:#3a4a66; font-size:12.5px; font-weight:700; }
.vt-tab:hover { background:#e3edff; color:var(--blue); }
.vt-tab.active { background:linear-gradient(180deg,#1a4fd0,#1239b6); color:#fff; border-color:#1239b6; box-shadow:0 -3px 10px rgba(18,57,182,.25); }
.vt-close { width:18px; height:18px; display:grid; place-items:center; border-radius:50%; border:0; background:transparent; color:inherit; font-size:13px; line-height:1; padding:0; }
.vt-tab.active .vt-close:hover { background:rgba(255,255,255,.22); }
.vt-tab:not(.active) .vt-close:hover { background:#cdddf5; }

/* 工作台 hero 三栏 + 每周名言（金色艺术字）+ 天气 */
.menu-hero { align-items:stretch; }
.menu-hero-left { flex:0 0 auto; align-self:center; }
.menu-hero-mid { flex:1 1 auto; display:flex; align-items:center; justify-content:center; padding:0 26px; min-width:0; }
.wq-text { font-family:"STKaiti","KaiTi","Microsoft YaHei",serif; font-style:italic; font-size:21px; font-weight:700; line-height:1.5; text-align:center;
  background:linear-gradient(100deg,var(--gold1),#fff3d4 45%,var(--gold2)); -webkit-background-clip:text; background-clip:text; color:transparent;
  text-shadow:0 1px 14px rgba(255,200,118,.25); letter-spacing:.02em; }
.wq-author { display:block; margin-top:8px; text-align:center; color:rgba(255,255,255,.78); font-size:12px; letter-spacing:.1em; }
.menu-hero-mid { flex-direction:column; gap:2px; }
.menu-hero-right { flex:0 0 auto; display:flex; flex-direction:column; align-items:flex-end; gap:10px; justify-content:center; }
.weather-strip { display:grid; gap:7px; min-width:330px; padding:11px 13px; border-radius:13px; background:rgba(255,255,255,.12); border:1px solid rgba(255,255,255,.22); -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px); }
.wf-lunar { display:flex; align-items:center; gap:10px; color:rgba(255,255,255,.92); font-size:12px; font-weight:700; }
.wf-fest { padding:2px 9px; border-radius:999px; background:rgba(255,214,130,.22); border:1px solid rgba(255,214,130,.5); color:var(--gold1); font-size:11px; }
.wf-fest.today { background:rgba(255,196,90,.32); color:#fff6e2; }
.wf-days { display:grid; grid-template-columns:repeat(auto-fit,minmax(110px,1fr)); gap:6px; }
.wf-day { display:grid; gap:2px; padding:6px 8px; border-radius:9px; background:rgba(255,255,255,.12); text-align:center; }
.wf-day b { font-size:11px; color:#fff; }
.wf-day i { font-style:normal; font-size:11px; color:rgba(255,255,255,.9); }
.wf-day em { font-style:normal; font-size:10.5px; color:rgba(255,255,255,.72); }
.wf-day small { font-size:9.5px; color:rgba(255,255,255,.6); }
.wf-loading { color:rgba(255,255,255,.75); font-size:11px; }

/* 立体卡片基础 */
.card-3d { border:1px solid #dce6f5; border-radius:16px; background:linear-gradient(180deg,#ffffff,#f7faff);
  box-shadow:0 1px 0 #fff inset, 0 10px 30px rgba(23,54,103,.08), 0 2px 6px rgba(23,54,103,.05); }

/* 工具视图通用骨架 */
.tool-view, .tool-shell { display:grid; grid-template-columns:minmax(0,1fr); gap:14px; min-width:0; }
.tool-head { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; padding:18px 20px; }
.tool-head h2 { margin:0; font-size:19px; color:var(--ink); }
.tool-head-row { display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.tool-sub { margin:5px 0 0; color:var(--muted); font-size:12px; }
.tool-body { display:grid; grid-template-columns:minmax(0,1fr); gap:14px; min-width:0; }
.tool-body > * { min-width:0; max-width:100%; }
.tool-query { display:flex; flex-wrap:wrap; align-items:flex-end; gap:10px; padding:15px 18px; }
.tool-query label { min-width:180px; }
.tool-msg { padding:10px 14px; border-radius:10px; background:#eef4ff; border-left:4px solid var(--blue); color:#274273; font-size:12.5px; }
.tool-hint { color:var(--muted); font-size:11.5px; }
.tool-empty { padding:46px 20px; text-align:center; color:#8a97ab; font-size:13px; }
button.primary, .primary-btn { border:0; border-radius:9px; background:linear-gradient(180deg,#2f63e0,#1239b6); color:#fff; font-weight:700; box-shadow:0 6px 16px rgba(18,57,182,.28), inset 0 1px 0 rgba(255,255,255,.25); }
button.primary:hover { filter:brightness(1.06); }
button.ghost { border:1px solid #c3d2ee; border-radius:9px; background:#fff; color:var(--blue); font-weight:700; }
button.ghost:hover { background:#eef4ff; }
button.danger, .danger { border-color:#f1c0cb; background:#fff; color:var(--red); }
button.danger:hover { background:#fff1f4; }

/* 工具内区间条 */
.tool-range { display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.tr-btn { min-height:32px; padding:5px 13px; border:1px solid #cfdcee; border-radius:999px; background:#fff; color:#46566f; font-size:12px; font-weight:700; }
.tr-btn.active { background:var(--blue); border-color:var(--blue); color:#fff; box-shadow:0 4px 10px rgba(18,57,182,.25); }
.tr-custom { display:flex; align-items:flex-end; gap:6px; }
.tr-custom input { min-height:32px; }

/* KPI 小卡 */
.kpi-row { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:11px; }
.kpi-mini { padding:14px 15px; border-radius:13px; border:1px solid #dce6f5; background:linear-gradient(180deg,#fff,#f6f9ff); box-shadow:0 6px 18px rgba(23,54,103,.06); }
.kpi-mini span { color:var(--muted); font-size:11px; font-weight:600; }
.kpi-mini b { display:block; margin-top:8px; font-size:21px; font-weight:800; color:var(--ink); font-variant-numeric:tabular-nums; }
.kpi-mini.pos b { color:var(--green); } .kpi-mini.neg b { color:var(--red); } .kpi-mini.warn b { color:#b4690a; }
.tool-body td.pos { color:var(--green); font-weight:800; }
.tool-body td.neg { color:var(--red); font-weight:800; }
.tool-body td.pending { color:var(--muted); }

/* 素材过审 */
.ea-list { display:grid; gap:10px; }
.ea-editor { border:1px solid #dce6f5; border-radius:13px; background:#fff; overflow:hidden; box-shadow:0 4px 14px rgba(23,54,103,.05); }
.ea-editor summary { display:flex; align-items:center; gap:16px; padding:13px 17px; cursor:pointer; list-style:none; }
.ea-editor summary::-webkit-details-marker { display:none; }
.ea-name { font-weight:800; font-size:14px; min-width:120px; color:var(--ink); }
.ea-nums { display:flex; gap:20px; flex:1; color:#46566f; font-size:12px; }
.ea-rate { font-weight:800; color:var(--blue); }
.ea-bar { height:7px; flex:0 0 160px; border-radius:6px; background:#edf1f7; overflow:hidden; }
.ea-bar i { display:block; height:100%; border-radius:6px; background:linear-gradient(90deg,#2f63e0,#38bdf8); }
.ea-products { display:flex; flex-wrap:wrap; gap:7px; padding:10px 17px; border-top:1px dashed #e3eaf5; background:#f8fbff; }
.ea-products .ov-tag { max-width:100%; white-space:normal; line-height:1.5; }
.ow-explain { background:#eef4ff; padding:12px 16px; border-radius:10px; color:#4e6487; font-size:12px; line-height:1.8; }
.ow-records { padding:16px; margin-top:16px; min-width:0; }
.ow-records h3 { margin:0 0 12px; }.ow-records h3 small { color:var(--muted); font-size:12px; }
.ow-records table { width:100%; min-width:700px; }.ow-records th,.ow-records td { padding:10px; }
.ow-script-cell { min-width:230px; max-width:400px; }.ow-script-cell p { margin:8px 0; font-size:12px; font-weight:400; color:#52627d; white-space:pre-wrap; overflow-wrap:anywhere; line-height:1.7; }
.ow-pager { display:flex; align-items:center; justify-content:end; flex-wrap:wrap; gap:10px; margin-top:12px; font-size:12px; }
.ow-dialog { border:0; border-radius:18px; padding:0; width:min(1060px,96vw); max-height:94vh; color:var(--ink); overflow:auto; box-shadow:0 28px 90px #13295755; }
.ow-dialog::backdrop { background:#17223b88; }
.ow-dialog-body { padding:0; }.ow-dialog header { display:flex; justify-content:space-between; align-items:center; gap:12px; }
.ow-dialog h3 { margin:0; }.ow-form { display:grid; grid-template-columns:1fr; align-content:start; gap:18px; }
.ow-form label { display:grid; gap:7px; font-size:13px; font-weight:700; }.ow-form input,.ow-form textarea { width:100%; min-width:0; border:1px solid #cbd8ed; border-radius:8px; padding:10px; font:inherit; font-weight:400; background:white; }
.ow-form input[readonly],.ow-form textarea[readonly] { background:#f6f8fc; }.ow-form small { color:var(--muted); font-weight:400; }
.ow-full { grid-column:1/-1; }
.ow-dialog audio { width:100%; margin-top:12px; }.ow-history { margin-top:16px; }.ow-history summary { cursor:pointer; font-weight:700; }
.ow-version { border-top:1px solid #e1e7ef; padding:12px 0; font-size:12px; }.ow-version pre { white-space:pre-wrap; overflow-wrap:anywhere; background:#f6f8fc; border-radius:8px; padding:12px; max-height:200px; overflow:auto; font:inherit; }
.ow-workspace { --ow-line:#e1e8f2; color:var(--ink); }
.ow-workspace [hidden],.ow-dialog [hidden] { display:none!important; }
.ow-intro { display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:20px; margin:0 0 22px; }
.ow-eyebrow { font-size:11px; color:#456abd; font-weight:800; letter-spacing:1px; }.ow-intro h3 { font-size:24px; margin:7px 0; }.ow-intro p { color:var(--muted); font-size:13px; margin:0; }
.ow-intro-actions { display:flex; gap:14px; align-items:center; }.ow-provider { font-size:12px; color:#587096; }.ow-intro-actions .primary-btn { padding:12px 20px; }
.ow-filter-card { background:#fff; border:1px solid var(--ow-line); border-radius:14px; padding:18px; margin-bottom:18px; }
.ow-range { align-items:center; flex-wrap:wrap; margin:0 0 16px; gap:8px; }.ow-range .tr-btn { padding:8px 14px; }
.ow-date-more { position:relative; font-size:13px; }.ow-date-fields { display:flex; align-items:end; gap:10px; flex-wrap:wrap; margin-top:10px; }
.ow-filter-fields { display:flex; gap:12px; align-items:end; flex-wrap:wrap; }.ow-filter-fields label { display:grid; gap:6px; font-size:12px; color:var(--muted); flex:1 1 150px; }.ow-filter-fields .ow-filter-product { flex:2 1 220px; }
.ow-filter-fields input,.ow-filter-fields select,.ow-speech-options select { width:100%; min-width:0; height:42px; padding:8px 11px; border:1px solid #cad7ec; border-radius:9px; background:#fff; color:var(--ink); font:inherit; font-size:14px; }
.ow-filter-foot { display:flex; justify-content:space-between; gap:12px; align-items:center; margin-top:12px; font-size:12px; color:var(--muted); }.ow-filter-foot details div { display:flex; gap:6px; padding-top:8px; }
.ow-workspace summary,.ow-dialog summary { cursor:pointer; font-size:13px; color:#526b92; line-height:1.7; }.ow-service-details { font-size:12px; margin:18px 0 0; padding:12px 16px; border-top:1px solid var(--ow-line); color:var(--muted); line-height:1.8; }
.ow-workspace .kpi-row { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; margin:16px 0 8px; }.ow-workspace .kpi-mini { padding:16px 20px; box-shadow:none; border:1px solid var(--ow-line); }.ow-workspace .kpi-mini b { font-size:28px; }
.ow-stat-note { display:flex; justify-content:space-between; flex-wrap:wrap; gap:12px; color:var(--muted); font-size:12px; margin:12px 2px 18px; }.ow-definition { margin-top:16px; font-size:12px; color:var(--muted); line-height:1.8; }
.ow-records { box-shadow:0 5px 20px #1f448508; border:1px solid var(--ow-line); border-radius:14px; padding:18px; }
.ow-records table { min-width:830px; }.ow-records td { vertical-align:top; font-size:13px; }.ow-records td small { font-size:11px; color:var(--muted); font-weight:400; line-height:1.7; }.ow-records td:nth-child(4) small { max-width:145px; overflow-wrap:anywhere; }
.ow-records small.block { display:block; }
.ow-script-cell p { display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; overflow:hidden; margin:6px 0; }.ow-daily-section>summary { font-size:15px; font-weight:700; }.ow-daily-section .table-scroll { margin-top:14px; }
.ow-dialog-header { padding:20px 24px 16px; border-bottom:1px solid #e4eaf4; background:#fff; position:sticky; top:0; z-index:2; }.ow-dialog-header h3 { font-size:21px; }.ow-dialog-header p { font-size:12px; color:var(--muted); margin:7px 0 0; }.ow-dialog-header button { flex-shrink:0; }
.ow-compose-layout { display:grid; grid-template-columns:minmax(0,1fr) 300px; gap:24px; padding:24px; }.ow-compose-main,.ow-compose-side { min-width:0; }.ow-compose-side { display:grid; gap:14px; align-content:start; }
.ow-form label>span { display:flex; justify-content:space-between; align-items:baseline; gap:12px; }.ow-form input { height:44px; }.ow-form textarea { font-size:15px; line-height:1.85; resize:vertical; }.ow-form .ow-script-label textarea { min-height:245px; }
.ow-form input:focus,.ow-form textarea:focus,.ow-speech-options select:focus { outline:2px solid #acc9ff; outline-offset:1px; border-color:#3974ee; }.ow-form .ow-over-limit { color:#ba3434; font-weight:700; }
.ow-extra,.ow-history { margin:0; padding-top:12px; border-top:1px solid #e6ecf5; }.ow-extra summary span { font-size:11px; color:var(--muted); margin-left:6px; }.ow-extra-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-top:12px; }
.ow-output { padding:16px; border:1px solid #dfe7f3; border-radius:12px; background:#fff; }.ow-output h4 { font-size:14px; margin:0; display:flex; justify-content:space-between; align-items:center; }.ow-output h4 span { font-size:10px; border-radius:5px; color:#5274a1; background:#f0f5fd; padding:3px 6px; }
.ow-audio-actions { display:flex; gap:8px; margin-top:14px; }.ow-audio-actions button { flex:1; font-size:13px; padding:9px; }.ow-audio-name { display:block; font-size:10px; line-height:1.7; color:var(--muted); overflow-wrap:anywhere; margin-top:10px; }
.ow-dialog #ow-job-meta { font-size:11px; line-height:1.8; color:var(--muted); overflow-wrap:anywhere; }.ow-dialog #ow-job-details { margin-top:12px; }.ow-dialog #ow-job-details summary { font-size:11px; }
.ow-upload-details { padding:12px 2px; font-size:12px; }.ow-upload-details label { display:grid; gap:10px; margin-top:14px; color:var(--muted); }.ow-upload-details input { font-size:12px; max-width:100%; }.ow-upload-details button { margin:12px 0; font-size:13px; }.ow-upload-details small { display:block; color:var(--muted); line-height:1.7; }
.ow-compose-footer { display:flex; justify-content:space-between; align-items:center; gap:14px; padding:16px 24px; background:#fbfcff; border-top:1px solid #e1e8f3; position:sticky; bottom:0; z-index:2; }.ow-footer-note { min-width:0; font-size:12px; color:var(--muted); line-height:1.7; flex:1; }.ow-footer-note p { margin:0; color:#325a92; }.ow-footer-note p:empty { display:none; }.ow-footer-actions { display:flex; align-items:center; gap:8px; flex-wrap:wrap; justify-content:end; }.ow-footer-actions button { font-size:13px; padding:10px 13px; white-space:nowrap; }.ow-footer-actions .primary-btn { min-width:148px; font-size:15px; }
.ow-favorite-bar { display:flex; flex-wrap:wrap; align-items:center; gap:10px; margin-top:10px; }.ow-favorite-bar button { font-size:12px; padding:7px 9px; }.ow-favorite-bar button[aria-pressed="true"] { color:#966108; border-color:#e8cc86; background:#fff9e9; }.ow-favorite-bar label { display:flex; gap:5px; align-items:center; font-size:12px; color:#526b92; }.ow-favorite-bar input { width:14px; height:14px; margin:0; }.ow-favorite-bar small { flex-basis:100%; font-size:11px; color:var(--muted); line-height:1.7; }
.ow-favorite-bar .ow-voice-scope-label { display:grid; width:100%; }.ow-voice-scope-label select { width:100%; border:1px solid #cbd8ed; border-radius:8px; padding:8px; background:white; color:var(--ink); font:inherit; }.ow-favorite-actions { display:flex; gap:7px; flex-wrap:wrap; }
.ow-voice-tabs { display:flex; gap:4px; padding:4px; background:#e8effa; border-radius:8px; margin-bottom:14px; }.ow-voice-tabs button { flex:1; padding:7px 4px; border:0; background:transparent; border-radius:6px; font-size:11px; color:#4d6589; cursor:pointer; white-space:nowrap; }.ow-voice-tabs button[aria-pressed="true"] { background:white; color:#1e50bb; box-shadow:0 2px 5px #123a7020; font-weight:700; }
.ow-voice-more { margin-top:14px; border-top:1px solid #dce6f6; padding-top:10px; }.ow-voice-more summary { font-size:12px; }.ow-voice-more summary span { float:right; color:var(--muted); }.ow-voice-more label { display:grid; gap:6px; margin-top:10px; font-size:12px; }.ow-voice-more select { height:38px; padding:7px; background:white; border:1px solid #cbd8ed; border-radius:8px; color:var(--ink); }
.ow-archive-state { border-radius:8px; padding:9px; background:#f4f7fc; color:#5e769a; font-size:11px; line-height:1.8; }.ow-archive-state[data-status="verified"] { color:#15774f; background:#edfaf4; }.ow-asset-state { margin-top:7px; }
@media(max-width:760px) { .ow-compose-layout { grid-template-columns:1fr; gap:18px; padding:18px; }.ow-dialog-header { padding:16px 18px; }.ow-dialog-header h3 { font-size:17px; }.ow-compose-footer { flex-direction:column; align-items:stretch; padding:12px 18px; gap:8px; }.ow-footer-actions { justify-content:stretch; }.ow-footer-actions .primary-btn { flex:1; }.ow-footer-note { font-size:11px; }.ow-compose-side { grid-template-columns:1fr; }.ow-intro-actions { width:100%; justify-content:space-between; }.ow-provider { font-size:11px; }.ow-workspace .kpi-mini { padding:12px; }.ow-workspace .kpi-mini b { font-size:23px; }.ow-workspace .kpi-mini span { font-size:11px; }.ow-filter-fields label { flex-basis:130px; }.ow-filter-foot { align-items:start; }.ow-extra-grid { grid-template-columns:1fr; }.ow-form .ow-script-label textarea { min-height:210px; }.ow-form label>span { flex-wrap:wrap; gap:4px; } }
.ea-notice { padding:12px 16px; margin:12px 0; background:#f1f5ff; border-left:3px solid var(--blue); color:#526581; line-height:1.7; font-size:12px; }
.ea-detail-filter { display:flex; gap:14px; align-items:end; flex-wrap:wrap; margin:14px 0; }
.ea-detail-filter label { display:grid; gap:6px; font-size:12px; color:var(--muted); }
.ea-detail-filter small { color:var(--muted); }
.ea-detail-filter input, .ea-detail-filter select { padding:9px 12px; border:1px solid #ccd9ee; border-radius:9px; background:white; }
.ea-product-list { padding:0 15px 15px; display:grid; gap:12px; }
.ea-product { border:1px solid #e1e8f3; border-radius:10px; padding:12px; min-width:0; }
.ea-product header { display:flex; flex-wrap:wrap; align-items:center; gap:10px; }
.ea-product h4 { margin:0; font-size:15px; }
.ea-product small { color:var(--muted); }
.ea-product p { font-size:13px; margin:9px 0; }
.ea-rejected-list { color:var(--red); font-weight:700; }
.ea-sequences { display:flex; flex-wrap:wrap; gap:8px; margin:10px 0; }
.ea-sequence { display:inline-block; border-radius:7px; padding:6px 9px; font-size:12px; color:#53657e; background:#eef2f7; text-decoration:none; }
.ea-sequence.approved { background:#e6f7ef; color:#087747; }
.ea-sequence.rejected { background:#ffeded; color:#b72b35; }
.ea-sequence.pending { background:#fff3dd; color:#946018; }
.ea-material-detail > summary { padding:8px 0; color:var(--blue); font-size:13px; }
.ea-material-detail table { min-width:1100px; }
.ea-material-detail tr:target { background:#fff4de; }
.ea-editor > summary { flex-wrap:wrap; }
.ea-editor .ea-nums { display:block; line-height:1.8; min-width:200px; }
@media(max-width:700px) { .ea-product-list { padding:0 8px 8px; } .ea-detail-filter label { width:100%; } .ea-detail-filter input,.ea-detail-filter select { width:100%; } }

/* 纯 SVG 柱状图 */
.bc-scroll { overflow-x:auto; padding:6px 2px; }
.bc-svg { min-width:520px; width:100%; height:260px; }
.bc-grid line { stroke:#e8eef7; }
.bc-axis { fill:#8a97ab; font-size:10px; }
.bc-x { fill:#5d6879; font-size:10px; }
.mp-chart-card { padding:15px 18px; }
.mp-chart-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:8px; }
.seg { display:inline-flex; border:1px solid #cfdcee; border-radius:999px; overflow:hidden; }
.seg button { min-height:30px; padding:4px 15px; border:0; background:#fff; color:#46566f; font-size:12px; font-weight:700; }
.seg button.active { background:var(--blue); color:#fff; }

/* 支付投产计算器 */
.calc-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(300px,1fr)); gap:14px; }
.calc-block { padding:16px 18px; }
.calc-block h3 { margin:0 0 12px; font-size:15px; color:var(--ink); }
.calc-block label { margin-bottom:10px; }
.rc-out { margin-top:12px; padding:12px 14px; border-radius:11px; background:#f2f6ff; border:1px dashed #b9cdf0; display:grid; gap:7px; }
.rc-line { display:flex; align-items:center; justify-content:space-between; font-size:13px; color:#33405c; }
.rc-line b { font-variant-numeric:tabular-nums; }
.rc-line.hl { font-weight:800; color:var(--blue-dark); font-size:14.5px; }
.pos-text { color:var(--green); font-weight:800; } .neg-text { color:var(--red); font-weight:800; }
.rc-spec-head, .rc-spec-row { display:grid; grid-template-columns:1.4fr repeat(4,1fr) 40px; gap:8px; align-items:center; }
.rc-spec-head { font-size:11px; color:var(--muted); padding:4px 0; }
.rc-spec-row { padding:6px 0; border-top:1px dashed #e3eaf5; }
.rc-spec-row input { min-height:32px; }
.rc-del { min-height:32px; padding:0; border-radius:8px; }

/* 店铺台账 */
.shops-layout { display:grid; grid-template-columns:minmax(300px,380px) 1fr; gap:14px; align-items:start; }
.shops-form-block, .shops-list-block { padding:16px 18px; }
.shops-form-block h3, .shops-list-block h3 { margin:0 0 12px; font-size:15px; }
.shops-form-block label { margin-bottom:10px; }
.shops-grid2 { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.shops-actions { display:flex; gap:9px; margin-top:12px; }
.shop-card { padding:13px 15px; border:1px solid #dce6f5; border-radius:13px; background:linear-gradient(180deg,#fff,#f8fbff); box-shadow:0 4px 14px rgba(23,54,103,.05); display:grid; gap:7px; }
.shop-card-top { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.shop-card-top b { font-size:14.5px; color:var(--ink); }
.shop-line { font-size:12px; color:#46566f; display:flex; gap:7px; }
.shop-line span { color:var(--muted); flex:0 0 64px; }
.shop-card-actions { display:flex; gap:8px; margin-top:4px; }
.shop-card-actions button { min-height:30px; padding:4px 11px; font-size:11.5px; }
.shops-table { min-width:1080px; }
.shops-table th, .shops-table td { text-align:left; vertical-align:top; }
.shops-table td { line-height:1.45; }
.shops-table td small { display:block; margin-top:4px; color:var(--muted); white-space:normal; }
.shop-table-actions { display:flex; flex-wrap:wrap; gap:6px; min-width:190px; }
.shop-table-actions button { min-height:30px; padding:4px 10px; font-size:11.5px; }
.shops-section { font-size:13px; font-weight:700; color:var(--ink); border-left:3px solid var(--primary,#2b6cb0); padding-left:8px; margin:16px 0 8px; letter-spacing:.3px; }
.shops-form-block textarea { width:100%; padding:7px 10px; border:1px solid #d4dff0; border-radius:8px; font-size:12.5px; resize:vertical; font-family:inherit; }
.shops-autofill { display:flex; gap:8px; align-items:center; margin-bottom:10px; }
.shops-autofill input { flex:1; }
.shop-auto-item { display:flex; align-items:center; gap:10px; padding:8px 12px; border:1px solid #dce6f5; border-radius:8px; margin-bottom:6px; background:#f8fbff; font-size:12.5px; }
.shop-auto-item .muted { flex:1; color:#8a9ab5; }

/* 全量降序榜 */
.fr-shell { padding:4px 0 10px; }
.fr-head { display:flex; align-items:baseline; justify-content:space-between; gap:14px; padding:16px 20px 12px; }
.fr-head h2 { font-size:18px; color:var(--ink); }
.fr-summary { display:grid; grid-template-columns:repeat(8,minmax(120px,1fr)); gap:9px; padding:0 18px 14px; overflow-x:auto; }
.fr-summary-editor { grid-template-columns:repeat(6,minmax(130px,1fr)); }
.fr-summary > div { min-height:76px; padding:12px 13px; border:1px solid #dce6f5; border-radius:11px; background:linear-gradient(180deg,#fff,#f6f9ff); }
.fr-summary span { display:block; color:var(--muted); font-size:11px; }
.fr-summary b { display:block; margin-top:7px; color:var(--ink); font-size:18px; font-variant-numeric:tabular-nums; }
.fr-summary small { display:block; margin-top:3px; color:#8a97ab; font-size:9.5px; }
.fr-summary .tone-positive b { color:var(--green); }
.fr-summary .tone-negative b { color:var(--red); }
.fr-table-wrap { overflow-x:auto; }
.fr-table { min-width:880px; }
.fr-table th:first-child, .fr-table td:first-child { position:static; min-width:0; background:transparent; }
.fr-row { cursor:pointer; transition:background .12s; }
.fr-row:hover { background:#eef4ff; }
.fr-rank { width:44px; text-align:center !important; font-weight:800; color:#8a97ab; }
.fr-goods { text-align:left !important; min-width:260px; }
.fr-goods { display:flex; align-items:center; gap:11px; }
.fr-goods img { width:40px; height:40px; border-radius:9px; object-fit:cover; border:1px solid var(--line); background:#f1f4f9; }
.fr-goods b { display:block; font-size:13px; color:#1d283d; max-width:340px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.fr-goods small { display:block; margin-top:3px; color:var(--muted); font:10.5px Consolas,monospace; }
.fr-editor { text-align:left !important; }
.fr-editor b { font-size:13.5px; }

/* 代理商账户区分 */
.agent-bar { display:flex; align-items:flex-end; gap:11px; flex-wrap:wrap; padding:14px 18px; }
.agent-bar label { font-size:11px; }
.agent-body { display:grid; gap:12px; padding:0 18px 18px; }
.agent-body { grid-template-columns:minmax(0,1fr); min-width:0; }
.agent-body .kpi-row { display:grid; grid-template-columns:repeat(auto-fit,minmax(145px,1fr)); min-width:0; }
.agent-body .table-wrap { min-width:0; max-width:100%; overflow-x:auto; }
.agent-body .data-table { min-width:1260px; }
.plan-official-link { color:#174bcc; text-decoration:none; }
.plan-official-link:hover,.plan-official-link:focus-visible { text-decoration:underline; }
.agent-filters { display:flex; gap:12px; align-items:end; flex-wrap:wrap; margin:0 18px 16px; padding:16px; border:1px solid #d6e2ff; border-radius:14px; background:#f5f8ff; }
.agent-filters label { display:grid; gap:6px; font-size:12px; color:var(--muted); min-width:200px; }
.agent-filters .agent-search { flex:1; min-width:260px; }
.agent-filters .agent-shop { flex:0 1 240px; min-width:200px; max-width:100%; }
.agent-filters .agent-shop select { min-width:0; max-width:100%; }
.agent-filters input,.agent-filters select { width:100%; min-height:42px; }
.agent-filters .tool-hint { flex-basis:100%; }
@media(max-width:600px) { .agent-filters label,.agent-filters .agent-search { width:100%; min-width:0; } .agent-filters select { max-width:100%; } }
.agent-group { border:1px solid #dce6f5; border-radius:13px; background:#fff; overflow:hidden; box-shadow:0 4px 14px rgba(23,54,103,.05); }
.agent-group summary { display:flex; align-items:center; gap:14px; padding:13px 16px; cursor:pointer; list-style:none; }
.agent-group summary::-webkit-details-marker { display:none; }
.agent-group summary b { font-size:14.5px; color:var(--ink); }
.agent-group summary span { color:#46566f; font-size:12px; }
.agent-group.unassigned { border-color:#f0cf9b; background:linear-gradient(180deg,#fffdf6,#fff); }
.agent-accts { display:grid; gap:8px; padding:4px 16px 14px; border-top:1px dashed #e3eaf5; }
.agent-acct { display:flex; align-items:center; justify-content:space-between; gap:14px; padding:9px 10px; border-radius:10px; background:#f7faff; }
.agent-acct-info b { font-size:13px; color:#1d283d; }
.agent-acct-info small { display:block; margin-top:3px; color:var(--muted); font:10.5px Consolas,"Microsoft YaHei",monospace; }
.agent-bind { display:flex; gap:7px; align-items:center; }
.agent-bind input { min-height:32px; min-width:170px; }
.agent-bind button { min-height:32px; padding:4px 12px; }

/* 双榜等高 + 素材行内播放 */
.ov-columns { align-items:stretch; }
.ov-panel { display:flex; flex-direction:column; height:100%; }
.ov-rank-list { flex:1 1 auto; align-content:stretch; }
.ov-rank-list .ov-row { flex:1 1 0; }
.ov-material-play { width:46px; height:46px; border:0; border-radius:11px; display:grid; place-items:center; font-size:18px; color:#fff;
  background:radial-gradient(circle at 32% 28%,#5b93ff,#1239b6); box-shadow:0 6px 14px rgba(18,57,182,.32), inset 0 1px 0 rgba(255,255,255,.3); transition:transform .12s; }
.ov-material-play:hover { transform:scale(1.08); }

/* 素材播放弹窗 */
#videoPlayDialog { width:min(560px,92vw); }
.video-dialog { width:100%; border:0; border-radius:18px; padding:0; overflow:hidden; box-shadow:0 30px 80px rgba(8,24,60,.45); }
.video-dialog::backdrop { background:rgba(8,20,48,.55); -webkit-backdrop-filter:blur(3px); backdrop-filter:blur(3px); }
.video-play-body { display:grid; gap:12px; padding:18px; }
.video-name { font-size:14px; font-weight:700; color:var(--ink); word-break:break-all; }
.video-loading { padding:34px; text-align:center; color:var(--muted); font-size:13px; }
.video-loading b { display:inline-block; margin-bottom:9px; color:var(--ink); font-size:15px; }
.video-dialog-actions { display:flex; justify-content:center; flex-wrap:wrap; gap:10px; margin-top:18px; }
.video-dialog-actions .video-qc-link { display:inline-flex; align-items:center; justify-content:center; min-height:36px; padding:0 14px; border:1px solid #c3d0e6; border-radius:9px; text-decoration:none; line-height:1.2; }
.video-player { width:100%; border-radius:12px; background:#0b1220; max-height:70vh; }
.video-cover-fallback { height:220px; display:grid; place-items:center; border-radius:12px; background:#eef2f8; color:#8a97ab; }

/* AI素材生成与NAS归档 */
.video-view-tabs { display:flex; flex-wrap:wrap; gap:8px; margin:12px 0 16px; }
.video-view-tabs button { padding:11px 22px; border:1px solid #d1dff6; border-radius:10px; color:#285096; background:#fff; font-weight:800; }
.video-view-tabs button.active { background:#1d4ed8; color:#fff; border-color:#1d4ed8; }
.video-records { min-width:0; padding:22px; }
.video-records[hidden], #vw-create-panel[hidden], #vr-detail-panel[hidden], #vr-list-panel[hidden] { display:none !important; }
.vr-heading { display:flex; align-items:center; justify-content:space-between; gap:16px; }
.vr-heading-actions { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:8px; }
.vr-heading small { color:#275ac4; font-weight:800; letter-spacing:.06em; font-size:11px; }
.vr-heading h3 { margin:5px 0; color:#142d50; font-size:23px; }
.vr-heading h3 span { margin-left:8px; color:#61748e; font-size:14px; font-weight:500; }
.vr-heading p { margin:6px 0 0; color:#5d718d; font-size:12px; }
.vr-policy { margin:16px 0; padding:10px 12px; border-radius:8px; background:#f1f5fe; color:#5a6d86; font-size:12px; line-height:1.7; }
.vr-notice { color:#aa3d31; font-size:12px; line-height:1.7; overflow-wrap:anywhere; }
.vr-notice:empty { display:none; }
.vr-filters { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; align-items:end; padding:16px; background:#f8faff; border:1px solid #e0e8f6; border-radius:12px; }
.vr-filters label { display:grid; min-width:0; gap:6px; color:#526784; font-size:12px; }
.vr-filters input,.vr-filters select { min-width:0; width:100%; font-size:13px; }
.vr-filters .vr-search { grid-column:span 2; }
.vr-list-meta { display:flex; flex-wrap:wrap; justify-content:space-between; gap:8px; margin:16px 0 9px; color:#657794; font-size:12px; }
.vr-table-wrap { max-width:100%; overflow:auto; border:1px solid #e0e8f4; border-radius:10px; }
.vr-table { width:100%; min-width:920px; border-collapse:collapse; font-size:12px; }
.vr-table th { padding:13px 12px; text-align:left; background:#f1f5fc; color:#49607c; white-space:nowrap; }
.vr-table td { padding:14px 12px; text-align:left; border-top:1px solid #e6edf7; color:#263c59; vertical-align:middle; }
.vr-table th:first-child,.vr-table td:first-child { position:static; min-width:0; z-index:auto; }
.vr-table tr:hover td { background:#f8fbff; }
.vr-table td small { display:block; margin-top:5px; color:#71839b; font-size:10.5px; }
.vr-table time { white-space:nowrap; font-variant-numeric:tabular-nums; }
.vr-table .vr-product { width:24%; min-width:170px; max-width:340px; }
.vr-product b { display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; overflow-wrap:anywhere; font-size:12px; line-height:1.7; }
.vr-table button { padding:7px 12px; min-height:32px; white-space:nowrap; font-size:12px; }
.vr-table .vr-empty { padding:42px 18px; text-align:center; color:#71839b; }
.vr-pagination { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:14px; margin-top:16px; font-size:12px; color:#526784; }
.vr-pagination > div,.vr-pagination label { display:flex; align-items:center; gap:8px; }
.vr-pagination select { width:92px; }.vr-pagination input { width:64px; text-align:center; }
.vr-pagination button { min-height:34px; padding:7px 12px; }
.vr-detail-head { display:flex; align-items:center; gap:16px; margin:18px 0; }.vr-detail-head h3 { margin:0; font-size:18px; }
.vr-identity { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; margin-bottom:16px; padding:16px; background:#f6f9fe; border:1px solid #e1e9f6; border-radius:10px; }
.vr-identity > div { min-width:0; }.vr-identity span { display:block; color:#6c7f99; font-size:11px; margin-bottom:6px; }.vr-identity b { color:#233e64; font-size:12px; font-weight:600; overflow-wrap:anywhere; }
.vr-retry-link button { font-size:12px; white-space:normal; overflow-wrap:anywhere; padding:3px 0; }
.video-records #vw-jobs { max-height:none; overflow:visible; padding:0; }
.video-create-record-note { margin-top:20px; color:#5f728f; font-size:13px; line-height:1.8; }
@media (max-width:700px) {
  .video-records { padding:14px; }.vr-filters { grid-template-columns:repeat(2,minmax(0,1fr)); padding:12px; gap:10px; }
  .vr-identity { grid-template-columns:repeat(2,minmax(0,1fr)); }.vr-heading { align-items:flex-start; }.vr-heading h3 { font-size:20px; }
  .vr-heading button { white-space:nowrap; padding:7px 10px; }.vr-pagination { justify-content:center; }.vr-pagination > div { flex-wrap:wrap; justify-content:center; }
  .vr-table-wrap { border:0; overflow:visible; }.vr-table { display:block; min-width:0; }.vr-table thead { display:none; }
  .vr-table tbody { display:grid; gap:12px; }.vr-table tr { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); padding:8px; border:1px solid #dfe8f6; border-radius:10px; background:#fff; }
  .vr-table td { display:block; min-width:0; border:0; padding:7px; overflow-wrap:anywhere; }
  .vr-table .vr-product { order:0; grid-column:1 / -1; min-width:0; max-width:none; width:auto; }.vr-product b { font-size:13px; }
  .vr-table td:nth-child(4) { order:1; }.vr-table td:nth-child(7) { order:2; text-align:right; }
  .vr-table td:nth-child(1) { order:3; }.vr-table td:nth-child(2) { order:4; }.vr-table td:nth-child(5) { order:5; }.vr-table td:nth-child(6) { order:6; }
  .vr-table td:nth-child(1)::before { content:'提交时间'; }.vr-table td:nth-child(2)::before { content:'制作人'; }.vr-table td:nth-child(5)::before { content:'视频用量'; }.vr-table td:nth-child(6)::before { content:'预计费用'; }
  .vr-table td::before { display:block; margin-bottom:5px; color:#71839b; font-size:10.5px; }.vr-table time { white-space:normal; font-size:11px; }
  .vr-table .vr-empty { grid-column:1 / -1; }.vr-table .vr-empty::before { content:none; }
}
.video-cost-summary { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; margin:12px 0 14px; }
.video-cost-summary > div { min-height:88px; padding:13px 15px; border:1px solid #dce6f5; border-radius:13px; background:linear-gradient(180deg,#fff,#f7faff); box-shadow:0 5px 18px rgba(26,68,138,.06); }
.video-cost-summary span, .video-cost-summary small { display:block; color:var(--muted); font-size:10.5px; }
.video-cost-summary b { display:block; margin:8px 0 4px; color:var(--ink); font-size:20px; font-variant-numeric:tabular-nums; }
.video-cost-summary a { color:var(--blue); font-size:10.5px; font-weight:700; text-decoration:none; }
.video-cost-summary a:hover { text-decoration:underline; }
.video-cost-summary .tone-cost b { color:#b56900; }
.video-cost-summary .video-balance-card b { color:var(--green); }
.video-balance-actions { display:flex; align-items:center; flex-wrap:wrap; gap:6px 9px; margin-top:7px; }
.video-balance-actions button { min-height:25px; padding:3px 8px; border:1px solid #bfd0eb; border-radius:7px; background:#f2f6ff; color:var(--blue); box-shadow:none; font-size:10px; font-weight:700; }
.video-balance-actions button:disabled { cursor:not-allowed; opacity:.65; }
.video-cost-summary .video-balance-warning { margin-top:6px; color:var(--red); line-height:1.45; }
.video-workbench-grid { display:grid; grid-template-columns:minmax(0,1.05fr) minmax(420px,.95fr); gap:14px; align-items:start; }
.video-create-card, .video-preview-card { padding:18px; }
.video-section-head { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:14px; }
.video-section-head h3 { margin:2px 0 0; font-size:17px; color:var(--ink); }
.video-section-head small { color:var(--blue); font-size:10px; font-weight:800; letter-spacing:.08em; }
.video-mode { padding:5px 10px; border-radius:999px; background:#fff4df; color:#a55d00; border:1px solid #f0d29d; font-size:11px; font-weight:800; }
.video-mode.ready { background:#e9f8f1; color:var(--green); border-color:#b9e7d2; }
.video-form { display:grid; grid-template-columns:1fr 1fr; gap:11px 12px; }
.video-form label { display:grid; gap:5px; margin:0; color:#42516a; font-size:12px; font-weight:700; }
.video-form .full { grid-column:1 / -1; }
.video-form textarea { min-height:70px; resize:vertical; }
.video-form .video-storyboard-input { min-height:220px; line-height:1.75; font-family:"Microsoft YaHei",sans-serif; }
.video-input-action { display:flex; align-items:center; gap:8px; }
.video-input-action input { flex:1; min-width:0; }
.video-input-action button { white-space:nowrap; }
.video-upload { padding:11px; border:1px dashed #b9cae5; border-radius:11px; background:#f8fbff; }
.video-upload input { width:100%; }
.video-upload small { display:block; margin-top:5px; color:var(--muted); font-weight:400; }
.video-upload img { display:block; width:min(180px,100%); max-height:180px; object-fit:contain; margin-top:9px; border-radius:9px; border:1px solid #dce6f5; background:#fff; }
.video-upload img[hidden] { display:none; }
.video-check { display:flex !important; grid-template-columns:auto 1fr; align-items:center; justify-content:start; gap:8px !important; font-weight:500 !important; }
.video-check input { width:auto; margin:0; }
.video-silent-badge { padding:9px 11px; border:1px solid #bdd8f6; border-radius:10px; background:#edf7ff; color:#18558f; font-size:11px; font-weight:700; }
.video-reference-field { min-width:0; margin:0; padding:11px; border:1px solid #d8e3f4; border-radius:11px; }
.video-reference-field legend { padding:0 6px; color:#42516a; font-size:12px; font-weight:800; }
.video-reference-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:7px; max-height:220px; overflow:auto; }
.video-reference-item { display:grid; grid-template-columns:48px 1fr auto; align-items:center; gap:8px; min-width:0; padding:7px; border:1px solid #dbe5f4; border-radius:9px; background:#fff; color:#37465e; text-align:left; box-shadow:none; }
.video-reference-item.active { border-color:#2f6bff; background:#eef4ff; box-shadow:0 0 0 2px #2f6bff1f; }
.video-reference-item img { width:48px; height:48px; object-fit:cover; border-radius:7px; background:#edf1f7; }
.video-reference-item span { min-width:0; }
.video-reference-item b,.video-reference-item small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.video-reference-item small { margin-top:3px; color:#7a8799; font-size:9.5px; }
.video-reference-item em { color:var(--blue); font-size:10px; font-style:normal; font-weight:800; }
.video-reference-upload { display:grid; grid-template-columns:1fr 90px 1.1fr auto; gap:7px; margin-top:9px; }
.video-library-review { display:grid; grid-template-columns:1fr 1fr; gap:10px; padding:11px; border:1px solid #d8e3f4; border-radius:11px; background:#f8fbff; }
.video-library-review > div { min-width:0; }
.video-library-review > div > b { display:block; margin-bottom:7px; color:#263750; font-size:12px; }
.video-library-review > div > span { display:grid; gap:6px; }
.video-review-row { display:grid!important; grid-template-columns:minmax(0,1fr) auto auto; align-items:center; gap:6px; padding:6px 7px; border:1px solid #e0e8f5; border-radius:8px; background:#fff; }
.video-review-row em { overflow:hidden; color:#526078; font-size:10px; font-style:normal; text-overflow:ellipsis; white-space:nowrap; }
.video-review-row button { min-height:25px; padding:2px 7px; }
.video-submit { display:flex !important; align-items:center; justify-content:space-between; gap:12px; }
.video-submit button { white-space:nowrap; }
.video-prompt { min-height:165px; max-height:260px; overflow:auto; white-space:pre-wrap; word-break:break-word; margin:0; padding:14px; border:1px solid #dce6f5; border-radius:12px; background:#f7f9fd; color:#35435a; font:12px/1.75 "Microsoft YaHei",sans-serif; }
.video-jobs-head { margin-top:18px; }
.video-jobs-head button { min-height:30px; padding:4px 11px; }
.video-job-filters { display:grid; grid-template-columns:minmax(160px,1fr) 150px 132px 132px; gap:7px; margin:-4px 0 10px; }
#vw-jobs { display:grid; gap:9px; max-height:620px; overflow:auto; padding-right:3px; }
.video-job { padding:12px 13px; border:1px solid #dce6f5; border-radius:12px; background:linear-gradient(180deg,#fff,#f8fbff); }
.video-job-top { display:flex; align-items:flex-start; justify-content:space-between; gap:10px; }
.video-job-top > div { min-width:0; }
.video-job-top b { overflow-wrap:anywhere; }
.video-failure { margin-top:10px; padding:12px; border:1px solid #f3c9ce; border-radius:9px; background:#fff4f5; color:#a22e3d; font-size:12px; line-height:1.7; overflow-wrap:anywhere; }
.video-failure p { margin:5px 0 0; }
.video-failure details { color:#6f4651; }
.video-job-top b { display:block; color:var(--ink); font-size:13px; }
.video-job-top small { display:block; margin-top:4px; color:var(--muted); font-size:10.5px; word-break:break-all; }
.video-pill { flex:0 0 auto; padding:4px 8px; border-radius:999px; font-size:10.5px; font-weight:800; background:#fff4df; color:#a55d00; }
.video-pill.done { background:#e8f7f0; color:var(--green); }
.video-pill.running { background:#eaf1ff; color:var(--blue); }
.video-pill.failed { background:#fff0f1; color:var(--red); }
.video-progress { display:grid; gap:6px; margin-top:10px; }
.video-progress-label { display:flex; align-items:center; justify-content:space-between; gap:12px; color:#53627a; }
.video-progress-label b { color:var(--blue) !important; font-size:11px !important; font-variant-numeric:tabular-nums; }
.video-progress-label small { color:#77859a; font-size:10px; text-align:right; }
.video-progress-track { height:9px; overflow:hidden; border-radius:999px; background:#e7edf7; box-shadow:inset 0 1px 2px #17396b14; }
.video-progress-track span { display:block; height:100%; min-width:4px; border-radius:inherit; background:linear-gradient(90deg,#1556d8,#3d82ff); transition:width .45s ease; }
.video-progress.active .video-progress-track span { background-image:linear-gradient(90deg,#1556d8,#3d82ff),repeating-linear-gradient(135deg,#ffffff2e 0 8px,#ffffff00 8px 16px); background-blend-mode:screen; animation:video-progress-pulse 1.4s ease-in-out infinite alternate; }
.video-progress.complete .video-progress-label b { color:var(--green) !important; }
.video-progress.complete .video-progress-track span { background:linear-gradient(90deg,#16825c,#34c98a); }
@keyframes video-progress-pulse { from { filter:brightness(.96); } to { filter:brightness(1.12); } }
.video-result { width:100%; max-height:360px; margin-top:10px; border-radius:10px; background:#0b1220; }
.video-cost-line { display:grid; grid-template-columns:auto auto 1fr; align-items:center; gap:8px 14px; margin-top:9px; padding:9px 10px; border:1px solid #dbe7f8; border-radius:9px; background:#f3f7ff; color:#52627a; font-size:10.5px; }
.video-cost-line b { display:inline !important; color:#123f9a !important; font-size:12px !important; font-variant-numeric:tabular-nums; }
.video-cost-line small { text-align:right; color:#7d8aa0; }
.video-cost-line.pending { display:block; color:#7b8798; }
.video-warning { margin-top:8px; padding:8px 10px; border-radius:8px; background:#fff7e8; color:#965c0b; font-size:11px; }
.video-job details { margin-top:8px; color:#56657a; font-size:11px; }
.video-job details summary { cursor:pointer; color:var(--blue); font-weight:700; }
.video-job details p { margin:7px 0 0; line-height:1.7; }
.video-archive-path { display:flex; align-items:center; flex-wrap:wrap; gap:6px; margin-top:9px; padding:8px 9px; border-radius:8px; background:#eaf8f2; color:#176f52; font-size:10.5px; }
.video-archive-path code { flex:1 1 260px; overflow-wrap:anywhere; color:#176f52; }
.video-archive-path button,.video-job-actions button { min-height:26px; padding:3px 8px; }
.video-job-actions { display:flex; justify-content:flex-end; gap:7px; margin-top:8px; }
.video-buffer-note { display:block; margin:6px 2px 0; color:#718099; font-size:10.5px; }
.video-empty { padding:36px 16px; border:1px dashed #cbd8eb; border-radius:12px; text-align:center; color:var(--muted); }

@media (max-width: 1280px) {
  .video-cost-summary { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .video-workbench-grid { grid-template-columns:1fr; }
  .video-job-filters { grid-template-columns:1fr 1fr; }
}
@media (max-width: 620px) {
  .video-cost-summary { grid-template-columns:1fr; }
  .video-form { grid-template-columns:1fr; }
  .video-form .full { grid-column:auto; }
  .video-input-action, .video-submit { align-items:stretch; flex-direction:column; }
  .video-reference-list,.video-reference-upload,.video-library-review,.video-job-filters { grid-template-columns:1fr; }
  .video-cost-line { grid-template-columns:1fr; }
  .video-cost-line small { text-align:left; }
  .video-progress-label { align-items:flex-start; flex-direction:column; gap:2px; }
  .video-progress-label small { text-align:left; }
}
@media (prefers-reduced-motion: reduce) { .video-progress.active .video-progress-track span { animation:none; } }

/* 老板经营：决策、利润、异常、生命周期与数据可信度 */
.oi-toolbar { display:flex; flex-wrap:wrap; align-items:flex-end; gap:11px; padding:15px 18px; }
.oi-toolbar > input[type="search"] { min-width:260px; flex:1 1 320px; }
.oi-toolbar > select { min-width:150px; }
.oi-toolbar .tool-msg { flex:1 1 100%; margin-top:2px; }
.oi-thresholds { display:grid; grid-template-columns:repeat(4,minmax(150px,1fr)); gap:10px; flex:1 1 720px; }
.oi-thresholds label { position:relative; display:grid; gap:5px; margin:0; color:#52627a; font-size:11.5px; font-weight:700; }
.oi-thresholds input { padding-right:38px; }
.oi-thresholds small { position:absolute; right:12px; bottom:11px; color:#8a97ab; font-size:10px; pointer-events:none; }
.oi-toolbar-actions { display:flex; flex-wrap:wrap; align-items:center; gap:8px; }
.oi-check { display:flex !important; align-items:center; gap:6px !important; margin:0 0 0 4px !important; color:#52627a !important; font-size:11.5px !important; font-weight:600 !important; white-space:nowrap; }
.oi-check input { width:auto; margin:0; }
.oi-kpis { display:grid; grid-template-columns:repeat(auto-fit,minmax(165px,1fr)); gap:10px; margin-bottom:12px; }
.oi-kpi { position:relative; min-height:100px; padding:15px 16px; overflow:hidden; border:1px solid #dce6f5; border-radius:14px; background:linear-gradient(180deg,#fff,#f8fbff); box-shadow:0 8px 24px rgba(30,67,125,.07); }
.oi-kpi::before { content:""; position:absolute; inset:0 0 auto; height:4px; background:linear-gradient(90deg,#1c4ed8,#4d8dff); }
.oi-kpi.good::before { background:linear-gradient(90deg,#07865c,#35c795); }
.oi-kpi.warn::before { background:linear-gradient(90deg,#b97800,#ffc857); }
.oi-kpi.bad::before { background:linear-gradient(90deg,#b41035,#ff7189); }
.oi-kpi span,.oi-kpi small { display:block; color:#74829a; font-size:10.5px; }
.oi-kpi b { display:block; margin:9px 0 5px; color:#18243a; font-size:23px; line-height:1.1; font-variant-numeric:tabular-nums; }
.oi-kpi.good b { color:#07865c; }.oi-kpi.warn b { color:#a36200; }.oi-kpi.bad b { color:#b41035; }
.oi-trace { margin:0 0 12px; padding:10px 13px; border-left:4px solid #1c4ed8; border-radius:9px; background:#edf4ff; color:#38547e; font-size:11.5px; line-height:1.6; }
.oi-note { margin:0 0 12px; padding:11px 13px; border:1px solid #dbe6f6; border-radius:10px; background:#fff; color:#52627a; font-size:11.5px; line-height:1.65; }
.oi-note.warning { border-color:#f0d49a; background:#fff9ec; color:#805615; }
.oi-table { min-width:1120px; width:100%; border-collapse:collapse; background:#fff; }
.oi-table th { position:sticky; top:0; z-index:1; padding:11px 12px; background:#edf3fc; color:#52627a; font-size:10.5px; font-weight:800; white-space:nowrap; }
.oi-table td { padding:11px 12px; border-top:1px solid #edf1f7; color:#34425a; font-size:11.5px; vertical-align:middle; }
.oi-table tbody tr:hover { background:#f7faff; }
.oi-product { min-width:250px; }
.oi-product b,.oi-product small { display:block; }
.oi-product b { max-width:360px; color:#1e2b43; font-size:12px; line-height:1.45; }
.oi-product small { margin-top:4px; color:#8995a8; font:10px Consolas,"Microsoft YaHei",monospace; }
.oi-reason { min-width:250px; max-width:420px; color:#607089 !important; line-height:1.55; }
.oi-positive { color:#07865c !important; font-weight:800; }.oi-negative { color:#bd163b !important; font-weight:800; }.oi-unknown { color:#9a6614 !important; font-weight:700; }
.oi-level,.oi-stage { display:inline-flex; align-items:center; justify-content:center; min-width:68px; padding:4px 8px; border-radius:999px; font-size:10px; font-weight:800; white-space:nowrap; }
.oi-level.critical { background:#ffe9ed; color:#b41035; }.oi-level.high { background:#fff1dc; color:#9c5b00; }.oi-level.medium { background:#eaf1ff; color:#1848ba; }.oi-level.low { background:#edf1f6; color:#66758b; }
.oi-action { white-space:nowrap; }.oi-action.stop,.oi-action.reduce { color:#bd163b; }.oi-action.scale { color:#07865c; }.oi-action.data { color:#9c5b00; }.oi-action.observe { color:#52627a; }
.oi-stage.new { background:#e9efff; color:#204fc2; }.oi-stage.scale { background:#e5f8ef; color:#067b52; }.oi-stage.stable { background:#e9f6ff; color:#116d9a; }.oi-stage.decline { background:#fff2d9; color:#996000; }.oi-stage.loss { background:#ffe8ed; color:#b41035; }.oi-stage.test { background:#edf1f6; color:#65748a; }
.ow-speech-panel { padding:16px; border:1px solid #cbdcfa; border-radius:12px; background:#f3f7ff; }
.ow-speech-panel h4 { margin:0 0 12px; }
.ow-speech-options { display:grid; grid-template-columns:1fr; gap:12px; }
.ow-voice-trial { display:flex; align-items:center; flex-wrap:wrap; gap:8px; margin-top:10px; }
.ow-voice-trial button { padding:8px 12px; font-size:12px; white-space:nowrap; }
.ow-voice-trial button[aria-pressed="true"] { background:#e7efff; color:#1746bd; border-color:#92b3ff; }
.ow-voice-trial small { flex-basis:100%; font-size:11px; line-height:1.6; color:var(--muted); }
.ow-speech-options label { display:grid; gap:7px; font-size:12px; font-weight:600; min-width:0; }
.ow-speech-panel h4 { font-size:14px; }.ow-speech-panel #ow-speech-counter { font-size:11px; line-height:1.7; color:var(--muted); margin:10px 0 0; }
.ow-speech-state { margin:12px 0; color:#637a9b; font-size:12px; line-height:1.8; overflow-wrap:anywhere; }
.ow-speech-state[data-status="succeeded"] { color:#168159; }.ow-speech-state[data-status="failed"],.ow-speech-state[data-status="unknown"] { color:#ae3f36; }
.ow-speech-state:empty { display:none; }
.oi-alert-list { display:grid; gap:9px; }
.oi-alert { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:14px 16px; border:1px solid #dce6f5; border-left:5px solid #7694c9; border-radius:12px; background:#fff; box-shadow:0 6px 18px rgba(30,67,125,.05); }
.oi-alert.critical { border-left-color:#bd163b; background:linear-gradient(90deg,#fff5f7,#fff 24%); }.oi-alert.high { border-left-color:#d78b12; background:linear-gradient(90deg,#fff9ef,#fff 24%); }.oi-alert.medium { border-left-color:#2e68df; }
.oi-alert > div { min-width:0; }.oi-alert b { margin-left:9px; color:#25344e; font-size:12.5px; }.oi-alert p { margin:7px 0 0; color:#65758d; font-size:11.5px; line-height:1.55; }
.oi-all-good { display:grid; place-items:center; gap:6px; min-height:180px; border:1px dashed #a9dac7; border-radius:14px; background:#f1fbf6; color:#07865c; }.oi-all-good b { font-size:17px; }.oi-all-good span { font-size:11.5px; }
.oi-health-hero { display:flex; align-items:center; justify-content:space-between; gap:22px; margin-bottom:12px; padding:19px 22px; border-radius:16px; color:#fff; background:linear-gradient(135deg,#143b9e,#2872e8); box-shadow:0 16px 34px rgba(22,61,147,.22); }
.oi-health-hero.excellent,.oi-health-hero.good { background:linear-gradient(135deg,#087452,#19a874); }.oi-health-hero.error { background:linear-gradient(135deg,#9f1534,#dc3154); }.oi-health-hero.warn { background:linear-gradient(135deg,#9a6100,#d8971f); }
.oi-health-hero span,.oi-health-hero small { display:block; color:rgba(255,255,255,.78); font-size:10.5px; }.oi-health-hero b { display:block; margin:3px 0; font-size:42px; line-height:1; }.oi-health-hero p { max-width:760px; margin:0; color:rgba(255,255,255,.88); font-size:11.5px; line-height:1.65; text-align:right; }
.oi-health-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:10px; margin-bottom:12px; }
.oi-health-card { padding:14px 15px; border:1px solid #dce6f5; border-top:4px solid #2b68df; border-radius:12px; background:#fff; }
.oi-health-card.ok { border-top-color:#079166; }.oi-health-card.warn { border-top-color:#d18a15; }.oi-health-card.error { border-top-color:#bd163b; }
.oi-health-card header { display:flex; align-items:center; justify-content:space-between; gap:10px; }.oi-health-card header b { color:#34435b; font-size:11.5px; }.oi-health-card header span { padding:3px 7px; border-radius:999px; background:#edf2fa; color:#607089; font-size:9.5px; font-weight:800; }
.oi-health-card.ok header span { background:#e7f8f0; color:#067b52; }.oi-health-card.warn header span { background:#fff2da; color:#996000; }.oi-health-card.error header span { background:#ffe7ec; color:#b41035; }
.oi-health-card strong { display:block; margin:11px 0 6px; color:#1d2a42; font-size:17px; }.oi-health-card p { margin:0; color:#74829a; font-size:10.5px; line-height:1.55; }
.oi-source-card,.oi-retention { padding:17px 18px; margin-bottom:12px; }.oi-source-card h3,.oi-retention h3 { margin:0 0 12px; color:#24334c; font-size:15px; }.oi-retention p { margin:0 0 10px; color:#4c5d76; font-size:12px; }.oi-retention div { display:flex; flex-wrap:wrap; gap:8px 18px; color:#74829a; font-size:10.5px; }
.oi-empty { min-height:auto; padding:22px 14px; }

@media (max-width:900px) {
  .topbar { align-items:flex-start; flex-wrap:wrap; gap:10px 18px; padding:12px 3vw; }
  .top-actions { flex:1 1 100%; flex-wrap:wrap; justify-content:flex-start; gap:8px; }
  main,.view-tabs { width:94vw; }
  .tool-view,.tool-body,.oi-source-card,.table-scroll { min-width:0; max-width:100%; }
  .oi-thresholds { grid-template-columns:repeat(2,minmax(140px,1fr)); }
  .oi-health-hero { align-items:flex-start; flex-direction:column; }
  .oi-health-hero p { text-align:left; }
}
@media (max-width:560px) {
  .oi-thresholds { grid-template-columns:1fr; }
  .oi-toolbar-actions { align-items:stretch; flex-direction:column; width:100%; }
  .oi-toolbar-actions button { width:100%; }
}
.access-group { margin:14px 0; border:1px solid #d9e3f4; border-radius:12px; padding:14px; }
.access-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:12px; }
.access-choice { display:flex; align-items:flex-start; gap:10px; margin:0; padding:10px; border-radius:8px; background:#f5f8ff; }
.access-choice[hidden],.access-group[hidden] { display:none; }
.access-choice input { flex:0 0 18px; width:18px; height:18px; margin:3px 0 0; }
.access-choice small { display:block; color:#65748b; font-size:12px; line-height:1.5; margin-top:5px; }
.wallet-contact-hint { display:block; max-width:190px; white-space:normal; color:#65748b; margin-top:5px; font-size:12px; }
.wallet-contact-hint.conflict { color:#b54708; }
