/* הסוכן הטוב / thegoodagent.ai brand tokens — mapped 1:1 from the 2026-09-12 design handoff's
   tokens.css where the handoff defines a value; --ink-2 (ink-700), --ok/--ok-soft, and the full
   dark-theme block are this project's own extrapolation, since the handoff is light-mode/warm-
   paper only and doesn't cover dark mode or a 3-step ink scale at all — flagged, not assumed. */
:root{
  --page-x:24px; --page-top:48px;
  --paper:#F7F4ED; --paper-100:#EFEAE0; --ink:#12161C; --ink-2:#3F4A55; --ink-soft:#6B6257;
  --accent:#0F2E44; --accent-2:#1B4A6B; --accent-soft:rgba(15,46,68,.08);
  --accent2:#C69A3A; --accent2-soft:#F3E7CC; --accent2-border:#E4D2A8;
  --signal:#C69A3A; --signal-soft:#F3E7CC; --line:#DED7C9; --surface:#ffffff; --surface-2:#EFEAE0;
  --danger:#A8341F; --danger-soft:#F6E1DC; --danger-border:#EACAC0;
  --ok:#2F6B4F; --ok-soft:#DCEAE1;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --paper:#17140F; --paper-100:#211D16; --ink:#F0ECE3; --ink-2:#C9C0B2; --ink-soft:#A89C88;
    --accent:#2E5978; --accent-2:#5B8AAE; --accent-soft:rgba(198,154,58,.14);
    --accent2:#C69A3A; --accent2-soft:#332B18; --accent2-border:#4A3D22;
    --signal:#C69A3A; --signal-soft:#332B18; --line:#3A342C; --surface:#221E17; --surface-2:#2A251C;
    --danger:#D66B52; --danger-soft:rgba(168,52,31,.22); --danger-border:#5A3B31;
    --ok:#5A9B7D; --ok-soft:rgba(47,107,79,.22);
  }
}
:root[data-theme="dark"]{
  --paper:#17140F; --paper-100:#211D16; --ink:#F0ECE3; --ink-2:#C9C0B2; --ink-soft:#A89C88;
  --accent:#2E5978; --accent-2:#5B8AAE; --accent-soft:rgba(198,154,58,.14);
  --accent2:#C69A3A; --accent2-soft:#332B18; --accent2-border:#4A3D22;
  --signal:#C69A3A; --signal-soft:#332B18; --line:#3A342C; --surface:#221E17; --surface-2:#2A251C;
  --danger:#D66B52; --danger-soft:rgba(168,52,31,.22); --danger-border:#5A3B31;
  --ok:#5A9B7D; --ok-soft:rgba(47,107,79,.22);
}
*{box-sizing:border-box}
html,body{background:var(--paper); color:var(--ink)}
body{
  direction:rtl; font-family:"Assistant",system-ui,sans-serif; line-height:1.65;
  max-width:760px; margin:0 auto; padding:var(--page-top) var(--page-x) 90px;
}
.ltr{direction:ltr; unicode-bidi:embed; font-family:"JetBrains Mono",ui-monospace,monospace; font-variant-numeric:tabular-nums}
h1,h2,h3{font-family:"Rubik",system-ui,sans-serif; text-wrap:balance; font-weight:700; letter-spacing:-.03em; margin:0}
a{color:var(--accent)}
.eyebrow{
  font-size:.72rem; letter-spacing:.12em; color:var(--ink-soft); font-weight:500;
  display:flex; align-items:center; gap:10px; margin-bottom:14px;
}
.eyebrow .dot{width:6px; height:6px; border-radius:50%; background:var(--signal)}
header{border-bottom:1px solid var(--line); padding-bottom:26px; margin-bottom:8px}
h1{font-size:1.85rem; margin-bottom:8px}
.tagline{color:var(--ink-soft); font-size:1rem; max-width:56ch; margin:0}

/* search */
.search-wrap{margin:28px 0 20px; position:relative}
.search-box{
  display:flex; align-items:center; gap:10px; background:var(--surface); border:1.5px solid var(--line);
  border-radius:12px; padding:6px 6px 6px 8px; transition:border-color .15s;
}
.search-box:focus-within{border-color:var(--accent)}
.search-box input{
  flex:1; border:0; background:transparent; padding:12px 8px; font-family:inherit; font-size:1.02rem;
  color:var(--ink); outline:none;
}
.search-box input::placeholder{color:var(--ink-soft)}
.search-box button{
  border:0; background:var(--accent); color:#fff; font-family:inherit; font-weight:700;
  font-size:.92rem; padding:11px 20px; border-radius:10px; cursor:pointer; white-space:nowrap;
  box-shadow:0 1px 2px rgba(16,24,39,.15);
}
.search-box button:hover{opacity:.92}
.search-hint{font-size:.78rem; color:var(--ink-soft); margin-top:8px}
.suggest{
  position:absolute; top:calc(100% + 6px); right:0; left:0; background:var(--surface);
  border:1px solid var(--line); border-radius:12px; overflow:hidden; z-index:5;
  box-shadow:0 8px 24px rgba(0,0,0,.12);
}
.suggest button{
  display:block; width:100%; text-align:right; border:0; background:none; padding:12px 16px;
  font-family:inherit; font-size:.94rem; color:var(--ink); cursor:pointer; border-bottom:1px solid var(--line);
}
.suggest button:last-child{border-bottom:0}
.suggest button:hover{background:var(--surface-2)}
.suggest button .id{color:var(--ink-soft); font-size:.8rem; margin-inline-start:6px}
[hidden]{display:none !important}

/* persistent signed-in indicator (compact — the sign-in form itself lives in the modal below) */
.account-status{
  background:var(--surface); border:1px solid var(--line); border-radius:100px; padding:8px 16px;
  margin-bottom:24px; display:flex; align-items:center; justify-content:space-between; gap:14px; width:fit-content;
}
.auth-label{font-size:.86rem; color:var(--ink-soft); font-weight:600}
.auth-row{display:flex; gap:8px; flex-wrap:wrap; margin-top:14px}
.auth-row input{
  border:1px solid var(--line); background:var(--paper); border-radius:10px; padding:9px 12px;
  font-family:inherit; color:var(--ink); min-width:200px; flex:1;
}
.auth-row button{
  border:0; background:var(--accent); color:#fff; font-family:inherit; font-weight:700;
  font-size:.86rem; padding:9px 16px; border-radius:10px; cursor:pointer; white-space:nowrap;
}
.auth-sent{font-size:.82rem; color:var(--accent); margin-top:10px; font-weight:600}

/* modal popups — auth (sign-in) and the quadrant lightbox share this shell */
.modal-overlay{
  position:fixed; inset:0; background:rgba(16,24,39,.55); z-index:100;
  display:flex; align-items:center; justify-content:center; padding:20px;
}
.modal-card{
  background:var(--paper); border-radius:16px; padding:32px 28px; max-width:420px; width:100%;
  position:relative; box-shadow:0 24px 60px rgba(0,0,0,.3); text-align:center;
}
.modal-card .modal-icon{font-size:1.8rem; margin-bottom:6px}
.modal-card h3{font-size:1.25rem; margin-bottom:10px}
.modal-card .auth-label{display:block; margin-bottom:4px}
.modal-close{
  position:absolute; top:10px; left:10px; border:0; background:var(--surface-2); color:var(--ink-soft);
  width:40px; height:40px; border-radius:50%; cursor:pointer; font-size:.95rem;
}
.modal-close:hover{background:var(--line); color:var(--ink)}
.lightbox-card{max-width:720px; text-align:start}
.lightbox-card .section-label{margin-bottom:16px}

/* empty state examples */
.examples{display:flex; gap:8px; flex-wrap:wrap; margin-top:14px}
.example-chip{
  font-size:.82rem; background:var(--surface); border:1px solid var(--line); color:var(--ink-soft);
  padding:8px 14px; border-radius:100px; cursor:pointer; min-height:40px;
}
.example-chip:hover{border-color:var(--accent); color:var(--accent)}

/* showcase — always-unlocked anonymized example reports */
.showcase-chips{display:flex; gap:8px; flex-wrap:wrap}
.showcase-chip{
  font-size:.86rem; font-weight:700; background:var(--accent-soft); border:1px solid transparent; color:var(--accent);
  padding:9px 16px; border-radius:100px; cursor:pointer;
}
.showcase-chip:hover{border-color:var(--accent)}
.showcase-banner{
  background:var(--accent-soft); color:var(--accent); border-radius:10px; padding:12px 16px;
  font-size:.82rem; font-weight:600; margin-bottom:20px; line-height:1.5;
}

.loading{color:var(--ink-soft); font-size:.88rem; padding:18px; text-align:center}

/* no-match */
.nomatch{
  background:var(--surface); border:1px dashed var(--line); border-radius:12px; padding:24px;
  color:var(--ink-soft); font-size:.94rem;
}
.nomatch strong{color:var(--ink)}
.leave-info{display:flex; gap:8px; margin-top:16px; flex-wrap:wrap}
.leave-info input{
  flex:1; min-width:160px; border:1px solid var(--line); background:var(--paper); border-radius:10px;
  padding:10px 12px; font-family:inherit; color:var(--ink);
}
.leave-info button{
  border:0; background:var(--ink); color:var(--paper); font-family:inherit; font-weight:700;
  padding:10px 18px; border-radius:10px; cursor:pointer;
}

/* report */
#report{margin-top:8px}
.report-meta{
  display:flex; justify-content:space-between; align-items:baseline; gap:12px; flex-wrap:wrap;
  border-bottom:1px solid var(--line); padding-bottom:24px; margin-bottom:28px;
}
.report-meta h2{font-size:1.7rem}
.report-meta .subline{color:var(--ink-soft); font-size:.92rem; margin-top:6px}
.report-actions{display:flex; gap:8px}
.report-more-links{display:flex; gap:8px; flex-wrap:wrap; margin-bottom:36px}
.icon-btn{
  border:1px solid var(--line); background:var(--surface); color:var(--ink); font-family:inherit;
  font-size:.82rem; padding:8px 14px; border-radius:10px; cursor:pointer; display:flex; align-items:center; gap:6px;
}
.icon-btn:hover{border-color:var(--accent); color:var(--accent)}
section{margin-bottom:36px}
.section-label{
  font-size:.75rem; letter-spacing:.1em; color:var(--accent); font-weight:700;
  text-transform:uppercase; margin-bottom:14px;
}
.new-tenders-badge{
  display:inline-flex; align-items:center; background:var(--signal-soft); color:var(--signal);
  font-size:.72rem; font-weight:700; letter-spacing:normal; text-transform:none;
  padding:3px 10px; border-radius:100px; margin-inline-start:8px; vertical-align:middle;
}
.card{
  background:var(--surface); border:1px solid var(--line); border-radius:12px;
  padding:22px 24px; border-inline-start:3px solid var(--signal);
  box-shadow:0 1px 3px rgba(16,24,39,.06);
}
.card.gap{border-inline-start-color:var(--danger)}
.card .badge{
  display:inline-flex; align-items:center; gap:8px; background:var(--signal-soft); color:var(--signal);
  font-size:.78rem; font-weight:700; padding:4px 12px; border-radius:100px; margin-bottom:14px;
}
.card.gap .badge{background:var(--danger-soft); color:var(--danger)}
.card p{margin:0}
.factgrid{
  display:grid; grid-template-columns:1fr 1fr; gap:14px 24px; margin-top:16px;
  padding-top:16px; border-top:1px solid var(--line);
}
.fact dt{font-size:.72rem; color:var(--ink-soft); letter-spacing:.04em; margin-bottom:3px}
.fact dd{margin:0; font-weight:600}
.note{
  background:var(--surface); border:1px solid var(--line); border-radius:12px; padding:18px 20px;
  font-size:.93rem; color:var(--ink-soft);
}
.note strong{color:var(--ink)}
.timeline{border-inline-start:1px solid var(--line); padding-inline-start:22px; display:flex; flex-direction:column; gap:22px}
.tl-item{position:relative}
.tl-item::before{
  content:""; position:absolute; inset-inline-start:-27px; top:5px; width:9px; height:9px;
  border-radius:50%; background:var(--accent); border:2px solid var(--paper);
}
.tl-item.flag::before{background:var(--signal)}
.tl-date{font-size:.78rem; color:var(--ink-soft); margin-bottom:4px}
.tl-buyer{font-weight:700; font-size:.96rem; margin-bottom:2px}
.tl-desc{color:var(--ink-soft); font-size:.9rem}
.tl-meta{display:flex; gap:8px; margin-top:6px; flex-wrap:wrap}
.pill{font-size:.72rem; background:var(--surface-2); color:var(--ink-soft); padding:3px 10px; border-radius:100px; border:1px solid var(--line)}
.pill.amt{color:var(--accent); border-color:var(--accent-soft); background:var(--accent-soft); font-weight:700}
.timeline-note{font-size:.8rem; color:var(--ink-soft); margin-top:14px}

/* redacted content — used wherever a value requires signup. Unlike a cosmetic CSS blur over
   real text, the real data is simply never fetched for this render path: .redact-bar never
   contains real text at all, just a styled placeholder shape, so there's nothing to inspect
   via view-source or select-all even before the eye-cta is clicked. */
.redact-bar{
  display:inline-block; height:.85em; border-radius:4px; vertical-align:-.05em;
  background:linear-gradient(90deg, var(--ink-soft) 25%, var(--surface-2) 50%, var(--ink-soft) 75%);
  background-size:200% 100%; opacity:.3; animation:redact-shimmer 2.2s ease-in-out infinite;
}
@keyframes redact-shimmer{ 0%{background-position:200% 0} 100%{background-position:-200% 0} }
@keyframes otRise{ from{ opacity:0; transform:translateY(10px); } to{ opacity:1; transform:none; } }
.eye-cta{
  display:inline-flex; align-items:center; gap:7px; align-self:flex-start;
  border:1px solid var(--accent-soft); background:var(--accent-soft); color:var(--accent);
  font-family:inherit; font-size:.8rem; font-weight:700; padding:7px 14px; border-radius:100px;
  cursor:pointer; transition:background .15s, border-color .15s;
}
.eye-cta:hover{background:var(--accent); color:#fff; border-color:var(--accent)}
.eye-cta .eye-icon{font-size:.92rem}
.redacted-timeline{border-inline-start:1px solid var(--line); padding-inline-start:22px; display:flex; flex-direction:column; gap:16px}
.redacted-timeline .tl-item{position:relative; display:flex; align-items:center; gap:12px; opacity:.8; min-width:0}
/* the three placeholder bars carry fixed inline widths (52/140/200px) that add up past a phone's
   width — let each cell shrink and clamp the bar to its cell, so the redacted row never widens
   the page (it was the one element pushing the report page to 455px on a 390px phone) */
.redacted-timeline .tl-item > *{ min-width:0; flex:0 1 auto; }
.redacted-timeline .redact-bar{ max-width:100%; }
.redacted-timeline .tl-item::before{
  content:""; position:absolute; inset-inline-start:-27px; top:50%; transform:translateY(-50%);
  width:9px; height:9px; border-radius:50%; background:var(--line);
}
.redacted-timeline .eye-cta{margin-top:6px}
.quad-tooltip .eye-row{margin-top:4px; font-weight:600; opacity:1; background:none; border:0; color:inherit; font:inherit; padding:8px 0 2px; cursor:pointer; width:100%; text-align:right; min-height:40px}

/* magic-quadrant chart */
.quad-wrap{display:flex; flex-direction:column; gap:8px}
.quad-plot{
  position:relative; width:100%; aspect-ratio:16/10; background:var(--surface);
  border:1px solid var(--line); border-radius:12px; overflow:visible;
}
.quad-zone{position:absolute; font-size:.68rem; font-weight:700; letter-spacing:.04em; color:var(--ink-soft); opacity:.55; text-transform:uppercase}
.quad-zone.tr{top:12px; right:14px; text-align:right}
.quad-zone.tl{top:12px; left:14px; text-align:left}
.quad-zone.br{bottom:12px; right:14px; text-align:right}
.quad-zone.bl{bottom:12px; left:14px; text-align:left}
.quad-divider{position:absolute; background:var(--line)}
.quad-divider.v{top:0; bottom:0; width:1px; left:50%}
.quad-divider.h{right:0; left:0; height:1px; top:50%}
.quad-axis-label{position:absolute; font-size:.68rem; color:var(--ink-soft)}
.quad-axis-label.x{bottom:-22px; left:50%; transform:translateX(-50%)}
.quad-axis-label.y{top:50%; left:-10px; transform:translateY(-50%) rotate(-90deg); transform-origin:left center}
.quad-dot{
  position:absolute; width:10px; height:10px; border-radius:50%; background:var(--accent);
  border:2px solid var(--surface); transform:translate(-50%, -50%); cursor:pointer; opacity:.75;
  transition:opacity .15s, transform .15s;
}
.quad-dot:hover{opacity:1; transform:translate(-50%, -50%) scale(1.3); z-index:5}
.quad-dot.you{
  width:15px; height:15px; background:var(--accent2); border-color:var(--paper); opacity:1;
  box-shadow:0 0 0 3px var(--accent2-soft); z-index:4;
}
.quad-dot-label{
  position:absolute; font-size:.72rem; font-weight:700; color:var(--accent2); white-space:nowrap;
  transform:translate(-50%, 10px); pointer-events:none;
}
.quad-tooltip{
  position:absolute; background:var(--ink); color:var(--paper); border-radius:10px; padding:10px 14px;
  font-size:.78rem; line-height:1.5; pointer-events:none; z-index:10; opacity:0; transition:opacity .1s;
  min-width:170px; box-shadow:0 6px 20px rgba(0,0,0,.25);
}
.quad-tooltip.show{opacity:1; pointer-events:auto}  /* tappable while shown (the sign-in prompt inside is a button) */
.quad-tooltip b{display:block; font-size:.84rem; margin-bottom:4px; font-family:"Rubik",system-ui,sans-serif; font-weight:800}
.quad-tooltip .row{display:flex; justify-content:space-between; gap:14px; opacity:.85}
.quad-legend{display:flex; gap:16px; flex-wrap:wrap; font-size:.76rem; color:var(--ink-soft)}
.quad-legend span{display:inline-flex; align-items:center; gap:6px}
.quad-legend .sw{width:9px; height:9px; border-radius:50%; display:inline-block}
.quad-caption{font-size:.76rem; color:var(--ink-soft)}
@media (max-width:560px){ .quad-plot{aspect-ratio:4/5} }

/* market stat strip */
.stat-strip{
  display:flex; gap:28px; flex-wrap:wrap; padding:16px 0 28px; margin-bottom:8px;
  border-bottom:1px solid var(--line);
}
.stat{display:flex; flex-direction:column; gap:2px}
.stat b{font-family:"Rubik",system-ui,sans-serif; font-weight:800; font-size:1.5rem; font-weight:700; color:var(--accent)}
.stat span{font-size:.76rem; color:var(--ink-soft)}
.stat-clickable{cursor:pointer; border-radius:8px; padding:4px 8px; margin:-4px -8px; transition:background .15s}
.stat-clickable:hover{background:var(--accent-soft)}

/* opportunity cards */
.opp-grid{display:grid; grid-template-columns:1fr 1fr; gap:14px}
@media (max-width:620px){ .opp-grid{grid-template-columns:1fr} }
.opp-card{
  background:var(--surface); border:1px solid var(--line); border-radius:10px; padding:18px 20px;
  border-inline-start:3px solid var(--line); display:flex; flex-direction:column; gap:8px;
}
.opp-card.high{border-inline-start-color:var(--danger)}
.opp-card.medium{border-inline-start-color:var(--signal)}
.opp-badge{
  align-self:flex-start; font-size:.7rem; font-weight:700; padding:3px 10px; border-radius:100px;
  background:var(--surface-2); color:var(--ink-soft);
}
.opp-card.high .opp-badge{background:var(--danger-soft); color:var(--danger)}
.opp-card.medium .opp-badge{background:var(--signal-soft); color:var(--signal)}
.opp-buyer{font-weight:700; font-size:1rem}
.opp-supplier{font-size:.86rem; color:var(--ink-soft)}
.opp-supplier b{color:var(--ink); font-weight:600}
.opp-why{font-size:.84rem; color:var(--ink-soft); line-height:1.5}
.opp-empty{
  grid-column:1/-1; color:var(--ink-soft); font-size:.9rem; padding:18px; text-align:center;
  border:1px dashed var(--line); border-radius:10px;
}
.opp-card.locked{position:relative}
.opp-card.locked .eye-cta{margin-top:2px}
.opp-card.open-tender{text-decoration:none; color:inherit; display:flex}
.opp-card.open-tender:hover{border-color:var(--accent); box-shadow:0 2px 10px rgba(16,24,39,.08)}
.open-tender-link{font-size:.78rem; font-weight:700; color:var(--accent); align-self:flex-start}
.opp-domain-tag{
  display:inline-flex; align-items:center; white-space:nowrap; font-size:.76rem; font-weight:600;
  color:var(--accent); background:var(--accent2-soft); padding:3px 11px; border-radius:100px;
}
.opp-newtag{
  display:inline-flex; align-items:center; white-space:nowrap; font-size:.72rem; font-weight:700;
  color:#fff; background:var(--accent2); padding:3px 10px; border-radius:100px;
}

/* tier badge */
.tier-badge{
  display:inline-flex; align-items:center; gap:8px; padding:7px 16px; border-radius:100px;
  font-size:.85rem; font-weight:700; margin-bottom:16px;
}
.tier-badge.leading{background:var(--accent-soft); color:var(--accent)}
.tier-badge.established{background:var(--signal-soft); color:var(--signal)}
.tier-badge.rising{background:var(--surface-2); color:var(--ink-soft); border:1px solid var(--line)}

/* subscription CTA */
.pilot{background:var(--accent); color:var(--paper); border-radius:12px; padding:30px 28px; display:flex; flex-direction:column; gap:18px}
.pilot h3{color:var(--paper); font-size:1.3rem}
.pilot p{color:var(--paper); opacity:.92; margin:0; max-width:60ch}
.promo-badge{
  align-self:flex-start; display:flex; align-items:center; gap:8px; background:rgba(255,255,255,.14);
  border:1px solid rgba(255,255,255,.3); padding:7px 16px; border-radius:100px; font-size:.82rem; font-weight:700;
}
.promo-badge .dot2{width:6px; height:6px; border-radius:50%; background:var(--signal)}
.plans{display:grid; grid-template-columns:1fr 1fr; gap:14px}
@media (max-width:560px){ .plans{grid-template-columns:1fr} }
.plan{
  background:rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.25); border-radius:12px;
  padding:20px 20px 22px; display:flex; flex-direction:column; gap:10px; cursor:pointer; transition:border-color .15s, background .15s;
}
.plan:hover{border-color:rgba(255,255,255,.55)}
.plan.selected{background:rgba(255,255,255,.16); border-color:var(--paper)}
.plan .plan-name{font-weight:700; font-size:1rem}
.plan .plan-desc{font-size:.8rem; opacity:.82; min-height:2.4em}
.plan .plan-price{display:flex; align-items:baseline; gap:8px; margin-top:4px}
.plan .plan-price .now{font-family:"Rubik",system-ui,sans-serif; font-weight:800; font-size:1.7rem; font-weight:700}
.plan .plan-price .was{font-size:.85rem; text-decoration:line-through; opacity:.6}
.plan .plan-cadence{font-size:.74rem; opacity:.75}
.pilot-form{display:flex; flex-direction:column; gap:10px; margin-top:2px}
.pilot-form input{
  border:1px solid rgba(255,255,255,.35); background:rgba(255,255,255,.08); color:var(--paper);
  border-radius:10px; padding:11px 14px; font-family:inherit; font-size:.94rem;
}
.pilot-form input::placeholder{color:rgba(255,255,255,.6)}
.pilot-form button{
  border:0; background:var(--paper); color:var(--accent); font-family:inherit; font-weight:700;
  font-size:.96rem; padding:13px; border-radius:10px; cursor:pointer; margin-top:4px;
}
.pilot-form button:hover{opacity:.92}
.pilot-note{font-size:.76rem; opacity:.8; margin:0}

footer{
  margin-top:44px; padding-top:18px; border-top:1px solid var(--line);
  font-size:.76rem; color:var(--ink-soft); display:flex; justify-content:space-between; gap:16px; flex-wrap:wrap;
}
@media (max-width:520px){ .factgrid{grid-template-columns:1fr} .report-meta{flex-direction:column} }
@media print{
  .search-wrap, .account-status, .modal-overlay, .report-actions, .pilot, footer .no-print{display:none !important}
  body{max-width:100%; padding:0 8mm}
}

/* ---------- first-run onboarding (design "1b — editorial split") ---------- */
/* Breaks out of body's centered 760px column — this is a full page, not a fragment. */
#onboarding-firstrun{ width:100vw; margin-inline:calc(50% - 50vw); margin-top:calc(-1 * var(--page-top)); }
.fr-grid{
  display:grid; grid-template-columns:1fr 400px; background:var(--paper); color:var(--ink); min-height:100vh;
}
.fr-main{ padding:44px 44px 40px; }
.fr-eyebrow{
  font-family:"JetBrains Mono",monospace; font-size:.7rem; letter-spacing:.16em; color:var(--signal);
  font-weight:700; direction:ltr; text-align:right; margin-bottom:18px;
}
.fr-h1{ font-size:2.6rem; line-height:1.1; font-weight:700; letter-spacing:-.035em; margin:0 0 34px; max-width:22ch; text-wrap:balance; }
.fr-step{ padding-bottom:28px; transition:opacity .45s ease, filter .45s ease, transform .45s cubic-bezier(.2,.8,.2,1); }
.fr-step:last-child{ padding-bottom:0; }
.fr-step.fr-locked{ opacity:.28; pointer-events:none; filter:grayscale(.7); transform:translateY(8px); }
.fr-divider{ height:1px; background:var(--line); margin-bottom:24px; }
.fr-step-head{ display:flex; align-items:baseline; gap:12px; margin-bottom:16px; }
.fr-step-num{ font-family:"JetBrains Mono",monospace; font-size:1.5rem; font-weight:700; color:var(--ink-soft); direction:ltr; }
.fr-step-title{ font-size:1.15rem; font-weight:700; }
.fr-step-sub{ font-size:.84rem; color:var(--ink-soft); }
.fr-chips{ display:flex; flex-wrap:wrap; gap:9px; }

.fr-chip{
  font-family:inherit; border:0; cursor:pointer;
  transition:background .2s ease, color .2s ease, border-color .2s ease, transform .3s cubic-bezier(.34,1.56,.64,1), box-shadow .25s ease;
}
.fr-chip.cat{
  font-size:1rem; font-weight:700; padding:11px 20px; border-radius:8px;
  background:transparent; color:var(--ink); border:1.5px solid var(--line);
}
.fr-chip.cat.on{
  background:var(--ink); color:var(--paper); border:1.5px solid var(--ink); transform:scale(1.045);
  box-shadow:0 6px 16px rgba(16,24,39,.22);
}
.fr-chip.dist{
  font-size:.94rem; font-weight:600; padding:9px 16px; border-radius:8px;
  background:transparent; color:var(--ink-soft); border:1.5px solid var(--line);
}
.fr-chip.dist.on{
  background:var(--signal-soft); color:#8a6a1f; border:1.5px solid var(--signal); transform:scale(1.045);
  box-shadow:0 6px 16px rgba(198,154,58,.25);
}
:root[data-theme="dark"] .fr-chip.dist.on{ color:#f0dba8; }
@media (prefers-color-scheme:dark){ :root:not([data-theme="light"]) .fr-chip.dist.on{ color:#f0dba8; } }

.fr-rows{ display:flex; flex-direction:column; gap:8px; }
.fr-row{
  display:flex; align-items:center; justify-content:space-between; gap:14px; width:100%;
  font-family:inherit; padding:13px 18px; border-radius:8px; cursor:pointer;
  background:transparent; color:var(--ink-soft); border:1.5px solid var(--line);
  transition:background .2s ease, color .2s ease, border-color .2s ease, transform .3s cubic-bezier(.34,1.56,.64,1), box-shadow .25s ease;
}
.fr-row.on{
  background:var(--surface); color:var(--ink); border:1.5px solid var(--ink); transform:translateX(-4px);
  box-shadow:0 4px 14px rgba(16,24,39,.1);
}
.fr-row-left{ display:flex; align-items:center; gap:12px; }
.fr-row-label{ font-weight:700; font-size:.98rem; }
.fr-row-range{ font-family:"JetBrains Mono",monospace; font-size:.84rem; direction:ltr; opacity:.7; }
.fr-dot{
  width:10px; height:10px; border-radius:50%; display:inline-block; background:var(--line);
  transition:background .2s ease, transform .3s cubic-bezier(.34,1.56,.64,1), box-shadow .25s ease;
}
.fr-row.on .fr-dot{ background:var(--accent2); transform:scale(1.35); box-shadow:0 0 0 4px rgba(31,168,218,.18); }

.fr-panel{
  background:#0F2E44; color:#F7F4ED; padding:44px 34px; display:flex; flex-direction:column; gap:26px;
  position:sticky; top:0; align-self:start; min-height:100vh; box-sizing:border-box;
}
.fr-panel-eyebrow{ font-family:"JetBrains Mono",monospace; font-size:.7rem; letter-spacing:.16em; opacity:.7; direction:ltr; text-align:right; }
.fr-count{
  font-family:"JetBrains Mono",monospace; font-size:3.6rem; line-height:1; font-weight:700; color:#C69A3A;
  direction:ltr; text-align:right; font-variant-numeric:tabular-nums;
}
.fr-count-label{ font-size:.92rem; opacity:.85; margin-top:6px; }
.fr-meter{ display:flex; gap:5px; margin-top:16px; }
.fr-meter-bar{ flex:1 1 0; height:3px; border-radius:2px; background:rgba(255,255,255,.18); transition:background .35s ease; }
.fr-meter-bar.on{ background:#C69A3A; }
.fr-hr{ height:1px; background:rgba(255,255,255,.2); }
.fr-median-row{ display:flex; align-items:baseline; justify-content:space-between; gap:14px; }
.fr-median-label{ font-size:.86rem; opacity:.85; }
.fr-median{ font-weight:700; font-size:1.05rem; color:#C69A3A; }
.fr-summary{ display:flex; flex-direction:column; gap:16px; }
.fr-summary-title{ font-size:.72rem; letter-spacing:.1em; opacity:.6; margin-bottom:7px; }
.fr-summary-items{ display:flex; flex-wrap:wrap; gap:6px; }
.fr-pill{
  font-size:.8rem; font-weight:600; padding:5px 11px; border-radius:100px;
  background:rgba(255,255,255,.14); border:1px solid rgba(255,255,255,.28);
  animation:frRise .34s cubic-bezier(.2,.8,.2,1) both;
}
.fr-pill-empty{ font-size:.8rem; padding:5px 0; color:#DED7C9; }
.fr-cta-wrap{ margin-top:auto; display:flex; flex-direction:column; gap:10px; }
.fr-cta{
  border:0; font-family:inherit; font-weight:700; font-size:.98rem; padding:15px; width:100%;
  border-radius:10px; cursor:not-allowed; background:var(--line); color:var(--ink-soft);
  transition:transform .18s ease, box-shadow .18s ease, background .2s ease;
}
.fr-cta:not(:disabled){ background:#F7F4ED; color:#0F2E44; cursor:pointer; box-shadow:0 6px 18px rgba(0,0,0,.25); animation:frCtaPulse 2.6s ease-in-out infinite; }
.fr-hint{ font-size:.74rem; opacity:.7; text-align:center; }

@keyframes frRise{ from{ opacity:0; transform:translateY(6px) scale(.94); } to{ opacity:1; transform:none; } }
@keyframes frCtaPulse{
  0%{ box-shadow:0 6px 18px rgba(0,0,0,.25); } 50%{ box-shadow:0 10px 30px rgba(31,168,218,.45); } 100%{ box-shadow:0 6px 18px rgba(0,0,0,.25); }
}
@media (prefers-reduced-motion:reduce){
  .fr-cta:not(:disabled){ animation:none; }
  .fr-pill{ animation:none; }
  *{ animation-duration:.001ms !important; animation-iteration-count:1 !important; }
}
@media (max-width:860px){
  .fr-grid{ grid-template-columns:1fr; }
  .fr-panel{ position:static; min-height:auto; }
  .fr-h1{ font-size:2rem; }
}

/* ---------- opportunity feed (design "Opportunity Feed") ---------- */
#feed-chrome{ width:100vw; margin-inline:calc(50% - 50vw); margin-top:calc(-1 * var(--page-top)); }
.feed-nav{
  display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap;
  padding:0 32px; background:var(--surface); border-bottom:1px solid var(--line); position:sticky; top:0; z-index:20;
}
.feed-nav-brand{ display:flex; align-items:center; gap:9px; padding:16px 0; font-family:"Rubik",sans-serif; font-weight:700; font-size:1.06rem; letter-spacing:-.01em; color:var(--accent); white-space:nowrap; }
.feed-nav-mark{ width:26px; height:26px; flex:none; }
.feed-nav-tabs{ display:flex; align-items:stretch; gap:2px; }
.feed-nav-tab{
  font-family:inherit; font-size:.9rem; font-weight:600; padding:18px 4px 15px; margin:0 8px;
  background:none; border:0; border-bottom:2px solid transparent; color:var(--ink-soft); cursor:pointer;
  display:flex; align-items:center; gap:7px; transition:color .2s ease;
}
.feed-nav-tab.on{ font-weight:700; color:var(--ink); border-bottom-color:var(--accent); }
.feed-nav-tab:disabled{ cursor:default; opacity:.55; }
.feed-nav-icon{ display:none; width:22px; height:22px; flex:none; }
.feed-nav-badge{ font-family:"JetBrains Mono",monospace; font-size:.68rem; font-weight:700; padding:1px 6px; border-radius:100px; background:var(--surface-2); color:var(--ink-soft); direction:ltr; }
.feed-nav-tab.on .feed-nav-badge{ background:var(--accent-soft); color:var(--accent); }

.feed-scopebar{
  display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap;
  padding:12px 32px; background:#0F2E44; color:#F7F4ED; position:sticky; top:57px; z-index:19;
}
.feed-scope-left{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.feed-scope-eyebrow{ font-family:"JetBrains Mono",monospace; font-size:.64rem; letter-spacing:.12em; opacity:.65; direction:ltr; }
.feed-scope-pills{ display:inline-flex; gap:8px; flex-wrap:wrap; }
.feed-scope-pill{ font-size:.8rem; font-weight:600; padding:5px 12px; border-radius:100px; background:rgba(255,255,255,.14); border:1px solid rgba(255,255,255,.26); animation:frRise .3s ease both; display:inline-block; }
.feed-scope-change{
  background:none; border:1px solid rgba(255,255,255,.3); color:#F7F4ED; font-family:inherit; font-size:.78rem;
  font-weight:600; padding:5px 12px; border-radius:100px; cursor:pointer; transition:background .2s ease;
}
.feed-scope-change:hover{ background:rgba(255,255,255,.14); }
.feed-scope-right{ display:flex; align-items:center; gap:26px; }
.feed-scope-stat{ display:flex; align-items:baseline; gap:8px; }
.feed-scope-num{ font-family:"JetBrains Mono",monospace; font-size:1.5rem; font-weight:700; direction:ltr; font-variant-numeric:tabular-nums; }
.feed-scope-num.cyan{ color:#F0ECE3; }
.feed-scope-num.amber{ color:var(--accent2); font-size:1.15rem; }
.feed-scope-lab{ font-size:.8rem; opacity:.8; }
.feed-scope-divider{ width:1px; height:26px; background:rgba(255,255,255,.22); }

/* ---------- Open Tenders: PUBLIC DATA band + domain/window filters + GAPS block ---------- */
.ot-public-band{
  display:flex; align-items:center; justify-content:space-between; gap:20px; flex-wrap:wrap;
  padding:11px var(--page-x); background:var(--accent); color:var(--paper); margin:0 calc(-1 * var(--page-x)) 18px;
}
.ot-public-label{ font-size:.84rem; opacity:.9; }
.ot-public-stats{ display:flex; align-items:center; gap:26px; }
.ot-public-stat{ display:flex; align-items:baseline; gap:8px; }
.ot-public-num{ font-family:"JetBrains Mono",monospace; font-size:1.3rem; font-weight:700; direction:ltr; font-variant-numeric:tabular-nums; }
.ot-public-num.cyan{ color:#F0ECE3; }
.ot-public-num.amber{ color:var(--accent2); }
.ot-public-lab{ font-size:.8rem; opacity:.8; }
.ot-public-div{ width:1px; height:26px; background:rgba(255,255,255,.22); }
.ot-gaps{
  display:flex; gap:12px; align-items:flex-start; background:var(--surface-2);
  border:1px dashed var(--line); border-radius:12px; padding:16px 18px; margin-top:18px;
}
.ot-gaps-label{ font-family:"JetBrains Mono",monospace; font-size:.68rem; color:var(--ink-soft); direction:ltr; flex:none; margin-top:2px; }
.ot-gaps-title{ font-size:.86rem; font-weight:700; margin-bottom:6px; }
.ot-gaps-body{ font-size:.84rem; color:var(--ink-soft); line-height:1.6; max-width:92ch; text-wrap:pretty; }
.ot-domain-chip{
  display:inline-flex; align-items:center; gap:8px; white-space:nowrap; font-family:inherit; font-size:.84rem; font-weight:600;
  padding:7px 14px; border-radius:100px; cursor:pointer; transition:background .2s ease, border-color .2s ease, color .2s ease;
  background:var(--surface); color:var(--ink-soft); border:1px solid var(--line);
}
.ot-domain-chip.on{ background:var(--accent); color:#fff; border-color:var(--accent); }
.ot-domain-chip-n{ font-family:"JetBrains Mono",monospace; font-size:.74rem; font-weight:700; direction:ltr; color:var(--ink-soft); }
.ot-domain-chip.on .ot-domain-chip-n{ color:rgba(255,255,255,.75); }
.ot-row-dates{ display:flex; align-items:center; gap:18px; flex-wrap:wrap; }
.ot-row-date-k{ font-size:.7rem; color:var(--ink-soft); letter-spacing:.04em; margin-bottom:3px; }
.ot-row-date-v{ font-family:"JetBrains Mono",monospace; font-size:.86rem; font-weight:700; direction:ltr; color:var(--ink-soft); }
.ot-row-date-v.crit{ font-size:.94rem; color:var(--danger); }
.ot-row-foot{ display:flex; align-items:center; gap:10px; border-top:1px solid var(--surface-2); padding-top:9px; flex-wrap:wrap; }
.ot-row-pub-label{ font-family:"JetBrains Mono",monospace; font-size:.68rem; color:var(--ink-soft); direction:ltr; flex:none; }
.ot-row-pub-v{ font-family:"JetBrains Mono",monospace; font-size:.78rem; color:var(--ink-soft); direction:ltr; }
.ot-row-seen{ font-size:.78rem; color:var(--ink-soft); }
.ot-track-btn{
  font-family:inherit; font-size:.82rem; font-weight:600; padding:7px 14px; border-radius:8px;
  border:1px solid var(--line); background:var(--surface); color:var(--ink-soft); cursor:pointer;
  transition:border-color .2s ease, color .2s ease;
}
.ot-track-btn:hover{ border-color:var(--accent); color:var(--accent); }
.ot-row-buyer{ font-size:.86rem; color:var(--ink-soft); }

/* ---------- Tracking page: change digest + kanban pipeline board ---------- */
.trk-day{ margin-bottom:18px; }
.trk-day-head{ display:flex; align-items:center; gap:12px; margin-bottom:12px; }
.trk-day-date{ font-family:"JetBrains Mono",monospace; font-size:.8rem; font-weight:700; color:var(--ink); direction:ltr; }
.trk-day-rule{ height:1px; flex:1; background:var(--line); }
.trk-day-summary{ font-size:.78rem; color:var(--ink-soft); }
.trk-entries{ display:flex; flex-direction:column; gap:8px; }
.trk-entry{ background:var(--surface); border:1px solid var(--line); border-radius:10px; padding:15px 17px; display:flex; flex-direction:column; gap:9px; }
.trk-entry.quiet{ background:var(--surface-2); border-color:var(--surface-2); padding:10px 14px; gap:0; }
.trk-entry-head{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.trk-kind{ display:inline-flex; align-items:center; white-space:nowrap; font-size:.74rem; font-weight:700; padding:3px 10px; border-radius:100px; flex:none; }
.trk-title{ font-size:.95rem; font-weight:700; text-wrap:pretty; }
.trk-title.quiet{ font-size:.86rem; font-weight:500; color:var(--ink-soft); }
.trk-delta{ font-family:"JetBrains Mono",monospace; font-size:.78rem; font-weight:700; padding:2px 9px; border-radius:100px; background:var(--accent-soft); color:var(--accent); direction:ltr; }
.trk-desc{ font-size:.86rem; color:var(--ink-soft); line-height:1.55; text-wrap:pretty; }
.trk-entry-foot{ display:flex; align-items:center; justify-content:space-between; gap:14px; flex-wrap:wrap; }
.trk-src{ font-family:"JetBrains Mono",monospace; font-size:.72rem; color:var(--ink-soft); }
.trk-link{ font-size:.8rem; font-weight:600; }
.trk-columns{ display:grid; grid-template-columns:repeat(auto-fit,minmax(min(232px,100%),1fr)); gap:14px; align-items:start; }
.trk-col{ background:var(--surface-2); border:1px solid var(--line); border-radius:12px; padding:14px 14px 16px; min-height:160px; }
.trk-col-head{ display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:6px; }
.trk-col-label{ display:flex; align-items:center; gap:8px; }
.trk-col-dot{ width:9px; height:9px; border-radius:50%; display:inline-block; }
.trk-col-n{ font-family:"JetBrains Mono",monospace; font-size:.78rem; font-weight:700; color:var(--ink-soft); direction:ltr; }
.trk-col-total{ font-family:"JetBrains Mono",monospace; font-size:.86rem; font-weight:700; color:var(--accent2); direction:ltr; margin-bottom:12px; }
.trk-card{ background:var(--surface); border:1px solid var(--line); border-radius:10px; padding:12px 13px; display:flex; flex-direction:column; gap:7px; box-shadow:0 1px 2px rgba(16,24,39,.05); margin-bottom:9px; }
.trk-card-name{ font-size:.86rem; font-weight:700; line-height:1.35; text-wrap:pretty; }
.trk-card-body{ font-size:.76rem; color:var(--ink-soft); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.trk-card-foot{ display:flex; align-items:center; justify-content:space-between; gap:10px; border-top:1px solid var(--surface-2); padding-top:8px; }
.trk-card-value{ font-family:"JetBrains Mono",monospace; font-size:.82rem; font-weight:700; color:var(--accent2); direction:ltr; }
.trk-card-moves{ display:flex; gap:5px; }
.trk-move-btn{
  font-family:inherit; font-size:.68rem; font-weight:700; padding:3px 8px; border-radius:6px;
  border:1px solid var(--line); background:var(--surface); color:var(--ink-soft); cursor:pointer;
}
.trk-move-btn:hover{ border-color:var(--accent); color:var(--accent); }
.trk-col-empty{ font-size:.8rem; color:var(--ink-soft); text-align:center; padding:18px 8px; border:1px dashed var(--line); border-radius:9px; background:var(--paper); }

/* scope-editing sheet — slides down from behind the nav, real transform/opacity transitions
   (not display:none toggling) so the open/close motion actually plays */
.feed-sheet-overlay{
  position:fixed; inset:0; background:rgba(16,24,39,.5); z-index:28;
  opacity:0; pointer-events:none; transition:opacity .32s ease;
}
.feed-sheet-overlay.open{ opacity:1; pointer-events:auto; }
.feed-sheet{
  position:fixed; top:0; right:0; left:0; z-index:29; background:var(--paper);
  border-bottom:1px solid var(--line); box-shadow:0 20px 50px rgba(16,24,39,.28);
  transform:translateY(-101%); transition:transform .42s cubic-bezier(.2,.85,.2,1);
  max-height:92vh; overflow-y:auto;
}
.feed-sheet.open{ transform:translateY(0); }
.feed-sheet-inner{ max-width:1400px; margin:0 auto; padding:26px 32px 0; }
.feed-sheet-head{ display:flex; align-items:flex-end; justify-content:space-between; gap:24px; flex-wrap:wrap; margin-bottom:22px; }
.feed-sheet-eyebrow{ font-family:"JetBrains Mono",monospace; font-size:.68rem; letter-spacing:.16em; color:var(--signal); margin-bottom:10px; }
.feed-sheet-title{ font-size:1.7rem; font-weight:700; letter-spacing:-.028em; margin:0; }
.feed-sheet-stats{ display:flex; align-items:center; gap:26px; }
.feed-sheet-stat{ display:flex; align-items:baseline; gap:8px; }
.feed-sheet-num{ font-family:"JetBrains Mono",monospace; font-size:1.9rem; font-weight:700; color:var(--accent); direction:ltr; font-variant-numeric:tabular-nums; }
.feed-sheet-num.amber{ color:#8a6a1f; font-size:1.3rem; }
.feed-sheet-lab{ font-size:.84rem; color:var(--ink-soft); }
.feed-sheet-divider{ width:1px; height:30px; background:var(--line); }
.feed-sheet-steps{ display:grid; grid-template-columns:repeat(auto-fit,minmax(min(280px,100%),1fr)); gap:30px; padding-bottom:22px; }
.feed-sheet-footer{ border-top:1px solid var(--line); background:var(--surface); }
.feed-sheet-footer-inner{ display:flex; align-items:center; justify-content:space-between; gap:20px; flex-wrap:wrap; padding:14px 32px; max-width:1400px; margin:0 auto; }
.feed-sheet-hint{ font-size:.82rem; color:var(--ink-soft); }
.feed-sheet-actions{ display:flex; align-items:center; gap:10px; }
.feed-sheet-cancel{
  font-family:inherit; font-size:.88rem; font-weight:600; padding:12px 20px; border-radius:9px;
  border:1px solid var(--line); background:var(--surface); color:var(--ink-soft); cursor:pointer;
  transition:border-color .2s ease, color .2s ease;
}
.feed-sheet-cancel:hover{ border-color:var(--accent); color:var(--accent); }
.feed-sheet-apply{
  font-family:inherit; font-size:.94rem; font-weight:700; padding:13px 28px; border-radius:9px; border:0;
  cursor:not-allowed; background:var(--line); color:var(--ink-soft); transition:transform .2s ease, box-shadow .2s ease;
}
.feed-sheet-apply:not(:disabled){ cursor:pointer; background:var(--accent); color:#fff; box-shadow:0 2px 8px rgba(16,24,39,.2); }
.feed-sheet-apply:not(:disabled):hover{ transform:translateY(-1px); }

/* feed body: main column + sticky sidebar */
.feed-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(min(560px,100%),1fr)); gap:26px; align-items:start; margin-top:24px; }
.feed-main{ display:flex; flex-direction:column; gap:16px; min-width:0; }
.feed-head{ display:flex; align-items:flex-end; justify-content:space-between; gap:20px; flex-wrap:wrap; }
.feed-head-title-row{ display:flex; align-items:center; gap:10px; margin-bottom:6px; flex-wrap:wrap; }
.feed-h1{ font-size:1.5rem; font-weight:700; letter-spacing:-.028em; margin:0; }
.feed-new-badge{ font-size:.74rem; font-weight:700; padding:4px 11px; border-radius:100px; background:var(--accent2-soft); color:#7d6019; border:1px solid var(--accent2-border); }
.feed-last-scan{ margin:0; color:var(--ink-soft); font-size:.88rem; }
.feed-sort{ display:flex; align-items:center; gap:8px; }
.feed-sort-label{ font-size:.76rem; color:var(--ink-soft); white-space:nowrap; }
.feed-sort-tabs{ display:flex; gap:4px; }
.feed-sort-btn{
  font-family:inherit; font-size:.78rem; font-weight:600; padding:6px 12px; border-radius:7px;
  border:1px solid var(--line); background:var(--surface); color:var(--ink-soft); cursor:pointer; transition:background .2s ease, color .2s ease;
}
.feed-sort-btn.on{ background:#12161C; color:#fff; border-color:#12161C; }

.feed-chip-row{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.feed-chip{
  display:inline-flex; align-items:center; gap:7px; font-family:inherit; font-size:.84rem; font-weight:600;
  padding:8px 14px; border-radius:100px; cursor:pointer;
  transition:background .2s ease, color .2s ease, border-color .2s ease, transform .3s cubic-bezier(.34,1.56,.64,1), opacity .2s ease;
  background:var(--surface); color:var(--ink-soft); border:1.5px solid var(--line);
}
.feed-chip.on{ background:var(--accent); color:#fff; border-color:var(--accent); transform:scale(1.04); }
.feed-chip.on.hiconf{ background:var(--accent2); border-color:var(--accent2); }
.feed-chip.dim{ opacity:.45; }
.feed-chip-n{ font-family:"JetBrains Mono",monospace; font-size:.72rem; opacity:.65; direction:ltr; }

.feed-cards{ display:flex; flex-direction:column; gap:16px; }
.feed-card{
  background:var(--surface); border:1px solid var(--line); border-radius:12px; padding:18px 22px 16px;
  display:flex; flex-direction:column; gap:12px; cursor:pointer;
  animation:frRise .4s cubic-bezier(.2,.8,.2,1) both; transition:transform .22s ease, box-shadow .22s ease;
  box-shadow:0 1px 3px rgba(16,24,39,.05);
}
.feed-card:hover{ transform:translateY(-2px); box-shadow:0 8px 24px rgba(16,24,39,.1); }
.feed-card.gap{ border-inline-start:3px solid var(--danger); }
.feed-card.amber{ border-inline-start:3px solid var(--signal); }
.feed-card.neutral{ border-inline-start:3px solid var(--line); }
.feed-card-top{ display:flex; align-items:center; justify-content:space-between; gap:14px; flex-wrap:wrap; }
.feed-card-top-left{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.feed-stage{ font-size:.76rem; font-weight:700; padding:4px 11px; border-radius:100px; background:var(--surface-2); color:var(--ink-soft); }
.feed-stage.amber{ background:var(--signal-soft); color:#7d6019; }
.feed-newtag{ font-size:.72rem; font-weight:700; padding:3px 9px; border-radius:100px; background:var(--accent2-soft); color:#7d6019; border:1px solid var(--accent2-border); }
.feed-code{ font-family:"JetBrains Mono",monospace; font-size:.72rem; color:var(--ink-soft); direction:ltr; }
.feed-region{ font-size:.74rem; color:var(--ink-soft); background:var(--paper); border:1px solid var(--line); padding:4px 10px; border-radius:100px; max-width:300px; white-space:normal; text-wrap:pretty; line-height:1.35; }
.feed-card h2{ font-size:1.14rem; font-weight:700; margin:0; letter-spacing:-.01em; text-wrap:pretty; }
.feed-holder-row{ display:flex; align-items:center; gap:8px; font-size:.86rem; color:var(--ink-soft); flex-wrap:wrap; }
.feed-holder-name{ color:var(--ink); font-weight:600; }
.feed-shimmer{ display:inline-block; width:150px; height:.85em; border-radius:4px; background:linear-gradient(90deg,var(--ink-soft) 25%,var(--surface-2) 50%,var(--ink-soft) 75%); background-size:200% 100%; opacity:.35; animation:omShimmer 2.2s ease-in-out infinite; }
.feed-shimmer.value{ width:88px; height:.95em; }
@keyframes omShimmer{ 0%{ background-position:200% 0; } 100%{ background-position:-200% 0; } }

.feed-track{ display:flex; flex-direction:column; gap:5px; }
.feed-track-bars{ display:flex; gap:3px; height:7px; }
.feed-track-bar{ border-radius:3px; display:block; }
.feed-track-labs{ display:flex; gap:3px; }
.feed-track-lab{ min-width:0; display:flex; flex-direction:column; gap:1px; }
.feed-track-labtext{ font-size:.68rem; color:var(--ink-soft); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; max-width:100%; }
.feed-track-labtext.amber{ color:#8a6a1f; font-weight:700; }
.feed-track-date{ font-family:"JetBrains Mono",monospace; font-size:.64rem; color:var(--ink-soft); direction:ltr; white-space:nowrap; }
.feed-track-date.amber{ color:#8a6a1f; }

.feed-card-bottom{ display:flex; align-items:center; justify-content:space-between; gap:18px; flex-wrap:wrap; border-top:1px solid var(--surface-2); padding-top:14px; }
.feed-card-metrics{ display:flex; align-items:center; gap:24px; flex-wrap:wrap; }
.feed-metric-label{ font-size:.68rem; color:var(--ink-soft); letter-spacing:.04em; margin-bottom:2px; }
.feed-value{ font-family:"JetBrains Mono",monospace; font-weight:700; font-size:1.06rem; color:#8a6a1f; direction:ltr; }
.feed-conf-row{ display:flex; align-items:center; gap:8px; }
.feed-conf-track{ display:block; width:76px; height:5px; border-radius:3px; background:var(--surface-2); overflow:hidden; }
.feed-conf-bar{ display:block; height:100%; border-radius:3px; transition:width .5s ease; }
.feed-conf-val{ font-family:"Assistant",sans-serif; font-size:.86rem; font-weight:700; color:var(--accent); direction:rtl; }
.feed-window{ font-size:.9rem; font-weight:600; }
.feed-card-actions{ display:flex; align-items:center; gap:8px; }
.feed-btn-secondary{
  font-family:inherit; font-size:.84rem; font-weight:600; padding:8px 15px; border-radius:8px;
  border:1px solid var(--line); background:var(--surface); color:var(--ink-soft); cursor:pointer;
  transition:border-color .2s ease, color .2s ease;
}
.feed-btn-secondary:hover{ border-color:var(--accent); color:var(--accent); }
.feed-btn-primary{
  font-family:inherit; font-size:.84rem; font-weight:700; padding:9px 18px; border-radius:8px; border:0;
  cursor:pointer; background:var(--accent); color:#fff; transition:transform .2s ease, box-shadow .2s ease;
  box-shadow:0 2px 8px rgba(16,24,39,.16);
}
.feed-btn-primary:hover{ transform:translateY(-1px); }
.feed-why{ display:flex; gap:9px; align-items:flex-start; background:var(--paper); border:1px solid var(--surface-2); border-radius:8px; padding:10px 13px; }
.feed-why-label{ font-family:"JetBrains Mono",monospace; font-size:.68rem; color:var(--ink-soft); direction:ltr; flex:none; }
.feed-why-text{ font-size:.84rem; color:var(--ink-soft); text-wrap:pretty; }

.feed-empty, .feed-gate{ background:var(--surface); border-radius:10px; padding:30px 24px; text-align:center; color:var(--ink-soft); animation:frRise .35s ease both; }
.feed-empty{ border:1px dashed var(--line); }
.feed-gate{ border:1px dashed var(--line); border-radius:12px; padding:26px 24px; animation:frRise .4s ease both; }
.feed-empty-title{ font-size:1rem; font-weight:700; color:var(--ink); margin-bottom:6px; }
.feed-empty-body{ font-size:.88rem; max-width:56ch; margin:0 auto 16px; text-wrap:pretty; }
.feed-empty-cta{
  font-family:inherit; font-size:.86rem; font-weight:700; padding:10px 20px; border-radius:8px;
  border:1px solid var(--line); background:var(--surface); color:var(--accent); cursor:pointer;
  transition:border-color .2s ease, transform .2s ease;
}
.feed-empty-cta:hover{ border-color:var(--accent); transform:translateY(-1px); }
.feed-gate-title{ font-size:1.02rem; font-weight:700; margin-bottom:6px; }
.feed-gate-body{ font-size:.88rem; color:var(--ink-soft); max-width:62ch; margin:0 auto 16px; text-wrap:pretty; }
.feed-gate-cta{
  font-family:inherit; font-size:.94rem; font-weight:700; padding:12px 26px; border-radius:9px; border:0;
  cursor:pointer; background:var(--accent); color:#fff; animation:omCta 2.8s ease-in-out 3; transition:transform .2s ease;
}
@keyframes omCta{ 0%,100%{ box-shadow:0 2px 8px rgba(16,24,39,.18); } 50%{ box-shadow:0 8px 22px rgba(31,168,218,.4); } }

.feed-sidebar{ position:sticky; top:110px; display:flex; flex-direction:column; gap:14px; }
.feed-side-card{ background:var(--surface); border:1px solid var(--line); border-radius:12px; padding:18px 20px; }
.feed-side-title{ font-size:.72rem; letter-spacing:.1em; color:var(--accent); font-weight:700; margin-bottom:14px; }
.feed-side-title.muted{ color:var(--ink-soft); }
.feed-radar{ display:flex; flex-direction:column; gap:12px; }
.feed-radar-row-head{ display:flex; align-items:baseline; justify-content:space-between; gap:10px; margin-bottom:5px; }
.feed-radar-label{ font-size:.84rem; color:var(--ink-soft); }
.feed-radar-val{ font-family:"JetBrains Mono",monospace; font-size:.9rem; font-weight:700; direction:ltr; color:var(--ink); font-variant-numeric:tabular-nums; }
.feed-radar-track{ display:block; height:4px; border-radius:2px; background:var(--surface-2); overflow:hidden; }
.feed-radar-bar{ display:block; height:100%; border-radius:2px; transition:width .5s ease; }
.feed-breakdown{ display:flex; flex-direction:column; gap:9px; }
.feed-break-row{ display:flex; align-items:center; gap:10px; }
.feed-break-dot{ width:8px; height:8px; border-radius:50%; display:inline-block; flex:none; }
.feed-break-label{ font-size:.85rem; color:var(--ink-soft); flex:1; min-width:0; }
.feed-break-n{ font-family:"JetBrains Mono",monospace; font-size:.85rem; font-weight:700; direction:ltr; }
.feed-changelog{ background:var(--surface-2); border:1px dashed var(--line); border-radius:12px; padding:16px 18px; }
.feed-changelog-note{ font-size:.84rem; color:var(--ink-soft); line-height:1.5; text-wrap:pretty; }

@media (max-width:640px){
  .feed-nav, .feed-scopebar{ padding:0 16px; }
  .feed-scopebar{ top:auto; position:static; }
  .feed-nav{ position:static; }
}

/* ---------- market map (design "Market Map") ---------- */
.mm-search{
  border:1px solid var(--line); background:var(--surface); border-radius:8px; padding:9px 13px;
  font-family:inherit; font-size:.86rem; color:var(--ink); outline:none; width:220px;
}
.mm-card{ background:var(--surface); border:1px solid var(--line); border-radius:14px; padding:22px 26px 18px; }
.mm-plot-wrap{ position:relative; margin:0 0 34px; }
.mm-plot{
  position:relative; width:100%; aspect-ratio:16/10; background:var(--paper); border:1px solid var(--surface-2);
  border-radius:10px; overflow:hidden;
}
.mm-zone{ position:absolute; font-size:.68rem; font-weight:700; letter-spacing:.03em; color:var(--ink-soft); direction:rtl; max-width:34%; line-height:1.3; }
.mm-zone.tr{ top:12px; right:14px; text-align:right; }
.mm-zone.tl{ top:12px; left:14px; text-align:left; }
.mm-zone.br{ bottom:12px; right:14px; text-align:right; }
.mm-zone.bl{ bottom:12px; left:14px; text-align:left; }
.mm-divider{ position:absolute; background:var(--line); }
.mm-divider.v{ top:0; bottom:0; width:1px; left:50%; }
.mm-divider.h{ left:0; right:0; height:1px; top:50%; }
.mm-dot{
  position:absolute; border-radius:50%; border:2px solid var(--surface); box-sizing:border-box;
  transform:translate(-50%,-50%); cursor:pointer;
  transition:width .18s ease, height .18s ease, opacity .2s ease, box-shadow .2s ease;
  animation:frRise .45s cubic-bezier(.2,.8,.2,1) both;
}
.mm-tooltip{
  position:absolute; transform:translate(-50%,calc(-100% - 16px)); background:#12161C; color:#F7F4ED;
  border-radius:10px; padding:11px 14px; min-width:186px; z-index:9; pointer-events:none;
  box-shadow:0 8px 24px rgba(0,0,0,.28); direction:rtl; animation:frRise .16s ease both;
}
.mm-tooltip b{ display:block; font-size:.86rem; font-weight:800; margin-bottom:5px; font-family:"Rubik",sans-serif; }
.mm-tooltip-row{ display:flex; justify-content:space-between; gap:16px; opacity:.9; font-size:.76rem; }
.mm-tooltip-row span:last-child{ font-family:"JetBrains Mono",monospace; }
.mm-tooltip-lock{ margin-top:7px; padding-top:7px; border-top:1px solid rgba(255,255,255,.2); font-size:.74rem; color:var(--accent2-border); }
.mm-axis-label{ position:absolute; font-size:.72rem; color:var(--ink-soft); direction:rtl; white-space:nowrap; }
.mm-axis-label.x{ bottom:-26px; left:50%; transform:translateX(-50%); }
.mm-axis-label.y{ top:50%; left:-16px; transform:translateY(-50%) rotate(-90deg); transform-origin:left center; }
.mm-foot{ display:flex; align-items:center; justify-content:space-between; gap:20px; flex-wrap:wrap; border-top:1px solid var(--surface-2); padding-top:14px; }
.mm-legend{ display:flex; gap:18px; flex-wrap:wrap; font-size:.76rem; color:var(--ink-soft); }
.mm-legend-item{ display:inline-flex; align-items:center; gap:7px; }
.mm-legend-sw{ width:9px; height:9px; border-radius:50%; display:inline-block; }
.mm-caption{ font-size:.74rem; color:var(--ink-soft); text-wrap:pretty; max-width:52ch; }

.mm-panel{ background:var(--surface); border:1px solid var(--line); border-radius:12px; padding:18px 20px; animation:frRise .3s ease both; }
.mm-panel-head{ display:flex; align-items:flex-start; justify-content:space-between; gap:12px; margin-bottom:14px; }
.mm-panel-eyebrow{ font-size:.72rem; letter-spacing:.1em; color:var(--accent); font-weight:700; margin-bottom:6px; }
.mm-panel-name{ font-size:1.06rem; font-weight:800; letter-spacing:-.01em; text-wrap:pretty; }
.mm-panel-tier{ font-size:.74rem; font-weight:700; padding:4px 11px; border-radius:100px; white-space:nowrap; }
.mm-fact-row{ display:flex; align-items:baseline; justify-content:space-between; gap:12px; border-bottom:1px solid var(--surface-2); padding-bottom:8px; }
.mm-fact-row:last-child{ border-bottom:0; }
.mm-fact-k{ font-size:.8rem; color:var(--ink-soft); flex:1; min-width:0; }
.mm-fact-v{ font-family:"JetBrains Mono",monospace; font-size:.84rem; font-weight:700; direction:ltr; flex:none; }
.mm-fact-v.text{ font-family:"Assistant",sans-serif; direction:rtl; flex:1 1 55%; min-width:0; text-align:left; white-space:normal; text-wrap:pretty; line-height:1.45; }
.mm-flag{ margin-top:14px; font-size:.82rem; padding:10px 12px; border-radius:8px; text-wrap:pretty; background:var(--paper); border:1px solid var(--surface-2); color:var(--ink-soft); }
.mm-flag.on{ font-weight:700; color:var(--danger); background:var(--danger-soft); border-color:var(--danger-border); }
.mm-cta{
  width:100%; margin-top:14px; font-family:inherit; font-size:.9rem; font-weight:700; padding:12px;
  border-radius:9px; border:0; cursor:pointer; background:var(--accent); color:#fff;
  transition:transform .2s ease; box-shadow:0 2px 8px rgba(16,24,39,.18);
}
.mm-cta:hover{ transform:translateY(-1px); }
.mm-leaders{ display:flex; flex-direction:column; gap:2px; }
.mm-leader-row{
  display:flex; align-items:center; gap:10px; width:100%; font-family:inherit; font-size:.85rem;
  padding:8px 9px; border-radius:7px; border:0; cursor:pointer; background:transparent; color:var(--ink);
  transition:background .18s ease;
}
.mm-leader-row:hover{ background:var(--accent-soft); }
.mm-leader-rank{ font-family:"JetBrains Mono",monospace; font-size:.72rem; color:var(--ink-soft); direction:ltr; flex:none; }
.mm-leader-name{ flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; text-align:right; }
.mm-leader-vol{ font-family:"JetBrains Mono",monospace; font-size:.78rem; font-weight:700; color:#8a6a1f; direction:ltr; flex:none; }
.mm-locked-note{ font-size:.84rem; color:var(--ink-soft); text-align:center; padding:20px 8px; }

/* ---------- tender dossier (design "Tender Dossier") ---------- */
#dossier{ width:100vw; margin-inline:calc(50% - 50vw); }
.ds-subbar{
  display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap;
  padding:11px 32px; background:var(--surface); border-bottom:1px solid var(--line);
}
.ds-crumb{ display:flex; align-items:center; gap:10px; font-size:.85rem; color:var(--ink-soft); }
.ds-crumb a{ font-weight:600; }
.ds-sep{ color:var(--line); }
.ds-code{ font-family:"JetBrains Mono",monospace; font-size:.76rem; direction:ltr; color:var(--ink-soft); }
.ds-actions{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.ds-navbtn, .ds-ghost{
  font-family:inherit; font-size:.82rem; font-weight:600; padding:7px 14px; border-radius:8px;
  border:1px solid var(--line); background:var(--surface); color:var(--ink-soft); cursor:pointer;
  transition:border-color .2s ease, color .2s ease;
}
.ds-navbtn:hover, .ds-ghost:hover{ border-color:var(--accent); color:var(--accent); }
.ds-navbtn:disabled{ opacity:.4; cursor:default; }
.ds-navbtn:disabled:hover{ border-color:var(--line); color:var(--ink-soft); }
.ds-position{ font-family:"JetBrains Mono",monospace; font-size:.78rem; color:var(--ink-soft); direction:ltr; }
.ds-divider{ width:1px; height:22px; background:var(--line); margin:0 6px; }
.ds-primary{
  font-family:inherit; font-size:.84rem; font-weight:700; padding:8px 18px; border-radius:8px; border:0;
  cursor:pointer; background:var(--accent); color:#fff; transition:transform .2s ease, box-shadow .2s ease;
  box-shadow:0 2px 8px rgba(16,24,39,.18);
}
.ds-primary:hover{ transform:translateY(-1px); }
.ds-primary.pulse{ animation:omCta 2.8s ease-in-out infinite; }

.ds-wrap{ padding:28px 32px 60px; max-width:1000px; margin:0 auto; display:flex; flex-direction:column; gap:16px; }

.ds-hero{
  background:var(--surface); border:1px solid var(--line); border-radius:14px;
  border-inline-start:3px solid var(--signal); padding:24px 26px; display:flex; flex-direction:column; gap:16px;
}
.ds-hero-top{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.ds-stage{ font-size:.78rem; font-weight:700; padding:5px 13px; border-radius:100px; background:var(--signal-soft); color:#7d6019; }
.ds-region{ font-size:.76rem; color:var(--ink-soft); background:var(--paper); border:1px solid var(--line); padding:4px 11px; border-radius:100px; }
.ds-updated{ font-size:.78rem; color:var(--ink-soft); }
.ds-name{ font-size:1.62rem; font-weight:800; letter-spacing:-.018em; margin:0; line-height:1.25; text-wrap:pretty; }
.ds-headline{ margin:0; font-size:1rem; color:var(--ink); line-height:1.6; text-wrap:pretty; }
.ds-headline .ds-headline-b{ color:var(--ink-soft); }
.ds-metrics{ display:flex; align-items:center; gap:26px; flex-wrap:wrap; border-top:1px solid var(--surface-2); padding-top:16px; }
.ds-metric{ display:flex; flex-direction:column; }
.ds-dial-wrap{ flex-direction:row; align-items:center; gap:14px; }
.ds-dial{ position:relative; width:66px; height:66px; flex:none; }
.ds-dial-svg{ width:66px; height:66px; transform:rotate(-90deg); }
.ds-dial-track{ fill:none; stroke:var(--surface-2); stroke-width:7; }
.ds-dial-fill{ fill:none; stroke:var(--accent2); stroke-width:7; stroke-linecap:round; transition:stroke-dasharray .5s ease; }
/* Hebrew verbal label now (COPY.md: confidence is a 3-step verbal scale, never a printed
   score) — Assistant, not the Latin-only JetBrains Mono, and rtl not ltr. "בינונית" (7 letters)
   is the longest of the three labels, so the size is set to fit it inside the 66px ring. */
.ds-dial-text{ position:absolute; inset:0; display:flex; align-items:center; justify-content:center; font-family:"Assistant",sans-serif; font-size:.68rem; font-weight:700; color:var(--accent); direction:rtl; text-align:center; padding:0 4px; }
.ds-basis{ font-size:.88rem; color:var(--ink-soft); max-width:34ch; text-wrap:pretty; margin-top:3px; }
.ds-vdiv{ width:1px; height:44px; background:var(--surface-2); }
.ds-window{ font-size:1.06rem; font-weight:700; }

.ds-card{ background:var(--surface); border:1px solid var(--line); border-radius:14px; padding:22px 26px; }
.ds-card-head{ display:flex; align-items:baseline; justify-content:space-between; gap:14px; margin-bottom:6px; }
.ds-section-label{ font-size:.75rem; letter-spacing:.1em; color:var(--accent); font-weight:700; margin-bottom:18px; }
.ds-card-head .ds-section-label{ margin-bottom:0; }
.ds-hint{ font-size:.76rem; color:var(--ink-soft); }
.ds-hint.mono{ font-family:"JetBrains Mono",monospace; font-size:.72rem; direction:ltr; }

.ds-track-bars{ display:flex; gap:4px; height:10px; margin-bottom:8px; }
.ds-track-bar{ border-radius:4px; }
.ds-track-labs{ display:flex; gap:4px; }
.ds-track-lab{ display:flex; flex-direction:column; gap:2px; min-width:0; }
.ds-track-labtext{ font-size:.82rem; font-weight:600; color:var(--ink-soft); white-space:normal; text-wrap:pretty; max-width:100%; }
.ds-track-labtext.amber{ font-weight:700; color:#8a6a1f; }
.ds-track-date{ font-family:"JetBrains Mono",monospace; font-size:.74rem; color:var(--ink-soft); direction:ltr; white-space:nowrap; }

.ds-signals{ display:flex; flex-wrap:wrap; gap:8px; margin-top:14px; padding-bottom:16px; border-bottom:1px solid var(--surface-2); }
.ds-signal{ display:inline-flex; align-items:center; gap:8px; padding:7px 13px; border-radius:100px; background:var(--paper); border:1px solid var(--surface-2); }
.ds-signal.on{ background:var(--danger-soft); border-color:var(--danger-border); }
.ds-signal-dot{ width:8px; height:8px; border-radius:50%; background:var(--line); display:inline-block; flex:none; }
.ds-signal.on .ds-signal-dot{ background:var(--danger); }
.ds-signal-label{ font-size:.82rem; color:var(--ink-soft); }
.ds-signal-val{ font-family:"JetBrains Mono",monospace; font-size:.82rem; font-weight:700; color:var(--ink-soft); direction:ltr; }
.ds-signal.on .ds-signal-val{ color:var(--danger); }

.ds-why{ display:flex; flex-direction:column; gap:12px; margin-top:16px; }
.ds-why-card{ background:var(--paper); border:1px solid var(--surface-2); border-radius:10px; padding:15px 17px; animation:frRise .4s cubic-bezier(.2,.8,.2,1) both; }
.ds-why-head{ display:flex; align-items:center; gap:10px; margin-bottom:7px; }
.ds-why-num{ width:22px; height:22px; border-radius:50%; background:var(--accent); color:#fff; display:inline-flex; align-items:center; justify-content:center; font-family:"JetBrains Mono",monospace; font-size:.74rem; font-weight:700; flex:none; }
.ds-why-title{ font-size:1rem; font-weight:700; }
.ds-why-body{ margin:0 0 10px; font-size:.9rem; color:var(--ink-soft); line-height:1.6; text-wrap:pretty; }
.ds-why-src{ display:flex; align-items:center; gap:9px; border-top:1px solid var(--line); padding-top:9px; }
.ds-why-src-label{ font-family:"JetBrains Mono",monospace; font-size:.68rem; color:var(--ink-soft); direction:ltr; flex:none; }
.ds-why-src-val{ font-size:.8rem; color:var(--ink-soft); font-family:"JetBrains Mono",monospace; direction:ltr; }
.ds-why-lock{ display:flex; align-items:center; justify-content:space-between; gap:14px; flex-wrap:wrap; }
.ds-why-lock-text{ font-size:.84rem; color:var(--ink-soft); }
.ds-why-lock-cta{
  font-family:inherit; font-size:.82rem; font-weight:700; padding:8px 16px; border-radius:8px; border:0;
  cursor:pointer; background:var(--accent); color:#fff; transition:transform .2s ease;
}
.ds-why-lock-cta:hover{ transform:translateY(-1px); }

.ds-facts{ display:grid; grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr)); gap:14px 32px; }
.ds-fact{ display:flex; align-items:baseline; gap:10px; border-bottom:1px solid var(--surface-2); padding-bottom:9px; }
.ds-fact-k{ font-size:.8rem; color:var(--ink-soft); flex:0 1 auto; min-width:0; text-align:right; text-wrap:pretty; }
.ds-fact-v{ font-family:"JetBrains Mono",monospace; font-size:.84rem; font-weight:700; direction:ltr; flex:0 1 auto; text-align:right; white-space:nowrap; }
.ds-fact-v.text{ font-family:"Assistant",sans-serif; font-size:.84rem; font-weight:600; direction:rtl; text-align:right; white-space:normal; text-wrap:pretty; line-height:1.45; }

.ds-changelog{ display:flex; gap:14px; align-items:flex-start; background:var(--paper); border:1px dashed var(--line); border-radius:10px; padding:16px 18px; }
.ds-changelog-dot{ width:9px; height:9px; border-radius:50%; background:var(--ink-soft); margin-top:6px; flex:none; }
.ds-changelog-title{ font-size:.92rem; font-weight:700; margin-bottom:4px; }
.ds-changelog-note{ font-size:.86rem; color:var(--ink-soft); line-height:1.55; max-width:70ch; text-wrap:pretty; }

.ds-gaps{ display:flex; gap:12px; align-items:flex-start; background:var(--surface-2); border:1px dashed var(--line); border-radius:12px; padding:16px 18px; }
.ds-gaps-label{ font-family:"JetBrains Mono",monospace; font-size:.68rem; color:var(--ink-soft); direction:ltr; flex:none; margin-top:2px; }
.ds-gaps-title{ font-size:.86rem; font-weight:700; margin-bottom:4px; }
.ds-gaps-note{ font-size:.84rem; color:var(--ink-soft); line-height:1.55; text-wrap:pretty; }

/* =====================================================================================
   Mobile layer (2026-09-12). Patterns follow what the best comparable mobile products do
   (job-search / opportunity-tracking apps) and both platform guidelines: a bottom tab bar for
   the 3–5 primary destinations (thumb-reachable edge), filter chips in a single horizontally
   scrollable row near the top, filters/scope editing in a bottom sheet, full-width cards, and
   ≥44px tap targets. Appended last on purpose so it wins the cascade at equal specificity.
   ===================================================================================== */
html{ overflow-x:hidden; }
@media (max-width:640px){
  :root{ --page-x:16px; --page-top:12px; }
  body{ padding-bottom:calc(72px + env(safe-area-inset-bottom)); } /* room for the bottom tab bar */

  /* --- top bar: compact brand row only; the tabs move to the bottom --- */
  .feed-nav{ position:static; padding:0 var(--page-x); gap:8px; flex-wrap:nowrap; }
  .feed-nav-brand{ padding:12px 0; font-size:1rem; }

  /* --- bottom tab bar --- */
  .feed-nav-tabs{
    position:fixed; left:0; right:0; bottom:0; z-index:30; gap:0;
    background:var(--surface); border-top:1px solid var(--line);
    padding:6px 4px calc(6px + env(safe-area-inset-bottom));
    box-shadow:0 -6px 20px rgba(16,24,39,.06);
  }
  .feed-nav-tab{
    flex:1 1 0; min-width:0; margin:0; padding:6px 2px 4px; border-bottom:0; border-radius:10px;
    flex-direction:column; justify-content:center; gap:3px; position:relative;
    font-size:.68rem; font-weight:600; line-height:1.1; min-height:52px;
  }
  .feed-nav-tab.on{ color:var(--accent); background:var(--accent-soft); border-bottom:0; }
  .feed-nav-icon{ display:block; }
  .feed-nav-label{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; max-width:100%; }
  .feed-nav-badge{ position:absolute; top:2px; inset-inline-end:8px; padding:0 5px; font-size:.6rem; line-height:1.5; }

  /* --- scope bar: static, stats wrap under the pills --- */
  .feed-scopebar{ position:static; padding:10px var(--page-x); gap:10px; }
  .feed-scope-right{ gap:16px; width:100%; justify-content:flex-start; }
  .feed-scope-num{ font-size:1.25rem; }
  .feed-scope-change{ min-height:36px; }

  /* --- scope editing sheet: becomes a real bottom sheet --- */
  /* z-index above the bottom tab bar (30), otherwise the bar would cover the sheet's own footer */
  .feed-sheet-overlay{ z-index:40; }
  .feed-sheet{
    top:auto; bottom:0; z-index:41; border-bottom:0; border-top:1px solid var(--line);
    border-radius:18px 18px 0 0; transform:translateY(101%); max-height:92vh;
    display:flex; flex-direction:column; overflow:hidden; /* only .feed-sheet-inner scrolls */
  }
  .feed-sheet.open{ transform:translateY(0); }
  .feed-sheet-inner{ padding:18px var(--page-x) 0; overflow-y:auto; flex:1 1 auto; }
  .feed-sheet-head{ gap:12px; margin-bottom:14px; }
  .feed-sheet-title{ font-size:1.3rem; }
  .feed-sheet-num{ font-size:1.4rem; }
  .feed-sheet-steps{ gap:18px; padding-bottom:14px; }
  .feed-sheet-footer{ position:sticky; bottom:0; padding-bottom:env(safe-area-inset-bottom); }
  .feed-sheet-footer-inner{ padding:10px var(--page-x); }
  .feed-sheet-apply, .feed-sheet-cancel{ min-height:44px; flex:1 1 0; }
  .feed-sheet-actions{ display:flex; gap:8px; width:100%; }

  /* --- page headers --- */
  .feed-head{ gap:10px; }
  .feed-h1{ font-size:1.3rem; }
  .feed-last-scan{ font-size:.82rem; }
  .feed-grid{ gap:18px; margin-top:16px; }
  .feed-sidebar{ position:static; }

  /* --- filter chips: one scrollable row, not a wrapping cloud --- */
  .feed-chip-row, #ot-domain-chips{
    flex-wrap:nowrap; overflow-x:auto; -webkit-overflow-scrolling:touch; scroll-snap-type:x proximity;
    padding-bottom:4px; margin-inline:calc(-1 * var(--page-x)); padding-inline:var(--page-x);
    scrollbar-width:none;
  }
  .feed-chip-row::-webkit-scrollbar, #ot-domain-chips::-webkit-scrollbar{ display:none; }
  .feed-chip, .ot-domain-chip{ flex:none; scroll-snap-align:start; min-height:38px; }
  .feed-sort-tabs{ width:100%; }
  .feed-sort-btn{ flex:1 1 0; min-height:40px; }

  /* --- cards & tap targets --- */
  .feed-card{ padding:16px 16px 14px; }
  .feed-card-actions{ width:100%; }
  .feed-btn-secondary, .feed-btn-primary{ flex:1 1 0; min-height:44px; }
  .feed-card-metrics{ gap:14px; }
  .opp-card{ padding:16px 16px; }
  .ot-track-btn{ min-height:44px; flex:1 1 0; }
  .open-tender-link{ display:inline-flex; align-items:center; min-height:44px; padding:0 4px; }
  .ot-row-dates{ gap:12px; }
  .ot-public-band{ padding:10px var(--page-x); gap:8px; }
  .ot-public-stats{ gap:16px; width:100%; }
  .ot-public-num{ font-size:1.15rem; }

  /* --- tracking: kanban becomes a horizontal, snap-scrolling board (Trello pattern) --- */
  .trk-columns{
    display:flex; overflow-x:auto; -webkit-overflow-scrolling:touch; scroll-snap-type:x mandatory;
    gap:12px; margin-inline:calc(-1 * var(--page-x)); padding:0 var(--page-x) 8px; scrollbar-width:none;
  }
  .trk-columns::-webkit-scrollbar{ display:none; }
  .trk-col{ flex:0 0 84vw; scroll-snap-align:start; }
  .trk-move-btn{ min-width:40px; min-height:36px; }
  .trk-entry{ padding:13px 14px; }

  /* --- market map & dossier --- */
  .mm-search{ width:100%; font-size:1rem; } /* ≥16px stops iOS from zooming the page on focus */
  .mm-card{ padding:16px 14px 14px; }
  .ds-wrap{ padding:16px var(--page-x) 40px; }
  .ds-facts{ gap:12px; }

  /* --- search, auth modal, misc --- */
  #q{ font-size:1rem; }
  .modal-card{ width:min(92vw, 520px); margin:0 auto; }
  .opp-grid{ grid-template-columns:1fr; gap:10px; }
  h1{ font-size:1.5rem; }
}

/* Mid-size (tablets / small laptops): keep top tabs but let them scroll instead of wrapping. */
@media (min-width:641px) and (max-width:900px){
  .feed-nav-tabs{ overflow-x:auto; scrollbar-width:none; }
  .feed-nav-tabs::-webkit-scrollbar{ display:none; }
  .feed-nav-tab{ white-space:nowrap; margin:0 4px; }
}

/* A stat slot holding Hebrew text (a size-bucket label) instead of a number — set by
   setStatText() in app.js. Assistant + rtl, no mono letter-spacing. */
.feed-scope-num.text, .feed-sheet-num.text{ font-family:"Assistant",sans-serif; direction:rtl; letter-spacing:0; font-size:1rem; line-height:1.3; }

@media (max-width:640px){
  /* Feed page: the actual feed first; the showcase-report and example chips (older report-flow
     entry points) come after it instead of pushing the content below the fold. CSS-only reorder,
     same DOM. */
  #empty{ display:flex; flex-direction:column; }
  #empty .feed-grid{ order:-1; margin-top:8px; }
  #showcase-section, #empty .examples{ margin-top:18px; }
  /* Compact company search on phones */
  .search-wrap{ margin:12px 0 6px; }
  .search-hint{ font-size:.78rem; }
  /* Brand README: no shadow pulses — the tracking page's locked-state CTA reuses .fr-cta, which
     pulses on the onboarding screen; not here. */
  #trk-locked-cta{ animation:none; box-shadow:none; }
}

/* legal touchpoints */
.footer-legal{ display:flex; gap:14px; flex-wrap:wrap; margin:8px 0; }
.footer-legal a{ font-size:.8rem; color:var(--ink-soft); text-decoration:none; display:inline-block; padding:10px 2px; }
.footer-legal a:hover{ color:var(--accent); text-decoration:underline; }
.auth-consent{ font-size:.76rem; color:var(--ink-soft); line-height:1.55; margin:10px 0 0; text-wrap:pretty; }
.auth-consent a{ color:var(--accent-2); }

/* ---------- settings page (A5 minimum, 2026-09-12) ---------- */
.set-section{ background:var(--surface); border:1px solid var(--line); border-radius:12px; padding:18px 20px 16px; margin-bottom:16px; }
.set-section .section-label{ margin-bottom:10px; }
.set-row{ display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap; padding:10px 0; }
.set-row + .set-row{ border-top:1px solid var(--line); }
.set-row-main{ flex:1 1 260px; min-width:0; display:flex; flex-direction:column; gap:4px; }
.set-row-title{ font-size:.95rem; font-weight:700; }
.set-row-sub{ font-size:.82rem; color:var(--ink-soft); line-height:1.55; text-wrap:pretty; }
.set-row-sub a{ color:var(--accent-2); }
.set-fine{ font-size:.76rem; color:var(--ink-soft); line-height:1.55; margin:8px 0 0; text-wrap:pretty; }
.set-fine a{ color:var(--accent-2); }
/* the shared pill is styled for the dark TRACKING/PUBLIC DATA bands; on a light card it needs ink */
#set-scope-pills .feed-scope-pill{ background:var(--accent-soft); border-color:var(--line); color:var(--ink); animation:none; }
/* switch: a real checkbox for keyboard/screen readers, drawn as a track + thumb */
.set-switch{ display:inline-flex; align-items:center; gap:10px; cursor:pointer; min-height:44px; }
.set-switch input{ position:absolute; opacity:0; width:1px; height:1px; }
.set-switch-track{ width:46px; height:26px; border-radius:100px; background:var(--line); position:relative; transition:background .18s ease; flex:none; }
.set-switch-track::after{ content:""; position:absolute; top:3px; inset-inline-start:3px; width:20px; height:20px; border-radius:50%; background:var(--surface); box-shadow:0 1px 3px rgba(0,0,0,.25); transition:transform .18s ease; }
.set-switch input:checked + .set-switch-track{ background:var(--accent); }
.set-switch input:checked + .set-switch-track::after{ transform:translateX(-20px); }
[dir="ltr"] .set-switch input:checked + .set-switch-track::after{ transform:translateX(20px); }
.set-switch input:focus-visible + .set-switch-track{ outline:2px solid var(--accent2); outline-offset:2px; }
.set-switch input:disabled + .set-switch-track{ opacity:.5; }
.set-switch-label{ font-size:.86rem; font-weight:600; }
@media (prefers-reduced-motion: reduce){ .set-switch-track, .set-switch-track::after{ transition:none; } }

/* ---------- touch / mobile accessibility pass (2026-09-13) ----------
   Findings from real 390px emulation: chart dots are 10–20px hover targets, the quadrant
   lightbox was hover-only (inert on phones), dossier/auth controls sat at 28–36px, and iOS
   zooms into any input under 16px. The JS side (nearest-dot tap, tap-to-toggle tooltip,
   panel scroll-into-view) is in app.js; this is the sizing side. */
@media (hover: none), (pointer: coarse){
  .mm-tooltip{ display:none !important; }                       /* the panel is the surface on touch */
  .mm-dot::after, .quad-dot::after{ content:""; position:absolute; inset:-9px; border-radius:50%; } /* ≥28px hit area */
  .quad-dot:hover{ transform:translate(-50%, -50%); }
  .feed-card:hover, .mm-cta:hover, .ds-primary:hover, .feed-btn-primary:hover, .feed-empty-cta:hover, .ds-why-lock-cta:hover, .feed-sheet-apply:not(:disabled):hover{ transform:none; }
}
@media (max-width:640px){
  input, select, textarea{ font-size:16px; }                     /* stops iOS auto-zoom on focus */
  .modal-close{ width:44px; height:44px; }
  .ds-navbtn, .ds-ghost, .ds-primary, .icon-btn, .feed-chip, .ot-domain-chip, .fr-chip, .feed-sort-btn, .feed-scope-change, #auth-submit, .mm-leader-row{ min-height:44px; }
  .ds-actions, .ds-nav{ display:flex; flex-wrap:wrap; gap:8px; }
  .ds-actions > *, .ds-nav > *{ flex:1 1 auto; }
  .auth-consent a{ display:inline-block; padding:6px 0; }
  #ds-back{ display:inline-flex; align-items:center; min-height:44px; }
  .ds-why-lock-cta{ min-height:44px; }
  .quad-tooltip{ max-width:calc(100% - 24px); }
}

/* ---------- buyer page (ROADMAP M2, 2026-09-13) ---------- */
.buyer-link{ background:none; border:0; padding:0; font:inherit; color:var(--accent-2); text-decoration:underline; text-decoration-color:rgba(27,74,107,.35); text-underline-offset:3px; cursor:pointer; text-align:inherit; }
.buyer-link:hover{ text-decoration-color:var(--accent-2); }
.buyer-link.buyer-link-none{ color:inherit; text-decoration:none; cursor:default; }
.by-section{ background:var(--surface); border:1px solid var(--line); border-radius:12px; padding:18px 20px; margin:0 0 14px; }
.by-note{ font-size:.82rem; color:var(--ink-soft); line-height:1.6; text-wrap:pretty; margin:0 0 12px; }
.by-cal{ display:grid; grid-template-columns:repeat(12, 1fr); gap:6px; align-items:end; padding:8px 0 0; }
.by-cal-col{ display:flex; flex-direction:column; align-items:center; gap:4px; }
.by-cal-bar{ width:100%; max-width:26px; background:var(--accent2); border-radius:4px 4px 2px 2px; }
.by-cal-n{ font-family:"JetBrains Mono",monospace; font-size:.74rem; font-weight:700; min-height:1em; }
.by-cal-m{ font-size:.66rem; color:var(--ink-soft); white-space:nowrap; }
.by-list{ display:flex; flex-direction:column; gap:8px; }
.by-row{ display:flex; align-items:center; justify-content:space-between; gap:14px; padding:12px 14px; border:1px solid var(--line); border-radius:10px; background:var(--paper); flex-wrap:wrap; }
.by-row.active{ border-inline-start:4px solid var(--accent2); }
.by-row-main{ flex:1 1 240px; min-width:0; display:flex; flex-direction:column; gap:3px; }
.by-row-title{ font-weight:700; font-size:.95rem; text-wrap:pretty; display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.by-row-sub{ font-size:.8rem; color:var(--ink-soft); line-height:1.5; }
.by-tag{ font-size:.7rem; font-weight:700; padding:2px 8px; border-radius:100px; background:var(--accent2-soft); color:#7d6019; }
.by-company{ color:var(--ink); text-decoration:none; }
.by-company:hover{ color:var(--accent); text-decoration:underline; }
@media (max-width:640px){
  .by-cal{ gap:3px; }
  .by-cal-m{ font-size:.58rem; transform:rotate(-45deg); transform-origin:top center; margin-top:8px; height:28px; }
  .buyer-link{ min-height:0; padding:4px 0; }
}

/* ---------- coverage lines (ROADMAP M8) ---------- */
.coverage-line{ font-size:.82rem; color:var(--ink-soft); line-height:1.6; margin:6px 0 0; text-wrap:pretty; }
.fr-coverage{ font-size:.8rem; color:rgba(255,255,255,.82); line-height:1.6; text-wrap:pretty; }
.fr-coverage-eyebrow{ display:block; font-family:"JetBrains Mono",monospace; font-size:.62rem; letter-spacing:.14em; opacity:.6; direction:ltr; text-align:right; margin-bottom:4px; }
.pilot-coverage{ font-size:.84rem; opacity:.85; margin:0; line-height:1.6; text-wrap:pretty; }

/* ---------- tracked tenders (ROADMAP M3) ---------- */
.ot-track-btn.on{ background:var(--accent); color:#fff; border-color:var(--accent); }
.trk-tenders-head{ display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; margin:0 0 14px; }
.trk-tender-actions{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
@media (max-width:640px){ .trk-tender-actions{ width:100%; justify-content:flex-start; } }
