:root {
  --blue: #0071e3;
  --blue-strong: #0066cc;
  --blue-soft: #eaf4ff;
  --ink: #1d1d1f;
  --muted: #6e6e73;
  --line: #dfe1e5;
  --panel: #ffffff;
  --page: #f5f5f7;
  --green: #34c759;
  font-family: -apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro Text", "Segoe UI", "Microsoft YaHei", sans-serif;
  color: var(--ink);
  background: var(--page);
  font-synthesis: none;
}

* { box-sizing: border-box; }
html, body { width: 100%; height: 100%; margin: 0; }
body { overflow: hidden; background: var(--page); font-size: 15px; }
.public-login { display: none; }
.admin-logout { display: none; }
.user-logout { display: none; }
.public-mode .public-login { display: inline-flex; }
.public-mode .admin-logout { display: none; }
.admin-mode .admin-logout { display: inline-flex; }
.user-logout:not([hidden]) { display: inline-flex; }
.user-login[hidden], .user-logout[hidden] { display: none; }
.public-mode :is([data-action="credential-manager"], .authorized-account, #auth-status, [data-view="plaza"], [data-view="accounts"], [data-view="articles"], [data-view="favorites"], [data-view="collector-monitor"], [data-view="statistics"], [data-view="rss"], [data-view="settings"], [data-view="users"], [data-view="identity"], [data-action="group-help"], .task-status, [data-action="web-add"]) { display: none !important; }
.public-mode:not(.member-mode) [data-view="web-plaza"] { display: none !important; }
.public-mode :is([data-article-fetch], [data-toggle-unread], [data-action="mark-all-read"], [data-action="unread-only"], [data-action="rss-add"], [data-action="rss-export"], .unread-dot) { display: none !important; }
/* 微信采集配置继续保留在服务端，但暂不在主界面展示授权入口。 */
.app-topbar [data-action="credential-manager"], .app-topbar .authorized-account, .app-topbar #auth-status, .sidebar [data-view="identity"] { display: none !important; }
.login-card { width: min(460px, 92vw); }
button, input, select, textarea { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
button { cursor: pointer; }
a { color: inherit; text-decoration: none; }

.app-topbar {
  height: 62px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 24px 0 20px;
  background: rgb(255 255 255 / 88%);
  backdrop-filter: saturate(180%) blur(20px);
  border-bottom: 1px solid var(--line);
  box-shadow: 0 1px 4px rgb(20 34 55 / 3%);
  position: relative;
  z-index: 20;
}

.app-brand { display: inline-flex; align-items: center; gap: 10px; color: #1d1d1f; font-size: 18px; letter-spacing: -.35px; }
.brand-logo { width: 31px; height: 31px; display: block; border-radius: 8px; box-shadow: 0 4px 12px rgb(0 113 227 / 18%); }
.topbar-actions { display: flex; align-items: center; gap: 12px; color: #4e596b; }
.topbar-link { border: 0; background: transparent; color: #526073; padding: 7px 9px; border-radius: 8px; }
.topbar-link:hover { background: #f3f6fa; }
.authorized-account { display: inline-flex; align-items: center; gap: 8px; padding: 4px 7px; color: inherit; border: 0; border-radius: 8px; background: transparent; }
.authorized-account:hover { background: #f3f6fa; }
.local-avatar { width: 27px; height: 27px; display: inline-grid; place-items: center; border-radius: 50%; color: #7d5a13; background: #f3dfaa; font-weight: 700; }
.local-avatar.has-image { color: transparent; background-position: center; background-size: cover; }
.local-avatar.big { width: 48px; height: 48px; font-size: 19px; color: #fff; background: #4e78ea; }
.local-account { font-weight: 600; color: #263246; }
.auth-state { display: inline-flex; align-items: center; gap: 6px; padding: 5px 10px; border-radius: 999px; color: #778195; background: #f2f4f7; font-size: 12px; }
.auth-state i, .online-dot { width: 7px; height: 7px; display: inline-block; border-radius: 50%; background: #a8b0bd; }
.auth-state.ready { color: #0c9d73; background: #eafaf5; }
.auth-state.ready i, .online-dot { background: var(--green); }
.online-dot.paused { background: #a6afbd; }

.app-shell { height: calc(100vh - 62px); min-width: 1024px; display: flex; }
.sidebar { width: 188px; flex: 0 0 188px; display: flex; flex-direction: column; justify-content: space-between; overflow: hidden; background: #fff; border-right: 1px solid var(--line); padding: 15px 10px 8px; }
.sidebar-collapsed .sidebar { width: 68px; flex-basis: 68px; }
.sidebar-collapsed .sidebar .nav-link:not([data-action="collapse-sidebar"]),
.sidebar-collapsed .sidebar .task-status,
.sidebar-collapsed .sidebar .credential-expired-pill { white-space: nowrap; overflow: hidden; }
.sidebar-collapsed .sidebar .nav-link { font-size: 0; justify-content: center; padding-left: 0; padding-right: 0; }
.sidebar-collapsed .sidebar .nav-link > .nav-icon { width: auto; font-size: 16px; }
.sidebar-collapsed .sidebar .nav-label, .sidebar-collapsed .sidebar .nav-section-label { display: none; }
.sidebar-collapsed .sidebar .nav-icon { display: grid; width: 27px; }
.sidebar-collapsed .sidebar .task-status, .sidebar-collapsed .sidebar .credential-expired-pill { display: none; }
.sidebar-collapsed .sidebar-version { justify-content: center; }
.sidebar-main, .sidebar-footer { display: grid; gap: 3px; }
.nav-link { width: 100%; height: 36px; display: flex; align-items: center; gap: 9px; border: 0; border-radius: 8px; background: transparent; color: #556174; padding: 0 10px; text-align: left; position: relative; }
.nav-link > .nav-icon { width: 18px; text-align: center; color: #526071; font-size: 16px; }
.nav-link:hover { color: #1d2737; background: #f6f8fb; }
.nav-link.active { color: #1767de; font-weight: 600; background: #eaf3ff; }
.nav-link.active::before { content: ""; position: absolute; left: -12px; top: 6px; bottom: 6px; width: 3px; border-radius: 0 4px 4px 0; background: var(--blue); }
.nav-link.active > .nav-icon { color: #1767de; }
.sidebar-footer { margin-top: 22px; }
.sidebar-version { display: flex; justify-content: flex-end; align-items: center; color: #a0a8b5; font-size: 11px; padding: 10px 8px 3px; }
.sidebar-version button { border: 0; color: #8b95a4; background: transparent; font-size: 19px; }
.credential-expired-pill { min-height: 28px; display: inline-flex; align-items: center; justify-content: center; gap: 7px; margin: 1px 6px 3px; padding: 4px 10px; border: 1px solid #f4c7c3; border-radius: 999px; color: #b42318; background: #fff3f2; font-size: 12px; cursor: pointer; }
.credential-expired-pill[hidden] { display: none; }
.credential-expired-pill i { width: 6px; height: 6px; border-radius: 50%; background: #e5484d; box-shadow: 0 0 0 3px rgb(229 72 77 / 10%); }
.task-status { width: calc(100% + 24px); height: 22px; display: flex; align-items: center; justify-content: center; gap: 8px; margin: 0 -12px -10px; border: 0; border-top: 1px solid #edf0f4; color: #a2aab5; background: transparent; font-size: 11px; white-space: nowrap; cursor: pointer; }
.task-status i { width: 6px; height: 6px; border-radius: 50%; background: #d6dbe3; }
.task-status.active { color: #2b6fcf; }
.task-status.active i { background: var(--green); box-shadow: 0 0 0 3px rgb(25 185 139 / 12%); }

.page-host { flex: 1; min-width: 0; overflow: auto; background: var(--page); }
.content-page { width: 100%; min-height: 100%; padding: 24px 24px 44px; }
.page-header { min-height: 72px; display: flex; align-items: flex-start; justify-content: space-between; gap: 28px; margin-bottom: 18px; }
.page-header h1 { margin: 0; color: #0e1a2b; font-size: 27px; line-height: 1.25; letter-spacing: -.5px; }
.page-header p { margin: 8px 0 0; color: #667387; font-size: 14px; }
.page-actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }

.button, .primary, .ghost-blue, .square, .square-button, .load-more {
  min-height: 36px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 0 14px;
  border-radius: 7px;
  white-space: nowrap;
  font-weight: 500;
}
.button { color: #344054; border: 1px solid #dfe4eb; background: #fff; }
.button:hover { border-color: #bfc9d7; background: #fbfcff; }
.button.active { color: var(--blue-strong); border-color: #9bc3ff; background: #f2f7ff; }
.primary { color: #fff; border: 1px solid var(--blue); background: var(--blue); box-shadow: 0 3px 8px rgb(47 125 245 / 14%); }
.primary:hover { border-color: var(--blue-strong); background: var(--blue-strong); }
.primary:disabled, .ghost-blue:disabled { opacity: .58; cursor: default; }
.ghost-blue { color: #1168ef; border: 1px solid #a9ccff; background: #fff; }
.compact, .small { min-height: 30px; padding: 0 10px; font-size: 13px; }
.kebab, .nav-arrow { width: 34px; height: 34px; border: 0; border-radius: 7px; color: #778194; background: transparent; font-size: 20px; }
.kebab:hover, .nav-arrow:hover { background: #f1f4f8; }
.danger { color: #dc3545 !important; }

.avatar { --avatar: #f3f4f6; --ink: #667085; width: 38px; height: 38px; flex: 0 0 auto; display: inline-grid; place-items: center; overflow: hidden; border-radius: 50%; color: var(--ink); background: var(--avatar); border: 1px solid #e5e7eb; box-shadow: 0 2px 5px rgb(23 32 52 / 8%); font-size: 12px; font-weight: 700; position: relative; }
.avatar-fallback { grid-area: 1 / 1; }
.avatar img { width: 100%; height: 100%; display: block; grid-area: 1 / 1; border-radius: inherit; object-fit: cover; position: relative; z-index: 1; }
.avatar img.avatar-sprite { max-width: none; position: absolute; inset: 0 auto auto 0; border-radius: 0; object-fit: fill; transform-origin: left top; z-index: 1; }
.avatar img.avatar-sprite + img { z-index: 2; }
.avatar.lg { width: 44px; height: 44px; font-size: 12px; }

.plaza-filter-bar { display: flex; align-items: flex-start; gap: 16px; }
.category-tabs { min-width: 0; flex: 1; display: flex; align-items: center; gap: 8px; overflow-x: auto; padding: 0 0 12px; margin: -2px 0 0; scrollbar-width: thin; scrollbar-color: rgb(209 213 219 / 60%) transparent; }
.category-tab { flex: 0 0 auto; min-width: 0; height: 28px; padding: 0 12px; border: 0; border-radius: 999px; color: #4b5563; background: #f3f4f6; font-size: 12px; }
.category-tab:hover { background: #eaf1fb; }
.category-tab.active { color: #fff; font-weight: 600; background: var(--blue); box-shadow: 0 4px 9px rgb(47 125 245 / 20%); }
.plaza-search { width: 245px; height: 34px; flex: 0 0 auto; display: flex; align-items: center; gap: 7px; margin-top: -5px; padding: 0 11px; color: #788496; border: 1px solid #d8e0ea; border-radius: 8px; background: #fff; }
.plaza-search:focus-within { color: #2f7df5; border-color: #78aef8; box-shadow: 0 0 0 3px rgb(47 125 245 / 10%); }
.plaza-search input { width: 100%; height: 32px; border: 0; outline: 0; color: #344054; background: transparent; }
.plaza-search-result { margin: 2px 0 9px; color: #657386; font-size: 12px; }
.data-truth { display: flex; align-items: center; gap: 10px; min-height: 38px; margin: 0 0 14px; padding: 8px 12px; color: #647187; border: 1px solid #e7ecf3; border-radius: 8px; background: #fff; font-size: 12px; }
.data-truth strong { color: #1768dc; }
.plaza-grid { display: grid; grid-template-columns: repeat(4, minmax(260px, 1fr)); gap: 12px; padding-top: 16px; border-top: 1px solid #f1f3f5; }
.plaza-card { min-height: 182px; display: flex; flex-direction: column; padding: 16px; border: 1px solid rgb(229 231 235 / 80%); border-radius: 16px; background: #fff; box-shadow: 0 1px 3px rgb(22 34 52 / 8%); transition: transform .2s, border-color .2s, box-shadow .2s; }
.plaza-card { position: relative; }
.plaza-remove { width: 23px; height: 23px; display: none; place-items: center; position: absolute; right: -7px; top: -7px; z-index: 2; color: #7d8795; border: 1px solid #dce2ea; border-radius: 50%; background: #fff; box-shadow: 0 2px 7px rgb(20 34 55 / 14%); }
.plaza-card:hover .plaza-remove { display: grid; }
.plaza-card:hover { transform: translateY(-2px); border-color: #bfdbfe; box-shadow: 0 6px 16px rgb(22 34 52 / 10%); }
.plaza-card-top { display: flex; align-items: flex-start; gap: 12px; }
.plaza-identity { min-width: 0; flex: 1; }
.plaza-identity h3 { margin: 1px 0 5px; overflow: hidden; color: #111827; font-size: 14px; text-overflow: ellipsis; white-space: nowrap; }
.plaza-identity p { margin: 0; display: flex; gap: 6px; align-items: center; color: #9ca3af; font-size: 11px; }
.plaza-identity p code { max-width: 92px; overflow: hidden; color: #9ca3af; font: inherit; text-overflow: ellipsis; white-space: nowrap; }
.plaza-identity p span { height: 16px; flex: 0 0 auto; display: inline-flex; align-items: center; color: #6b7280; border: 1px solid #e5e7eb; border-radius: 3px; padding: 0 6px; background: #f3f4f6; font-size: 10px; white-space: nowrap; }
.plaza-identity p span.service { color: #1d4ed8; border-color: #dbeafe; background: #eff6ff; }
.plaza-actions { flex: 0 0 auto; display: flex; gap: 6px; }
.plaza-actions .ghost-blue, .plaza-actions .primary { min-height: 28px; padding: 0 9px; font-size: 12px; }
.plaza-desc { min-height: 36px; margin: 13px 0 10px; color: #6b7280; font-size: 12px; line-height: 1.5; display: -webkit-box; overflow: hidden; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.plaza-meta { margin-top: auto; display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.plaza-meta { justify-content: flex-start; flex-wrap: wrap; }
.plaza-meta > span { color: #2563eb; background: #eff6ff; border-radius: 999px; padding: 2px 8px; font-size: 11px; }
.plaza-meta small { color: #9ba4b1; text-align: right; }
.load-more { margin: 22px auto 0; color: #276bc9; border: 1px solid #c7d9f3; background: #fff; }
.list-end { margin: 21px 0 0; color: #9aa3b0; text-align: center; font-size: 12px; }

.empty-state { min-height: 360px; display: flex; flex-direction: column; align-items: center; justify-content: center; border: 1px dashed #dfe5ed; border-radius: 8px; background: #fff; text-align: center; }
.empty-icon { width: 62px; height: 62px; display: grid; place-items: center; margin-bottom: 12px; border-radius: 50%; color: #2d83ee; background: #f1f7ff; font-size: 30px; }
.empty-state h2 { margin: 0 0 9px; font-size: 17px; }
.empty-state p { max-width: 600px; margin: 0 0 20px; color: #8993a2; }
.empty-links { display: flex; gap: 22px; margin-top: 22px; }
.empty-links button { color: #2569c9; border: 0; background: transparent; }

.account-toolbar, .article-toolbar { min-height: 52px; display: flex; align-items: center; gap: 10px; padding: 8px 12px; border: 1px solid var(--line); border-bottom: 0; border-radius: 10px 10px 0 0; background: #fff; }
.account-toolbar > span, .article-toolbar > span { margin-left: auto; color: #8b95a4; }
.accounts-layout { display: grid; grid-template-columns: 240px minmax(0, 1fr); gap: 14px; align-items: start; }
.accounts-full-layout { display: block; }
.accounts-full-layout .account-groups { min-height: 0; display: flex; align-items: center; gap: 7px; flex-wrap: wrap; margin-bottom: 12px; padding: 9px 10px; }
.accounts-full-layout .account-groups > header { height: 36px; padding: 0 11px; border: 0; border-right: 1px solid #e8edf3; }
.accounts-full-layout .account-groups > header span { display: none; }
.accounts-full-layout .account-groups > p { margin: 0 2px 0 8px; }
.accounts-full-layout .account-groups > small { margin: 0 8px; }
.accounts-full-layout .account-group-row { width: auto; min-width: 126px; }
.accounts-full-layout .account-group-custom .account-group-row { padding-right: 35px; }
.accounts-full-layout .new-group { width: auto; min-width: 112px; margin: 0 0 0 auto; padding: 0 13px; }
.account-groups { min-height: 520px; padding: 12px 10px; border: 1px solid var(--line); border-radius: 12px; background: #fff; }
.account-groups > header { height: 40px; display: flex; align-items: center; justify-content: space-between; padding: 0 8px 8px; color: #334155; border-bottom: 1px solid #eef1f5; }
.account-groups > header span { color: #98a2b3; font-size: 12px; }
.account-groups > p { margin: 19px 8px 8px; color: #929dac; font-size: 12px; }
.account-groups > small { display: block; margin: 0 9px 8px; color: #a2aab6; line-height: 1.6; }
.account-group-row { width: 100%; height: 42px; display: flex; align-items: center; gap: 10px; border: 0; border-radius: 8px; padding: 0 10px; color: #526075; background: transparent; text-align: left; }
.account-group-row:hover { background: #f6f8fb; }
.account-group-row.active { color: #1768df; background: #eaf3ff; }
.account-group-row > span { width: 17px; color: #6d7a8e; text-align: center; }
.account-group-row > strong { min-width: 0; flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 500; }
.account-group-row > b { min-width: 28px; padding: 2px 7px; border-radius: 999px; color: #1768df; background: #edf5ff; text-align: center; font-size: 12px; }
.account-group-custom { display: flex; align-items: center; position: relative; }
.account-group-custom .account-group-row { padding-right: 38px; }
.account-group-custom .group-kebab { width: 30px; height: 30px; border: 0; border-radius: 6px; color: #929cab; background: transparent; position: absolute; right: 5px; }
.account-group-custom .group-kebab:hover { background: #edf1f6; }
.group-color { width: 9px !important; height: 9px; flex: 0 0 9px; border-radius: 50%; background: var(--group-color); }
.new-group { width: calc(100% - 12px); height: 38px; margin: 7px 6px 0; color: #3475d5; border: 1px dashed #c8d9ef; border-radius: 8px; background: #fff; }
.new-group:hover { background: #f5f9ff; }
.accounts-main { min-width: 0; }
.account-table-toolbar { min-height: 52px; display: flex; align-items: center; gap: 9px; padding: 8px 12px; border: 1px solid var(--line); border-radius: 12px 12px 0 0; background: #fff; }
.account-table-toolbar > span { margin-left: auto; color: #8b95a4; font-size: 12px; }
.account-table-toolbar .button:disabled { opacity: .48; cursor: default; }
.account-table-shell { padding-right: 0; border: 1px solid var(--line); border-top: 0; background: #fff; position: relative; }
.account-table { max-height: calc(100vh - 260px); border: 0; border-radius: 0; }
.account-table table { min-width: 1408px; table-layout: fixed; }
.account-table :is(th,td):nth-child(1), .account-table :is(th,td):nth-child(2) { width: 42px; }
.account-table :is(th,td):nth-child(3) { width: 58px; }
.account-table :is(th,td):nth-child(4) { width: 150px; }
.account-table :is(th,td):nth-child(5), .account-table :is(th,td):nth-child(6) { width: 125px; }
.account-table :is(th,td):nth-child(7) { width: 82px; }
.account-table :is(th,td):nth-child(8) { width: 142px; }
.account-table :is(th,td):nth-child(9) { width: 224px; }
.account-table :is(th,td):nth-child(10) { width: 140px; }
.account-table :is(th,td):nth-child(11) { width: 270px; }
.wechat-subscription-table table { min-width: 1498px; }
.wechat-subscription-table :is(th,td):nth-child(11) { width: 130px; }
.wechat-subscription-table :is(th,td):nth-child(12) { width: 230px; }
.account-table th { white-space: nowrap; }
.account-table td { height: 56px; white-space: nowrap; }
.account-table :is(th,td):last-child { position: sticky; right: 0; z-index: 2; background: #fff; box-shadow: -8px 0 12px rgb(29 42 64 / 4%); }
.account-table th:last-child { z-index: 4; background: #f7f9fb; }
.accounts-full-layout .account-table :is(th,td):last-child { position: sticky; right: 0; box-shadow: -12px 0 18px rgb(30 41 59 / 6%); }
.account-table .row-number { color: #98a2b3; text-align: center; }
.table-account-name strong, .table-account-name small { display: block; }
.table-account-name strong { color: #1f2b3d; }
.table-account-name small { max-width: 155px; margin-top: 4px; overflow: hidden; color: #96a0ae; text-overflow: ellipsis; font-size: 11px; }
.account-sync-state { display: flex; align-items: center; gap: 2px; margin-top: 5px; color: #8c96a5; font-size: 11px; font-weight: 400; }
.account-sync-state .status-dot { width: 6px; height: 6px; }
.account-sync-state em { min-width: 12px; color: #9aa5b4; font-style: normal; }
.account-row-actions { display: flex; align-items: center; gap: 5px; }
.account-sync-actions { display: inline-flex; align-items: center; gap: 5px; }
.account-row-actions .button.syncing { color: #087f5b; border-color: #8bd7be; background: #ecfbf5; }
.account-row-actions .button.retry { color: #b45309; border-color: #f2c986; background: #fff9ed; }
.account-row-actions .button.subtle { color: #b42332; border-color: #f1c7cc; background: #fff; }
.progress-cell { width: 82px; height: 7px; overflow: hidden; border-radius: 999px; background: #e9eef5; }
.progress-cell i { height: 100%; display: block; border-radius: inherit; background: linear-gradient(90deg, #66a7ff, #2f7df5); }
.progress-cell.indeterminate i { animation: progress-scan 1.4s ease-in-out infinite; }
@keyframes progress-scan { from { transform: translateX(-115%); } to { transform: translateX(265%); } }
.account-dual-progress { display: grid; gap: 6px; }
.account-dual-progress > div { display: grid; grid-template-columns: 28px 82px minmax(84px, 1fr); align-items: center; gap: 5px; }
.account-dual-progress span { color: #7d8999; font-size: 11px; }
.account-dual-progress small { color: #637086; font-size: 11px; }
.account-dual-progress .progress-cell.content i { background: linear-gradient(90deg, #51b99a, #20a47a); }
.account-menu-wrap { position: relative; }
.account-menu { min-width: 92px; display: grid; padding: 6px; position: absolute; right: 0; top: 34px; z-index: 15; border: 1px solid #dfe4eb; border-radius: 8px; background: #fff; box-shadow: 0 10px 28px rgb(29 42 64 / 18%); }
.account-menu button { height: 32px; border: 0; border-radius: 6px; background: transparent; text-align: left; }
.group-select { height: 30px; display: inline-flex; align-items: center; gap: 4px; padding: 0 7px; color: #5d697b; border: 1px solid #e1e6ed; border-radius: 6px; background: #fff; font-size: 12px; }
.group-select select { max-width: 78px; border: 0; outline: 0; color: inherit; background: transparent; font-size: 12px; }
.column-trigger { width: 38px; height: 100%; display: flex; flex-direction: column; align-items: center; gap: 5px; padding-top: 14px; color: #586578; border: 0; border-left: 1px solid var(--line); background: #fff; position: absolute; top: 0; right: 0; }
.column-trigger span { font-size: 12px; writing-mode: vertical-rl; }
.hide-accounts-avatar :is(th, td):nth-child(3), .hide-accounts-added :is(th, td):nth-child(5), .hide-accounts-synced :is(th, td):nth-child(6), .hide-accounts-total :is(th, td):nth-child(7), .hide-accounts-pulled :is(th, td):nth-child(8), .hide-articles-source :is(th, td):nth-child(4), .hide-articles-author :is(th, td):nth-child(6), .hide-articles-published :is(th, td):nth-child(7), .hide-articles-type :is(th, td):nth-child(9) { display: none; }
.column-options { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; padding: 0 22px 24px; }
.column-options label { display: flex; align-items: center; gap: 9px; min-height: 42px; padding: 0 12px; border: 1px solid var(--line); border-radius: 8px; color: #4f5d70; }
.account-table-footer { height: 44px; display: flex; align-items: center; padding: 0 15px; color: #6f7b8d; border: 1px solid var(--line); border-top: 0; border-radius: 0 0 12px 12px; background: #fff; }
.group-empty { padding: 60px 0; color: #9aa4b2; text-align: center; }
.article-commandbar { min-height: 52px; display: flex; align-items: center; gap: 9px; flex-wrap: wrap; padding: 8px 12px; border: 1px solid var(--line); border-radius: 12px 12px 0 0; background: #fff; }
.article-commandbar > span { flex: 1; }
.article-commandbar .button:disabled { opacity: .48; cursor: default; }
.article-job { margin-bottom: 12px; padding: 15px 17px; border: 1px solid #dce5f1; border-radius: 12px; background: linear-gradient(135deg, #f8fbff, #fff); box-shadow: 0 4px 16px rgb(48 93 151 / 6%); }
.article-job.active { border-color: #a8cdfb; background: linear-gradient(135deg, #eef6ff, #fff); }
.article-job.complete { border-color: #bfe5d7; background: linear-gradient(135deg, #effbf6, #fff); }
.article-job.failed { border-color: #efc4ca; background: linear-gradient(135deg, #fff3f4, #fff); }
.article-job-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; }
.article-job-head strong, .article-job-head small { display: block; }
.article-job-head strong { color: #1d2b40; font-size: 14px; }
.article-job-head small { max-width: 760px; margin-top: 5px; overflow: hidden; color: #728095; text-overflow: ellipsis; white-space: nowrap; }
.job-pill { flex: 0 0 auto; padding: 4px 10px; color: #1768df; border-radius: 999px; background: #e6f1ff; font-size: 11px; font-weight: 700; }
.article-job.complete .job-pill { color: #087f5b; background: #dcf7ed; }
.article-job.failed .job-pill { color: #b42332; background: #ffe4e7; }
.job-pill.idle { color: #7c8797; background: #eef1f5; }
.article-job-progress { height: 7px; overflow: hidden; margin: 13px 0 12px; border-radius: 999px; background: #e8eef6; }
.article-job-progress i { height: 100%; display: block; border-radius: inherit; background: linear-gradient(90deg, #4d97f6, #47c6a1); transition: width .25s ease; }
.job-flow { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.job-step { min-width: 0; display: flex; align-items: center; gap: 9px; color: #8b96a7; position: relative; }
.job-step:not(:last-child)::after { content: ""; width: 20px; height: 1px; position: absolute; right: -10px; top: 16px; background: #d7dee8; }
.job-step > b { width: 30px; height: 30px; flex: 0 0 30px; display: grid; place-items: center; border-radius: 50%; color: #8490a2; background: #edf1f6; }
.job-step span, .job-step strong, .job-step small { min-width: 0; display: block; }
.job-step strong { overflow: hidden; color: #536176; text-overflow: ellipsis; white-space: nowrap; font-size: 12px; }
.job-step small { margin-top: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 10px; }
.job-step.done > b { color: #fff; background: #27a77a; }
.job-step.active > b { color: #fff; background: #2f7df5; box-shadow: 0 0 0 5px rgb(47 125 245 / 11%); }
.job-step.failed > b { color: #fff; background: #d84b59; }
.job-step.failed strong, .job-step.failed small { color: #b62f3f; }
.job-step.blocked > b { color: #9aa4b3; background: #edf0f4; }
.job-step.blocked strong, .job-step.blocked small { color: #9aa4b3; }
.job-step.mixed > b { color: #fff; background: #e59a2e; }
.job-step.mixed strong, .job-step.mixed small { color: #a66a13; }
.job-step.cancelled > b { color: #fff; background: #8e99a9; }
.article-job.has-errors .article-job-progress i { background: linear-gradient(90deg, #dd5966, #ec8490); }
.article-job.cancelled { border-color: #dce1e8; background: #f7f8fa; }
.article-job.cancelled .article-job-progress i { background: #929cab; }
.job-head-actions { display: flex; align-items: center; gap: 8px; }
.job-head-actions .button:disabled { opacity: .55; cursor: default; }
.job-errors { margin-top: 14px; overflow: hidden; border: 1px solid #f0c9ce; border-radius: 9px; background: #fff8f8; }
.job-errors > summary { padding: 11px 13px; color: #a02c3a; cursor: pointer; font-weight: 700; }
.job-errors > p { display: grid; grid-template-columns: 33px minmax(0, 1fr); gap: 9px; align-items: start; margin: 0; padding: 9px 13px; border-top: 1px solid #f4dcdf; color: #7c4b52; }
.job-errors > p > b { width: 28px; padding: 3px 0; color: #fff; border-radius: 999px; background: #d84b59; font-size: 10px; text-align: center; }
.job-queue-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 18px; margin-top: 16px; padding-top: 15px; border-top: 1px solid #e3e8ef; }
.job-queue-head strong, .job-queue-head small { display: block; }
.job-queue-head strong { color: #2d3c52; }
.job-queue-head small { margin-top: 4px; color: #8691a1; }
.job-queue-counts { display: flex; gap: 6px; flex-wrap: wrap; }
.job-queue-counts span { padding: 4px 8px; color: #697588; border-radius: 999px; background: #eef1f5; font-size: 10px; font-weight: 700; }
.job-queue-counts span.running { color: #1768df; background: #eaf3ff; }
.job-queue-counts span.success { color: #087f5b; background: #e3f7f0; }
.job-queue-counts span.danger { color: #b62e3d; background: #ffe7ea; }
.job-item-list { display: grid; gap: 7px; margin-top: 10px; }
.job-item { padding: 10px 12px; border: 1px solid #e1e6ed; border-radius: 9px; background: #fff; }
.job-item.failed { border-color: #efc5ca; background: #fffafa; }
.job-item-main { display: flex; align-items: center; gap: 10px; }
.job-item-main > strong { min-width: 0; flex: 1; overflow: hidden; color: #354359; text-overflow: ellipsis; white-space: nowrap; }
.job-item-status { flex: 0 0 auto; padding: 3px 8px; color: #718096; border-radius: 999px; background: #eef1f5; font-size: 10px; font-weight: 700; }
.job-item-status.fetching, .job-item-status.saving { color: #1768df; background: #e8f2ff; }
.job-item-status.done { color: #087f5b; background: #e2f7ef; }
.job-item-status.failed { color: #b62f3f; background: #ffe5e8; }
.job-item-flow { display: grid; grid-template-columns: auto 1fr auto 1fr auto; align-items: center; gap: 7px; margin-top: 9px; }
.job-item-flow > span { display: inline-flex; align-items: center; gap: 5px; color: #8b96a6; font-size: 10px; }
.job-item-flow > span > i { width: 17px; height: 17px; display: grid; place-items: center; color: #7c8899; border-radius: 50%; background: #edf0f4; font-style: normal; }
.job-item-flow > b { height: 1px; background: #dfe4eb; }
.job-item-flow > span.done { color: #168461; }
.job-item-flow > span.done > i { color: #fff; background: #23a87a; }
.job-item-flow > span.active { color: #1768df; }
.job-item-flow > span.active > i { color: #fff; background: #2f7df5; }
.job-item-flow > span.failed { color: #b62f3f; font-weight: 700; }
.job-item-flow > span.failed > i { color: #fff; background: #d84b59; }
.job-item-flow > span.blocked { color: #a0a9b5; }
.job-item-flow > span.cancelled { color: #8a95a4; }
.job-item-error { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 8px; margin: 9px 0 0; padding: 8px 9px; color: #8e3742; border-radius: 7px; background: #ffecef; line-height: 1.45; }
.job-item-error b { font-size: 10px; }
.job-more { width: 100%; min-height: 33px; margin-top: 8px; color: #2c6fcf; border: 1px dashed #b8cff0; border-radius: 8px; background: #f6f9fe; }
.export-filtered { min-height: 36px; display: inline-flex; align-items: center; padding: 0 14px; color: #07815e; border: 1px solid #a9dfce; border-radius: 7px; background: #f1fbf7; font-weight: 600; }
.article-list-layout .article-toolbar { border-radius: 0; }
.article-table table { min-width: 1210px; table-layout: fixed; }
.article-table :is(th,td):nth-child(1) { width: 42px; }
.article-table :is(th,td):nth-child(2), .article-table :is(th,td):nth-child(3) { width: 48px; }
.article-table :is(th,td):nth-child(4) { width: 165px; }
.article-table :is(th,td):nth-child(5) { width: min(42vw, 460px); }
.article-table :is(th,td):nth-child(6) { width: 130px; }
.article-table :is(th,td):nth-child(7) { width: 170px; }
.article-table :is(th,td):nth-child(8) { width: 105px; }
.article-table :is(th,td):nth-child(9) { width: 105px; }
.article-table :is(th,td):nth-child(10) { width: 155px; }
.article-title-link { width: 100%; display: block; overflow: hidden; padding: 0; color: #1768df; border: 0; background: transparent; text-align: left; text-overflow: ellipsis; white-space: nowrap; font-weight: 600; }
.article-title-link:hover { text-decoration: underline; }
.article-source-cell { display: flex; align-items: center; gap: 8px; }
.article-source-cell small { max-width: 105px; overflow: hidden; text-overflow: ellipsis; }
.article-meta-cell { min-width: 190px; display: grid; gap: 3px; }
.article-meta-cell small, .article-meta-cell a, .article-meta-cell button { max-width: 210px; overflow: hidden; color: #8490a1; text-overflow: ellipsis; font-size: 11px; }
.article-meta-cell button { padding: 0; border: 0; background: transparent; }
.account-table-footer > span { margin-left: auto; }
.table-pagination { display: flex; align-items: center; gap: 7px; }
.table-pagination button { width: 34px; height: 30px; border: 1px solid #e0e5ec; border-radius: 7px; color: #5d6879; background: #fff; }
.table-pagination button:disabled { color: #c0c7d1; background: #f7f8fa; cursor: default; }
.search-box { min-width: 260px; display: flex; align-items: center; gap: 8px; padding: 0 11px; border: 1px solid #dfe4eb; border-radius: 7px; background: #fff; }
.search-box input { width: 100%; height: 34px; border: 0; outline: 0; }
.table-wrap { overflow: auto; border: 1px solid var(--line); border-radius: 0 0 10px 10px; background: #fff; }
table { width: 100%; border-collapse: collapse; }
th { height: 42px; padding: 0 14px; color: #768195; background: #f7f9fb; font-size: 12px; text-align: left; font-weight: 600; }
td { height: 56px; padding: 6px 12px; border-top: 1px solid #edf0f4; color: #465367; }
.table-account { display: flex; align-items: center; gap: 11px; }
.table-account strong, .table-account small { display: block; }
.table-account strong { color: #1d2939; }
.table-account small { margin-top: 4px; color: #98a2b3; font-size: 11px; }
.status-dot { width: 8px; height: 8px; display: inline-block; margin-right: 7px; border-radius: 50%; background: #a6afbd; }
.status-dot.done, .status-dot.syncing { background: var(--green); }
.status-dot.queued { background: #4f8fe8; }
.status-dot.cancelling { background: #e59a2f; }
.status-dot.cancelled { background: #8b95a4; }
.status-dot.partial { background: #e69b24; }
.status-dot.failed { background: #dc3545; }
.status-dot.waiting_auth, .status-dot.waiting_mapping { background: #d98b16; }
.article-title-cell strong, .article-title-cell small { display: block; }
.article-title-cell strong { max-width: 540px; color: #162033; line-height: 1.45; }
.article-title-cell small { margin-top: 5px; color: #929cab; }
.star { color: #a7afbc; border: 0; background: transparent; font-size: 19px; }
.fetch-state { padding: 3px 8px; color: #7b8491; border-radius: 999px; background: #f2f4f7; font-size: 12px; }
.fetch-state.ok { color: #068d66; background: #e8f8f2; }
.fetch-state.failed { color: #d34750; background: #fff0f1; }
.fetch-state.running { color: #1768df; background: #e8f2ff; }

.stat-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; margin-bottom: 16px; }
.stat-grid article { min-height: 126px; overflow: hidden; padding: 19px 20px; border: 1px solid var(--line); border-radius: 13px; background: #fff; box-shadow: 0 5px 18px rgb(20 34 55 / 5%); position: relative; }
.stat-grid article::before { content: ""; width: 5px; height: 100%; position: absolute; left: 0; top: 0; background: #4c8df6; }
.stat-grid article::after { content: ""; width: 92px; height: 92px; position: absolute; right: -30px; top: -36px; border-radius: 50%; background: rgb(76 141 246 / 8%); }
.stat-grid article.fetched::before { background: #22a678; }
.stat-grid article.fetched::after { background: rgb(34 166 120 / 9%); }
.stat-grid article.original::before { background: #9a6ee8; }
.stat-grid article.original::after { background: rgb(154 110 232 / 9%); }
.stat-grid article.failed::before { background: #df5966; }
.stat-grid article.failed::after { background: rgb(223 89 102 / 9%); }
.stat-grid span, .stat-grid small { display: block; color: #8590a0; }
.stat-grid strong { display: block; margin: 9px 0 5px; color: #14233b; font-size: 31px; }
.chart-grid { display: grid; grid-template-columns: 1.5fr 1fr; gap: 14px; }
.chart-grid section { min-height: 360px; padding: 20px; border: 1px solid var(--line); border-radius: 13px; background: #fff; box-shadow: 0 5px 18px rgb(20 34 55 / 4%); }
.chart-grid section > header { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; margin-bottom: 18px; }
.chart-grid h2 { margin: 0; font-size: 16px; }
.chart-grid header p { margin: 6px 0 0; color: #8c97a6; font-size: 12px; }
.chart-grid header > strong { padding: 4px 9px; color: #3676cf; border-radius: 999px; background: #eef5ff; font-size: 11px; }
.bar-list { max-height: 390px; overflow: auto; padding-right: 6px; }
.bar-row { display: grid; grid-template-columns: 130px 1fr 35px; gap: 12px; align-items: center; margin: 15px 0; color: #5f6b7d; }
.bar-row > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bar-row > div { height: 10px; overflow: hidden; border-radius: 999px; background: #edf1f6; }
.bar-row i { height: 100%; display: block; border-radius: 999px; background: linear-gradient(90deg, hsl(calc(210 + var(--bar-index) * 11) 88% 68%), hsl(calc(215 + var(--bar-index) * 11) 78% 52%)); }
.donut { --value: 0; width: 190px; height: 190px; display: grid; place-items: center; margin: 22px auto 16px; border-radius: 50%; background: conic-gradient(#438af4 calc(var(--value) * 1%), #edf1f6 0); position: relative; box-shadow: 0 8px 24px rgb(54 113 204 / 12%); }
.donut::after { content: ""; width: 125px; height: 125px; border-radius: 50%; background: #fff; position: absolute; }
.donut span { z-index: 1; color: #18263b; font-size: 25px; text-align: center; font-weight: 700; }
.donut small { display: block; margin-top: 3px; color: #8691a1; font-size: 12px; font-weight: 400; }
.status-legend { display: grid; grid-template-columns: repeat(3, 1fr); gap: 7px; }
.status-legend span { min-width: 0; padding: 8px 7px; color: #6f7b8d; border-radius: 8px; background: #f7f9fb; font-size: 11px; text-align: center; }
.status-legend i { width: 7px; height: 7px; display: inline-block; margin-right: 4px; border-radius: 50%; background: #95a0af; }
.status-legend i.ok { background: #438af4; }
.status-legend i.failed { background: #df5966; }
.status-legend b { display: block; margin-top: 4px; color: #25344a; font-size: 13px; }
.muted { color: #96a0ae; text-align: center; }
.statistics-detail-grid { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(430px, .95fr); gap: 14px; margin-top: 14px; }
.statistics-detail-grid > section { min-width: 0; min-height: 360px; padding: 20px; border: 1px solid var(--line); border-radius: 13px; background: #fff; box-shadow: 0 5px 18px rgb(20 34 55 / 4%); }
.statistics-detail-grid section > header { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; margin-bottom: 19px; }
.statistics-detail-grid h2 { margin: 0; font-size: 16px; }
.statistics-detail-grid header p { margin: 6px 0 0; color: #8c97a6; font-size: 12px; }
.daily-summary { display: flex; gap: 7px; }
.daily-summary span { padding: 6px 8px; color: #687588; border-radius: 7px; background: #f5f7fa; font-size: 10px; }
.daily-summary i, .daily-statistics footer i { width: 7px; height: 7px; display: inline-block; margin-right: 5px; border-radius: 50%; background: #428af4; }
.daily-summary i.failed, .daily-statistics footer i.failed { background: #df5966; }
.daily-chart { height: 230px; display: grid; grid-template-columns: repeat(14, minmax(18px, 1fr)); gap: 7px; align-items: end; padding: 18px 8px 0; border-bottom: 1px solid #dfe5ec; background: repeating-linear-gradient(to bottom, #fff 0, #fff 56px, #eef1f5 57px); }
.daily-column { min-width: 0; height: 100%; display: flex; flex-direction: column; justify-content: flex-end; align-items: center; gap: 7px; }
.daily-bars { width: 100%; height: calc(100% - 25px); display: flex; align-items: end; justify-content: center; gap: 2px; }
.daily-bars i { width: min(11px, 43%); display: block; border-radius: 4px 4px 1px 1px; background: linear-gradient(#65a5fb, #347fe9); min-height: 0; }
.daily-bars i.failed { background: linear-gradient(#ed8a94, #d94d5b); }
.daily-column > span { color: #8994a4; font-size: 9px; white-space: nowrap; }
.daily-statistics > footer { display: flex; justify-content: center; gap: 18px; margin-top: 13px; color: #758195; font-size: 11px; }
.anomaly-panel > header > strong { padding: 5px 9px; color: #b02f3e; border-radius: 999px; background: #ffe9ec; font-size: 10px; }
.anomaly-table-wrap { max-height: 285px; overflow: auto; border: 1px solid #e4e8ee; border-radius: 9px; }
.anomaly-table-wrap table { width: 100%; border-collapse: collapse; }
.anomaly-table-wrap th, .anomaly-table-wrap td { padding: 11px 10px; border-bottom: 1px solid #e8ecf1; text-align: left; vertical-align: top; }
.anomaly-table-wrap th { color: #778395; background: #f7f9fb; font-size: 10px; font-weight: 600; position: sticky; top: 0; }
.anomaly-table-wrap td { color: #5f6b7d; font-size: 11px; }
.anomaly-table-wrap td:nth-child(1) { width: 115px; }
.anomaly-table-wrap td:nth-child(3) { width: 50px; }
.anomaly-table-wrap td:nth-child(4) { width: 112px; }
.anomaly-table-wrap td strong, .anomaly-table-wrap td small { display: block; }
.anomaly-table-wrap td strong { max-width: 340px; overflow: hidden; color: #354359; text-overflow: ellipsis; white-space: nowrap; }
.anomaly-table-wrap td small { margin-top: 5px; color: #929caa; }
.anomaly-type { display: inline-block; padding: 4px 7px; color: #9a3c47; border-radius: 6px; background: #fff0f2; font-size: 9px; font-weight: 700; }
.statistics-empty { padding: 50px 12px; color: #8994a4; text-align: center; }

.offline-layout { height: 100%; display: grid; grid-template-columns: 380px minmax(0, 1fr); background: #fff; }
.offline-list { min-width: 0; display: flex; flex-direction: column; border-right: 1px solid var(--line); }
.offline-heading { min-height: 150px; padding: 20px 20px 15px; border-bottom: 1px solid var(--line); position: relative; z-index: 8; }
.offline-title-row { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-bottom: 13px; }
.offline-heading h1 { margin: 0; font-size: 24px; }
.offline-title-row > [data-offline-count] { color: #8a95a5; font-size: 12px; }
.offline-heading > .offline-source-picker { display: block; margin: 0; }
.offline-source-picker { position: relative; }
.offline-source-trigger { width: 100%; min-height: 56px; display: flex; align-items: center; gap: 11px; padding: 7px 10px; color: #27364b; border: 1px solid #dce3ec; border-radius: 11px; background: #f9fbfd; text-align: left; box-shadow: 0 2px 7px rgb(28 45 70 / 4%); }
.offline-source-trigger:hover, .offline-source-picker.open .offline-source-trigger { border-color: #8cb9f8; background: #fff; box-shadow: 0 0 0 3px rgb(47 125 245 / 8%); }
.offline-source-trigger .avatar, .offline-source-trigger .source-option-icon { width: 36px; height: 36px; flex: 0 0 36px; }
.source-option-icon { display: grid; place-items: center; border-radius: 50%; color: #fff; background: linear-gradient(145deg, #438af4, #6b6fe8); font-size: 12px; font-weight: 700; }
.offline-source-trigger > span:nth-child(2) { min-width: 0; flex: 1; }
.offline-source-trigger small, .offline-source-trigger strong { display: block; }
.offline-source-trigger small { margin-bottom: 3px; color: #8a96a6; font-size: 11px; }
.offline-source-trigger strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 14px; }
.offline-source-trigger > i { color: #778396; font-size: 17px; font-style: normal; transition: transform .18s ease; }
.offline-source-picker.open .offline-source-trigger > i { transform: rotate(180deg); }
.offline-source-popover { width: 100%; overflow: hidden; border: 1px solid #d9e1eb; border-radius: 12px; background: #fff; box-shadow: 0 16px 42px rgb(27 43 68 / 18%); position: absolute; top: 62px; left: 0; z-index: 20; }
.offline-source-popover > label { height: 42px; display: flex; align-items: center; gap: 8px; margin: 8px; padding: 0 11px; color: #8591a2; border: 1px solid #e0e6ed; border-radius: 8px; background: #f8fafc; }
.offline-source-popover input { min-width: 0; flex: 1; border: 0; outline: 0; background: transparent; }
.offline-source-popover > div { max-height: 290px; overflow: auto; padding: 0 7px 8px; }
.offline-source-option { width: 100%; min-height: 57px; display: flex; align-items: center; gap: 10px; padding: 7px 9px; color: #314056; border: 0; border-radius: 8px; background: transparent; text-align: left; }
.offline-source-option:hover { background: #f3f7fc; }
.offline-source-option.active { color: #1768df; background: #edf5ff; }
.offline-source-option .avatar, .offline-source-option .source-option-icon { width: 34px; height: 34px; flex: 0 0 34px; }
.offline-source-option > span:nth-child(2) { min-width: 0; flex: 1; }
.offline-source-option strong, .offline-source-option small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.offline-source-option strong { margin-bottom: 4px; font-size: 13px; }
.offline-source-option small { color: #8b96a6; font-size: 11px; }
.offline-source-option > b { display: none; }
.offline-source-option.active > b { display: block; color: #2f7df5; }
.offline-source-empty { padding: 30px 15px; color: #929dac; text-align: center; }
.segmented { display: flex; gap: 3px; margin: 12px; padding: 3px; border-radius: 8px; background: #f2f4f7; }
.segmented button { flex: 1; height: 31px; border: 0; border-radius: 6px; color: #6c7788; background: transparent; }
.segmented button.active { color: #1767de; background: #fff; box-shadow: 0 1px 3px rgb(26 39 61 / 12%); }
.offline-items { flex: 1; min-height: 0; overflow: auto; padding: 0 12px; }
.offline-item { width: 100%; min-height: 92px; display: grid; grid-template-columns: 96px minmax(0, 1fr); gap: 11px; align-items: start; margin: 0 0 7px; padding: 10px; color: #243247; border: 1px solid #e5e9ef; border-radius: 9px; background: #fff; text-align: left; }
.offline-item .article-cover { width: 96px; height: 68px; }
.offline-item.active { border-color: #95c2ff; background: #eef6ff; }
.offline-item strong, .offline-item small { display: block; }
.offline-item strong { line-height: 1.45; }
.offline-item small { margin-top: 7px; color: #8993a2; }
.offline-item .fetch-state { display: inline-flex; margin-top: 7px; }
.offline-search { height: 38px; display: flex; align-items: center; gap: 7px; margin: 0 12px 9px; padding: 0 10px; border: 1px solid var(--line); border-radius: 7px; color: #8d97a5; }
.offline-search input { min-width: 0; flex: 1; border: 0; outline: 0; }
.offline-search:focus-within { color: #2f7df5; border-color: #7eb2f8; box-shadow: 0 0 0 3px rgb(47 125 245 / 9%); }
.offline-search button { width: 24px; height: 24px; display: grid; place-items: center; padding: 0; color: #7e8998; border: 0; border-radius: 50%; background: #eef1f5; }
.offline-empty { display: grid; place-items: center; min-height: 220px; color: #8e99a8; text-align: center; }
.offline-list footer { height: 42px; display: flex; align-items: center; justify-content: center; gap: 8px; border-top: 1px solid var(--line); color: #929cab; }
.offline-list footer button { width: 28px; height: 27px; border: 1px solid var(--line); border-radius: 6px; background: #fff; }
.offline-reader { min-width: 0; display: flex; flex-direction: column; }
.offline-reader > header { min-height: 82px; display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 14px 24px; border-bottom: 1px solid var(--line); }
.offline-reader > header > div:last-child { display: flex; gap: 8px; }
.offline-reader-actions { justify-content: flex-end; flex-wrap: wrap; }
.offline-reader-actions .star.active { color: #d98a00; }
.offline-source-strip { min-height: 42px; display: flex; align-items: center; gap: 12px; padding: 8px 24px; color: #7b6728; border-bottom: 1px solid #f1e5b5; background: #fff9e7; font-size: 12px; }
.offline-source-strip strong { min-width: 0; flex: 1; overflow: hidden; color: #5b4b1c; text-overflow: ellipsis; white-space: nowrap; }
.offline-source-strip em { color: #148564; font-style: normal; }
.offline-reader h2 { margin: 0 0 6px; font-size: 18px; }
.offline-reader p { margin: 0; color: #7c8797; }
.offline-reader iframe { width: 100%; flex: 1; border: 0; background: #fff; }
.offline-reader .empty-state { flex: 1; border: 0; }

.rss-manage { width: min(100%, 1500px); margin: 0 auto; padding-left: 32px; padding-right: 32px; background: #f7f9fc; }
.rss-manage .page-header { min-height: 76px; margin-bottom: 0; }
.rss-manage .page-header h1 { font-size: 24px; }
.rss-manage .page-header p { margin-top: 7px; }
.rss-quota { min-width: 50px; padding: 5px 9px; color: #677386; border-radius: 7px; background: #f1f3f6; text-align: center; font-size: 12px; }
.rss-source-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; overflow: visible; }
.rss-source-row { min-width: 0; min-height: 82px; display: flex; align-items: center; gap: 13px; padding: 12px 16px; border: 1px solid #dfe4eb; border-radius: 12px; background: #fff; position: relative; }
.rss-source-row.paused { opacity: .72; }
.rss-source-row.error { background: #fffafa; }
.rss-source-info { min-width: 0; flex: 1; }
.rss-source-info h2 { margin: 0 0 7px; overflow: hidden; color: #172033; text-overflow: ellipsis; white-space: nowrap; font-size: 15px; }
.rss-source-info p { display: flex; align-items: center; gap: 7px; margin: 0; overflow: hidden; color: #7d8796; text-overflow: ellipsis; white-space: nowrap; font-size: 12px; }
.rss-source-info .online-dot { width: 7px; height: 7px; flex: 0 0 auto; }
.rss-source-actions { display: flex; align-items: center; gap: 10px; }
.rss-source-actions .button { min-height: 34px; padding: 0 11px; }
.rss-source-actions .kebab { font-size: 19px; }
.rss-source-actions .kebab.active { color: #1768df; background: #edf5ff; }
.rss-source-menu { width: 216px; display: grid; padding: 9px 0; border: 1px solid #e0e5eb; border-radius: 10px; background: #fff; box-shadow: 0 10px 28px rgb(20 34 55 / 16%); position: absolute; right: 14px; top: 58px; z-index: 20; }
.rss-source-menu small { padding: 3px 13px 6px; color: #919aa7; }
.rss-source-menu button, .rss-source-menu a { min-height: 34px; display: flex; align-items: center; gap: 10px; padding: 0 13px; color: #3f4b5c; border: 0; background: #fff; text-align: left; font-size: 13px; }
.rss-source-menu button span, .rss-source-menu a span { flex: 1; }
.rss-source-menu button b { margin-left: auto; color: #2478ed; }
.rss-source-menu button:hover, .rss-source-menu a:hover { background: #f5f7fa; }
.rss-source-menu a, .rss-source-menu button[data-source-toggle], .rss-source-menu button.danger { border-top: 1px solid #edf0f3; }
.rss-source-menu button.danger { color: #d63a45 !important; }
.web-source-note { display: flex; gap: 12px; align-items: flex-start; margin: 0 0 16px; padding: 14px 16px; color: #506176; border: 1px solid #d6e5fb; border-radius: 12px; background: #f4f9ff; font-size: 13px; line-height: 1.55; }
.web-source-note strong { flex: 0 0 auto; color: #1d5fae; }
.source-type-tabs { display: flex; gap: 8px; margin: 0 0 14px; }
.source-type-tabs button { min-height: 32px; padding: 0 12px; color: #66758a; border: 1px solid #dce3ed; border-radius: 7px; background: #fff; font-size: 12px; }
.source-type-tabs button.active { color: #1768df; border-color: #b9d5fb; background: #edf5ff; font-weight: 700; }
.modal-card:has([data-web-subscription-form]) { width: min(560px, 95vw); }
.modal-card [data-web-subscription-form] { display: grid; gap: 14px; padding: 4px 22px 22px; }
.modal-card [data-web-subscription-form] label { display: grid; gap: 7px; color: #344054; font-size: 13px; font-weight: 600; }
.modal-card [data-web-subscription-form] input, .modal-card [data-web-subscription-form] select { width: 100%; min-height: 38px; padding: 0 10px; color: #172033; border: 1px solid #d8e0ea; border-radius: 8px; background: #fff; font: inherit; font-weight: 400; }
.modal-card [data-web-subscription-form] .muted { margin: -2px 0 0; color: #7a8798; font-size: 12px; line-height: 1.55; }
/* 微信采集能力仍保留在配置中；当前版本先不在主界面暴露登录授权入口。 */
.app-topbar :is([data-action="credential-manager"], .authorized-account, .auth-state), .sidebar [data-view="identity"] { display: none !important; }

.rss-reader { width: 100%; height: 100%; display: grid; grid-template-columns: 305px 450px minmax(520px, 1fr); background: #fff; overflow: hidden; }
.reader-sources, .reader-list, .reader-pane { min-width: 0; min-height: 0; display: flex; flex-direction: column; }
.reader-sources, .reader-list { border-right: 1px solid var(--line); }
.reader-sources > header { min-height: 97px; display: flex; justify-content: space-between; padding: 21px 20px 13px; border-bottom: 1px solid var(--line); }
.reader-sources h1, .reader-list h2 { margin: 0; font-size: 20px; }
.reader-sources p, .reader-list p { margin: 5px 0 2px; color: #6c7788; }
.reader-sources small { color: #8b95a3; }
.reader-sources header > div:last-child { display: flex; gap: 8px; }
.square { width: 36px; height: 36px; min-height: 36px; padding: 0; border: 1px solid #dfe4eb; background: #fff; color: #697587; }
.reader-source-list { padding: 12px 9px; overflow: auto; }
.reader-source { width: 100%; height: 55px; display: flex; align-items: center; gap: 10px; border: 0; border-radius: 9px; padding: 0 12px; color: #26364c; background: transparent; text-align: left; position: relative; }
.reader-source:hover { background: #f5f8fc; }
.reader-source.active { color: #1268e6; background: #eaf3ff; }
.reader-source .avatar { width: 31px; height: 31px; font-size: 9px; }
.reader-source strong { min-width: 0; flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 500; }
.reader-source b { min-width: 28px; padding: 3px 7px; border-radius: 999px; color: #1268e6; background: #edf5ff; text-align: center; }
.reader-source .online-dot { position: absolute; left: 41px; bottom: 8px; border: 2px solid #fff; width: 9px; height: 9px; }
.hamburger { width: 31px; text-align: center; font-size: 18px; }
.reader-list > header { min-height: 97px; display: flex; justify-content: space-between; gap: 10px; padding: 18px 18px 12px; border-bottom: 1px solid var(--line); }
.reader-list header > div:last-child { display: flex; gap: 8px; align-items: flex-start; }
.reader-list .button { padding: 0 11px; }
.reader-cards { flex: 1; overflow: auto; padding: 16px; background: #fbfcfe; }
.reader-more { width: 100%; margin: 8px 0 4px; }
.reader-card { width: 100%; min-height: 128px; display: grid; grid-template-columns: 101px 1fr; gap: 15px; align-items: start; margin: 0 0 11px; padding: 15px; color: #12203a; border: 1px solid #dfe4eb; border-radius: 13px; background: #fff; text-align: left; position: relative; }
.reader-card:hover { border-color: #b8d4fb; }
.reader-card.active { border-color: #89bcff; background: #f1f7ff; }
.article-cover { width: 101px; height: 72px; display: grid; place-items: center; overflow: hidden; border-radius: 9px; color: #1f2937; background: linear-gradient(145deg, #bcd0ec, #e9f0f8); white-space: pre-line; font-weight: 700; text-align: center; }
.article-cover-fallback, .article-cover img { grid-area: 1 / 1; }
.article-cover img { width: 100%; height: 100%; display: block; object-fit: cover; }
.article-cover.has-media img { position: relative; z-index: 1; }
.article-cover.poster { color: #111; background: #ffdf20; }
.article-cover.sunset { color: #fff; background: linear-gradient(145deg, #8b95bb, #d8a98f); }
.article-cover.blue { color: #fff; background: #377bd7; }
.article-cover.green { color: #fff; background: #38a47a; }
.article-cover.violet { color: #fff; background: #7669d8; }
.reader-card strong { display: -webkit-box; overflow: hidden; font-size: 16px; line-height: 1.48; -webkit-line-clamp: 3; -webkit-box-orient: vertical; }
.reader-card small { display: block; margin-top: 11px; color: #7e899a; }
.unread-dot { width: 8px; height: 8px; border-radius: 50%; background: #438af4; position: absolute; right: 12px; top: 12px; }
.reader-top { min-height: 74px; display: flex; justify-content: space-between; align-items: center; gap: 18px; padding: 10px 18px 10px 25px; border-bottom: 1px solid var(--line); }
.reader-current { min-width: 0; display: flex; align-items: center; gap: 12px; }
.reader-current .avatar { width: 39px; height: 39px; }
.reader-current h2 { max-width: 620px; margin: 0 0 4px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 17px; }
.reader-current p { margin: 0; color: #718096; font-size: 12px; }
.reader-top > div:last-child { display: flex; gap: 8px; align-items: center; }
.reader-document { flex: 1; min-height: 0; background: #fff; }
.reader-document iframe { width: 100%; height: 100%; border: 0; background: #fff; }
.fulltext-needed { height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; color: #677386; text-align: center; }
.fulltext-needed span { color: #1d2939; font-size: 20px; font-weight: 700; }
.fulltext-needed p { max-width: 500px; margin: 12px 0 20px; line-height: 1.7; }

.settings-page { width: 100%; max-width: 1480px; height: 100%; min-height: 0; display: flex; flex-direction: column; margin: 0 auto; padding: 28px 40px 16px; overflow: hidden; position: relative; }
.settings-page .page-header { min-height: 70px; flex: 0 0 auto; margin: 0 0 16px; padding: 0 0 16px; border-bottom: 1px solid #dfe4eb; }
.settings-page .page-header h1 { font-size: 26px; }
.settings-layout { min-height: 0; flex: 1; display: grid; grid-template-rows: auto minmax(0, 1fr); gap: 16px; align-items: stretch; }
.settings-tabs { min-width: 0; display: flex; align-items: center; gap: 4px; padding: 5px; overflow-x: auto; border: 1px solid #dedee3; border-radius: 13px; background: #e9e9ed; }
.settings-tabs button { min-width: 112px; height: 38px; display: inline-flex; flex: 1 0 auto; align-items: center; justify-content: center; gap: 8px; padding: 0 16px; color: #6e6e73; border: 0; border-radius: 9px; background: transparent; white-space: nowrap; }
.settings-tabs button > span { width: 17px; display: grid; place-items: center; color: #86868b; font-size: 14px; font-weight: 500; }
.settings-tabs button:hover { color: #1d1d1f; background: rgb(255 255 255 / 52%); }
.settings-tabs button.active { color: #0066cc; font-weight: 600; background: #fff; box-shadow: 0 1px 4px rgb(0 0 0 / 12%); }
.settings-tabs button.active > span { color: #0071e3; }
.settings-content { width: 100%; min-width: 0; height: 100%; overflow-x: hidden; overflow-y: auto; padding: 0 8px 64px 0; scroll-behavior: smooth; scrollbar-gutter: stable; }
.settings-section { margin: 0 0 32px; scroll-margin-top: 0; }
.settings-section > header { min-height: 38px; display: flex; align-items: center; gap: 9px; margin: 0 0 10px; padding: 0 8px; background: transparent; }
.settings-section > header > span { width: 21px; height: 21px; flex: 0 0 21px; display: grid; place-items: center; color: #7e8793; border-radius: 6px; background: #f1f3f6; font-size: 12px; font-weight: 600; }
.settings-section > header h2 { margin: 0; color: #182234; font-size: 17px; }
.settings-avatar { width: 48px; height: 48px; flex: 0 0 auto; overflow: hidden; border-radius: 50%; }
.settings-avatar img { width: 100%; height: 100%; object-fit: cover; }
.setting-card, .account-setting { min-height: 92px; display: flex; align-items: center; justify-content: space-between; gap: 20px; margin-bottom: 10px; padding: 18px 22px; border: 1px solid #dfe3e8; border-radius: 10px; background: #fff; box-shadow: 0 2px 6px rgb(20 34 55 / 4%); position: relative; }
.setting-card h3, .account-setting h3 { margin: 0 0 7px; color: #172033; font-size: 14px; }
.setting-card p, .account-setting p { max-width: 720px; margin: 0; color: #5f6b7d; line-height: 1.7; font-size: 13px; }
.setting-card.stacked { display: grid; gap: 15px; }
.setting-card textarea, .setting-card > input { width: 100%; min-height: 38px; padding: 9px 11px; border: 1px solid #dfe4eb; border-radius: 7px; color: #556174; background: #fafbfc; }
.setting-card textarea { min-height: 72px; }
.setting-card input[type="password"] { width: 100%; min-height: 38px; padding: 9px 11px; border: 1px solid #dfe4eb; border-radius: 7px; }
.inline-check { display: flex; align-items: center; gap: 8px; color: #667386; font-size: 13px; }
.form-actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.form-actions > span { color: #7a8595; font-size: 12px; }
.connectivity-card code, .proxy-setting-card code { padding: 2px 5px; color: #3e6170; border-radius: 4px; background: #f3f5f7; }
.switch { width: 46px; height: 25px; flex: 0 0 auto; padding: 2px; border: 0; border-radius: 999px; background: #d8dde5; }
.switch i { width: 21px; height: 21px; display: block; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px rgb(0 0 0 / 18%); transition: .18s; }
.switch.on { background: var(--blue); }
.switch.on i { transform: translateX(21px); }
.number-setting { flex: 0 0 auto; display: flex; align-items: center; gap: 6px; }
.number-setting button, .number-setting input { height: 34px; border: 1px solid #dfe4eb; border-radius: 7px; color: #394559; background: #fff; text-align: center; }
.number-setting button { width: 34px; padding: 0; font-size: 18px; }
.number-setting button:hover { background: #f5f7fa; }
.number-setting input { width: 58px; outline: 0; padding: 0 5px; font-weight: 600; }
.number-setting input::-webkit-inner-spin-button, .number-setting input::-webkit-outer-spin-button { margin: 0; appearance: none; }
.number-setting span { min-width: 20px; color: #657184; background: transparent; }
.setting-line { display: flex; align-items: center; justify-content: space-between; gap: 22px; }
.setting-group .setting-line + .setting-line { padding-top: 15px; border-top: 1px solid #edf0f3; }
.setting-hint { padding-top: 12px; border-top: 1px solid #edf0f3; font-size: 12px !important; }
.media-setting .setting-line { align-items: flex-start; }
.video-quality { padding-top: 14px; border-top: 1px solid #edf0f3; }
.quality-options { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; margin-top: 12px; }
.quality-options label { min-height: 50px; display: grid; align-content: center; gap: 4px; padding: 8px 11px; border: 1px solid #dfe4eb; border-radius: 8px; background: #fff; cursor: pointer; }
.quality-options label:has(input:checked) { color: #1768df; border-color: #5da1f7; background: #f3f8ff; }
.quality-options input { position: absolute; opacity: 0; pointer-events: none; }
.quality-options strong { font-size: 13px; }
.quality-options small { color: #7d8795; font-size: 10px; }
.account-setting { justify-content: flex-start; }
.account-setting > div:nth-child(2) { flex: 1; }
.account-fact { min-width: 130px; border-left: 1px solid var(--line); padding-left: 20px; }
.account-fact small, .account-fact strong { display: block; }
.account-fact small { margin-bottom: 7px; color: #8c96a5; }
.path-pill { padding: 8px 12px; border-radius: 7px; color: #526174; background: #f1f4f8; font-family: ui-monospace, SFMono-Regular, Consolas, monospace; }

.identity-page { max-width: 1180px; margin: 0 auto; }
.identity-overview { min-height: 164px; display: grid; grid-template-columns: minmax(0, 1fr) auto auto; align-items: center; gap: 30px; padding: 27px 29px; overflow: hidden; color: #fff; border-radius: 16px; background: linear-gradient(125deg, #176c56, #1e9b72 55%, #37aa7e); box-shadow: 0 14px 32px rgb(24 125 93 / 18%); position: relative; }
.identity-overview::after { content: ""; width: 230px; height: 230px; border: 42px solid rgb(255 255 255 / 7%); border-radius: 50%; position: absolute; right: -90px; top: -105px; }
.identity-overview.pending { background: linear-gradient(125deg, #4c607a, #65768d); box-shadow: 0 14px 32px rgb(58 76 100 / 16%); }
.identity-overview-main { min-width: 0; display: flex; align-items: center; gap: 17px; position: relative; z-index: 1; }
.identity-overview-main .identity-badge { background: rgb(255 255 255 / 17%); border: 1px solid rgb(255 255 255 / 24%); }
.identity-overview-main span { color: rgb(255 255 255 / 73%); font-size: 12px; }
.identity-overview-main h2 { margin: 7px 0; color: #fff; font-size: 21px; }
.identity-overview-main p { margin: 0; color: rgb(255 255 255 / 83%); }
.identity-overview-main .online-dot { margin-right: 6px; border: 2px solid rgb(255 255 255 / 45%); }
.identity-facts { display: flex; align-items: center; gap: 0; padding: 15px 3px; border: 1px solid rgb(255 255 255 / 15%); border-radius: 12px; background: rgb(255 255 255 / 10%); position: relative; z-index: 1; }
.identity-facts > span { min-width: 92px; padding: 0 17px; border-right: 1px solid rgb(255 255 255 / 16%); text-align: center; }
.identity-facts > span:last-child { border: 0; }
.identity-facts small, .identity-facts strong { display: block; }
.identity-facts small { margin-bottom: 6px; color: rgb(255 255 255 / 65%); font-size: 11px; }
.identity-facts strong { font-size: 17px; }
.identity-overview > .identity-actions { display: grid; gap: 8px; position: relative; z-index: 1; }
.identity-overview > .identity-actions .button { color: #185f4c; border-color: #fff; }
.identity-overview > .identity-actions .button.danger { color: #fff !important; border-color: rgb(255 255 255 / 34%); background: rgb(116 23 36 / 18%); }
.identity-card { min-height: 145px; display: flex; align-items: center; gap: 20px; padding: 25px; border: 1px solid var(--line); border-radius: 14px; background: #fff; }
.identity-badge { width: 65px; height: 65px; display: grid; place-items: center; border-radius: 16px; color: #fff; background: #1aad19; font-size: 24px; font-weight: 800; }
.identity-badge.image { overflow: hidden; background: #fff; }
.identity-badge.image img { width: 100%; height: 100%; object-fit: cover; }
.identity-card > div:nth-child(2) { flex: 1; }
.identity-card small { color: #8d97a6; }
.identity-card h2 { margin: 8px 0; }
.identity-card p { margin: 0; color: #11946e; }
.identity-actions { display: flex; gap: 9px; }
.qr-auth-card { display: flex; align-items: center; justify-content: space-between; gap: 24px; margin-top: 17px; padding: 24px 26px; border: 1px solid var(--line); border-radius: 13px; background: #fff; }
.qr-auth-card h2 { margin: 0 0 7px; font-size: 19px; }
.qr-auth-card p { margin: 0; color: #748094; line-height: 1.65; font-size: 13px; }
.identity-step-label { display: inline-block; margin-bottom: 8px; padding: 4px 8px; color: #16775c; border-radius: 999px; background: #e9f8f3; font-size: 10px; font-weight: 800; }
.manual-credential { margin-top: 15px; border: 1px solid var(--line); border-radius: 12px; background: #fff; }
.manual-credential > summary { padding: 16px 20px; cursor: pointer; color: #5f6b7d; font-weight: 600; }
.manual-credential > summary span { margin-right: 8px; padding: 3px 7px; color: #667386; border-radius: 999px; background: #eef1f5; font-size: 10px; }
.manual-credential .credential-form { margin: 0; border: 0; border-top: 1px solid var(--line); border-radius: 0 0 12px 12px; box-shadow: none; }
.credential-form { display: grid; gap: 16px; margin-top: 15px; padding: 26px; border: 1px solid var(--line); border-radius: 14px; background: #fff; box-shadow: 0 8px 25px rgb(20 34 55 / 5%); }
.credential-form h2 { margin: 0 0 8px; font-size: 19px; }
.credential-form p { max-width: 830px; margin: 0; color: #748094; line-height: 1.7; font-size: 13px; }
.credential-form label { display: grid; gap: 7px; color: #4b5769; font-size: 13px; font-weight: 600; }
.credential-form input, .credential-form textarea { width: 100%; padding: 10px 12px; border: 1px solid #d8dee7; border-radius: 8px; outline: 0; font: inherit; font-weight: 400; }
.credential-form input:focus, .credential-form textarea:focus { border-color: #6da6f6; box-shadow: 0 0 0 3px rgb(47 125 245 / 10%); }
.login-card { display: grid; grid-template-columns: 300px minmax(0, 1fr); min-height: 440px; overflow: hidden; border: 1px solid var(--line); border-radius: 14px; background: #fff; box-shadow: 0 8px 25px rgb(20 34 55 / 6%); }
.qr-placeholder { display: flex; flex-direction: column; align-items: center; justify-content: center; color: #667386; background: linear-gradient(145deg, #f1f8ff, #f8fbff); }
.qr-grid { width: 170px; height: 170px; display: grid; place-items: center; margin-bottom: 13px; border: 12px solid #fff; color: #172033; background: #fff; box-shadow: 0 5px 18px rgb(31 52 80 / 12%); font-size: 37px; line-height: 1.05; letter-spacing: 2px; }
.login-guide { padding: 42px 48px; }
.login-guide h2 { margin: 0 0 27px; font-size: 23px; }
.login-guide ol { margin: 0; padding: 0; list-style: none; counter-reset: guide; }
.login-guide li { display: grid; grid-template-columns: 30px 1fr; column-gap: 12px; margin: 0 0 20px; counter-increment: guide; }
.login-guide li::before { content: counter(guide); width: 28px; height: 28px; display: grid; place-items: center; grid-row: span 2; border-radius: 50%; color: #fff; background: var(--blue); font-weight: 700; }
.login-guide li span { margin-top: 4px; color: #778296; line-height: 1.55; }
.login-buttons { display: flex; gap: 10px; margin-top: 27px; }
.privacy-note { margin-top: 25px !important; color: #8d97a6 !important; font-size: 12px; }
.faq-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 15px; }
.faq-grid details { padding: 16px 18px; border: 1px solid var(--line); border-radius: 9px; background: #fff; }
.faq-grid summary { cursor: pointer; font-weight: 600; }
.faq-grid p { color: #748094; line-height: 1.65; }
.identity-explanation, .identity-logic { margin-top: 17px; padding: 25px 27px; border: 1px solid var(--line); border-radius: 14px; background: #fff; }
.identity-explanation > header > span { display: inline-block; margin-bottom: 8px; color: #2f7df5; font-size: 11px; font-weight: 800; letter-spacing: 1px; }
.identity-explanation > header h2, .identity-logic > header h2 { margin: 0 0 7px; font-size: 20px; }
.identity-explanation > header p, .identity-logic > header p { margin: 0; color: #7d8999; line-height: 1.6; }
.identity-question-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px; margin-top: 20px; }
.identity-question-grid article { display: flex; align-items: flex-start; gap: 14px; padding: 20px; border: 1px solid #e1e7ee; border-radius: 11px; background: #f9fbfd; }
.identity-question-grid article > b { width: 35px; height: 35px; flex: 0 0 35px; display: grid; place-items: center; color: #fff; border-radius: 10px; background: #2f7df5; font-size: 11px; }
.identity-question-grid h3 { margin: 2px 0 9px; font-size: 15px; }
.identity-question-grid p { margin: 0; color: #687588; line-height: 1.75; }
.identity-question-grid code { padding: 2px 5px; color: #1c66cf; border-radius: 4px; background: #eaf3ff; }
.identity-flow { display: grid; grid-template-columns: 1fr auto 1fr auto 1fr auto 1fr auto 1fr auto 1fr; gap: 8px; align-items: center; margin-top: 21px; }
.identity-flow > article { min-width: 0; min-height: 122px; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 12px 8px; border: 1px solid #e2e7ed; border-radius: 11px; background: #f9fbfd; text-align: center; }
.identity-flow > article b { width: 27px; height: 27px; display: grid; place-items: center; margin-bottom: 9px; color: #fff; border-radius: 50%; background: #327ee8; font-size: 11px; }
.identity-flow > article strong { color: #27364b; font-size: 13px; }
.identity-flow > article small { margin-top: 6px; color: #8994a4; line-height: 1.45; }
.identity-flow > i { color: #9aa5b3; font-style: normal; }
.identity-security { display: flex; gap: 15px; margin-top: 16px; padding: 14px 16px; color: #476257; border: 1px solid #cde8dd; border-radius: 9px; background: #f0faf6; line-height: 1.55; }
.identity-security strong { flex: 0 0 auto; }

.modal-backdrop { position: fixed; inset: 0; z-index: 100; display: grid; place-items: center; padding: 30px; background: rgb(10 20 34 / 42%); backdrop-filter: blur(2px); }
.modal-card { width: min(650px, 95vw); max-height: 82vh; overflow: auto; border-radius: 12px; background: #fff; box-shadow: 0 25px 60px rgb(18 31 49 / 28%); }
.admin-login-card { width: min(460px, 92vw); }
.modal-card.admin-login-card > header { padding-bottom: 18px; }
.modal-card.admin-login-card > form { padding-top: 18px; border-top: 1px solid var(--line); }
.admin-login-error { min-height: 20px; margin: 0; color: #c93543; font-size: 13px; line-height: 1.5; }
.admin-login-card .modal-actions { padding: 6px 0 0; }
.modal-card > header { min-height: 78px; display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; padding: 20px 22px 14px; }
.modal-card > header h2 { margin: 0 0 7px; font-size: 18px; }
.modal-card > header p { margin: 0; color: #7a8595; }
.modal-card > header button { width: 30px; height: 30px; border: 0; color: #7f8997; background: transparent; font-size: 22px; }
.modal-tabs { display: flex; gap: 4px; margin: 0 22px 14px; border-bottom: 1px solid var(--line); }
.modal-tabs button { height: 37px; border: 0; color: #5f6b7d; background: transparent; padding: 0 13px; }
.modal-tabs button.active { color: #fff; border-radius: 7px 7px 0 0; background: var(--blue); }
.modal-search { display: flex; margin: 0 22px 13px; padding: 0 12px; align-items: center; gap: 8px; border: 1px solid #cbd7e7; border-radius: 8px; }
.modal-search:focus-within { border-color: #6ca5f5; box-shadow: 0 0 0 3px rgb(47 125 245 / 10%); }
.modal-search input { width: auto; min-width: 0; height: 40px; flex: 1; padding: 0; border: 0; border-radius: 0; outline: 0; background: transparent; box-shadow: none; }
.modal-search-form { grid-template-columns: minmax(0, 1fr) auto; align-items: stretch; padding: 0 22px 13px !important; }
.modal-card form.modal-search-form { grid-template-columns: minmax(0, 1fr) auto; gap: 10px; align-items: stretch; padding: 0 22px 13px !important; }
.modal-search-form .modal-search { margin: 0; }
.modal-search-form > button { min-width: 90px; height: 44px; white-space: nowrap; }
.modal-card:has(.rss-modal-search), .modal-card:has([data-account-link-form][data-mode="rss"]) { width: min(520px, 95vw); }
.modal-card:has([data-mode="rss"]) .modal-tabs { height: 34px; gap: 0; overflow: hidden; border: 1px solid #dfe4eb; border-radius: 8px; }
.modal-card:has([data-mode="rss"]) .modal-tabs button { height: 32px; border-radius: 7px; }
.rss-modal-search { grid-template-columns: minmax(0, 1fr); }
.modal-card form label.modal-search { display: flex; }
.rss-modal-search .modal-search input { border: 0; box-shadow: none; }
.modal-card:has(.rss-modal-search) .picker-list { min-height: 250px; }
.picker-empty { padding: 34px 20px; color: #8791a1; text-align: center; }
.picker-empty strong { display: block; color: #263246; font-size: 16px; }
.picker-empty p { margin: 9px 0 18px; }
.qr-login { min-height: 340px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; padding: 8px 28px 30px; text-align: center; }
.qr-login img { width: 280px; height: 280px; object-fit: contain; border: 1px solid #edf0f4; border-radius: 8px; }
.qr-login p { margin: 0; color: #38516f; }
.qr-login small { color: #8a94a3; }
.qr-loading { color: #778296; }
.error-text { color: #c93543 !important; }
.credential-account-list { display: grid; gap: 8px; padding: 0 22px 24px; }
.credential-account { min-height: 62px; display: flex; align-items: center; gap: 11px; padding: 9px 10px; border: 1px solid #edf0f4; border-radius: 9px; }
.credential-account > div { flex: 1; }
.credential-account strong, .credential-account small { display: block; }
.credential-account small { margin-top: 4px; color: #8c96a5; }
.button:disabled, .primary:disabled, button:disabled { cursor: not-allowed; opacity: .52; }
.picker-list { max-height: 390px; overflow: auto; padding: 0 14px; }
.picker-list article { min-height: 62px; display: flex; align-items: center; gap: 11px; padding: 8px; border-bottom: 1px solid #edf0f4; }
.picker-list article > div { flex: 1; }
.picker-list strong, .picker-list small { display: block; }
.picker-list small { margin-top: 4px; color: #8c96a5; }
.modal-note { display: block; margin: 12px 22px 20px; padding: 10px 12px; color: #778296; border-radius: 7px; background: #f7f9fc; font-size: 12px; line-height: 1.6; }
.plaza-manage-search { margin-bottom: 16px; }
.plaza-manage-list { display: grid; gap: 8px; padding: 0 22px; }
.plaza-manage-list h3 { margin: 8px 0 2px; color: #344054; font-size: 13px; }
.plaza-manage-row { min-height: 61px; display: flex; align-items: center; gap: 11px; padding: 8px 10px; border: 1px solid #e8edf3; border-radius: 9px; background: #fff; }
.plaza-manage-row > div { min-width: 0; flex: 1; }
.plaza-manage-row strong, .plaza-manage-row small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.plaza-manage-row small { margin-top: 4px; color: #8a95a5; font-size: 11px; }
.manage-state { padding: 3px 7px; color: #087f5b; border-radius: 999px; background: #e9f9f3; font-size: 11px; }
.manage-state.hidden { color: #7b8492; background: #f0f2f5; }
.plaza-manage-empty { margin: 0; padding: 22px; color: #939dac; border: 1px dashed #dfe5ed; border-radius: 8px; text-align: center; }
.sync-progress-detail { padding: 0 22px; }
.sync-progress-summary { display: flex; align-items: center; gap: 7px; padding: 13px 14px; border-radius: 9px; background: #f5f8fc; }
.sync-progress-summary span { margin-left: auto; color: #7e8999; font-size: 12px; }
.sync-progress-detail dl { display: grid; grid-template-columns: 1fr 1fr; gap: 9px; margin: 14px 0; }
.sync-progress-detail dl div { padding: 10px 12px; border: 1px solid #e8edf3; border-radius: 8px; }
.sync-progress-detail dt { color: #8a95a5; font-size: 11px; }
.sync-progress-detail dd { margin: 5px 0 0; color: #2f3a4c; }
.sync-progress-error { padding: 10px 12px; color: #a04f0e; border-radius: 7px; background: #fff7e8; }
.sync-progress-detail details { color: #657184; }
.sync-progress-detail li { margin: 6px 0; }
.modal-actions { display: flex; justify-content: flex-end; padding: 16px 22px 0; }
.user-group-preview, .user-group-empty { display: flex; flex-direction: column; align-items: center; gap: 8px; margin: 0 22px 18px; padding: 20px; border: 1px solid #e4eaf1; border-radius: 11px; background: #f9fbfd; text-align: center; }
.user-group-preview img { width: 250px; height: 250px; object-fit: contain; border: 9px solid #fff; border-radius: 8px; background: #fff; box-shadow: 0 4px 15px rgb(18 31 49 / 10%); }
.user-group-preview small, .user-group-empty small, .file-help { color: #8792a2; font-size: 12px; }
.user-group-empty { min-height: 170px; justify-content: center; }
.user-group-empty > span { color: #4b8eea; font-size: 36px; }
.modal-card form .file-help { margin-top: -7px; }
[hidden] { display: none !important; }
.modal-card form { display: grid; gap: 14px; padding: 3px 22px 22px; }
.modal-card form label { display: grid; gap: 7px; color: #4b5769; }
.modal-card form input { height: 40px; padding: 0 11px; border: 1px solid #d8dee7; border-radius: 7px; outline: 0; }
.modal-card form textarea { padding: 11px; border: 1px solid #d8dee7; border-radius: 7px; outline: 0; resize: vertical; font: inherit; }
.modal-card form input:focus, .modal-card form textarea:focus { border-color: #6da6f6; box-shadow: 0 0 0 3px rgb(47 125 245 / 10%); }
.modal-card form select { height: 40px; padding: 0 11px; border: 1px solid #d8dee7; border-radius: 7px; background: #fff; }
.modal-card.sync-range-dialog { width: min(620px, calc(100vw - 32px)); max-height: calc(100vh - 32px); display: flex; flex-direction: column; overflow: hidden; border-radius: 24px; }
.sync-range-dialog [data-sync-range-form] { min-height: 0; overflow-y: auto; }
.sync-range-options { display: grid; gap: 8px; }
.sync-range-options > label { min-height: 52px; display: flex !important; flex-direction: row !important; align-items: center; justify-content: space-between; gap: 16px !important; padding: 8px 14px; border: 1px solid #e2e7ee; border-radius: 12px; background: #fff; cursor: pointer; }
.sync-range-options > label:hover { border-color: #c7d7eb; background: #fbfdff; }
.sync-range-options > label:has(input[type="radio"]:checked) { border-color: #8ab8ff; background: #f2f7ff; box-shadow: 0 0 0 1px rgb(47 125 245 / 8%); }
.sync-range-choice { min-width: 0; display: flex !important; align-items: center; gap: 12px; }
.sync-range-options strong, .sync-range-options small { display: block; }
.sync-range-options strong { color: #263246; font-size: 15px; }
.sync-range-options small { margin: 0; color: #8791a1; font-weight: 400; text-align: right; white-space: nowrap; }
.modal-card form .sync-range-options input[type="radio"] { width: 18px; height: 18px; flex: 0 0 18px; margin: 0; padding: 0; border: 0; border-radius: 50%; box-shadow: none; }
.modal-card form .sync-range-date { width: 180px; height: 36px; flex: 0 0 180px; margin: 0; }

.drawer-backdrop { position: fixed; inset: 0; z-index: 100; background: rgb(10 20 34 / 35%); }
.article-preview-drawer { width: min(920px, 68vw); height: 100vh; display: flex; flex-direction: column; position: fixed; right: 0; top: 0; z-index: 101; background: #fff; box-shadow: -15px 0 45px rgb(18 31 49 / 22%); }
.article-preview-drawer > header { min-height: 82px; display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; padding: 16px 22px; border-bottom: 1px solid var(--line); }
.article-preview-drawer header small { color: #7f8998; }
.article-preview-drawer h2 { max-width: 760px; margin: 5px 0 0; overflow: hidden; font-size: 19px; text-overflow: ellipsis; white-space: nowrap; }
.article-preview-drawer header button { width: 32px; height: 32px; border: 0; border-radius: 7px; color: #788394; background: transparent; font-size: 22px; }
.drawer-source { min-height: 42px; display: flex; align-items: center; gap: 16px; padding: 8px 22px; color: #7b6728; background: #fff9e7; }
.drawer-source a { color: #1768df; }
.drawer-actions { min-height: 50px; display: flex; align-items: center; justify-content: flex-end; gap: 8px; padding: 7px 22px; border-bottom: 1px solid var(--line); }
.drawer-actions > span { margin-right: auto; color: #7c8798; font-size: 12px; }
.drawer-document { flex: 1; min-height: 0; background: #f5f7fa; }
.drawer-document iframe { width: 100%; height: 100%; border: 0; background: #fff; }
.modal-card form .full { width: 100%; }
.link-count { color: #7c8798; font-size: 12px; text-align: right; }
.modal-copy { margin: 0; padding: 0 24px 24px; color: #667386; line-height: 1.8; }
.export-options { display: flex; gap: 10px; padding: 0 22px 24px; }

.toast { min-width: 160px; max-width: 440px; position: fixed; left: 50%; bottom: 30px; z-index: 200; transform: translate(-50%, 18px); padding: 11px 17px; color: #fff; border-radius: 8px; background: #1f2937; box-shadow: 0 8px 25px rgb(0 0 0 / 20%); opacity: 0; pointer-events: none; text-align: center; transition: .2s; }
.toast.show { opacity: 1; transform: translate(-50%, 0); }
.toast.error { background: #c93543; }

@media (max-width: 1700px) {
  .article-table table { min-width: 660px; }
  .article-table :is(th,td):nth-child(6),
  .article-table :is(th,td):nth-child(7),
  .article-table :is(th,td):nth-child(9) { display: none; }
  .article-table :is(th,td):nth-child(1),
  .article-table :is(th,td):nth-child(2),
  .article-table :is(th,td):nth-child(3) { width: 34px; padding-left: 8px; padding-right: 8px; }
  .article-table :is(th,td):nth-child(4) { width: 120px; }
  .article-table :is(th,td):nth-child(5) { width: auto; }
  .article-table :is(th,td):nth-child(8) { width: 92px; }
  .article-table :is(th,td):nth-child(10) { width: 132px; }
}

@media (max-width: 1450px) {
  .plaza-grid { grid-template-columns: repeat(3, minmax(270px, 1fr)); }
  .rss-reader { grid-template-columns: minmax(240px, .72fr) minmax(360px, 1fr) minmax(0, 1.15fr); }
  .reader-top { align-items: flex-start; flex-wrap: wrap; }
  .reader-current { flex: 1 1 260px; }
  .plaza-actions { flex-direction: column; }
}

@media (max-width: 1350px) {
  .accounts-full-layout .account-table table { min-width: 820px; }
  .accounts-full-layout .account-table :is(th,td):nth-child(5),
  .accounts-full-layout .account-table :is(th,td):nth-child(6),
  .accounts-full-layout .account-table :is(th,td):nth-child(7),
  .accounts-full-layout .account-table :is(th,td):nth-child(10) { display: none; }
  .statistics-detail-grid { grid-template-columns: 1fr; }
  .identity-overview { grid-template-columns: minmax(0, 1fr) auto; }
  .identity-facts { grid-column: 1 / -1; grid-row: 2; justify-self: stretch; }
  .identity-facts > span { flex: 1; }
}

@media (max-width: 1180px) {
  .sidebar { width: 195px; flex-basis: 195px; }
  .content-page { padding-left: 30px; padding-right: 30px; }
  .plaza-grid { grid-template-columns: repeat(2, minmax(300px, 1fr)); }
  .rss-reader { grid-template-columns: minmax(220px, .65fr) minmax(320px, 1fr) minmax(0, 1.1fr); }
  .accounts-layout { grid-template-columns: 210px minmax(0, 1fr); }
  .stat-grid { grid-template-columns: repeat(2, 1fr); }
  .plaza-filter-bar { flex-wrap: wrap; }
  .plaza-search { width: min(100%, 340px); }
  .rss-source-list { grid-template-columns: 1fr; }
  .identity-question-grid { grid-template-columns: 1fr; }
}

/* 最小字号整体提升一级，避免任务状态、卡片说明和统计标注难以辨认。 */
.auth-state, .page-header p, .sidebar-version { font-size: 13px; }
.content-page :is(small, .rss-source-info p, .job-item-flow > span, .job-item-error b, .daily-summary span, .daily-column > span, .anomaly-type, .anomaly-table-wrap th, .identity-step-label) { font-size: 12px; }
.setting-card p, .account-setting p, .qr-auth-card p, .credential-form p { font-size: 14px; }

/* 见微订阅：简约、克制的系统级视觉层 */
.sidebar { background: #fbfbfd; }
.nav-link, .button, .primary, .ghost-blue, .category-tab, input, select, textarea { transition: background-color .16s ease, border-color .16s ease, color .16s ease, box-shadow .16s ease; }
.nav-link.active { color: var(--blue); background: #eaf4ff; }
.nav-link.active::before { display: none; }
.button, .primary, .ghost-blue, .square, .square-button, .load-more { border-radius: 10px; }
.primary { box-shadow: none; }
.page-header h1 { color: #1d1d1f; font-size: 28px; letter-spacing: -.75px; }
.page-header p { color: #6e6e73; }
.plaza-card, .account-groups, .account-table-shell, .setting-card, .account-setting, .qr-auth-card, .identity-explanation, .identity-logic { border-color: #e3e3e8; border-radius: 16px; box-shadow: 0 1px 2px rgb(0 0 0 / 3%); }
.plaza-card:hover { transform: translateY(-1px); border-color: #c7d8eb; box-shadow: 0 8px 24px rgb(0 0 0 / 7%); }
.identity-overview, .identity-overview.pending { background: linear-gradient(125deg, #176c56, #1e9b72 55%, #37aa7e); box-shadow: 0 14px 32px rgb(24 125 93 / 18%); }
.identity-overview::after { border-color: rgb(255 255 255 / 7%); }

.article-list-layout { display: block; }
.article-groups { min-height: 0; display: flex; align-items: center; gap: 7px; flex-wrap: wrap; margin-bottom: 12px; padding: 9px 10px; }
.article-groups > header { height: 36px; padding: 0 11px; border: 0; border-right: 1px solid #e3e3e8; }
.article-groups > p { margin: 0 2px 0 8px; }
.article-groups > small { margin: 0 8px; }
.article-groups .account-group-row { width: auto; min-width: 126px; }

.modal-backdrop { background: rgb(0 0 0 / 34%); backdrop-filter: saturate(120%) blur(12px); }
.modal-card { border: 1px solid rgb(255 255 255 / 65%); border-radius: 18px; box-shadow: 0 28px 80px rgb(0 0 0 / 24%); }
.modal-card:has(.credential-notice) { width: min(930px, 95vw); height: min(760px, calc(100vh - 60px)); max-height: calc(100vh - 60px); display: flex; flex-direction: column; overflow: hidden; }
.modal-card:has(.credential-notice) > header,
.modal-card:has(.credential-notice) > .credential-notice,
.modal-card:has(.credential-notice) > .credential-tools,
.modal-card:has(.credential-notice) > .credential-tabs,
.modal-card:has(.credential-notice) > .credential-footer { flex: 0 0 auto; }
.credential-notice { display: flex; align-items: flex-start; gap: 11px; margin: 0 22px 16px; padding: 13px 15px; color: #667085; border: 1px solid #e0e5ec; border-radius: 10px; background: #f8fafc; line-height: 1.6; }
.credential-notice > span { flex: 0 0 auto; color: #7b8aa0; }
.credential-notice p { margin: 0; }
.credential-tools { display: grid; grid-template-columns: minmax(0, 1fr); gap: 10px; align-items: start; padding: 0 22px 10px; }
.credential-tools .modal-search { margin: 0; }
.credential-tabs { display: flex; gap: 6px; margin: 0 22px 14px; }
.credential-tabs button { min-height: 32px; display: inline-flex; align-items: center; gap: 6px; padding: 0 11px; color: #6e6e73; border: 0; border-radius: 9px; background: transparent; }
.credential-tabs button b { min-width: 20px; padding: 1px 6px; color: #86868b; border-radius: 999px; background: #f2f2f7; font-size: 11px; }
.credential-tabs button.active { color: var(--blue); box-shadow: inset 0 0 0 1px #acd0ff; background: #f3f8ff; }
.credential-tabs button.active b { color: var(--blue); background: #e5f1ff; }
.credential-account-list { min-height: 120px; flex: 1 1 auto; gap: 0; margin: 0 22px; padding: 0; overflow-y: auto; border: 1px solid #e0e5ec; border-radius: 10px; }
.credential-account { min-height: 66px; padding: 9px 14px; border: 0; border-bottom: 1px solid #edf0f4; border-radius: 0; }
.credential-account:last-child { border-bottom: 0; }
.credential-fetch { color: var(--blue); border-color: #a9ceff; background: #f4f9ff; }
.credential-footer { display: grid; gap: 12px; margin-top: 14px; padding: 14px 22px 18px; color: #7a8799; border-top: 1px solid #eef1f5; font-size: 12px; }
.credential-footer p { margin: 0; }
.credential-footer label { display: flex; align-items: center; gap: 7px; }

.modal-card:has(.wechat-auth-dialog) { width: min(920px, 96vw); max-height: 92vh; }

/* 见微订阅：Apple 风格的轻量视觉层 */
:root { --page: #f5f5f7; --panel: rgb(255 255 255 / 84%); --line: rgb(210 214 222 / 78%); --blue: #007aff; --blue-strong: #0064d2; }
body { background: radial-gradient(circle at 92% -8%, #e7f0ff 0, transparent 31rem), radial-gradient(circle at 4% 94%, #f2eaff 0, transparent 30rem), var(--page); }
.app-topbar { background: rgb(255 255 255 / 76%); border-color: rgb(214 218 226 / 72%); box-shadow: 0 1px 0 rgb(255 255 255 / 85%) inset; }
.sidebar { background: rgb(255 255 255 / 70%); border-color: rgb(214 218 226 / 72%); }
.page-host { background: transparent; }
.content-page { max-width: 1800px; margin: 0 auto; padding-top: 30px; }
.page-header h1 { letter-spacing: -.8px; font-weight: 720; }
.page-header p { color: #737884; }
.button, .primary, .ghost-blue, .source-type-tabs button, .category-tab { border-radius: 10px; transition: transform .16s ease, box-shadow .16s ease, background .16s ease; }
.button:hover, .primary:hover, .ghost-blue:hover { transform: translateY(-1px); box-shadow: 0 6px 16px rgb(22 52 94 / 10%); }
.primary { background: linear-gradient(180deg, #1686ff, #0072e5); border-color: #006fdf; box-shadow: 0 5px 14px rgb(0 113 227 / 20%); }
.account-groups, .account-table-toolbar, .account-table-shell, .account-table-footer, .article-commandbar, .article-toolbar, .article-job, .web-source-note { border-color: rgb(211 217 226 / 88%); box-shadow: 0 10px 30px rgb(31 48 74 / 5%); }
.accounts-full-layout .account-groups, .article-groups { background: rgb(255 255 255 / 74%); backdrop-filter: blur(18px); }
.account-table-toolbar, .article-commandbar { background: rgb(255 255 255 / 83%); }
.account-table-shell, .account-table-footer, .article-toolbar { background: rgb(255 255 255 / 91%); }
.account-table tr { transition: background .16s ease; }
.account-table tbody tr:hover { background: #f7faff; }
.account-table td { border-color: #edf0f5; }
.account-table th { background: #f7f8fa; color: #778192; }
.source-type-tabs { gap: 9px; margin-bottom: 14px; }
.source-type-tabs button { border-color: rgb(207 214 224 / 88%); background: rgb(255 255 255 / 74%); }
.source-type-tabs button.active { color: #075dc5; border-color: #abd1ff; background: linear-gradient(135deg, #e8f4ff, #eef0ff); box-shadow: 0 4px 12px rgb(0 113 227 / 10%); }
.web-subscription-table .account-sync-state { max-width: 165px; display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
:is(.web-subscription-table, .wechat-subscription-table) .interval-select select { min-width: 104px; height: 31px; padding: 0 7px; color: #45546a; border: 1px solid #dbe2eb; border-radius: 8px; background: #fff; }
.wechat-subscription-table .interval-select select { min-width: 112px; }
.web-progress .progress-cell.running i { background: linear-gradient(90deg, #60a5fa, #2563eb); }
.web-progress .progress-cell.failed i { background: linear-gradient(90deg, #fb9b9b, #ed5f5f); }
.web-progress .progress-cell.paused i { background: #b7c1ce; }
.article-page .article-groups { margin-bottom: 14px; }
.article-page .article-commandbar { border-bottom: 0; }
.article-page .article-toolbar { background: rgb(255 255 255 / 88%); }
.article-page .account-table-footer { background: rgb(255 255 255 / 88%); }
.changelog-page { padding-top: 36px; max-width: 1280px; }
.changelog-hero { min-height: 280px; overflow: hidden; position: relative; padding: 43px 50px; color: #fff; border-radius: 28px; background: radial-gradient(circle at 88% 17%, #a8d8ff 0 3%, transparent 24%), radial-gradient(circle at 73% 120%, #8d6cff 0, transparent 43%), linear-gradient(125deg, #0b4bb3, #006fe7 48%, #56a2ff); box-shadow: 0 24px 55px rgb(14 86 190 / 26%); }
.changelog-hero::after { content: ""; width: 260px; height: 260px; position: absolute; right: -62px; top: -88px; border: 1px solid rgb(255 255 255 / 46%); border-radius: 50%; box-shadow: 0 0 0 42px rgb(255 255 255 / 8%), 0 0 0 85px rgb(255 255 255 / 6%); }
.changelog-hero > span { position: relative; z-index: 1; display: block; opacity: .82; font-size: 13px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.changelog-hero h1 { position: relative; z-index: 1; margin: 13px 0 8px; font-size: clamp(36px, 5vw, 56px); letter-spacing: -2px; }
.changelog-hero p { position: relative; z-index: 1; margin: 0; color: rgb(255 255 255 / 85%); font-size: 16px; }
.changelog-hero > div { position: relative; z-index: 1; display: inline-flex; align-items: center; gap: 10px; margin-top: 38px; padding: 9px 13px; border: 1px solid rgb(255 255 255 / 24%); border-radius: 12px; background: rgb(255 255 255 / 12%); backdrop-filter: blur(10px); }
.changelog-hero > div b { font-size: 13px; }.changelog-hero > div small { color: rgb(255 255 255 / 76%); }
.release-timeline { display: grid; gap: 15px; margin: 28px 0 48px; }
.release-card { min-height: 165px; display: grid; grid-template-columns: 78px 126px minmax(0, 1fr); gap: 18px; align-items: start; padding: 26px 28px; border: 1px solid rgb(216 221 230 / 88%); border-radius: 22px; background: rgb(255 255 255 / 80%); box-shadow: 0 12px 30px rgb(31 48 74 / 5%); backdrop-filter: blur(16px); }
.release-marker { width: 48px; height: 48px; display: grid; place-items: center; color: #fff; border-radius: 15px; background: linear-gradient(135deg, #4a93ff, #0067df); font-weight: 800; box-shadow: 0 8px 16px rgb(0 113 227 / 20%); }
.release-date { padding-top: 16px; color: #7b8493; font-size: 13px; font-variant-numeric: tabular-nums; }.release-body > span { color: #196de0; font-size: 12px; font-weight: 700; }.release-body h2 { margin: 5px 0 11px; color: #172033; font-size: 19px; letter-spacing: -.3px; }.release-body ul { display: grid; gap: 7px; margin: 0; padding: 0; list-style: none; color: #657084; line-height: 1.55; }.release-body li { position: relative; padding-left: 16px; }.release-body li::before { content: ""; width: 5px; height: 5px; position: absolute; left: 1px; top: .62em; border-radius: 50%; background: #4a93ff; }
.release-card.violet .release-marker { background: linear-gradient(135deg, #9c6bff, #6a43de); box-shadow: 0 8px 16px rgb(106 67 222 / 20%); }.release-card.violet .release-body > span { color: #7750dc; }.release-card.violet li::before { background: #8a62ee; }
.release-card.orange .release-marker { background: linear-gradient(135deg, #ffb44d, #f06b3e); box-shadow: 0 8px 16px rgb(240 107 62 / 20%); }.release-card.orange .release-body > span { color: #de6b31; }.release-card.orange li::before { background: #f38a42; }
@media (max-width: 760px) { .changelog-hero { min-height: 240px; padding: 30px 27px; border-radius: 22px; }.release-card { grid-template-columns: 56px 1fr; gap: 12px; padding: 21px; }.release-date { grid-column: 2; grid-row: 1; padding-top: 14px; }.release-body { grid-column: 1 / -1; }.content-page { padding-left: 18px; padding-right: 18px; } }
.wechat-auth-dialog { display: grid; grid-template-columns: minmax(0, 1fr) 310px; gap: 24px; margin: 0 22px; padding: 22px; border: 1px solid #e5e5ea; border-radius: 16px; background: #f8f8fa; }
.wechat-auth-guide h3 { margin: 0 0 18px; font-size: 18px; }
.wechat-auth-guide ol { display: grid; gap: 18px; margin: 0; padding: 0; list-style: none; counter-reset: auth-step; }
.wechat-auth-guide li { display: grid; grid-template-columns: 30px minmax(0, 1fr); column-gap: 11px; counter-increment: auth-step; }
.wechat-auth-guide li::before { content: counter(auth-step); width: 28px; height: 28px; display: grid; place-items: center; grid-row: span 2; color: #fff; border-radius: 50%; background: var(--blue); font-size: 12px; font-weight: 700; }
.wechat-auth-guide li strong { margin-top: 3px; color: #1d1d1f; }
.wechat-auth-guide li span { margin-top: 5px; color: #6e6e73; line-height: 1.65; }
.wechat-auth-qr { display: flex; flex-direction: column; align-items: center; text-align: center; }
.qr-state { align-self: flex-end; padding: 4px 9px; color: #6e6e73; border-radius: 999px; background: #e9e9ee; font-size: 11px; font-weight: 600; }
.qr-state[data-state="scanned"] { color: #187a36; background: #e6f7ec; }
.qr-state[data-state="expired"] { color: #b42318; background: #fff0ef; }
.qr-visual { width: 236px; height: 236px; display: grid; place-items: center; margin: 8px 0 10px; overflow: hidden; border: 10px solid #fff; border-radius: 14px; background: #fff; box-shadow: 0 8px 24px rgb(0 0 0 / 8%); }
.qr-visual img { width: 100%; height: 100%; object-fit: contain; }
.wechat-auth-qr p { margin: 0 0 9px; color: #1d1d1f; font-weight: 600; }
.wechat-auth-qr small { margin-top: 9px; color: #86868b; line-height: 1.5; }
.wechat-auth-faq { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin: 14px 22px 0; }
.wechat-auth-faq details { padding: 13px 15px; border: 1px solid #e5e5ea; border-radius: 12px; background: #fff; }
.wechat-auth-faq summary { cursor: pointer; color: #1d1d1f; font-weight: 600; }
.wechat-auth-faq p { margin: 9px 0 0; color: #6e6e73; line-height: 1.65; }
.wechat-faq-more { display: block; margin: 13px 22px 0; color: var(--blue); text-align: center; }
.wechat-auth-privacy { margin: 12px 22px 20px; color: #86868b; text-align: center; font-size: 12px; }

.collector-article-job .article-job-progress.indeterminate { overflow: hidden; }
.collector-article-job .article-job-progress.indeterminate i { width: 38%; animation: collector-scan 1.8s ease-in-out infinite; }
@keyframes collector-scan { from { transform: translateX(-120%); } to { transform: translateX(365%); } }

.collector-monitor { background:
  radial-gradient(circle at 84% 2%, rgb(48 132 255 / 8%), transparent 26%),
  radial-gradient(circle at 22% 18%, rgb(25 185 139 / 6%), transparent 25%);
}
.monitor-live { display: inline-flex; align-items: center; gap: 8px; padding: 8px 12px; color: #436078; border: 1px solid #dce6ef; border-radius: 999px; background: rgb(255 255 255 / 82%); font-size: 12px; }
.monitor-live i { width: 8px; height: 8px; border-radius: 50%; background: #18a978; box-shadow: 0 0 0 5px rgb(24 169 120 / 10%); animation: monitor-pulse 1.8s ease-in-out infinite; }
@keyframes monitor-pulse { 50% { box-shadow: 0 0 0 8px rgb(24 169 120 / 4%); } }
.monitor-alerts { display: grid; gap: 7px; margin-bottom: 14px; }
.monitor-alert { display: flex; align-items: center; gap: 10px; padding: 10px 13px; color: #8a611e; border: 1px solid #f0d7a7; border-radius: 10px; background: #fff9ec; }
.monitor-alert.error { color: #a33543; border-color: #f0c5ca; background: #fff4f5; }
.monitor-alert strong { padding: 3px 7px; border-radius: 999px; background: rgb(255 255 255 / 75%); font-size: 10px; }
.monitor-failed-banner { width: 100%; }
.monitor-failed-banner summary { display: flex; align-items: center; gap: 10px; cursor: pointer; list-style: none; }
.monitor-failed-banner summary::-webkit-details-marker { display: none; }
.monitor-failed-banner[open] summary { margin-bottom: 10px; }
.monitor-failed-banner .monitor-failure-list { max-height: 360px; overflow: auto; padding: 8px; border-top: 1px solid rgb(163 53 67 / 14%); }
.monitor-overview { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
.monitor-overview article { min-width: 0; min-height: 142px; overflow: hidden; padding: 19px 20px; border: 1px solid #dfe6ee; border-radius: 16px; background: rgb(255 255 255 / 88%); box-shadow: 0 10px 32px rgb(31 62 95 / 6%); position: relative; }
.monitor-overview article::after { content: ""; width: 105px; height: 105px; position: absolute; right: -38px; top: -42px; border-radius: 50%; background: rgb(47 125 245 / 9%); }
.monitor-overview article.running::after { background: rgb(26 169 121 / 10%); }
.monitor-overview article.queued::after { background: rgb(232 156 46 / 10%); }
.monitor-overview article.done::after { background: rgb(135 93 220 / 9%); }
.monitor-overview article > span { color: #718096; font-size: 12px; }
.monitor-overview article > strong { display: block; margin: 14px 0 7px; color: #15283f; font-size: 34px; line-height: 1; letter-spacing: -1px; }
.monitor-overview article > strong small { color: #8b98a8; font-size: 16px; font-weight: 500; }
.monitor-overview article > p { margin: 0; color: #8b98a8; font-size: 11px; }
.monitor-section-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; margin: 27px 0 12px; }
.monitor-section-head span, .monitor-panel header span { color: #4385db; font-size: 10px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }
.monitor-section-head h2, .monitor-panel h2 { margin: 5px 0 0; color: #172a42; font-size: 17px; }
.monitor-section-head p { margin: 0; color: #8491a2; font-size: 12px; }
.monitor-panel { min-width: 0; overflow: hidden; border: 1px solid #dfe6ee; border-radius: 16px; background: rgb(255 255 255 / 91%); box-shadow: 0 8px 28px rgb(31 62 95 / 5%); }
.monitor-panel > header { min-height: 73px; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 16px; border-bottom: 1px solid #edf1f5; }
.monitor-panel > header > b { padding: 4px 8px; color: #798596; border-radius: 999px; background: #f0f3f6; font-size: 10px; }
.monitor-panel > header > b.active { color: #1768df; background: #e8f2ff; }
.monitor-panel > header > b.danger { color: #b62f3f; background: #ffe6e9; }
.monitor-focus-grid { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(320px, .65fr); gap: 12px; margin-top: 12px; }
.monitor-failure-list { max-height: 390px; overflow-y: auto; padding: 6px 14px 12px; }
.monitor-failure { display: grid; grid-template-columns: minmax(170px, .7fr) minmax(220px, 1.3fr); gap: 10px 18px; padding: 13px 2px; border-bottom: 1px solid #edf1f5; }
.monitor-failure:last-child { border-bottom: 0; }
.monitor-failure-source { min-width: 0; display: flex; align-items: center; gap: 9px; }
.monitor-failure-source > div { min-width: 0; }
.monitor-failure-source strong, .monitor-failure-source small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.monitor-failure-source strong { color: #293e57; font-size: 12px; }
.monitor-failure-source small { margin-top: 4px; color: #8793a3; font-size: 10px; }
.monitor-failure-reason { min-width: 0; }
.monitor-failure-reason > span { display: inline-flex; padding: 3px 7px; color: #b62f3f; border-radius: 999px; background: #ffe6e9; font-size: 10px; font-weight: 700; }
.monitor-failure-reason p { margin: 6px 0 0; color: #9d3d49; font-size: 11px; line-height: 1.45; }
.monitor-failure footer { grid-column: 1 / -1; display: flex; justify-content: space-between; gap: 10px; color: #98a3b1; font-size: 10px; }
.monitor-empty.healthy { color: #168361; }
.monitor-flow-board { display: grid; gap: 10px; padding: 12px; border: 1px solid #dfe6ee; border-radius: 16px; background: rgb(255 255 255 / 91%); box-shadow: 0 8px 28px rgb(31 62 95 / 5%); }
.monitor-account-track { display: grid; grid-template-columns: minmax(180px, .58fr) minmax(0, 1.42fr); gap: 12px 18px; padding: 14px; border: 1px solid #e5eaf0; border-radius: 13px; background: #fbfcfe; }
.monitor-track-source { min-width: 0; display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 10px; }
.monitor-track-source > div { min-width: 0; }
.monitor-track-source strong, .monitor-track-source small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.monitor-track-source strong { color: #293e57; font-size: 12px; }
.monitor-track-source small { margin-top: 4px; color: #8a96a5; font-size: 10px; }
.monitor-track-source > span { padding: 4px 7px; color: #738096; border-radius: 999px; background: #eef2f5; white-space: nowrap; font-size: 10px; }
.monitor-track-source > span.running { color: #1768df; background: #e8f2ff; }
.monitor-track-source > span.failed { color: #b62f3f; background: #ffe6e9; }
.monitor-track-source > span.ok { color: #087f5b; background: #e1f7ef; }
.monitor-track-stages { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; }
.monitor-stage { min-width: 0; padding: 10px 12px; border: 1px solid #e3e8ee; border-radius: 10px; background: #fff; position: relative; }
.monitor-stage:not(:last-child)::after { content: "›"; position: absolute; right: -14px; top: 50%; color: #a8b3c0; font-size: 22px; transform: translateY(-50%); }
.monitor-stage header { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 7px; }
.monitor-stage header b { color: #9aa5b3; font-size: 9px; }
.monitor-stage header strong { color: #384b62; font-size: 11px; }
.monitor-stage header span { color: #9aa5b3; font-size: 9px; }
.monitor-stage p { margin: 7px 0 0; overflow: hidden; color: #8995a4; text-overflow: ellipsis; white-space: nowrap; font-size: 10px; }
.monitor-stage.running { border-color: #b9d6ff; background: #f4f9ff; }
.monitor-stage.running header b, .monitor-stage.running header strong { color: #1768df; }
.monitor-stage.warning { border-color: #f1d8a8; background: #fffaf0; }
.monitor-stage.warning header b, .monitor-stage.warning header strong { color: #9b630d; }
.monitor-stage.failed { border-color: #efc2c8; background: #fff5f6; }
.monitor-stage.failed header b, .monitor-stage.failed header strong, .monitor-stage.failed p { color: #b62f3f; }
.monitor-stage.ok { border-color: #c8eadf; background: #f5fcfa; }
.monitor-stage.ok header b, .monitor-stage.ok header strong { color: #087f5b; }
.monitor-account-error { grid-column: 2; display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 9px; margin: -3px 0 0; padding: 8px 10px; color: #a33c49; border-radius: 9px; background: #fff0f2; font-size: 10px; }
.monitor-account-error b { padding-right: 9px; border-right: 1px solid #edc2c7; }
.monitor-account-error span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.monitor-account-error time { color: #ae7580; }
.monitor-task-list { min-height: 292px; padding: 5px 14px 9px; }
.monitor-task { min-height: 54px; display: grid; grid-template-columns: 8px minmax(0, 1fr) auto; align-items: center; gap: 10px; border-bottom: 1px solid #edf1f5; }
.monitor-task:last-child { border-bottom: 0; }
.monitor-task > i, .monitor-event > i { width: 7px; height: 7px; border-radius: 50%; background: #9ca6b4; }
.monitor-task > i.running, .monitor-event > i.running { background: #2f7df5; box-shadow: 0 0 0 4px rgb(47 125 245 / 10%); }
.monitor-task > i.ok, .monitor-event > i.ok { background: #20a779; }
.monitor-task > i.failed, .monitor-event > i.failed { background: #da5260; }
.monitor-task > i.warning, .monitor-event > i.warning { background: #e59a2e; }
.monitor-task > div { min-width: 0; }
.monitor-task strong, .monitor-task small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.monitor-task strong { color: #304158; font-size: 12px; }
.monitor-task small { margin-top: 4px; color: #8a96a5; font-size: 10px; }
.monitor-task > span, .monitor-event > span { padding: 3px 7px; color: #758195; border-radius: 999px; background: #eff2f5; font-size: 10px; }
.monitor-task > span.running, .monitor-event > span.running { color: #1768df; background: #e8f2ff; }
.monitor-task > span.ok, .monitor-event > span.ok { color: #087f5b; background: #e1f7ef; }
.monitor-task > span.failed, .monitor-event > span.failed { color: #b62f3f; background: #ffe6e9; }
.monitor-task > span.warning, .monitor-event > span.warning { color: #9b630d; background: #fff2d9; }
.monitor-empty { margin: 0; padding: 55px 14px; color: #98a3b1; text-align: center; }
.monitor-detail-grid { display: grid; grid-template-columns: minmax(280px, .72fr) minmax(0, 1.5fr); gap: 12px; margin-top: 12px; }
.monitor-workers { display: grid; gap: 9px; padding: 13px; }
.monitor-worker { padding: 13px; border: 1px solid #e5eaf0; border-radius: 11px; background: #fafbfd; }
.monitor-worker header { display: grid; grid-template-columns: 8px minmax(0, 1fr) auto; align-items: center; gap: 8px; }
.monitor-worker header i { width: 8px; height: 8px; border-radius: 50%; background: #a1aab7; }
.monitor-worker.online header i { background: #20a779; box-shadow: 0 0 0 4px rgb(32 167 121 / 10%); }
.monitor-worker header strong { overflow: hidden; color: #304158; text-overflow: ellipsis; white-space: nowrap; }
.monitor-worker header span { color: #7f8b9c; font-size: 10px; }
.monitor-worker p { margin: 10px 0; color: #687589; font-size: 11px; }
.monitor-worker footer { display: flex; justify-content: space-between; gap: 8px; color: #97a1af; font-size: 10px; }
.monitor-timeline { max-height: 460px; overflow-y: auto; padding: 4px 15px 10px; }
.monitor-event { min-height: 62px; display: grid; grid-template-columns: 116px 8px minmax(0, 1fr) auto; align-items: center; gap: 11px; border-bottom: 1px solid #edf1f5; }
.monitor-event time { color: #929dab; font-size: 10px; }
.monitor-event > div { min-width: 0; }
.monitor-event strong, .monitor-event small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.monitor-event strong { color: #304158; font-size: 12px; }
.monitor-event small { margin-top: 3px; color: #8a96a5; font-size: 10px; }
.monitor-event p { margin: 5px 0 0; overflow: hidden; color: #b14652; text-overflow: ellipsis; white-space: nowrap; font-size: 10px; }
@media (max-width: 1180px) {
  .monitor-overview { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .monitor-focus-grid { grid-template-columns: 1fr; }
  .monitor-task-list { min-height: 0; }
  .monitor-detail-grid { grid-template-columns: 1fr; }
  .monitor-account-track { grid-template-columns: 1fr; }
  .monitor-account-error { grid-column: 1; }
}

button:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 3px solid rgb(0 113 227 / 24%); outline-offset: 2px; }
@media (max-width: 820px) {
  .wechat-auth-dialog, .wechat-auth-faq { grid-template-columns: 1fr; }
  .wechat-auth-dialog { margin: 0 14px; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition: none !important; }
}

/* 2026 Apple-inspired visual refresh */
:root {
  --blue: #0066cc;
  --blue-strong: #005bb8;
  --blue-soft: #eaf4ff;
  --accent-violet: #4f46c8;
  --accent-mint: #087a43;
  --accent-orange: #a85d00;
  --accent-pink: #c73956;
  --ink: #1d1d1f;
  --muted: #6e6e73;
  --line: rgb(60 60 67 / 14%);
  --page: #f5f5f7;
  --glass: #ffffff;
  --panel-shadow: 0 1px 2px rgb(15 23 42 / 5%);
  --wechat: #087a43;
  --wechat-soft: #eaf8f0;
  --web: #4f46c8;
  --web-soft: #f0efff;
  --social: #8a3fa0;
  --social-soft: #f7eefb;
}

body {
  background: var(--page);
}

.app-topbar {
  height: 68px;
  padding: 0 28px 0 22px;
  border-bottom-color: rgb(60 60 67 / 10%);
  background: rgb(255 255 255 / 76%);
  box-shadow: 0 1px 0 rgb(255 255 255 / 75%), 0 8px 28px rgb(44 56 74 / 4%);
}
.app-brand { gap: 12px; font-size: 18px; letter-spacing: -.45px; }
.brand-logo { width: 34px; height: 34px; border-radius: 10px; box-shadow: 0 8px 20px rgb(0 113 227 / 22%); }
.topbar-actions { gap: 8px; }
.topbar-link { min-height: 36px; padding: 0 12px; border-radius: 11px; transition: background .18s ease, color .18s ease; }
.topbar-link:hover { color: #1d1d1f; background: rgb(118 118 128 / 9%); }

.app-shell { height: 100vh; }
.sidebar {
  width: 190px;
  flex-basis: 190px;
  padding: 20px 13px 12px;
  border-right-color: rgb(60 60 67 / 10%);
  background: #fafafc;
}
.sidebar-upper { min-height: 0; flex: 1 1 auto; overflow: hidden; }
.sidebar-footer { flex: 0 0 auto; }
.sidebar::-webkit-scrollbar, .sidebar-upper::-webkit-scrollbar { width: 0; height: 0; }
.sidebar-brand { min-height: 42px; margin: 0 8px 12px; }
.login-entry {
  width: 100%;
  min-height: 58px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 11px;
  padding: 10px 12px;
  border: 1px solid rgb(60 60 67 / 11%);
  border-radius: 14px;
  color: #34343a;
  background: rgb(255 255 255 / 84%);
  box-shadow: 0 7px 22px rgb(45 55 72 / 7%);
  text-align: left;
}
.login-entry:hover { border-color: rgb(10 132 255 / 28%); background: #fff; }
.login-entry-icon { width: 30px; height: 30px; flex: 0 0 30px; display: grid; place-items: center; border-radius: 10px; color: #fff; background: linear-gradient(145deg, #0a84ff, #5e5ce6); font-size: 16px; }
.login-entry-copy { min-width: 0; display: grid; gap: 2px; text-align: left; }
.login-entry-copy strong { font-size: 14px; }
.login-entry-copy small { overflow: hidden; color: #8a8a91; font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
.login-entry.signed-in .login-entry-icon { background: linear-gradient(145deg, #30d158, #00a58e); }
.sidebar-collapsed .sidebar-brand { justify-content: center; margin-inline: 0; }
.sidebar-collapsed .sidebar-brand strong, .sidebar-collapsed .login-entry-copy { display: none; }
.sidebar-collapsed .login-entry { justify-content: center; padding-inline: 0; }
.login-session-list { display: grid; gap: 10px; margin: 4px 0 18px; }
.login-session-list > div { min-height: 58px; display: grid; grid-template-columns: 95px minmax(0, 1fr) auto; align-items: center; gap: 12px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 13px; background: rgb(245 245 247 / 72%); }
.login-session-list span { color: var(--muted); font-size: 12px; }
.login-session-list strong { overflow: hidden; text-overflow: ellipsis; }
.sidebar-main, .sidebar-footer { gap: 3px; }
.sidebar-footer { margin-top: 10px; }
.nav-section { display: grid; gap: 2px; margin-bottom: 9px; }
.nav-section:last-child { margin-bottom: 0; }
.nav-section-label {
  margin: 0 10px 3px;
  color: #8a8a91;
  font-size: 11px;
  font-weight: 650;
  letter-spacing: .08em;
}
.nav-link {
  min-width: 0;
  overflow: hidden;
  height: 36px;
  gap: 11px;
  padding: 0 11px;
  border-radius: 10px;
  color: #51515a;
  font-weight: 500;
  transition: background .16s ease, color .16s ease;
}
.nav-icon { flex: 0 0 27px; }
.nav-label { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.credential-manager-entry { color: #075f36; border: 1px solid #cde9da; background: var(--wechat-soft); }
.credential-manager-entry:hover { color: #064d2d; border-color: #a8d9bf; background: #def4e8; }
.nav-link:hover { color: #1d1d1f; background: rgb(118 118 128 / 8%); transform: none; }
.nav-link > .nav-icon {
  width: 27px;
  height: 27px;
  display: grid;
  place-items: center;
  border-radius: 9px;
  color: #53606f;
  background: rgb(118 118 128 / 9%);
  font-size: 14px;
}
.nav-link[data-view="plaza"] > .nav-icon, .nav-link[data-view="web-plaza"] > .nav-icon { color: #0878e8; background: #e7f2ff; }
.nav-link[data-view="accounts"] > .nav-icon, .nav-link[data-view="articles"] > .nav-icon { color: #6b52c7; background: #f0ebff; }
.nav-link[data-view="collector-monitor"] > .nav-icon, .nav-link[data-view="statistics"] > .nav-icon { color: #138a64; background: #e5f7f0; }
.nav-link[data-view="offline"] > .nav-icon, .nav-link[data-view="rss"] > .nav-icon, .nav-link[data-view="rss-parser"] > .nav-icon { color: #a85d00; background: #fff1df; }
.nav-link.active {
  color: #005eb8;
  background: #e8f2fd;
  box-shadow: none;
}
.nav-link.active::before { display: none; }
.nav-link.active > .nav-icon { color: #005eb8; background: #d9ebfb; box-shadow: none; }
.task-status { width: 100%; height: 28px; margin: 0; border-top-color: rgb(60 60 67 / 9%); }

.page-host { background: transparent; scroll-behavior: smooth; }
.content-page { width: min(100%, 1800px); margin: 0 auto; padding: 30px 28px 64px; }
.page-header { min-height: 78px; margin-bottom: 22px; }
.page-header h1 { color: #1d1d1f; font-size: 32px; font-weight: 720; letter-spacing: -1.15px; }
.page-header p { margin-top: 9px; color: #73737a; font-size: 14px; }

.button, .primary, .ghost-blue, .square, .square-button, .load-more {
  min-height: 38px;
  border-radius: 10px;
  font-weight: 600;
  transition: background .16s ease, border-color .16s ease, color .16s ease;
}
.button { border-color: rgb(60 60 67 / 14%); background: #fff; box-shadow: none; }
.button:hover, .ghost-blue:hover { transform: none; border-color: rgb(0 102 204 / 38%); background: #f7fbff; box-shadow: none; }
.primary { border: 1px solid var(--blue); background: var(--blue); box-shadow: none; }
.primary:hover { border-color: var(--blue-strong); background: var(--blue-strong); transform: none; box-shadow: none; }
.ghost-blue { color: var(--blue); border-color: rgb(0 102 204 / 28%); background: #fff; }
.compact, .small { min-height: 31px; border-radius: 10px; }
input, select, textarea { accent-color: var(--blue); }

.plaza-filter-bar {
  align-items: center;
  gap: 14px;
  padding: 11px 12px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: #fff;
  box-shadow: none;
}
.category-tabs { gap: 5px; margin: 0; padding: 0; }
.category-tab { height: 34px; padding: 0 13px; color: #66666d; background: transparent; font-size: 12px; }
.category-tab:hover { color: #1d1d1f; background: rgb(118 118 128 / 9%); }
.category-tab.active { color: #fff; background: var(--blue); box-shadow: none; }
.plaza-search {
  width: 270px;
  height: 38px;
  margin: 0;
  border-color: rgb(60 60 67 / 13%);
  border-radius: 12px;
  background: rgb(255 255 255 / 88%);
  box-shadow: inset 0 1px 0 rgb(255 255 255 / 75%);
}
.plaza-search:focus-within { border-color: rgb(10 132 255 / 55%); box-shadow: 0 0 0 4px rgb(10 132 255 / 11%); }
.plaza-grid { grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 12px; padding-top: 16px; border-top: 0; }
.plaza-card {
  min-height: 208px;
  padding: 18px;
  border-color: rgb(60 60 67 / 11%);
  border-radius: 16px;
  background: #fff;
  box-shadow: var(--panel-shadow);
}
.plaza-card:nth-child(4n+2), .plaza-card:nth-child(4n+3), .plaza-card:nth-child(4n+4) { background: #fff; }
.plaza-card:hover { transform: translateY(-1px); border-color: rgb(0 102 204 / 28%); box-shadow: 0 8px 24px rgb(15 23 42 / 8%); }
.plaza-remove { right: 9px; top: 9px; }
.plaza-card-top { gap: 13px; }
.avatar { border: 1px solid rgb(255 255 255 / 90%); border-radius: 13px; box-shadow: 0 7px 18px rgb(45 55 72 / 14%), 0 0 0 1px rgb(60 60 67 / 8%); }
.avatar.lg { width: 50px; height: 50px; border-radius: 15px; }
.plaza-identity h3 { margin-top: 2px; color: #1d1d1f; font-size: 15px; font-weight: 700; letter-spacing: -.18px; }
.plaza-identity p { color: #8a8a91; }
.plaza-identity p span { height: 19px; border: 0; border-radius: 6px; padding: 0 7px; background: rgb(118 118 128 / 9%); }
.plaza-identity p span.service { color: #0878e8; border: 0; background: #e7f2ff; }
.plaza-actions { gap: 7px; }
.plaza-actions .ghost-blue, .plaza-actions .primary { min-height: 30px; border-radius: 10px; padding: 0 10px; }
.plaza-desc { min-height: 55px; margin: 16px 0 12px; color: #66666d; font-size: 13px; line-height: 1.62; -webkit-line-clamp: 3; }
.plaza-meta > span { color: #0878e8; border: 1px solid rgb(10 132 255 / 9%); background: #edf6ff; padding: 3px 9px; }
.list-end { margin-top: 24px; color: #8a8a91; }

.setting-card, .account-setting, .account-groups, .account-table-shell, .web-source-note, .qr-auth-card, .identity-explanation, .identity-logic {
  border-color: rgb(60 60 67 / 11%);
  border-radius: 20px;
  background: rgb(255 255 255 / 84%);
  box-shadow: var(--panel-shadow);
}
.modal-backdrop { background: rgb(17 24 39 / 32%); backdrop-filter: saturate(130%) blur(18px); }
.modal-card { border-color: rgb(255 255 255 / 72%); border-radius: 24px; background: rgb(255 255 255 / 94%); box-shadow: 0 34px 100px rgb(15 23 42 / 28%); }
.modal-card form input, .modal-card form textarea, .modal-card form select, .modal-search { border-radius: 12px; }

.modal-card.auth-dialog {
  width: min(880px, calc(100vw - 32px));
  max-height: min(720px, calc(100vh - 32px));
  display: grid;
  grid-template-columns: minmax(280px, .82fr) minmax(380px, 1fr);
  overflow: hidden;
  border: 1px solid rgb(60 60 67 / 14%);
  border-radius: 20px;
  background: #fff;
  box-shadow: 0 28px 80px rgb(15 23 42 / 24%);
}
.auth-hero {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  min-height: 480px;
  padding: 42px 38px;
  color: #25435e;
  background: #eef5fb;
  border-right: 1px solid #dce7f0;
}
.auth-hero img { width: 52px; height: 52px; margin-bottom: 28px; border-radius: 14px; }
.auth-hero > span { color: var(--blue); font-size: 12px; font-weight: 750; letter-spacing: .12em; }
.auth-hero h2 { max-width: 300px; margin: 14px 0 12px; color: var(--ink); font-size: 28px; line-height: 1.28; letter-spacing: -.7px; }
.auth-hero p { max-width: 310px; margin: 0; color: #657383; line-height: 1.75; }
.auth-panel { min-width: 0; display: flex; flex-direction: column; justify-content: center; padding: 34px 38px; background: #fff; }
.auth-panel > header { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; margin-bottom: 24px; }
.auth-panel > header h2 { margin: 0 0 7px; color: var(--ink); font-size: 24px; letter-spacing: -.45px; }
.auth-panel > header p { margin: 0; color: var(--muted); font-size: 13px; }
.auth-panel > header button { width: 32px; height: 32px; flex: 0 0 32px; border: 0; border-radius: 8px; color: #77777e; background: transparent; font-size: 22px; }
.auth-panel > header button:hover { background: #f2f2f4; }
.auth-tabs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 3px; margin-bottom: 22px; padding: 3px; border-radius: 10px; background: #ededf0; }
.auth-tabs button { height: 38px; border: 0; border-radius: 8px; color: var(--muted); background: transparent; font-weight: 650; }
.auth-tabs button.active { color: var(--ink); background: #fff; box-shadow: 0 1px 3px rgb(15 23 42 / 12%); }
.auth-dialog .auth-form { display: grid; gap: 16px; padding: 0; }
.auth-field { display: grid; gap: 7px; color: #3a3a40; font-size: 13px; font-weight: 650; }
.auth-dialog .auth-field input { width: 100%; height: 46px; padding: 0 13px; border: 1px solid rgb(60 60 67 / 20%); border-radius: 10px; color: var(--ink); background: #fff; font-weight: 400; }
.auth-dialog .auth-field input:focus { border-color: var(--blue); box-shadow: 0 0 0 3px rgb(0 102 204 / 12%); }
.auth-submit { width: 100%; min-height: 46px; margin-top: 2px; }
.auth-admin-link { min-height: 40px; margin-top: 6px; padding-top: 14px; color: #5d5d64; border: 0; border-top: 1px solid var(--line); background: transparent; font-weight: 650; }
.auth-admin-link:hover { color: var(--blue); }
.auth-admin-note { margin: 6px 0 0; padding-top: 14px; color: #8a8a91; border-top: 1px solid var(--line); text-align: center; font-size: 12px; }
.session-dialog { width: min(620px, calc(100vw - 32px)); }
.session-dialog .login-session-list { padding: 0 22px; }
.session-dialog > .modal-actions { padding: 0 22px 22px; }

.stat-grid { gap: 16px; margin-bottom: 18px; }
.stat-grid article {
  min-height: 148px;
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 22px;
  border-color: rgb(60 60 67 / 10%);
  border-radius: 22px;
  background: linear-gradient(145deg, rgb(255 255 255 / 96%), rgb(237 246 255 / 82%));
  box-shadow: var(--panel-shadow);
}
.stat-grid article::before { display: none; }
.stat-grid article::after { width: 130px; height: 130px; right: -45px; top: -58px; background: rgb(10 132 255 / 9%); }
.stat-grid article.fetched { background: linear-gradient(145deg, rgb(255 255 255 / 96%), rgb(233 250 243 / 86%)); }
.stat-grid article.original { background: linear-gradient(145deg, rgb(255 255 255 / 96%), rgb(245 238 255 / 86%)); }
.stat-grid article.failed { background: linear-gradient(145deg, rgb(255 255 255 / 96%), rgb(255 239 242 / 86%)); }
.stat-grid .stat-icon {
  width: 46px;
  height: 46px;
  flex: 0 0 46px;
  display: grid;
  place-items: center;
  z-index: 1;
  border-radius: 15px;
  color: #fff;
  background: linear-gradient(145deg, #0a84ff, #5e5ce6);
  box-shadow: 0 9px 20px rgb(10 132 255 / 24%);
  font-size: 20px;
  font-style: normal;
  font-weight: 750;
}
.stat-grid .fetched .stat-icon { background: linear-gradient(145deg, #30d158, #00a58e); box-shadow: 0 9px 20px rgb(48 209 88 / 22%); }
.stat-grid .original .stat-icon { background: linear-gradient(145deg, #af52de, #5e5ce6); }
.stat-grid .failed .stat-icon { background: linear-gradient(145deg, #ff375f, #ff453a); }
.stat-grid article > div { min-width: 0; z-index: 1; }
.stat-grid strong { margin: 7px 0 3px; color: #1d1d1f; font-size: 34px; letter-spacing: -1px; }
.stat-grid span { color: #68686f; font-weight: 600; }

.chart-grid { grid-template-columns: minmax(0, 1.45fr) minmax(340px, .75fr); gap: 16px; }
.chart-grid section, .statistics-detail-grid > section {
  min-height: 390px;
  padding: 23px;
  border-color: rgb(60 60 67 / 10%);
  border-radius: 23px;
  background: rgb(255 255 255 / 88%);
  box-shadow: var(--panel-shadow);
  backdrop-filter: blur(16px);
}
.chart-grid h2, .statistics-detail-grid h2 { color: #1d1d1f; font-size: 17px; letter-spacing: -.2px; }
.chart-grid header p, .statistics-detail-grid header p { color: #818188; }
.chart-grid header > strong { color: #0878e8; background: #eaf4ff; }
.bar-list { max-height: 430px; padding-right: 8px; }
.bar-row { grid-template-columns: 165px minmax(0, 1fr) 54px; gap: 13px; margin: 17px 0; }
.bar-row > span { display: flex; align-items: center; gap: 9px; color: #56565d; font-weight: 550; }
.bar-row > span > i { width: 9px; height: 9px; flex: 0 0 9px; border-radius: 3px; background: #0a84ff; }
.bar-row > div { height: 12px; border-radius: 999px; background: rgb(118 118 128 / 9%); }
.bar-row > div > i { height: 100%; background: #0a84ff; box-shadow: inset 0 1px 0 rgb(255 255 255 / 28%); }
.bar-row > strong { color: #34343a; text-align: right; }
.bar-row > strong small { display: block; margin-top: 2px; color: #9a9aa1; font-size: 9px; font-weight: 500; }
.donut {
  --fetched: 0%;
  --pending-end: 0%;
  width: 206px;
  height: 206px;
  margin: 25px auto 20px;
  background: conic-gradient(#30d158 0 var(--fetched), #ff9f0a var(--fetched) var(--pending-end), #ff453a var(--pending-end) 100%);
  box-shadow: 0 18px 44px rgb(48 84 120 / 13%);
}
.donut::after { width: 140px; height: 140px; background: rgb(255 255 255 / 96%); box-shadow: inset 0 0 0 1px rgb(60 60 67 / 5%); }
.donut span { color: #1d1d1f; font-size: 29px; letter-spacing: -.7px; }
.status-legend { gap: 8px; }
.status-legend span { padding: 10px 8px; border: 1px solid rgb(60 60 67 / 7%); border-radius: 11px; background: rgb(118 118 128 / 5%); }
.status-legend i.ok { background: #30d158; }
.status-legend i.pending { background: #ff9f0a; }
.status-legend i.failed { background: #ff453a; }
.statistics-detail-grid { grid-template-columns: minmax(0, 1.35fr) minmax(420px, .85fr); gap: 16px; margin-top: 16px; }
.trend-chart { height: 245px; margin-top: 8px; position: relative; }
.trend-chart svg { width: 100%; height: 210px; overflow: visible; }
.trend-grid line { stroke: rgb(118 118 128 / 11%); stroke-width: 1; stroke-dasharray: 4 7; vector-effect: non-scaling-stroke; }
.trend-area { fill: #0a84ff; fill-opacity: .12; }
.trend-success, .trend-failed { fill: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 3.5; vector-effect: non-scaling-stroke; }
.trend-success { stroke: #0a84ff; }
.trend-failed { stroke: #ff453a; stroke-width: 2.5; stroke-dasharray: 5 6; }
.trend-chart circle { fill: #fff; stroke-width: 2.5; vector-effect: non-scaling-stroke; }
.trend-chart circle.success { stroke: #0a84ff; }
.trend-chart circle.failed { stroke: #ff453a; }
.trend-axis { display: grid; grid-template-columns: repeat(14, 1fr); margin: -2px 3px 0; color: #929299; font-size: 9px; text-align: center; }
.daily-statistics > footer { margin-top: 18px; }
.daily-summary span { border: 1px solid rgb(60 60 67 / 7%); border-radius: 10px; background: rgb(118 118 128 / 6%); }
.daily-summary i, .daily-statistics footer i { background: #0a84ff; }
.daily-summary i.failed, .daily-statistics footer i.failed { background: #ff453a; }
.anomaly-table-wrap { border-color: rgb(60 60 67 / 10%); border-radius: 13px; }
.anomaly-table-wrap th { background: rgb(245 245 247 / 92%); }

.source-category-tabs {
  flex-wrap: wrap;
  margin-top: 8px;
}
.source-category-tabs button { white-space: nowrap; }
.export-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  min-width: 0;
  margin: 18px 0 0;
  padding: 0;
  border: 0;
}
.export-grid legend {
  grid-column: 1 / -1;
  margin-bottom: 2px;
  color: #1d1d1f;
  font-weight: 750;
}
.export-choice {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  min-width: 0;
  padding: 12px;
  border: 1px solid rgb(60 60 67 / 12%);
  border-radius: 12px;
  background: rgb(248 248 250 / 88%);
  cursor: pointer;
}
.export-choice input { margin-top: 3px; }
.export-choice span { display: grid; gap: 3px; min-width: 0; }
.export-choice small { color: #75757c; line-height: 1.35; }
.media-download-list { display: grid; gap: 10px; margin-top: 16px; }
.media-download-list article {
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
  padding: 12px;
  border: 1px solid rgb(60 60 67 / 10%);
  border-radius: 12px;
}
.media-download-list article > span { color: #0a84ff; font-size: 20px; text-align: center; }
.media-download-list article > div { display: grid; gap: 3px; min-width: 0; }
.media-download-list small, .reader-tags { color: #7c7c84; }
.reader-top .star.active { color: #d98a00; }

@media (min-width: 1580px) {
  .plaza-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

.web-discovery-workbench {
  margin: 22px 0 26px;
  padding: 24px;
  border: 1px solid #d9e3f3;
  border-radius: 20px;
  background: linear-gradient(145deg, #f8fbff 0%, #fff 56%, #f7f5ff 100%);
  box-shadow: 0 18px 45px rgba(40, 72, 120, .08);
}
.web-discovery-workbench > div:first-child h2 { margin: 0 0 5px; font-size: 21px; }
.web-discovery-workbench > div:first-child p { margin: 0 0 18px; color: var(--muted); }
.web-catalog-section,
.web-saved-section {
  margin: 22px 0 28px;
  padding: 24px;
  border: 1px solid #dfe5ee;
  border-radius: 20px;
  background: #fff;
  box-shadow: 0 14px 38px rgba(40, 55, 80, .06);
}
.web-catalog-section { padding: 0; border: 0; background: transparent; box-shadow: none; }
.web-catalog-section > header,
.web-saved-section > header { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; }
.web-catalog-section > header span,
.web-saved-section > header span { color: #6e58b8; font-size: 12px; font-weight: 750; letter-spacing: .05em; text-transform: uppercase; }
.web-saved-section > header span { color: #55708f; }
.web-catalog-section > header h2,
.web-saved-section > header h2 { margin: 5px 0; font-size: 22px; }
.web-catalog-section > header p,
.web-saved-section > header p { max-width: 760px; margin: 0; color: var(--muted); line-height: 1.55; }
.web-catalog-section > header > b,
.web-saved-section > header > b { flex: 0 0 auto; padding: 7px 11px; border-radius: 99px; color: #624ba4; background: #f0ecff; font-size: 13px; }
.web-saved-section > header > b { color: #42617f; background: #edf3f8; }
.web-catalog-tabs { margin: 0; padding: 0; }
.web-catalog-tabs .web-catalog-added-tab { color: #087a43; background: #eaf8f0; }
.web-catalog-tabs .web-catalog-added-tab:hover { color: #075f36; background: #def3e8; }
.web-catalog-tabs .web-catalog-added-tab.active { color: #075f36; background: #d4efdf; box-shadow: inset 0 0 0 1px #bde8d2; }
.web-catalog-search { display: flex; flex: 0 0 auto; gap: 7px; margin: 0; }
.web-catalog-search .plaza-search { width: 300px; }
.web-catalog-search > button { min-height: 38px; padding-inline: 12px; font-size: 12px; }
.discovery-results.web-catalog-results { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin-top: 12px; }
.web-catalog-results .discovery-candidate {
  gap: 8px;
  padding: 14px;
  border-color: rgb(60 60 67 / 11%);
  border-radius: 16px;
  box-shadow: 0 1px 2px rgb(0 0 0 / 3%);
  transition: transform .16s ease, border-color .16s ease, box-shadow .16s ease;
}
.web-catalog-results .discovery-candidate:hover { transform: translateY(-1px); border-color: #c7d8eb; box-shadow: 0 8px 24px rgb(0 0 0 / 7%); }
.web-catalog-results .discovery-candidate .candidate-profile { flex-wrap: nowrap; }
.web-catalog-results .discovery-candidate .candidate-profile .avatar.lg { width: 42px; height: 42px; border-radius: 12px; }
.web-catalog-results .discovery-candidate h3 { margin: 6px 0 3px; overflow: hidden; font-size: 14px; text-overflow: ellipsis; white-space: nowrap; }
.web-catalog-results .discovery-candidate header p {
  min-height: 36px;
  margin-bottom: 6px;
  display: -webkit-box;
  overflow: hidden;
  font-size: 12px;
  line-height: 1.5;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}
.web-catalog-results .discovery-candidate code { font-size: 11px; }
.web-catalog-results .candidate-topic-tags { margin: 6px 0; }
.web-catalog-results .candidate-preview { padding: 8px 10px; border-radius: 10px; font-size: 12px; }
.web-catalog-results .candidate-empty-preview { line-height: 1.45; }
.web-catalog-results .discovery-candidate footer { gap: 6px; }
.web-catalog-results .discovery-candidate footer > :is(button, a) { flex: 1 1 105px; min-height: 32px; padding-inline: 8px; font-size: 12px; }
.candidate-topic-tags { display: flex !important; flex-wrap: wrap; gap: 5px !important; margin: 9px 0; }
.candidate-topic-tags span { padding: 3px 7px; border-radius: 99px; color: #5b4c8c; background: #f1eff9; font-size: 11px; }
.web-saved-section > .source-category-tabs { margin: 20px 0 14px; }
.unified-discovery-form { display: grid; grid-template-columns: minmax(240px, 1fr) 132px 100px; gap: 10px; align-items: stretch; }
.unified-discovery-input { display: flex; align-items: center; gap: 9px; min-width: 0; padding: 0 14px; border: 1px solid #b8c8de; border-radius: 12px; background: #fff; color: #6b7c93; }
.unified-discovery-input:focus-within { border-color: #4d76dd; box-shadow: 0 0 0 3px rgba(77, 118, 221, .12); }
.unified-discovery-input input { width: 100%; min-width: 0; border: 0; outline: 0; background: transparent; font-size: 15px; }
.unified-discovery-form select { border: 1px solid #b8c8de; border-radius: 12px; padding: 0 12px; background: #fff; }
.unified-discovery-form > button { min-width: 100px; white-space: nowrap; }
.modal-card form.unified-discovery-form { grid-template-columns: minmax(0, 1fr) 132px 100px; gap: 10px; align-items: stretch; }
.modal-card form label.unified-discovery-input { display: flex; gap: 9px; }
.modal-card form .modal-search input,
.modal-card form .unified-discovery-input input { width: auto; min-width: 0; height: 42px; flex: 1; padding: 0; border: 0; border-radius: 0; outline: 0; background: transparent; box-shadow: none; }
.modal-card form .modal-search input:focus,
.modal-card form .unified-discovery-input input:focus { border-color: transparent; box-shadow: none; }
.modal-card form.unified-discovery-form select,
.modal-card form.unified-discovery-form > button { min-height: 44px; white-space: nowrap; }
.page-discovery-results, .modal-discovery-results { margin-top: 18px; }
.modal-discovery-results { max-height: 58vh; overflow: auto; padding-right: 4px; }
.discovery-intro, .discovery-loading, .discovery-boundary, .discovery-global-warnings { padding: 14px 16px; border-radius: 12px; background: rgba(239, 245, 255, .75); color: #4f6178; }
.discovery-intro p, .discovery-boundary, .discovery-global-warnings p { margin: 5px 0 0; line-height: 1.6; }
.discovery-results { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.discovery-candidate { display: flex; flex-direction: column; gap: 12px; min-width: 0; padding: 17px; border: 1px solid #d9e3ef; border-radius: 16px; background: #fff; box-shadow: 0 8px 24px rgba(40, 72, 120, .06); }
.discovery-candidate.error { border-color: #efb9b9; }
.discovery-candidate header > div { display: flex; gap: 7px; }
.discovery-candidate .candidate-profile { align-items: center; gap: 10px; }
.discovery-candidate h3 { margin: 9px 0 4px; font-size: 17px; }
.discovery-candidate header p { margin: 0 0 8px; color: var(--muted); line-height: 1.5; }
.discovery-candidate code { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: #45648a; }
.candidate-kind, .candidate-confidence { padding: 3px 8px; border-radius: 99px; background: #eaf1ff; color: #315fae; font-size: 11px; font-weight: 700; }
.candidate-kind.wechat { color: #087d58; background: #e6f8f1; }
.wechat-discovery-identity { display: flex; align-items: center; gap: 12px; margin-top: 10px; }
.wechat-discovery-identity h3 { margin-top: 0; }
.wechat-discovery-identity p { margin-bottom: 0; }
.candidate-confidence.low { background: #fff2d8; color: #9b6400; }
.candidate-confidence.medium { background: #edf2fa; color: #596b82; }
.candidate-confidence.high { background: #e3f6eb; color: #237646; }
.candidate-preview { padding: 11px 12px; border-radius: 12px; background: #f7f9fc; }
.candidate-preview ol { margin: 8px 0 0; padding-left: 20px; }
.candidate-preview li { margin: 7px 0; }
.candidate-preview li a { color: #28384e; text-decoration: none; }
.candidate-preview li small { display: block; color: var(--muted); }
.candidate-warnings { margin: 0; padding: 10px 12px 10px 28px; border-radius: 10px; background: #fff8e8; color: #805e1d; font-size: 12px; }
.candidate-error { margin: 0; color: #b33131; }
.candidate-empty-preview { margin: 0; color: var(--muted); font-size: 13px; }
.discovery-candidate footer { display: flex; flex-wrap: wrap; gap: 8px; margin-top: auto; }
.route-parameter-form { display: grid; gap: 8px; padding: 12px; border: 1px dashed #9cb3d3; border-radius: 12px; background: #f8fbff; }
.route-parameter-form label { display: grid; gap: 4px; font-size: 12px; color: #4f6178; }
.route-parameter-form input { border: 1px solid #bdcce0; border-radius: 9px; padding: 9px 10px; background: #fff; }
.intent-progress { display: grid; justify-items: center; gap: 10px; padding: 34px 18px; text-align: center; }
.intent-progress p, .intent-progress small { color: var(--muted); }
.spinner { display: inline-block; font-size: 28px; animation: discovery-spin 1.1s linear infinite; }
@keyframes discovery-spin { to { transform: rotate(360deg); } }

@media (max-width: 1240px) {
  .content-page { padding-left: 26px; padding-right: 26px; }
  .plaza-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .discovery-results.web-catalog-results { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .chart-grid, .statistics-detail-grid { grid-template-columns: 1fr; }
}

@media (max-width: 900px) and (min-width: 721px) {
  .discovery-results.web-catalog-results { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 720px) {
  body { overflow: hidden; }
  .app-shell { width: 100%; min-width: 0; height: 100vh; }
  .sidebar { width: 58px; flex-basis: 58px; overflow: hidden; padding: 8px 7px 6px; }
  .sidebar .app-brand { justify-content: center; margin-inline: 0; }
  .sidebar .app-brand strong, .sidebar .login-entry-copy, .sidebar .task-status, .sidebar-version { display: none; }
  .sidebar .nav-link:not([data-action="collapse-sidebar"]) { font-size: 0; }
  .sidebar .nav-link { height: 34px; justify-content: center; padding: 0; }
  .sidebar .nav-link > .nav-icon { width: 27px; font-size: 16px; }
  .sidebar .nav-label, .sidebar .nav-section-label { display: none; }
  .sidebar .nav-icon { display: grid; }
  .sidebar-main, .sidebar-footer, .nav-section { gap: 0; }
  .nav-section { margin-bottom: 3px; }
  .sidebar-footer { margin-top: 3px; }
  .sidebar-footer .login-entry { min-height: 44px; padding-block: 5px; }
  .sidebar .login-entry { justify-content: center; padding: 6px; }
  .sidebar .login-entry-icon { margin: 0; }
  .page-host { min-width: 0; }
  .content-page { padding: 18px 14px 36px; }
  .page-header { min-height: 0; flex-wrap: wrap; gap: 14px; }
  .page-header h1 { font-size: 24px; }
  .plaza-grid { grid-template-columns: minmax(0, 1fr); }
  .source-category-tabs, .source-type-tabs { overflow-x: auto; flex-wrap: nowrap; }
  .source-category-tabs button, .source-type-tabs button { flex: 0 0 auto; }
  .offline-layout { height: auto; min-height: 100%; grid-template-columns: minmax(0, 1fr); }
  .offline-list { min-height: 100vh; border-right: 0; border-bottom: 1px solid var(--line); }
  .offline-reader { min-height: 100vh; }
  .offline-reader > header { align-items: flex-start; flex-wrap: wrap; padding: 14px; }
  .offline-reader > header > div:first-child { width: 100%; }
  .offline-reader-actions { width: 100%; justify-content: flex-start !important; }
  .offline-source-strip { padding: 8px 14px; }
  .rss-reader { height: auto; min-height: 100%; grid-template-columns: minmax(0, 1fr); }
  .reader-sources, .reader-list, .reader-pane { min-height: 100vh; border-right: 0; border-bottom: 1px solid var(--line); }
  .modal-backdrop { padding: 10px; }
  .modal-card { width: 100%; max-height: 94vh; }
  .sync-range-options > label { gap: 10px !important; padding-inline: 10px; }
  .sync-range-options small { font-size: 11px; }
  .modal-card form .sync-range-date { width: 145px; flex-basis: 145px; }
  .unified-discovery-form { grid-template-columns: 1fr; }
  .web-saved-section { padding: 16px; border-radius: 15px; }
  .web-saved-section > header { flex-wrap: wrap; }
  .web-catalog-search { width: 100%; align-items: stretch; }
  .web-catalog-search .plaza-search { width: auto; min-width: 0; flex: 1; }
  .modal-card form.unified-discovery-form { grid-template-columns: 1fr; }
  .unified-discovery-input { min-height: 44px; }
  .unified-discovery-form select { min-height: 42px; }
  .discovery-results { grid-template-columns: 1fr; }
  .discovery-results.web-catalog-results { grid-template-columns: 1fr; }
  .web-discovery-workbench { padding: 16px; border-radius: 15px; }
}

@media (max-height: 850px) and (min-width: 721px) {
  .sidebar { padding-top: 14px; padding-bottom: 10px; }
  .sidebar-brand { min-height: 38px; margin-bottom: 6px; }
  .sidebar-main, .sidebar-footer { gap: 2px; }
  .nav-section { gap: 1px; margin-bottom: 6px; }
  .nav-section-label { margin-bottom: 2px; }
  .sidebar-footer { margin-top: 6px; }
  .sidebar-main .nav-link, .sidebar-footer .nav-link { height: 34px; }
  .sidebar-footer .sidebar-version, .sidebar-footer .task-status { display: none; }
  .sidebar-footer .login-entry { min-height: 52px; }
}

@media (max-height: 680px) and (min-width: 721px) {
  .sidebar { padding-top: 8px; padding-bottom: 8px; }
  .sidebar-brand { min-height: 32px; margin-bottom: 4px; }
  .sidebar-main .nav-link, .sidebar-footer .nav-link { height: 30px; }
  .nav-link > .nav-icon { width: 24px; height: 24px; flex-basis: 24px; }
  .nav-section { gap: 0; margin-bottom: 4px; }
  .nav-section-label { margin-bottom: 1px; font-size: 10px; }
  .sidebar-footer { margin-top: 4px; }
  .sidebar-footer .login-entry { min-height: 48px; padding-block: 6px; }
}

/* Requirement-scoped delivery components */
.source-filter-stack {
  display: grid;
  gap: 9px;
  margin: 0 0 16px;
  padding: 12px 14px;
  border: 1px solid rgb(60 60 67 / 10%);
  border-radius: 16px;
  background: #fff;
}
.source-filter-row {
  min-width: 0;
  display: grid;
  grid-template-columns: 64px minmax(0, 1fr);
  align-items: center;
  gap: 10px;
}
.source-filter-row--secondary { padding-top: 9px; border-top: 1px solid rgb(60 60 67 / 9%); }
.source-filter-label { color: #74747b; font-size: 12px; font-weight: 700; }
.source-filter-stack .source-type-tabs {
  min-width: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  margin: 0;
  overflow: visible;
}
.source-filter-row--primary .source-type-tabs button {
  min-height: 40px;
  padding: 0 16px;
  border: 1px solid rgb(60 60 67 / 13%);
  border-radius: 10px;
  color: #55555c;
  background: #fff;
  font-size: 14px;
}
.source-filter-row--primary .source-type-tabs button.active { color: #fff; border-color: var(--blue); background: var(--blue); box-shadow: none; }
.source-filter-row--primary :is([data-offline-channel="wechat"], [data-rss-channel="wechat"]).active { border-color: var(--wechat); background: var(--wechat); }
.source-filter-row--primary :is([data-offline-channel="web"], [data-rss-channel="web"]).active { border-color: var(--web); background: var(--web); }
.source-filter-row--secondary .source-type-tabs button {
  min-height: 32px;
  padding: 0 12px;
  border: 1px solid transparent;
  border-radius: 9px;
  color: #67676e;
  background: #f4f4f6;
  font-size: 12px;
}
.source-filter-row--secondary .source-type-tabs button.active { color: var(--web); border-color: #d7d3fa; background: var(--web-soft); box-shadow: none; }
.source-filter-row--secondary :is([data-offline-category="social"], [data-rss-category="social"]).active { color: var(--social); border-color: #ead5f0; background: var(--social-soft); }

.accounts-full-layout > .source-type-tabs,
.article-list-layout > .source-type-tabs,
.content-page > .source-type-tabs {
  min-height: 48px;
  gap: 6px;
  margin: 0 0 16px;
  padding: 4px;
  border: 1px solid rgb(60 60 67 / 10%);
  border-radius: 13px;
  background: #eaeaed;
}
.accounts-full-layout > .source-type-tabs button,
.article-list-layout > .source-type-tabs button,
.content-page > .source-type-tabs button {
  min-height: 40px;
  padding: 0 18px;
  border: 0;
  border-radius: 9px;
  color: #626269;
  background: transparent;
  font-size: 14px;
}
.accounts-full-layout > .source-type-tabs button.active,
.article-list-layout > .source-type-tabs button.active,
.content-page > .source-type-tabs button.active {
  color: var(--ink);
  background: #fff;
  box-shadow: 0 1px 3px rgb(15 23 42 / 10%);
}

.account-table-shell { overflow: hidden; border-color: var(--line); border-radius: 0 0 16px 16px; box-shadow: var(--panel-shadow); }
.account-table, .article-table { scrollbar-gutter: stable; }
.account-table th, .article-table th { position: sticky; top: 0; z-index: 3; height: 44px; color: #72727a; background: #f7f7f8; }
.account-table td, .article-table td { height: 56px; color: #3d3d44; border-top-color: rgb(60 60 67 / 10%); }
.account-table tbody tr:hover td, .article-table tbody tr:hover td { background: #fbfdff; }
.account-table :is(th, td):last-child,
.article-table :is(th, td):last-child,
.table-action-cell {
  position: sticky !important;
  right: 0;
  z-index: 3;
  background: #fff;
  box-shadow: -12px 0 18px rgb(30 41 59 / 6%);
}
.account-table th:last-child, .article-table th:last-child { z-index: 5; background: #f7f7f8; }
.account-table tbody tr:hover td:last-child, .article-table tbody tr:hover td:last-child { background: #fbfdff; }
.row-action-cluster, .account-row-actions, .article-row-actions { display: flex; align-items: center; gap: 6px; white-space: nowrap; }
.row-action-danger, .account-row-actions .danger.subtle { color: #b42332 !important; border-color: #ecc9ce; background: #fff; }
.row-action-danger:hover, .account-row-actions .danger.subtle:hover { border-color: #d99ea7; background: #fff5f6; }
.article-table :is(th, td):last-child { width: 176px; }
.article-title-link { color: var(--ink); font-weight: 650; }
.article-title-link:hover { color: var(--blue); text-decoration: none; }
.article-source-cell small { color: #686870; }
.account-table-toolbar, .article-commandbar, .article-toolbar { border-color: var(--line); background: #fff; }

.rss-reader { grid-template-columns: minmax(250px, .72fr) minmax(340px, .96fr) minmax(0, 1.55fr); }
.reader-cards { background: #f7f7f8; }
.reader-card { border-color: rgb(60 60 67 / 12%); border-radius: 12px; box-shadow: none; }
.reader-card:hover { border-color: rgb(0 102 204 / 32%); }
.reader-card.active { border-color: rgb(0 102 204 / 42%); background: #eef6fd; }
.reader-sources .source-filter-stack, .offline-list .source-filter-stack { margin: 0 12px 12px; padding: 10px; border-radius: 12px; }
.reader-sources .source-filter-row, .offline-list .source-filter-row { grid-template-columns: 1fr; gap: 7px; }
.reader-sources .source-filter-stack .source-type-tabs, .offline-list .source-filter-stack .source-type-tabs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 5px; }
.reader-sources .source-filter-stack button, .offline-list .source-filter-stack button { min-width: 0; padding-inline: 7px; white-space: nowrap; }
.reader-sources .source-filter-row--secondary .source-type-tabs, .offline-list .source-filter-row--secondary .source-type-tabs { display: flex; flex-wrap: wrap; }

.admin-login-error { min-height: 18px; margin: -4px 0 0; color: #b42332; font-size: 12px; line-height: 18px; }

@media (max-width: 720px) {
  .modal-card.auth-dialog { grid-template-columns: 1fr; max-height: calc(100vh - 20px); overflow-y: auto; }
  .auth-hero { min-height: 128px; padding: 22px 24px; border-right: 0; border-bottom: 1px solid #dce7f0; }
  .auth-hero img { width: 38px; height: 38px; margin-bottom: 11px; border-radius: 10px; }
  .auth-hero > span { display: none; }
  .auth-hero h2 { margin: 0; font-size: 21px; }
  .auth-hero p { display: none; }
  .auth-panel { padding: 24px; }
  .source-filter-row { grid-template-columns: 1fr; gap: 7px; }
  .source-filter-stack .source-type-tabs { overflow-x: auto; flex-wrap: nowrap; }
  .source-filter-stack .source-type-tabs button { flex: 0 0 auto; }
  .rss-reader { grid-template-columns: minmax(0, 1fr); }
}

.modal-card.credential-manager-dialog {
  width: min(960px, calc(100vw - 32px));
  height: min(760px, calc(100vh - 40px));
  max-height: calc(100vh - 40px);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  border: 1px solid rgb(60 60 67 / 14%);
  border-radius: 20px;
  background: #fff;
}
.credential-manager-dialog > header { flex: 0 0 auto; padding: 24px 26px 17px; }
.credential-manager-dialog > header h2 { color: var(--ink); font-size: 22px; letter-spacing: -.35px; }
.credential-manager-tabs {
  flex: 0 0 auto;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 4px;
  margin: 0 26px 18px;
  padding: 4px;
  border-radius: 12px;
  background: #ededf0;
}
.credential-manager-tabs button { min-height: 40px; border: 0; border-radius: 9px; color: #68686f; background: transparent; font-weight: 650; }
.credential-manager-tabs button.active { color: var(--ink); background: #fff; box-shadow: 0 1px 3px rgb(15 23 42 / 11%); }
.credential-manager-tabs b { min-width: 20px; margin-left: 5px; padding: 1px 6px; border-radius: 999px; color: #805d00; background: #fff0c9; font-size: 11px; }
.credential-login-pane, .credential-account-pane { min-height: 0; flex: 1 1 auto; overflow: auto; padding: 0 26px 26px; }
.credential-login-pane { display: grid; align-content: start; gap: 14px; }
.credential-status-card {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 24px;
  padding: 24px;
  border: 1px solid #dfe4e9;
  border-radius: 16px;
  background: #f8f9fa;
}
.credential-status-card.ready { border-color: #b9dfca; background: var(--wechat-soft); }
.credential-status-card.warning { border-color: #ead7ad; background: #fff9ea; }
.credential-status-copy > span { color: #73737a; font-size: 12px; font-weight: 700; letter-spacing: .04em; }
.credential-status-copy h3 { margin: 8px 0 7px; color: var(--ink); font-size: 21px; }
.credential-status-copy p { max-width: 590px; margin: 0; color: #66666d; line-height: 1.6; }
.credential-primary-actions { display: flex; align-items: center; justify-content: flex-end; gap: 8px; flex-wrap: wrap; }
.credential-account-summary { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.credential-account-summary > span { display: flex; align-items: baseline; gap: 7px; padding: 17px; color: #73737a; border: 1px solid var(--line); border-radius: 12px; background: #fff; }
.credential-account-summary strong { color: var(--ink); font-size: 22px; }
.credential-account-pane { display: flex; flex-direction: column; }
.credential-account-pane .credential-tools { flex: 0 0 auto; grid-template-columns: minmax(0, 1fr) auto; padding: 0 0 10px; }
.credential-account-pane .credential-tabs { flex: 0 0 auto; margin: 0 0 12px; }
.credential-account-pane .credential-account-list { min-height: 0; flex: 1 1 auto; margin: 0; }
.credential-account p { margin: 5px 0 0; color: #85858c; font-size: 11px; line-height: 1.45; }
.credential-account-pane .credential-footer { padding: 12px 2px 0; }

@media (max-width: 720px) {
  .modal-card.credential-manager-dialog { width: 100%; height: calc(100vh - 20px); max-height: calc(100vh - 20px); }
  .credential-manager-dialog > header { padding: 20px 18px 14px; }
  .credential-manager-tabs { margin: 0 18px 14px; }
  .credential-login-pane, .credential-account-pane { padding: 0 18px 20px; }
  .credential-status-card { grid-template-columns: 1fr; padding: 18px; }
  .credential-primary-actions { justify-content: flex-start; }
  .credential-account-summary { grid-template-columns: 1fr; }
  .credential-account-pane .credential-tools { grid-template-columns: 1fr; }
}

.content-page > .source-type-tabs > [data-subscription-tab="wechat"].active,
.content-page > .source-type-tabs > [data-source-type="wechat"].active { color: var(--wechat); box-shadow: 0 1px 3px rgb(15 23 42 / 10%), inset 0 -2px var(--wechat); }
.content-page > .source-type-tabs > [data-subscription-tab="web"].active,
.content-page > .source-type-tabs > [data-source-type="web"].active { color: var(--web); box-shadow: 0 1px 3px rgb(15 23 42 / 10%), inset 0 -2px var(--web); }
.content-page > .source-type-tabs.source-category-tabs {
  min-height: 0;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 7px;
  margin: -8px 0 16px;
  padding: 11px 14px;
  border: 1px solid rgb(60 60 67 / 10%);
  border-radius: 12px;
  background: #fff;
}
.content-page > .source-type-tabs.source-category-tabs::before {
  content: "网页类型";
  margin-right: 3px;
  color: #74747b;
  font-size: 12px;
  font-weight: 700;
}
.content-page > .source-type-tabs.source-category-tabs.wechat-category-tabs::before { content: "微信来源"; }
.content-page > .source-type-tabs.source-category-tabs button {
  min-height: 32px;
  padding: 0 12px;
  border: 1px solid transparent;
  border-radius: 9px;
  color: #67676e;
  background: #f4f4f6;
  font-size: 12px;
}
.content-page > .source-type-tabs.source-category-tabs button.active { color: var(--web); border-color: #d7d3fa; background: var(--web-soft); box-shadow: none; }
.content-page > .source-type-tabs.source-category-tabs.wechat-category-tabs button.active { color: var(--wechat); border-color: #bde8d2; background: var(--wechat-soft); }

.row-action-more { min-width: 54px; }
.web-subscription-table :is(th, td):last-child { width: 238px; }
.web-account-menu { min-width: 210px; gap: 2px; padding: 8px; border-radius: 10px; }
.web-account-menu button { width: 100%; padding: 0 9px; color: #3d4653; }
.web-account-menu .group-select { width: 100%; min-height: 36px; justify-content: space-between; margin: 2px 0; padding: 0 9px; border: 0; background: #f6f7f9; }
.web-account-menu .group-select select { max-width: 122px; }

.qr-state[data-state="authorized"] { color: #075f36; background: var(--wechat-soft); }
.qr-success-actions { display: flex; justify-content: center; gap: 8px; margin-top: 12px; }

/* RSS Hub 只有一条发现链路：输入后可预览、直接添加或直接订阅。 */
.unified-discovery-form,
.modal-card form.unified-discovery-form {
  grid-template-columns: minmax(260px, 1fr) 132px auto;
  align-items: stretch;
}
.unified-discovery-actions { display: flex; align-items: stretch; gap: 8px; }
.unified-discovery-actions > button { min-height: 44px; padding-inline: 16px; }

/* 微信Hub卡片：保持四列紧凑密度，删除按钮独立悬浮在卡片外侧右上角。 */
.plaza-card {
  min-height: 170px;
  padding: 14px;
}
.plaza-card-top { gap: 10px; margin-top: 0; }
.plaza-card .avatar.lg { width: 42px; height: 42px; border-radius: 12px; }
.plaza-remove {
  width: 22px;
  height: 22px;
  display: grid;
  right: -9px;
  top: -9px;
  z-index: 6;
  opacity: 0;
  pointer-events: none;
  font-size: 14px;
  transition: opacity .15s ease;
}
.plaza-card:hover .plaza-remove,
.plaza-card:focus-within .plaza-remove { opacity: 1; pointer-events: auto; }
.category-tab { font-size: 12px; }
.category-tabs,
.source-type-tabs,
.source-category-tabs { scrollbar-width: none; }
.category-tabs::-webkit-scrollbar,
.source-type-tabs::-webkit-scrollbar,
.source-category-tabs::-webkit-scrollbar { display: none; }
.plaza-identity h3 { margin-bottom: 4px; font-size: 14px; }
.plaza-identity p,
.plaza-identity p code { font-size: 11px; }
.plaza-identity p span { height: 17px; padding-inline: 6px; font-size: 10px; }
.plaza-actions { gap: 6px; }
.plaza-actions .ghost-blue,
.plaza-actions .primary { min-height: 28px; padding-inline: 8px; font-size: 12px; }
.plaza-desc { min-height: 36px; margin: 12px 0 8px; font-size: 12px; line-height: 1.5; -webkit-line-clamp: 2; }
.plaza-meta > span,
.plaza-meta small { font-size: 11px; }
.plaza-meta > span { padding: 2px 8px; }
.avatar.has-media {
  border-color: transparent;
  background: transparent;
  box-shadow: none;
}
.avatar.has-media .avatar-fallback { display: none; }
.avatar.has-media img { background: transparent; }

/* RSS解析的文章标题和操作分成上下两行，长标题不再挤压按钮。 */
.reader-top {
  min-height: 118px;
  align-items: stretch;
  flex-direction: column;
  flex-wrap: nowrap;
  justify-content: center;
  gap: 10px;
  padding-block: 13px;
}
.reader-top .reader-current { width: 100%; flex: 0 0 auto; }
.reader-current > div { min-width: 0; }
.reader-current h2 { width: 100%; max-width: none; }
.reader-top > div:last-child {
  width: 100%;
  flex-wrap: wrap;
  justify-content: flex-start;
}

/* 我的收藏只承载文章阅读入口，不复用文章管理页的筛选、任务和表格。 */
.favorites-page { max-width: 1120px; padding-top: 24px; }
.favorites-reading-list { display: grid; gap: 8px; }
.favorite-article-row {
  min-height: 78px;
  display: flex;
  align-items: center;
  overflow: hidden;
  border: 1px solid #e1e6ed;
  border-radius: 14px;
  background: #fff;
  box-shadow: 0 5px 20px rgb(31 48 74 / 4%);
  transition: border-color .16s, box-shadow .16s, transform .16s;
}
.favorite-article-row:hover {
  border-color: #bfd4ef;
  box-shadow: 0 9px 24px rgb(31 48 74 / 8%);
  transform: translateY(-1px);
}
.favorite-article-open {
  min-width: 0;
  flex: 1;
  align-self: stretch;
  display: flex;
  align-items: center;
  gap: 13px;
  padding: 13px 16px;
  color: inherit;
  border: 0;
  background: transparent;
  text-align: left;
}
.favorite-article-open .avatar { width: 40px; height: 40px; flex-basis: 40px; }
.favorite-article-copy { min-width: 0; display: grid; gap: 7px; }
.favorite-article-copy > strong {
  overflow: hidden;
  color: #162238;
  font-size: 16px;
  line-height: 1.35;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.favorite-article-copy > small { display: flex; align-items: center; gap: 9px; color: #7b8798; }
.favorite-article-copy time::before { content: "·"; margin-right: 9px; color: #bdc4ce; }
.favorite-remove {
  width: 38px;
  height: 38px;
  flex: 0 0 38px;
  display: grid;
  place-items: center;
  margin-right: 14px;
  color: #d58b00;
  border: 0;
  border-radius: 10px;
  background: #fff7e7;
  font-size: 17px;
}
.favorite-remove:hover { color: #a86600; background: #ffefce; }
.favorites-list-state {
  min-height: 220px;
  display: grid;
  place-items: center;
  color: #8a95a5;
  border: 1px dashed #d8dfe8;
  border-radius: 14px;
  background: #fff;
}
.favorites-pagination { display: flex; align-items: center; justify-content: center; gap: 12px; padding-top: 10px; color: #778397; }
.favorites-pagination button { min-height: 34px; padding: 0 13px; color: #42526a; border: 1px solid #dce3ec; border-radius: 8px; background: #fff; }
.favorites-pagination button:disabled { color: #bdc4cf; background: #f5f6f8; cursor: default; }

/* 导出：格式卡片 + 图片策略，交互和信息层级与参考图一致。 */
.modal-card.article-export-dialog,
.modal-card.article-share-dialog {
  width: min(720px, calc(100vw - 32px));
  max-height: calc(100vh - 32px);
  overflow: auto;
}
.article-export-form { padding: 0 20px 20px; }
.export-section { margin: 0 0 14px; }
.export-section h3 { margin: 0 0 10px; color: #667085; font-size: 14px; }
.export-format-grid { display: grid; gap: 8px; }
.export-format-main { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.export-format-data { width: 40%; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.export-format-choice { min-width: 0; cursor: pointer; }
.export-format-choice input { position: absolute; opacity: 0; pointer-events: none; }
.export-format-choice > span {
  min-height: 88px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  padding: 10px 6px;
  color: #667085;
  border: 1px solid #e0e5ec;
  border-radius: 12px;
  background: #fff;
  transition: border-color .16s, background .16s, color .16s;
}
.export-format-choice b { color: #8b96a7; font-size: 25px; line-height: 1; }
.export-format-choice strong { color: #475467; font-size: 13px; }
.export-format-choice small { color: #98a2b3; font-size: 12px; }
.export-format-choice input:checked + span {
  color: #07815e;
  border-color: #19bd88;
  background: #f0fbf7;
  box-shadow: 0 0 0 1px rgb(25 189 136 / 12%);
}
.export-format-choice input:checked + span b,
.export-format-choice input:checked + span strong { color: #07815e; }
.export-image-options { display: grid; gap: 2px; }
.export-image-options label {
  min-height: 40px;
  display: grid;
  grid-template-columns: 24px minmax(130px, .8fr) minmax(0, 1.2fr);
  align-items: center;
  gap: 4px;
  padding: 5px 10px;
  border-radius: 9px;
  cursor: pointer;
}
.export-image-options label:hover { background: #f7f8fa; }
.export-image-options input[type="radio"] { width: 18px; height: 18px; min-height: 0; margin: 0; }
.export-image-options small { color: #98a2b3; }
.export-warning { margin: 10px 0 0; color: #c56a00; font-size: 12px; line-height: 1.55; }
.export-confirm { width: 100%; min-height: 46px; color: #fff; border-color: #0bbf80; background: #0bbf80; font-size: 16px; }
.export-confirm:hover { border-color: #079d69; background: #079d69; }

@media (max-height: 700px) and (min-width: 721px) {
  .modal-card.article-export-dialog > header { padding-top: 10px; padding-bottom: 7px; }
  .article-export-form { gap: 5px; padding-bottom: 4px; }
  .export-section { margin-bottom: 4px; }
  .export-section h3 { margin-bottom: 6px; }
  .export-format-choice > span { min-height: 68px; gap: 2px; padding-block: 4px; }
  .export-format-choice b { font-size: 18px; }
  .export-image-options label { min-height: 34px; }
  .export-warning { margin-top: 4px; font-size: 11px; line-height: 1.35; }
}

/* 自定义分享面板：只出现用户指定的五个平台。 */
.share-dialog-body { padding: 0 20px 22px; }
.share-channel-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; }
.share-channel {
  min-height: 104px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  border: 1px solid #e0e5ec;
  border-radius: 14px;
  background: #fff;
  color: #475467;
}
.share-channel b { width: 42px; height: 42px; display: grid; place-items: center; border-radius: 13px; color: #fff; font-size: 19px; }
.share-channel.green b { background: #16b76d; }
.share-channel.blue b { background: #1687f8; }
.share-channel.cyan b { background: #1aa9d9; }
.share-channel.red b { background: #e44a45; }
.share-channel.black b { background: #111; }
.share-channel.active { color: #0878e8; border-color: #65aaf5; background: #f2f8ff; }
.share-preview {
  min-height: 180px;
  display: grid;
  grid-template-columns: 148px minmax(0, 1fr);
  align-items: center;
  gap: 22px;
  padding: 18px;
  border: 1px solid #e5e9ef;
  border-radius: 16px;
  background: #f8fafc;
}
.share-preview img { width: 148px; height: 148px; display: block; border-radius: 10px; background: #fff; }
.share-preview strong { font-size: 18px; }
.share-preview p { margin: 8px 0 16px; color: #667085; line-height: 1.6; }
.share-copy-success { width: 90px; height: 90px; display: grid; place-items: center; justify-self: center; border-radius: 50%; color: #fff; background: #16b76d; font-size: 42px; }

@media (max-width: 1180px) {
  .unified-discovery-form,
  .modal-card form.unified-discovery-form { grid-template-columns: minmax(0, 1fr) 120px; }
  .unified-discovery-actions { grid-column: 1 / -1; justify-content: flex-end; }
}

@media (max-width: 720px) {
  .unified-discovery-form,
  .modal-card form.unified-discovery-form { grid-template-columns: 1fr; }
  .unified-discovery-actions { grid-column: auto; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .unified-discovery-actions > button { min-width: 0; padding-inline: 8px; }
  .export-format-main { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .export-format-data { width: 66.666%; }
  .export-image-options label { grid-template-columns: 24px minmax(0, 1fr); }
  .export-image-options small { grid-column: 2; }
  .share-channel-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .share-preview { grid-template-columns: 1fr; text-align: center; }
  .share-preview img { justify-self: center; }
}
