:root {
  color-scheme: light;
  font-family: "Segoe UI", "PingFang SC", "Microsoft YaHei", Arial, sans-serif;
  color: #202124;
  background: #f5f6f8;
  font-size: 14px;
  --yellow: #ffd522;
  --orange: #ff5a1f;
  --ink: #202124;
  --muted: #7a7f87;
  --line: #e4e6ea;
  --danger: #d93025;
}

* { box-sizing: border-box; }
[hidden] { display: none !important; }
html, body { margin: 0; min-height: 100%; }
body { background: #f5f6f8; }

.login-gate { min-height: 100vh; display: grid; place-items: center; padding: 24px; background: #f5f6f8; }
.login-card { width: min(380px, 100%); display: grid; gap: 14px; padding: 30px; border: 1px solid var(--line); border-radius: 4px; background: #fff; box-shadow: 0 14px 40px rgba(20, 22, 25, .08); }
.login-brand { width: 42px; height: 42px; display: grid; place-items: center; background: var(--ink); color: var(--yellow); border-radius: 4px; font-size: 22px; font-weight: 800; }
.login-card h1 { margin: 0; font-size: 22px; }
.login-card p { margin: -6px 0 4px; color: var(--muted); }
.login-card label { display: grid; gap: 6px; color: #4a4e54; }
.login-card input { height: 36px; padding: 0 10px; }
.auth-mode-switch { display: grid; grid-template-columns: 1fr 1fr; border: 1px solid #d7dadd; background: #f6f7f8; }
.auth-mode-switch button { height: 34px; border: 0; background: transparent; color: #62666c; }
.auth-mode-switch button.active { background: #252525; color: #fff; font-weight: 650; }
.auth-form { display: grid; gap: 14px; }
.auth-form small { margin-top: -8px; color: var(--muted); }
.login-submit { width: 100%; height: 38px; margin-top: 4px; }
.login-error { padding: 8px 10px; border: 1px solid #f0b8b4; color: var(--danger); background: #fff7f6; }
button, input, select, textarea { font: inherit; letter-spacing: 0; }
button { cursor: pointer; }
button:focus { outline: none; }
button:focus-visible { outline: 2px solid #f3c51e; outline-offset: 2px; }
button:disabled { cursor: not-allowed; opacity: .46; }
input, select, textarea { border: 1px solid #d4d7dc; background: #fff; color: var(--ink); outline: none; }
input:focus, select:focus, textarea:focus { border-color: #b79200; box-shadow: 0 0 0 2px rgba(255, 213, 34, .2); }

.app-shell { display: grid; grid-template-columns: 112px minmax(0, 1fr); min-height: 100vh; }
.sidebar { position: sticky; top: 0; height: 100vh; display: flex; flex-direction: column; background: #fff; border-right: 1px solid var(--line); padding: 14px 10px; z-index: 5; }
.sidebar-brand { width: 34px; height: 34px; display: grid; place-items: center; margin: 0 auto 18px; background: var(--ink); color: var(--yellow); font-size: 18px; font-weight: 800; border-radius: 4px; }
.sidebar nav { min-height: 0; flex: 1; display: flex; flex-direction: column; gap: 6px; overflow-y: auto; }
.nav-item { width: 100%; height: 38px; display: flex; align-items: center; gap: 9px; padding: 0 10px; border: 0; background: transparent; color: #5b6067; border-radius: 4px; text-align: left; }
.nav-item.active { background: var(--yellow); color: #171717; font-weight: 700; }
.nav-item--create { margin-top: 8px; background: #252525; color: #fff; font-weight: 650; }
.nav-item--create, .nav-item--logs, .nav-item--settings { gap: 4px; padding-right: 5px; padding-left: 5px; }
.nav-item--create:hover:not(:disabled) { background: #111; }
.nav-item--logs, .nav-item--settings { margin-top: 0; border: 1px solid #d7dadd; background: #fff; color: #303134; font-weight: 650; }
.nav-item--logs:hover:not(:disabled), .nav-item--settings:hover:not(:disabled) { border-color: #92969c; background: #f7f8fa; }
.nav-icon--api { font-size: 9px; font-weight: 800; }
.nav-icon { width: 16px; text-align: center; font-size: 16px; }

.workspace { min-width: 0; }
.workspace-header { height: 70px; display: flex; align-items: center; justify-content: space-between; padding: 0 22px; background: #fff; border-bottom: 1px solid var(--line); }
.workspace-header h1 { margin: 0; font-size: 20px; font-weight: 650; }
.workspace-header p { margin: 4px 0 0; color: var(--muted); font-size: 12px; }
.session-tools { display: flex; align-items: center; gap: 10px; }
.session-state { display: inline-flex; align-items: center; gap: 7px; color: #5f6368; white-space: nowrap; }
.session-state.compact { font-size: 12px; }
.session-state i { width: 8px; height: 8px; border-radius: 50%; background: #9aa0a6; }
.session-state[data-tone="ok"] i { background: #32a852; box-shadow: 0 0 0 3px #e4f4e8; }
.session-state[data-tone="warn"] i { background: #f29900; box-shadow: 0 0 0 3px #fff0d0; }
.session-state[data-tone="error"] i { background: var(--danger); box-shadow: 0 0 0 3px #fce8e6; }

.button, .icon-button { min-height: 30px; border: 1px solid #cfd2d7; background: #fff; color: #303134; border-radius: 2px; }
.button { padding: 0 14px; white-space: nowrap; }
.button:hover:not(:disabled), .icon-button:hover:not(:disabled) { border-color: #90949b; }
.button.primary, .button.dark { border-color: #252525; background: #252525; color: #fff; }
.button.dark { min-width: 72px; }
.button.secondary { background: #fff; }
.button.danger { border-color: #f0b8b4; color: var(--danger); }
.button.danger:hover:not(:disabled) { border-color: var(--danger); background: #fff7f6; }
.icon-button { width: 30px; padding: 0; display: inline-grid; place-items: center; font-size: 18px; line-height: 1; }
.text-link { padding: 0; border: 0; background: transparent; color: #8a6500; font-size: 13px; }
.text-link:hover { color: #4f3b00; text-decoration: underline; }

.dashboard-page { min-height: calc(100vh - 70px); padding: 24px 28px 36px; background: #eef1f4; }
.dashboard-header { display: flex; align-items: center; justify-content: space-between; gap: 18px; margin-bottom: 16px; }
.dashboard-title-block { padding-left: 14px; border-left: 4px solid #f1c827; }
.dashboard-title-line { display: flex; align-items: center; gap: 13px; }
.dashboard-header h2 { margin: 0; color: #171b20; font-size: 22px; font-weight: 720; }
.dashboard-title-line span { padding: 3px 7px; border: 1px solid #bddfca; background: #eef8f2; color: #147744; font-size: 11px; font-weight: 700; }
.dashboard-header p { margin: 6px 0 0; color: #6f7781; font-size: 13px; }
.dashboard-header-actions { display: flex; align-items: center; gap: 10px; color: #858b94; font-size: 12px; }
.dashboard-overview { overflow: hidden; border: 1px solid #20262c; border-radius: 4px; background: #20262c; box-shadow: 0 12px 26px rgb(25 31 37 / 12%); }
.dashboard-health { min-height: 48px; display: flex; align-items: center; gap: 10px; padding: 0 20px; border-bottom: 1px solid #394048; background: #fff; color: #5b626c; }
.dashboard-health strong { color: #20252b; font-weight: 700; }
.dashboard-health-dot { width: 8px; height: 8px; flex: 0 0 auto; border-radius: 50%; background: #9299a2; }
.dashboard-health[data-tone="ok"] { background: #f4faf6; }
.dashboard-health[data-tone="ok"] .dashboard-health-dot { background: #209653; box-shadow: 0 0 0 4px #dcefe3; }
.dashboard-health[data-tone="warn"] { background: #fffaf0; }
.dashboard-health[data-tone="warn"] .dashboard-health-dot { background: #c98716; box-shadow: 0 0 0 4px #f5e7c7; }
.dashboard-health-detail { color: var(--muted); }
.dashboard-command-strip { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); background: #20262c; }
.dashboard-command-strip article { position: relative; min-width: 0; padding: 18px 20px 20px; border-right: 1px solid #394048; }
.dashboard-command-strip article:last-child { border-right: 0; }
.dashboard-command-strip article::before { position: absolute; top: 20px; right: 20px; width: 7px; height: 7px; border-radius: 50%; background: #9aa1aa; content: ""; }
.dashboard-command-strip article[data-signal="source"]::before, .dashboard-command-strip article[data-signal="online"]::before { background: #22965a; }
.dashboard-command-strip article[data-signal="task"]::before { background: #d2a113; }
.dashboard-command-strip article[data-signal="model"]::before { background: #4d6c8b; }
.dashboard-command-strip span, .dashboard-command-strip small { display: block; overflow: hidden; color: #aeb5bd; text-overflow: ellipsis; white-space: nowrap; }
.dashboard-command-strip span { padding-right: 18px; font-size: 12px; }
.dashboard-command-strip strong { display: block; margin: 8px 0 5px; overflow: hidden; color: #fff; font-size: 20px; font-weight: 720; text-overflow: ellipsis; white-space: nowrap; }
.dashboard-command-strip small { font-size: 11px; }
.dashboard-kpis { display: grid; grid-template-columns: repeat(4, minmax(150px, 1fr)); overflow: hidden; margin-top: 14px; border: 1px solid #d7dce1; border-radius: 4px; background: #fff; box-shadow: 0 5px 14px rgb(29 38 48 / 5%); }
.dashboard-kpis article { position: relative; min-width: 0; padding: 18px 21px 19px; border-right: 1px solid #e7eaed; }
.dashboard-kpis article:last-child { border-right: 0; }
.dashboard-kpis article::before { position: absolute; top: 21px; left: 0; width: 3px; height: 34px; background: #5c6671; content: ""; }
.dashboard-kpis article[data-tone="online"]::before { background: #26985a; }
.dashboard-kpis article[data-tone="offline"]::before { background: #959ba3; }
.dashboard-kpis article[data-tone="abnormal"]::before { background: #d55345; }
.dashboard-kpis span, .dashboard-kpis small { display: block; color: #7a818b; }
.dashboard-kpis strong { display: block; margin: 9px 0 6px; color: #1d2329; font-size: 31px; line-height: 1; font-weight: 740; }
.dashboard-kpis article[data-tone="online"] strong { color: #177942; }
.dashboard-kpis article[data-tone="abnormal"] strong { color: #c34437; }
.dashboard-kpis small { font-size: 12px; }
.dashboard-layout { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(320px, .72fr); grid-template-areas: "product website" "activity providers"; gap: 14px; margin-top: 14px; }
.dashboard-panel { min-width: 0; padding: 20px 22px; border: 1px solid #d7dce1; border-radius: 4px; background: #fff; box-shadow: 0 5px 14px rgb(29 38 48 / 5%); }
.dashboard-panel--product { grid-area: product; min-height: 230px; }
.dashboard-panel--website { grid-area: website; }
.dashboard-panel--providers { grid-area: providers; }
.dashboard-panel--activity { grid-area: activity; min-height: 230px; }
.dashboard-panel-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding-bottom: 14px; border-bottom: 2px solid #edf0f2; }
.dashboard-panel-heading h3 { margin: 0; color: #20252b; font-size: 15px; font-weight: 700; }
.dashboard-panel-heading p { margin: 5px 0 0; color: #858b94; font-size: 12px; }
.dashboard-panel-heading > span { color: #187947; font-size: 12px; font-weight: 650; }
.dashboard-product-bar { display: grid; gap: 19px; margin: 27px 1px 5px; }
.dashboard-product-bar > div { display: grid; grid-template-columns: 86px minmax(80px, 1fr) 56px; align-items: center; gap: 13px; }
.dashboard-product-bar span { display: inline-flex; align-items: center; gap: 8px; color: #5b626c; font-size: 12px; }
.dashboard-product-bar span i { width: 8px; height: 8px; flex: 0 0 auto; border-radius: 2px; }
.dashboard-product-bar i.online, .dashboard-product-bar div:nth-child(1) em { background: #26985a; }
.dashboard-product-bar i.offline, .dashboard-product-bar div:nth-child(2) em { background: #969ca4; }
.dashboard-product-bar i.abnormal, .dashboard-product-bar div:nth-child(3) em { background: #d55345; }
.dashboard-product-bar b { height: 9px; overflow: hidden; border-radius: 1px; background: #e9edf0; }
.dashboard-product-bar em { display: block; width: 0; height: 100%; transition: width .25s ease; }
.dashboard-product-bar strong { color: #454d57; font-size: 12px; text-align: right; }
.dashboard-summary-list { display: grid; grid-template-columns: 1fr 1fr; margin: 3px 0 0; }
.dashboard-summary-list div { padding: 15px 14px; border-bottom: 1px solid #edf0f2; }
.dashboard-summary-list div:nth-child(odd) { border-right: 1px solid #edf0f2; }
.dashboard-summary-list dt { color: #858b94; font-size: 12px; }
.dashboard-summary-list dd { margin: 7px 0 0; color: #23282e; font-size: 21px; font-weight: 700; }
.dashboard-audit-bars { display: grid; gap: 10px; margin-top: 17px; }
.dashboard-audit-bars > div { display: grid; grid-template-columns: 38px minmax(60px, 1fr) 43px; align-items: center; gap: 8px; color: #666d76; font-size: 11px; }
.dashboard-audit-bars b { height: 6px; overflow: hidden; border-radius: 2px; background: #edf0f2; }
.dashboard-audit-bars i { display: block; width: 0; height: 100%; background: #26985a; transition: width .25s ease; }
.dashboard-audit-bars > div:nth-child(2) i { background: #d55345; }
.dashboard-audit-bars strong { text-align: right; }
.dashboard-provider-summary { display: flex; align-items: baseline; gap: 7px; margin: 16px 0 12px; }
.dashboard-provider-summary strong { color: #20262c; font-size: 28px; }
.dashboard-provider-summary span { color: var(--muted); }
.dashboard-provider-list { border-top: 1px solid #edf0f2; }
.dashboard-provider-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 11px 0; border-bottom: 1px solid #edf0f2; }
.dashboard-provider-copy { min-width: 0; display: grid; gap: 3px; }
.dashboard-provider-copy strong, .dashboard-provider-copy span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dashboard-provider-copy strong { font-size: 13px; }
.dashboard-provider-copy span { color: var(--muted); font-size: 12px; }
.dashboard-provider-state { flex: 0 0 auto; color: #656a71; font-size: 12px; }
.dashboard-provider-row[data-status="active"] .dashboard-provider-state { color: #178248; }
.dashboard-provider-row[data-status="error"] .dashboard-provider-state { color: #c33d34; }
.dashboard-empty { display: block; padding: 16px 0; color: var(--muted); }
.dashboard-table-shell { margin-top: 15px; overflow-x: auto; border: 1px solid #dfe4e8; border-radius: 2px; }
.dashboard-table { width: 100%; min-width: 680px; border-collapse: collapse; table-layout: fixed; }
.dashboard-table th, .dashboard-table td { padding: 11px 12px; border-right: 1px solid #e8ebee; border-bottom: 1px solid #e8ebee; text-align: left; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dashboard-table th { background: #f1f3f5; color: #4d555f; font-weight: 680; }
.dashboard-table th:first-child { width: 160px; }
.dashboard-table th:nth-child(2) { width: 120px; }
.dashboard-table th:nth-child(5) { width: 80px; }
.dashboard-table tr[data-status="success"] td:last-child { color: #178248; }
.dashboard-table tr[data-status="failed"] td:last-child { color: #c33d34; }
.dashboard-table tr[data-status="running"] td:last-child { color: #9a6800; }

.filter-band { background: #fff; padding: 14px 20px 12px; border-bottom: 1px solid var(--line); }
.filter-grid { display: grid; grid-template-columns: repeat(3, minmax(240px, 1fr)); gap: 10px 24px; align-items: end; }
.filter-grid label { display: grid; grid-template-columns: 74px minmax(0, 1fr); gap: 8px; align-items: center; }
.filter-grid label > span { color: #35383c; text-align: right; }
.filter-grid input { width: 100%; height: 30px; padding: 0 9px; }
.filter-grid input::placeholder { color: #b3b6bc; }
.filter-actions { grid-column: 3; display: flex; justify-content: flex-end; gap: 8px; }

.content-band { margin-top: 10px; background: #fff; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.operation-logs-page { min-height: calc(100vh - 70px); padding: 22px; background: #f7f8fa; }
.operation-logs-header { margin-bottom: 16px; }
.operation-logs-header h2 { margin: 0; font-size: 19px; }
.operation-logs-header p { margin: 5px 0 0; color: var(--muted); }
.operation-logs-filter { display: grid; grid-template-columns: minmax(180px, .85fr) minmax(260px, 1.35fr) minmax(150px, .7fr) minmax(150px, .7fr) auto; gap: 14px; align-items: end; padding: 18px; border: 1px solid var(--line); background: #fff; }
.operation-logs-filter label { display: grid; gap: 7px; }
.operation-logs-filter label span { font-size: 13px; color: #4d5156; }
.operation-logs-filter input { width: 100%; height: 34px; padding: 0 10px; }
.operation-logs-summary { padding: 14px 2px 10px; color: #5f6368; }
.operation-logs-table-shell { overflow-x: auto; border: 1px solid var(--line); background: #fff; }
.operation-logs-table { width: 100%; border-collapse: collapse; table-layout: fixed; }
.operation-logs-table th, .operation-logs-table td { padding: 12px 14px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; overflow-wrap: anywhere; }
.operation-logs-table th { background: #f3f4f6; color: #4a4f55; font-weight: 500; }
.operation-logs-table th:nth-child(1) { width: 170px; }
.operation-logs-table th:nth-child(2) { width: 170px; }
.operation-logs-table th:nth-child(3) { width: 150px; }
.operation-logs-table th:nth-child(4) { width: 250px; }
.operation-logs-table th:nth-child(6) { width: 180px; }
.operation-logs-table tr[data-status="success"] td:last-child { color: #148447; }
.operation-logs-table tr[data-status="failed"] td:last-child { color: #c53737; }
.operation-logs-table tr[data-status="running"] td:last-child { color: #9a6800; }
.operation-logs-table td { white-space: pre-line; }
.operation-logs-table .empty-row td { height: 180px; text-align: center; vertical-align: middle; color: var(--muted); }
.product-rollback-page { min-height: calc(100vh - 70px); padding: 22px; background: #f7f8fa; }
.product-rollback-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; margin-bottom: 16px; }
.product-rollback-header h2 { margin: 0; font-size: 19px; }
.product-rollback-header p { margin: 5px 0 0; color: var(--muted); }
.product-rollback-summary { padding: 14px 2px 10px; color: #5f6368; }
.product-rollback-table-shell { overflow-x: auto; border: 1px solid var(--line); background: #fff; }
.product-rollback-table { width: 100%; border-collapse: collapse; table-layout: fixed; }
.product-rollback-table th, .product-rollback-table td { padding: 12px 14px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; overflow-wrap: anywhere; }
.product-rollback-table th { background: #f3f4f6; color: #4a4f55; font-weight: 500; }
.product-rollback-table th:nth-child(1) { width: 220px; }
.product-rollback-table th:nth-child(2) { width: 160px; }
.product-rollback-table th:nth-child(3), .product-rollback-table th:nth-child(4) { width: 170px; }
.product-rollback-table th:nth-child(6) { width: 110px; }
.product-rollback-product { display: grid; gap: 5px; }
.product-rollback-product strong { color: #202124; font-weight: 650; }
.product-rollback-product small { color: var(--muted); font-size: 12px; }
.product-rollback-changes { white-space: pre-line; color: #4f5862; line-height: 1.5; }
.product-rollback-action { white-space: nowrap; }
.product-rollback-table .empty-row td { height: 180px; text-align: center; vertical-align: middle; color: var(--muted); }
.api-settings-page { min-height: calc(100vh - 70px); padding: 22px; background: #f7f8fa; }
.api-settings-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; margin-bottom: 16px; }
.api-settings-header h2 { margin: 0; font-size: 19px; }
.api-settings-header p { margin: 5px 0 0; color: var(--muted); }
.api-settings-access { padding: 6px 9px; border: 1px solid #ead68a; background: #fff8dc; color: #6e5900; font-size: 12px; white-space: nowrap; }
.api-settings-form { width: 100%; min-width: 0; }
.api-provider-section { padding: 22px; border-bottom: 1px solid var(--line); }
.api-provider-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; margin-bottom: 18px; }
.api-provider-heading h3 { margin: 0; font-size: 16px; }
.api-provider-heading p { margin: 5px 0 0; color: var(--muted); font-size: 12px; }
.api-provider-list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.api-provider-card { min-width: 0; padding: 14px; border: 1px solid #dfe2e6; background: #fff; }
.api-provider-card[data-active="true"] { border-left: 3px solid #25975a; }
.api-provider-card[data-status="error"] { border-left: 3px solid #cf483d; }
.api-provider-card-header { display: grid; grid-template-columns: 24px minmax(0, 1fr) auto; gap: 10px; align-items: center; margin-bottom: 12px; }
.api-provider-card-header > input { grid-column: 2 / -1; min-width: 0; }
.api-provider-card-header .api-key-state { grid-column: 1 / 3; white-space: normal; overflow-wrap: anywhere; }
.api-provider-card-header .api-provider-controls { grid-column: 3; }
.api-provider-order { width: 24px; height: 24px; display: grid; place-items: center; border: 1px solid #d5d8dc; background: #fff; color: #656a71; font-size: 12px; }
.api-provider-card-header > input { width: 100%; height: 32px; padding: 0 9px; font-weight: 650; }
.api-provider-controls { display: flex; gap: 5px; }
.api-provider-controls .icon-button { width: 28px; min-height: 28px; font-size: 15px; }
.api-provider-enabled { display: inline-flex; align-items: center; gap: 7px; margin-top: 12px; color: #555a61; font-size: 12px; }
.api-key-state { display: inline-flex; align-items: center; gap: 7px; color: #8a4d00; font-size: 12px; white-space: nowrap; }
.api-key-state::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: #e39a20; }
.api-key-state[data-configured="true"] { color: #147a42; }
.api-key-state[data-configured="true"]::before { background: #24a35a; }
.api-settings-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; }
.api-settings-grid label { min-width: 0; display: grid; gap: 7px; }
.api-settings-grid label > span { color: #45494e; font-size: 13px; }
.api-settings-grid input, .api-settings-grid select { min-width: 0; width: 100%; height: 36px; padding: 0 10px; }
.api-settings-wide { grid-column: 1 / -1; }
.api-settings-actions { min-height: 68px; display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 14px 22px; background: #fbfbfc; }
.api-settings-actions > span { color: var(--muted); font-size: 12px; }
.api-settings-actions > div { display: flex; gap: 8px; }
.status-tabs { height: 42px; display: flex; align-items: end; padding: 0 20px; gap: 24px; border-bottom: 1px solid var(--line); }
.status-tab { position: relative; height: 42px; padding: 0; border: 0; background: transparent; color: #5f6368; }
.status-tab b { font-weight: 400; }
.status-tab.active { color: #171717; font-weight: 650; }
.status-tab.active::after { content: ""; position: absolute; left: 0; right: 0; bottom: -1px; height: 2px; background: var(--yellow); }

.action-bar { min-height: 54px; display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 10px 12px; background: #fbfbfc; border-bottom: 1px solid var(--line); }
.selection-tools, .action-buttons { display: flex; align-items: center; gap: 8px; }
.select-all-label { display: inline-flex; align-items: center; gap: 6px; padding: 0 5px; }
#selectionCount { color: var(--muted); padding-left: 6px; white-space: nowrap; }
input[type="checkbox"] { width: 15px; height: 15px; accent-color: #252525; }

.feature-console { padding: 14px 12px 16px; background: #fff; border-bottom: 1px solid var(--line); }
.feature-groups { display: grid; grid-template-columns: 1fr; gap: 12px; }
.feature-group { min-width: 0; padding: 10px; border: 1px solid #e7e8eb; background: #fbfbfc; }
.feature-group h2 { margin: 0 0 9px; color: #555b63; font-size: 12px; font-weight: 500; }
.feature-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 6px; }
.feature-button { min-height: 34px; border: 0; border-radius: 3px; background: #18a05a; color: #fff; font-weight: 600; cursor: pointer; }
.feature-button:hover:not(:disabled) { background: #12864b; }
.feature-button--watermark { background: #df651d; }
.feature-button--watermark:hover:not(:disabled) { background: #bf4e12; }
.feature-button:disabled { cursor: not-allowed; opacity: .45; }
.batch-task-panel { display: grid; grid-template-columns: minmax(210px, 1fr) minmax(180px, 1.4fr) repeat(7, auto); gap: 8px; align-items: center; margin-top: 12px; padding: 10px 12px; border: 1px solid #dde0e4; background: #fff; }
.batch-task-copy { min-width: 0; }
.batch-task-copy strong, .batch-task-copy span { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.batch-task-copy span { margin-top: 4px; color: #777d85; font-size: 12px; }
.batch-task-progress-wrap { min-width: 0; }
.batch-task-progress { height: 7px; overflow: hidden; background: #e8eaed; }
.batch-task-progress span { display: block; width: 0; height: 100%; background: #18a05a; transition: width .2s ease; }
.batch-task-stage { display: block; margin-top: 6px; overflow: hidden; color: #555b63; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.batch-task-count { min-width: 52px; color: #555b63; text-align: center; }
.batch-review-dialog { width: min(1120px, calc(100vw - 32px)); }
.batch-review-dialog .dialog-frame { width: 100%; }
.batch-review-dialog footer { flex-wrap: wrap; }
.batch-review-dialog footer .button { max-width: 100%; white-space: normal; overflow-wrap: anywhere; }
.batch-review-copy { display: grid; gap: 10px; margin-bottom: 14px; }
.batch-review-copy > p { margin: 0; padding: 9px 12px; border-left: 3px solid #18a05a; background: #f1f9f4; color: #356246; line-height: 1.6; }
.batch-review-changes { display: grid; border: 1px solid #e0e3e7; }
.batch-review-change { display: grid; grid-template-columns: 180px minmax(0, 1fr) minmax(0, 1fr); border-top: 1px solid #e8eaed; }
.batch-review-change:first-child { border-top: 0; }
.batch-review-change > * { min-width: 0; padding: 9px 10px; line-height: 1.55; overflow-wrap: anywhere; }
.batch-review-change > strong { background: #f7f8fa; font-size: 13px; }
.batch-review-change > span { color: #666c74; }
.batch-review-change > span + span { border-left: 1px solid #e8eaed; background: #f3fbf6; color: #252a30; }
.batch-review-change-note { display: block; margin-top: 5px; color: #3f7758; font-size: 12px; line-height: 1.45; }
.batch-review-change--head > * { padding-top: 7px; padding-bottom: 7px; background: #f4f5f7 !important; color: #555b63 !important; font-size: 12px; font-weight: 600; }
.batch-review-change--unchanged > span + span { background: #fafafa; color: #777d85; }
.batch-review-property-editor { min-width: 0; display: grid; gap: 12px; padding: 14px; border: 1px solid #d8dde2; background: #fbfcfd; overflow: hidden; }
.batch-review-property-editor-heading, .batch-review-property-channel-heading { min-width: 0; display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 6px 14px; }
.batch-review-property-editor-heading strong { color: #252a30; font-size: 14px; }
.batch-review-property-editor-heading span, .batch-review-property-channel-heading span { color: #747c85; font-size: 12px; overflow-wrap: anywhere; }
.batch-review-property-channel { min-width: 0; border: 1px solid #e0e4e8; background: #fff; overflow: hidden; }
.batch-review-property-channel-heading { padding: 9px 12px; border-bottom: 1px solid #e5e8eb; background: #f4f6f8; }
.batch-review-property-channel-heading strong { color: #343940; font-size: 13px; }
.batch-review-property-channel-identity { min-width: 0; flex: 1 1 420px; display: flex; align-items: center; gap: 10px; }
.batch-review-channel-category { min-width: 0; max-width: 100%; padding: 3px 8px; border: 1px solid #b9c5d2; background: #fff; color: #245a86; font-size: 12px; line-height: 1.45; text-align: left; overflow-wrap: anywhere; cursor: pointer; }
.batch-review-channel-category::after { content: " · 点击修改"; color: #778594; }
.batch-review-channel-category:hover, .batch-review-channel-category:focus { border-color: #1677ff; outline: 2px solid rgb(22 119 255 / 10%); }
.batch-review-property-empty { margin: 0; padding: 12px; color: #7a828a; font-size: 12px; }
.batch-review-property-fields { min-width: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.batch-review-property-field { min-width: 0; display: grid; align-content: start; gap: 6px; padding: 11px 12px; border-top: 1px solid #edf0f2; overflow: hidden; }
.batch-review-property-field:nth-child(-n+2) { border-top: 0; }
.batch-review-property-field:nth-child(even) { border-left: 1px solid #edf0f2; }
.batch-review-property-name { min-width: 0; display: flex; align-items: center; flex-wrap: wrap; gap: 5px; color: #30353b; font-size: 13px; font-weight: 600; overflow-wrap: anywhere; }
.batch-review-property-name small { flex: 0 0 auto; padding: 1px 5px; border: 1px solid #d4d9de; color: #7a828b; font-size: 10px; font-weight: 400; }
.batch-review-property-name small.is-required { border-color: #e4a19c; color: #ba3d35; }
.batch-review-property-name .batch-review-property-status--changed { border-color: #8ac9a7; background: #eff9f3; color: #25734a; }
.batch-review-property-name .batch-review-property-status--unresolved, .batch-review-property-name .batch-review-property-status--deferred { border-color: #e3bd73; background: #fff9e8; color: #956514; }
.batch-review-property-original, .batch-review-property-evidence { min-width: 0; color: #7b838c; font-size: 11px; line-height: 1.5; overflow-wrap: anywhere; }
.batch-review-property-evidence { color: #587060; }
.batch-review-property-control { min-width: 0; width: 100%; max-width: 100%; min-height: 34px; box-sizing: border-box; padding: 5px 8px; border: 1px solid #cfd5db; background: #fff; color: #252a30; }
.batch-review-property-control[multiple] { min-height: 72px; }
.batch-review-property-control:focus { border-color: #18a05a; outline: 2px solid rgb(24 160 90 / 12%); }
.batch-review-scope-note { border-left-color: #6f7782 !important; background: #f7f8fa !important; color: #59616b !important; }
.batch-review-required-warning { border-left-color: #d43b32 !important; background: #fff3f2 !important; color: #9f2f28 !important; }
.batch-review-image-error { margin: 0; padding: 9px 12px; border-left: 3px solid #e6a313; background: #fff8df; color: #725719; line-height: 1.6; }
.batch-review-detail-gallery { display: grid; gap: 10px; margin: 14px 0; padding: 14px; border: 1px solid #cfd6dc; background: #fff; }
.batch-review-detail-gallery-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding-bottom: 8px; border-bottom: 1px solid #e2e6ea; }
.batch-review-detail-gallery-heading strong { color: #252a30; font-size: 14px; }
.batch-review-detail-gallery-heading span { color: #66707a; font-size: 12px; }
.batch-review-detail-gallery-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.batch-review-detail-gallery-grid--original { grid-template-columns: repeat(auto-fit, minmax(140px, 220px)); padding-bottom: 10px; border-bottom: 1px dashed #d9dde2; }
.batch-review-detail-gallery-grid figure { min-width: 0; margin: 0; }
.batch-review-detail-gallery-grid img { width: 100%; aspect-ratio: 1; object-fit: contain; border: 1px solid #dfe3e7; background: #fff; cursor: zoom-in; }
.batch-review-detail-gallery-grid figcaption { margin-top: 5px; color: #555b63; font-size: 12px; text-align: center; }
.batch-review-back-label { display: grid; gap: 10px; margin: 14px 0; padding: 14px; border: 1px solid #cfd6dc; background: #fff; }
.batch-review-back-label-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding-bottom: 8px; border-bottom: 1px solid #e2e6ea; }
.batch-review-back-label-heading strong { color: #252a30; font-size: 14px; }
.batch-review-back-label-heading span { color: #66707a; font-size: 12px; }
.batch-review-back-label-images { padding: 10px; border: 1px solid #e0e4e8; background: #f7f9fa; }
.batch-review-back-label-images img { height: 320px; object-fit: contain; background: #fff; }
.feature-preview-list { max-height: 140px; margin: 6px 0 0; padding-left: 20px; overflow: auto; color: #555b63; line-height: 1.7; }

.table-shell { overflow-x: auto; }
.product-table { width: 100%; min-width: 1500px; border-collapse: collapse; table-layout: fixed; }
.product-table col.check-column { width: 40px; }
.product-table col.product-column { width: 300px; }
.product-table col.spec-column { width: 255px; }
.product-table col.type-column { width: 92px; }
.product-table col.coverage-column { width: 140px; }
.product-table col.sales-column { width: 185px; }
.product-table col.channel-column { width: 235px; }
.product-table col.time-column { width: 170px; }
.product-table col.operation-column { width: 132px; }
.product-table th { height: 38px; padding: 0 9px; background: #f2f3f6; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); color: #555b63; font-weight: 500; text-align: left; }
.product-table td { height: 138px; padding: 10px 9px; vertical-align: top; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); color: #25272a; overflow-wrap: anywhere; }
.product-table tbody tr:hover { background: #fffdf2; }
.product-table th:last-child, .product-table td:last-child { border-right: 0; }
.product-table .empty-row td { height: 260px; text-align: center; vertical-align: middle; color: #8b9097; }
.product-cell { display: grid; grid-template-columns: 72px minmax(0, 1fr); gap: 10px; }
.product-image-wrap { position: relative; width: 72px; height: 72px; }
.product-image { width: 72px; height: 72px; object-fit: cover; border: 1px solid #ececef; background: #f8f8f8; }
.image-preview-button { min-height: 24px; padding: 0 8px; border: 1px solid #cfd3d8; border-radius: 2px; background: #fff; color: #3f464e; font-size: 11px; line-height: 22px; cursor: pointer; }
.image-preview-button:hover { border-color: #1677ff; color: #1677ff; }
.product-image-wrap .image-preview-button { position: absolute; left: 3px; bottom: 3px; border: 0; background: rgba(20, 24, 29, .78); color: #fff; }
.product-image.placeholder { display: grid; place-items: center; color: #afb3b9; font-size: 12px; }
.product-name { display: -webkit-box; overflow: hidden; -webkit-line-clamp: 2; -webkit-box-orient: vertical; color: #15171a; font-weight: 600; line-height: 1.45; }
.meta-line { display: block; margin-top: 4px; color: #8a8f96; line-height: 1.4; }
.meta-line strong { color: #555b63; font-weight: 500; }
.status-chip { display: inline-block; margin-top: 6px; padding: 1px 7px; border-radius: 2px; font-size: 12px; }
.status-chip.online { background: #fff0e7; color: var(--orange); }
.status-chip.offline { background: #eceff2; color: #666c74; }
.product-badges { display: flex; flex-wrap: wrap; align-items: center; gap: 5px; margin-top: 6px; }
.product-badges .status-chip { margin-top: 0; }
.label-chip { display: inline-flex; align-items: center; min-height: 19px; padding: 1px 6px; border: 1px solid #cfd5dc; border-radius: 2px; background: #fff; color: #515860; font-size: 12px; }
.product-abnormal { display: block; max-width: 100%; margin-top: 6px; padding: 0; border: 0; background: transparent; color: #f0443e; font-size: 12px; line-height: 1.5; text-align: left; cursor: pointer; }
.product-abnormal:hover { text-decoration: underline; }
.qnh-live-details { margin-top: 7px; color: #555b63; font-size: 11px; }
.qnh-live-details summary { cursor: pointer; color: #1677ff; line-height: 1.4; }
.qnh-live-json { max-height: 260px; margin: 6px 0 0; padding: 8px; overflow: auto; border: 1px solid #dfe4ea; background: #f7f9fb; color: #3f454c; white-space: pre-wrap; word-break: break-word; font: 10px/1.45 Consolas, monospace; }
.spec-name { display: block; margin-bottom: 5px; color: #202124; line-height: 1.45; }
.spec-measure { display: block; margin: -1px 0 5px; color: #555b63; line-height: 1.4; }
.coverage-line { display: block; margin-bottom: 5px; }
.coverage-line b { color: #4b5158; font-weight: 500; }
.price-line { color: #3c4043; }
.price-line strong { margin-left: 6px; color: #111; font-weight: 600; }
.channel-list { display: grid; gap: 5px; }
.channel-item { display: flex; gap: 5px; line-height: 1.35; }
.channel-mark { flex: 0 0 15px; width: 15px; height: 15px; display: grid; place-items: center; border-radius: 2px; background: var(--yellow); color: #111; font-size: 10px; font-weight: 700; }
.time-line { display: block; margin-bottom: 6px; }
.time-line b { color: #90949a; font-weight: 400; }
.row-actions { display: grid; justify-items: stretch; gap: 6px; }
.link-button { min-height: 28px; padding: 4px 8px; border: 1px solid #f0c1ae; border-radius: 2px; background: #fff8f4; color: var(--orange); line-height: 1.25; text-align: left; }
.link-button:hover { border-color: var(--orange); background: #fff2ec; }

.pagination-bar { min-height: 52px; display: flex; align-items: center; justify-content: space-between; padding: 8px 14px; color: #666c74; }
.pagination-controls { display: flex; align-items: center; gap: 9px; }
.pagination-controls label { display: flex; align-items: center; gap: 6px; }
.pagination-controls select { height: 30px; }
#pageLabel { min-width: 72px; text-align: center; color: #34373b; }

.create-product-page { min-height: calc(100vh - 70px); background: #fff; }
.create-page-header { min-height: 72px; display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 14px 24px; border-bottom: 1px solid var(--line); }
.create-page-header h2, .create-page-section-title h3 { margin: 0; font-size: 18px; }
.create-page-header p, .create-page-section-title p { margin: 5px 0 0; color: var(--muted); font-size: 12px; }
.create-page-content { display: grid; grid-template-columns: minmax(460px, .95fr) minmax(460px, 1.05fr); min-height: calc(100vh - 142px); }
.create-page-form, .created-products { min-width: 0; padding: 22px 24px; }
.create-page-form { border-right: 1px solid var(--line); }
.create-page-section-title { min-height: 48px; display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; margin-bottom: 16px; }
.create-page-section-title h3 { font-size: 15px; }
.create-page-section-title > span { color: var(--muted); font-size: 12px; white-space: nowrap; }
.create-page-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--line); }
.create-product-submit-reason { flex: 1 1 420px; min-width: 0; margin: 0; padding: 8px 10px; border-left: 3px solid #d92d20; background: #fff4f2; color: #a1271f; font-size: 12px; line-height: 1.6; overflow-wrap: anywhere; }
.create-product-submit-reason[data-state="ready"] { border-left-color: #1d9b5a; background: #f1fbf5; color: #17683d; }
.create-page-action-buttons { display: flex; flex: 0 0 auto; gap: 8px; align-items: center; margin-left: auto; }
@media (max-width: 620px) { .create-product-submit-reason { flex-basis: 100%; } .create-page-action-buttons { width: 100%; margin-left: 0; justify-content: flex-end; } }
.created-products-list { display: grid; gap: 8px; }
.created-products-empty { margin: 0; padding: 56px 20px; border-top: 1px solid var(--line); color: var(--muted); text-align: center; }
.created-product-item { min-width: 0; display: grid; grid-template-columns: 72px minmax(0, 1fr) 132px auto; gap: 12px; align-items: center; padding: 10px 0; border-top: 1px solid var(--line); }
.created-product-image-wrap { position: relative; width: 72px; height: 72px; }
.created-product-item img, .created-product-image-placeholder { width: 72px; height: 72px; object-fit: contain; border: 1px solid var(--line); background: #f7f8fa; }
.created-product-image-wrap .image-preview-button { position: absolute; left: 3px; bottom: 3px; border: 0; background: rgba(20, 24, 29, .78); color: #fff; }
.created-product-image-placeholder { display: grid; place-items: center; color: #a0a5ac; font-size: 11px; }
.created-product-copy { min-width: 0; display: grid; gap: 4px; }
.created-product-copy strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.created-product-copy span, .created-product-item time { color: var(--muted); font-size: 12px; }
.created-product-copy .created-product-source { width: fit-content; padding: 2px 6px; border: 1px solid #d8b45b; background: #fff8df; color: #79520b; }
.created-product-item time { text-align: right; }
.created-product-delete { align-self: center; padding: 0 9px; font-size: 12px; }
.created-products-pagination { display: flex; align-items: center; justify-content: flex-end; gap: 10px; min-height: 44px; margin-top: 10px; border-top: 1px solid var(--line); color: var(--muted); font-size: 12px; }

.product-editor { min-height: calc(100vh - 96px); margin: 0 12px 14px; background: #fff; box-shadow: 0 2px 12px rgba(25, 55, 86, .08); }
body[data-view="editor"] { background: #eef6ff; }
body[data-view="editor"] .app-shell { grid-template-columns: 124px minmax(0, 1fr); background: linear-gradient(180deg, #e8f4ff 0, #f5f9ff 180px, #eef2f7 100%); }
body[data-view="editor"] .sidebar { display: block; padding: 14px 10px; box-shadow: 0 0 10px rgba(41, 75, 110, .06); }
body[data-view="editor"] .sidebar-brand { background: transparent; color: #222; font-size: 0; }
body[data-view="editor"] .sidebar-brand::before { content: "✦"; font-size: 28px; color: #ffd126; text-shadow: 9px 0 #ff8b25; }
body[data-view="editor"] .nav-item { height: 43px; color: #6c737c; }
body[data-view="editor"] .nav-item.active { background: #fff; color: #272b30; box-shadow: inset 3px 0 #ffd12c; }
body[data-view="editor"] .workspace-header { height: 48px; padding: 0 24px; background: rgba(240, 248, 255, .86); border-bottom-color: #e3edf6; }
body[data-view="editor"] .workspace-header h1 { font-size: 15px; }
body[data-view="editor"] .workspace-header p { display: inline; margin-left: 10px; }
body[data-view="editor"] .workspace-header > div:first-child { display: flex; align-items: baseline; }
.editor-route-tabs { height: 40px; display: flex; align-items: end; gap: 4px; padding: 0 12px; background: #e9f3fd; border-bottom: 1px solid #dfe9f3; }
.editor-route-tabs span, .editor-route-tabs strong { min-width: 96px; height: 32px; display: inline-flex; align-items: center; justify-content: space-between; gap: 12px; padding: 0 12px; background: rgba(255,255,255,.42); color: #6a7179; font-size: 12px; font-weight: 400; }
.editor-route-tabs strong { min-width: 132px; background: #fff; color: #24282d; }
.editor-route-tabs button { height: 18px; padding: 0; border: 0; background: transparent; color: inherit; font: inherit; line-height: 18px; cursor: pointer; }
.editor-route-tabs .editor-route-tab-label { flex: 1; width: auto; text-align: left; }
.editor-route-tabs .editor-route-tab-close { width: 18px; color: #9fa5ab; text-align: center; }
.editor-route-tabs button:hover, .editor-route-tabs button:focus-visible { color: #24282d; outline: 1px solid #c6cbd1; outline-offset: 2px; }
.editor-route-tabs .editor-route-tab-close:hover, .editor-route-tabs .editor-route-tab-close:focus-visible { background: #edf0f3; outline-offset: 0; }
.editor-page-head { min-height: 46px; display: flex; align-items: center; gap: 12px; padding: 7px 20px; border-bottom: 1px solid #eceef1; }
.editor-page-head p { margin: 5px 0 0; color: #1f2328; font-weight: 600; }
.editor-page-actions { display: flex; gap: 8px; margin-left: auto; }
.editor-back { flex: none; width: 30px; height: 30px; padding: 0; border: 1px solid #cfd2d7; border-radius: 2px; background: #fff; color: #303134; display: inline-grid; place-items: center; font-size: 18px; line-height: 1; }
.editor-back:hover { border-color: #91969d; }
.editor-crumb { display: flex; align-items: center; gap: 8px; color: #8a8f96; font-size: 12px; }
.editor-crumb b { color: #c4c7cb; font-weight: 400; }
.editor-crumb strong { color: #30343a; }
.editor-tabs { position: sticky; top: 48px; z-index: 6; height: 56px; display: flex; align-items: stretch; gap: 38px; padding: 0 32px; overflow-x: auto; border-bottom: 1px solid var(--line); background: #fff; scrollbar-width: thin; }
.editor-tab { position: relative; flex: none; padding: 0; border: 0; background: transparent; color: #3e434a; white-space: nowrap; }
.editor-tab.active { color: #17191c; font-weight: 600; }
.editor-tab.active::after { content: ""; position: absolute; left: 0; right: 0; bottom: -1px; height: 3px; background: #f3c51e; }
.editor-tab--master { color: #f07a23; }
.editor-tab--transfer { color: #42a835; }
.editor-tab--library { color: #2678e8; }
.editor-form { min-width: 0; }
.editor-panel { min-height: 0; padding: 16px 32px 52px; background: #fff; scroll-margin-top: 112px; border-bottom: 1px solid #edf0f3; }
.editor-panel[data-active="true"] { box-shadow: inset 3px 0 #f3c51e; }
.editor-section-title { display: flex; align-items: baseline; gap: 16px; margin-bottom: 18px; color: #1f2328; }
.editor-section-title strong { font-size: 14px; }
.editor-section-title span { color: #8a9098; font-size: 12px; }
.editor-fields { display: grid; gap: 13px; max-width: 980px; }
.editor-field-row { display: grid; grid-template-columns: 110px minmax(0, 1fr); gap: 8px; align-items: center; margin: 0; padding: 0; border: 0; }
.editor-field-label { color: #25292e; text-align: right; }
.required::before, .editor-field-label.required::before { content: "*"; margin-right: 5px; color: #e3261f; font-weight: 400; }
.editor-choice-options { display: flex; align-items: center; gap: 18px; }
.editor-choice-options small { color: #999fa6; }
.editor-choice-row label { display: inline-flex; align-items: center; gap: 5px; }
.editor-field-control { min-width: 0; }
.editor-field-control input, .editor-detail-grid input, .editor-detail-grid textarea, .editor-image-adder input { width: 100%; border-radius: 2px; }
.editor-field-control input, .editor-detail-grid input, .editor-image-adder input { height: 30px; padding: 0 9px; }
.editor-name-control { display: grid; grid-template-columns: minmax(300px, 480px) max-content; gap: 12px; align-items: center; }
.editor-ai-button { min-height: 30px; padding: 0 12px; border: 0; border-radius: 2px; background: #17a45b; color: #fff; font-weight: 600; }
.editor-ai-button:hover { background: #12894b; }
.editor-sale-state { color: var(--orange); }
.editor-sale-state[data-status="offline"] { color: #777d85; }
.editor-text-action { justify-self: start; padding: 0; border: 0; background: transparent; color: var(--orange); }
.editor-title-suggestion { display: flex; gap: 7px; align-items: center; margin: -3px 0 -5px 118px; color: #8c929a; font-size: 12px; }
.editor-title-suggestion b { padding: 1px 3px; border: 1px solid #ffad6f; color: #f47d20; font-weight: 500; }
.editor-hint { margin: -4px 0 0 118px; color: #969ba2; font-size: 12px; line-height: 1.55; }
.editor-hint--aligned { margin-top: 3px; }
.editor-subsection { margin-top: 28px; }
.editor-subsection-title { display: flex; align-items: baseline; gap: 12px; margin: 0 0 12px 54px; }
.editor-subsection-title strong { font-weight: 600; }
.editor-subsection-title span { color: #9a9fa7; font-size: 12px; }
.channel-category-panel { display: grid; grid-template-columns: repeat(2, minmax(320px, 1fr)); gap: 8px 14px; margin-left: 118px; padding: 10px; background: #f5f7fa; }
.channel-category-row { display: grid; grid-template-columns: 12px 30px minmax(0, 1fr); gap: 7px; align-items: start; }
.channel-required { padding-top: 7px; color: #e3261f; }
.channel-logo { width: 28px; height: 28px; display: grid; place-items: center; border-radius: 4px; color: #fff; font-size: 13px; font-weight: 700; }
.channel-logo--1 { background: #ffc400; color: #252525; }
.channel-logo--2 { background: #1587ea; }
.channel-logo--3 { background: #26a763; }
.channel-category-control { min-width: 0; }
.channel-category-control select { width: 100%; height: 30px; padding: 0 30px 0 9px; color: #30343a; text-overflow: ellipsis; }
.channel-category-control select:disabled { opacity: 1; background: #fff; color: #30343a; cursor: default; }
.channel-category-picker { width: 100%; min-height: 30px; border: 1px solid #cfd5dc; background: #fff; color: #30343a; padding: 5px 9px; text-align: left; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; cursor: pointer; }
.catalog-picker { width: 100%; min-height: 30px; border: 1px solid #cfd5dc; border-radius: 2px; background: #fff; color: #30343a; padding: 5px 28px 5px 9px; text-align: left; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; cursor: pointer; }
.catalog-picker::after { content: "⌄"; float: right; margin-right: -19px; color: #8a9098; }
.catalog-picker[data-empty="true"] { color: #9aa0a8; }
.catalog-picker:hover { border-color: #1677ff; }
.channel-category-results { max-height: 420px; overflow: auto; display: grid; gap: 6px; }
.channel-category-option { display: grid; gap: 3px; padding: 10px 12px; border: 1px solid #dbe1e8; background: #fff; text-align: left; cursor: pointer; }
.channel-category-option:hover { border-color: #1677ff; background: #f4f8ff; }
.channel-category-option.is-selected { border-color: #17a45b; background: #f1fbf5; }
.channel-category-option small { color: #8a96a3; }
.channel-recommendation { display: block; margin-top: 5px; color: #67b39a; font-size: 11px; }
.channel-property-groups { display: grid; gap: 10px; margin-left: 118px; }
.channel-property-group { border: 1px solid #e1e3e7; background: #fff; }
.channel-property-group summary { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 10px 12px; background: #f5f7fa; color: #34383e; font-weight: 600; cursor: pointer; }
.channel-use-all { min-height: 26px; padding: 0 10px; border: 1px solid #cfd3d8; background: #fff; color: #4b5057; font-size: 12px; }
.channel-property-grid { display: grid; grid-template-columns: repeat(2, minmax(260px, 1fr)); gap: 12px 20px; padding: 14px; }
.channel-property-field { min-width: 0; display: grid; gap: 6px; color: #4b5057; }
.channel-property-field input, .channel-property-field select { width: 100%; min-height: 30px; padding: 4px 8px; }
.channel-property-field select[multiple] { min-height: 70px; }
.editor-image-grid { display: flex; align-items: flex-start; flex-wrap: wrap; gap: 10px; margin-left: 118px; }
.editor-image-tile { position: relative; flex: 0 0 120px; width: 120px; height: 148px; margin: 0; background: #fff; cursor: grab; }
.editor-upload-tile { position: relative; flex: 0 0 120px; width: 120px; height: 120px; margin: 0; border: 1px dashed #cdd2d8; background: #f7f8fa; }
.editor-image-tile img { width: 120px; height: 120px; display: block; object-fit: contain; border: 1px solid #d8dbe0; background: #fff; }
.editor-image-tile.is-dragging { opacity: .45; }
.editor-image-tile.is-drag-target img { border: 2px solid #f3c51e; }
.editor-image-tile.is-error::after { content: "图片无法加载"; position: absolute; inset: 0; display: grid; place-items: center; color: #9a9fa7; font-size: 12px; background: #f7f8fa; }
.editor-primary-image { position: absolute; top: -1px; left: -1px; z-index: 2; padding: 2px 7px; background: #111; color: #fff; font-size: 11px; }
.editor-image-tools { position: absolute; left: 0; right: 0; bottom: 0; z-index: 3; height: 26px; display: flex; align-items: center; gap: 3px; opacity: 1; }
.editor-image-tools button { height: 24px; padding: 0 7px; border: 0; border-radius: 2px; color: #fff; font-size: 11px; line-height: 1; }
.editor-image-tools .image-preview-button { border: 0; background: #343a40; color: #fff; }
.editor-image-action--edit { background: #2385e8; }
.editor-image-action--replace { background: #29a64f; }
.editor-image-action--ai { background: #8066df; }
.editor-image-move { width: 18px; padding: 0 !important; background: #6f757d; }
.editor-image-remove, .special-picture-remove { position: absolute; top: -120px; right: -2px; width: 20px; height: 20px !important; display: grid; place-items: center; padding: 0 !important; border-radius: 50% !important; background: #222; color: #fff; }
.editor-image-tools button:disabled { display: none; }
.editor-upload-tile { display: grid; place-content: center; justify-items: center; gap: 7px; border-style: dashed; color: #9a9fa7; }
.editor-upload-tile span { font-size: 28px; font-weight: 300; }
.editor-upload-tile small { font-size: 12px; }
.editor-upload-tile:hover { border-color: #9ba0a7; color: #555b63; }
.editor-image-adder { display: grid; grid-template-columns: minmax(260px, 440px) auto; gap: 8px; align-items: center; margin: 10px 0 0 118px; max-width: 560px; }
.special-picture-group { margin: 0 0 14px 118px; padding: 12px; background: #f5f7fa; }
.special-picture-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; }
.special-picture-head span { color: #92979f; font-size: 12px; }
.editor-image-grid--compact { margin-left: 0; }
.special-picture-remove { top: 3px; right: 3px; z-index: 3; }
.editor-image-tile > .image-preview-button { position: absolute; left: 3px; bottom: 29px; z-index: 3; border: 0; background: rgba(20, 24, 29, .78); color: #fff; }
.special-picture-group .editor-image-adder { margin-left: 0; }
.special-picture-adder { grid-template-columns: minmax(220px, 440px) auto auto; max-width: 680px; }
.editor-barcode-panel { display: flex; align-items: center; gap: 12px; margin-left: 118px; min-height: 38px; }
.editor-barcode-status { color: #737a83; font-size: 12px; }
.editor-barcode-status[data-status="checking"] { color: #1677ff; }
.editor-barcode-status[data-status="match"] { color: #16834a; font-weight: 600; }
.editor-barcode-status[data-status="mismatch"] { color: #c52d2d; font-weight: 600; }
.editor-barcode-status[data-status="uncertain"] { color: #a36a00; font-weight: 600; }
.editor-barcode-result { margin: 10px 0 0 118px; max-width: 880px; padding: 10px 12px; border-left: 3px solid #cfd5dc; background: #f7f8fa; color: #555b63; font-size: 12px; line-height: 1.65; white-space: pre-line; }
.editor-barcode-result[data-status="match"] { border-left-color: #17a45b; background: #f1fbf5; color: #17673e; }
.editor-barcode-result[data-status="generated"] { border-left-color: #17a45b; background: #f1fbf5; color: #17673e; }
.editor-barcode-result[data-status="mismatch"] { border-left-color: #d64545; background: #fff4f4; color: #9c2525; }
.editor-barcode-result[data-status="uncertain"] { border-left-color: #e3a529; background: #fff9e9; color: #805d17; }
.feature-barcode-status { display: block; margin-top: 8px; color: #737a83; font-size: 12px; }
.feature-barcode-status[data-status="generated"] { color: #16834a; font-weight: 600; }
.feature-dialog .editor-barcode-result { margin-left: 0; max-width: none; }
.feature-barcode-channel-entry { display: flex; min-width: 0; align-items: center; justify-content: space-between; gap: 14px; padding: 12px; border: 1px solid #d8e2ed; background: #f7faff; }
.feature-barcode-channel-entry > div { min-width: 0; }
.feature-barcode-channel-entry strong, .feature-barcode-channel-entry span { display: block; overflow-wrap: anywhere; }
.feature-barcode-channel-entry strong { color: #29323d; font-size: 13px; }
.feature-barcode-channel-entry span { margin-top: 4px; color: #737d88; font-size: 12px; line-height: 1.5; }
.feature-barcode-channel-entry .button { flex: 0 0 auto; }
.barcode-channel-property-notice { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-left: 118px; padding: 12px; border-left: 3px solid #d89012; background: #fff8e8; color: #775113; }
.barcode-channel-property-notice p { min-width: 0; margin: 0; overflow-wrap: anywhere; line-height: 1.55; }
.barcode-channel-property-notice .button { flex: 0 0 auto; }
.feature-barcode-generated { display: grid; grid-template-columns: minmax(0, 220px) minmax(0, 1fr); align-items: center; gap: 12px; margin: 0; padding: 12px; border: 1px solid #cfe5d8; background: #f7fcf9; }
.feature-barcode-generated[hidden] { display: none; }
.feature-barcode-generated img { width: 220px; max-width: 100%; aspect-ratio: 1; object-fit: contain; border: 1px solid var(--line); background: #fff; }
.feature-barcode-generated figcaption { display: grid; gap: 6px; color: #17673e; font-size: 12px; line-height: 1.5; }
.feature-barcode-generated .button { justify-self: start; }
.feature-existing-labels { display: grid; gap: 8px; padding: 12px; border: 1px solid var(--line); background: #f7f9fa; }
.feature-existing-labels[hidden] { display: none; }
.feature-existing-label-title { color: #343a40; font-size: 13px; }
.feature-existing-label-grid img { max-height: 260px; object-fit: contain; cursor: zoom-in; background: #fff; }
.feature-image-comparison .image-preview-button { display: block; margin: 6px auto 0; }
.editor-table-shell { overflow-x: auto; border: 1px solid var(--line); }
.editor-data-table { width: 100%; min-width: 1600px; border-collapse: collapse; table-layout: fixed; }
.editor-data-table th { padding: 10px 8px; border-right: 1px solid var(--line); background: #f4f5f7; color: #555b63; font-weight: 500; text-align: left; }
.editor-data-table td { padding: 9px 8px; border-top: 1px solid var(--line); border-right: 1px solid var(--line); }
.editor-data-table th:last-child, .editor-data-table td:last-child { border-right: 0; }
.editor-data-table input { width: 100%; height: 30px; min-width: 90px; padding: 0 7px; }
.editor-data-table input[readonly] { background: #f7f8fa; color: #626870; }
.editor-weight-cell { display: grid; grid-template-columns: minmax(80px, 1fr) minmax(84px, .9fr); gap: 5px; }
.editor-spec-meta { display: flex; align-items: center; gap: 18px; margin: -4px 0 16px; color: #3d4248; }
.editor-spec-meta label { font-weight: 600; }
.editor-spec-meta .muted { color: #999fa6; }
.editor-setting-list { max-width: 880px; border-top: 1px solid var(--line); }
.editor-setting { min-height: 62px; display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 10px 4px; border-bottom: 1px solid var(--line); }
.editor-setting span, .editor-setting b, .editor-setting small { display: block; }
.editor-setting b { margin-bottom: 4px; font-weight: 600; }
.editor-setting small { color: #92979f; }
.editor-inventory-row { display: flex; align-items: center; gap: 24px; min-height: 62px; padding: 10px 4px; border-bottom: 1px solid var(--line); }
.editor-inventory-row > strong { min-width: 280px; font-weight: 600; }
.editor-inventory-row label { display: inline-flex; align-items: center; gap: 6px; }
.editor-expiration-control input { width: 88px; height: 30px; padding: 0 7px; }
.editor-basic-grid select, .editor-setting select { width: 100%; min-height: 30px; padding: 0 8px; }
.editor-basic-extra { padding-top: 6px; border-top: 1px solid #edf0f3; }
.editor-detail-grid { max-width: 900px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.editor-detail-grid label { display: grid; gap: 7px; color: #3f444b; }
.editor-detail-grid textarea { min-height: 130px; padding: 9px; resize: vertical; }
.editor-detail-wide { grid-column: 1 / -1; }
.editor-video-field { display: grid; gap: 8px; color: #3f444b; }
.editor-video-preview { width: 320px; min-height: 80px; border: 1px dashed #cdd2d8; background: #f7f8fa; }
.editor-video-preview:empty::before { content: "暂无视频"; min-height: 80px; display: grid; place-items: center; color: #969ba2; }
.editor-video-preview video { width: 320px; max-height: 200px; display: block; background: #111; }
.editor-video-actions { display: flex; gap: 8px; }
.editor-video-field > small { color: #92979f; }
.editor-product-properties { max-width: 1180px; display: grid; gap: 10px; margin: 0 0 10px 54px; }
.editor-product-property { position: relative; display: grid; grid-template-columns: 180px minmax(0, 1fr) 28px; gap: 10px; align-items: start; padding: 12px; border: 1px solid var(--line); background: #f7f8fa; }
.editor-property-name, .editor-property-value { width: 100%; height: 30px; padding: 0 8px; border-radius: 2px; }
.editor-property-values { display: grid; grid-template-columns: repeat(5, minmax(100px, 1fr)); gap: 8px; }
.editor-property-value.required-value { border-color: #d6b56c; }
.editor-property-remove { width: 28px; height: 28px; padding: 0; border: 0; background: transparent; color: #777d85; font-size: 20px; }
.editor-property-add { margin-left: 54px; }
.editor-panel .advanced-editor { max-width: 900px; margin-top: 28px; }
.editor-local-list { display: grid; gap: 8px; max-width: 900px; }
.editor-local-item { min-height: 58px; display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 10px 12px; border: 1px solid var(--line); background: #fff; }
.editor-local-item strong, .editor-local-item small { display: block; }
.editor-local-item small { margin-top: 5px; color: #92979f; }
.editor-action-panel { display: flex; align-items: center; gap: 16px; max-width: 900px; padding: 16px 0; }
.editor-action-panel p { margin: 0; color: #555b63; }
.editor-empty { margin: 0; padding: 20px; color: #969ba2; text-align: center; background: #f7f8fa; }
.editor-savebar { position: sticky; bottom: 0; z-index: 8; display: flex; align-items: center; justify-content: flex-end; gap: 10px; min-height: 62px; padding: 10px 24px; border-top: 1px solid var(--line); background: rgba(255,255,255,.96); box-shadow: 0 -2px 8px rgba(20, 40, 60, .05); }
.editor-impact-summary { margin-right: auto; color: #666d75; font-size: 12px; }
.editor-impact-summary::first-letter { color: #f3a51d; }

.dialog { width: min(760px, calc(100vw - 40px)); max-height: calc(100vh - 50px); padding: 0; border: 0; border-radius: 4px; box-shadow: 0 14px 50px rgba(0, 0, 0, .25); }
.dialog::backdrop { background: rgba(20, 22, 25, .46); }
.compact-dialog { width: 440px; }
.dialog-frame { display: flex; flex-direction: column; max-height: calc(100vh - 50px); }
.dialog header, .dialog footer { flex: none; display: flex; align-items: center; justify-content: space-between; padding: 14px 18px; border-bottom: 1px solid var(--line); }
.dialog footer { justify-content: flex-end; gap: 8px; border-top: 1px solid var(--line); border-bottom: 0; }
.dialog h2 { margin: 0; font-size: 17px; }
.dialog header p { margin: 3px 0 0; color: var(--muted); }
.dialog-body { overflow: auto; padding: 18px; }
.image-preview-dialog { width: min(1120px, calc(100vw - 32px)); }
.image-preview-body { display: grid; place-items: center; min-height: min(70vh, 760px); padding: 14px; background: #11151a; }
.image-preview-body img { display: block; max-width: 100%; max-height: calc(100vh - 180px); object-fit: contain; cursor: zoom-out; }
.dialog-field { display: grid; gap: 7px; }
.dialog-field > span { color: #4a4e54; }
.dialog-field input { height: 34px; padding: 0 10px; }
.dialog-field textarea { width: 100%; min-height: 320px; resize: vertical; padding: 10px; font: 12px/1.5 Consolas, monospace; }
.advanced-editor { padding-top: 14px; border-top: 1px solid var(--line); }
.advanced-editor summary { color: #4a4e54; font-weight: 600; cursor: pointer; }
.advanced-editor .dialog-field { margin-top: 12px; }
.confirm-message { margin: 4px 0; color: #34373b; line-height: 1.7; white-space: pre-line; }
.feature-dialog { width: min(680px, calc(100vw - 40px)); }
.feature-dialog__body { min-height: 150px; }
.feature-json { max-height: 56vh; margin: 0; overflow: auto; white-space: pre-wrap; word-break: break-word; color: #34373b; font: 12px/1.6 Consolas, monospace; }
.read-only-list { display: grid; gap: 8px; max-height: 56vh; overflow: auto; }
.read-only-item { padding: 10px 12px; border: 1px solid var(--line); background: #fbfbfc; }
.read-only-item p { margin: 0 0 5px; color: #4b5158; line-height: 1.55; white-space: pre-wrap; word-break: break-word; }
.read-only-item p:last-child { margin-bottom: 0; }
.read-only-item b { color: #202124; font-weight: 600; }
.feature-form { display: grid; gap: 12px; }
.feature-form__row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.feature-form label { display: grid; gap: 6px; color: #4a4e54; }
.feature-form input, .feature-form textarea, .feature-form select { width: 100%; box-sizing: border-box; min-height: 34px; padding: 6px 9px; border: 1px solid #cfd2d7; border-radius: 2px; background: #fff; }
.feature-form textarea { min-height: 150px; resize: vertical; font: 12px/1.5 Consolas, monospace; }
.feature-help { margin: 0; color: var(--muted); font-size: 12px; line-height: 1.6; }
.feature-warning { margin: 0; padding: 8px 10px; border-left: 3px solid #d89012; background: #fff8e8; color: #775113; font-size: 12px; line-height: 1.6; }
.create-product-flow { display: grid; gap: 16px; }
.create-product-source-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.create-product-upload { min-height: 168px; display: grid; place-items: center; align-content: center; gap: 7px; padding: 16px; border: 1px dashed #bfc7d1; background: #f7f9fb; color: #4a515a; cursor: pointer; }
.create-product-upload:hover { border-color: #17a45b; background: #f1fbf5; }
.create-product-upload img { width: 112px; height: 112px; object-fit: contain; background: #fff; border: 1px solid #d9dee5; }
.create-product-upload > span { font-size: 32px; line-height: 1; color: #17a45b; }
.create-product-upload small { color: #8b939d; }
.create-back-label-upload { background: #fffaf0; }
.create-back-label-upload:hover { border-color: #c98b16; background: #fff7e6; }
.create-back-label-upload > span { color: #c47d0d; }
@media (max-width: 760px) { .create-product-source-grid { grid-template-columns: 1fr; } }
.create-product-preview-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.create-product-preview-grid figure { margin: 0; min-width: 0; border: 1px solid #d9dee5; background: #fff; padding: 6px; }
.create-product-preview-grid img { display: block; width: 100%; aspect-ratio: 1; object-fit: contain; background: #f7f9fb; }
.create-product-preview-grid img { cursor: zoom-in; }
.create-product-preview-grid .image-preview-button { display: block; margin: 6px auto 0; }
.create-product-preview-grid figcaption { margin-top: 5px; color: #59616b; font-size: 12px; text-align: center; }
.create-product-media-status { margin: -7px 0 0; color: #59616b; font-size: 13px; }
.create-gallery-retry { margin-left: 10px; min-height: 32px; padding: 5px 10px; }
.create-back-label-retry { margin-left: 10px; min-height: 32px; padding: 5px 10px; }
.multi-spec-editor { margin-top: 18px; border: 1px solid #dbe2ea; padding: 14px; background: #fafcfe; }
.multi-spec-rows { display: grid; gap: 8px; }
.multi-spec-row { display: grid; grid-template-columns: 1.3fr .7fr .7fr .7fr .8fr 1.1fr 34px; gap: 8px; align-items: center; }
.multi-spec-row input, .multi-spec-row select { min-width: 0; }
@media (max-width: 900px) { .multi-spec-row { grid-template-columns: repeat(2, minmax(0, 1fr)); } .multi-spec-row .icon-button { justify-self: start; } }
.api-provider-disabled-reason { margin: 0; padding: 8px 10px; border-left: 3px solid #d92d20; background: #fff4f2; color: #a1271f; font-size: 12px; overflow-wrap: anywhere; }
.create-product-fields { display: grid; gap: 12px; }
.create-product-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.create-product-grid label { display: grid; gap: 6px; color: #4a4e54; }
.create-product-grid input, .create-product-grid textarea, .create-product-grid select { width: 100%; box-sizing: border-box; min-height: 34px; padding: 6px 9px; border: 1px solid #cfd2d7; border-radius: 2px; background: #fff; }
.create-product-grid textarea { min-height: 90px; resize: vertical; }
.create-product-wide { grid-column: 1 / -1; }
.create-product-pair { display: grid; grid-template-columns: minmax(0, 1fr) 120px; gap: 6px; }
.document-import-page { padding: 0; }
.document-import-panel { display: grid; gap: 14px; padding: 18px 30px 30px; }
.document-import-inputs { display: grid; grid-template-columns: minmax(220px, 1fr) minmax(260px, 1.4fr) auto auto; gap: 10px; align-items: end; }
.document-import-inputs label { display: grid; gap: 6px; color: #4a515a; font-size: 13px; }
.document-import-inputs input { min-height: 36px; padding: 7px 9px; border: 1px solid #cfd6df; box-sizing: border-box; }
.document-import-summary { padding: 10px 12px; border-left: 3px solid #d89012; background: #fff8e8; color: #775113; font-size: 13px; }
.document-import-rows { display: grid; gap: 10px; }
.document-import-row { display: grid; grid-template-columns: minmax(120px, .8fr) minmax(120px, 1fr) minmax(0, 2fr) minmax(0, 280px); gap: 14px; align-items: center; min-width: 0; padding: 12px; border: 1px solid #dce2e8; background: #fff; }
.document-import-row > * { min-width: 0; }
.document-import-row-heading { display: grid; gap: 7px; }
.document-import-status { width: fit-content; padding: 3px 7px; border: 1px solid #cfd6df; color: #59616b; font-size: 11px; }
.document-import-status--success { border-color: #9dd4b6; color: #167647; background: #f1fbf5; }
.document-import-status--failed { border-color: #efb0aa; color: #a1271f; background: #fff4f2; }
.document-import-status--editing { border-color: #e2bd72; color: #775113; background: #fff8e8; }
.document-import-status--running { border-color: #83b6e8; color: #145c9e; background: #eef7ff; }
.document-import-row-media { display: flex; gap: 8px; }
.document-import-row-media img { width: 72px; height: 72px; object-fit: contain; border: 1px solid #dce2e8; cursor: zoom-in; }
.document-import-row > p { margin: 0; color: #4f5862; line-height: 1.55; }
.document-import-row-actions { display: flex; width: 100%; min-width: 0; max-width: 100%; gap: 8px; align-items: center; justify-content: flex-end; flex-wrap: wrap; box-sizing: border-box; }
.document-import-row-actions .button { min-width: 84px; }
.document-import-error { grid-column: 1 / -1; justify-self: stretch; width: 100%; max-width: 100%; box-sizing: border-box; color: #b42318; line-height: 1.45; overflow-wrap: anywhere; word-break: break-word; white-space: normal; text-align: left; }
.document-import-spu { color: #167647; font-weight: 600; white-space: nowrap; }
.document-import-stage { max-width: 220px; color: #145c9e; font-weight: 600; line-height: 1.45; text-align: right; }
.document-import-row-progress { grid-column: 1 / -1; display: grid; grid-template-columns: minmax(160px, 1fr) auto; gap: 12px; align-items: center; padding-top: 10px; border-top: 1px solid #e7edf4; color: #145c9e; }
.document-import-row-progress-bar { position: relative; height: 8px; overflow: hidden; border-radius: 999px; background: #e7edf4; }
.document-import-row-progress-bar::after { content: ""; position: absolute; inset: 0; width: 38%; border-radius: inherit; background: #1677d2; animation: document-progress 1.1s ease-in-out infinite alternate; }
.document-import-row-progress strong { min-width: 190px; font-size: 13px; text-align: right; }
@keyframes document-progress { from { transform: translateX(-80%); } to { transform: translateX(240%); } }
.document-import-empty { margin: 0; padding: 28px; border: 1px dashed #cbd3dc; color: #7d8792; text-align: center; }
@media (max-width: 980px) { .document-import-inputs { grid-template-columns: 1fr; } .document-import-row { grid-template-columns: 1fr; } .document-import-row-actions { justify-content: flex-start; } .document-import-error { justify-self: start; } .document-import-error, .document-import-stage { text-align: left; } .document-import-row-progress { grid-template-columns: 1fr; } .document-import-row-progress strong { text-align: left; } }
.create-product-properties { display: grid; gap: 10px; padding-top: 14px; border-top: 1px solid #e1e4e8; }
.create-product-section-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; }
.create-product-section-head h3 { margin: 0; color: #25292e; font-size: 15px; }
.create-product-section-head p { margin: 5px 0 0; color: #7c858f; font-size: 12px; line-height: 1.6; }
.create-product-section-head > span { flex: 0 0 auto; padding-top: 2px; color: #167647; font-size: 12px; font-weight: 600; }
.create-channel-property-groups { display: grid; gap: 10px; }
.channel-property-empty { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 14px; color: #7f8892; font-size: 13px; }
.channel-property-empty { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 14px; color: #7f8892; font-size: 13px; }
.create-channel-property-groups .channel-property-group summary small { color: #7f8892; font-size: 11px; font-weight: 400; }
.create-channel-summary-actions { display: inline-flex; align-items: center; gap: 10px; }
.create-property-badge { margin-left: 7px; color: #8b939c; font-size: 10px; font-weight: 400; }
.channel-property-field > span.required .create-property-badge { color: #d64242; }
.create-property-control { min-width: 0; }
.create-property-control > input, .create-property-control > select { width: 100%; min-height: 34px; box-sizing: border-box; }
.create-property-parts { display: grid; grid-template-columns: minmax(0, 1fr) 104px; gap: 6px; }
.create-property-parts > input, .create-property-parts > select { min-width: 0; width: 100%; min-height: 34px; box-sizing: border-box; }
.feature-list { display: grid; gap: 8px; max-height: 300px; overflow: auto; }
.feature-list__item { display: grid; grid-template-columns: 48px minmax(0, 1fr) auto; gap: 10px; align-items: center; padding: 8px; border: 1px solid #e7e8eb; background: #fbfbfc; }
.feature-list__item img { width: 48px; height: 48px; object-fit: cover; background: #f2f3f6; }
.feature-list__item strong { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.feature-list__item small { color: var(--muted); }
.feature-chip { display: inline-flex; align-items: center; min-height: 22px; padding: 0 7px; border: 1px solid #d7d9dd; border-radius: 2px; color: #555b63; font-size: 12px; }
.field-note { margin: 8px 0 0; color: var(--muted); font-size: 12px; line-height: 1.5; }
.feature-result { display: grid; gap: 10px; }
.feature-result img { width: min(360px, 100%); aspect-ratio: 1; object-fit: contain; border: 1px solid #e7e8eb; background: #f8f8f8; }
.feature-image-comparison { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.feature-image-comparison figure { min-width: 0; margin: 0; }
.feature-image-comparison img { width: 100%; }
.feature-image-comparison figcaption { margin-top: 5px; color: #555b63; font-size: 12px; text-align: center; }

.loading-mask { position: fixed; inset: 0; z-index: 20; display: grid; place-content: center; justify-items: center; gap: 12px; background: rgba(255,255,255,.64); }
.loading-mask[hidden] { display: none; }
.loading-mask span { width: 30px; height: 30px; border: 3px solid #e5e5e5; border-top-color: #222; border-radius: 50%; animation: spin .7s linear infinite; }
.loading-mask p { margin: 0; color: #3f4348; }
@keyframes spin { to { transform: rotate(360deg); } }
.toast { position: fixed; right: 20px; bottom: 20px; z-index: 30; max-width: 420px; padding: 11px 15px; background: #252525; color: #fff; border-radius: 3px; opacity: 0; transform: translateY(8px); pointer-events: none; transition: .18s ease; }
.toast[data-visible="true"] { opacity: 1; transform: translateY(0); }
.toast[data-tone="error"] { background: var(--danger); }

@media (max-width: 1280px) {
  .api-provider-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .filter-grid { grid-template-columns: repeat(2, minmax(300px, 1fr)); }
  .filter-actions { grid-column: 2; }
  .feature-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .create-page-content { grid-template-columns: 1fr; }
  .create-page-form { border-right: 0; border-bottom: 1px solid var(--line); }
}

@media (max-width: 760px) {
  body[data-view="home"] .app-shell { grid-template-columns: 64px minmax(0, 1fr); }
  body[data-view="home"] .sidebar { width: 64px; padding: 10px 6px; }
  body[data-view="home"] .sidebar-brand { margin-bottom: 14px; }
  body[data-view="home"] .nav-item { justify-content: center; padding: 0; }
  body[data-view="home"] .nav-item > span:not(.nav-icon) { display: none; }
  body[data-view="home"] .nav-icon { width: 18px; }
  body[data-view="editor"] .app-shell { grid-template-columns: minmax(0, 1fr); }
  body[data-view="editor"] .sidebar { display: none; }
  body[data-view="editor"] .workspace { width: 100%; min-width: 0; }
  body[data-view="editor"] .product-editor { width: 100%; margin: 0; }
  body[data-view="editor"] .editor-route-tabs { overflow-x: auto; }
  .workspace-header { height: auto; min-height: 70px; align-items: flex-start; flex-direction: column; gap: 10px; padding: 14px; }
  body[data-view="editor"] .workspace-header { height: auto; min-height: 114px; padding: 14px; }
  .session-tools { width: 100%; flex-wrap: wrap; }
  .filter-grid { grid-template-columns: 1fr; }
  .filter-actions { grid-column: auto; justify-content: flex-end; }
  .operation-logs-page { padding: 14px; }
  .operation-logs-filter { grid-template-columns: 1fr; }
  .product-rollback-page { padding: 14px; }
  .product-rollback-header { align-items: stretch; flex-direction: column; }
  .product-rollback-table { min-width: 760px; }
  .api-settings-page { padding: 14px; }
  .dashboard-page { padding: 14px 12px 24px; }
  .dashboard-header { align-items: flex-start; flex-direction: column; }
  .dashboard-header h2 { font-size: 20px; }
  .dashboard-health { min-height: 0; flex-wrap: wrap; padding: 12px 14px; }
  #dashboardHealthDetail { width: 100%; padding-left: 18px; }
  .dashboard-command-strip { grid-template-columns: 1fr 1fr; }
  .dashboard-command-strip article:nth-child(2) { border-right: 0; }
  .dashboard-command-strip article:nth-child(-n+2) { border-bottom: 1px solid #e7eaed; }
  .dashboard-kpis { grid-template-columns: 1fr 1fr; }
  .dashboard-kpis article:nth-child(2) { border-right: 0; }
  .dashboard-kpis article:nth-child(-n+2) { border-bottom: 1px solid #e7eaed; }
  .dashboard-layout { grid-template-columns: 1fr; grid-template-areas: "product" "website" "activity" "providers"; }
  .api-settings-header, .api-provider-heading, .api-settings-actions { align-items: stretch; flex-direction: column; }
  .api-provider-list { grid-template-columns: minmax(0, 1fr); }
  .api-provider-section { padding: 16px 0; }
  .api-settings-grid { grid-template-columns: 1fr; }
  .api-settings-wide { grid-column: auto; }
  .api-settings-actions > div { justify-content: flex-end; flex-wrap: wrap; }
  .action-bar { align-items: flex-start; flex-direction: column; }
  .action-buttons { width: 100%; flex-wrap: wrap; }
  .feature-groups { grid-template-columns: 1fr; }
  .feature-form__row { grid-template-columns: 1fr; }
  .feature-barcode-generated { grid-template-columns: 1fr; }
  .feature-barcode-channel-entry, .barcode-channel-property-notice { align-items: stretch; flex-direction: column; }
  .feature-barcode-channel-entry .button, .barcode-channel-property-notice .button { width: 100%; white-space: normal; }
  .barcode-channel-property-notice { margin-left: 0; }
  .create-product-grid { grid-template-columns: 1fr; }
  .create-product-wide { grid-column: auto; }
  .create-product-section-head { flex-direction: column; gap: 8px; }
  .feature-image-comparison { grid-template-columns: 1fr; }
  .batch-review-detail-gallery-grid, .batch-review-detail-gallery-grid--original { grid-template-columns: 1fr; }
  .batch-review-change { grid-template-columns: 104px minmax(0, 1fr); }
  .batch-review-change > span + span { grid-column: 2; border-top: 1px solid #e8eaed; border-left: 0; }
  .batch-review-change--head { display: none; }
  .batch-review-property-fields { grid-template-columns: minmax(0, 1fr); }
  .batch-review-property-channel-identity { align-items: stretch; flex-direction: column; }
  .batch-review-channel-category { width: 100%; }
  .batch-review-property-field, .batch-review-property-field:nth-child(-n+2) { border-top: 1px solid #edf0f2; }
  .batch-review-property-field:first-child { border-top: 0; }
  .batch-review-property-field:nth-child(even) { border-left: 0; }
  .create-page-header { align-items: flex-start; flex-direction: column; padding: 14px; }
  .create-page-form, .created-products { padding: 16px 14px; }
  .created-product-item { grid-template-columns: 56px minmax(0, 1fr); }
  .created-product-item img, .created-product-image-placeholder { width: 56px; height: 56px; }
  .created-product-image-wrap { width: 56px; height: 56px; }
  .created-product-item time { grid-column: 2; text-align: left; }
  .created-product-delete { grid-column: 2; justify-self: start; }
  .batch-task-panel { grid-template-columns: 1fr auto; }
  .batch-task-progress-wrap { grid-column: 1 / -1; grid-row: 2; }
  .batch-task-count { grid-column: 2; grid-row: 1; }
  .editor-page-head { padding: 10px 14px; }
  .editor-page-head { align-items: flex-start; flex-wrap: wrap; }
  .editor-page-actions { width: 100%; margin-left: 42px; }
  .editor-tabs { gap: 24px; padding: 0 16px; }
  .editor-tabs { width: 100%; max-width: 100vw; }
  .editor-panel { padding: 16px 14px 74px; }
  .editor-section-title { align-items: flex-start; flex-direction: column; gap: 5px; }
  .editor-field-row { grid-template-columns: 1fr; gap: 6px; }
  .editor-field-label, .editor-choice-row legend { text-align: left; }
  .editor-name-control { grid-template-columns: minmax(0, 1fr) max-content; }
  .editor-hint, .editor-subsection-title, .channel-category-panel, .channel-property-groups, .editor-image-grid, .editor-image-adder, .special-picture-group { margin-left: 0; }
  .channel-category-panel { grid-template-columns: 1fr; }
  .channel-property-grid { grid-template-columns: 1fr; }
  .editor-image-tile, .editor-upload-tile { flex-basis: 96px; width: 96px; height: 96px; }
  .editor-image-adder { grid-template-columns: minmax(0, 1fr) auto; }
  .special-picture-adder { grid-template-columns: minmax(0, 1fr) auto auto; }
  .editor-inventory-row { align-items: flex-start; flex-direction: column; gap: 10px; }
  .editor-inventory-row > strong { min-width: 0; }
  .editor-detail-grid { grid-template-columns: 1fr; }
  .editor-product-properties, .editor-property-add { margin-left: 0; }
  .editor-product-property { grid-template-columns: 1fr 28px; }
  .editor-property-name { grid-column: 1 / -1; }
  .editor-property-values { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .editor-detail-wide { grid-column: auto; }
  .editor-form { padding-bottom: 70px; }
  .editor-savebar { min-height: 62px; padding: 10px 14px; }
  .editor-impact-summary { max-width: 180px; line-height: 1.4; }
}
