:root {
  --canvas: #f3f8fd;
  --surface: #ffffff;
  --surface-soft: #f7fafe;
  --ink: #18354d;
  --muted: #71869a;
  --line: #dce9f3;
  --line-strong: #c5dbea;
  --blue: #3f83bc;
  --blue-deep: #245f8d;
  --aqua: #6fa8d3;
  --amber: #b66a17;
  --red: #a84747;
  --shadow: 0 18px 55px rgba(52, 104, 145, .09);
  --shadow-soft: 0 8px 26px rgba(52, 104, 145, .07);
  --body: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
  --utility: "SFMono-Regular", "Cascadia Mono", "Roboto Mono", monospace;
}

* { box-sizing: border-box; }
body { margin: 0; color: var(--ink); background: radial-gradient(circle at 82% -12%, rgba(139,193,232,.22), transparent 31rem), linear-gradient(180deg, #fbfdff, var(--canvas) 36rem); font-family: var(--body); -webkit-font-smoothing: antialiased; }
button, input, select, textarea { font: inherit; }
button, a, select { -webkit-tap-highlight-color: transparent; }
button:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 3px solid rgba(63,131,188,.24); outline-offset: 2px; }

.library-header__inner, .library-main, .library-footer { width: min(1320px, calc(100% - 40px)); margin: 0 auto; }
.library-header { padding: 17px 0 22px; border-bottom: 1px solid rgba(207,224,237,.8); background: rgba(255,255,255,.76); }
.library-header__inner { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 18px 40px; align-items: end; }
.console-nav { display: flex; grid-column: 1 / -1; gap: 16px; align-items: center; }
.back-link { color: #66849a; font-size: 12px; font-weight: 650; text-decoration: none; }.back-link:hover { color: var(--blue-deep); text-decoration: underline; }
.library-title p, .manager__intro p { margin: 0; color: var(--blue); font-size: 10px; font-weight: 750; letter-spacing: .13em; }
.library-title h1 { margin: 7px 0 8px; font-size: clamp(29px, 4vw, 40px); letter-spacing: -.045em; line-height: 1.08; }.library-title > span { color: var(--muted); font-size: 13px; }
.library-header__note { display: inline-flex; gap: 10px; align-items: center; align-self: end; min-width: 188px; padding: 11px 14px; border: 1px solid rgba(160,201,230,.6); border-radius: 13px; color: #617b91; background: rgba(245,250,254,.8); font-size: 11px; line-height: 1.6; }.library-header__note i { width: 8px; height: 8px; border-radius: 50%; background: #4fc18d; box-shadow: 0 0 0 5px rgba(79,193,141,.13); }

.library-main { padding: 24px 0 60px; }.manager { padding: 20px; border: 1px solid rgba(207,224,237,.96); border-radius: 22px; background: rgba(255,255,255,.9); box-shadow: var(--shadow-soft); }
.manager__intro { display: flex; justify-content: space-between; gap: 30px; align-items: end; padding: 2px 3px 18px; }.manager__intro h2 { margin: 5px 0 5px; font-size: 21px; letter-spacing: -.035em; }.manager__intro span { color: var(--muted); font-size: 12px; }
.manager__signal { display: flex; gap: 5px; align-items: end; padding: 8px 10px; border: 1px solid #d8e9f5; border-radius: 11px; color: var(--blue-deep); background: var(--surface-soft); font-size: 10px; font-weight: 700; white-space: nowrap; }.manager__signal i { width: 4px; border-radius: 4px; background: var(--blue); }.manager__signal i:nth-child(1) { height: 7px; }.manager__signal i:nth-child(2) { height: 12px; background: var(--aqua); }.manager__signal i:nth-child(3) { height: 18px; }.manager__signal b { margin-left: 5px; font-weight: 700; }

.manager__toolbar { display: grid; grid-template-columns: minmax(230px, 1.55fr) minmax(120px, .68fr) minmax(150px, .92fr) minmax(130px, .78fr) auto; gap: 11px; align-items: end; padding: 15px; border: 1px solid var(--line); border-radius: 16px; background: linear-gradient(120deg, #f9fcff, #f3f9fd); }
.source-search, .source-filter { display: block; min-width: 0; }.source-search span, .source-filter span { display: block; margin: 0 0 6px; color: #617b91; font-size: 10px; font-weight: 700; }
input, select, textarea { width: 100%; border: 1px solid var(--line-strong); border-radius: 10px; color: var(--ink); background: var(--surface-soft); transition: border-color .16s ease, box-shadow .16s ease, background .16s ease; } input, select { min-height: 42px; padding: 0 12px; font-size: 13px; } textarea { padding: 11px 12px; line-height: 1.65; resize: vertical; } input:hover, select:hover { border-color: #aac9df; background: white; } input:focus, select:focus { border-color: var(--blue); outline: none; background: white; box-shadow: 0 0 0 4px rgba(63,131,188,.11); }
.manager-actions { display: flex; gap: 8px; align-items: center; justify-content: flex-end; }.add-source, .toolbar-button { min-height: 42px; padding: 0 13px; border-radius: 10px; cursor: pointer; font-size: 11px; font-weight: 700; white-space: nowrap; transition: transform .16s ease, border-color .16s ease, background .16s ease; }.add-source { border: 1px solid var(--blue); color: white; background: linear-gradient(135deg, var(--blue), #2874b2); box-shadow: 0 7px 15px rgba(63,131,188,.17); }.add-source:hover { transform: translateY(-1px); background: var(--blue-deep); }.toolbar-button--secondary { border: 1px solid var(--line-strong); color: var(--blue-deep); background: white; }.toolbar-button--secondary:hover { border-color: var(--blue); background: #edf6fd; }.toolbar-button--update { border: 1px solid #b9ded6; color: #197665; background: #eff9f6; }.toolbar-button--update:hover { color: white; border-color: #299985; background: #299985; }.toolbar-button:disabled { cursor: wait; opacity: .55; }
.toolbar-button--stop { border: 1px solid #efb7b7; color: #a53e3e; background: #fff4f4; }.toolbar-button--stop:hover:not(:disabled) { color: white; border-color: #bf4d4d; background: #bf4d4d; }.toolbar-button[hidden] { display: none; }

.update-panel { margin: 14px 0; padding: 13px 15px; border: 1px solid #cce0f0; border-radius: 13px; background: #f6fbff; }.update-panel__status { display: flex; justify-content: space-between; gap: 16px; align-items: baseline; }.update-panel__status strong { font-size: 12px; }.update-panel__status span { color: var(--muted); font-family: var(--utility); font-size: 9px; }.update-progress { height: 5px; margin: 10px 0 8px; overflow: hidden; border-radius: 99px; background: #deebf5; }.update-progress span { display: block; width: 0; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--blue), var(--aqua)); transition: width .25s ease; }.update-panel__stats { color: var(--muted); font-family: var(--utility); font-size: 9px; }.manager__notice { margin: 14px 0; padding: 10px 12px; border-left: 3px solid var(--amber); border-radius: 7px; color: #76572c; background: #fff8e9; font-size: 12px; line-height: 1.6; }

.source-table-wrap { margin-top: 14px; overflow-x: auto; border: 1px solid var(--line); border-radius: 16px; background: var(--surface); -webkit-overflow-scrolling: touch; }.source-table-wrap[aria-busy="true"] { opacity: .72; }.source-table { width: 100%; min-width: 1240px; border-collapse: separate; border-spacing: 0; table-layout: fixed; }.source-table th { padding: 13px 12px; border-bottom: 1px solid var(--line); color: #587185; background: #f0f6fb; font-size: 11px; font-weight: 700; text-align: left; white-space: nowrap; }.source-table td { padding: 13px 12px; border-bottom: 1px solid #e8f0f6; color: #435d72; background: white; font-size: 12px; line-height: 1.45; vertical-align: middle; }.source-table tbody tr:last-child td { border-bottom: 0; }.source-table tbody tr:hover td { background: #f6faff; }.source-table tbody tr.is-deleted td { background: #fcf7f8; opacity: .76; }
.source-table th:nth-child(1) { width: 14%; }.source-table th:nth-child(2) { width: 7%; }.source-table th:nth-child(3) { width: 7%; }.source-table th:nth-child(4) { width: 7%; }.source-table th:nth-child(5) { width: 9%; }.source-table th:nth-child(6) { width: 20%; }.source-table th:nth-child(7) { width: 27%; }.source-table th:nth-child(8) { width: 9%; }
.source-name { display: block; color: var(--ink); font-size: 13px; }.source-location { overflow: hidden; color: #607b90 !important; font-size: 11px !important; text-overflow: ellipsis; white-space: nowrap; }.source-count { color: var(--blue-deep) !important; font-family: var(--utility); font-size: 14px !important; font-weight: 700; text-align: center; }
.status-chip { display: inline-flex; padding: 4px 8px; border: 1px solid; border-radius: 7px; font-size: 10px; white-space: nowrap; }.status-chip--confirmed { color: #16705d; border-color: #9bd2c5; background: #eaf8f4; }.status-chip--candidate { color: #255ea8; border-color: #a5c5ed; background: #eef5ff; }.status-chip--pending { color: #9a5b00; border-color: #e5c387; background: #fff6df; }.status-chip--unreviewed { color: #687d8d; border-color: #cbd8e1; background: #f3f6f8; }.status-chip--deleted, .status-chip--failed { color: #8b4652; border-color: #e2b4bb; background: #fff0f1; }.crawl-error { display: block; max-width: 150px; margin-top: 5px; color: var(--red); font-size: 9px; line-height: 1.4; overflow-wrap: anywhere; word-break: break-word; }
.source-address, .path-hint { display: block; overflow-wrap: anywhere; word-break: break-word; font-family: var(--utility); font-size: 10px; line-height: 1.65; }.source-address { color: var(--blue-deep); text-decoration: none; }.source-address:hover { text-decoration: underline; }.path-hint, .source-address--empty { color: var(--muted); }.job-evidence-link { display: block; color: var(--ink); text-decoration: none; }.job-evidence-link:hover strong { color: var(--blue-deep); text-decoration: underline; }.job-evidence-link strong { display: block; overflow: hidden; font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }.job-evidence-link span { display: block; margin-top: 3px; color: var(--blue); font-family: var(--utility); font-size: 9px; line-height: 1.45; overflow-wrap: anywhere; word-break: break-word; }.all-jobs-button { margin-top: 5px; padding: 0; border: 0; color: var(--blue-deep); background: transparent; cursor: pointer; font-size: 10px; font-weight: 700; }.all-jobs-button:hover { text-decoration: underline; }.source-actions { vertical-align: middle !important; text-align: center; }.source-actions__inner { display: inline-flex; align-items: center; justify-content: center; gap: 10px; white-space: nowrap; }.source-actions a, .source-actions button { padding: 0; border: 0; color: var(--blue-deep); background: transparent; cursor: pointer; font-size: 11px; font-weight: 700; text-decoration: none; }.source-actions a:hover, .source-actions button:hover { color: var(--blue); text-decoration: underline; }.source-actions .delete-action { color: var(--red); }

.manager__empty { padding: 60px 20px; border-radius: 14px; color: var(--muted); text-align: center; background: var(--surface-soft); }.source-pagination { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; justify-content: flex-end; padding: 16px 2px 0; color: var(--muted); font-family: var(--utility); font-size: 10px; }.source-pagination > button, .source-page-jump button { min-height: 36px; padding: 0 13px; border: 1px solid var(--line-strong); border-radius: 9px; color: var(--blue-deep); background: white; cursor: pointer; font-weight: 700; }.source-pagination button:hover:not(:disabled) { color: white; border-color: var(--blue); background: var(--blue); }.source-pagination button:disabled { cursor: default; opacity: .45; }.source-page-jump, .source-page-size { display: inline-flex; gap: 7px; align-items: center; }.source-page-jump input { width: 66px; min-height: 36px; padding: 0 8px; text-align: center; }.source-page-size select { width: 86px; min-height: 36px; padding: 0 8px; }

.source-editor { width: min(620px, calc(100vw - 28px)); padding: 0; border: 1px solid #c3ddec; border-radius: 18px; color: var(--ink); background: white; box-shadow: 0 30px 100px rgba(32,86,125,.25); }.source-editor::backdrop { background: rgba(19,51,74,.42); backdrop-filter: blur(3px); }.source-editor__bar { display: flex; justify-content: space-between; align-items: center; padding: 15px 18px; border-bottom: 1px solid var(--line); border-radius: 18px 18px 0 0; color: var(--ink); background: linear-gradient(115deg, #f8fcff, #eaf5fd); font-size: 14px; font-weight: 750; }.source-editor__bar button { width: 30px; height: 30px; border: 0; border-radius: 8px; color: #57768e; background: transparent; cursor: pointer; font-size: 24px; line-height: 1; }.source-editor__bar button:hover { color: var(--blue-deep); background: white; }.source-editor__form { padding: 24px; }.source-editor__form label { display: block; margin: 16px 0 7px; color: #617b91; font-size: 11px; font-weight: 700; }.source-editor__form > label:first-child { margin-top: 0; }.source-editor__form label small { font-weight: 400; }.source-editor__location { display: grid; grid-template-columns: 1fr 1fr; column-gap: 12px; }.source-editor__field { min-width: 0; }.source-editor__field label { margin: 16px 0 7px; }.source-editor__field select, .source-editor__field input { display: block; }.source-editor__hint { margin-top: 14px; padding: 10px 12px; border-radius: 8px; color: #76572c; background: #fff8e9; font-size: 11px; line-height: 1.7; }.source-editor__actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 22px; }.source-editor__actions button { min-height: 40px; padding: 0 15px; border-radius: 10px; cursor: pointer; font-size: 12px; font-weight: 700; }.editor-cancel { border: 1px solid var(--line-strong); color: var(--blue-deep); background: white; }.editor-save { border: 1px solid var(--blue); color: white; background: var(--blue); }.editor-save:hover { background: var(--blue-deep); }
.llm-dialog { width: min(820px, calc(100vw - 28px)); }.llm-form { padding-top: 20px; }.llm-status-row { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding-bottom: 13px; border-bottom: 1px solid var(--line); }.switch-field { display: inline-flex !important; gap: 9px; align-items: center; margin: 0 !important; color: var(--ink) !important; }.switch-field input { width: 17px; min-height: 17px; margin: 0; accent-color: var(--blue); }.key-state { padding: 4px 8px; border-radius: 999px; color: var(--muted); background: #edf2f5; font-family: var(--utility); font-size: 9px; white-space: nowrap; }.key-state.is-saved { color: #16705d; background: #eaf8f4; }.llm-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }.llm-grid--model { grid-template-columns: minmax(0, 1fr) auto; align-items: end; }.secret-input { display: grid; grid-template-columns: minmax(0, 1fr) auto; }.secret-input input { border-radius: 10px 0 0 10px; border-right: 0; }.secret-input button, .fetch-models { min-height: 42px; padding: 0 13px; border: 1px solid var(--line-strong); color: var(--blue-deep); background: #f8fafb; cursor: pointer; font-size: 11px; font-weight: 700; }.secret-input button { border-radius: 0 10px 10px 0; }.fetch-models { border-radius: 10px; }.security-warning { margin: 16px 0 0; padding: 9px 11px; border-left: 3px solid var(--amber); border-radius: 7px; color: #76572c; background: #fff8e9; font-size: 11px; line-height: 1.6; }
.delete-dialog__body, .source-jobs-dialog__body { padding: 24px; }.delete-dialog__body h2, .source-jobs-dialog__body h2 { margin: 0; font-size: 23px; letter-spacing: -.025em; }.delete-dialog__body > p, .source-jobs-dialog__body > p { margin: 10px 0 0; color: var(--muted); font-size: 12px; line-height: 1.75; }.delete-confirm { border: 1px solid var(--red); color: white; background: var(--red); }.source-jobs-dialog { width: min(920px, calc(100vw - 28px)); }.source-jobs-dialog__body > p { margin-bottom: 20px; }.job-address-list { border-top: 1px solid var(--line); }.job-address-item { display: grid; grid-template-columns: 36px minmax(0, 1fr) 86px 18px; gap: 10px; padding: 13px 8px; border-bottom: 1px solid var(--line); color: var(--ink); background: white; text-decoration: none; }.job-address-item:hover { background: #f4fafc; }.job-address-item > span, .job-address-item time { color: var(--muted); font-family: var(--utility); font-size: 10px; }.job-address-item div { min-width: 0; }.job-address-item strong { display: block; margin-bottom: 5px; font-size: 12px; line-height: 1.5; }.job-address-item small { display: block; color: var(--blue-deep); font-family: var(--utility); font-size: 9px; line-height: 1.6; overflow-wrap: anywhere; word-break: break-word; }.job-address-item b { color: var(--blue); }
.library-footer { padding: 20px 0 38px; color: var(--muted); font-family: var(--utility); font-size: 10px; }

@media (max-width: 1160px) { .manager__toolbar { grid-template-columns: 1fr 1fr 1fr; }.manager-actions { grid-column: 1 / -1; justify-content: flex-start; } }
@media (max-width: 760px) { .library-header__inner, .library-main, .library-footer { width: min(100% - 28px, 1320px); }.library-header__inner { grid-template-columns: 1fr; gap: 14px; }.console-nav { flex-wrap: wrap; gap: 10px 16px; }.library-header__note { display: none; }.manager { padding: 13px; border-radius: 17px; }.manager__intro { padding: 3px 3px 14px; }.manager__intro span, .manager__signal { display: none; }.manager__toolbar { grid-template-columns: 1fr; padding: 12px; }.manager-actions { grid-column: auto; display: grid; grid-template-columns: 1fr 1fr; }.add-source { grid-column: 1 / -1; }.source-pagination { justify-content: flex-start; }.source-page-jump { order: 2; }.source-page-size { order: 3; }.source-editor__form, .source-jobs-dialog__body, .delete-dialog__body { padding: 20px; }.llm-grid, .llm-grid--model { grid-template-columns: 1fr; }.fetch-models { width: 100%; }.job-address-item { grid-template-columns: 28px minmax(0, 1fr) 18px; }.job-address-item time { grid-column: 2; grid-row: 2; }.job-address-item b { grid-column: 3; grid-row: 1; } }
