:root { --bg:#f6f7f9; --card:#fff; --ink:#1b1f24; --muted:#6b7280; --line:#e5e7eb; --accent:#0f766e; --accent-soft:#e6f4f2;
  --bull:#15803d; --bear:#b91c1c; --warn:#b45309; --neutral:#4b5563; --commit:#1d4ed8; }
* { box-sizing: border-box; }
body { margin:0; background:var(--bg); color:var(--ink); font: 15px/1.6 -apple-system, "PingFang SC", "Helvetica Neue", "Noto Sans CJK SC", Arial, sans-serif; }
a { color: var(--accent); text-decoration: none; }
.wrap { max-width: 920px; margin: 0 auto; padding: 0 16px; }
header.top { background:#fff; border-bottom:1px solid var(--line); position: sticky; top:0; z-index: 5; }
header.top .wrap { display:flex; align-items:center; justify-content:space-between; height: 52px; }
.brand { font-weight: 700; font-size: 18px; color: var(--ink); display:flex; align-items:center; gap:8px; }
.brand .dot { width:10px; height:10px; border-radius:50%; background: var(--accent); display:inline-block; }
header nav a { margin-left: 16px; color: var(--muted); }
header nav a.lang { color: var(--accent); font-weight: 600; }
main { padding: 16px 0 40px; }
.filters { background:#fff; border:1px solid var(--line); border-radius: 10px; padding: 12px; margin: 8px 0 12px; }
.chips { display:flex; flex-wrap: wrap; gap: 8px; margin-bottom: 10px; }
.chip { display:inline-block; padding: 4px 12px; border-radius: 999px; border:1px solid var(--line); color: var(--muted); background:#fff; font-size: 14px; }
.chip.on { background: var(--accent); border-color: var(--accent); color:#fff; }
.chip { position: relative; }
.new-dot { position:absolute; top:-3px; right:-3px; width:9px; height:9px; border-radius:50%; background:#ef4444; box-shadow: 0 0 0 2px #fff; }
.filters .row { display:flex; flex-wrap: wrap; gap: 8px; align-items:center; }
.filters select, .filters input[type=search] { padding: 6px 8px; border:1px solid var(--line); border-radius: 6px; font-size: 14px; background:#fff; }
.filters .pick, .filters .search { display:flex; align-items:center; gap: 8px; min-width: 0; }
.filters .pick { flex: 0 1 auto; }
.filters .search { flex: 1 1 260px; }
.filters input[type=search] { flex: 1 1 auto; min-width: 0; }
.filters .pick select[name=person] { flex: 1 1 auto; min-width: 0; }
.filters .pick select[name=days] { flex: 0 0 auto; }
.filters button, .filters .reset { flex: 0 0 auto; white-space: nowrap; }
.filters select { max-width: 100%; min-width: 0; }
.summary, .quote .q { overflow-wrap: anywhere; }
.filters button { padding: 6px 14px; border:0; border-radius: 6px; background: var(--accent); color:#fff; font-size: 14px; cursor:pointer; }
.filters .reset { color: var(--muted); font-size: 14px; }
.count, .note { color: var(--muted); font-size: 14px; margin: 6px 0 12px; }
.card { background: var(--card); border:1px solid var(--line); border-radius: 10px; padding: 14px 16px; margin-bottom: 12px; }
.card-head { display:flex; justify-content: space-between; align-items: baseline; gap: 12px; flex-wrap: wrap; }
.card-head .who { color: var(--ink); }
.card-head .who strong { font-size: 16px; }
.card-head .org { color: var(--muted); font-size: 13px; margin-left: 8px; }
.card-head time { color: var(--muted); font-size: 13px; white-space: nowrap; }
.summary { margin: 8px 0 8px; font-weight: 600; }
.quote { margin: 0; padding: 8px 12px; border-left: 3px solid var(--accent); background: var(--accent-soft); border-radius: 0 6px 6px 0; }
.quote .q { white-space: pre-wrap; }
.quote details { margin-top: 6px; }
.quote summary { cursor: pointer; color: var(--muted); font-size: 13px; }
.quote .original { display:block; margin-top: 4px; color: #374151; font-size: 14px; }
.meta { display:flex; flex-wrap: wrap; gap: 6px 10px; align-items:center; margin-top: 10px; font-size: 13px; }
.tag { background:#eef2ff; color:#3730a3; padding: 1px 8px; border-radius: 999px; }
.stance { padding: 1px 8px; border-radius: 4px; color:#fff; background: var(--neutral); }
.stance-bullish { background: var(--bull); } .stance-bearish { background: var(--bear); } .stance-warning { background: var(--warn); } .stance-commitment { background: var(--commit); }
.fmt { color: var(--muted); }
.src { margin-left:auto; }
.group { background:#fff; border:1px solid var(--line); border-radius: 10px; margin-bottom: 12px; scroll-margin-top: 60px; }
.group-head { display:flex; align-items:center; gap: 10px; padding: 12px 16px 2px; background:#fff; border-radius: 10px 10px 0 0; }
.group.open .group-head { position: sticky; top: 52px; z-index: 3; padding-bottom: 10px; border-bottom: 1px solid var(--line); box-shadow: 0 2px 6px rgba(0,0,0,.04); }
.collapse-btn { display:none; flex: 0 0 auto; align-items:center; gap: 4px; border: 1px solid var(--line); background:#fff; color: var(--muted);
  border-radius: 999px; padding: 3px 10px 3px 12px; font-size: 13px; cursor: pointer; }
.collapse-btn:hover { color: var(--accent); border-color: var(--accent); }
.group.open .collapse-btn { display:inline-flex; }
.group-head .who { color: var(--ink); min-width: 0; display:flex; align-items: baseline; overflow: hidden; }
.group-head .who strong { white-space: nowrap; }
.group-head .who strong { font-size: 16px; }
.group-head .org { color: var(--muted); font-size: 13px; margin-left: 8px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.group-head .badge { color: var(--muted); font-size: 12px; background:#f3f4f6; border-radius: 999px; padding: 1px 8px; white-space: nowrap; }
.group .card { border:0; border-radius:0; margin:0; padding: 8px 16px 14px; background: transparent; }
.group .more .card { border-top: 1px dashed var(--line); padding-top: 12px; }
.card-head time { font-size: 12px; }
.card-head .src { font-size: 13px; }
.expander { display:block; width:100%; border:0; background:transparent; color: var(--muted); padding: 0 0 8px; cursor:pointer; line-height:0; }
.expander:hover { color: var(--accent); }
.expander svg { transition: transform .15s ease; }
.group.open .expander svg { transform: rotate(180deg); }
.group .card + .expander { margin-top: -4px; }
.more-link { display:block; padding: 4px 16px 14px; font-size: 14px; }
.empty { text-align:center; color: var(--muted); padding: 40px 0; }
.pager { display:flex; gap: 16px; justify-content:center; margin-top: 16px; }
.person h1 { margin: 8px 0 4px; }
.person .org { color: var(--muted); margin: 0; }
.person .ind { margin-left: 8px; font-size: 13px; background:#eef2ff; color:#3730a3; padding: 1px 8px; border-radius: 999px; }
.tiles { display:grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px; margin: 12px 0 20px; }
.tile { background:#fff; border:1px solid var(--line); border-radius: 10px; padding: 14px 16px; }
.tile-label { color: var(--muted); font-size: 13px; }
.tile-value { font-size: 28px; font-weight: 700; margin: 2px 0; }
.tile-sub { color: var(--muted); font-size: 13px; }
table.grid { width:100%; border-collapse: collapse; background:#fff; border:1px solid var(--line); border-radius: 10px; font-size: 13px; }
table.grid th, table.grid td { padding: 6px 8px; border-bottom: 1px solid var(--line); text-align:left; vertical-align: top; }
table.grid th { color: var(--muted); font-weight: 600; background:#fafafa; }
table.grid td.doc { max-width: 320px; overflow:hidden; text-overflow: ellipsis; white-space: nowrap; }
.ok { color: var(--bull); } .fail { color: var(--bear); word-break: break-word; }
.runform { display:flex; align-items:center; gap: 12px; margin: 8px 0 16px; }
.runform button { padding: 8px 16px; border:0; border-radius: 6px; background: var(--accent); color:#fff; cursor:pointer; }
.runform button[disabled] { background: var(--muted); }
.site-footer { margin-top: 32px; padding: 20px 0 28px; border-top: 1px solid var(--line); background:#fff; font-size: 13px; color: var(--muted); }
.site-footer p { margin: 4px 0; }
.footer-row { display:flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.footer-row a { color: var(--muted); }
.footer-row a:hover { color: var(--accent); }
.prose { max-width: 760px; line-height: 1.75; }
.prose h1 { margin: 18px 0 10px; }
.prose h2 { margin-top: 26px; font-size: 18px; }
.prose li { margin: 4px 0; }
.prose code { background:#f3f4f6; padding: 0 4px; border-radius: 4px; font-size: 13px; }
@media (max-width: 600px) { .filters .pick, .filters .search { flex: 1 1 100%; } .group-head { gap: 8px; } .group-head .who strong { font-size: 15px; } header nav a { margin-left: 10px; font-size: 14px; } .card-head .org { display:block; margin-left: 0; } .src { margin-left: 0; } }
.card-actions { display:inline-flex; align-items:center; gap: 12px; }
.share { border:0; background:transparent; color: var(--muted); font-size: 13px; padding: 0; cursor:pointer; }
.share:hover { color: var(--accent); }
.toast { position: fixed; left: 50%; bottom: 32px; transform: translate(-50%, 12px); background: rgba(17,24,39,.92); color:#fff; padding: 8px 16px;
  border-radius: 8px; font-size: 14px; opacity: 0; transition: opacity .2s, transform .2s; z-index: 50; pointer-events: none; }
.toast.show { opacity: 1; transform: translate(-50%, 0); }
.crumbs { font-size: 13px; color: var(--muted); margin: 10px 0 8px; display:flex; gap: 8px; }
.crumbs a { color: var(--muted); }
.group.single { box-shadow: 0 0 0 2px var(--accent-soft); }
.group.single .summary { font-size: 17px; }
.more-from { margin: 4px 0 18px; font-size: 14px; }
.others-title { font-size: 16px; margin: 20px 0 10px; color: var(--ink); }
