@elitedcs/ghl-mcp 3.88.0 → 3.88.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/README.md +1 -1
- package/dist/index.js +34 -6
- package/guide/guide.html +9 -8
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 3.88.1: light or dark, your choice
|
|
4
|
+
|
|
5
|
+
The circle at the top right of the cockpit now opens your menu: your agency, connections, the Members Hub, and Appearance. Choose Light or Dark to keep that look whatever your computer is set to, or Auto to follow it. The choice is remembered on this computer and applied before the page appears, so it never flashes the other way.
|
|
6
|
+
|
|
7
|
+
The connection guides now say once, above the steps, when the steps have not yet been checked on a real screen, instead of repeating it on every step. The guides also use the spelling "license" throughout.
|
|
8
|
+
|
|
3
9
|
## 3.88.0: a calmer, cleaner cockpit, and Workflow Audit Pro
|
|
4
10
|
|
|
5
11
|
Every cockpit screen has a new look: a navy sidebar, white cards, one accent colour and your computer's own fonts, so it reads like a finished product rather than a set of pages. Each screen opens with what it is for and what needs you, then the detail, and long lists show the first few with "Show all" for the rest. The text size control now scales the whole screen evenly from 18px up to 34px, and at large sizes the layout switches to a single column instead of squeezing. It works the same in dark mode and on a phone.
|
package/README.md
CHANGED
package/dist/index.js
CHANGED
|
@@ -29130,7 +29130,7 @@ var require_package = __commonJS({
|
|
|
29130
29130
|
"package.json"(exports2, module2) {
|
|
29131
29131
|
module2.exports = {
|
|
29132
29132
|
name: "@elitedcs/ghl-mcp",
|
|
29133
|
-
version: "3.88.
|
|
29133
|
+
version: "3.88.1",
|
|
29134
29134
|
mcpName: "io.github.drjerryrelth/ghl-command",
|
|
29135
29135
|
description: "GoHighLevel MCP Server for Claude. 250 tools \u2014 full CRM, automation, marketing control, account-wide workflow audit, live funnel-capture verification, and the only programmatic GHL workflow builder, now multi-tenant across client accounts.",
|
|
29136
29136
|
main: "dist/index.js",
|
|
@@ -29272,7 +29272,7 @@ var init_report_css_generated = __esm({
|
|
|
29272
29272
|
--font-mono: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
|
|
29273
29273
|
}
|
|
29274
29274
|
`;
|
|
29275
|
-
DS_BUNDLE_CSS = '.cds-row{display:flex;flex-wrap:wrap;gap:var(--space-3);align-items:center}\n.cds-stack{display:grid;gap:var(--space-3)}\n.cds-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-4)}\n.cds-num{font-variant-numeric:tabular-nums}\n.cds-ring{display:inline-grid;justify-items:center;gap:var(--space-2);font-family:var(--font-display)}\n.cds-ring svg{display:block}\n.cds-ring .trk{fill:none;stroke:var(--border)}\n.cds-ring .arc{fill:none;stroke-linecap:round;transition:stroke-dashoffset 300ms}\n.cds-ring .letter{font-weight:700;letter-spacing:-0.02em}\n.cds-ring .out{fill:var(--muted);font-size:11px;font-variant-numeric:tabular-nums}\n.cds-ring .cap{font-family:var(--font-body);font-size:14px;color:var(--muted);text-align:center;max-width:220px}\n.cds-g-a{stroke:var(--grade-a);fill:var(--grade-a);color:var(--grade-a);background-color:var(--grade-a)}\n.cds-g-b{stroke:var(--grade-b);fill:var(--grade-b);color:var(--grade-b);background-color:var(--grade-b)}\n.cds-g-c{stroke:var(--grade-c);fill:var(--grade-c);color:var(--grade-c);background-color:var(--grade-c)}\n.cds-g-d{stroke:var(--grade-d);fill:var(--grade-d);color:var(--grade-d);background-color:var(--grade-d)}\n.cds-g-f{stroke:var(--grade-f);fill:var(--grade-f);color:var(--grade-f);background-color:var(--grade-f)}\n.cds-g-incomplete{stroke:var(--muted);fill:var(--muted);color:var(--muted)}\n.cds-ring .cds-g-a,.cds-ring .cds-g-b,.cds-ring .cds-g-c,.cds-ring .cds-g-d,.cds-ring .cds-g-f{background-color:transparent}\n.cds-ring text.cds-g-a,.cds-ring text.cds-g-b,.cds-ring text.cds-g-c,.cds-ring text.cds-g-d,.cds-ring text.cds-g-f{stroke:none}\n.cds-stat{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-lg);padding:14px var(--space-4);min-width:140px}\n.cds-stat .big{font-family:var(--font-display);font-weight:700;font-size:20px;line-height:26px;color:var(--text);font-variant-numeric:tabular-nums}\n.cds-stat .big.bad{color:var(--bad)}.cds-stat .big.warn{color:var(--warn)}.cds-stat .big.ok{color:var(--ok)}\n.cds-stat .lbl{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-top:var(--space-1);font-weight:600}\n.cds-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:var(--radius-pill);font-size:12px;font-weight:600;border:1px solid var(--border);color:var(--muted);background:var(--surface);font-family:var(--font-body)}\n.cds-chip.ok{color:var(--ok);border-color:var(--ok)}.cds-chip.warn{color:var(--warn);border-color:var(--warn)}.cds-chip.bad{color:var(--bad);border-color:var(--bad)}.cds-chip.info{color:var(--accent-ink);border-color:var(--accent)}\n.cds-chip.locked{border-style:dashed}\n.cds-bars{display:grid;gap:var(--space-3);font-family:var(--font-body)}\n.cds-bar-row{display:grid;grid-template-columns:minmax(120px,200px) 1fr 64px;gap:var(--space-3);align-items:center}\n.cds-bar-row .name{font-size:14px;color:var(--text)}\n.cds-bar-row .trk{height:8px;border-radius:var(--radius-pill);background:var(--border);overflow:hidden}\n.cds-bar-row .fill{display:block;height:100%;border-radius:var(--radius-pill);transition:width 300ms}\n.cds-bar-row .val{font-size:14px;font-weight:700;text-align:right;font-variant-numeric:tabular-nums;font-family:var(--font-display)}\n.cds-bar-row .val .cds-g-a,.cds-bar-row .val .cds-g-b,.cds-bar-row .val .cds-g-c,.cds-bar-row .val .cds-g-d,.cds-bar-row .val .cds-g-f{background-color:transparent}\n.cds-src{font-size:12px;color:var(--muted);margin-top:var(--space-2);font-family:var(--font-body)}\n@media (max-width:520px){.cds-bar-row{grid-template-columns:1fr 56px}.cds-bar-row .trk{grid-column:1 / -1;grid-row:2}}\n.cds-ded{list-style:none;margin:0;padding:0;font-family:var(--font-body)}\n.cds-ded li{display:grid;grid-template-columns:56px 1fr;gap:var(--space-3);padding:10px 0;border-top:1px solid var(--border);font-size:15px;color:var(--text)}\n.cds-ded li:first-child{border-top:0}\n.cds-ded .pts{font-family:var(--font-display);font-weight:700;color:var(--bad);font-variant-numeric:tabular-nums}\n.cds-ded .cap{display:block;font-size:12px;color:var(--warn);font-weight:600;margin-top:2px}\n.cds-ded .total{font-weight:700}\n.cds-ded .note{display:block;font-size:12px;color:var(--muted);margin-top:2px}\n.cds-ded li.excused .pts{color:var(--muted)}\n.cds-ba{display:flex;align-items:center;gap:var(--space-5);flex-wrap:wrap}\n.cds-ba .arrow{font-size:24px;color:var(--muted)}\n.cds-ba .lbl{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-weight:600;text-align:center;margin-bottom:var(--space-2)}\n.cds-tl{list-style:none;margin:0;padding:0;font-family:var(--font-body)}\n.cds-tl li{display:grid;grid-template-columns:64px 14px 1fr auto;gap:var(--space-3);align-items:start;padding:10px 0}\n.cds-tl .t{font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums;padding-top:2px}\n.cds-tl .dot{width:10px;height:10px;border-radius:var(--radius-pill);margin-top:6px;background:var(--border)}\n.cds-tl .dot.ok{background:var(--ok)}.cds-tl .dot.warn{background:var(--warn)}.cds-tl .dot.bad{background:var(--bad)}\n.cds-tl .what{font-size:15px;color:var(--text)}.cds-tl .what small{display:block;font-size:13px;color:var(--muted)}\n.cds-flow{display:grid;gap:0;font-family:var(--font-body)}\n.cds-node{display:grid;grid-template-columns:22px 1fr auto;gap:var(--space-3);align-items:center;position:relative;padding:8px 0}\n.cds-node .pin{width:14px;height:14px;border-radius:var(--radius-pill);border:2px solid var(--border);background:var(--surface);margin-left:4px;position:relative;z-index:1}\n.cds-node .pin.ok{border-color:var(--ok);background:var(--ok)}.cds-node .pin.warn{border-color:var(--warn);background:var(--surface)}.cds-node .pin.bad{border-color:var(--bad);background:var(--bad)}.cds-node .pin.wait{border-style:dashed;border-color:var(--muted)}\n.cds-node:not(:last-child)::after{content:"";position:absolute;left:10px;top:26px;bottom:-8px;width:2px;background:var(--border)}\n.cds-node .nm{font-size:15px;color:var(--text)}.cds-node .nm small{display:block;font-size:12px;color:var(--muted)}\n.cds-node.hit{background:var(--surface-sunk);border-radius:var(--radius-md)}\n.cds-fix{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-4);display:grid;gap:var(--space-3);font-family:var(--font-body)}\n.cds-fix h4{margin:0;font-family:var(--font-display);font-size:18px;color:var(--text)}\n.cds-fix p{margin:0;font-size:15px;color:var(--muted)}\n.cds-diff{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}\n@media (max-width:520px){.cds-diff{grid-template-columns:1fr}}\n.cds-diff div{background:var(--surface-sunk);border-radius:var(--radius-md);padding:10px 12px;font-size:14px;color:var(--text)}\n.cds-diff .k{display:block;font-size:11px;letter-spacing:.12em;text-transform:uppercase;font-weight:600;margin-bottom:4px}\n.cds-diff .was .k{color:var(--bad)}.cds-diff .now .k{color:var(--ok)}\n.cds-callout{margin:0;border:1px solid var(--border);background:var(--surface);border-radius:var(--radius-lg);padding:var(--space-4);font-family:var(--font-body);color:var(--text)}\n.cds-callout.quote{font-family:var(--font-display);font-size:20px;line-height:1.4;font-weight:600}\n.cds-callout.quote cite{display:block;font-family:var(--font-body);font-size:14px;font-weight:400;color:var(--muted);font-style:normal;margin-top:var(--space-2)}\n.cds-callout.bad{border-color:var(--bad)}.cds-callout.warn{border-color:var(--warn)}.cds-callout.info{border-color:var(--accent)}\n.cds-callout .ttl{display:block;font-weight:700;margin-bottom:4px}\n.cds-btn{display:inline-flex;align-items:center;gap:8px;padding:10px 18px;border-radius:var(--radius-pill);background:var(--primary);color:var(--on-primary);border:1px solid var(--primary);font-family:var(--font-body);font-weight:600;font-size:14px;cursor:pointer}\n.cds-btn.ghost{background:transparent;color:var(--text);border-color:var(--border)}\n.cds-btn:disabled{opacity:.55;cursor:default}\n.cds-btn:focus-visible,.cds-chip:focus-visible{outline:2px solid var(--focus);outline-offset:2px}\n.cds-sample{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-weight:600}\n@media (prefers-reduced-motion:reduce){.cds-ring .arc,.cds-bar-row .fill{transition:none}}\n.cds-matrix-wrap{overflow-x:auto}\n.cds-matrix{width:100%;border-collapse:collapse;font-family:var(--font-body);font-size:14px;color:var(--text)}\n.cds-matrix th,.cds-matrix td{padding:9px 10px;border-bottom:1px solid var(--border);text-align:center;vertical-align:middle}\n.cds-matrix thead th{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-weight:600;border-bottom:1px solid var(--text)}\n.cds-matrix tbody th{text-align:left;font-weight:600}\n.cds-matrix tbody th small{display:block;font-weight:400;font-size:12px;color:var(--muted)}\n.cds-matrix .hl{background:var(--surface-sunk)}\n.cds-matrix thead th.hl{color:var(--text)}\n.cds-yes{color:var(--ok);font-weight:700}.cds-no{color:var(--bad);font-weight:700}.cds-unk{color:var(--muted)}\n/* App screens: cockpit and Members Hub (guidelines/40-app-screens.md) */\n.cds-app{display:grid;grid-template-columns:248px minmax(0,1fr);min-height:100vh;background:var(--bg);color:var(--text);font-family:var(--font-body)}\n.cds-app-main{display:flex;flex-direction:column;min-width:0}\n.cds-app-body{padding:var(--space-7) var(--space-8);display:grid;gap:var(--space-6);align-content:start;max-width:1200px;width:100%;box-sizing:border-box}\n.cds-side{background:var(--nav-bg);border-right:1px solid var(--nav-line);padding:20px var(--space-4) 0;display:flex;flex-direction:column;gap:var(--space-5);position:sticky;top:0;height:100vh;box-sizing:border-box;overflow-y:auto}\n.cds-side-brand{display:flex;align-items:center;gap:10px;padding:0 var(--space-2);text-decoration:none}\n.cds-side-mark{width:30px;height:30px;border-radius:var(--radius-sm);background:var(--accent);color:var(--nav-bg);display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-weight:700;font-size:14px;flex:none}\n.cds-side-name{display:flex;flex-direction:column;font-family:var(--font-display);font-weight:700;font-size:15px;line-height:19px;color:var(--on-nav-active)}\n.cds-side-name small{font-family:var(--font-body);font-size:11px;line-height:14px;letter-spacing:.12em;text-transform:uppercase;color:var(--nav-label);font-weight:600}\n.cds-side-nav{display:flex;flex-direction:column;gap:12px}\n.cds-side-group{display:flex;flex-direction:column;gap:2px}\n.cds-side-label{font-size:11px;line-height:14px;letter-spacing:.14em;text-transform:uppercase;color:var(--nav-label);font-weight:600;padding:0 10px 6px}\n.cds-side-link{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);font-size:14px;line-height:20px;padding:5px 10px;border-radius:var(--radius-sm);color:var(--nav-text);text-decoration:none}\n.cds-side-link:hover{color:var(--on-nav-active);background:var(--nav-active)}\n.cds-side-link[aria-current="page"]{background:var(--nav-active);color:var(--on-nav-active);font-weight:600}\n.cds-side-link:focus-visible,.cds-side-brand:focus-visible,.cds-side-menu:focus-visible{outline:2px solid var(--nav-focus);outline-offset:2px}\n.cds-side-link.sub{padding:6px 10px 6px 22px;font-size:13px;line-height:18px}\n.cds-side-client{display:block;text-transform:none;letter-spacing:0;font-size:12px;line-height:16px;font-weight:600;color:var(--nav-text);margin-top:2px}\n.cds-size{display:inline-flex;align-items:center;border:1px solid var(--border);border-radius:var(--radius-pill);overflow:hidden;background:var(--surface);font-family:var(--font-body)}\n.cds-size button{border:0;background:var(--surface);color:var(--text);padding:6px 12px;font-family:var(--font-body);font-size:13px;line-height:18px;font-weight:600;cursor:pointer}\n.cds-size button:hover{background:var(--surface-sunk)}\n.cds-size button:disabled{opacity:.4;cursor:default}\n.cds-size button:focus-visible{outline:2px solid var(--focus);outline-offset:-2px}\n.cds-size output{padding:6px 4px;font-size:13px;line-height:18px;color:var(--muted);font-variant-numeric:tabular-nums;min-width:40px;text-align:center}\n.cds-side-badge{font-size:12px;font-weight:700;color:var(--nav-badge);font-variant-numeric:tabular-nums}\n.cds-side-foot{margin-top:auto;position:sticky;bottom:0;background:var(--nav-bg);padding:12px 10px 20px;border-top:1px solid var(--nav-line);font-size:12px;line-height:1.5;color:var(--nav-label)}\n.cds-side-toggle{position:absolute;opacity:0;pointer-events:none}\n.cds-side-menu{display:none}\n.cds-top{height:60px;box-sizing:border-box;padding:0 var(--space-7);display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);background:var(--surface);border-bottom:1px solid var(--border)}\n.cds-crumbs{display:flex;align-items:center;gap:6px;font-size:14px;color:var(--muted);min-width:0;white-space:nowrap;overflow:hidden}\n.cds-crumbs > *{flex:none}\n.cds-crumbs > :last-child{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis}\n.cds-crumbs a{color:var(--muted);text-decoration:none}.cds-crumbs a:hover{color:var(--text)}\n.cds-crumbs [aria-current="page"]{color:var(--text);font-weight:600}\n.cds-top-actions{display:flex;align-items:center;gap:10px;flex:none}\n.cds-page-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:var(--space-4) var(--space-5)}\n.cds-page-head .txt{display:grid;gap:10px;min-width:0;flex:1 1 420px}\n.cds-page-head > :not(.txt){flex:0 1 auto;max-width:100%;margin-left:auto}\n.cds-kicker{font-size:12px;line-height:16px;letter-spacing:.2em;text-transform:uppercase;color:var(--accent-ink);font-weight:600}\n.cds-page-title{margin:0;font-family:var(--font-display);font-size:36px;line-height:42px;font-weight:700;letter-spacing:-.01em;color:var(--text)}\n.cds-page-sub{margin:0;font-size:16px;line-height:1.6;color:var(--muted)}\n.cds-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-5);display:grid;gap:var(--space-4);align-content:start;min-width:0}\n.cds-panel-head{display:flex;justify-content:space-between;align-items:flex-end;gap:var(--space-3);flex-wrap:wrap}\n.cds-panel-head .txt{display:grid;gap:4px}\n.cds-panel-label{font-size:11px;line-height:14px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent-ink);font-weight:600}\n.cds-panel-title{margin:0;font-family:var(--font-display);font-size:18px;line-height:24px;font-weight:700;color:var(--text)}\n.cds-panel-meta{font-size:13px;color:var(--muted)}\n.cds-panel-meta a,.cds-link{color:var(--accent-ink);font-weight:600;text-decoration:none}\n.cds-panel-meta a:hover,.cds-link:hover{color:var(--text)}\n.cds-panel p{margin:0;font-size:15px;line-height:1.55;color:var(--muted)}\n.cds-grid{display:grid;gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}\n.cds-grid.two{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);align-items:start}\n.cds-list{list-style:none;margin:0;padding:0;display:grid}\n.cds-list li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--space-3);align-items:center;padding:12px 0;border-top:1px solid var(--border)}\n.cds-list li:first-child{border-top:0;padding-top:0}\n.cds-list .ttl{font-size:15px;font-weight:600;color:var(--text)}\n.cds-list .sub{display:block;font-size:13px;font-weight:400;color:var(--muted);margin-top:2px}\n.cds-list .end{display:flex;align-items:center;gap:var(--space-2)}\n.cds-field{display:grid;gap:6px;font-family:var(--font-body)}\n.cds-field > label,.cds-field > .lbl{font-size:14px;font-weight:600;color:var(--text)}\n.cds-field .hint{font-size:13px;line-height:1.5;color:var(--muted)}\n.cds-field .err{font-size:13px;line-height:1.5;color:var(--bad);font-weight:600}\n.cds-input,.cds-select,.cds-textarea{width:100%;box-sizing:border-box;font-family:var(--font-body);font-size:15px;line-height:22px;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:9px 12px}\n.cds-textarea{min-height:96px;resize:vertical}\n.cds-input::placeholder,.cds-textarea::placeholder{color:var(--muted)}\n.cds-input:focus-visible,.cds-select:focus-visible,.cds-textarea:focus-visible{outline:2px solid var(--focus);outline-offset:1px;border-color:var(--focus)}\n.cds-field.invalid .cds-input,.cds-field.invalid .cds-select,.cds-field.invalid .cds-textarea{border-color:var(--bad)}\n.cds-check{display:grid;grid-template-columns:20px 1fr;gap:10px;align-items:start;font-size:15px;line-height:1.5;color:var(--text);cursor:pointer}\n.cds-check input{width:18px;height:18px;margin:2px 0 0;accent-color:var(--primary)}\n.cds-check small{display:block;font-size:13px;color:var(--muted)}\n.cds-table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface)}\n.cds-table{width:100%;border-collapse:collapse;font-family:var(--font-body);font-size:14px;color:var(--text)}\n.cds-table th,.cds-table td{padding:11px var(--space-4);border-bottom:1px solid var(--border);text-align:left;vertical-align:middle}\n.cds-table thead th{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-weight:600;background:var(--surface-sunk);white-space:nowrap}\n.cds-table tbody tr:last-child td,.cds-table tbody tr:last-child th{border-bottom:0}\n.cds-table tbody th{font-weight:600}\n.cds-table .num{text-align:right;font-variant-numeric:tabular-nums}\n.cds-table td small{display:block;font-size:12px;color:var(--muted)}\n.cds-tabs{display:flex;gap:var(--space-5);border-bottom:1px solid var(--border);overflow-x:auto}\n.cds-tab{font-size:14px;line-height:20px;padding:10px 0;color:var(--muted);text-decoration:none;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;display:inline-flex;gap:6px;align-items:center}\n.cds-tab:hover{color:var(--text)}\n.cds-tab[aria-current="page"]{color:var(--text);font-weight:600;border-bottom-color:var(--accent)}\n.cds-tab .n{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}\n.cds-tab:focus-visible{outline:2px solid var(--focus);outline-offset:2px}\n.cds-empty{background:var(--surface-sunk);border-radius:var(--radius-lg);padding:var(--space-6) var(--space-5);display:grid;gap:var(--space-2);justify-items:start}\n.cds-empty h3{margin:0;font-family:var(--font-display);font-size:18px;line-height:24px;color:var(--text)}\n.cds-empty p{margin:0;font-size:15px;line-height:1.55;color:var(--muted);max-width:56ch}\n.cds-empty .cds-btn{margin-top:var(--space-2)}\n.cds-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}\n.cds-more > summary,.cds-details > summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:6px}\n.cds-more > summary::-webkit-details-marker,.cds-details > summary::-webkit-details-marker{display:none}\n.cds-more > summary{font-size:14px;line-height:20px;font-weight:600;color:var(--accent-ink);padding:8px 0}\n.cds-more > summary::after{content:"+";font-weight:700}\n.cds-more[open] > summary::after{content:"\\2212"}\n.cds-details > summary{font-size:13px;line-height:18px;color:var(--muted)}\n.cds-details > summary::before{content:"\\25B8"}\n.cds-details[open] > summary::before{content:"\\25BE"}\n.cds-more > summary:hover,.cds-details > summary:hover{color:var(--text)}\n.cds-more > summary:focus-visible,.cds-details > summary:focus-visible{outline:2px solid var(--focus);outline-offset:2px}\n.cds-details[open] > summary{margin-bottom:var(--space-2)}\nmark.cds-hl{background:var(--surface-sunk);color:var(--bad);font-weight:700;padding:0 2px;border-radius:var(--radius-sm)}\n.cds-callout .cds-actions{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-3)}\n.cds-progress{display:block;height:8px;border-radius:var(--radius-pill);background:var(--border);overflow:hidden}\n.cds-progress > i{display:block;height:100%;border-radius:var(--radius-pill);background:var(--accent);transition:width 300ms}\n.cds-progress.ok > i{background:var(--ok)}.cds-progress.warn > i{background:var(--warn)}\n.cds-kv{display:grid;grid-template-columns:minmax(120px,200px) minmax(0,1fr);margin:0;font-family:var(--font-body)}\n.cds-kv dt,.cds-kv dd{padding:10px 0;border-top:1px solid var(--border);margin:0}\n.cds-kv dt:first-of-type,.cds-kv dt:first-of-type + dd{border-top:0}\n.cds-kv dt{font-size:13px;line-height:20px;color:var(--muted);padding-right:var(--space-3)}\n.cds-kv dd{font-size:15px;line-height:1.55;color:var(--text)}\n.cds-jump{display:flex;flex-wrap:wrap;gap:var(--space-2)}\n.cds-jump a{font-size:13px;line-height:18px;padding:6px 12px;border:1px solid var(--border);border-radius:var(--radius-pill);color:var(--text);background:var(--surface);text-decoration:none}\n.cds-jump a:hover{border-color:var(--text)}\n.cds-jump a[aria-current]{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}\n.cds-jump a:focus-visible{outline:2px solid var(--focus);outline-offset:2px}\n@media (max-width:520px){.cds-kv{grid-template-columns:minmax(0,1fr)}.cds-kv dd{border-top:0;padding-top:0}}\n@media (prefers-reduced-motion:reduce){.cds-progress > i{transition:none}}\n.cds-stats{display:grid;gap:var(--space-3);grid-template-columns:repeat(auto-fill,minmax(180px,1fr))}\n.cds-stats .cds-stat{min-width:0}\n.cds-doors{display:grid;gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}\n.cds-door{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-5) var(--space-5) 18px;display:flex;flex-direction:column;gap:10px;min-width:0}\n.cds-door .head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:var(--space-2)}\n.cds-door .head .lbl{min-width:0}\n.cds-door .head .cds-chip{flex:none}\n.cds-door .lbl{font-size:11px;line-height:14px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-weight:600}\n.cds-door .v{font-family:var(--font-display);font-size:36px;line-height:40px;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums;overflow-wrap:break-word}\n.cds-door .v.name{font-size:20px;line-height:26px}\n.cds-door p{margin:0;font-size:14px;line-height:1.5;color:var(--muted)}\n.cds-door .cds-link{margin-top:auto;font-size:14px}\n.cds-door.new{background:var(--surface-sunk);border-style:dashed}\n.cds-callout.say{font-family:var(--font-body);font-size:16px;line-height:1.5;font-weight:600;background:var(--surface-sunk);border-color:var(--surface-sunk)}\n.cds-search{display:flex;align-items:center;gap:var(--space-2);background:var(--surface-sunk);border:1px solid var(--border);border-radius:var(--radius-pill);padding:0 14px;height:36px;min-width:0;max-width:420px;flex:1 1 240px}\n.cds-search::before{content:"";width:12px;height:12px;border:2px solid var(--muted);border-radius:var(--radius-pill);flex:none;box-sizing:border-box}\n.cds-search input{flex:1;min-width:0;border:0;background:transparent;font-family:var(--font-body);font-size:14px;line-height:20px;color:var(--text);padding:0}\n.cds-search input::placeholder{color:var(--muted)}\n.cds-search input:focus{outline:none}\n.cds-search:focus-within{border-color:var(--focus);outline:2px solid var(--focus);outline-offset:1px}\n.cds-avatar{width:36px;height:36px;border-radius:var(--radius-pill);background:var(--primary);color:var(--on-primary);display:inline-flex;align-items:center;justify-content:center;font-family:var(--font-display);font-weight:700;font-size:13px;flex:none;overflow:hidden}\n.cds-avatar img{width:100%;height:100%;object-fit:cover}\n.cds-avatar.sm{width:28px;height:28px;font-size:11px}\n.cds-author{display:flex;align-items:center;gap:var(--space-3);font-family:var(--font-body)}\n.cds-author .who{display:grid;gap:2px;min-width:0}\n.cds-author .name{font-size:15px;font-weight:600;color:var(--text)}\n.cds-author .meta{font-size:13px;color:var(--muted)}\n.cds-steps{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-4);counter-reset:cds-step;font-family:var(--font-body)}\n.cds-steps > li{display:grid;grid-template-columns:32px minmax(0,1fr);gap:var(--space-3);align-items:start;counter-increment:cds-step}\n.cds-steps > li::before{content:counter(cds-step);width:28px;height:28px;border-radius:var(--radius-pill);background:var(--surface-sunk);border:1px solid var(--border);color:var(--text);font-family:var(--font-display);font-weight:700;font-size:13px;display:flex;align-items:center;justify-content:center;font-variant-numeric:tabular-nums}\n.cds-steps > li.done::before{background:var(--ok);border-color:var(--ok);color:var(--on-primary)}\n.cds-steps .ttl{font-size:15px;font-weight:600;color:var(--text);line-height:28px}\n.cds-steps .sub{display:block;font-size:14px;line-height:1.55;color:var(--muted);margin-top:2px}\n.cds-code{margin:0;background:var(--nav-bg);color:var(--nav-text);border-radius:var(--radius-md);padding:var(--space-4);font-family:var(--font-mono);font-size:13px;line-height:1.6;overflow-x:auto;white-space:pre}\n.cds-code .cm{color:var(--nav-label)}\ncode.cds-code-inline{font-family:var(--font-mono);font-size:13px;background:var(--surface-sunk);border:1px solid var(--border);border-radius:var(--radius-sm);padding:1px 6px;color:var(--text)}\n.cds-figure{margin:0;display:grid;gap:var(--space-2)}\n.cds-figure img,.cds-figure video{display:block;width:100%;height:auto;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-sunk)}\n.cds-figure figcaption{font-size:13px;line-height:1.5;color:var(--muted)}\n@media (max-width:900px){\n .cds-app{grid-template-columns:minmax(0,1fr);grid-template-rows:auto 1fr;align-content:start}\n .cds-side{position:static;height:auto;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-3);padding:12px var(--space-4)}\n .cds-side-menu{display:inline-flex;align-items:center;font-size:14px;font-weight:600;color:var(--on-nav-active);border:1px solid var(--nav-line);border-radius:var(--radius-pill);padding:6px 14px;cursor:pointer}\n .cds-side-nav,.cds-side-foot{display:none;flex-basis:100%}\n .cds-side-toggle:checked ~ .cds-side-nav,.cds-side-toggle:checked ~ .cds-side-foot{display:flex}\n .cds-side-toggle:focus-visible + .cds-side-menu{outline:2px solid var(--nav-focus);outline-offset:2px}\n .cds-top{padding:0 var(--space-4)}\n .cds-app-body{padding:var(--space-5) var(--space-4)}\n .cds-page-title{font-size:28px;line-height:34px}\n .cds-page-head{flex-wrap:wrap}\n .cds-page-head > :not(.txt){flex:1 1 100%;min-width:0;max-width:100%;margin-left:0}\n .cds-page-head .cds-btn{white-space:normal}\n .cds-page-head .cds-select,.cds-page-head .cds-input{max-width:100%}\n .cds-grid.two{grid-template-columns:minmax(0,1fr)}\n}\n@media (max-width:520px){.cds-top-actions .cds-btn.ghost{display:none}.cds-list li{grid-template-columns:minmax(0,1fr)}}\n/* Print: whole cards, headings stay with their content, no split paragraphs (guidelines/30-print.md) */\n.cds-keep{break-inside:avoid;page-break-inside:avoid}\n.cds-keep-next{break-after:avoid;page-break-after:avoid}\n.cds-page-break{break-before:page;page-break-before:always}\n@media print{\n .cds-fix > .cds-row:last-child{display:none!important}\n .cds-card,.cds-stat,.cds-fix,.cds-callout,.cds-ring,.cds-ba,.cds-bar-row,.cds-ded li,.cds-tl li,.cds-node,.cds-diff div,.cds-keep,table,tr,figure,blockquote{break-inside:avoid;page-break-inside:avoid}\n h1,h2,h3,h4,h5,.cds-keep-next,.label{break-after:avoid;page-break-after:avoid}\n p,li,dd{orphans:3;widows:3}\n .cds-no-print,nav,.cds-btn,.cds-side,.cds-top{display:none!important}\n .cds-app{display:block}\n .cds-ring .arc,.cds-bar-row .fill{transition:none}\n body{background:var(--surface);-webkit-print-color-adjust:exact;print-color-adjust:exact}\n}\n@page{size:letter;margin:0.6in 0.6in 0.7in}\n/* A list inside a narrow card stacks its chip under the text, whatever the page zoom (container query). */\n.cds-panel{container-type:inline-size}\n@container (max-width:380px){.cds-list li{grid-template-columns:minmax(0,1fr)}.cds-list .end{justify-content:flex-start}}\n/* Text-size narrow mode */\n/* The TextSize control scales the page with zoom, which media queries do not see. The cockpit frame adds\n .cds-narrow to <html> when the room left after scaling is under 900px, and .cds-tiny under 520px,\n and these repeat the narrow rules for that case (generated from the media blocks above). */\nhtml.cds-narrow .cds-app{grid-template-columns:minmax(0,1fr);grid-template-rows:auto 1fr;align-content:start}\nhtml.cds-narrow .cds-side{position:static;height:auto;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-3);padding:12px var(--space-4)}\nhtml.cds-narrow .cds-side-menu{display:inline-flex;align-items:center;font-size:14px;font-weight:600;color:var(--on-nav-active);border:1px solid var(--nav-line);border-radius:var(--radius-pill);padding:6px 14px;cursor:pointer}\nhtml.cds-narrow .cds-side-nav,html.cds-narrow .cds-side-foot{display:none;flex-basis:100%}\nhtml.cds-narrow .cds-side-toggle:checked ~ .cds-side-nav,html.cds-narrow .cds-side-toggle:checked ~ .cds-side-foot{display:flex}\nhtml.cds-narrow .cds-side-toggle:focus-visible + .cds-side-menu{outline:2px solid var(--nav-focus);outline-offset:2px}\nhtml.cds-narrow .cds-top{padding:0 var(--space-4)}\nhtml.cds-narrow .cds-app-body{padding:var(--space-5) var(--space-4)}\nhtml.cds-narrow .cds-page-title{font-size:28px;line-height:34px}\nhtml.cds-narrow .cds-page-head{flex-wrap:wrap}\nhtml.cds-narrow .cds-page-head > :not(.txt){flex:1 1 100%;min-width:0;max-width:100%;margin-left:0}\nhtml.cds-narrow .cds-page-head .cds-btn{white-space:normal}\nhtml.cds-narrow .cds-page-head .cds-select,html.cds-narrow .cds-page-head .cds-input{max-width:100%}\nhtml.cds-narrow .cds-grid.two{grid-template-columns:minmax(0,1fr)}\nhtml.cds-tiny .cds-bar-row{grid-template-columns:1fr 56px}\nhtml.cds-tiny .cds-bar-row .trk{grid-column:1 / -1;grid-row:2}\nhtml.cds-tiny .cds-diff{grid-template-columns:1fr}\nhtml.cds-tiny .cds-kv{grid-template-columns:minmax(0,1fr)}\nhtml.cds-tiny .cds-kv dd{border-top:0;padding-top:0}\nhtml.cds-tiny .cds-top-actions .cds-btn.ghost{display:none}\nhtml.cds-tiny .cds-list li{grid-template-columns:minmax(0,1fr)}\n';
|
|
29275
|
+
DS_BUNDLE_CSS = '.cds-row{display:flex;flex-wrap:wrap;gap:var(--space-3);align-items:center}\n.cds-stack{display:grid;gap:var(--space-3)}\n.cds-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-4)}\n.cds-num{font-variant-numeric:tabular-nums}\n.cds-ring{display:inline-grid;justify-items:center;gap:var(--space-2);font-family:var(--font-display)}\n.cds-ring svg{display:block}\n.cds-ring .trk{fill:none;stroke:var(--border)}\n.cds-ring .arc{fill:none;stroke-linecap:round;transition:stroke-dashoffset 300ms}\n.cds-ring .letter{font-weight:700;letter-spacing:-0.02em}\n.cds-ring .out{fill:var(--muted);font-size:11px;font-variant-numeric:tabular-nums}\n.cds-ring .cap{font-family:var(--font-body);font-size:14px;color:var(--muted);text-align:center;max-width:220px}\n.cds-g-a{stroke:var(--grade-a);fill:var(--grade-a);color:var(--grade-a);background-color:var(--grade-a)}\n.cds-g-b{stroke:var(--grade-b);fill:var(--grade-b);color:var(--grade-b);background-color:var(--grade-b)}\n.cds-g-c{stroke:var(--grade-c);fill:var(--grade-c);color:var(--grade-c);background-color:var(--grade-c)}\n.cds-g-d{stroke:var(--grade-d);fill:var(--grade-d);color:var(--grade-d);background-color:var(--grade-d)}\n.cds-g-f{stroke:var(--grade-f);fill:var(--grade-f);color:var(--grade-f);background-color:var(--grade-f)}\n.cds-g-incomplete{stroke:var(--muted);fill:var(--muted);color:var(--muted)}\n.cds-ring .cds-g-a,.cds-ring .cds-g-b,.cds-ring .cds-g-c,.cds-ring .cds-g-d,.cds-ring .cds-g-f{background-color:transparent}\n.cds-ring text.cds-g-a,.cds-ring text.cds-g-b,.cds-ring text.cds-g-c,.cds-ring text.cds-g-d,.cds-ring text.cds-g-f{stroke:none}\n.cds-stat{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-lg);padding:14px var(--space-4);min-width:140px}\n.cds-stat .big{font-family:var(--font-display);font-weight:700;font-size:20px;line-height:26px;color:var(--text);font-variant-numeric:tabular-nums}\n.cds-stat .big.bad{color:var(--bad)}.cds-stat .big.warn{color:var(--warn)}.cds-stat .big.ok{color:var(--ok)}\n.cds-stat .lbl{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-top:var(--space-1);font-weight:600}\n.cds-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:var(--radius-pill);font-size:12px;font-weight:600;border:1px solid var(--border);color:var(--muted);background:var(--surface);font-family:var(--font-body)}\n.cds-chip.ok{color:var(--ok);border-color:var(--ok)}.cds-chip.warn{color:var(--warn);border-color:var(--warn)}.cds-chip.bad{color:var(--bad);border-color:var(--bad)}.cds-chip.info{color:var(--accent-ink);border-color:var(--accent)}\n.cds-chip.locked{border-style:dashed}\n.cds-bars{display:grid;gap:var(--space-3);font-family:var(--font-body)}\n.cds-bar-row{display:grid;grid-template-columns:minmax(120px,200px) 1fr 64px;gap:var(--space-3);align-items:center}\n.cds-bar-row .name{font-size:14px;color:var(--text)}\n.cds-bar-row .trk{height:8px;border-radius:var(--radius-pill);background:var(--border);overflow:hidden}\n.cds-bar-row .fill{display:block;height:100%;border-radius:var(--radius-pill);transition:width 300ms}\n.cds-bar-row .val{font-size:14px;font-weight:700;text-align:right;font-variant-numeric:tabular-nums;font-family:var(--font-display)}\n.cds-bar-row .val .cds-g-a,.cds-bar-row .val .cds-g-b,.cds-bar-row .val .cds-g-c,.cds-bar-row .val .cds-g-d,.cds-bar-row .val .cds-g-f{background-color:transparent}\n.cds-src{font-size:12px;color:var(--muted);margin-top:var(--space-2);font-family:var(--font-body)}\n@media (max-width:520px){.cds-bar-row{grid-template-columns:1fr 56px}.cds-bar-row .trk{grid-column:1 / -1;grid-row:2}}\n.cds-ded{list-style:none;margin:0;padding:0;font-family:var(--font-body)}\n.cds-ded li{display:grid;grid-template-columns:56px 1fr;gap:var(--space-3);padding:10px 0;border-top:1px solid var(--border);font-size:15px;color:var(--text)}\n.cds-ded li:first-child{border-top:0}\n.cds-ded .pts{font-family:var(--font-display);font-weight:700;color:var(--bad);font-variant-numeric:tabular-nums}\n.cds-ded .cap{display:block;font-size:12px;color:var(--warn);font-weight:600;margin-top:2px}\n.cds-ded .total{font-weight:700}\n.cds-ded .note{display:block;font-size:12px;color:var(--muted);margin-top:2px}\n.cds-ded li.excused .pts{color:var(--muted)}\n.cds-ba{display:flex;align-items:center;gap:var(--space-5);flex-wrap:wrap}\n.cds-ba .arrow{font-size:24px;color:var(--muted)}\n.cds-ba .lbl{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-weight:600;text-align:center;margin-bottom:var(--space-2)}\n.cds-tl{list-style:none;margin:0;padding:0;font-family:var(--font-body)}\n.cds-tl li{display:grid;grid-template-columns:64px 14px 1fr auto;gap:var(--space-3);align-items:start;padding:10px 0}\n.cds-tl .t{font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums;padding-top:2px}\n.cds-tl .dot{width:10px;height:10px;border-radius:var(--radius-pill);margin-top:6px;background:var(--border)}\n.cds-tl .dot.ok{background:var(--ok)}.cds-tl .dot.warn{background:var(--warn)}.cds-tl .dot.bad{background:var(--bad)}\n.cds-tl .what{font-size:15px;color:var(--text)}.cds-tl .what small{display:block;font-size:13px;color:var(--muted)}\n.cds-flow{display:grid;gap:0;font-family:var(--font-body)}\n.cds-node{display:grid;grid-template-columns:22px 1fr auto;gap:var(--space-3);align-items:center;position:relative;padding:8px 0}\n.cds-node .pin{width:14px;height:14px;border-radius:var(--radius-pill);border:2px solid var(--border);background:var(--surface);margin-left:4px;position:relative;z-index:1}\n.cds-node .pin.ok{border-color:var(--ok);background:var(--ok)}.cds-node .pin.warn{border-color:var(--warn);background:var(--surface)}.cds-node .pin.bad{border-color:var(--bad);background:var(--bad)}.cds-node .pin.wait{border-style:dashed;border-color:var(--muted)}\n.cds-node:not(:last-child)::after{content:"";position:absolute;left:10px;top:26px;bottom:-8px;width:2px;background:var(--border)}\n.cds-node .nm{font-size:15px;color:var(--text)}.cds-node .nm small{display:block;font-size:12px;color:var(--muted)}\n.cds-node.hit{background:var(--surface-sunk);border-radius:var(--radius-md)}\n.cds-fix{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-4);display:grid;gap:var(--space-3);font-family:var(--font-body)}\n.cds-fix h4{margin:0;font-family:var(--font-display);font-size:18px;color:var(--text)}\n.cds-fix p{margin:0;font-size:15px;color:var(--muted)}\n.cds-diff{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}\n@media (max-width:520px){.cds-diff{grid-template-columns:1fr}}\n.cds-diff div{background:var(--surface-sunk);border-radius:var(--radius-md);padding:10px 12px;font-size:14px;color:var(--text)}\n.cds-diff .k{display:block;font-size:11px;letter-spacing:.12em;text-transform:uppercase;font-weight:600;margin-bottom:4px}\n.cds-diff .was .k{color:var(--bad)}.cds-diff .now .k{color:var(--ok)}\n.cds-callout{margin:0;border:1px solid var(--border);background:var(--surface);border-radius:var(--radius-lg);padding:var(--space-4);font-family:var(--font-body);color:var(--text)}\n.cds-callout.quote{font-family:var(--font-display);font-size:20px;line-height:1.4;font-weight:600}\n.cds-callout.quote cite{display:block;font-family:var(--font-body);font-size:14px;font-weight:400;color:var(--muted);font-style:normal;margin-top:var(--space-2)}\n.cds-callout.bad{border-color:var(--bad)}.cds-callout.warn{border-color:var(--warn)}.cds-callout.info{border-color:var(--accent)}\n.cds-callout .ttl{display:block;font-weight:700;margin-bottom:4px}\n.cds-btn{display:inline-flex;align-items:center;gap:8px;padding:10px 18px;border-radius:var(--radius-pill);background:var(--primary);color:var(--on-primary);border:1px solid var(--primary);font-family:var(--font-body);font-weight:600;font-size:14px;cursor:pointer}\n.cds-btn.ghost{background:transparent;color:var(--text);border-color:var(--border)}\n.cds-btn:disabled{opacity:.55;cursor:default}\n.cds-btn:focus-visible,.cds-chip:focus-visible{outline:2px solid var(--focus);outline-offset:2px}\n.cds-sample{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-weight:600}\n@media (prefers-reduced-motion:reduce){.cds-ring .arc,.cds-bar-row .fill{transition:none}}\n.cds-matrix-wrap{overflow-x:auto}\n.cds-matrix{width:100%;border-collapse:collapse;font-family:var(--font-body);font-size:14px;color:var(--text)}\n.cds-matrix th,.cds-matrix td{padding:9px 10px;border-bottom:1px solid var(--border);text-align:center;vertical-align:middle}\n.cds-matrix thead th{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-weight:600;border-bottom:1px solid var(--text)}\n.cds-matrix tbody th{text-align:left;font-weight:600}\n.cds-matrix tbody th small{display:block;font-weight:400;font-size:12px;color:var(--muted)}\n.cds-matrix .hl{background:var(--surface-sunk)}\n.cds-matrix thead th.hl{color:var(--text)}\n.cds-yes{color:var(--ok);font-weight:700}.cds-no{color:var(--bad);font-weight:700}.cds-unk{color:var(--muted)}\n/* App screens: cockpit and Members Hub (guidelines/40-app-screens.md) */\n.cds-app{display:grid;grid-template-columns:248px minmax(0,1fr);min-height:100vh;background:var(--bg);color:var(--text);font-family:var(--font-body)}\n.cds-app-main{display:flex;flex-direction:column;min-width:0}\n.cds-app-body{padding:var(--space-7) var(--space-8);display:grid;gap:var(--space-6);align-content:start;max-width:1200px;width:100%;box-sizing:border-box}\n.cds-side{background:var(--nav-bg);border-right:1px solid var(--nav-line);padding:20px var(--space-4) 0;display:flex;flex-direction:column;gap:var(--space-5);position:sticky;top:0;height:100vh;box-sizing:border-box;overflow-y:auto}\n.cds-side-brand{display:flex;align-items:center;gap:10px;padding:0 var(--space-2);text-decoration:none}\n.cds-side-mark{width:30px;height:30px;border-radius:var(--radius-sm);background:var(--accent);color:var(--nav-bg);display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-weight:700;font-size:14px;flex:none}\n.cds-side-name{display:flex;flex-direction:column;font-family:var(--font-display);font-weight:700;font-size:15px;line-height:19px;color:var(--on-nav-active)}\n.cds-side-name small{font-family:var(--font-body);font-size:11px;line-height:14px;letter-spacing:.12em;text-transform:uppercase;color:var(--nav-label);font-weight:600}\n.cds-side-nav{display:flex;flex-direction:column;gap:12px}\n.cds-side-group{display:flex;flex-direction:column;gap:2px}\n.cds-side-label{font-size:11px;line-height:14px;letter-spacing:.14em;text-transform:uppercase;color:var(--nav-label);font-weight:600;padding:0 10px 6px}\n.cds-side-link{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);font-size:14px;line-height:20px;padding:5px 10px;border-radius:var(--radius-sm);color:var(--nav-text);text-decoration:none}\n.cds-side-link:hover{color:var(--on-nav-active);background:var(--nav-active)}\n.cds-side-link[aria-current="page"]{background:var(--nav-active);color:var(--on-nav-active);font-weight:600}\n.cds-side-link:focus-visible,.cds-side-brand:focus-visible,.cds-side-menu:focus-visible{outline:2px solid var(--nav-focus);outline-offset:2px}\n.cds-side-link.sub{padding:6px 10px 6px 22px;font-size:13px;line-height:18px}\n.cds-side-client{display:block;text-transform:none;letter-spacing:0;font-size:12px;line-height:16px;font-weight:600;color:var(--nav-text);margin-top:2px}\n.cds-size{display:inline-flex;align-items:center;border:1px solid var(--border);border-radius:var(--radius-pill);overflow:hidden;background:var(--surface);font-family:var(--font-body)}\n.cds-size button{border:0;background:var(--surface);color:var(--text);padding:6px 12px;font-family:var(--font-body);font-size:13px;line-height:18px;font-weight:600;cursor:pointer}\n.cds-size button:hover{background:var(--surface-sunk)}\n.cds-size button:disabled{opacity:.4;cursor:default}\n.cds-size button:focus-visible{outline:2px solid var(--focus);outline-offset:-2px}\n.cds-size output{padding:6px 4px;font-size:13px;line-height:18px;color:var(--muted);font-variant-numeric:tabular-nums;min-width:40px;text-align:center}\n.cds-side-badge{font-size:12px;font-weight:700;color:var(--nav-badge);font-variant-numeric:tabular-nums}\n.cds-side-foot{margin-top:auto;position:sticky;bottom:0;background:var(--nav-bg);padding:12px 10px 20px;border-top:1px solid var(--nav-line);font-size:12px;line-height:1.5;color:var(--nav-label)}\n.cds-side-toggle{position:absolute;opacity:0;pointer-events:none}\n.cds-side-menu{display:none}\n.cds-top{height:60px;box-sizing:border-box;padding:0 var(--space-7);display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);background:var(--surface);border-bottom:1px solid var(--border)}\n.cds-crumbs{display:flex;align-items:center;gap:6px;font-size:14px;color:var(--muted);min-width:0;white-space:nowrap;overflow:hidden}\n.cds-crumbs > *{flex:none}\n.cds-crumbs > :last-child{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis}\n.cds-crumbs a{color:var(--muted);text-decoration:none}.cds-crumbs a:hover{color:var(--text)}\n.cds-crumbs [aria-current="page"]{color:var(--text);font-weight:600}\n.cds-top-actions{display:flex;align-items:center;gap:10px;flex:none}\n.cds-page-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:var(--space-4) var(--space-5)}\n.cds-page-head .txt{display:grid;gap:10px;min-width:0;flex:1 1 420px}\n.cds-page-head > :not(.txt){flex:0 1 auto;max-width:100%;margin-left:auto}\n.cds-kicker{font-size:12px;line-height:16px;letter-spacing:.2em;text-transform:uppercase;color:var(--accent-ink);font-weight:600}\n.cds-page-title{margin:0;font-family:var(--font-display);font-size:36px;line-height:42px;font-weight:700;letter-spacing:-.01em;color:var(--text)}\n.cds-page-sub{margin:0;font-size:16px;line-height:1.6;color:var(--muted)}\n.cds-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-5);display:grid;gap:var(--space-4);align-content:start;min-width:0}\n.cds-panel-head{display:flex;justify-content:space-between;align-items:flex-end;gap:var(--space-3);flex-wrap:wrap}\n.cds-panel-head .txt{display:grid;gap:4px}\n.cds-panel-label{font-size:11px;line-height:14px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent-ink);font-weight:600}\n.cds-panel-title{margin:0;font-family:var(--font-display);font-size:18px;line-height:24px;font-weight:700;color:var(--text)}\n.cds-panel-meta{font-size:13px;color:var(--muted)}\n.cds-panel-meta a,.cds-link{color:var(--accent-ink);font-weight:600;text-decoration:none}\n.cds-panel-meta a:hover,.cds-link:hover{color:var(--text)}\n.cds-panel p{margin:0;font-size:15px;line-height:1.55;color:var(--muted)}\n.cds-grid{display:grid;gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}\n.cds-grid.two{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);align-items:start}\n.cds-list{list-style:none;margin:0;padding:0;display:grid}\n.cds-list li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--space-3);align-items:center;padding:12px 0;border-top:1px solid var(--border)}\n.cds-list li:first-child{border-top:0;padding-top:0}\n.cds-list .ttl{font-size:15px;font-weight:600;color:var(--text)}\n.cds-list .sub{display:block;font-size:13px;font-weight:400;color:var(--muted);margin-top:2px}\n.cds-list .end{display:flex;align-items:center;gap:var(--space-2)}\n.cds-field{display:grid;gap:6px;font-family:var(--font-body)}\n.cds-field > label,.cds-field > .lbl{font-size:14px;font-weight:600;color:var(--text)}\n.cds-field .hint{font-size:13px;line-height:1.5;color:var(--muted)}\n.cds-field .err{font-size:13px;line-height:1.5;color:var(--bad);font-weight:600}\n.cds-input,.cds-select,.cds-textarea{width:100%;box-sizing:border-box;font-family:var(--font-body);font-size:15px;line-height:22px;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:9px 12px}\n.cds-textarea{min-height:96px;resize:vertical}\n.cds-input::placeholder,.cds-textarea::placeholder{color:var(--muted)}\n.cds-input:focus-visible,.cds-select:focus-visible,.cds-textarea:focus-visible{outline:2px solid var(--focus);outline-offset:1px;border-color:var(--focus)}\n.cds-field.invalid .cds-input,.cds-field.invalid .cds-select,.cds-field.invalid .cds-textarea{border-color:var(--bad)}\n.cds-check{display:grid;grid-template-columns:20px 1fr;gap:10px;align-items:start;font-size:15px;line-height:1.5;color:var(--text);cursor:pointer}\n.cds-check input{width:18px;height:18px;margin:2px 0 0;accent-color:var(--primary)}\n.cds-check small{display:block;font-size:13px;color:var(--muted)}\n.cds-table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface)}\n.cds-table{width:100%;border-collapse:collapse;font-family:var(--font-body);font-size:14px;color:var(--text)}\n.cds-table th,.cds-table td{padding:11px var(--space-4);border-bottom:1px solid var(--border);text-align:left;vertical-align:middle}\n.cds-table thead th{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-weight:600;background:var(--surface-sunk);white-space:nowrap}\n.cds-table tbody tr:last-child td,.cds-table tbody tr:last-child th{border-bottom:0}\n.cds-table tbody th{font-weight:600}\n.cds-table .num{text-align:right;font-variant-numeric:tabular-nums}\n.cds-table td small{display:block;font-size:12px;color:var(--muted)}\n.cds-tabs{display:flex;gap:var(--space-5);border-bottom:1px solid var(--border);overflow-x:auto}\n.cds-tab{font-size:14px;line-height:20px;padding:10px 0;color:var(--muted);text-decoration:none;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;display:inline-flex;gap:6px;align-items:center}\n.cds-tab:hover{color:var(--text)}\n.cds-tab[aria-current="page"]{color:var(--text);font-weight:600;border-bottom-color:var(--accent)}\n.cds-tab .n{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}\n.cds-tab:focus-visible{outline:2px solid var(--focus);outline-offset:2px}\n.cds-empty{background:var(--surface-sunk);border-radius:var(--radius-lg);padding:var(--space-6) var(--space-5);display:grid;gap:var(--space-2);justify-items:start}\n.cds-empty h3{margin:0;font-family:var(--font-display);font-size:18px;line-height:24px;color:var(--text)}\n.cds-empty p{margin:0;font-size:15px;line-height:1.55;color:var(--muted);max-width:56ch}\n.cds-empty .cds-btn{margin-top:var(--space-2)}\n.cds-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}\n.cds-more > summary,.cds-details > summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:6px}\n.cds-more > summary::-webkit-details-marker,.cds-details > summary::-webkit-details-marker{display:none}\n.cds-more > summary{font-size:14px;line-height:20px;font-weight:600;color:var(--accent-ink);padding:8px 0}\n.cds-more > summary::after{content:"+";font-weight:700}\n.cds-more[open] > summary::after{content:"\\2212"}\n.cds-details > summary{font-size:13px;line-height:18px;color:var(--muted)}\n.cds-details > summary::before{content:"\\25B8"}\n.cds-details[open] > summary::before{content:"\\25BE"}\n.cds-more > summary:hover,.cds-details > summary:hover{color:var(--text)}\n.cds-more > summary:focus-visible,.cds-details > summary:focus-visible{outline:2px solid var(--focus);outline-offset:2px}\n.cds-details[open] > summary{margin-bottom:var(--space-2)}\nmark.cds-hl{background:var(--surface-sunk);color:var(--bad);font-weight:700;padding:0 2px;border-radius:var(--radius-sm)}\n.cds-callout .cds-actions{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-3)}\n.cds-progress{display:block;height:8px;border-radius:var(--radius-pill);background:var(--border);overflow:hidden}\n.cds-progress > i{display:block;height:100%;border-radius:var(--radius-pill);background:var(--accent);transition:width 300ms}\n.cds-progress.ok > i{background:var(--ok)}.cds-progress.warn > i{background:var(--warn)}\n.cds-kv{display:grid;grid-template-columns:minmax(120px,200px) minmax(0,1fr);margin:0;font-family:var(--font-body)}\n.cds-kv dt,.cds-kv dd{padding:10px 0;border-top:1px solid var(--border);margin:0}\n.cds-kv dt:first-of-type,.cds-kv dt:first-of-type + dd{border-top:0}\n.cds-kv dt{font-size:13px;line-height:20px;color:var(--muted);padding-right:var(--space-3)}\n.cds-kv dd{font-size:15px;line-height:1.55;color:var(--text)}\n.cds-jump{display:flex;flex-wrap:wrap;gap:var(--space-2)}\n.cds-jump a{font-size:13px;line-height:18px;padding:6px 12px;border:1px solid var(--border);border-radius:var(--radius-pill);color:var(--text);background:var(--surface);text-decoration:none}\n.cds-jump a:hover{border-color:var(--text)}\n.cds-jump a[aria-current]{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}\n.cds-jump a:focus-visible{outline:2px solid var(--focus);outline-offset:2px}\n@media (max-width:520px){.cds-kv{grid-template-columns:minmax(0,1fr)}.cds-kv dd{border-top:0;padding-top:0}}\n@media (prefers-reduced-motion:reduce){.cds-progress > i{transition:none}}\n.cds-stats{display:grid;gap:var(--space-3);grid-template-columns:repeat(auto-fill,minmax(180px,1fr))}\n.cds-stats .cds-stat{min-width:0}\n.cds-doors{display:grid;gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}\n.cds-door{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-5) var(--space-5) 18px;display:flex;flex-direction:column;gap:10px;min-width:0}\n.cds-door .head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:var(--space-2)}\n.cds-door .head .lbl{min-width:0}\n.cds-door .head .cds-chip{flex:none}\n.cds-door .lbl{font-size:11px;line-height:14px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-weight:600}\n.cds-door .v{font-family:var(--font-display);font-size:36px;line-height:40px;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums;overflow-wrap:break-word}\n.cds-door .v.name{font-size:20px;line-height:26px}\n.cds-door p{margin:0;font-size:14px;line-height:1.5;color:var(--muted)}\n.cds-door .cds-link{margin-top:auto;font-size:14px}\n.cds-door.new{background:var(--surface-sunk);border-style:dashed}\n.cds-callout.say{font-family:var(--font-body);font-size:16px;line-height:1.5;font-weight:600;background:var(--surface-sunk);border-color:var(--surface-sunk)}\n.cds-search{display:flex;align-items:center;gap:var(--space-2);background:var(--surface-sunk);border:1px solid var(--border);border-radius:var(--radius-pill);padding:0 14px;height:36px;min-width:0;max-width:420px;flex:1 1 240px}\n.cds-search::before{content:"";width:12px;height:12px;border:2px solid var(--muted);border-radius:var(--radius-pill);flex:none;box-sizing:border-box}\n.cds-search input{flex:1;min-width:0;border:0;background:transparent;font-family:var(--font-body);font-size:14px;line-height:20px;color:var(--text);padding:0}\n.cds-search input::placeholder{color:var(--muted)}\n.cds-search input:focus{outline:none}\n.cds-search:focus-within{border-color:var(--focus);outline:2px solid var(--focus);outline-offset:1px}\n.cds-avatar{width:36px;height:36px;border-radius:var(--radius-pill);background:var(--primary);color:var(--on-primary);display:inline-flex;align-items:center;justify-content:center;font-family:var(--font-display);font-weight:700;font-size:13px;flex:none;overflow:hidden}\n.cds-avatar img{width:100%;height:100%;object-fit:cover}\n.cds-avatar.sm{width:28px;height:28px;font-size:11px}\n.cds-author{display:flex;align-items:center;gap:var(--space-3);font-family:var(--font-body)}\n.cds-author .who{display:grid;gap:2px;min-width:0}\n.cds-author .name{font-size:15px;font-weight:600;color:var(--text)}\n.cds-author .meta{font-size:13px;color:var(--muted)}\n.cds-steps{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-4);counter-reset:cds-step;font-family:var(--font-body)}\n.cds-steps > li{display:grid;grid-template-columns:32px minmax(0,1fr);gap:var(--space-3);align-items:start;counter-increment:cds-step}\n.cds-steps > li::before{content:counter(cds-step);width:28px;height:28px;border-radius:var(--radius-pill);background:var(--surface-sunk);border:1px solid var(--border);color:var(--text);font-family:var(--font-display);font-weight:700;font-size:13px;display:flex;align-items:center;justify-content:center;font-variant-numeric:tabular-nums}\n.cds-steps > li.done::before{background:var(--ok);border-color:var(--ok);color:var(--on-primary)}\n.cds-steps .ttl{font-size:15px;font-weight:600;color:var(--text);line-height:28px}\n.cds-steps .sub{display:block;font-size:14px;line-height:1.55;color:var(--muted);margin-top:2px}\n.cds-code{margin:0;background:var(--nav-bg);color:var(--nav-text);border-radius:var(--radius-md);padding:var(--space-4);font-family:var(--font-mono);font-size:13px;line-height:1.6;overflow-x:auto;white-space:pre}\n.cds-code .cm{color:var(--nav-label)}\ncode.cds-code-inline{font-family:var(--font-mono);font-size:13px;background:var(--surface-sunk);border:1px solid var(--border);border-radius:var(--radius-sm);padding:1px 6px;color:var(--text)}\n.cds-figure{margin:0;display:grid;gap:var(--space-2)}\n.cds-figure img,.cds-figure video{display:block;width:100%;height:auto;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-sunk)}\n.cds-figure figcaption{font-size:13px;line-height:1.5;color:var(--muted)}\n@media (max-width:900px){\n .cds-app{grid-template-columns:minmax(0,1fr);grid-template-rows:auto 1fr;align-content:start}\n .cds-side{position:static;height:auto;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-3);padding:12px var(--space-4)}\n .cds-side-menu{display:inline-flex;align-items:center;font-size:14px;font-weight:600;color:var(--on-nav-active);border:1px solid var(--nav-line);border-radius:var(--radius-pill);padding:6px 14px;cursor:pointer}\n .cds-side-nav,.cds-side-foot{display:none;flex-basis:100%}\n .cds-side-toggle:checked ~ .cds-side-nav,.cds-side-toggle:checked ~ .cds-side-foot{display:flex}\n .cds-side-toggle:focus-visible + .cds-side-menu{outline:2px solid var(--nav-focus);outline-offset:2px}\n .cds-top{padding:0 var(--space-4)}\n .cds-app-body{padding:var(--space-5) var(--space-4)}\n .cds-page-title{font-size:28px;line-height:34px}\n .cds-page-head{flex-wrap:wrap}\n .cds-page-head > :not(.txt){flex:1 1 100%;min-width:0;max-width:100%;margin-left:0}\n .cds-page-head .cds-btn{white-space:normal}\n .cds-page-head .cds-select,.cds-page-head .cds-input{max-width:100%}\n .cds-grid.two{grid-template-columns:minmax(0,1fr)}\n}\n@media (max-width:520px){.cds-top-actions .cds-btn.ghost{display:none}.cds-list li{grid-template-columns:minmax(0,1fr)}}\n/* Print: whole cards, headings stay with their content, no split paragraphs (guidelines/30-print.md) */\n.cds-keep{break-inside:avoid;page-break-inside:avoid}\n.cds-keep-next{break-after:avoid;page-break-after:avoid}\n.cds-page-break{break-before:page;page-break-before:always}\n@media print{\n .cds-fix > .cds-row:last-child{display:none!important}\n .cds-card,.cds-stat,.cds-fix,.cds-callout,.cds-ring,.cds-ba,.cds-bar-row,.cds-ded li,.cds-tl li,.cds-node,.cds-diff div,.cds-keep,table,tr,figure,blockquote{break-inside:avoid;page-break-inside:avoid}\n h1,h2,h3,h4,h5,.cds-keep-next,.label{break-after:avoid;page-break-after:avoid}\n p,li,dd{orphans:3;widows:3}\n .cds-no-print,nav,.cds-btn,.cds-side,.cds-top{display:none!important}\n .cds-app{display:block}\n .cds-ring .arc,.cds-bar-row .fill{transition:none}\n body{background:var(--surface);-webkit-print-color-adjust:exact;print-color-adjust:exact}\n}\n@page{size:letter;margin:0.6in 0.6in 0.7in}\n.cds-menu{position:relative;display:inline-block}\n.cds-menu > summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;border-radius:var(--radius-pill)}\n.cds-menu > summary::-webkit-details-marker{display:none}\n.cds-menu > summary:focus-visible{outline:2px solid var(--focus);outline-offset:2px}\n.cds-menu-panel{position:absolute;right:0;top:calc(100% + var(--space-2));z-index:60;min-width:240px;max-width:min(320px,90vw);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-lift);padding:var(--space-2);display:grid;gap:2px;font-family:var(--font-body)}\n.cds-menu-head{padding:var(--space-2) var(--space-3) var(--space-3);border-bottom:1px solid var(--border);margin-bottom:var(--space-1);display:grid;gap:2px}\n.cds-menu-head .name{font-size:15px;font-weight:600;color:var(--text)}\n.cds-menu-head .meta{font-size:13px;color:var(--muted);overflow-wrap:anywhere}\n.cds-menu-item{display:block;padding:8px var(--space-3);border-radius:var(--radius-sm);font-size:14px;line-height:20px;color:var(--text);text-decoration:none;background:none;border:0;text-align:left;font-family:var(--font-body);cursor:pointer;width:100%}\n.cds-menu-item:hover,.cds-menu-item:focus-visible{background:var(--surface-sunk);outline:none}\n.cds-menu-sep{height:1px;background:var(--border);margin:var(--space-1) 0}\n.cds-menu-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:6px var(--space-3);font-size:14px;color:var(--text)}\n.cds-menu-row .cds-seg button{padding:4px 10px;font-size:12px}\n.cds-seg{display:inline-flex;align-items:center;border:1px solid var(--border);border-radius:var(--radius-pill);overflow:hidden;background:var(--surface);font-family:var(--font-body)}\n.cds-seg button{border:0;background:var(--surface);color:var(--muted);padding:6px 12px;font-family:var(--font-body);font-size:13px;line-height:18px;font-weight:600;cursor:pointer}\n.cds-seg button + button{border-left:1px solid var(--border)}\n.cds-seg button:hover{color:var(--text);background:var(--surface-sunk)}\n.cds-seg button[aria-pressed="true"]{background:var(--primary);color:var(--on-primary)}\n.cds-seg button:focus-visible{outline:2px solid var(--focus);outline-offset:-2px}\n/* A list inside a narrow card stacks its chip under the text, whatever the page zoom (container query). */\n.cds-panel{container-type:inline-size}\n@container (max-width:380px){.cds-list li{grid-template-columns:minmax(0,1fr)}.cds-list .end{justify-content:flex-start}}\n/* Text-size narrow mode */\n/* The TextSize control scales the page with zoom, which media queries do not see. The cockpit frame adds\n .cds-narrow to <html> when the room left after scaling is under 900px, and .cds-tiny under 520px,\n and these repeat the narrow rules for that case (generated from the media blocks above). */\nhtml.cds-narrow .cds-app{grid-template-columns:minmax(0,1fr);grid-template-rows:auto 1fr;align-content:start}\nhtml.cds-narrow .cds-side{position:static;height:auto;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-3);padding:12px var(--space-4)}\nhtml.cds-narrow .cds-side-menu{display:inline-flex;align-items:center;font-size:14px;font-weight:600;color:var(--on-nav-active);border:1px solid var(--nav-line);border-radius:var(--radius-pill);padding:6px 14px;cursor:pointer}\nhtml.cds-narrow .cds-side-nav,html.cds-narrow .cds-side-foot{display:none;flex-basis:100%}\nhtml.cds-narrow .cds-side-toggle:checked ~ .cds-side-nav,html.cds-narrow .cds-side-toggle:checked ~ .cds-side-foot{display:flex}\nhtml.cds-narrow .cds-side-toggle:focus-visible + .cds-side-menu{outline:2px solid var(--nav-focus);outline-offset:2px}\nhtml.cds-narrow .cds-top{padding:0 var(--space-4)}\nhtml.cds-narrow .cds-app-body{padding:var(--space-5) var(--space-4)}\nhtml.cds-narrow .cds-page-title{font-size:28px;line-height:34px}\nhtml.cds-narrow .cds-page-head{flex-wrap:wrap}\nhtml.cds-narrow .cds-page-head > :not(.txt){flex:1 1 100%;min-width:0;max-width:100%;margin-left:0}\nhtml.cds-narrow .cds-page-head .cds-btn{white-space:normal}\nhtml.cds-narrow .cds-page-head .cds-select,html.cds-narrow .cds-page-head .cds-input{max-width:100%}\nhtml.cds-narrow .cds-grid.two{grid-template-columns:minmax(0,1fr)}\nhtml.cds-tiny .cds-bar-row{grid-template-columns:1fr 56px}\nhtml.cds-tiny .cds-bar-row .trk{grid-column:1 / -1;grid-row:2}\nhtml.cds-tiny .cds-diff{grid-template-columns:1fr}\nhtml.cds-tiny .cds-kv{grid-template-columns:minmax(0,1fr)}\nhtml.cds-tiny .cds-kv dd{border-top:0;padding-top:0}\nhtml.cds-tiny .cds-top-actions .cds-btn.ghost{display:none}\nhtml.cds-tiny .cds-list li{grid-template-columns:minmax(0,1fr)}\n';
|
|
29276
29276
|
DS_DARK_AUTO_CSS = '@media (prefers-color-scheme: dark) {\n :root:not([data-theme="light"]) {\n --bg: #0b1220; --surface: #111a2b; --surface-sunk: #0e1626; --text: #e6edf5; --muted: #94a3b8; --border: #22304a; --primary: #e6edf5; --on-primary: #0a1628; --accent: #22d3ee; --accent-ink: #67e8f9; --ok: #4ade80; --warn: #fbbf24; --bad: #f87171; --grade-a: #4ade80; --grade-b: #22d3ee; --grade-c: #fbbf24; --grade-d: #fb923c; --grade-f: #f87171; --focus: #67e8f9; --nav-bg: #16233a; --nav-text: #cbd5e1; --nav-label: #8b9ab0; --nav-active: #2a3a56; --on-nav-active: #ffffff; --nav-line: #2a3a56; --nav-badge: #fbbf24; --nav-focus: #22d3ee; --shadow-lift: 0 1px 2px rgba(0,0,0,0.4), 0 8px 24px rgba(0,0,0,0.35);\n }\n}\n';
|
|
29277
29277
|
}
|
|
29278
29278
|
});
|
|
@@ -29355,6 +29355,17 @@ ${cockpitSidebarHtml(active, opts.capability)}
|
|
|
29355
29355
|
<div class="cds-top-actions">
|
|
29356
29356
|
<div class="cds-size" role="group" aria-label="Text size"><button id="sz-down" type="button" aria-label="Smaller text">A−</button><output id="sz-val" aria-live="polite">${TYPE_DEFAULT}px</output><button id="sz-up" type="button" aria-label="Larger text">A+</button></div>
|
|
29357
29357
|
<a class="cds-btn ghost" href="${HUB_URL}#do">Members Hub</a>
|
|
29358
|
+
<details class="cds-menu" id="acct-menu">
|
|
29359
|
+
<summary aria-label="Your settings"><span class="cds-avatar sm" id="acct-initials" aria-hidden="true">You</span></summary>
|
|
29360
|
+
<div class="cds-menu-panel" role="menu">
|
|
29361
|
+
<div class="cds-menu-head"><span class="name" id="acct-name">This computer</span><span class="meta">Command OS \xB7 Version ${esc(pkg.version)}</span></div>
|
|
29362
|
+
<a class="cds-menu-item" role="menuitem" href="/agency">Your agency</a>
|
|
29363
|
+
<a class="cds-menu-item" role="menuitem" href="/connections">Connections</a>
|
|
29364
|
+
<a class="cds-menu-item" role="menuitem" href="${HUB_URL}#do">Members Hub</a>
|
|
29365
|
+
<div class="cds-menu-sep" role="separator"></div>
|
|
29366
|
+
<div class="cds-menu-row"><span>Appearance</span><div class="cds-seg" role="group" aria-label="Colour theme"><button type="button" data-theme-choice="auto" aria-pressed="true">Auto</button><button type="button" data-theme-choice="light" aria-pressed="false">Light</button><button type="button" data-theme-choice="dark" aria-pressed="false">Dark</button></div></div>
|
|
29367
|
+
</div>
|
|
29368
|
+
</details>
|
|
29358
29369
|
</div>
|
|
29359
29370
|
</header>`;
|
|
29360
29371
|
}
|
|
@@ -29363,9 +29374,10 @@ function cockpitShellClose() {
|
|
|
29363
29374
|
}
|
|
29364
29375
|
function cockpitHeadHtml(title2, opts = {}) {
|
|
29365
29376
|
return `<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>${esc(title2)}</title>
|
|
29377
|
+
<script data-theme-boot>${COCKPIT_THEME_HEAD_JS}</script>
|
|
29366
29378
|
<style>${cockpitTokensCss(opts)}${cockpitChromeCss()}${opts.extraCss ?? ""}</style></head>`;
|
|
29367
29379
|
}
|
|
29368
|
-
var esc, HUB_URL, COCKPIT_DATE_JS, TYPE_MIN, TYPE_MAX, TYPE_DEFAULT, TYPE_STORAGE_KEY, DS_UI_PX, NAV, SIDEBAR, link, COCKPIT_TYPE_JS;
|
|
29380
|
+
var esc, HUB_URL, COCKPIT_DATE_JS, TYPE_MIN, TYPE_MAX, TYPE_DEFAULT, TYPE_STORAGE_KEY, THEME_STORAGE_KEY, COCKPIT_THEME_HEAD_JS, DS_UI_PX, NAV, SIDEBAR, link, COCKPIT_TYPE_JS;
|
|
29369
29381
|
var init_cockpit_shell = __esm({
|
|
29370
29382
|
"src/command-os/cockpit-shell.ts"() {
|
|
29371
29383
|
"use strict";
|
|
@@ -29403,6 +29415,8 @@ function parseCockpitDate(value){
|
|
|
29403
29415
|
TYPE_MAX = 34;
|
|
29404
29416
|
TYPE_DEFAULT = 18;
|
|
29405
29417
|
TYPE_STORAGE_KEY = "cmdos-cockpit-fs";
|
|
29418
|
+
THEME_STORAGE_KEY = "cmdos-cockpit-theme";
|
|
29419
|
+
COCKPIT_THEME_HEAD_JS = `(function(){try{var t=localStorage.getItem(${scriptJson(THEME_STORAGE_KEY)});if(t==="light"||t==="dark")document.documentElement.setAttribute("data-theme",t)}catch(e){}})();`;
|
|
29406
29420
|
DS_UI_PX = 15;
|
|
29407
29421
|
NAV = [
|
|
29408
29422
|
{ key: "board", href: "/", label: "Board", title: "What is waiting on you, and every client account" },
|
|
@@ -29448,6 +29462,18 @@ window.cdsQueueBadge=function(n){try{localStorage.setItem("cmdos-queue-you",Stri
|
|
|
29448
29462
|
function paintQueueBadge(){var b=document.getElementById("side-queue-badge");if(!b)return;var n=NaN;try{n=parseInt(localStorage.getItem("cmdos-queue-you"),10)}catch(e){}
|
|
29449
29463
|
if(n>0){b.textContent=String(n);b.setAttribute("aria-label",n+" waiting on you");b.hidden=false}else{b.hidden=true}}
|
|
29450
29464
|
paintQueueBadge();
|
|
29465
|
+
/* ThemeSwitch: Auto removes data-theme (the tokens follow the computer); Light or Dark pins it. */
|
|
29466
|
+
(function(){var KEY=${scriptJson(THEME_STORAGE_KEY)},r=document.documentElement,bs=document.querySelectorAll("[data-theme-choice]");
|
|
29467
|
+
function cur(){var t="auto";try{t=localStorage.getItem(KEY)||"auto"}catch(e){}return t==="light"||t==="dark"?t:"auto"}
|
|
29468
|
+
function paint(t){if(t==="auto")r.removeAttribute("data-theme");else r.setAttribute("data-theme",t);for(var i=0;i<bs.length;i++)bs[i].setAttribute("aria-pressed",String(bs[i].getAttribute("data-theme-choice")===t))}
|
|
29469
|
+
for(var i=0;i<bs.length;i++)bs[i].addEventListener("click",function(){var t=this.getAttribute("data-theme-choice");try{if(t==="auto")localStorage.removeItem(KEY);else localStorage.setItem(KEY,t)}catch(e){}paint(t)});
|
|
29470
|
+
paint(cur())})();
|
|
29471
|
+
/* AccountMenu: the operator's own name and initials (set on the work queue), and it closes like a menu. */
|
|
29472
|
+
(function(){var m=document.getElementById("acct-menu");if(!m)return;var nm="";try{nm=localStorage.getItem("cmdos-operator")||""}catch(e){}
|
|
29473
|
+
if(nm){var ini=nm.trim().split(/s+/).slice(0,2).map(function(w){return w[0]||""}).join("").toUpperCase();document.getElementById("acct-initials").textContent=ini||"You";document.getElementById("acct-name").textContent=nm}
|
|
29474
|
+
document.addEventListener("keydown",function(e){if(e.key==="Escape"&&m.open){m.open=false;m.querySelector("summary").focus()}});
|
|
29475
|
+
document.addEventListener("click",function(e){if(m.open&&!m.contains(e.target))m.open=false});
|
|
29476
|
+
var links=m.querySelectorAll("a.cds-menu-item");for(var i=0;i<links.length;i++)links[i].addEventListener("click",function(){m.open=false})})();
|
|
29451
29477
|
/* Keep the page you are on in view in a long sidebar. */
|
|
29452
29478
|
(function(){var c=document.querySelector('.cds-side [aria-current="page"]');if(c&&c.scrollIntoView)c.scrollIntoView({block:"center"})})();`;
|
|
29453
29479
|
}
|
|
@@ -32160,11 +32186,13 @@ function connectorInstructions(entry, format, options = {}) {
|
|
|
32160
32186
|
}
|
|
32161
32187
|
return items.map((s, i) => `${ordered ? `${i + 1}.` : "-"} ${text2(s)}`).join("\n") + "\n\n";
|
|
32162
32188
|
};
|
|
32163
|
-
const
|
|
32189
|
+
const unverified = entry.steps.filter((step) => step.startsWith("[UNVERIFIED] ")).length;
|
|
32190
|
+
const allUnverified = unverified > 0 && unverified === entry.steps.length;
|
|
32191
|
+
const steps = entry.steps.map((step) => step.startsWith("[UNVERIFIED] ") ? allUnverified ? step.slice("[UNVERIFIED] ".length) : `${step.slice("[UNVERIFIED] ".length)} (not yet checked on a real screen)` : step);
|
|
32164
32192
|
const checkedLabel = connectorCheckedLabel(entry);
|
|
32165
32193
|
return ((options.includeDefinition === false ? "" : paragraph(entry.whatItIs, "credential-definition")) + (checkedLabel ? paragraph(checkedLabel, "instructions-checked") : "") + heading("What it gives you") + paragraph(entry.gives) + heading("What you need") + paragraph(CONNECTOR_INSTRUCTION_INTROS.needs) + list3(entry.needs) + heading("How to connect") + (entry.builtState === "via-claude" ? paragraph(entry.viaClaude ?? "") : paragraph(CONNECTOR_INSTRUCTION_INTROS.connect) + (entry.before ? paragraph(entry.before) : "") + (html2 ? `<h4>${steps.length} ${steps.length === 1 ? "step" : "steps"}</h4>` : `#### ${steps.length} ${steps.length === 1 ? "step" : "steps"}
|
|
32166
32194
|
|
|
32167
|
-
`) + list3(steps, true)) + heading("What to say") + paragraph(CONNECTOR_INSTRUCTION_INTROS.say) + list3(entry.say.map((s) => `\u201C${s}\u201D`)) + heading("How to take access back") + paragraph(CONNECTOR_INSTRUCTION_INTROS.revoke) + paragraph(entry.revoke)).trim();
|
|
32195
|
+
`) + (allUnverified ? paragraph("These steps have not been checked on a real screen yet.", "steps-unchecked") : "") + list3(steps, true)) + heading("What to say") + paragraph(CONNECTOR_INSTRUCTION_INTROS.say) + list3(entry.say.map((s) => `\u201C${s}\u201D`)) + heading("How to take access back") + paragraph(CONNECTOR_INSTRUCTION_INTROS.revoke) + paragraph(entry.revoke)).trim();
|
|
32168
32196
|
}
|
|
32169
32197
|
var htmlText, markdownText;
|
|
32170
32198
|
var init_instructions = __esm({
|
|
@@ -43457,7 +43485,7 @@ function assessmentAgencyTag(ap = readAgencyProfile()) {
|
|
|
43457
43485
|
return `<script>window.COMMAND_OS_AGENCY=${scriptJson(forReport)}</script>`;
|
|
43458
43486
|
}
|
|
43459
43487
|
function withCockpitShell(page, screen, extraHead = "") {
|
|
43460
|
-
const css2 = `<style>${cockpitTokensCss({ webfont: false })}${cockpitChromeCss()}</style>${extraHead}`;
|
|
43488
|
+
const css2 = `<script data-theme-boot>${COCKPIT_THEME_HEAD_JS}</script><style>${cockpitTokensCss({ webfont: false })}${cockpitChromeCss()}</style>${extraHead}`;
|
|
43461
43489
|
const header = `${cockpitHeaderHtml(screen)}<script>${COCKPIT_TYPE_JS}</script>`;
|
|
43462
43490
|
const withCss = page.includes("<!--COCKPIT_SHELL_CSS-->") ? page.replace("<!--COCKPIT_SHELL_CSS-->", css2) : page.replace("</head>", `${css2}</head>`);
|
|
43463
43491
|
const withHeader = withCss.includes("<!--COCKPIT_HEADER-->") ? withCss.replace("<!--COCKPIT_HEADER-->", header) : withCss.replace(/<body([^>]*)>/, `<body$1>${header}`);
|
package/guide/guide.html
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<meta charset="utf-8">
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
6
|
<title>GHL Command — User Guide</title>
|
|
7
|
-
<!-- guides-hash:
|
|
7
|
+
<!-- guides-hash: 15d2093538a1928d -->
|
|
8
8
|
<style>
|
|
9
9
|
/* Deliberately light in every environment, including a dark-mode OS. This is a
|
|
10
10
|
reference document people read at length, print, and save to PDF, and a page
|
|
@@ -1204,7 +1204,7 @@ Before you build: look up the real calendar, the real workflows you are removing
|
|
|
1204
1204
|
</div></div>
|
|
1205
1205
|
<div class="shell"><main class="gview">
|
|
1206
1206
|
<a class="back" href="#top">← All guides</a>
|
|
1207
|
-
<p class="gpara">This guide is free to read; the connector tools it describes answer with upgrade info on the $97
|
|
1207
|
+
<p class="gpara">This guide is free to read; the connector tools it describes answer with upgrade info on the $97 license.</p>
|
|
1208
1208
|
<div class="gsec"><h2>Stripe · not yet checked</h2>
|
|
1209
1209
|
<p class="gpara">A restricted key is a password Stripe issues that lets this machine read only the parts of your account you allow.</p>
|
|
1210
1210
|
<p class="gpara">not yet checked</p>
|
|
@@ -1219,12 +1219,13 @@ Before you build: look up the real calendar, the real workflows you are removing
|
|
|
1219
1219
|
<h3>How to connect</h3>
|
|
1220
1220
|
<p class="gpara">Follow these steps to give this machine access.</p>
|
|
1221
1221
|
<h4>5 steps</h4>
|
|
1222
|
+
<p class="gpara">These steps have not been checked on a real screen yet.</p>
|
|
1222
1223
|
<ol class="steps">
|
|
1223
|
-
<li>Sign in to your Stripe Dashboard and choose the account you want to read
|
|
1224
|
-
<li>Open Developers, then API keys. If your dashboard shows Workbench, open its API keys page
|
|
1225
|
-
<li>Under Restricted keys, choose Create restricted key and give it a name you recognise
|
|
1226
|
-
<li>Set Customers, Invoices, Subscriptions, Charges and Products to Read. Leave other permissions at None, then create the key
|
|
1227
|
-
<li>Copy the key into the password field on the Stripe card on the Connections screen, add an account label if useful, and choose Connect. Use a live-mode key for real income
|
|
1224
|
+
<li>Sign in to your Stripe Dashboard and choose the account you want to read.</li>
|
|
1225
|
+
<li>Open Developers, then API keys. If your dashboard shows Workbench, open its API keys page.</li>
|
|
1226
|
+
<li>Under Restricted keys, choose Create restricted key and give it a name you recognise.</li>
|
|
1227
|
+
<li>Set Customers, Invoices, Subscriptions, Charges and Products to Read. Leave other permissions at None, then create the key.</li>
|
|
1228
|
+
<li>Copy the key into the password field on the Stripe card on the Connections screen, add an account label if useful, and choose Connect. Use a live-mode key for real income.</li>
|
|
1228
1229
|
</ol>
|
|
1229
1230
|
<h3>What to say</h3>
|
|
1230
1231
|
<p class="gpara">In a Claude chat you can say one of these to connect or use it.</p>
|
|
@@ -1686,7 +1687,7 @@ Show me the first ten rows in the chat so I can sanity check them before you wri
|
|
|
1686
1687
|
</ul>
|
|
1687
1688
|
</div>
|
|
1688
1689
|
<div class="gsec"><h2>Where people go wrong</h2>
|
|
1689
|
-
<div style="overflow-x:auto"><table class="wrongtbl"><tr><th>What happened</th><th>The fix</th></tr><tr><td>"I use Claude on the website. Where do I paste the command?"</td><td>The install needs the Claude Desktop app or Claude Code on this computer. A browser tab cannot run it. The Members Hub page Which Claude do I use? shows the difference.</td></tr><tr><td>"I ran the installer and Claude says it has no GHL Command tools."</td><td>Quit Claude fully (Cmd+Q on a Mac; system tray on Windows) and open it again. The tools load on a fresh start, never into a window that was already open.</td></tr><tr><td>"GoHighLevel says API access is not on my plan."</td><td>Only Unlimited ($297) and Agency Pro ($497) include the API. On Starter ($97) nothing can connect, so upgrade the plan first.</td></tr><tr><td>"It said step 1 of 2 done. Is it broken?"</td><td>No, it is honest. Do step 2 (the browser login) and you are finished.</td></tr><tr><td>"The workflow tools give errors after the login."</td><td>Restart Claude completely. Quit and reopen. The new login only loads on a fresh start.</td></tr><tr><td>"I upgraded to paid. Do I reinstall?"</td><td>No. Say "set up GHL Command" and paste only your email and new key. Everything you set up before is kept.</td></tr><tr><td>"GHL Command shows only Connection closed, so it looks like my
|
|
1690
|
+
<div style="overflow-x:auto"><table class="wrongtbl"><tr><th>What happened</th><th>The fix</th></tr><tr><td>"I use Claude on the website. Where do I paste the command?"</td><td>The install needs the Claude Desktop app or Claude Code on this computer. A browser tab cannot run it. The Members Hub page Which Claude do I use? shows the difference.</td></tr><tr><td>"I ran the installer and Claude says it has no GHL Command tools."</td><td>Quit Claude fully (Cmd+Q on a Mac; system tray on Windows) and open it again. The tools load on a fresh start, never into a window that was already open.</td></tr><tr><td>"GoHighLevel says API access is not on my plan."</td><td>Only Unlimited ($297) and Agency Pro ($497) include the API. On Starter ($97) nothing can connect, so upgrade the plan first.</td></tr><tr><td>"It said step 1 of 2 done. Is it broken?"</td><td>No, it is honest. Do step 2 (the browser login) and you are finished.</td></tr><tr><td>"The workflow tools give errors after the login."</td><td>Restart Claude completely. Quit and reopen. The new login only loads on a fresh start.</td></tr><tr><td>"I upgraded to paid. Do I reinstall?"</td><td>No. Say "set up GHL Command" and paste only your email and new key. Everything you set up before is kept.</td></tr><tr><td>"GHL Command shows only Connection closed, so it looks like my license stopped working."</td><td>The copy of GHL Command saved on your computer is incomplete. Your license is fine. Quit Claude. In Finder, click Go in the menu bar, then Go to Folder, type <code>~/.npm</code> and press Return. Drag the folder named <code>_npx</code> to the Trash. Reopen Claude and it downloads a fresh copy. This only removes downloaded program copies, nothing of yours. On Windows this is untested: email support@ghlcommand.com.</td></tr></table></div>
|
|
1690
1691
|
</div>
|
|
1691
1692
|
<p class="gfoot">Works in Claude Desktop and Claude Code. Stuck? Email support@ghlcommand.com and a human answers.</p>
|
|
1692
1693
|
</main></div>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elitedcs/ghl-mcp",
|
|
3
|
-
"version": "3.88.
|
|
3
|
+
"version": "3.88.1",
|
|
4
4
|
"mcpName": "io.github.drjerryrelth/ghl-command",
|
|
5
5
|
"description": "GoHighLevel MCP Server for Claude. 250 tools — full CRM, automation, marketing control, account-wide workflow audit, live funnel-capture verification, and the only programmatic GHL workflow builder, now multi-tenant across client accounts.",
|
|
6
6
|
"main": "dist/index.js",
|