@uplifted/react 0.23.0 → 0.24.0
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 +36 -0
- package/dist/AddClientSheet.d.ts +10 -1
- package/dist/AddClientSheet.d.ts.map +1 -1
- package/dist/AddClientSheet.js +26 -21
- package/dist/AddClientSheet.js.map +1 -1
- package/dist/AiSettingsSheet.d.ts +2 -2
- package/dist/AiSettingsSheet.d.ts.map +1 -1
- package/dist/AiSettingsSheet.js +30 -97
- package/dist/AiSettingsSheet.js.map +1 -1
- package/dist/AssistantGrid.d.ts +10 -8
- package/dist/AssistantGrid.d.ts.map +1 -1
- package/dist/AssistantGrid.js +90 -16
- package/dist/AssistantGrid.js.map +1 -1
- package/dist/ClientList.d.ts.map +1 -1
- package/dist/ClientList.js +5 -5
- package/dist/ClientList.js.map +1 -1
- package/dist/Composer.d.ts +2 -0
- package/dist/Composer.d.ts.map +1 -1
- package/dist/Composer.js +5 -6
- package/dist/Composer.js.map +1 -1
- package/dist/ConnectClientSheet.d.ts +26 -0
- package/dist/ConnectClientSheet.d.ts.map +1 -0
- package/dist/ConnectClientSheet.js +67 -0
- package/dist/ConnectClientSheet.js.map +1 -0
- package/dist/ConversationPane.d.ts +3 -1
- package/dist/ConversationPane.d.ts.map +1 -1
- package/dist/ConversationPane.js +30 -7
- package/dist/ConversationPane.js.map +1 -1
- package/dist/HostLinkAction.d.ts +10 -0
- package/dist/HostLinkAction.d.ts.map +1 -0
- package/dist/HostLinkAction.js +14 -0
- package/dist/HostLinkAction.js.map +1 -0
- package/dist/HostPreviewPane.d.ts +4 -2
- package/dist/HostPreviewPane.d.ts.map +1 -1
- package/dist/HostPreviewPane.js +6 -6
- package/dist/HostPreviewPane.js.map +1 -1
- package/dist/ItemActions.d.ts +7 -3
- package/dist/ItemActions.d.ts.map +1 -1
- package/dist/ItemActions.js +4 -3
- package/dist/ItemActions.js.map +1 -1
- package/dist/OfferSheet.d.ts +2 -0
- package/dist/OfferSheet.d.ts.map +1 -1
- package/dist/OfferSheet.js +3 -1
- package/dist/OfferSheet.js.map +1 -1
- package/dist/QuickSend.d.ts +3 -1
- package/dist/QuickSend.d.ts.map +1 -1
- package/dist/QuickSend.js +10 -3
- package/dist/QuickSend.js.map +1 -1
- package/dist/SegmentEditor.d.ts +11 -4
- package/dist/SegmentEditor.d.ts.map +1 -1
- package/dist/SegmentEditor.js +95 -11
- package/dist/SegmentEditor.js.map +1 -1
- package/dist/ThreadFeed.d.ts +7 -1
- package/dist/ThreadFeed.d.ts.map +1 -1
- package/dist/ThreadFeed.js +4 -4
- package/dist/ThreadFeed.js.map +1 -1
- package/dist/UpliftPanel.d.ts +10 -2
- package/dist/UpliftPanel.d.ts.map +1 -1
- package/dist/UpliftPanel.js +120 -20
- package/dist/UpliftPanel.js.map +1 -1
- package/dist/UpliftProvider.d.ts.map +1 -1
- package/dist/UpliftProvider.js +16 -2
- package/dist/UpliftProvider.js.map +1 -1
- package/dist/build-info.json +3 -3
- package/dist/channels.d.ts +2 -0
- package/dist/channels.d.ts.map +1 -1
- package/dist/channels.js +4 -0
- package/dist/channels.js.map +1 -1
- package/dist/draftContext.d.ts +34 -0
- package/dist/draftContext.d.ts.map +1 -0
- package/dist/draftContext.js +48 -0
- package/dist/draftContext.js.map +1 -0
- package/dist/host.d.ts +19 -0
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js.map +1 -1
- package/dist/icons.d.ts +3 -0
- package/dist/icons.d.ts.map +1 -1
- package/dist/icons.js +4 -0
- package/dist/icons.js.map +1 -1
- package/dist/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/segments.d.ts.map +1 -1
- package/dist/segments.js +2 -1
- package/dist/segments.js.map +1 -1
- package/dist/styles.d.ts +1 -1
- package/dist/styles.d.ts.map +1 -1
- package/dist/styles.js +56 -14
- package/dist/styles.js.map +1 -1
- package/dist/usePreviewDrafts.d.ts +1 -1
- package/dist/usePreviewDrafts.d.ts.map +1 -1
- package/dist/usePreviewDrafts.js +8 -1
- package/dist/usePreviewDrafts.js.map +1 -1
- package/dist/useSend.d.ts +7 -2
- package/dist/useSend.d.ts.map +1 -1
- package/dist/useSend.js +7 -2
- package/dist/useSend.js.map +1 -1
- package/package.json +3 -3
package/dist/styles.d.ts
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* D16: layout answers to the panel's own width through a container query, never the viewport.
|
|
10
10
|
*/
|
|
11
11
|
export declare const STYLE_ELEMENT_ID = "uplifted-react-styles";
|
|
12
|
-
export declare const upliftStyles = "\n:where(.uplift){\n --u-bg:#ffffff;--u-surface:#ffffff;--u-surface-2:#fafafa;--u-surface-3:#f4f4f5;\n --u-text:#262626;--u-muted:#666666;--u-border:rgba(0,0,0,.08);\n --u-accent:#0f8a63;--u-accent-soft:#e3f5ee;--u-accent-ink:#ffffff;--u-link:#0b6b4c;\n --u-highlight:var(--u-accent);--u-highlight-soft:var(--u-accent-soft);\n --u-gold:#c9971c;--u-gold-hi:#f7e2a0;--u-gold-ink:#8a6410;--u-gold-ink-hi:#c9971c;\n --u-seg-l:88%;\n --u-danger:#c10007;--u-warn:#bb4d00;--u-out:#eaf1ff;--u-out-ink:#12244d;\n --u-font:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Inter,sans-serif;--u-radius:10px;\n}\n:where(.uplift[data-theme=\"dark\"],[data-theme=\"dark\"] .uplift){\n --u-bg:#111111;--u-surface:#111111;--u-surface-2:#0a0a0a;--u-surface-3:#1a1a1a;\n --u-text:#f5f5f5;--u-muted:#9a9a9a;--u-border:rgba(255,255,255,.08);\n --u-accent:#70d7b0;--u-accent-soft:#17342a;--u-accent-ink:#062a1e;--u-link:#70d7b0;\n --u-gold:#d9a830;--u-gold-hi:#fff1b8;--u-gold-ink:#d9a830;--u-gold-ink-hi:#f3d47a;\n --u-seg-l:26%;\n --u-danger:#ff6467;--u-warn:#ffb900;--u-out:#1d2b4a;--u-out-ink:#e3ebff;\n}\n.uplift,.uplift *,.uplift *::before,.uplift *::after{box-sizing:border-box}\n.uplift{font:15px/1.45 var(--u-font);color:var(--u-text);background:var(--u-bg);border:1px solid var(--u-border);border-radius:14px;overflow:hidden;container-type:inline-size;container-name:panel;position:relative;-webkit-font-smoothing:antialiased}\n:where(.uplift) button{font:inherit;color:inherit;cursor:pointer}\n:where(.uplift) button:disabled{cursor:not-allowed}\n.uplift :focus-visible{outline:2px solid var(--u-highlight);outline-offset:2px;border-radius:6px}\n.uplift h2,.uplift h3,.uplift h4,.uplift p{margin:0}\n.u-sp{flex:1}\n.u-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}\n.u-pill{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--u-border);background:var(--u-surface-2);border-radius:999px;padding:4px 10px;font-size:13px;color:var(--u-muted)}\n.u-pill b{color:var(--u-text);font-weight:600}\n.u-linkbtn{background:none;border:0;padding:4px 2px;color:var(--u-link);font-weight:600;text-decoration:underline;text-underline-offset:3px}\n.u-split{display:grid;grid-template-columns:320px minmax(0,1fr);height:min(max(520px,62.5cqw),86vh)}\n.u-split>*{min-height:0}\n.u-list{overflow:hidden}\n.u-pane{overflow:hidden}\n.u-iconbtn{display:inline-grid;place-items:center;width:34px;height:34px;border:1px solid var(--u-border);background:var(--u-bg);border-radius:8px;color:var(--u-muted);padding:0}\n.u-iconbtn:hover{color:var(--u-text)}\n.u-iconbtn-pair{width:auto;padding:0 9px;display:inline-flex;align-items:center;gap:4px}\n.u-ai-spark{display:inline-flex;color:var(--u-highlight)}\n.u-iconbtn .u-ai-spark svg{width:14px;height:14px}\n.u-iconbtn svg{width:16px;height:16px}\n.u-iconbtn[aria-pressed=\"true\"]{color:var(--u-text);background:var(--u-surface-2)}\n.u-bulkbtn svg{width:14px;height:14px}\n.uplift.u-full{position:fixed;inset:0;z-index:2147483000;border-radius:0;border:0;display:flex;flex-direction:column}\n.uplift.u-full .u-split{flex:1;height:auto;min-height:0}\n.u-back{display:none;border:1px solid var(--u-border);background:var(--u-bg);border-radius:8px;padding:6px 10px;font-size:16px;min-height:36px;align-items:center;flex:none}\n.u-list{border-right:1px solid var(--u-border);display:flex;flex-direction:column;min-width:0}\n/* inbox toolbar: native Uplift's collapsed search + segmented sort + Bulk generate */\n.u-toolbar{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--u-border)}\n.u-search{position:relative;flex:0 1 32px;min-width:32px;display:flex;align-items:center;cursor:pointer;transition:flex-basis .2s ease,flex-grow .2s ease}\n.u-search-open{flex:1 1 140px;cursor:auto}\n.u-search svg{position:absolute;left:9px;width:14px;height:14px;color:var(--u-muted);pointer-events:none}\n.u-search input{width:100%;min-height:32px;padding:6px 10px 6px 30px;border-radius:999px;border:1px solid var(--u-border);background:var(--u-surface-2);font:inherit;font-size:13px;color:var(--u-text)}\n.u-search:not(.u-search-open) input{cursor:pointer;padding-right:0}\n.u-search:not(.u-search-open) input::placeholder{opacity:0}\n.u-search input:focus{outline:none;border-color:var(--u-accent);background:var(--u-bg)}\n.u-search input::-webkit-search-cancel-button{cursor:pointer}\n.u-sortgroup{display:inline-flex;align-items:center;padding:2px;border-radius:999px;background:var(--u-surface-2);flex:none}\n.u-sortgroup button{border:0;background:none;border-radius:999px;padding:4px 9px;font-size:12px;font-weight:600;color:var(--u-muted);min-height:28px;white-space:nowrap}\n.u-sortgroup button:hover{color:var(--u-text)}\n.u-sortgroup button[aria-pressed=\"true\"]{background:var(--u-bg);color:var(--u-text);box-shadow:0 1px 2px rgba(0,0,0,.08),0 0 0 1px var(--u-border)}\n.u-toolbar button.u-bulkbtn{margin-left:auto;display:inline-flex;align-items:center;gap:1px;border:0;border-radius:999px;background:none;color:var(--u-muted);padding:0 6px;min-height:32px;flex:none}\n.u-toolbar button.u-bulkbtn:hover:not(:disabled){color:var(--u-accent);background:var(--u-surface-2)}\n.u-toolbar button.u-bulkbtn:disabled{opacity:.45}\n.u-rows{list-style:none;margin:0;padding:0;overflow:auto;flex:1;min-height:0}\n.u-rows li{display:flex;flex-wrap:wrap;align-items:stretch;border-bottom:1px solid var(--u-border)}\n.u-row-open{flex:1;min-width:0;text-align:left;border:0;background:transparent;padding:11px 12px;display:grid;grid-template-columns:36px minmax(0,1fr);gap:2px 10px;min-height:64px}\n.u-av{grid-row:span 3;width:36px;height:36px;border-radius:999px;display:grid;place-items:center;font-size:13px;font-weight:700;color:#fff}\n.u-av.u-av-sm{grid-row:auto;width:32px;height:32px}\n.u-r-top{display:flex;gap:6px;align-items:baseline;min-width:0}\n.u-r-name{font-weight:600;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n.u-r-time{margin-left:auto;font-size:12.5px;color:var(--u-muted);flex:none}\n.u-r-line{font-size:13.5px;color:var(--u-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n.u-r-tags{display:flex;flex-wrap:wrap;gap:4px}\n.u-tag{font-size:12px;font-weight:600;border-radius:999px;padding:1px 8px;border:1px solid var(--u-border);color:var(--u-muted);background:var(--u-surface-2)}\n.u-tag.u-need{color:var(--u-danger);border-color:color-mix(in srgb,var(--u-danger) 35%,transparent)}\n.u-tag.u-ok{color:var(--u-link);border-color:color-mix(in srgb,var(--u-highlight) 35%,transparent)}\n.u-tag.u-warn{color:var(--u-warn);border-color:color-mix(in srgb,var(--u-warn) 35%,transparent)}\n.u-list-foot{padding:10px 12px;font-size:13px;color:var(--u-muted)}\n.u-skel{height:12px;border-radius:6px;background:var(--u-surface-3);margin:6px 0}\n.u-skel-row{padding:14px 12px;border-bottom:1px solid var(--u-border)}\n.u-state{padding:22px 16px;display:flex;flex-direction:column;gap:8px;align-items:flex-start;font-size:14.5px;color:var(--u-muted)}\n.u-state h3{font-size:16px;color:var(--u-text)}\n.u-state p{max-width:52ch}\n.u-pane{display:flex;flex-direction:column;min-width:0}\n.u-pane-head{display:flex;align-items:center;gap:10px;padding:11px 16px;border-bottom:1px solid var(--u-border)}\n.u-who{display:flex;flex-direction:column;min-width:0}\n.u-who strong{font-size:15px}\n.u-who small{font-size:13px;color:var(--u-muted)}\n.u-chan{margin-left:auto;font-size:13px;color:var(--u-muted)}\n.u-feed{flex:1;overflow:auto;padding:14px 16px;display:flex;flex-direction:column;gap:8px;background:var(--u-surface-2);min-height:200px}\n.u-tpl-chip{display:inline-flex;align-items:center;gap:4px;margin-left:6px;border:1px solid var(--u-border);border-radius:999px;padding:0 7px;font-size:11px;color:var(--u-muted);background:var(--u-bg);min-height:18px}\n.u-bub.u-tpl-shown{opacity:.85;border:1px dashed color-mix(in srgb,var(--u-out-ink) 50%,transparent)}\n.u-day{align-self:center;font-size:12px;color:var(--u-muted);background:var(--u-bg);border:1px solid var(--u-border);padding:2px 10px;border-radius:999px}\n.u-older{align-self:center;border:1px solid var(--u-border);background:var(--u-bg);border-radius:999px;padding:5px 12px;font-size:13px;color:var(--u-muted);min-height:32px}\n.u-ev{align-self:center;max-width:92%;display:flex;gap:8px;align-items:flex-start;font-size:13.5px;background:var(--u-bg);border:1px solid var(--u-border);border-radius:10px;padding:8px 11px}\n.u-ev svg{width:16px;height:16px;flex:none;margin-top:2px;color:var(--u-muted)}\n.u-ev b{font-weight:600}\n.u-ev .u-meta{color:var(--u-muted);font-size:12.5px}\n.u-bub{max-width:78%;padding:8px 12px;border-radius:14px;font-size:14.5px;white-space:pre-wrap;overflow-wrap:anywhere}\n.u-bub.u-in{align-self:flex-start;background:var(--u-bg);border:1px solid var(--u-border);border-bottom-left-radius:4px}\n.u-bub.u-out{align-self:flex-end;background:var(--u-out);color:var(--u-out-ink);border-bottom-right-radius:4px}\n.u-bmeta{font-size:12px;color:var(--u-muted)}\n.u-bmeta.u-r{align-self:flex-end}\n/* ---- Composer footer (port of native ChatPage footer) ---- */\n.u-composer{display:flex;flex-direction:column;gap:8px;padding:10px 16px 12px;background:var(--u-surface-2);border-top:1px solid var(--u-border)}\n.u-composer>*:empty{display:none}\n.u-rail{align-self:center;display:inline-flex;align-items:center;gap:6px;border:0;background:transparent;color:var(--u-muted);font-size:12px;padding:2px 10px;border-radius:999px;min-height:24px}\n.u-rail:hover{color:var(--u-text);background:var(--u-surface-3)}\n.u-rail svg{width:14px;height:14px}\n.u-extras-wrap{position:relative;display:flex;flex-direction:column}\n.u-extras-wrap>.u-rail{align-self:flex-end}\n.u-extras-wrap>.u-rail[aria-expanded=\"true\"]{position:absolute;top:0;right:0;z-index:1}\n.u-extras-wrap:has(>.u-rail[aria-expanded=\"true\"]) .u-ag-h{padding-right:34px}\n.u-extras{display:contents}\n.u-extras-off{display:none}\n/* draft grid (ComposerAssistant) */\n.u-ag{display:flex;flex-direction:column;gap:6px}\n.u-ag-h{display:flex;align-items:center;gap:2px}\n.u-ag-toggle{display:inline-flex;align-items:center;gap:8px;padding:4px 8px;border:0;background:transparent;color:var(--u-muted);font-size:12px;font-weight:600;border-radius:6px;min-height:28px}\n.u-ag-toggle:hover{background:var(--u-surface-3);color:var(--u-text)}\n.u-ag-spark{display:inline-flex;color:var(--u-highlight)}.u-ag-spark svg{width:12px;height:12px}\n.u-ag-label{letter-spacing:.02em}\n.u-ag-chev{display:inline-flex;color:var(--u-muted);transition:transform .15s}.u-ag-chev svg{width:14px;height:14px}\n.u-ag-chev-open{transform:rotate(180deg)}\n.u-ag-by{font-size:12px;color:var(--u-muted);margin-left:6px}\n.u-ag-regen{display:inline-flex;align-items:center;justify-content:center;padding:4px;border:0;background:transparent;color:var(--u-muted);border-radius:6px;min-width:24px;min-height:24px}\n.u-ag-regen svg{width:11px;height:11px}\n.u-ag-regen:hover:not(:disabled){color:var(--u-highlight);background:var(--u-surface-3)}\n.u-ag-regen:disabled{opacity:.5}\n.u-ag-spinning svg{animation:u-spin 1s linear infinite}\n@keyframes u-spin{to{transform:rotate(360deg)}}\n.u-ag-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}\n.u-ag-cell{position:relative;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:2px;min-height:56px;padding:10px 12px;background:var(--u-surface-2);border:1px solid transparent;border-radius:var(--u-radius);color:var(--u-text);text-align:left;transition:background .15s,transform .15s}\n.u-ag-cell:hover:not(:disabled){background:var(--u-bg)}\n/* Gold shimmer ring on finished drafts (Ian, 2026-10-11): a gradient pseudo-element masked to the edge. Reduced motion leaves a still ring. */\n.u-ag-cell:not(.u-ag-loading)::before{content:\"\";position:absolute;inset:-1px;border-radius:calc(var(--u-radius) + 1px);padding:1.5px;pointer-events:none;background:linear-gradient(110deg,var(--u-gold) 0%,var(--u-gold-hi) 25%,var(--u-gold) 50%,var(--u-gold-hi) 75%,var(--u-gold) 100%);background-size:250% 100%;animation:u-shimmer 3.2s linear infinite;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask-composite:exclude}\n@keyframes u-shimmer{from{background-position:0% 50%}to{background-position:250% 50%}}\n.u-ag-cell[aria-checked=\"true\"]{box-shadow:0 0 0 2px var(--u-highlight)}\n.u-ag-cell[aria-checked=\"true\"]::before{display:none}\n.u-ag-lab{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;color:var(--u-highlight);text-transform:uppercase;letter-spacing:.04em}\n.u-ag-pencil{display:inline-flex;opacity:.6}.u-ag-pencil svg{width:10px;height:10px}\n.u-ag-txt{font-size:14px;line-height:1.35;color:var(--u-text);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;word-break:break-word}\n.u-ag-loading{overflow:hidden;cursor:default;pointer-events:none;justify-content:center;align-items:center;border-color:var(--u-border)}\n.u-ag-loading-txt{position:relative;z-index:1;font-size:12px;color:var(--u-muted)}\n.u-ag-shimmer{position:absolute;inset:0;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.55) 50%,transparent 100%);animation:u-ag-sheen 1.4s infinite;transform:translateX(-100%)}\n@keyframes u-ag-sheen{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}\n.u-ag-empty{font-size:12.5px;color:var(--u-muted);padding:6px 0;display:flex;gap:10px;align-items:center;flex-wrap:wrap}\n.u-ag-foot{font-size:12.5px;color:var(--u-muted);margin:0}\n/* attachments */\n.u-attach-row{align-items:center;gap:8px;flex-wrap:wrap}\n.u-limits{font-size:12px;color:var(--u-muted)}\n.u-limits-warn{color:var(--u-warn)}\n.u-chips{display:flex;flex-wrap:wrap;gap:8px;padding:4px 0}\n.u-chip{display:inline-flex;align-items:center;gap:6px;max-width:240px;padding:4px 8px;border-radius:999px;background:var(--u-bg);border:1px solid var(--u-border);font-size:12px;color:var(--u-muted)}\n.u-chip svg{width:13px;height:13px;flex:none}\n.u-chip-err{border-color:var(--u-danger);color:var(--u-danger)}\n.u-chip-errtxt{font-size:10px}\n.u-chip-thumb{width:22px;height:22px;object-fit:cover;border-radius:5px}\n.u-chip-name{max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.u-chip-x{display:inline-flex;align-items:center;border:0;background:none;color:inherit;padding:2px;min-height:0}\n.u-chip-x svg{width:12px;height:12px}\n.u-spin{animation:u-spin 1s linear infinite}\n.u-rec{display:flex;align-items:center;gap:8px;padding:6px 10px;border-radius:9px;background:var(--u-bg);font-size:12px;color:var(--u-muted)}\n.u-rec-dot{width:8px;height:8px;border-radius:50%;background:#ff3b30;animation:u-rec-pulse 1.2s ease-in-out infinite}\n@keyframes u-rec-pulse{0%,100%{opacity:1}50%{opacity:.35}}\n.u-rec-btn{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--u-border);background:var(--u-bg);color:var(--u-text);border-radius:999px;width:28px;height:28px;min-height:0;padding:0}\n.u-rec-btn svg{width:14px;height:14px}\n.u-rec-done{background:var(--u-accent);color:var(--u-accent-ink);border-color:var(--u-accent)}\n.u-sms-note{font-size:12px;color:var(--u-warn)}\n/* editor row: + button, pill with the editor and the inline send/\u2728 */\n.u-c-row{display:flex;align-items:flex-end;gap:8px;width:100%}\n.u-attach-wrap{position:relative;flex:none}\n.u-attach-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;min-height:0;padding:0;margin-bottom:3px;border:1px solid var(--u-border);border-radius:999px;background:var(--u-bg);color:var(--u-muted);transition:color .15s,background .15s}\n.u-attach-btn svg{width:18px;height:18px}\n.u-attach-btn:hover:not(:disabled){color:var(--u-highlight);background:var(--u-highlight-soft)}\n.u-attach-btn:disabled{opacity:.45}\n.u-pill{position:relative;flex:1;min-width:0;display:flex;align-items:flex-end;gap:6px;background:var(--u-bg);border:1px solid var(--u-border);border-radius:14px;padding:4px 4px 4px 8px}\n.u-pill-grow{flex:1;min-width:0}\n.u-pill .u-editor{border:0;background:transparent;border-radius:0;padding:6px 4px;min-height:38px;max-height:220px;resize:none}\n.u-pill .u-editor:focus{outline:none}\n.u-pill:focus-within{border-color:var(--u-highlight)}\n/* Locked pill (stock intro, nothing to edit): gold shimmer ring like the draft cells. Reduced motion leaves a still ring. */\n.u-pill-locked{border-color:transparent}\n.u-pill-locked::before{content:\"\";position:absolute;inset:-1px;border-radius:15px;padding:1.5px;pointer-events:none;background:linear-gradient(110deg,var(--u-gold) 0%,var(--u-gold-hi) 25%,var(--u-gold) 50%,var(--u-gold-hi) 75%,var(--u-gold) 100%);background-size:250% 100%;animation:u-shimmer 3.2s linear infinite;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask-composite:exclude}\n.u-pill-locked:focus-within{border-color:transparent}\n.u-editor-locked{cursor:default;caret-color:transparent}\n.u-send-btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;min-height:0;padding:0;flex:none;border-radius:999px;border:0;background:var(--u-accent);color:var(--u-accent-ink);transition:transform .15s,opacity .15s}\n.u-send-btn svg{width:15px;height:15px;stroke:var(--u-accent-ink)}\n.u-send-btn:hover:not(:disabled){transform:translateY(-1px)}\n.u-send-btn:disabled{opacity:.4;cursor:not-allowed}\n.u-gen-btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;min-height:0;padding:0;flex:none;border:0;border-radius:999px;background:transparent;color:var(--u-highlight);transition:background .15s}\n.u-gen-btn svg{width:16px;height:16px}\n.u-gen-btn:hover:not(:disabled){background:var(--u-highlight-soft)}\n.u-gen-btn:disabled{opacity:.4}\n.u-menu-backdrop{position:fixed;inset:0;z-index:40}\n.u-menu{position:absolute;bottom:calc(100% + 6px);z-index:41;display:flex;flex-direction:column;min-width:150px;padding:4px;border-radius:12px;background:var(--u-bg);border:1px solid var(--u-border);box-shadow:0 10px 30px rgba(0,0,0,.18)}\n.u-menu-left{left:0}.u-menu-right{right:0}\n.u-menu-title{padding:6px 12px 4px;font-size:11.5px;font-weight:600;color:var(--u-muted)}\n.u-menu-titlerow{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:4px 6px 2px 0}\n.u-menu-titlerow .u-menu-title{padding:2px 12px 2px}\n.u-menu-cfg{display:inline-flex;align-items:center;justify-content:center;padding:4px;min-width:24px;min-height:24px;border:0;background:none;color:var(--u-muted);border-radius:6px}\n.u-menu-cfg svg{width:13px;height:13px}\n.u-menu-cfg:hover{color:var(--u-text);background:var(--u-surface-3)}\n/* proactive options editor */\n.u-po-help{font-size:13.5px;color:var(--u-muted);margin:0 0 10px}\n.u-po-list{display:flex;flex-direction:column;gap:10px}\n.u-po-row{border:1px solid var(--u-border);border-radius:12px;padding:10px;display:flex;flex-direction:column;gap:8px;background:var(--u-surface-2)}\n.u-po-top{display:flex;align-items:center;gap:6px}\n.u-po-label{flex:1;min-width:0;border:1px solid var(--u-border);border-radius:8px;padding:7px 10px;font:inherit;font-size:14px;background:var(--u-bg);color:var(--u-text)}\n.u-po-text{width:100%;border:1px solid var(--u-border);border-radius:8px;padding:7px 10px;font:inherit;font-size:13.5px;background:var(--u-bg);color:var(--u-text);resize:vertical}\n.u-po-iconwrap{position:relative;flex:none}\n.u-po-iconbtn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;min-height:0;padding:0;border:1px solid var(--u-border);border-radius:8px;background:var(--u-bg);color:var(--u-text)}\n.u-po-iconbtn svg{width:15px;height:15px}\n.u-po-iconbtn:disabled{opacity:.4}\n.u-po-iconbtn-on{border-color:var(--u-highlight);box-shadow:0 0 0 1px var(--u-highlight);color:var(--u-highlight)}\n.u-po-remove:hover{color:var(--u-danger);border-color:var(--u-danger)}\n.u-po-iconpick{position:absolute;top:calc(100% + 4px);left:0;z-index:5;display:grid;grid-template-columns:repeat(6,32px);gap:4px;padding:6px;background:var(--u-bg);border:1px solid var(--u-border);border-radius:10px;box-shadow:0 10px 30px rgba(0,0,0,.18)}\n.u-po-add{margin-top:10px;border:1px dashed var(--u-border);background:transparent;border-radius:9px;padding:8px 12px;font-weight:600;color:var(--u-link);min-height:38px;width:100%}\n.u-po-actions{display:flex;gap:8px;align-items:center;margin-top:12px;flex-wrap:wrap}\n.u-menu-item{display:flex;align-items:center;gap:8px;width:100%;padding:8px 12px;border:0;border-radius:8px;background:none;text-align:left;font-size:14px;color:var(--u-text);min-height:36px}\n.u-menu-item:hover{background:var(--u-surface-3)}\n.u-menu-purpose svg{width:14px;height:14px;color:var(--u-highlight);flex:none}\n/* inbox rows (native ClientRow) */\n.u-row-open{position:relative}\n.u-r-ind{position:absolute;left:3px;top:50%;transform:translateY(-50%);width:20px;display:grid;place-items:center}\n.u-rows .u-row-open{padding-left:26px}\n.u-r-dot{width:8px;height:8px;border-radius:50%;background:var(--u-highlight)}\n.u-r-badge{min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--u-highlight);color:#fff;font-size:11px;font-weight:700;display:grid;place-items:center}\n/* The open conversation is the only row with a colour: a clear shade and an accent bar on the left\n edge, like WhatsApp's selected chat. Unread shows by the dot and bold name, never a tint. Built\n from the text colour so it reads on any host theme, light or dark. */\n.u-rows li:has(.u-row-open[aria-current=\"true\"]){background:color-mix(in srgb,var(--u-text) 8%,var(--u-bg));box-shadow:inset 3px 0 0 var(--u-accent)}\n.u-rows li:has(.u-row-open[aria-current=\"true\"]) .u-row-open{background:transparent}\n.u-r-name-unread{font-weight:700}\n.u-r-follow,.u-r-fail{display:inline-flex;align-items:center;flex:none}\n.u-r-follow svg,.u-r-fail svg{width:13px;height:13px}\n.u-r-follow{color:var(--u-warn)}\n.u-r-fail{color:var(--u-danger)}\n.u-r-prev{display:inline-flex;align-items:center;gap:5px;max-width:100%}\n.u-r-pico{display:inline-flex;flex:none}.u-r-pico svg{width:11px;height:11px}\n.u-r-prev-in .u-r-ptxt{color:var(--u-text)}\n.u-r-prev-in .u-r-pico{color:var(--u-highlight)}\n.u-r-prev-out .u-r-ptxt,.u-r-prev-out .u-r-pico{color:var(--u-muted)}\n.u-r-prev-ev .u-r-ptxt,.u-r-prev-ev .u-r-pico{color:var(--u-muted);font-style:italic}\n.u-r-ptxt{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}\n.u-r-hosttags{flex:1 0 100%;display:flex;flex-wrap:wrap;gap:4px;padding:0 12px 10px 72px;margin-top:-6px}\n.u-tag-connect{cursor:pointer;font:inherit;font-size:12px;font-weight:600;line-height:inherit}\n.u-tag-connect:hover{border-color:var(--u-highlight);color:var(--u-highlight);background:var(--u-highlight-soft)}\n.u-r-quick{flex:1 0 100%;display:flex;justify-content:flex-end;align-items:center;min-width:0;padding:0 12px 10px 72px}\n.u-qsend{display:inline-flex;align-items:center;gap:6px;max-width:100%;border:1px solid var(--u-highlight);background:var(--u-highlight);color:#fff;border-radius:999px;padding:4px 11px;font-size:12px;font-weight:600;min-height:26px}\n.u-qsend:hover:not(:disabled){filter:brightness(1.08)}\n/* Bulk generate states in the quick-send slot (native: Generating\u2026 / Generation failed) */\n.u-qsend.u-qsend-bulk{background:var(--u-surface-2);border-color:var(--u-border);color:var(--u-muted);cursor:default}\n.u-qsend-busy svg{width:12px;height:12px}\n/* Bulk generate sheet (native BulkGenerateModal) */\n.u-bulk-head{display:flex;align-items:flex-start;gap:10px;margin-bottom:6px}\n.u-bulk-spark{color:var(--u-highlight);display:grid;place-items:center;padding-top:9px}\n.u-bulk-spark svg{width:18px;height:18px}\n.u-bulk-titles{flex:1;min-width:0}\n.u-bulk-titles h3{margin:4px 0 2px;font-size:18px}\n.u-bulk-sub{margin:0;font-size:13.5px;color:var(--u-muted)}\n.u-bulk-sub .u-linkbtn{font-size:13px}\n.u-bulk-sec{margin-top:14px}\n.u-bulk-sechead{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}\n.u-bulk-sechead .u-linkbtn{font-size:13px}\n.u-bulk-label{font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--u-muted)}\n.u-bulk-chips{display:flex;flex-wrap:wrap;gap:6px;max-height:180px;overflow:auto;padding:2px}\n.u-bulk-empty{font-size:13px;color:var(--u-muted)}\n.u-bulk-chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--u-border);background:var(--u-bg);border-radius:999px;padding:3px 10px 3px 3px;font-size:13px;color:var(--u-muted);min-height:30px;max-width:100%}\n.u-bulk-chip-on{border-color:var(--u-highlight);background:var(--u-highlight-soft);color:var(--u-text)}\n.u-bulk-av{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;color:#fff;font-size:10px;font-weight:700;flex:none}\n.u-bulk-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.u-bulk-meta{font-size:11px;color:var(--u-muted)}\n.u-bulk-prompt{width:100%;box-sizing:border-box;border:1px solid var(--u-border);border-radius:10px;padding:10px 12px;font:inherit;font-size:14px;color:var(--u-text);background:var(--u-bg);resize:vertical}\n.u-bulk-prompt:focus{outline:none;border-color:var(--u-accent)}\n.u-bulk-hist{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:8px}\n.u-bulk-histlabel{font-size:12px;color:var(--u-muted)}\n.u-bulk-histbtn{border:1px solid var(--u-border);background:var(--u-surface-2);border-radius:999px;padding:3px 10px;font-size:12px;color:var(--u-text);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.u-bulk-foot{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}\n.u-bulk-go{display:inline-flex;align-items:center;gap:6px}\n.u-bulk-go svg{width:14px;height:14px}\n/* Gold shimmer ring on a ready quick reply, same as the draft cells. Countdown, sending, sent and error states drop it. */\n.u-qsend{position:relative}\n.u-qsend:not(.u-qsend-count):not(.u-qsend-sending):not(.u-qsend-sent):not(.u-qsend-err):not(:disabled)::before{content:\"\";position:absolute;inset:-2px;border-radius:999px;padding:2px;pointer-events:none;background:linear-gradient(110deg,var(--u-gold) 0%,var(--u-gold-hi) 25%,var(--u-gold) 50%,var(--u-gold-hi) 75%,var(--u-gold) 100%);background-size:250% 100%;animation:u-shimmer 3.2s linear infinite;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask-composite:exclude}\n.u-qsend svg{width:12px;height:12px;flex:none}\n.u-qsend-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n.u-qsend-count{border-color:var(--u-warn);background:color-mix(in srgb,var(--u-warn) 12%,transparent);color:var(--u-warn)}\n.u-qsend-sent{border-color:var(--u-accent);background:var(--u-accent);color:var(--u-accent-ink)}\n.u-qsend-err{border-color:var(--u-danger);color:var(--u-danger);background:transparent}\n.u-qsend:disabled{opacity:.9}\n/* delivery receipts */\n.u-rcpt{display:inline-flex;align-items:center;margin-left:4px;color:var(--u-muted)}\n.u-rcpt svg{width:13px;height:13px}\n.u-rcpt-ok{color:var(--u-highlight)}\n.u-rcpt-bad{color:var(--u-danger)}\n/* inline reply drafts under the latest client message */\n.u-inl{align-self:flex-start;max-width:78%;display:flex;flex-direction:column;gap:6px;margin-top:2px}\n.u-inl-h{display:flex;align-items:center;gap:4px}\n.u-inl-toggle{display:inline-flex;align-items:center;gap:6px;border:0;background:transparent;color:var(--u-muted);font-size:12px;font-weight:600;padding:2px 6px;border-radius:6px;min-height:24px}\n.u-inl-toggle:hover{background:var(--u-surface-3);color:var(--u-text)}\n.u-inl-notnow{border:0;background:transparent;color:var(--u-muted);font-size:12px;padding:2px 6px;min-height:24px;border-radius:6px}\n.u-inl-notnow:hover{color:var(--u-text);background:var(--u-surface-3)}\n.u-inl-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;width:100%}\n.u-inl-cell{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-width:0;border:1px solid var(--u-border);background:var(--u-bg);border-radius:12px;padding:7px 10px;text-align:left;color:var(--u-text)}\n/* Gold shimmer ring, same as the composer's draft cells. Reduced motion leaves a still ring. */\n.u-inl-cell::before{content:\"\";position:absolute;inset:-1px;border-radius:13px;padding:1.5px;pointer-events:none;background:linear-gradient(110deg,var(--u-gold) 0%,var(--u-gold-hi) 25%,var(--u-gold) 50%,var(--u-gold-hi) 75%,var(--u-gold) 100%);background-size:250% 100%;animation:u-shimmer 3.2s linear infinite;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask-composite:exclude}\n.u-inl-cell:hover{border-color:var(--u-highlight)}\n.u-inl-txt{font-size:13px;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}\n/* Item action row (native InlineDrafts): under client messages, and inside activity cards. */\n.u-ia{align-self:flex-start;width:78%;display:flex;flex-direction:column;gap:6px;margin-top:2px}\n.u-ev .u-ia{width:100%;margin-top:6px}\n.u-ev>div{flex:1}\n.u-ev>div{min-width:0}\n.u-ev .u-ia svg{width:13px;height:13px;margin-top:0}\n.u-ia-h{display:flex;flex-wrap:wrap;align-items:center;gap:2px;margin-left:-6px}\n.u-ia-h .u-inl-toggle svg{width:13px;height:13px}\n.u-ia-ai{display:flex;flex-direction:column;gap:6px;border:1px solid var(--u-border);background:var(--u-bg);border-radius:12px;padding:10px;min-width:min(420px,100%)}\n.u-ia-ai-label{font-size:12.5px;font-weight:700}\n.u-ia-ai-hint{font-size:12px;color:var(--u-muted)}\n.u-ia-ai-note{font-size:12px;color:var(--u-warn);background:color-mix(in srgb,var(--u-warn) 10%,transparent);border-radius:8px;padding:6px 8px}\n.u-ia-ai textarea{font:inherit;font-size:13.5px;color:var(--u-text);background:var(--u-surface-2);border:1px solid var(--u-border);border-radius:8px;padding:8px 10px;resize:vertical;min-height:64px}\n.u-ia-ai-row{display:flex;align-items:center;gap:10px;font-size:12px}\n.u-ia-ai-count{color:var(--u-muted);font-variant-numeric:tabular-nums}\n.u-ia-ai-err{color:var(--u-danger)}\n.u-cx-h4{display:flex;align-items:center;gap:6px}\n.u-cx-info{display:inline-grid;place-items:center;width:22px;height:22px;border:0;border-radius:999px;background:transparent;color:var(--u-muted);padding:0;cursor:pointer}\n.u-cx-info:hover{color:var(--u-highlight);background:var(--u-highlight-soft)}\n.u-cx-info svg{width:15px;height:15px}\n.u-cx-head{display:flex;align-items:center;gap:10px}\n.u-cx-mark{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:999px;color:#fff;flex:none}\n.u-cx-rule{margin:10px 0}\n.u-cx-rule h4{margin:0 0 3px;font-size:14px}\n.u-cx-rule p{margin:0;font-size:13.5px;line-height:1.5;color:var(--u-muted)}\n.u-cx-sec{display:block;margin-top:14px;font-size:13px;font-weight:600}\n.u-cx-mocks{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:8px 0 10px}\n.u-cx-col{display:flex;flex-direction:column;gap:4px;min-width:0}\n.u-cx-label{font-size:11.5px;font-weight:500;color:var(--u-muted)}\n.u-cx-phone{border:1px solid var(--u-border);border-radius:12px;padding:10px;display:flex;flex-direction:column;gap:8px;min-height:120px}\n.u-cx-coach{background:var(--u-surface-2)}\n.u-cx-coach-bub{align-self:flex-end;max-width:95%;background:var(--u-highlight);color:#fff;border-radius:12px;border-bottom-right-radius:4px;padding:8px 10px;font-size:12px;line-height:1.45}\n.u-cx-tpl{display:inline-block;margin-top:6px;padding:2px 8px;border-radius:999px;background:rgba(255,255,255,.22);font-size:10px;font-weight:500}\n.u-cx-client{background:#e5ddd5;border-color:#d5cdc4}\n.u-cx-client-bub{align-self:flex-start;max-width:95%;background:#fff;color:#1c1c1e;border-radius:12px;border-top-left-radius:4px;padding:8px 10px;font-size:12px;line-height:1.45;box-shadow:0 1px 1px rgba(0,0,0,.08)}\n.u-cx-link{display:block;margin-top:6px;color:#027eb5;font-weight:500}\n.u-cx-meta{font-size:10px;color:var(--u-muted);text-align:center;margin-top:auto}\n.u-cx-client .u-cx-meta{color:#7a7269}\n.u-cx-foot{font-size:12px;line-height:1.5;color:var(--u-muted)}\n.u-offer-who{display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--u-muted);margin:2px 0 8px}\n.u-offer-avs{display:inline-flex}\n.u-offer-avs .u-av{border:2px solid var(--u-bg);margin-left:-6px}\n.u-offer-avs .u-av:first-child{margin-left:0}\n.u-offer-list{list-style:none;margin:10px 0;padding:0;display:flex;flex-direction:column;gap:7px;font-size:13.5px}\n.u-offer-list li{display:flex;gap:8px;align-items:flex-start}\n.u-offer-tick{display:inline-flex;color:var(--u-accent);flex:none;margin-top:2px}\n.u-offer-tick svg{width:15px;height:15px}\n.u-ai-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}\n.u-ai-plan{display:flex;align-items:center;gap:10px;flex-wrap:wrap;border:1px solid var(--u-border);border-radius:10px;padding:8px 11px;font-size:13px;margin:0 0 10px}\n.u-ai-plan .u-linkbtn{font-size:13px}\n.u-ai-err{color:var(--u-danger,#b42318);font-size:12.5px;width:100%}\n.u-ai-disclaimer{display:flex;gap:8px;align-items:flex-start;background:var(--u-highlight-soft);border-radius:10px;padding:9px 11px;font-size:12.5px;line-height:1.45;margin:6px 0 10px}\n.u-ai-disclaimer svg{width:15px;height:15px;flex:none;margin-top:2px;color:var(--u-highlight)}\n.u-ai-tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--u-border);margin-bottom:10px}\n.u-ai-tab{border:0;background:transparent;padding:7px 10px;font-size:13px;font-weight:600;color:var(--u-muted);border-bottom:2px solid transparent;margin-bottom:-1px;border-radius:0}\n.u-ai-tab-on{color:var(--u-text);border-bottom-color:var(--u-highlight)}\n.u-ai-body{display:flex;flex-direction:column;gap:14px}\n.u-ai-sec{display:flex;flex-direction:column;gap:6px}\n.u-ai-sec h4{margin:0;font-size:14px}\n.u-ai-area,.u-ai-input{font:inherit;font-size:13.5px;color:var(--u-text);background:var(--u-surface-2);border:1px solid var(--u-border);border-radius:8px;padding:8px 10px;width:100%;box-sizing:border-box}\n.u-ai-area{resize:vertical}\n.u-ai-hr{border:0;border-top:1px solid var(--u-border);margin:8px 0}\n.u-ai-form{display:flex;flex-direction:column;gap:6px;border:1px solid var(--u-border);border-radius:10px;padding:10px}\n.u-ai-form label{font-size:12.5px;font-weight:700}\n.u-ai-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}\n.u-ai-list li{border:1px solid var(--u-border);border-radius:10px;padding:8px 10px;display:flex;flex-direction:column;gap:3px}\n.u-ai-item-head{display:flex;align-items:center;gap:6px;font-size:13px}\n.u-ai-check{color:var(--u-accent);display:inline-flex}\n.u-ai-check svg{width:14px;height:14px}\n.u-ai-tags{display:flex;flex-wrap:wrap;gap:4px}\n.u-ai-k{font-size:11.5px;font-weight:700;color:var(--u-muted);text-transform:uppercase;letter-spacing:.04em}\n.u-ai-v{font-size:13.5px;white-space:pre-wrap}\n.u-ai-voice{display:flex;flex-direction:column;gap:6px}\n.u-ai-locked{border:1px dashed var(--u-border);border-radius:10px;padding:12px;font-size:13px;color:var(--u-muted)}\n.u-ai-locked strong{color:var(--u-text)}\n.u-ai-field{display:flex;flex-direction:column;gap:3px;margin-top:10px}\n.u-ai-field textarea{font:inherit;font-size:13.5px;color:var(--u-text);background:var(--u-surface-2);border:1px solid var(--u-border);border-radius:8px;padding:8px 10px;resize:vertical}\n.u-ai-labelrow{display:flex;justify-content:space-between;gap:8px;font-size:13px;font-weight:700}\n.u-ai-sub{margin-top:16px!important;font-size:12.5px;font-weight:700;color:var(--u-muted)}\n.u-ai-ok{color:var(--u-accent);font-size:13px;font-weight:600}\n.u-ai-more{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;margin-top:16px;padding-top:12px;border-top:1px solid var(--u-border);font-size:13px;color:var(--u-muted)}\n.u-ia-save{border:1px solid var(--u-accent);background:var(--u-accent);color:var(--u-accent-ink);border-radius:8px;padding:5px 12px;font-weight:600;font-size:13px;min-height:30px}\n.u-ia-save:disabled{opacity:.5}\n/* WhatsApp closed window */\n.u-wa{display:flex;gap:8px;align-items:flex-start;padding:8px 12px;border-radius:9px;background:color-mix(in srgb,var(--u-warn) 10%,var(--u-bg));border:1px solid color-mix(in srgb,var(--u-warn) 35%,transparent);font-size:13px;line-height:1.4}\n.u-wa-ico{display:inline-flex;color:var(--u-warn);flex:none;margin-top:2px}.u-wa-ico svg{width:14px;height:14px}\n.u-wa-body{min-width:0}\n.u-wa-more{display:inline-flex;align-items:center;gap:2px;border:0;background:transparent;color:var(--u-link);font-weight:600;font-size:12.5px;padding:0 4px;min-height:0;margin-left:4px}\n.u-wa-more svg{width:12px;height:12px}\n.u-wa-why{margin:6px 0 0;color:var(--u-muted);font-size:12.5px}\n.u-ghost{display:flex;flex-direction:column;align-items:flex-end;gap:2px;opacity:.7}\n.u-ghost-bub{border:1px dashed color-mix(in srgb,var(--u-out-ink) 50%,transparent);background:color-mix(in srgb,var(--u-out) 60%,transparent)}\n.u-ghost-cut{font-weight:700}\n/* beginning of history */\n.u-hist-start{align-self:center;font-size:12px;color:var(--u-muted);padding:4px 0}\n/* header badges */\n.u-chan-badge{display:inline-flex;align-items:center;justify-content:center;position:absolute;right:-2px;bottom:-2px;width:16px;height:16px;border-radius:50%;color:#fff;border:2px solid var(--u-bg);box-sizing:content-box}\n.u-chan-wa{background:#25d366}\n.u-chan-sms{background:var(--u-highlight)}\n.u-r-av{grid-row:span 3;align-self:start}\n.u-r-av .u-av{grid-row:auto}\n.u-av-wrap{position:relative;display:inline-flex;flex:none}\n.u-head-status{margin-left:4px}\n/* attachments on thread messages */\n.u-att{display:flex;flex-wrap:wrap;gap:6px;max-width:78%}\n.u-att-out{align-self:flex-end;justify-content:flex-end}.u-att-in{align-self:flex-start}\n.u-att-img{border:0;background:none;padding:0;min-height:0;cursor:zoom-in}\n.u-att-img img{display:block;max-width:220px;max-height:220px;border-radius:12px;border:1px solid var(--u-border)}\n.u-att-desc{display:block;font-size:12px;color:var(--u-muted);max-width:220px}\n.u-att-video{display:block;max-width:280px;max-height:320px;border-radius:12px;background:#000;object-fit:contain}\n.u-att-audio{display:flex;flex-direction:column;gap:4px;max-width:300px}\n.u-att-player{width:100%;max-width:300px}\n.u-att-trans{font-size:13px;color:var(--u-muted);font-style:italic}\n.u-lightbox{position:fixed;inset:0;z-index:60;background:rgba(0,0,0,.85);display:grid;place-items:center;padding:24px}\n.u-lightbox img{max-width:100%;max-height:100%;border-radius:8px}\n.u-lightbox-x{position:absolute;top:16px;right:16px;width:40px;height:40px;border-radius:999px;border:0;background:rgba(255,255,255,.15);color:#fff;display:grid;place-items:center}\n.u-lightbox-x svg{width:18px;height:18px}\n.u-att-file{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:999px;background:var(--u-bg);border:1px solid var(--u-border);font-size:13px;color:var(--u-link);text-decoration:none}\n.u-att-file svg{width:14px;height:14px}\n.u-editor{width:100%;border:1px solid var(--u-border);border-radius:var(--u-radius);padding:10px 12px;min-height:64px;font:inherit;font-size:14.5px;background:var(--u-bg);color:var(--u-text);resize:vertical}\n.u-editor::placeholder{color:var(--u-muted)}\n.u-editor-rich{min-height:64px;max-height:220px;overflow-y:auto;white-space:normal;word-break:break-word;line-height:1.5}\n.u-editor-rich:empty::before{content:attr(data-placeholder);color:var(--u-muted);pointer-events:none}\n.u-editor-rich[aria-disabled=\"true\"]{opacity:.6}\n/* Draft pills, ported from native: one per clause, hue hashed from the text, \u00D7 drops it. */\n.u-seg{display:inline;padding:1px 2px;margin:0 2px;border-radius:3px;background:hsl(var(--u-seg-h) 55% var(--u-seg-l));color:var(--u-text);font-weight:500;user-select:none;transition:opacity .15s ease}\n.u-seg:hover{opacity:.85}\n/* Stock intro: no pill highlight, the text itself shimmers gold (gradient clipped to the glyphs). Reduced motion leaves a still gold gradient. */\n.u-seg-lock{cursor:default;user-select:text;padding:0;margin:0;border-radius:0;font-weight:600;background:linear-gradient(110deg,var(--u-gold-ink) 0%,var(--u-gold-ink-hi) 30%,var(--u-gold-ink) 50%,var(--u-gold-ink-hi) 70%,var(--u-gold-ink) 100%);background-size:250% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;animation:u-shimmer 4s linear infinite}\n.u-seg-lock:hover{opacity:1}\n.u-seg-x{display:inline-flex;align-items:center;justify-content:center;margin-left:4px;padding:0 8px;min-width:24px;min-height:22px;cursor:pointer;font-size:15px;font-weight:700;color:#111;background:rgba(255,200,0,.8);border-radius:999px;line-height:1;vertical-align:middle;touch-action:manipulation;-webkit-tap-highlight-color:transparent}\n.u-seg-x:hover,.u-seg-x:active,.u-seg-x:focus-visible{color:#fff;background:#c00;outline:none}\n.u-editor:disabled{opacity:.6}\n.u-send{border:0;background:var(--u-accent);color:var(--u-accent-ink);font-weight:700;border-radius:9px;padding:8px 16px;min-height:40px}\n.u-send:disabled{opacity:.45}\n.u-gen{border:1px solid var(--u-border);background:var(--u-bg);border-radius:9px;padding:8px 14px;font-weight:600;min-height:40px}\n.u-gen:disabled{opacity:.5}\n.u-note{margin-top:8px;border-radius:9px;padding:9px 12px;font-size:13.5px;display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center}\n.u-note-err{background:color-mix(in srgb,var(--u-danger) 9%,var(--u-bg));border:1px solid color-mix(in srgb,var(--u-danger) 35%,transparent)}\n.u-note-warn{background:color-mix(in srgb,var(--u-warn) 10%,var(--u-bg));border:1px solid color-mix(in srgb,var(--u-warn) 35%,transparent)}\n.u-note-ok{background:var(--u-highlight-soft)}\n.u-banner{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:10px 16px;font-size:14px;border-bottom:1px solid var(--u-border);background:var(--u-accent-soft)}\n.u-headbtn{border:1px solid var(--u-border);background:var(--u-bg);border-radius:8px;padding:6px 11px;font-size:14px;font-weight:600;min-height:34px}\n.u-headbtn:disabled{opacity:.5}\n.u-connect{margin-left:4px;display:inline-flex;align-items:center;gap:7px;flex:none}\n/* AI settings + full screen: the right end of the conversation header (no panel header row). */\n.u-head-acts{margin-left:auto;display:inline-flex;align-items:center;gap:6px;flex:none}\n.u-chan ~ .u-head-acts{margin-left:6px}\n.u-pane-head-empty{justify-content:flex-end;min-height:62px;box-sizing:border-box}\n/* On wide panels the toolbar leaves them to the conversation header. */\n.u-toolbar-acts{display:none}\n.u-toolbar .u-addbtn{flex:none}\n.u-connect svg{flex:none}\n.u-example{width:100%;border:1px dashed var(--u-border);border-radius:12px;padding:12px;background:var(--u-surface-2);display:flex;flex-direction:column}\n.u-ex-lab{font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--u-muted);margin-bottom:6px}\n.u-sheet-wrap{position:absolute;inset:0;background:rgba(10,10,10,.45);display:grid;place-items:center;padding:16px;z-index:5}\n.u-sheet{width:min(560px,100%);max-height:100%;overflow:auto;background:var(--u-bg);color:var(--u-text);border:1px solid var(--u-border);border-radius:16px;box-shadow:0 18px 50px rgba(0,0,0,.25);padding:20px;outline:none}\n.u-eyebrow{font-size:12px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--u-muted)}\n.u-sheet h3{font-size:21px;margin:6px 0 8px}\n.u-lede{font-size:14.5px;color:var(--u-muted)}\n.u-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px;align-items:center}\n.u-secondary{border:1px solid var(--u-border);background:var(--u-bg);border-radius:9px;padding:8px 14px;font-weight:600;min-height:40px}\n.u-steps{display:flex;gap:6px;margin-bottom:12px}\n.u-steps span{flex:1;height:4px;border-radius:999px;background:var(--u-surface-3)}\n.u-steps span.u-on{background:var(--u-highlight)}\n.u-plan{margin-top:14px;border:1px solid var(--u-highlight);border-radius:12px;padding:14px;background:var(--u-highlight-soft)}\n.u-plan-name{font-weight:700;font-size:15px}\n.u-plan-price{font-size:30px;font-weight:700;margin-top:2px}\n.u-plan-price small{font-size:15px;font-weight:500;color:var(--u-muted)}\n.u-plan-vs{font-size:13.5px;color:var(--u-muted)}\n.u-feats{margin:12px 0 0;padding-left:18px;font-size:14px}\n.u-feats li{margin:3px 0}\n.u-chanbox{margin-top:12px;border:1px solid var(--u-border);border-radius:12px;padding:11px 13px}\n.u-chanbox h4{font-size:15px}\n.u-chanbox p{font-size:14px;margin-top:4px;color:var(--u-text)}\n.u-tick{display:flex;gap:10px;align-items:flex-start;margin-top:12px;font-size:14.5px}\n.u-tick input{width:20px;height:20px;margin-top:1px;accent-color:var(--u-highlight)}\n.u-field{margin-top:12px;display:flex;flex-direction:column;gap:5px}\n.u-field>label,.u-field>span:first-child{font-size:13.5px;font-weight:600}\n.u-field select{border:1px solid var(--u-border);background:var(--u-bg);color:var(--u-text);border-radius:9px;padding:9px 11px;font:inherit;min-height:42px}\n.u-field input{border:1px solid var(--u-border);background:var(--u-bg);color:var(--u-text);border-radius:9px;padding:9px 11px;font:inherit;min-height:42px}\n.u-field input[aria-invalid=\"true\"]{border-color:var(--u-danger)}\n.u-hint{font-size:13px;color:var(--u-muted)}\n.u-err{font-size:13px;color:var(--u-danger)}\n.u-chanpick{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}\n.u-chanpick button{border:1px solid var(--u-border);background:var(--u-bg);border-radius:10px;padding:9px;text-align:left;min-height:56px}\n.u-chanpick button[aria-checked=\"true\"]{border-color:var(--u-highlight);box-shadow:0 0 0 1px var(--u-highlight)}\n.u-chanpick b{display:block;font-size:14.5px}\n.u-chanpick small{font-size:12.5px;color:var(--u-muted)}\n@media (prefers-reduced-motion:reduce){.uplift *{transition:none!important;animation:none!important}}\n@container panel (max-width:759px){\n .u-cx-mocks{grid-template-columns:1fr}\n .u-inl-grid{grid-template-columns:1fr}\n .u-ia{width:100%}\n .u-split{grid-template-columns:1fr;height:min(80vh,720px)}\n .u-split.u-show-thread .u-list{display:none}\n .u-split:not(.u-show-thread) .u-pane{display:none}\n .u-back{display:inline-flex}\n .u-toolbar-acts{display:inline-flex;flex:none;margin-left:auto}\n .u-toolbar-acts .u-head-acts{margin-left:0}\n /* Phone widths: the toolbar wraps its buttons rather than cutting them off; the conversation header\n keeps name, Connect and the buttons on one line by dropping the phone number and Connect's label. */\n .u-toolbar{flex-wrap:wrap;row-gap:6px}\n .u-sortgroup button{padding:4px 7px}\n .u-pane-head{gap:8px;padding:10px 12px}\n .u-pane-head .u-chan{display:none}\n .u-who{flex:0 1 auto}\n .u-who strong,.u-who small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n .u-connect{padding:6px 9px}\n .u-connect span{display:none}\n .u-ag-grid{grid-template-columns:1fr}\n .u-c-actions .u-meta{flex-basis:100%}\n .u-sheet-wrap{padding:0}\n .u-sheet{width:100%;height:100%;border-radius:0}\n}\n";
|
|
12
|
+
export declare const upliftStyles = "\n:where(.uplift){\n --u-bg:#ffffff;--u-surface:#ffffff;--u-surface-2:#fafafa;--u-surface-3:#f4f4f5;\n --u-text:#262626;--u-muted:#666666;--u-border:rgba(0,0,0,.08);\n --u-accent:#0f8a63;--u-accent-soft:#e3f5ee;--u-accent-ink:#ffffff;--u-link:#0b6b4c;\n --u-highlight:var(--u-accent);--u-highlight-soft:var(--u-accent-soft);\n --u-gold:#c9971c;--u-gold-hi:#f7e2a0;--u-gold-ink:#8a6410;--u-gold-ink-hi:#c9971c;\n --u-seg-l:88%;\n --u-danger:#c10007;--u-warn:#bb4d00;--u-out:#eaf1ff;--u-out-ink:#12244d;\n --u-font:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Inter,sans-serif;--u-radius:10px;\n}\n:where(.uplift[data-theme=\"dark\"],[data-theme=\"dark\"] .uplift){\n --u-bg:#111111;--u-surface:#111111;--u-surface-2:#0a0a0a;--u-surface-3:#1a1a1a;\n --u-text:#f5f5f5;--u-muted:#9a9a9a;--u-border:rgba(255,255,255,.08);\n --u-accent:#70d7b0;--u-accent-soft:#17342a;--u-accent-ink:#062a1e;--u-link:#70d7b0;\n --u-gold:#d9a830;--u-gold-hi:#fff1b8;--u-gold-ink:#d9a830;--u-gold-ink-hi:#f3d47a;\n --u-seg-l:26%;\n --u-danger:#ff6467;--u-warn:#ffb900;--u-out:#1d2b4a;--u-out-ink:#e3ebff;\n}\n.uplift,.uplift *,.uplift *::before,.uplift *::after{box-sizing:border-box}\n.uplift{font:15px/1.45 var(--u-font);color:var(--u-text);background:var(--u-bg);border:1px solid var(--u-border);border-radius:14px;overflow:hidden;container-type:inline-size;container-name:panel;position:relative;-webkit-font-smoothing:antialiased}\n:where(.uplift) button{font:inherit;color:inherit;cursor:pointer}\n:where(.uplift) button:disabled{cursor:not-allowed}\n.uplift :focus-visible{outline:2px solid var(--u-highlight);outline-offset:2px;border-radius:6px}\n.uplift h2,.uplift h3,.uplift h4,.uplift p{margin:0}\n.u-sp{flex:1}\n.u-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}\n.u-pill{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--u-border);background:var(--u-surface-2);border-radius:999px;padding:4px 10px;font-size:13px;color:var(--u-muted)}\n.u-pill b{color:var(--u-text);font-weight:600}\n.u-linkbtn{background:none;border:0;padding:4px 2px;color:var(--u-link);font-weight:600;text-decoration:underline;text-underline-offset:3px}\n.u-split{display:grid;grid-template-columns:320px minmax(0,1fr);height:min(max(520px,62.5cqw),86vh)}\n.u-split>*{min-height:0}\n.u-list{overflow:hidden}\n.u-pane{overflow:hidden}\n.u-iconbtn{display:inline-grid;place-items:center;width:34px;height:34px;border:1px solid var(--u-border);background:var(--u-bg);border-radius:8px;color:var(--u-muted);padding:0}\n.u-iconbtn:hover{color:var(--u-text)}\n.u-iconbtn-pair{width:auto;padding:0 9px;display:inline-flex;align-items:center;gap:4px}\n.u-ai-spark{display:inline-flex;color:var(--u-highlight)}\n.u-iconbtn .u-ai-spark svg{width:14px;height:14px}\n.u-iconbtn svg{width:16px;height:16px}\n.u-iconbtn[aria-pressed=\"true\"]{color:var(--u-text);background:var(--u-surface-2)}\n.u-bulkbtn svg{width:14px;height:14px}\n.uplift.u-full{position:fixed;inset:0;z-index:2147483000;border-radius:0;border:0;display:flex;flex-direction:column}\n.uplift.u-full .u-split{flex:1;height:auto;min-height:0}\n.u-back{display:none;border:1px solid var(--u-border);background:var(--u-bg);border-radius:8px;padding:6px 10px;font-size:16px;min-height:36px;align-items:center;flex:none}\n.u-list{border-right:1px solid var(--u-border);display:flex;flex-direction:column;min-width:0}\n/* inbox toolbar: native Uplift's collapsed search + segmented sort + Bulk generate */\n.u-toolbar{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--u-border)}\n.u-search{position:relative;flex:0 1 32px;min-width:32px;display:flex;align-items:center;cursor:pointer;transition:flex-basis .2s ease,flex-grow .2s ease}\n.u-search-open{flex:1 1 140px;cursor:auto}\n.u-search svg{position:absolute;left:9px;width:14px;height:14px;color:var(--u-muted);pointer-events:none}\n.u-search input{width:100%;min-height:32px;padding:6px 10px 6px 30px;border-radius:999px;border:1px solid var(--u-border);background:var(--u-surface-2);font:inherit;font-size:13px;color:var(--u-text)}\n.u-search:not(.u-search-open) input{cursor:pointer;padding-right:0}\n.u-search:not(.u-search-open) input::placeholder{opacity:0}\n.u-search input:focus{outline:none;border-color:var(--u-accent);background:var(--u-bg)}\n.u-search input::-webkit-search-cancel-button{cursor:pointer}\n.u-sortgroup{display:inline-flex;align-items:center;padding:2px;border-radius:999px;background:var(--u-surface-2);flex:none}\n.u-sortgroup button{border:0;background:none;border-radius:999px;padding:4px 9px;font-size:12px;font-weight:600;color:var(--u-muted);min-height:28px;white-space:nowrap}\n.u-sortgroup button:hover{color:var(--u-text)}\n.u-sortgroup button[aria-pressed=\"true\"]{background:var(--u-bg);color:var(--u-text);box-shadow:0 1px 2px rgba(0,0,0,.08),0 0 0 1px var(--u-border)}\n.u-rows li.u-bulkrow{border-bottom:0;padding:10px 12px}\n.u-bulkrow .u-bulkbtn{display:inline-flex;align-items:center;justify-content:center;gap:2px;width:100%;border:1px dashed var(--u-border);border-radius:10px;background:none;color:var(--u-muted);padding:8px 10px;min-height:36px;font:inherit;font-size:13px;cursor:pointer}\n.u-bulkrow .u-bulkbtn span{margin-left:6px}\n.u-bulkrow .u-bulkbtn:hover:not(:disabled){color:var(--u-accent);border-color:var(--u-accent);background:var(--u-surface-2)}\n.u-bulkrow .u-bulkbtn:disabled{opacity:.45;cursor:not-allowed}\n.u-clear-btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;min-height:0;padding:0;flex:none;border-radius:999px;border:0;background:none;color:var(--u-muted);cursor:pointer}\n.u-clear-btn svg{width:15px;height:15px}\n.u-clear-btn:hover:not(:disabled){color:var(--u-text);background:var(--u-surface-2)}\n.u-clear-btn:disabled{opacity:.4;cursor:not-allowed}\n.u-rows{list-style:none;margin:0;padding:0;overflow:auto;flex:1;min-height:0}\n.u-rows li{display:flex;flex-wrap:wrap;align-items:stretch;border-bottom:1px solid var(--u-border)}\n.u-row-open{flex:1;min-width:0;text-align:left;border:0;background:transparent;padding:11px 12px;display:grid;grid-template-columns:36px minmax(0,1fr);gap:2px 10px;min-height:64px}\n.u-av{grid-row:span 3;width:36px;height:36px;border-radius:999px;display:grid;place-items:center;font-size:13px;font-weight:700;color:#fff}\n.u-av.u-av-sm{grid-row:auto;width:32px;height:32px}\n.u-r-top{display:flex;gap:6px;align-items:baseline;min-width:0}\n.u-r-name{font-weight:600;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n.u-r-time{margin-left:auto;font-size:12.5px;color:var(--u-muted);flex:none}\n.u-r-line{font-size:13.5px;color:var(--u-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n.u-r-tags{display:flex;flex-wrap:wrap;gap:4px}\n.u-tag{font-size:12px;font-weight:600;border-radius:999px;padding:1px 8px;border:1px solid var(--u-border);color:var(--u-muted);background:var(--u-surface-2)}\n.u-tag.u-need{color:var(--u-danger);border-color:color-mix(in srgb,var(--u-danger) 35%,transparent)}\n.u-tag.u-ok{color:var(--u-link);border-color:color-mix(in srgb,var(--u-highlight) 35%,transparent)}\n.u-tag.u-warn{color:var(--u-warn);border-color:color-mix(in srgb,var(--u-warn) 35%,transparent)}\n.u-list-foot{padding:10px 12px;font-size:13px;color:var(--u-muted)}\n.u-skel{height:12px;border-radius:6px;background:var(--u-surface-3);margin:6px 0}\n.u-skel-row{padding:14px 12px;border-bottom:1px solid var(--u-border)}\n.u-state{padding:22px 16px;display:flex;flex-direction:column;gap:8px;align-items:flex-start;font-size:14.5px;color:var(--u-muted)}\n.u-state h3{font-size:16px;color:var(--u-text)}\n.u-state p{max-width:52ch}\n.u-pane{display:flex;flex-direction:column;min-width:0}\n.u-pane-head{display:flex;align-items:center;gap:10px;padding:11px 16px;border-bottom:1px solid var(--u-border)}\n.u-who{display:flex;flex-direction:column;min-width:0}\n.u-who strong{font-size:15px}\n.u-who small{font-size:13px;color:var(--u-muted)}\n.u-chan{margin-left:auto;font-size:13px;color:var(--u-muted)}\n.u-feed{flex:1;overflow:auto;padding:14px 16px;display:flex;flex-direction:column;gap:8px;background:var(--u-surface-2);min-height:200px}\n.u-tpl-chip{display:inline-flex;align-items:center;gap:4px;margin-left:6px;border:1px solid var(--u-border);border-radius:999px;padding:0 7px;font-size:11px;color:var(--u-muted);background:var(--u-bg);min-height:18px}\n.u-bub.u-tpl-shown{opacity:.85;border:1px dashed color-mix(in srgb,var(--u-out-ink) 50%,transparent)}\n.u-day{align-self:center;font-size:12px;color:var(--u-muted);background:var(--u-bg);border:1px solid var(--u-border);padding:2px 10px;border-radius:999px}\n.u-older{align-self:center;border:1px solid var(--u-border);background:var(--u-bg);border-radius:999px;padding:5px 12px;font-size:13px;color:var(--u-muted);min-height:32px}\n.u-ev{align-self:center;max-width:92%;display:flex;gap:8px;align-items:flex-start;font-size:13.5px;background:var(--u-bg);border:1px solid var(--u-border);border-radius:10px;padding:8px 11px}\n.u-ev svg{width:16px;height:16px;flex:none;margin-top:2px;color:var(--u-muted)}\n.u-ev b{font-weight:600}\n.u-ev .u-meta{color:var(--u-muted);font-size:12.5px}\n.u-bub{max-width:78%;padding:8px 12px;border-radius:14px;font-size:14.5px;white-space:pre-wrap;overflow-wrap:anywhere}\n.u-bub.u-in{align-self:flex-start;background:var(--u-bg);border:1px solid var(--u-border);border-bottom-left-radius:4px}\n.u-bub.u-out{align-self:flex-end;background:var(--u-out);color:var(--u-out-ink);border-bottom-right-radius:4px}\n.u-bmeta{font-size:12px;color:var(--u-muted)}\n.u-bmeta.u-r{align-self:flex-end}\n/* ---- Composer footer (port of native ChatPage footer) ---- */\n.u-composer{display:flex;flex-direction:column;gap:8px;padding:10px 16px 12px;background:var(--u-surface-2);border-top:1px solid var(--u-border)}\n.u-composer>*:empty{display:none}\n.u-rail{align-self:center;display:inline-flex;align-items:center;gap:6px;border:0;background:transparent;color:var(--u-muted);font-size:12px;padding:2px 10px;border-radius:999px;min-height:24px}\n.u-rail:hover{color:var(--u-text);background:var(--u-surface-3)}\n.u-rail svg{width:14px;height:14px}\n.u-extras-wrap{position:relative;display:flex;flex-direction:column}\n.u-extras-wrap>.u-rail{align-self:flex-end}\n.u-extras-wrap>.u-rail[aria-expanded=\"true\"]{position:absolute;top:0;right:0;z-index:1}\n.u-extras-wrap:has(>.u-rail[aria-expanded=\"true\"]) .u-ag-h{padding-right:34px}\n.u-extras{display:contents}\n.u-extras-off{display:none}\n/* draft grid (ComposerAssistant) */\n.u-ag{display:flex;flex-direction:column;gap:6px}\n.u-ag-h{display:flex;align-items:center;gap:2px}\n.u-ag-toggle{display:inline-flex;align-items:center;gap:8px;padding:4px 8px;border:0;background:transparent;color:var(--u-muted);font-size:12px;font-weight:600;border-radius:6px;min-height:28px}\n.u-ag-toggle:hover{background:var(--u-surface-3);color:var(--u-text)}\n.u-ag-spark{display:inline-flex;color:var(--u-highlight)}.u-ag-spark svg{width:12px;height:12px}\n.u-ag-label{letter-spacing:.02em}\n.u-ag-chev{display:inline-flex;color:var(--u-muted);transition:transform .15s}.u-ag-chev svg{width:14px;height:14px}\n.u-ag-chev-open{transform:rotate(180deg)}\n.u-ag-by{font-size:12px;color:var(--u-muted);margin-left:6px}\n.u-ag-regen{display:inline-flex;align-items:center;justify-content:center;padding:4px;border:0;background:transparent;color:var(--u-muted);border-radius:6px;min-width:24px;min-height:24px}\n.u-ag-regen svg{width:11px;height:11px}\n.u-ag-regen:hover:not(:disabled){color:var(--u-highlight);background:var(--u-surface-3)}\n.u-ag-regen:disabled{opacity:.5}\n.u-ag-spinning svg{animation:u-spin 1s linear infinite}\n@keyframes u-spin{to{transform:rotate(360deg)}}\n.u-ag-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}\n.u-ag-tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}\n.u-ag-tile{display:flex;align-items:center;gap:5px;min-height:30px;padding:6px 8px;border:1px solid var(--u-border);border-radius:8px;background:var(--u-bg);color:var(--u-muted);min-width:0;overflow:hidden;text-align:left;cursor:pointer;transition:border-color .15s,background .15s}\n.u-ag-tile:hover{border-color:var(--u-muted)}\n.u-ag-tile-ic{display:inline-flex;flex:none}.u-ag-tile-ic svg{width:12px;height:12px}\n.u-ag-tile-txt{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:12px;line-height:1.2;font-weight:600;color:var(--u-muted)}\n.u-ag-tile-txt.u-ag-tile-on{color:var(--u-text)}\n.u-ag-tile-shimmer{height:30px;border-radius:8px;background:linear-gradient(90deg,var(--u-surface-2) 25%,var(--u-border) 50%,var(--u-surface-2) 75%);background-size:300% 100%;animation:u-ag-tiles 1.4s ease-in-out infinite}\n@keyframes u-ag-tiles{0%{background-position:200% 0}100%{background-position:-200% 0}}\n.u-ag-lab svg{width:12px;height:12px}\n.u-pill-gen .u-pill-grow{position:relative}\n.u-pill-gen .u-pill-grow::after{content:\"\";position:absolute;inset:8px 6px;border-radius:6px;pointer-events:none;background:linear-gradient(var(--u-surface-2),var(--u-surface-2)) 0 0/100% 9px no-repeat,linear-gradient(var(--u-surface-2),var(--u-surface-2)) 0 15px/88% 9px no-repeat,linear-gradient(var(--u-surface-2),var(--u-surface-2)) 0 30px/60% 9px no-repeat;animation:u-pill-gen 1.4s ease-in-out infinite}\n@keyframes u-pill-gen{0%,100%{opacity:.5}50%{opacity:1}}\n@media (prefers-reduced-motion: reduce){.u-ag-tile-shimmer,.u-pill-gen .u-pill-grow::after{animation:none}}\n.u-ag-cell{position:relative;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:2px;min-height:56px;padding:10px 12px;background:var(--u-surface-2);border:1px solid transparent;border-radius:var(--u-radius);color:var(--u-text);text-align:left;transition:background .15s,transform .15s}\n.u-ag-cell:hover:not(:disabled){background:var(--u-bg)}\n/* Gold shimmer ring on finished drafts (Ian, 2026-10-11): a gradient pseudo-element masked to the edge. Reduced motion leaves a still ring. */\n.u-ag-cell:not(.u-ag-loading)::before{content:\"\";position:absolute;inset:-1px;border-radius:calc(var(--u-radius) + 1px);padding:1.5px;pointer-events:none;background:linear-gradient(110deg,var(--u-gold) 0%,var(--u-gold-hi) 25%,var(--u-gold) 50%,var(--u-gold-hi) 75%,var(--u-gold) 100%);background-size:250% 100%;animation:u-shimmer 3.2s linear infinite;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask-composite:exclude}\n@keyframes u-shimmer{from{background-position:0% 50%}to{background-position:250% 50%}}\n.u-ag-cell[aria-checked=\"true\"]{box-shadow:0 0 0 2px var(--u-highlight)}\n.u-ag-cell[aria-checked=\"true\"]::before{display:none}\n.u-ag-lab{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;color:var(--u-highlight);text-transform:uppercase;letter-spacing:.04em}\n.u-ag-pencil{display:inline-flex;opacity:.6}.u-ag-pencil svg{width:10px;height:10px}\n.u-ag-txt{font-size:14px;line-height:1.35;color:var(--u-text);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;word-break:break-word}\n.u-ag-loading{overflow:hidden;cursor:default;pointer-events:none;justify-content:center;align-items:center;border-color:var(--u-border)}\n.u-ag-loading-txt{position:relative;z-index:1;font-size:12px;color:var(--u-muted)}\n.u-ag-shimmer{position:absolute;inset:0;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.55) 50%,transparent 100%);animation:u-ag-sheen 1.4s infinite;transform:translateX(-100%)}\n@keyframes u-ag-sheen{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}\n.u-ag-empty{font-size:12.5px;color:var(--u-muted);padding:6px 0;display:flex;gap:10px;align-items:center;flex-wrap:wrap}\n.u-ag-foot{font-size:12.5px;color:var(--u-muted);margin:0}\n/* attachments */\n.u-attach-row{align-items:center;gap:8px;flex-wrap:wrap}\n.u-limits{font-size:12px;color:var(--u-muted)}\n.u-limits-warn{color:var(--u-warn)}\n.u-chips{display:flex;flex-wrap:wrap;gap:8px;padding:4px 0}\n.u-chip{display:inline-flex;align-items:center;gap:6px;max-width:240px;padding:4px 8px;border-radius:999px;background:var(--u-bg);border:1px solid var(--u-border);font-size:12px;color:var(--u-muted)}\n.u-chip svg{width:13px;height:13px;flex:none}\n.u-chip-err{border-color:var(--u-danger);color:var(--u-danger)}\n.u-chip-errtxt{font-size:10px}\n.u-chip-thumb{width:22px;height:22px;object-fit:cover;border-radius:5px}\n.u-chip-name{max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.u-chip-x{display:inline-flex;align-items:center;border:0;background:none;color:inherit;padding:2px;min-height:0}\n.u-chip-x svg{width:12px;height:12px}\n.u-spin{animation:u-spin 1s linear infinite}\n.u-rec{display:flex;align-items:center;gap:8px;padding:6px 10px;border-radius:9px;background:var(--u-bg);font-size:12px;color:var(--u-muted)}\n.u-rec-dot{width:8px;height:8px;border-radius:50%;background:#ff3b30;animation:u-rec-pulse 1.2s ease-in-out infinite}\n@keyframes u-rec-pulse{0%,100%{opacity:1}50%{opacity:.35}}\n.u-rec-btn{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--u-border);background:var(--u-bg);color:var(--u-text);border-radius:999px;width:28px;height:28px;min-height:0;padding:0}\n.u-rec-btn svg{width:14px;height:14px}\n.u-rec-done{background:var(--u-accent);color:var(--u-accent-ink);border-color:var(--u-accent)}\n.u-sms-note{font-size:12px;color:var(--u-warn)}\n/* editor row: + button, pill with the editor and the inline send/\u2728 */\n.u-c-row{display:flex;align-items:flex-end;gap:8px;width:100%}\n.u-attach-wrap{position:relative;flex:none}\n.u-attach-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;min-height:0;padding:0;margin-bottom:3px;border:1px solid var(--u-border);border-radius:999px;background:var(--u-bg);color:var(--u-muted);transition:color .15s,background .15s}\n.u-attach-btn svg{width:18px;height:18px}\n.u-attach-btn:hover:not(:disabled){color:var(--u-highlight);background:var(--u-highlight-soft)}\n.u-attach-btn:disabled{opacity:.45}\n.u-pill{position:relative;flex:1;min-width:0;display:flex;align-items:flex-end;gap:6px;background:var(--u-bg);border:1px solid var(--u-border);border-radius:14px;padding:4px 4px 4px 8px}\n.u-pill-grow{flex:1;min-width:0}\n.u-pill .u-editor{border:0;background:transparent;border-radius:0;padding:6px 4px;min-height:38px;max-height:220px;resize:none}\n.u-pill .u-editor:focus{outline:none}\n.u-pill:focus-within{border-color:var(--u-highlight)}\n/* Locked pill (stock intro, nothing to edit): gold shimmer ring like the draft cells. Reduced motion leaves a still ring. */\n.u-pill-locked{border-color:transparent}\n.u-pill-locked::before{content:\"\";position:absolute;inset:-1px;border-radius:15px;padding:1.5px;pointer-events:none;background:linear-gradient(110deg,var(--u-gold) 0%,var(--u-gold-hi) 25%,var(--u-gold) 50%,var(--u-gold-hi) 75%,var(--u-gold) 100%);background-size:250% 100%;animation:u-shimmer 3.2s linear infinite;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask-composite:exclude}\n.u-pill-locked:focus-within{border-color:transparent}\n.u-editor-locked{cursor:default;caret-color:transparent}\n.u-send-btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;min-height:0;padding:0;flex:none;border-radius:999px;border:0;background:var(--u-accent);color:var(--u-accent-ink);transition:transform .15s,opacity .15s}\n.u-send-btn svg{width:15px;height:15px;stroke:var(--u-accent-ink)}\n.u-send-btn:hover:not(:disabled){transform:translateY(-1px)}\n.u-send-btn:disabled{opacity:.4;cursor:not-allowed}\n.u-send-btn-text{width:auto;padding:0 12px;font-size:12.5px;font-weight:600;white-space:nowrap}\n.u-gen-btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;min-height:0;padding:0;flex:none;border:0;border-radius:999px;background:transparent;color:var(--u-highlight);transition:background .15s}\n.u-gen-btn svg{width:16px;height:16px}\n.u-gen-btn:hover:not(:disabled){background:var(--u-highlight-soft)}\n.u-gen-btn:disabled{opacity:.4}\n.u-menu-backdrop{position:fixed;inset:0;z-index:40}\n.u-menu{position:absolute;bottom:calc(100% + 6px);z-index:41;display:flex;flex-direction:column;min-width:150px;padding:4px;border-radius:12px;background:var(--u-bg);border:1px solid var(--u-border);box-shadow:0 10px 30px rgba(0,0,0,.18)}\n.u-menu-left{left:0}.u-menu-right{right:0}\n.u-menu-title{padding:6px 12px 4px;font-size:11.5px;font-weight:600;color:var(--u-muted)}\n.u-menu-titlerow{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:4px 6px 2px 0}\n.u-menu-titlerow .u-menu-title{padding:2px 12px 2px}\n.u-menu-cfg{display:inline-flex;align-items:center;justify-content:center;padding:4px;min-width:24px;min-height:24px;border:0;background:none;color:var(--u-muted);border-radius:6px}\n.u-menu-cfg svg{width:13px;height:13px}\n.u-menu-cfg:hover{color:var(--u-text);background:var(--u-surface-3)}\n/* proactive options editor */\n.u-po-help{font-size:13.5px;color:var(--u-muted);margin:0 0 10px}\n.u-po-list{display:flex;flex-direction:column;gap:10px}\n.u-po-row{border:1px solid var(--u-border);border-radius:12px;padding:10px;display:flex;flex-direction:column;gap:8px;background:var(--u-surface-2)}\n.u-po-top{display:flex;align-items:center;gap:6px}\n.u-po-label{flex:1;min-width:0;border:1px solid var(--u-border);border-radius:8px;padding:7px 10px;font:inherit;font-size:14px;background:var(--u-bg);color:var(--u-text)}\n.u-po-text{width:100%;border:1px solid var(--u-border);border-radius:8px;padding:7px 10px;font:inherit;font-size:13.5px;background:var(--u-bg);color:var(--u-text);resize:vertical}\n.u-po-iconwrap{position:relative;flex:none}\n.u-po-iconbtn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;min-height:0;padding:0;border:1px solid var(--u-border);border-radius:8px;background:var(--u-bg);color:var(--u-text)}\n.u-po-iconbtn svg{width:15px;height:15px}\n.u-po-iconbtn:disabled{opacity:.4}\n.u-po-iconbtn-on{border-color:var(--u-highlight);box-shadow:0 0 0 1px var(--u-highlight);color:var(--u-highlight)}\n.u-po-remove:hover{color:var(--u-danger);border-color:var(--u-danger)}\n.u-po-iconpick{position:absolute;top:calc(100% + 4px);left:0;z-index:5;display:grid;grid-template-columns:repeat(6,32px);gap:4px;padding:6px;background:var(--u-bg);border:1px solid var(--u-border);border-radius:10px;box-shadow:0 10px 30px rgba(0,0,0,.18)}\n.u-po-add{margin-top:10px;border:1px dashed var(--u-border);background:transparent;border-radius:9px;padding:8px 12px;font-weight:600;color:var(--u-link);min-height:38px;width:100%}\n.u-po-actions{display:flex;gap:8px;align-items:center;margin-top:12px;flex-wrap:wrap}\n.u-menu-item{display:flex;align-items:center;gap:8px;width:100%;padding:8px 12px;border:0;border-radius:8px;background:none;text-align:left;font-size:14px;color:var(--u-text);min-height:36px}\n.u-menu-item:hover{background:var(--u-surface-3)}\n.u-menu-purpose svg{width:14px;height:14px;color:var(--u-highlight);flex:none}\n/* inbox rows (native ClientRow) */\n.u-row-open{position:relative}\n.u-r-ind{position:absolute;left:3px;top:50%;transform:translateY(-50%);width:20px;display:grid;place-items:center}\n.u-rows .u-row-open{padding-left:26px}\n.u-r-dot{width:8px;height:8px;border-radius:50%;background:var(--u-highlight)}\n.u-r-badge{min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--u-highlight);color:#fff;font-size:11px;font-weight:700;display:grid;place-items:center}\n/* The open conversation is the only row with a colour: a clear shade and an accent bar on the left\n edge, like WhatsApp's selected chat. Unread shows by the dot and bold name, never a tint. Built\n from the text colour so it reads on any host theme, light or dark. */\n.u-rows li:has(.u-row-open[aria-current=\"true\"]){background:color-mix(in srgb,var(--u-text) 8%,var(--u-bg));box-shadow:inset 3px 0 0 var(--u-accent)}\n.u-rows li:has(.u-row-open[aria-current=\"true\"]) .u-row-open{background:transparent}\n.u-r-name-unread{font-weight:700}\n.u-r-follow,.u-r-fail{display:inline-flex;align-items:center;flex:none}\n.u-r-follow svg,.u-r-fail svg{width:13px;height:13px}\n.u-r-follow{color:var(--u-warn)}\n.u-r-fail{color:var(--u-danger)}\n.u-r-prev{display:inline-flex;align-items:center;gap:5px;max-width:100%}\n.u-r-pico{display:inline-flex;flex:none}.u-r-pico svg{width:11px;height:11px}\n.u-r-prev-in .u-r-ptxt{color:var(--u-text)}\n.u-r-prev-in .u-r-pico{color:var(--u-highlight)}\n.u-r-prev-out .u-r-ptxt,.u-r-prev-out .u-r-pico{color:var(--u-muted)}\n.u-r-prev-ev .u-r-ptxt,.u-r-prev-ev .u-r-pico{color:var(--u-muted);font-style:italic}\n.u-r-ptxt{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}\n.u-r-hosttags{flex:1 0 100%;display:flex;flex-wrap:wrap;gap:4px;padding:0 12px 10px 72px;margin-top:-6px}\n.u-tag-connect{cursor:pointer;font:inherit;font-size:12px;font-weight:600;line-height:inherit}\n.u-tag-connect:hover{border-color:var(--u-highlight);color:var(--u-highlight);background:var(--u-highlight-soft)}\n.u-r-quick{flex:1 0 100%;display:flex;justify-content:flex-end;align-items:center;min-width:0;padding:0 12px 10px 72px}\n.u-qsend{display:inline-flex;align-items:center;gap:6px;max-width:100%;border:1px solid var(--u-highlight);background:var(--u-highlight);color:#fff;border-radius:999px;padding:4px 11px;font-size:12px;font-weight:600;min-height:26px}\n.u-qsend:hover:not(:disabled){filter:brightness(1.08)}\n/* Bulk generate states in the quick-send slot (native: Generating\u2026 / Generation failed) */\n.u-qsend.u-qsend-bulk{background:var(--u-surface-2);border-color:var(--u-border);color:var(--u-muted);cursor:default}\n.u-qsend-busy svg{width:12px;height:12px}\n/* Bulk generate sheet (native BulkGenerateModal) */\n.u-bulk-head{display:flex;align-items:flex-start;gap:10px;margin-bottom:6px}\n.u-bulk-spark{color:var(--u-highlight);display:grid;place-items:center;padding-top:9px}\n.u-bulk-spark svg{width:18px;height:18px}\n.u-bulk-titles{flex:1;min-width:0}\n.u-bulk-titles h3{margin:4px 0 2px;font-size:18px}\n.u-bulk-sub{margin:0;font-size:13.5px;color:var(--u-muted)}\n.u-bulk-sub .u-linkbtn{font-size:13px}\n.u-bulk-sec{margin-top:14px}\n.u-bulk-sechead{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}\n.u-bulk-sechead .u-linkbtn{font-size:13px}\n.u-bulk-label{font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--u-muted)}\n.u-bulk-chips{display:flex;flex-wrap:wrap;gap:6px;max-height:180px;overflow:auto;padding:2px}\n.u-bulk-empty{font-size:13px;color:var(--u-muted)}\n.u-bulk-chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--u-border);background:var(--u-bg);border-radius:999px;padding:3px 10px 3px 3px;font-size:13px;color:var(--u-muted);min-height:30px;max-width:100%}\n.u-bulk-chip-on{border-color:var(--u-highlight);background:var(--u-highlight-soft);color:var(--u-text)}\n.u-bulk-av{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;color:#fff;font-size:10px;font-weight:700;flex:none}\n.u-bulk-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.u-bulk-meta{font-size:11px;color:var(--u-muted)}\n.u-bulk-prompt{width:100%;box-sizing:border-box;border:1px solid var(--u-border);border-radius:10px;padding:10px 12px;font:inherit;font-size:14px;color:var(--u-text);background:var(--u-bg);resize:vertical}\n.u-bulk-prompt:focus{outline:none;border-color:var(--u-accent)}\n.u-bulk-hist{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:8px}\n.u-bulk-histlabel{font-size:12px;color:var(--u-muted)}\n.u-bulk-histbtn{border:1px solid var(--u-border);background:var(--u-surface-2);border-radius:999px;padding:3px 10px;font-size:12px;color:var(--u-text);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.u-bulk-foot{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}\n.u-bulk-go{display:inline-flex;align-items:center;gap:6px}\n.u-bulk-go svg{width:14px;height:14px}\n/* Gold shimmer ring on a ready quick reply, same as the draft cells. Countdown, sending, sent and error states drop it. */\n.u-qsend{position:relative}\n.u-qsend:not(.u-qsend-count):not(.u-qsend-sending):not(.u-qsend-sent):not(.u-qsend-err):not(:disabled)::before{content:\"\";position:absolute;inset:-2px;border-radius:999px;padding:2px;pointer-events:none;background:linear-gradient(110deg,var(--u-gold) 0%,var(--u-gold-hi) 25%,var(--u-gold) 50%,var(--u-gold-hi) 75%,var(--u-gold) 100%);background-size:250% 100%;animation:u-shimmer 3.2s linear infinite;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask-composite:exclude}\n.u-qsend svg{width:12px;height:12px;flex:none}\n.u-qsend-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n.u-qsend-count{border-color:var(--u-warn);background:color-mix(in srgb,var(--u-warn) 12%,transparent);color:var(--u-warn)}\n.u-qsend-sent{border-color:var(--u-accent);background:var(--u-accent);color:var(--u-accent-ink)}\n.u-qsend-err{border-color:var(--u-danger);color:var(--u-danger);background:transparent}\n.u-qsend:disabled{opacity:.9}\n/* delivery receipts */\n.u-rcpt{display:inline-flex;align-items:center;margin-left:4px;color:var(--u-muted)}\n.u-rcpt svg{width:13px;height:13px}\n.u-rcpt-ok{color:var(--u-highlight)}\n.u-rcpt-bad{color:var(--u-danger)}\n/* inline reply drafts under the latest client message */\n.u-inl{align-self:flex-start;max-width:78%;display:flex;flex-direction:column;gap:6px;margin-top:2px}\n.u-inl-h{display:flex;align-items:center;gap:4px}\n.u-inl-toggle{display:inline-flex;align-items:center;gap:6px;border:0;background:transparent;color:var(--u-muted);font-size:12px;font-weight:600;padding:2px 6px;border-radius:6px;min-height:24px}\n.u-inl-toggle:hover{background:var(--u-surface-3);color:var(--u-text)}\n.u-inl-notnow{border:0;background:transparent;color:var(--u-muted);font-size:12px;padding:2px 6px;min-height:24px;border-radius:6px}\n.u-inl-notnow:hover{color:var(--u-text);background:var(--u-surface-3)}\n.u-inl-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;width:100%}\n.u-inl-cell{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-width:0;border:1px solid var(--u-border);background:var(--u-bg);border-radius:12px;padding:7px 10px;text-align:left;color:var(--u-text)}\n/* Gold shimmer ring, same as the composer's draft cells. Reduced motion leaves a still ring. */\n.u-inl-cell::before{content:\"\";position:absolute;inset:-1px;border-radius:13px;padding:1.5px;pointer-events:none;background:linear-gradient(110deg,var(--u-gold) 0%,var(--u-gold-hi) 25%,var(--u-gold) 50%,var(--u-gold-hi) 75%,var(--u-gold) 100%);background-size:250% 100%;animation:u-shimmer 3.2s linear infinite;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask-composite:exclude}\n.u-inl-cell:hover{border-color:var(--u-highlight)}\n.u-inl-txt{font-size:13px;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}\n/* Item action row (native InlineDrafts): under client messages, and inside activity cards. */\n.u-ia{align-self:flex-start;width:78%;display:flex;flex-direction:column;gap:6px;margin-top:2px}\n.u-ev .u-ia{width:100%;margin-top:6px}\n.u-ev>div{flex:1}\n.u-ev>div{min-width:0}\n.u-ev .u-ia svg{width:13px;height:13px;margin-top:0}\n.u-ia-h{display:flex;flex-wrap:wrap;align-items:center;gap:2px;margin-left:-6px}\n.u-ia-h .u-inl-toggle svg{width:13px;height:13px}\n.u-ia-ai{display:flex;flex-direction:column;gap:6px;border:1px solid var(--u-border);background:var(--u-bg);border-radius:12px;padding:10px;min-width:min(420px,100%)}\n.u-ia-ai-label{font-size:12.5px;font-weight:700}\n.u-ia-ai-hint{font-size:12px;color:var(--u-muted)}\n.u-ia-ai-note{font-size:12px;color:var(--u-warn);background:color-mix(in srgb,var(--u-warn) 10%,transparent);border-radius:8px;padding:6px 8px}\n.u-ia-ai textarea{font:inherit;font-size:13.5px;color:var(--u-text);background:var(--u-surface-2);border:1px solid var(--u-border);border-radius:8px;padding:8px 10px;resize:vertical;min-height:64px}\n.u-ia-ai-row{display:flex;align-items:center;gap:10px;font-size:12px}\n.u-ia-ai-count{color:var(--u-muted);font-variant-numeric:tabular-nums}\n.u-ia-ai-err{color:var(--u-danger)}\n.u-cx-h4{display:flex;align-items:center;gap:6px}\n.u-cx-info{display:inline-grid;place-items:center;width:22px;height:22px;border:0;border-radius:999px;background:transparent;color:var(--u-muted);padding:0;cursor:pointer}\n.u-cx-info:hover{color:var(--u-highlight);background:var(--u-highlight-soft)}\n.u-cx-info svg{width:15px;height:15px}\n.u-cx-head{display:flex;align-items:center;gap:10px}\n.u-cx-mark{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:999px;color:#fff;flex:none}\n.u-cx-rule{margin:10px 0}\n.u-cx-rule h4{margin:0 0 3px;font-size:14px}\n.u-cx-rule p{margin:0;font-size:13.5px;line-height:1.5;color:var(--u-muted)}\n.u-cx-sec{display:block;margin-top:14px;font-size:13px;font-weight:600}\n.u-cx-mocks{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:8px 0 10px}\n.u-cx-col{display:flex;flex-direction:column;gap:4px;min-width:0}\n.u-cx-label{font-size:11.5px;font-weight:500;color:var(--u-muted)}\n.u-cx-phone{border:1px solid var(--u-border);border-radius:12px;padding:10px;display:flex;flex-direction:column;gap:8px;min-height:120px}\n.u-cx-coach{background:var(--u-surface-2)}\n.u-cx-coach-bub{align-self:flex-end;max-width:95%;background:var(--u-highlight);color:#fff;border-radius:12px;border-bottom-right-radius:4px;padding:8px 10px;font-size:12px;line-height:1.45}\n.u-cx-tpl{display:inline-block;margin-top:6px;padding:2px 8px;border-radius:999px;background:rgba(255,255,255,.22);font-size:10px;font-weight:500}\n.u-cx-client{background:#e5ddd5;border-color:#d5cdc4}\n.u-cx-client-bub{align-self:flex-start;max-width:95%;background:#fff;color:#1c1c1e;border-radius:12px;border-top-left-radius:4px;padding:8px 10px;font-size:12px;line-height:1.45;box-shadow:0 1px 1px rgba(0,0,0,.08)}\n.u-cx-link{display:block;margin-top:6px;color:#027eb5;font-weight:500}\n.u-cx-meta{font-size:10px;color:var(--u-muted);text-align:center;margin-top:auto}\n.u-cx-client .u-cx-meta{color:#7a7269}\n.u-cx-foot{font-size:12px;line-height:1.5;color:var(--u-muted)}\n.u-offer-who{display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--u-muted);margin:2px 0 8px}\n.u-offer-avs{display:inline-flex}\n.u-offer-avs .u-av{border:2px solid var(--u-bg);margin-left:-6px}\n.u-offer-avs .u-av:first-child{margin-left:0}\n.u-offer-list{list-style:none;margin:10px 0;padding:0;display:flex;flex-direction:column;gap:7px;font-size:13.5px}\n.u-offer-list li{display:flex;gap:8px;align-items:flex-start}\n.u-offer-tick{display:inline-flex;color:var(--u-accent);flex:none;margin-top:2px}\n.u-offer-tick svg{width:15px;height:15px}\n.u-ai-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}\n.u-ai-plan{display:flex;align-items:center;gap:10px;flex-wrap:wrap;border:1px solid var(--u-border);border-radius:10px;padding:8px 11px;font-size:13px;margin:0 0 10px}\n.u-ai-plan .u-linkbtn{font-size:13px}\n.u-ai-err{color:var(--u-danger,#b42318);font-size:12.5px;width:100%}\n.u-ai-disclaimer{display:flex;gap:8px;align-items:flex-start;background:var(--u-highlight-soft);border-radius:10px;padding:9px 11px;font-size:12.5px;line-height:1.45;margin:6px 0 10px}\n.u-ai-disclaimer svg{width:15px;height:15px;flex:none;margin-top:2px;color:var(--u-highlight)}\n.u-ai-tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:1px solid var(--u-border);margin-bottom:10px}\n.u-ai-tab{border:0;background:transparent;padding:7px 10px;font-size:13px;font-weight:600;color:var(--u-muted);border-bottom:2px solid transparent;margin-bottom:-1px;border-radius:0}\n.u-ai-tab-on{color:var(--u-text);border-bottom-color:var(--u-highlight)}\n.u-ai-body{display:flex;flex-direction:column;gap:14px}\n.u-ai-sec{display:flex;flex-direction:column;gap:6px}\n.u-ai-sec h4{margin:0;font-size:14px}\n.u-ai-area,.u-ai-input{font:inherit;font-size:13.5px;color:var(--u-text);background:var(--u-surface-2);border:1px solid var(--u-border);border-radius:8px;padding:8px 10px;width:100%;box-sizing:border-box}\n.u-ai-area{resize:vertical}\n.u-ai-form{display:flex;flex-direction:column;gap:6px;border:1px solid var(--u-border);border-radius:10px;padding:10px}\n.u-ai-form label{font-size:12.5px;font-weight:700}\n.u-ai-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}\n.u-ai-list li{border:1px solid var(--u-border);border-radius:10px;padding:8px 10px;display:flex;flex-direction:column;gap:3px}\n.u-ai-item-head{display:flex;align-items:center;gap:6px;font-size:13px}\n.u-ai-tags{display:flex;flex-wrap:wrap;gap:4px}\n.u-ai-learned{display:grid;grid-template-columns:max-content 1fr;gap:6px 14px;margin:8px 0 0;font-size:13.5px}\n.u-ai-learned dt{font-weight:700;color:var(--u-muted)}\n.u-ai-learned dd{margin:0}\n.u-ai-k{font-size:11.5px;font-weight:700;color:var(--u-muted);text-transform:uppercase;letter-spacing:.04em}\n.u-ai-v{font-size:13.5px;white-space:pre-wrap}\n.u-ai-locked{border:1px dashed var(--u-border);border-radius:10px;padding:12px;font-size:13px;color:var(--u-muted)}\n.u-ai-locked strong{color:var(--u-text)}\n.u-ai-field{display:flex;flex-direction:column;gap:3px;margin-top:10px}\n.u-ai-field textarea{font:inherit;font-size:13.5px;color:var(--u-text);background:var(--u-surface-2);border:1px solid var(--u-border);border-radius:8px;padding:8px 10px;resize:vertical}\n.u-ai-labelrow{display:flex;justify-content:space-between;gap:8px;font-size:13px;font-weight:700}\n.u-ai-sub{margin-top:16px!important;font-size:12.5px;font-weight:700;color:var(--u-muted)}\n.u-ai-ok{color:var(--u-accent);font-size:13px;font-weight:600}\n.u-ai-more{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;margin-top:16px;padding-top:12px;border-top:1px solid var(--u-border);font-size:13px;color:var(--u-muted)}\n.u-ia-save{border:1px solid var(--u-accent);background:var(--u-accent);color:var(--u-accent-ink);border-radius:8px;padding:5px 12px;font-weight:600;font-size:13px;min-height:30px}\n.u-ia-save:disabled{opacity:.5}\n/* WhatsApp closed window */\n.u-wa{display:flex;gap:8px;align-items:flex-start;padding:8px 12px;border-radius:9px;background:color-mix(in srgb,var(--u-warn) 10%,var(--u-bg));border:1px solid color-mix(in srgb,var(--u-warn) 35%,transparent);font-size:13px;line-height:1.4}\n.u-wa-ico{display:inline-flex;color:var(--u-warn);flex:none;margin-top:2px}.u-wa-ico svg{width:14px;height:14px}\n.u-wa-body{min-width:0}\n.u-wa-more{display:inline-flex;align-items:center;gap:2px;border:0;background:transparent;color:var(--u-link);font-weight:600;font-size:12.5px;padding:0 4px;min-height:0;margin-left:4px}\n.u-wa-more svg{width:12px;height:12px}\n.u-wa-why{margin:6px 0 0;color:var(--u-muted);font-size:12.5px}\n.u-ghost{display:flex;flex-direction:column;align-items:flex-end;gap:2px;opacity:.7}\n.u-ghost-bub{border:1px dashed color-mix(in srgb,var(--u-out-ink) 50%,transparent);background:color-mix(in srgb,var(--u-out) 60%,transparent)}\n.u-ghost-cut{font-weight:700}\n/* beginning of history */\n.u-hist-start{align-self:center;font-size:12px;color:var(--u-muted);padding:4px 0}\n/* header badges */\n.u-chan-badge{display:inline-flex;align-items:center;justify-content:center;position:absolute;right:-2px;bottom:-2px;width:16px;height:16px;border-radius:50%;color:#fff;border:2px solid var(--u-bg);box-sizing:content-box}\n.u-chan-wa{background:#25d366}\n.u-chan-sms{background:var(--u-highlight)}\n.u-r-av{grid-row:span 3;align-self:start}\n.u-r-av .u-av{grid-row:auto}\n.u-av-wrap{position:relative;display:inline-flex;flex:none}\n.u-head-status{margin-left:4px}\n/* attachments on thread messages */\n.u-att{display:flex;flex-wrap:wrap;gap:6px;max-width:78%}\n.u-att-out{align-self:flex-end;justify-content:flex-end}.u-att-in{align-self:flex-start}\n.u-att-img{border:0;background:none;padding:0;min-height:0;cursor:zoom-in}\n.u-att-img img{display:block;max-width:220px;max-height:220px;border-radius:12px;border:1px solid var(--u-border)}\n.u-att-desc{display:block;font-size:12px;color:var(--u-muted);max-width:220px}\n.u-att-video{display:block;max-width:280px;max-height:320px;border-radius:12px;background:#000;object-fit:contain}\n.u-att-audio{display:flex;flex-direction:column;gap:4px;max-width:300px}\n.u-att-player{width:100%;max-width:300px}\n.u-att-trans{font-size:13px;color:var(--u-muted);font-style:italic}\n.u-lightbox{position:fixed;inset:0;z-index:60;background:rgba(0,0,0,.85);display:grid;place-items:center;padding:24px}\n.u-lightbox img{max-width:100%;max-height:100%;border-radius:8px}\n.u-lightbox-x{position:absolute;top:16px;right:16px;width:40px;height:40px;border-radius:999px;border:0;background:rgba(255,255,255,.15);color:#fff;display:grid;place-items:center}\n.u-lightbox-x svg{width:18px;height:18px}\n.u-att-file{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:999px;background:var(--u-bg);border:1px solid var(--u-border);font-size:13px;color:var(--u-link);text-decoration:none}\n.u-att-file svg{width:14px;height:14px}\n.u-editor{width:100%;border:1px solid var(--u-border);border-radius:var(--u-radius);padding:10px 12px;min-height:64px;font:inherit;font-size:14.5px;background:var(--u-bg);color:var(--u-text);resize:vertical}\n.u-editor::placeholder{color:var(--u-muted)}\n.u-editor-rich{min-height:64px;max-height:220px;overflow-y:auto;white-space:normal;word-break:break-word;line-height:1.5}\n.u-editor-rich:empty::before{content:attr(data-placeholder);color:var(--u-muted);pointer-events:none}\n.u-editor-rich[aria-disabled=\"true\"]{opacity:.6}\n/* Draft pills, ported from native: one per clause, hue hashed from the text, \u00D7 drops it. */\n/* Pills keep the suggested draft's greyed text until the coach touches one: clicked or typed-in pills turn white (native #633). */\n.u-seg{display:inline;padding:1px 3px;margin:0 2px 0 0;border-radius:6px;border:1px solid var(--u-highlight-soft);background:var(--u-surface-2);color:var(--u-muted);line-height:1.9;-webkit-box-decoration-break:clone;box-decoration-break:clone;transition:background .15s,color .15s,border-color .15s}\n.u-seg.touched{background:var(--u-bg);color:var(--u-text)}\n.u-seg.active{background:var(--u-bg);color:var(--u-text);border-color:var(--u-highlight)}\n/* Suggested draft: Uplift's words, softened, until the coach engages. */\n.u-editor-sugg{cursor:text;display:flex;flex-direction:column;gap:2px}\n.u-pill .u-editor-sugg,.u-editor-sugg{background:var(--u-surface-2);border-radius:10px}\n.u-editor-sugg:focus-visible{outline:2px solid var(--u-highlight);outline-offset:1px}\n.u-sugg-label{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:var(--u-highlight)}\n.u-sugg-label i{width:7px;height:7px;border-radius:50%;background:currentColor;display:inline-block}\n.u-sugg-label em{font-style:normal;font-weight:400;color:var(--u-muted)}\n.u-sugg-text{color:var(--u-muted)}\n/* Stock intro: no pill highlight, the text itself shimmers gold (gradient clipped to the glyphs). Reduced motion leaves a still gold gradient. */\n.u-seg-lock{cursor:default;user-select:text;padding:0;margin:0;border:0;border-radius:0;font-weight:600;background:linear-gradient(110deg,var(--u-gold-ink) 0%,var(--u-gold-ink-hi) 30%,var(--u-gold-ink) 50%,var(--u-gold-ink-hi) 70%,var(--u-gold-ink) 100%);background-size:250% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;animation:u-shimmer 4s linear infinite}\n.u-seg-lock:hover{opacity:1}\n.u-seg-x{display:inline-flex;align-items:center;justify-content:center;margin-left:2px;min-width:24px;min-height:24px;cursor:pointer;font-size:14px;color:var(--u-muted);border-radius:6px;line-height:1;vertical-align:middle;user-select:none;touch-action:manipulation;-webkit-tap-highlight-color:transparent}\n.u-seg-x:hover,.u-seg-x:active,.u-seg-x:focus-visible{color:var(--u-text);background:var(--u-border);outline:none}\n.u-editor:disabled{opacity:.6}\n.u-send{border:0;background:var(--u-accent);color:var(--u-accent-ink);font-weight:700;border-radius:9px;padding:8px 16px;min-height:40px}\n.u-send:disabled{opacity:.45}\n.u-gen{border:1px solid var(--u-border);background:var(--u-bg);border-radius:9px;padding:8px 14px;font-weight:600;min-height:40px}\n.u-gen:disabled{opacity:.5}\n.u-note{margin-top:8px;border-radius:9px;padding:9px 12px;font-size:13.5px;display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center}\n.u-note-err{background:color-mix(in srgb,var(--u-danger) 9%,var(--u-bg));border:1px solid color-mix(in srgb,var(--u-danger) 35%,transparent)}\n.u-note-warn{background:color-mix(in srgb,var(--u-warn) 10%,var(--u-bg));border:1px solid color-mix(in srgb,var(--u-warn) 35%,transparent)}\n.u-note-ok{background:var(--u-highlight-soft)}\n.u-banner{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:10px 16px;font-size:14px;border-bottom:1px solid var(--u-border);background:var(--u-accent-soft)}\n.u-headbtn{border:1px solid var(--u-border);background:var(--u-bg);border-radius:8px;padding:6px 11px;font-size:14px;font-weight:600;min-height:34px}\n.u-headbtn:disabled{opacity:.5}\n.u-connect{margin-left:4px;display:inline-flex;align-items:center;gap:7px;flex:none}\n.u-hostlink{margin-left:4px;display:inline-flex;align-items:center;gap:6px;flex:none;text-decoration:none;color:var(--u-text);white-space:nowrap}\n.u-hostlink-icon{width:18px;height:18px;object-fit:contain;flex:none}\n.u-ev-open{margin-top:8px;display:flex}\n.u-ev-open .u-hostlink{margin-left:0}\n.u-ia-extra{display:inline-flex;margin-left:4px}\n.u-ia-extra .u-hostlink{margin-left:0;border:0;background:transparent;color:var(--u-muted);font-size:12px;font-weight:600;padding:2px 6px;border-radius:6px;min-height:24px;gap:5px}\n.u-ia-extra .u-hostlink:hover{background:var(--u-surface-3);color:var(--u-text)}\n.u-ia-extra .u-hostlink-icon{width:14px;height:14px}\n/* AI settings + full screen: the right end of the conversation header (no panel header row). */\n.u-head-acts{margin-left:auto;display:inline-flex;align-items:center;gap:6px;flex:none}\n.u-chan ~ .u-head-acts{margin-left:6px}\n.u-pane-head-empty{justify-content:flex-end;min-height:62px;box-sizing:border-box}\n/* On wide panels the toolbar leaves them to the conversation header. */\n.u-toolbar-acts{display:none}\n.u-toolbar .u-addbtn{flex:none;margin-left:auto}\n.u-connect svg{flex:none}\n.u-example{width:100%;border:1px dashed var(--u-border);border-radius:12px;padding:12px;background:var(--u-surface-2);display:flex;flex-direction:column}\n.u-ex-lab{font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--u-muted);margin-bottom:6px}\n.u-sheet-wrap{position:absolute;inset:0;background:rgba(10,10,10,.45);display:grid;place-items:center;padding:16px;z-index:5}\n.u-sheet{width:min(560px,100%);max-height:100%;overflow:auto;background:var(--u-bg);color:var(--u-text);border:1px solid var(--u-border);border-radius:16px;box-shadow:0 18px 50px rgba(0,0,0,.25);padding:20px;outline:none}\n.u-eyebrow{font-size:12px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--u-muted)}\n.u-sheet h3{font-size:21px;margin:6px 0 8px}\n.u-lede{font-size:14.5px;color:var(--u-muted)}\n.u-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px;align-items:center}\n.u-secondary{border:1px solid var(--u-border);background:var(--u-bg);border-radius:9px;padding:8px 14px;font-weight:600;min-height:40px}\n.u-steps{display:flex;gap:6px;margin-bottom:12px}\n.u-steps span{flex:1;height:4px;border-radius:999px;background:var(--u-surface-3)}\n.u-steps span.u-on{background:var(--u-highlight)}\n.u-plan{margin-top:14px;border:1px solid var(--u-highlight);border-radius:12px;padding:14px;background:var(--u-highlight-soft)}\n.u-plan-name{font-weight:700;font-size:15px}\n.u-plan-price{font-size:30px;font-weight:700;margin-top:2px}\n.u-plan-price small{font-size:15px;font-weight:500;color:var(--u-muted)}\n.u-plan-vs{font-size:13.5px;color:var(--u-muted)}\n.u-feats{margin:12px 0 0;padding-left:18px;font-size:14px}\n.u-feats li{margin:3px 0}\n.u-chanbox{margin-top:12px;border:1px solid var(--u-border);border-radius:12px;padding:11px 13px}\n.u-chanbox h4{font-size:15px}\n.u-chanbox p{font-size:14px;margin-top:4px;color:var(--u-text)}\n.u-tick{display:flex;gap:10px;align-items:flex-start;margin-top:12px;font-size:14.5px}\n.u-tick input{width:20px;height:20px;margin-top:1px;accent-color:var(--u-highlight)}\n.u-field{margin-top:12px;display:flex;flex-direction:column;gap:5px}\n.u-field>label,.u-field>span:first-child{font-size:13.5px;font-weight:600}\n.u-field select{border:1px solid var(--u-border);background:var(--u-bg);color:var(--u-text);border-radius:9px;padding:9px 11px;font:inherit;min-height:42px}\n.u-field input{border:1px solid var(--u-border);background:var(--u-bg);color:var(--u-text);border-radius:9px;padding:9px 11px;font:inherit;min-height:42px}\n.u-field input[aria-invalid=\"true\"]{border-color:var(--u-danger)}\n.u-hint{font-size:13px;color:var(--u-muted)}\n.u-err{font-size:13px;color:var(--u-danger)}\n.u-chanpick{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}\n.u-chanpick button{border:1px solid var(--u-border);background:var(--u-bg);border-radius:10px;padding:9px;text-align:left;min-height:56px}\n.u-chanpick button[aria-checked=\"true\"]{border-color:var(--u-highlight);box-shadow:0 0 0 1px var(--u-highlight)}\n.u-chanpick b{display:block;font-size:14.5px}\n.u-chanpick small{font-size:12.5px;color:var(--u-muted)}\n@media (prefers-reduced-motion:reduce){.uplift *{transition:none!important;animation:none!important}}\n@container panel (max-width:759px){\n .u-cx-mocks{grid-template-columns:1fr}\n .u-inl-grid{grid-template-columns:1fr}\n .u-ia{width:100%}\n .u-split{grid-template-columns:1fr;height:min(80vh,720px)}\n .u-split.u-show-thread .u-list{display:none}\n .u-split:not(.u-show-thread) .u-pane{display:none}\n .u-back{display:inline-flex}\n .u-toolbar-acts{display:inline-flex;flex:none;margin-left:auto}\n .u-toolbar-acts .u-head-acts{margin-left:0}\n /* Phone widths: the toolbar wraps its buttons rather than cutting them off; the conversation header\n keeps name, Connect and the buttons on one line by dropping the phone number and Connect's label. */\n .u-toolbar{flex-wrap:wrap;row-gap:6px}\n .u-sortgroup button{padding:4px 7px}\n .u-pane-head{gap:8px;padding:10px 12px}\n .u-pane-head .u-chan{display:none}\n .u-who{flex:0 1 auto}\n .u-who strong,.u-who small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n .u-connect{padding:6px 9px}\n .u-connect span{display:none}\n /* The host link stays, compact; the name keeps room to show. */\n .u-who{min-width:72px}\n .u-pane-head .u-hostlink{padding:6px 9px;font-size:13px}\n /* With a host link there may not be room for everything: the panel's buttons wrap to a second line rather than run off the edge. */\n .u-pane-head{flex-wrap:wrap;row-gap:6px}\n .u-ag-grid{grid-template-columns:1fr}\n .u-c-actions .u-meta{flex-basis:100%}\n .u-sheet-wrap{padding:0}\n .u-sheet{width:100%;height:100%;border-radius:0}\n}\n";
|
|
13
13
|
/** Add the panel stylesheet to `doc` once. Safe to call on every render. */
|
|
14
14
|
export declare function injectStyles(doc?: Document | undefined): void;
|
|
15
15
|
//# sourceMappingURL=styles.d.ts.map
|
package/dist/styles.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../src/styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB,0BAA0B,CAAC;AAExD,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../src/styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB,0BAA0B,CAAC;AAExD,eAAO,MAAM,YAAY,yrlDAqjBxB,CAAC;AAEF,4EAA4E;AAC5E,wBAAgB,YAAY,CAAC,GAAG,GAAE,QAAQ,GAAG,SAAkE,GAAG,IAAI,CAMrH"}
|
package/dist/styles.js
CHANGED
|
@@ -69,9 +69,15 @@ export const upliftStyles = `
|
|
|
69
69
|
.u-sortgroup button{border:0;background:none;border-radius:999px;padding:4px 9px;font-size:12px;font-weight:600;color:var(--u-muted);min-height:28px;white-space:nowrap}
|
|
70
70
|
.u-sortgroup button:hover{color:var(--u-text)}
|
|
71
71
|
.u-sortgroup button[aria-pressed="true"]{background:var(--u-bg);color:var(--u-text);box-shadow:0 1px 2px rgba(0,0,0,.08),0 0 0 1px var(--u-border)}
|
|
72
|
-
.u-
|
|
73
|
-
.u-
|
|
74
|
-
.u-
|
|
72
|
+
.u-rows li.u-bulkrow{border-bottom:0;padding:10px 12px}
|
|
73
|
+
.u-bulkrow .u-bulkbtn{display:inline-flex;align-items:center;justify-content:center;gap:2px;width:100%;border:1px dashed var(--u-border);border-radius:10px;background:none;color:var(--u-muted);padding:8px 10px;min-height:36px;font:inherit;font-size:13px;cursor:pointer}
|
|
74
|
+
.u-bulkrow .u-bulkbtn span{margin-left:6px}
|
|
75
|
+
.u-bulkrow .u-bulkbtn:hover:not(:disabled){color:var(--u-accent);border-color:var(--u-accent);background:var(--u-surface-2)}
|
|
76
|
+
.u-bulkrow .u-bulkbtn:disabled{opacity:.45;cursor:not-allowed}
|
|
77
|
+
.u-clear-btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;min-height:0;padding:0;flex:none;border-radius:999px;border:0;background:none;color:var(--u-muted);cursor:pointer}
|
|
78
|
+
.u-clear-btn svg{width:15px;height:15px}
|
|
79
|
+
.u-clear-btn:hover:not(:disabled){color:var(--u-text);background:var(--u-surface-2)}
|
|
80
|
+
.u-clear-btn:disabled{opacity:.4;cursor:not-allowed}
|
|
75
81
|
.u-rows{list-style:none;margin:0;padding:0;overflow:auto;flex:1;min-height:0}
|
|
76
82
|
.u-rows li{display:flex;flex-wrap:wrap;align-items:stretch;border-bottom:1px solid var(--u-border)}
|
|
77
83
|
.u-row-open{flex:1;min-width:0;text-align:left;border:0;background:transparent;padding:11px 12px;display:grid;grid-template-columns:36px minmax(0,1fr);gap:2px 10px;min-height:64px}
|
|
@@ -141,6 +147,19 @@ export const upliftStyles = `
|
|
|
141
147
|
.u-ag-spinning svg{animation:u-spin 1s linear infinite}
|
|
142
148
|
@keyframes u-spin{to{transform:rotate(360deg)}}
|
|
143
149
|
.u-ag-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
|
|
150
|
+
.u-ag-tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
|
|
151
|
+
.u-ag-tile{display:flex;align-items:center;gap:5px;min-height:30px;padding:6px 8px;border:1px solid var(--u-border);border-radius:8px;background:var(--u-bg);color:var(--u-muted);min-width:0;overflow:hidden;text-align:left;cursor:pointer;transition:border-color .15s,background .15s}
|
|
152
|
+
.u-ag-tile:hover{border-color:var(--u-muted)}
|
|
153
|
+
.u-ag-tile-ic{display:inline-flex;flex:none}.u-ag-tile-ic svg{width:12px;height:12px}
|
|
154
|
+
.u-ag-tile-txt{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:12px;line-height:1.2;font-weight:600;color:var(--u-muted)}
|
|
155
|
+
.u-ag-tile-txt.u-ag-tile-on{color:var(--u-text)}
|
|
156
|
+
.u-ag-tile-shimmer{height:30px;border-radius:8px;background:linear-gradient(90deg,var(--u-surface-2) 25%,var(--u-border) 50%,var(--u-surface-2) 75%);background-size:300% 100%;animation:u-ag-tiles 1.4s ease-in-out infinite}
|
|
157
|
+
@keyframes u-ag-tiles{0%{background-position:200% 0}100%{background-position:-200% 0}}
|
|
158
|
+
.u-ag-lab svg{width:12px;height:12px}
|
|
159
|
+
.u-pill-gen .u-pill-grow{position:relative}
|
|
160
|
+
.u-pill-gen .u-pill-grow::after{content:"";position:absolute;inset:8px 6px;border-radius:6px;pointer-events:none;background:linear-gradient(var(--u-surface-2),var(--u-surface-2)) 0 0/100% 9px no-repeat,linear-gradient(var(--u-surface-2),var(--u-surface-2)) 0 15px/88% 9px no-repeat,linear-gradient(var(--u-surface-2),var(--u-surface-2)) 0 30px/60% 9px no-repeat;animation:u-pill-gen 1.4s ease-in-out infinite}
|
|
161
|
+
@keyframes u-pill-gen{0%,100%{opacity:.5}50%{opacity:1}}
|
|
162
|
+
@media (prefers-reduced-motion: reduce){.u-ag-tile-shimmer,.u-pill-gen .u-pill-grow::after{animation:none}}
|
|
144
163
|
.u-ag-cell{position:relative;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:2px;min-height:56px;padding:10px 12px;background:var(--u-surface-2);border:1px solid transparent;border-radius:var(--u-radius);color:var(--u-text);text-align:left;transition:background .15s,transform .15s}
|
|
145
164
|
.u-ag-cell:hover:not(:disabled){background:var(--u-bg)}
|
|
146
165
|
/* Gold shimmer ring on finished drafts (Ian, 2026-10-11): a gradient pseudo-element masked to the edge. Reduced motion leaves a still ring. */
|
|
@@ -150,7 +169,7 @@ export const upliftStyles = `
|
|
|
150
169
|
.u-ag-cell[aria-checked="true"]::before{display:none}
|
|
151
170
|
.u-ag-lab{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;color:var(--u-highlight);text-transform:uppercase;letter-spacing:.04em}
|
|
152
171
|
.u-ag-pencil{display:inline-flex;opacity:.6}.u-ag-pencil svg{width:10px;height:10px}
|
|
153
|
-
.u-ag-txt{font-size:14px;line-height:1.35;color:var(--u-text);display:-webkit-box;-webkit-line-clamp:
|
|
172
|
+
.u-ag-txt{font-size:14px;line-height:1.35;color:var(--u-text);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;word-break:break-word}
|
|
154
173
|
.u-ag-loading{overflow:hidden;cursor:default;pointer-events:none;justify-content:center;align-items:center;border-color:var(--u-border)}
|
|
155
174
|
.u-ag-loading-txt{position:relative;z-index:1;font-size:12px;color:var(--u-muted)}
|
|
156
175
|
.u-ag-shimmer{position:absolute;inset:0;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.55) 50%,transparent 100%);animation:u-ag-sheen 1.4s infinite;transform:translateX(-100%)}
|
|
@@ -199,6 +218,7 @@ export const upliftStyles = `
|
|
|
199
218
|
.u-send-btn svg{width:15px;height:15px;stroke:var(--u-accent-ink)}
|
|
200
219
|
.u-send-btn:hover:not(:disabled){transform:translateY(-1px)}
|
|
201
220
|
.u-send-btn:disabled{opacity:.4;cursor:not-allowed}
|
|
221
|
+
.u-send-btn-text{width:auto;padding:0 12px;font-size:12.5px;font-weight:600;white-space:nowrap}
|
|
202
222
|
.u-gen-btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;min-height:0;padding:0;flex:none;border:0;border-radius:999px;background:transparent;color:var(--u-highlight);transition:background .15s}
|
|
203
223
|
.u-gen-btn svg{width:16px;height:16px}
|
|
204
224
|
.u-gen-btn:hover:not(:disabled){background:var(--u-highlight-soft)}
|
|
@@ -378,18 +398,17 @@ export const upliftStyles = `
|
|
|
378
398
|
.u-ai-sec h4{margin:0;font-size:14px}
|
|
379
399
|
.u-ai-area,.u-ai-input{font:inherit;font-size:13.5px;color:var(--u-text);background:var(--u-surface-2);border:1px solid var(--u-border);border-radius:8px;padding:8px 10px;width:100%;box-sizing:border-box}
|
|
380
400
|
.u-ai-area{resize:vertical}
|
|
381
|
-
.u-ai-hr{border:0;border-top:1px solid var(--u-border);margin:8px 0}
|
|
382
401
|
.u-ai-form{display:flex;flex-direction:column;gap:6px;border:1px solid var(--u-border);border-radius:10px;padding:10px}
|
|
383
402
|
.u-ai-form label{font-size:12.5px;font-weight:700}
|
|
384
403
|
.u-ai-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
|
|
385
404
|
.u-ai-list li{border:1px solid var(--u-border);border-radius:10px;padding:8px 10px;display:flex;flex-direction:column;gap:3px}
|
|
386
405
|
.u-ai-item-head{display:flex;align-items:center;gap:6px;font-size:13px}
|
|
387
|
-
.u-ai-check{color:var(--u-accent);display:inline-flex}
|
|
388
|
-
.u-ai-check svg{width:14px;height:14px}
|
|
389
406
|
.u-ai-tags{display:flex;flex-wrap:wrap;gap:4px}
|
|
407
|
+
.u-ai-learned{display:grid;grid-template-columns:max-content 1fr;gap:6px 14px;margin:8px 0 0;font-size:13.5px}
|
|
408
|
+
.u-ai-learned dt{font-weight:700;color:var(--u-muted)}
|
|
409
|
+
.u-ai-learned dd{margin:0}
|
|
390
410
|
.u-ai-k{font-size:11.5px;font-weight:700;color:var(--u-muted);text-transform:uppercase;letter-spacing:.04em}
|
|
391
411
|
.u-ai-v{font-size:13.5px;white-space:pre-wrap}
|
|
392
|
-
.u-ai-voice{display:flex;flex-direction:column;gap:6px}
|
|
393
412
|
.u-ai-locked{border:1px dashed var(--u-border);border-radius:10px;padding:12px;font-size:13px;color:var(--u-muted)}
|
|
394
413
|
.u-ai-locked strong{color:var(--u-text)}
|
|
395
414
|
.u-ai-field{display:flex;flex-direction:column;gap:3px;margin-top:10px}
|
|
@@ -442,13 +461,23 @@ export const upliftStyles = `
|
|
|
442
461
|
.u-editor-rich:empty::before{content:attr(data-placeholder);color:var(--u-muted);pointer-events:none}
|
|
443
462
|
.u-editor-rich[aria-disabled="true"]{opacity:.6}
|
|
444
463
|
/* Draft pills, ported from native: one per clause, hue hashed from the text, × drops it. */
|
|
445
|
-
|
|
446
|
-
.u-seg:
|
|
464
|
+
/* Pills keep the suggested draft's greyed text until the coach touches one: clicked or typed-in pills turn white (native #633). */
|
|
465
|
+
.u-seg{display:inline;padding:1px 3px;margin:0 2px 0 0;border-radius:6px;border:1px solid var(--u-highlight-soft);background:var(--u-surface-2);color:var(--u-muted);line-height:1.9;-webkit-box-decoration-break:clone;box-decoration-break:clone;transition:background .15s,color .15s,border-color .15s}
|
|
466
|
+
.u-seg.touched{background:var(--u-bg);color:var(--u-text)}
|
|
467
|
+
.u-seg.active{background:var(--u-bg);color:var(--u-text);border-color:var(--u-highlight)}
|
|
468
|
+
/* Suggested draft: Uplift's words, softened, until the coach engages. */
|
|
469
|
+
.u-editor-sugg{cursor:text;display:flex;flex-direction:column;gap:2px}
|
|
470
|
+
.u-pill .u-editor-sugg,.u-editor-sugg{background:var(--u-surface-2);border-radius:10px}
|
|
471
|
+
.u-editor-sugg:focus-visible{outline:2px solid var(--u-highlight);outline-offset:1px}
|
|
472
|
+
.u-sugg-label{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:var(--u-highlight)}
|
|
473
|
+
.u-sugg-label i{width:7px;height:7px;border-radius:50%;background:currentColor;display:inline-block}
|
|
474
|
+
.u-sugg-label em{font-style:normal;font-weight:400;color:var(--u-muted)}
|
|
475
|
+
.u-sugg-text{color:var(--u-muted)}
|
|
447
476
|
/* Stock intro: no pill highlight, the text itself shimmers gold (gradient clipped to the glyphs). Reduced motion leaves a still gold gradient. */
|
|
448
|
-
.u-seg-lock{cursor:default;user-select:text;padding:0;margin:0;border-radius:0;font-weight:600;background:linear-gradient(110deg,var(--u-gold-ink) 0%,var(--u-gold-ink-hi) 30%,var(--u-gold-ink) 50%,var(--u-gold-ink-hi) 70%,var(--u-gold-ink) 100%);background-size:250% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;animation:u-shimmer 4s linear infinite}
|
|
477
|
+
.u-seg-lock{cursor:default;user-select:text;padding:0;margin:0;border:0;border-radius:0;font-weight:600;background:linear-gradient(110deg,var(--u-gold-ink) 0%,var(--u-gold-ink-hi) 30%,var(--u-gold-ink) 50%,var(--u-gold-ink-hi) 70%,var(--u-gold-ink) 100%);background-size:250% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;animation:u-shimmer 4s linear infinite}
|
|
449
478
|
.u-seg-lock:hover{opacity:1}
|
|
450
|
-
.u-seg-x{display:inline-flex;align-items:center;justify-content:center;margin-left:
|
|
451
|
-
.u-seg-x:hover,.u-seg-x:active,.u-seg-x:focus-visible{color
|
|
479
|
+
.u-seg-x{display:inline-flex;align-items:center;justify-content:center;margin-left:2px;min-width:24px;min-height:24px;cursor:pointer;font-size:14px;color:var(--u-muted);border-radius:6px;line-height:1;vertical-align:middle;user-select:none;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
|
|
480
|
+
.u-seg-x:hover,.u-seg-x:active,.u-seg-x:focus-visible{color:var(--u-text);background:var(--u-border);outline:none}
|
|
452
481
|
.u-editor:disabled{opacity:.6}
|
|
453
482
|
.u-send{border:0;background:var(--u-accent);color:var(--u-accent-ink);font-weight:700;border-radius:9px;padding:8px 16px;min-height:40px}
|
|
454
483
|
.u-send:disabled{opacity:.45}
|
|
@@ -462,13 +491,21 @@ export const upliftStyles = `
|
|
|
462
491
|
.u-headbtn{border:1px solid var(--u-border);background:var(--u-bg);border-radius:8px;padding:6px 11px;font-size:14px;font-weight:600;min-height:34px}
|
|
463
492
|
.u-headbtn:disabled{opacity:.5}
|
|
464
493
|
.u-connect{margin-left:4px;display:inline-flex;align-items:center;gap:7px;flex:none}
|
|
494
|
+
.u-hostlink{margin-left:4px;display:inline-flex;align-items:center;gap:6px;flex:none;text-decoration:none;color:var(--u-text);white-space:nowrap}
|
|
495
|
+
.u-hostlink-icon{width:18px;height:18px;object-fit:contain;flex:none}
|
|
496
|
+
.u-ev-open{margin-top:8px;display:flex}
|
|
497
|
+
.u-ev-open .u-hostlink{margin-left:0}
|
|
498
|
+
.u-ia-extra{display:inline-flex;margin-left:4px}
|
|
499
|
+
.u-ia-extra .u-hostlink{margin-left:0;border:0;background:transparent;color:var(--u-muted);font-size:12px;font-weight:600;padding:2px 6px;border-radius:6px;min-height:24px;gap:5px}
|
|
500
|
+
.u-ia-extra .u-hostlink:hover{background:var(--u-surface-3);color:var(--u-text)}
|
|
501
|
+
.u-ia-extra .u-hostlink-icon{width:14px;height:14px}
|
|
465
502
|
/* AI settings + full screen: the right end of the conversation header (no panel header row). */
|
|
466
503
|
.u-head-acts{margin-left:auto;display:inline-flex;align-items:center;gap:6px;flex:none}
|
|
467
504
|
.u-chan ~ .u-head-acts{margin-left:6px}
|
|
468
505
|
.u-pane-head-empty{justify-content:flex-end;min-height:62px;box-sizing:border-box}
|
|
469
506
|
/* On wide panels the toolbar leaves them to the conversation header. */
|
|
470
507
|
.u-toolbar-acts{display:none}
|
|
471
|
-
.u-toolbar .u-addbtn{flex:none}
|
|
508
|
+
.u-toolbar .u-addbtn{flex:none;margin-left:auto}
|
|
472
509
|
.u-connect svg{flex:none}
|
|
473
510
|
.u-example{width:100%;border:1px dashed var(--u-border);border-radius:12px;padding:12px;background:var(--u-surface-2);display:flex;flex-direction:column}
|
|
474
511
|
.u-ex-lab{font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--u-muted);margin-bottom:6px}
|
|
@@ -527,6 +564,11 @@ export const upliftStyles = `
|
|
|
527
564
|
.u-who strong,.u-who small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
|
528
565
|
.u-connect{padding:6px 9px}
|
|
529
566
|
.u-connect span{display:none}
|
|
567
|
+
/* The host link stays, compact; the name keeps room to show. */
|
|
568
|
+
.u-who{min-width:72px}
|
|
569
|
+
.u-pane-head .u-hostlink{padding:6px 9px;font-size:13px}
|
|
570
|
+
/* With a host link there may not be room for everything: the panel's buttons wrap to a second line rather than run off the edge. */
|
|
571
|
+
.u-pane-head{flex-wrap:wrap;row-gap:6px}
|
|
530
572
|
.u-ag-grid{grid-template-columns:1fr}
|
|
531
573
|
.u-c-actions .u-meta{flex-basis:100%}
|
|
532
574
|
.u-sheet-wrap{padding:0}
|
package/dist/styles.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../src/styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,uBAAuB,CAAC;AAExD,MAAM,CAAC,MAAM,YAAY,GAAG
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../src/styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,uBAAuB,CAAC;AAExD,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqjB3B,CAAC;AAEF,4EAA4E;AAC5E,MAAM,UAAU,YAAY,CAAC,MAA4B,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;IAC7G,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,gBAAgB,CAAC;QAAE,OAAO;IACzD,MAAM,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACtC,EAAE,CAAC,EAAE,GAAG,gBAAgB,CAAC;IACzB,EAAE,CAAC,WAAW,GAAG,YAAY,CAAC;IAC9B,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AAC3B,CAAC"}
|
|
@@ -11,5 +11,5 @@ export declare function usePreviewDrafts(input: {
|
|
|
11
11
|
events: ReadonlyArray<PreviewEvent>;
|
|
12
12
|
} | null): DraftsState;
|
|
13
13
|
/** Only the fields the preview endpoint accepts (it rejects unknown keys such as a host's own id). */
|
|
14
|
-
export declare function toPreviewEvent({ type, occurredAt, exercise, sets, reps, weight, unit, sessionName }: PreviewEvent): PreviewEvent;
|
|
14
|
+
export declare function toPreviewEvent({ type, occurredAt, exercise, sets, reps, weight, unit, sessionName, channel, text }: PreviewEvent): PreviewEvent;
|
|
15
15
|
//# sourceMappingURL=usePreviewDrafts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePreviewDrafts.d.ts","sourceRoot":"","sources":["../src/usePreviewDrafts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAyB,YAAY,EAAe,MAAM,eAAe,CAAC;AAGtF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,MAAM,EAAE,aAAa,CAAC,YAAY,CAAC,CAAA;CAAE,GAAG,IAAI,GAAG,WAAW,CAgDvJ;AAED,sGAAsG;AACtG,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,YAAY,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"usePreviewDrafts.d.ts","sourceRoot":"","sources":["../src/usePreviewDrafts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAyB,YAAY,EAAe,MAAM,eAAe,CAAC;AAGtF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,MAAM,EAAE,aAAa,CAAC,YAAY,CAAC,CAAA;CAAE,GAAG,IAAI,GAAG,WAAW,CAgDvJ;AAED,sGAAsG;AACtG,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,YAAY,GAAG,YAAY,CAc/I"}
|
package/dist/usePreviewDrafts.js
CHANGED
|
@@ -58,7 +58,7 @@ export function usePreviewDrafts(input) {
|
|
|
58
58
|
return { status, drafts, error, retryIn, generate, clear, seed };
|
|
59
59
|
}
|
|
60
60
|
/** Only the fields the preview endpoint accepts (it rejects unknown keys such as a host's own id). */
|
|
61
|
-
export function toPreviewEvent({ type, occurredAt, exercise, sets, reps, weight, unit, sessionName }) {
|
|
61
|
+
export function toPreviewEvent({ type, occurredAt, exercise, sets, reps, weight, unit, sessionName, channel, text }) {
|
|
62
62
|
const e = { type, occurredAt };
|
|
63
63
|
if (exercise)
|
|
64
64
|
e.exercise = exercise;
|
|
@@ -72,6 +72,13 @@ export function toPreviewEvent({ type, occurredAt, exercise, sets, reps, weight,
|
|
|
72
72
|
e.unit = unit;
|
|
73
73
|
if (sessionName)
|
|
74
74
|
e.sessionName = sessionName;
|
|
75
|
+
// Only a message the client sent in the host's own app carries these; Uplift rejects them elsewhere.
|
|
76
|
+
if (type === "externalMessage") {
|
|
77
|
+
if (channel)
|
|
78
|
+
e.channel = channel;
|
|
79
|
+
if (text)
|
|
80
|
+
e.text = text.slice(0, 500);
|
|
81
|
+
}
|
|
75
82
|
return e;
|
|
76
83
|
}
|
|
77
84
|
//# sourceMappingURL=usePreviewDrafts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePreviewDrafts.js","sourceRoot":"","sources":["../src/usePreviewDrafts.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"usePreviewDrafts.js","sourceRoot":"","sources":["../src/usePreviewDrafts.ts"],"names":[],"mappings":"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"}
|
package/dist/useSend.d.ts
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
|
-
import type { Attachment, SendResult, UpliftError } from "@uplifted/sdk";
|
|
1
|
+
import type { Attachment, DraftContext, SendOrigin, SendResult, UpliftError } from "@uplifted/sdk";
|
|
2
2
|
export type SendStatus = "idle" | "sending" | "sent" | "error";
|
|
3
|
+
/** How the coach produced the text and what drafts were on screen (draftContext.ts); teaches Uplift their voice. */
|
|
4
|
+
export interface SendVoice {
|
|
5
|
+
origin: SendOrigin;
|
|
6
|
+
draftContext: DraftContext | null;
|
|
7
|
+
}
|
|
3
8
|
export interface SendState {
|
|
4
9
|
status: SendStatus;
|
|
5
10
|
error: UpliftError | null;
|
|
@@ -8,7 +13,7 @@ export interface SendState {
|
|
|
8
13
|
* Send `body`. Resolves with the result, or null on failure (read `error`). The same text
|
|
9
14
|
* keeps the same Idempotency-Key until it succeeds, so Retry can never double send (C21, T24).
|
|
10
15
|
*/
|
|
11
|
-
send: (body: string, attachments?: Attachment[]) => Promise<SendResult | null>;
|
|
16
|
+
send: (body: string, attachments?: Attachment[], voice?: SendVoice) => Promise<SendResult | null>;
|
|
12
17
|
/** Back to idle; the key for the current text is kept. */
|
|
13
18
|
reset: () => void;
|
|
14
19
|
}
|
package/dist/useSend.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSend.d.ts","sourceRoot":"","sources":["../src/useSend.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"useSend.d.ts","sourceRoot":"","sources":["../src/useSend.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAInG,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAE/D,oHAAoH;AACpH,MAAM,WAAW,SAAS;IAAG,MAAM,EAAE,UAAU,CAAC;IAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAAA;CAAE;AAEpF,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1B;;;OAGG;IACH,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,EAAE,KAAK,CAAC,EAAE,SAAS,KAAK,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IAClG,0DAA0D;IAC1D,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAQD,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CA4C1D"}
|
package/dist/useSend.js
CHANGED
|
@@ -19,7 +19,7 @@ export function useSend(clientId) {
|
|
|
19
19
|
setError(null);
|
|
20
20
|
setResult(null);
|
|
21
21
|
}, [clientId]);
|
|
22
|
-
const send = useCallback(async (body, attachments = []) => {
|
|
22
|
+
const send = useCallback(async (body, attachments = [], voice) => {
|
|
23
23
|
if (!clientId || status === "sending")
|
|
24
24
|
return null;
|
|
25
25
|
const text = body.trim();
|
|
@@ -32,7 +32,12 @@ export function useSend(clientId) {
|
|
|
32
32
|
setStatus("sending");
|
|
33
33
|
setError(null);
|
|
34
34
|
try {
|
|
35
|
-
const res = await client.send(clientId, {
|
|
35
|
+
const res = await client.send(clientId, {
|
|
36
|
+
body: text,
|
|
37
|
+
...(attachments.length ? { attachments } : {}),
|
|
38
|
+
...(voice ? { origin: voice.origin, draftContext: voice.draftContext } : {}),
|
|
39
|
+
idempotencyKey: keyFor.current.key,
|
|
40
|
+
});
|
|
36
41
|
keyFor.current = null;
|
|
37
42
|
setResult(res);
|
|
38
43
|
setStatus("sent");
|
package/dist/useSend.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSend.js","sourceRoot":"","sources":["../src/useSend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"useSend.js","sourceRoot":"","sources":["../src/useSend.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uplifted/react",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.24.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Uplift messaging screens as host-agnostic React components and hooks.",
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -19,12 +19,12 @@
|
|
|
19
19
|
],
|
|
20
20
|
"sideEffects": false,
|
|
21
21
|
"peerDependencies": {
|
|
22
|
-
"@uplifted/sdk": "^0.
|
|
22
|
+
"@uplifted/sdk": "^0.11.0",
|
|
23
23
|
"react": "^18.3.0 || ^19.0.0",
|
|
24
24
|
"react-dom": "^18.3.0 || ^19.0.0"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"@uplifted/sdk": "0.
|
|
27
|
+
"@uplifted/sdk": "0.11.0"
|
|
28
28
|
},
|
|
29
29
|
"publishConfig": {
|
|
30
30
|
"access": "restricted"
|