/* Research Funding Atlas — system fonts only (no external font/CDN dependency; works where Google is blocked). */
:root {
  --bg: #fbfbf9; --fg: #1d2125; --muted: #5b636b; --line: #dfe2e5; --card: #ffffff; --accent: #1f5f8b; --accent-fg: #fff;
  --open: #1d7a46; --open-bg: #e6f4ec; --soon: #6a4fb0; --soon-bg: #efeafb; --warn: #8a5300; --warn-bg: #fdf1dc;
  --closed: #6b6f73; --closed-bg: #eceeef; --bad: #a3242c; --bad-bg: #fbe9ea; --focus: #f0b400;
  --radius: 6px; --gap: 16px;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --bg: #15181b; --fg: #e6e8ea; --muted: #a3abb3; --line: #2e343a; --card: #1c2024; --accent: #7cb6e0; --accent-fg: #0d1114;
    --open: #6fd39a; --open-bg: #183325; --soon: #b8a6f0; --soon-bg: #2a2440; --warn: #f2bf6c; --warn-bg: #3a2c14;
    --closed: #a8adb2; --closed-bg: #2a2e32; --bad: #f19aa0; --bad-bg: #3d1d20;
  }
}
* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; background: var(--bg); color: var(--fg); font: 15px/1.5 system-ui, -apple-system, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", sans-serif; }
a { color: var(--accent); }
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, summary:focus-visible { outline: 3px solid var(--focus); outline-offset: 2px; }
.wrap { max-width: 1180px; margin: 0 auto; padding: 0 16px; }
.skip { position: absolute; left: -999px; } .skip:focus { left: 8px; top: 8px; background: var(--card); padding: 8px; z-index: 10; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
header.site { border-bottom: 1px solid var(--line); background: var(--card); }
header .bar { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 52px; flex-wrap: wrap; }
.brand { font-weight: 700; color: var(--fg); text-decoration: none; letter-spacing: .2px; }
header nav { display: flex; gap: 14px; flex-wrap: wrap; font-size: 14px; }
header nav a { color: var(--fg); text-decoration: none; padding: 4px 0; }
header nav a[aria-current="page"] { border-bottom: 2px solid var(--accent); }
header nav .lang { border: 1px solid var(--line); padding: 2px 8px; border-radius: var(--radius); }
.count:not(:empty) { background: var(--accent); color: var(--accent-fg); border-radius: 9px; padding: 0 6px; font-size: 12px; }
main { padding: 18px 16px 40px; }
footer.site { border-top: 1px solid var(--line); color: var(--muted); font-size: 13px; padding: 14px 0 24px; }
h1 { font-size: 24px; line-height: 1.25; margin: 6px 0 10px; } h2 { font-size: 17px; margin: 18px 0 8px; } h3 { font-size: 15px; margin: 12px 0 6px; }
.lede { color: var(--muted); margin: 0 0 12px; }
.small { font-size: 13px; } .muted { color: var(--muted); } .big { font-size: 20px; font-weight: 600; margin: 4px 0; }
input, select, textarea, button { font: inherit; color: inherit; }
input, select, textarea { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: 6px 8px; max-width: 100%; }
button, .btn { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: 6px 12px; cursor: pointer; text-decoration: none; color: var(--fg); display: inline-block; }
button[type="submit"], .searchrow button { background: var(--accent); color: var(--accent-fg); border-color: var(--accent); }
.search { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: 12px; }
.searchrow { display: flex; gap: 8px; } .searchrow input { flex: 1; font-size: 16px; padding: 9px 10px; }
fieldset { border: 0; padding: 0; margin: 10px 0 0; } legend { font-size: 13px; color: var(--muted); margin-bottom: 4px; }
.pill { display: inline-flex; align-items: center; gap: 4px; border: 1px solid var(--line); border-radius: 999px; padding: 2px 10px; margin: 0 4px 6px 0; font-size: 13px; cursor: pointer; background: var(--bg); }
.pill:has(input:checked) { border-color: var(--accent); background: color-mix(in srgb, var(--accent) 12%, var(--card)); }
.row3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin-top: 10px; }
.row3 label, .stack label { display: flex; flex-direction: column; gap: 3px; font-size: 13px; color: var(--muted); }
.row3 select, .stack select, .stack input, .stack textarea { color: var(--fg); }
details.more { margin-top: 8px; } details.more summary { cursor: pointer; color: var(--accent); font-size: 14px; }
fieldset.amount { display: flex; gap: 10px; flex-wrap: wrap; align-items: end; } fieldset.amount label { font-size: 13px; }
fieldset.amount input { width: 120px; }
.toolbar { display: flex; gap: 14px; align-items: center; flex-wrap: wrap; margin-top: 10px; font-size: 13px; }
.count-line { margin: 0; font-size: 14px; }
.viewtoggle button, .tztoggle button { padding: 3px 8px; font-size: 13px; }
.viewtoggle button[aria-pressed="true"], .tztoggle button[aria-pressed="true"] { border-color: var(--accent); color: var(--accent); font-weight: 600; }
.layout { display: grid; grid-template-columns: minmax(0, 1fr) 280px; gap: var(--gap); margin-top: 14px; }
.results { list-style: none; padding: 0; margin: 0; border-top: 1px solid var(--line); }
.item { display: grid; grid-template-columns: minmax(0, 1fr) 260px; gap: 14px; padding: 12px 0; border-bottom: 1px solid var(--line); }
.item-title { font-size: 16px; margin: 0 0 3px; } .item-title a { text-decoration: none; } .item-title a:hover { text-decoration: underline; }
.orig { display: block; font-weight: 400; font-size: 13px; color: var(--muted); }
.meta { margin: 0 0 4px; font-size: 13px; display: flex; flex-wrap: wrap; gap: 4px 10px; align-items: center; }
.funder { font-weight: 600; }
.tag { border: 1px solid var(--line); border-radius: 4px; padding: 0 6px; font-size: 12px; color: var(--muted); }
.tag-noncash { border-style: dashed; }
.amount { font-weight: 600; } .pool { color: var(--muted); font-size: 12px; }
.summary { margin: 2px 0 4px; color: var(--fg); font-size: 14px; }
.elig { margin: 0; color: var(--muted); display: flex; flex-wrap: wrap; gap: 2px 12px; }
.item-side p { margin: 4px 0; }
.chip { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; font-weight: 600; border-radius: 4px; padding: 1px 7px; border: 1px solid transparent; }
.chip .dot { width: 8px; height: 8px; border-radius: 50%; background: currentColor; display: inline-block; }
.st-open { color: var(--open); background: var(--open-bg); } .st-rolling { color: var(--open); background: var(--open-bg); border-style: dashed; border-color: var(--open); }
.st-soon { color: var(--soon); background: var(--soon-bg); } .st-invite { color: var(--warn); background: var(--warn-bg); }
.st-paused { color: var(--bad); background: var(--bad-bg); } .st-closed, .st-passed { color: var(--closed); background: var(--closed-bg); }
.st-unknown { color: var(--muted); background: var(--closed-bg); border-color: var(--line); }
.dq-needs_review, .dq-stale, .dq-conflicting { color: var(--warn); background: var(--warn-bg); }
.dl { margin: 6px 0; font-size: 14px; } .dl-kind { display: block; font-size: 12px; color: var(--muted); }
.dl-when { font-weight: 600; } .dl-tbc { display: block; font-size: 12px; color: var(--warn); }
.dl-count { display: block; font-size: 13px; color: var(--accent); }
.note { font-size: 12px; margin: 4px 0; } .note.warn { color: var(--warn); }
.btn-save { font-size: 13px; padding: 3px 10px; } .btn-save[aria-pressed="true"] { border-color: var(--accent); color: var(--accent); }
.pager { display: flex; gap: 16px; justify-content: center; padding: 14px 0; }
.export { margin-top: 8px; }
.side-col .box { margin-bottom: 12px; }
.box { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: 12px; margin: 12px 0; }
.box h2 { margin-top: 0; font-size: 15px; } .box.ok { border-color: var(--open); } .box.warn { border-color: var(--warn); background: var(--warn-bg); }
.stack { display: flex; flex-direction: column; gap: 10px; } .narrow { max-width: 560px; } .narrowtext { max-width: 760px; }
.btns { display: flex; gap: 8px; flex-wrap: wrap; }
.sponsored { list-style: none; border: 1px dashed var(--line); border-radius: var(--radius); padding: 10px; margin: 10px 0; min-height: 64px; font-size: 14px; }
.sp-label { display: inline-block; font-size: 11px; text-transform: uppercase; letter-spacing: .6px; color: var(--muted); border: 1px solid var(--line); border-radius: 3px; padding: 0 5px; margin-right: 8px; }
.empty { padding: 24px; background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); }
/* card view */
.results.cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 12px; border: 0; }
.results.cards .item { grid-template-columns: 1fr; border: 1px solid var(--line); border-radius: var(--radius); padding: 12px; background: var(--card); }
/* detail */
.detail header h1 { margin-bottom: 4px; }
.crumbs { margin: 0; }
.facts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin: 12px 0; }
.fact { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); padding: 12px; }
.fact h2 { margin-top: 0; font-size: 13px; text-transform: uppercase; letter-spacing: .5px; color: var(--muted); }
table.stages { width: 100%; border-collapse: collapse; font-size: 14px; background: var(--card); }
table.stages th, table.stages td { text-align: left; vertical-align: top; padding: 7px 8px; border-bottom: 1px solid var(--line); }
table.stages th { font-size: 12px; color: var(--muted); font-weight: 600; }
tr.nonrequired td { color: var(--muted); }
.tablewrap { overflow-x: auto; }
dl.grid2 { display: grid; grid-template-columns: 220px minmax(0, 1fr); gap: 4px 14px; margin: 8px 0; }
dl.grid2 dt { color: var(--muted); } dl.grid2 dd { margin: 0; }
.evidence li { margin-bottom: 8px; } blockquote { margin: 4px 0 0; padding: 4px 10px; border-left: 3px solid var(--line); color: var(--muted); }
.match-list { list-style: none; padding: 0; margin: 6px 0; } .match-list li { margin: 3px 0; }
.m-met::before { content: "✔ "; color: var(--open); } .m-unmet::before { content: "✖ "; color: var(--bad); } .m-unknown::before { content: "? "; color: var(--warn); font-weight: 700; }
.verdict { font-weight: 600; } .verdict.bad { color: var(--bad); } .verdict.mid { color: var(--warn); } .verdict.ok { color: var(--open); }
.match { font-size: 12px; }
.hp { position: absolute; left: -5000px; }
.adminnav { display: flex; gap: 12px; flex-wrap: wrap; padding: 8px 0 12px; border-bottom: 1px solid var(--line); margin-bottom: 10px; font-size: 14px; }
form.inline { display: inline-flex; gap: 6px; align-items: center; flex-wrap: wrap; }
pre { white-space: pre-wrap; word-break: break-word; background: var(--card); border: 1px solid var(--line); padding: 8px; border-radius: var(--radius); max-height: 360px; overflow: auto; }
code { font-size: 13px; }
@media (max-width: 900px) {
  .layout { grid-template-columns: 1fr; } .side-col { order: -1; }
  .side-col #profile-box:not([open]) { }
  .facts { grid-template-columns: 1fr; }
}
@media (max-width: 640px) {
  body { font-size: 15px; } h1 { font-size: 21px; }
  .row3 { grid-template-columns: 1fr; }
  .item { grid-template-columns: 1fr; gap: 4px; }
  dl.grid2 { grid-template-columns: 1fr; } dl.grid2 dt { margin-top: 6px; }
  header nav { gap: 10px; font-size: 13px; }
  .searchrow input { font-size: 16px; }
}
@media (prefers-reduced-motion: reduce) { * { transition: none !important; } }
.note.asof { color: var(--muted); } .asof-banner { margin: 10px 0; }
.portal-list { padding-left: 18px; margin: 6px 0; } .portal-list li { margin: 4px 0; }
