:root { color-scheme: light; --ink:#182435; --muted:#68778b; --line:#dce4ec; --soft:#f4f7fa; --panel:#fff; --navy:#17263d; --navy-2:#27415e; --cyan:#0b8292; --green:#167851; --amber:#996313; --red:#b23843; --shadow:0 12px 30px rgba(28,45,70,.07); font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif; }
button:disabled { cursor:wait; opacity:.6; } .code-output { white-space:pre-wrap; } .detail-value { overflow-wrap:anywhere; max-width:68%; }
.pager button { white-space:nowrap; flex-shrink:0; }
@media (max-width:720px) { .pager { gap:5px; flex-wrap:wrap; font-size:11px; } .pager button { padding:5px 7px; } .pager select { max-width:94px; font-size:11px; } }
* { box-sizing:border-box; } body { margin:0; color:var(--ink); background:#eef2f6; font-size:14px; } button,input,select,textarea { font:inherit; } button { cursor:pointer; } .hidden { display:none!important; }
#job-status { width:180px; max-width:55%; flex:0 0 auto; }
.login-screen { min-height:100vh; display:grid; place-items:center; padding:24px; background:var(--navy); } .login-card { width:min(430px,100%); padding:42px; border-radius:9px; background:#fff; box-shadow:0 25px 70px rgba(0,0,0,.28); } .brand-mark { width:45px; height:45px; display:grid; place-items:center; border-radius:8px; color:#fff; background:var(--cyan); font-weight:800; letter-spacing:.05em; } .brand-mark.compact { width:32px; height:32px; border-radius:6px; font-size:11px; flex:none; }
h1,h2,h3,p { margin:0; } h1 { margin:12px 0 8px; font-size:28px; } h2 { font-size:21px; } h3 { font-size:16px; } .eyebrow { color:#75849a; font-size:10px; font-weight:800; letter-spacing:.12em; } .muted { color:var(--muted); line-height:1.55; } .small { font-size:12px; }
.form-stack { display:grid; gap:10px; margin-top:28px; } label { display:grid; gap:6px; color:#48566b; font-size:12px; font-weight:700; } input,select,textarea { width:100%; border:1px solid #cbd5df; border-radius:5px; padding:10px 11px; color:var(--ink); background:#fff; outline:none; } textarea { min-height:80px; resize:vertical; } input:focus,select:focus,textarea:focus { border-color:var(--cyan); box-shadow:0 0 0 3px rgba(11,130,146,.12); } .form-error { min-height:18px; color:var(--red); font-size:12px; }
.app-shell { min-height:100vh; display:flex; } .sidebar { position:fixed; inset:0 auto 0 0; z-index:10; width:242px; display:flex; flex-direction:column; padding:25px 15px 18px; color:#eaf2f7; background:var(--navy); } .brand-lockup { display:flex; align-items:center; gap:10px; padding:0 10px 28px; } .brand-lockup strong { display:block; font-size:14px; } .brand-lockup small { display:block; margin-top:3px; color:#8ea1b7; font-size:8px; letter-spacing:.16em; } .main-nav { display:grid; gap:4px; } .nav-item { display:flex; align-items:center; gap:11px; width:100%; padding:12px; border:0; border-radius:5px; color:#aebdd0; background:transparent; text-align:left; } .nav-item:hover,.nav-item.active { color:#fff; background:var(--navy-2); } .nav-item span { width:16px; text-align:center; font-size:16px; } .sidebar-footer { display:flex; align-items:center; gap:7px; margin-top:auto; padding:16px 10px 0; border-top:1px solid #30455d; color:#91a5bb; font-size:11px; } .sidebar-footer small { margin-left:auto; color:#6f859e; } .status-dot { width:7px; height:7px; border-radius:50%; background:#43c28a; }
.main-content { width:calc(100% - 242px); margin-left:242px; padding:0 34px 44px; } .topbar { min-height:92px; display:flex; align-items:center; gap:16px; border-bottom:1px solid var(--line); } .topbar-actions { display:flex; align-items:center; gap:9px; margin-left:auto; } .icon-button { border:0; color:#5f6f83; background:transparent; font-size:20px; padding:5px 8px; } #mobile-menu { display:none; } .button,.link-button { border-radius:5px; padding:9px 13px; border:1px solid transparent; font-size:12px; font-weight:750; } .button.primary { color:#fff; background:var(--cyan); } .button.primary:hover { background:#086b79; } .button.secondary { color:#36526c; border-color:#c9d3df; background:#fff; } .button.secondary:hover { border-color:var(--cyan); color:var(--cyan); } .button.ghost,.link-button { color:var(--cyan); border:0; background:transparent; } .link-button { padding:3px 0; }
.view { display:none; padding-top:30px; } .active-view { display:block; } .metric-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:15px; margin-bottom:18px; } .metric-card { padding:19px; border:1px solid var(--line); border-radius:7px; background:var(--panel); box-shadow:var(--shadow); } .metric-value { margin-top:13px; font-size:27px; font-weight:800; } .metric-meta { margin-top:7px; color:var(--muted); font-size:11px; } .content-grid { display:grid; gap:18px; } .two-col { grid-template-columns:1fr 1fr; margin-bottom:18px; } .panel { min-width:0; padding:21px; border:1px solid var(--line); border-radius:7px; background:var(--panel); box-shadow:var(--shadow); } .panel-heading,.toolbar { display:flex; align-items:center; justify-content:space-between; gap:15px; } .panel-heading { margin-bottom:20px; } .toolbar { align-items:flex-start; margin-bottom:20px; } .toolbar-actions { display:flex; align-items:center; gap:8px; } .search-input { width:min(290px,36vw); } .configuration-note { margin:-8px 0 16px; }
.detail-list { display:grid; } .detail-row { display:flex; justify-content:space-between; gap:15px; padding:11px 0; border-bottom:1px solid #edf0f4; } .detail-row:last-child { border-bottom:0; } .detail-label { color:var(--muted); } .detail-value { font-weight:700; text-align:right; } .forecast-card { padding:22px 0; } .forecast-bias { font-size:29px; font-weight:850; } .forecast-bias.bullish { color:var(--green); } .forecast-bias.bearish { color:var(--red); } .forecast-bias.range { color:var(--amber); } .forecast-meta { margin-top:8px; color:var(--muted); }
.badge { display:inline-flex; align-items:center; min-height:24px; padding:3px 9px; border-radius:999px; font-size:11px; font-weight:750; white-space:nowrap; } .badge.success { color:#176947; background:#ddf4e9; } .badge.warning { color:#8b5b14; background:#fff0d3; } .badge.danger { color:#a32f39; background:#fde4e5; } .badge.neutral { color:#5c6b7d; background:#edf1f5; }
.table-wrap { overflow-x:auto; } table { width:100%; min-width:720px; border-collapse:collapse; } th { padding:11px 10px; border-bottom:1px solid var(--line); color:#79879a; font-size:10px; letter-spacing:.06em; text-align:left; } td { padding:13px 10px; border-bottom:1px solid #edf0f4; vertical-align:middle; } td strong { font-size:12px; } td small { display:block; margin-top:4px; color:var(--muted); } .empty-state { padding:38px 10px; color:var(--muted); text-align:center; } .row-actions { display:flex; gap:6px; white-space:nowrap; } .mini-button { padding:6px 8px; border:1px solid #d3dce6; border-radius:4px; color:#4d6279; background:#fff; font-size:11px; } .mini-button.danger { color:var(--red); } code { color:#506179; font-size:11px; }
.pager { display:flex; align-items:center; justify-content:flex-end; gap:8px; padding-top:17px; color:var(--muted); font-size:12px; } .pager button { min-width:30px; padding:5px 8px; border:1px solid #d3dce6; border-radius:4px; color:#4d6279; background:#fff; } .pager button:disabled { cursor:not-allowed; opacity:.45; } .pager select { width:auto; padding:5px 8px; }
.notice { display:flex; align-items:center; gap:8px; margin-top:18px; padding:11px 13px; border-radius:5px; font-size:12px; } .notice.warning { color:#805312; background:#fff3da; border:1px solid #f1d49e; } .notice.danger { color:#97303b; background:#fde9ea; border:1px solid #efb9be; } .result-box { max-height:300px; margin:10px 0 0; padding:15px; overflow:auto; border-radius:5px; color:#cfe7ef; background:#162437; font-size:12px; line-height:1.6; white-space:pre-wrap; }
.modal { position:fixed; inset:0; z-index:20; display:grid; place-items:center; padding:20px; background:rgba(15,28,45,.52); } .modal-card { width:min(610px,100%); max-height:calc(100vh - 40px); overflow:auto; padding:24px; border-radius:7px; background:#fff; box-shadow:0 24px 70px rgba(0,0,0,.25); } .modal-heading { display:flex; align-items:center; justify-content:space-between; margin-bottom:20px; } .modal-form { display:grid; gap:13px; } .form-actions { display:flex; justify-content:flex-end; gap:8px; margin-top:8px; } .code-output { max-height:300px; padding:14px; overflow:auto; color:#174e59; background:#e5f5f6; border:1px solid #bde1e4; border-radius:5px; font-family:ui-monospace,monospace; line-height:1.8; word-break:break-all; } .json-view { max-height:430px; overflow:auto; padding:15px; border-radius:5px; color:#e0eef4; background:#162437; font:12px/1.6 ui-monospace,monospace; white-space:pre-wrap; }
.toast { position:fixed; right:24px; bottom:24px; z-index:30; max-width:min(380px,calc(100vw - 48px)); padding:12px 15px; border-radius:5px; color:#fff; background:#1c3149; box-shadow:0 10px 30px rgba(0,0,0,.22); opacity:0; pointer-events:none; transform:translateY(20px); transition:.2s ease; } .toast.visible { opacity:1; transform:translateY(0); } .toast.error { background:var(--red); }
@media (max-width:980px) { .sidebar { width:210px; } .main-content { width:calc(100% - 210px); margin-left:210px; padding-inline:22px; } .metric-grid { grid-template-columns:repeat(2,1fr); } }
@media (max-width:720px) { .sidebar { width:242px; transform:translateX(-100%); transition:transform .2s ease; } .sidebar.open { transform:translateX(0); } .main-content { width:100%; margin-left:0; padding:0 15px 32px; } #mobile-menu { display:block; } .topbar { min-height:80px; } .topbar-actions .small,.topbar-actions .secondary { display:none; } .two-col { grid-template-columns:1fr; } .metric-grid { grid-template-columns:repeat(2,1fr); gap:10px; } .metric-card { padding:14px; } .metric-value { font-size:23px; } .toolbar { flex-direction:column; } .toolbar-actions { width:100%; flex-wrap:wrap; } .search-input { width:100%; } .toolbar-actions select { flex:1; } .login-card { padding:32px 25px; } }
/* 管理功能扩展 */
.attention-source-stats{display:block;margin-top:9px;line-height:1.7;white-space:pre-line;overflow-wrap:anywhere}.source-filtering{margin-top:12px;color:#24596a;line-height:1.7;font-weight:600}.source-policy-notice{margin-top:10px;padding:11px 13px;border:1px solid #e5d6a4;border-radius:5px;background:#fff9e9;color:#705824;line-height:1.7}
.spaced-panel{margin-bottom:18px}.filter-row{display:flex;gap:8px;align-items:end;flex-wrap:wrap;margin-bottom:16px}.filter-row>select{width:auto;min-width:115px}.filter-row input.search-input{min-width:200px;flex:1}.inline-label{font-size:11px;min-width:170px}.inline-label input{padding:9px}.batch-bar{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:16px;padding:11px;background:#eff7f8;border-radius:5px;color:#24596a}.batch-bar>span{margin-right:auto}.check-cell{width:32px}.check-cell input,.check-label input{width:16px;height:16px;box-shadow:none}.check-label{display:flex;align-items:center;gap:8px;font-weight:500}.attention-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:18px}.attention-card{padding:14px 17px;background:#fff;border:1px solid var(--line);border-radius:6px;color:var(--muted);font-size:12px}.attention-card strong{display:block;margin-top:7px;color:var(--ink);font-size:20px}.source-list{display:grid;gap:12px;margin-top:18px}.source-item{border:1px solid #e2e8ef;border-radius:6px;padding:13px}.source-item h4{margin:0 0 7px;font-size:13px;line-height:1.6}.source-meta{display:flex;gap:8px;flex-wrap:wrap;align-items:center;color:var(--muted);font-size:11px}.source-values{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:12px}.source-values small{display:block;color:var(--muted)}.source-values strong{display:block;margin-top:4px;font-size:12px}.source-link{color:var(--cyan);font-size:11px;text-decoration:none}.form-columns{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.settings-form{margin-top:0}.settings-form .form-actions{justify-content:flex-start}.topbar-actions #auto-refresh{width:112px;padding:8px;font-size:11px}.detail-section{margin:18px 0}.detail-section h4{margin:0 0 9px;font-size:13px}.detail-section dl{margin:0}.structured-details{display:grid;gap:0}.structured-details>div{padding:10px 0;border-bottom:1px solid #edf0f4}.structured-details dt{font-size:11px;color:var(--muted);margin-bottom:5px}.structured-details dd{margin:0;line-height:1.65;overflow-wrap:anywhere}.test-results{display:grid;gap:10px;margin-top:15px}.test-check{border:1px solid var(--line);border-radius:5px;padding:12px}.test-check-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:7px}.test-check p{line-height:1.6}.loading-state{padding:35px;text-align:center;color:var(--muted)}.table-wrap td{max-width:360px;overflow-wrap:anywhere}.nowrap{white-space:nowrap}.danger-text{color:var(--red)}.modal-summary{padding:12px;margin-bottom:15px;border:1px solid #dbe6ec;background:#f5f8fb;border-radius:5px;line-height:1.7}.row-select{cursor:pointer}.page-error-retry{margin-left:auto;flex-shrink:0}.main-content[aria-busy="true"] #refresh-button{opacity:.55}.pager{flex-wrap:wrap}.pager button{flex-shrink:0;white-space:nowrap}.topbar-actions select{flex:none}.empty-state button{display:block;margin:12px auto 0}
@media(max-width:1150px){.attention-grid{grid-template-columns:repeat(2,1fr)}.toolbar{flex-wrap:wrap}.topbar-actions #last-refresh{display:none}}
@media(max-width:720px){.topbar{gap:9px}.topbar-actions{gap:3px}.topbar-actions #auto-refresh{width:93px;font-size:10px}.topbar-actions .button{padding:8px}.topbar h2{font-size:18px}.attention-grid{gap:10px}.attention-card{padding:12px}.form-columns{grid-template-columns:1fr}.filter-row>input,.filter-row>.inline-label{width:100%;min-width:0}.filter-row>select{flex:1}.batch-bar{font-size:11px}.panel{padding:16px}.pager{gap:5px;font-size:11px}.pager button{padding:5px 7px}.pager select{max-width:94px;font-size:11px}.source-values{gap:5px}.modal-card{padding:19px}.topbar-actions .secondary{display:block}.test-check-head{align-items:flex-start}}.source-link-row{margin-top:10px}.form-stack label>small{font-weight:400;line-height:1.55}.structured-details{margin:0}.source-meta .badge{font-size:10px}.topbar-actions #refresh-button{white-space:nowrap}.settings-provider{display:grid;gap:11px;padding:15px;border:1px solid var(--line);border-radius:6px;background:#f6fafb}.settings-provider h4,.settings-subheading{margin:0;font-size:13px}.jin10-data-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:17px 0}.provider-card{min-width:0;padding:13px;border:1px solid var(--line);border-radius:6px;background:#f8fafc}.provider-card-head{display:flex;gap:7px;align-items:center;justify-content:space-between;flex-wrap:wrap}.provider-card-head strong{font-size:12px}.provider-card .structured-details>div{padding:8px 0}.provider-card .structured-details dt{font-size:10px}.provider-card .structured-details dd{font-size:11px}.provider-card .structured-details>div:last-child{border:0}.provider-notice{margin-top:13px}.source-summary{margin:9px 0;color:#536579;font-size:12px;line-height:1.7;white-space:pre-line}.source-original{margin-top:10px;font-size:11px;color:#67768a;line-height:1.65}.source-original strong{font-weight:600}.source-event-note{margin-top:9px}.provider-quota-note{font-size:11px;color:var(--muted);line-height:1.6}@media(max-width:1180px){.jin10-data-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:720px){.jin10-data-grid{grid-template-columns:1fr}.settings-provider{padding:12px}}
/* Compact operational evidence follows the existing console typography. */
.insight-alert-time { display:block; margin-top:6px; font-size:12px; opacity:.8; }
#operations-insights { margin-bottom:20px; }
#operations-insights-alerts .notice { display:block; margin-bottom:10px; line-height:1.6; overflow-wrap:anywhere; }
#operations-insights-alerts .notice strong { display:block; margin-bottom:3px; }
#terminal-receipts-table td, #content-audit-table td { vertical-align:top; }
#content-audit-table td:first-child, #content-audit-table td:nth-child(4) { min-width:190px; max-width:360px; overflow-wrap:anywhere; }
