@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500&family=Newsreader:opsz,wght@6..72,400;6..72,500;6..72,600&display=swap');

:root {
  --navy: #201e1a;
  --navy-2: #faf7f2;
  --navy-3: #b54434;
  --accent: #b54434;
  --seal: #b54434;
  --bg: #faf7f2;
  --card: #ffffff;
  --border: #e4e0d6;
  --hairline: #e4e0d6;
  --text: #201e1a;
  --muted: #6e6b63;
  --faint: #757169;
  --ok: #059669;
  --ok-bg: #ecfdf5;
  --err: #dc2626;
  --err-bg: #fef2f2;
  --shadow: 0 1px 2px rgba(32, 30, 26, .05);
  --shadow-lg: 0 14px 34px rgba(32, 30, 26, .10);
}
* { box-sizing: border-box; }
body { margin: 0; font-family: 'Inter', 'PingFang SC', 'Microsoft YaHei', system-ui, sans-serif; background: var(--bg); color: var(--text); font-size: 14px; line-height: 1.6; }
a { color: var(--navy-3); }
.serif { font-family: 'Newsreader', 'Noto Serif SC', 'Songti SC', 'SimSun', serif; }
.mono { font-family: 'JetBrains Mono', ui-monospace, monospace; }

/* ---------- 顶栏 ---------- */
.topbar { background: rgba(250, 247, 242, .92); backdrop-filter: blur(10px); color: var(--text); border-bottom: 1px solid var(--hairline); display: flex; align-items: center; gap: 18px; padding: 0 24px; height: 58px; position: sticky; top: 0; z-index: 20; }
.topbar .brand { font-family: 'Newsreader', 'Noto Serif SC', 'Songti SC', 'SimSun', serif; font-weight: 600; font-size: 20px; letter-spacing: .05em; color: var(--text); white-space: nowrap; }
.topbar .ver { font-size: 12px; background: var(--seal); color: #faf7f2; border-radius: 999px; padding: 2px 10px; margin-left: 8px; vertical-align: middle; letter-spacing: 1px; font-family: 'Inter', sans-serif; font-weight: 600; }
.topbar .company-badge { font-size: 12px; background: #fff; border: 1px solid var(--hairline); border-radius: 999px; padding: 3px 10px; margin-left: 10px; vertical-align: middle; color: var(--muted); white-space: nowrap; letter-spacing: .5px; }
.company-card { background: var(--card); border: 1px solid var(--border); border-radius: 12px; padding: 18px; margin: 12px 0; box-shadow: var(--shadow); }
.company-card-head h2 { margin: 0 0 12px; font-size: 20px; display: flex; align-items: center; gap: 10px; }
.company-card .cards { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 14px; }
.title-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 6px; max-height: 520px; overflow: auto; }
.title-list li { background: var(--card); border: 1px solid var(--border); border-radius: 8px; padding: 8px 12px; display: flex; align-items: center; gap: 10px; box-shadow: var(--shadow); }
.title-kind { font-size: 12px; background: #fbe9e5; color: #b54434; border: 1px solid #f3d3cb; border-radius: 999px; padding: 1px 9px; white-space: nowrap; flex: none; }
.article-toolbar { margin: 10px 0; }
.article-body { background: var(--card); border: 1px solid var(--border); border-radius: 12px; padding: 22px 26px; box-shadow: var(--shadow); line-height: 1.8; }
.article-body h2 { margin-top: 24px; border-bottom: 1px solid var(--border); padding-bottom: 6px; }
.article-body table { border-collapse: collapse; width: 100%; margin: 12px 0; }
.article-body th, .article-body td { border: 1px solid var(--border); padding: 7px 10px; font-size: 13px; }
.topbar .topsearch { display: flex; gap: 6px; flex: 1; max-width: 520px; margin: 0 auto; }
.topbar .topsearch input { flex: 1; background: #fff; border: 1px solid var(--hairline); color: var(--text); border-radius: 8px; padding: 8px 12px; font-size: 13px; }
.topbar .topsearch input::placeholder { color: var(--faint); }
.topbar .topsearch input:focus { border-color: var(--seal); box-shadow: 0 0 0 3px rgba(181, 68, 52, .10); outline: none; }
.topbar .topsearch button { background: var(--accent); color: #fff; border-radius: 8px; padding: 8px 16px; font-weight: 600; }
.topbar .topright .user { color: var(--muted); font-size: 13px; }
.topbar .topright a { color: var(--muted); text-decoration: none; margin-left: 12px; display: inline-flex; align-items: center; min-height: 44px; min-width: 44px; justify-content: center; }
.topbar .topright a:hover { color: var(--ink, var(--text)); }
.topbar .topright .toplink { font-size: 13px; white-space: nowrap; }
.topbar .topright .toplink:hover { color: var(--seal); }

/* ---------- 布局 / 侧边栏 ---------- */
.layout { display: flex; min-height: calc(100vh - 56px); }
.sidebar { width: 214px; background: transparent; border-right: 1px solid var(--hairline); padding: 18px 10px; flex-shrink: 0; position: sticky; top: 58px; height: calc(100vh - 58px); overflow-y: auto; }
.sidebar a { display: flex; align-items: center; gap: 10px; color: var(--muted); text-decoration: none; padding: 11px 14px; border-radius: 8px; font-size: 14px; margin: 2px 0; transition: background .15s, color .15s; }
.sidebar a svg { width: 16px; height: 16px; flex-shrink: 0; }
.sidebar a:hover { background: rgba(32, 30, 26, .045); color: var(--text); }
.sidebar a.active { background: rgba(181, 68, 52, .08); color: var(--seal); font-weight: 600; }
main { flex: 1; width: 100%; margin: 0 auto; padding: 26px 40px 60px; }
/* 自适应铺满：桌面工作台按整宽排版，文字密集容器单独限宽保可读性 */
.article-body { max-width: 1000px; }

/* ---------- 登录 ---------- */
.login-wrap { max-width: 400px; margin: 10vh auto; padding: 0 16px; }
.login-box { background: var(--card); border: 1px solid var(--border); border-radius: 16px; padding: 36px 32px; box-shadow: var(--shadow-lg); }
.login-box h1 { margin: 0 0 18px; text-align: center; color: var(--navy); }
.login-box form { display: flex; flex-direction: column; gap: 12px; }
.login-box input { padding: 11px 12px; }
.login-box button { padding: 11px; font-size: 15px; font-weight: 600; }

/* ---------- 标题 ---------- */
h1 { font-size: 28px; margin: 0 0 14px; }
h2 { font-size: 20px; margin: 26px 0 12px; padding: 0 0 8px; border-left: 0; border-bottom: 1px solid var(--hairline); line-height: 1.3; letter-spacing: .02em; }
h3 { font-size: 15px; color: var(--navy); margin: 18px 0 8px; }

/* ---------- 表格 ---------- */
table { width: 100%; border-collapse: separate; border-spacing: 0; background: #fff; margin: 10px 0 18px; border: 1px solid var(--border); border-radius: 10px; overflow: hidden; }
th, td { border-bottom: 1px solid var(--border); padding: 9px 12px; font-size: 13px; text-align: left; vertical-align: top; }
th { background: #faf7f2; color: var(--navy); font-weight: 600; white-space: nowrap; }
tr:last-child td { border-bottom: 0; }
tbody tr:hover { background: #f8fafc; }
tr.sel { background: #ecfdf5; }

/* ---------- 表单 ---------- */
input, select, textarea { padding: 8px 10px; border: 1px solid var(--border); border-radius: 8px; font-size: 13px; background: #fff; color: var(--text); transition: border-color .15s, box-shadow .15s; min-height: 44px; min-width: 0; max-width: 100%; box-sizing: border-box; }
input:focus, select:focus, textarea:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px rgba(232, 71, 42, .12); }
button { padding: 8px 14px; border: 0; border-radius: 8px; background: var(--navy); color: #fff; cursor: pointer; font-size: 13px; font-weight: 500; transition: transform .15s, box-shadow .15s, opacity .15s; min-height: 44px; }
button:hover { opacity: .94; box-shadow: var(--shadow); }
button:active { transform: translateY(1px); }
.inline-form { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin: 10px 0; }
.wf-plats { border: 1px dashed var(--border); border-radius: 8px; padding: 6px 10px; font-size: 12.5px; color: var(--muted); }
.wf-plats summary { cursor: pointer; user-select: none; }
.wf-plat-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); gap: 4px 10px; margin-top: 8px; max-height: 200px; overflow: auto; }
.wf-plat { display: flex; align-items: center; gap: 6px; font-size: 12.5px; white-space: nowrap; }
.wf-plat input { accent-color: var(--seal); }

/* ---------- 卡片 ---------- */
.cards { display: flex; gap: 14px; margin: 16px 0 22px; flex-wrap: wrap; }
.card { background: #fff; border: 1px solid var(--border); border-radius: 12px; padding: 16px 20px; flex: 1; min-width: 130px; font-size: 13px; color: var(--muted); box-shadow: var(--shadow); }
.card b { font-size: 26px; display: block; color: var(--navy); margin-bottom: 2px; }
.customer-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); gap: 16px; margin: 14px 0; }
.customer-card { background: #fff; border: 1px solid var(--border); border-radius: 14px; padding: 18px; box-shadow: var(--shadow); transition: box-shadow .15s, transform .15s; }
.customer-card:hover { box-shadow: var(--shadow-lg); transform: translateY(-2px); }
.customer-card .cc-head { display: flex; justify-content: space-between; align-items: center; gap: 8px; flex-wrap: wrap; }
.customer-card .cc-product { color: var(--muted); font-size: 13px; margin: 6px 0 12px; }
.customer-card .cc-metrics { display: flex; gap: 16px; font-size: 12px; color: var(--muted); flex-wrap: wrap; margin-bottom: 14px; }
.customer-card .cc-metrics b { color: var(--navy); font-size: 15px; }
.customer-card .cc-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.profile-card { background: #fff; border: 1px solid var(--border); border-radius: 14px; padding: 20px 22px; margin-bottom: 18px; display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap; box-shadow: var(--shadow); }
.profile-card h1 { margin: 0 0 6px; }
.profile-card .meta { color: var(--muted); font-size: 13px; margin: 4px 0; }
.profile-card .cc-actions { display: flex; gap: 8px; align-items: flex-start; flex-wrap: wrap; }
.page-bar { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; background: #ffffff; border: 1px solid var(--hairline); border-radius: 12px; padding: 12px 16px; margin-bottom: 16px; }
.page-bar .bar-title { font-weight: 700; margin-right: auto; color: var(--text); }
.home-hero { text-align: center; padding-top: 9vh; }
.home-hero .home-title { font-size: 46px; letter-spacing: 3px; color: var(--navy); margin: 0 0 14px; }
.home-hero .home-sub { font-size: 18px; color: var(--muted); letter-spacing: 2px; }
.portal-grid { display: grid; grid-template-columns: repeat(auto-fit, 190px); justify-content: center; gap: 24px; margin: 11vh auto 0; max-width: 900px; }
.portal-card { display: flex; flex-direction: column; align-items: center; gap: 8px; background: #ffffff; border: 1px solid var(--border); border-radius: 16px; padding: 28px 16px; text-decoration: none; color: var(--text); transition: transform .15s, box-shadow .15s, border-color .15s; }
.portal-card:hover { transform: translateY(-3px); box-shadow: 0 10px 24px rgba(32, 30, 26, .09); border-color: var(--accent); }
.portal-card .p-icon { font-size: 26px; line-height: 1; color: var(--accent); }
.portal-card b { font-size: 17px; }
.portal-card span { font-size: 12px; color: var(--muted); text-align: center; }
.ai-title { text-align: center; margin-top: 9vh; font-size: 15px; color: var(--faint); letter-spacing: 2px; }
.ai-grid { display: flex; flex-wrap: wrap; justify-content: center; gap: 14px; margin: 18px auto 0; max-width: 1000px; }
.ai-chip { display: inline-flex; align-items: center; gap: 8px; background: #ffffff; border: 1px solid #e2e8f0; border-radius: 999px; padding: 7px 16px 7px 7px; font-size: 13px; color: #334155; text-decoration: none; transition: transform .15s, box-shadow .15s, border-color .15s; }
.ai-chip:hover { transform: translateY(-2px); box-shadow: 0 6px 14px rgba(15, 23, 42, .08); border-color: #94a3b8; }
.ai-logo { width: 28px; height: 28px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; color: #fff; font-size: 12px; font-weight: 700; }

/* ---------- 按钮变体 ---------- */
.btn, a.btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-height: 44px; padding: 8px 14px; background: var(--accent); color: #fff; border-radius: 8px; text-decoration: none; font-size: 13px; font-weight: 500; transition: transform .15s, box-shadow .15s, background .15s; box-shadow: 0 1px 2px rgba(232, 71, 42, .25); }
.btn:hover { box-shadow: var(--shadow); transform: translateY(-1px); }
.btn.ghost { background: #fff; color: var(--navy); border: 1px solid var(--border); box-shadow: none; }
.btn.ghost:hover { border-color: var(--navy-3); background: #f8fafc; }

/* ---------- 筛选标签 ---------- */
.filter-tabs { display: flex; gap: 6px; flex-wrap: wrap; margin: 12px 0; }
.filter-tabs button { background: #fff; border: 1px solid var(--border); color: var(--navy); border-radius: 999px; padding: 6px 13px; font-size: 12px; }
.filter-tabs button:hover { border-color: var(--navy-3); }
.filter-tabs button.active { background: var(--navy); color: #fff; border-color: var(--navy); }

/* ---------- 素材中心 ---------- */
.asset-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 12px; margin: 12px 0; }
.asset-card { background: #fff; border: 1px solid var(--border); border-radius: 12px; padding: 14px; text-align: center; box-shadow: var(--shadow); }
.asset-card b { display: block; margin-bottom: 4px; }
.asset-card form { display: flex; flex-direction: column; gap: 6px; align-items: center; }
.generated-preview { display: block; width: min(100%, 520px); max-height: 340px; object-fit: contain; border-radius: 10px; border: 1px solid var(--border); margin: 10px 0; background: var(--bg); }

/* 2026-08-19 花叔评审：emoji 统一为小号中性字形，避免作为主要图标语言 */
h1 > .em, h2 > .em, .btn > .em, .quick-links a > .em { font-size: 15px; vertical-align: -2px; opacity: .85; }
.image-job-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 14px; }

/* ---------- 提示 / 徽标 ---------- */
.flash { padding: 10px 14px; border-radius: 10px; margin: 10px 0; font-size: 13px; border: 1px solid; }
.flash.ok { background: var(--ok-bg); color: #065f46; border-color: #a7f3d0; }
.flash.error { background: var(--err-bg); color: #991b1b; border-color: #fecaca; }
.hint { color: var(--muted); font-size: 12px; margin: 6px 0; }
.stage-badge { font-size: 12px; background: #eef2ff; color: #3730a3; border: 1px solid #c7d2fe; border-radius: 999px; padding: 3px 10px; vertical-align: middle; white-space: nowrap; }

/* ---------- 其他组件 ---------- */
.empty-state { background: #fff; border: 1px dashed var(--border); border-radius: 14px; padding: 30px; margin: 14px 0; color: var(--muted); text-align: center; }
.empty-state ol { padding-left: 20px; text-align: left; display: inline-block; }
.thumbs { display: flex; flex-wrap: wrap; gap: 12px; }
.thumbs figure { margin: 0; width: 150px; text-align: center; }
.thumbs img { width: 150px; height: 110px; object-fit: cover; border: 1px solid var(--border); border-radius: 8px; }
.thumbs figcaption { font-size: 11px; color: var(--muted); word-break: break-all; }
.preview { background: #fff; border: 1px solid var(--border); border-radius: 10px; padding: 20px; box-shadow: var(--shadow); }
.preview img { max-width: 100%; }
.kb-item { margin: 8px 0; }
details { background: #fff; border: 1px solid var(--border); border-radius: 10px; padding: 10px 14px; margin: 10px 0; }
details summary { cursor: pointer; font-weight: 600; color: var(--navy); display: flex; align-items: center; min-height: 44px; }
textarea.kb-editor { width: 100%; min-height: 420px; resize: vertical; line-height: 1.7; }
.kb-tabs { display: flex; flex-wrap: wrap; gap: 8px; margin: 14px 0; }
.kb-tab { display: inline-flex; align-items: center; gap: 6px; background: #fff; border: 1px solid var(--border); color: #334155; border-radius: 8px; padding: 7px 14px; font-size: 13px; cursor: pointer; transition: border-color .15s, background .15s, color .15s, box-shadow .15s; }
.kb-tab:hover { border-color: var(--navy-3); }
.kb-tab.active { background: var(--navy); border-color: var(--navy); color: #fff; font-weight: 600; box-shadow: 0 2px 8px rgba(15, 31, 61, .25); }
.kb-dot { width: 7px; height: 7px; border-radius: 50%; background: #cbd5e1; display: inline-block; }
.kb-dot.filled { background: #22c55e; }
.kb-group-label { flex-basis: 100%; font-size: 11px; color: var(--muted); letter-spacing: 1px; margin: 8px 0 0; }
.kb-group-tabs { display: flex; gap: 8px; flex-wrap: wrap; margin: 14px 0; }
.kb-group-tab { padding: 8px 16px; border-radius: 8px; background: #fff; border: 1px solid var(--border); color: var(--navy); text-decoration: none; font-size: 13px; transition: border-color .15s, background .15s, color .15s; }
.kb-group-tab:hover { border-color: var(--navy-3); }
.kb-group-tab.active { background: var(--navy); color: #fff; font-weight: 600; }
.kb-group-section { margin-top: 6px; }
.kb-group-hide { display: none; }
html { scroll-behavior: smooth; }
h2[id] { scroll-margin-top: 72px; }
.contact-form { max-width: 920px; }
.ai-site-form { max-width: 1400px; }
.ai-site-form .site-config-grid { gap: 28px; }
.ai-site-form .site-config-grid > div { min-width: 0; }
.ai-site-form .site-config-grid label { display: flex; flex-direction: column; gap: 6px; margin-bottom: 14px; font-size: 13px; font-weight: 600; }
.ai-site-form .site-config-grid input:not([type="checkbox"]),
.ai-site-form .site-config-grid select,
.ai-site-form .site-config-grid textarea { width: 100%; box-sizing: border-box; font-weight: 400; }
.ai-site-form input[type="file"] { width: 100%; max-width: 100%; box-sizing: border-box; }
.site-action-card { max-width: 1400px; margin: 24px 0; padding: 22px; background: #fff; border: 1px solid var(--border); border-radius: 14px; box-shadow: var(--shadow); }
.site-action-card h2 { margin-top: 0; }
.site-steps { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin: 18px 0; }
.site-step { display: grid; grid-template-columns: 34px 1fr auto; gap: 12px; align-items: center; padding: 16px; border: 1px solid var(--border); border-radius: 12px; background: #fafafa; }
.site-step-no { width: 30px; height: 30px; display: grid; place-items: center; border-radius: 50%; background: #e5e7eb; font-weight: 700; }
.site-step.done .site-step-no, .site-step.ready .site-step-no { background: #dcfce7; color: #166534; }
.site-step p { margin: 4px 0 0; color: var(--muted); font-size: 12px; }
.deploy-btn { background: #16856f; }
.admin-site-settings { max-width: 1400px; }
.city-picker { display: flex; flex-wrap: wrap; gap: 10px; margin: 16px 0; }
.city-picker select, .city-picker input { min-width: 220px; }
.city-options { display: grid; grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)); gap: 8px; max-height: 300px; overflow: auto; padding: 14px; border: 1px solid var(--border); border-radius: 10px; background: #fafafa; }
.city-option { display: flex; align-items: center; gap: 7px; padding: 7px 8px; border-radius: 7px; cursor: pointer; font-size: 13px; }
.city-option:hover { background: #fff; }
.city-selection-bar { display: flex; align-items: center; gap: 18px; flex-wrap: wrap; margin-top: 14px; }
.city-selection-bar button { margin-left: auto; }
.city-site-row { padding: 12px 14px; margin: 9px 0; border: 1px solid var(--border); border-radius: 10px; background: #fafafa; }
.danger-ghost { background: #fff; color: #b42318; border: 1px solid #fecaca; }
@media (max-width: 800px) {
  .site-steps { grid-template-columns: 1fr; }
  .site-step { grid-template-columns: 34px 1fr; }
  .site-step form { grid-column: 2; }
  .city-selection-bar button { margin-left: 0; }
}
.field-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px 18px; margin: 14px 0; }
.field-grid > * { min-width: 0; max-width: 100%; }
.field-grid label { display: flex; flex-direction: column; gap: 6px; font-size: 13px; color: #334155; font-weight: 500; }
.field-grid input { font-weight: 400; }
.field-grid textarea { width: 100%; resize: vertical; font-weight: 400; }
.field-grid select, .field-grid input { width: 100%; max-width: 100%; }
.company-grid .span-2 { grid-row: span 2; }
@media (max-width: 720px) { .field-grid { grid-template-columns: 1fr; } }
/* 侧边栏二级导航（知识库） */
.side-group { margin: 8px 0; }
.side-parent { display: flex; align-items: center; justify-content: space-between; width: 100%; background: transparent; border: 0; color: var(--text); text-decoration: none; padding: 10px 14px; border-radius: 8px; font-size: 14px; font-weight: 600; cursor: pointer; text-align: left; }
.side-parent:hover { background: rgba(32, 30, 26, .045); color: var(--text); box-shadow: none; }
.side-parent:active { transform: none; }
.side-parent.active { background: rgba(181, 68, 52, .08); color: var(--seal); box-shadow: none; }
.caret { transition: transform .15s; opacity: .7; display: inline-flex; }
.side-group.open .caret { transform: rotate(180deg); }
.side-sub { display: none; padding: 2px 0 6px; }
.side-group.open .side-sub { display: block; }
.side-cat { display: flex; align-items: center; gap: 8px; color: var(--muted); font-size: 12px; padding: 7px 14px 3px 18px; text-decoration: none; }
.side-cat.active { color: var(--seal); font-weight: 600; }
.side-cat-btn { display: flex; align-items: center; justify-content: space-between; gap: 8px; width: 100%; background: transparent; border: 0; color: var(--muted); font-size: 12px; padding: 7px 14px 3px 18px; cursor: pointer; text-align: left; }
.side-cat-btn:hover { color: var(--text); background: transparent; box-shadow: none; }
.side-cat-btn:active { transform: none; }
.side-cat-btn.active { color: var(--seal); font-weight: 600; }
.side-cat-btn .caret { font-size: 9px; }
.side-sub2 { display: none; }
.side-sub2.open { display: block; }
.side-sub2 .side-leaf a { padding-left: 44px; }
.side-leaf a { display: block; color: var(--muted); font-size: 12px; padding: 4px 14px 4px 34px; text-decoration: none; border-radius: 6px; }
.side-leaf a:hover { color: var(--text); background: rgba(32, 30, 26, .045); }
.side-leaf a.active { color: var(--seal); }
.side-empty { color: var(--faint); font-size: 11px; padding: 2px 14px 4px 34px; margin: 0; }
.site-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 14px; margin: 16px 0; }
.site-card { position: relative; background: #fff; border: 1px solid var(--border); border-radius: 14px; padding: 18px; box-shadow: var(--shadow); transition: transform .15s, box-shadow .15s, border-color .15s; }
.site-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-lg); border-color: rgba(232, 71, 42, .35); }
.sc-head { display: flex; align-items: center; gap: 10px; }
.sc-icon { font-size: 26px; }
.site-card b { font-size: 15px; color: var(--navy); }
.sc-desc { color: var(--muted); font-size: 12px; margin: 8px 0 6px; min-height: 34px; }
.sc-count { color: var(--muted); font-size: 12px; margin: 0 0 10px; }
.sc-upload { display: flex; gap: 8px; align-items: center; }
.sc-upload input[type=file] { flex: 1; font-size: 12px; padding: 5px; }
.sc-upload button { background: linear-gradient(135deg, #f97316, #e8472a); border-radius: 50%; width: 34px; height: 34px; padding: 0; font-size: 18px; font-weight: 700; }
.sc-manage { display: inline-block; margin-top: 8px; font-size: 12px; color: var(--navy-3); text-decoration: none; }
.tag-list { display: flex; flex-wrap: wrap; gap: 8px; margin: 10px 0; }
.tag-chip { display: inline-flex; align-items: center; gap: 6px; background: #eef2ff; color: #3730a3; border: 1px solid #c7d2fe; border-radius: 999px; padding: 4px 6px 4px 12px; font-size: 13px; }
.tag-chip form { display: inline-flex; }
.tag-chip button { background: transparent; color: #3730a3; border: 0; padding: 0 6px; font-size: 15px; box-shadow: none; }
.upload-box { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; border: 1px dashed var(--border); border-radius: 8px; padding: 18px; min-width: 150px; min-height: 110px; background: #f8fafc; }
.upload-box input[type=file] { font-size: 12px; max-width: 150px; }
.inline-edit { display: inline-block; margin: 0 4px; }
.inline-edit summary { cursor: pointer; color: var(--navy-3); font-size: 13px; }
.req { color: #dc2626; margin-right: 2px; }
.two-col { display: grid; grid-template-columns: 1fr 1fr; gap: 26px; align-items: start; }
@media (max-width: 900px) { .two-col { grid-template-columns: 1fr; } }
.site-hero { background: linear-gradient(135deg, #0b1830, #14294e); color: #fff; border-radius: 16px; padding: 40px 34px; margin-bottom: 20px; }
.site-hero-inner { max-width: 760px; }
.site-brand { display: flex; align-items: center; gap: 12px; font-weight: 700; margin-bottom: 18px; }
.site-hero h1 { color: #fff; font-size: 30px; margin: 0 0 10px; }
.site-desc { color: #cbd5e1; font-size: 15px; line-height: 1.8; }
.site-keywords { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }
.site-keywords span { background: rgba(255,255,255,.1); border: 1px solid rgba(255,255,255,.2); border-radius: 999px; padding: 5px 13px; font-size: 12px; color: #e2e8f0; }
.site-products { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 14px; margin: 10px 0 20px; }
.site-product { background: #fff; border: 1px solid var(--border); border-radius: 12px; padding: 14px; box-shadow: var(--shadow); }
.site-product img { width: 100%; height: 110px; object-fit: cover; border-radius: 8px; margin-bottom: 8px; }
.site-product b { display: block; color: var(--navy); }
.site-price { color: var(--accent); font-weight: 700; display: block; margin-top: 6px; }
.site-gallery { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; margin: 10px 0 20px; }
.site-gallery img { width: 100%; height: 100px; object-fit: cover; border-radius: 10px; }
.site-footer { background: #fff; border: 1px solid var(--border); border-radius: 12px; padding: 16px; text-align: center; color: var(--muted); }
.card-promo { background: #fff; border: 1px solid var(--border); border-radius: 14px; padding: 24px; text-align: center; box-shadow: var(--shadow); }
.card-promo b { font-size: 18px; color: var(--navy); }
.card-promo p { color: var(--muted); font-size: 13px; margin: 6px 0 12px; }
.card-promo .inline-form { justify-content: center; }
.theme-picker { display: flex; flex-wrap: wrap; gap: 10px; margin: 8px 0 14px; }
.theme-opt { display: inline-flex; align-items: center; gap: 6px; border: 1px solid var(--border); border-radius: 999px; padding: 7px 14px; font-size: 13px; cursor: pointer; background: #fff; }
.theme-opt:has(input:checked) { border-color: var(--accent); color: var(--accent); }
pre { background: #f8fafc; border: 1px solid var(--border); border-radius: 8px; padding: 10px; overflow: auto; }

/* ---------- 响应式 ---------- */
@media (max-width: 860px) {
  .layout { flex-direction: column; min-width: 0; }
  .sidebar { width: 100%; max-width: 100%; position: static; height: auto; display: flex; gap: 4px; overflow-x: auto; padding: 8px 10px; }
  .sidebar a { white-space: nowrap; }
  .admin-main { min-width: 0; max-width: 100%; overflow-x: auto; }
  main { padding: 18px 14px 40px; }
  .topbar { flex-wrap: wrap; height: auto; padding: 10px 14px; gap: 10px; }
  .topsearch { order: 3; max-width: 100%; }
}

/* ---------- 门户登录页（讯灵风格） ---------- */
.login-wrap { max-width: none; margin: 0; padding: 0; width: 100%; }
.portal { min-height: 100vh; display: flex; flex-direction: column; color: #fff; background: radial-gradient(1200px 600px at 75% -10%, rgba(232, 71, 42, .18), transparent 60%), radial-gradient(900px 500px at 10% 110%, rgba(30, 58, 107, .55), transparent 60%), linear-gradient(160deg, #0b1830 0%, #0f1f3d 55%, #12284f 100%); }
.portal-topbar { height: 64px; display: flex; align-items: center; justify-content: space-between; padding: 0 28px; border-bottom: 1px solid rgba(255, 255, 255, .08); background: rgba(11, 24, 48, .55); backdrop-filter: blur(8px); position: sticky; top: 0; z-index: 10; }
.portal-brand { display: flex; align-items: center; gap: 10px; font-size: 18px; letter-spacing: .4px; }
.logo-mark { width: 34px; height: 34px; display: inline-flex; align-items: center; justify-content: center; font-weight: 800; font-size: 17px; color: #fff; background: linear-gradient(135deg, #f97316, #e8472a); clip-path: polygon(25% 0%, 75% 0%, 100% 50%, 75% 100%, 25% 100%, 0% 50%); }
.portal-brand .ver { font-size: 11px; background: var(--accent); border-radius: 999px; padding: 2px 10px; margin-left: 2px; letter-spacing: 1px; }
.portal-login-btn { background: var(--accent); border: 0; border-radius: 999px; color: #fff; padding: 8px 22px; font-size: 13px; font-weight: 600; cursor: pointer; }
.portal-login-btn:hover { box-shadow: 0 4px 14px rgba(232, 71, 42, .45); }
.portal-body { display: flex; flex: 1; }
.portal-nav { width: 210px; flex-shrink: 0; padding: 18px 10px; border-right: 1px solid rgba(255, 255, 255, .06); }
.portal-nav a { display: flex; align-items: center; gap: 10px; color: #cbd5e1; text-decoration: none; padding: 11px 14px; border-radius: 8px; font-size: 14px; margin: 3px 0; cursor: pointer; transition: background .15s, color .15s; }
.portal-nav a:hover { background: rgba(255, 255, 255, .07); color: #fff; }
.portal-nav a.active { background: linear-gradient(90deg, rgba(232, 71, 42, .28), rgba(232, 71, 42, .1)); color: #fff; font-weight: 600; box-shadow: inset 0 0 0 1px rgba(232, 71, 42, .4); }
.portal-main { flex: 1; max-width: 1120px; margin: 0 auto; padding: 44px 32px 56px; display: flex; flex-direction: column; gap: 30px; }
.portal-hero { display: flex; gap: 44px; align-items: flex-start; flex-wrap: wrap; }
.hero-text { flex: 1; min-width: 320px; }
.hero-text h1 { font-size: 42px; margin: 0 0 8px; color: #fff; letter-spacing: .5px; }
.hero-ver { display: inline-block; font-size: 13px; background: rgba(232, 71, 42, .2); border: 1px solid rgba(232, 71, 42, .5); color: #ffd9cf; border-radius: 999px; padding: 3px 12px; vertical-align: middle; margin-left: 8px; }
.hero-slogan { font-size: 18px; color: #ffd9cf; margin: 0 0 10px; font-weight: 600; }
.hero-desc { color: #cbd5e1; font-size: 14px; line-height: 1.9; max-width: 640px; margin: 0; }
.feature-chips { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 18px; }
.feature-chips span { background: rgba(255, 255, 255, .06); border: 1px solid rgba(255, 255, 255, .14); border-radius: 999px; padding: 5px 13px; font-size: 12px; color: #e2e8f0; }
.model-chips { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 24px; }
.model-label { font-size: 12px; color: #94a3b8; margin-right: 4px; }
.model-chip { padding: 8px 15px; border-radius: 10px; background: linear-gradient(135deg, rgba(232, 71, 42, .22), rgba(255, 255, 255, .05)); border: 1px solid rgba(232, 71, 42, .38); color: #fff; font-size: 13px; cursor: pointer; text-decoration: none; transition: transform .15s, border-color .15s, box-shadow .15s; }
.model-chip:hover { border-color: var(--accent); transform: translateY(-2px); box-shadow: 0 6px 16px rgba(232, 71, 42, .3); }
.login-panel { width: 330px; flex-shrink: 0; background: rgba(255, 255, 255, .05); border: 1px solid rgba(255, 255, 255, .14); border-radius: 16px; padding: 26px; backdrop-filter: blur(10px); box-shadow: 0 18px 50px rgba(0, 0, 0, .25); }
.login-panel h2 { border: 0; padding: 0; margin: 0 0 16px; color: #fff; font-size: 17px; }
.login-panel form { display: flex; flex-direction: column; gap: 10px; }
.login-panel input { background: rgba(11, 24, 48, .65); border: 1px solid rgba(255, 255, 255, .18); color: #fff; padding: 11px 12px; }
.login-panel input::placeholder { color: #94a3b8; }
.login-panel button { padding: 11px; font-size: 15px; font-weight: 600; background: linear-gradient(135deg, #f97316, #e8472a); }
.login-panel .hint { color: #94a3b8; text-align: center; }
.portal-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.portal-card { background: rgba(255, 255, 255, .05); border: 1px solid rgba(255, 255, 255, .1); border-radius: 14px; padding: 20px; cursor: pointer; transition: transform .15s, border-color .15s, background .15s; }
.portal-card:hover { transform: translateY(-3px); border-color: rgba(232, 71, 42, .55); background: rgba(232, 71, 42, .08); }
.portal-card .pc-icon { font-size: 26px; display: block; margin-bottom: 8px; }
.portal-card b { display: block; color: #fff; font-size: 15px; margin-bottom: 4px; }
.portal-card .pc-sub { font-size: 12px; color: #94a3b8; }
.toast { position: fixed; left: 50%; bottom: 40px; transform: translate(-50%, 12px); background: rgba(15, 23, 42, .94); color: #fff; border: 1px solid rgba(255, 255, 255, .2); border-radius: 999px; padding: 11px 22px; font-size: 13px; opacity: 0; pointer-events: none; transition: opacity .2s, transform .2s; z-index: 100; box-shadow: 0 8px 24px rgba(0, 0, 0, .35); }
.toast.show { opacity: 1; transform: translate(-50%, 0); }
@media (max-width: 900px) {
  .portal-body { flex-direction: column; }
  .portal-nav { width: 100%; display: flex; gap: 4px; overflow-x: auto; border-right: 0; border-bottom: 1px solid rgba(255, 255, 255, .06); padding: 8px 12px; }
  .portal-nav a { white-space: nowrap; }
  .portal-cards { grid-template-columns: repeat(2, 1fr); }
  .portal-main { padding: 28px 16px 40px; }
  .hero-text h1 { font-size: 32px; }
  .login-panel { width: 100%; }
}

/* ---------- 管理后台 ---------- */
.admin-link { color: var(--seal) !important; font-weight: 600; margin-left: 12px; text-decoration: none; }
.balance-chip { display: inline-block; background: #fff; border: 1px solid var(--hairline); color: var(--muted); border-radius: 999px; padding: 3px 12px; font-size: 12px; margin-right: 10px; }
.balance-chip b { color: var(--seal); }
.admin-layout { display: flex; gap: 18px; align-items: flex-start; }
.admin-nav { width: 180px; flex-shrink: 0; background: #fff; border: 1px solid var(--border); border-radius: 12px; padding: 8px; box-shadow: var(--shadow); position: sticky; top: 72px; }
.admin-nav a { display: block; color: var(--navy); text-decoration: none; padding: 10px 12px; border-radius: 8px; font-size: 13px; margin: 2px 0; }
.admin-nav a:hover { background: #f8fafc; }
.admin-nav a.active { background: var(--navy); color: #fff; }
.admin-main { flex: 1; min-width: 0; }
@media (max-width: 900px) {
  .admin-layout { flex-direction: column; }
  .admin-nav { width: 100%; position: static; display: flex; gap: 4px; overflow-x: auto; }
  .admin-nav a { white-space: nowrap; }
}

/* ========== 顶栏导航（侧栏撤除后） ========== */
.topbar .topsearch { flex: 1; max-width: 420px; margin: 0 18px 0 auto; }
.topnav { display: flex; align-items: center; gap: 2px; margin: 0 10px; }
.topnav a { padding: 8px 13px; border-radius: 7px; font-size: 13.5px; color: var(--muted); text-decoration: none; white-space: nowrap; transition: .15s; display: inline-flex; align-items: center; min-height: 44px; }
.topnav a:hover { color: var(--text); background: rgba(32, 30, 26, .045); }
.topnav a.active { color: var(--seal); background: rgba(181, 68, 52, .08); font-weight: 600; }
.dropdown { position: relative; }
@media (max-width: 375px) {
  .dropdown { position: static; }
  .drop-menu { right: 14px; min-width: 0; width: max-content; max-width: calc(100vw - 28px); }
}
.drop-btn { background: transparent; border: 0; color: var(--muted); font-size: 13.5px; padding: 8px 13px; border-radius: 7px; cursor: pointer; display: flex; align-items: center; gap: 4px; }
.drop-btn:hover { color: var(--text); background: rgba(32, 30, 26, .045); }
.dropdown.open .drop-btn { color: var(--seal); }
.drop-menu { position: absolute; top: calc(100% + 8px); right: 0; min-width: 220px; background: #fff; border: 1px solid var(--hairline); border-radius: 10px; box-shadow: var(--shadow-lg); padding: 8px; display: none; z-index: 50; }
.dropdown.open .drop-menu { display: block; }
.drop-menu a { display: block; padding: 9px 12px; border-radius: 7px; font-size: 13px; color: var(--muted); text-decoration: none; white-space: nowrap; }
.drop-menu a:hover { background: rgba(32, 30, 26, .045); color: var(--text); }
.drop-menu a.active { color: var(--seal); background: rgba(181, 68, 52, .08); font-weight: 600; }

/* ========== 登录页（B×C 纸白风格） ========== */
.lgn-page { min-height: 100vh; display: flex; flex-direction: column; }
.lgn-top { padding: 28px 36px; border-bottom: 1px solid var(--hairline); display: flex; align-items: center; justify-content: space-between; }
.lgn-brand { font-family: 'Newsreader', 'Noto Serif SC', 'Songti SC', 'SimSun', serif; font-size: 21px; font-weight: 600; letter-spacing: .05em; display: flex; align-items: center; gap: 11px; color: var(--text); }
.lgn-brand .mark { width: 34px; height: 34px; border-radius: 4px; background: var(--seal); color: #faf7f2; display: grid; place-items: center; font-size: 18px; }
.lgn-body { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 48px 24px 64px; text-align: center; }
.lgn-kick { font-size: 12px; color: var(--muted); letter-spacing: .18em; text-transform: uppercase; font-family: 'JetBrains Mono', ui-monospace, monospace; }
.lgn-title { font-family: 'Newsreader', 'Noto Serif SC', 'Songti SC', 'SimSun', serif; font-size: clamp(46px, 6vw, 72px); font-weight: 600; line-height: 1.1; margin: 18px 0 12px; color: var(--text); }
.lgn-title .thin { font-weight: 400; }
.lgn-sub { color: var(--muted); font-size: 16px; margin: 0 0 38px; }
.lgn-card { width: 360px; max-width: 100%; background: #fff; border: 1px solid var(--hairline); border-radius: 14px; padding: 34px 30px; box-shadow: var(--shadow-lg); }
.lgn-card h2 { border: 0; padding: 0; margin: 0 0 4px; font-size: 19px; letter-spacing: .03em; }
.lgn-card .card-sub { font-size: 12.5px; color: var(--faint); margin-bottom: 18px; }
.lgn-card form { display: flex; flex-direction: column; gap: 11px; }
.lgn-card input { padding: 11px 12px; }
.lgn-card button { padding: 11px; font-size: 15px; font-weight: 600; background: var(--seal); color: #faf7f2; border: 0; border-radius: 8px; cursor: pointer; }
.lgn-card button:hover { background: #c74d3c; }
.lgn-card .hint { text-align: center; color: var(--faint); }
.lgn-foot { border-top: 1px solid var(--hairline); padding: 20px 36px; display: flex; justify-content: space-between; font-size: 12px; color: var(--faint); }
@media (max-width: 1025px) {
  .topbar { flex-wrap: wrap; height: auto; padding: 10px 16px; gap: 8px; }
  .topnav { order: 3; width: 100%; overflow-x: auto; }
  .topbar .topsearch { order: 4; max-width: 100%; margin: 0; }
  .lgn-body { padding: 36px 18px 48px; }
}

/* ========== 工作台主页（B×C 混搭：Linear 骨架 × 原研哉白与空） ========== */
.ws-hero { padding: 64px 0 40px; position: relative; }
.ws-kicker { font-size: 12px; color: var(--muted); letter-spacing: .18em; text-transform: uppercase; font-family: 'JetBrains Mono', ui-monospace, monospace; }
.ws-hero h1 { font-family: 'Newsreader', 'Noto Serif SC', 'Songti SC', 'SimSun', serif; font-size: clamp(42px, 5.6vw, 64px); font-weight: 600; line-height: 1.12; letter-spacing: .01em; margin: 16px 0 8px; color: var(--text); }
.ws-hero h1 .thin { font-weight: 400; }
.ws-sub { font-size: 16px; color: var(--muted); max-width: 40em; line-height: 1.8; }
.ws-seal {
  position: absolute; top: 58px; right: 0; width: 54px; height: 54px; border-radius: 3px;
  background: var(--seal); color: #faf7f2; display: grid; place-items: center;
  font-family: 'Newsreader', 'Noto Serif SC', 'Songti SC', 'SimSun', serif; font-size: 28px;
  box-shadow: 0 0 0 1px rgba(181, 68, 52, .25);
}
.ws-cta { display: flex; gap: 12px; margin-top: 28px; flex-wrap: wrap; }
.ws-btn { display: inline-block; border: 1px solid var(--seal); color: var(--seal); background: transparent; padding: 10px 22px; border-radius: 7px; font-size: 14px; font-weight: 600; text-decoration: none; transition: .16s; }
.ws-btn:hover { background: rgba(181, 68, 52, .07); }
.ws-btn.solid { background: var(--seal); color: #faf7f2; }
.ws-btn.solid:hover { background: #c74d3c; }

.ws-bento {
  display: grid; grid-template-columns: repeat(6, 1fr); grid-auto-rows: minmax(118px, auto);
  grid-template-areas:
    "flow flow flow kb   kb   pub"
    "flow flow flow agent agent status"
    "ai   ai   ai   ai   ai   ai";
  gap: 14px; padding: 30px 0 20px;
}
.ws-tile {
  background: #fff; border: 1px solid var(--hairline); border-radius: 10px; padding: 22px;
  display: flex; flex-direction: column; gap: 10px; transition: .18s;
}
.ws-tile:hover { border-color: rgba(181, 68, 52, .35); box-shadow: var(--shadow); transform: translateY(-2px); }
.ws-tile .ws-tag { font-size: 11px; color: var(--faint); letter-spacing: .1em; font-family: 'JetBrains Mono', ui-monospace, monospace; }
.ws-tile h3 { font-size: 16px; color: var(--text); font-weight: 600; margin: 0; }
.ws-tile p { font-size: 13.5px; color: var(--muted); margin: 0; line-height: 1.7; }
.ws-tile .go { margin-top: auto; font-size: 13px; color: var(--seal); text-decoration: none; opacity: 0; transition: .18s; }
.ws-tile:hover a.go { opacity: 1; }
.t-flow { grid-area: flow; }
.t-kb { grid-area: kb; }
.t-pub { grid-area: pub; }
.t-agent { grid-area: agent; }
.t-status { grid-area: status; }
.t-ai { grid-area: ai; }

.ws-steps { display: flex; align-items: center; gap: 8px; margin-top: 6px; flex-wrap: wrap; }
.ws-step { display: flex; align-items: center; gap: 8px; }
.ws-step .box { border: 1px solid var(--hairline); background: var(--bg); border-radius: 7px; padding: 8px 13px; font-size: 13px; color: var(--text); white-space: nowrap; }
.ws-step .arr { color: var(--faint); }
.ws-meta { margin-top: 12px; font-size: 12px; color: var(--faint); line-height: 1.9; font-family: 'JetBrains Mono', ui-monospace, monospace; }
.ws-placeholder { border: 1px dashed var(--hairline); border-radius: 8px; color: var(--faint); font-size: 13px; padding: 14px; background: transparent; }

.ws-ai { display: grid; grid-template-columns: repeat(5, 1fr); gap: 10px; }
.ws-ai-cell { display: flex; align-items: center; gap: 10px; border: 1px solid var(--hairline); border-radius: 9px; padding: 11px 13px; text-decoration: none; transition: .15s; background: #fff; }
.ws-ai-cell:hover { border-color: rgba(181, 68, 52, .4); background: rgba(181, 68, 52, .03); }
.ws-ai-init { width: 28px; height: 28px; border-radius: 7px; background: var(--bg); border: 1px solid var(--hairline); display: grid; place-items: center; font-size: 12px; font-weight: 700; color: var(--muted); flex-shrink: 0; }
.ws-ai-cell b { font-size: 13.5px; color: var(--text); font-weight: 600; }
.ws-ai-cell span { display: block; font-size: 11.5px; color: var(--faint); }

.ws-foot { border-top: 1px solid var(--hairline); padding: 20px 0 34px; display: flex; gap: 24px; font-size: 12px; color: var(--faint); flex-wrap: wrap; }

.company-section { margin-bottom: 20px; }
.section-head { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; }
.section-head h2 { margin: 26px 0 6px; font-size: 18px; }
.ws-company-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 14px; margin: 12px 0; }
.ws-company-card { background: #fff; border: 1px solid var(--border); border-radius: 12px; padding: 16px 18px; box-shadow: var(--shadow); display: flex; flex-direction: column; gap: 10px; transition: border-color .15s, box-shadow .15s, transform .15s; }
.ws-company-card:hover { border-color: rgba(181, 68, 52, .35); box-shadow: var(--shadow-lg); transform: translateY(-2px); }
.ws-company-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.ws-company-head b { font-size: 16px; }
.ws-company-head b a { color: var(--text); text-decoration: none; }
.ws-company-head b a:hover { color: var(--seal); }
.ws-company-product { font-size: 13px; color: var(--muted); margin: 0; }
.ws-company-stats { display: flex; flex-wrap: wrap; gap: 6px 14px; font-size: 12px; color: var(--muted); }
.ws-company-stats b { color: var(--seal); font-size: 14px; margin-right: 2px; }
.ws-company-links { display: flex; gap: 8px; flex-wrap: wrap; margin-top: auto; }
.ws-status-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; margin-top: 10px; }
.ws-status-grid span { border: 1px solid var(--hairline); border-radius: 8px; padding: 8px 10px; font-size: 12px; color: var(--muted); background: #fff; }
.ws-status-grid b { color: var(--text); font-size: 16px; margin-right: 4px; }

.stage-pipeline { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin: 14px 0 18px; font-size: 13px; color: var(--faint); }
.stage-node { display: flex; align-items: center; gap: 6px; padding: 6px 12px; border: 1px solid var(--hairline); border-radius: 999px; background: #fff; color: var(--muted); }
.stage-node .stage-dot { width: 18px; height: 18px; border-radius: 50%; background: var(--bg); border: 1px solid var(--hairline); display: grid; place-items: center; font-size: 11px; }
.stage-node.active { border-color: var(--seal); color: var(--seal); font-weight: 600; background: rgba(181, 68, 52, .06); }
.stage-node.active .stage-dot { background: var(--seal); color: #fff; border-color: var(--seal); }
.stage-node.done { color: var(--text); }
.stage-node.done .stage-dot { background: #dcfce7; color: #15803d; border-color: #bbf7d0; }
.stage-arrow { color: var(--faint); }

.quick-links { display: flex; flex-wrap: wrap; gap: 8px; margin: 8px 0 18px; }
.quick-links a { display: inline-block; border: 1px solid var(--hairline); background: #fff; color: var(--muted); border-radius: 8px; padding: 7px 13px; font-size: 13px; text-decoration: none; transition: .15s; }
.quick-links a:hover { border-color: rgba(181, 68, 52, .4); color: var(--seal); }

.kb-overview { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 14px; }
.kb-group-block h3 { margin: 0 0 6px; font-size: 15px; }
.kb-doc-list { margin: 8px 0 0; padding-left: 18px; font-size: 13px; line-height: 1.9; }
.kb-doc-list a { color: var(--text); text-decoration: none; }
.kb-doc-list a:hover { color: var(--seal); }

@media (max-width: 980px) {
  .ws-bento {
    grid-template-columns: repeat(2, 1fr);
    grid-template-areas:
      "flow flow"
      "kb   pub"
      "agent status"
      "ai   ai";
  }
  .ws-ai { grid-template-columns: repeat(2, 1fr); }
  .ws-seal { right: 0; }
  .ws-company-grid { grid-template-columns: 1fr; }
  .kb-overview { grid-template-columns: 1fr; }
}

/* ========== 发布工作台（2026-08-17 原型移植：Linear Bento × 白与空） ========== */
.pb-page { max-width: 1180px; margin: 0 auto; padding: 40px 28px 72px; }

/* ---- 页头 ---- */
.pb-head { position: relative; display: flex; align-items: flex-start; justify-content: space-between; gap: 24px; padding: 8px 0 26px; border-bottom: 1px solid var(--hairline); margin-bottom: 26px; }
.pb-kicker { font-size: 12px; color: var(--muted); letter-spacing: .18em; text-transform: uppercase; font-family: 'JetBrains Mono', ui-monospace, monospace; }
.pb-title { font-family: 'Newsreader', 'Noto Serif SC', 'Songti SC', 'SimSun', serif; font-size: clamp(32px, 4vw, 44px); font-weight: 600; line-height: 1.12; letter-spacing: .01em; margin: 10px 0 8px; color: var(--text); }
.pb-title .thin { font-weight: 400; color: var(--faint); font-size: .62em; letter-spacing: .06em; }
.pb-sub { font-size: 14px; color: var(--muted); max-width: 46em; line-height: 1.75; margin: 0; }
.pb-seal { flex: none; width: 52px; height: 52px; border-radius: 3px; background: var(--seal); color: #faf7f2; display: grid; place-items: center; font-family: 'Newsreader', 'Noto Serif SC', 'Songti SC', 'SimSun', serif; font-size: 26px; box-shadow: 0 0 0 1px rgba(181, 68, 52, .25); }
.pb-head-meta { margin-top: 16px; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.pb-date { font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: 12px; color: var(--muted); border: 1px solid var(--hairline); border-radius: 999px; padding: 4px 12px; background: #fff; }
.pb-autostate { font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: 12px; color: var(--seal); border: 1px solid rgba(181, 68, 52, .35); background: rgba(181, 68, 52, .05); border-radius: 999px; padding: 4px 12px; }
.pb-autostate.off { color: var(--faint); border-color: var(--hairline); background: #fff; }

/* ---- 概览计数 ---- */
.pb-overview { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 22px; }
.pb-stat { background: #fff; border: 1px solid var(--hairline); border-radius: 10px; padding: 16px 18px 14px; }
.pb-stat .num { font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: 30px; line-height: 1; color: var(--text); font-weight: 500; font-variant-numeric: tabular-nums; }
.pb-stat .lbl { display: block; margin-top: 7px; font-size: 12px; color: var(--muted); letter-spacing: .08em; }
.pb-stat .sub { display: block; margin-top: 2px; font-size: 11.5px; color: var(--faint); }
.pb-stat.attn .num { color: var(--seal); }
.pb-stat.ok .num { color: #047857; }

/* ---- 操作台 ---- */
.pb-actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 34px; }
.pb-btn { display: inline-flex; align-items: center; gap: 8px; border-radius: 7px; padding: 10px 20px; font-size: 14px; font-weight: 600; cursor: pointer; text-decoration: none; transition: .16s; border: 1px solid transparent; }
.pb-btn.solid { background: var(--seal); color: #faf7f2; border-color: var(--seal); }
.pb-btn.solid:hover { background: #c74d3c; border-color: #c74d3c; }
.pb-btn.ghost { background: #fff; color: var(--navy); border-color: var(--hairline); }
.pb-btn.ghost:hover { border-color: rgba(181, 68, 52, .45); color: var(--seal); }
.pb-btn:disabled { opacity: .45; cursor: not-allowed; }
.pb-btn .arrow { font-size: 13px; }
.pb-switch { display: inline-flex; align-items: center; gap: 9px; margin-left: 6px; font-size: 13px; color: var(--muted); cursor: pointer; user-select: none; }
.pb-switch input { display: none; }
.pb-switch .track { width: 38px; height: 21px; border-radius: 999px; background: #e5e1d8; border: 1px solid var(--hairline); position: relative; transition: .18s; }
.pb-switch .track::after { content: ""; position: absolute; top: 2px; left: 2px; width: 15px; height: 15px; border-radius: 50%; background: #fff; box-shadow: 0 1px 2px rgba(32,30,26,.25); transition: .18s; }
.pb-switch input:checked + .track { background: var(--seal); border-color: var(--seal); }
.pb-switch input:checked + .track::after { left: 19px; }
.pb-actions .hint { flex-basis: 100%; margin: 2px 0 0; }

/* ---- 区块标题 ---- */
.pb-sec { margin-bottom: 34px; }
.pb-sec-head { display: flex; align-items: baseline; gap: 12px; border-bottom: 1px solid var(--hairline); padding-bottom: 8px; margin-bottom: 14px; }
.pb-sec-tag { font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: 11px; color: var(--faint); letter-spacing: .14em; }
.pb-sec-head h2 { margin: 0; font-size: 18px; font-weight: 600; border: 0; padding: 0; }
.pb-sec-head .meta { margin-left: auto; font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: 12px; color: var(--faint); }

/* ---- 今日发布 ---- */
.pb-today-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }
.pb-day { background: #fff; border: 1px solid var(--hairline); border-radius: 10px; padding: 14px 16px 12px; }
.pb-day-top { display: flex; align-items: baseline; gap: 10px; }
.pb-day-name { font-size: 14px; font-weight: 600; color: var(--text); }
.pb-day-count { font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: 12px; color: var(--muted); }
.pb-day-count b { color: var(--text); font-weight: 500; }
.pb-day-bar { height: 2px; background: #eeeae1; border-radius: 2px; margin: 9px 0 8px; overflow: hidden; }
.pb-day-bar i { display: block; height: 100%; background: var(--seal); border-radius: 2px; }
.pb-day-bar.full i { background: #047857; }
.pb-day-done { font-size: 12px; color: #047857; font-family: 'JetBrains Mono', ui-monospace, monospace; }
.pb-day-pending { margin: 2px 0 0; padding: 0; list-style: none; font-size: 12.5px; color: var(--muted); line-height: 1.75; }
.pb-day-pending li { display: flex; gap: 8px; align-items: baseline; }
.pb-day-pending .dot { flex: none; width: 5px; height: 5px; border-radius: 50%; background: var(--seal); align-self: center; }
.pb-day-pending a { color: var(--text); text-decoration: none; border-bottom: 1px solid transparent; }
.pb-day-pending a:hover { color: var(--seal); border-bottom-color: rgba(181,68,52,.4); }
.pb-day-pending .tag { flex: none; font-size: 10.5px; color: var(--faint); font-family: 'JetBrains Mono', ui-monospace, monospace; border: 1px solid var(--hairline); border-radius: 999px; padding: 0 7px; align-self: center; }
.pb-day-pending .tag.warn { color: #b45309; border-color: rgba(180, 83, 9, .35); }
.pb-day-empty { font-size: 12px; color: var(--faint); margin-top: 6px; }

/* ---- 筛选 ---- */
.pb-filters { display: flex; gap: 6px; flex-wrap: wrap; margin: 4px 0 16px; }
.pb-fchip { font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: 11.5px; color: var(--muted); background: #fff; border: 1px solid var(--hairline); border-radius: 999px; padding: 5px 13px; cursor: pointer; transition: .15s; }
.pb-fchip:hover { border-color: rgba(181,68,52,.45); color: var(--seal); }
.pb-fchip.active { background: var(--navy); border-color: var(--navy); color: #fff; }
.pb-fchip .n { opacity: .65; margin-left: 5px; }

/* ---- 队列表格 ---- */
.pb-table-wrap { background: #fff; border: 1px solid var(--hairline); border-radius: 12px; max-height: 72vh; overflow: auto; }

/* 花叔评审：页面主标题图标用线性 SVG，统一为小号中性字形 */
h1 > svg { vertical-align: -3px; margin-right: 8px; }
.pb-table { width: 100%; border-collapse: collapse; }
.pb-table th { font-size: 11px; letter-spacing: .1em; text-transform: uppercase; font-family: 'JetBrains Mono', ui-monospace, monospace; color: var(--faint); font-weight: 500; text-align: left; padding: 11px 14px; border-bottom: 1px solid var(--hairline); background: var(--bg); white-space: nowrap; }
.pb-table td { padding: 12px 14px; border-bottom: 1px solid var(--hairline); font-size: 13px; vertical-align: middle; }
.pb-table tr:last-child td { border-bottom: 0; }
.pb-table tbody tr { transition: background .15s; }
.pb-table tbody tr:hover { background: rgba(181, 68, 52, .025); }
.pb-table tr.is-failed td { background: rgba(220, 38, 38, .025); }
.pb-qid { font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: 12px; color: var(--faint); }
.pb-status { display: inline-flex; align-items: center; gap: 7px; white-space: nowrap; font-size: 12.5px; }
.pb-status .dot { width: 7px; height: 7px; border-radius: 50%; flex: none; }
.pb-status.st-scheduled .dot { border: 1.5px solid var(--faint); background: transparent; }
.pb-status.st-ready .dot { background: var(--text); }
.pb-status.st-publishing .dot { background: #d97706; }
.pb-status.st-published .dot { background: #059669; }
.pb-status.st-failed .dot { background: var(--seal); }
.pb-status.st-failed { color: var(--seal); font-weight: 600; }
.pb-hint { display: block; margin-top: 2px; font-size: 11.5px; color: #b45309; line-height: 1.5; }
.pb-note { display: block; margin-top: 2px; font-size: 11.5px; color: var(--faint); font-family: 'JetBrains Mono', ui-monospace, monospace; }
.pb-plat { display: inline-block; font-size: 12px; color: var(--navy); background: var(--bg); border: 1px solid var(--hairline); border-radius: 6px; padding: 3px 9px; white-space: nowrap; }
.pb-title-cell { min-width: 240px; }
.pb-title-cell b { display: block; font-weight: 500; font-size: 13px; color: var(--text); line-height: 1.5; }
.pb-title-cell .co { font-size: 11.5px; color: var(--faint); margin-top: 1px; }
.pb-time { font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: 12px; color: var(--muted); white-space: nowrap; }
.pb-links { display: flex; gap: 8px; white-space: nowrap; font-size: 12.5px; }
.pb-links a { color: var(--seal); text-decoration: none; border-bottom: 1px solid transparent; }
.pb-links a:hover { border-bottom-color: rgba(181,68,52,.4); }
.pb-op { display: flex; gap: 6px; align-items: center; }
.pb-op select, .pb-op input { padding: 5px 8px; font-size: 12px; border-radius: 6px; border: 1px solid var(--hairline); background: #fff; color: var(--text); }
.pb-op input { width: 150px; }
.pb-op button { padding: 5px 12px; font-size: 12px; border-radius: 6px; background: var(--navy); color: #fff; border: 1px solid var(--navy); cursor: pointer; }
.pb-op button:hover { background: var(--seal); border-color: var(--seal); }

/* ---- 页脚 ---- */
.pb-foot { border-top: 1px solid var(--hairline); margin-top: 28px; padding-top: 16px; display: flex; gap: 22px; flex-wrap: wrap; font-size: 12px; color: var(--faint); font-family: 'JetBrains Mono', ui-monospace, monospace; }

/* ---- 一键发布确认弹窗 ---- */
.pb-modal { position: fixed; inset: 0; background: rgba(32, 30, 26, .36); display: none; align-items: center; justify-content: center; z-index: 80; padding: 20px; }
.pb-modal.open { display: flex; }
.pb-modal-box { background: #faf7f2; border: 1px solid var(--hairline); border-radius: 12px; max-width: 440px; width: 100%; padding: 26px 28px 22px; box-shadow: 0 18px 50px rgba(32, 30, 26, .18); }
.pb-modal-tag { font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: 11px; color: var(--faint); letter-spacing: .14em; }
.pb-modal-box h3 { margin: 8px 0 12px; font-size: 19px; font-weight: 600; color: var(--text); }
.pb-modal-box p { margin: 0 0 12px; font-size: 13.5px; color: var(--muted); line-height: 1.7; }
.pb-modal-list { list-style: none; margin: 0 0 16px; padding: 0; border: 1px solid var(--hairline); border-radius: 8px; background: #fff; }
.pb-modal-list li { display: flex; justify-content: space-between; gap: 14px; padding: 10px 14px; font-size: 13px; border-bottom: 1px solid var(--hairline); }
.pb-modal-list li:last-child { border-bottom: 0; }
.pb-modal-list b { font-family: 'JetBrains Mono', ui-monospace, monospace; font-weight: 500; }
.pb-modal-list li.auto b { color: var(--seal); }
.pb-modal-list li.manual b { color: var(--navy); }
.pb-plat { display: flex; align-items: center; gap: 10px; padding: 10px 14px; font-size: 13px; border-bottom: 1px solid var(--hairline); cursor: pointer; }
.pb-plat:last-child { border-bottom: 0; }
.pb-plat input { accent-color: var(--seal); }
.pb-plat-name { flex: 1; }
.pb-plat b { font-family: 'JetBrains Mono', ui-monospace, monospace; font-weight: 500; }
.pb-modal-actions { display: flex; justify-content: flex-end; gap: 10px; }
.pb-modal-box {
  display: flex; flex-direction: column;
  max-height: min(82vh, 760px);
  overflow-x: hidden;
}
.pb-modal-list, .case-list, .area-tree, #priceRows { overflow: auto; }
#priceRows, .area-tree { flex: 1 1 auto; min-height: 0; }
#priceRows { margin: 4px 0 10px; padding-right: 8px; }
.area-tree { margin-bottom: 12px; }
.pb-modal-actions { flex-shrink: 0; padding-top: 12px; flex-wrap: wrap; }
.pb-modal-actions .btn { flex-shrink: 0; }

/* ---- 首次使用空态 ---- */
.pb-empty { border: 1px solid var(--hairline); border-radius: 12px; background: #fff; padding: 40px 42px 34px; }
.pb-empty-head { display: flex; align-items: baseline; gap: 12px; border-bottom: 1px solid var(--hairline); padding-bottom: 10px; margin-bottom: 22px; }
.pb-empty-tag { font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: 11px; color: var(--faint); letter-spacing: .14em; }
.pb-empty-head h2 { margin: 0; font-size: 18px; font-weight: 600; border: 0; padding: 0; }
.pb-empty-head .meta { margin-left: auto; font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: 12px; color: var(--faint); }
.pb-onboard { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.pb-step { border: 1px solid var(--hairline); border-radius: 10px; padding: 20px 20px 18px; background: var(--bg); display: flex; flex-direction: column; gap: 10px; }
.pb-step .no { font-family: 'Newsreader', 'Noto Serif SC', 'Songti SC', 'SimSun', serif; font-size: 22px; color: var(--seal); line-height: 1; }
.pb-step .no .sl { font-size: 11px; letter-spacing: .14em; color: var(--faint); font-family: 'JetBrains Mono', ui-monospace, monospace; display: block; margin-top: 4px; }
.pb-step b { font-size: 15px; color: var(--text); font-weight: 600; }
.pb-step p { font-size: 13px; color: var(--muted); line-height: 1.7; margin: 0; }
.pb-step a.go { margin-top: auto; font-size: 13px; color: var(--seal); text-decoration: none; }
.pb-step a.go:hover { text-decoration: underline; text-underline-offset: 3px; }
.pb-step.done { background: #fff; }
.pb-step.done .no { color: #047857; }
.pb-step.done .mark { font-size: 11.5px; color: #047857; font-family: 'JetBrains Mono', ui-monospace, monospace; }
.pb-empty-foot { margin-top: 24px; padding-top: 16px; border-top: 1px solid var(--hairline); display: flex; gap: 22px; flex-wrap: wrap; font-size: 12px; color: var(--faint); font-family: 'JetBrains Mono', ui-monospace, monospace; }
.pb-waiting { margin-top: 14px; border: 1px dashed var(--hairline); border-radius: 10px; background: var(--bg); padding: 22px 24px; display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.pb-waiting .dot { width: 8px; height: 8px; border-radius: 50%; background: #d97706; flex: none; }
.pb-waiting b { font-size: 14px; color: var(--text); }
.pb-waiting p { margin: 3px 0 0; font-size: 12.5px; color: var(--muted); }
.pb-waiting .mono { margin-left: auto; font-size: 12px; color: var(--faint); font-family: 'JetBrains Mono', ui-monospace, monospace; }

@media (max-width: 980px) {
  .pb-overview { grid-template-columns: repeat(2, 1fr); }
  .pb-today-grid { grid-template-columns: 1fr; }
  .pb-table-wrap { overflow-x: auto; }
  .pb-op { flex-wrap: wrap; }
}
@media (max-width: 900px) { .pb-onboard { grid-template-columns: 1fr; } }

@media (prefers-reduced-motion: reduce) {
  * { animation: none !important; transition: none !important; }
}

/* 密码框小眼睛（2026-08-23：工作台/官网/中央后台通用） */
.pw-wrap { display: inline-flex; align-items: center; gap: 6px; }
.pw-wrap input { flex: 1; min-width: 0; }
.pw-toggle { background: none; border: none; cursor: pointer; padding: 4px; color: #9aa3af; display: inline-flex; align-items: center; }
.pw-toggle:hover { color: var(--navy); }
.pw-toggle.on { color: var(--navy); }
.pw-toggle svg { width: 18px; height: 18px; }

/* 新公司第一周只发官网引导条（2026-08-23） */
.onboarding-banner { border: 1px solid #bfdbfe; background: #eff6ff; color: #1e3a8a; border-radius: 10px; padding: 12px 16px; margin: 12px 0; font-size: 13.5px; line-height: 1.7; }

/* ---------- 产品/资讯页（2026-08-22 升级：服务区域树 + 价格明细） ---------- */
.pf-line { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; width: 100%; }
.btn-link { background: none; border: none; padding: 0; color: var(--navy); text-decoration: underline; cursor: pointer; font-size: 13px; }
.btn-link:hover { color: var(--accent); }
.area-tree { max-height: 58vh; overflow: auto; border: 1px solid var(--border); border-radius: 10px; padding: 12px; background: #fff; margin-bottom: 14px; }
.area-list { list-style: none; margin: 2px 0 2px 18px; padding: 0; }
.area-node-head { display: flex; align-items: center; gap: 6px; padding: 3px 0; font-size: 13.5px; }
.area-node-head span { cursor: pointer; }
.area-node.collapsed > .area-list { display: none; }
.area-toggle { background: none; border: none; padding: 0 2px; color: var(--faint); cursor: pointer; font-size: 12px; line-height: 1; }
.area-node-head input[type="checkbox"] { width: 16px; height: 16px; accent-color: var(--accent); }
.area-select-all { min-height: 24px; padding: 2px 10px; font-size: 12px; border-radius: 6px; }
.area-search { width: 100%; padding: 9px 12px; border: 1px solid var(--border); border-radius: 8px; font-size: 13px; margin-bottom: 10px; box-sizing: border-box; }
.price-row { display: flex; gap: 8px; align-items: center; margin: 8px 0; flex-wrap: wrap; }
.price-row input { padding: 8px 10px; border: 1px solid var(--border); border-radius: 8px; font-size: 13px; }
.pf-period { width: 140px; }
.pf-price { width: 110px; }
.pf-content { flex: 1; min-width: 170px; }
.price-del { min-height: 34px; padding: 4px 10px; }
.case-list { max-height: 44vh; overflow: auto; border: 1px solid var(--border); border-radius: 10px; padding: 10px; background: #fff; margin-bottom: 12px; }
.case-item { border: 1px solid var(--hairline); border-radius: 10px; padding: 10px 12px; margin-bottom: 10px; background: #fff; }
.case-item:last-child { margin-bottom: 0; }
.case-item-head { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; flex-wrap: wrap; }
.case-item-head b { font-size: 14px; color: var(--navy); }
.case-tag { background: #f3f4f6; border-radius: 6px; padding: 2px 8px; font-size: 12px; color: var(--muted); }
.case-auth { border-radius: 6px; padding: 2px 8px; font-size: 12px; }
.case-auth { background: #eef4ff; color: #3b6fd4; }
.case-used { border-radius: 6px; padding: 2px 8px; font-size: 12px; background: #e6f6ec; color: #1f8a4c; }
.case-item-body { font-size: 13px; color: var(--text); line-height: 1.65; }
.case-item-body div { margin: 2px 0; }
.case-item-body b { color: var(--navy); font-weight: 600; }
.case-item-ops { display: flex; gap: 10px; align-items: center; margin-top: 8px; flex-wrap: wrap; }
.case-item-ops details { margin: 0; padding: 0; border: 0; }
.case-item-ops details summary { min-height: 30px; font-size: 13px; color: var(--navy); }
.case-form { display: flex; flex-direction: column; gap: 8px; margin: 8px 0; }
.case-form input, .case-form select { padding: 8px 10px; border: 1px solid var(--border); border-radius: 8px; font-size: 13px; }
.case-form select { min-width: 110px; }
.case-add { margin: 0 0 12px; }

/* ============================================================
   沉浸式升级 v20260825 —— 纸白朱砂衬线 · 导航树 + 氛围层
   仅改观感，不动后端；遵循 prefers-reduced-motion
   ============================================================ */

/* 纸纹颗粒：全屏一层，纯装饰 */
body::after {
  content: ""; position: fixed; inset: -50%; z-index: 9998; pointer-events: none;
  opacity: .05; mix-blend-mode: multiply;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix type='saturate' values='0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
  animation: paperShift 12s steps(8) infinite;
}
@keyframes paperShift { 0%{transform:translate(0,0)} 25%{transform:translate(-1.5%,1%)} 50%{transform:translate(1%,-1.5%)} 75%{transform:translate(-1%,1.5%)} 100%{transform:translate(0,0)} }
@media (prefers-reduced-motion:reduce){ body::after { animation: none; } }

/* ---------- 顶栏：纸白毛玻璃 + 分组导航 ---------- */
.topbar { background: rgba(250,247,242,.82); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); }
.topnav { display: flex; align-items: center; gap: 4px; }
.topnav > a, .topnav .drop-btn {
  display: inline-flex; align-items: center; gap: 6px; height: 34px; padding: 0 12px;
  border-radius: 999px; font-size: 13.5px; font-weight: 500; color: var(--muted);
  text-decoration: none; border: 0; background: transparent; cursor: pointer;
  transition: background .18s ease, color .18s ease;
}
.topnav > a:hover, .topnav .drop-btn:hover { background: rgba(32,30,26,.05); color: var(--text); }
.topnav > a.active, .topnav .dropdown.open .drop-btn { background: rgba(181,68,52,.09); color: var(--seal); font-weight: 600; }
.topnav .dropdown { position: relative; }
.topnav .drop-menu {
  position: absolute; top: calc(100% + 8px); left: 50%; transform: translateX(-50%) translateY(6px);
  min-width: 226px; padding: 8px; background: #fff; border: 1px solid var(--border);
  border-radius: 14px; box-shadow: var(--shadow-lg); opacity: 0; visibility: hidden;
  transition: opacity .22s ease, transform .22s ease, visibility .22s; z-index: 80;
}
.topnav .dropdown.open .drop-menu { opacity: 1; visibility: visible; transform: translateX(-50%) translateY(0); }
.topnav .drop-menu a {
  display: flex; align-items: center; justify-content: space-between; gap: 18px;
  padding: 10px 12px; border-radius: 9px; color: var(--text); text-decoration: none; font-size: 13.5px;
}
.topnav .drop-menu a:hover { background: rgba(181,68,52,.07); color: var(--seal); }
.topnav .drop-menu a.active { background: rgba(181,68,52,.08); color: var(--seal); font-weight: 600; }
.topnav .drop-menu em { font-style: normal; font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: 11px; color: var(--faint); }
.topnav .drop-menu a:hover em, .topnav .drop-menu a.active em { color: var(--seal); }
.topnav .dropdown:last-child .drop-menu { left: auto; right: 0; transform: translateY(6px); }
.topnav .dropdown:last-child.open .drop-menu { transform: translateY(0); }

/* ---------- 公司导航栏：二级导航树 ---------- */
.company-rail {
  position: sticky; top: 58px; z-index: 15;
  display: flex; align-items: center; gap: 4px; padding: 8px 24px;
  background: rgba(250,247,242,.86); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--hairline); overflow-x: auto; scrollbar-width: none;
}
.company-rail::-webkit-scrollbar { display: none; }
.company-rail::before {
  content: "公司"; flex: none; margin-right: 8px; font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 11px; letter-spacing: 2px; color: var(--faint);
}
.company-rail a {
  flex: none; display: inline-flex; align-items: center; height: 30px; padding: 0 13px;
  border-radius: 999px; font-size: 12.5px; color: var(--muted); text-decoration: none;
  border: 1px solid transparent; transition: all .18s ease;
}
.company-rail a:hover { color: var(--text); background: rgba(32,30,26,.045); }
.company-rail a.active {
  color: #fff; background: var(--seal); border-color: var(--seal);
  box-shadow: 0 4px 14px rgba(181,68,52,.22); font-weight: 600;
}

/* ---------- 页面标题：衬线大标题 + 发丝线 ---------- */
main > h1, .pb-title {
  font-family: 'Newsreader', 'Noto Serif SC', 'Songti SC', 'SimSun', serif;
  font-weight: 600; font-size: clamp(24px, 3vw, 34px); letter-spacing: .01em;
  display: flex; align-items: center; gap: 10px;
}
main > h1 { padding-bottom: 14px; border-bottom: 1px solid var(--hairline); margin-bottom: 18px; }
main > h1 svg { width: 26px; height: 26px; color: var(--seal); }

/* ---------- 卡片与按钮精修 ---------- */
.company-card, .profile-card, .login-box, .ws-tile, .article-body, .consult-form { transition: box-shadow .25s ease, transform .25s ease; }
.company-card:hover, .profile-card:hover { box-shadow: var(--shadow-lg); }
.btn, .ws-btn { transition: transform .16s ease, box-shadow .16s ease, background .16s ease; }
.btn:hover, .ws-btn:hover { transform: translateY(-1px); box-shadow: var(--shadow-lg); }

/* ---------- 工作台：导航索引 + bento 编号 ---------- */
.ws-nav-index {
  display: flex; align-items: baseline; gap: 14px; margin: 26px 0 14px;
  padding: 12px 18px; border: 1px solid var(--border); border-radius: 12px; background: #fff;
}
.ws-nav-index .mono { color: var(--seal); font-size: 12px; letter-spacing: 2px; }
.ws-nav-index p { margin: 0; color: var(--muted); font-size: 13px; }
.ws-bento { counter-reset: wsb; }
.ws-tile { counter-increment: wsb; }
.ws-tile .ws-tag::before { content: "0" counter(wsb) " · "; color: var(--seal); }
.ws-hero { position: relative; overflow: hidden; }
.ws-hero::after {
  content: ""; position: absolute; right: -80px; top: -80px; width: 320px; height: 320px;
  border-radius: 50%; background: radial-gradient(circle, rgba(181,68,52,.08), transparent 65%);
  pointer-events: none;
}
.ws-seal { box-shadow: 0 14px 34px rgba(181,68,52,.22); }
.ws-steps .box { transition: transform .2s ease, box-shadow .2s ease; }
.ws-tile:hover .ws-steps .box { transform: translateY(-2px); box-shadow: var(--shadow-lg); }

/* ---------- 登录页：印章动效（动态且收敛） ---------- */
.lgn-page { min-height: 100vh; display: flex; flex-direction: column; position: relative; }
.lgn-page::before {
  content: ""; position: absolute; top: -160px; right: -160px; width: 520px; height: 520px;
  border-radius: 50%; background: radial-gradient(circle, rgba(181,68,52,.08), transparent 66%);
  pointer-events: none;
}
.lgn-page::after {
  content: ""; position: absolute; left: -140px; bottom: -140px; width: 460px; height: 460px;
  border-radius: 50%; background: radial-gradient(circle, rgba(32,30,26,.05), transparent 66%);
  pointer-events: none;
}
.lgn-body { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 40px 16px; }
.lgn-title {
  font-family: 'Newsreader', 'Noto Serif SC', 'Songti SC', 'SimSun', serif;
  font-size: clamp(40px, 6vw, 64px); font-weight: 600; margin: 10px 0 6px; letter-spacing: .01em;
}
.lgn-kick { letter-spacing: 3px; }
.lgn-card {
  width: min(400px, 100%); text-align: left; margin-top: 26px;
  border: 1px solid var(--border); border-radius: 18px; background: #fff;
  box-shadow: 0 24px 60px rgba(32,30,26,.10); padding: 30px 30px 26px;
}
.lgn-brand .mark {
  position: relative; display: inline-flex; align-items: center; justify-content: center;
  width: 30px; height: 30px; border-radius: 9px; background: var(--seal); color: #faf7f2;
  font-family: 'Newsreader', serif; font-size: 17px; box-shadow: 0 6px 16px rgba(181,68,52,.28);
  animation: sealStamp 1s cubic-bezier(.22,1,.36,1) .05s both;
}
.lgn-brand .mark::after {
  content: ""; position: absolute; inset: -6px; border-radius: 50%;
  border: 1px solid rgba(181,68,52,.4); transform: scale(.45); opacity: 0; pointer-events: none;
  animation: sealInk 1.5s cubic-bezier(.16,1,.3,1) .4s both;
}
@keyframes sealStamp {
  0% { transform: scale(0) rotate(-10deg); opacity: 0; }
  55% { transform: scale(1.12) rotate(-2deg); opacity: 1; }
  75% { transform: scale(.96) rotate(.5deg); }
  100% { transform: scale(1) rotate(0); }
}
@keyframes sealInk {
  0% { transform: scale(.45); opacity: .6; }
  100% { transform: scale(2.6); opacity: 0; }
}
.lgn-brand { animation: gsFade .6s ease .3s both; }
.lgn-kick { animation: gsTrack 1s cubic-bezier(.16,1,.3,1) .45s both; }
@keyframes gsTrack { from { opacity: 0; letter-spacing: 6px; } to { opacity: 1; letter-spacing: 3px; } }
.lgn-title {
  position: relative;
  animation: gsMaskUp .9s cubic-bezier(.16,1,.3,1) .55s both;
}
@keyframes gsMaskUp {
  from { opacity: 0; transform: translateY(18px); clip-path: inset(0 0 100% 0); }
  to { opacity: 1; transform: none; clip-path: inset(0 0 0 0); }
}
.lgn-sub { animation: gsFade .7s ease .7s both; }
.lgn-card {
  position: relative;
  animation: gsCardIn .9s cubic-bezier(.16,1,.3,1) .8s both;
}
.lgn-card::before {
  content: ""; position: absolute; top: 0; left: 0; right: 0; height: 1px;
  background: linear-gradient(90deg, transparent, var(--seal), transparent);
  transform: scaleX(0); transform-origin: left;
  animation: sealLine 1.1s cubic-bezier(.16,1,.3,1) 1s both;
}
@keyframes sealLine { from { transform: scaleX(0); } to { transform: scaleX(1); } }
@keyframes gsCardIn { from { opacity: 0; transform: translateY(18px) scale(.985); } to { opacity: 1; transform: none; } }
@keyframes gsFade { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
.lgn-foot { animation: gsFade .7s ease 1.15s both; }
/* 印章慢呼吸：极轻，仅阴影 */
@media (prefers-reduced-motion: no-preference) {
  .lgn-brand .mark {
    animation: sealStamp 1s cubic-bezier(.22,1,.36,1) .05s both,
               sealBreathe 7s ease-in-out 2.4s infinite;
  }
}
@keyframes sealBreathe { 0%, 100% { box-shadow: 0 6px 16px rgba(181,68,52,.26); } 50% { box-shadow: 0 8px 24px rgba(181,68,52,.4); } }
/* 输入聚焦：朱砂发丝 */
.lgn-card input:focus { border-color: var(--seal); box-shadow: 0 0 0 3px rgba(181,68,52,.10); outline: none; }
@media (prefers-reduced-motion:reduce){
  .lgn-brand .mark, .lgn-brand .mark::after, .lgn-brand, .lgn-kick, .lgn-title,
  .lgn-sub, .lgn-card, .lgn-card::before, .lgn-foot {
    opacity: 1 !important; transform: none !important; letter-spacing: normal !important;
    clip-path: none !important; animation: none !important;
  }
}

/* ---------- 响应式 ---------- */
@media (max-width: 1100px) {
  .topbar { flex-wrap: wrap; height: auto; padding: 8px 16px; gap: 8px; }
  .topnav { order: 3; width: 100%; overflow-x: auto; padding-bottom: 4px; }
  .topsearch { order: 2; max-width: none; flex: 1; }
  .company-rail { top: 0; }
}
@media (max-width: 640px) {
  .topbar .brand .ver { display: none; }
  .topnav .drop-menu { left: 0; right: auto; transform: translateY(6px); min-width: 190px; }
  .topnav .dropdown.open .drop-menu { transform: translateY(0); }
  .ws-nav-index { flex-direction: column; gap: 4px; }
}
