:root{color-scheme:light;--bg:#f3f6f7;--surface:#fff;--surface-2:#f7fafb;--ink:#172b41;--muted:#5d6e80;--line:#e1e8ed;--field:#cbd7de;
--accent:#087f83;--accent-strong:#066a6d;--accent-soft:#e3f3f1;--accent-ink:#13665d;--on-accent:#fff;
--side-bg:#122d40;--side-ink:#d7e2ea;--side-muted:#92aebf;--side-hover:#1d3d50;--side-active:#25506a;
--warn-bg:#fff6e3;--warn-line:#ecd7a6;--warn-ink:#7d5c12;--ok-bg:#e7f4ee;--ok-line:#b5d7c9;--ok-ink:#215f45;
--danger-bg:#fdecec;--danger-ink:#a23434;--potential-bg:#fff4d8;--potential-ink:#835f0d;--neutral-bg:#edf1f5;--neutral-ink:#55667a;
--awarded-bg:#e8edfb;--awarded-ink:#3a4f99;--shadow:0 1px 2px rgba(18,45,64,.05)}
@media (prefers-color-scheme:dark){:root{color-scheme:dark;--bg:#0f1a22;--surface:#16242e;--surface-2:#1b2c37;--ink:#e2eaf0;--muted:#9aacbb;--line:#26394a;--field:#35495a;
--accent:#3bb3ad;--accent-strong:#5cc7c1;--accent-soft:#173b3d;--accent-ink:#8fdcd5;--on-accent:#06201f;
--side-bg:#0b151c;--side-ink:#cbd8e1;--side-muted:#7f97a8;--side-hover:#16262f;--side-active:#1f3846;
--warn-bg:#33290f;--warn-line:#5a4716;--warn-ink:#f1d48c;--ok-bg:#12302a;--ok-line:#22594a;--ok-ink:#9fdcc2;
--danger-bg:#3a1a1c;--danger-ink:#f2a5a5;--potential-bg:#352b10;--potential-ink:#efcf7e;--neutral-bg:#223340;--neutral-ink:#a9bac7;
--awarded-bg:#1e2a4d;--awarded-ink:#aebcf2;--shadow:none}}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.65 system-ui,-apple-system,'PingFang SC','Noto Sans CJK SC','Microsoft YaHei',sans-serif}
a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.skip{position:absolute;left:-999px}.skip:focus{left:12px;top:12px;z-index:9;background:var(--surface);padding:8px 12px;border-radius:6px}
.shell{display:grid;grid-template-columns:228px minmax(0,1fr);min-height:100vh}
.sidebar{background:var(--side-bg);color:var(--side-ink);padding:30px 18px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column}
.brand{font-size:21px;font-weight:750;color:#fff;letter-spacing:-.4px;padding:0 10px}.brand:hover{text-decoration:none}.brand small{display:block;color:var(--side-muted);font-size:12px;font-weight:400;margin-top:4px;letter-spacing:0}
nav{margin-top:30px;display:grid;gap:4px}nav a{color:var(--side-ink);padding:9px 12px;border-radius:8px;display:flex;align-items:center;gap:10px}nav a:hover{background:var(--side-hover);text-decoration:none}
nav a[aria-current=page]{background:var(--side-active);color:#fff;font-weight:600;box-shadow:inset 3px 0 0 var(--accent)}nav .icon{width:18px;text-align:center;opacity:.8}
.sidebar footer{font-size:12px;color:var(--side-muted);margin-top:auto;padding:0 10px;line-height:1.7}.sidebar footer button{margin-top:14px;background:transparent;border:1px solid var(--side-hover);color:var(--side-ink);padding:6px 12px;font-weight:500}
.sidebar footer button:hover{background:var(--side-hover)}
.main{padding:34px 40px 60px;max-width:1440px;width:100%}
.eyebrow{font-size:12px;color:var(--accent);font-weight:700;letter-spacing:1.6px;text-transform:uppercase}
.top{display:flex;gap:16px;align-items:flex-end;justify-content:space-between;margin-bottom:24px}.top .actions{display:flex;gap:8px;flex-shrink:0}
h1{font-size:28px;line-height:1.3;margin:6px 0 6px;letter-spacing:-.5px;overflow-wrap:anywhere}h1.long{font-size:20px;letter-spacing:0;line-height:1.5}
h2{font-size:17px;margin:0 0 14px}h3{font-size:15.5px;margin:0 0 6px;overflow-wrap:anywhere}.muted{color:var(--muted)}small{font-size:12.5px}
.panel,.card,.stat{background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow)}.panel{padding:22px 24px;margin-bottom:18px}
.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:14px}
.stat{padding:16px 20px;color:var(--ink);display:block}.stat span{color:var(--muted);font-size:13px}.stat strong{display:block;font-size:28px;line-height:1.2;margin-top:6px;font-variant-numeric:tabular-nums}
a.stat:hover{text-decoration:none;border-color:var(--accent)}.stat.alerting{background:var(--danger-bg);border-color:transparent}.stat.alerting strong{color:var(--danger-ink)}
.stat.attention{background:var(--warn-bg);border-color:transparent}.stat.attention strong{color:var(--warn-ink)}
.quick{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 18px;align-items:center}.quick>span{color:var(--muted);font-size:13px;margin-right:2px}
.chip{display:inline-flex;align-items:center;gap:6px;font-size:13px;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:999px;padding:4px 12px}
.chip:hover{text-decoration:none;border-color:var(--accent)}.chip.on{background:var(--accent-soft);border-color:transparent;color:var(--accent-ink);font-weight:600}.chip .x{color:var(--muted);font-weight:400}
form.filters .row{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px}.filters label{font-size:12px;color:var(--muted);display:grid;gap:4px}.filters .search{flex:1;min-width:240px}
.filters details{margin-top:14px;border-top:1px dashed var(--line);padding-top:12px}.filters details .row{margin-top:12px}
.active-filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:14px;font-size:13px}
input,select,textarea{font:inherit;font-size:14px;border:1px solid var(--field);border-radius:7px;padding:8px 10px;background:var(--surface);color:var(--ink);max-width:100%}
input:focus,select:focus,textarea:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px var(--accent-soft)}textarea{width:100%;min-height:140px;resize:vertical}
button,.button{border:1px solid transparent;border-radius:7px;padding:8px 16px;background:var(--accent);color:var(--on-accent);font:600 14px/1.5 inherit;font-family:inherit;cursor:pointer;display:inline-block;white-space:nowrap}
button:hover,.button:hover{background:var(--accent-strong);text-decoration:none}.button.secondary,button.secondary{background:var(--surface);color:var(--ink);border-color:var(--field)}
.button.secondary:hover,button.secondary:hover{border-color:var(--accent);background:var(--surface)}.link-button{font-size:13px;padding:8px 4px}
.result-bar{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin:22px 2px 10px;color:var(--muted);font-size:13px}.result-bar strong{color:var(--ink)}
.cards{display:grid;gap:12px}.card{padding:18px 22px;border-left:4px solid var(--line)}.card.explicit{border-left-color:var(--accent)}
.card-head{display:flex;flex-wrap:wrap;gap:6px 8px;align-items:center;font-size:12.5px}.card-head .sources{margin-left:auto;color:var(--muted)}
.card h2{font-size:16.5px;line-height:1.5;margin:9px 0 4px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}.card h2 a{color:var(--ink)}
.card .entity{margin:0;color:var(--muted);font-size:13.5px}.card .summary{margin:8px 0 0}
.card-foot{display:flex;flex-wrap:wrap;gap:6px 18px;color:var(--muted);font-size:13px;margin-top:12px;padding-top:11px;border-top:1px solid var(--line)}
.badge{display:inline-block;font-size:12px;line-height:1.6;border-radius:5px;padding:1px 8px;background:var(--neutral-bg);color:var(--neutral-ink);white-space:nowrap}
.stage-open{background:var(--ok-bg);color:var(--ok-ink)}.stage-awarded{background:var(--awarded-bg);color:var(--awarded-ink)}.stage-closed{background:var(--neutral-bg);color:var(--muted)}
.badge.followed{background:var(--accent-soft);color:var(--accent-ink)}.badge.star{background:var(--potential-bg);color:var(--potential-ink)}.badge.changed{background:var(--danger-bg);color:var(--danger-ink)}
.badge.success{background:var(--ok-bg);color:var(--ok-ink)}.badge.failed{background:var(--danger-bg);color:var(--danger-ink)}.badge.running{background:var(--warn-bg);color:var(--warn-ink)}
.deadline{color:var(--ink)}.deadline.urgent{color:var(--danger-ink);font-weight:600}.deadline.closed{color:var(--muted)}
.tags{display:flex;gap:6px;flex-wrap:wrap;margin:12px 0 0}.tag{font-size:12px;background:var(--accent-soft);color:var(--accent-ink);border-radius:5px;padding:2px 8px}
.tag.potential{background:var(--potential-bg);color:var(--potential-ink)}.tag.neutral{background:var(--neutral-bg);color:var(--neutral-ink)}
.split{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:20px;align-items:start}.split .panel{overflow-wrap:anywhere}.split aside{position:sticky;top:20px}
dl{display:grid;grid-template-columns:110px minmax(0,1fr);gap:8px 14px;margin:14px 0 0}dt{color:var(--muted)}dd{margin:0;overflow-wrap:anywhere}
.facts{margin-top:16px;padding-top:4px;border-top:1px solid var(--line)}
.evidence{border-left:3px solid var(--accent);margin:10px 0;padding:8px 14px;background:var(--surface-2);border-radius:0 6px 6px 0;white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px}
.evidence.potential{border-left-color:var(--potential-ink)}.evidence small{color:var(--muted)}
.notice{border-top:1px solid var(--line);padding:18px 0}.notice:first-of-type{border:0;padding-top:4px}.notice .meta{display:flex;flex-wrap:wrap;gap:4px 16px;color:var(--muted);font-size:13px}
.body-text{white-space:pre-wrap;overflow-wrap:anywhere;margin:10px 0}.more{margin:6px 0 10px}.more summary,details summary{cursor:pointer;color:var(--accent);font-size:13.5px}
.lots{margin:10px 0;display:grid;gap:6px}.lot{background:var(--surface-2);border:1px solid var(--line);border-radius:7px;padding:8px 12px;font-size:14px}.lot b{color:var(--muted);font-weight:600;margin-right:6px}
.alert{background:var(--warn-bg);border:1px solid var(--warn-line);padding:12px 16px;border-radius:8px;margin:12px 0;color:var(--warn-ink)}
.alert form{margin-top:8px}.ok{background:var(--ok-bg);border-color:var(--ok-line);color:var(--ok-ink)}
.pager{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:22px 0}.pager .muted{font-size:13px}.pager .disabled{visibility:hidden}
.empty{text-align:center;padding:48px 20px;color:var(--muted);background:var(--surface);border:1px dashed var(--field);border-radius:12px}
.table-wrap{overflow-x:auto;margin:0 -4px}table{width:100%;border-collapse:collapse;font-size:13.5px}td,th{text-align:left;border-bottom:1px solid var(--line);padding:9px 10px;vertical-align:top}
th{color:var(--muted);font-weight:600;white-space:nowrap}td.num{font-variant-numeric:tabular-nums;text-align:right}th.num{text-align:right}tbody tr:last-child td{border-bottom:0}
.history details{border-top:1px solid var(--line);padding:10px 0}.history details:first-child{border:0}.history summary{color:var(--ink)}
.login-wrap{min-height:100vh;display:grid;place-items:center;padding:20px}.login{width:100%;max-width:420px;padding:34px;background:var(--surface);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow)}
.login label{font-size:13px;color:var(--muted)}.login input{width:100%;margin:6px 0 18px;padding:10px 12px}.login button{width:100%;padding:10px}
.check{display:flex;gap:8px;align-items:center;cursor:pointer}.check input{width:auto}.field{display:grid;gap:5px;font-size:13px;color:var(--muted);margin-top:14px}.field select{color:var(--ink)}
.spacer{height:16px}
/* 显示方式切换、行内跟进 */
.segmented{border:0;padding:0;margin:14px 0 0;display:inline-flex;border:1px solid var(--field);border-radius:8px;overflow:hidden}.segmented legend{position:absolute;left:-999px}
.segmented label{cursor:pointer}.segmented input{position:absolute;opacity:0;pointer-events:none}.segmented span{display:block;padding:5px 14px;font-size:13px;color:var(--muted)}
.segmented input:checked+span{background:var(--accent-soft);color:var(--accent-ink);font-weight:600}.segmented input:focus-visible+span{outline:2px solid var(--accent);outline-offset:-2px}
.quickfollow{display:inline-flex;align-items:center;gap:6px;margin-left:auto}.quickfollow select{font-size:13px;padding:3px 6px}.quickfollow .status-select.followed{border-color:var(--accent);color:var(--accent-ink)}
.star{position:relative;background:transparent;color:var(--muted);border:1px solid transparent;font-size:17px;line-height:1;padding:4px 6px}.star:hover{background:var(--surface-2);border-color:var(--field)}
.star.on{color:#d39b14}.saved{font-size:12px;color:var(--ok-ink);animation:fade 2.5s forwards}@keyframes fade{0%,60%{opacity:1}100%{opacity:0}}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.js .no-js-only{display:none}
.card-foot{align-items:center}
/* 表格视图 */
.panel.flush{padding:4px 8px}.list-table td{vertical-align:middle}.list-table .title-cell a{color:var(--ink);font-weight:600;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.list-table .title-cell small{display:block;margin-top:2px}.list-table td small.deadline{display:block}.list-table .tag{margin:2px 4px 2px 0;display:inline-block;white-space:nowrap}.nowrap{white-space:nowrap}
.list-table tr.explicit td:first-child{box-shadow:inset 3px 0 0 var(--accent)}.list-table .quickfollow{margin:0}
/* 键盘选中、加载状态 */
.item.selected{outline:2px solid var(--accent);outline-offset:2px}.list-table tr.item.selected{outline-offset:-2px}
.results{transition:opacity .15s}.results.htmx-request{opacity:.5;pointer-events:none}
mark{background:var(--potential-bg);color:inherit;border-radius:3px;padding:0 2px;box-shadow:0 0 0 1px var(--warn-line)}
/* 时间线 */
.timeline{list-style:none;margin:0;padding:0 0 0 18px;border-left:2px solid var(--line)}.timeline li{position:relative;padding:0 0 16px 14px}
.timeline li::before{content:"";position:absolute;left:-25px;top:6px;width:10px;height:10px;border-radius:50%;background:var(--surface);border:2px solid var(--accent)}
.timeline li.first::before{background:var(--accent)}.timeline .when{font-size:13px;color:var(--muted)}.timeline .what{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:4px;font-size:13px}
/* 提示、快捷键 */
.toast{position:fixed;right:20px;bottom:20px;z-index:20;background:var(--ink);color:var(--surface);padding:10px 16px;border-radius:8px;box-shadow:0 6px 24px rgba(0,0,0,.2);max-width:calc(100vw - 40px)}
dialog{border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--ink);padding:22px 26px;max-width:min(520px,calc(100vw - 32px))}dialog::backdrop{background:rgba(10,20,30,.45)}
.keys{grid-template-columns:auto 1fr;margin-bottom:16px}kbd{font:12px/1.4 ui-monospace,monospace;border:1px solid var(--field);border-bottom-width:2px;border-radius:4px;padding:0 5px;background:var(--surface-2)}
.sidebar .keys-open{background:transparent;border:0;color:var(--side-muted);padding:6px 0 0;font-weight:400;font-size:12px}.sidebar .keys-open:hover{color:var(--side-ink);background:transparent}.sidebar kbd{background:transparent;color:inherit;border-color:var(--side-hover)}
.loading{display:none}
@media(max-width:1100px){.split{grid-template-columns:1fr}.split aside{position:static}}
@media(max-width:900px){.shell{grid-template-columns:184px minmax(0,1fr)}.main{padding:26px 24px 50px}.sidebar{padding:24px 12px}}
@media(max-width:680px){.shell{display:block}.sidebar{position:static;height:auto;padding:14px 16px 10px}.brand small,.sidebar footer{display:none}
nav{margin-top:10px;display:flex;gap:4px;overflow-x:auto;padding-bottom:4px}nav a{padding:6px 10px;font-size:13px;white-space:nowrap}nav .icon{display:none}nav a[aria-current=page]{box-shadow:none}
.main{padding:20px 16px 40px}.top{flex-direction:column;align-items:stretch}.top .actions{justify-content:flex-start}h1{font-size:23px}h1.long{font-size:17px}
.stats{gap:8px;grid-template-columns:1fr 1fr}.stats .stat:first-child{grid-column:1/-1}.card-foot .quickfollow{margin-left:0;width:100%}.list-table .col-tags{display:none}.sidebar .keys-open{display:none}.stat{padding:12px 14px}.stat strong{font-size:22px}.panel{padding:16px}.card{padding:15px 16px}.card-head .sources{margin-left:0;width:100%}
dl{grid-template-columns:98px minmax(0,1fr)}.result-bar .hint{display:none}.filters label{flex:1 1 140px}.filters .search{flex-basis:100%;min-width:0}.filters .row button{flex:1}}
