  :root {
    --ink:#1B1D31; --body:#3F4256; --sec:#6B7280; --muted:#8A8FA3; --faint:#A6AAB8;
    --line:#E6E8EC; --line2:#EDEEF2; --line3:#F1F2F5; --hair:#F4F5F7; --chipbg:#FBFBFC; --edge:#DFE2E8;
    --orange:#F05323; --orange-dk:#C93F16; --orange-pale:#FFFBF9; --orange-tint:#FDECE6; --orange-lt:#F8C5B0;
    --green:#1F7A48; --red:#C93F16; --teal:#0ABFB3; --teal-pale:#E0F8F7;
    --shadow-card:0 2px 12px rgba(27,29,49,.05);
    --shadow-pop:0 12px 40px rgba(27,29,49,.16), 0 4px 12px rgba(27,29,49,.07);
    --shadow-modal:0 24px 60px rgba(27,29,49,.13);
  }
  * { margin:0; padding:0; box-sizing:border-box; }
  html, body { height:100%; }
  body { background:#fff; color:var(--ink); font-family:Geist,system-ui,-apple-system,'Segoe UI',sans-serif; height:100vh; overflow:hidden; font-size:14px; }
  .mono { font-family:'Geist Mono',ui-monospace,Consolas,monospace; }
  button { font-family:inherit; }
  button:focus-visible, input:focus-visible, textarea:focus-visible { outline:2px solid var(--orange); outline-offset:1px; }
  ::-webkit-scrollbar { width:10px; height:10px; }
  ::-webkit-scrollbar-thumb { background:#D6D9E0; border-radius:99px; border:3px solid transparent; background-clip:content-box; }

  /* ── Login ──────────────────────────────────────────────────────────── */
  #loginScreen { display:flex; flex-direction:column; align-items:center; justify-content:center; height:100vh; gap:26px; background:var(--ink); }
  .login-mark { display:flex; align-items:center; gap:11px; }
  .login-mark .logo-bars span { height:3px; }
  .login-word { font-size:24px; font-weight:600; letter-spacing:-.02em; color:#fff; }
  .login-word .pro { font-family:'Geist Mono',monospace; font-size:10px; font-weight:500; letter-spacing:.1em; color:#fff; background:var(--orange); border-radius:6px; padding:2px 7px; vertical-align:4px; margin-left:8px; }
  .login-sub { font-size:13px; color:rgba(255,255,255,.55); margin-top:-16px; }
  .login-box { background:#fff; border-radius:16px; padding:28px 30px; width:360px; display:flex; flex-direction:column; gap:13px; box-shadow:var(--shadow-modal); }
  .login-box label { font-size:11px; font-weight:600; color:var(--muted); text-transform:uppercase; letter-spacing:.08em; }
  .login-box select, .login-box input { background:var(--chipbg); border:1px solid var(--line); border-radius:10px; color:var(--ink); font-size:14.5px; padding:11px 13px; outline:none; width:100%; font-family:inherit; }
  .login-box select:focus, .login-box input:focus { border-color:var(--orange); }
  .login-btn { background:var(--orange); color:#fff; border:none; border-radius:10px; font-size:14.5px; font-weight:600; padding:12px; cursor:pointer; transition:background .15s; }
  .login-btn:hover { background:var(--orange-dk); }
  .login-error { color:var(--red); font-size:12.5px; text-align:center; display:none; }
  .login-foot { font-size:11.5px; color:rgba(255,255,255,.4); }
  .login-foot a { color:rgba(255,255,255,.6); }

  /* ── Shell ──────────────────────────────────────────────────────────── */
  #app { display:none; height:100vh; overflow:hidden; }
  .side { width:232px; flex:none; background:var(--ink); display:flex; flex-direction:column; min-height:0; }
  .side-logo { display:flex; align-items:center; gap:9px; padding:18px 16px 14px; }
  .logo-bars { display:flex; flex-direction:column; gap:3px; }
  .logo-bars span { height:2.5px; border-radius:2px; background:#fff; }
  .logo-bars span:first-child { width:20px; background:var(--orange); }
  .logo-bars span:nth-child(2) { width:14px; }
  .logo-bars span:nth-child(3) { width:20px; }
  .logo-word { font-size:17px; font-weight:600; letter-spacing:-.02em; color:#fff; }
  .ws-card { margin:0 12px 14px; display:flex; align-items:center; gap:9px; padding:8px 10px; border-radius:9px; background:rgba(255,255,255,.07); cursor:pointer; border:none; width:calc(100% - 24px); text-align:left; }
  .ws-card:hover { background:rgba(255,255,255,.12); }
  .ws-tile { width:24px; height:24px; flex:none; border-radius:7px; background:var(--orange); color:#fff; display:flex; align-items:center; justify-content:center; font-size:11px; font-weight:600; }
  .ws-info { display:flex; flex-direction:column; flex:1; min-width:0; }
  .ws-org { font-size:10px; letter-spacing:.07em; text-transform:uppercase; color:rgba(255,255,255,.5); font-weight:500; }
  .ws-name { font-size:12.5px; font-weight:500; color:#fff; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .side-nav { flex:1; min-height:0; overflow-y:auto; padding:0 10px 12px; display:flex; flex-direction:column; gap:14px; }
  .nav-group { display:flex; flex-direction:column; gap:2px; }
  .nav-glabel { font-size:10.5px; letter-spacing:.09em; text-transform:uppercase; color:rgba(255,255,255,.42); font-weight:600; padding:4px 8px; }
  .nav-item { display:flex; align-items:center; gap:11px; padding:8px; border-radius:8px; color:rgba(255,255,255,.72); font-size:13px; cursor:pointer; border:none; background:transparent; width:100%; text-align:left; }
  .nav-item:hover { background:rgba(255,255,255,.09); color:#fff; }
  .nav-item.on { background:rgba(255,255,255,.11); color:#fff; font-weight:500; }
  .nav-item svg { flex:none; }
  .nav-pro { font-family:'Geist Mono',monospace; font-size:8.5px; font-weight:500; letter-spacing:.08em; color:#fff; background:var(--orange); border-radius:5px; padding:1px 5px; margin-left:auto; }
  .side-user { padding:10px 14px; border-top:1px solid rgba(255,255,255,.09); display:flex; align-items:center; gap:10px; cursor:pointer; }
  .side-user:hover { background:rgba(255,255,255,.06); }
  .side-avatar { width:28px; height:28px; flex:none; border-radius:99px; background:var(--teal); color:var(--ink); display:flex; align-items:center; justify-content:center; font-size:11px; font-weight:600; }
  .side-uinfo { display:flex; flex-direction:column; line-height:1.25; min-width:0; }
  .side-uname { font-size:13px; font-weight:500; color:#fff; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .side-urole { font-size:10.5px; color:rgba(255,255,255,.5); }

  .main { flex:1; min-width:0; display:flex; flex-direction:column; background:#fff; transition:margin-right .22s ease; }
  @media (min-width:1100px) { #app.sql-open .main { margin-right:480px; } }
  .topbar { height:56px; flex:none; display:flex; align-items:center; justify-content:space-between; gap:16px; padding:0 22px; border-bottom:1px solid var(--line2); }
  .crumb { display:flex; align-items:center; gap:8px; min-width:0; }
  .crumb-app { font-size:13.5px; color:var(--sec); display:flex; align-items:center; gap:6px; }
  .pro-badge { font-family:'Geist Mono',monospace; font-size:9px; font-weight:500; letter-spacing:.08em; color:#fff; background:var(--orange); border-radius:5px; padding:1.5px 6px; }
  .crumb-sep { font-size:13.5px; color:#C7CBD4; }
  .crumb-title { font-size:14px; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:300px; }
  .top-right { display:flex; align-items:center; gap:6px; flex:none; }
  .top-btn { display:inline-flex; align-items:center; gap:7px; height:32px; padding:0 11px; border-radius:9px; font-size:12.5px; font-weight:500; color:var(--sec); background:transparent; border:none; cursor:pointer; }
  .top-btn:hover { background:var(--hair); color:var(--ink); }
  .top-btn .cnt { font-family:'Geist Mono',monospace; font-size:10.5px; background:var(--hair); border-radius:6px; padding:1px 6px; color:var(--sec); }
  .top-btn.sql-on { background:var(--ink); color:#fff; }
  .top-btn.sql-on:hover { background:var(--ink); color:#fff; }
  .top-pill { display:inline-flex; align-items:center; gap:7px; height:32px; padding:0 12px; border:1px solid var(--line); border-radius:99px; font-size:12.5px; font-weight:500; color:var(--body); background:#fff; cursor:pointer; }
  .top-pill:hover { border-color:#C7CBD4; }
  .crumb { flex:1 1 auto; min-width:0; overflow:hidden; }
  .crumb-app { white-space:nowrap; flex:none; }
  .top-right { flex:none; }
  #app.vw-home .top-right, #app.vw-signal .top-right,
  #app.vw-home .crumb-app, #app.vw-signal .crumb-app,
  #app.vw-home .crumb-sep, #app.vw-signal .crumb-sep { display:none; }
  #app.vw-home .crumb-title, #app.vw-signal .crumb-title { font-size:15px; }
  /* The chat-history rail belongs to RetailGPT — its toggle has nothing to say
     on Home or Signal, so it goes with the rest of the chat chrome. */
  #app.vw-home .rail-toggle, #app.vw-signal .rail-toggle { display:none; }
  @media (max-width:1250px) { .top-btn .btn-lbl, .top-pill .btn-lbl { display:none; } .top-btn, .top-pill { padding:0 9px; } }

  /* ── History rail (redesign pattern: hover to peek, click to pin) ───── */
  .rail-toggle { width:28px; height:28px; flex:none; margin-right:2px; border:none; border-radius:8px; display:flex; align-items:center; justify-content:center; color:var(--sec); background:transparent; cursor:pointer; }
  .rail-toggle:hover { background:var(--hair); color:var(--ink); }
  .rail-toggle.pinned { background:var(--ink); color:#fff; }
  /* Anchored to the sidebar's right edge; expands out from it (width animation),
     never slides across from the screen edge. Children keep a fixed width so
     content doesn't reflow while the panel grows. */
  #histPanel {
    position:fixed; top:56px; left:232px; bottom:0; width:0; z-index:60;
    background:#fff; overflow:hidden; transition:width .18s ease;
    display:flex; flex-direction:column;
  }
  @media (max-width:900px) { #histPanel { left:0; } }
  #histPanel.open { width:290px; border-right:1px solid var(--line2); box-shadow:12px 0 32px rgba(27,29,49,.08); }
  #histPanel > * { width:290px; flex-shrink:0; }
  #histPanel .hist-list { flex:1 1 auto; min-height:0; }
  .hist-head { padding:14px 14px 10px; display:flex; flex-direction:column; gap:10px; flex:none; }
  .hist-new { display:flex; align-items:center; justify-content:center; gap:8px; width:100%; padding:9px; border:none; border-radius:10px; background:var(--ink); color:#fff; font-size:13px; font-weight:600; cursor:pointer; }
  .hist-new:hover { background:var(--orange); }
  .hist-search { width:100%; background:var(--chipbg); border:1px solid var(--line); border-radius:10px; font-size:13px; padding:9px 12px; outline:none; color:var(--ink); font-family:inherit; }
  .hist-search:focus { border-color:var(--orange); }
  .hist-tabs { display:flex; background:var(--hair); border:1px solid var(--line2); border-radius:10px; padding:3px; gap:2px; margin:0 14px 8px; flex:none; }
  .hist-tabs button { flex:1; border:none; background:transparent; border-radius:8px; font-size:12.5px; font-weight:500; color:var(--sec); padding:6px 0; cursor:pointer; }
  .hist-tabs button.on { background:#fff; color:var(--ink); font-weight:600; box-shadow:0 1px 3px rgba(27,29,49,.08); }
  .hist-list { flex:1; min-height:0; overflow-y:auto; padding:2px 8px 12px; }
  .hist-group { font-size:10.5px; letter-spacing:.09em; text-transform:uppercase; color:var(--muted); font-weight:600; padding:10px 8px 4px; }
  .hist-row { display:flex; align-items:center; gap:8px; width:100%; border:none; background:transparent; border-radius:9px; padding:8px 8px 8px 10px; cursor:pointer; text-align:left; }
  .hist-row:hover { background:var(--hair); }
  .hist-row.on { background:var(--orange-pale); }
  .hist-row .t { flex:1; min-width:0; font-size:13px; color:var(--ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .hist-row .ts { font-family:'Geist Mono',monospace; font-size:10px; color:var(--faint); flex:none; }
  .hist-star { width:22px; height:22px; flex:none; border:none; border-radius:6px; background:transparent; color:#D6D9E0; cursor:pointer; display:flex; align-items:center; justify-content:center; }
  .hist-star:hover { background:var(--line2); color:var(--muted); }
  .hist-star.on { color:var(--orange); }
  .hist-empty { padding:22px 16px; font-size:12.5px; color:var(--faint); text-align:center; }

  /* ── Chat ───────────────────────────────────────────────────────────── */
  .chat-scroll { flex:1; min-height:0; overflow-y:auto; display:flex; flex-direction:column; align-items:center; }
  .chat-col { width:100%; max-width:800px; padding:26px 32px 10px; display:flex; flex-direction:column; gap:26px; }
  .empty { display:flex; flex-direction:column; gap:28px; padding-top:24px; }
  .empty-kicker { display:flex; align-items:center; gap:8px; font-size:12px; letter-spacing:.09em; text-transform:uppercase; color:var(--muted); font-weight:500; }
  .kdot { width:6px; height:6px; border-radius:99px; background:var(--orange); }
  .empty h1 { font-size:32px; line-height:1.16; font-weight:600; letter-spacing:-.02em; text-wrap:balance; }
  .empty-sub { font-size:15px; color:var(--sec); max-width:560px; text-wrap:pretty; }
  .sugg-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
  .sugg { display:flex; flex-direction:column; gap:8px; padding:16px; text-align:left; border:1px solid var(--line); border-radius:12px; background:#fff; cursor:pointer; transition:all .15s; }
  .sugg:hover { border-color:#C7CBD4; box-shadow:0 6px 20px rgba(27,29,49,.07); transform:translateY(-1px); }
  .sugg-kind { font-family:'Geist Mono',monospace; font-size:10px; font-weight:500; letter-spacing:.08em; color:var(--orange); text-transform:uppercase; }
  .sugg-q { font-size:14px; font-weight:500; line-height:1.35; color:var(--ink); }
  .sugg-meta { font-size:12px; color:var(--muted); }

  .turn { display:flex; flex-direction:column; gap:16px; animation:riseIn .28s ease both; }
  @keyframes riseIn { from { opacity:0; transform:translateY(6px); } to { opacity:1; transform:none; } }
  .u-row { display:flex; flex-direction:column; align-items:flex-end; gap:6px; }
  .u-bubble { max-width:74%; padding:12px 16px; border-radius:14px 14px 4px 14px; background:var(--ink); color:#fff; font-size:14.5px; line-height:1.5; white-space:pre-wrap; }
  .u-bubble .alias-hl { background:rgba(240,83,35,.32); border-radius:5px; padding:0 4px; font-weight:500; }
  .stamp { font-size:12px; color:var(--muted); }

  .a-block { display:flex; flex-direction:column; gap:15px; min-width:0; }
  .a-status { display:flex; align-items:center; gap:11px; font-size:14px; color:var(--sec); }
  .pulse-dots { display:inline-flex; gap:4px; }
  .pulse-dots span { width:6px; height:6px; border-radius:99px; background:var(--orange); animation:dotPulse 1.1s ease-in-out infinite; }
  .pulse-dots span:nth-child(2) { animation-delay:.15s; } .pulse-dots span:nth-child(3) { animation-delay:.3s; }
  @keyframes dotPulse { 0%,100% { opacity:.25; transform:translateY(0); } 50% { opacity:1; transform:translateY(-2px); } }
  @media (prefers-reduced-motion:reduce) { * { animation:none !important; transition:none !important; } }

  .a-chips { display:flex; flex-wrap:wrap; gap:6px; }
  .kv-chip { display:inline-flex; align-items:center; gap:6px; padding:5px 10px; border:1px solid var(--line); border-radius:99px; background:var(--chipbg); font-size:12px; color:#4B4F63; }
  .kv-chip .k { color:var(--muted); } .kv-chip .v { font-weight:500; }
  .tag { font-family:'Geist Mono',monospace; font-size:9px; letter-spacing:.06em; border-radius:6px; padding:1px 5px; }
  .tag-dyn { background:var(--teal-pale); color:#06756E; }
  .tag-stat { background:var(--hair); color:var(--sec); border:1px solid var(--line); }
  .tag-adhoc { background:var(--hair); color:var(--sec); border:1px dashed #D6D9E0; }

  .a-md { font-size:14.5px; line-height:1.7; color:var(--body); max-width:700px; }
  .a-md h1,.a-md h2,.a-md h3 { color:var(--ink); margin:14px 0 6px; letter-spacing:-.01em; }
  .a-md h1 { font-size:19px; } .a-md h2 { font-size:16px; } .a-md h3 { font-size:14.5px; }
  .a-md p { margin:0 0 10px; } .a-md p:last-child { margin:0; }
  .a-md strong { color:var(--ink); }
  .a-md ul,.a-md ol { padding-left:20px; margin:6px 0 10px; }
  .a-md li { margin:4px 0; } .a-md li::marker { color:var(--orange); }
  .a-md table { border-collapse:collapse; width:100%; margin:12px 0; font-size:13px; font-variant-numeric:tabular-nums; }
  .a-md th { background:var(--chipbg); color:var(--muted); font-weight:600; font-size:11px; letter-spacing:.05em; text-transform:uppercase; padding:9px 10px; text-align:left; border-bottom:1px solid var(--line); }
  .a-md td { padding:9px 10px; border-bottom:1px solid var(--hair); color:var(--body); }
  .a-md code { font-family:'Geist Mono',monospace; background:var(--hair); border-radius:4px; padding:1px 5px; font-size:.88em; color:var(--orange-dk); }
  .a-md .tblwrap { overflow-x:auto; }
  .a-err { color:var(--red); font-size:13.5px; border:1px solid #F5C6C6; background:#FEF6F6; border-radius:10px; padding:10px 14px; }

  .chart-card { border:1px solid var(--line); border-radius:12px; overflow:hidden; background:#fff; }
  .chart-card-head { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:10px 14px; border-bottom:1px solid var(--line); background:var(--chipbg); }
  .chart-kicker { font-family:'Geist Mono',monospace; font-size:10.5px; letter-spacing:.09em; text-transform:uppercase; color:var(--orange); font-weight:500; }
  .chart-body { padding:12px 14px; overflow-x:auto; }

  /* Exec summary — Engine treatment */
  .exec-panel { border:1px solid var(--line); border-radius:14px; overflow:hidden; background:#fff; }
  /* Column layout: headline gets the full width; the period/filter caption wraps under it
     (a nowrap side-by-side crushed long headlines into one-word lines) */
  .exec-header { display:flex; flex-direction:column; gap:6px; padding:18px 20px 4px; }
  .exec-headline { font-size:19px; font-weight:600; line-height:1.3; letter-spacing:-.012em; text-wrap:pretty; }
  .exec-period { font-family:'Geist Mono',monospace; font-size:11px; color:var(--muted); line-height:1.6; overflow-wrap:anywhere; }
  .exec-section { padding:12px 20px; }
  .exec-section + .exec-section { border-top:1px solid var(--line3); }
  .exec-sec-label { font-size:11px; letter-spacing:.09em; text-transform:uppercase; color:var(--muted); font-weight:600; margin-bottom:10px; }
  .exec-summary-text { font-size:14px; line-height:1.65; color:var(--body); }
  .exec-kpis { display:grid; grid-template-columns:repeat(auto-fit,minmax(130px,1fr)); gap:1px; background:var(--line); border:1px solid var(--line); border-radius:10px; overflow:hidden; }
  .exec-kpi { background:#fff; padding:12px 14px; display:flex; flex-direction:column; gap:4px; }
  .exec-kpi-label { font-size:10.5px; letter-spacing:.06em; text-transform:uppercase; color:var(--muted); font-weight:500; }
  .exec-kpi-value { font-family:'Geist Mono',monospace; font-size:19px; font-weight:500; letter-spacing:-.02em; }
  .exec-kpi-value.pos { color:var(--green); } .exec-kpi-value.neg { color:var(--red); }
  .exec-kpi-sub { font-size:11px; color:var(--muted); }
  .exec-takeaway { display:grid; grid-template-columns:22px 1fr; gap:12px; align-items:start; margin-bottom:9px; }
  .exec-tk-num { width:22px; height:22px; border-radius:6px; background:var(--hair); color:#4B4F63; font-family:'Geist Mono',monospace; font-size:11px; display:flex; align-items:center; justify-content:center; margin-top:1px; }
  .exec-tk-text { font-size:13.5px; line-height:1.55; color:var(--body); }
  .exec-tk-text p { margin:0; }
  .exec-table { border-collapse:collapse; width:100%; font-size:13px; font-variant-numeric:tabular-nums; }
  .exec-table th { font-size:10.5px; letter-spacing:.06em; text-transform:uppercase; color:var(--muted); font-weight:600; text-align:left; padding:8px 10px; border-bottom:1px solid var(--line); }
  .exec-table td { padding:9px 10px; border-bottom:1px solid var(--hair); }
  .exec-table td.num { font-family:'Geist Mono',monospace; text-align:right; }
  .impact-chip { display:inline-flex; padding:2px 9px; border-radius:99px; font-size:11px; font-weight:500; border:1px solid var(--line); background:var(--chipbg); color:var(--body); }
  .impact-chip.impact-Primary { border-color:var(--orange-lt); background:var(--orange-pale); color:var(--orange-dk); }
  .exec-mover { display:flex; align-items:center; gap:10px; padding:7px 0; border-bottom:1px solid var(--line3); font-size:13px; }
  .exec-mover:last-child { border-bottom:none; }
  .exec-mover-name { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .exec-mover-chg { font-family:'Geist Mono',monospace; font-size:12.5px; font-weight:500; }
  .exec-mover-chg.pos { color:var(--green); } .exec-mover-chg.neg { color:var(--red); }
  .exec-mover-tag { font-size:10.5px; color:var(--muted); background:var(--hair); border-radius:6px; padding:1px 6px; white-space:nowrap; }
  .exec-movers { display:grid; grid-template-columns:1fr 1fr; gap:22px; }
  .exec-transitions { margin-top:12px; }
  .exec-transition { border:1px solid var(--line); border-radius:10px; padding:10px 13px; margin-bottom:8px; }
  .exec-transition-label { font-size:10px; letter-spacing:.08em; color:var(--muted); font-weight:600; margin-bottom:5px; }
  .exec-transition-flow { font-size:12.5px; display:flex; flex-wrap:wrap; gap:6px; align-items:center; }
  .exec-transition-flow .pos { color:var(--green); } .exec-transition-flow .neg { color:var(--red); }
  .exec-transition-arrow { color:var(--muted); }
  .exec-map-grid { display:grid; grid-template-columns:repeat(11,26px); grid-auto-rows:26px; gap:3px; }
  .exec-map-tile { display:flex; align-items:center; justify-content:center; font-size:9px; font-weight:600; color:var(--sec); background:#eef0f3; border-radius:4px; }
  .exec-map-tile.cat-strong { background:#157f3d; color:#fff; }
  .exec-map-tile.cat-modest { background:#a7d9bc; color:#14532d; }
  .exec-map-tile.cat-dragger { background:#d64545; color:#fff; }
  .exec-map-tile.cat-mixed { background:#f0c36d; color:#5c4708; }
  .exec-map-legend { display:flex; flex-wrap:wrap; gap:12px; margin-top:10px; font-size:11px; color:var(--sec); }
  .exec-map-key { display:inline-flex; align-items:center; gap:5px; }
  .exec-map-swatch { width:10px; height:10px; border-radius:3px; display:inline-block; }
  .exec-map-caption { font-size:12px; color:var(--muted); margin-top:8px; }
  .exec-assump { font-size:12.5px; color:var(--sec); line-height:1.6; }
  .exec-nbq { display:flex; align-items:center; gap:14px; padding:14px 20px; background:var(--orange-pale); border-top:1px solid var(--line3); cursor:pointer; }
  .exec-nbq:hover { background:var(--orange-tint); }
  .exec-nbq-label { font-size:10.5px; letter-spacing:.09em; text-transform:uppercase; color:var(--orange); font-weight:600; }
  .exec-nbq-q { font-size:13.5px; font-weight:500; margin-top:2px; }
  .btn-mini { display:inline-flex; align-items:center; gap:6px; padding:5px 11px; border:1px solid var(--line); border-radius:8px; font-size:12px; font-weight:500; color:var(--body); background:#fff; cursor:pointer; white-space:nowrap; }
  .btn-mini:hover { border-color:var(--ink); color:var(--ink); }

  /* Reasoning chain */
  .steps-toggle { align-self:flex-start; display:inline-flex; align-items:center; gap:7px; padding:5px 11px; border:1px solid var(--line); border-radius:99px; background:#fff; font-size:12px; font-weight:500; color:var(--sec); cursor:pointer; }
  .steps-toggle:hover { border-color:var(--ink); color:var(--ink); }
  .steps-card { border:1px solid var(--line); border-radius:12px; background:var(--chipbg); padding:12px 16px; font-size:12.5px; }
  .step-row { display:grid; grid-template-columns:20px 1fr; gap:10px; padding:7px 0; border-bottom:1px solid var(--line3); }
  .step-row:last-child { border-bottom:none; }
  .step-n { width:20px; height:20px; border-radius:6px; background:#fff; border:1px solid var(--line); color:var(--sec); font-family:'Geist Mono',monospace; font-size:10px; display:flex; align-items:center; justify-content:center; }
  .step-label { font-weight:600; color:var(--ink); }
  .step-detail { font-family:'Geist Mono',monospace; font-size:11px; color:var(--muted); margin-top:2px; word-break:break-all; }
  .step-result { font-size:11.5px; color:var(--sec); margin-top:2px; }

  .a-actions { display:flex; align-items:center; gap:2px; }
  .icon-btn { width:24px; height:24px; border:none; background:transparent; border-radius:6px; display:flex; align-items:center; justify-content:center; color:var(--muted); cursor:pointer; }
  .icon-btn:hover { background:var(--hair); color:var(--ink); }
  .follow-label { font-size:11px; letter-spacing:.08em; text-transform:uppercase; color:var(--muted); font-weight:500; }

  /* ── Composer ───────────────────────────────────────────────────────── */
  .composer-wrap { width:100%; max-width:800px; padding:8px 32px 14px; position:relative; margin:0 auto; }
  .composer { position:relative; display:flex; flex-direction:column; gap:10px; padding:14px 14px 12px 16px; border:1px solid var(--edge); border-radius:14px; background:#fff; box-shadow:var(--shadow-card); transition:border-color .15s; }
  .composer:focus-within { border-color:#C7CBD4; }
  /* contenteditable since v1.83 — recognised words carry their treatment in the box.
     textContent stays the exact string that ships, so SMS/email round-trips are unaffected. */
  #chatInput { display:block; width:100%; min-height:44px; max-height:150px; overflow-y:auto; border:none; outline:none; font-size:14.5px; line-height:1.55; color:var(--ink); background:transparent; font-family:inherit; padding-right:132px; white-space:pre-wrap; word-break:break-word; }
  #chatInput:empty::before { content:attr(data-ph); color:var(--faint); pointer-events:none; }

  /* ── Composer tokens ──────────────────────────────────────────────────────
     Colour says WHICH SLICE of the business (item / store / time — the same three
     the filter chips already teach). Mono type says IT IS A NUMBER. Two orthogonal
     channels, so measures needed no fourth colour. Only a scope gets a sigil,
     because only a scope actually changes the answer. */
  .tok { border-radius:4px; }
  .tok-scope { background:var(--orange-tint); color:var(--orange-dk); font-weight:500; padding:1px 5px; box-shadow:inset 0 0 0 1px rgba(240,83,35,.18); }
  .tok-scope.k-stores { background:#ECEFFF; color:#2B48C8; box-shadow:inset 0 0 0 1px rgba(75,110,255,.20); }
  .tok-scope.k-time { background:var(--teal-pale); color:#08877F; box-shadow:inset 0 0 0 1px rgba(10,191,179,.24); }
  .tok-attr { padding:1px 2px; border-bottom:1.5px solid rgba(240,83,35,.45); }
  .tok-attr.k-stores { border-bottom-color:rgba(75,110,255,.45); }
  .tok-attr.k-time { border-bottom-color:rgba(10,191,179,.45); }
  .tok-measure { font-family:'Geist Mono',ui-monospace,Consolas,monospace; font-size:.92em; background:var(--hair); padding:1px 5px; border-bottom:1px dotted var(--sec); cursor:help; }
  .tok-measure:hover { background:var(--line3); }

  /* ── Measure definition card ────────────────────────────────────────────── */
  .mdef-pop { position:fixed; z-index:80; width:320px; background:#fff; border:1px solid var(--line); border-radius:12px; box-shadow:var(--shadow-pop); display:none; overflow:hidden; }
  .mdef-h { padding:12px 15px 10px; border-bottom:1px solid var(--line2); }
  .mdef-n { font-size:14px; font-weight:600; letter-spacing:-.01em; color:var(--ink); }
  .mdef-c { font-family:'Geist Mono',monospace; font-size:10.5px; color:var(--muted); margin-top:3px; }
  .mdef-b { padding:12px 15px; display:flex; flex-direction:column; gap:10px; }
  .mdef-d { font-size:12.5px; color:var(--body); line-height:1.55; }
  .mdef-f { font-family:'Geist Mono',monospace; font-size:11px; color:var(--ink); background:var(--hair); border:1px solid var(--line2); border-radius:7px; padding:7px 9px; line-height:1.5; }
  .mdef-row { display:flex; gap:7px; flex-wrap:wrap; }
  .mdef-tag { font-family:'Geist Mono',monospace; font-size:10px; letter-spacing:.03em; padding:2px 7px; border-radius:99px; border:1px solid var(--line); background:var(--chipbg); color:var(--sec); }
  .mdef-tag.warn { background:var(--orange-tint); border-color:rgba(240,83,35,.25); color:var(--orange-dk); }
  .mdef-swap { border-top:1px solid var(--line2); background:var(--chipbg); padding:10px 15px; }
  .mdef-swap .t { font-family:'Geist Mono',monospace; font-size:9.5px; letter-spacing:.1em; text-transform:uppercase; color:var(--faint); margin-bottom:7px; }
  .mdef-swap .opts { display:flex; flex-wrap:wrap; gap:6px; }
  .mdef-btn { font-family:'Geist Mono',monospace; font-size:11px; background:#fff; border:1px solid var(--line); border-radius:6px; padding:3px 8px; color:var(--body); cursor:pointer; }
  .mdef-btn:hover { border-color:var(--orange); color:var(--orange-dk); background:var(--orange-pale); }
  .composer-row { display:flex; align-items:flex-end; gap:6px; }
  .scope-chips { flex:1; display:flex; flex-wrap:wrap; align-items:center; gap:6px; min-width:0; }
  .g-chip { display:inline-flex; align-items:center; gap:6px; padding:4px 6px 4px 9px; border:1px solid var(--line); border-radius:8px; background:#fff; font-size:12px; color:#4B4F63; cursor:pointer; }
  .g-chip:hover { border-color:#C7CBD4; }
  .g-chip .v { font-weight:500; color:var(--ink); }
  .g-chip .cnt { font-family:'Geist Mono',monospace; font-size:10.5px; color:var(--muted); }
  .g-chip.adhoc { border-style:dashed; }
  .g-chip .x { width:16px; height:16px; border:none; border-radius:99px; background:transparent; color:var(--faint); font-size:12px; line-height:1; cursor:pointer; display:flex; align-items:center; justify-content:center; }
  .g-chip .x:hover { background:var(--orange-tint); color:var(--orange-dk); }
  .add-filter { display:inline-flex; align-items:center; gap:6px; padding:4px 9px; border:1px solid var(--line); border-radius:8px; background:#fff; font-size:12px; color:#4B4F63; cursor:pointer; }
  .add-filter:hover { border-color:#C7CBD4; }
  /* Groups menu — the saved filter sets, pinned from the composer where the
     chips they produce already live. */
  .grp-btn { display:inline-flex; align-items:center; gap:6px; padding:4px 9px; border:1px solid var(--line); border-radius:8px; background:#fff; font-size:12px; font-weight:500; color:#4B4F63; cursor:pointer; flex:none; font-family:inherit; }
  .grp-btn:hover { border-color:#C7CBD4; }
  .grp-btn.on { border-color:var(--orange-lt); background:var(--orange-pale); color:var(--orange-dk); }
  .grp-btn .cnt { font-family:'Geist Mono',monospace; font-size:10.5px; color:var(--muted); }
  .grp-btn.on .cnt { color:var(--orange-dk); }
  .grp-btn .car { font-size:8px; color:var(--faint); }
  .grp-pop { position:absolute; bottom:calc(100% - 2px); right:12px; z-index:41; background:#fff; border:1px solid var(--line); border-radius:12px; box-shadow:var(--shadow-pop); min-width:320px; max-height:min(60vh,420px); overflow-y:auto; display:none; }
  .grp-pop.open { display:block; }
  .grp-sec { padding:8px 13px 3px; font-size:10px; font-weight:600; letter-spacing:.09em; text-transform:uppercase; color:var(--faint); }
  .grp-item { display:flex; align-items:center; gap:9px; width:100%; padding:8px 13px; border:none; background:transparent; cursor:pointer; text-align:left; font-size:13px; font-family:inherit; }
  .grp-item:hover { background:var(--orange-tint); }
  .grp-item .tick { width:16px; flex:none; color:var(--orange); font-size:12px; }
  .grp-item.off .tick { color:transparent; }
  .grp-item .gname { font-weight:500; color:var(--ink); }
  .grp-item.off .gname { font-weight:400; color:var(--body); }
  .grp-item .gmeta { font-size:11px; color:var(--muted); }
  .grp-empty { padding:14px 13px; font-size:12px; color:var(--faint); }
  .send-btn { width:34px; height:34px; flex:none; border:none; border-radius:9px; background:var(--ink); color:#fff; display:flex; align-items:center; justify-content:center; font-size:15px; cursor:pointer; transition:background .15s; }
  .send-btn:hover { background:var(--orange); }
  .send-btn:disabled { opacity:.4; cursor:default; }
  .disclaimer { display:flex; justify-content:center; gap:10px; padding-top:8px; font-size:11.5px; color:var(--sec); }
  .disclaimer a { color:var(--faint); text-decoration:none; }
  .disclaimer a:hover { color:var(--orange); }
  .kind-dot { width:6px; height:6px; border-radius:99px; flex:none; }

  .ac-pop { position:absolute; bottom:calc(100% - 2px); left:48px; z-index:40; background:#fff; border:1px solid var(--line); border-radius:12px; box-shadow:var(--shadow-pop); min-width:400px; max-width:560px; max-height:340px; overflow-y:auto; display:none; }
  .ac-title { font-size:10.5px; font-weight:600; letter-spacing:.09em; text-transform:uppercase; color:var(--muted); padding:9px 13px 4px; }
  .ac-item { display:flex; align-items:center; gap:9px; padding:8px 13px; cursor:pointer; font-size:13px; }
  /* HOVER and SELECTED are different states and used to share one colour:
     --orange-pale is #FFFBF9, which is white with an apology. Brad, 2026-09-18:
     "the highlighted metric is a light color and I'm not sure what is selected."
     Hover is now a visible tint; the selected row is the brand orange with white
     text, the same fill as the primary button — so keyboard position is
     unmistakable, and mousing over a different row cannot be confused for it. */
  .ac-item:hover { background:var(--orange-tint); }
  .ac-item.sel { background:var(--orange); }
  .ac-item.sel .nm, .ac-item.sel .nm.mono { color:#fff; }
  .ac-item.sel .meta { color:rgba(255,255,255,.82); }
  .ac-item.sel .ac-src, .ac-item.sel .ac-src.cust { background:rgba(255,255,255,.22); color:#fff; }
  /* the dot encodes items/stores/time and would vanish into the fill */
  .ac-item.sel .kind-dot { box-shadow:0 0 0 2px rgba(255,255,255,.92); }
  .ac-item .nm { font-weight:500; color:var(--ink); }
  .ac-item .nm.mono { font-family:'Geist Mono',monospace; font-size:12.5px; font-weight:400; }
  .ac-item .meta { font-size:11.5px; color:var(--muted); margin-left:auto; font-family:'Geist Mono',monospace; padding-left:10px; white-space:nowrap; }
  /* provenance — engine-standard vs the customer's own. Helps you CHOOSE; it is
     deliberately absent from the inserted token, where it no longer matters. */
  .ac-item .ac-src { font-family:'Geist Mono',monospace; font-size:10px; letter-spacing:.04em; padding:1px 5px; border-radius:4px; background:var(--hair); color:var(--sec); }
  .ac-item .ac-src.cust { background:var(--orange-tint); color:var(--orange-dk); }
  .ac-title .tip { margin-left:auto; color:var(--faint); letter-spacing:.04em; text-transform:none; font-size:10px; font-weight:400; }
  .ac-title { display:flex; align-items:baseline; gap:8px; }

  /* Measure strip — one concise line across the top of the menu for whichever
     measure the cursor or the keyboard is on. Sticky because the list scrolls
     under it; muted because it explains the choice rather than being one. */
  .ac-strip { position:sticky; top:0; z-index:2; display:flex; align-items:baseline; gap:9px;
              padding:9px 13px; background:var(--chipbg); border-bottom:1px solid var(--hair); }
  .ac-strip[hidden] { display:none; }
  .ac-strip .s-n { font-family:'Geist Mono',monospace; font-size:12px; font-weight:500; color:var(--ink); white-space:nowrap; }
  /* one line, always — a strip that wraps to three stops being a strip */
  .ac-strip .s-d { font-size:11.5px; color:var(--sec); line-height:1.35;
                   overflow:hidden; text-overflow:ellipsis; white-space:nowrap; min-width:0; flex:1; }
  .ac-strip .s-g { font-family:'Geist Mono',monospace; font-size:10px; color:var(--faint);
                   margin-left:auto; padding-left:10px; white-space:nowrap; }

  /* ── Overlay (pickers) ──────────────────────────────────────────────── */
  #overlayBackdrop { position:fixed; inset:0; background:rgba(27,29,49,.4); z-index:100; display:none; align-items:center; justify-content:center; padding:24px; }
  #overlayBackdrop.open { display:flex; }
  .overlay { background:#fff; border-radius:18px; box-shadow:var(--shadow-modal); width:min(880px,100%); max-height:min(680px,calc(100vh - 48px)); display:flex; flex-direction:column; overflow:hidden; border:1px solid var(--edge); }
  .overlay-head { display:flex; align-items:center; gap:14px; padding:14px 18px; border-bottom:1px solid var(--line2); flex-shrink:0; }
  .overlay-title { font-size:15px; font-weight:600; }
  .seg { display:flex; background:var(--hair); border:1px solid var(--line2); border-radius:99px; padding:3px; gap:2px; }
  .seg button { border:none; background:transparent; border-radius:99px; font-size:12.5px; font-weight:500; color:var(--sec); padding:5px 14px; cursor:pointer; }
  .seg button.on { background:#fff; color:var(--ink); font-weight:600; box-shadow:0 1px 3px rgba(27,29,49,.08); }
  .overlay-close { margin-left:auto; background:none; border:none; color:var(--muted); font-size:19px; cursor:pointer; width:30px; height:30px; border-radius:8px; display:flex; align-items:center; justify-content:center; }
  .overlay-close:hover { background:var(--hair); color:var(--ink); }
  .overlay-body { flex:1; overflow-y:auto; min-height:320px; }
  .overlay-foot { display:flex; align-items:center; gap:10px; padding:12px 18px; border-top:1px solid var(--line2); background:var(--chipbg); flex-shrink:0; }
  .foot-note { font-size:11.5px; color:var(--muted); margin-right:auto; max-width:460px; }
  .btn-secondary { background:#fff; color:var(--body); border:1px solid var(--line); border-radius:9px; padding:8px 15px; font-size:13px; font-weight:500; cursor:pointer; }
  .btn-secondary:hover { border-color:var(--ink); color:var(--ink); }
  .btn-primary { background:var(--orange); color:#fff; border:none; border-radius:9px; padding:8px 17px; font-size:13px; font-weight:600; cursor:pointer; transition:background .15s; }
  .btn-primary:hover { background:var(--orange-dk); }

  .classic { font-size:12px; }
  .classic-tabs { display:flex; align-items:stretch; padding:0 14px; border-bottom:1px solid var(--line2); }
  .classic-tab { display:flex; align-items:center; gap:7px; padding:10px 13px 11px; margin-bottom:-1px; border:none; border-bottom:2px solid transparent; background:transparent; font-size:12.5px; font-weight:500; color:var(--sec); cursor:pointer; white-space:nowrap; }
  .classic-tab:hover { color:var(--ink); }
  .classic-tab.on { border-bottom-color:var(--orange); color:var(--ink); font-weight:600; }
  .classic-tab .n { font-family:'Geist Mono',monospace; font-size:10px; background:var(--ink); color:#fff; border-radius:6px; padding:1px 5px; }
  .criteria-echo { padding:9px 16px; background:var(--orange-pale); border-bottom:1px solid var(--orange-lt); font-size:11.5px; color:var(--body); line-height:1.6; }
  .criteria-echo b { color:var(--orange-dk); font-weight:600; }
  .classic-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:8px 10px; padding:14px 16px; }
  @media (max-width:720px) { .classic-grid { grid-template-columns:1fr 1fr; } .sugg-grid { grid-template-columns:1fr; } .side { display:none; } }
  .classic-note { padding:0 16px 12px; font-size:11.5px; color:var(--muted); }
  .dd { position:relative; }
  .dd-btn { width:100%; display:flex; align-items:center; gap:6px; background:#fff; border:1px solid var(--line); border-radius:8px; padding:7px 9px; font-size:12px; color:var(--sec); cursor:pointer; text-align:left; }
  .dd-btn:hover { border-color:#C7CBD4; }
  .dd-btn .lbl { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; flex:1; }
  .dd-btn.has { border-color:var(--orange-lt); background:var(--orange-pale); }
  .dd-btn.has .lbl { color:var(--orange-dk); font-weight:500; }
  .dd-btn .car { color:var(--faint); font-size:9px; flex-shrink:0; }
  .dd-panel { position:absolute; top:calc(100% + 4px); left:0; z-index:30; min-width:250px; max-width:330px; background:#fff; border:1px solid var(--line); border-radius:12px; box-shadow:var(--shadow-pop); display:none; overflow:hidden; }
  .dd.open .dd-panel { display:block; }
  .dd-search { width:100%; border:none; border-bottom:1px solid var(--line2); padding:9px 13px; font-size:12.5px; outline:none; background:var(--chipbg); color:var(--ink); font-family:inherit; }
  .dd-list { max-height:210px; overflow-y:auto; padding:4px 0; }
  .dd-opt { display:flex; align-items:center; gap:8px; padding:6px 13px; font-size:12.5px; color:var(--body); cursor:pointer; }
  .dd-opt:hover { background:var(--orange-tint); }
  .dd-opt input { accent-color:var(--orange); cursor:pointer; }
  .dd-opt .m { font-family:'Geist Mono',monospace; font-size:11.5px; color:var(--sec); }
  /* NOT per value — the Classic equivalent of flipping a Modern chip to exclude. */
  /* visible but quiet — hiding it until hover made the capability undiscoverable */
  .dd-opt .dd-not { margin-left:auto; border:1px solid transparent; border-radius:6px; background:transparent; font-family:'Geist Mono',monospace; font-size:9.5px; font-weight:600; letter-spacing:.05em; color:var(--faint); padding:1px 5px; cursor:pointer; opacity:.45; }
  .dd-opt:hover .dd-not { opacity:1; }
  .dd-opt .dd-not:hover { border-color:var(--ink); color:var(--ink); }
  .dd-opt .dd-not.on { opacity:1; background:var(--ink); border-color:var(--ink); color:#fff; }
  .dd-opt.excl > span { text-decoration:line-through; color:var(--muted); }
  .dd-actions { display:flex; gap:10px; padding:7px 13px; border-top:1px solid var(--line2); background:var(--chipbg); }
  .dd-actions button { background:none; border:none; color:var(--orange); font-size:11.5px; font-weight:500; cursor:pointer; padding:0; }
  .dd-actions .hint { margin-left:auto; font-size:10px; color:var(--faint); align-self:center; }
  /* Clear all wipes the whole attribute, so it does not wear the same colour as
     Select all and it sits after the hint, away from the checkbox it used to
     hide under. */
  .dd-actions .dd-clear { margin-left:14px; color:var(--faint); }
  .dd-actions .dd-clear:hover { color:var(--red, #d64545); text-decoration:underline; }
  .time-pane { padding:16px; display:flex; flex-direction:column; gap:6px; max-width:470px; }
  .time-opt { display:flex; align-items:center; gap:10px; padding:10px 13px; border:1px solid var(--line); border-radius:10px; cursor:pointer; font-size:13px; color:var(--body); background:#fff; text-align:left; }
  .time-opt:hover { border-color:#C7CBD4; }
  .time-opt.on { border-color:var(--orange); background:var(--orange-pale); color:var(--ink); font-weight:500; }
  .time-opt .sub { margin-left:auto; font-size:11.5px; color:var(--muted); font-family:'Geist Mono',monospace; }
  .tpl-pane { padding:14px 16px; display:flex; flex-direction:column; gap:8px; }
  .tpl-row { display:flex; align-items:center; gap:11px; padding:11px 14px; border:1px solid var(--line); border-radius:11px; background:#fff; }
  .tpl-row:hover { border-color:#C7CBD4; box-shadow:0 3px 12px rgba(27,29,49,.05); }
  .tpl-name { font-weight:600; font-size:13px; color:var(--ink); display:flex; align-items:center; gap:7px; flex-wrap:wrap; }
  .tpl-def { font-size:11.5px; color:var(--muted); margin-top:2px; max-width:430px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .tpl-cnt { font-family:'Geist Mono',monospace; font-size:10.5px; color:var(--muted); font-weight:400; }
  .tpl-actions { margin-left:auto; display:flex; gap:6px; align-items:center; }
  .tpl-btn { background:#fff; border:1px solid var(--line); border-radius:8px; font-size:12px; font-weight:500; color:var(--body); padding:5px 11px; cursor:pointer; white-space:nowrap; }
  .tpl-btn:hover { border-color:var(--ink); color:var(--ink); }
  .tpl-btn.applied { background:var(--ink); border-color:var(--ink); color:#fff; }
  .tpl-btn.del:hover { border-color:var(--red); color:var(--red); background:var(--orange-tint); }
  .kind-mark { width:26px; height:26px; flex:none; border-radius:8px; display:flex; align-items:center; justify-content:center; font-family:'Geist Mono',monospace; font-size:9px; font-weight:500; color:#fff; }
  .save-bar { display:flex; align-items:center; gap:8px; padding:11px 16px; border-top:1px dashed var(--line); background:#fff; flex-wrap:wrap; }
  .save-bar input[type=text], .modern-savebar input[type=text] { background:var(--chipbg); border:1px solid var(--line); border-radius:9px; font-size:12.5px; padding:8px 11px; outline:none; width:210px; color:var(--ink); font-family:inherit; }
  .save-bar input[type=text]:focus, .modern-savebar input[type=text]:focus { border-color:var(--orange); }
  .mode-toggle { display:flex; border:1px solid var(--line); border-radius:9px; overflow:hidden; }
  .mode-toggle button { border:none; background:#fff; font-size:11.5px; font-weight:500; color:var(--sec); padding:7px 11px; cursor:pointer; }
  .mode-toggle button.on { background:var(--orange-pale); color:var(--orange-dk); font-weight:600; }
  .modern { display:flex; min-height:380px; }
  .modern-rail { width:132px; flex-shrink:0; border-right:1px solid var(--line2); padding:14px 10px; display:flex; flex-direction:column; gap:4px; background:var(--chipbg); }
  .rail-btn { display:flex; align-items:center; gap:8px; border:none; background:transparent; border-radius:8px; font-size:12.5px; font-weight:500; color:var(--sec); padding:8px 10px; cursor:pointer; text-align:left; }
  .rail-btn:hover { background:#fff; color:var(--ink); }
  .rail-btn.on { background:#fff; color:var(--ink); font-weight:600; box-shadow:0 1px 3px rgba(27,29,49,.07); }
  .rail-btn .kind-dot { width:7px; height:7px; }
  .modern-main { flex:1; display:flex; flex-direction:column; min-width:0; }
  .modern-search-wrap { padding:14px 16px 8px; }
  .modern-search { width:100%; background:var(--chipbg); border:1px solid var(--line); border-radius:11px; font-size:14px; padding:11px 14px; outline:none; color:var(--ink); font-family:inherit; }
  .modern-search:focus { border-color:var(--orange); background:#fff; }
  .modern-results { flex:1; overflow-y:auto; padding:4px 16px 12px; }
  .res-group-title { font-size:10.5px; font-weight:600; letter-spacing:.09em; text-transform:uppercase; color:var(--muted); margin:10px 0 5px; }
  .res-item { display:flex; align-items:center; gap:9px; width:100%; border:none; background:transparent; border-radius:8px; padding:7px 10px; font-size:13px; color:var(--body); cursor:pointer; text-align:left; }
  .res-item:hover { background:var(--orange-pale); }
  .res-item .attr-tag { font-family:'Geist Mono',monospace; font-size:10px; color:var(--muted); background:var(--hair); border-radius:6px; padding:2px 6px; flex-shrink:0; }
  .res-item .plus { margin-left:auto; color:var(--orange); font-weight:600; font-size:12px; opacity:0; }
  .res-item:hover .plus { opacity:1; }
  .res-item.added { opacity:.4; pointer-events:none; }
  .res-empty { padding:24px 12px; text-align:center; color:var(--faint); font-size:13px; }
  .modern-selected { border-top:1px solid var(--line2); padding:11px 16px 13px; background:#fff; display:flex; flex-direction:column; gap:8px; }
  .sel-title { font-size:10.5px; font-weight:600; letter-spacing:.09em; text-transform:uppercase; color:var(--muted); }
  .sel-chips { display:flex; flex-wrap:wrap; gap:6px; }
  .val-chip { display:inline-flex; align-items:center; gap:5px; border:1px solid var(--orange-lt); background:var(--orange-pale); color:var(--orange-dk); border-radius:99px; padding:4px 7px 4px 11px; font-size:12px; font-weight:500; cursor:pointer; }
  .val-chip.excl { border-color:var(--ink); background:var(--hair); color:var(--ink); text-decoration:line-through; }
  .val-chip .vx { border:none; background:transparent; color:inherit; opacity:.55; cursor:pointer; font-size:12px; padding:0 2px; }
  .val-chip .vx:hover { opacity:1; }
  .sel-logic { font-size:11.5px; color:var(--muted); }
  .modern-savebar { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
  /* Active scope tray — the live chat filters, at the top of the pane where they
     are the first thing seen and can be edited before anything new is added. */
  .modern-active { border-bottom:1px solid var(--line2); background:var(--orange-pale); padding:12px 16px 13px; display:flex; flex-direction:column; gap:7px; }
  .modern-active .active-head { display:flex; align-items:center; gap:8px; }
  .modern-active .sel-title { color:var(--orange-dk); }
  .active-reset { border:1px solid var(--orange-lt); background:#fff; color:var(--orange-dk); border-radius:8px; font-size:11px; font-weight:600; padding:4px 9px; cursor:pointer; font-family:inherit; }
  .active-reset:hover { background:var(--orange-pale); }
  .active-reset[hidden] { display:none; }
  .modern-active .val-chip { background:#fff; }
  .val-chip .src-tag { font-family:'Geist Mono',monospace; font-size:9.5px; letter-spacing:.04em; text-transform:uppercase; opacity:.62; }
  .sel-note { font-size:11px; color:var(--orange-dk); opacity:.85; }
  .sel-note:empty { display:none; }

  /* SQL drawer */
  #sqlDrawer { position:fixed; top:0; right:0; bottom:0; width:min(480px,92vw); z-index:90; background:#fff; border-left:1px solid var(--edge); box-shadow:-12px 0 40px rgba(27,29,49,.12); display:flex; flex-direction:column; transform:translateX(102%); transition:transform .22s ease; }
  #sqlDrawer.open { transform:translateX(0); }
  #app.sql-open .proto-note { display:none; }
  .sqld-head { flex:none; display:flex; align-items:center; gap:10px; padding:12px 16px; border-bottom:1px solid var(--line2); }
  .sqld-mark { width:28px; height:28px; flex:none; border-radius:8px; background:var(--ink); color:#fff; display:flex; align-items:center; justify-content:center; font-family:'Geist Mono',monospace; font-size:9.5px; }
  .sqld-title { display:flex; flex-direction:column; gap:1px; min-width:0; }
  .sqld-title .t { font-size:13.5px; font-weight:600; }
  .sqld-title .s { font-size:11.5px; color:var(--muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:300px; }
  .sqld-body { flex:1; min-height:0; overflow:auto; padding:14px 16px; display:flex; flex-direction:column; gap:14px; }
  .sqld-sec-label { font-size:10.5px; letter-spacing:.09em; text-transform:uppercase; color:var(--muted); font-weight:600; }
  .sqld-body pre { font-family:'Geist Mono',monospace; font-size:11.5px; line-height:1.7; color:var(--body); white-space:pre-wrap; word-break:break-word; }
  .sqld-body .cm { color:var(--faint); } .sqld-body .al { color:var(--orange-dk); font-weight:500; }
  .sqld-empty { font-size:12.5px; color:var(--faint); }
  /* one block per question: the ask, then the statements that ran for it */
  .sqld-turn { border:1px solid var(--line2); border-radius:11px; padding:11px 12px; display:flex; flex-direction:column; gap:8px; }
  .sqld-q { display:flex; align-items:baseline; gap:8px; }
  .sqld-q .n { flex:none; font-family:'Geist Mono',monospace; font-size:10px; color:#fff; background:var(--ink); border-radius:6px; padding:1px 5px; }
  .sqld-q .qt { flex:1; min-width:0; font-size:12.5px; font-weight:600; color:var(--ink); }
  .sqld-q .when { flex:none; font-family:'Geist Mono',monospace; font-size:10px; color:var(--faint); }
  .sqld-turn pre { background:var(--chipbg); border-radius:8px; padding:9px 11px; margin:0; }
  .sqld-nosql { font-size:12px; color:var(--muted); background:var(--chipbg); border-radius:8px; padding:8px 11px; }
  .sqld-scope { font-size:11.5px; line-height:1.6; color:var(--muted); background:var(--orange-pale); border-radius:8px; padding:7px 11px; }
  .sqld-scope b { color:var(--ink); }
  .sqld-scope .m { font-family:'Geist Mono',monospace; font-size:10.5px; color:var(--body); }
  .sqld-body .ok { color:var(--green); }
  .sqld-body .warn { color:#9A6A00; }
  .sqld-body .bad { color:var(--red); font-weight:600; }
  .sqld-more { font-size:12px; }
  .sqld-more summary { cursor:pointer; color:var(--muted); font-size:11.5px; list-style:none; }
  .sqld-more summary::-webkit-details-marker { display:none; }
  .sqld-more summary:before { content:'▸ '; }
  .sqld-more[open] summary:before { content:'▾ '; }
  .sqld-more summary:hover { color:var(--orange-dk); }
  .sqld-more > *:not(summary) { margin-top:7px; }
  .sqld-foot { flex:none; display:flex; align-items:center; gap:10px; padding:10px 16px; border-top:1px solid var(--line2); background:var(--chipbg); font-size:12px; color:var(--muted); }
  .sqld-copy { margin-left:auto; background:none; border:none; color:var(--orange); font-size:12.5px; font-weight:500; cursor:pointer; }
  .sqld-copy:hover { color:var(--orange-dk); }

  /* ── Views (Home / Signal / Chat) ───────────────────────────────────── */
  .view { flex:1; min-height:0; display:none; flex-direction:column; }
  .view.on { display:flex; }
  .view-scroll { flex:1; min-height:0; overflow-y:auto; }
  .home-col { max-width:900px; margin:0 auto; padding:26px 32px 40px; display:flex; flex-direction:column; gap:22px; }
  .home-greet { font-size:26px; font-weight:600; letter-spacing:-.018em; }
  .home-sub { font-size:13px; color:var(--muted); margin-top:4px; }
  .kpi-strip { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1px; background:var(--line); border:1px solid var(--line); border-radius:12px; overflow:hidden; }
  .kpi-tile { background:#fff; padding:14px 16px; display:flex; flex-direction:column; gap:4px; }
  .kpi-lbl { font-size:10.5px; letter-spacing:.07em; text-transform:uppercase; color:var(--muted); font-weight:600; }
  .kpi-val { font-family:'Geist Mono',monospace; font-size:22px; font-weight:500; letter-spacing:-.02em; }
  .kpi-dl { font-size:12px; font-weight:500; }
  .home-sec-head { display:flex; align-items:baseline; gap:10px; }
  .home-sec-title { font-size:15px; font-weight:600; }
  .home-sec-count { font-family:'Geist Mono',monospace; font-size:11px; color:var(--muted); }
  .home-cards { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
  @media (max-width:900px) { .home-cards { grid-template-columns:1fr; } }
  .sig-card { border:1px solid var(--line); border-radius:12px; background:#fff; padding:13px 15px; display:flex; flex-direction:column; gap:8px; border-left-width:3px; }
  .sig-card.sev-high { border-left-color:var(--red); }
  .sig-card.sev-medium { border-left-color:#E8A13C; }
  .sig-card.sev-low { border-left-color:var(--teal); }
  .sig-card.sev-info { border-left-color:#C7CBD4; }
  .sig-title { font-size:13.5px; font-weight:600; line-height:1.4; }
  .sig-body { font-size:12.5px; color:var(--body); line-height:1.55; }
  .sig-meta { display:flex; align-items:center; gap:8px; flex-wrap:wrap; font-size:11px; color:var(--muted); }
  .sig-actions { display:flex; gap:6px; margin-top:auto; flex-wrap:wrap; }
  .sig-status { font-family:'Geist Mono',monospace; font-size:9px; letter-spacing:.06em; text-transform:uppercase; border-radius:6px; padding:2px 6px; background:var(--hair); color:var(--sec); }
  .sig-status.st-resolved { background:var(--teal-pale); color:#06756E; }
  .sig-status.st-in_progress { background:var(--orange-pale); color:var(--orange-dk); border:1px solid var(--orange-lt); }
  .board { display:grid; grid-template-columns:repeat(4,minmax(230px,1fr)); gap:12px; padding:22px 26px 30px; align-items:start; min-width:980px; }
  .board-wrap { overflow-x:auto; flex:1; min-height:0; overflow-y:auto; }
  .lane { background:var(--chipbg); border:1px solid var(--line2); border-radius:14px; padding:10px; display:flex; flex-direction:column; gap:8px; }
  .lane-head { display:flex; align-items:center; gap:8px; padding:4px 6px; }
  .lane-title { font-size:12px; font-weight:600; letter-spacing:.04em; text-transform:uppercase; color:var(--sec); }
  .lane-count { font-family:'Geist Mono',monospace; font-size:10.5px; color:var(--muted); background:#fff; border:1px solid var(--line); border-radius:8px; padding:1px 6px; }
  .lane .sig-card { box-shadow:0 1px 3px rgba(27,29,49,.05); }
  .sig-select { background:#fff; border:1px solid var(--line); border-radius:7px; font-size:11px; padding:3px 6px; color:var(--body); font-family:inherit; max-width:130px; }
  .nav-badge { margin-left:auto; font-family:'Geist Mono',monospace; font-size:9.5px; background:var(--orange); color:#fff; border-radius:8px; padding:1px 6px; }

  /* ── Home v2: channels rail + feed + right rail ─────────────────────── */
  .home-grid { display:grid; grid-template-columns:225px minmax(0,1fr) 285px; gap:20px; padding:20px 24px 40px; max-width:1560px; margin:0 auto; width:100%; align-items:start; }
  @media (max-width:1350px) { .home-grid { grid-template-columns:210px minmax(0,1fr); } .home-right { display:none; } }
  @media (max-width:980px) { .home-grid { grid-template-columns:minmax(0,1fr); } .home-chan { display:none; } }
  .home-chan { position:sticky; top:0; display:flex; flex-direction:column; gap:2px; }
  .chan-label { font-size:10.5px; letter-spacing:.09em; text-transform:uppercase; color:var(--muted); font-weight:600; padding:6px 8px; }
  .chan-row { display:flex; align-items:center; gap:8px; width:100%; border:none; background:transparent; border-radius:9px; padding:7px 8px; cursor:pointer; text-align:left; font-size:12.5px; color:var(--body); }
  .chan-row:hover { background:var(--hair); }
  .chan-row.on { background:var(--orange-pale); color:var(--orange-dk); font-weight:600; }
  .chan-ico { width:18px; flex:none; text-align:center; }
  .chan-name { flex:1; min-width:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .chan-custom { font-family:'Geist Mono',monospace; font-size:8px; letter-spacing:.08em; color:var(--electric,#4B6EFF); border:1px solid #C8D2FF; border-radius:5px; padding:1px 4px; }
  .chan-del { width:15px; height:15px; flex:none; border-radius:99px; color:var(--faint); font-size:11px; line-height:14px; text-align:center; visibility:hidden; }
  .chan-row:hover .chan-del { visibility:visible; }
  .chan-del:hover { background:var(--orange-tint); color:var(--orange-dk); }
  .chan-count { font-family:'Geist Mono',monospace; font-size:10.5px; color:var(--muted); }
  .chan-follow { width:18px; height:18px; flex:none; border-radius:99px; border:1px solid var(--line); background:#fff; color:var(--faint); font-size:11px; line-height:1; display:flex; align-items:center; justify-content:center; cursor:pointer; }
  .chan-follow.on { background:var(--teal-pale); border-color:var(--teal); color:#06756E; }
  .chan-note { font-size:11px; color:var(--muted); line-height:1.55; padding:10px 8px; }
  .chan-note a { color:var(--orange); cursor:pointer; text-decoration:none; }

  .feed-head { display:flex; flex-direction:column; gap:3px; margin-bottom:12px; }
  .feed-title { font-size:19px; font-weight:600; letter-spacing:-.015em; }
  .feed-sub { font-size:12px; color:var(--muted); }
  .ret-pills { display:flex; gap:6px; flex-wrap:wrap; margin-bottom:14px; }
  .ret-pill { border:1px solid var(--line); border-radius:99px; background:#fff; font-size:12px; font-weight:500; color:var(--body); padding:5px 13px; cursor:pointer; }
  .ret-pill.on { background:var(--ink); border-color:var(--ink); color:#fff; }
  .brief-label { font-family:'Geist Mono',monospace; font-size:10px; letter-spacing:.12em; text-transform:uppercase; color:var(--orange); font-weight:500; margin-bottom:8px; }
  .brief-row { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; margin-bottom:18px; }
  @media (max-width:1100px) { .brief-row { grid-template-columns:1fr; } }
  .brief-tile { background:var(--ink); border-radius:12px; padding:14px 15px; color:#fff; display:flex; flex-direction:column; gap:6px; cursor:pointer; }
  .brief-tile:hover { background:#262944; }
  .brief-dollar { font-family:'Geist Mono',monospace; font-size:21px; font-weight:500; letter-spacing:-.02em; }
  .brief-title { font-size:12px; line-height:1.45; color:rgba(255,255,255,.85); display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; }
  .brief-ret { font-family:'Geist Mono',monospace; font-size:9px; letter-spacing:.1em; text-transform:uppercase; color:rgba(255,255,255,.5); }

  .feed { display:flex; flex-direction:column; gap:12px; }
  .feed-card { border:1px solid var(--line); border-radius:13px; background:#fff; padding:14px 16px; display:flex; flex-direction:column; gap:9px; border-left-width:3px; }
  .feed-card.pinned { border-color:var(--orange-lt); }
  .feed-card.sev-high { border-left-color:var(--red); }
  .feed-card.sev-medium { border-left-color:#E8A13C; }
  .feed-card.sev-low { border-left-color:var(--teal); }
  .feed-card.sev-info { border-left-color:#C7CBD4; }
  .fc-top { display:flex; align-items:center; gap:8px; }
  .fc-chan { display:inline-flex; align-items:center; gap:5px; font-size:11px; font-weight:600; color:var(--sec); background:var(--hair); border-radius:99px; padding:3px 9px; }
  .fc-time { font-size:11px; color:var(--faint); }
  .fc-pinner { margin-left:auto; font-size:11.5px; font-weight:600; color:var(--orange); white-space:nowrap; }
  .fc-title { font-size:15px; font-weight:600; line-height:1.4; letter-spacing:-.008em; }
  .fc-body { font-size:12.5px; color:var(--body); line-height:1.55; }
  .fc-foryou { background:var(--orange-pale); border:1px solid var(--orange-lt); border-radius:9px; padding:8px 11px; font-size:12px; color:var(--body); line-height:1.5; }
  .fc-foryou b { color:var(--orange-dk); }
  .fc-metrics { display:flex; align-items:flex-end; gap:20px; }
  .fcm { display:flex; flex-direction:column; gap:1px; }
  .fcm .v { font-family:'Geist Mono',monospace; font-size:19px; font-weight:500; letter-spacing:-.02em; }
  .fcm .v.bad { color:var(--red); }
  .fcm .l { font-size:9px; letter-spacing:.08em; text-transform:uppercase; color:var(--muted); font-weight:600; }
  .fc-spark { margin-left:auto; flex:none; }
  .fc-chips { display:flex; gap:6px; flex-wrap:wrap; }
  .fc-chip { font-size:11px; font-weight:500; border:1px solid var(--line); background:var(--chipbg); border-radius:99px; padding:2px 9px; color:var(--sec); }
  .fc-chip.risk { border-color:#F5C6C6; background:#FEF6F6; color:var(--red); }
  .fc-chip.pin { border-color:var(--orange-lt); background:var(--orange-pale); color:var(--orange-dk); }
  .fc-actions { display:flex; align-items:center; gap:2px; border-top:1px solid var(--line3); padding-top:8px; }
  .fc-act { border:none; background:transparent; border-radius:8px; font-size:12px; font-weight:500; color:var(--sec); padding:5px 10px; cursor:pointer; display:inline-flex; align-items:center; gap:6px; }
  .fc-act:hover { background:var(--hair); color:var(--ink); }
  .fc-act.lit { color:var(--orange); }
  .fc-comments { display:none; flex-direction:column; gap:7px; border-top:1px dashed var(--line2); padding-top:9px; }
  .fc-comments.open { display:flex; }
  .fc-comment { font-size:12px; color:var(--body); background:var(--chipbg); border-radius:9px; padding:7px 10px; line-height:1.5; }
  .fc-comment b { color:var(--ink); }
  .fc-cinput { display:flex; gap:6px; }
  .fc-cinput input { flex:1; background:var(--chipbg); border:1px solid var(--line); border-radius:9px; font-size:12px; padding:7px 10px; outline:none; font-family:inherit; }
  .fc-cinput input:focus { border-color:var(--orange); }

  .home-right { position:sticky; top:0; display:flex; flex-direction:column; gap:12px; }
  .rr-card { border:1px solid var(--line); border-radius:12px; background:#fff; padding:12px 14px; display:flex; flex-direction:column; gap:8px; }
  .rr-title { font-size:12px; font-weight:600; display:flex; align-items:center; gap:7px; }
  .rr-badge { font-family:'Geist Mono',monospace; font-size:9.5px; background:var(--orange); color:#fff; border-radius:8px; padding:1px 6px; }
  .rr-item { font-size:12px; color:var(--body); line-height:1.5; cursor:pointer; border-radius:8px; padding:4px 6px; }
  .rr-item:hover { background:var(--hair); }
  .rr-item b { color:var(--ink); }
  .rr-meta { font-size:10.5px; color:var(--faint); }
  .rr-empty { font-size:11.5px; color:var(--faint); }

  .board-toolbar { display:flex; align-items:center; gap:8px; padding:16px 26px 0; flex-wrap:wrap; }
  /* ── Signal detail drawer ───────────────────────────────────────────── */
  #sigDrawer { position:fixed; top:0; right:0; bottom:0; width:min(500px,94vw); z-index:92; background:#fff; border-left:1px solid var(--edge); box-shadow:-12px 0 40px rgba(27,29,49,.14); display:flex; flex-direction:column; transform:translateX(103%); transition:transform .22s ease; }
  #sigDrawer.open { transform:none; }
  .sgd-head { flex:none; display:flex; align-items:center; gap:8px; padding:12px 16px; border-bottom:1px solid var(--line2); flex-wrap:wrap; }
  .sgd-stepper { display:flex; align-items:flex-start; padding:14px 18px 4px; }
  .step { flex:1; display:flex; flex-direction:column; align-items:center; gap:5px; position:relative; cursor:pointer; border:none; background:none; padding:0; }
  .step:not(:last-child):after { content:''; position:absolute; top:7px; left:calc(50% + 12px); right:calc(-50% + 12px); height:2px; background:var(--line); }
  .step.done:not(:last-child):after { background:var(--orange); }
  .step-dot { width:15px; height:15px; border-radius:99px; border:2.5px solid var(--line); background:#fff; z-index:1; transition:all .15s; }
  .step.done .step-dot { background:var(--orange); border-color:var(--orange); }
  .step.current .step-dot { border-color:var(--orange); box-shadow:0 0 0 3px var(--orange-tint); }
  .step-lbl { font-size:10px; font-weight:600; letter-spacing:.04em; text-transform:uppercase; color:var(--muted); white-space:nowrap; }
  .step.current .step-lbl, .step.done .step-lbl { color:var(--orange-dk); }
  .step:hover .step-dot { border-color:var(--orange); }
  /* the assignee row wraps: the note and due date sit under the name rather
     than running off the edge of a 500px drawer */
  .sgd-quick { display:flex; flex-wrap:wrap; align-items:center; gap:6px; padding:8px 18px 10px; border-bottom:1px solid var(--line2); }
  .sgd-tabs { display:flex; gap:0; padding:0 18px; border-bottom:1px solid var(--line2); flex:none; }
  .sgd-tab { border:none; border-bottom:2px solid transparent; background:none; font-size:12.5px; font-weight:500; color:var(--sec); padding:9px 12px 10px; margin-bottom:-1px; cursor:pointer; display:inline-flex; align-items:center; gap:6px; }
  .sgd-tab:hover { color:var(--ink); }
  .sgd-tab.on { border-bottom-color:var(--orange); color:var(--ink); font-weight:600; }
  .sgd-tab .n { font-family:'Geist Mono',monospace; font-size:9.5px; background:var(--hair); border-radius:6px; padding:1px 5px; color:var(--sec); }
  .sgd-body { flex:1; min-height:0; overflow-y:auto; padding:16px 18px; display:flex; flex-direction:column; gap:14px; }
  .sgd-sec-label { font-size:10.5px; letter-spacing:.09em; text-transform:uppercase; color:var(--muted); font-weight:600; }
  .sgd-title { font-size:16px; font-weight:600; line-height:1.35; letter-spacing:-.01em; }
  .sgd-sub { font-size:11.5px; color:var(--muted); }
  .sev-pill { font-family:'Geist Mono',monospace; font-size:9px; letter-spacing:.08em; text-transform:uppercase; border-radius:99px; padding:2px 8px; font-weight:500; }
  .sev-pill.high { background:#FEF6F6; color:var(--red); border:1px solid #F5C6C6; }
  .sev-pill.medium { background:#FEF7EC; color:#B97509; border:1px solid #F5DFA6; }
  .sev-pill.low, .sev-pill.info { background:var(--hair); color:var(--sec); border:1px solid var(--line); }
  .sgd-metrics { display:flex; align-items:flex-end; gap:22px; border:1px solid var(--line); border-radius:12px; padding:12px 14px; flex-wrap:wrap; }
  .calc-note { border:1px dashed var(--line); border-radius:10px; padding:9px 12px; font-size:12px; color:var(--body); line-height:1.55; background:var(--chipbg); }
  .calc-note summary { cursor:pointer; font-weight:600; color:var(--sec); font-size:11.5px; list-style:none; }
  .calc-note summary::before { content:'ℹ '; }
  .sgd-timeline { display:flex; flex-direction:column; gap:0; }
  .tl-row { display:grid; grid-template-columns:14px 1fr; gap:10px; position:relative; padding-bottom:12px; }
  .tl-row:not(:last-child):before { content:''; position:absolute; left:5px; top:12px; bottom:0; width:2px; background:var(--line2); }
  .tl-dot { width:10px; height:10px; border-radius:99px; background:#fff; border:2.5px solid var(--faint); margin-top:3px; }
  .tl-dot.hot { border-color:var(--orange); }
  .tl-text { font-size:12px; color:var(--body); line-height:1.5; }
  .tl-text .rr-meta { display:block; }
  .sgd-actions-row { display:flex; gap:7px; flex-wrap:wrap; }
  /* report / benchmark / item detail inside the signal drawer */
  .rep-note { font-size:11.5px; color:var(--muted); margin-bottom:8px; }
  .rep-sheet { border:1px solid var(--line2); border-radius:9px; padding:8px 10px; margin-bottom:7px; }
  .rep-sheet summary { cursor:pointer; display:flex; align-items:center; gap:8px; font-size:12.5px; list-style:none; }
  .rep-sheet summary::-webkit-details-marker { display:none; }
  .rep-sheet summary:before { content:'▸ '; color:var(--faint); }
  .rep-sheet[open] summary:before { content:'▾ '; color:var(--orange); }
  .rep-sheet .rep-n { margin-left:auto; font-family:'Geist Mono',monospace; font-size:10px; color:var(--muted); }
  .rep-purpose { font-size:11px; color:var(--muted); margin:5px 0 6px; }
  .rep-more { font-size:10.5px; color:var(--faint); margin-top:5px; font-family:'Geist Mono',monospace; }
  /* a preview scrolls sideways rather than wrapping every cell in a 500px drawer */
  .rep-sheet .tbl-scroll { overflow-x:auto; }
  .rep-sheet table { min-width:max-content; }
  .rep-sheet table td, .rep-sheet table th { white-space:nowrap; }
  /* ── drawer viz: at-a-glance tiles, bar chart, trend ── */
  .viz-glance { display:grid; grid-template-columns:repeat(auto-fit,minmax(86px,1fr)); gap:8px; margin:2px 0 4px; }
  .viz-tile { border:1px solid var(--line); border-radius:11px; background:#fff; padding:10px 11px; display:flex; flex-direction:column; gap:2px; min-width:0; }
  .viz-tile .v { font-size:19px; font-weight:650; color:var(--ink); letter-spacing:-.015em; }
  .viz-tile .l { font-size:10.5px; color:var(--sec); font-weight:600; }
  .viz-tile .s { font-size:10px; color:var(--muted); line-height:1.35; }
  .viz-tile .d { font-size:10px; font-weight:650; }
  .viz-tile .d.good { color:#067E76; }
  .viz-tile .d.bad { color:var(--red); }
  .viz-card { border:1px solid var(--line); border-radius:11px; background:#fff; padding:12px 13px 10px; margin-top:8px; }
  .viz-title { font-size:12.5px; font-weight:650; color:var(--ink); }
  .viz-sub { font-size:11px; color:var(--muted); line-height:1.45; margin:2px 0 9px; }
  .viz-src { font-size:10px; color:var(--faint); margin-top:8px; font-family:'Geist Mono',monospace; }
  .viz-legend { display:flex; gap:14px; flex-wrap:wrap; margin-bottom:7px; }
  .viz-legend span { display:inline-flex; align-items:center; gap:6px; font-size:10.5px; color:var(--sec); font-weight:600; }
  .viz-legend i { width:14px; height:0; border-top:2.5px solid; border-radius:2px; }
  .viz-bar-row { display:grid; grid-template-columns:minmax(90px,40%) 1fr; align-items:center; gap:9px; margin:4px 0; }
  .viz-bar-name { font-size:10.5px; color:var(--sec); text-align:right; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .viz-bar-track { position:relative; height:16px; }
  .viz-baseline { position:absolute; top:-4px; bottom:-4px; width:1px; background:var(--line); }
  .viz-bar { position:absolute; top:0; height:16px; cursor:default; }
  .viz-bar.pos { background:#2a78d6; border-radius:0 4px 4px 0; }
  .viz-bar.neg { background:#e34948; border-radius:4px 0 0 4px; }
  .viz-bar:hover { filter:brightness(1.14); }
  .viz-bar-val { position:absolute; top:50%; transform:translateY(-50%); font-size:10px; font-weight:600; color:var(--sec); font-family:'Geist Mono',monospace; white-space:nowrap; }
  .viz-bar-val.in { color:#fff; z-index:1; }
  .viz-line-wrap { position:relative; }
  .viz-tip { position:fixed; z-index:300; pointer-events:none; background:#22252B; color:#F4F6FA; border-radius:8px; padding:7px 10px; font-size:11px; line-height:1.55; box-shadow:0 4px 14px rgba(20,24,40,.28); display:none; max-width:250px; }
  .viz-tip b { font-size:12px; }
  .viz-tip .k { display:inline-block; width:12px; border-top:2.5px solid; border-radius:2px; margin-right:6px; vertical-align:middle; }
  /* feed card: fact strip + solid stat tile */
  .fc-facts { display:flex; gap:20px; flex-wrap:wrap; padding:2px 0 1px; }
  .fc-fact { display:flex; flex-direction:column; }
  .fc-fact b { font-size:15px; font-weight:650; color:var(--ink); letter-spacing:-.01em; }
  .fc-fact span { font-size:9.5px; letter-spacing:.07em; text-transform:uppercase; color:var(--muted); font-weight:600; margin-top:1px; }
  .fc-stat.tile { background:linear-gradient(155deg,#2E44B0,#1B2B7A); border:none; min-width:110px; padding:13px 16px; border-radius:13px; }
  .fc-stat.tile .sv { color:#fff; font-size:23px; }
  .fc-stat.tile .sc { color:rgba(255,255,255,.72); }
  .fc-stat.tile.green { background:linear-gradient(155deg,#0E7A62,#0A5847); }
  .bm-tiers { display:flex; flex-wrap:wrap; gap:6px; margin:8px 0; }
  .bm-tier { display:inline-flex; gap:6px; align-items:baseline; border:1px solid var(--line2); border-radius:99px; padding:3px 10px; font-family:'Geist Mono',monospace; font-size:10.5px; color:var(--sec); }
  .bm-tier b { font-family:'Geist',sans-serif; font-size:10.5px; color:var(--ink); }
  .bm-read { font-size:12px; color:var(--body); line-height:1.55; margin-top:5px; }
  .sgd-foot { flex:none; display:flex; align-items:center; gap:8px; padding:9px 16px; border-top:1px solid var(--line2); background:var(--chipbg); font-size:11px; color:var(--muted); font-family:'Geist Mono',monospace; }
  /* Ask thread, docked in the drawer under the ticket it is about. Collapsed it
     is one input; it grows as the conversation does, capped so the signal above
     never scrolls out of reach. */
  .sgd-ask { flex:none; display:flex; flex-direction:column; border-top:1px solid var(--line2); background:#fff; }
  .sgd-ask-thread { display:none; flex-direction:column; gap:10px; padding:12px 18px 4px; max-height:42vh; overflow-y:auto; }
  .sgd-ask.has-turns .sgd-ask-thread { display:flex; }
  .sgd-ask-q { align-self:flex-end; max-width:88%; background:var(--ink); color:#fff; border-radius:12px 12px 4px 12px; padding:7px 11px; font-size:12.5px; line-height:1.5; }
  .sgd-ask-a { font-size:12.5px; line-height:1.62; color:var(--body); }
  .sgd-ask-a > :first-child { margin-top:0; }
  .sgd-ask-a > :last-child { margin-bottom:0; }
  .sgd-ask-a table { width:100%; border-collapse:collapse; font-size:11.5px; margin:8px 0; }
  .sgd-ask-a th, .sgd-ask-a td { border-bottom:1px solid var(--line2); padding:4px 6px; text-align:left; }
  .sgd-ask-status { display:flex; align-items:center; gap:7px; font-size:11.5px; color:var(--muted); }
  .sgd-ask-err { font-size:12px; color:var(--orange-dk); background:var(--orange-pale); border-radius:9px; padding:7px 10px; }
  .sgd-ask-more { align-self:flex-start; border:1px solid var(--line); background:#fff; border-radius:8px; font-size:11px; font-weight:500; color:var(--body); padding:4px 9px; cursor:pointer; font-family:inherit; }
  .sgd-ask-more:hover { border-color:var(--orange-lt); color:var(--orange-dk); }
  .sgd-ask-quick { display:flex; flex-wrap:wrap; gap:6px; padding:10px 18px 0; }
  .sgd-ask-quick:empty { display:none; }
  .sgd-ask-chip { border:1px solid var(--line); background:var(--chipbg); border-radius:99px; font-size:11.5px; color:var(--body); padding:4px 10px; cursor:pointer; font-family:inherit; }
  .sgd-ask-chip:hover { border-color:var(--orange-lt); background:var(--orange-pale); color:var(--orange-dk); }
  .sgd-ask-row { display:flex; align-items:flex-end; gap:8px; padding:10px 18px 12px; }
  .sgd-ask-row textarea { flex:1; min-height:36px; max-height:120px; resize:none; border:1px solid var(--line); border-radius:10px; background:var(--chipbg); font-family:inherit; font-size:12.5px; line-height:1.5; color:var(--ink); padding:9px 11px; outline:none; }
  .sgd-ask-row textarea:focus { border-color:var(--orange-lt); background:#fff; }
  .sgd-ask-send { flex:none; width:32px; height:32px; border:none; border-radius:99px; background:var(--orange); color:#fff; font-size:14px; cursor:pointer; }
  .sgd-ask-send:disabled { background:var(--line); cursor:default; }
  #app.sig-open .main { transition:margin-right .22s ease; }
  @media (min-width:1150px) { #app.sig-open .main { margin-right:500px; } }
  .hist-mini { display:grid; grid-template-columns:1fr auto auto; gap:4px 12px; font-size:11.5px; color:var(--body); }
  .hist-mini .mono { color:var(--sec); }
  .feed-tabs { display:flex; gap:2px; background:var(--hair); border:1px solid var(--line2); border-radius:99px; padding:3px; margin-left:auto; }
  .feed-tabs button { border:none; background:transparent; border-radius:99px; font-size:11.5px; font-weight:500; color:var(--sec); padding:4px 11px; cursor:pointer; }
  .feed-tabs button.on { background:#fff; color:var(--ink); font-weight:600; box-shadow:0 1px 3px rgba(27,29,49,.08); }
  .load-more { align-self:center; margin-top:4px; }
  .lane-dollars { font-family:'Geist Mono',monospace; font-size:10px; color:var(--red); font-weight:500; }

  /* Data-table card (drawer store table & friends) */
  .tbl-card { border:1px solid var(--line); border-radius:12px; overflow:hidden; background:#fff; }
  .tbl-scroll { overflow-x:auto; }
  .tbl { min-width:420px; }
  .tbl-head, .tbl-row { display:grid; grid-template-columns:1.5fr 1fr 1fr .9fr; padding:0 12px; }
  .tbl-head { background:var(--chipbg); border-bottom:1px solid var(--line); }
  .tbl-head > div { padding:9px 8px; font-size:10.5px; letter-spacing:.06em; text-transform:uppercase; color:var(--muted); font-weight:600; }
  .tbl-row { border-bottom:1px solid var(--hair); }
  .tbl-row:last-child { border-bottom:none; }
  .tbl-row > div { padding:9px 8px; font-size:12.5px; display:flex; align-items:center; }
  .tbl .num { font-family:'Geist Mono',monospace; font-size:12px; justify-content:flex-end; }
  .tbl .r { justify-content:flex-end; text-align:right; }
  .pos { color:var(--green); } .neg { color:var(--red); }
  /* Docked signal drawer: collapse Home to the feed column so nothing crushes */
  #app.sig-open .home-grid { grid-template-columns:minmax(0,1fr); }
  #app.sig-open .home-chan, #app.sig-open .home-right { display:none; }
  #app.sig-open .brief-row { grid-template-columns:1fr 1fr; }
  #app.sig-open .board { grid-template-columns:repeat(4,minmax(200px,1fr)); min-width:840px; }

  /* ── Parity pass: stat tiles, triage, AI panel ─────────────────────── */
  .fc-unread { width:8px; height:8px; border-radius:99px; background:#4B6EFF; flex:none; align-self:center; }
  .feed-card.unread .fc-title { font-weight:650; }
  .fc-bodyrow { display:flex; gap:14px; align-items:center; }
  .fc-bodyrow .fc-body { flex:1; min-width:0; }
  .fc-stat { flex:none; background:#EEF1FF; border:1px solid #DEE4FF; border-radius:14px; padding:10px 16px; text-align:center; min-width:92px; }
  .fc-stat.teal { background:#E9FAF8; border-color:#BDEEE9; }
  .fc-stat .si { font-size:15px; display:block; }
  .fc-stat .sv { font-size:19px; font-weight:700; letter-spacing:-.02em; display:block; font-family:'Geist Mono',monospace; color:#3D56D6; }
  .fc-stat.teal .sv { color:#067E76; }
  .fc-stat .sc { font-size:10px; color:var(--muted); display:block; margin-top:1px; }
  .fc-chip.growth { background:#E7FAF8; color:#067E76; border-color:#9FE7E0; font-weight:600; }
  .fc-chip.topic { background:#F4F0FF; color:#6B4EE6; border-color:#DCD2FA; }
  .fc-chip.overdue { background:#FEF6F6; color:var(--red); border-color:#F5C6C6; font-weight:600; }
  /* ── Customer data sources (hub + provenance chips) ── */
  .fc-chip.src { background:#EFF6FE; color:#2563B8; border-color:#C9DFF7; }
  .fc-chip.focus { background:#FFF8EC; color:#8A6100; border-color:#EEDCA8; font-style:italic; }
  .src-row { display:flex; align-items:center; gap:8px; width:100%; border:none; background:transparent; border-radius:9px; padding:7px 8px; cursor:pointer; text-align:left; }
  .src-row:hover { background:var(--chipbg); }
  .src-ico { font-size:14px; width:18px; text-align:center; flex:none; }
  .src-info { flex:1; min-width:0; display:flex; flex-direction:column; }
  .src-name { font-size:12.5px; color:var(--body); font-weight:550; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .src-meta { font-size:10.5px; color:var(--muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .src-dot { width:8px; height:8px; border-radius:99px; background:#0ABFB3; flex:none; }
  .src-dot.warn { background:#E8A13C; }
  .srch-intro { font-size:12.5px; color:var(--sec); line-height:1.55; }
  .srcm-card { border:1px solid var(--line); border-radius:12px; padding:14px 16px; display:flex; flex-direction:column; gap:10px; background:#fff; }
  .srcm-head { display:flex; align-items:center; gap:8px; font-size:13.5px; color:var(--ink); }
  .srcm-type { font-size:10px; font-weight:600; letter-spacing:.05em; text-transform:uppercase; color:var(--sec); background:var(--chipbg); border:1px solid var(--line); border-radius:6px; padding:2px 7px; flex:none; }
  .srcm-meta { font-size:11.5px; color:var(--muted); }
  .srcm-warn { font-size:11.5px; color:#8A5B00; background:#FFF8EC; border:1px solid #EEDCA8; border-radius:8px; padding:6px 10px; }
  .srcm-card label { font-size:10.5px; font-weight:600; letter-spacing:.06em; text-transform:uppercase; color:var(--muted); }
  .srcm-card textarea, .srcm-card input { background:var(--chipbg); border:1px solid var(--line); border-radius:9px; font-size:12.5px; padding:8px 10px; outline:none; color:var(--ink); font-family:inherit; width:100%; resize:vertical; }
  .srcm-actions { display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
  .srcm-endpoint { display:flex; flex-direction:column; gap:6px; }
  .srcm-curl { background:#22252B; color:#D6E4F0; font-size:11px; line-height:1.5; border-radius:9px; padding:10px 12px; overflow-x:auto; white-space:pre; margin:0; font-family:ui-monospace,Consolas,monospace; }
  .src-preview { display:none; }
  .src-preview.open { display:flex; flex-direction:column; gap:6px; }
  .src-preview .feed-card { pointer-events:none; background:var(--chipbg); }
  .src-preview .fc-actions, .src-preview .fc-comments { display:none; }
  .src-prevlabel { font-size:11px; color:var(--muted); font-style:italic; }
  .srcw-tiles { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; }
  .srcw-tile { display:flex; flex-direction:column; gap:4px; align-items:flex-start; border:1px solid var(--line); background:var(--chipbg); border-radius:11px; padding:12px; cursor:pointer; text-align:left; font-size:11.5px; color:var(--sec); line-height:1.4; }
  .srcw-tile:hover { border-color:var(--orange); }
  .srcw-tile .ic { font-size:18px; }
  .srcw-tile b { font-size:12.5px; color:var(--ink); }
  .srcw-drop { border:1.5px dashed var(--line); border-radius:11px; padding:22px; text-align:center; font-size:12.5px; color:var(--sec); cursor:pointer; }
  .srcw-drop.over { border-color:var(--orange); background:var(--orange-pale); }
  .srcw-drop a { color:var(--orange); }
  .srcw-schema { display:flex; gap:6px; flex-wrap:wrap; }
  .srcw-note { font-size:12px; color:var(--muted); font-style:italic; }
  .feed-card.growth, .sig-card.growth { border-left-color:#0ABFB3; }
  .fc-act.dim { margin-left:auto; color:var(--muted); }
  .board-jump { align-self:flex-end; margin-left:10px; white-space:nowrap; }
  .nav-sec { font-family:'Geist Mono',monospace; font-size:9px; letter-spacing:.14em; color:rgba(255,255,255,.38); padding:4px 14px 2px; }
  #boardAI { padding:0 18px; }
  .ai-panel { margin:0 0 12px; border:1px solid #DEE4FF; background:linear-gradient(180deg,#F6F8FF,#FBFCFF); border-radius:14px; padding:11px 16px; font-size:12.5px; color:var(--body); line-height:1.55; }
  .ai-panel b { color:#4B6EFF; }
  .ai-ask { border:none; background:none; color:#4B6EFF; font-weight:600; font-size:12px; cursor:pointer; padding:0; }
  #disPop { position:fixed; display:none; z-index:120; background:#fff; border:1px solid var(--line); border-radius:12px; box-shadow:0 12px 34px rgba(27,29,49,.16); padding:6px; min-width:210px; }
  #disPop .mp-title { font-size:10.5px; letter-spacing:.08em; text-transform:uppercase; color:var(--muted); padding:6px 10px 4px; font-weight:600; }
  #disPop .mp-item { padding:7px 10px; border-radius:8px; font-size:12.5px; cursor:pointer; }
  #disPop .mp-item:hover { background:var(--hair); }
  .dis-banner { border:1px solid #F5C6C6; background:#FEF6F6; color:var(--red); border-radius:10px; padding:9px 12px; font-size:12px; }
  .res-card { border:1px solid #BDEEE9; background:#F2FBFA; border-radius:12px; padding:11px 14px; }
  .res-steps { list-style:none; margin:0; padding:0; font-size:12.5px; color:var(--body); display:flex; flex-direction:column; gap:3px; }
  .res-step { display:flex; gap:8px; align-items:center; font-size:12.5px; padding:3px 0; cursor:pointer; }
  .sgd-note-row { flex-basis:100%; min-width:0; display:flex; gap:8px; align-items:center; margin-top:4px; }
  .sgd-note-row input:not([type=date]) { flex:1; min-width:0; border:1px solid var(--line); border-radius:8px; padding:6px 9px; font-size:12px; font-family:inherit; outline:none; }
  .sgd-due { display:flex; gap:5px; align-items:center; font-size:11px; color:var(--muted); white-space:nowrap; }
  .sgd-due input { border:1px solid var(--line); border-radius:8px; padding:5px 7px; font-size:11.5px; font-family:inherit; }

  /* ── Signal board v3: KPI strip + hero + opportunity map + swim lanes ── */
  .board-scroll { flex:1; min-height:0; overflow-y:auto; padding:16px 26px 44px; display:flex; flex-direction:column; gap:16px; }
  .board-scroll > * { flex:0 0 auto; }
  .board-scroll .kpi-strip { display:flex; gap:10px; align-items:stretch; flex-wrap:wrap; overflow:visible; background:none; border:none; }
  .kc { flex:1; min-width:170px; background:#fff; border:1px solid var(--line); border-left:3px solid var(--c,#ccc); border-radius:12px; padding:10px 14px; cursor:pointer; transition:box-shadow .15s, transform .15s; }
  .kc:hover { box-shadow:0 4px 14px rgba(27,29,49,.08); }
  .kc.on { background:var(--chipbg); border-color:var(--c); box-shadow:inset 0 0 0 1px var(--c); }
  .kc-hd { display:flex; align-items:baseline; justify-content:space-between; gap:8px; }
  .kc-lbl { font-size:11px; font-weight:600; letter-spacing:.05em; text-transform:uppercase; color:var(--sec); }
  .kc-cnt { font-family:'Geist Mono',monospace; font-size:10px; color:var(--muted); white-space:nowrap; }
  .kc-val { font-family:'Geist Mono',monospace; font-size:21px; font-weight:600; letter-spacing:-.02em; color:var(--c); margin-top:3px; }
  .kc-sub { font-size:10.5px; color:var(--muted); margin-top:1px; }
  .kc-back { align-self:center; border:1px solid var(--line); background:#fff; border-radius:99px; padding:7px 13px; font-size:12px; font-weight:500; color:var(--body); cursor:pointer; white-space:nowrap; }
  .hero-row { display:grid; grid-template-columns:minmax(300px,1.35fr) minmax(260px,1fr) minmax(240px,1fr); gap:14px; align-items:stretch; }
  @media (max-width:1150px) { .hero-row { grid-template-columns:1fr 1fr; } .tm-panel { grid-column:1 / -1; min-height:400px; } }
  .hero-panel, .hd-panel, .tm-panel { background:#fff; border:1px solid var(--line); border-radius:14px; padding:14px 16px; display:flex; flex-direction:column; min-height:476px; }
  .hc-top { display:flex; align-items:center; gap:10px; }
  .hc-lbl { font-size:11px; font-weight:600; letter-spacing:.06em; text-transform:uppercase; color:var(--sec); flex:1; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .hero-dots { display:flex; gap:5px; }
  .h-dot { width:7px; height:7px; border-radius:99px; border:none; background:var(--line); cursor:pointer; padding:0; }
  .h-dot.on { background:var(--orange); }
  .hc-chart { position:relative; flex:1; min-height:0; display:flex; align-items:center; }
  .hc-val { position:absolute; top:0; right:2px; font-family:'Geist Mono',monospace; font-size:13px; color:var(--muted); }
  .hc-chart svg { width:100%; height:100%; }
  .hd-panel { gap:9px; }
  .hd-name { font-size:14.5px; font-weight:600; line-height:1.3; letter-spacing:-.01em; }
  .hd-ret { font-size:11px; color:var(--muted); margin-top:1px; }
  .cat-tag { font-family:'Geist Mono',monospace; font-size:9px; letter-spacing:.07em; text-transform:uppercase; border-radius:99px; padding:2px 8px; font-weight:500; }
  .hd-mets { display:flex; gap:18px; }
  .hm-v { font-family:'Geist Mono',monospace; font-size:16px; font-weight:600; letter-spacing:-.01em; }
  .hm-l { font-size:9.5px; letter-spacing:.07em; text-transform:uppercase; color:var(--muted); margin-top:1px; }
  .hd-insight { flex:1; min-height:0; overflow-y:auto; background:linear-gradient(180deg,#F6F8FF,#FBFCFF); border:1px solid #DEE4FF; border-radius:10px; padding:9px 11px; font-size:11.5px; color:var(--body); line-height:1.55; }
  .hd-insight b { color:#4B6EFF; }
  .hd-acts { display:flex; gap:6px; flex-wrap:wrap; margin-top:auto; }
  .tm-hd { display:flex; align-items:center; gap:8px; margin-bottom:8px; }
  .tm-ttl { font-size:11px; font-weight:600; letter-spacing:.06em; text-transform:uppercase; color:var(--sec); }
  .tm-flbl { margin-left:auto; font-family:'Geist Mono',monospace; font-size:9.5px; color:var(--muted); }
  .tm-flbl.filtered { color:var(--orange); font-weight:600; }
  .tm-wrap { flex:1; min-height:150px; position:relative; }
  .tm-wrap canvas { position:absolute; inset:0; width:100%; height:100%; cursor:pointer; }
  .tm-tip { position:absolute; display:none; background:#1B1D31; color:#fff; border-radius:8px; padding:7px 10px; font-size:11px; line-height:1.45; pointer-events:none; z-index:5; max-width:190px; }
  .lanes { display:flex; flex-direction:column; gap:16px; }
  .lane3 { display:flex; flex-direction:column; gap:9px; }
  .lane3-hdr { display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; }
  .lane3-ttl { font-size:14px; font-weight:600; letter-spacing:-.01em; }
  .lane3-sub { font-family:'Geist Mono',monospace; font-size:9.5px; letter-spacing:.07em; text-transform:uppercase; font-weight:500; }
  .lane3-total { margin-left:auto; font-family:'Geist Mono',monospace; font-size:12.5px; font-weight:600; }
  .lane3-cnt { font-family:'Geist Mono',monospace; font-size:10px; color:var(--muted); background:#fff; border:1px solid var(--line); border-radius:8px; padding:1px 7px; }
  .lane3-del { border:none; background:none; color:var(--muted); cursor:pointer; font-size:13px; padding:2px 5px; }
  .lane3-del:hover { color:var(--red); }
  .lane3-cards { display:grid; grid-auto-flow:column; grid-auto-columns:288px; gap:11px; overflow-x:auto; padding:2px 2px 8px; scrollbar-width:thin; }
  .lane3-empty { font-size:12px; color:var(--muted); padding:6px 2px; }
  .lcard { background:#fff; border:1px solid var(--line); border-radius:13px; padding:0 0 11px; display:flex; flex-direction:column; gap:7px; cursor:pointer; transition:box-shadow .15s; overflow:hidden; }
  .lcard:hover { box-shadow:0 5px 16px rgba(27,29,49,.09); }
  .lc-chart { position:relative; background:var(--chipbg); border-bottom:1px solid var(--line2); padding:9px 12px 5px; height:66px; }
  .lc-chart .sev-pill { position:absolute; top:8px; left:10px; }
  .lc-val { position:absolute; top:8px; right:11px; font-family:'Geist Mono',monospace; font-size:13px; font-weight:600; }
  .lc-title { font-size:12.8px; font-weight:600; line-height:1.35; padding:2px 12px 0; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
  .lc-type { font-size:10px; letter-spacing:.05em; text-transform:uppercase; color:var(--muted); padding:0 12px; display:flex; gap:7px; align-items:center; flex-wrap:wrap; }
  .lc-st { font-family:'Geist Mono',monospace; font-size:9px; border-radius:99px; padding:1px 7px; background:var(--hair); color:var(--sec); border:1px solid var(--line); text-transform:uppercase; }
  .lc-narr { font-size:11.5px; color:var(--body); line-height:1.5; padding:0 12px; margin:0; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; flex:1; }
  .lc-foot { display:flex; align-items:center; gap:6px; padding:0 12px; }
  .lc-exp { font-family:'Geist Mono',monospace; font-size:11.5px; font-weight:600; }
  .lc-btns { margin-left:auto; display:flex; gap:2px; }
  .lc-btns button { border:none; background:none; font-size:11px; color:var(--sec); cursor:pointer; padding:3px 5px; border-radius:7px; font-weight:500; }
  .lc-btns button:hover { background:var(--hair); color:var(--ink); }
  .lc-btns button.lit { color:var(--orange); }

  /* ── Board v4: workflows / measurement / results ───────────────────── */
  .board-nav { display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
  .pv-wrap { position:relative; }
  .pv-menu { position:absolute; top:38px; left:0; z-index:60; display:none; background:#fff; border:1px solid var(--line); border-radius:14px; box-shadow:0 14px 40px rgba(27,29,49,.16); min-width:320px; padding:8px; }
  .pv-menu.open { display:block; }
  .pv-head { font-size:10px; letter-spacing:.09em; text-transform:uppercase; color:var(--muted); font-weight:600; padding:6px 10px 4px; }
  .pv-item { display:block; width:100%; text-align:left; border:none; background:none; border-radius:10px; padding:8px 10px; cursor:pointer; }
  .pv-item:hover { background:var(--hair); }
  .pv-name { font-size:13px; font-weight:600; color:var(--ink); display:flex; gap:7px; align-items:center; }
  .pv-soon { font-family:'Geist Mono',monospace; font-size:8.5px; letter-spacing:.08em; background:var(--hair); border:1px solid var(--line); border-radius:99px; padding:1px 7px; color:var(--muted); }
  .pv-desc { font-size:11px; color:var(--muted); line-height:1.45; margin-top:2px; }
  .pv-anchor { font-size:10px; color:var(--sec); margin-top:2px; }
  .pb-strip { display:flex; gap:10px; align-items:center; flex-wrap:wrap; width:100%; }
  .pb-name { font-size:15px; font-weight:600; letter-spacing:-.01em; }
  .pb-sub { font-size:11px; color:var(--muted); }
  .pb-stage { background:#fff; border:1px solid var(--line); border-radius:12px; padding:7px 13px; text-align:center; min-width:86px; }
  .pb-stage.none { opacity:.45; }
  .pb-n { font-family:'Geist Mono',monospace; font-size:16px; font-weight:600; display:block; }
  .pb-l { font-size:9px; letter-spacing:.06em; text-transform:uppercase; color:var(--muted); }
  .tm-bar { display:flex; gap:7px; align-items:center; font-family:'Geist Mono',monospace; font-size:11px; color:var(--sec); background:var(--chipbg); border:1px solid var(--line2); border-radius:99px; padding:5px 8px 5px 13px; }
  .tm-bar button { border:1px solid var(--line); background:#fff; border-radius:99px; font-size:11px; padding:3px 10px; cursor:pointer; font-weight:500; color:var(--body); }
  .lane3-pin { border:1px solid var(--line); background:#fff; border-radius:99px; font-size:10.5px; padding:3px 10px; cursor:pointer; color:var(--sec); font-weight:500; }
  .lane3-pin.on { background:#E9FAF8; border-color:#9FE7E0; color:#067E76; }
  .lane3-cfg { border:none; background:none; color:var(--muted); cursor:pointer; font-size:13px; padding:2px 4px; }
  .lane3-cfg:hover { color:var(--ink); }
  .lane3-meas { font-family:'Geist Mono',monospace; font-size:9px; background:#F4F0FF; color:#6B4EE6; border:1px solid #DCD2FA; border-radius:99px; padding:2px 8px; }
  .team-pulse { display:flex; gap:12px; align-items:center; background:#1B1D31; color:#fff; border-radius:14px; padding:11px 16px; }
  .tp-ttl { font-size:12.5px; font-weight:600; }
  .tp-sub { font-size:10.5px; color:rgba(255,255,255,.55); }
  .tp-stat { display:flex; gap:7px; align-items:baseline; background:rgba(255,255,255,.07); border-radius:10px; padding:6px 12px; }
  .tp-n { font-family:'Geist Mono',monospace; font-size:15px; font-weight:600; }
  .tp-l { font-size:10px; color:rgba(255,255,255,.6); }
  .tp-stat.overdue .tp-n { color:#FF9A7B; }
  .wf-steps { display:flex; flex-direction:column; gap:8px; }
  .wf-step { display:grid; grid-template-columns:52px 1fr; gap:12px; border:1px solid var(--line); border-radius:11px; padding:9px 12px; }
  .wf-off { font-family:'Geist Mono',monospace; font-size:12px; font-weight:600; color:var(--orange); }
  .wf-nm { font-size:12.5px; font-weight:600; }
  .wf-prod { font-size:11px; color:var(--muted); margin-top:2px; }
  .meas-card { border:1px solid var(--line); border-radius:12px; padding:11px 14px; }
  /* Lane config: derived category + the methodology behind the chosen types */
  /* Kickoff: the standard schedule, with per-launch adjustment kept secondary */
  .wf-sku-bar { display:flex; align-items:center; gap:9px; }
  .wf-sku-bar input { flex:1; }
  .wf-sku-count { flex:none; font-family:'Geist Mono',monospace; font-size:10.5px; color:var(--muted); }
  .wf-sched-hd { display:flex; align-items:center; gap:8px; margin-top:4px; }
  .wf-adj-btn { border:1px solid var(--line); background:#fff; border-radius:8px; font-family:inherit; font-size:11px; color:var(--sec); padding:3px 9px; cursor:pointer; }
  .wf-adj-btn:hover { border-color:var(--orange-lt); color:var(--orange-dk); }
  .wf-adj-btn.on { border-color:var(--orange); background:var(--orange-pale); color:var(--orange-dk); }
  .wf-adjust { display:flex; flex-direction:column; gap:6px; border:1px solid var(--orange-lt); background:var(--orange-pale); border-radius:10px; padding:10px 12px; }
  .wf-adj-row { display:flex; align-items:center; gap:9px; font-size:12px; }
  .wf-adj-row .nm { flex:1; min-width:0; color:var(--ink); }
  .wf-adj-row input { width:64px; border:1px solid var(--line); border-radius:7px; padding:4px 7px; font-family:'Geist Mono',monospace; font-size:11.5px; text-align:right; }
  .wf-adj-row .std { font-size:10.5px; color:var(--muted); font-family:'Geist Mono',monospace; width:74px; }
  .wf-adj-row .date { font-size:10.5px; color:var(--orange-dk); width:64px; text-align:right; }
  .wf-adj-note { font-size:11px; color:var(--orange-dk); }
  /* Team board: lens switch + one section per owner */
  .tbd-lens-sw { display:inline-flex; gap:4px; margin-left:10px; }
  .tbd-lens-sw button { border:1px solid var(--line); background:#fff; border-radius:7px; font-family:inherit; font-size:11px; color:var(--sec); padding:2px 8px; cursor:pointer; }
  .tbd-lens-sw button.on { border-color:var(--orange); background:var(--orange-pale); color:var(--orange-dk); font-weight:600; }
  .tbd-grp { margin-bottom:8px; }
  .tbd-grp-hd { display:flex; align-items:center; gap:10px; width:100%; padding:9px 10px; border:1px solid var(--line2); border-radius:10px; background:#fff; font-family:inherit; font-size:12.5px; color:var(--ink); text-align:left; cursor:pointer; }
  .tbd-grp-hd:hover { border-color:var(--orange-lt); }
  .tbd-grp.open .tbd-grp-hd { border-bottom-left-radius:0; border-bottom-right-radius:0; border-color:var(--line); }
  .tbd-grp-hd .car { color:var(--faint); font-size:10px; }
  .tbd-grp.open .tbd-grp-hd .car { color:var(--orange); }
  .tbd-grp-hd .money { color:var(--sec); }
  .tbd-grp.open table { border:1px solid var(--line); border-top:none; border-radius:0 0 10px 10px; }
  .tbd-grp-hd .n { font-family:'Geist Mono',monospace; font-size:10.5px; color:var(--muted); }
  .tbd-grp-hd .n.late { color:var(--orange-dk); }
  .tbd-none { color:var(--faint); }
  .tbd-queue-note { margin:10px 2px 4px; font-size:11.5px; color:var(--muted); }
  .tbd-queue-note a { color:var(--orange); cursor:pointer; }
  /* Portfolio timeline: one marker per launch on each activity row. The marker
     carries the launch's number so the row can be read rather than clicked. */
  .pf-mark { position:absolute; top:50%; min-width:18px; height:18px; transform:translate(-50%,-50%); padding:0 4px;
             border-radius:99px; border:1px dashed var(--line); background:#fff; color:var(--muted);
             font-family:'Geist Mono',monospace; font-size:9.5px; font-weight:600; line-height:16px; cursor:pointer; }
  .pf-mark.open  { background:var(--orange); border:1px solid var(--orange); color:#fff; }
  .pf-mark.clean { background:var(--ink); border:1px solid var(--ink); color:#fff; }
  .pf-mark.wide { min-width:52px; }
  .pf-mark:hover { z-index:3; outline:2px solid var(--orange-lt); }
  .pf-mark.start { transform:translate(0,-50%); } .pf-mark.end { transform:translate(-100%,-50%); }
  .pf-key { display:flex; flex-wrap:wrap; gap:6px; padding:9px 2px 2px; }
  .pf-key-i { display:inline-flex; align-items:center; gap:6px; border:1px solid var(--line); border-radius:99px;
              background:#fff; font-family:inherit; font-size:11px; color:var(--body); padding:3px 9px 3px 3px; cursor:pointer; }
  .pf-key-i:hover { border-color:var(--orange-lt); color:var(--orange-dk); }
  .pf-key-i .n { width:17px; height:17px; flex:none; border-radius:99px; background:var(--ink); color:#fff;
                 font-family:'Geist Mono',monospace; font-size:9.5px; line-height:17px; text-align:center; }
  .pf-key-i .d { font-family:'Geist Mono',monospace; font-size:9.5px; color:var(--faint); }
  .pf-key-i .x { font-family:'Geist Mono',monospace; font-size:9.5px; color:#fff; background:var(--orange); border-radius:99px; padding:0 5px; }
  /* while scoped, the key becomes the switcher: back to all, or straight to another launch */
  .pf-key-i.all { border-color:var(--orange); background:var(--orange-pale); color:var(--orange-dk); font-weight:600; }
  .pf-key-i.all .n { background:var(--orange); }
  /* Workflow library: one tile per standard workflow, all the same size */
  /* one row per workflow — a list reads down, and every row is the same shape */
  .wf-tiles { display:flex; flex-direction:column; gap:8px; }
  /* fixed height: a list of workflows should scan evenly, so a longer description
     clamps rather than making its row taller than the rest */
  .wf-tile { display:grid; grid-template-columns:1fr 190px; align-items:center; gap:14px; height:70px; text-align:left; font-family:inherit; border:1px solid var(--line); border-radius:11px; background:#fff; padding:11px 14px; cursor:pointer; overflow:hidden; }
  .wf-tile:hover { border-color:var(--orange-lt); box-shadow:0 3px 14px rgba(27,29,49,.07); }
  .wf-tile.soon { background:var(--chipbg); }
  .wf-tile-hd { display:flex; align-items:center; gap:7px; font-size:13.5px; color:var(--ink); }
  .wf-tile-desc { grid-column:1; font-size:11.5px; line-height:1.5; color:var(--sec); display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
  .wf-tile-foot { grid-column:2; grid-row:1 / span 2; display:flex; flex-direction:column; align-items:flex-end; gap:2px; font-size:10.5px; color:var(--muted); font-family:'Geist Mono',monospace; }
  .wf-tile-foot .anch { color:var(--faint); }
  .wf-back { align-self:flex-start; border:none; background:none; font-family:inherit; font-size:12px; color:var(--orange); cursor:pointer; padding:0; }
  .wf-back:hover { color:var(--orange-dk); }
  .wf-detail-hd { display:flex; align-items:center; gap:8px; font-size:15px; }
  .wf-facts { display:flex; gap:14px; flex-wrap:wrap; font-size:11.5px; color:var(--sec); }
  .wf-watch { font-size:11px; color:var(--muted); margin-top:2px; }
  .lc-derived { display:flex; align-items:center; gap:8px; font-size:12px; color:var(--body); background:var(--chipbg); border:1px solid var(--line2); border-radius:9px; padding:8px 11px; margin-bottom:2px; }
  .lc-derived .dot { width:9px; height:9px; border-radius:99px; flex:none; }
  .lc-derived .why { color:var(--muted); font-size:11px; }
  .lc-method { display:flex; flex-direction:column; gap:7px; }
  .lc-rule { border:1px solid var(--line2); border-radius:9px; padding:8px 11px; font-size:12px; color:var(--body); }
  .lc-rule b { color:var(--ink); }
  .lc-rule .cond { font-family:'Geist Mono',monospace; font-size:11px; color:var(--sec); display:block; margin-top:3px; }
  .lc-rule .cnt { color:var(--muted); }
  .lc-method .rr-empty { font-size:12px; color:var(--faint); }
  .meas-unit { font-family:'Geist Mono',monospace; font-size:9.5px; background:var(--hair); border:1px solid var(--line); border-radius:99px; padding:1px 8px; color:var(--sec); }
  /* Results time strip: a month of closed outcomes per bar, with the selected
     span brought forward and the rest left visible so the choice has context. */
  .rs-time { border:1px solid var(--line2); border-radius:12px; padding:11px 14px 9px; display:flex; flex-direction:column; gap:8px; }
  .rs-time-hd { display:flex; align-items:baseline; gap:10px; font-size:12px; color:var(--sec); }
  .rs-time-hd b { font-size:14px; color:var(--ink); }
  .rs-time-hd .n { font-family:'Geist Mono',monospace; font-size:10.5px; color:var(--muted); }
  .rs-range { display:flex; align-items:center; gap:11px; }
  .rs-range input[type=range] { flex:1; accent-color:var(--orange); }
  .rs-range .lbl { font-family:'Geist Mono',monospace; font-size:10.5px; color:var(--muted); white-space:nowrap; }
  .rs-range .rs-span { font-family:'Geist Mono',monospace; font-size:10.5px; color:var(--orange-dk); white-space:nowrap; min-width:66px; text-align:right; }
  /* Results: filters in a rail with their counts, table on the right */
  .rs-split { display:grid; grid-template-columns:212px 1fr; gap:16px; align-items:start; }
  @media (max-width:1000px) { .rs-split { grid-template-columns:1fr; } }
  .rs-rail { display:flex; flex-direction:column; gap:14px; border-right:1px solid var(--line2); padding-right:14px; }
  .rs-rail-sec { font-size:10px; font-weight:600; letter-spacing:.09em; text-transform:uppercase; color:var(--faint); margin-bottom:5px; }
  .rs-rail-i { display:flex; align-items:center; gap:8px; width:100%; border:none; background:none; border-radius:8px;
               font-family:inherit; font-size:12.5px; color:var(--body); padding:6px 8px; cursor:pointer; text-align:left; }
  .rs-rail-i:hover { background:var(--chipbg); }
  .rs-rail-i.on { background:var(--orange-pale); color:var(--orange-dk); font-weight:600; }
  .rs-rail-i .n { margin-left:auto; font-family:'Geist Mono',monospace; font-size:10.5px; color:var(--muted); }
  .rs-rail-i.on .n { color:var(--orange-dk); }
  .rs-av { width:22px; height:22px; flex:none; border-radius:99px; color:#fff; font-size:9.5px; font-weight:700;
           display:flex; align-items:center; justify-content:center; }
  .rs-main { min-width:0; }
  .rs-main-hd { display:flex; align-items:flex-start; gap:10px; margin-bottom:8px; }
  .rs-title { font-size:15px; font-weight:600; color:var(--ink); }
  .rs-chips { display:flex; flex-wrap:wrap; gap:6px; }
  .rs-chip { display:inline-flex; align-items:center; gap:7px; border:1px solid var(--line); background:#fff; border-radius:99px;
             font-family:inherit; font-size:12px; color:var(--body); padding:4px 11px; cursor:pointer; }
  .rs-chip:hover { border-color:var(--orange-lt); }
  .rs-chip.on { border-color:var(--orange); background:var(--orange-pale); color:var(--orange-dk); font-weight:600; }
  .rs-chip .n { font-family:'Geist Mono',monospace; font-size:10.5px; color:var(--muted); }
  .rs-chip.on .n { color:var(--orange-dk); }
  .rslt-tbl tr.rs-total td { border-top:2px solid var(--line); font-weight:600; color:var(--ink); padding-top:9px; }
  .rslt-tbl { width:100%; border-collapse:collapse; font-size:12px; }
  .rslt-tbl th { text-align:left; font-size:9.5px; letter-spacing:.07em; text-transform:uppercase; color:var(--muted); padding:6px 8px; border-bottom:1px solid var(--line); }
  .rslt-tbl td { padding:7px 8px; border-bottom:1px solid var(--line2); }
  .rslt-tbl tr.mrow { cursor:pointer; }
  .rslt-tbl tr.mrow:hover td { background:var(--chipbg); }
  .rslt-tbl .num { font-family:'Geist Mono',monospace; text-align:right; }
  .rslt-note { font-size:10.5px; color:var(--muted); line-height:1.5; margin-top:10px; }
  .modal.wide { max-width:760px; width:min(760px,94vw); }
  .sku-grid { flex:none; display:grid; grid-template-columns:1fr 1fr; gap:4px 12px; min-height:110px; max-height:200px; overflow-y:auto; border:1px solid var(--line); border-radius:10px; padding:8px 10px; }
  .sku-grid label { font-size:11.5px; display:flex; gap:7px; align-items:center; }

  /* ── Topic (exception) boards ──────────────────────────────────────── */
  .tb-strip { display:flex; gap:12px; align-items:center; flex-wrap:wrap; width:100%; }
  .tb-name { font-size:15px; font-weight:600; letter-spacing:-.01em; }
  .tb-sub { font-size:11px; color:var(--muted); }
  .tb-admin { font-size:11px; color:var(--sec); background:var(--chipbg); border:1px solid var(--line2); border-radius:99px; padding:4px 11px; }
  .xbadge { font-family:'Geist Mono',monospace; font-size:8.5px; letter-spacing:.08em; text-transform:uppercase; border-radius:99px; padding:2px 8px; font-weight:500; }
  .xbadge.std { background:#F4F0FF; color:#6B4EE6; border:1px solid #DCD2FA; }
  .xbadge.copy { background:var(--hair); color:var(--sec); border:1px solid var(--line); }
  .xbadge.prompt { background:#EEF1FF; color:#3D56D6; border:1px solid #DEE4FF; }
  .xchip { font-family:'Geist Mono',monospace; font-size:9.5px; color:var(--sec); background:#fff; border:1px solid var(--line); border-radius:99px; padding:2px 9px; }
  .xchip.scope { color:var(--orange); border-color:#F5C6A8; background:#FEF7F2; }
  .lane3-hdr .xrow { display:flex; gap:6px; align-items:center; flex-wrap:wrap; flex-basis:100%; margin-top:3px; }
  .cfg-row { display:flex; gap:9px; align-items:center; margin-bottom:7px; }
  .cfg-row label { font-size:12px; color:var(--body); flex:1; }
  .cfg-row input[type=number], .cfg-row input[type=text] { width:110px; border:1px solid var(--line); border-radius:8px; padding:5px 9px; font-size:12px; font-family:'Geist Mono',monospace; }
  .cfg-locked { border:1px dashed var(--line); border-radius:10px; padding:9px 12px; font-size:11.5px; color:var(--sec); background:var(--chipbg); line-height:1.5; }
  .cfg-note { font-size:11px; color:var(--muted); line-height:1.5; }
  .cfg-radio { display:flex; gap:7px; align-items:center; font-size:12px; margin-bottom:4px; }
  .digest-frame { border:1px solid var(--line); border-radius:12px; overflow:hidden; max-height:400px; overflow-y:auto; background:#f0f2f7; }
  .ex-evidence { border:1px solid var(--line); border-radius:12px; overflow:hidden; }
  .ex-tabs { display:flex; gap:2px; padding:6px; background:var(--chipbg); border-bottom:1px solid var(--line2); }
  .ex-tabs button { border:none; background:none; border-radius:8px; font-size:11.5px; padding:4px 10px; cursor:pointer; color:var(--sec); font-weight:500; }
  .ex-tabs button.on { background:#fff; color:var(--ink); font-weight:600; box-shadow:0 1px 3px rgba(27,29,49,.08); }

  /* ── Team Board ────────────────────────────────────────────────────── */
  .modal.full { max-width:1180px; width:min(1180px,96vw); }
  .tbd-grid { display:grid; grid-template-columns:210px 1fr; gap:14px; min-height:420px; }
  .tbd-rail { display:flex; flex-direction:column; gap:14px; }
  .tbd-sec { font-size:10px; letter-spacing:.09em; text-transform:uppercase; color:var(--muted); font-weight:600; margin-bottom:5px; }
  .tbd-f { display:flex; align-items:center; gap:8px; width:100%; border:1px solid transparent; background:none; border-radius:9px; padding:5px 9px; cursor:pointer; font-size:12.5px; color:var(--body); text-align:left; }
  .tbd-f:hover { background:var(--hair); }
  .tbd-f.on { background:var(--chipbg); border-color:var(--line); font-weight:600; }
  .tbd-f .n { margin-left:auto; font-family:'Geist Mono',monospace; font-size:11px; color:var(--muted); }
  .tbd-f.overdue .n { color:var(--red); font-weight:600; }
  .tbd-tbl { width:100%; border-collapse:collapse; font-size:12px; }
  .tbd-tbl th { text-align:left; font-size:9.5px; letter-spacing:.07em; text-transform:uppercase; color:var(--muted); padding:6px 8px; border-bottom:1px solid var(--line); cursor:pointer; white-space:nowrap; }
  .tbd-tbl td { padding:7px 8px; border-bottom:1px solid var(--line2); }
  .tbd-tbl tr.trow { cursor:pointer; }
  .tbd-tbl tr.trow:hover td { background:var(--chipbg); }
  .tbd-st { font-family:'Geist Mono',monospace; font-size:9px; border-radius:99px; padding:1px 8px; text-transform:uppercase; white-space:nowrap; }
  .tbd-st.new { background:var(--hair); color:var(--sec); }
  .tbd-st.assigned { background:#EEF1FF; color:#3D56D6; }
  .tbd-st.in_progress { background:#FEF7EC; color:#B97509; }
  .tbd-st.resolved { background:#E9FAF8; color:#067E76; }
  .tbd-late { color:var(--red); font-weight:600; }
  .tbd-lens { font-size:11px; color:var(--muted); }

  /* ── Workflow instance monitor ─────────────────────────────────────── */
  .wm-here { border:1px solid #DEE4FF; background:linear-gradient(180deg,#F6F8FF,#FBFCFF); border-radius:12px; padding:10px 14px; font-size:12.5px; color:var(--body); line-height:1.55; }
  .wm-here b { color:#4B6EFF; }
  .wm-gantt { position:relative; height:76px; border:1px solid var(--line); border-radius:12px; background:var(--chipbg); margin:2px 0 4px; }
  .wm-axis { position:absolute; left:0; right:0; top:38px; height:2px; background:var(--line); }
  .wm-node { position:absolute; top:26px; transform:translateX(-50%); text-align:center; }
  .wm-dot { width:13px; height:13px; border-radius:99px; border:2.5px solid var(--line); background:#fff; margin:0 auto; }
  .wm-node.done .wm-dot { background:var(--orange); border-color:var(--orange); }
  .wm-node.running .wm-dot { background:#fff; border-color:var(--orange); }
  .wm-lbl { font-family:'Geist Mono',monospace; font-size:9px; color:var(--muted); margin-top:5px; white-space:nowrap; }
  .wm-launch { position:absolute; top:6px; bottom:6px; width:2px; background:#1B1D31; }
  .wm-launch::after { content:'LAUNCH'; position:absolute; top:-2px; left:5px; font-family:'Geist Mono',monospace; font-size:8px; letter-spacing:.08em; color:#1B1D31; }
  .wm-today { position:absolute; top:6px; bottom:6px; width:2px; background:#E8A13C; }
  .wm-today::after { content:'TODAY'; position:absolute; bottom:-2px; left:5px; font-family:'Geist Mono',monospace; font-size:8px; letter-spacing:.08em; color:#B97509; }
  .wm-today.rightmost::after { left:auto; right:5px; }
  /* ── Workflow timeline: one row per activity, positioned against the launch date ── */
  .tl { border:1px solid var(--line); border-radius:12px; background:var(--chipbg); padding:10px 14px 8px; }
  .tl-hd { display:flex; align-items:baseline; gap:8px; margin-bottom:2px; }
  .tl-hd b { font-size:12.5px; }
  .tl-hd span { font-size:11px; color:var(--sec); }
  .tl-grid { position:relative; }
  .tl-axis { position:relative; height:16px; margin-left:var(--tl-gut); }
  .tl-tick { position:absolute; transform:translateX(-50%); font-family:'Geist Mono',monospace; font-size:8.5px; letter-spacing:.06em; color:var(--muted); white-space:nowrap; }
  .tl-tick.launch { color:#1B1D31; font-weight:700; }
  .tl-rows { position:relative; }
  .tl-vline { position:absolute; top:0; bottom:0; width:2px; z-index:0; }
  .tl-vline.launch { background:#1B1D31; }
  .tl-vline.today  { background:#E8A13C; }
  .tl-row { position:relative; display:grid; grid-template-columns:var(--tl-gut) 1fr; align-items:center; min-height:30px; z-index:1; }
  .tl-row + .tl-row { border-top:1px dashed var(--line); }
  .tl-nm { padding-right:10px; font-size:11.5px; line-height:1.25; }
  .tl-nm i { display:block; font-style:normal; font-family:'Geist Mono',monospace; font-size:9px; color:var(--muted); }
  .tl-track { position:relative; height:30px; }
  .tl-node { position:absolute; top:50%; transform:translate(-50%,-50%); display:flex; align-items:center; gap:5px;
             padding:2px 7px; border-radius:99px; border:1.5px dashed var(--line); background:#fff;
             font-family:'Geist Mono',monospace; font-size:9px; color:var(--muted); white-space:nowrap; }
  .tl-node.done    { border:1.5px solid var(--orange); color:#8A4B10; background:#FFF3E8; }
  .tl-node.running { border:1.5px solid #E8A13C; color:#B97509; background:#FFF8EC; }
  .tl-node.start { transform:translate(0,-50%); }
  .tl-node.end   { transform:translate(-100%,-50%); }
  .tl-node .d { width:7px; height:7px; border-radius:99px; background:var(--line); flex:none; }
  .tl-node.done .d { background:var(--orange); }
  .tl-node.running .d { background:#E8A13C; }
  .tl-legend { display:flex; gap:14px; margin-top:7px; margin-left:var(--tl-gut); font-size:10px; color:var(--muted); }
  .tl-legend i { display:inline-block; width:9px; height:9px; border-radius:99px; margin-right:5px; vertical-align:-1px; }
  .wf-scope { display:flex; gap:8px; flex-wrap:wrap; }
  .wf-scope-opt { display:flex; align-items:center; gap:6px; border:1px solid var(--line); border-radius:99px;
                  padding:5px 12px; font-size:12px; cursor:pointer; background:#fff; }
  .wf-scope-opt:has(input:checked) { border-color:var(--orange); background:#FFF3E8; color:#8A4B10; font-weight:600; }
  .wf-scope-n { font-family:'Geist Mono',monospace; font-size:10px; color:var(--muted); }
  .wf-scope-bar { display:flex; gap:6px; align-items:center; margin:6px 0; }
  .wf-scope-note { font-size:11.5px; color:var(--sec); min-height:16px; }
  .wf-scope-note.warn { color:#B45309; }
  @media (max-width:820px){ .tl-row { grid-template-columns:1fr; } .tl-axis,.tl-legend { margin-left:0; } }

  .wm-row { display:grid; grid-template-columns:16px 54px 1fr auto; gap:10px; align-items:start; border:1px solid var(--line); border-radius:11px; padding:9px 12px; }
  .wm-sdot { width:9px; height:9px; border-radius:99px; background:var(--line); margin-top:4px; }
  .wm-row.done .wm-sdot { background:var(--orange); }
  .wm-row.running .wm-sdot { background:#E8A13C; }
  .wm-off { font-family:'Geist Mono',monospace; font-size:11.5px; font-weight:600; color:var(--orange); }
  .wm-nm { font-size:12.5px; font-weight:600; }
  .wm-sum { font-size:11.5px; color:var(--muted); margin-top:2px; line-height:1.5; }
  .wm-pill { font-family:'Geist Mono',monospace; font-size:8.5px; letter-spacing:.07em; text-transform:uppercase; border-radius:99px; padding:2px 8px; }
  .wm-pill.done { background:#FEF2EC; color:var(--orange); border:1px solid #F5C6A8; }
  .wm-pill.pending { background:var(--hair); color:var(--muted); border:1px solid var(--line); }
  .wm-deliv { border:1px solid var(--line); border-radius:11px; overflow:hidden; margin-top:7px; }
  .wm-deliv-hd { background:var(--chipbg); border-bottom:1px solid var(--line2); padding:7px 11px; font-size:11.5px; }

  .mention { color:#4B6EFF; font-weight:600; }
  #mentionPop { position:fixed; z-index:300; background:#fff; border:1px solid var(--line); border-radius:11px; box-shadow:var(--shadow-pop); min-width:220px; overflow:hidden; display:none; }
  #mentionPop .mp-title { font-size:10px; font-weight:600; letter-spacing:.09em; text-transform:uppercase; color:var(--muted); padding:8px 12px 3px; }
  #mentionPop .mp-item { display:flex; align-items:center; gap:9px; padding:7px 12px; cursor:pointer; font-size:12.5px; }
  #mentionPop .mp-item:hover { background:var(--orange-tint); }
  #mentionPop .mp-item.sel { background:var(--orange); color:#fff; }
  #mentionPop .mp-item.sel .kind-dot { box-shadow:0 0 0 2px rgba(255,255,255,.92); }
  #mentionPop .mp-ava { width:22px; height:22px; flex:none; border-radius:99px; background:var(--teal); color:var(--ink); display:flex; align-items:center; justify-content:center; font-size:9px; font-weight:700; }
  #mentionPop .mp-role { margin-left:auto; font-size:10.5px; color:var(--muted); }

  #toast { position:fixed; bottom:96px; left:50%; transform:translateX(-50%) translateY(8px); background:var(--ink); color:#fff; font-size:13px; font-weight:500; padding:9px 18px; border-radius:99px; box-shadow:var(--shadow-pop); opacity:0; pointer-events:none; transition:all .25s; z-index:200; }
  #toast.show { opacity:1; transform:translateX(-50%) translateY(0); }
  .drv-parts { font-size:10.5px; color:var(--muted); margin-top:2px; }
  #toast { display:flex; align-items:center; gap:12px; }
  #toast.show { pointer-events:auto; }
  #toast #toastAct { border:none; background:transparent; color:var(--orange-lt); font-family:inherit; font-size:12.5px; font-weight:600; cursor:pointer; padding:0; display:none; }
  #toast.has-act #toastAct { display:inline; }
  #toast #toastAct:hover { color:#fff; text-decoration:underline; }
  /* History rows: delete on hover, select mode for clearing several at once. */
  .hist-sel-btn { margin-left:auto; border:none; background:transparent; font-family:inherit; font-size:11.5px; font-weight:500; color:var(--muted); cursor:pointer; padding:0 4px; }
  .hist-sel-btn:hover { color:var(--orange-dk); }
  .hist-sel-btn.on { color:var(--orange); }
  .hist-selbar { display:none; align-items:center; gap:8px; padding:8px 14px; border-bottom:1px solid var(--line2); background:var(--orange-pale); font-size:11.5px; color:var(--orange-dk); }
  .hist-selbar.open { display:flex; }
  .hist-selbar button { border:1px solid var(--orange-lt); background:#fff; border-radius:7px; font-family:inherit; font-size:11.5px; font-weight:500; padding:3px 9px; cursor:pointer; }
  .hist-selbar-x { color:var(--body); }
  .hist-selbar-del { color:#fff !important; background:var(--orange) !important; border-color:var(--orange) !important; }
  .hist-selbar-del:disabled { background:var(--line) !important; border-color:var(--line) !important; color:var(--muted) !important; cursor:default; }
  .hist-check { flex:none; width:14px; height:14px; margin:0 2px 0 0; accent-color:var(--orange); cursor:pointer; }
  .hist-del { flex:none; width:19px; height:19px; border:none; border-radius:6px; background:transparent; color:var(--faint); font-size:13px; line-height:1; cursor:pointer; opacity:0; display:flex; align-items:center; justify-content:center; }
  .hist-row:hover .hist-del { opacity:1; }
  .hist-del:hover { background:var(--orange-tint); color:var(--orange-dk); }

  /* ── Persona chip + popover ─────────────────────────────────────────── */
  .persona-chip { position:absolute; top:10px; right:12px; z-index:5; display:inline-flex; align-items:center; gap:7px; padding:4px 10px 4px 8px; border:1px solid var(--line); border-radius:99px; background:#fff; font-size:12px; font-weight:500; color:var(--body); cursor:pointer; flex:none; }
  .persona-chip:hover { border-color:#C7CBD4; }
  .persona-chip.on { border-color:var(--orange-lt); background:var(--orange-pale); color:var(--orange-dk); }
  .persona-chip .car { font-size:8px; color:var(--faint); }
  .persona-pop { position:absolute; bottom:calc(100% - 2px); right:12px; left:auto; z-index:41; background:#fff; border:1px solid var(--line); border-radius:12px; box-shadow:var(--shadow-pop); min-width:280px; overflow:hidden; display:none; }
  .persona-pop.open { display:block; }
  .pp-item { display:flex; align-items:center; gap:10px; width:100%; padding:9px 13px; border:none; background:transparent; cursor:pointer; text-align:left; font-size:13px; }
  .pp-item:hover { background:var(--orange-pale); }
  .pp-item.on { background:var(--orange-pale); }
  .pp-emoji { width:26px; height:26px; flex:none; border-radius:8px; background:var(--hair); display:flex; align-items:center; justify-content:center; font-size:14px; }
  .pp-name { font-weight:600; color:var(--ink); }
  .pp-role { font-size:11px; color:var(--muted); }
  .pp-manage { display:block; width:100%; padding:9px 13px; border:none; border-top:1px solid var(--line2); background:var(--chipbg); font-size:12px; font-weight:500; color:var(--orange); cursor:pointer; text-align:left; }
  .pp-manage:hover { color:var(--orange-dk); }

  /* ── Agents modal ───────────────────────────────────────────────────── */
  .agents-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; padding:16px; }
  .agent-card { border:1px solid var(--line); border-radius:12px; background:#fff; padding:14px; display:flex; flex-direction:column; gap:8px; }
  .agent-card:hover { border-color:#C7CBD4; box-shadow:0 4px 14px rgba(27,29,49,.06); }
  .agent-card.active { border-color:var(--orange); background:var(--orange-pale); }
  .agent-head { display:flex; align-items:center; gap:10px; }
  .agent-emoji { width:34px; height:34px; flex:none; border-radius:10px; background:var(--hair); display:flex; align-items:center; justify-content:center; font-size:17px; }
  .agent-name { font-size:14px; font-weight:600; }
  .agent-role { font-size:11.5px; color:var(--muted); }
  .agent-tags { display:flex; gap:6px; flex-wrap:wrap; }
  .agent-tag { font-size:10.5px; color:var(--sec); background:var(--hair); border-radius:6px; padding:2px 7px; }
  .agent-details { font-size:12.5px; line-height:1.6; color:var(--body); border-top:1px solid var(--line3); padding-top:8px; display:none; }
  .agent-card.expanded .agent-details { display:block; }
  .agent-details h1,.agent-details h2,.agent-details h3 { font-size:12.5px; margin:8px 0 3px; }
  .agent-details ul { padding-left:16px; }
  .agent-actions { display:flex; gap:6px; flex-wrap:wrap; margin-top:auto; }
  .builder { padding:16px 18px; display:flex; flex-direction:column; gap:10px; max-width:560px; }
  .builder label { font-size:11px; font-weight:600; color:var(--muted); text-transform:uppercase; letter-spacing:.07em; }
  .builder input[type=text], .builder select, .builder textarea { background:var(--chipbg); border:1px solid var(--line); border-radius:9px; font-size:13px; padding:9px 11px; outline:none; color:var(--ink); font-family:inherit; width:100%; }
  .builder input:focus, .builder textarea:focus, .builder select:focus { border-color:var(--orange); }
  .builder textarea { min-height:100px; resize:vertical; }
  .doc-chip { display:inline-flex; align-items:center; gap:6px; border:1px solid var(--line); border-radius:8px; padding:4px 9px; font-size:12px; color:var(--body); background:var(--chipbg); }
  .doc-chip button { border:none; background:none; color:var(--faint); cursor:pointer; }
  .doc-chip button:hover { color:var(--red); }

  /* ── Small modal (phone / schedule builder) ─────────────────────────── */
  .modal-backdrop { position:fixed; inset:0; background:rgba(27,29,49,.4); z-index:120; display:none; align-items:center; justify-content:center; padding:24px; }
  .modal-backdrop.open { display:flex; }
  .modal { background:#fff; border-radius:16px; box-shadow:var(--shadow-modal); border:1px solid var(--edge); width:min(480px,100%); max-height:calc(100vh - 48px); overflow:hidden; display:flex; flex-direction:column; }
  .modal-head { flex:none; display:flex; align-items:center; gap:10px; padding:14px 18px; border-bottom:1px solid var(--line2); }
  .modal-title { font-size:14.5px; font-weight:600; }
  .modal-body { padding:16px 18px; display:flex; flex-direction:column; gap:11px; font-size:13px; flex:1; min-height:0; overflow-y:auto; }
  .modal-foot { flex:none; display:flex; align-items:center; justify-content:flex-end; gap:8px; padding:12px 18px; border-top:1px solid var(--line2); background:var(--chipbg); }
  .modal-body label { font-size:11px; font-weight:600; color:var(--muted); text-transform:uppercase; letter-spacing:.07em; }
  .modal-body input[type=text], .modal-body input[type=tel], .modal-body textarea, .modal-body select { background:var(--chipbg); border:1px solid var(--line); border-radius:9px; font-size:13.5px; padding:9px 11px; outline:none; color:var(--ink); font-family:inherit; width:100%; }
  .modal-body input:focus, .modal-body textarea:focus { border-color:var(--orange); }
  .consent-row { display:flex; gap:9px; align-items:flex-start; font-size:12px; color:var(--sec); line-height:1.5; }
  .consent-row input { accent-color:var(--orange); margin-top:2px; }
  .chan-toggle { display:inline-flex; align-items:center; gap:6px; border:1px solid var(--line); border-radius:9px; padding:6px 12px; font-size:12.5px; font-weight:500; color:var(--sec); cursor:pointer; background:#fff; }
  .chan-toggle.selected { border-color:var(--orange); background:var(--orange-pale); color:var(--orange-dk); }
  .cron-preset { border:1px solid var(--line); border-radius:9px; padding:6px 11px; font-size:12px; cursor:pointer; background:#fff; color:var(--body); }
  .cron-preset.on { border-color:var(--orange); background:var(--orange-pale); color:var(--orange-dk); font-weight:600; }

  /* ── Schedules list ─────────────────────────────────────────────────── */
  .sched-row { display:flex; align-items:center; gap:11px; padding:12px 14px; border:1px solid var(--line); border-radius:11px; background:#fff; }
  .sched-row.off { opacity:.55; }
  .sched-info { min-width:0; flex:1; }
  .sched-label { font-size:13px; font-weight:600; }
  .sched-meta { font-size:11.5px; color:var(--muted); margin-top:2px; }
  .switch { position:relative; width:34px; height:19px; flex:none; cursor:pointer; }
  .switch input { opacity:0; width:0; height:0; }
  .switch .sl { position:absolute; inset:0; background:#D6D9E0; border-radius:99px; transition:.15s; }
  .switch .sl:before { content:''; position:absolute; width:15px; height:15px; left:2px; top:2px; background:#fff; border-radius:99px; transition:.15s; }
  .switch input:checked + .sl { background:var(--teal); }
  .switch input:checked + .sl:before { transform:translateX(15px); }

  /* ── Inbox drawer ───────────────────────────────────────────────────── */
  #inboxDrawer { position:fixed; top:0; right:0; bottom:0; width:min(420px,92vw); z-index:88; background:#fff; border-left:1px solid var(--edge); box-shadow:-12px 0 40px rgba(27,29,49,.12); display:flex; flex-direction:column; transform:translateX(102%); transition:transform .22s ease; }
  #inboxDrawer.open { transform:none; }
  .inbox-badge { min-width:16px; height:16px; padding:0 5px; border-radius:99px; background:var(--orange); color:#fff; font-family:'Geist Mono',monospace; font-size:10px; font-weight:500; display:inline-flex; align-items:center; justify-content:center; }
  .inbox-badge.zero { background:var(--hair); color:var(--muted); }
  .inbox-item { border:1px solid var(--line); border-radius:11px; padding:12px 14px; background:#fff; display:flex; flex-direction:column; gap:7px; }
  .inbox-sum { font-size:13px; font-weight:500; line-height:1.45; }
  .inbox-meta { display:flex; gap:8px; align-items:center; font-size:11px; color:var(--muted); flex-wrap:wrap; }
  .inbox-comment { font-size:12px; color:var(--body); background:var(--chipbg); border-radius:8px; padding:6px 9px; }
  .inbox-actions { display:flex; gap:6px; align-items:center; }
  .inbox-actions input { flex:1; background:var(--chipbg); border:1px solid var(--line); border-radius:8px; font-size:12px; padding:6px 9px; outline:none; font-family:inherit; }

  /* ── Approval card ──────────────────────────────────────────────────── */
  .approval-card { border:1px solid var(--orange-lt); border-radius:12px; background:var(--orange-pale); padding:14px 16px; display:flex; flex-direction:column; gap:9px; }
  .approval-kicker { font-size:10.5px; letter-spacing:.09em; text-transform:uppercase; color:var(--orange-dk); font-weight:600; }
  .approval-desc { font-size:13.5px; color:var(--body); line-height:1.55; }
  .approval-draft { background:#fff; border:1px solid var(--line); border-radius:9px; padding:10px 12px; font-size:12.5px; color:var(--body); white-space:pre-wrap; max-height:180px; overflow-y:auto; }
  .approval-actions { display:flex; gap:8px; flex-wrap:wrap; }
  .btn-approve { background:var(--green); color:#fff; border:none; border-radius:9px; padding:7px 14px; font-size:12.5px; font-weight:600; cursor:pointer; }
  .btn-approve:hover { filter:brightness(1.08); }

  /* ── Workbook cards (Excel → card) ──────────────────────────────────────
     The card's own markup ships from the server with its own <style>; these
     rules are only the frame it sits in inside the drawer. */
  .ec-card { border:1px solid var(--line); border-radius:12px; padding:16px 18px; background:#fff; }
  .ec-card + * { margin-top:14px; }
  .ec-pending { border:1px dashed var(--edge); border-radius:12px; padding:14px 16px;
                color:var(--sec); font-size:13px; background:var(--chipbg); }
