/* Veggie Traders — shared design tokens and components.
   Used by index.html (the ledger) and market.html (listings). */
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
img{max-width:100%}
[hidden]{display:none!important}
:root{
  color-scheme: light;
  --plane:#f2f4ef; --surface:#fbfcf9; --surface-2:#f6f8f3;
  --ink:#101610; --ink-2:#4c5450; --muted:#868d85;
  --rule:#dfe3da; --grid:#e6e9e1; --baseline:#c2c7ba;
  --accent:#7d6210; --accent-soft:#efe6cd;
  --s-value:#2a78d6; --s-value-soft:#cde2fb;
  --s-cadence:#eb6834;
  --s-plant:#1baf7a;
  --ramp-1:#cde2fb; --ramp-2:#9ec5f4; --ramp-3:#5598e7; --ramp-4:#2a78d6; --ramp-5:#184f95;
  --shadow:0 1px 2px rgba(16,22,16,.05), 0 8px 24px -16px rgba(16,22,16,.18);
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    color-scheme: dark;
    --plane:#0b0d0b; --surface:#161a15; --surface-2:#1c211b;
    --ink:#ffffff; --ink-2:#c2c8bc; --muted:#8c938a;
    --rule:#2a2f28; --grid:#262b25; --baseline:#3a4038;
    --accent:#c9a751; --accent-soft:#2e2a1c;
    --s-value:#3987e5; --s-value-soft:#1b3552;
    --s-cadence:#d95926;
    --s-plant:#199e70;
    --ramp-1:#184f95; --ramp-2:#256abf; --ramp-3:#3987e5; --ramp-4:#6da7ec; --ramp-5:#b7d3f6;
    --shadow:0 1px 2px rgba(0,0,0,.4), 0 8px 24px -16px rgba(0,0,0,.8);
  }
}
:root[data-theme="dark"]{
  color-scheme: dark;
  --plane:#0b0d0b; --surface:#161a15; --surface-2:#1c211b;
  --ink:#ffffff; --ink-2:#c2c8bc; --muted:#8c938a;
  --rule:#2a2f28; --grid:#262b25; --baseline:#3a4038;
  --accent:#c9a751; --accent-soft:#2e2a1c;
  --s-value:#3987e5; --s-value-soft:#1b3552;
  --s-cadence:#d95926;
  --s-plant:#199e70;
  --ramp-1:#184f95; --ramp-2:#256abf; --ramp-3:#3987e5; --ramp-4:#6da7ec; --ramp-5:#b7d3f6;
  --shadow:0 1px 2px rgba(0,0,0,.4), 0 8px 24px -16px rgba(0,0,0,.8);
}

*{box-sizing:border-box}
body{margin:0;background:var(--plane);color:var(--ink);
  font-family:"IBM Plex Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
  font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased}
.wrap{max-width:1120px;margin:0 auto;padding:40px 24px 72px;display:flex;flex-direction:column;gap:30px}

.mast{display:flex;flex-direction:column;gap:14px;padding-bottom:26px;border-bottom:2px solid var(--ink)}
.eyebrow{font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:11px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--accent);display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center}
.eyebrow .dot{width:5px;height:5px;border-radius:50%;background:var(--accent);display:inline-block}
.navlink{color:var(--accent);text-decoration:none;border-bottom:1px solid currentColor;padding-bottom:1px}
.navlink:hover{color:var(--ink)}
.navlink:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
h1{font-family:"Zilla Slab",Georgia,serif;font-weight:700;font-size:clamp(34px,5.2vw,54px);
  line-height:1.02;margin:0;letter-spacing:-.015em;text-wrap:balance}
.standfirst{margin:0;max-width:64ch;color:var(--ink-2);font-size:16px}
.meta{font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:11.5px;color:var(--muted);
  display:flex;flex-wrap:wrap;gap:6px 18px}

.live-bar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:2px}
.live-status{font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:11.5px;color:var(--muted);
  display:inline-flex;align-items:center;gap:7px}
.live-status:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--muted);flex:none}
.live-status.ok{color:var(--s-plant)} .live-status.ok:before{background:var(--s-plant)}
.live-status.warn{color:var(--accent)} .live-status.warn:before{background:var(--accent)}
.live-status.bad{color:var(--critical,#d03b3b)} .live-status.bad:before{background:var(--critical,#d03b3b)}
.live-status code{font-size:11px;background:var(--surface-2);padding:1px 4px;border-radius:2px}
.since-payout{font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:11.5px;
  color:var(--ink-2);border:1px solid var(--rule);border-radius:3px;padding:4px 10px;
  display:inline-flex;align-items:center;gap:7px;font-variant-numeric:tabular-nums}
.since-payout b{color:var(--ink);font-weight:600}
.since-payout .qual{color:var(--muted)}
.since-payout.due{border-color:var(--accent);color:var(--accent)}
.since-payout.due b,.since-payout.due .qual{color:var(--accent)}
.since-payout.stalled{border-color:var(--s-cadence);color:var(--s-cadence)}
.since-payout.stalled b,.since-payout.stalled .qual{color:var(--s-cadence)}
#refresh-btn{font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:10.5px;letter-spacing:.08em;
  text-transform:uppercase;padding:5px 12px;border:1px solid var(--baseline);border-radius:3px;
  background:var(--surface);color:var(--ink-2);cursor:pointer}
#refresh-btn:hover{border-color:var(--ink);color:var(--ink)}
#refresh-btn:disabled{opacity:.45;cursor:default}
#refresh-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(212px,100%),1fr));gap:14px}
.tile{background:var(--surface);border:1px solid var(--rule);border-top:3px solid var(--tile-accent,var(--baseline));
  border-radius:3px;padding:18px;display:flex;flex-direction:column;gap:5px;box-shadow:var(--shadow)}
.tile .label{font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:10.5px;letter-spacing:.11em;
  text-transform:uppercase;color:var(--muted)}
.tile .value{font-family:"Zilla Slab",Georgia,serif;font-weight:600;font-size:33px;line-height:1.1;letter-spacing:-.01em}
.tile .value.loading,.w-stat .v.loading{font-family:"IBM Plex Mono",ui-monospace,monospace;
  font-size:15px;font-weight:400;color:var(--muted);letter-spacing:0}
.loading-note{font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:12.5px;color:var(--muted);
  padding:26px 0;text-align:center}
.svg-loading{font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:12px;fill:var(--muted)}
.tile .sub{font-size:12.5px;color:var(--ink-2);line-height:1.4}

.panel{background:var(--surface);border:1px solid var(--rule);border-radius:3px;
  padding:22px 22px 18px;box-shadow:var(--shadow)}
.panel-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px 20px}
h2{font-family:"Zilla Slab",Georgia,serif;font-weight:600;font-size:21px;margin:0;letter-spacing:-.005em}
.panel-note{font-size:12.5px;color:var(--ink-2);margin:4px 0 16px;max-width:76ch}
.legend{display:flex;gap:16px;align-items:center;font-size:12px;color:var(--ink-2);
  font-family:"IBM Plex Mono",ui-monospace,monospace}
.swatch{width:11px;height:11px;border-radius:2px;display:inline-block;margin-right:6px;vertical-align:-1px}
.swatch.dash{width:14px;height:0;border-top:1.5px dashed var(--muted);border-radius:0;vertical-align:3px}

.wrap>*{min-width:0}
.panel,.prov,.mast{min-width:0;max-width:100%}
.tiles>*,.findings>*,.w-stats>*,.w-cols>*,.addr-grid>*,.est-ctl>*{min-width:0}
.tw{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.tw>table{min-width:440px}
.chart-wrap{position:relative;width:100%;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
svg{display:block;width:100%;height:auto}
.axis-label{font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:10px;fill:var(--muted)}
.axis-title{font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:9.5px;fill:var(--muted);
  letter-spacing:.08em;text-transform:uppercase}
.gridline{stroke:var(--grid);stroke-width:1}
.baseline{stroke:var(--baseline);stroke-width:1}
.refline{stroke:var(--muted);stroke-width:1.25;stroke-dasharray:4 3}
.bar-hit{fill:transparent;cursor:crosshair}
.hl{fill:var(--accent);opacity:0}
.hl.on{opacity:.11}
.direct-label{font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:10px;fill:var(--ink-2);font-weight:500}

.tooltip{position:absolute;pointer-events:none;opacity:0;transform:translate(-50%,-100%);
  background:var(--surface);border:1px solid var(--baseline);border-radius:3px;padding:9px 11px;
  box-shadow:var(--shadow);z-index:20;min-width:186px;max-width:calc(100vw - 20px);
  font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:11.5px;line-height:1.65;transition:opacity .09s ease}
.tooltip.on{opacity:1}
.tt-h{font-weight:500;color:var(--ink);border-bottom:1px solid var(--rule);padding-bottom:4px;margin-bottom:4px}
.tt-row{display:flex;justify-content:space-between;gap:16px;color:var(--ink-2)}
.tt-row b{color:var(--ink);font-weight:500;font-variant-numeric:tabular-nums}

table{width:100%;border-collapse:collapse;font-size:13.5px}
th,td{text-align:right;padding:9px 10px;border-bottom:1px solid var(--rule);font-variant-numeric:tabular-nums}
th{font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:10.5px;letter-spacing:.08em;
  text-transform:uppercase;color:var(--muted);font-weight:500;border-bottom:1px solid var(--baseline)}
th:first-child,td:first-child{text-align:left}
td.sym{font-family:"IBM Plex Mono",ui-monospace,monospace;font-weight:500;color:var(--ink)}
.magbar{height:7px;border-radius:1px;min-width:2px;display:block}
.magcell{width:120px}
tbody tr:hover{background:var(--surface-2)}
tfoot td{border-bottom:none;border-top:2px solid var(--ink);font-weight:600;color:var(--ink)}

details{margin-top:16px;border-top:1px solid var(--rule);padding-top:12px}
summary{cursor:pointer;font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:11.5px;
  letter-spacing:.06em;text-transform:uppercase;color:var(--accent)}
summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}
.table-scroll{max-height:340px;overflow:auto;margin-top:12px}

.findings{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(270px,100%),1fr));gap:0}
.finding{padding:16px 20px;border-left:2px solid var(--rule)}
.finding:first-child{border-left:none;padding-left:0}
.finding h3{font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:10.5px;letter-spacing:.11em;
  text-transform:uppercase;color:var(--muted);margin:0 0 7px;font-weight:500}
.finding p{margin:0;font-size:13.5px;color:var(--ink-2);line-height:1.5}
.finding b{color:var(--ink);font-weight:600}

.prov{background:var(--surface-2);border:1px solid var(--rule);border-radius:3px;padding:22px}
.addr-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(300px,100%),1fr));gap:10px 26px;margin:14px 0 20px}
.addr{display:flex;flex-direction:column;gap:1px;padding-bottom:8px;border-bottom:1px solid var(--rule)}
.addr .n{font-size:11px;font-family:"IBM Plex Mono",ui-monospace,monospace;letter-spacing:.08em;
  text-transform:uppercase;color:var(--muted)}
.addr .a{font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:11.5px;color:var(--ink-2);word-break:break-all}
.checks{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:9px}
.checks li{display:flex;gap:10px;font-size:13.5px;color:var(--ink-2);line-height:1.5}
.checks .mark{color:var(--s-plant);font-weight:600;flex:none;font-family:"IBM Plex Mono",monospace}
.mono{font-family:"IBM Plex Mono",ui-monospace,monospace}
.caveat{margin-top:18px;padding-top:16px;border-top:1px solid var(--rule);font-size:13px;color:var(--ink-2);max-width:80ch}
.caveat b{color:var(--ink)}
footer{font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:11px;color:var(--muted);
  text-align:center;padding-top:8px}
/* ---------- wallet lookup ---------- */
.lookup{border-top:3px solid var(--accent)}
#w-form{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:4px}
#w-input{flex:1 1 340px;min-width:0;font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:14px;
  padding:11px 13px;border:1px solid var(--baseline);border-radius:3px;background:var(--surface-2);
  color:var(--ink)}
#w-input::placeholder{color:var(--muted)}
#w-input:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent)}
#w-form button{font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:12px;letter-spacing:.08em;
  text-transform:uppercase;padding:11px 22px;border:1px solid var(--ink);border-radius:3px;
  background:var(--ink);color:var(--surface);cursor:pointer;font-weight:500}
#w-form button:hover{opacity:.86}
#w-form button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.w-msg{margin-top:14px;padding:13px 15px;border-radius:3px;background:var(--surface-2);
  border:1px solid var(--rule);font-size:13.5px;color:var(--ink-2)}
.w-msg b{color:var(--ink)}
.w-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(158px,100%),1fr));gap:12px;margin:20px 0 6px}
.w-stat{background:var(--surface-2);border:1px solid var(--rule);border-radius:3px;padding:14px 15px}
.w-stat .l{font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:10px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--muted);display:block;margin-bottom:4px}
.w-stat .v{font-family:"Zilla Slab",Georgia,serif;font-weight:600;font-size:25px;line-height:1.15}
.w-stat .n{font-size:12px;color:var(--ink-2);display:block;margin-top:2px}
.w-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(290px,100%),1fr));gap:10px 30px;margin-top:18px}
.w-sub{font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:10.5px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--muted);margin:0 0 6px;font-weight:500}
.w-tbl td,.w-tbl th{padding:7px 8px;font-size:13px}
.pill{display:inline-block;font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:10px;
  letter-spacing:.06em;text-transform:uppercase;padding:2px 7px;border-radius:2px;border:1px solid currentColor}
.pill.on{color:var(--s-plant)}
.pill.off{color:var(--muted)}
/* ---------- yield estimator ---------- */
.est{border-top:1px solid var(--rule);margin-top:22px;padding-top:2px}
.est-note{font-size:12.5px;color:var(--ink-2);margin:0 0 16px;max-width:74ch}
.est-note b{color:var(--ink)}
.est-ctl{display:flex;gap:26px;align-items:flex-end;flex-wrap:wrap;margin-bottom:12px}
.est-slider{flex:1 1 320px;min-width:0}
.est-lab{display:block;font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:10px;
  letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:7px}
#e-vol{width:100%;accent-color:var(--s-value);height:22px;cursor:pointer}
#e-vol:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.est-scale{display:flex;justify-content:space-between;font-family:"IBM Plex Mono",ui-monospace,monospace;
  font-size:10px;color:var(--muted);margin-top:-2px}
.est-read{text-align:right;flex:0 0 auto}
.est-val{display:block;font-family:"Zilla Slab",Georgia,serif;font-weight:600;font-size:27px;line-height:1.1}
.est-mult{font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:11.5px;color:var(--s-value)}
.est-check{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;color:var(--ink-2);
  margin-bottom:4px;cursor:pointer}
.est-check input{accent-color:var(--s-plant);width:15px;height:15px}
.est-ctx{font-size:12.5px;color:var(--ink-2);margin:12px 0 0;max-width:80ch}
.est-ctx b{color:var(--ink)}
.est-pay{margin-top:14px;padding:13px 15px;border-radius:3px;background:var(--accent-soft);
  border:1px solid var(--rule);font-size:13px;color:var(--ink-2)}
.est-pay b{color:var(--ink)}
.est-ladder{margin-top:20px}
.est-ladder tbody tr.now{background:var(--surface-2);font-weight:500}
.est-ladder tbody tr.now td:first-child{color:var(--s-value)}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
@media (max-width:640px){
  .wrap{padding:28px 16px 56px}
  .finding{border-left:none;border-top:1px solid var(--rule);padding:14px 0 0}
  .finding:first-child{border-top:none}
  .chart-wrap svg{min-width:640px}
}
