/*!****************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[10].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[10].use[3]!./src/app/tokens.css ***!
  \****************************************************************************************************************************************************************************************************************************************************************/
/* AI收录引擎 · 运营后台设计令牌 tokens.css
   风格：Linear 式科技 SaaS · 浅色通透 · 专业蓝 · 阴影提升 */
:root {
  /* —— 主色 专业蓝 —— */
  --color-primary-50:  #eff6ff;
  --color-primary-100: #dbeafe;
  --color-primary-200: #bfdbfe;
  --color-primary-300: #93c5fd;
  --color-primary-400: #60a5fa;
  --color-primary-500: #3b82f6;
  --color-primary-600: #2563eb;
  --color-primary-700: #1d4ed8;
  --color-primary:     #2563eb;
  --color-primary-hover:#1d4ed8;
  --color-primary-soft:#eff6ff;

  /* —— 中性灰阶（浅色） —— */
  --color-bg:          #f8fafc;
  --color-surface:     #ffffff;
  --color-surface-2:   #f1f5f9;
  --color-border:      #e2e8f0;
  --color-border-strong:#cbd5e1;
  --color-text:        #0f172a;
  --color-text-secondary:#475569;
  --color-text-muted:  #94a3b8;
  --color-text-inverse:#ffffff;

  /* —— 语义色 —— */
  --color-success:     #16a34a;
  --color-success-soft:#dcfce7;
  --color-warning:     #d97706;
  --color-warning-soft:#fef3c7;
  --color-danger:      #dc2626;
  --color-danger-soft: #fee2e2;
  --color-info:        #0891b2;
  --color-info-soft:   #cffafe;

  /* —— 内容状态标签色（选题/草稿/待审/已发布/已收录） —— */
  --status-topic:      #8b5cf6;
  --status-draft:      #94a3b8;
  --status-review:     #d97706;
  --status-published:  #2563eb;
  --status-indexed:    #16a34a;

  /* —— 字体 —— */
  --font-sans: "Inter", "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;
  --font-mono: "JetBrains Mono", "Consolas", monospace;

  /* —— 字号 —— */
  --text-xs:   12px;
  --text-sm:   13px;
  --text-base: 14px;
  --text-md:   15px;
  --text-lg:   18px;
  --text-xl:   22px;
  --text-2xl:  28px;
  --text-3xl:  34px;
  --leading-tight: 1.25;
  --leading-normal:1.5;
  --font-weight-normal: 400;
  --font-weight-medium: 500;
  --font-weight-semibold: 600;
  --font-weight-bold: 700;

  /* —— 间距 —— */
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 20px;
  --space-6: 24px;
  --space-8: 32px;
  --space-10: 40px;
  --space-12: 48px;

  /* —— 圆角 —— */
  --radius-sm: 4px;
  --radius-md: 6px;
  --radius-lg: 8px;
  --radius-xl: 12px;
  --radius-full: 9999px;

  /* —— 阴影（阴影提升哲学：层级靠阴影区分） —— */
  --shadow-xs: 0 1px 2px rgba(15,23,42,.04);
  --shadow-sm: 0 1px 3px rgba(15,23,42,.08), 0 1px 2px rgba(15,23,42,.04);
  --shadow-md: 0 4px 8px rgba(15,23,42,.08), 0 2px 4px rgba(15,23,42,.04);
  --shadow-lg: 0 12px 24px rgba(15,23,42,.10), 0 4px 8px rgba(15,23,42,.06);
  --shadow-focus: 0 0 0 3px rgba(37,99,235,.25);

  /* —— 布局 —— */
  --sidebar-width: 232px;
  --topbar-height: 56px;
  --content-max: 1280px;

  /* —— 动效 —— */
  --ease-out: cubic-bezier(.16,1,.3,1);
  --duration-fast: 120ms;
  --duration-base: 200ms;
}

/*!*****************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[10].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[10].use[3]!./src/app/globals.css ***!
  \*****************************************************************************************************************************************************************************************************************************************************************/
/* 设计系统全局样式：tokens 为唯一变量源；共享类名 1:1 移植自 output/pages/*.html 原型。 */
*, ::before, ::after{
  --tw-border-spacing-x: 0;
  --tw-border-spacing-y: 0;
  --tw-translate-x: 0;
  --tw-translate-y: 0;
  --tw-rotate: 0;
  --tw-skew-x: 0;
  --tw-skew-y: 0;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  --tw-pan-x:  ;
  --tw-pan-y:  ;
  --tw-pinch-zoom:  ;
  --tw-scroll-snap-strictness: proximity;
  --tw-gradient-from-position:  ;
  --tw-gradient-via-position:  ;
  --tw-gradient-to-position:  ;
  --tw-ordinal:  ;
  --tw-slashed-zero:  ;
  --tw-numeric-figure:  ;
  --tw-numeric-spacing:  ;
  --tw-numeric-fraction:  ;
  --tw-ring-inset:  ;
  --tw-ring-offset-width: 0px;
  --tw-ring-offset-color: #fff;
  --tw-ring-color: rgb(59 130 246 / 0.5);
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  --tw-blur:  ;
  --tw-brightness:  ;
  --tw-contrast:  ;
  --tw-grayscale:  ;
  --tw-hue-rotate:  ;
  --tw-invert:  ;
  --tw-saturate:  ;
  --tw-sepia:  ;
  --tw-drop-shadow:  ;
  --tw-backdrop-blur:  ;
  --tw-backdrop-brightness:  ;
  --tw-backdrop-contrast:  ;
  --tw-backdrop-grayscale:  ;
  --tw-backdrop-hue-rotate:  ;
  --tw-backdrop-invert:  ;
  --tw-backdrop-opacity:  ;
  --tw-backdrop-saturate:  ;
  --tw-backdrop-sepia:  ;
  --tw-contain-size:  ;
  --tw-contain-layout:  ;
  --tw-contain-paint:  ;
  --tw-contain-style:  ;
}
::backdrop{
  --tw-border-spacing-x: 0;
  --tw-border-spacing-y: 0;
  --tw-translate-x: 0;
  --tw-translate-y: 0;
  --tw-rotate: 0;
  --tw-skew-x: 0;
  --tw-skew-y: 0;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  --tw-pan-x:  ;
  --tw-pan-y:  ;
  --tw-pinch-zoom:  ;
  --tw-scroll-snap-strictness: proximity;
  --tw-gradient-from-position:  ;
  --tw-gradient-via-position:  ;
  --tw-gradient-to-position:  ;
  --tw-ordinal:  ;
  --tw-slashed-zero:  ;
  --tw-numeric-figure:  ;
  --tw-numeric-spacing:  ;
  --tw-numeric-fraction:  ;
  --tw-ring-inset:  ;
  --tw-ring-offset-width: 0px;
  --tw-ring-offset-color: #fff;
  --tw-ring-color: rgb(59 130 246 / 0.5);
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  --tw-blur:  ;
  --tw-brightness:  ;
  --tw-contrast:  ;
  --tw-grayscale:  ;
  --tw-hue-rotate:  ;
  --tw-invert:  ;
  --tw-saturate:  ;
  --tw-sepia:  ;
  --tw-drop-shadow:  ;
  --tw-backdrop-blur:  ;
  --tw-backdrop-brightness:  ;
  --tw-backdrop-contrast:  ;
  --tw-backdrop-grayscale:  ;
  --tw-backdrop-hue-rotate:  ;
  --tw-backdrop-invert:  ;
  --tw-backdrop-opacity:  ;
  --tw-backdrop-saturate:  ;
  --tw-backdrop-sepia:  ;
  --tw-contain-size:  ;
  --tw-contain-layout:  ;
  --tw-contain-paint:  ;
  --tw-contain-style:  ;
}
/* ! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com */
/*
1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
*/
*,
::before,
::after {
  box-sizing: border-box; /* 1 */
  border-width: 0; /* 2 */
  border-style: solid; /* 2 */
  border-color: #e5e7eb; /* 2 */
}
::before,
::after {
  --tw-content: '';
}
/*
1. Use a consistent sensible line-height in all browsers.
2. Prevent adjustments of font size after orientation changes in iOS.
3. Use a more readable tab size.
4. Use the user's configured `sans` font-family by default.
5. Use the user's configured `sans` font-feature-settings by default.
6. Use the user's configured `sans` font-variation-settings by default.
7. Disable tap highlights on iOS
*/
html,
:host {
  line-height: 1.5; /* 1 */
  -webkit-text-size-adjust: 100%; /* 2 */
  -moz-tab-size: 4; /* 3 */
  -o-tab-size: 4;
     tab-size: 4; /* 3 */
  font-family: var(--font-sans); /* 4 */
  font-feature-settings: normal; /* 5 */
  font-variation-settings: normal; /* 6 */
  -webkit-tap-highlight-color: transparent; /* 7 */
}
/*
1. Remove the margin in all browsers.
2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.
*/
body {
  margin: 0; /* 1 */
  line-height: inherit; /* 2 */
}
/*
1. Add the correct height in Firefox.
2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
3. Ensure horizontal rules are visible by default.
*/
hr {
  height: 0; /* 1 */
  color: inherit; /* 2 */
  border-top-width: 1px; /* 3 */
}
/*
Add the correct text decoration in Chrome, Edge, and Safari.
*/
abbr:where([title]) {
  -webkit-text-decoration: underline dotted;
          text-decoration: underline dotted;
}
/*
Remove the default font size and weight for headings.
*/
h1,
h2,
h3,
h4,
h5,
h6 {
  font-size: inherit;
  font-weight: inherit;
}
/*
Reset links to optimize for opt-in styling instead of opt-out.
*/
a {
  color: inherit;
  text-decoration: inherit;
}
/*
Add the correct font weight in Edge and Safari.
*/
b,
strong {
  font-weight: bolder;
}
/*
1. Use the user's configured `mono` font-family by default.
2. Use the user's configured `mono` font-feature-settings by default.
3. Use the user's configured `mono` font-variation-settings by default.
4. Correct the odd `em` font sizing in all browsers.
*/
code,
kbd,
samp,
pre {
  font-family: var(--font-mono); /* 1 */
  font-feature-settings: normal; /* 2 */
  font-variation-settings: normal; /* 3 */
  font-size: 1em; /* 4 */
}
/*
Add the correct font size in all browsers.
*/
small {
  font-size: 80%;
}
/*
Prevent `sub` and `sup` elements from affecting the line height in all browsers.
*/
sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}
sub {
  bottom: -0.25em;
}
sup {
  top: -0.5em;
}
/*
1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
3. Remove gaps between table borders by default.
*/
table {
  text-indent: 0; /* 1 */
  border-color: inherit; /* 2 */
  border-collapse: collapse; /* 3 */
}
/*
1. Change the font styles in all browsers.
2. Remove the margin in Firefox and Safari.
3. Remove default padding in all browsers.
*/
button,
input,
optgroup,
select,
textarea {
  font-family: inherit; /* 1 */
  font-feature-settings: inherit; /* 1 */
  font-variation-settings: inherit; /* 1 */
  font-size: 100%; /* 1 */
  font-weight: inherit; /* 1 */
  line-height: inherit; /* 1 */
  letter-spacing: inherit; /* 1 */
  color: inherit; /* 1 */
  margin: 0; /* 2 */
  padding: 0; /* 3 */
}
/*
Remove the inheritance of text transform in Edge and Firefox.
*/
button,
select {
  text-transform: none;
}
/*
1. Correct the inability to style clickable types in iOS and Safari.
2. Remove default button styles.
*/
button,
input:where([type='button']),
input:where([type='reset']),
input:where([type='submit']) {
  -webkit-appearance: button; /* 1 */
  background-color: transparent; /* 2 */
  background-image: none; /* 2 */
}
/*
Use the modern Firefox focus style for all focusable elements.
*/
:-moz-focusring {
  outline: auto;
}
/*
Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)
*/
:-moz-ui-invalid {
  box-shadow: none;
}
/*
Add the correct vertical alignment in Chrome and Firefox.
*/
progress {
  vertical-align: baseline;
}
/*
Correct the cursor style of increment and decrement buttons in Safari.
*/
::-webkit-inner-spin-button,
::-webkit-outer-spin-button {
  height: auto;
}
/*
1. Correct the odd appearance in Chrome and Safari.
2. Correct the outline style in Safari.
*/
[type='search'] {
  -webkit-appearance: textfield; /* 1 */
  outline-offset: -2px; /* 2 */
}
/*
Remove the inner padding in Chrome and Safari on macOS.
*/
::-webkit-search-decoration {
  -webkit-appearance: none;
}
/*
1. Correct the inability to style clickable types in iOS and Safari.
2. Change font properties to `inherit` in Safari.
*/
::-webkit-file-upload-button {
  -webkit-appearance: button; /* 1 */
  font: inherit; /* 2 */
}
/*
Add the correct display in Chrome and Safari.
*/
summary {
  display: list-item;
}
/*
Removes the default spacing and border for appropriate elements.
*/
blockquote,
dl,
dd,
h1,
h2,
h3,
h4,
h5,
h6,
hr,
figure,
p,
pre {
  margin: 0;
}
fieldset {
  margin: 0;
  padding: 0;
}
legend {
  padding: 0;
}
ol,
ul,
menu {
  list-style: none;
  margin: 0;
  padding: 0;
}
/*
Reset default styling for dialogs.
*/
dialog {
  padding: 0;
}
/*
Prevent resizing textareas horizontally by default.
*/
textarea {
  resize: vertical;
}
/*
1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)
2. Set the default placeholder color to the user's configured gray 400 color.
*/
input::-moz-placeholder, textarea::-moz-placeholder {
  opacity: 1; /* 1 */
  color: #9ca3af; /* 2 */
}
input::placeholder,
textarea::placeholder {
  opacity: 1; /* 1 */
  color: #9ca3af; /* 2 */
}
/*
Set the default cursor for buttons.
*/
button,
[role="button"] {
  cursor: pointer;
}
/*
Make sure disabled buttons don't get the pointer cursor.
*/
:disabled {
  cursor: default;
}
/*
1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)
2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)
   This can trigger a poorly considered lint error in some tools but is included by design.
*/
img,
svg,
video,
canvas,
audio,
iframe,
embed,
object {
  display: block; /* 1 */
  vertical-align: middle; /* 2 */
}
/*
Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)
*/
img,
video {
  max-width: 100%;
  height: auto;
}
/* Make elements with the HTML hidden attribute stay hidden by default */
[hidden]:where(:not([hidden="until-found"])) {
  display: none;
}
.collapse{
  visibility: collapse;
}
.static{
  position: static;
}
.absolute{
  position: absolute;
}
.relative{
  position: relative;
}
.sticky{
  position: sticky;
}
.block{
  display: block;
}
.inline-block{
  display: inline-block;
}
.flex{
  display: flex;
}
.inline-flex{
  display: inline-flex;
}
.table{
  display: table;
}
.grid{
  display: grid;
}
.hidden{
  display: none;
}
.border{
  border-width: 1px;
}
.uppercase{
  text-transform: uppercase;
}
.italic{
  font-style: italic;
}
.outline{
  outline-style: solid;
}
.filter{
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}
.transition{
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}

* { margin: 0; padding: 0; box-sizing: border-box; }
html, body { height: 100%; }
body {
  font-family: var(--font-sans);
  background: var(--color-bg);
  color: var(--color-text);
  font-size: var(--text-base);
}
a { color: inherit; }
button { font-family: inherit; }

/* —— 应用外壳：侧栏 + 主区 —— */
.app { display: flex; min-height: 100vh; }
.sidebar {
  width: var(--sidebar-width); background: var(--color-surface);
  border-right: 1px solid var(--color-border);
  position: fixed; top: 0; bottom: 0; left: 0; z-index: 10;
}
.logo {
  height: var(--topbar-height); display: flex; align-items: center; gap: var(--space-2);
  padding: 0 var(--space-5); font-weight: var(--font-weight-bold); font-size: var(--text-lg);
  border-bottom: 1px solid var(--color-border);
}
.logo .dot { width: 18px; height: 18px; border-radius: var(--radius-sm); background: var(--color-primary); }
.nav { padding: var(--space-3); display: flex; flex-direction: column; gap: 2px; }
.nav a {
  display: flex; align-items: center; gap: var(--space-3); padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-md); color: var(--color-text-secondary); text-decoration: none;
  font-size: var(--text-sm); font-weight: var(--font-weight-medium);
}
.nav a:hover { background: var(--color-surface-2); color: var(--color-text); }
.nav a.active { background: var(--color-primary-soft); color: var(--color-primary); }
.nav .ico { width: 16px; height: 16px; border-radius: 3px; background: currentColor; opacity: .55; }
.nav a.active .ico { opacity: 1; }

.main { margin-left: var(--sidebar-width); flex: 1; display: flex; flex-direction: column; min-width: 0; }
.topbar {
  height: var(--topbar-height); background: var(--color-surface);
  border-bottom: 1px solid var(--color-border); display: flex; align-items: center;
  justify-content: space-between; padding: 0 var(--space-6); position: sticky; top: 0; z-index: 5;
}
.crumb { font-size: var(--text-sm); color: var(--color-text-secondary); }
.crumb b { color: var(--color-text); }
.top-right { display: flex; align-items: center; gap: var(--space-4); }
.search {
  height: 32px; width: 240px; border: 1px solid var(--color-border); border-radius: var(--radius-md);
  padding: 0 var(--space-3); font-size: var(--text-sm); background: var(--color-surface-2);
}
.avatar {
  width: 30px; height: 30px; border-radius: var(--radius-full); background: var(--color-primary);
  color: #fff; display: flex; align-items: center; justify-content: center;
  font-size: var(--text-sm); font-weight: var(--font-weight-semibold);
}
.content { padding: var(--space-6); max-width: var(--content-max); width: 100%; }
.h1 { font-size: var(--text-2xl); font-weight: var(--font-weight-bold); margin-bottom: var(--space-1); }
.sub { color: var(--color-text-secondary); font-size: var(--text-sm); margin-bottom: var(--space-6); }

/* —— 概览卡片 —— */
.cards { display: grid; gap: var(--space-4); margin-bottom: var(--space-6); }
.cards.c3 { grid-template-columns: repeat(3, 1fr); }
.cards.c4 { grid-template-columns: repeat(4, 1fr); }
.card {
  background: var(--color-surface); border: 1px solid var(--color-border);
  border-radius: var(--radius-lg); padding: var(--space-5); box-shadow: var(--shadow-sm);
}
.card .label { font-size: var(--text-sm); color: var(--color-text-secondary); margin-bottom: var(--space-2); }
.card .num { font-size: var(--text-3xl); font-weight: var(--font-weight-bold); }
.card .num.md { font-size: var(--text-2xl); }
.card .num small { font-size: var(--text-base); color: var(--color-text-muted); font-weight: var(--font-weight-normal); }
.card .trend { font-size: var(--text-xs); margin-top: var(--space-2); color: var(--color-success); }

/* —— 面板与表格 —— */
.panel {
  background: var(--color-surface); border: 1px solid var(--color-border);
  border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); overflow: hidden;
}
.panel-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: var(--space-4) var(--space-5); border-bottom: 1px solid var(--color-border);
}
.panel-head h3 { font-size: var(--text-md); font-weight: var(--font-weight-semibold); }
table { width: 100%; border-collapse: collapse; font-size: var(--text-sm); }
th {
  text-align: left; padding: var(--space-3) var(--space-5); color: var(--color-text-muted);
  font-weight: var(--font-weight-medium); font-size: var(--text-xs); text-transform: uppercase;
  border-bottom: 1px solid var(--color-border);
}
td { padding: var(--space-3) var(--space-5); border-bottom: 1px solid var(--color-border); }
tbody tr:last-child td, tr:last-child td { border-bottom: none; }
tbody tr:hover td { background: var(--color-surface-2); }

/* —— 标签 pill —— */
.tag {
  display: inline-flex; align-items: center; gap: 5px; font-size: var(--text-xs);
  font-weight: var(--font-weight-medium); padding: 3px 9px; border-radius: var(--radius-full);
}
.tag::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.tag.review, .tag.warning { color: var(--status-review); background: var(--color-warning-soft); }
.tag.draft, .tag.neutral { color: var(--status-draft); background: var(--color-surface-2); }
.tag.success, .tag.indexed, .tag.published { color: var(--status-indexed); background: var(--color-success-soft); }
.tag.info, .tag.writing { color: var(--color-info); background: var(--color-info-soft); }
.tag.danger, .tag.reject, .tag.miss { color: var(--color-danger); background: var(--color-danger-soft); }
.tag.topic { color: var(--status-topic); background: #f3e8ff; }
.tag.compare { color: var(--status-published); background: var(--color-primary-soft); }

/* 生成中进度条（写作任务列表） */
.prog { display: inline-block; width: 70px; height: 6px; border-radius: 3px; background: var(--color-surface-2); position: relative; overflow: hidden; vertical-align: middle; }
.prog i { position: absolute; left: 0; top: 0; bottom: 0; background: var(--color-info); border-radius: 3px; }
/* 标题列：超长标题截断不破版 */
.tt { max-width: 360px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* 意图小标签（无圆点） */
.intent { font-size: var(--text-xs); padding: 2px 8px; border-radius: var(--radius-full); }
.intent.buy { color: var(--status-indexed); background: var(--color-success-soft); }
.intent.compare { color: var(--status-published); background: var(--color-primary-soft); }
.intent.info { color: var(--color-text-secondary); background: var(--color-surface-2); }

/* —— 按钮 —— */
.btn {
  height: 34px; padding: 0 var(--space-4); border-radius: var(--radius-md); border: none;
  background: var(--color-primary); color: #fff; font-size: var(--text-sm);
  font-weight: var(--font-weight-medium); cursor: pointer; text-decoration: none;
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
}
.btn:hover { background: var(--color-primary-hover); }
.btn:disabled { opacity: .55; cursor: not-allowed; }
.btn.ghost { background: var(--color-surface); color: var(--color-text); border: 1px solid var(--color-border); }
.btn.ghost:hover { background: var(--color-surface-2); }
.btn.danger { background: var(--color-danger-soft); color: var(--color-danger); }
.btn.sm { height: 30px; padding: 0 var(--space-3); }
.link { color: var(--color-primary); text-decoration: none; font-weight: var(--font-weight-medium); cursor: pointer; background: none; border: none; font-size: var(--text-sm); }
.link.muted { color: var(--color-text-muted); }

/* —— 工具栏 / 子导航 —— */
.toolbar { display: flex; gap: var(--space-3); margin-bottom: var(--space-4); align-items: center; }
.toolbar input, .toolbar select {
  height: 34px; border: 1px solid var(--color-border); border-radius: var(--radius-md);
  padding: 0 var(--space-3); font-size: var(--text-sm); background: var(--color-surface-2);
}
.toolbar select { background: var(--color-surface); }
.toolbar .spacer { flex: 1; }
.subnav { display: flex; gap: 4px; margin-bottom: var(--space-5); border-bottom: 1px solid var(--color-border); }
.subnav a {
  padding: var(--space-2) var(--space-4); font-size: var(--text-sm); font-weight: var(--font-weight-medium);
  color: var(--color-text-secondary); text-decoration: none; border-bottom: 2px solid transparent; margin-bottom: -1px;
}
.subnav a.active { color: var(--color-primary); border-bottom-color: var(--color-primary); }

/* —— 表单 —— */
.field { margin-bottom: var(--space-4); }
.field label { display: block; font-size: var(--text-sm); font-weight: var(--font-weight-medium); margin-bottom: var(--space-2); }
.field input, .field select, .field textarea {
  width: 100%; height: 40px; border: 1px solid var(--color-border); border-radius: var(--radius-md);
  padding: 0 var(--space-3); font-size: var(--text-base); background: var(--color-surface-2);
}
.field textarea { height: auto; padding: var(--space-3); }
.field input:focus, .field select:focus, .field textarea:focus {
  outline: none; border-color: var(--color-primary); box-shadow: var(--shadow-focus); background: var(--color-surface);
}
.field .err { color: var(--color-danger); font-size: var(--text-xs); margin-top: 4px; }
.field .tip { font-size: var(--text-xs); color: var(--color-text-muted); margin-top: 5px; }

/* —— 开关 —— */
.sw { width: 40px; height: 22px; border-radius: var(--radius-full); background: var(--color-primary); position: relative; cursor: pointer; flex-shrink: 0; border: none; }
.sw.off { background: var(--color-border-strong); }
.sw::after { content: ""; position: absolute; top: 2px; left: 20px; width: 18px; height: 18px; border-radius: 50%; background: #fff; transition: left var(--duration-fast); }
.sw.off::after { left: 2px; }

/* —— Toast —— */
.toast-wrap { position: fixed; top: 16px; right: 16px; z-index: 100; display: flex; flex-direction: column; gap: 8px; }
.toast { background: var(--color-text); color: #fff; padding: 10px 16px; border-radius: var(--radius-md); font-size: var(--text-sm); box-shadow: var(--shadow-lg); }
.toast.success { background: var(--color-success); }
.toast.danger { background: var(--color-danger); }

/* —— 模态 —— */
.modal-mask { position: fixed; inset: 0; background: rgba(15,23,42,.4); display: flex; align-items: center; justify-content: center; z-index: 90; }
.modal { background: var(--color-surface); border-radius: var(--radius-xl); box-shadow: var(--shadow-lg); padding: var(--space-6); width: 420px; max-width: 92vw; }
.modal h3 { font-size: var(--text-lg); font-weight: var(--font-weight-semibold); margin-bottom: var(--space-3); }
.modal .actions { display: flex; gap: var(--space-3); justify-content: flex-end; margin-top: var(--space-5); }

/* —— 空态 / 骨架 —— */
.empty { text-align: center; padding: var(--space-12) var(--space-6); color: var(--color-text-muted); }
.empty .big { font-size: var(--text-lg); color: var(--color-text-secondary); margin-bottom: var(--space-3); }
.skeleton { background: linear-gradient(90deg, var(--color-surface-2), var(--color-border), var(--color-surface-2)); background-size: 200% 100%; animation: sk 1.2s infinite; border-radius: var(--radius-sm); }
@keyframes sk { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }

/* —— 文章编辑器（三栏：大纲 / 画布 / GEO） —— */
.editor { display: grid; grid-template-columns: 200px 1fr 300px; height: calc(100vh - var(--topbar-height)); }
.outline { border-right: 1px solid var(--color-border); background: var(--color-surface); padding: var(--space-5) var(--space-4); overflow-y: auto; }
.outline h4 { font-size: var(--text-xs); text-transform: uppercase; color: var(--color-text-muted); margin-bottom: var(--space-3); }
.outline a { display: block; font-size: var(--text-sm); color: var(--color-text-secondary); text-decoration: none; padding: 6px 8px; border-radius: var(--radius-sm); margin-bottom: 2px; cursor: pointer; }
.outline a:hover { background: var(--color-surface-2); color: var(--color-text); }
.outline a.h3 { padding-left: 20px; font-size: var(--text-xs); }
.canvas { overflow-y: auto; padding: var(--space-6) var(--space-8); background: var(--color-bg); }
.ed-actions { display: flex; align-items: center; justify-content: flex-end; gap: 12px; margin-bottom: var(--space-4); }
.ed-actions .saved { margin-right: auto; font-size: var(--text-xs); color: var(--color-text-muted); }
.paper { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); padding: var(--space-6); max-width: 720px; margin: 0 auto; }
.tools { display: flex; gap: 2px; margin-bottom: var(--space-4); border-bottom: 1px solid var(--color-border); padding-bottom: var(--space-3); }
.tools button { width: 32px; height: 30px; border: none; background: none; border-radius: var(--radius-sm); cursor: pointer; font-size: var(--text-sm); color: var(--color-text-secondary); font-weight: 600; }
.tools button:hover { background: var(--color-surface-2); }
.title-in { width: 100%; border: none; font-size: var(--text-2xl); font-weight: 700; color: var(--color-text); outline: none; margin-bottom: var(--space-4); }
.body-doc { width: 100%; border: 1px solid var(--color-border); border-radius: var(--radius-md); padding: var(--space-4); font-size: var(--text-base); line-height: 1.7; font-family: var(--font-sans); resize: vertical; }
.hl { background: var(--color-warning-soft); padding: 0 2px; border-radius: 2px; }
.geo { border-left: 1px solid var(--color-border); background: var(--color-surface); padding: var(--space-5) var(--space-4); overflow-y: auto; }
.geo h4 { font-size: var(--text-sm); font-weight: 600; margin-bottom: var(--space-3); display: flex; align-items: center; justify-content: space-between; }
.badge { font-size: var(--text-xs); padding: 2px 8px; border-radius: var(--radius-full); font-weight: 600; }
.badge.ok { color: var(--color-success); background: var(--color-success-soft); }
.geo-group { margin-bottom: var(--space-5); }
.geo-item { font-size: var(--text-xs); padding: 8px 10px; border: 1px solid var(--color-border); border-radius: var(--radius-md); margin-bottom: 8px; line-height: 1.5; }
.geo-item .lbl { font-weight: 600; color: var(--color-text); display: block; margin-bottom: 2px; }
.geo-item.warn { border-color: #fde68a; background: var(--color-warning-soft); }
.geo-item.warn .lbl { color: var(--color-warning); }
.check { font-size: var(--text-sm); display: flex; gap: 8px; align-items: center; margin-bottom: 8px; color: var(--color-text-secondary); }
.check .k { width: 16px; height: 16px; border-radius: 4px; background: var(--color-success); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 10px; flex-shrink: 0; }
.check .k.x { background: var(--color-danger); }

/* 移动端：侧栏收窄 */
@media (max-width: 768px) {
  .sidebar { width: 64px; }
  .logo span:not(.dot), .nav a span:not(.ico) { display: none; }
  .main { margin-left: 64px; }
  .cards.c3, .cards.c4 { grid-template-columns: 1fr; }
  .search { width: 140px; }
}

