:root {
  --ink: #101426;
  --muted: #747b94;
  --cyan: #48e7ff;
  --purple: #855cff;
  --pink: #ec5cff;
  --line: #e6e7f0;
  --paper: #f3f5fb;
}

* { box-sizing: border-box; }
body { margin: 0; color: var(--ink); font-family: Inter, "PingFang SC", "Microsoft YaHei", sans-serif; }
button, input, select { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }

.survey-page {
  min-height: 100vh;
  background:
    linear-gradient(rgba(95, 110, 255, .055) 1px, transparent 1px),
    linear-gradient(90deg, rgba(95, 110, 255, .055) 1px, transparent 1px),
    radial-gradient(circle at 17% 25%, rgba(80, 75, 255, .34), transparent 29%),
    radial-gradient(circle at 78% 82%, rgba(0, 211, 255, .15), transparent 27%),
    #070817;
  background-size: 52px 52px, 52px 52px, auto, auto, auto;
  display: grid;
  place-items: center;
  padding: 42px 24px;
  overflow-x: hidden;
}
.survey-shell { width: min(1100px, 100%); display: grid; grid-template-columns: 1fr 520px; gap: 80px; align-items: center; }
.intro { color: white; position: relative; }
.brand { font-weight: 700; letter-spacing: .16em; font-size: 15px; color: #f1f4ff; margin-bottom: 70px; display: flex; align-items: center; gap: 9px; }
.brand i { width: 22px; height: 22px; display: inline-block; border: 2px solid var(--cyan); border-radius: 50% 50% 46% 54%; box-shadow: 0 0 18px rgba(72,231,255,.6); position: relative; }
.brand i::after { content: ""; position: absolute; width: 3px; height: 3px; border-radius: 50%; background: var(--pink); left: 3px; top: 5px; box-shadow: 9px 5px 0 var(--cyan); }
.brand b { color: var(--cyan); font-weight: 800; }
.brand.dark { color: #343852; margin: 0 0 26px; }
.brand.dark i { border-color: var(--purple); box-shadow: none; }
.brand.dark b { color: var(--purple); }
.eyebrow { color: var(--cyan); font-size: 11px; letter-spacing: .19em; font-weight: 700; }
.intro h1 { font-size: clamp(42px, 5vw, 67px); line-height: 1.08; letter-spacing: -.045em; margin: 12px 0 24px; }
.intro h1 span { background: linear-gradient(90deg, var(--cyan), #b88cff 55%, var(--pink)); -webkit-background-clip: text; background-clip: text; color: transparent; }
.lead { max-width: 500px; color: #aeb9b4; line-height: 1.9; font-size: 16px; }
.promise { margin-top: 48px; display: flex; align-items: center; gap: 14px; color: #89958f; font-size: 13px; }
.promise > span { display: grid; place-items: center; width: 38px; height: 38px; border: 1px solid rgba(72,231,255,.28); border-radius: 50%; color: var(--cyan); background: rgba(72,231,255,.06); }
.promise p { margin: 0; line-height: 1.7; }
.promise strong { color: #dce3df; }
.orbit { position: absolute; width: 280px; height: 280px; border: 1px solid rgba(72,231,255,.14); border-radius: 50%; left: -92px; top: 86px; pointer-events: none; animation: spin 18s linear infinite; }
.orbit::before, .orbit::after { content: ""; position: absolute; inset: 34px; border: 1px dashed rgba(156,106,255,.15); border-radius: 50%; }
.orbit::after { inset: 78px; border-style: solid; }
.orbit span { position: absolute; right: 19px; top: 48px; width: 35px; height: 35px; display: grid; place-items: center; border-radius: 50%; background: linear-gradient(135deg, var(--cyan), var(--purple)); color: white; font: 700 9px/1 sans-serif; box-shadow: 0 0 26px rgba(72,231,255,.5); }
@keyframes spin { to { transform: rotate(360deg); } }
.card { background: rgba(255,255,255,.96); border: 1px solid rgba(255,255,255,.8); border-radius: 24px; }
.form-card { padding: 38px 48px 30px; box-shadow: 0 35px 100px rgba(0,0,0,.45), 0 0 0 1px rgba(105,116,255,.18); position: relative; }
.form-card::before { content: ""; position: absolute; height: 3px; left: 38px; right: 38px; top: 0; background: linear-gradient(90deg, transparent, var(--cyan), var(--purple), var(--pink), transparent); border-radius: 0 0 4px 4px; }
.step { display: flex; gap: 10px; align-items: center; color: #98a19d; font-size: 11px; letter-spacing: .12em; }
.step span:first-child { color: var(--purple); font-weight: 700; }
.step i { width: 40px; height: 1px; background: #d8dedb; }
.form-card h2 { font-size: 30px; margin: 20px 0 6px; letter-spacing: -.03em; }
.sub, .login-card > p, header p { color: var(--muted); margin: 0 0 26px; font-size: 14px; }
label, legend { display: block; font-size: 13px; font-weight: 600; }
form > label { margin-bottom: 17px; }
label em, legend em { color: var(--purple); font-style: normal; }
input, select {
  width: 100%; margin-top: 8px; padding: 12px 14px; border: 1px solid #dce2df; border-radius: 9px;
  background: #fafcfb; outline: none; color: var(--ink); transition: .2s;
}
input:focus, select:focus { border-color: var(--purple); box-shadow: 0 0 0 3px rgba(133,92,255,.12); background: white; }
input::placeholder { color: #aeb6b2; }
fieldset { border: 0; padding: 0; margin: 0 0 20px; }
.choices { display: grid; grid-template-columns: 1fr 1fr; gap: 9px; margin-top: 10px; }
.choices label { cursor: pointer; }
.choices input { position: absolute; opacity: 0; pointer-events: none; }
.choices span { display: block; padding: 11px 10px; border: 1px solid #dce2df; border-radius: 8px; font-weight: 500; text-align: center; color: #57615c; transition: .15s; }
.choices input:checked + span { border-color: var(--purple); background: linear-gradient(135deg, rgba(72,231,255,.09), rgba(133,92,255,.1)); color: #5535bc; box-shadow: inset 0 0 0 1px var(--purple); }
.choices input:focus-visible + span { outline: 3px solid rgba(133,92,255,.2); }
form > button, .success button {
  width: 100%; border: 0; border-radius: 10px; padding: 14px 18px; background: linear-gradient(105deg, #35dbff, #785cff 58%, #c856f4); color: white;
  display: flex; justify-content: center; align-items: center; gap: 14px; font-weight: 800; cursor: pointer; transition: .2s;
  box-shadow: 0 10px 25px rgba(107,83,237,.24);
}
form > button:hover, .success button:hover { filter: brightness(1.08); transform: translateY(-1px); box-shadow: 0 13px 30px rgba(107,83,237,.34); }
form > button:disabled { opacity: .6; cursor: wait; transform: none; }
form > button b { font-size: 20px; font-weight: 400; }
.form-note { text-align: center; color: #a3aba7; font-size: 11px; margin: 14px 0 0; }
.field-note { display: block; margin-top: 6px; color: #8d92a1; font-size: 10px; font-weight: 400; }
.deal-direction-field { margin: 14px 0 0; padding: 0; border: 0; }
.deal-direction-field legend { margin-bottom: 7px; color: var(--muted); font-size: 12px; font-weight: 700; }
.deal-direction-choices { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 7px; }
.deal-direction-choices label { display: flex; grid-template-columns: none; align-items: center; gap: 7px; min-width: 0; margin: 0; padding: 9px 10px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface-subtle); cursor: pointer; }
.deal-direction-choices label:has(input:checked) { border-color: #9eb2ff; background: #eef2ff; color: var(--primary); }
.deal-direction-choices input { width: 16px; min-height: 16px; margin: 0; }
.deal-direction-choices span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
@media (max-width: 560px) { .deal-direction-choices { grid-template-columns: 1fr; } }
.success { text-align: center; padding: 70px 10px 30px; }
.success-icon { width: 64px; height: 64px; display: grid; place-items: center; margin: 0 auto 20px; border-radius: 50%; background: linear-gradient(135deg, var(--cyan), var(--purple)); color: white; font-size: 30px; box-shadow: 0 10px 30px rgba(110,89,255,.3); }
.success p { color: var(--muted); margin-bottom: 0; }

.admin-page { min-height: 100vh; background: radial-gradient(circle at 80% 0, rgba(133,92,255,.09), transparent 28%), var(--paper); padding: 52px 28px; }
.admin-page main { max-width: 1200px; margin: auto; }
.login-card { width: min(440px, 100%); margin: 10vh auto; padding: 42px; box-shadow: 0 20px 60px rgba(30,45,38,.08); }
.login-card h1 { font-size: 32px; margin: 0 0 8px; }
.login-card .error { color: #c83a3a; font-size: 13px; min-height: 20px; }
#dashboard > header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 32px; }
header h1 { margin: 6px 0; font-size: 35px; letter-spacing: -.035em; }
.text-button { border: 1px solid #d6ddda; background: white; border-radius: 8px; padding: 9px 14px; color: #59645f; cursor: pointer; }
.stats { display: grid; grid-template-columns: 250px 1fr; gap: 18px; margin-bottom: 18px; }
.stat { padding: 25px 28px; display: grid; grid-template-columns: 1fr auto; align-items: baseline; }
.stat span { grid-column: 1 / -1; color: var(--muted); font-size: 13px; }
.stat strong { font-size: 42px; letter-spacing: -.05em; margin-top: 6px; }
.stat small { color: #8c9691; }
.tools { padding: 22px; display: flex; align-items: center; gap: 12px; }
.tools input { margin: 0; }
.export { white-space: nowrap; padding: 13px 18px; border-radius: 9px; background: var(--ink); color: white; text-decoration: none; font-size: 13px; font-weight: 600; }
.table-card { overflow: hidden; }
.table-wrap { overflow-x: auto; }
table { width: 100%; border-collapse: collapse; font-size: 13px; }
th { text-align: left; color: #77817c; font-weight: 500; background: #fafbfa; padding: 15px 20px; border-bottom: 1px solid var(--line); white-space: nowrap; }
td { padding: 18px 20px; border-bottom: 1px solid #edf0ee; vertical-align: top; }
.tag { display: inline-block; background: #f0edff; color: #6145bd; padding: 4px 8px; border-radius: 5px; white-space: nowrap; }
.purpose { min-width: 220px; line-height: 1.6; }
.empty { padding: 80px; text-align: center; color: #9aa39f; }
.pager { display: flex; justify-content: space-between; align-items: center; padding: 14px 20px; color: #89938e; font-size: 12px; }
.pager button { border: 1px solid #dce2df; background: white; padding: 7px 12px; cursor: pointer; }
.pager button:first-child { border-radius: 6px 0 0 6px; }
.pager button:last-child { border-radius: 0 6px 6px 0; }
.pager button:disabled { color: #c0c7c3; cursor: default; }

@media (max-width: 850px) {
  .survey-page { padding: 32px 16px; display: block; }
  .survey-shell { grid-template-columns: 1fr; gap: 35px; }
  .brand { margin-bottom: 32px; }
  .intro h1 { font-size: 42px; }
  .lead { font-size: 14px; }
  .promise { display: none; }
  .form-card { padding: 32px 24px 24px; }
  .stats { grid-template-columns: 1fr; }
}

.admin-page .portrait-config-form { display: grid; gap: 16px; }
.admin-page .portrait-config-anchors { position: sticky; z-index: 7; top: 0; display: flex; flex-wrap: wrap; gap: 6px; padding: 10px 16px; border-bottom: 1px solid var(--line); background: rgba(255,255,255,.96); backdrop-filter: blur(8px); }
.admin-page .portrait-config-anchors a { padding: 7px 10px; border-radius: 7px; color: var(--muted); font-size: 12px; font-weight: 700; text-decoration: none; }
.admin-page .portrait-config-anchors a:hover { background: var(--brand-soft); color: var(--brand); }
.admin-page .portrait-config-form fieldset { scroll-margin-top: 64px; }
.admin-page .portrait-config-form fieldset { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin: 0; padding: 16px; border: 1px solid var(--line); border-radius: 10px; background: #fafbfc; }
.admin-page .portrait-config-form legend { padding: 0 8px; color: var(--text); font-weight: 700; }
.admin-page .portrait-config-form label { display: grid; gap: 6px; color: var(--muted); font-size: 12px; }
.admin-page .portrait-config-form .wide-field { grid-column: 1 / -1; }
.admin-page .portrait-config-form .checkbox-label { display: flex; align-items: center; gap: 8px; min-height: 38px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 8px; background: white; color: var(--text); font-weight: 600; cursor: pointer; }
.admin-page .portrait-config-form input[type="checkbox"] { -webkit-appearance: checkbox; appearance: auto; flex: 0 0 16px; width: 16px; height: 16px; min-height: 16px; margin: 0; padding: 0; border: 0; border-radius: 3px; box-shadow: none; accent-color: var(--brand); }
.admin-page .portrait-switch-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
.admin-page .portrait-employee-picker { display: grid; gap: 6px; color: var(--muted); font-size: 12px; }
.admin-page .portrait-employee-options { display: flex; flex-wrap: wrap; gap: 8px; min-height: 48px; padding: 9px; border: 1px solid var(--line); border-radius: 8px; background: white; }
.admin-page .portrait-config-form .portrait-employee-option { display: flex; grid-template-columns: none; align-items: center; gap: 8px; min-width: 170px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 7px; background: var(--surface-subtle); color: var(--text); cursor: pointer; }
.admin-page .portrait-config-form .portrait-employee-option:has(input:checked) { border-color: var(--brand-border); background: var(--brand-soft); }
.admin-page .portrait-config-form .portrait-employee-option.inactive { opacity: .62; cursor: not-allowed; }
.admin-page .portrait-employee-option input { width: auto; margin: 0; }
.admin-page .portrait-employee-option span { display: grid; gap: 2px; }
.admin-page .portrait-employee-option small,.admin-page .portrait-employee-picker>small { color: var(--muted); font-size: 11px; }
.admin-page .portrait-config-form > .primary-button:last-child { position: sticky; z-index: 8; bottom: 12px; justify-self: end; min-width: 150px; box-shadow: 0 8px 22px rgba(49,86,211,.22); }
.admin-page .portrait-source-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.admin-page .portrait-source-grid label { display: grid; grid-template-columns: auto 1fr; align-items: center; gap: 6px; padding: 10px; border: 1px solid var(--line); border-radius: 8px; background: white; color: var(--text); }
.admin-page .portrait-source-grid input { width: auto; }
.admin-page .portrait-source-grid small { grid-column: 2; color: var(--muted); }
.admin-page .portrait-attribute-rows { display: grid; gap: 8px; }
.admin-page .portrait-attribute-row { display: grid; grid-template-columns: minmax(140px, .5fr) minmax(240px, 1fr) auto; gap: 8px; }
.admin-page .portrait-boundary { display: flex; flex-wrap: wrap; gap: 8px 16px; align-items: center; margin-bottom: 14px; padding: 12px 14px; border: 1px solid #f2d49b; border-radius: 9px; background: #fff9ed; color: #84550a; }
.admin-page .portrait-summary-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin-bottom: 18px; }
.admin-page .portrait-summary-grid span { display: grid; gap: 5px; min-height: 86px; padding: 14px; border: 1px solid var(--line); border-radius: 9px; background: #fafbfc; color: var(--muted); font-size: 12px; }
.admin-page .portrait-summary-grid strong { color: var(--text); font-size: 17px; }
.admin-page .portrait-summary-grid small { font-size: 11px; }
.admin-page .portrait-sales-output { margin: 0 0 18px; padding: 16px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface); }
.admin-page .portrait-sales-output > h4 { margin: 0 0 12px; }
.admin-page .portrait-sales-output-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; }
.admin-page .portrait-sales-output-grid article { min-width: 0; padding: 12px; border: 1px solid var(--line); border-radius: 9px; background: var(--surface-subtle); }
.admin-page .portrait-sales-output-grid span { display: block; margin-bottom: 6px; color: var(--muted); font-size: 12px; }
.admin-page .portrait-sales-output-grid strong { display: block; color: var(--text); font-size: 14px; line-height: 1.55; overflow-wrap: anywhere; }
.admin-page .portrait-two-column { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.admin-page .portrait-two-column > section,
.admin-page #detailAiPortrait > section { margin: 14px 0; padding: 15px; border: 1px solid var(--line); border-radius: 10px; background: white; }
.admin-page .portrait-attribute,
.admin-page .portrait-evidence { display: grid; gap: 4px; padding: 10px 0; border-bottom: 1px solid var(--line); }
.admin-page .portrait-attribute:last-child,
.admin-page .portrait-evidence:last-child { border-bottom: 0; }
.admin-page .portrait-attribute span,
.admin-page .portrait-evidence span { color: var(--text); }
.admin-page .portrait-attribute small,
.admin-page .portrait-evidence small { color: var(--muted); }
.admin-page .portrait-section-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; }
.admin-page .portrait-talk-entry-summary { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 12px; padding: 12px; border-radius: 8px; background: var(--surface-subtle); }
.admin-page .portrait-talk-entry-summary strong { color: var(--brand); white-space: nowrap; }
.admin-page .portrait-talk-entry-summary p { overflow: hidden; margin: 0; color: var(--text-secondary); text-overflow: ellipsis; white-space: nowrap; }
.admin-page .portrait-collapsible { margin: 14px 0; border: 1px solid var(--line); border-radius: 10px; background: white; }
.admin-page .portrait-collapsible > summary { padding: 14px 15px; color: var(--text); font-weight: 700; cursor: pointer; }
.admin-page .portrait-collapsible > div { padding: 0 15px 15px; }
.admin-page .portrait-meta { margin-top: 16px; padding-top: 12px; border-top: 1px solid var(--line); color: var(--muted); font-size: 12px; }
.admin-page .portrait-talk-summary { display: flex; flex-wrap: wrap; gap: 8px 20px; margin-bottom: 14px; padding: 12px 14px; border: 1px solid var(--line); border-radius: 9px; background: #f8fafc; }
.admin-page .portrait-talk-track-list { display: grid; gap: 12px; }
.admin-page .portrait-talk-track { padding: 15px; border: 1px solid var(--line); border-radius: 10px; background: white; }
.admin-page .portrait-talk-track textarea { width: 100%; min-height: 92px; margin: 8px 0; resize: vertical; }
.admin-page .portrait-talk-track p { margin: 7px 0; color: var(--muted); font-size: 13px; }
.admin-page .portrait-talk-track .portrait-warning { color: #9b5c13; }

@media (max-width: 850px) {
  .admin-page .portrait-config-form fieldset,
  .admin-page .portrait-source-grid,
  .admin-page .portrait-summary-grid,
  .admin-page .portrait-two-column,
  .admin-page .portrait-sales-output-grid { grid-template-columns: 1fr; }
  .admin-page .portrait-attribute-row { grid-template-columns: 1fr; }
  .admin-page .portrait-switch-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 560px) {
  .choices { grid-template-columns: 1fr; }
  .admin-page { padding: 28px 14px; }
  .tools { flex-direction: column; align-items: stretch; }
  .export { text-align: center; }
  header h1 { font-size: 29px; }
  .admin-page .portrait-switch-grid { grid-template-columns: 1fr; }
}

/* 客户登记页：手机优先的精简布局 */
.survey-page {
  display: block;
  min-height: 100svh;
  padding: 24px 16px 32px;
  background:
    radial-gradient(circle at 50% -10%, rgba(108, 91, 255, .34), transparent 38%),
    linear-gradient(rgba(92, 104, 255, .045) 1px, transparent 1px),
    linear-gradient(90deg, rgba(92, 104, 255, .045) 1px, transparent 1px),
    #080918;
  background-size: auto, 40px 40px, 40px 40px, auto;
}
.survey-shell {
  width: min(520px, 100%);
  margin: 0 auto;
  display: block;
}
.intro { text-align: center; }
.intro .brand {
  width: max-content;
  margin: 0 auto 23px;
  font-size: 13px;
}
.intro .brand i { width: 20px; height: 20px; }
.intro .eyebrow { margin: 0 0 8px; font-size: 9px; }
.intro h1 {
  margin: 0;
  font-size: clamp(30px, 9vw, 40px);
  line-height: 1.12;
  letter-spacing: -.04em;
}
.intro h1 br { display: none; }
.intro h1 span { margin-left: .15em; }
.intro .lead {
  margin: 10px auto 20px;
  font-size: 13px;
  line-height: 1.6;
  color: #9ea6bf;
}
.orbit, .promise { display: none; }
.form-card {
  padding: 24px 20px 20px;
  border-radius: 19px;
  box-shadow: 0 24px 70px rgba(0,0,0,.38), 0 0 0 1px rgba(110,101,255,.14);
}
.form-card::before { left: 26px; right: 26px; }
.form-card h2 { margin: 15px 0 5px; font-size: 22px; }
.form-card .sub { margin-bottom: 20px; font-size: 12px; }
.form-card .step { font-size: 9px; }
.form-card form > label { margin-bottom: 15px; }
.form-card label, .form-card legend { font-size: 13px; }
.form-card input, .form-card select {
  min-height: 48px;
  margin-top: 7px;
  padding: 12px 13px;
  font-size: 16px;
}
.form-card fieldset { margin-bottom: 18px; }
.choices {
  grid-template-columns: 1fr 1fr;
  gap: 8px;
  margin-top: 9px;
}
.choices span {
  min-height: 46px;
  padding: 8px 6px;
  display: grid;
  place-items: center;
  font-size: 12px;
  line-height: 1.35;
}
.form-card form > button {
  min-height: 50px;
  padding: 13px 18px;
  font-size: 15px;
}
.form-note { margin-top: 12px; font-size: 10px; }
.wechat-login { padding: 17px 4px 4px; text-align: center; }
.wechat-mark, .wechat-avatar {
  display: grid;
  place-items: center;
  background: linear-gradient(135deg, #27db82, #08b965);
  color: white;
}
.wechat-mark {
  width: 50px;
  height: 50px;
  margin: 0 auto 13px;
  border-radius: 16px;
  font-size: 19px;
  font-weight: 800;
  box-shadow: 0 10px 25px rgba(14,190,102,.22);
}
.wechat-login > strong { display: block; font-size: 17px; }
.wechat-login p { margin: 7px 0 17px; color: var(--muted); font-size: 12px; }
.wechat-login a {
  min-height: 49px;
  display: grid;
  place-items: center;
  border-radius: 10px;
  background: linear-gradient(105deg, #25d77d, #08b963);
  color: white;
  text-decoration: none;
  font-size: 15px;
  font-weight: 700;
  box-shadow: 0 10px 24px rgba(14,190,102,.2);
}
.wechat-login small { display: block; margin-top: 12px; color: #9ca2b3; font-size: 10px; }
.wechat-user {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0 0 15px;
  padding: 10px 12px;
  border: 1px solid #dceee5;
  border-radius: 10px;
  background: #f4fbf7;
}
.wechat-avatar { width: 34px; height: 34px; border-radius: 10px; flex: 0 0 auto; font-size: 12px; font-weight: 800; }
.wechat-user div { min-width: 0; }
.wechat-user small { display: block; margin-bottom: 2px; color: #779083; font-size: 9px; }
.wechat-user strong { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; color: #263b30; }

@media (min-width: 700px) {
  .survey-page { padding-top: 38px; padding-bottom: 48px; }
  .intro .lead { margin-bottom: 24px; }
  .form-card { padding: 30px 34px 25px; }
}

/* 极简客户登记页 */
.survey-page {
  padding: 16px;
  background: #f6f7fb;
}
.survey-shell { width: min(480px, 100%); }
.form-card {
  padding: 20px;
  border: 1px solid #e7e8ef;
  border-radius: 14px;
  box-shadow: none;
}
.form-card::before { display: none; }
.form-card input, .form-card select {
  border-color: #e1e3eb;
  background: #fafbfc;
  border-radius: 8px;
}
.choices span {
  border-color: #e1e3eb;
  border-radius: 8px;
  background: #fff;
}
.choices input:checked + span {
  border-color: #6c5ce7;
  background: #f5f3ff;
  color: #5141bd;
  box-shadow: none;
}
.form-card form > button {
  background: #6558dc;
  box-shadow: none;
  border-radius: 8px;
}
.form-card form > button:hover {
  background: #594bcf;
  box-shadow: none;
}
.wechat-login { padding: 16px 0 2px; }
.wechat-mark {
  width: 46px;
  height: 46px;
  border-radius: 12px;
  box-shadow: none;
}
.wechat-login a { box-shadow: none; border-radius: 8px; }
.wechat-user { border-radius: 8px; }

.login-page {
  min-height: 100svh;
  display: grid;
  place-items: center;
  background:
    radial-gradient(circle at 16% 10%, rgba(169, 200, 255, .45), transparent 32%),
    radial-gradient(circle at 86% 20%, rgba(190, 219, 255, .5), transparent 24%),
    radial-gradient(circle at 48% 96%, rgba(136, 183, 255, .32), transparent 24%),
    linear-gradient(180deg, rgba(255, 255, 255, .9), rgba(237, 244, 252, 1) 70%);
  background-repeat: no-repeat;
  background-size: auto, auto, auto, auto;
}
.login-page .survey-shell { margin: 0 auto; }
.login-page .form-card {
  width: min(520px, 100%);
  padding: 34px 26px 30px;
  border-radius: 28px;
  border: 1px solid rgba(96, 113, 255, .12);
  box-shadow: 0 20px 64px rgba(22, 34, 82, .10);
}
.login-page .wechat-login { padding: 0; }
.login-page .wechat-mark { margin-bottom: 20px; }
.login-page .wechat-login a { width: 100%; }
.login-hero {
  display: grid;
  justify-items: center;
  text-align: center;
  gap: 0;
}
.login-hero h1 {
  margin: 110px 0 0;
  color: #163a73;
  font-size: clamp(28px, 5vw, 42px);
  line-height: 1.15;
  letter-spacing: -.04em;
}
.login-copy {
  margin: 20px 0 0;
  color: #8a93a7;
  font-size: 15px;
}
.login-page #wechatLogin {
  display: inline-flex;
  justify-content: center;
  align-items: center;
  min-height: 62px;
  width: min(440px, 100%);
  margin-top: 34px;
  border-radius: 16px;
  background: linear-gradient(105deg, #40d27e, #30c46d 56%, #2bb466);
  color: #fff;
  text-decoration: none;
  font-size: 17px;
  font-weight: 800;
  box-shadow: 0 16px 28px rgba(32, 184, 95, .2);
}
.login-privacy {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: 14px;
  width: min(440px, 100%);
  margin-top: 34px;
  color: #99a2b6;
}
.login-privacy-line {
  height: 1px;
  background: #d8deea;
}
.login-privacy-badge {
  display: grid;
  place-items: center;
  width: 18px;
  height: 18px;
  border: 1px solid #98a2b5;
  border-radius: 50%;
  color: #98a2b5;
  font-size: 11px;
  line-height: 1;
}
.login-note {
  margin: 10px 0 0;
  color: #929bb1;
  font-size: 13px;
}

/* 移动端销售后台 */
.admin-page {
  min-height: 100vh;
  padding: 18px 14px 36px;
  background: #f5f6f9;
}
.admin-page [data-page-section][hidden] { display: none !important; }
.admin-page main { width: min(620px, 100%); }
.admin-page .card { border: 1px solid #e7e8ee; border-radius: 12px; box-shadow: none; }
.admin-page .login-card {
  width: 100%;
  margin: 18vh auto 0;
  padding: 24px 20px;
}
.admin-page .login-card h1 { font-size: 24px; }
.admin-page .login-card > p { margin-bottom: 24px; }
.admin-page .login-card form > button { background: #5c52d9; box-shadow: none; }
.admin-header { display: flex; align-items: center; justify-content: space-between; margin: 0 2px 12px; }
.admin-header[hidden] { display: none; }
.admin-title { display: flex; align-items: baseline; flex-wrap: wrap; gap: 7px 12px; min-width: 0; }
.admin-header h1 { margin: 0; font-size: 25px; }
.admin-header p { margin: 0; font-size: 12px; }
.admin-header-tools { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 7px; }
.global-search { display: grid; grid-template-columns: minmax(120px, 190px) auto; align-items: stretch; margin: 0; }
.global-search[hidden] { display: none !important; }
.global-search input { min-height: 36px; margin: 0; padding: 7px 10px; border: 1px solid #dfe1e9; border-radius: 8px 0 0 8px; background: #fff; }
.global-search button, .header-tool, .admin-header .text-button { min-height: 36px; margin: 0; padding: 7px 10px; border: 1px solid #dfe1e9; border-radius: 8px; background: #fff; color: #5148c7; font-weight: 700; cursor: pointer; }
.global-search button { border-left: 0; border-radius: 0 8px 8px 0; }
.current-account { color: #777c8d; font-size: 11px; white-space: nowrap; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.admin-nav { display:flex; gap:6px; overflow:auto; margin:0 0 16px; padding-bottom:2px; }
.admin-nav button { border:0; background:transparent; color:#74798a; padding:9px 13px; border-radius:9px; white-space:nowrap; cursor:pointer; }
.admin-nav button.active, .admin-nav button:hover { background:#ecebff; color:#5148c7; font-weight:700; }
.metric-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 9px; margin-bottom: 12px; }
.metric-grid article { padding: 14px; border-radius: 11px; background: white; border: 1px solid #e7e8ee; }
.metric-grid span { display: block; color: #808596; font-size: 11px; }
.metric-grid strong { display: block; margin-top: 5px; font-size: 27px; letter-spacing: -.03em; }
.operations-grid { display: grid; grid-template-columns: 1fr; gap: 10px; margin-bottom: 12px; }
.operations-card { min-width: 0; padding: 15px; }
.operations-card h2 { margin: 0 0 13px; font-size: 15px; }
.operations-card h2 small { color: #9297a6; font-size: 10px; font-weight: 400; }
.operations-funnel-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 12px; margin-bottom: 13px; }
.operations-funnel-head h2 { margin: 0; }
.funnel-controls { display: flex; align-items: flex-end; flex-wrap: wrap; gap: 7px; }
.funnel-controls label { display: grid; gap: 3px; color: #777d8d; font-size: 10px; }
.funnel-controls input { min-height: 34px; padding: 5px 8px; border: 1px solid #dde0e8; border-radius: 7px; background: #fff; }
.funnel-controls button, .funnel-controls .export { min-height: 34px; padding: 7px 10px; }
.funnel-row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; }
.funnel-step { position: relative; min-height: 70px; padding: 10px; border: 1px solid #e5e3f5; border-radius: 9px; background: #faf9ff; color: #575d6d; text-align: left; }
.funnel-step strong { display: block; margin-top: 5px; color: #24283a; font-size: 22px; }
.funnel-step small { display: block; margin-top: 3px; color: #969aaa; }
.operations-list { display: grid; gap: 8px; }
.operations-list button, .operations-list article { width: 100%; padding: 10px 11px; border: 1px solid #e7e8ee; border-radius: 8px; background: #fafbfc; color: #333749; text-align: left; }
.operations-list button { cursor: pointer; }
.operations-list div { display: flex; justify-content: space-between; gap: 10px; }
.operations-list small { display: block; margin-top: 4px; color: #858a9a; }
.trend-table { overflow-x: auto; }
.trend-table table { min-width: 620px; }
.trend-table th, .trend-table td { padding: 9px 10px; }
.trend-card-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.trend-card-head > div:first-child { display: flex; align-items: baseline; gap: 8px; min-width: 0; }
.trend-card-head h2 { margin: 0 !important; }
.trend-card-head small { color: var(--muted); font-size: 10px; }
.trend-scope-tabs { display: flex; flex: 0 0 auto; gap: 3px; padding: 3px; border-radius: 8px; background: #f1f3f7; }
.trend-scope-tabs button { min-height: 28px; padding: 5px 9px; border: 0; border-radius: 6px; background: transparent; color: var(--text-secondary); font-size: 11px; font-weight: 700; cursor: pointer; }
.trend-scope-tabs button.active { background: #fff; color: var(--brand); box-shadow: 0 1px 4px rgba(16, 24, 40, .12); }
.trend-toolbar { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; margin: 8px 0 7px; }
.trend-date-tabs { display: flex; flex: 1 1 100%; gap: 5px; overflow-x: auto; padding-bottom: 2px; scrollbar-width: thin; }
.trend-date-tabs button { flex: 1 0 54px; min-height: 31px; padding: 5px 7px; border: 1px solid #dfe4ed; border-radius: 7px; background: #fff; color: var(--text-secondary); font-size: 10px; font-weight: 700; cursor: pointer; }
.trend-date-tabs button.active { border-color: #6e8ee8; background: #edf3ff; color: #3157d5; box-shadow: inset 0 0 0 1px rgba(49, 87, 213, .08); }
.trend-toolbar > label, .trend-custom-range label { display: flex; align-items: center; gap: 6px; margin: 0; color: var(--text-secondary); font-size: 11px; font-weight: 600; }
.trend-toolbar select, .trend-custom-range input, .trend-custom-range button { box-sizing: border-box; height: 34px; border: 1px solid #d9dee8; border-radius: 7px; background: #fff; }
.trend-toolbar select { min-width: 126px; padding: 5px 28px 5px 9px; color: var(--text); }
.trend-custom-range { display: flex; align-items: center; gap: 6px; }
.trend-custom-range[hidden] { display: none; }
.trend-custom-range input { width: 122px; padding: 5px 8px; }
.trend-custom-range button { padding: 5px 10px; color: #fff; background: var(--brand); border-color: var(--brand); font-weight: 700; cursor: pointer; }
.trend-summary { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; position: relative; margin-bottom: 6px; padding-right: 82px; }
.trend-summary span { display: grid; gap: 1px; min-width: 0; padding: 6px 8px; border: 1px solid #e4e8f0; border-radius: 7px; background: #fafbfc; }
.trend-summary small { overflow: hidden; color: var(--muted); font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }
.trend-summary b { overflow: hidden; color: var(--text); font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.trend-summary em { position: absolute; right: 0; bottom: 7px; color: var(--muted); font-size: 9px; font-style: normal; }
.trend-day-summary { display: flex; align-items: baseline; gap: 8px; margin: 6px 1px 7px; }
.trend-day-summary strong { color: var(--text); font-size: 12px; }
.trend-day-summary span { color: var(--muted); font-size: 9px; }
.daily-metric-grid { display: grid; grid-template-columns: repeat(9, minmax(0, 1fr)); gap: 5px; }
.daily-metric-card { display: flex; align-items: flex-start; flex-direction: column; justify-content: center; gap: 1px; min-width: 0; min-height: 64px; padding: 7px 6px; border: 1px solid #dfe5ef; border-radius: 8px; background: linear-gradient(135deg, #fff, #f8faff); color: var(--text); text-align: left; cursor: pointer; }
.daily-metric-card:hover { border-color: #9eb2eb; background: #f5f8ff; }
.daily-metric-card:focus-visible { outline: 2px solid #7895ef; outline-offset: 1px; }
.daily-metric-card span { min-height: 24px; color: var(--text-secondary); font-size: 9px; font-weight: 600; line-height: 12px; }
.daily-metric-card b { color: #203b8f; font-size: 16px; line-height: 20px; white-space: nowrap; }
.daily-metric-card small { color: var(--muted); font-size: 8px; }
.bar-chart { min-height: 190px; }
.bar-chart-scroll { overflow-x: auto; padding-bottom: 2px; scrollbar-width: thin; }
.bar-chart-plot { display: grid; align-items: end; gap: 7px; height: 190px; padding: 24px 8px 0; border: 1px solid #e6eaf1; border-radius: 9px; background: repeating-linear-gradient(to bottom, #fff 0, #fff 39px, #edf0f5 40px); }
.bar-chart-column { display: grid; grid-template-rows: 18px 126px 21px; align-items: end; height: 166px; padding: 0; border: 0; border-radius: 7px 7px 0 0; background: transparent; color: inherit; text-align: center; cursor: pointer; }
.bar-chart-column:hover { background: linear-gradient(180deg, rgba(91, 92, 226, .04), rgba(91, 92, 226, .09)); }
.bar-chart-column:focus-visible { outline: 2px solid #7895ef; outline-offset: 1px; }
.bar-chart-column > span { overflow: hidden; color: #667085; font-size: 9px; line-height: 16px; text-overflow: ellipsis; white-space: nowrap; }
.bar-chart-column > i { align-self: end; justify-self: center; width: min(28px, 68%); height: var(--bar-height); min-height: 2px; border-radius: 5px 5px 2px 2px; background: linear-gradient(180deg, #7087ef, #3157d5); box-shadow: 0 4px 10px rgba(49, 87, 213, .14); transition: height .2s ease; }
.bar-chart-column > small { padding-top: 5px; color: var(--muted); font-size: 9px; line-height: 16px; }
.trend-detail { margin-top: 9px; padding-top: 9px; border-top: 1px solid #e5e9f1; }
.trend-detail-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 7px; }
.trend-detail-head > div { display: flex; align-items: baseline; gap: 7px; }
.trend-detail-head strong { font-size: 12px; }
.trend-detail-head small { color: var(--muted); font-size: 10px; }
.trend-detail-head > button { padding: 5px 8px; border: 1px solid #d9dee8; border-radius: 6px; background: #fff; color: var(--text-secondary); font-size: 10px; cursor: pointer; }
.trend-detail-rows { display: grid; gap: 6px; max-height: 230px; overflow: auto; }
.trend-detail-rows article { display: grid; gap: 3px; padding: 7px 9px; border: 1px solid #e4e8f0; border-radius: 7px; background: #fafbfc; }
.trend-detail-rows article > div { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.trend-detail-rows article button { padding: 0; border: 0; background: transparent; color: var(--brand); font-size: 11px; font-weight: 700; text-align: left; cursor: pointer; }
.trend-detail-rows article span, .trend-detail-rows article small { color: var(--text-secondary); font-size: 10px; }
.trend-detail-rows article p { margin: 0; color: var(--text); font-size: 10px; }
.alert-grid { display: grid; grid-template-columns: 1fr; gap: 9px; margin-bottom: 12px; }
.alert-source-only { display: none !important; }
.alert-card { width: 100%; padding: 14px; border: 1px solid #e4e2f5; border-radius: 11px; background: linear-gradient(135deg, #fff, #f8f7ff); color: #292b3c; text-align: left; cursor: pointer; }
.alert-card:hover, .alert-card:focus-visible { border-color: #8a80e8; box-shadow: 0 8px 22px rgba(92,82,217,.12); outline: none; }
.alert-card span { color: #6158bb; font-size: 12px; font-weight: 700; }
.alert-card strong { display: block; margin: 4px 0 2px; font-size: 27px; letter-spacing: -.03em; }
.alert-card small { color: #8b8f9e; font-size: 10px; }
.alert-card[hidden] { display: none; }
.filter-card { padding: 15px; margin-bottom: 11px; }
.filter-title { display: flex; align-items: center; justify-content: space-between; margin-bottom: 11px; }
.filter-title strong { font-size: 15px; }
.filter-title button { border: 0; background: transparent; color: #6558dc; font-size: 12px; }
.quick-dates { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; margin-bottom: 12px; }
.quick-dates button { min-height: 36px; padding: 5px 2px; border: 1px solid #dfe1e9; border-radius: 7px; background: #fafbfc; color: #515668; font-size: 12px; }
.filter-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 9px; }
.filter-grid label { margin: 0; color: #73788a; font-size: 10px; }
.filter-grid input, .filter-grid select { min-height: 42px; margin-top: 5px; padding: 8px 9px; font-size: 13px; background: white; }
.primary-button { width: 100%; min-height: 42px; margin-top: 11px; border: 0; border-radius: 8px; background: #5c52d9; color: white; font-weight: 700; }
.filtered-summary { display: flex; align-items: baseline; flex-wrap: wrap; gap: 5px; padding: 11px 3px 13px; font-size: 12px; color: #7d8292; }
.filtered-summary strong { color: #25283a; font-size: 22px; }
.filtered-summary a { margin-left: auto; color: #5c52d9; font-size: 12px; font-weight: 700; text-decoration: none; }
.filtered-summary-actions { display: flex; align-items: center; gap: 8px; margin-left: auto; }
.filtered-summary-actions a { margin-left: 0; }
.filtered-summary-actions button,.filtered-summary-actions a { min-height: 36px; padding: 7px 11px; border: 1px solid #dfe1e9; border-radius: 8px; background: #fff; color: #4b5fc5; font-weight: 700; }
.active-filter-chips { display: flex; flex: 1 1 auto; flex-wrap: wrap; gap: 5px; margin-left: 8px; }
.active-filter-chips span { display: inline-flex; gap: 4px; padding: 4px 7px; border: 1px solid #e0e2ea; border-radius: 999px; background: #fff; color: #5f6576; }
.active-filter-chips span b { color: #30364a; font-size: inherit; }
.active-filter-chips .quiet { border-color: transparent; background: transparent; color: #969bab; }
.sop-steps-field { grid-column: 1 / -1; padding: 16px; border: 1px solid #e5e7ef; border-radius: 12px; background: #f8f9fc; }
.sop-steps-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
.sop-steps-head > div { display: grid; gap: 3px; }
.sop-steps-head small { color: var(--muted); font-size: 12px; }
.sop-step-list { display: grid; gap: 10px; }
.sop-step-row { display: grid; grid-template-columns: 32px 94px 124px 150px minmax(240px, 1fr) auto; gap: 10px; align-items: end; padding: 12px; border: 1px solid #e3e5ee; border-radius: 10px; background: #fff; }
.sop-step-row > b { align-self: center; display: grid; place-items: center; width: 26px; height: 26px; border-radius: 50%; background: #eeedff; color: #5148c7; }
.sop-step-row label { min-width: 0; }
.sop-step-row input, .sop-step-row select, .sop-step-row textarea { width: 100%; }
.sop-step-row textarea { min-height: 58px; resize: vertical; }
.sop-step-actions { display: grid; grid-template-columns: repeat(2, auto); gap: 6px; align-self: stretch; align-content: end; }
.sop-step-actions button { min-height: 32px; padding: 5px 9px; white-space: nowrap; }
.sop-step-actions button:disabled { opacity: .45; cursor: not-allowed; }
.sop-timeline-preview { display: grid; gap: 10px; margin-top: 14px; padding-top: 14px; border-top: 1px solid #e3e5ee; }
.sop-timeline-preview > div { display: flex; gap: 9px; overflow-x: auto; padding-bottom: 3px; }
.sop-timeline-preview article { position: relative; flex: 0 0 min(260px, 75vw); display: grid; gap: 4px; padding: 10px 12px; border: 1px solid #dedfeb; border-radius: 9px; background: #fff; }
.sop-timeline-preview article:not(:last-child)::after { content: "→"; position: absolute; right: -9px; top: 50%; z-index: 1; color: #7770d8; transform: translate(50%, -50%); }
.sop-timeline-preview article span { color: var(--muted); font-size: 12px; }
.sop-timeline-preview article p { overflow: hidden; margin: 0; color: var(--text); font-size: 13px; text-overflow: ellipsis; white-space: nowrap; }
.sop-steps-field > small { display: block; margin-top: 10px; color: var(--muted); }
.records-head h2 { margin: 0 0 13px; font-size: 15px; }
.muted-empty { margin: 18px 0; text-align: center; color: #a0a4b1; font-size: 12px; }
.records-card { overflow: hidden; }
.records-head { padding: 15px 15px 11px; border-bottom: 1px solid #ececf1; }
.records-head h2 { margin-bottom: 10px; }
.records-head input { min-height: 42px; margin: 0; font-size: 14px; background: #f8f9fb; }
.head-actions { display: flex; flex-wrap: wrap; gap: 7px; }
.deal-filter-toolbar { display: grid; grid-template-columns: minmax(0, 1fr); gap: 9px; padding: 4px 15px 12px; }
.deal-filter-grid { gap: 8px; }
.deal-filter-grid input, .deal-filter-grid select { min-height: 38px; }
.deal-toolbar-actions { display: flex; align-items: center; justify-content: flex-end; flex-wrap: nowrap; width: 100%; }
.deal-toolbar-actions .primary-button,
.deal-toolbar-actions .export { width: auto; min-height: 38px; margin: 0; padding: 8px 12px; white-space: nowrap; }
.deal-toolbar-actions #dealExportButton { width: auto; min-height: 38px; margin: 0; padding: 8px 12px; white-space: nowrap; }
.deal-export-dialog { width: min(520px, calc(100% - 28px)); }
.deal-export-options { display: grid; gap: 10px; margin: 18px 0; }
.deal-export-choice { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: start; gap: 11px; margin: 0; padding: 13px; border: 1px solid var(--line); border-radius: 9px; background: var(--surface-subtle); cursor: pointer; }
.deal-export-choice:has(input:checked) { border-color: var(--brand-border); background: var(--brand-soft); }
.deal-export-choice input { width: 17px; min-height: 17px; margin: 2px 0 0; }
.deal-export-choice span { display: grid; gap: 4px; }
.deal-export-choice strong { color: var(--text); font-size: 14px; }
.deal-export-choice small { color: var(--muted); font-size: 12px; line-height: 1.5; }
.deal-summary-total { background: #f7f7fb; }
.deal-comparison-panel { margin-top: 18px; padding: 14px; border: 1px solid var(--line); border-radius: 10px; background: #fbfcfe; }
.deal-comparison-panel .trend-card-head h2 { font-size: 16px; }
.deal-comparison-actions { display: flex; align-items: center; gap: 8px; }
.deal-comparison-actions .export { min-height: 34px; padding: 7px 11px; }
.deal-comparison-panel .comparison-table th,
.deal-comparison-panel .comparison-table td { height: 38px; padding-top: 5px; padding-bottom: 5px; }
.deal-void-button { min-height: 34px; padding: 6px 10px; border: 1px solid #e8b8b8; border-radius: 7px; background: #fff7f7; color: #a83c3c; font-weight: 700; cursor: pointer; }
.deal-void-button:hover, .deal-void-button:focus-visible { border-color: #cf7777; background: #fff0f0; outline: none; }
.toast-region { position: fixed; z-index: 1000; top: max(18px, env(safe-area-inset-top, 0px)); right: max(18px, env(safe-area-inset-right, 0px)); display: grid; gap: 8px; width: min(360px, calc(100vw - 28px)); pointer-events: none; }
.toast-message { transform: translateY(-8px); opacity: 0; padding: 12px 14px; border: 1px solid #dcdcf0; border-radius: 9px; background: #25273b; color: #fff; box-shadow: 0 12px 35px rgba(20, 23, 46, .22); font-size: 13px; line-height: 1.45; transition: opacity .2s, transform .2s; }
.toast-message.visible { transform: translateY(0); opacity: 1; }
.desktop-records tfoot th { border-top: 2px solid #dfe1e9; color: #172033; font-weight: 800; }
.desktop-records thead th { position: sticky; z-index: 2; top: 0; }
.head-actions button { width: auto; min-height: 38px; margin: 0; padding: 7px 11px; border: 1px solid #dfe1e9; border-radius: 8px; background: #fff; }
.head-actions .primary-button { border: 0; background: #5c52d9; color: #fff; }
@media (min-width: 851px) {
  .deal-filter-grid { grid-template-columns: repeat(6, minmax(0, 1fr)) minmax(140px, 1.2fr); }
}
@media (max-width: 559px) {
  .deal-filter-toolbar { padding-right: 12px; padding-left: 12px; }
  .deal-toolbar-actions { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .deal-toolbar-actions button,
  .deal-toolbar-actions .primary-button,
  .deal-toolbar-actions .export,
  .deal-toolbar-actions #dealExportButton { width: 100%; padding-right: 5px; padding-left: 5px; font-size: 11px; text-align: center; }
}
.batch-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 7px; padding: 10px 15px; border-bottom: 1px solid #ececf1; background: #fafaff; }
.batch-toolbar strong { margin-right: 4px; color: #4e477f; font-size: 12px; }
.batch-toolbar select, .batch-toolbar button { width: auto; min-height: 34px; margin: 0; padding: 6px 9px; font-size: 11px; }
.batch-toolbar button { border: 1px solid #d9d7f2; border-radius: 7px; background: #fff; color: #5148c7; font-weight: 700; }
.batch-toolbar button:disabled { opacity: .55; }
#batchLeaderControls { display: contents; }
#batchLeaderControls[hidden] { display: none; }
.pool-page { display: grid; gap: 12px; }
.pool-page[hidden] { display: none; }
.pool-summary-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
#poolQuotaSummary { display: none !important; }
.pool-summary-grid .card { display: grid; gap: 3px; padding: 11px 14px; }
.pool-summary-grid span, .pool-summary-grid small { color: #777c8d; font-size: 11px; }
.pool-summary-grid strong { font-size: 22px; line-height: 1.15; }
.pool-title-line { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; }
.pool-inline-count { display: inline-flex; align-items: center; gap: 4px; padding: 3px 9px; border: 1px solid #d8e1fb; border-radius: 999px; background: #f3f6ff; color: #52617a; font-size: 12px; font-weight: 600; }
.pool-inline-count strong { color: #3156d3; font-size: 14px; }
.pool-filters { display: grid; grid-template-columns: minmax(180px, 1.55fr) repeat(4, minmax(105px, .8fr)) auto; align-items: stretch; gap: 8px; margin: 12px 0; }
.pool-filters input, .pool-filters select { min-height: 40px; margin: 0; padding: 8px 10px; border: 1px solid #dfe1e9; border-radius: 8px; background: #fff; }
.pool-filters button { width: auto; min-height: 40px; margin: 0; padding-inline: 14px; white-space: nowrap; }
.pool-assign-bar { display: flex; align-items: center; gap: 9px; margin-bottom: 10px; padding: 10px 12px; border: 1px solid #e2e0f5; border-radius: 8px; background: #f8f7ff; }
.pool-assign-bar[hidden] { display: none; }
.pool-assign-bar label { display: inline-flex; align-items: center; gap: 6px; margin: 0; color: #424758; font-weight: 700; }
.pool-assign-bar input[type="checkbox"] { width: 16px; min-height: 16px; margin: 0; }
.pool-assign-bar > strong { white-space: nowrap; }
.pool-assign-bar > div { display: flex; align-items: center; gap: 7px; }
.pool-assign-bar > div[hidden] { display: none; }
.pool-assign-bar select { min-width: 190px; min-height: 36px; margin: 0; }
.pool-assign-bar small { color: #777c8d; }
.pool-user-quota-settings { margin-top: 18px; padding-top: 16px; border-top: 1px solid #eceef4; }
.pool-user-quota-list { display: grid; gap: 9px; }
.pool-user-quota-list article { display: grid; grid-template-columns: minmax(180px, 1.2fr) repeat(2, minmax(130px, .7fr)) minmax(150px, .8fr) auto; gap: 10px; align-items: end; padding: 12px; border: 1px solid #e2e6ef; border-radius: 9px; background: #fbfcfe; }
.pool-user-quota-list article > div:first-child { display: grid; gap: 3px; align-self: center; }
.pool-user-quota-list article span, .pool-user-quota-list article small { color: #777c8d; font-size: 11px; }
.pool-user-quota-list label { margin: 0; }
.pool-user-quota-list input { margin: 4px 0 0; }
.pool-user-quota-effective { display: grid; gap: 4px; align-self: center; }
.pool-user-quota-actions { display: flex; gap: 6px; }
.channel-count-actions { display: flex; gap: 7px; margin: 9px 0 12px; }
.channel-child-row { display: grid; grid-template-columns: minmax(120px, 1fr) auto auto auto; align-items: center; gap: 8px; padding: 9px 0; border-top: 1px solid #eeeef2; }
.customer-select-label { display: inline-flex; align-items: center; gap: 4px; color: #6e7382; font-size: 11px; }
.customer-select-label input, .desktop-records .customer-select, #selectPage { width: 16px; min-height: 16px; margin: 0; }
.record-list { padding: 0 15px; }
.desktop-records { display: none; overflow-x: auto; }
.records-card .desktop-records th, .records-card .desktop-records td { padding: 10px 12px; }
.table-sort { min-height: 0; padding: 0; border: 0; background: transparent; color: inherit; font: inherit; font-weight: 600; cursor: pointer; white-space: nowrap; }
.table-sort:hover, .table-sort:focus-visible { color: #5148c7; outline: none; }
.customer-name-button { padding: 0; border: 0; background: transparent; color: #292d40; font: inherit; font-weight: 800; text-align: left; cursor: pointer; }
.customer-name-button:hover, .customer-name-button:focus-visible { color: #5148c7; text-decoration: underline; outline: none; }
.customer-row-actions { display: flex; align-items: center; gap: 6px; white-space: nowrap; }
.customer-primary-action { border-color: #d7d4f8; background: #efefff; color: #5148c7; font-weight: 800; }
.desktop-records td > small { display: block; margin-top: 4px; color: #858a99; }
.latest-followup-cell { min-width: 170px; max-width: 250px; color: #5f6473; line-height: 1.45; }
.latest-followup-note { margin: 9px 0 0; color: #525869; font-size: 12px; line-height: 1.5; }
.record-item { padding: 14px 0; border-bottom: 1px solid #eeeef2; }
.record-top { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; }
.record-top strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 14px; }
.record-top time { flex: 0 0 auto; color: #a0a4b2; font-size: 10px; }
.record-item p { display: flex; gap: 6px; margin: 8px 0 6px; }
.record-item p span { padding: 3px 7px; border-radius: 5px; background: #f0effb; color: #5b52b2; font-size: 10px; }
.record-item small { color: #6f7484; font-size: 11px; }
.audit-changes { display: grid; gap: 7px; margin: 10px 0 0; padding: 0; list-style: none; }
.audit-changes li { display: grid; grid-template-columns: minmax(105px, 150px) 1fr; gap: 10px; align-items: baseline; padding: 8px 10px; border-radius: 7px; background: #f7f7fb; }
.audit-changes li strong { color: #4b5263; font-size: 11px; }
.audit-changes li span { color: #252a38; font-size: 12px; overflow-wrap: anywhere; }
.record-item .audit-facts { display: flex; flex-wrap: wrap; gap: 7px; }
.course-comment-priority { border-color: #f1c27d; background: #fffbf2; }
.course-learning-inline { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin: 8px 0; }
.course-learning-inline mark, .course-learning-card mark, .course-import-table-wrap mark { padding: 3px 7px; border-radius: 999px; background: #fff0cf; color: #9a5b00; font-weight: 700; }
.course-comment-priority blockquote, .course-learning-card blockquote { margin: 9px 0; padding: 10px 12px; border-left: 3px solid #e6a23c; border-radius: 0 8px 8px 0; background: #fff8e8; }
.admin-page .course-import-dialog { width: min(960px, calc(100% - 28px)); max-width: 960px; overflow-x: hidden; }
.admin-page .course-import-dialog > section { width: 100%; min-width: 0; box-sizing: border-box; }
.admin-page .course-import-form { display: grid; grid-template-columns: minmax(180px, 1fr) minmax(260px, 1.4fr) auto; gap: 12px; align-items: start; min-width: 0; padding: 0; }
.admin-page .course-import-form > * { min-width: 0; }
.admin-page .course-import-form label { display: grid; grid-template-rows: auto auto auto; align-content: start; margin: 0; }
.admin-page .course-import-form select,
.admin-page .course-import-form input { width: 100%; height: 42px; min-width: 0; min-height: 42px; max-width: 100%; box-sizing: border-box; }
.admin-page .course-import-form input[type="file"] { padding-top: 4px; padding-bottom: 4px; }
.admin-page .course-import-form .field-note { margin-top: 9px; line-height: 1.5; }
.admin-page .course-import-form > .primary-button { width: auto; height: 42px; min-width: 156px; min-height: 42px; margin: 24px 0 0; align-self: start; }
.admin-page .course-import-dialog .records-head { min-width: 0; }
.admin-page .course-import-dialog .records-head > div { min-width: 0; }
.admin-page .course-import-dialog .records-head p { overflow-wrap: anywhere; }
.course-import-summary { display: grid; grid-template-columns: repeat(6, minmax(100px, 1fr)); gap: 10px; margin: 15px 0; }
.course-import-summary span { display: grid; gap: 5px; padding: 12px; border: 1px solid #dfe4ee; border-radius: 10px; background: #f8faff; }
.course-import-summary strong { font-size: 24px; }
.course-import-table-wrap { width: 100%; max-width: 100%; max-height: 420px; overflow: auto; border: 1px solid #dfe4ee; border-radius: 10px; }
.course-import-table-wrap table { width: 100%; border-collapse: collapse; }
.course-import-table-wrap th, .course-import-table-wrap td { padding: 10px; border-bottom: 1px solid #e8ebf2; text-align: left; vertical-align: top; }
.course-import-table-wrap thead { position: sticky; top: 0; z-index: 1; background: #f4f6fa; }
.course-import-table-wrap tr.match-invalid, .course-import-table-wrap tr.match-unmatched { background: #fff8f8; }
.course-import-table-wrap tr.match-suspected { background: #fffbf2; }
.course-import-table-wrap input { min-width: 150px; }
.course-import-history { margin-top: 20px; padding-top: 16px; border-top: 1px solid #e3e7ef; }
.course-learning-list { display: grid; gap: 12px; }
.course-learning-card { padding: 15px; border: 1px solid #dfe4ee; border-radius: 12px; background: #fff; }
.course-learning-card.has-comment { border-color: #f1c27d; }
@media (max-width: 900px) {
  .admin-page .course-import-form { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .admin-page .course-import-form > .primary-button { grid-column: 1 / -1; width: 100%; margin-top: 0; }
  .course-import-summary { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 600px) {
  .admin-page .course-import-dialog { width: calc(100% - 16px); max-height: calc(100dvh - 16px); }
  .admin-page .course-import-dialog > section { padding: 16px; }
  .admin-page .course-import-form { grid-template-columns: minmax(0, 1fr); }
  .admin-page .course-import-form > .primary-button { grid-column: auto; margin-top: 0; }
  .admin-page .course-import-dialog .records-head { align-items: flex-start; gap: 12px; }
  .admin-page .course-import-dialog .records-head button { flex: 0 0 auto; }
  .course-import-summary { grid-template-columns: repeat(2, 1fr); }
  .course-import-table-wrap { overflow-x: auto; }
  .course-import-table-wrap table { min-width: 900px; }
}
.survey-match-compare { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin: 10px 0; }
.survey-match-compare > div { display: grid; gap: 4px; padding: 11px; border: 1px solid #e4e4ef; border-radius: 8px; background: #fafafd; }
.survey-match-compare small { color: #777c8c; }
.survey-match-compare span { color: #5f6574; font-size: 11px; }
.survey-match-item.task-focus { outline: 3px solid rgba(91, 92, 226, .32); outline-offset: 3px; }
#productList .record-top { align-items: flex-end; flex-wrap: wrap; }
#productList .record-top > label { flex: 1 1 180px; min-width: 0; margin: 0; color: #73788a; font-size: 11px; }
#productList .record-top > label input { margin-top: 5px; }
#productList .record-top > div { display: flex; flex: 0 0 auto; gap: 7px; }
.admin-page .empty { padding: 45px 15px; }
.admin-page .pager { padding: 12px 15px; }
.admin-page .pager button { min-height: 34px; }
.management-form { display: grid; gap: 10px; padding: 15px; border-bottom: 1px solid #ececf1; }
.management-form[hidden] { display: none !important; }
.management-form.option-settings-form { align-items: start; }
.option-settings-form > label,
.option-settings-form > .form-note { align-self: start; }
.settings-dialog { width:min(680px,calc(100vw - 32px)); max-height:min(760px,calc(100vh - 32px)); padding:0; border:0; border-radius:16px; box-shadow:0 24px 64px rgba(16,24,40,.22); }
.settings-dialog::backdrop { background:rgba(15,23,42,.48); }
.settings-dialog > form { display:grid; gap:16px; padding:24px; }
.settings-dialog .dialog-title,.settings-dialog .dialog-actions { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.settings-dialog .dialog-title h3 { margin:0; }
.settings-dialog [data-sop-group-list] { max-height:360px; overflow:auto; }
.management-form label { margin: 0; }
.management-form .primary-button { margin: 0; align-self: end; }
.mobile-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 7px; margin-top: 10px; }
.mobile-actions input, .mobile-actions select { width: auto; min-width: 120px; margin: 0; }
.stage-todo-filters { display: flex; align-items: flex-end; flex-wrap: wrap; gap: 8px; }
.stage-todo-filters label { margin: 0; color: #777d8d; font-size: 10px; }
.stage-todo-filters input { min-height: 36px; margin-top: 4px; padding: 7px 9px; }
.stage-todo-filters .primary-button { width: auto; min-height: 36px; margin: 0; padding: 8px 14px; }
.admin-page .stage-todo-primary-filters { flex: 1 1 auto; flex-wrap: nowrap; justify-content: flex-end; margin-left: auto; }
.admin-page .stage-todo-primary-filters label { flex: 0 0 156px; width: 156px; }
.admin-page .records-head .stage-todo-primary-filters input { box-sizing: border-box; width: 156px; }
.admin-page .stage-todo-primary-filters button,
.admin-page .stage-todo-primary-filters .primary-button {
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: auto;
  height: 40px;
  min-height: 40px;
  margin: 0;
  white-space: nowrap;
}
@media (max-width: 850px) {
  .admin-page .stage-todo-primary-filters { width: 100%; flex-wrap: wrap; justify-content: flex-start; margin-left: 0; }
}
@media (max-width: 559px) {
  .admin-page .stage-todo-primary-filters label { flex: 1 1 calc(50% - 4px); width: auto; }
  .admin-page .records-head .stage-todo-primary-filters input { width: 100%; }
}
.task-subnav { display: flex; gap: 7px; overflow-x: auto; padding: 12px 15px; border-bottom: 1px solid #ececf1; background: #fafaff; scrollbar-width: none; }
.task-subnav::-webkit-scrollbar { display: none; }
.task-subnav button { flex: 0 0 auto; min-height: 36px; padding: 7px 13px; border: 0; border-radius: 8px; background: #eef0f5; color: #686e7e; white-space: nowrap; cursor: pointer; }
.task-subnav button.active { background: #5c52d9; color: #fff; font-weight: 800; }
[data-task-panel][hidden] { display: none; }
.stage-todo-filters .export { align-self: end; min-height: 36px; padding: 8px 12px; }
.stage-todo-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px; padding: 15px; }
.stage-todo-grid button { min-width: 0; padding: 13px; border: 1px solid #e4e2f3; border-radius: 10px; background: #faf9ff; color: #555b6d; text-align: left; cursor: pointer; }
.stage-todo-grid button.active { border-color: #6b62db; background: #f0efff; box-shadow: 0 7px 18px rgba(92,82,217,.11); }
.stage-todo-grid span, .stage-todo-grid small { display: block; }
.stage-todo-grid strong { display: block; margin: 5px 0 3px; color: #24283a; font-size: 25px; }
.stage-todo-grid small { color: #9297a6; font-size: 10px; }
.customer-link-button { padding: 0; border: 0; background: transparent; color: var(--brand); font: inherit; font-weight: 700; cursor: pointer; }
.customer-link-button:hover { text-decoration: underline; }
.stage-todo-detail { margin: 0 15px 18px; border: 1px solid #e8e7ef; border-radius: 10px; overflow: hidden; }
.stage-todo-detail .records-head { padding: 13px 15px; border-bottom: 1px solid #ececf1; }
.stage-todo-detail .record-list { max-height: 520px; overflow: auto; }
.scheduled-todo-head { margin-top: 8px; padding-top: 16px; border-top: 1px solid #ececf1; }
.settings-subnav { display: flex; gap: 6px; padding: 11px 15px; overflow-x: auto; border-bottom: 1px solid #ececf1; background: #fafbfc; }
.settings-subnav > span { align-self: center; padding: 0 6px; color: #9a9fae; font-size: 10px; font-weight: 800; letter-spacing: .04em; white-space: nowrap; }
.settings-subnav button { min-height: 34px; padding: 7px 12px; border: 0; border-radius: 7px; background: transparent; color: #73788a; white-space: nowrap; }
.settings-subnav button.active { background: #ecebff; color: #5148c7; font-weight: 700; }
.staff-subnav { display: flex; align-items: center; gap: 6px; padding: 10px 15px; overflow-x: auto; border-bottom: 1px solid #ececf1; background: #fafbfc; }
.staff-subnav button { min-height: 36px; padding: 8px 14px; border: 1px solid transparent; border-radius: 8px; background: transparent; color: #73788a; font-weight: 700; white-space: nowrap; }
.staff-subnav button.active { border-color: #cfdbff; background: #eef3ff; color: #3157d5; box-shadow: 0 1px 2px rgba(49,87,213,.08); }
.staff-subnav + [data-staff-section],
[data-staff-section="roles"] { min-width: 0; }
.settings-section-head { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 18px 15px; border-bottom: 1px solid #ececf1; }
.settings-section-head h3 { margin: 0 0 5px; font-size: 15px; }
.settings-section-head p { margin: 0; color: #868b9b; font-size: 11px; }
.settings-section-head .primary-button { width: auto; min-width: 110px; margin: 0; padding: 8px 13px; }
.settings-section-head > button:not(.primary-button) { min-height: 36px; padding: 7px 12px; border: 1px solid #dfe1e9; border-radius: 7px; background: #fff; color: #555b6d; }
.safety-note { margin: 14px 15px 18px; padding: 13px 14px; border: 1px solid #eadfbd; border-radius: 9px; background: #fffaf0; color: #6d5b31; }
.safety-note strong { font-size: 12px; }
.safety-note p { margin: 5px 0 0; font-size: 11px; line-height: 1.7; }
.ai-provider-form { grid-template-columns: minmax(180px, 1fr) minmax(170px, 1fr) minmax(230px, 1.35fr) minmax(210px, 1.2fr) auto; }
.ai-provider-form input[readonly] { background: #f5f6f9; color: #777d8d; }
.ai-provider-status { display: grid; grid-template-columns: minmax(220px, .8fr) minmax(300px, 1.5fr); gap: 10px; padding: 0 15px 4px; }
.ai-provider-current { display: grid; gap: 5px; padding: 13px; border: 1px solid #dedcf4; border-radius: 9px; background: #f8f7ff; }
.ai-provider-current strong { color: #5148c7; font-size: 11px; }
.ai-provider-current span { color: #282d3f; font-weight: 700; }
.ai-provider-current small { color: #898e9e; }
.ai-provider-options { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; }
.ai-provider-options span { padding: 10px 12px; border: 1px solid #e5e6ec; border-radius: 8px; background: #fafbfc; color: #73788a; font-size: 11px; }
.ai-provider-options span.active { border-color: #b9b5ee; background: #eeecff; color: #5148c7; font-weight: 700; }
.ai-provider-warning { grid-column: 1 / -1; margin: 0; padding: 10px 12px; border-radius: 8px; background: #fff2f2; color: #a33d3d; font-size: 11px; }
.admin-page dialog { width: min(520px, calc(100% - 28px)); max-height: calc(100vh - 36px); padding: 0; overflow: auto; border: 0; border-radius: 14px; box-shadow: 0 24px 70px rgba(23, 27, 54, .24); }
.admin-page dialog::backdrop { background: rgba(20, 23, 39, .48); backdrop-filter: blur(2px); }
.admin-page dialog form, .admin-page dialog > section { padding: 22px; }
.admin-page dialog h2 { margin: 0 0 18px; }
.admin-page dialog textarea { width: 100%; margin-top: 8px; padding: 12px 14px; resize: vertical; border: 1px solid #dce2df; border-radius: 9px; font: inherit; }
.admin-page dialog form > div:last-child { display: flex; justify-content: flex-end; gap: 9px; margin-top: 18px; }
.admin-page dialog form > div:last-child button { width: auto; min-width: 88px; min-height: 40px; margin: 0; padding: 9px 14px; border: 1px solid #dfe1e9; border-radius: 8px; }
.admin-page dialog form > div:last-child .primary-button { border: 0; background: #5c52d9; color: #fff; }
.admin-page button:focus-visible { outline: 3px solid rgba(92,82,217,.28); outline-offset: 2px; }
.admin-page dialog form > div:last-child .danger-button { border-color: #e7b8b8; background: #fff2f2; color: #a33d3d; font-weight: 700; }
.danger-button { border: 1px solid #e7b8b8; border-radius: 8px; background: #fff2f2; color: #a33d3d; font-weight: 700; }
.role-definition-item .record-top { align-items: center; }
.role-definition-item .mobile-actions { justify-content: flex-end; }
.role-definition-item .danger-button[disabled] { opacity: .45; cursor: not-allowed; }
.admin-page .role-permission-dialog { width: min(940px, calc(100% - 28px)); }
.role-permission-dialog .records-head { margin: -22px -22px 20px; padding: 16px 22px; }
.role-permission-dialog .records-head h2 { margin: 0 0 4px; }
.role-permission-dialog .records-head button { width: auto; min-height: 36px; padding: 7px 12px; border: 1px solid #dfe1e9; border-radius: 8px; background: #fff; }
.role-basic-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.role-basic-grid label { margin: 0; }
.role-permission-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-top: 20px; padding: 14px 0 10px; border-top: 1px solid #eceef3; }
.role-permission-toolbar > div { display: flex; align-items: baseline; gap: 10px; }
.role-permission-toolbar span { color: #777f92; font-size: 12px; }
.role-permission-toolbar input { width: min(320px, 44%); min-height: 38px; margin: 0; }
.role-permission-matrix { display: grid; gap: 12px; }
.role-permission-group { border: 1px solid #e5e8ef; border-radius: 10px; overflow: hidden; background: #fff; }
.role-permission-group > header { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 11px 14px; border-bottom: 1px solid #eceef3; background: #f8f9fc; }
.role-permission-group > header h3 { margin: 0; font-size: 14px; }
.role-permission-group > header button { width: auto; min-height: 30px; padding: 5px 9px; border: 1px solid #dfe3eb; border-radius: 7px; background: #fff; color: #526078; }
.role-permission-items { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.role-permission-item { display: grid; grid-template-columns: 20px 1fr; gap: 8px; margin: 0; padding: 12px 14px; border-bottom: 1px solid #f0f1f5; cursor: pointer; }
.role-permission-item:nth-child(odd) { border-right: 1px solid #f0f1f5; }
.role-permission-item input { width: 16px; height: 16px; min-height: 0; margin: 2px 0 0; accent-color: #315bd9; }
.role-permission-item strong { display: block; color: #263144; font-size: 13px; }
.role-permission-item small { display: block; margin-top: 4px; color: #81899a; font-weight: 400; line-height: 1.45; }
.role-permission-item.is-root-only { background: #fafbfc; }
.role-permission-item.is-scope-disabled { background: #fafbfc; cursor: not-allowed; opacity: .58; }
.role-permission-item.is-root-only strong::after { content: "超管专属"; margin-left: 7px; padding: 2px 5px; border-radius: 4px; background: #fff0f0; color: #b33f3f; font-size: 9px; }
.role-permission-item[hidden] { display: none; }
.role-permission-dialog.is-readonly .role-basic-grid input,
.role-permission-dialog.is-readonly .role-basic-grid select { background: #f6f7f9; color: #737b8c; }
@media (max-width: 700px) {
  .role-basic-grid, .role-permission-items { grid-template-columns: 1fr; }
  .role-permission-item:nth-child(odd) { border-right: 0; }
  .role-permission-toolbar { align-items: stretch; flex-direction: column; }
  .role-permission-toolbar input { width: 100%; }
  .role-permission-dialog .records-head { margin: -18px -18px 18px; padding: 14px 18px; }
}
.dialog-danger-zone { display: flex; justify-content: flex-end; margin-top: 16px; padding-top: 13px; border-top: 1px solid #eeeef2; }
.dialog-danger-zone button { padding: 8px 12px; border: 1px solid #e7b8b8; border-radius: 8px; background: #fff7f7; color: #a33d3d; }
.customer-detail-dialog { width: min(780px, calc(100% - 28px)) !important; }
.detail-actions { display: flex; flex-wrap: wrap; gap: 7px; padding: 14px 0; }
.detail-actions button { width: auto; min-height: 38px; margin: 0; padding: 8px 12px; border: 1px solid #dfe1e9; border-radius: 8px; background: #fff; color: #4f5567; font-weight: 700; }
.detail-actions .primary-button { border: 0; background: #5c52d9; color: #fff; }
.detail-tabs { display: flex; gap: 5px; overflow-x: auto; margin-bottom: 15px; padding-bottom: 2px; }
.detail-tabs button { min-height: 36px; padding: 7px 11px; border: 0; border-radius: 8px; background: #f0f1f5; color: #6a6f7f; white-space: nowrap; cursor: pointer; }
.detail-tabs button.active { background: #ecebff; color: #5148c7; font-weight: 800; }
.detail-tabs button[hidden] { display: none; }
.detail-facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px; margin: 0; }
.detail-facts > div { padding: 11px 12px; border: 1px solid #e7e8ee; border-radius: 9px; background: #fafbfc; }
.detail-facts dt { margin-bottom: 5px; color: #858a9a; font-size: 10px; }
.detail-facts dd { margin: 0; color: #2d3142; line-height: 1.55; }
.detail-note { margin: 8px 0 5px; color: #484e60; line-height: 1.6; }
.customer-detail-dialog .record-list { padding: 0; }

.ai-assistant-grid { display: grid; gap: 12px; }
.ai-assistant-intro { display: flex; align-items: center; justify-content: space-between; gap: 22px; padding: 20px; background: linear-gradient(135deg, #fff, #f4f2ff); }
.ai-assistant-intro h2 { margin: 7px 0 5px; font-size: 22px; }
.ai-assistant-intro p { margin: 0; color: #74798a; font-size: 12px; }
.ai-assistant-intro aside { display: grid; gap: 4px; max-width: 330px; padding: 12px 14px; border: 1px solid #e0ddfa; border-radius: 9px; background: rgba(255,255,255,.72); }
.ai-assistant-intro aside strong { color: #5148c7; font-size: 11px; }
.ai-assistant-intro aside span { color: #656a7a; font-size: 11px; line-height: 1.6; }
.ai-status-badge { display: inline-flex; padding: 5px 9px; border-radius: 99px; background: #ececf2; color: #666b7b; font-size: 10px; font-weight: 800; }
.ai-status-badge.model { background: #e8f8ef; color: #177347; }
.ai-assistant-card { padding: 18px; }
.ai-card-head { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-bottom: 14px; }
.ai-card-head h2 { margin: 0 0 4px; font-size: 16px; }
.ai-card-head p { margin: 0; color: #858a9a; font-size: 11px; }
.ai-card-head > button, .ai-customer-picker button, .ai-action-row button { min-height: 38px; padding: 8px 12px; border: 1px solid #d8d6f5; border-radius: 8px; background: #fff; color: #5148c7; font-weight: 700; cursor: pointer; }
.ai-quick-questions { display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 9px; }
.ai-quick-questions button { padding: 7px 10px; border: 1px solid #e0def7; border-radius: 99px; background: #f7f6ff; color: #5750b9; font-size: 11px; cursor: pointer; }
.ai-question-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; margin-bottom: 12px; }
.ai-question-row input, .ai-focus-input { min-height: 42px; margin: 0; padding: 8px 10px; border: 1px solid #dfe1e9; border-radius: 8px; background: #fff; }
.ai-question-row button, .ai-management-filters button { min-height: 40px; padding: 8px 12px; border: 0; border-radius: 8px; background: #5c52d9; color: #fff; font-weight: 700; cursor: pointer; }
.ai-customer-picker { display: grid; grid-template-columns: minmax(180px, 1fr) auto minmax(220px, 1.4fr); gap: 8px; }
.ai-customer-picker input, .ai-customer-picker select { min-height: 42px; margin: 0; padding: 8px 10px; border: 1px solid #dfe1e9; border-radius: 8px; background: #fff; }
.ai-focus-input { width: 100%; margin-top: 9px; }
.ai-action-row { display: flex; flex-wrap: wrap; gap: 8px; margin: 12px 0; }
.ai-action-row button:first-child { border-color: #5c52d9; background: #5c52d9; color: #fff; }
.ai-output { min-height: 116px; padding: 15px; border: 1px solid #e5e4ee; border-radius: 10px; background: #fafafd; }
.ai-output-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 12px; }
.ai-output-head span { color: #7a7f90; font-size: 10px; }
.ai-result-block { margin-top: 12px; }
.ai-result-block > strong, .ai-draft strong { color: #4c5365; font-size: 11px; }
.ai-result-block ul, .ai-result-block ol { margin: 7px 0 0; padding-left: 21px; color: #303646; font-size: 12px; line-height: 1.8; }
.ai-model-text { margin: 10px 0; padding: 12px; white-space: pre-wrap; overflow-wrap: anywhere; border-radius: 8px; background: #fff; color: #303646; font: 12px/1.75 inherit; }
.ai-draft { margin-top: 14px; padding: 13px; border: 1px solid #dcd9f7; border-radius: 9px; background: #f3f1ff; }
.ai-draft > div { display: flex; align-items: center; justify-content: space-between; }
.ai-draft button { border: 0; background: transparent; color: #5148c7; font-size: 11px; font-weight: 700; cursor: pointer; }
.ai-draft p { margin: 8px 0 0; color: #353a4a; font-size: 12px; line-height: 1.7; }
.ai-fallback { padding: 8px 10px; border-radius: 7px; background: #fff8e8; color: #8a6620; font-size: 11px; }
.ai-business-answer { margin: 0 0 12px; color: #303646; font-size: 12px; line-height: 1.8; white-space: pre-wrap; }
.ai-related-list { display: grid; gap: 6px; }
.ai-related-list > strong { margin-bottom: 2px; color: #4c5365; font-size: 11px; }
.ai-related-list button { display: flex; justify-content: space-between; gap: 12px; padding: 9px 10px; border: 1px solid #e4e5eb; border-radius: 7px; background: #fff; text-align: left; cursor: pointer; }
.ai-related-list button span { font-weight: 700; }
.ai-related-list button small { color: #7c8191; }
.ai-result-actions { display: flex; gap: 8px; margin-top: 13px; padding-top: 12px; border-top: 1px solid #e7e7ed; }
.ai-result-actions button, .ai-risk-list button { padding: 7px 10px; border: 1px solid #d8d6f5; border-radius: 7px; background: #fff; color: #5148c7; font-weight: 700; cursor: pointer; }
.ai-plan-summary { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; margin-bottom: 12px; }
.ai-plan-summary span { padding: 10px; border-radius: 8px; background: #f3f4f8; color: #777c8d; font-size: 11px; }
.ai-plan-summary strong { float: right; color: #252a3b; font-size: 16px; }
.ai-priority-list { display: grid; gap: 7px; }
.ai-priority-list > button { display: grid; grid-template-columns: 28px minmax(0, 1fr) auto; align-items: center; gap: 10px; width: 100%; padding: 10px 12px; border: 1px solid #e4e5eb; border-radius: 8px; background: #fff; color: inherit; text-align: left; cursor: pointer; }
.ai-priority-list > button:hover { border-color: #aaa5e8; background: #faf9ff; }
.ai-priority-list > button > b { display: grid; place-items: center; width: 26px; height: 26px; border-radius: 8px; background: #ecebff; color: #5148c7; }
.ai-priority-list div { display: grid; gap: 3px; }
.ai-priority-list div span, .ai-priority-list small { color: #7c8191; font-size: 10px; }
.ai-risk-buckets { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; margin-bottom: 12px; }
.ai-risk-buckets button { display: flex; align-items: center; justify-content: space-between; gap: 8px; min-height: 48px; padding: 10px; border: 1px solid #e2e3e9; border-radius: 8px; background: #f8f8fb; color: #53586a; cursor: pointer; }
.ai-risk-buckets button.active { border-color: #7168df; background: #f1efff; color: #4e46bb; }
.ai-risk-buckets strong { font-size: 18px; }
.ai-risk-list { display: grid; gap: 7px; }
.ai-risk-list article { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 11px 12px; border: 1px solid #e5e6eb; border-radius: 8px; background: #fff; }
.ai-risk-list article > div:first-child { display: grid; gap: 3px; }
.ai-risk-list article span, .ai-risk-list article small { color: #7c8191; font-size: 10px; }
.ai-risk-list article > div:last-child { display: flex; flex-wrap: wrap; gap: 6px; }
.ai-management-filters { display: flex; align-items: end; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; }
.ai-management-filters label { display: grid; gap: 4px; color: #777c8d; font-size: 10px; }
.ai-management-filters input { min-height: 40px; margin: 0; padding: 7px 9px; border: 1px solid #dfe1e9; border-radius: 8px; }
.ai-management-filters #copyAiManagement { border: 1px solid #d8d6f5; background: #fff; color: #5148c7; }
.guide-page { display: grid; gap: 12px; }
.guide-hero { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 22px; background: linear-gradient(135deg, #252742, #4f48b8); color: #fff; }
.guide-hero span { color: #d7d5ff; font-size: 11px; font-weight: 700; }
.guide-hero h2 { margin: 6px 0; font-size: 22px; }
.guide-hero p { margin: 0; color: #e3e3f4; font-size: 11px; line-height: 1.7; }
.guide-hero button, .guide-steps button { min-height: 38px; padding: 8px 12px; border: 0; border-radius: 8px; background: #fff; color: #5148c7; font-weight: 700; white-space: nowrap; cursor: pointer; }
.guide-steps { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.guide-steps article { display: grid; grid-template-columns: 34px minmax(0, 1fr) auto; align-items: center; gap: 12px; padding: 16px; border: 1px solid #e6e7ed; border-radius: 11px; background: #fff; }
.guide-steps article > b { display: grid; place-items: center; width: 32px; height: 32px; border-radius: 9px; background: #ecebff; color: #5148c7; }
.guide-steps h3 { margin: 0 0 4px; font-size: 14px; }
.guide-steps p { margin: 0; color: #777c8c; font-size: 10px; line-height: 1.6; }
.guide-steps button { border: 1px solid #d9d7f5; }
.guide-notes { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.guide-notes .card { padding: 17px; }
.guide-notes h2 { margin: 0 0 10px; font-size: 14px; }
.guide-notes ul { margin: 0; padding-left: 18px; color: #646979; font-size: 11px; line-height: 1.8; }

.wecom-operations { display: grid; gap: 14px; }
.wecom-workbench { display: grid; grid-template-columns: 164px minmax(0, 1fr); min-height: 680px; overflow: hidden; }
.wecom-subnav { display: flex; flex-direction: column; gap: 5px; padding: 18px 12px; border-right: 1px solid #e7e9f0; background: #f8f9fc; }
.wecom-subnav strong { padding: 4px 10px 13px; font-size: 15px; }
.wecom-subnav button { width: 100%; min-height: 40px; padding: 9px 11px; border: 0; border-radius: 7px; background: transparent; color: #60687a; text-align: left; }
.wecom-subnav button:hover { background: #f0f0fb; color: #5148c7; }
.wecom-subnav button.active { background: #e9e8ff; color: #4e45c4; font-weight: 700; }
.wecom-content { min-width: 0; padding: 20px 22px 28px; }
.wecom-content > section { min-width: 0; }
.wecom-filter-bar { display: flex; align-items: end; flex-wrap: wrap; gap: 10px; margin: 14px 0 18px; padding: 14px; border: 1px solid #e5e7ee; border-radius: 8px; background: #fafbfc; }
.wecom-filter-bar label { display: grid; gap: 6px; min-width: 150px; color: var(--muted); font-size: 11px; }
.wecom-filter-bar input, .wecom-filter-bar select { min-height: 38px; }
.admin-page #aiPortraitFilter { display: grid; grid-template-columns: 1.1fr 1fr 1.1fr 1fr .7fr .7fr 1fr 1fr 1fr auto auto; align-items: end; gap: 8px; }
.admin-page #aiPortraitFilter label { min-width: 0; }
.admin-page #aiPortraitFilter input, .admin-page #aiPortraitFilter select { width: 100%; min-width: 0; }
.admin-page #aiPortraitFilter button { align-self: end; width: auto; min-width: 64px; min-height: 38px; white-space: nowrap; }
@media (max-width: 1100px) {
  .admin-page #aiPortraitFilter { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .admin-page #aiPortraitFilter button { width: 100%; }
}
@media (max-width: 559px) {
  .admin-page #aiPortraitFilter { grid-template-columns: 1fr; }
}
.wecom-editor { margin: 14px 0 18px; border: 1px solid #dddef0; border-radius: 8px; background: #fbfbff; }
.wecom-stat-row, .wecom-plan-summary { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 9px; margin: 14px 0; }
.wecom-stat-row span, .wecom-plan-summary span { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 13px 14px; border: 1px solid #e5e7ee; border-radius: 8px; color: #73798a; background: #fff; }
.wecom-stat-row strong, .wecom-plan-summary strong { color: var(--text); font-size: 18px; }
.wecom-plan-summary { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.wecom-plan-form { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; align-items: end; padding: 15px; border: 1px solid #e5e7ee; border-radius: 8px; background: #fafbfc; }
.wecom-plan-form label { display: grid; gap: 6px; color: var(--muted); font-size: 11px; }
.wecom-plan-form .wide-field { grid-column: span 2; }
.campaign-choice-field { display: grid; gap: 6px; min-width: 0; color: var(--muted); font-size: 11px; }
.campaign-choice { position: relative; }
.campaign-choice > summary { position: relative; display: flex; align-items: center; min-height: 38px; padding: 8px 34px 8px 11px; border: 1px solid #d8dce7; border-radius: 7px; background: #fff; color: var(--text); font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; cursor: pointer; list-style: none; }
.campaign-choice > summary::-webkit-details-marker { display: none; }
.campaign-choice > summary::after { content: "⌄"; position: absolute; right: 11px; color: var(--muted); }
.campaign-choice[open] > summary { border-color: #6b8cff; box-shadow: 0 0 0 2px #edf2ff; }
.campaign-choice > div { position: absolute; z-index: 30; top: calc(100% + 5px); left: 0; right: 0; max-height: 220px; padding: 6px; border: 1px solid #dfe3ec; border-radius: 8px; background: #fff; box-shadow: 0 12px 30px rgba(16, 24, 40, .14); overflow: auto; }
.campaign-choice > div label { display: flex; grid-template-columns: none; align-items: center; gap: 7px; padding: 7px 8px; border-radius: 6px; color: var(--text); font-size: 12px; cursor: pointer; }
.campaign-choice > div label:hover { background: #f3f6fb; }
.campaign-choice > div input { width: 15px; height: 15px; }
.campaign-choice > div small { display: block; padding: 8px; color: var(--muted); }
.ai-target-builder { grid-column: 1 / -1; display: grid; grid-template-columns: minmax(150px, .75fr) repeat(3, minmax(150px, 1fr)) auto; gap: 10px; align-items: end; padding: 13px; border: 1px solid var(--line); border-radius: 9px; background: #fff; }
.ai-target-builder-title { grid-column: 1 / -1; display: flex; align-items: baseline; gap: 9px; }
.ai-target-builder-title strong { color: var(--text); font-size: 13px; }
.ai-target-builder-title small { color: var(--muted); font-size: 11px; }
.ai-target-builder > button { min-height: 38px; }
.ai-target-builder > input[type="hidden"] { display: none; }
.ai-target-condition-list { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 7px; min-height: 30px; padding-top: 2px; }
.ai-target-condition-list > span { display: inline-flex; align-items: center; gap: 6px; padding: 5px 8px; border: 1px solid #cdd8ff; border-radius: 999px; background: #f2f5ff; color: #3156d9; font-size: 11px; font-weight: 700; }
.ai-target-condition-list > span button { display: grid; place-items: center; width: 18px; min-height: 18px; padding: 0; border: 0; border-radius: 50%; background: #dbe4ff; color: #3156d9; cursor: pointer; }
.takeover-hosting-grid { display: grid; grid-template-columns: minmax(300px, .78fr) minmax(480px, 1.22fr); gap: 14px; align-items: start; margin-top: 14px; }
.takeover-policy-card, .takeover-analytics-card { min-width: 0; padding: 16px; border: 1px solid #e5e7ee; border-radius: 10px; background: #fff; }
.takeover-policy-card h4, .takeover-analytics-card h4 { margin: 0 0 4px; }
.takeover-policy-card > div > p, .takeover-analytics-card > div > p, .takeover-policy-note { margin: 0; color: var(--muted); font-size: 12px; line-height: 1.65; }
.compact-policy-form { grid-template-columns: repeat(2, minmax(0, 1fr)); margin-top: 12px; padding: 12px; }
.compact-policy-form .checkbox-label { display: flex; align-items: center; min-height: 38px; }
.takeover-working-days { grid-column: 1 / -1; display: flex; align-items: center; flex-wrap: wrap; gap: 8px 12px; margin: 0; padding: 10px 12px; border: 1px solid #e5e7ee; border-radius: 8px; }
.takeover-working-days legend { padding: 0 5px; color: var(--muted); font-size: 11px; }
.takeover-working-days label { display: inline-flex; align-items: center; gap: 4px; min-width: auto; }
.takeover-policy-note { margin-top: 10px; padding-left: 9px; border-left: 3px solid #aebdff; }
.takeover-log-head { margin-top: 20px; padding-top: 18px; border-top: 1px solid #e5e7ee; }
.takeover-sla { display: inline-flex; align-items: center; margin-left: 6px; padding: 2px 7px; border-radius: 999px; font-size: 11px; font-weight: 700; }
.takeover-sla.within_grace { background: #eef4ff; color: #3156d9; }
.takeover-sla.overdue { background: #fff4e5; color: #b54708; }
.takeover-sla.escalated { background: #fff0ef; color: #b42318; }
.wecom-table-wrap { width: 100%; overflow-x: auto; }
.wecom-data-table { width: 100%; min-width: 820px; border-collapse: collapse; }
.wecom-data-table th, .wecom-data-table td { padding: 11px 10px; border-bottom: 1px solid #e9eaf0; text-align: left; vertical-align: middle; font-size: 12px; }
.wecom-data-table th { color: #73798a; background: #fafbfc; white-space: nowrap; }
.wecom-data-table td { color: #252a38; }
.wecom-data-table .table-actions { display: flex; flex-wrap: wrap; gap: 5px; min-width: 190px; }
.wecom-data-table .table-actions button { min-height: 30px; padding: 5px 8px; font-size: 11px; }
.wecom-data-table .error-text { color: #ba3b45; }
.status-pill { display: inline-flex; align-items: center; min-height: 28px; padding: 4px 10px; border-radius: 999px; background: #eeedff; color: #5148c7; font-size: 11px; }
.key-customer-tag { display: inline-flex; align-items: center; min-height: 22px; margin-left: 5px; padding: 2px 8px; border: 1px solid #f6d58d; border-radius: 999px; background: #fff8e7; color: #9a6700; font-size: 11px; font-weight: 700; line-height: 1; vertical-align: middle; }
.wecom-status-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.wecom-status-grid article { display: grid; gap: 5px; padding: 16px 18px; }
.wecom-status-grid span, .wecom-status-grid small { color: #747b8f; font-size: 11px; }
.wecom-status-grid strong { font-size: 22px; }
.wecom-tag-color { display: inline-block; width: 10px; height: 10px; margin-right: 7px; border-radius: 50%; vertical-align: 1px; }
.knowledge-form { display: grid; grid-template-columns: 150px minmax(180px, .8fr) minmax(320px, 2fr) 120px auto auto; gap: 10px; align-items: end; margin-bottom: 18px; }
.knowledge-form label { display: grid; gap: 6px; color: var(--muted); font-size: 12px; }
.knowledge-form .knowledge-content textarea { min-height: 120px; resize: vertical; }
.wecom-sop-form { display: grid; grid-template-columns: minmax(180px, 1fr) minmax(220px, 1fr) 120px auto auto; gap: 10px; align-items: end; margin-bottom: 18px; }
.wecom-sop-form label { display: grid; gap: 6px; color: var(--muted); font-size: 12px; }
.wecom-sop-form .sop-steps-field { grid-column: 1 / -1; }
.wecom-sop-form textarea { resize: vertical; }
.wecom-sop-form small { line-height: 1.6; }
.wecom-sop-toolbar { display: flex; flex-wrap: wrap; gap: 9px; align-items: end; margin: 14px 0; }
.wecom-sop-toolbar label { display: grid; gap: 5px; min-width: 150px; color: var(--muted); font-size: 11px; }
#wecomAiReadiness { max-width: min(100%, 620px); white-space: normal; line-height: 1.5; }

@media (min-width: 560px) {
  .funnel-row { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .stage-todo-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (min-width: 820px) {
  .admin-page { padding: 34px 28px 50px; }
  .admin-page main { width: min(1180px, 100%); }
  .admin-header { margin-bottom: 14px; }
  .admin-header h1 { font-size: 30px; }
  .metric-grid { grid-template-columns: repeat(4, 1fr); gap: 12px; }
  .operations-core { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .operations-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
  .operations-wide { grid-column: 1 / -1; }
  #operationsRisks .operations-list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .funnel-row { grid-template-columns: repeat(7, minmax(0, 1fr)); }
  .metric-grid article { padding: 18px 20px; }
  .metric-grid strong { font-size: 32px; }
  .alert-grid { grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 12px; }
  .alert-card { padding: 18px 20px; }
  .stage-todo-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); }
  .filter-card { padding: 18px 20px; }
  .filter-grid { grid-template-columns: repeat(5, 1fr); }
  .customer-filter-grid { grid-template-columns: repeat(6, minmax(0, 1fr)) auto; align-items: end; }
  .customer-filter-grid #applyFilters { grid-column: 7; grid-row: 2; width: 100%; min-height: 42px; margin: 0; }
  .primary-button { width: 150px; margin-left: auto; display: block; }
  .mobile-records { display: none; }
  .desktop-records { display: block; }
  .desktop-records table { min-width: 820px; }
  .desktop-records th, .desktop-records td { padding: 10px 12px; }
  .records-head { display: flex; align-items: center; justify-content: space-between; gap: 18px; }
  .records-head h2 { margin: 0; }
  .records-head input { width: 320px; }
  .management-form { grid-template-columns: repeat(5, 1fr); align-items: end; }
}

/* 跨平台与折叠屏：Windows/Mac 桌面、手机横竖屏、平板及双屏设备 */
html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

.admin-page {
  min-height: 100dvh;
  overflow-x: hidden;
  padding-top: max(18px, env(safe-area-inset-top, 0px));
  padding-right: max(14px, env(safe-area-inset-right, 0px));
  padding-bottom: max(36px, env(safe-area-inset-bottom, 0px));
  padding-left: max(14px, env(safe-area-inset-left, 0px));
}
.admin-page main,
.admin-page .card,
.admin-page .record-item,
.admin-page .filter-grid > *,
.admin-page .management-form > * { min-width: 0; }
.admin-page input,
.admin-page select,
.admin-page textarea,
.admin-page button { max-width: 100%; }
.admin-page .record-item small,
.admin-page td { overflow-wrap: anywhere; }
.admin-nav,
.staff-subnav,
.settings-subnav,
.desktop-records,
.table-wrap {
  -webkit-overflow-scrolling: touch;
  overscroll-behavior-x: contain;
  scrollbar-gutter: stable;
}
.admin-page dialog {
  max-height: calc(100dvh - max(36px, env(safe-area-inset-top, 0px) + env(safe-area-inset-bottom, 0px)));
}

@media (pointer: coarse) {
  .admin-page button,
  .admin-page a,
  .admin-page input,
  .admin-page select { min-height: 44px; }
  .admin-page input,
  .admin-page select,
  .admin-page textarea { font-size: 16px; }
}

@media (min-width: 851px) {
  .admin-page #dashboard { margin-left: 152px; }
  .admin-page .admin-nav { width: 152px; padding-left: 10px; padding-right: 10px; }
  .admin-page .admin-nav button.active::before { left: -10px; }
  .admin-page #settingsPanel:not([hidden]) { display: grid; grid-template-columns: 184px minmax(0, 1fr); align-items: start; }
  .admin-page #settingsPanel > .records-head { grid-column: 1 / -1; }
  .admin-page #settingsPanel > .settings-subnav {
    position: sticky; top: 16px; grid-column: 1; grid-row: 2 / span 30; display: flex; flex-direction: column;
    align-items: stretch; gap: 3px; min-height: 520px; padding: 14px 10px; overflow: visible;
    border-right: 1px solid var(--line); border-bottom: 0; background: var(--surface-subtle);
  }
  .admin-page #settingsPanel > .settings-subnav > span { align-self: stretch; padding: 13px 9px 5px; }
  .admin-page #settingsPanel > .settings-subnav > span:first-child { padding-top: 3px; }
  .admin-page #settingsPanel > .settings-subnav button { width: 100%; text-align: left; white-space: normal; }
  .admin-page #settingsPanel > [data-settings-section] { grid-column: 2; min-width: 0; }
}

/* 业务分组导航、统一任务中心与稳定状态流程 */
.admin-nav-group { display: flex; flex-direction: column; gap: 3px; }
.admin-nav-group > strong { padding: 14px 10px 5px; color: #758096; font-size: 11px; font-weight: 600; letter-spacing: .08em; }
.admin-nav-group:first-child > strong { padding-top: 4px; }
.admin-nav-group:not(:has(button:not([hidden]))) { display: none; }
.admin-nav-toggle, .admin-nav-backdrop { display: none; }
.task-center-summary { display: flex; flex-wrap: wrap; gap: 8px; margin: 14px 0 10px; }
.task-center-summary button { display: inline-flex; align-items: center; justify-content: center; gap: 9px; min-height: 40px; padding: 7px 13px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface); color: var(--text-secondary); }
.task-center-summary button strong { min-width: 20px; font-size: 16px; text-align: center; }
.task-center-summary button.active { border-color: var(--brand); background: var(--brand-soft); color: var(--brand); box-shadow: 0 0 0 2px rgba(47, 91, 234, .08); }
.task-center-summary button.urgent { border-color: #fecdca; background: var(--danger-soft); }
.task-center-summary button.high { border-color: #fedf89; background: var(--warning-soft); }
.task-center-list { display: grid; gap: 8px; margin-top: 14px; }
.task-center-item { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 14px 16px; border: 1px solid var(--line); border-left: 3px solid #98a2b3; border-radius: 8px; background: var(--surface); }
.task-center-item.priority-urgent { border-left-color: var(--danger); }
.task-center-item.priority-high { border-left-color: var(--warning); }
.task-center-main { min-width: 0; flex: 1; }
.task-center-main p { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin: 6px 0; }
.task-center-main p span { padding: 2px 7px; border-radius: 999px; background: var(--surface-subtle); color: var(--muted); font-size: 12px; }
.task-center-actions { display: flex; gap: 8px; flex: 0 0 auto; }
.task-center-related { margin-top: 10px; border-top: 1px solid var(--line); }
.task-center-related > summary { width: max-content; padding: 9px 0 2px; color: var(--brand); font-size: 12px; font-weight: 700; cursor: pointer; }
.task-center-related > div { display: grid; gap: 7px; padding-top: 8px; }
.task-center-related article { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 9px 10px; border-radius: 7px; background: var(--surface-subtle); }
.task-center-related article > div:first-child { display: grid; gap: 2px; }
.task-center-related article span, .task-center-related article small { color: var(--muted); font-size: 12px; }
.task-primary-stage { margin: 14px 15px 18px; overflow: hidden; border: 1px solid var(--brand-border); border-radius: 10px; background: linear-gradient(180deg, var(--brand-soft) 0, var(--surface) 88px); }
.task-primary-stage > .records-head { border-color: var(--brand-border); }
.task-primary-stage > .stage-todo-grid { padding-top: 12px; }
.task-primary-stage > .stage-todo-detail { margin: 0 15px 15px; overflow: hidden; border: 1px solid var(--line); border-radius: 8px; background: var(--surface); }
.task-secondary-view { margin-top: 16px; padding: 0 14px 14px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface-subtle); }
.task-secondary-view > summary { padding: 12px 0; color: var(--text-secondary); cursor: pointer; font-weight: 600; }
.status-workflow-list { display: grid; gap: 8px; margin: 16px 0; }
.status-workflow-row { display: grid; grid-template-columns: minmax(190px, 1fr) minmax(180px, 1fr) 150px auto; align-items: center; gap: 12px; padding: 12px 14px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface); }
.status-workflow-row span small { display: block; margin-top: 2px; }
.status-workflow-row input { margin: 0; }
.status-workflow-row code { color: var(--muted); }
.status-workflow-row em { color: var(--warning); font-size: 12px; font-style: normal; }

@media (min-width: 851px) {
  .admin-page #dashboard { margin-left: 152px; }
  .admin-page .admin-nav { width: 152px; padding-left: 10px; padding-right: 10px; }
  .admin-page .admin-nav button.active::before { left: -10px; }
}

/* 企业级侧栏层级：分组、普通入口、当前入口三层清晰但不过度装饰。 */
.admin-page .admin-nav-group { gap: 3px; margin-bottom: 14px; }
.admin-page .admin-nav-group > strong {
  display: flex;
  align-items: center;
  gap: 7px;
  margin: 4px 4px 5px;
  padding: 3px 4px;
  color: #8491a8;
  font-size: 10.5px;
  font-weight: 700;
  line-height: 16px;
  letter-spacing: .10em;
}
.admin-page .admin-nav-group > strong::before {
  content: "";
  width: 6px;
  height: 6px;
  flex: 0 0 auto;
  border-radius: 50%;
  background: #607de0;
}
.admin-page .admin-nav-group > strong::after {
  content: "";
  height: 1px;
  flex: 1;
  background: rgba(148, 163, 184, .13);
}
@media (min-width: 851px) {
  .admin-page .admin-nav {
    border-right-color: rgba(148, 163, 184, .12);
    background: linear-gradient(180deg, #0f172a 0%, #101a30 100%);
    box-shadow: inset -1px 0 rgba(255,255,255,.02);
  }
  .admin-page .admin-nav button { color: #a6b0c2; }
  .admin-page .admin-nav button:hover { background: rgba(148, 163, 184, .09); color: #f8fafc; }
  .admin-page .admin-nav button.active {
    border: 1px solid rgba(125, 162, 255, .22);
    background: linear-gradient(90deg, rgba(49, 86, 211, .38), rgba(49, 86, 211, .20));
    color: #fff;
    box-shadow: 0 5px 16px rgba(2, 6, 23, .16), inset 0 1px rgba(255,255,255,.04);
  }
  .admin-page .admin-nav button.active::before {
    background: #7da2ff;
    box-shadow: 0 0 8px rgba(125, 162, 255, .54);
  }
}
@media (max-width: 850px) {
  .admin-page.mobile-nav-open .admin-nav { background: linear-gradient(180deg, #0f172a 0%, #101a30 100%); }
  .admin-page.mobile-nav-open .admin-nav-group > strong { display: flex; color: #8491a8; }
}

@media (max-width: 850px) {
  .admin-page .admin-nav-toggle { display: inline-flex; align-items: center; justify-content: center; order: -1; }
  .admin-page .admin-nav {
    position: fixed; inset: 0 auto 0 0; z-index: 1200; display: flex; flex-direction: column;
    width: min(82vw, 280px); margin: 0; padding: max(72px, calc(env(safe-area-inset-top, 0px) + 64px)) 14px max(24px, env(safe-area-inset-bottom, 0px));
    overflow-y: auto; border: 0; border-right: 1px solid rgba(255,255,255,.08); border-radius: 0;
    background: #111827; transform: translateX(-105%); transition: transform .2s ease; box-shadow: 18px 0 40px rgba(16,24,40,.22);
  }
  .admin-page.mobile-nav-open .admin-nav { transform: translateX(0); }
  .admin-page .admin-nav::before { top: max(22px, env(safe-area-inset-top, 0px)); left: 22px; color: #fff; }
  .admin-page .admin-nav-group { display: flex; }
  .admin-page .admin-nav-group > strong { display: block; padding: 16px 10px 6px; color: #758096; }
  .admin-page .admin-nav button { flex: none; width: 100%; min-height: 42px; padding: 10px 12px; color: #aeb7c6; text-align: left; white-space: normal; }
  .admin-page .admin-nav button.active { background: rgba(77,112,224,.24); color: #fff; }
  .admin-page .admin-nav-backdrop { position: fixed; inset: 0; z-index: 1190; display: block; border: 0; border-radius: 0; background: rgba(16,24,40,.48); }
  .admin-page .admin-nav-backdrop[hidden] { display: none; }
  .task-center-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .task-center-item { align-items: stretch; flex-direction: column; }
  .task-center-actions { width: 100%; }
  .task-center-actions button { flex: 1; }
  .task-center-related article { align-items: stretch; flex-direction: column; }
  .status-workflow-row { grid-template-columns: 1fr; }
  .admin-page #settingsPanel > .settings-subnav { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); overflow: visible; }
  .admin-page #settingsPanel > .settings-subnav > span { grid-column: 1 / -1; padding-top: 10px; }
  .admin-page #settingsPanel > .settings-subnav button { width: 100%; white-space: normal; }
}

.admin-page .asset-type-tabs { display: flex; flex-wrap: wrap; margin: 14px 0 10px; }
.admin-page .wecom-workbench.ai-asset-library-page { grid-template-columns: minmax(0, 1fr); min-height: 0; }
.admin-page .ai-asset-library-page > .settings-section-head { flex-wrap: wrap; }
.admin-page .ai-asset-library-page > .settings-section-head > div:last-child { display: flex; flex-wrap: wrap; gap: 8px; }
.admin-page .ai-asset-library-page > .settings-section-head button { white-space: nowrap; }
.admin-page .asset-type-tabs button { width: auto; min-width: 76px; padding-inline: 16px; }
.admin-page .asset-type-tabs button.active { border-color: var(--brand); background: var(--brand-soft); color: var(--brand); font-weight: 700; }
.admin-page .asset-capacity { display: grid; grid-template-columns: minmax(260px, 1fr) minmax(220px, .7fr); gap: 18px; align-items: center; margin-bottom: 16px; padding: 14px 16px; border: 1px solid var(--line); border-radius: 10px; background: #f8fafc; }
.admin-page .asset-capacity div { display: grid; gap: 5px; }
.admin-page .asset-capacity span { color: var(--muted); font-size: 12px; }
.admin-page .asset-capacity progress { width: 100%; height: 10px; accent-color: var(--brand); }
.admin-page #wecomKnowledgeForm { grid-template-columns: repeat(4, minmax(0, 1fr)); align-items: start; padding: 16px; border: 1px solid var(--line); border-radius: 10px; background: #fafbfc; }
.admin-page #wecomKnowledgeForm .knowledge-content,
.admin-page #wecomKnowledgeForm .wide-field { grid-column: span 2; }
.admin-page .channel-scope-field { display: flex; flex-wrap: wrap; gap: 14px; margin: 0; padding: 10px 12px; border: 1px solid var(--line); border-radius: 8px; }
.admin-page .channel-scope-field label { display: flex !important; grid-template-columns: auto 1fr; align-items: center; gap: 6px; color: var(--text) !important; }
.admin-page .channel-scope-field input { width: auto; }
.admin-page .asset-batch-bar { display: flex; align-items: center; gap: 12px; margin: 12px 0; }
.admin-page .asset-batch-bar label { display: flex; align-items: center; gap: 7px; color: var(--muted); font-size: 13px; }
.admin-page .asset-batch-bar input { width: auto; }
.admin-page .campaign-preview { margin: 14px 0; padding: 14px 16px; border: 1px dashed #c9ced9; border-radius: 9px; background: #f8fafc; }
.admin-page .campaign-preview p { margin: 5px 0 0; color: var(--muted); font-size: 13px; }

@media (max-width: 850px) {
  .admin-page .asset-capacity { grid-template-columns: 1fr; }
  .admin-page #wecomKnowledgeForm { grid-template-columns: 1fr; }
  .admin-page #wecomKnowledgeForm .knowledge-content,
  .admin-page #wecomKnowledgeForm .wide-field { grid-column: auto; }
}

/* 企业主题最终层：覆盖遗留模块中剩余的 10–11px 声明。 */
.admin-page .customer-select-label,
.admin-page .pool-summary-grid span,
.admin-page .safety-note p,
.admin-page .ai-provider-current strong,
.admin-page .ai-provider-options span,
.admin-page .ai-provider-warning,
.admin-page .ai-management-filters label,
.admin-page .wecom-sop-toolbar label { font-size: 12px; }

/* 最终字号兜底：旧模块的高特异性规则不得把后台辅助文字压到 12px 以下。 */
.admin-page .operations-card h2 small,
.admin-page .record-top time,
.admin-page .record-item p span,
.admin-page .record-item small,
.admin-page .audit-changes li strong,
.admin-page .survey-match-compare span,
.admin-page #productList .record-top > label,
.admin-page .stage-todo-grid small,
.admin-page .detail-facts dt,
.admin-page .ai-assistant-intro aside strong,
.admin-page .ai-assistant-intro aside span,
.admin-page .ai-card-head p,
.admin-page .ai-output-head span,
.admin-page .ai-result-block > strong,
.admin-page .ai-draft strong,
.admin-page .ai-draft button,
.admin-page .ai-fallback,
.admin-page .ai-related-list > strong,
.admin-page .ai-plan-summary span,
.admin-page .ai-priority-list div span,
.admin-page .ai-priority-list small,
.admin-page .ai-risk-list article span,
.admin-page .ai-risk-list article small,
.admin-page .guide-hero span,
.admin-page .guide-hero p,
.admin-page .guide-steps p,
.admin-page .guide-notes ul,
.admin-page .wecom-status-grid span,
.admin-page .wecom-status-grid small { font-size: 12px; }

/* 收口历史页面中的零散小字号与次级按钮，避免不同模块各用一套样式。 */
.admin-page small,
.admin-page .muted-empty,
.admin-page .field-note,
.admin-page .form-note { font-size: 12px !important; }
.admin-page .wecom-data-table .table-actions button,
.admin-page .batch-toolbar button,
.admin-page .ai-quick-questions button { font-size: 12px; }
.admin-page form:not(#loginForm) > button:not(.primary-button),
.admin-page .funnel-controls button,
.admin-page .stage-todo-filters button:not(.primary-button),
.admin-page .pool-filters button:not(.primary-button),
.admin-page .management-form button:not(.primary-button),
.admin-page .channel-count-actions button,
.admin-page .mobile-actions button,
.admin-page .wecom-sop-toolbar button,
.admin-page .knowledge-form button:not(.primary-button),
.admin-page .wecom-sop-form button:not(.primary-button),
.admin-page .detail-tabs button,
.admin-page .guide-steps button {
  min-height: 34px;
  padding: 6px 11px;
  border: 1px solid var(--line-strong);
  border-radius: 7px;
  background: var(--surface);
  color: var(--text-secondary);
  box-shadow: none;
  font-weight: 600;
}
.admin-page form:not(#loginForm) > button:not(.primary-button):hover,
.admin-page .funnel-controls button:hover,
.admin-page .stage-todo-filters button:not(.primary-button):hover,
.admin-page .pool-filters button:not(.primary-button):hover,
.admin-page .management-form button:not(.primary-button):hover,
.admin-page .channel-count-actions button:hover,
.admin-page .mobile-actions button:hover,
.admin-page .wecom-sop-toolbar button:hover,
.admin-page .knowledge-form button:not(.primary-button):hover,
.admin-page .wecom-sop-form button:not(.primary-button):hover,
.admin-page .detail-tabs button:hover,
.admin-page .guide-steps button:hover {
  border-color: #aab3c0;
  background: var(--surface-hover);
  color: var(--text);
  transform: none;
}
.admin-page .stage-todo-grid button.active,
.admin-page .detail-tabs button.active,
.admin-page .ai-risk-buckets button.active,
.admin-page .ai-provider-options span.active {
  border-color: var(--brand-border);
  background: var(--brand-soft);
  color: var(--brand);
  box-shadow: none;
}
.admin-page .pool-assign-bar,
.admin-page .ai-provider-current {
  border-color: var(--brand-border);
  background: #f7f9ff;
}
.admin-page .record-item p span,
.admin-page .guide-steps article > b,
.admin-page .ai-priority-list > button > b {
  background: var(--brand-soft);
  color: var(--brand);
  font-size: 12px;
}
.admin-page .calendar-day:hover,
.admin-page .calendar-day.has-todos { background: #f8faff; }
.admin-page .duplicate-pair,
.admin-page .duplicate-customer-card,
.admin-page .detail-facts > div { border-radius: 8px; }
.admin-page .primary-button:hover,
.admin-page form > .primary-button:hover {
  filter: none;
  transform: none;
  box-shadow: none;
}

@media (pointer: coarse) {
  .admin-page button,
  .admin-page a,
  .admin-page input,
  .admin-page select { min-height: 44px; }
}

@media (min-width: 560px) and (max-width: 819px) {
  .admin-page main { width: 100%; }
  .metric-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .filter-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .management-form { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (min-width: 820px) and (max-width: 1100px) {
  .admin-page {
    padding-top: max(28px, env(safe-area-inset-top, 0px));
    padding-right: max(22px, env(safe-area-inset-right, 0px));
    padding-bottom: max(44px, env(safe-area-inset-bottom, 0px));
    padding-left: max(22px, env(safe-area-inset-left, 0px));
  }
  .filter-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .management-form { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .desktop-records table { min-width: 1040px; }
}

@media (min-width: 851px) {
  .admin-page main { width: 100%; max-width: none; }
  .admin-page #dashboard { width: calc(100% - 136px); margin-left: 136px; }
  .admin-nav {
    position: fixed;
    z-index: 30;
    inset: 0 auto 0 0;
    display: flex;
    flex-direction: column;
    gap: 4px;
    width: 136px;
    margin: 0;
    padding: max(82px, calc(env(safe-area-inset-top, 0px) + 70px)) 8px max(18px, env(safe-area-inset-bottom, 0px));
    overflow-y: auto;
    background: #17182b;
  }
  .admin-nav::before {
    content: "外星跳动 CRM";
    position: absolute;
    top: max(24px, env(safe-area-inset-top, 0px));
    left: 12px;
    color: #fff;
    font-size: 15px;
    font-weight: 800;
    white-space: nowrap;
  }
  .admin-nav button { width: 100%; padding: 11px 9px; color: #b9bdd0; text-align: left; }
  .admin-nav button.active, .admin-nav button:hover { background: rgba(255,255,255,.1); color: #fff; }
}

@media (min-width: 1101px) {
  .admin-page {
    padding-top: max(34px, env(safe-area-inset-top, 0px));
    padding-right: max(28px, env(safe-area-inset-right, 0px));
    padding-bottom: max(50px, env(safe-area-inset-bottom, 0px));
    padding-left: max(28px, env(safe-area-inset-left, 0px));
  }
  .filter-grid,
  .management-form { grid-template-columns: repeat(5, minmax(0, 1fr)); }
}

#duplicateDialog { width: min(960px, calc(100% - 32px)); }
.calendar-head { align-items: flex-start; }
.calendar-controls { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.admin-page .calendar-controls input,
.admin-page .calendar-controls button {
  box-sizing: border-box;
  height: 40px;
  min-height: 40px;
  margin: 0;
}
.admin-page .calendar-controls input { min-width: 150px; }
.admin-page .calendar-controls button { display: inline-flex; align-items: center; justify-content: center; }
.calendar-filter-bar { display: flex; align-items: end; flex-wrap: wrap; gap: 8px; margin: 10px 0 2px; }
.calendar-filter-bar label { display: grid; gap: 4px; margin: 0; color: var(--muted); font-size: 11px; }
.calendar-filter-bar input, .calendar-filter-bar select { min-width: 150px; min-height: 36px; padding: 7px 9px; border: 1px solid var(--line-strong); border-radius: 7px; background: #fff; }
.calendar-filter-bar .export { min-height: 36px; }
.calendar-legend { display: inline-flex; align-items: center; gap: 5px; margin-left: auto; color: var(--muted); font-size: 11px; white-space: nowrap; }
.calendar-legend i { width: 7px; height: 7px; border-radius: 50%; }
.calendar-legend .pending { background: var(--brand); }
.calendar-legend .completed { background: var(--success); }
.calendar-legend .overdue { background: var(--danger); }
.calendar-scroll { overflow-x: auto; padding-bottom: 3px; }
.calendar-weekdays, .todo-calendar-grid { display: grid; grid-template-columns: repeat(7, minmax(76px, 1fr)); min-width: 560px; }
.calendar-weekdays { margin-top: 7px; border: 1px solid var(--line); border-bottom: 0; border-radius: 10px 10px 0 0; background: #f6f7fa; }
.calendar-weekdays span { padding: 4px 6px; color: var(--muted); font-size: 10px; font-weight: 700; text-align: center; }
.todo-calendar-grid { border-top: 1px solid var(--line); border-left: 1px solid var(--line); }
.calendar-day, .calendar-blank { min-height: 48px; border: 0; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); border-radius: 0; background: #fff; }
.calendar-blank { background: #fafbfc; }
.calendar-day { display: flex; align-items: flex-start; flex-direction: column; gap: 1px; padding: 3px 5px; color: var(--text); text-align: left; cursor: pointer; }
.calendar-day:hover { background: #f8f7ff; }
.calendar-day > span { display: grid; place-items: center; width: 19px; height: 19px; border-radius: 50%; font-size: 11px; font-weight: 800; }
.calendar-day.today > span { background: var(--brand); color: #fff; }
.calendar-day-metrics { display: flex; align-items: center; flex-wrap: wrap; gap: 2px 4px; width: 100%; }
.calendar-day-metrics em { padding: 0 3px; border-radius: 4px; font-size: 8px; font-style: normal; font-weight: 700; line-height: 13px; white-space: nowrap; }
.calendar-day-metrics .pending { background: var(--brand-soft); color: var(--brand); }
.calendar-day-metrics .completed { background: var(--success-bg); color: var(--success); }
.calendar-day-metrics .overdue { background: var(--danger-bg); color: var(--danger); }
.calendar-day.has-todos { background: #fcfcff; }
.calendar-day-detail { margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--line); }
.calendar-detail-groups { display: grid; gap: 12px; }
.calendar-detail-group { padding: 12px; border: 1px solid var(--line); border-radius: 9px; background: var(--surface-subtle); }
.calendar-detail-group > h4 { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin: 0 0 9px; font-size: 14px; }
.calendar-detail-group > h4 span { font-size: 12px; font-weight: 600; }
.calendar-detail-group.pending > h4 { color: var(--brand); }
.calendar-detail-group.overdue > h4 { color: var(--danger); }
.calendar-detail-group.completed > h4 { color: var(--success); }
.calendar-completed-count { padding: 3px 7px; border-radius: 999px; background: var(--success-bg); color: var(--success); font-size: 11px; font-weight: 700; }
.calendar-completed-row details { margin-top: 8px; padding-top: 8px; border-top: 1px dashed var(--line); }
.calendar-completed-row summary { color: var(--brand); font-size: 12px; font-weight: 700; cursor: pointer; }
.calendar-record-stack { display: grid; gap: 7px; margin: 8px 0 0; padding: 0; list-style: none; }
.calendar-record-stack li { padding: 8px; border-radius: 7px; background: #fff; }
.calendar-record-stack p { margin: 3px 0; }
.calendar-detail-pager { display: flex; align-items: center; justify-content: center; gap: 8px; margin-top: 10px; }
.calendar-detail-pager button { min-height: 32px; padding: 5px 10px; border: 1px solid var(--line-strong); border-radius: 7px; background: #fff; }
.duplicate-list { display: grid; gap: 14px; margin-top: 16px; }
.duplicate-pair { padding: 16px; border: 1px solid var(--line); border-radius: 16px; background: #f8f9fc; }
.duplicate-pair > header { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 12px; }
.duplicate-pair > header div { display: flex; align-items: center; gap: 10px; }
.duplicate-pair > header span { padding: 4px 9px; border-radius: 999px; background: #fff0d8; color: #9a5a00; font-size: 12px; font-weight: 700; }
.duplicate-pair > header small { max-width: 430px; color: var(--muted); text-align: right; }
.duplicate-compare { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.duplicate-customer-card { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; padding: 14px; border: 1px solid var(--line); border-radius: 14px; background: #fff; }
.duplicate-customer-card strong { display: block; margin-bottom: 7px; }
.duplicate-customer-card strong small { color: var(--muted); font-weight: 500; }
.duplicate-customer-card p { margin: 3px 0; }
.duplicate-customer-card > button { flex: 0 0 auto; }

@media (max-width: 559px) {
  .toast-region { top: auto; right: 14px; bottom: max(14px, env(safe-area-inset-bottom, 0px)); }
  .survey-match-compare { grid-template-columns: 1fr; }
  .operations-funnel-head { align-items: stretch; flex-direction: column; }
  .funnel-controls { align-items: stretch; }
  .funnel-controls label { flex: 1 1 calc(50% - 7px); }
  .admin-header,
  .settings-section-head { align-items: stretch; }
  .admin-header { flex-direction: column; }
  .admin-header-tools { justify-content: flex-start; }
  .global-search { flex: 1 1 100%; width: 100%; grid-template-columns: minmax(0, 1fr) auto; }
  .current-account { width: 100%; }
  .settings-section-head { flex-direction: column; }
  .settings-section-head .primary-button { width: 100%; }
  .ai-provider-status { grid-template-columns: 1fr; }
  .ai-provider-options { grid-template-columns: 1fr; }
  .quick-dates { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .admin-page dialog { width: calc(100% - 20px); }
  .admin-page dialog form,
  .admin-page dialog > section { padding: 18px; }
  .detail-facts { grid-template-columns: 1fr; }
  .detail-actions { display: grid; grid-template-columns: 1fr 1fr; }
  .ai-assistant-intro, .guide-hero, .ai-card-head { align-items: stretch; flex-direction: column; }
  .ai-customer-picker { grid-template-columns: 1fr; }
  .ai-question-row { grid-template-columns: 1fr; }
  .pool-summary-grid, .pool-filters { grid-template-columns: 1fr; }
  .pool-assign-bar { align-items: stretch; flex-direction: column; }
  .pool-user-quota-list article { grid-template-columns: 1fr 1fr; }
  .pool-user-quota-list article > div:first-child, .pool-user-quota-effective, .pool-user-quota-actions { grid-column: 1 / -1; }
  .channel-child-row { grid-template-columns: 1fr 1fr; }
  .channel-child-row > strong { grid-column: 1 / -1; }
  .ai-plan-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ai-risk-buckets { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ai-risk-list article { align-items: stretch; flex-direction: column; }
  .ai-priority-list > button { grid-template-columns: 28px minmax(0, 1fr); }
  .ai-priority-list > button small { grid-column: 2; }
  .guide-steps, .guide-notes { grid-template-columns: 1fr; }
  .guide-steps article { grid-template-columns: 34px minmax(0, 1fr); }
  .guide-steps button { grid-column: 1 / -1; width: 100%; }
  .wecom-workbench { grid-template-columns: 1fr; }
  .wecom-subnav { flex-direction: row; overflow-x: auto; border-right: 0; border-bottom: 1px solid #e7e9f0; }
  .wecom-subnav strong { display: none; }
  .wecom-subnav button { flex: 0 0 auto; width: auto; white-space: nowrap; }
  .wecom-content { padding: 16px 14px 22px; }
  .wecom-stat-row, .wecom-plan-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .wecom-plan-form { grid-template-columns: 1fr; }
  .wecom-plan-form .wide-field { grid-column: auto; }
  .ai-target-builder { grid-template-columns: 1fr; }
  .ai-target-builder-title, .ai-target-condition-list { grid-column: auto; }
  .takeover-hosting-grid { grid-template-columns: 1fr; }
  .takeover-working-days { grid-column: auto; }
  .wecom-filter-bar { align-items: stretch; flex-direction: column; }
  .wecom-filter-bar label { width: 100%; }
  .wecom-status-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .knowledge-form, .wecom-sop-form { grid-template-columns: 1fr; }
  .wecom-sop-form .sop-steps-field { grid-column: auto; }
  .duplicate-pair > header, .duplicate-customer-card { align-items: stretch; flex-direction: column; }
  .duplicate-pair > header small { text-align: left; }
  .duplicate-compare { grid-template-columns: 1fr; }
  .duplicate-customer-card > button { width: 100%; }
}

@media (max-height: 520px) and (orientation: landscape) {
  .admin-page {
    padding-top: max(10px, env(safe-area-inset-top, 0px));
    padding-bottom: max(12px, env(safe-area-inset-bottom, 0px));
  }
  .admin-header { margin-bottom: 10px; }
  .admin-page dialog { max-height: calc(100dvh - 12px); }
  .admin-page dialog form,
  .admin-page dialog > section { padding: 16px 18px; }
}

/* 展开态折叠屏：内容保持连续，弹窗落在单侧屏幕，避免跨过中间铰链。 */
@media (horizontal-viewport-segments: 2), (spanning: single-fold-vertical) {
  .admin-page main { width: 100%; max-width: none; }
  .admin-page dialog {
    width: min(520px, calc(50vw - 32px));
    margin-left: max(16px, env(safe-area-inset-left, 0px));
    margin-right: auto;
  }
}

@media (vertical-viewport-segments: 2), (spanning: single-fold-horizontal) {
  .admin-page dialog { max-height: calc(50dvh - 18px); }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    scroll-behavior: auto !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }
}

/* ========================================================================== 
   企业级后台视觉系统 v2
   仅覆盖后台外观：克制中性色、统一 8px 间距、紧凑表格和清晰操作层级。
   ========================================================================== */
.admin-page {
  --brand: #3156d3;
  --brand-hover: #2849ba;
  --brand-soft: #eef3ff;
  --brand-border: #cdd9fb;
  --text: #1d2939;
  --text-secondary: #475467;
  --muted: #667085;
  --muted-light: #98a2b3;
  --surface: #ffffff;
  --surface-subtle: #f8f9fb;
  --surface-hover: #f5f7fa;
  --page-bg: #f3f5f7;
  --line: #e4e7ec;
  --line-strong: #d0d5dd;
  --success: #16855b;
  --success-soft: #eaf8f2;
  --warning: #b65f16;
  --warning-soft: #fff4e5;
  --danger: #c53c46;
  --danger-soft: #fff0f1;
  --info: #2563b8;
  --info-soft: #edf5ff;
  --radius-control: 8px;
  --radius-card: 10px;
  --radius-dialog: 12px;
  --shadow-float: 0 16px 40px rgba(16, 24, 40, .16);
  min-height: 100dvh;
  color: var(--text);
  background: var(--page-bg);
  font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
  font-size: 14px;
  line-height: 1.5;
}

.admin-page main { width: 100%; }
.admin-page #dashboard { max-width: 1680px; }
.admin-page .card {
  border: 1px solid var(--line);
  border-radius: var(--radius-card);
  background: var(--surface);
  box-shadow: none;
}
.admin-page h1,
.admin-page h2,
.admin-page h3,
.admin-page h4,
.admin-page strong { color: var(--text); }
.admin-page h2 { font-size: 16px; line-height: 1.45; }
.admin-page h3 { font-size: 15px; line-height: 1.45; }
.admin-page small,
.admin-page .muted-empty,
.admin-page .form-note { color: var(--muted); font-size: 12px; }
.admin-page a { color: var(--brand); }

/* 输入与焦点 */
.admin-page input,
.admin-page select,
.admin-page textarea {
  min-height: 36px;
  margin-top: 6px;
  padding: 7px 10px;
  border: 1px solid var(--line-strong);
  border-radius: var(--radius-control);
  background: var(--surface);
  color: var(--text);
  box-shadow: none;
  transition: border-color .15s ease, box-shadow .15s ease, background-color .15s ease;
}
.admin-page textarea { line-height: 1.6; }
.admin-page input::placeholder,
.admin-page textarea::placeholder { color: var(--muted-light); }
.admin-page input:hover,
.admin-page select:hover,
.admin-page textarea:hover { border-color: #b8c0cc; }
.admin-page input:focus,
.admin-page select:focus,
.admin-page textarea:focus {
  border-color: var(--brand);
  background: var(--surface);
  box-shadow: 0 0 0 3px rgba(49, 86, 211, .12);
  outline: none;
}
.admin-page input:disabled,
.admin-page select:disabled,
.admin-page textarea:disabled {
  border-color: var(--line);
  background: #f2f4f7;
  color: var(--muted-light);
  cursor: not-allowed;
}

/* 按钮：默认次级，实心色只留给核心动作 */
.admin-page button { color: var(--text-secondary); transition: color .15s ease, border-color .15s ease, background-color .15s ease, box-shadow .15s ease; }
.admin-page .primary-button,
.admin-page .head-actions .primary-button,
.admin-page .settings-section-head .primary-button,
.admin-page dialog .primary-button,
.admin-page .task-subnav button.active,
.admin-page .ai-question-row button,
.admin-page .ai-management-filters button:not(#copyAiManagement) {
  min-height: 36px;
  border: 1px solid var(--brand);
  border-radius: var(--radius-control);
  background: var(--brand);
  color: #fff;
  box-shadow: none;
  font-weight: 600;
}
.admin-page .primary-button:hover,
.admin-page .head-actions .primary-button:hover,
.admin-page .settings-section-head .primary-button:hover,
.admin-page dialog .primary-button:hover,
.admin-page .ai-question-row button:hover,
.admin-page .ai-management-filters button:not(#copyAiManagement):hover {
  border-color: var(--brand-hover);
  background: var(--brand-hover);
}
.admin-page .export,
.admin-page .head-actions button:not(.primary-button),
.admin-page .settings-section-head > button:not(.primary-button),
.admin-page .detail-actions button:not(.primary-button),
.admin-page .calendar-controls button,
.admin-page .wecom-filter-bar button:not(.primary-button),
.admin-page [data-close-wecom-editor],
.admin-page .header-tool,
.admin-page .text-button {
  min-height: 36px;
  padding: 7px 12px;
  border: 1px solid var(--line-strong);
  border-radius: var(--radius-control);
  background: var(--surface);
  color: var(--text-secondary);
  box-shadow: none;
  font-weight: 600;
}
.admin-page .export:hover,
.admin-page .head-actions button:not(.primary-button):hover,
.admin-page .settings-section-head > button:not(.primary-button):hover,
.admin-page .detail-actions button:not(.primary-button):hover,
.admin-page .calendar-controls button:hover,
.admin-page .wecom-filter-bar button:not(.primary-button):hover,
.admin-page [data-close-wecom-editor]:hover,
.admin-page .header-tool:hover,
.admin-page .text-button:hover {
  border-color: #aab3c0;
  background: var(--surface-hover);
  color: var(--text);
}
.admin-page .danger-button,
.admin-page .deal-void-button,
.admin-page dialog form > div:last-child .danger-button,
.admin-page .dialog-danger-zone button {
  border-color: #f3bec3;
  background: var(--danger-soft);
  color: var(--danger);
  box-shadow: none;
  font-weight: 600;
}
.admin-page button:disabled {
  opacity: .5;
  cursor: not-allowed;
}
.admin-page button:focus-visible,
.admin-page a:focus-visible,
.admin-page summary:focus-visible {
  outline: 3px solid rgba(49, 86, 211, .18);
  outline-offset: 2px;
}

/* 顶部区域 */
.admin-page .admin-header {
  min-height: 48px;
  margin: 0 0 20px;
  padding: 0;
  align-items: center;
}
.admin-page .admin-title { gap: 8px 14px; }
.admin-page .admin-header h1 {
  margin: 0;
  color: var(--text);
  font-size: 24px;
  font-weight: 700;
  letter-spacing: -.02em;
}
.admin-page .admin-header p {
  margin: 1px 0 0;
  color: var(--muted);
  font-size: 12px;
}
.admin-page .admin-header-tools { gap: 8px; }
.admin-page .global-search { grid-template-columns: minmax(152px, 220px) auto; }
.admin-page .global-search input,
.admin-page .global-search button { min-height: 36px; margin: 0; }
.admin-page .global-search input { border-radius: 8px 0 0 8px; }
.admin-page .global-search button {
  padding: 7px 12px;
  border: 1px solid var(--line-strong);
  border-left: 0;
  border-radius: 0 8px 8px 0;
  background: var(--surface);
  color: var(--text-secondary);
  font-weight: 600;
}
.admin-page .current-account { color: var(--muted); font-size: 12px; }

/* 指标、业务卡片与信息层级 */
.admin-page .metric-grid { gap: 12px; margin-bottom: 16px; }
.admin-page .metric-grid article {
  min-height: 96px;
  padding: 18px 20px;
  border: 1px solid var(--line);
  border-radius: var(--radius-card);
  background: var(--surface);
  box-shadow: none;
  transition: border-color .15s ease, background-color .15s ease;
}
.admin-page .metric-grid article[tabindex]:hover,
.admin-page .metric-grid article[tabindex]:focus-visible {
  border-color: var(--brand-border);
  background: #fbfcff;
  outline: none;
}
.admin-page .metric-grid span { color: var(--muted); font-size: 13px; }
.admin-page .metric-grid strong {
  margin-top: 10px;
  color: var(--text);
  font-size: 30px;
  font-weight: 700;
  letter-spacing: -.03em;
}
.admin-page .operations-grid,
.admin-page .guide-page,
.admin-page .ai-assistant-grid,
.admin-page .wecom-operations { gap: 16px; }
.admin-page .operations-card,
.admin-page .ai-assistant-card { padding: 20px; }
.admin-page .operations-card h2,
.admin-page .ai-card-head h2 { font-size: 16px; }
.admin-page .funnel-step,
.admin-page .stage-todo-grid button,
.admin-page .alert-card,
.admin-page .operations-list button,
.admin-page .operations-list article {
  border-color: var(--line);
  border-radius: 8px;
  background: var(--surface-subtle);
  box-shadow: none;
}
.admin-page .funnel-step:hover,
.admin-page .stage-todo-grid button:hover,
.admin-page .operations-list button:hover { border-color: var(--brand-border); background: var(--brand-soft); }
.admin-page .funnel-step strong,
.admin-page .stage-todo-grid strong { color: var(--text); }
.admin-page .alert-card { background: var(--surface); }
.admin-page .alert-card span { color: var(--info); }

/* 筛选与工具栏 */
.admin-page .filter-card { margin-bottom: 12px; padding: 16px; }
.admin-page .filter-title { margin-bottom: 12px; }
.admin-page .filter-title strong { font-size: 15px; }
.admin-page .filter-title button { color: var(--brand); font-size: 12px; cursor: pointer; }
.admin-page .quick-dates { gap: 8px; margin-bottom: 12px; }
.admin-page .quick-dates button {
  min-height: 32px;
  border: 1px solid var(--line-strong);
  border-radius: 7px;
  background: var(--surface);
  color: var(--text-secondary);
}
.admin-page .quick-dates button:hover { border-color: var(--brand-border); color: var(--brand); }
.admin-page .operations-funnel-head,
.admin-page .funnel-controls { align-items: center; }
.admin-page .funnel-controls label {
  display: flex;
  align-items: center;
  gap: 8px;
  height: 44px;
  margin: 0;
  white-space: nowrap;
  font-weight: 600;
}
.admin-page .funnel-controls input,
.admin-page .funnel-controls button,
.admin-page .funnel-controls .export {
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  height: 44px;
  min-height: 44px;
  margin: 0;
}
.admin-page .filter-grid { gap: 10px; }
.admin-page .filter-grid label,
.admin-page .stage-todo-filters label,
.admin-page .funnel-controls label,
.admin-page .wecom-filter-bar label,
.admin-page .wecom-plan-form label,
.admin-page .management-form label,
.admin-page .knowledge-form label,
.admin-page .wecom-sop-form label {
  color: var(--muted);
  font-size: 12px;
  font-weight: 500;
}
.admin-page .filter-grid input,
.admin-page .filter-grid select { min-height: 36px; margin-top: 5px; font-size: 13px; }
.admin-page .batch-toolbar,
.admin-page .task-subnav,
.admin-page .settings-subnav {
  gap: 8px;
  padding: 10px 16px;
  border-color: var(--line);
  background: var(--surface-subtle);
}
.admin-page .batch-toolbar { align-items: center; }
.admin-page .batch-toolbar strong {
  display: inline-flex;
  align-items: center;
  min-height: 40px;
  margin: 0 4px 0 0;
  color: var(--text-secondary);
  font-size: 13px;
  font-weight: 600;
  line-height: 1;
}
.admin-page .batch-toolbar button,
.admin-page .batch-toolbar select {
  box-sizing: border-box;
  width: auto;
  height: 40px;
  min-height: 40px;
  margin: 0;
  padding: 0 13px;
  border-color: var(--line-strong);
  border-radius: 8px;
  background: var(--surface);
  color: var(--text-secondary);
  font-size: 13px !important;
  font-weight: 600;
  line-height: normal;
  vertical-align: middle;
}
.admin-page .batch-toolbar button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
}
.admin-page .batch-toolbar button:hover,
.admin-page .batch-toolbar select:hover {
  border-color: var(--brand-border);
  color: var(--text);
}
.admin-page .batch-toolbar button:focus-visible,
.admin-page .batch-toolbar select:focus-visible {
  border-color: var(--brand);
  outline: 3px solid rgba(49, 86, 211, .12);
  outline-offset: 0;
}
.admin-page .batch-toolbar button:disabled,
.admin-page .batch-toolbar select:disabled {
  border-color: var(--line);
  background: #f2f4f7;
  color: #98a2b3;
  opacity: 1;
  cursor: not-allowed;
}
.admin-page .task-subnav button,
.admin-page .settings-subnav button {
  min-height: 34px;
  border-radius: 7px;
  background: transparent;
  color: var(--muted);
}
.admin-page .settings-subnav > span { align-self: center; color: var(--muted); font-size: 10px; font-weight: 800; white-space: nowrap; }
.admin-page .settings-subnav button.active {
  background: var(--brand-soft);
  color: var(--brand);
}

/* 数据列表和表格 */
.admin-page .records-card { border-radius: var(--radius-card); overflow: hidden; }
.admin-page .records-head {
  min-height: 64px;
  padding: 14px 16px;
  border-color: var(--line);
}
.admin-page .records-head h2 { margin: 0; font-size: 16px; }
.admin-page .records-head input { min-height: 36px; background: var(--surface); }
.admin-page .head-actions { gap: 8px; }
.admin-page .desktop-records,
.admin-page .table-wrap,
.admin-page .wecom-table-wrap { width: 100%; overflow-x: auto; }
.admin-page table { color: var(--text); font-size: 13px; }
.admin-page th {
  height: 40px;
  padding: 9px 12px;
  border-color: var(--line);
  background: var(--surface-subtle);
  color: var(--muted);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .01em;
}
.admin-page td {
  height: 48px;
  padding: 11px 12px;
  border-color: var(--line);
  color: var(--text-secondary);
  vertical-align: middle;
}
.admin-page tbody tr { transition: background-color .12s ease; }
.admin-page tbody tr:hover { background: #f9fafb; }
.admin-page .desktop-records tfoot th {
  border-top: 1px solid var(--line-strong);
  background: var(--surface-subtle);
  color: var(--text);
}
.admin-page .table-sort { color: var(--muted); font-weight: 600; }
.admin-page .table-sort:hover { color: var(--brand); }
.admin-page .customer-name-button { color: var(--text); font-weight: 600; }
.admin-page .customer-name-button:hover { color: var(--brand); }
.admin-page .customer-row-actions { gap: 6px; }
.admin-page .customer-primary-action {
  border-color: var(--brand-border);
  border-radius: 7px;
  background: var(--brand-soft);
  color: var(--brand);
  font-weight: 600;
}
.admin-page .tag,
.admin-page .status-pill,
.admin-page .ai-status-badge {
  min-height: 24px;
  padding: 3px 8px;
  border-radius: 999px;
  background: var(--info-soft);
  color: var(--info);
  font-size: 12px;
  font-weight: 600;
}
.admin-page .tag.success,
.admin-page .status-pill.success { border: 1px solid #abefc6; background: var(--success-soft); color: var(--success); }
.admin-page .tag.warning,
.admin-page .status-pill.warning { border: 1px solid #fedf89; background: var(--warning-soft); color: var(--warning); }
.admin-page .tag.danger,
.admin-page .status-pill.danger { border: 1px solid #fecdca; background: var(--danger-soft); color: var(--danger); }
.admin-page .tag.info,
.admin-page .status-pill.info { border: 1px solid #b2ddff; background: var(--info-soft); color: var(--info); }
.admin-page .tag.neutral,
.admin-page .status-pill.neutral { border: 1px solid var(--line-strong); background: #f2f4f7; color: var(--muted); }
.admin-page .pager { min-height: 52px; padding: 10px 16px; border-top: 1px solid var(--line); color: var(--muted); font-size: 12px; }
.admin-page .pager button {
  min-height: 32px;
  padding: 6px 11px;
  border-color: var(--line-strong);
  background: var(--surface);
  color: var(--text-secondary);
}
.admin-page .empty { padding: 56px 16px; color: var(--muted-light); }

/* 二级工作区、AI 与操作指引 */
.admin-page .wecom-workbench { grid-template-columns: 168px minmax(0, 1fr); min-height: 660px; }
.admin-page .wecom-subnav {
  gap: 4px;
  padding: 16px 10px;
  border-color: var(--line);
  background: var(--surface-subtle);
}
.admin-page .wecom-subnav strong { padding: 4px 10px 12px; font-size: 15px; }
.admin-page .wecom-subnav button {
  min-height: 38px;
  padding: 8px 10px;
  border-radius: 7px;
  color: var(--text-secondary);
}
.admin-page .wecom-subnav button:hover { background: #eef1f5; color: var(--text); }
.admin-page .wecom-subnav button.active {
  background: var(--brand-soft);
  color: var(--brand);
  font-weight: 600;
}
.admin-page .ai-portrait-workbench { grid-template-columns: 1fr; grid-template-rows: auto auto; align-content: start; min-height: 0; }
.admin-page .ai-portrait-subnav {
  flex-direction: row;
  align-items: center;
  align-self: start;
  gap: 8px;
  min-height: 0;
  padding: 8px 12px;
  overflow-x: auto;
  border-right: 0;
  border-bottom: 1px solid var(--line);
  background: var(--surface);
}
.admin-page .ai-portrait-subnav button {
  flex: 0 0 auto;
  width: auto;
  min-width: 96px;
  min-height: 34px;
  padding: 7px 14px;
  text-align: center;
  white-space: nowrap;
}
.admin-page .wecom-content { padding: 20px 24px 28px; }
.admin-page .settings-section-head { min-height: 62px; padding: 14px 16px; border-color: var(--line); }
.admin-page .settings-section-head h3 { margin-bottom: 4px; font-size: 16px; }
.admin-page .settings-section-head p { color: var(--muted); font-size: 12px; }

.admin-page .content-risk-summary { grid-template-columns: repeat(4, minmax(0, 1fr)); padding: 14px 16px 4px; }
.admin-page .content-risk-summary button { min-height: 72px; text-align: left; }
.admin-page .content-risk-filter { padding: 12px 16px; border-bottom: 1px solid var(--line); }
.admin-page .content-risk-rule-list { padding: 0 16px 16px; }
.admin-page .content-risk-rule .record-top > div { display: flex; align-items: center; flex-wrap: wrap; gap: 7px; }
.admin-page .content-risk-rule code { display: inline-block; max-width: 420px; overflow: hidden; color: #3c465d; text-overflow: ellipsis; vertical-align: bottom; white-space: nowrap; }
.admin-page .content-risk-test,
.admin-page .content-risk-events { margin: 12px 16px; overflow: hidden; border: 1px solid var(--line); border-radius: 12px; background: #fff; }
.admin-page .content-risk-test .management-form { border-bottom: 0; }
.admin-page .content-risk-test-result { padding: 0 15px 15px; }
.admin-page .content-risk-result { display: flex; align-items: center; gap: 12px; padding: 12px 14px; border-radius: 9px; background: #f5f7fb; }
.admin-page .content-risk-result.danger { background: #fff1f1; color: #b42318; }
.admin-page .content-risk-result.warning { background: #fff8e8; color: #9a6700; }
.admin-page .content-risk-result.info { background: #eef4ff; color: #2457c5; }
.admin-page .content-risk-result.success { background: #edf9f2; color: #18794e; }
.admin-page .content-risk-scopes { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; padding: 12px; border: 1px solid var(--line); border-radius: 9px; }
.admin-page .content-risk-scopes legend { padding: 0 6px; font-weight: 800; }
.admin-page .content-risk-scopes label { display: flex; align-items: center; gap: 7px; margin: 0; }
.admin-page .content-risk-scopes input { width: auto; }
@media (max-width: 760px) {
  .admin-page .content-risk-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .admin-page .content-risk-scopes { grid-template-columns: 1fr; }
}
.admin-page .wecom-filter-bar,
.admin-page .wecom-plan-form,
.admin-page .wecom-editor {
  border-color: var(--line);
  border-radius: 8px;
  background: var(--surface-subtle);
}
.admin-page .wecom-filter-bar { gap: 8px; margin: 12px 0 16px; padding: 12px; }
.admin-page .wecom-plan-form { gap: 12px; padding: 16px; }
.admin-page .wecom-stat-row,
.admin-page .wecom-plan-summary { gap: 10px; }
.admin-page .wecom-stat-row span,
.admin-page .wecom-plan-summary span {
  padding: 12px 14px;
  border-color: var(--line);
  border-radius: 8px;
  background: var(--surface);
  color: var(--muted);
}
.admin-page .wecom-data-table td { height: 48px; padding: 9px 10px; font-size: 13px; }
.admin-page .wecom-data-table th { height: 40px; padding: 9px 10px; font-size: 12px; }
.admin-page .wecom-data-table .table-actions button:first-child {
  border-color: var(--brand-border);
  background: var(--brand-soft);
  color: var(--brand);
}
.admin-page .wecom-data-table .table-actions button[data-delete-wecom-sop],
.admin-page .wecom-data-table .table-actions button[data-delete-wecom-knowledge] {
  border-color: #fecdca;
  background: var(--danger-soft);
  color: var(--danger);
}
.admin-page .ai-assistant-intro {
  padding: 20px;
  border-color: var(--line);
  background: var(--surface);
}
.admin-page .ai-status-badge.model { background: var(--success-soft); color: var(--success); }
.admin-page .ai-quick-questions button,
.admin-page .ai-card-head > button,
.admin-page .ai-customer-picker button,
.admin-page .ai-action-row button,
.admin-page .ai-result-actions button,
.admin-page .ai-risk-list button {
  border-color: var(--line-strong);
  border-radius: 7px;
  background: var(--surface);
  color: var(--text-secondary);
  box-shadow: none;
}
.admin-page .ai-quick-questions button:hover,
.admin-page .ai-card-head > button:hover,
.admin-page .ai-action-row button:hover { border-color: var(--brand-border); background: var(--brand-soft); color: var(--brand); }
.admin-page .ai-action-row button:first-child { border-color: var(--brand); background: var(--brand); color: #fff; }
.admin-page .ai-output,
.admin-page .ai-model-text { border-color: var(--line); border-radius: 8px; background: var(--surface-subtle); }
.admin-page .ai-draft { border-color: var(--brand-border); background: var(--brand-soft); }
.admin-page .guide-hero {
  padding: 22px;
  border-color: #d9e2f9;
  background: #1f3f87;
}
.admin-page .guide-hero button { color: #2449a3; }
.admin-page .guide-steps article,
.admin-page .guide-notes .card { border-radius: var(--radius-card); }

/* 弹窗与浮层 */
.admin-page dialog {
  border: 1px solid var(--line);
  border-radius: var(--radius-dialog);
  background: var(--surface);
  box-shadow: var(--shadow-float);
}
.admin-page dialog::backdrop { background: rgba(16, 24, 40, .52); backdrop-filter: blur(1px); }
.admin-page dialog form,
.admin-page dialog > section { padding: 24px; }
.admin-page dialog h2 { margin: 0 0 20px; font-size: 20px; }
.admin-page dialog form > div:last-child { gap: 8px; margin-top: 20px; padding-top: 16px; border-top: 1px solid var(--line); }
.admin-page .toast-message {
  border-color: #344054;
  border-radius: 8px;
  background: #1d2939;
  box-shadow: var(--shadow-float);
}

/* 登录页保持专业、简洁 */
.admin-page .login-card {
  width: min(420px, 100%);
  padding: 32px;
  border-radius: 12px;
  box-shadow: 0 12px 32px rgba(16, 24, 40, .08);
}
.admin-page .login-card h1 { font-size: 26px; }
.admin-page .login-card form > button {
  min-height: 42px;
  border-radius: 8px;
  background: var(--brand);
  box-shadow: none;
}

/* 桌面端窄侧栏：保持内容区宽、入口清晰 */
@media (min-width: 851px) {
  .admin-page { padding: 24px 28px 40px; }
  .admin-page #dashboard {
    width: auto;
    margin-left: 168px;
  }
  .admin-page .admin-nav {
    width: 168px;
    gap: 4px;
    padding: max(80px, calc(env(safe-area-inset-top, 0px) + 68px)) 12px max(20px, env(safe-area-inset-bottom, 0px));
    border-right: 1px solid rgba(255,255,255,.06);
    background: #111827;
  }
  .admin-page .admin-nav::before {
    top: max(24px, env(safe-area-inset-top, 0px));
    left: 18px;
    color: #f9fafb;
    font-size: 16px;
    letter-spacing: -.01em;
  }
  .admin-page .admin-nav button {
    position: relative;
    min-height: 40px;
    padding: 9px 12px;
    border-radius: 7px;
    color: #aeb7c6;
    font-size: 13px;
    font-weight: 500;
  }
  .admin-page .admin-nav button:hover { background: rgba(255,255,255,.06); color: #fff; }
  .admin-page .admin-nav button.active {
    background: rgba(77, 112, 224, .24);
    color: #fff;
    font-weight: 600;
  }
  .admin-page .admin-nav button.active::before {
    content: "";
    position: absolute;
    top: 9px;
    bottom: 9px;
    left: -12px;
    width: 3px;
    border-radius: 0 3px 3px 0;
    background: #6f8ff2;
  }
.admin-page .desktop-records table { min-width: 1040px; }
.admin-page .desktop-records th:first-child,
.admin-page .desktop-records td:first-child { position: sticky; left: 0; z-index: 3; width: 42px; min-width: 42px; background: var(--surface); }
.admin-page .desktop-records th:nth-child(2),
.admin-page .desktop-records td:nth-child(2) { position: sticky; left: 42px; z-index: 3; min-width: 108px; background: var(--surface); box-shadow: 5px 0 8px -8px rgba(16,24,40,.35); }
.admin-page .desktop-records th:last-child,
.admin-page .desktop-records td:last-child { position: sticky; right: 0; z-index: 3; min-width: 142px; background: var(--surface); box-shadow: -5px 0 8px -8px rgba(16,24,40,.35); }
.admin-page .desktop-records th { z-index: 4; }
.admin-page .desktop-records td.date,
.admin-page .desktop-records th:nth-child(3) { white-space: nowrap; }
.admin-page .desktop-records td:nth-child(10) { min-width: 190px; max-width: 260px; }
.admin-page .desktop-records td:nth-child(10) .latest-followup-note,
.admin-page .desktop-records td:nth-child(10) p { display: -webkit-box; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; }
.admin-page #dealsPanel .desktop-records table { min-width: 1320px; }
.admin-page #dealsPanel .desktop-records th:nth-child(10),
.admin-page #dealsPanel .desktop-records td:nth-child(10) { min-width: 96px; max-width: none; white-space: nowrap; }
}

.deal-cycle-badge { display: inline-flex; align-items: center; min-height: 26px; padding: 3px 8px; border: 1px solid #c7d7fe; border-radius: 999px; background: #eef4ff; color: #3156d3; font-size: 12px; font-weight: 700; white-space: nowrap; }
@media (max-width: 700px) {
  .deal-comparison-panel .trend-card-head { align-items: flex-start; flex-direction: column; }
  .deal-comparison-panel .trend-card-head > div:first-child { align-items: flex-start; flex-direction: column; gap: 2px; }
  .deal-comparison-actions { width: 100%; }
  .deal-comparison-actions .trend-scope-tabs { flex: 1 1 auto; }
  .deal-comparison-actions .trend-scope-tabs button { flex: 1 1 0; }
}

/* 平板、手机和折叠屏：导航转为横向，触控不牺牲密度与可读性 */
@media (max-width: 850px) {
  .admin-page { padding: max(16px, env(safe-area-inset-top, 0px)) max(14px, env(safe-area-inset-right, 0px)) max(28px, env(safe-area-inset-bottom, 0px)) max(14px, env(safe-area-inset-left, 0px)); }
  .admin-page .admin-nav {
    gap: 4px;
    margin-bottom: 16px;
    padding: 4px;
    border: 1px solid var(--line);
    border-radius: 9px;
    background: var(--surface);
  }
  .admin-page .admin-nav button { min-height: 36px; padding: 8px 11px; border-radius: 6px; color: var(--muted); }
  .admin-page .admin-nav button.active { background: var(--brand-soft); color: var(--brand); }
  .admin-page .admin-header { align-items: flex-start; gap: 12px; }
  .admin-page .admin-header-tools { width: 100%; justify-content: flex-start; }
  .admin-page .metric-grid article { min-height: 88px; padding: 16px; }
  .admin-page .metric-grid strong { font-size: 27px; }
  .admin-page .wecom-workbench { grid-template-columns: 1fr; }
  .admin-page .wecom-subnav {
    flex-direction: row;
    gap: 4px;
    padding: 8px;
    overflow-x: auto;
    border-right: 0;
    border-bottom: 1px solid var(--line);
  }
  .admin-page .wecom-subnav strong { display: none; }
  .admin-page .wecom-subnav button { flex: 0 0 auto; width: auto; white-space: nowrap; }
  .admin-page .wecom-content { padding: 16px; }
  .sop-step-row { grid-template-columns: 32px repeat(3, minmax(90px, 1fr)); }
  .sop-step-content { grid-column: 2 / -1; }
  .sop-step-actions { grid-column: 2 / -1; grid-template-columns: repeat(4, auto); justify-self: start; }
}

@media (min-width: 851px) and (max-width: 1100px) {
  .admin-page .funnel-row { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

@media (max-width: 559px) {
  .admin-page { font-size: 14px; }
  .admin-page .admin-header h1 { font-size: 22px; }
  .admin-page .admin-title { display: grid; gap: 2px; }
  .admin-page .admin-header-tools { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .admin-page .global-search { grid-column: 1 / -1; }
  .admin-page .current-account { grid-column: 1 / -1; }
  .admin-page .header-tool,
  .admin-page .text-button { width: 100%; }
  .admin-page .metric-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
  .admin-page .metric-grid article { min-height: 82px; padding: 14px; }
  .admin-page .metric-grid span { font-size: 12px; }
  .admin-page .metric-grid strong { margin-top: 6px; font-size: 24px; }
  .admin-page .operations-card,
  .admin-page .ai-assistant-card { padding: 16px; }
  .admin-page .records-head { align-items: stretch; min-height: 0; }
  .admin-page .records-head,
  .admin-page .head-actions { width: 100%; }
  .admin-page .head-actions > * { flex: 1 1 auto; }
  .admin-page .filter-grid { grid-template-columns: 1fr; }
  .admin-page .filter-grid .primary-button { width: 100%; }
  .admin-page .wecom-workbench { grid-template-columns: 1fr; }
  .admin-page .wecom-subnav {
    flex-direction: row;
    gap: 4px;
    padding: 8px;
    overflow-x: auto;
    border-right: 0;
    border-bottom: 1px solid var(--line);
  }
  .admin-page .wecom-subnav button { flex: 0 0 auto; width: auto; white-space: nowrap; }
  .admin-page .wecom-stat-row,
  .admin-page .wecom-plan-summary { grid-template-columns: 1fr 1fr; }
  .admin-page .wecom-content { padding: 14px; }
  .sop-step-row { grid-template-columns: 30px 1fr 1fr; }
  .sop-step-row label:nth-of-type(3),
  .sop-step-content,
  .sop-step-actions { grid-column: 2 / -1; grid-template-columns: repeat(2, minmax(0, 1fr)); width: 100%; }
  .admin-page .portrait-talk-entry-summary { grid-template-columns: 1fr; }
  .admin-page dialog form,
  .admin-page dialog > section { padding: 20px 18px; }
}

@media (pointer: coarse) {
  .admin-page button,
  .admin-page a,
  .admin-page input,
  .admin-page select { min-height: 44px; }
  .admin-page input,
  .admin-page select,
  .admin-page textarea { font-size: 16px; }
}

/* 最终桌面侧栏尺寸覆盖早期兼容样式。 */
@media (min-width: 851px) {
  .admin-page #dashboard { margin-left: 152px; }
  .admin-page .admin-nav { width: 152px; padding-left: 10px; padding-right: 10px; }
  .admin-page .admin-nav button.active::before { left: -10px; }
}

/* 最终导航分组覆盖：电脑、手机抽屉和折叠屏保持相同层级语言。 */
.admin-page .admin-nav-group > strong {
  display: flex;
  align-items: center;
  width: max-content;
  gap: 8px;
  margin: 4px 4px 6px;
  padding: 3px 4px;
  color: #91a0b8;
  letter-spacing: .06em;
}
.admin-page .admin-nav-group > strong::before {
  width: 5px;
  height: 5px;
  background: #2de6a7;
  box-shadow: 0 0 0 3px rgba(45, 230, 167, .12), 0 0 8px rgba(45, 230, 167, .26);
}
.admin-page .admin-nav-group > strong::after { content: none; }

/* 品牌标识：登录页保留原色，深色侧栏使用单色反白版本。 */
.admin-page .login-brand { display: flex; justify-content: center; margin: 0 0 20px; }
.admin-page .login-brand img { display: block; width: min(260px, 82%); height: auto; }
.admin-page .login-card h1,
.admin-page .login-card > p { text-align: center; }
.admin-page .admin-nav::before { content: none; }
.admin-page .admin-brand {
  position: absolute;
  top: max(20px, env(safe-area-inset-top, 0px));
  left: 14px;
  right: 10px;
  display: flex;
  align-items: center;
  gap: 5px;
}
.admin-page .admin-brand img {
  display: block;
  width: 180px;
  max-width: none;
  height: auto;
  margin-inline: -46px;
  clip-path: inset(0 46px);
  filter: invert(1) grayscale(1) contrast(1.8);
  mix-blend-mode: screen;
  opacity: .98;
}
.admin-page .admin-brand span {
  padding: 2px 5px;
  border: 1px solid rgba(125,162,255,.28);
  border-radius: 5px;
  background: rgba(96,125,224,.12);
  color: #d5deee;
  font-size: 10px;
  font-weight: 750;
  line-height: 14px;
  letter-spacing: .07em;
}

/* 全局搜索保持为两个独立控件，避免连体边框造成拥挤和误触。 */
.admin-page .admin-header-tools { align-items: center; }
.admin-page .global-search { align-items: center; gap: 8px; }
.admin-page .global-search input,
.admin-page .global-search button,
.admin-page .header-tool,
.admin-page .admin-header .text-button {
  box-sizing: border-box;
  height: 36px;
  min-height: 36px;
  margin: 0;
}
.admin-page .global-search input { border-radius: 8px; }
.admin-page .global-search button {
  border-left: 1px solid var(--line-strong);
  border-radius: 8px;
}
.admin-page .takeover-reminder {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  white-space: nowrap;
}
.admin-page .takeover-reminder[hidden] { display: none; }
.admin-page .takeover-reminder span {
  display: inline-grid;
  place-items: center;
  min-width: 20px;
  height: 20px;
  padding: 0 5px;
  border-radius: 999px;
  background: #e9edf3;
  color: #475467;
  font-size: 11px;
  font-weight: 800;
}
.admin-page .takeover-reminder.has-items {
  border-color: #f5a6a0;
  background: #fff6f5;
  color: #b42318;
  box-shadow: 0 0 0 3px rgba(217, 45, 32, .08);
}
.admin-page .takeover-reminder.has-items span { background: #d92d20; color: #fff; }
.admin-page .takeover-reminder.has-unread { position: relative; animation: takeover-notice-pulse 1.8s ease-in-out 2; }
.admin-page .takeover-reminder.has-unread::after {
  content: "";
  position: absolute;
  right: -4px;
  top: -4px;
  width: 10px;
  height: 10px;
  border: 2px solid #fff;
  border-radius: 50%;
  background: #d92d20;
}
@keyframes takeover-notice-pulse { 50% { box-shadow: 0 0 0 6px rgba(217,45,32,.12); } }
.admin-page .takeover-transfer-dialog { width: min(560px, calc(100% - 28px)); }
.admin-page .takeover-transfer-dialog form { display: grid; gap: 16px; padding: 24px; }
.admin-page .takeover-transfer-dialog form > div { display: flex; justify-content: flex-end; gap: 10px; }
.admin-page .takeover-transfer-dialog textarea { resize: vertical; }
/* 随页面切换的使用帮助。 */
.admin-page .page-help-dialog { width: min(640px, calc(100% - 28px)); }
.admin-page .page-help-dialog > section { padding: 24px; }
.admin-page .page-help-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; }
.admin-page .page-help-head small { color: var(--brand); font-weight: 700; }
.admin-page .page-help-head h2 { margin: 3px 0 0; }
.admin-page .page-help-purpose { margin: 16px 0 20px; padding: 12px 14px; border-radius: 8px; background: var(--brand-soft); color: var(--text-secondary); }
.admin-page .page-help-dialog h3 { margin: 0 0 10px; font-size: 15px; }
.admin-page .page-help-features-section { margin-bottom: 20px; }
.admin-page .page-help-features { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.admin-page .page-help-features article { padding: 11px 12px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface); }
.admin-page .page-help-features article:last-child:nth-child(odd) { grid-column: 1 / -1; }
.admin-page .page-help-features strong { color: var(--text); font-size: 13px; }
.admin-page .page-help-features p { margin: 4px 0 0; color: var(--muted); font-size: 12px; line-height: 1.55; }
.admin-page .page-help-steps { display: grid; gap: 9px; margin: 0 0 20px; padding-left: 24px; }
.admin-page .page-help-steps li::marker { color: var(--brand); font-weight: 700; }
.admin-page .page-help-note { padding: 14px 16px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface-subtle); }
.admin-page .page-help-note ul { display: grid; gap: 7px; margin: 9px 0 0; padding-left: 20px; color: var(--muted); }

.admin-page .work-mode-switch { display: inline-flex; align-items: center; gap: 2px; padding: 3px; border: 1px solid #d5dbe7; border-radius: 10px; background: #eef1f6; }
.admin-page .work-mode-switch[hidden] { display: none; }
.admin-page .work-mode-switch button { min-height: 30px; padding: 5px 9px; border: 0; border-radius: 7px; background: transparent; color: #667085; font-size: 12px; font-weight: 700; box-shadow: none; }
.admin-page .work-mode-switch button.active { background: #fff; color: #3157d5; box-shadow: 0 1px 3px rgba(16,24,40,.12); }
.admin-page .account-capability-toggle { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 13px 14px; border: 1px solid #d8deea; border-radius: 10px; background: #f8faff; }
.admin-page .account-capability-toggle[hidden] { display: none; }
.admin-page .account-capability-toggle span { display: grid; gap: 3px; }
.admin-page .account-capability-toggle small { color: #667085; line-height: 1.45; }
.admin-page .account-capability-toggle input { width: 20px; height: 20px; margin: 0; }
@media (max-width: 640px) {
  .admin-page .page-help-features { grid-template-columns: 1fr; }
  .admin-page .page-help-features article:last-child:nth-child(odd) { grid-column: auto; }
}

/* 今日核心数据：统一交代统计口径，桌面单行展示，减少无效留白。 */
.admin-page .dashboard-summary {
  display: grid;
  gap: 10px;
  margin-bottom: 10px;
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: var(--radius-card);
  background: var(--surface);
}
.admin-page .dashboard-summary-section { min-width: 0; }
.admin-page .dashboard-today-head {
  display: flex;
  align-items: baseline;
  gap: 8px;
  margin: 0 2px 5px;
}
.admin-page .dashboard-today-head strong { color: var(--text); font-size: 13px; }
.admin-page .dashboard-today-head span { color: var(--muted); font-size: 10px; }
.admin-page .dashboard-risk-head { display: flex; align-items: baseline; gap: 8px; margin: 0 2px 5px; }
.admin-page .dashboard-risk-head strong { color: var(--text); font-size: 13px; }
.admin-page .dashboard-risk-head span { color: var(--muted); font-size: 10px; }
.admin-page .operations-core { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; margin-bottom: 0; }
.admin-page .operations-core article {
  min-height: 56px;
  padding: 7px 10px;
  border-radius: 8px;
}
.admin-page .operations-core span { font-size: 11px; line-height: 16px; }
.admin-page .operations-core strong {
  margin-top: 0;
  font-size: 19px;
  line-height: 24px;
}
.admin-page .dashboard-summary-risk .operations-list { grid-template-columns: repeat(auto-fit, minmax(96px, 1fr)); gap: 7px; }
.admin-page .dashboard-summary-risk .operations-list button {
  min-height: 56px;
  padding: 7px 9px;
}
.admin-page .dashboard-summary-risk .operations-list button > div { align-items: center; }
.admin-page .dashboard-summary-risk .operations-list button strong { font-size: 11px; font-weight: 600; }
.admin-page .dashboard-summary-risk .operations-list button b { color: var(--text); font-size: 19px; line-height: 24px; }
.admin-page .dashboard-summary-risk .operations-list button small { display: none; }
@media (min-width: 960px) {
  .admin-page .dashboard-summary { grid-template-columns: minmax(0, 2fr) minmax(300px, 1fr); }
  .admin-page .dashboard-summary-risk { padding-left: 10px; border-left: 1px solid var(--line); }
}

/* 数据看板首屏驾驶舱：宽屏并排展示阶段动作与完整七日数据。 */
.admin-page .operations-grid[data-page-section="dashboard"] { align-items: start; gap: 10px; margin-bottom: 0; }
.admin-page .operations-grid[data-page-section="dashboard"] .operations-card { padding: 12px; }
.admin-page .operations-grid[data-page-section="dashboard"] .operations-card h2 { margin-bottom: 8px; }
.admin-page .operations-grid[data-page-section="dashboard"] .operations-funnel-head { align-items: center; flex-wrap: wrap; margin-bottom: 8px; }
.admin-page .dashboard-section-title { display: grid; flex: 1 1 190px; gap: 2px; min-width: 0; }
.admin-page .dashboard-section-title h2 { margin: 0 !important; }
.admin-page .dashboard-section-title > small { color: var(--muted); font-size: 10px; }
.admin-page .funnel-controls { margin-left: auto; }
.admin-page .funnel-controls .funnel-range-label { color: var(--text-secondary); font-size: 12px; font-weight: 600; white-space: nowrap; }
.admin-page .funnel-controls .funnel-range-separator { color: var(--muted); font-size: 11px; }
.admin-page .funnel-controls input { width: 124px; }
.admin-page .operations-grid[data-page-section="dashboard"] .funnel-row { gap: 7px; }
.admin-page .operations-grid[data-page-section="dashboard"] .funnel-step { min-height: 56px; padding: 8px 7px; font-size: 11px; }
.admin-page .operations-grid[data-page-section="dashboard"] .funnel-step strong { margin-top: 2px; font-size: 19px; line-height: 24px; }
.admin-page .operations-grid[data-page-section="dashboard"] .trend-table table { width: 100%; min-width: 0; table-layout: fixed; }
.admin-page .operations-grid[data-page-section="dashboard"] .trend-table th,
.admin-page .operations-grid[data-page-section="dashboard"] .trend-table td { height: 28px; padding: 4px 8px; line-height: 19px; }
.admin-page .smart-ops-panel { margin-top: 12px; padding-top: 10px; border-top: 1px solid var(--line); }
.admin-page .smart-ops-head { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; margin-bottom: 7px; }
.admin-page .smart-ops-head > div { display: flex; align-items: baseline; gap: 8px; }
.admin-page .smart-ops-head strong { font-size: 13px; }
.admin-page .smart-ops-head span,
.admin-page .smart-ops-head small { color: var(--muted); font-size: 10px; }
.admin-page .smart-ops-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 7px; }
.admin-page .smart-ops-grid article { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; min-width: 0; padding: 8px 9px; border: 1px solid #dfe7f6; border-radius: 8px; background: linear-gradient(135deg, #f9fbff, #f3f6fc); }
.admin-page .smart-ops-grid span { overflow: hidden; color: var(--text-secondary); font-size: 11px; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
.admin-page .smart-ops-grid b { grid-column: 2; grid-row: 1 / span 2; color: var(--brand); font-size: 20px; line-height: 24px; }
.admin-page .smart-ops-grid small { overflow: hidden; color: var(--muted); font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }
@media (min-width: 1180px) {
  .admin-page .operations-grid[data-page-section="dashboard"] { grid-template-columns: minmax(0, 1.08fr) minmax(540px, .92fr); }
  .admin-page .operations-grid[data-page-section="dashboard"] .operations-wide { grid-column: auto; }
}
@media (max-width: 700px) {
  .admin-page .funnel-controls { width: 100%; margin-left: 0; }
  .admin-page .funnel-controls .funnel-range-label { flex: 1 0 100%; }
  .admin-page .funnel-controls label { flex: 1 1 calc(50% - 18px); }
  .admin-page .funnel-controls input { width: 100%; }
  .admin-page .smart-ops-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .admin-page .trend-card-head { align-items: flex-start; }
  .admin-page .trend-card-head > div:first-child { align-items: flex-start; flex-direction: column; gap: 1px; }
  .admin-page .trend-custom-range { width: 100%; }
  .admin-page .trend-custom-range label { flex: 1 1 0; }
  .admin-page .trend-custom-range input { width: 100%; }
  .admin-page .trend-summary { padding-right: 0; }
  .admin-page .trend-summary em { position: static; grid-column: 1 / -1; padding-left: 2px; }
  .admin-page .daily-metric-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 560px) and (max-width: 819px) {
  .admin-page .operations-core { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (min-width: 820px) {
  .admin-page .operations-core { grid-template-columns: repeat(6, minmax(0, 1fr)); }
}
@media (max-width: 559px) {
  .admin-page .dashboard-today-head { align-items: flex-start; flex-direction: column; gap: 1px; }
  .admin-page .operations-core article { min-height: 64px; padding: 9px 11px; }
  .admin-page .operations-core strong { font-size: 21px; line-height: 26px; }
}

/* 数据看板去重布局：结果、推进、风险、趋势各自只承担一种职责。 */
.admin-page .operations-core { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.admin-page .dashboard-actions-card .funnel-row { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.admin-page .dashboard-smart-card { min-width: 0; padding: 12px; }
.admin-page .dashboard-smart-card .smart-ops-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.admin-page .smart-ops-empty { display: grid; gap: 10px; min-height: 118px; padding: 12px; border: 1px dashed var(--line-strong); border-radius: var(--radius); background: var(--surface-subtle); }
.admin-page .smart-ops-empty[hidden] { display: none; }
.admin-page .smart-ops-empty-copy { display: grid; gap: 2px; text-align: center; }
.admin-page .smart-ops-empty-copy strong { font-size: 13px; }
.admin-page .smart-ops-empty-copy span { color: var(--muted); font-size: 10px; line-height: 1.5; }
.admin-page .smart-ops-capabilities { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; }
.admin-page .smart-ops-capabilities > span { display: flex; align-items: center; justify-content: space-between; gap: 6px; min-width: 0; padding: 7px 8px; border: 1px solid var(--line); border-radius: 7px; background: #fff; }
.admin-page .smart-ops-capabilities b { overflow: hidden; color: var(--text-secondary); font-size: 13px; font-weight: 700; line-height: 1.4; text-overflow: ellipsis; white-space: nowrap; }
.admin-page .smart-ops-capabilities small { flex: 0 0 auto; color: var(--muted); font-size: 11px; line-height: 1.4; white-space: nowrap; }
.admin-page .dashboard-trend-card { margin-top: 10px; padding: 12px; }
.admin-page .trend-matrix-shell { min-width: 0; }
.admin-page .trend-matrix-wrap { max-height: 270px; overflow: auto; border: 1px solid var(--line); border-radius: var(--radius); scrollbar-gutter: stable; }
.admin-page .trend-matrix { width: 100%; min-width: 680px; border-collapse: separate; border-spacing: 0; table-layout: fixed; }
.admin-page .trend-matrix th,
.admin-page .trend-matrix td { height: 32px; padding: 5px 9px; border-bottom: 1px solid var(--line); text-align: right; }
.admin-page .trend-matrix thead th { position: sticky; z-index: 2; top: 0; background: var(--surface-subtle); color: var(--muted); font-size: 11px; font-weight: 600; }
.admin-page .trend-matrix th:first-child { width: 76px; text-align: left; }
.admin-page .trend-matrix tbody th { color: var(--text-secondary); font-size: 11px; font-weight: 600; }
.admin-page .trend-matrix tbody tr:last-child th,
.admin-page .trend-matrix tbody tr:last-child td { border-bottom: 0; }
.admin-page .trend-matrix tbody tr:hover { background: #f8fbff; }
.admin-page .trend-matrix button { min-width: 56px; padding: 3px 5px; border: 0; border-radius: 5px; background: transparent; color: var(--brand); font-size: 11px; font-weight: 700; cursor: pointer; }
.admin-page .trend-matrix button:hover,
.admin-page .trend-matrix button:focus-visible { background: var(--brand-soft); outline: none; }
.admin-page .trend-comparison-shell { min-width: 0; }
.admin-page .comparison-table-wrap { overflow-x: auto; border: 1px solid var(--line); border-radius: var(--radius); }
.admin-page .comparison-table { width: 100%; min-width: 720px; border-collapse: collapse; table-layout: fixed; }
.admin-page .comparison-table th,
.admin-page .comparison-table td { height: 42px; padding: 7px 12px; border-bottom: 1px solid var(--line); text-align: right; }
.admin-page .comparison-table thead th { background: var(--surface-subtle); color: var(--muted); font-size: 11px; font-weight: 600; }
.admin-page .comparison-table thead th small { display: block; margin-top: 2px; color: var(--muted); font-size: 9px; font-weight: 400; }
.admin-page .comparison-table th:first-child { width: 22%; text-align: left; }
.admin-page .comparison-table tbody th { color: var(--text-secondary); font-size: 12px; }
.admin-page .comparison-table tbody tr:last-child th,
.admin-page .comparison-table tbody tr:last-child td { border-bottom: 0; }
.admin-page .comparison-table tbody tr:hover { background: #f8fbff; }
.admin-page .comparison-table button { min-width: 76px; padding: 5px 7px; border: 0; border-radius: 6px; background: transparent; color: var(--brand); font-size: 12px; font-weight: 700; cursor: pointer; }
.admin-page .comparison-table button:hover,
.admin-page .comparison-table button:focus-visible { background: var(--brand-soft); outline: none; }
.admin-page .comparison-delta,
.admin-page .comparison-rate { font-size: 11px; font-weight: 700; white-space: nowrap; }
.admin-page .comparison-rate { display: inline-flex; justify-content: center; min-width: 66px; padding: 4px 7px; border-radius: 999px; }
.admin-page .comparison-delta.up,
.admin-page .comparison-rate.up,
.admin-page .comparison-rate.new { color: #067647; }
.admin-page .comparison-rate.up,
.admin-page .comparison-rate.new { background: #ecfdf3; }
.admin-page .comparison-delta.down,
.admin-page .comparison-rate.down { color: #b42318; }
.admin-page .comparison-rate.down { background: #fef3f2; }
.admin-page .comparison-delta.neutral,
.admin-page .comparison-rate.neutral { color: var(--muted); }
.admin-page .comparison-rate.neutral { background: var(--surface-subtle); }
.admin-page .dashboard-trend-card .trend-scope-tabs button { min-height: 34px; padding: 6px 12px; font-size: 13px; }
@media (max-width: 700px) {
  .admin-page .dashboard-trend-card .trend-card-head { flex-wrap: wrap; }
  .admin-page .dashboard-trend-card .trend-scope-tabs { width: 100%; }
  .admin-page .dashboard-trend-card .trend-scope-tabs button { flex: 1 1 0; }
  .admin-page .trend-day-summary { align-items: flex-start; flex-direction: column; gap: 2px; }
}
@media (min-width: 1180px) {
  .admin-page .operations-grid[data-page-section="dashboard"] { grid-template-columns: minmax(0, 1.65fr) minmax(280px, .75fr); }
}
@media (max-width: 820px) {
  .admin-page .operations-core { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .admin-page .dashboard-actions-card .funnel-row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* 今日结果与当前风险口径不同，使用两个独立白色卡片，避免被理解为同一时间范围。 */
.admin-page .dashboard-summary {
  padding: 0;
  border: 0;
  background: transparent;
}
.admin-page .dashboard-summary-section {
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: var(--radius-card);
  background: var(--surface);
}
@media (min-width: 960px) {
  .admin-page .dashboard-summary-risk { padding-left: 10px; }
}

/* 数据看板主工作区：左侧经营数据纵向阅读，右侧只承载企微智能运营状态。 */
.admin-page .dashboard-workbench {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  align-items: start;
  gap: 10px;
  margin-bottom: 0;
}
.admin-page .dashboard-data-state {
  grid-column: 1 / -1;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  min-height: 40px;
  padding: 8px 12px;
  border: 1px solid #cbd5e1;
  border-radius: 10px;
  background: #f8fafc;
  color: #475569;
  font-weight: 700;
}
.admin-page .dashboard-data-state[hidden] { display: none; }
.admin-page .dashboard-data-state.loading { border-color: #bfdbfe; background: #eff6ff; color: #1d4ed8; }
.admin-page .dashboard-data-state.error { border-color: #fecaca; background: #fef2f2; color: #b91c1c; }
.admin-page .dashboard-data-state button { min-height: 32px; padding: 5px 12px; border-color: currentColor; background: #fff; color: inherit; }
.admin-page .metric-link[aria-disabled="true"] { cursor: not-allowed; opacity: .65; }
.admin-page .dashboard-business-column {
  display: grid;
  gap: 10px;
  min-width: 0;
}
.admin-page .dashboard-business-column > * { min-width: 0; margin: 0; }
.admin-page .dashboard-actions-card { padding: 12px; }
.admin-page .dashboard-smart-card { align-self: start; margin: 0; }
.admin-page .dashboard-smart-card .smart-ops-grid[hidden] { display: none; }
@media (min-width: 1080px) {
  .admin-page .dashboard-workbench {
    grid-template-columns: minmax(0, 2.15fr) minmax(300px, .95fr);
    align-items: stretch;
  }
  .admin-page .dashboard-smart-card {
    display: flex;
    flex-direction: column;
    align-self: stretch;
  }
  .admin-page .dashboard-smart-card .smart-ops-empty {
    flex: 1 1 auto;
    grid-template-rows: auto minmax(0, 1fr);
    align-content: stretch;
  }
  .admin-page .dashboard-smart-card .smart-ops-empty-copy {
    align-self: center;
    padding: 10px 0;
  }
  .admin-page .dashboard-smart-card .smart-ops-capabilities {
    grid-auto-rows: minmax(0, 1fr);
  }
  .admin-page .dashboard-smart-card .smart-ops-capabilities > span {
    align-content: center;
    min-height: 0;
    padding: 12px;
  }
  .admin-page .dashboard-smart-card .smart-ops-grid:not([hidden]) {
    flex: 1 1 auto;
    align-content: start;
  }
}

/* 所有后台复选框与单选框统一为原生紧凑尺寸；触屏的44px点击面积由外层标签承担。 */
.admin-page input[type="checkbox"],
.admin-page input[type="radio"] {
  -webkit-appearance: auto;
  appearance: auto;
  flex: 0 0 16px;
  width: 16px;
  height: 16px;
  min-width: 16px;
  min-height: 16px;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 3px;
  background: transparent;
  box-shadow: none;
  accent-color: var(--brand);
  vertical-align: middle;
}

/* 操作日志：宽屏将筛选、操作和结果数收拢为一条工具栏。 */
.admin-page .activity-log-toolbar {
  display: grid;
  grid-template-columns: repeat(2, minmax(132px, .78fr)) minmax(128px, .72fr) minmax(145px, .82fr) minmax(180px, 1fr) auto;
  align-items: end;
  gap: 8px;
  margin: 12px 0;
}
.admin-page .activity-log-toolbar > label { min-width: 0; margin: 0; }
.admin-page .activity-log-toolbar > label input,
.admin-page .activity-log-toolbar > label select {
  width: 100%;
  min-width: 0;
  min-height: 40px;
  margin-top: 5px;
}
.admin-page .activity-log-actions {
  display: flex;
  align-items: center;
  gap: 7px;
  min-width: max-content;
  white-space: nowrap;
}
.admin-page .activity-log-actions .primary-button,
.admin-page .activity-log-actions button,
.admin-page .activity-log-actions .export {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: auto;
  min-height: 40px;
  margin: 0;
  padding: 8px 12px;
}
.admin-page .activity-log-actions #activityLogCount { margin: 0; padding: 0 0 0 2px; }
@media (max-width: 1250px) {
  .admin-page .activity-log-toolbar { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .admin-page .activity-log-actions { grid-column: 1 / -1; flex-wrap: wrap; }
}
@media (max-width: 700px) {
  .admin-page .activity-log-toolbar { grid-template-columns: 1fr; }
  .admin-page .activity-log-actions { grid-column: auto; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); min-width: 0; }
  .admin-page .activity-log-actions #activityLogCount { grid-column: 1 / -1; }
}

/* 成交管理宽屏工具栏：筛选项与操作按钮统一保持在一条横线上。 */
@media (min-width: 1101px) {
  .admin-page #dealsPanel .deal-filter-toolbar {
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: end;
    gap: 10px;
  }
  .admin-page #dealsPanel .deal-filter-grid {
    grid-template-columns: repeat(4, minmax(90px, 1fr)) repeat(2, minmax(112px, .95fr)) minmax(138px, 1.15fr);
    min-width: 0;
  }
  .admin-page #dealsPanel .deal-toolbar-actions {
    align-self: end;
    width: auto;
    min-width: max-content;
  }
}

/* 宽屏看板首屏压缩：保留可读字号，将经营环比完整纳入常用桌面首屏。 */
@media (min-width: 1080px) {
  .admin-page #dashboard:has([data-page-section="dashboard"]:not([hidden])) .admin-header {
    min-height: 40px;
    margin-bottom: 10px;
  }
  .admin-page .dashboard-workbench,
  .admin-page .dashboard-business-column { gap: 8px; }
  .admin-page .dashboard-summary-section { padding: 8px; }
  .admin-page .dashboard-today-head,
  .admin-page .dashboard-risk-head { margin-bottom: 3px; }
  .admin-page .operations-core article {
    min-height: 44px;
    padding: 5px 8px;
  }
  .admin-page .operations-core strong {
    font-size: 18px;
    line-height: 22px;
  }
  .admin-page .dashboard-actions-card { padding: 8px; }
  .admin-page .dashboard-actions-card .operations-funnel-head { margin-bottom: 5px; }
  .admin-page .dashboard-actions-card .dashboard-section-title {
    display: flex;
    align-items: baseline;
    gap: 8px;
  }
  .admin-page .dashboard-actions-card .dashboard-section-title > small { white-space: nowrap; }
  .admin-page .dashboard-actions-card .funnel-controls input,
  .admin-page .dashboard-actions-card .funnel-controls button,
  .admin-page .dashboard-actions-card .funnel-controls .export {
    height: 32px;
    min-height: 32px;
    padding-top: 5px;
    padding-bottom: 5px;
  }
  .admin-page .dashboard-actions-card .funnel-step {
    min-height: 44px;
    padding: 5px 7px;
  }
  .admin-page .dashboard-actions-card .funnel-step strong {
    margin-top: 1px;
    font-size: 18px;
    line-height: 22px;
  }
  .admin-page .dashboard-summary-risk .operations-list button {
    min-height: 44px;
    padding: 5px 8px;
  }
  .admin-page .dashboard-smart-card { padding: 8px; }
  .admin-page .dashboard-smart-card .smart-ops-head { margin-bottom: 5px; }
  .admin-page .dashboard-smart-card .smart-ops-empty { gap: 6px; padding: 8px; }
  .admin-page .dashboard-smart-card .smart-ops-empty-copy { padding: 4px 0; }
  .admin-page .dashboard-smart-card .smart-ops-capabilities { gap: 5px; }
  .admin-page .dashboard-smart-card .smart-ops-capabilities > span { padding: 8px; }
  .admin-page .dashboard-trend-card { margin-top: 8px; padding: 10px; }
  .admin-page .dashboard-trend-card .trend-day-summary { margin: 4px 1px 5px; }
  .admin-page .dashboard-trend-card .comparison-table th,
  .admin-page .dashboard-trend-card .comparison-table td {
    height: 34px;
    padding: 4px 10px;
  }
}
