:root {
  --bg: #0e1116;
  --panel: #161b22;
  --panel-2: #1c232d;
  --line: #2a323d;
  --text: #e6edf3;
  --muted: #8b98a5;
  --accent: #4c8dff;
  --pos: #3fb950;
  --neg: #f85149;
  --warn: #d29922;
  --radius: 12px;
}

* { box-sizing: border-box; }
body {
  margin: 0;
  background: var(--bg);
  color: var(--text);
  font: 16.5px/1.6 -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
}
a { color: var(--accent); text-decoration: none; }
a:hover { text-decoration: underline; }
.muted { color: var(--muted); }
.small { font-size: 13.5px; }
.pos { color: var(--pos); }
.neg { color: var(--neg); }

.topbar {
  display: flex; align-items: center; justify-content: space-between;
  padding: 14px 20px; border-bottom: 1px solid var(--line);
  background: var(--panel); position: sticky; top: 0; z-index: 5;
}
.topbar .brand { font-weight: 700; letter-spacing: .3px; }
.topbar nav { display: flex; gap: 18px; flex-wrap: wrap; }
.topbar nav a.active { color: var(--text); font-weight: 600; }

.wrap { max-width: 1280px; margin: 0 auto; padding: 24px 16px 64px; }

h1 { font-size: 22px; margin: 8px 0 4px; }

.tiles {
  display: grid; grid-template-columns: repeat(4, 1fr);
  gap: 14px; margin: 18px 0 22px;
}
.tile {
  background: var(--panel); border: 1px solid var(--line);
  border-radius: var(--radius); padding: 16px;
}
.tile-label { color: var(--muted); font-size: 13px; }
.tile-value { font-size: 26px; font-weight: 700; margin-top: 6px; font-variant-numeric: tabular-nums; }
.tile-sub { color: var(--muted); font-size: 13px; margin-top: 4px; }

.card {
  background: var(--panel); border: 1px solid var(--line);
  border-radius: var(--radius); padding: 6px; margin: 14px 0; overflow-x: auto;
}

table.grid { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; }
table.grid th, table.grid td { padding: 11px 12px; text-align: left; white-space: nowrap; }
table.grid thead th { color: var(--muted); font-weight: 600; font-size: 13px; border-bottom: 1px solid var(--line); }
table.grid tbody tr { border-bottom: 1px solid var(--panel-2); }
table.grid tbody tr:last-child { border-bottom: none; }
.num { text-align: right !important; }
.asset { font-weight: 600; }
.note { color: var(--muted); white-space: normal; max-width: 240px; }

.pill { padding: 2px 9px; border-radius: 999px; font-size: 12px; text-transform: capitalize; }
.pill.buy { background: rgba(63,185,80,.15); color: var(--pos); }
.pill.sell { background: rgba(248,81,73,.15); color: var(--neg); }

form.entry {
  display: flex; flex-wrap: wrap; gap: 12px; padding: 12px;
}
form.entry .field { display: flex; flex-direction: column; gap: 5px; }
form.entry .field.grow { flex: 1 1 160px; }
form.entry label { font-size: 12px; color: var(--muted); }
input, select, button {
  font: inherit; color: var(--text);
  background: var(--panel-2); border: 1px solid var(--line);
  border-radius: 8px; padding: 9px 11px;
}
input::placeholder { color: #5b6672; }
input[type=text], input[type=password], input[type=date], select { min-width: 110px; }
button {
  background: var(--accent); border-color: var(--accent); color: #fff;
  font-weight: 600; cursor: pointer;
}
button:hover { filter: brightness(1.08); }
.link-danger {
  background: none; border: none; color: var(--neg); padding: 0; cursor: pointer; font-size: 13px;
}
.link-danger:hover { text-decoration: underline; }

.banner { padding: 11px 14px; border-radius: 8px; margin: 12px 0; font-size: 14px; }
.banner.error { background: rgba(248,81,73,.12); border: 1px solid rgba(248,81,73,.4); }
.banner.warn { background: rgba(210,153,34,.12); border: 1px solid rgba(210,153,34,.4); }

.login-card {
  max-width: 360px; margin: 12vh auto 0; background: var(--panel);
  border: 1px solid var(--line); border-radius: var(--radius); padding: 28px;
}
.login-card form { display: flex; flex-direction: column; gap: 12px; margin-top: 16px; }
.empty { text-align: center; padding: 8vh 12px; }

@media (max-width: 820px) {
  .tiles { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 480px) {
  .tiles { grid-template-columns: 1fr; }
}

/* ---------------------------------------------------------------- research feed */
.feed-head {
  display: flex; align-items: baseline; justify-content: space-between;
  gap: 12px; flex-wrap: wrap;
}
.freshness { font-size: 13px; color: var(--muted); }
.freshness.ok { color: var(--pos); }
.freshness.warn { color: var(--warn); }
.freshness.stale { color: var(--neg); }

.section-label {
  color: var(--muted); font-size: 12px; text-transform: uppercase;
  letter-spacing: .6px; padding: 10px 12px 4px;
}
.pill.trim { background: rgba(210,153,34,.15); color: var(--warn); }
.pill.add  { background: rgba(63,185,80,.15); color: var(--pos); }

.impact-body { padding: 4px 12px 14px; white-space: pre-wrap; }

.filters { display: flex; gap: 8px; flex-wrap: wrap; margin: 18px 0 6px; }
.chip {
  padding: 5px 12px; border-radius: 999px; font-size: 13px;
  background: var(--panel); border: 1px solid var(--line); color: var(--muted);
}
.chip:hover { text-decoration: none; border-color: var(--accent); }
.chip.on { color: var(--text); border-color: var(--accent); background: var(--panel-2); }

.feed { display: flex; flex-direction: column; gap: 14px; margin-top: 14px; }
.feed-item {
  background: var(--panel); border: 1px solid var(--line);
  border-radius: var(--radius); padding: 16px 18px;
}
.feed-meta { display: flex; gap: 10px; align-items: baseline; flex-wrap: wrap; }
.feed-meta .src { font-size: 13px; font-weight: 600; color: var(--accent); }
.feed-item h2 { font-size: 18px; margin: 6px 0 8px; line-height: 1.35; }
.feed-item h2 a { color: var(--text); }
.feed-summary { margin: 0 0 12px; white-space: pre-wrap; line-height: 1.6; font-size: 15.5px; }
.points { margin: 0 0 10px; padding-left: 20px; color: var(--muted); }
.points li { margin: 3px 0; }
.feed-links { display: flex; gap: 14px; }

pre.raw {
  margin: 0; padding: 4px 14px 16px; white-space: pre-wrap; word-wrap: break-word;
  font: 13px/1.6 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  color: var(--muted); max-height: 70vh; overflow-y: auto;
}
.model-note { padding: 0 12px 12px; }

@media (max-width: 480px) {
  .feed-item { padding: 14px; }
  .feed-item h2 { font-size: 16px; }
}

/* ---------------------------------------------------------------- big-picture brief */
.section-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; padding-right: 12px; }
.reports-head { margin-top: 26px; border-top: 1px solid var(--line); padding-top: 8px; }
.reports-head .section-label { padding-left: 0; }
.brief-card { padding: 6px 6px 10px; }
.brief { padding: 0 12px 6px; }
.brief-meta { display: flex; gap: 6px; flex-wrap: wrap; }
.brief-headline { font-size: 20px; line-height: 1.3; margin: 6px 0 10px; }
.brief-body { white-space: pre-wrap; line-height: 1.62; font-size: 15.5px; }
.threads { display: flex; flex-direction: column; gap: 14px; margin-top: 16px; }
.thread { border-left: 2px solid var(--line); padding-left: 12px; }
.thread h3 { font-size: 15px; margin: 0 0 4px; }
.refs { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 8px; }
.ref {
  display: inline-flex; gap: 6px; align-items: baseline; font-size: 12px;
  padding: 3px 10px; border-radius: 999px; background: var(--panel-2); border: 1px solid var(--line);
}
.ref:hover { text-decoration: none; border-color: var(--accent); }
.ref .src { color: var(--accent); font-weight: 600; }
.for-me {
  margin-top: 18px; border-radius: 10px; padding: 2px 12px 12px;
  background: rgba(76,141,255,.08); border: 1px solid rgba(76,141,255,.35);
}
.for-me .section-label { padding-left: 0; color: var(--accent); }
.brief-empty { padding: 4px 12px 12px; margin: 0; }
.brief-card + .brief-card { margin-top: 18px; }
@media (max-width: 480px) { .brief-headline { font-size: 18px; } }

/* Long syntheses scroll inside the card so Section 2 stays reachable. */
.brief-scroll {
  max-height: 40vh; overflow-y: auto; padding-right: 8px;
  -webkit-mask-image: linear-gradient(to bottom, #000 calc(100% - 28px), transparent);
          mask-image: linear-gradient(to bottom, #000 calc(100% - 28px), transparent);
  border-top: 1px solid var(--line); border-bottom: 1px solid var(--line);
  padding-top: 10px; padding-bottom: 32px; overscroll-behavior: contain;
}
.brief-scroll::-webkit-scrollbar { width: 8px; }
/* last lines fade out: signals there is more to scroll */
.brief-scroll::-webkit-scrollbar-thumb { background: var(--line); border-radius: 8px; }
@media (max-width: 480px) { .brief-scroll { max-height: 45vh; } }

/* ---------------------------------------------------------------- top bar + price strip */
.topbar { display: block; padding: 0; }
.topbar-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 12px 20px; flex-wrap: wrap; }
.ticker {
  display: flex; justify-content: center; gap: 4px 18px; flex-wrap: wrap;
  padding: 6px 20px; line-height: 1.5; border-top: 1px solid var(--line); background: var(--panel-2);
  font-size: 13px; font-variant-numeric: tabular-nums;
}
.tick { white-space: nowrap; }
.tick .t-label { color: var(--muted); }
.tick .t-price { font-weight: 600; }
.tick .t-chg { font-size: 12.5px; }
@media (max-width: 820px) {
  .ticker { justify-content: flex-start; gap: 14px; overflow-x: auto; flex-wrap: nowrap; }
}

/* ---------------------------------------------------------------- ledger v2 */
.banner.ok { background: rgba(63,185,80,.12); border: 1px solid rgba(63,185,80,.4); }
table.grid.compact td { padding: 7px 10px; }
.acct-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 14px; }
.acct-grid .card { margin: 0; }
.acct-head { display: flex; gap: 8px; align-items: baseline; padding: 8px 10px 2px; }
.acct-head .num { margin-left: auto; font-weight: 600; font-variant-numeric: tabular-nums; }
.two-col { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
@media (max-width: 820px) { .two-col { grid-template-columns: 1fr; } }
.group-row td { background: var(--panel-2); }
details.inline summary { cursor: pointer; }
.warn-dot { color: var(--warn); }
.warnings { padding: 8px 12px; }
.warnings summary { cursor: pointer; color: var(--warn); }
details.card > summary { cursor: pointer; list-style: none; }
details.card > summary::-webkit-details-marker { display: none; }
details.card > summary::before { content: "▸ "; }
details.card[open] > summary::before { content: "▾ "; }
.hint { flex-basis: 100%; margin: 0; }
table.legs { flex-basis: 100%; }
table.legs td { padding: 4px 6px; }
table.legs input, table.legs select { width: 100%; min-width: 90px; }
input[type=datetime-local] { min-width: 190px; }
button.secondary { background: var(--panel-2); border-color: var(--line); color: var(--text); }
button.danger { background: var(--neg); border-color: var(--neg); }
.legs-cell { white-space: normal; min-width: 220px; }
tr.voided td { opacity: .45; text-decoration: line-through; }
tr.voided td .neg { text-decoration: none; }
details.void summary { list-style: none; }
details.void summary::-webkit-details-marker { display: none; }
.void-form { display: flex; gap: 6px; margin-top: 6px; }
.void-form input { min-width: 120px; }
.setup { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 18px; padding: 4px 12px 12px; }
.setup h3 { font-size: 15px; margin: 8px 0 4px; }
.pill { background: var(--panel-2); color: var(--muted); }
.pill.transfer, .pill.wrap, .pill.swap { background: rgba(76,141,255,.15); color: var(--accent); }
.pill.borrow, .pill.repay, .pill.interest { background: rgba(210,153,34,.15); color: var(--warn); }
.two-col > div, .acct-grid > div { min-width: 0; }

/* ---------------------------------------------------------------- research: exec summary */
.exec-summary {
  margin: 4px 0 14px; padding: 12px 14px; border-radius: 10px;
  background: rgba(76,141,255,.08); border: 1px solid rgba(76,141,255,.30);
}
.exec-label {
  display: block; font-size: 11.5px; letter-spacing: .6px; text-transform: uppercase;
  color: var(--accent); margin-bottom: 4px; font-weight: 600;
}
.exec-summary .brief-body { font-size: 16px; }

/* ---------------------------------------------------------------- price targets */
.pt-card { padding: 10px 12px; }
.pt-card > summary { cursor: pointer; list-style: none; }
.pt-card > summary::-webkit-details-marker { display: none; }
.pt-card > summary::before { content: "▸ "; color: var(--muted); }
.pt-card[open] > summary::before { content: "▾ "; color: var(--muted); }
.pt-note { margin: 8px 2px; }
.pt-scroll { max-height: 52vh; overflow-y: auto; margin-top: 6px; }
.pt-table th, .pt-table td { padding: 8px 10px; white-space: nowrap; }
.pt-table tbody tr.held { background: rgba(76,141,255,.07); }
.pt-table tbody tr.held td.asset { color: var(--text); font-weight: 700; }
.held-dot { color: var(--accent); font-size: 10px; vertical-align: middle; }
.pt-foot { margin: 8px 2px 2px; }
.fv-tag {
  display: inline-block; font-size: 12.5px; padding: 1px 8px; border-radius: 999px;
  background: var(--panel-2); border: 1px solid var(--line); margin-left: 4px;
}
.fv-tag.neg { color: var(--neg); border-color: rgba(248,81,73,.4); }
.fv-tag.pos { color: var(--pos); border-color: rgba(63,185,80,.4); }
.fv-tag.muted { color: var(--muted); }
.alerts td.tie { white-space: normal; }

/* ---------------------------------------------------------------- reports: two columns */
.reports-cols { display: grid; grid-template-columns: 2fr 1fr; gap: 18px; align-items: start; }
.reports-main { min-width: 0; }
.reports-shows {
  min-width: 0;
  border-left: 1px solid var(--line); padding-left: 16px;
}
.shows-head { display: flex; gap: 8px; align-items: baseline; padding-left: 0; }
.shows-feed { gap: 12px; }
.show-item { padding: 13px 14px; }
.show-item h3 { font-size: 16px; margin: 6px 0 8px; line-height: 1.35; }
.show-item h3 a { color: var(--text); }
.show-item .feed-summary { font-size: 14.5px; }
@media (max-width: 900px) {
  .reports-cols { grid-template-columns: 1fr; }
  .reports-shows { position: static; border-left: none; padding-left: 0;
    border-top: 1px solid var(--line); padding-top: 10px; margin-top: 8px; }
}
.sheet-tag { font-size: 10.5px; color: var(--muted); border: 1px solid var(--line); border-radius: 4px; padding: 0 4px; margin-left: 5px; vertical-align: middle; }

/* ---------------------------------------------------------------- guide */
.guide-link { font-weight: 600; }
.guide { max-width: 860px; }
.guide h2 { font-size: 19px; margin: 28px 0 8px; }
.guide h3 { font-size: 16px; margin: 0 0 6px; }
.guide p, .guide li, .guide dd { line-height: 1.6; }
.guide code { background: var(--panel-2); border: 1px solid var(--line); border-radius: 5px; padding: 1px 6px; font-size: 14px; }
.defs dt { font-weight: 700; margin-top: 12px; }
.defs dd { margin: 3px 0 0 0; color: var(--text); }
.recipe { background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius); padding: 14px 16px; margin: 12px 0; }
.recipe .eg { margin: 6px 0; line-height: 2; }

/* live on-chain view */
.warn-text { color: var(--warn); }
.aave-box { padding: 6px 10px 8px; border-bottom: 1px solid var(--line); }
.aave-hf { font-size: 20px; font-weight: 700; font-variant-numeric: tabular-nums; }
.tag-sup, .tag-bor { font-size: 11px; padding: 1px 6px; border-radius: 8px; margin-left: 4px; }
.tag-sup { background: rgba(63,185,80,.15); color: var(--pos, #3fb950); }
.tag-bor { background: rgba(248,81,73,.15); color: var(--neg, #f85149); }

/* uploads */
.upload-form form { display: flex; flex-wrap: wrap; gap: 12px 18px; align-items: end; padding: 12px; }
.upload-form label { display: flex; flex-direction: column; gap: 4px; font-size: 14px; color: var(--muted); }
.upload-form input[type=text] { min-width: 260px; }
.upload-form .small { padding: 0 12px 10px; margin: 0; }
.pill.up-pending { background: rgba(210,153,34,.15); color: var(--warn); }
.pill.up-done { background: rgba(63,185,80,.15); color: var(--pos); }
.pill.up-error { background: rgba(248,81,73,.15); color: var(--neg); }
.backup-box { padding: 10px 14px; }
.backup-box p { margin: 4px 0; }

/* evidence: quote verification */
.feed-summary p, .brief-body p, .ev-body p { margin: 0 0 8px; }
.feed-summary, .brief-body, .ev-body { white-space: normal; }
.ev-list { margin: 2px 0 10px; padding-left: 20px; }
.ev-list li { margin: 3px 0; }
q.ev { quotes: "\201C" "\201D"; font-style: italic; color: var(--muted); }
q.ev-ok { color: var(--text); border-bottom: 1px dotted rgba(63,185,80,.7); }
q.ev-miss { color: var(--neg); background: rgba(248,81,73,.1); border-bottom: 1px dashed var(--neg); }
.ev-nr { color: var(--muted); font-style: italic; }
.ev-badge { font-size: 12px; padding: 1px 8px; border-radius: 10px; margin-left: 6px; white-space: nowrap; }
.ev-badge.good { background: rgba(63,185,80,.14); color: var(--pos); }
.ev-badge.bad { background: rgba(248,81,73,.14); color: var(--neg); }
.ev-badge.warn { background: rgba(210,153,34,.14); color: var(--warn); }
.interp { font-weight: 400; text-transform: none; letter-spacing: 0; }
