/* Imagineear CRM — brand tokens lifted from imagineear.com (2026-07):
   Plus Jakarta Sans, purple-led palette (#9637CB primary, #5C068C deep,
   #D3FF6A lime highlight), warm purple-greys for text. */

@font-face {
  font-family: "Plus Jakarta Sans";
  font-style: normal;
  font-weight: 200 800;
  font-display: swap;
  src: url("PlusJakartaSans.7660bd9909fb.woff2") format("woff2");
}

:root {
  --ink: #3b2d47;         /* purple-tinted near-black */
  --ink-2: #5b4966;       /* secondary text */
  --muted: #83778b;
  --line: #e9e1f2;
  --wash: #f8f5fb;
  --surface: #ffffff;
  --accent: #9637cb;      /* Imagineear primary purple */
  --accent-strong: #7a2ea4;
  --deep: #5c068c;
  --lime: #d3ff6a;
  --good: #1a7f4e;        /* active */
  --warn: #b45309;        /* dormant / pending */
  --info: #6b5a8e;        /* archive */
}
* { box-sizing: border-box; }
/* keyboard users get a visible ring; mouse clicks stay clean */
a:focus-visible, button:focus-visible, input:focus-visible,
select:focus-visible, textarea:focus-visible, summary:focus-visible {
  outline: 2px solid var(--accent); outline-offset: 1px; border-radius: 2px;
}
.skip-link { position: absolute; left: -9999px; top: 0; z-index: 50;
  background: var(--deep); color: #fff; padding: 0.5rem 1rem;
  border-radius: 0 0 8px 0; font-weight: 600; }
.skip-link:focus { left: 0; }
/* Reserve the scrollbar gutter permanently: content appearing below the
   fold (map detail panel, filtered tables) must never summon a scrollbar
   that reflows the whole page sideways. */
html { scrollbar-gutter: stable; }
body {
  margin: 0; background: var(--surface); color: var(--ink);
  font: 15.5px/1.55 "Plus Jakarta Sans", "Inter", -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;
}
main { max-width: 1520px; margin: 0 auto; padding: 2rem 1.5rem 4rem; }
a { color: var(--accent); text-decoration: none; }
a:hover { text-decoration: underline; }
h1 { font-size: 1.9rem; font-weight: 700; letter-spacing: -0.02em; margin: 0.2rem 0; }
h2 { font-size: 1.05rem; font-weight: 650; margin: 0 0 0.6rem; }
h3 { font-size: 0.9rem; font-weight: 600; color: var(--ink-2); margin: 1rem 0 0.3rem; }
.muted { color: var(--muted); font-size: 0.9rem; }

/* header */
.site-head {
  display: flex; justify-content: space-between; align-items: center;
  padding: 0.8rem 1.5rem; border-bottom: 1px solid var(--line);
  position: sticky; top: 0; background: rgba(255,255,255,0.94); backdrop-filter: blur(6px);
  z-index: 5;
}
.brand { font-weight: 750; font-size: 1.15rem; letter-spacing: -0.02em; color: var(--ink);
         display: inline-flex; align-items: center; gap: 0.5rem; }
.brand-lg { font-size: 1.5rem; }
.brand-dot { color: var(--accent); }
.brand-app { color: var(--muted); font-weight: 500; margin-left: 0.15rem; }
.logo-img { height: 26px; width: auto; display: block; }
.logo-lg { height: 34px; margin: 0 auto 0.4rem; }
.brand-suffix { color: var(--muted); font-weight: 600; font-size: 0.95rem;
                letter-spacing: 0.08em; text-transform: uppercase; }
.site-head nav { display: flex; gap: 1.4rem; align-items: center; }
.site-head nav a { color: var(--ink-2); font-size: 0.95rem; }
.site-head nav a.active { color: var(--accent); font-weight: 650; }
.inline { display: inline; }
.linklike { background: none; border: 0; color: var(--ink-2); font: inherit; font-size: 0.95rem; cursor: pointer; padding: 0; }
.linklike:hover { text-decoration: underline; }
.site-foot { border-top: 1px solid var(--line); margin-top: 3rem; padding: 1.2rem 1.5rem; }
.site-foot p { color: var(--muted); font-size: 0.8rem; max-width: 1520px; margin: 0 auto; }

/* quick filters */
.quick-chips { display: flex; flex-wrap: wrap; gap: 0.45rem; margin-bottom: 1rem; }
.quick-chips a {
  padding: 0.32rem 0.85rem; border-radius: 999px; font-size: 0.84rem; font-weight: 600;
  color: var(--ink-2); background: var(--wash); border: 1px solid var(--line);
}
.quick-chips a:hover { border-color: var(--accent); color: var(--accent); text-decoration: none; }
.quick-chips a.active { background: var(--deep); border-color: var(--deep); color: #fff; }

/* filters */
.filters { display: flex; flex-wrap: wrap; gap: 0.6rem; align-items: center; margin-bottom: 0.8rem; }
.filters input[type=search] { flex: 2 1 240px; }
.filters input, .filters select, .filters button, .login-card input, .login-card button {
  font: inherit; padding: 0.5rem 0.7rem; border: 1px solid var(--line);
  border-radius: 8px; background: var(--surface); color: var(--ink);
}
.filters button, .login-card button {
  background: var(--deep); color: #fff; border-color: var(--deep); cursor: pointer; font-weight: 600;
}
.filters button:hover, .login-card button:hover { background: var(--accent); border-color: var(--accent); }
.check { font-size: 0.85rem; color: var(--ink-2); display: flex; gap: 0.3rem; align-items: center; }
/* secondary cuts fold behind one line; the drawer spans the full form row */
.adv-filters { flex: 1 1 100%; }
.adv-filters summary { cursor: pointer; color: var(--muted); font-size: 0.85rem;
                       width: max-content; }
.adv-filters summary:hover { color: var(--accent); }
.adv-filters[open] summary { margin-bottom: 0.6rem; }
.adv-row { display: flex; flex-wrap: wrap; gap: 0.6rem; align-items: center; }
.result-count { color: var(--muted); font-size: 0.85rem; margin: 0.4rem 0; }

/* table */
.table-wrap { overflow-x: auto; border: 1px solid var(--line); border-radius: 12px; }
table { border-collapse: collapse; width: 100%; font-size: 0.9rem; }
th { text-align: left; font-weight: 600; color: var(--ink-2); font-size: 0.76rem;
     text-transform: uppercase; letter-spacing: 0.04em; padding: 0.65rem 0.8rem;
     border-bottom: 1px solid var(--line); background: var(--wash); white-space: nowrap; }
th a { color: inherit; display: inline-flex; gap: 0.25rem; align-items: baseline; }
th a:hover { color: var(--accent); text-decoration: none; }
th .arrow { color: var(--accent); font-size: 0.7rem; }
td { padding: 0.5rem 0.8rem; border-bottom: 1px solid var(--line); vertical-align: top; }
tbody tr { cursor: pointer; }
tbody tr:hover { background: var(--wash); }
tbody tr:last-child td { border-bottom: 0; }
.num { text-align: right; font-variant-numeric: tabular-nums; }
.contact-cell { min-width: 110px; max-width: 200px; overflow-wrap: anywhere; font-size: 0.82rem; }
.nowrap { white-space: nowrap; }
table.mini { font-size: 0.85rem; }
code { background: var(--wash); padding: 0.1rem 0.3rem; border-radius: 4px; font-size: 0.85em; }

/* star / shortlist toggle */
.star-cell { width: 2rem; padding-right: 0.1rem; }
.star-btn { background: none; border: 0; cursor: pointer; font-size: 1.05rem; line-height: 1;
            color: #c9b6dc; padding: 0.1rem 0.2rem; }
.star-btn:hover { color: var(--accent); transform: scale(1.15); }
.star-btn.on { color: var(--accent); }

/* chips — every chip carries its label text; color is reinforcement only */
.chip { display: inline-block; padding: 0.12rem 0.55rem; border-radius: 999px;
        font-size: 0.74rem; font-weight: 600; background: var(--wash); color: var(--ink-2);
        border: 1px solid var(--line); white-space: nowrap; }
.chip-customer { background: #f4eafb; color: var(--deep); border-color: #e2cdf2; }
.chip-archive-lead { background: #f0edf6; color: var(--info); border-color: #ded6ec; }
.chip-archive-internal, .chip-internal { background: var(--wash); color: var(--muted); }
.chip-s-active { background: #e9f6ef; color: var(--good); border-color: #cdeadb; }
.chip-s-dormant { background: #fdf3e7; color: var(--warn); border-color: #f5e0c4; }
.chip-s-archive-only, .chip-s-archive { background: #f0edf6; color: var(--info); border-color: #ded6ec; }
.chip-ref { font-family: ui-monospace, monospace; }
.chip-src { text-transform: uppercase; font-size: 0.64rem; }
.chip-internal-tag { background: #fdf3e7; color: var(--warn); border-color: #f5e0c4; }
.chip-inactive { color: var(--muted); }
.chip-xp3-active { background: #f4eafb; color: var(--deep); border-color: #e2cdf2; }
.chip-xp3-former { background: var(--wash); color: var(--ink-2); border-color: #d9cbe8; }
.chip-drive-done { background: #e9f6ef; color: var(--good); border-color: #cdeadb; }
.chip-drive-pending { background: #fdf3e7; color: var(--warn); border-color: #f5e0c4; }

/* shortlist page */
.lead-form { display: flex; gap: 0.4rem; align-items: center; flex-wrap: wrap; }
.lead-form select, .lead-form input[type=text] {
  font: inherit; font-size: 0.84rem; padding: 0.3rem 0.45rem;
  border: 1px solid var(--line); border-radius: 6px; background: var(--surface); color: var(--ink);
}
.lead-form input[type=text] { width: 210px; }
.lead-form button { font: inherit; font-size: 0.8rem; font-weight: 600; padding: 0.3rem 0.7rem;
  border: 1px solid var(--deep); border-radius: 6px; background: var(--deep); color: #fff; cursor: pointer; }
.lead-form button:hover { background: var(--accent); border-color: var(--accent); }
.lead-new { color: var(--ink-2); }
.lead-contacted { color: var(--accent-strong); }
.lead-won { color: var(--good); }
.lead-lost { color: var(--muted); }
.empty-state { background: var(--wash); border: 1px dashed var(--line); border-radius: 12px;
               padding: 2rem; text-align: center; color: var(--ink-2); margin-top: 1rem; }
.detail-meta { margin: 0.2rem 0 0.7rem; }
.action-bar { margin-top: 0.2rem; }
.quality-row { font-size: 0.85rem; margin-bottom: 0.35rem; }
.quality-row .linklike { font-size: 0.8rem; color: var(--accent); margin-right: 0.4rem; }
.badge-pending { background: var(--accent); color: #fff; border-radius: 999px;
                 padding: 0.05rem 0.45rem; font-size: 0.72rem; font-weight: 700; }

/* detail */
.crumb { margin: 0 0 0.6rem; }
.detail-head { margin-bottom: 1.4rem; }
.chips { display: flex; gap: 0.4rem; flex-wrap: wrap; margin: 0.5rem 0; }
.detail-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 1rem; }
.card { border: 1px solid var(--line); border-radius: 12px; padding: 1.1rem 1.2rem; background: var(--surface); }
.card-wide { grid-column: 1 / -1; }
ul.plain, ul.contact-list { margin: 0; padding-left: 1.1rem; }
ul.contact-list { list-style: none; padding-left: 0; }
ul.contact-list li { padding: 0.3rem 0; border-bottom: 1px dashed var(--line); }
ul.contact-list li:last-child { border-bottom: 0; }
.rawnote { background: var(--wash); border-radius: 8px; padding: 0.7rem; white-space: pre-wrap;
           font-size: 0.82rem; color: var(--ink-2); max-height: 220px; overflow-y: auto; }
.notice { background: #f4eafb; border: 1px solid #e2cdf2; border-radius: 8px;
          padding: 0.8rem 1rem; font-size: 0.88rem; margin-top: 0.8rem; }
.error { color: #b3261e; font-size: 0.9rem; }

/* world map */
.map-hero { position: relative; border-radius: 16px; overflow: hidden;
            background: radial-gradient(120% 120% at 50% 30%, #3d1259 0%, #2a0a3d 55%, #1c0629 100%);
            border: 1px solid var(--line); }
.map-hero canvas { display: block; width: 100%; height: min(74vh, 720px); cursor: grab; }
.map-hero canvas.dragging { cursor: grabbing; }
/* 2D overlay that draws cluster counts in lockstep with the GL frame */
.map-hero canvas.globe-labels { position: absolute; left: 0; top: 0;
                                pointer-events: none; cursor: default; }
.map-overlay { position: absolute; top: 1rem; left: 1.2rem; color: #e9dcf5; pointer-events: none; }
.map-overlay h1 { color: #fff; font-size: 1.4rem; margin: 0; }
.map-overlay p { margin: 0.15rem 0 0; font-size: 0.82rem; color: #bfa8d4; }
/* The overlay is click-through so the globe stays draggable under the text —
   the filter chip rows must opt back IN or they're unclickable. */
.map-overlay .chips { pointer-events: auto; margin-top: 0.5rem; align-items: center; }
.map-overlay .chips .chip { background: rgba(20, 5, 30, 0.75); border-color: #6b3e8f; color: #e9dcf5; }
.map-overlay .chips .chip.chip-xp3-active { background: #d3ff6a; color: #1c0b28; border-color: #d3ff6a; }
.map-legend { position: absolute; bottom: 1rem; left: 1.2rem; display: flex; gap: 0.9rem;
              font-size: 0.78rem; color: #cdbade; pointer-events: none; }
.map-legend .dot { display: inline-block; width: 0.6rem; height: 0.6rem; border-radius: 50%;
                   margin-right: 0.3rem; vertical-align: -1px; }
.map-tooltip { position: absolute; padding: 0.4rem 0.7rem; background: rgba(20,5,30,0.92);
               border: 1px solid #6b3e8f; border-radius: 8px; color: #fff; font-size: 0.82rem;
               pointer-events: none; transform: translate(-50%, -130%); white-space: nowrap;
               display: none; }
.map-tooltip .sub { color: #bfa8d4; font-size: 0.72rem; }
.map-zoom { position: absolute; bottom: 1rem; right: 1.2rem; display: flex; flex-direction: column; gap: 0.35rem; }
.map-zoom button { width: 2.1rem; height: 2.1rem; border-radius: 8px; border: 1px solid #6b3e8f;
                   background: rgba(20,5,30,0.8); color: #e9dcf5; font-size: 1.15rem; cursor: pointer; }
.map-zoom button:hover { background: #5c068c; }
/* min-height damps the height ratchet as pins with different-sized panels
   swap in; overflow-anchor stops the browser re-adjusting the reader's
   scroll position around the replaced content (the "page seeks around on
   pin click" bug). */
.map-detail { border: 1px solid var(--line); border-radius: 12px; padding: 1.1rem 1.3rem;
              margin-top: 1rem; background: var(--surface);
              min-height: 320px; overflow-anchor: none; }
.map-detail-head { display: flex; gap: 0.8rem; align-items: baseline; flex-wrap: wrap; }
/* on-map cluster member chooser: rides its cluster (globe.js placePop);
   capped + scrolled so a London-sized stack stays a small card */
.globe-pop { position: absolute; z-index: 5; width: 230px; max-height: 260px;
             overflow-y: auto; background: rgba(20, 5, 30, 0.92);
             border: 1px solid #6b3e8f; border-radius: 10px;
             padding: 0.35rem 0 0.4rem; color: #e9dcf5; font-size: 0.82rem; }
.globe-pop .gp-head { padding: 0.25rem 0.7rem 0.35rem; color: #b9a6cc;
                      font-size: 0.7rem; text-transform: uppercase;
                      letter-spacing: 0.05em; }
.globe-pop ul { list-style: none; margin: 0; padding: 0; }
.globe-pop li { padding: 0.3rem 0.7rem; cursor: pointer; display: flex;
                gap: 0.5rem; justify-content: space-between; align-items: baseline; }
.globe-pop li:hover { background: rgba(211, 255, 106, 0.12); }
.globe-pop li.gp-cur { color: #d3ff6a; font-weight: 600; }
.globe-pop .gp-score { color: #b9a6cc; font-size: 0.72rem; flex-shrink: 0; }
.map-detail-head h2 { margin: 0; font-size: 1.25rem; }
.md-open { margin-left: auto; font-weight: 600; white-space: nowrap; }
.map-detail-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
                   gap: 1rem; margin-top: 0.6rem; }
.map-detail .pitch-stats { margin: 0.7rem 0 0.4rem; }
.map-detail .pitch-stat { padding: 0.5rem 0.8rem; }
.map-detail .pitch-num { font-size: 1.25rem; }
.md-actions { margin-left: auto; white-space: nowrap; display: flex; gap: 1rem; font-weight: 600; }
.contact-x { color: var(--muted); font-size: 0.8rem; margin-left: 0.3rem; }
.contact-x:hover { color: #b3261e; text-decoration: none; }
.contact-add { margin-top: 0.8rem; padding-top: 0.8rem; border-top: 1px dashed var(--line); }
.contact-add input[type=text] { width: 140px; }

/* login */
.login-body { display: grid; place-items: center; min-height: 100vh; background: var(--wash); margin: 0;
              font: 16px/1.55 "Plus Jakarta Sans", "Inter", -apple-system, "Segoe UI", Roboto, sans-serif;
              color: var(--ink); }
.login-card { background: var(--surface); border: 1px solid var(--line); border-radius: 14px;
              padding: 2.2rem 2.4rem; width: min(92vw, 380px);
              box-shadow: 0 10px 40px rgba(92,6,140,0.10); text-align: initial; }
.login-card .brand-lg { justify-content: center; display: flex; }
.login-card label { display: block; margin: 0.9rem 0 0; font-size: 0.85rem; color: var(--ink-2); }
.login-card input { width: 100%; margin-top: 0.25rem; }
.login-card button { width: 100%; margin-top: 1.2rem; }
.sso-btn { display: block; text-align: center; width: 100%; margin-top: 1.2rem;
           padding: 0.6rem; border-radius: 8px; background: var(--deep); color: #fff;
           font-weight: 600; }
.sso-btn:hover { background: var(--accent); text-decoration: none; }
.sso-hint { text-align: center; margin: 0.5rem 0 0; }
.breakglass { margin-top: 1.4rem; border-top: 1px solid var(--line); padding-top: 0.8rem; }
.breakglass summary { cursor: pointer; color: var(--muted); font-size: 0.82rem; }

/* today + funnel + board */
.funnel { display: flex; gap: 0.7rem; flex-wrap: wrap; margin: 1rem 0 1.4rem; }
.funnel-stage { flex: 1 1 110px; background: var(--wash); border: 1px solid var(--line);
                border-radius: 12px; padding: 0.7rem 0.9rem; }
.funnel-stage:hover { border-color: var(--accent); text-decoration: none; }
.funnel-active { background: var(--deep); border-color: var(--deep); }
.funnel-active .pitch-num, .funnel-active .pitch-label { color: #fff; }
.funnel-total { border-style: dashed; }
.today-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(360px, 1fr)); gap: 1rem; }
.activity-list li { font-size: 0.88rem; }
.board-head { display: flex; gap: 1rem; align-items: baseline; }
.board { display: grid; grid-template-columns: repeat(5, 1fr); gap: 0.8rem; align-items: start; }
.board-col { background: var(--wash); border: 1px solid var(--line); border-radius: 12px;
             padding: 0.7rem; min-height: 220px; }
.board-col h3 { margin: 0 0 0.6rem; }
.board-col.drop { border-color: var(--accent); background: #f4eafb; }
.board-card { background: var(--surface); border: 1px solid var(--line); border-radius: 10px;
              padding: 0.55rem 0.7rem; margin-bottom: 0.55rem; cursor: grab; }
.board-card-meta { font-size: 0.78rem; margin-top: 0.2rem; }
@media (max-width: 900px) { .board { grid-template-columns: 1fr 1fr; } }

/* pitch pack */
.pitch { max-width: 820px; margin: 0 auto; }
.pitch-toolbar { display: flex; justify-content: space-between; max-width: 820px;
                 margin: 0 auto 1rem; }
.pitch-hero { background: linear-gradient(135deg, #f4eafb 0%, #faf6ff 55%, #f3fbe4 100%);
              border: 1px solid var(--line); border-radius: 16px;
              padding: 1.6rem 1.8rem 1.4rem; margin-bottom: 1.4rem; }
.pitch-hero-top { display: flex; justify-content: space-between; align-items: flex-start;
                  margin-bottom: 1rem; }
.pitch-meta { text-align: right; color: var(--muted); font-size: 0.78rem; margin: 0; line-height: 1.5; }
.pitch-hero h1 { color: var(--deep); font-size: 2.2rem; margin: 0; }
.pitch-sub { color: var(--ink-2); margin: 0.35rem 0 0; }
.pitch-lede { font-size: 1.08rem; line-height: 1.65; }
.pitch-stats { display: flex; gap: 0.9rem; flex-wrap: wrap; margin: 1.2rem 0 1.6rem; }
.pitch-stat { flex: 1 1 130px; background: var(--wash); border: 1px solid var(--line);
              border-radius: 12px; padding: 0.8rem 1rem; }
.pitch-num { display: block; font-size: 1.6rem; font-weight: 750; color: var(--accent);
             letter-spacing: -0.02em; }
.pitch-label { color: var(--ink-2); font-size: 0.78rem; }
.pitch-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1.2rem 2rem; margin-top: 1rem; }
.pitch-grid section h2 { color: var(--deep); border-bottom: 2px solid #e2cdf2; padding-bottom: 0.3rem; }
.pitch-offer { background: var(--deep); color: #fff; border-radius: 16px;
               padding: 1.4rem 1.6rem; margin-top: 1.8rem; }
.pitch-offer h2 { color: #fff; margin-top: 0; }
.pitch-offer .muted { color: #cdbade; }
.pitch-offer-cols { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.2rem;
                    font-size: 0.92rem; line-height: 1.5; }
.pitch-offer-cols strong { color: var(--lime); }
.pitch-foot { border-top: 1px solid var(--line); margin-top: 1.6rem; padding-top: 0.8rem;
              color: var(--muted); font-size: 0.85rem; }
.wrapcode { white-space: normal; word-break: break-all; font-size: 0.72rem; }
@media print {
  .noprint, .site-head, .site-foot { display: none !important; }
  main { padding: 0; max-width: none; }
  body { font-size: 12px; }
  .pitch-grid { grid-template-columns: 1fr 1fr; }
  .pitch-hero, .pitch-offer, .pitch-stat {
    print-color-adjust: exact; -webkit-print-color-adjust: exact;
  }
  .pitch-offer { break-inside: avoid; }
}

@media (max-width: 640px) {
  .site-head { flex-direction: column; gap: 0.5rem; }
  .site-head nav { flex-wrap: wrap; gap: 0.7rem 1rem; justify-content: center; }
  main { padding: 1.2rem 0.8rem 3rem; }
  .lead-form input[type=text] { width: 100%; }
  h1 { font-size: 1.45rem; }
  .filters input[type=search] { flex-basis: 100%; }
  .filters select { flex: 1 1 45%; }
  .quick-chips { overflow-x: auto; flex-wrap: nowrap; padding-bottom: 0.3rem;
                 -webkit-overflow-scrolling: touch; }
  .quick-chips a { white-space: nowrap; }
  .detail-grid, .map-detail-grid { grid-template-columns: 1fr; }
  .adv-row select { flex: 1 1 45%; }
  .map-hero canvas { height: 58vh; }
  .pitch-stats { flex-wrap: wrap; }
}
/* phones (R-064): the directory table scrolls in its wrap; everything else
   stacks. 390px-wide usable is the acceptance bar. */
@media (max-width: 480px) {
  .detail-head h1 { font-size: 1.25rem; }
  .chips { gap: 0.3rem; }
  td, th { padding: 0.4rem 0.5rem; }
  .map-overlay { max-width: 92vw; }
  .map-legend { display: none; }
}

/* score-first directory: the badge is the anchor of every row */
.score-badge { display: inline-block; min-width: 2.3rem; text-align: center;
  padding: 0.14rem 0.45rem; border-radius: 999px; font-weight: 700;
  font-size: 0.82rem; font-variant-numeric: tabular-nums; }
.score-hot { background: var(--deep); color: #fff; }
.score-warm { background: #f4eafb; color: var(--deep); border: 1px solid #e2cdf2; }
.score-cool { background: var(--wash); color: var(--muted); border: 1px solid #eee6f4; }
.gate-note { color: var(--muted); font-weight: 400; }
/* one-click "ours": invisible until the row is hovered, so 600 rows stay calm */
.ours-form { display: inline; }
.chip-btn { cursor: pointer; font: inherit; font-size: 0.72rem; }
.ours-ghost { visibility: hidden; background: none; border: 1px dashed #d9cbe8; color: var(--muted); }
tr:hover .ours-ghost { visibility: visible; }
.ours-ghost:hover { border-color: var(--accent); color: var(--accent); }
/* no hover on touch screens — the button must simply be there */
@media (hover: none) { .ours-ghost { visibility: visible; } }

/* wave 3: the record tells you the next move */
.nudge { background: #f3fbe4; border: 1px solid #d9ecb4; border-radius: 8px;
  padding: 0.45rem 0.8rem; font-size: 0.9rem; color: #3f5212; margin: 0.5rem 0 0; }
.owner-note { background: #fdf3e7; border: 1px solid #f5e0c4; border-radius: 8px;
  padding: 0.45rem 0.8rem; font-size: 0.9rem; color: var(--warn); margin: 0.5rem 0 0; }
.lead-form textarea { font: inherit; font-size: 0.84rem; padding: 0.3rem 0.45rem;
  border: 1px solid var(--line); border-radius: 6px; background: var(--surface);
  color: var(--ink); resize: vertical; min-height: 2.2rem; }
.date-chips { display: inline-flex; gap: 0.25rem; }

/* score pill on the detail header */
.score-pill { display: inline-block; vertical-align: middle; margin-left: 0.5rem;
  padding: 0.2rem 0.7rem; border-radius: 999px; background: var(--wash);
  color: var(--deep); font-size: 1.1rem; font-weight: 700; border: 1px solid #e2cdf2; }
/* board cards: name left, score right */
.board-card-top { display: flex; justify-content: space-between; align-items: baseline; gap: 0.5rem; }
/* urgency chip — its own class instead of borrowing the drive-pending amber */
.chip-due { background: #fdeaea; color: #b42318; border: 1px solid #f5c6c0; }
/* Mine | Everyone scope toggle */
.scope-toggle { margin-left: 0.6rem; display: inline-flex; gap: 0; border: 1px solid #d9cbe8;
  border-radius: 999px; overflow: hidden; vertical-align: middle; }
.scope-toggle a { padding: 0.1rem 0.7rem; font-size: 0.8rem; color: var(--muted); }
.scope-toggle a:hover { text-decoration: none; color: var(--accent); }
.scope-toggle a.active { background: var(--deep); color: #fff; }
.pitch-warn { background: #fdeaea; color: #b42318; border: 1px solid #f5c6c0;
  border-radius: 8px; padding: 0.5rem 0.8rem; }

/* R-065 #1: click the score pill for this site's arithmetic */
.score-pop { display: inline-block; position: relative; }
.score-pop summary { list-style: none; cursor: pointer; }
.score-pop summary::-webkit-details-marker { display: none; }
.score-pop-panel { position: absolute; left: 0; top: 115%; z-index: 20;
  background: var(--surface); border: 1px solid var(--line); border-radius: 10px;
  box-shadow: 0 8px 22px rgba(60,20,90,0.14); padding: 0.6rem 0.9rem;
  min-width: 240px; font-size: 0.82rem; font-weight: 400; white-space: nowrap; }
.score-pop-panel li { margin: 0.15rem 0; }
.score-pts { display: inline-block; min-width: 2.2rem; text-align: right;
  font-variant-numeric: tabular-nums; font-weight: 700; color: var(--deep);
  margin-right: 0.4rem; }

/* (R-065 #10 sticky thead reverted 2026-07-18: position:sticky detaches the
   header row from .table-wrap's horizontal scroll and floats it over rows.) */

/* R-065 #6: undo banner for one-click actions */
.flash-bar { display: flex; gap: 1rem; align-items: center; justify-content: center;
  background: #f4eafb; border-bottom: 1px solid #e2cdf2; color: var(--deep);
  padding: 0.45rem 1rem; font-size: 0.9rem; }
.flash-bar .linklike { color: var(--deep); font-weight: 650; }

/* wave 3: why a search matched when the name doesn't show it */
.match-hint { color: var(--muted); font-size: 0.76rem; margin-top: 0.1rem; }

/* R-065 #7: nav quick-jump */
.nav-jump input { font: inherit; font-size: 0.85rem; padding: 0.3rem 0.6rem;
  border: 1px solid var(--line); border-radius: 999px; width: 11rem;
  background: var(--wash); }
.nav-jump input:focus { outline: 2px solid var(--accent); background: var(--surface); }

/* The directory table must never clip its last column: instead of an easily
   missed horizontal scroll, low-value columns bow out as the window narrows
   (full data is one click away on the site page, or in the CSV). */
.hw-cell .chip { margin-bottom: 0.15rem; }
@media (max-width: 1300px) { .col-region { display: none; } }
@media (max-width: 1140px) { .col-active { display: none; } }
@media (max-width: 1000px) { .col-hardware { display: none; } }

/* estate-table row expanders + the pitch "at a glance" summary */
.row-expand summary { cursor: pointer; color: var(--accent); font-size: 0.82rem; }
.row-expand ul { margin: 0.3rem 0 0; }
.pitch-glance { margin: 0 0 1.5rem; }
.pitch-glance table { width: 100%; border-collapse: collapse; margin-top: 0.4rem; }
.pitch-glance th, .pitch-glance td { text-align: left; padding: 0.42rem 0.6rem;
  border-bottom: 1px solid var(--line); font-size: 0.92rem; }
.pitch-glance th { font-size: 0.72rem; text-transform: uppercase;
  letter-spacing: 0.06em; color: var(--ink-2); }
