:root{
  --font-anthropic-sans:system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;--font-anthropic-serif:Georgia,serif;
  --cds-font-size-caption:12px;--cds-font-size-body:14px;--cds-font-size-heading:16px;--cds-font-size-title:24px;--cds-font-weight-medium:500;
  --cds-gap-xs:4px;--cds-gap-sm:8px;--cds-gap-md:16px;--cds-gap-lg:24px;--cds-gap-xl:32px;
  --cds-pad-xs:4px;--cds-pad-sm:8px;--cds-pad-md:16px;--cds-pad-lg:22px;--cds-pad-xl:32px;--cds-radius:10px;
  --cds-dur-slow:520ms;--cds-ease-out:cubic-bezier(.2,.8,.2,1);
  --color-fg:#1D1B26;--color-fg-muted:#6B6878;--color-bg:#F2F2F4;--color-panel:#FFFFFF;--color-border-line:#E5E4EA;
  --color-ok:#1F8F6F;--color-warn:#B26A00;--color-bad:#C8372D;--color-edit:#A15C00;
  --cds-chart-muted:#D3D1DB;--cds-chart-status-critical:#C8372D;--cds-chart-grid:#ECEBF0;--cds-chart-axis:#C4C2CC;--cds-chart-reference:#8A8796;
  --cds-surface-popover:#FFFFFF;--cds-border:#E2E1E7;--cds-shadow-popover:0 8px 24px rgba(20,16,40,.14);--cds-text-secondary:#6B6878;
  color-scheme:light;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --color-fg:#ECEAF2;--color-fg-muted:#A19EAE;--color-bg:#121117;--color-panel:#1C1B23;--color-border-line:#2E2C38;
  --color-ok:#49C9A4;--color-warn:#E7A64A;--color-bad:#F06A5E;--color-edit:#E7A64A;
  --cds-chart-muted:#4A4756;--cds-chart-status-critical:#F06A5E;--cds-chart-grid:#2A2833;--cds-chart-axis:#46434F;--cds-chart-reference:#8E8A9C;
  --cds-surface-popover:#24232C;--cds-border:#383644;--cds-shadow-popover:0 8px 24px rgba(0,0,0,.5);--cds-text-secondary:#A19EAE;color-scheme:dark;
}}
:root[data-theme="dark"]{
  --color-fg:#ECEAF2;--color-fg-muted:#A19EAE;--color-bg:#121117;--color-panel:#1C1B23;--color-border-line:#2E2C38;
  --color-ok:#49C9A4;--color-warn:#E7A64A;--color-bad:#F06A5E;--color-edit:#E7A64A;
  --cds-chart-muted:#4A4756;--cds-chart-status-critical:#F06A5E;--cds-chart-grid:#2A2833;--cds-chart-axis:#46434F;--cds-chart-reference:#8E8A9C;
  --cds-surface-popover:#24232C;--cds-border:#383644;--cds-shadow-popover:0 8px 24px rgba(0,0,0,.5);--cds-text-secondary:#A19EAE;color-scheme:dark;
}
*,*::before,*::after{box-sizing:border-box}
html,body{margin:0}
body{background:var(--color-bg);color:var(--color-fg);font-family:'Readex Pro',var(--font-anthropic-sans);-webkit-font-smoothing:antialiased}
#dash-root{padding:clamp(16px,1.5vw,24px)}
.dash-skeleton{color:transparent!important;background:color-mix(in srgb,var(--color-fg) 7%,transparent);border-radius:6px}
.crm-export-foot{margin-top:28px;font-size:12px;color:var(--color-fg-muted);text-align:center}
.lx{
  --lx-magenta:#9E1F8E;--lx-violet:#5A2FC2;--lx-indigo:#4433BE;--lx-mint:#72D7C0;--lx-teal:#2FB89A;--lx-deep:#2E0B6B;
  --lx-grad:linear-gradient(135deg,#A3227F 0%,#3B3BB5 100%);
  --lx-ink:color-mix(in srgb,var(--lx-violet) 80%,var(--color-fg));
  --lx-ink-m:color-mix(in srgb,var(--lx-magenta) 80%,var(--color-fg));
  --lx-ink-t:color-mix(in srgb,#1E9E83 82%,var(--color-fg));
  --lx-line:var(--color-border-line);
  --lx-soft:color-mix(in srgb,var(--color-fg) 3.5%,var(--color-panel));
  --lx-r:18px;
  --lx-ease:cubic-bezier(.16,1,.3,1);
  position:relative;
  font-family:'Readex Pro',var(--font-anthropic-sans);color:var(--color-fg);font-variant-numeric:tabular-nums;
  display:grid;grid-template-columns:15.5rem minmax(0,1fr);
  background:var(--lx-soft);border:1px solid var(--lx-line);border-radius:26px;overflow:clip;
}
/* dark mode: violet and magenta ink need more of the light foreground to keep 4.5:1 on the dark panels */
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .lx{--lx-ink:color-mix(in srgb,var(--lx-violet) 55%,var(--color-fg));--lx-ink-m:color-mix(in srgb,var(--lx-magenta) 55%,var(--color-fg))}}
:root[data-theme="dark"] .lx{--lx-ink:color-mix(in srgb,var(--lx-violet) 55%,var(--color-fg));--lx-ink-m:color-mix(in srgb,var(--lx-magenta) 55%,var(--color-fg))}
.lx-shell{container-type:inline-size;container-name:lx}
.lx{min-height:calc(100dvh - 2 * clamp(16px,1.5vw,24px))}
.lx button,.lx input,.lx select{font-family:inherit;color:inherit}
.lx [hidden]{display:none!important}
.lx svg.i{width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
/* ---------- sidebar ---------- */
.lx-side{background:var(--color-panel);border-right:1px solid var(--lx-line);padding:22px 14px;display:flex;flex-direction:column;gap:6px;min-width:0}
.lx-brand{display:flex;align-items:center;gap:10px;padding:2px 10px 18px;border-bottom:1px solid var(--lx-line);margin-bottom:12px}
.lx-home{color:inherit;text-decoration:none;cursor:pointer}
.lx-mark{width:30px;height:30px;border-radius:50%;background:var(--lx-grad);position:relative;flex:none}
.lx-mark::after{content:"";position:absolute;inset:8px;border-radius:50%;background:var(--color-panel)}
.lx-word{font-size:24px;font-weight:700;letter-spacing:-.02em;background:var(--lx-grad);-webkit-background-clip:text;background-clip:text;color:transparent;line-height:1}
.lx-navlabel{font-size:11px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--color-fg-muted);padding:10px 12px 4px}
.lx-nav{display:flex;flex-direction:column;gap:2px}
.lx-navbtn{display:flex;align-items:center;gap:11px;width:100%;border:1px solid transparent;background:transparent;border-radius:12px;padding:9px 12px;font-size:var(--cds-font-size-body);cursor:pointer;text-align:left;color:var(--color-fg-muted);white-space:nowrap}
.lx-navbtn:hover{background:var(--lx-soft);color:var(--color-fg)}
.lx-navbtn[aria-current=page]{background:color-mix(in srgb,var(--lx-violet) 9%,var(--color-panel));border-color:color-mix(in srgb,var(--lx-violet) 22%,transparent);color:var(--lx-ink);font-weight:500}
.lx-navbtn .lx-badge{margin-left:auto}
.lx-badge{min-width:22px;padding:0 7px;height:20px;border-radius:999px;display:inline-grid;place-items:center;font-size:11px;font-weight:500;background:var(--lx-soft);color:var(--color-fg-muted);border:1px solid var(--lx-line)}
.lx-badge.is-alert{background:color-mix(in srgb,var(--color-bad) 12%,transparent);color:var(--color-bad);border-color:transparent}
.lx-promo{margin-top:auto;background:var(--lx-soft);border:1px solid var(--lx-line);border-radius:16px;padding:14px;display:flex;flex-direction:column;gap:8px;position:relative;overflow:hidden}
.lx-promo::before{content:"";position:absolute;right:-60px;top:-70px;width:150px;height:150px;border-radius:50%;background:linear-gradient(135deg,#B0459A,#8C7BD6);-webkit-mask:radial-gradient(closest-side,transparent 55%,#000 56%);mask:radial-gradient(closest-side,transparent 55%,#000 56%);opacity:.28}
.lx-promo-t{font-weight:600;font-size:var(--cds-font-size-body);position:relative}
.lx-promo-s{font-size:var(--cds-font-size-caption);color:var(--color-fg-muted);font-weight:300;position:relative;line-height:1.45}
.lx-meter{height:6px;border-radius:999px;background:color-mix(in srgb,var(--color-fg) 8%,transparent);overflow:hidden}
.lx-meter i{display:block;height:100%;border-radius:999px;background:var(--lx-grad)}
.lx-promo-btn{position:relative;border:0;border-radius:999px;background:var(--color-panel);border:1px solid color-mix(in srgb,var(--lx-violet) 30%,var(--lx-line));color:var(--lx-ink);font-size:var(--cds-font-size-caption);font-weight:500;padding:8px 10px;cursor:pointer}
.lx-promo-btn:hover{background:color-mix(in srgb,var(--lx-violet) 8%,var(--color-panel))}
/* ---------- main ---------- */
.lx-main{min-width:0;display:flex;flex-direction:column}
.lx-top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;padding:16px 26px;border-bottom:1px solid var(--lx-line);background:var(--lx-soft)}
.lx-hello{font-size:var(--cds-font-size-caption);color:var(--color-fg-muted);font-weight:300}
.lx-org{font-size:var(--cds-font-size-heading);font-weight:600}
.lx-top-r{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.lx-searchwrap{position:relative;display:flex;align-items:center}
.lx-searchwrap svg{position:absolute;left:12px;color:var(--color-fg-muted);pointer-events:none}
.lx-search{width:min(70vw,17rem);font-size:var(--cds-font-size-body);background:var(--color-panel);border:1px solid var(--lx-line);border-radius:999px;padding:8px 14px 8px 38px}
.lx-iconbtn{display:inline-flex;align-items:center;gap:7px;height:38px;padding:0 14px;border-radius:999px;border:1px solid var(--lx-line);background:var(--color-panel);font-size:var(--cds-font-size-body);cursor:pointer}
.lx-iconbtn:hover{border-color:color-mix(in srgb,var(--lx-violet) 40%,var(--lx-line))}
.lx-iconbtn[aria-expanded=true]{border-color:var(--lx-violet);color:var(--lx-ink)}
.lx-iconbtn .lx-badge{background:var(--lx-grad);color:#fff;border:0}
.lx-body{padding:22px 26px 30px;display:flex;flex-direction:column;gap:16px;min-width:0}
.lx-pagehead{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px}
.lx-pagehead-r{display:flex;align-items:center;gap:8px}
#to-admin{white-space:nowrap}
.lx-pagehead-l{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 14px}
.lx-h1{margin:0;font-size:calc(var(--cds-font-size-title) * 1.15);font-weight:700;letter-spacing:-.01em}
.lx-updated{display:inline-flex;align-items:center;gap:6px;font-size:var(--cds-font-size-caption);color:var(--color-fg-muted)}
.lx-updated svg{width:14px;height:14px}
.lx-primary{border:0;border-radius:999px;background:var(--lx-grad);color:#fff!important;font-size:var(--cds-font-size-body);font-weight:500;padding:10px 20px;cursor:pointer;box-shadow:0 8px 18px -10px color-mix(in srgb,var(--lx-indigo) 80%,transparent)}
.lx-primary:hover{filter:brightness(1.08)}
/* darker than --color-ok so white text keeps 4.5:1 contrast, also on hover */
.lx-primary.is-green{background:#187A5F;box-shadow:0 8px 18px -10px color-mix(in srgb,#187A5F 80%,transparent)}
.lx-takeaway{margin:-6px 0 0;color:var(--color-fg-muted);font-weight:300;font-size:var(--cds-font-size-body);min-height:1.3em}
/* filters */
.lx-filters{background:var(--color-panel);border:1px solid var(--lx-line);border-radius:var(--lx-r);padding:16px 18px}
.lx-fgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,10rem),1fr));gap:10px 14px}
.lx-field{display:flex;flex-direction:column;gap:4px;font-size:var(--cds-font-size-caption);color:var(--color-fg-muted);min-width:0}
.lx-selwrap{position:relative}
.lx-selwrap::after{content:"";position:absolute;right:.8rem;top:50%;width:.36rem;height:.36rem;border-right:1.5px solid var(--color-fg-muted);border-bottom:1.5px solid var(--color-fg-muted);transform:translateY(-70%) rotate(45deg);pointer-events:none}
.lx-select{appearance:none;-webkit-appearance:none;width:100%;font-size:var(--cds-font-size-body);background:var(--color-bg);border:1px solid var(--lx-line);border-radius:999px;padding:7px 2rem 7px 14px;cursor:pointer;text-overflow:ellipsis}
.lx-field.is-set{color:var(--lx-ink)}
.lx-field.is-set .lx-select{border-color:var(--lx-violet);background:color-mix(in srgb,var(--lx-violet) 8%,var(--color-bg))}
.lx-chips{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.lx-chips:empty{display:none}
.lx-fchip{display:inline-flex;align-items:center;gap:6px;border:1px solid color-mix(in srgb,var(--lx-violet) 30%,var(--lx-line));background:color-mix(in srgb,var(--lx-violet) 7%,var(--color-panel));color:var(--lx-ink);border-radius:999px;padding:1px 3px 1px 12px;font-size:var(--cds-font-size-caption);cursor:pointer}
.lx-fchip span{opacity:.7}
/* the × is 24px to tap but drawn as the same 18px circle (a transparent 3px ring); the chip's padding gives back the 3px */
.lx-fchip::after{content:"×";display:inline-grid;place-items:center;box-sizing:border-box;width:24px;height:24px;padding:3px;margin-left:-3px;border-radius:50%;background:color-mix(in srgb,var(--lx-violet) 14%,transparent) content-box;font-size:13px;line-height:1}
.lx-clear{border:0;background:none;color:var(--color-fg-muted);font-size:var(--cds-font-size-caption);text-decoration:underline;cursor:pointer;padding:4px;min-height:24px}
.lx :is(.lx-home,.lx-select,.lx-search,.lx-navbtn,.lx-iconbtn,.lx-primary,.lx-tab,.lx-seg button,.lx-outline,.lx-promo-btn,.lx-fchip):focus-visible,.lx tr:focus-visible,.lx-kcard:focus-visible{outline:2px solid var(--lx-violet);outline-offset:2px}
/* ---------- dashboard grid ---------- */
.lx-dash{display:grid;grid-template-columns:minmax(0,1fr);gap:16px}
@container lx (min-width: 68rem){.lx-dash{grid-template-columns:minmax(0,2fr) minmax(19rem,1fr)}.lx-span-side{grid-column:2}.lx-colside{grid-row:span 1}}
.lx-colmain{display:flex;flex-direction:column;gap:16px;min-width:0}
.lx-card{background:var(--color-panel);border:1px solid var(--lx-line);border-radius:var(--lx-r);padding:18px 20px;min-width:0;display:flex;flex-direction:column}
.lx-card-h{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;margin-bottom:4px}
.lx-card h2{margin:0;font-size:var(--cds-font-size-heading);font-weight:600}
.lx-note{margin:2px 0 14px;font-size:var(--cds-font-size-caption);color:var(--color-fg-muted);font-weight:300}
.lx-outline{border:1px solid var(--lx-line);background:var(--color-panel);border-radius:999px;padding:5px 12px;font-size:var(--cds-font-size-caption);cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.lx-outline:hover{border-color:color-mix(in srgb,var(--lx-violet) 40%,var(--lx-line));color:var(--lx-ink)}
.lx-outline.is-wide{width:100%;justify-content:center;padding:9px;font-size:var(--cds-font-size-body);border-color:color-mix(in srgb,var(--lx-violet) 45%,var(--lx-line));color:var(--lx-ink);margin-top:auto}
/* KPIs */
.lx-admin{display:grid;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:16px}
/* Agreed partners is the one peak: the loyaltee ring fills with it; the other three stay compact beside it */
.lx-kpiwrap{container:kpis/inline-size}
.lx-kpis{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:12px 16px}
@container kpis (max-width: 36rem){.lx-kpis{grid-template-columns:minmax(0,1fr)}}
.lx-kpi{background:var(--color-panel);border:1px solid var(--lx-line);border-radius:var(--lx-r);padding:12px 16px;display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"i l v" "s s s" "t t t";gap:2px 8px;align-items:center}
.lx-kicon{grid-area:i;display:grid;color:var(--color-fg-muted)}
.lx-kicon svg.i{width:16px;height:16px}
.lx-klabel{grid-area:l;font-size:var(--cds-font-size-caption);color:var(--color-fg-muted)}
.lx-kval{grid-area:v;font-size:22px;font-weight:700;letter-spacing:-.01em;line-height:1.15;min-height:1.15em;text-align:right}
.lx-kval small{font-size:.62em;font-weight:400;color:var(--color-fg-muted);margin-left:2px}
.lx-segs{grid-area:s;display:grid;grid-template-columns:repeat(10,1fr);gap:4px;margin:6px 0 2px}
.lx-segs i{height:6px;border-radius:999px;background:color-mix(in srgb,var(--color-fg) 8%,transparent)}
.lx-segs i.on{background:var(--seg)}
.lx-ksub{grid-area:t;font-size:var(--cds-font-size-caption);color:var(--color-fg-muted);font-weight:300;min-height:1.2em}
.lx-kpi.is-hero{grid-row:span 3;grid-template-columns:auto minmax(0,1fr);grid-template-areas:"g ." "g l" "g v" "g t" "g .";grid-template-rows:1fr auto auto auto 1fr;gap:0 22px;padding:20px 24px}
@container kpis (max-width: 36rem){.lx-kpi.is-hero{grid-row:auto}}
.lx-kpi.is-hero .lx-klabel{font-size:var(--cds-font-size-body);font-weight:500;color:var(--color-fg)}
.lx-kpi.is-hero .lx-kval{font-size:clamp(2.25rem,8.5cqi,4.25rem);letter-spacing:-.035em;line-height:1;margin:6px 0 8px;text-align:left}
.lx-kpi.is-hero .lx-kval small{font-size:.36em;letter-spacing:0;margin-left:6px}
.lx-kpi.is-hero .lx-ksub{font-size:var(--cds-font-size-body)}
.lx-gauge{grid-area:g;width:clamp(5.5rem,22cqi,10.5rem);height:auto;display:block}
.lx-gauge circle{fill:none;stroke-width:26}
.lx-gauge .trk{stroke:url(#lx-gauge-g);opacity:.15}
.lx-gauge .arc{stroke:url(#lx-gauge-a);stroke-dasharray:0 100}
/* tabs */
.lx-tabs{display:flex;flex-wrap:wrap;gap:2px;border-bottom:1px solid var(--lx-line);margin:-4px 0 14px;scrollbar-width:none}
.lx-tab{flex:none;display:inline-flex;align-items:center;gap:7px;border:0;background:none;padding:10px 12px 11px;font-size:var(--cds-font-size-body);color:var(--color-fg-muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap}
.lx-tab:hover{color:var(--color-fg)}
.lx-tab[aria-selected=true]{color:var(--lx-ink);border-bottom-color:var(--lx-violet);font-weight:500}
.lx-tab .lx-badge{height:18px;font-size:10.5px}
.lx-tab[aria-selected=true] .lx-badge{background:color-mix(in srgb,var(--lx-violet) 12%,transparent);color:var(--lx-ink);border-color:transparent}
.lx-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px}
.lx-toolbar .lx-grow{flex:1}
.lx-mini{appearance:none;-webkit-appearance:none;font-size:var(--cds-font-size-caption);background:var(--color-panel);border:1px solid var(--lx-line);border-radius:999px;padding:5px 24px 5px 12px;cursor:pointer}
.lx-minisel{position:relative}
.lx-minisel::after{content:"";position:absolute;right:10px;top:50%;width:5px;height:5px;border-right:1.5px solid var(--color-fg-muted);border-bottom:1.5px solid var(--color-fg-muted);transform:translateY(-70%) rotate(45deg);pointer-events:none}
.lx-count{font-size:var(--cds-font-size-caption);color:var(--color-fg-muted)}
/* tables */
.lx-twrap{container-type:inline-size;overflow:auto;margin:0 -20px;padding:0 20px}
/* long lists end at the window's bottom edge when the page is scrolled to the top */
.lx-twrap.is-tall{max-height:max(20rem,calc(100dvh - 17rem))}
.lx table{width:100%;border-collapse:separate;border-spacing:0;font-size:var(--cds-font-size-body)}
.lx th{position:sticky;top:0;z-index:1;background:var(--lx-soft);text-align:left;font-weight:500;font-size:var(--cds-font-size-caption);color:var(--color-fg-muted);padding:9px 10px;white-space:nowrap}
.lx th:first-child{border-radius:10px 0 0 10px}.lx th:last-child{border-radius:0 10px 10px 0}
.lx th button{border:0;background:none;padding:0;font:inherit;color:inherit;cursor:pointer;min-height:24px;margin-block:-4.5px} /* 24px to tap; the margin keeps the row's height */
.lx th button:hover{color:var(--color-fg)}
.lx th[aria-sort=ascending] button::after{content:" ▲";font-size:.6rem}
.lx th[aria-sort=descending] button::after{content:" ▼";font-size:.6rem}
.lx td{padding:11px 10px;border-bottom:1px solid color-mix(in srgb,var(--lx-line) 70%,transparent);vertical-align:middle}
.lx tbody tr{cursor:pointer}
.lx tbody tr:hover td{background:color-mix(in srgb,var(--lx-violet) 4%,transparent)}
.lx tbody tr.is-sel td{background:color-mix(in srgb,var(--lx-violet) 10%,transparent)}
.lx tbody tr.is-sel td:first-child{box-shadow:inset 3px 0 0 var(--lx-violet)}
.lx td.lx-num{color:var(--color-fg-muted);font-size:var(--cds-font-size-caption);width:2.5rem}
.lx td.lx-strong{font-weight:500;overflow-wrap:anywhere}
.lx .lx-sub{display:block}
.lx .lx-sub::after{content:attr(data-sub);display:block;font-size:var(--cds-font-size-caption);font-weight:300;color:var(--color-fg-muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:15rem}
.lx-muted{color:var(--color-fg-muted)}
.lx-empty{color:var(--color-fg-muted);font-size:var(--cds-font-size-caption);padding:14px 4px;text-align:center}
@container (max-width: 46rem){.lx-dtable :is(th,td):nth-child(1){display:none}}
@container (max-width: 42rem){.lx-dtable :is(th,td):nth-child(5),.lx-dtable :is(th,td):nth-child(3){display:none}}
/* drop columns before a table would scroll sideways: Partners needs ~78rem for 12 columns, ~62rem for 9, ~37rem for 5; Follow-ups ~51rem for 8; dashboard deals ~42rem for 5 */
@container (max-width: 80rem){.lx-ptable :is(th,td):nth-child(n+10){display:none}}
@container (max-width: 63rem){.lx-ptable :is(th,td):nth-child(n+6){display:none}}
@container (max-width: 52rem){.lx-ftable :is(th,td):nth-child(n+6){display:none}}
@container (max-width: 44rem){.lx-atable :is(th,td):nth-child(3){display:none}}
/* phones: only the columns that fit (a tap opens the full record); widths measured as each set's narrowest */
@container (max-width: 30rem){
  .lx-sub::after{width:0;min-width:100%}
  .lx-dtable :is(th,td):nth-child(4),.lx-ptable :is(th,td):nth-child(n+3),.lx-ftable :is(th,td):nth-child(n+3),.lx-atable :is(th,td):nth-child(5),
  .lx-vtable :is(th,td):is(:nth-child(1),:nth-child(3),:nth-child(4),:nth-child(6)),.lx-mtable :is(th,td):is(:nth-child(1),:nth-child(3)),
  #user-table :is(th,td):is(:nth-child(2),:nth-child(5)),#ulog-table :is(th,td):nth-child(3),#uact-table :is(th,td):is(:nth-child(3),:nth-child(4)),#key-table :is(th,td):is(:nth-child(2),:nth-child(4),:nth-child(5),:nth-child(6)){display:none}
}
@container (max-width: 21rem){.lx-atable :is(th,td):nth-child(1),.lx-vtable :is(th,td):nth-child(5){display:none}}
/* status + tags */
.lx-status{display:inline-flex;align-items:center;gap:6px;padding:3px 10px 3px 6px;border-radius:999px;border:1px solid var(--lx-line);background:var(--color-panel);font-size:var(--cds-font-size-caption);font-weight:500;white-space:nowrap;--c:var(--color-fg-muted)}
.lx-status svg{width:14px;height:14px;flex:none;color:var(--c)}
.g-pipe{--c:var(--color-fg-muted)}.g-early{--c:var(--lx-ink)}.g-offer{--c:var(--lx-ink-m)}.g-won{--c:var(--lx-ink-t)}.g-lost{--c:var(--color-bad)}
.lx-tag{display:inline-flex;align-items:center;padding:2px 9px;border-radius:7px;font-size:11.5px;font-weight:500;white-space:nowrap;background:color-mix(in srgb,var(--c,var(--color-fg-muted)) 12%,transparent);color:var(--c,var(--color-fg-muted))}
.t-pilot{--c:var(--lx-ink-m)}.t-partial{--c:var(--lx-ink)}.t-std{--c:var(--color-fg-muted)}
.t-bad{--c:var(--color-bad)}.t-warn{--c:var(--color-warn)}.t-violet{--c:var(--lx-ink)}.t-teal{--c:var(--lx-ink-t)}
.lx-prio{display:inline-flex;align-items:center;gap:7px;white-space:nowrap}
.lx-prio svg{width:14px;height:14px;flex:none}
.lx-prio rect{fill:color-mix(in srgb,var(--color-fg) 16%,transparent)}
.lx-prio.p-High rect{fill:var(--color-bad)}
.lx-prio.p-Medium rect:nth-child(-n+2){fill:var(--color-warn)}
.lx-prio.p-Low rect:nth-child(1){fill:var(--lx-teal)}
.lx-due{white-space:nowrap}
.lx-due.is-overdue{color:var(--color-bad)}
.lx-due.is-overdue::after{content:" · overdue";font-size:var(--cds-font-size-caption)}
.lx-due.is-week{color:var(--color-warn)}
.lx-due.is-week::after{content:" · this week";font-size:var(--cds-font-size-caption)}
/* to-do */
.lx-todo-sec{font-size:var(--cds-font-size-body);font-weight:600;margin:12px 0 6px;display:flex;align-items:center;gap:8px}
.lx-todo-sec:first-of-type{margin-top:4px}
.lx-todo{list-style:none;margin:0 0 6px;padding:0;display:flex;flex-direction:column}
.lx-todo li{display:grid;grid-template-columns:22px minmax(0,1fr);gap:2px 10px;padding:10px 6px;border-radius:12px;cursor:pointer}
.lx-todo li+li{border-top:1px solid color-mix(in srgb,var(--lx-line) 70%,transparent)}
.lx-todo li:hover{background:var(--lx-soft)}
.lx-todo .ic{grid-row:span 3;width:20px;height:20px;margin-top:1px}
.lx-todo .ic.ring{border:1.8px solid color-mix(in srgb,var(--color-fg) 35%,transparent);border-radius:50%}
.lx-todo .ic.ring.bad{border-color:var(--color-bad)}
.lx-todo .ic.ok{color:#fff;background:var(--lx-teal);border-radius:50%;display:grid;place-items:center}
.lx-todo .ic.ok svg{width:12px;height:12px;stroke-width:2.6}
.lx-todo .tt{font-weight:500;font-size:var(--cds-font-size-body);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lx-todo .ts{font-size:var(--cds-font-size-caption);color:var(--color-fg-muted);font-weight:300;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lx-todo .tm{display:flex;flex-wrap:wrap;align-items:center;gap:5px;margin-top:5px}
.lx-todo .td{margin-left:auto;display:inline-flex;align-items:center;gap:4px;font-size:11.5px;color:var(--color-fg-muted)}
.lx-todo .td svg{width:13px;height:13px}
.lx-todo li.is-caught .tt{font-weight:600}
.lx-todo li.is-caught .ts{white-space:normal}
.lx-todo li.is-caught:not([data-key]){cursor:default;background:none}
/* latest activity */
.lx-feed{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px;max-height:26rem;overflow:auto}
.lx-feed .day{display:flex;align-items:center;gap:10px;font-size:11.5px;color:var(--color-fg-muted);margin:8px 0 4px}
.lx-feed .day::before,.lx-feed .day::after{content:"";flex:1;height:1px;background:var(--lx-line)}
.lx-feed .ev{cursor:pointer;display:grid;grid-template-columns:30px minmax(0,1fr);gap:1px 10px;padding:7px 4px;border-radius:10px;cursor:pointer}
.lx-feed .ev:hover{background:var(--lx-soft)}
.lx-av{grid-row:span 2;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font-size:11px;font-weight:600;color:#fff;background:var(--lx-grad)}
.lx-feed .et{font-size:var(--cds-font-size-body);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lx-feed .et b{font-weight:600}
.lx-feed .es{font-size:var(--cds-font-size-caption);color:var(--color-fg-muted);font-weight:300;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* charts */
.lx-legend{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:var(--cds-font-size-caption);color:var(--color-fg-muted)}
.lx-legend span{display:inline-flex;align-items:center;gap:6px}
.lx-legend i{width:9px;height:9px;border-radius:50%;display:inline-block}
.lx-legend.sq i{border-radius:3px}
.lx-seg{display:inline-flex;padding:3px;border:1px solid var(--lx-line);border-radius:999px;background:var(--lx-soft)}
.lx-seg button{border:0;background:none;border-radius:999px;padding:4px 12px;min-height:24px;font-size:var(--cds-font-size-caption);cursor:pointer;color:var(--color-fg-muted)}
.lx-seg button[aria-pressed=true]{background:var(--color-panel);color:var(--lx-ink);font-weight:500;box-shadow:0 1px 3px color-mix(in srgb,var(--color-fg) 14%,transparent)}
.lx-chart{position:relative;flex:1;min-height:250px;margin-top:10px}
.lx-chart svg{position:absolute;inset:0;display:block;overflow:visible}
.lx-chart text{font-family:'Readex Pro',var(--font-anthropic-sans);font-size:var(--cds-font-size-caption);fill:var(--color-fg-muted)}
.lx-funnel{display:flex;flex-direction:column;gap:10px;min-height:14rem}
.lx-frow{display:grid;grid-template-columns:7rem minmax(0,1fr) 4.8rem;align-items:center;gap:10px}
.lx-flabel{font-size:var(--cds-font-size-body)}
.lx-ftrack{height:20px;border-radius:999px;background:color-mix(in srgb,var(--color-fg) 6%,transparent);overflow:hidden}
.lx-fbar{height:100%;border-radius:999px;background:var(--lx-grad);transform-origin:left}
.lx-fval{text-align:right;line-height:1.15}
.lx-fval-n{font-weight:600}
.lx-fval-s{display:block;font-size:11.5px;color:var(--color-fg-muted)}
.lx-fval-s.is-worst{color:var(--cds-chart-status-critical)}
.lx-foot{margin-top:auto;padding-top:10px;font-size:var(--cds-font-size-caption);color:var(--color-fg-muted);font-weight:300}
.lx-cats{display:flex;flex-direction:column;gap:5px;min-height:14rem;margin-top:10px}
.lx-crow{display:grid;grid-template-columns:minmax(6rem,12rem) minmax(0,1fr) 2rem;align-items:center;gap:10px;padding:4px 6px;border-radius:8px;cursor:pointer}
.lx-crow:hover{background:var(--lx-soft)}
.lx-clabel{font-size:var(--cds-font-size-caption);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lx-stack{display:flex;height:16px;gap:2px;transform-origin:left}
.lx-stack i{height:100%;border-radius:4px;min-width:3px}
.lx-ctotal{text-align:right;font-size:var(--cds-font-size-caption);color:var(--color-fg-muted)}
/* pipeline board */
.lx-board{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(13rem,1fr);gap:12px;overflow-x:auto;padding-bottom:6px;min-height:20rem}
.lx-col{background:var(--color-panel);border:1px solid var(--lx-line);border-radius:var(--lx-r);display:flex;flex-direction:column;min-width:0;max-height:max(20rem,calc(100dvh - 13rem))}
.lx-colh{display:flex;align-items:center;gap:8px;padding:14px 14px 10px;font-weight:600;font-size:var(--cds-font-size-body);border-bottom:1px solid var(--lx-line)}
.lx-colh i{width:10px;height:10px;border-radius:50%}
.lx-colh .lx-badge{margin-left:auto}
.lx-colb{padding:10px;display:flex;flex-direction:column;gap:8px;overflow:auto}
.lx-kcard{background:var(--lx-soft);border:1px solid var(--lx-line);border-radius:14px;padding:11px 12px;cursor:pointer;display:flex;flex-direction:column;gap:6px}
.lx-kcard:hover{border-color:color-mix(in srgb,var(--lx-violet) 40%,var(--lx-line));background:var(--color-panel)}
.lx-kcard .kn{font-weight:500;font-size:var(--cds-font-size-body);overflow-wrap:anywhere}
.lx-kcard .kc{font-size:var(--cds-font-size-caption);color:var(--color-fg-muted);font-weight:300}
.lx-kcard .km{display:flex;align-items:center;flex-wrap:wrap;gap:6px;font-size:11.5px;color:var(--color-fg-muted)}
.lx-kcard .km .r{margin-left:auto}
/* pipeline drag and drop */
.lx:not([data-role=Viewer]) .lx-kcard{cursor:grab;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.lx-kcard.is-dragging{opacity:.35}
.lx-ghost{position:absolute;left:0;top:0;z-index:40;margin:0;pointer-events:none;background:var(--color-panel);border-color:color-mix(in srgb,var(--lx-violet) 40%,var(--lx-line));box-shadow:0 18px 40px -18px rgba(20,16,40,.5)}
.lx-board.is-dragging{scroll-snap-type:none}
.lx-board.is-dragging,.lx-board.is-dragging *{cursor:grabbing!important}
.lx-col.is-drop{background:color-mix(in srgb,var(--lx-violet) 5%,var(--color-panel));outline:2px dashed color-mix(in srgb,var(--lx-violet) 55%,transparent);outline-offset:-2px}
.lx-toastdock{position:sticky;bottom:24px;z-index:30;height:0;margin-top:auto}
.lx-toast{position:absolute;bottom:0;left:50%;transform:translateX(-50%);width:max-content;max-width:calc(100vw - 32px);display:flex;align-items:center;gap:14px;padding:8px 8px 8px 18px;border:1px solid var(--lx-line);border-radius:999px;background:var(--cds-surface-popover);color:var(--color-fg);box-shadow:var(--cds-shadow-popover);font-size:var(--cds-font-size-body)}
/* partner split */
.lx-split{display:grid;grid-template-columns:minmax(0,1fr);gap:16px;align-items:start}
@container lx (min-width: 84rem){.lx-split{grid-template-columns:minmax(0,1fr) 23rem}}
.lx-detail{position:sticky;top:12px}
.lx-dname{font-size:var(--cds-font-size-title);font-weight:700;letter-spacing:-.01em;line-height:1.2;margin:4px 0 10px;overflow-wrap:anywhere}
.lx-eyebrow{font-size:11px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--color-fg-muted)}
.lx-dchips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}
.lx-dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 14px;margin:0 0 6px}
.lx-dl div{min-width:0}
.lx-dl dt{font-size:var(--cds-font-size-caption);color:var(--color-fg-muted);margin-bottom:1px}
.lx-dl dd{margin:0;font-size:var(--cds-font-size-body);overflow-wrap:anywhere}
.lx-h4{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--color-fg-muted);margin:16px 0 6px;font-weight:500}
.lx-notes{white-space:pre-wrap;font-size:var(--cds-font-size-body);font-weight:300;line-height:1.55;background:var(--lx-soft);border:1px solid var(--lx-line);border-radius:14px;padding:10px 14px;max-height:15rem;overflow:auto}
.lx-timeline{list-style:none;margin:0;padding:0 0 0 20px;background:linear-gradient(var(--lx-line),var(--lx-line)) 5px 0/2px 100% no-repeat;display:flex;flex-direction:column;gap:8px;max-height:15rem;overflow:auto}
.lx-timeline li{position:relative;display:flex;align-items:center;gap:10px;font-size:var(--cds-font-size-body)}
.lx-timeline li::before{content:"";position:absolute;left:-19px;top:50%;margin-top:-4px;width:8px;height:8px;border-radius:50%;background:var(--color-panel);border:2px solid var(--lx-violet)}
.lx-timeline .d{width:3.6rem;flex:none;color:var(--color-fg-muted);font-size:var(--cds-font-size-caption)}
/* tooltip + states */
.lx-tip{position:absolute;z-index:30;pointer-events:none;background:var(--cds-surface-popover);border:1px solid var(--cds-border);border-radius:var(--cds-radius);box-shadow:var(--cds-shadow-popover);padding:var(--cds-pad-xs) var(--cds-pad-sm);font-size:var(--cds-font-size-caption);min-width:8rem;max-width:16rem}
.lx-tip-t{color:var(--cds-text-secondary);margin-bottom:2px}
.lx-tip-r{display:flex;align-items:center;gap:6px}
.lx-tip-r i{width:8px;height:8px;border-radius:2px;display:inline-block}
.lx-tip-r .v{margin-left:auto;padding-left:12px;font-weight:500}
.lx-fail{display:flex;align-items:center;justify-content:center;gap:6px;min-height:inherit;height:100%;color:var(--color-fg-muted);font-size:var(--cds-font-size-caption)}
.lx-fail-dot{width:.375rem;height:.375rem;border-radius:50%;background:var(--color-bad)}
[data-dash-source-state=refreshing]{opacity:.5;transition:opacity var(--cds-dur-slow)}
[data-dash-source-state=empty]{color:transparent}
/* responsive shell */
.lx-topbrand,.lx-morebtn{display:none}
@container lx (max-width: 60rem){
  .lx-twrap.is-tall{max-height:max(20rem,calc(100dvh - 25rem))}
  .lx-col{max-height:max(20rem,calc(100dvh - 22rem))}
  /* phones and tablet portrait: the sidebar's main nav becomes a bottom tab bar, the logo moves into a slim sticky top bar */
  .lx{grid-template-columns:minmax(0,1fr);grid-template-rows:1fr auto;min-height:100dvh}
  .lx-side{display:contents}
  .lx-side > :not(#nav),#nav-activity,#nav-venues,#nav-advisor,#nav-admin,#nav > .lx-navbtn .lx-badge:not(.is-alert),.lx-greet,#signout,#cta{display:none}
  #nav{order:1;position:sticky;bottom:0;z-index:20;flex-direction:row;gap:2px;background:var(--color-panel);border-top:1px solid var(--lx-line);padding:5px max(6px,env(safe-area-inset-right)) max(5px,env(safe-area-inset-bottom)) max(6px,env(safe-area-inset-left));box-shadow:0 -8px 24px -18px rgba(20,16,40,.35)}
  #nav > .lx-navbtn{position:relative;flex:1 1 0;min-width:0;width:auto;min-height:52px;flex-direction:column;justify-content:center;gap:3px;padding:6px 2px;font-size:11.5px;text-align:center}
  #nav > .lx-navbtn svg.i{width:22px;height:22px}
  #nav > .lx-navbtn .lx-badge{position:absolute;top:3px;left:calc(50% + 6px);margin:0;height:17px;min-width:17px;padding:0 5px;font-size:10px;background:var(--color-bad);color:#fff}
  .lx-morebtn{display:flex}
  .lx-top{position:sticky;top:0;z-index:20;flex-wrap:nowrap;gap:10px;padding:max(10px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) 10px max(16px,env(safe-area-inset-left))}
  .lx-topbrand{display:flex;padding:0;margin:0;border:0}
  .lx-top-r{flex:1;min-width:0;flex-wrap:nowrap;justify-content:flex-end}
  .lx-searchwrap{flex:1;min-width:0;max-width:24rem}
  .lx-search{width:100%}
  .lx-body{padding:18px max(16px,env(safe-area-inset-right)) 24px max(16px,env(safe-area-inset-left))}
  .lx-pagehead{flex-wrap:nowrap}
  .lx-board{scroll-snap-type:x mandatory}
  .lx-col{scroll-snap-align:start}
  .lx-toastdock{bottom:calc(80px + env(safe-area-inset-bottom))}
}
/* phones: logo mark only, one-line page head, tighter cards, Pipeline one stage per swipe */
@container lx (max-width: 40rem){
  .lx-topbrand .lx-word,.lx-updated,.lx-takeaway{display:none}
  .lx-h1{font-size:24px}
  .lx-card{padding:16px 14px}
  .lx-twrap{margin:0 -14px;padding:0 14px}
  .lx .lx-dbtable .lx-dbact{padding-right:14px}
  .lx .lx-dlg.is-drawer .lx-dactions.is-bottom{margin-inline:-14px;padding-inline:14px}
  .lx-board{grid-auto-columns:calc(100% - 2.5rem)}
}
@media (max-width: 1000px){#dash-root{padding:0}.lx{border:0;border-radius:0}}
.lx-morenav{position:absolute;right:max(8px,env(safe-area-inset-right));bottom:calc(100% + 8px);z-index:30;min-width:13rem;padding:6px;border:1px solid var(--lx-line);border-radius:16px;background:var(--color-panel);color:var(--color-fg);box-shadow:var(--cds-shadow-popover)}
@media (prefers-reduced-motion: no-preference){
  @keyframes lx-grow{from{transform:scaleX(0)}to{transform:scaleX(1)}}
  @keyframes lx-rise{from{transform:scaleY(0)}to{transform:scaleY(1)}}
  @keyframes lx-fade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
  .lx-anim .lx-fbar,.lx-anim .lx-stack,.lx-anim .lx-meter i{animation:lx-grow var(--cds-dur-slow) var(--cds-ease-out) both}
  .lx-anim .lx-wbar{transform-box:fill-box;transform-origin:bottom;animation:lx-rise var(--cds-dur-slow) var(--cds-ease-out) both}
  .lx-anim .lx-segs i.on{animation:lx-fade var(--cds-dur-slow) var(--cds-ease-out) both}
  @keyframes lx-arc{from{stroke-dasharray:0 100}}
  .lx-anim .lx-gauge .arc{animation:lx-arc .9s var(--lx-ease) both}
  .lx-gauge .arc{transition:stroke-dasharray .8s var(--lx-ease)}
}
/* ---------- motion: what moved, what changed, how long Undo lasts, and the win ---------- */
/* colour-only feedback, kept with reduced motion too: rows and cards someone else just changed */
@keyframes lx-fresh{from{background-color:color-mix(in srgb,var(--lx-violet) 16%,transparent)}}
.lx tbody tr.is-fresh td,.lx-kcard.is-fresh,.lx-todo li.is-fresh{animation:lx-fresh 1.8s var(--cds-ease-out)}
/* a partner who just agreed terms: the card flashes teal (with motion: a ring closes in onto it) */
@keyframes lx-won-still{40%{outline-color:var(--lx-teal);background-color:color-mix(in srgb,var(--lx-teal) 12%,var(--color-panel))}}
.lx-kcard.is-won{outline:2px solid transparent;outline-offset:0;animation:lx-won-still 1.2s var(--cds-ease-out)}
.lx-kcard.is-landing{opacity:0}
/* the toast's thin line runs down over the time Undo stays available */
.lx-tbar{position:absolute;left:20px;right:20px;bottom:3px;height:2px;border-radius:2px;background:color-mix(in srgb,var(--lx-violet) 50%,transparent);transform-origin:left;pointer-events:none}
.lx-tok{display:none;width:20px;height:20px;flex:none;margin-right:-4px;fill:none;stroke:var(--lx-ink-t);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.lx-toast.is-won{padding-left:12px}
.lx-toast.is-won .lx-tok{display:block}
/* inside a dialog the toast sits above the dialog's bottom action row */
.lx-dlg .lx-toastdock{bottom:calc(76px + env(safe-area-inset-bottom))}
.lx-dlg .lx-toast{max-width:calc(100% - 24px)}
.lx-dlg[open]::backdrop{transition:opacity .26s}
@starting-style{.lx-dlg[open]::backdrop{opacity:0}}
@media (prefers-reduced-motion: reduce){
  .lx-tbar{visibility:hidden}
  .lx-dlg[open]{transition:opacity .2s}
  @starting-style{.lx-dlg[open]{opacity:0}}
}
@media (prefers-reduced-motion: no-preference){
  @keyframes lx-won{0%{outline-offset:14px;outline-color:transparent}40%{outline-offset:0;outline-color:var(--lx-teal);background-color:color-mix(in srgb,var(--lx-teal) 12%,var(--color-panel))}}
  .lx-kcard.is-won{animation-name:lx-won}
  @keyframes lx-draw{from{stroke-dashoffset:1}}
  .lx-toast.is-won .lx-tok :is(circle,path){stroke-dasharray:1;animation:lx-draw .5s var(--lx-ease) both}
  .lx-toast.is-won .lx-tok path{animation-duration:.25s;animation-delay:.4s}
  /* dialogs rise in, the partner drawer slides in from the right (up from the bottom on phones); leaving is quicker */
  .lx-dlg{transition:opacity .16s ease-in,translate .16s ease-in,scale .16s ease-in}
  .lx-dlg[open]{transition-duration:.28s;transition-timing-function:var(--lx-ease)}
  @starting-style{.lx-dlg[open]{opacity:0;translate:0 10px;scale:.985}.lx-dlg.is-drawer[open]{opacity:1;translate:100% 0;scale:1}}
  @container lx (max-width: 40rem){@starting-style{.lx-dlg.is-drawer[open]{translate:0 100%}}}
  /* leaving needs the dialog kept in the top layer while it fades (overlay); elsewhere it closes at once */
  @supports (overlay: auto){
    .lx-dlg{transition-property:opacity,translate,scale,overlay,display;transition-behavior:allow-discrete}
    .lx-dlg:not([open]){opacity:0;translate:0 6px;scale:.985}
    .lx-dlg.is-drawer:not([open]){opacity:1;translate:100% 0;scale:1}
    @container lx (max-width: 40rem){.lx-dlg.is-drawer:not([open]){translate:0 100%}}
    .lx-dlg::backdrop{opacity:0;transition:opacity .16s,overlay .16s allow-discrete,display .16s allow-discrete}
    .lx-dlg[open]::backdrop{opacity:1;transition-duration:.26s}
  }
  /* sign-in: the loyaltee ring draws itself once */
  @keyframes lx-mark-draw{from{--lx-draw:0deg}}
  .lx-login .lx-mark{-webkit-mask:conic-gradient(#000 var(--lx-draw),transparent 0);mask:conic-gradient(#000 var(--lx-draw),transparent 0);animation:lx-mark-draw .9s .15s var(--lx-ease) both}
}
@property --lx-draw{syntax:'<angle>';inherits:false;initial-value:360deg}
/* ---------- CRM additions: editing, dialogs, venues ---------- */
.lx textarea{font-family:inherit;color:inherit}
.lx :is(a.lx-outline,a.lx-iconbtn){text-decoration:none;color:inherit}
.lx-input{width:100%;font-size:var(--cds-font-size-body);background:var(--color-bg);border:1px solid var(--lx-line);border-radius:12px;padding:7px 12px}
textarea.lx-input{resize:vertical;line-height:1.45}
.lx :is(.lx-input,.lx-mini,.lx-x,a.lx-outline,.lx-field input[type=checkbox]):focus-visible{outline:2px solid var(--lx-violet);outline-offset:1px}
.lx-grow{flex:1}
.lx-err{color:var(--color-bad);font-size:var(--cds-font-size-caption);margin:0}
/* a control that cannot be used right now looks it (the reason is shown beside it) */
.lx-outline:disabled,.lx-primary:disabled{opacity:.5;cursor:not-allowed;pointer-events:none}
.lx-field.is-check:has(input:disabled){color:var(--color-fg-muted);cursor:not-allowed}
.lx-outline.is-danger{color:var(--color-bad)}
.lx-outline.is-danger:hover{border-color:var(--color-bad);color:var(--color-bad)}
.lx-outline.is-edit{color:var(--color-edit)}
/* secondary action next to a green one: soft gray fill, no border */
.lx-outline.is-gray{background:color-mix(in srgb,var(--color-fg) 8%,var(--color-panel));border-color:transparent;color:var(--color-fg)}
.lx-outline.is-gray:hover{background:color-mix(in srgb,var(--color-fg) 14%,var(--color-panel));border-color:transparent;color:var(--color-fg)}
.lx-outline.is-edit:hover{border-color:var(--color-edit);color:var(--color-edit)}
.lx-primary.is-sm{padding:6px 16px;font-size:var(--cds-font-size-caption)}
.lx-dactions{display:flex;justify-content:flex-end;gap:6px;margin-bottom:6px}
.lx-dactions.is-bottom{margin:16px 0 0;padding-top:12px;border-top:1px solid var(--lx-line)}
.lx-logrow{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.lx-logrow .lx-input{width:auto;padding:4px 10px;font-size:var(--cds-font-size-caption);border-radius:999px}
.lx-logform .lx-err{margin-top:6px}
.lx-x{margin-left:auto;border:0;background:none;color:var(--color-fg-muted);cursor:pointer;font-size:16px;line-height:1;padding:2px 6px;border-radius:6px;opacity:.55;min-width:24px;min-height:24px}
.lx-timeline li:hover .lx-x,.lx-x:focus-visible{opacity:1}
.lx-x:hover{color:var(--color-bad)}
.lx-dlg{width:min(44rem,calc(100vw - 32px));max-height:calc(100dvh - 32px);border:1px solid var(--lx-line);border-radius:var(--lx-r);background:var(--color-panel);color:var(--color-fg);padding:0;box-shadow:var(--cds-shadow-popover)}
.lx-dlg.is-wide{width:min(64rem,calc(100vw - 32px))}
#adlg{width:min(30rem,calc(100vw - 32px))}#adlg p{margin:0;overflow-wrap:anywhere}
.lx-dlg.is-drawer{margin:0 0 0 auto;width:min(28rem,100vw);max-width:100vw;height:100dvh;max-height:none;border-radius:var(--lx-r) 0 0 var(--lx-r);border-right:0}
.lx-dlg.is-drawer .lx-detail{position:static;border:0;min-height:100%}
/* drawer: the bottom row stays pinned to the drawer's bottom edge while the record scrolls */
.lx-dlg.is-drawer .lx-detail{padding-bottom:0}
.lx-dlg.is-drawer .lx-dactions.is-bottom{position:sticky;bottom:0;z-index:1;margin:auto -20px 0;padding:12px 20px max(14px,env(safe-area-inset-bottom));background:var(--color-panel)}
.lx-dlg::backdrop{background:rgba(20,16,40,.45)}
.lx-dlg form{padding:20px 22px 0;display:flex;flex-direction:column;gap:14px}
.lx-dlg h2{margin:0;font-size:var(--cds-font-size-title);font-weight:700;letter-spacing:-.01em}
.lx-dlg .lx-note{margin:0}
.lx-conflict{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;margin:0;padding:10px 12px 10px 14px;border:1px solid color-mix(in srgb,var(--color-warn) 45%,var(--lx-line));border-radius:12px;background:color-mix(in srgb,var(--color-warn) 9%,var(--color-panel));font-size:var(--cds-font-size-body);line-height:1.4}
.lx-conflict span{flex:1 1 16rem}
.lx-form{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,14rem),1fr));gap:10px 14px}
.lx-field.is-wide{grid-column:1/-1}
.lx-field.is-check{flex-direction:row;align-items:center;gap:8px;color:var(--color-fg);font-size:var(--cds-font-size-body)}
.lx-field.is-check input{width:16px;height:16px;accent-color:var(--lx-violet);margin:0}
#vfields{display:flex;flex-direction:column;gap:14px}
.lx-fs{border:1px solid var(--lx-line);border-radius:14px;padding:10px 14px 14px;margin:0;min-width:0}
.lx-fs legend{font-size:11px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--color-fg-muted);padding:0 6px}
.lx-dlg-foot{position:sticky;bottom:0;display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:12px 0 18px;background:var(--color-panel);border-top:1px solid var(--lx-line)}
.lx-dlg-foot .lx-err{flex-basis:100%}
.lx-ilist{margin:0;padding-left:18px;font-size:var(--cds-font-size-body);display:flex;flex-direction:column;gap:4px;max-height:14rem;overflow:auto;overflow-wrap:anywhere}
.lx-ilist .lx-warn{color:var(--color-warn)}
@container (max-width: 44rem){.lx-vtable :is(th,td):nth-child(n+4){display:none}}
/* ---------- users ---------- */
.lx-cardlink{text-align:left;font:inherit;color:inherit;cursor:pointer}
.lx-cardlink:hover{border-color:color-mix(in srgb,var(--lx-violet) 40%,var(--lx-line))}
.lx-cardlink:focus-visible{outline:2px solid var(--lx-violet);outline-offset:2px}
.lx-ustack{display:grid;gap:16px}
@container (max-width: 44rem){.lx-utable :is(th,td):nth-child(n+4){display:none}.lx-ltable :is(th,td):nth-child(2){display:none}}
.lx-checks{display:flex;flex-wrap:wrap;gap:6px 18px;align-items:center;grid-column:1/-1}
/* Orchestrator: each source is a tick, its model, and a note (no key yet) */
.lx-srcs{grid-column:1/-1;display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:8px 12px;align-items:center}
#orchform{container:orch/inline-size}
@container orch (max-width: 48rem){.lx-srcs{grid-template-columns:minmax(0,1fr);gap:6px}.lx-srcs .lx-muted:empty{display:none}.lx-srcs .is-check ~ .is-check{margin-top:8px}}
.lx-searchrow{display:flex;gap:8px}
.lx-searchrow .lx-input{flex:1}
.lx-presults{border:1px solid var(--lx-line);border-radius:14px;padding:4px 14px;color:var(--color-fg);font-size:var(--cds-font-size-body)}
.lx-presults ul{list-style:none;margin:0;padding:0}
.lx-presults li{display:flex;align-items:center;gap:12px;padding:8px 0;border-top:1px solid var(--lx-line)}
.lx-presults li > div{flex:1;min-width:0;overflow-wrap:anywhere}
.lx-presults .lx-presults-h{margin:0;padding:8px 0;font-size:var(--cds-font-size-caption);color:var(--color-fg-muted)}
.lx-presults a{color:var(--lx-violet)}
/* partner form: fields on the left, what is known about the name on the right; on a phone the results stack under the name */
.lx-pgrid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,23rem);grid-template-areas:"name side" "fields side";grid-template-rows:auto 1fr;gap:10px 20px;align-items:start}
.lx-pname{grid-area:name}
.lx-pfields{grid-area:fields;display:flex;flex-direction:column;gap:12px}
.lx-pside{grid-area:side;position:sticky;top:0;max-height:calc(100dvh - 190px);overflow:auto}
.lx-pside .lx-err{margin:4px 0}
.lx-more summary{cursor:pointer;font-size:var(--cds-font-size-caption);color:var(--color-fg);padding:4px 0}
.lx-more summary .lx-muted{margin-left:6px}
.lx-more[open] summary{margin-bottom:8px}
.lx-more summary:focus-visible{outline:2px solid var(--lx-violet);outline-offset:2px;border-radius:6px}
/* filled by Use or Apply: stays marked until edited, so it is easy to check */
.lx-input.is-filled{border-color:var(--lx-violet);background:color-mix(in srgb,var(--lx-violet) 8%,var(--color-bg))}
.lx-keyhint{font-size:var(--cds-font-size-caption)}
@media (max-width:760px){.lx-pgrid{grid-template-columns:minmax(0,1fr);grid-template-rows:none;grid-template-areas:"name" "side" "fields"}.lx-pside{position:static;max-height:45vh}.lx-keyhint{display:none}}
.lx-presults .lx-links{display:flex;flex-wrap:wrap;gap:4px 12px}
.lx-presults-foot{padding:10px 0;display:flex;flex-direction:column;align-items:flex-start;gap:8px}
.lx-suggest{width:100%}
.lx-suggest .lx-dl{margin:4px 0 10px}
.lx-keyrow{display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px;margin:4px 0 14px}
.lx-keyrow .lx-field{flex:1 1 16rem}
.lx-keyrow .lx-outline{height:36px}
.lx-ormodel{grid-column:1/-1;gap:6px}
.lx-orchtext{grid-column:1/-1}
.lx-usecards{display:grid;grid-template-columns:repeat(auto-fit,minmax(9.5rem,1fr));gap:10px;margin:0 0 14px}
.lx-usecard{border:1px solid var(--lx-line);border-radius:12px;padding:10px 12px;display:flex;flex-direction:column;gap:2px;font-size:var(--cds-font-size-caption)}
.lx-usecard b{font-size:20px;font-weight:600;color:var(--color-fg);font-variant-numeric:tabular-nums}
.lx-orchtext textarea{min-height:5.5rem;max-height:20rem;field-sizing:content;resize:vertical;line-height:1.45}
.lx-answers{margin:10px 0 4px;font-size:var(--cds-font-size-caption)}
.lx-answers summary{cursor:pointer;color:var(--lx-ink);font-weight:500}
.lx-answers > div{margin-top:8px;padding:8px 10px;border:1px solid var(--lx-line);border-radius:10px}
.lx-select.lx-orlist{appearance:auto;-webkit-appearance:auto;border-radius:12px;padding:4px;background:var(--color-panel);min-height:10rem}
.lx-orlist option{padding:6px 8px;border-radius:8px}
.lx-orlist optgroup{font-weight:600;color:var(--color-fg-muted);padding-top:4px}
.lx-keyrow .lx-err{flex-basis:100%}
.lx-ustack code{font-size:.95em;overflow-wrap:anywhere}
/* Admin → Database: every column, long text cut with … (the whole text on hover), Edit and Delete pinned at the right edge */
.lx table.lx-dbtable{width:max-content;min-width:100%}
.lx-dbtable td{max-width:16rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lx .lx-dbtable tbody tr{cursor:default}
/* the scroller has no right padding, so nothing shows past the pinned column; the cell keeps that space instead */
#db-wrap{padding-right:0;scroll-padding:2.75rem 10rem 0 0} /* a focused cell scrolls clear of the pinned header and Actions column */
.lx-dbtable .lx-dbact{position:sticky;right:0;max-width:none;padding-right:20px;background:var(--color-panel);box-shadow:-10px 0 10px -10px color-mix(in srgb,var(--color-fg) 30%,transparent)}
.lx .lx-dbtable tbody tr:hover td.lx-dbact{background:color-mix(in srgb,var(--lx-violet) 4%,var(--color-panel))}
.lx-dbtable th.lx-dbact{z-index:2;background:var(--lx-soft)}
.lx-dbact .lx-outline + .lx-outline{margin-left:6px}
/* venue opening hours: a row per day, opens and closes side by side */
.lx-hours{display:grid;grid-template-columns:max-content repeat(2,minmax(0,11rem));gap:8px 14px;align-items:center;font-size:var(--cds-font-size-body)}
.lx-hours > .lx-muted{font-size:var(--cds-font-size-caption)}
/* phones: the day on its own line, so both times have room to show in full */
@media (max-width: 34rem){.lx-hours{grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 10px}.lx-hours > :first-child{display:none}.lx-hours > :nth-child(3n+4){grid-column:1/-1;margin-top:8px}.lx-hours .lx-input{padding-inline:10px 6px}}
/* the smallest phones: no clock button, so "11:45 PM" fits (tapping the box still opens the picker) */
@media (max-width: 22rem){.lx-hours input::-webkit-calendar-picker-indicator{display:none}}
#venue-table td:is(:nth-child(4),:nth-child(5)){white-space:nowrap}
#venue-table td:nth-child(6){min-width:12rem}
/* admin boxes: room between the fields and what follows them (the note, or the buttons) */
.lx-ustack .lx-form + :is(.lx-note,.lx-toolbar){margin-top:12px}
/* a test's outcome reads at a glance: ✓ green, ✗ red (set by app.js from the text) */
.lx-count[data-tone=ok]{color:color-mix(in srgb,var(--color-ok) 78%,var(--color-fg))}
.lx-count[data-tone=bad]{color:var(--color-bad)}
/* a placeholder or key too long for a phone ends in … instead of a cut letter */
#llm .lx-input{text-overflow:ellipsis}
@container lx (max-width: 34rem){
  /* long model names wrap in the OpenRouter list, where the browser can draw the list itself (Chrome); elsewhere the native list stays */
  @supports (appearance: base-select){
    .lx-select.lx-orlist{appearance:base-select;height:20rem}
    .lx-orlist option{white-space:normal}
  }
}
/* usage on a phone: each row a small block, nothing hidden: day · service and cost, the model, then calls and tokens */
@container (max-width: 44rem){
  #usage-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
  #usage-table tr{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 12px;padding:10px 0;border-bottom:1px solid color-mix(in srgb,var(--lx-line) 70%,transparent)}
  #usage-table td{display:block;padding:0;border:0}
  #usage-table td:nth-child(1){order:1;font-weight:500}
  #usage-table td:nth-child(2){order:2}
  #usage-table td:nth-child(7){order:3;margin-left:auto;color:var(--color-fg);font-variant-numeric:tabular-nums}
  #usage-table td:nth-child(3){order:4;flex-basis:100%;color:var(--color-fg-muted);overflow-wrap:anywhere}
  #usage-table td:nth-child(n+4):nth-child(-n+6){order:5;font-size:var(--cds-font-size-caption);font-variant-numeric:tabular-nums}
  #usage-table td:nth-child(4)::before{content:"Calls ";color:var(--color-fg-muted)}
  #usage-table td:nth-child(5)::before{content:"In ";color:var(--color-fg-muted)}
  #usage-table td:nth-child(6)::before{content:"Out ";color:var(--color-fg-muted)}
  #usage-table td.is-na{display:none}
}
/* roles are enforced by the server; this only hides what it would refuse */
.lx[data-role=Viewer] :is(.lx-edit,.lx-x){display:none!important}
.lx:not([data-role=Admin]) :is(#nav-admin,.lx-adminonly){display:none}
/* sign-in page */
.lx.lx-login{display:block;max-width:26rem;min-height:0;margin:8vh auto 0;padding:28px}
.lx-login .lx-brand{border:0;margin:0;padding:0 0 18px}
.lx-authform{display:flex;flex-direction:column;gap:12px}
.lx-authform .lx-note{margin:0}
.lx-google{display:flex;align-items:center;justify-content:center;gap:10px;height:44px;margin-top:4px;border:1px solid var(--lx-line);border-radius:999px;background:var(--color-panel);color:var(--color-fg);text-decoration:none;font-size:var(--cds-font-size-body);font-weight:500}
.lx-google:hover{background:var(--lx-soft)}
.lx-google:focus-visible{outline:2px solid var(--lx-violet);outline-offset:2px}
.lx-google svg{width:18px;height:18px}
.lx-waiting{display:flex;align-items:center;gap:10px;margin:4px 0;color:var(--color-fg-muted);font-size:var(--cds-font-size-body)}
.lx-spin{width:16px;height:16px;flex:none;border-radius:50%;border:2px solid color-mix(in srgb,var(--lx-violet) 22%,transparent);border-top-color:var(--lx-violet)}
@media (prefers-reduced-motion: no-preference){.lx-spin{animation:lx-turn .9s linear infinite}@keyframes lx-turn{to{transform:rotate(1turn)}}}
/* access requests */
.lx-reqs{list-style:none;margin:0;padding:0}
.lx-reqs li{display:flex;flex-wrap:wrap;align-items:center;gap:10px 12px;padding:12px 0;border-top:1px solid var(--lx-line)}
.lx-reqs li:first-child{border-top:0;padding-top:4px}
.lx-reqs .rw{flex:1 1 16rem;min-width:0;display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 10px}
.lx-ok{margin:0;color:var(--color-ok);font-size:var(--cds-font-size-body)}
.lx-primary.is-danger{background:var(--color-bad);box-shadow:none}
.lx a.lx-primary{display:inline-flex;align-items:center;text-decoration:none}
.lx-reqnote{margin:8px 0 0;color:var(--color-bad);font-weight:500;font-size:var(--cds-font-size-caption)}
/* touch screens: 44px tap targets, and 16px fields so iPhone does not zoom in on focus */
@media (pointer: coarse){
  .lx :is(.lx-navbtn,.lx-iconbtn,.lx-outline,.lx-primary,.lx-tab,.lx-promo-btn,.lx-fchip,.lx-seg button,.lx-select,.lx-input,.lx-search,.lx-mini){min-height:44px}
  .lx :is(.lx-iconbtn,.lx-x){min-width:44px}
  .lx .lx-x,.lx th button{min-height:44px}
  .lx th button{min-width:44px;text-align:left;margin-block:0}
  .lx :is(input:not([type=checkbox]):not([type=radio]),select,textarea){font-size:16px}
}
/* ---------- Merchant Advisor ---------- */
#advisor{display:flex;flex-direction:column;gap:14px}
#advisor > .lx-tabs{margin:0;overflow-x:auto;flex-wrap:nowrap}
/* a fade on each side that has more tabs (app.js sets is-more-l and is-more-r from the scroll position) */
#mtabs{--l:#000;--r:#000}
#mtabs.is-more-l{--l:transparent}
#mtabs.is-more-r{--r:transparent}
#mtabs:is(.is-more-l,.is-more-r){mask-image:linear-gradient(to right,var(--l),#000 2.5rem,#000 calc(100% - 2.5rem),var(--r))}
.lx-upload{position:relative;overflow:hidden;cursor:pointer}
.lx-upload input{position:absolute;inset:0;opacity:0;cursor:pointer}
.lx-upload:focus-within{outline:2px solid var(--lx-violet);outline-offset:2px}
.lx-mlist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.lx-mlist > li{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:center;padding:12px 0;border-top:1px solid var(--lx-line)}
.lx-mlist > li:first-child{border-top:0}
.lx-mlist .lx-empty{color:var(--color-fg-muted);justify-content:center}
.lx-mthumb{width:72px;height:72px;object-fit:cover;border-radius:10px;background:var(--lx-soft);border:1px solid var(--lx-line);flex:none;display:grid;place-items:center;font-size:var(--cds-font-size-caption);color:var(--color-fg-muted)}
.lx-mthumb.is-dup{outline:2px solid var(--color-bad);outline-offset:1px}
.lx-mgrow{flex:1 1 14rem;min-width:0;display:flex;flex-direction:column;gap:2px}
.lx-mgrow b{overflow-wrap:anywhere}
.lx-mgrow small{color:var(--color-fg-muted);font-size:var(--cds-font-size-caption);overflow-wrap:anywhere}
.lx-macts{display:flex;flex-wrap:wrap;gap:6px;align-items:center;max-width:100%}
.lx-macts .lx-minisel{max-width:100%;min-width:0}.lx-macts .lx-mini{max-width:100%;text-overflow:ellipsis}
.lx-mphotos{display:flex;flex-wrap:wrap;gap:10px;flex-basis:100%}
.lx-mphotos figure{margin:0;display:flex;flex-direction:column;gap:4px;align-items:center;font-size:var(--cds-font-size-caption);color:var(--color-fg-muted)}
.lx-mfields{flex-basis:100%;display:flex;flex-direction:column;gap:4px;font-size:var(--cds-font-size-body);overflow-wrap:anywhere}
.lx-mfields label{display:flex;gap:8px;align-items:baseline}
.lx-mmap{width:100%;height:240px;border:1px solid var(--lx-line);border-radius:10px;flex-basis:100%}
.lx-mstaged{position:sticky;bottom:12px;z-index:2;box-shadow:var(--cds-shadow-popover)}
.lx-mstaged:has(#mslist:not([hidden])){position:static} /* the open list sits at the end of the page instead of covering it */
.lx-mstaged li input[type=checkbox]{width:18px;height:18px;flex:none}
@container lx (max-width: 40rem){.lx-mstaged{position:static}.lx-mthumb{width:60px;height:60px}}

.lx-mtable :is(th,td):nth-child(5){width:1%;white-space:nowrap}
.lx-mtable.is-noai :is(th,td):nth-child(5){display:none} /* no AI column until an admin switches the AI on */
@container (max-width: 30rem){.lx-mtable td:nth-child(5) .lx-outline{padding:4px 8px}.lx-mtable :is(th,td):nth-child(4){max-width:6.5rem}}
/* Admin → LLM/API → Compare models */
.lx-compare{border-top:1px solid var(--lx-line);margin-top:6px;padding-top:12px}
.lx-compare > summary{cursor:pointer;font-weight:500;width:max-content;max-width:100%}
.lx-compare form{margin-top:12px}
#cmp-out{display:flex;flex-direction:column;gap:12px;margin-top:12px}
.lx-cmprow{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,15rem),1fr));gap:10px}
.lx-cmpcell{border:1px solid var(--lx-line);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:6px;min-width:0;font-size:var(--cds-font-size-body);overflow-wrap:anywhere}
.lx-cmpcell.is-ref{background:color-mix(in srgb,var(--lx-mint,#72D7C0) 14%,transparent)}
.lx-cmpcell b{font-size:var(--cds-font-size-caption)}
.lx-rtl{direction:rtl;text-align:right}
.lx-dmissing{display:inline-flex;margin-top:10px;max-width:100%} /* the partner panel's fill-in sheet for the merchant */
