wealth-alpha-chat-widget 1.0.2 → 1.0.4

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/styles/chat.module.css"],"sourcesContent":[".root {\n --wac-brand: #1a2d5a;\n --wac-brand-contrast: #ffffff;\n --wac-bg: #ffffff;\n --wac-fg: #1f2937;\n --wac-muted: #6b7280;\n --wac-border: #e5e7eb;\n --wac-bot-bg: #f3f4f6;\n --wac-user-bg: var(--wac-brand);\n --wac-chip-bg: #eef2ff;\n --wac-chip-fg: #1e293b;\n --wac-chip-active-bg: var(--wac-brand);\n --wac-chip-active-fg: #ffffff;\n --wac-radius: 14px;\n --wac-shadow: 0 12px 40px rgba(0, 0, 0, 0.18);\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n color: var(--wac-fg);\n box-sizing: border-box;\n}\n\n.root *,\n.root *::before,\n.root *::after {\n box-sizing: inherit;\n}\n\n.floatingButton {\n position: fixed;\n bottom: 24px;\n z-index: 2147483646;\n width: 60px;\n height: 60px;\n border-radius: 50%;\n background: var(--wac-brand);\n color: var(--wac-brand-contrast);\n border: none;\n cursor: pointer;\n box-shadow: var(--wac-shadow);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 26px;\n transition: transform 0.15s ease, box-shadow 0.15s ease;\n}\n\n.floatingButton:hover {\n transform: translateY(-2px);\n box-shadow: 0 16px 48px rgba(0, 0, 0, 0.22);\n}\n\n.positionRight {\n right: 24px;\n}\n\n.positionLeft {\n left: 24px;\n}\n\n.widget {\n position: fixed;\n bottom: 24px;\n z-index: 2147483647;\n width: 420px;\n max-width: calc(100vw - 24px);\n height: min(760px, calc(100vh - 48px));\n background: var(--wac-bg);\n color: var(--wac-fg);\n border-radius: var(--wac-radius);\n box-shadow: var(--wac-shadow);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n border: 1px solid var(--wac-border);\n}\n\n@media (max-width: 640px) {\n .widget {\n width: calc(100vw - 12px);\n height: calc(100vh - 24px);\n bottom: 12px;\n }\n .positionRight,\n .positionLeft {\n right: 6px;\n left: auto;\n }\n .floatingButton {\n width: 56px;\n height: 56px;\n bottom: 16px;\n }\n /* Both positions collapse to right: 6px on mobile, so sync popup */\n .popupBubbleLeft,\n .popupBubbleRight {\n right: 72px;\n left: auto;\n bottom: 16px;\n max-width: calc(100vw - 84px);\n }\n}\n\n.header {\n background: var(--wac-brand);\n color: var(--wac-brand-contrast);\n padding: 14px 16px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n}\n\n.headerTitle {\n font-weight: 600;\n font-size: 15px;\n line-height: 1.2;\n}\n\n.headerMeta {\n font-size: 11px;\n opacity: 0.85;\n margin-top: 2px;\n}\n\n.headerActions {\n display: flex;\n gap: 4px;\n align-items: center;\n}\n\n.iconButton {\n background: transparent;\n color: inherit;\n border: none;\n cursor: pointer;\n font-size: 18px;\n padding: 4px 8px;\n border-radius: 6px;\n line-height: 1;\n}\n\n.iconButton:hover {\n background: rgba(255, 255, 255, 0.15);\n}\n\n.body {\n flex: 1;\n overflow-y: auto;\n padding: 14px;\n display: flex;\n flex-direction: column;\n gap: 10px;\n background: #fafafa;\n scroll-behavior: smooth;\n}\n\n.body::-webkit-scrollbar {\n width: 6px;\n}\n\n.body::-webkit-scrollbar-thumb {\n background: #d1d5db;\n border-radius: 3px;\n}\n\n.bubble {\n max-width: 80%;\n padding: 10px 14px;\n border-radius: 12px;\n font-size: 14px;\n line-height: 1.45;\n word-wrap: break-word;\n white-space: pre-wrap;\n}\n\n/* markdown-it output inside a bot bubble.\n markdown-it (breaks: true) emits a <br> for every \\n in the source,\n so we MUST NOT also apply white-space: pre-wrap here — otherwise every\n newline gets rendered twice (once via <br>, once via the literal \\n in\n CSS) and the bubble looks double-spaced. */\n.markdown {\n white-space: normal;\n}\n.markdown p {\n margin: 0 0 6px 0;\n}\n.markdown p:last-child {\n margin-bottom: 0;\n}\n.markdown br {\n /* Make consecutive <br>s collapse a bit — keeps line rhythm tight. */\n line-height: 1.4;\n}\n.markdown strong {\n font-weight: 700;\n color: var(--wac-fg);\n letter-spacing: 0.2px;\n}\n.markdown em {\n font-style: italic;\n color: var(--wac-muted);\n}\n.markdown ul,\n.markdown ol {\n margin: 4px 0 6px 0;\n padding-left: 22px;\n}\n.markdown li {\n margin: 1px 0;\n}\n.markdown a {\n color: var(--wac-brand);\n text-decoration: underline;\n}\n.markdown code {\n background: rgba(0, 0, 0, 0.06);\n padding: 1px 4px;\n border-radius: 4px;\n font-family: ui-monospace, SFMono-Regular, Menlo, monospace;\n font-size: 12.5px;\n}\n.markdown h1,\n.markdown h2,\n.markdown h3 {\n margin: 6px 0 2px 0;\n font-size: 14px;\n font-weight: 700;\n}\n\n.bubbleBot {\n align-self: flex-start;\n background: var(--wac-bot-bg);\n color: var(--wac-fg);\n border-bottom-left-radius: 4px;\n}\n\n.bubbleUser {\n align-self: flex-end;\n background: var(--wac-user-bg);\n color: var(--wac-brand-contrast);\n border-bottom-right-radius: 4px;\n}\n\n.bubbleMeta {\n font-size: 10px;\n color: var(--wac-muted);\n margin-top: 4px;\n text-align: right;\n}\n\n.chipRow {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n margin-top: 8px;\n}\n\n.chip {\n padding: 7px 12px;\n background: var(--wac-chip-bg);\n color: var(--wac-chip-fg);\n border: 1px solid transparent;\n border-radius: 999px;\n font-size: 13px;\n cursor: pointer;\n transition: background 0.15s ease, transform 0.15s ease;\n font-family: inherit;\n}\n\n.chip:hover:not(:disabled) {\n background: #dbeafe;\n transform: translateY(-1px);\n}\n\n.chipActive {\n background: var(--wac-chip-active-bg);\n color: var(--wac-chip-active-fg);\n}\n\n.chipDisabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.typing {\n align-self: flex-start;\n display: inline-flex;\n gap: 4px;\n padding: 10px 14px;\n background: var(--wac-bot-bg);\n border-radius: 12px;\n border-bottom-left-radius: 4px;\n}\n\n.typingDot {\n width: 7px;\n height: 7px;\n background: var(--wac-muted);\n border-radius: 50%;\n animation: wacBlink 1.2s infinite ease-in-out both;\n}\n\n.typingDot:nth-child(2) {\n animation-delay: 0.18s;\n}\n.typingDot:nth-child(3) {\n animation-delay: 0.36s;\n}\n\n@keyframes wacBlink {\n 0%, 80%, 100% { opacity: 0.3; transform: scale(0.85); }\n 40% { opacity: 1; transform: scale(1); }\n}\n\n.input {\n display: flex;\n gap: 8px;\n padding: 10px 12px;\n border-top: 1px solid var(--wac-border);\n background: var(--wac-bg);\n}\n\n.inputBox {\n flex: 1;\n padding: 10px 14px;\n border: 1px solid var(--wac-border);\n border-radius: 999px;\n font-size: 14px;\n outline: none;\n font-family: inherit;\n background: #f9fafb;\n color: var(--wac-fg);\n}\n\n.inputBox:focus {\n border-color: var(--wac-brand);\n background: var(--wac-bg);\n}\n\n.inputBox:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.sendButton {\n padding: 0 16px;\n background: var(--wac-brand);\n color: var(--wac-brand-contrast);\n border: none;\n border-radius: 999px;\n font-weight: 600;\n cursor: pointer;\n font-size: 14px;\n font-family: inherit;\n}\n\n.sendButton:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.hiddenFileInput {\n position: absolute;\n width: 0;\n height: 0;\n opacity: 0;\n overflow: hidden;\n pointer-events: none;\n}\n\n.csvButton {\n flex-shrink: 0;\n padding: 0 12px;\n background: var(--wac-chip-bg);\n color: var(--wac-chip-fg);\n border: 1px solid var(--wac-border);\n border-radius: 999px;\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n font-family: inherit;\n white-space: nowrap;\n}\n\n.csvButton:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.authGate {\n margin: auto;\n text-align: center;\n padding: 32px 24px;\n max-width: 280px;\n display: flex;\n flex-direction: column;\n gap: 12px;\n align-items: center;\n}\n\n.authGateIcon {\n font-size: 36px;\n}\n\n.authGateTitle {\n font-size: 16px;\n font-weight: 600;\n}\n\n.authGateText {\n font-size: 13px;\n color: var(--wac-muted);\n line-height: 1.5;\n}\n\n.authGateButton {\n margin-top: 8px;\n padding: 10px 20px;\n background: var(--wac-brand);\n color: var(--wac-brand-contrast);\n border: none;\n border-radius: 999px;\n cursor: pointer;\n font-weight: 600;\n font-size: 14px;\n font-family: inherit;\n}\n\n.authGateDisclaimer {\n margin-top: 16px;\n padding-top: 12px;\n border-top: 1px dashed var(--wac-border);\n font-size: 11px;\n color: var(--wac-muted);\n line-height: 1.5;\n text-align: left;\n width: 100%;\n}\n\n.authGateDisclaimerTitle {\n font-weight: 700;\n letter-spacing: 0.6px;\n font-size: 10px;\n margin-bottom: 4px;\n color: var(--wac-fg);\n}\n\n.errorBanner {\n background: #fef2f2;\n border: 1px solid #fecaca;\n color: #991b1b;\n padding: 8px 12px;\n font-size: 12px;\n border-radius: 8px;\n margin: 0 14px 8px;\n}\n\n/* ── Greeting popup bubble ─────────────────────────────────────── */\n\n.popupBubble {\n position: fixed;\n bottom: 24px;\n z-index: 2147483646;\n background: var(--wac-brand);\n color: var(--wac-brand-contrast);\n border-radius: 12px;\n padding: 12px 36px 12px 14px;\n font-size: 13px;\n line-height: 1.45;\n box-shadow: var(--wac-shadow);\n border: none;\n max-width: 240px;\n animation: wacPopIn 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);\n}\n\n/* Shared arrow base — direction is set per-position class below */\n.popupBubble::after {\n content: '';\n position: absolute;\n width: 12px;\n height: 12px;\n background: var(--wac-brand);\n}\n\n/* Popup to the LEFT of a right-positioned button — arrow points right */\n.popupBubbleRight {\n right: 94px;\n}\n\n.popupBubbleRight::after {\n right: -7px;\n top: 50%;\n border-top: 1px solid var(--wac-brand);\n border-right: 1px solid var(--wac-brand);\n transform: translateY(-50%) rotate(45deg);\n}\n\n/* Popup to the RIGHT of a left-positioned button — arrow points left */\n.popupBubbleLeft {\n left: 94px;\n}\n\n.popupBubbleLeft::after {\n left: -7px;\n top: 50%;\n border-bottom: 1px solid var(--wac-brand);\n border-left: 1px solid var(--wac-brand);\n transform: translateY(-50%) rotate(45deg);\n}\n\n.popupDismiss {\n position: absolute;\n top: 8px;\n right: 8px;\n background: transparent;\n border: none;\n cursor: pointer;\n font-size: 14px;\n color: var(--wac-brand-contrast);\n line-height: 1;\n padding: 2px 4px;\n border-radius: 4px;\n font-family: inherit;\n opacity: 0.75;\n}\n\n.popupDismiss:hover {\n background: rgba(255, 255, 255, 0.15);\n opacity: 1;\n}\n\n@keyframes wacPopIn {\n 0% { opacity: 0; transform: scale(0.85) translateY(8px); }\n 100% { opacity: 1; transform: scale(1) translateY(0); }\n}\n"],"mappings":"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","names":["root","floatingButton","positionRight","positionLeft","widget","popupBubbleLeft","popupBubbleRight","header","headerTitle","headerMeta","headerActions","iconButton","body","bubble","markdown","bubbleBot","bubbleUser","bubbleMeta","chipRow","chip","chipActive","chipDisabled","typing","typingDot","wacBlink","input","inputBox","sendButton","hiddenFileInput","csvButton","authGate","authGateIcon","authGateTitle","authGateText","authGateButton","authGateDisclaimer","authGateDisclaimerTitle","errorBanner","popupBubble","popupDismiss","wacPopIn"]}
1
+ {"version":3,"sources":["../src/styles/chat.module.css"],"sourcesContent":["@import url('https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&family=Sora:wght@600;700;800&display=swap');\n\n.root {\n --wac-brand: #1a2d5a;\n --wac-brand-contrast: #ffffff;\n --wac-bg: #ffffff;\n --wac-fg: #1f2937;\n --wac-muted: #6b7280;\n --wac-border: #e5e7eb;\n --wac-bot-bg: #f3f4f6;\n --wac-user-bg: var(--wac-brand);\n --wac-chip-bg: #e7ebf7;\n --wac-chip-fg: #1c2c5b;\n --wac-chip-active-bg: var(--wac-brand);\n --wac-chip-active-fg: #ffffff;\n --wac-radius: 14px;\n --wac-shadow: 0 12px 40px rgba(0, 0, 0, 0.18);\n font-family: 'Manrope', system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';\n color: var(--wac-fg);\n box-sizing: border-box;\n}\n\n.root *,\n.root *::before,\n.root *::after {\n box-sizing: inherit;\n}\n\n/* Sora for headings/labels/symbols — mirrors the HTML prototype */\n.headerTitle,\n.menuItemTitle,\n.markdown :global(.wa-card-sym),\n.markdown :global(.sec) :global(.lbl),\n.markdown :global(.wa-verdict-lbl) {\n font-family: 'Sora', 'Manrope', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';\n}\n\n.floatingButton {\n position: fixed;\n bottom: 24px;\n z-index: 2147483646;\n width: 60px;\n height: 60px;\n border-radius: 50%;\n background: var(--wac-brand);\n color: var(--wac-brand-contrast);\n border: none;\n cursor: pointer;\n box-shadow: var(--wac-shadow);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 26px;\n transition: transform 0.15s ease, box-shadow 0.15s ease;\n}\n\n.floatingButton:hover {\n transform: translateY(-2px);\n box-shadow: 0 16px 48px rgba(0, 0, 0, 0.22);\n}\n\n.positionRight {\n right: 24px;\n}\n\n.positionLeft {\n left: 24px;\n}\n\n.widget {\n position: fixed;\n bottom: 24px;\n z-index: 2147483647;\n width: 420px;\n max-width: calc(100vw - 24px);\n height: min(760px, calc(100vh - 48px));\n background: var(--wac-bg);\n color: var(--wac-fg);\n border-radius: 24px;\n box-shadow: 0 18px 50px -18px rgba(28, 44, 91, 0.45);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n border: 1px solid var(--wac-border);\n}\n\n@media (max-width: 640px) {\n .widget {\n width: calc(100vw - 12px);\n height: calc(100vh - 24px);\n bottom: 12px;\n }\n .positionRight,\n .positionLeft {\n right: 6px;\n left: auto;\n }\n .floatingButton {\n width: 56px;\n height: 56px;\n bottom: 16px;\n }\n /* Both positions collapse to right: 6px on mobile, so sync popup */\n .popupBubbleLeft,\n .popupBubbleRight {\n right: 72px;\n left: auto;\n bottom: 16px;\n max-width: calc(100vw - 84px);\n }\n}\n\n.header {\n background: linear-gradient(135deg, var(--wac-brand) 0%, #15224a 100%);\n color: var(--wac-brand-contrast);\n padding: 15px 18px 13px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n}\n\n.headerTitle {\n font-weight: 700;\n font-size: 17px;\n line-height: 1.2;\n}\n\n.headerMeta {\n font-size: 11px;\n opacity: 0.85;\n margin-top: 2px;\n}\n\n.headerActions {\n display: flex;\n gap: 4px;\n align-items: center;\n}\n\n.iconButton {\n background: transparent;\n color: inherit;\n border: none;\n cursor: pointer;\n font-size: 18px;\n padding: 4px 8px;\n border-radius: 6px;\n line-height: 1;\n}\n\n.iconButton:hover {\n background: rgba(255, 255, 255, 0.15);\n}\n\n.body {\n flex: 1;\n overflow-y: auto;\n padding: 14px;\n display: flex;\n flex-direction: column;\n gap: 10px;\n background: #fafafa;\n scroll-behavior: smooth;\n}\n\n.body::-webkit-scrollbar {\n width: 6px;\n}\n\n.body::-webkit-scrollbar-thumb {\n background: #d1d5db;\n border-radius: 3px;\n}\n\n.bubble {\n /* max-width: 80%; */\n padding: 10px 14px;\n border-radius: 12px;\n font-size: 14px;\n line-height: 1.45;\n word-wrap: break-word;\n white-space: pre-wrap;\n}\n\n/* markdown-it output inside a bot bubble.\n markdown-it (breaks: true) emits a <br> for every \\n in the source,\n so we MUST NOT also apply white-space: pre-wrap here — otherwise every\n newline gets rendered twice (once via <br>, once via the literal \\n in\n CSS) and the bubble looks double-spaced. */\n.markdown {\n white-space: normal;\n --card-bg: #ffffff;\n --text: var(--wac-fg);\n --text-muted: var(--wac-muted);\n --green: #16a34a;\n --red: #dc2626;\n}\n.markdown p {\n margin: 0 0 6px 0;\n}\n.markdown p:last-child {\n margin-bottom: 0;\n}\n.markdown br {\n /* Make consecutive <br>s collapse a bit — keeps line rhythm tight. */\n line-height: 1.4;\n}\n.markdown strong {\n font-weight: 700;\n color: var(--wac-fg);\n letter-spacing: 0.2px;\n}\n.markdown em {\n font-style: italic;\n color: var(--wac-muted);\n}\n.markdown ul,\n.markdown ol {\n margin: 4px 0 6px 0;\n padding-left: 22px;\n}\n.markdown li {\n margin: 1px 0;\n}\n.markdown a {\n color: var(--wac-brand);\n text-decoration: underline;\n}\n.markdown code {\n background: rgba(0, 0, 0, 0.06);\n padding: 1px 4px;\n border-radius: 4px;\n font-family: ui-monospace, SFMono-Regular, Menlo, monospace;\n font-size: 12.5px;\n}\n.markdown h1,\n.markdown h2,\n.markdown h3 {\n margin: 6px 0 2px 0;\n font-size: 14px;\n font-weight: 700;\n}\n\n/* Price snapshot grid (backend: price_snapshot_template.py) */\n.markdown :global(.mgrid) {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 10px;\n margin-top: 8px;\n}\n\n.markdown :global(.mgrid) :global(.wa-price) {\n background: var(--card-bg, #fff);\n border: 1px solid #e6e9f5;\n border-radius: 12px;\n padding: 12px 14px;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.markdown :global(.mgrid) :global(.k) {\n font-size: 11px;\n color: var(--text-muted, #888);\n font-weight: 500;\n text-transform: uppercase;\n letter-spacing: 0.03em;\n}\n\n.markdown :global(.mgrid) :global(.wa-price-value) {\n font-size: 18px;\n font-weight: 700;\n color: var(--text, #111);\n}\n\n.markdown :global(.mgrid) :global(.wa-price-value.up) {\n color: var(--green);\n}\n\n.markdown :global(.mgrid) :global(.wa-price-value.down) {\n color: var(--red);\n}\n\n.markdown :global(.mgrid) :global(.n) {\n font-size: 12px;\n font-weight: 500;\n color: var(--text-muted, #888);\n}\n\n.markdown :global(.mgrid) :global(.n.up) {\n color: var(--green);\n}\n\n.markdown :global(.mgrid) :global(.n.down) {\n color: var(--red);\n}\n\n.markdown :global(.sec) :global(.lbl) {\n font-size: 13px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: var(--text-muted, #666);\n margin-bottom: 6px;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.markdown :global(.mgrid) :global(.wa-price.full-width) {\n grid-column: 1 / -1;\n text-align: center;\n align-items: center;\n justify-content: center;\n}\n/* ── Stock Analysis Card — existing investor flow ────────────────────────── */\n\n/* Outer card wrapper */\n.markdown :global(.wa-analysis-card) {\n background: #fff;\n border: 1px solid #e6e9f5;\n border-radius: 18px;\n overflow: hidden;\n box-shadow: 0 12px 34px -24px rgba(28, 44, 91, 0.4);\n margin-bottom: 4px;\n}\n\n/* Card header — navy gradient */\n.markdown :global(.wa-card-head) {\n background: linear-gradient(135deg, #22356e 0%, #15224a 100%);\n color: #fff;\n padding: 14px 16px 13px;\n position: relative;\n}\n.markdown :global(.wa-card-date) {\n float: right;\n font-size: 11px;\n opacity: 0.7;\n font-weight: 600;\n}\n.markdown :global(.wa-card-tag) {\n display: inline-block;\n font-size: 9.5px;\n font-weight: 800;\n letter-spacing: 1px;\n background: rgba(255, 255, 255, 0.16);\n padding: 3px 9px;\n border-radius: 6px;\n margin-bottom: 8px;\n}\n.markdown :global(.wa-card-sym) {\n font-weight: 700;\n font-size: 17px;\n line-height: 1.2;\n}\n.markdown :global(.wa-card-meta) {\n font-size: 11.5px;\n opacity: 0.8;\n margin-top: 3px;\n}\n\n/* Section container */\n.markdown :global(.sec) {\n padding: 12px 14px;\n border-top: 1px solid #eceffa;\n}\n\n/* Metric grid — flat variant (gap = 1px divider line effect) */\n.markdown :global(.mgrid.flat) {\n border: none;\n gap: 10px;\n background: transparent;\n margin-top: 9px;\n}\n\n/* Metric cell */\n.markdown :global(.mgrid) :global(.m) {\n background: #fff;\n border: 1px solid #e6e9f5;\n border-radius: 10px;\n padding: 12px 13px;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n.markdown :global(.mgrid) :global(.m) :global(.k) {\n font-size: 9.5px;\n color: #737b97;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n font-weight: 700;\n}\n.markdown :global(.mgrid) :global(.m) :global(.v) {\n font-size: 14px;\n font-weight: 700;\n color: #1c2438;\n margin-top: 2px;\n}\n.markdown :global(.mgrid) :global(.m) :global(.n) {\n font-size: 10.5px;\n font-weight: 700;\n color: #737b97;\n margin-top: 1px;\n}\n/* Score colour modifiers on .n inside metric cells */\n.markdown :global(.mgrid) :global(.m) :global(.n.good) {\n color: #16a34a;\n}\n.markdown :global(.mgrid) :global(.m) :global(.n.avg) {\n color: #737b97;\n}\n.markdown :global(.mgrid) :global(.m) :global(.n.low) {\n color: #b45309;\n}\n\n/* Regime label inside metric cell */\n.markdown :global(.wa-regime) {\n font-size: 12px;\n}\n\n/* Your Position block */\n.markdown :global(.wa-pos) {\n margin-top: 9px;\n border-radius: 12px;\n padding: 12px 14px;\n border: 1px solid #e5e7eb;\n background: #f9fafb;\n}\n.markdown :global(.wa-pos.profit) {\n background: linear-gradient(135deg, #ecfdf3, #f7fef9);\n border-color: #bbf7d0;\n}\n.markdown :global(.wa-pos.loss) {\n background: linear-gradient(135deg, #fef2f2, #fff5f5);\n border-color: #fecaca;\n}\n.markdown :global(.wa-pl) {\n font-weight: 800;\n font-size: 22px;\n line-height: 1;\n color: #1c2438;\n}\n.markdown :global(.wa-pl.up) {\n color: #16a34a;\n}\n.markdown :global(.wa-pl.down) {\n color: #dc2626;\n}\n.markdown :global(.wa-zone) {\n font-size: 11px;\n font-weight: 700;\n color: #737b97;\n text-transform: uppercase;\n letter-spacing: 0.4px;\n margin-top: 4px;\n}\n.markdown :global(.wa-summ) {\n font-size: 12.5px;\n line-height: 1.5;\n margin-top: 8px;\n color: #3a4159;\n}\n\n/* Key-value rows (Trend Structure, Indicators) */\n.markdown :global(.kv) {\n display: flex;\n gap: 8px;\n font-size: 12.5px;\n line-height: 1.5;\n margin-bottom: 7px;\n}\n.markdown :global(.kv:last-child) {\n margin-bottom: 0;\n}\n.markdown :global(.kk) {\n font-weight: 700;\n color: #1c2c5b;\n flex: 0 0 auto;\n min-width: 90px;\n}\n.markdown :global(.vv) {\n color: #3a4159;\n}\n\n/* Recovery level value */\n.markdown :global(.wa-recovery) {\n font-size: 11.5px;\n color: #3a4159;\n}\n\n/* Verdict block */\n.markdown :global(.wa-verdict) {\n padding: 13px 16px;\n border-top: 1px solid #eceffa;\n background: #fafbff;\n}\n.markdown :global(.wa-verdict-lbl) {\n font-size: 10.5px;\n font-weight: 700;\n letter-spacing: 0.7px;\n text-transform: uppercase;\n color: #1c2c5b;\n margin-bottom: 8px;\n}\n.markdown :global(.wa-verdict-list) {\n margin: 0;\n padding-left: 20px;\n list-style-type: disc;\n list-style-position: outside;\n font-size: 12.5px;\n line-height: 1.55;\n color: #3a4159;\n}\n.markdown :global(.wa-verdict-list) li {\n display: list-item;\n margin-bottom: 6px;\n padding-left: 2px;\n}\n.markdown :global(.wa-verdict-list) li:last-child {\n margin-bottom: 0;\n}\n\n/* Business Health bullets and scale note */\n.markdown :global(.wa-bullets) {\n margin: 8px 0 4px 0;\n padding-left: 17px;\n font-size: 12px;\n line-height: 1.5;\n color: #3a4159;\n}\n.markdown :global(.wa-bullets) li {\n margin-bottom: 4px;\n}\n.markdown :global(.wa-scale-note) {\n font-size: 10.5px;\n color: #737b97;\n margin-top: 6px;\n line-height: 1.4;\n}\n\n/* VS Peers */\n.markdown :global(.wa-peer-ctx) {\n font-size: 12px;\n color: #737b97;\n margin-bottom: 8px;\n font-weight: bold;\n}\n.markdown :global(.wa-peer-row) {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 7px 10px;\n border-radius: 8px;\n background: #f8f9fc;\n border: 1px solid #eceffa;\n margin-bottom: 6px;\n font-size: 12px;\n}\n.markdown :global(.wa-peer-sym) {\n font-weight: 700;\n color: #1c2c5b;\n}\n.markdown :global(.wa-peer-detail) {\n color: #3a4159;\n}\n.markdown :global(.wa-peer-detail) :global(.up) {\n color: #16a34a;\n font-weight: 700;\n}\n.markdown :global(.wa-peer-detail) :global(.down) {\n color: #dc2626;\n font-weight: 700;\n}\n.markdown :global(.wa-peer-empty) {\n font-size: 12px;\n color: #737b97;\n line-height: 1.5;\n padding: 4px 0;\n}\n.markdown :global(.wa-top-peer) {\n font-size: 11.5px;\n color: #1c2c5b;\n font-weight: 600;\n margin-top: 4px;\n padding: 6px 10px;\n background: #eef2ff;\n border-radius: 8px;\n}\n\n/* ── New Investor Flow — Signal, AI Lens, Indicators, Invalidation ───────── */\n\n/* Signal badge + label row */\n.markdown :global(.wa-signal-header) {\n display: flex;\n align-items: center;\n gap: 10px;\n flex-wrap: wrap;\n margin-bottom: 10px;\n}\n.markdown :global(.wa-signal-lbl) {\n font-size: 13px;\n font-weight: 600;\n color: #3a4159;\n flex: 1;\n}\n.markdown :global(.wa-signal-level) {\n padding: 10px 0;\n}\n.markdown :global(.wa-signal-level) :global(.kv) {\n gap: 4px;\n align-items: center;\n margin-bottom: 0;\n}\n.markdown :global(.wa-signal-level) :global(.kk) {\n min-width: auto;\n}\n\n/* Direction / action badges (shared across flows) */\n.markdown :global(.wa-badge) {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 6px 13px;\n border-radius: 999px;\n font-size: 12px;\n font-weight: 800;\n letter-spacing: 0.3px;\n white-space: nowrap;\n}\n.markdown :global(.wa-b-buy) {\n background: #dcfce7;\n color: #16a34a;\n}\n.markdown :global(.wa-b-sell) {\n background: #fee2e2;\n color: #dc2626;\n}\n.markdown :global(.wa-b-wait) {\n background: #fef3e0;\n color: #b45309;\n}\n.markdown :global(.wa-b-info) {\n background: #e0ecff;\n color: #2563eb;\n}\n\n/* ── Macro Event card (.evt) ─────────────────────────────────────────────── */\n.markdown :global(.evt) {\n border: 1px solid #e6e9f5;\n border-radius: 16px;\n overflow: hidden;\n margin-bottom: 12px;\n background: #fff;\n box-shadow: 0 12px 30px -24px rgba(28, 44, 91, 0.4);\n}\n.markdown :global(.evt .top) {\n padding: 13px 15px;\n display: flex;\n gap: 11px;\n align-items: flex-start;\n}\n.markdown :global(.evt .num) {\n width: 26px;\n height: 26px;\n flex: 0 0 auto;\n border-radius: 8px;\n background: #1c2c5b;\n color: #fff;\n display: grid;\n place-items: center;\n font-weight: 700;\n font-size: 13px;\n}\n.markdown :global(.evt .ti) {\n font-weight: 700;\n font-size: 13.5px;\n line-height: 1.25;\n color: #1c2438;\n}\n.markdown :global(.evt .dt) {\n font-size: 11px;\n color: #737b97;\n margin-top: 2px;\n}\n.markdown :global(.evt .news) {\n padding: 0 15px 12px;\n font-size: 12.5px;\n line-height: 1.5;\n color: #3a4159;\n}\n.markdown :global(.evt .news .imp) {\n display: inline-block;\n margin-top: 7px;\n}\n.markdown :global(.evt .body) {\n padding: 11px 15px;\n border-top: 1px solid #eceffa;\n background: #fbfcff;\n}\n.markdown :global(.evt .body) :global(.lbl) {\n font-size: 13px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: var(--text-muted, #666);\n margin-top: 8px;\n margin-bottom: 6px;\n}\n.markdown :global(.evt .body) :global(.wa-verdict-text) {\n margin: 4px 0 0;\n}\n\n/* ── Sector impact block (.impact) ──────────────────────────────────────── */\n.markdown :global(.impact) {\n margin-top: 8px;\n}\n.markdown :global(.ih) {\n font-size: 10.5px;\n font-weight: 800;\n letter-spacing: 0.4px;\n text-transform: uppercase;\n margin-bottom: 7px;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n.markdown :global(.ih.neg) { color: #dc2626; }\n.markdown :global(.ih.mod) { color: #b45309; }\n.markdown :global(.ih.pos) { color: #16a34a; }\n\n/* ── Sector impact pill (.pill) ─────────────────────────────────────────── */\n.markdown :global(.pill) {\n display: block;\n font-size: 12px;\n line-height: 1.45;\n padding: 8px 11px;\n border-radius: 10px;\n margin-bottom: 6px;\n border: 1px solid;\n}\n.markdown :global(.pill b) { font-weight: 700; }\n.markdown :global(.pill.neg) {\n background: #fee2e2;\n border-color: #fecaca;\n color: #7f1d1d;\n}\n.markdown :global(.pill.mod) {\n background: #fef3e0;\n border-color: #fde2b8;\n color: #7c4a03;\n}\n.markdown :global(.pill.pos) {\n background: #dcfce7;\n border-color: #bbf7d0;\n color: #14532d;\n}\n\n/* Confidence score row */\n.markdown :global(.wa-conf-row) {\n display: flex;\n align-items: center;\n gap: 9px;\n margin-top: 10px;\n padding: 8px 12px;\n background: #f8f9fc;\n border-radius: 10px;\n border: 1px solid #eceffa;\n}\n.markdown :global(.wa-conf-badge) {\n font-size: 13px;\n font-weight: 800;\n padding: 4px 10px;\n border-radius: 999px;\n background: #eceffa;\n color: #1c2c5b;\n}\n.markdown :global(.wa-conf-badge.good) {\n background: #dcfce7;\n color: #16a34a;\n}\n.markdown :global(.wa-conf-badge.low) {\n background: #fee2e2;\n color: #dc2626;\n}\n.markdown :global(.wa-conf-badge.avg) {\n background: #fef3e0;\n color: #b45309;\n}\n.markdown :global(.wa-conf-text) {\n font-size: 12px;\n color: #3a4159;\n flex: 1;\n}\n\n/* AI Lens */\n.markdown :global(.wa-ai-heading) {\n font-size: 13.5px;\n font-weight: 700;\n color: #1c2c5b;\n margin-bottom: 5px;\n}\n.markdown :global(.wa-ai-insight) {\n font-size: 12.5px;\n line-height: 1.55;\n color: #3a4159;\n margin-bottom: 6px;\n}\n\n/* Invalidation */\n.markdown :global(.wa-inv-text) {\n font-size: 12.5px;\n line-height: 1.5;\n color: #3a4159;\n}\n.markdown :global(.wa-inv-status) {\n margin-top: 8px;\n}\n\n/* Text verdict (new investor flow — single string, not a bullet list) */\n.markdown :global(.wa-verdict-text) {\n font-size: 12.5px;\n line-height: 1.55;\n color: #3a4159;\n}\n\n/* ── Portfolio Risk — Gauge, Action Rows, Clist, Allocation Bars ────────── */\n\n/* Health score gauge (red → amber → green gradient) */\n.markdown :global(.gauge) {\n height: 10px;\n border-radius: 6px;\n background: linear-gradient(90deg, #dc2626 0%, #f59e0b 50%, #16a34a 100%);\n position: relative;\n margin: 6px 0 28px;\n}\n.markdown :global(.wa-portfolio-gauge-wrap) {\n padding: 4px 22px 32px;\n overflow: visible;\n}\n.markdown :global(.wa-portfolio-health-gauge) {\n margin: 6px 0 0;\n}\n.markdown :global(.gauge) :global(.pin),\n.markdown :global(.wa-portfolio-gauge-pin) {\n position: absolute;\n top: -4px;\n width: 5px;\n height: 18px;\n border-radius: 3px;\n background: #1c2c5b;\n box-shadow: 0 0 0 3px #fff;\n transform: translateX(-50%);\n}\n.markdown :global(.gauge) :global(.lab),\n.markdown :global(.wa-portfolio-gauge-score) {\n position: absolute;\n top: 17px;\n font-size: 11px;\n font-weight: 800;\n color: #1c2c5b;\n transform: translateX(-50%);\n white-space: nowrap;\n}\n\n/* Portfolio performance header — two-line summary */\n.markdown :global(.wa-portfolio-performance-head) :global(.wa-portfolio-header-title) {\n margin-top: 2px;\n line-height: 1.25;\n}\n.markdown :global(.wa-portfolio-header-meta) {\n margin-top: 8px;\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n.markdown :global(.wa-portfolio-header-summary) {\n font-size: 11.5px;\n line-height: 1.45;\n opacity: 0.92;\n color: #fff;\n}\n.markdown :global(.wa-portfolio-header-risk) {\n font-size: 11px;\n line-height: 1.4;\n opacity: 0.75;\n color: #fff;\n}\n\n/* Portfolio health section spacing */\n.markdown :global(.wa-portfolio-health-section) {\n overflow: visible;\n}\n.markdown :global(.wa-portfolio-health-verdict) {\n margin-top: 2px;\n}\n\n/* CAGR / Risk metric rows */\n.markdown :global(.wa-portfolio-metrics-block) {\n padding: 10px 0 6px;\n margin-top: 4px;\n}\n.markdown :global(.wa-portfolio-metric-row) {\n align-items: flex-start;\n gap: 10px;\n margin-bottom: 6px;\n}\n.markdown :global(.wa-portfolio-metric-row):last-child {\n margin-bottom: 0;\n}\n.markdown :global(.wa-portfolio-metric-label) {\n min-width: 48px;\n flex-shrink: 0;\n}\n.markdown :global(.wa-portfolio-metric-value) {\n flex: 1;\n line-height: 1.45;\n}\n\n/* Portfolio optimization bullet lists */\n.markdown :global(.wa-portfolio-bullet-list) {\n margin: 0;\n padding-left: 20px;\n list-style-type: disc;\n list-style-position: outside;\n font-size: 12.5px;\n line-height: 1.55;\n color: #3a4159;\n}\n.markdown :global(.wa-portfolio-bullet-list) li {\n display: list-item;\n margin-bottom: 6px;\n padding-left: 2px;\n}\n.markdown :global(.wa-portfolio-bullet-list) li:last-child {\n margin-bottom: 0;\n}\n.markdown :global(.wa-portfolio-concerns-list),\n.markdown :global(.wa-portfolio-actions-needed-list) {\n margin-top: 2px;\n}\n.markdown :global(.wa-portfolio-verdict-block) :global(.wa-portfolio-verdict-list) {\n margin-top: 0;\n}\n\n/* Health check — Current Mix vs Target (Stocks row full-width centered) */\n.markdown :global(.wa-portfolio-mix-grid) :global(.wa-portfolio-mix-stocks-full) {\n grid-column: 1 / -1;\n text-align: center;\n align-items: center;\n justify-content: center;\n}\n.markdown :global(.wa-portfolio-mix-stocks-full) :global(.v) {\n text-align: center;\n}\n\n/* Health check — Stock / ETF deviation rows */\n.markdown :global(.wa-portfolio-deviation-block) {\n padding: 10px 0 4px;\n margin-top: 6px;\n}\n.markdown :global(.wa-portfolio-deviation-row) {\n align-items: flex-start;\n gap: 10px;\n margin-bottom: 8px;\n}\n.markdown :global(.wa-portfolio-deviation-row):last-child {\n margin-bottom: 0;\n}\n.markdown :global(.wa-portfolio-deviation-label) {\n min-width: 108px;\n flex-shrink: 0;\n}\n.markdown :global(.wa-portfolio-deviation-value) {\n flex: 1;\n line-height: 1.45;\n}\n\n/* Health check — Structure Points cards */\n.markdown :global(.wa-portfolio-structure-section) {\n padding-bottom: 14px;\n}\n.markdown :global(.wa-portfolio-structure-card) {\n border: 1px solid #e6e9f5;\n border-radius: 12px;\n padding: 11px 13px;\n margin-bottom: 8px;\n background: #f8f9fc;\n}\n.markdown :global(.wa-portfolio-structure-card):last-child {\n margin-bottom: 0;\n}\n.markdown :global(.wa-portfolio-structure-card-head) {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n margin-bottom: 6px;\n}\n.markdown :global(.wa-portfolio-structure-symbol) {\n font-weight: 800;\n font-size: 13px;\n color: #1c2c5b;\n letter-spacing: 0.02em;\n}\n.markdown :global(.wa-portfolio-structure-score-badge) {\n font-size: 10px;\n font-weight: 700;\n padding: 3px 8px;\n border-radius: 999px;\n background: #eceffa;\n color: #1c2c5b;\n white-space: nowrap;\n}\n.markdown :global(.wa-portfolio-structure-line) {\n font-size: 12px;\n line-height: 1.45;\n color: #3a4159;\n margin-bottom: 4px;\n}\n.markdown :global(.wa-portfolio-structure-line) :global(.up) {\n color: var(--green);\n font-weight: 700;\n}\n.markdown :global(.wa-portfolio-structure-line) :global(.down) {\n color: var(--red);\n font-weight: 700;\n}\n.markdown :global(.wa-portfolio-structure-line):last-of-type {\n margin-bottom: 0;\n}\n.markdown :global(.wa-portfolio-structure-meta) {\n font-size: 11.5px;\n line-height: 1.4;\n color: #737b97;\n margin-top: 4px;\n}\n\n/* Portfolio build — Sector Allocation card layout */\n.markdown :global(.wa-portfolio-sector-card-head) {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 6px;\n margin-bottom: 8px;\n}\n.markdown :global(.wa-portfolio-sector-return) {\n flex: 1;\n text-align: center;\n font-size: 11px;\n font-weight: 600;\n color: #3a4159;\n white-space: nowrap;\n}\n.markdown :global(.wa-portfolio-sector-return) :global(.up) {\n color: var(--green);\n font-weight: 700;\n}\n.markdown :global(.wa-portfolio-sector-return) :global(.down) {\n color: var(--red);\n font-weight: 700;\n}\n.markdown :global(.wa-portfolio-sector-capital-line) {\n font-size: 12px;\n font-weight: 700;\n color: #3a4159;\n margin-bottom: 6px;\n}\n.markdown :global(.wa-portfolio-sector-bullet-list) {\n list-style: none;\n padding-left: 0;\n margin: 0;\n font-size: 12px;\n line-height: 1.5;\n}\n.markdown :global(.wa-portfolio-sector-bullet-list) li {\n margin-bottom: 4px;\n padding-left: 0;\n}\n.markdown :global(.wa-portfolio-sector-bullet-list) li::before {\n content: \"· \";\n font-weight: 700;\n color: #737b97;\n}\n.markdown :global(.wa-portfolio-sector-bullet-list) li:last-child {\n margin-bottom: 0;\n}\n\n/* Health verdict text */\n.markdown :global(.wa-health-text) {\n font-size: 12px;\n font-weight: 600;\n color: #dc2626;\n line-height: 1.5;\n margin-top: 4px;\n}\n.markdown :global(.wa-health-text.ok) {\n color: #16a34a;\n}\n.markdown :global(.wa-health-text.warn) {\n color: #b45309;\n}\n\n/* Action rows — EXIT / TRIM / ADD / HOLD / SWITCH / REVIEW */\n.markdown :global(.act) {\n display: flex;\n gap: 10px;\n align-items: flex-start;\n padding: 10px 12px;\n border-radius: 12px;\n margin-bottom: 8px;\n border: 1px solid #e5e7eb;\n background: #f9fafb;\n}\n.markdown :global(.act):last-child {\n margin-bottom: 0;\n}\n.markdown :global(.act.exit) {\n background: #fee2e2;\n border-color: #fecaca;\n}\n.markdown :global(.act.trim) {\n background: #fef3e0;\n border-color: #fde2b8;\n}\n.markdown :global(.act.add) {\n background: #dcfce7;\n border-color: #bbf7d0;\n}\n.markdown :global(.act.hold) {\n background: #f1f3fa;\n border-color: #e0e4f0;\n}\n.markdown :global(.act.switch) {\n background: #e0ecff;\n border-color: #bfdbfe;\n}\n/* Action type label pill */\n.markdown :global(.act) :global(.at) {\n flex: 0 0 auto;\n font-size: 10px;\n font-weight: 800;\n letter-spacing: 0.5px;\n padding: 4px 8px;\n border-radius: 6px;\n color: #fff;\n white-space: nowrap;\n}\n.markdown :global(.act.exit) :global(.at) { background: #dc2626; }\n.markdown :global(.act.trim) :global(.at) { background: #b45309; }\n.markdown :global(.act.add) :global(.at) { background: #16a34a; }\n.markdown :global(.act.hold) :global(.at) { background: #737b97; }\n.markdown :global(.act.switch) :global(.at) { background: #2563eb; }\n/* Action description */\n.markdown :global(.act) :global(.ad) {\n font-size: 12.5px;\n line-height: 1.45;\n}\n.markdown :global(.act) :global(.ad) b {\n font-weight: 700;\n color: #1c2c5b;\n}\n.markdown :global(.act) :global(.ad) :global(.r) {\n color: #3a4159;\n display: block;\n margin-top: 2px;\n}\n\n/* Concerns / actions bullet list */\n.markdown :global(.clist) {\n margin: 0;\n padding-left: 17px;\n font-size: 12px;\n line-height: 1.5;\n color: #3a4159;\n}\n.markdown :global(.clist) li {\n margin-bottom: 5px;\n}\n.markdown :global(.clist) li:last-child {\n margin-bottom: 0;\n}\n\n/* Asset allocation bars */\n.markdown :global(.alloc) {\n margin-top: 6px;\n}\n.markdown :global(.alloc) :global(.row) {\n display: flex;\n align-items: center;\n gap: 9px;\n margin-bottom: 9px;\n font-size: 12px;\n}\n.markdown :global(.alloc) :global(.row):last-child {\n margin-bottom: 0;\n}\n.markdown :global(.alloc) :global(.nm) {\n width: 54px;\n font-weight: 700;\n color: #1c2c5b;\n flex-shrink: 0;\n}\n.markdown :global(.alloc) :global(.bar) {\n flex: 1;\n height: 8px;\n border-radius: 5px;\n background: #eef0f7;\n overflow: hidden;\n}\n.markdown :global(.alloc) :global(.bar) i {\n display: block;\n height: 100%;\n border-radius: 5px;\n background: #1c2c5b;\n}\n.markdown :global(.alloc) :global(.pct) {\n width: 42px;\n text-align: right;\n font-weight: 700;\n color: #1c2438;\n flex-shrink: 0;\n}\n\n/* Return value colour helpers inside metric grid .v cells */\n.markdown :global(.mgrid) :global(.v.up) {\n color: var(--green);\n}\n.markdown :global(.mgrid) :global(.v.down) {\n color: var(--red);\n}\n.markdown :global(.mgrid) :global(.m) :global(.n.up) {\n color: var(--green);\n}\n.markdown :global(.mgrid) :global(.m) :global(.n.down) {\n color: var(--red);\n}\n.markdown :global(.mgrid) :global(.v.low) {\n color: #b45309;\n}\n\n/* Signal score emphasis inside kv rows (Tradable Candidate) */\n.markdown :global(.kv) :global(.vv) :global(b.up) {\n color: var(--green);\n}\n.markdown :global(.kv) :global(.vv) :global(b.down) {\n color: var(--red);\n}\n.markdown :global(.kv) :global(.vv) :global(b.low) {\n color: #b45309;\n}\n\n/* ── Crypto Analysis — stance row, metric notes, kv stacks ──────────────── */\n.markdown :global(.wa-crypto-stance-row) {\n margin-top: 8px;\n}\n.markdown :global(.wa-crypto-stance-row-lg) {\n margin-top: 11px;\n}\n.markdown :global(.wa-crypto-stance-reason) {\n font-size: 12px;\n color: #3a4159;\n margin-top: 8px;\n line-height: 1.5;\n}\n.markdown :global(.mgrid) :global(.m) :global(.n.wa-crypto-metric-detail) {\n font-weight: 500;\n line-height: 1.35;\n}\n.markdown :global(.wa-crypto-kv-primary) {\n display: block;\n font-size: 14px;\n font-weight: 700;\n}\n.markdown :global(.wa-crypto-kv-note) {\n display: block;\n font-size: 10.5px;\n font-weight: 700;\n margin-top: 2px;\n}\n.markdown :global(.wa-crypto-kv-note.up) {\n color: var(--green);\n}\n.markdown :global(.wa-crypto-kv-note.down) {\n color: var(--red);\n}\n.markdown :global(.wa-crypto-kv-note.low) {\n color: #b45309;\n}\n.markdown :global(.wa-crypto-kv-note.avg) {\n color: #737b97;\n}\n.markdown :global(.wa-crypto-kv-detail) {\n display: block;\n font-size: 10.5px;\n font-weight: 500;\n color: #737b97;\n margin-top: 2px;\n line-height: 1.35;\n}\n\n/* ── Stock Discovery & New Listings Card Components ─────────────────────── */\n\n/* Individual stock card */\n.markdown :global(.dstock) {\n border: 1px solid #e6e9f5;\n border-radius: 14px;\n padding: 12px 13px;\n margin-bottom: 10px;\n background: #fff;\n}\n.markdown :global(.dstock):last-child {\n margin-bottom: 0;\n}\n\n/* Stock card header row */\n.markdown :global(.dh) {\n display: flex;\n align-items: center;\n gap: 9px;\n margin-bottom: 9px;\n}\n\n/* Rank number chip */\n.markdown :global(.rank) {\n width: 24px;\n height: 24px;\n flex: 0 0 auto;\n border-radius: 6px;\n background: #e7ebf7;\n color: #1c2c5b;\n display: grid;\n place-items: center;\n font-weight: 800;\n font-size: 12px;\n}\n\n/* Stock symbol + company name */\n.markdown :global(.nm) {\n font-weight: 700;\n font-size: 13.5px;\n line-height: 1.2;\n color: #1c2438;\n display: flex;\n align-items: center;\n gap: 6px;\n flex-wrap: wrap;\n}\n/* Inline badge inside .nm — smaller than the standalone badge */\n.markdown :global(.nm) :global(.wa-badge) {\n font-size: 10px;\n padding: 3px 8px;\n vertical-align: middle;\n}\n.markdown :global(.co) {\n font-size: 10.5px;\n color: #737b97;\n margin-top: 2px;\n}\n\n/* Fundamental score (right-aligned) */\n.markdown :global(.dstock) :global(.fs) {\n margin-left: auto;\n text-align: right;\n flex-shrink: 0;\n}\n.markdown :global(.dstock) :global(.fs) :global(.num) {\n font-weight: 800;\n font-size: 18px;\n color: #1c2c5b;\n line-height: 1;\n}\n.markdown :global(.dstock) :global(.fs) :global(.cap) {\n font-size: 8.5px;\n color: #737b97;\n text-transform: uppercase;\n letter-spacing: 0.4px;\n margin-top: 2px;\n}\n\n/* Quality/Value/Growth/Confidence tag row */\n.markdown :global(.qrow) {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n align-items: center;\n}\n.markdown :global(.qrow.qrow-grid) {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 6px;\n}\n.markdown :global(.qrow.qrow-grid) :global(.qtag) {\n min-height: 38px;\n width: 100%;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n line-height: 1.2;\n padding: 4px 6px;\n}\n.markdown :global(.qtag) {\n font-size: 10.5px;\n font-weight: 700;\n padding: 4px 9px;\n border-radius: 7px;\n border: 1px solid #e0e4f0;\n background: #f1f3fa;\n color: #475069;\n}\n.markdown :global(.qtag) :global(.qk) {\n opacity: 0.55;\n font-weight: 600;\n margin-right: 3px;\n}\n.markdown :global(.qtag.good) {\n background: #dcfce7;\n border-color: #bbf7d0;\n color: #14532d;\n}\n.markdown :global(.qtag.avg) {\n background: #f1f3fa;\n border-color: #e0e4f0;\n color: #475069;\n}\n.markdown :global(.qtag.low) {\n background: #fef3e0;\n border-color: #fde2b8;\n color: #7c4a03;\n}\n\n/* 3M return line below score tags (Peer Analysis dstock cards) */\n.markdown :global(.dstock) :global(.wa-peer-detail) {\n margin-top: 6px;\n font-size: 11.5px;\n}\n\n/* Scoring note footer */\n.markdown :global(.wa-disc-footer) {\n font-size: 11px;\n color: #737b97;\n line-height: 1.5;\n padding: 10px 14px;\n border-top: 1px solid #eceffa;\n}\n\n.bubbleBot {\n align-self: flex-start;\n background: var(--wac-bot-bg);\n color: #1c2438;\n border-bottom-left-radius: 4px;\n}\n\n.bubbleUser {\n align-self: flex-end;\n background: var(--wac-user-bg);\n color: var(--wac-brand-contrast);\n border-bottom-right-radius: 4px;\n}\n\n/* Card responses: the card supplies its own bg/border/radius, so the bubble\n must add no frame, padding or background around it. */\n.bubbleCard {\n align-self: stretch;\n background: transparent;\n padding: 0;\n border-radius: 0;\n}\n\n.bubbleMeta {\n font-size: 10px;\n color: var(--wac-muted);\n margin-top: 4px;\n text-align: right;\n}\n\n.chipRow {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n margin-top: 8px;\n}\n\n.chip {\n padding: 7px 12px;\n background: var(--wac-chip-bg);\n color: var(--wac-chip-fg);\n border: 1px solid transparent;\n border-radius: 999px;\n font-size: 13px;\n cursor: pointer;\n transition: background 0.15s ease, transform 0.15s ease;\n font-family: inherit;\n}\n\n.chip:hover:not(:disabled) {\n background: #d8def2;\n transform: translateY(-1px);\n}\n\n.chipActive {\n background: var(--wac-chip-active-bg);\n color: var(--wac-chip-active-fg);\n}\n\n.chipDisabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.typing {\n align-self: flex-start;\n display: inline-flex;\n gap: 4px;\n padding: 10px 14px;\n background: var(--wac-bot-bg);\n border-radius: 12px;\n border-bottom-left-radius: 4px;\n}\n\n.typingDot {\n width: 7px;\n height: 7px;\n background: var(--wac-muted);\n border-radius: 50%;\n animation: wacBlink 1.2s infinite ease-in-out both;\n}\n\n.typingDot:nth-child(2) {\n animation-delay: 0.18s;\n}\n.typingDot:nth-child(3) {\n animation-delay: 0.36s;\n}\n\n@keyframes wacBlink {\n 0%, 80%, 100% { opacity: 0.3; transform: scale(0.85); }\n 40% { opacity: 1; transform: scale(1); }\n}\n\n.input {\n display: flex;\n gap: 8px;\n padding: 10px 12px;\n border-top: 1px solid var(--wac-border);\n background: var(--wac-bg);\n}\n\n.inputBox {\n flex: 1;\n padding: 12px 16px;\n border: 1.6px solid var(--wac-brand);\n border-radius: 14px;\n font-size: 14px;\n outline: none;\n font-family: inherit;\n background: var(--wac-bg);\n color: var(--wac-fg);\n}\n\n.inputBox:focus {\n border-color: var(--wac-brand);\n background: var(--wac-bg);\n}\n\n.inputBox:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.sendButton {\n padding: 0 20px;\n background: var(--wac-brand);\n color: var(--wac-brand-contrast);\n border: none;\n border-radius: 14px;\n font-weight: 700;\n cursor: pointer;\n font-size: 14px;\n font-family: inherit;\n}\n\n.sendButton:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.hiddenFileInput {\n position: absolute;\n width: 0;\n height: 0;\n opacity: 0;\n overflow: hidden;\n pointer-events: none;\n}\n\n.csvButton {\n flex-shrink: 0;\n padding: 0 12px;\n background: var(--wac-chip-bg);\n color: var(--wac-chip-fg);\n border: 1px solid var(--wac-border);\n border-radius: 999px;\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n font-family: inherit;\n white-space: nowrap;\n}\n\n.csvButton:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.authGate {\n margin: auto;\n text-align: center;\n padding: 32px 24px;\n max-width: 280px;\n display: flex;\n flex-direction: column;\n gap: 12px;\n align-items: center;\n}\n\n.authGateIcon {\n font-size: 36px;\n}\n\n.authGateTitle {\n font-size: 16px;\n font-weight: 600;\n}\n\n.authGateText {\n font-size: 13px;\n color: var(--wac-muted);\n line-height: 1.5;\n}\n\n.authGateButton {\n margin-top: 8px;\n padding: 10px 20px;\n background: var(--wac-brand);\n color: var(--wac-brand-contrast);\n border: none;\n border-radius: 999px;\n cursor: pointer;\n font-weight: 600;\n font-size: 14px;\n font-family: inherit;\n}\n\n.authGateDisclaimer {\n margin-top: 16px;\n padding-top: 12px;\n border-top: 1px dashed var(--wac-border);\n font-size: 11px;\n color: var(--wac-muted);\n line-height: 1.5;\n text-align: left;\n width: 100%;\n}\n\n.authGateDisclaimerTitle {\n font-weight: 700;\n letter-spacing: 0.6px;\n font-size: 10px;\n margin-bottom: 4px;\n color: var(--wac-fg);\n}\n\n.errorBanner {\n background: #fef2f2;\n border: 1px solid #fecaca;\n color: #991b1b;\n padding: 8px 12px;\n font-size: 12px;\n border-radius: 8px;\n margin: 0 14px 8px;\n}\n\n/* ── Greeting popup bubble ─────────────────────────────────────── */\n\n.popupBubble {\n position: fixed;\n bottom: 24px;\n z-index: 2147483646;\n background: var(--wac-brand);\n color: var(--wac-brand-contrast);\n border-radius: 12px;\n padding: 12px 36px 12px 14px;\n font-size: 13px;\n line-height: 1.45;\n box-shadow: var(--wac-shadow);\n border: none;\n max-width: 240px;\n animation: wacPopIn 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);\n}\n\n/* Shared arrow base — direction is set per-position class below */\n.popupBubble::after {\n content: '';\n position: absolute;\n width: 12px;\n height: 12px;\n background: var(--wac-brand);\n}\n\n/* Popup to the LEFT of a right-positioned button — arrow points right */\n.popupBubbleRight {\n right: 94px;\n}\n\n.popupBubbleRight::after {\n right: -7px;\n top: 50%;\n border-top: 1px solid var(--wac-brand);\n border-right: 1px solid var(--wac-brand);\n transform: translateY(-50%) rotate(45deg);\n}\n\n/* Popup to the RIGHT of a left-positioned button — arrow points left */\n.popupBubbleLeft {\n left: 94px;\n}\n\n.popupBubbleLeft::after {\n left: -7px;\n top: 50%;\n border-bottom: 1px solid var(--wac-brand);\n border-left: 1px solid var(--wac-brand);\n transform: translateY(-50%) rotate(45deg);\n}\n\n.popupDismiss {\n position: absolute;\n top: 8px;\n right: 8px;\n background: transparent;\n border: none;\n cursor: pointer;\n font-size: 14px;\n color: var(--wac-brand-contrast);\n line-height: 1;\n padding: 2px 4px;\n border-radius: 4px;\n font-family: inherit;\n opacity: 0.75;\n}\n\n.popupDismiss:hover {\n background: rgba(255, 255, 255, 0.15);\n opacity: 1;\n}\n\n@keyframes wacPopIn {\n 0% { opacity: 0; transform: scale(0.85) translateY(8px); }\n 100% { opacity: 1; transform: scale(1) translateY(0); }\n}\n\n/* ── Menu grid (root chips rendered as cards) ───────────────────── */\n.menuGrid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 6px;\n margin-top: 6px;\n}\n\n.menuItem {\n background: #fff;\n border: 1px solid #e6e9f5;\n border-radius: 14px;\n padding: 14px;\n cursor: pointer;\n text-align: left;\n font-family: inherit;\n transition: transform 0.15s, box-shadow 0.15s, border-color 0.15s;\n}\n\n.menuItem:hover {\n transform: translateY(-2px);\n box-shadow: 0 8px 20px -12px rgba(28, 44, 91, 0.45);\n border-color: #d4d9ee;\n}\n\n.menuItemIcon {\n width: 46px;\n height: 46px;\n border-radius: 12px;\n display: grid;\n place-items: center;\n font-size: 22px;\n margin-bottom: 12px;\n}\n\n/* Main-menu SVG icon — mirrors wealth-alpha-final.html .cmd .ico svg */\n.menuItemSvg {\n width: 24px;\n height: 24px;\n stroke: #fff;\n fill: none;\n stroke-width: 2.2;\n stroke-linecap: round;\n stroke-linejoin: round;\n}\n\n.menuItemTitle {\n font-size: 14px;\n font-weight: 700;\n color: #1c2438;\n line-height: 1.2;\n}\n\n.menuItemSub {\n font-size: 11.5px;\n color: #737b97;\n margin-top: 3px;\n line-height: 1.3;\n}\n\n.menuIconGreen { background: linear-gradient(135deg, #10b981, #059669); }\n.menuIconBlue { background: linear-gradient(135deg, #3b82f6, #2563eb); }\n.menuIconLeaf { background: linear-gradient(135deg, #65c466, #3f9c43); }\n.menuIconRed { background: linear-gradient(135deg, #f43f5e, #e11d48); }\n.menuIconOrange { background: linear-gradient(135deg, #fb923c, #ea580c); }\n.menuIconGold { background: linear-gradient(135deg, #fbbf24, #d97706); }\n.menuIconTeal { background: linear-gradient(135deg, #14b8a6, #0d9488); }\n.menuIconPurple { background: linear-gradient(135deg, #8b5cf6, #7c3aed); }\n\n\n.chat_bubbleBot {\n background-color: var(--wac-bg) !important; \n}"],"mappings":"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","names":["root","headerTitle","menuItemTitle","markdown","floatingButton","positionRight","positionLeft","widget","popupBubbleLeft","popupBubbleRight","header","headerMeta","headerActions","iconButton","body","bubble","bubbleBot","bubbleUser","bubbleCard","bubbleMeta","chipRow","chip","chipActive","chipDisabled","typing","typingDot","wacBlink","input","inputBox","sendButton","hiddenFileInput","csvButton","authGate","authGateIcon","authGateTitle","authGateText","authGateButton","authGateDisclaimer","authGateDisclaimerTitle","errorBanner","popupBubble","popupDismiss","wacPopIn","menuGrid","menuItem","menuItemIcon","menuItemSvg","menuItemSub","menuIconGreen","menuIconBlue","menuIconLeaf","menuIconRed","menuIconOrange","menuIconGold","menuIconTeal","menuIconPurple","chat_bubbleBot"]}
package/dist/index.d.cts CHANGED
@@ -21,6 +21,7 @@ interface WACUser {
21
21
  plan?: string;
22
22
  rootChips?: Chip$1[];
23
23
  welcomeMessage?: string;
24
+ upgradeUrl?: string;
24
25
  }
25
26
  interface WACSession {
26
27
  token: string;
@@ -40,6 +41,7 @@ interface BotResponse {
40
41
  service?: string;
41
42
  subService?: string;
42
43
  ticker?: string;
44
+ redirectUrl?: string;
43
45
  [key: string]: unknown;
44
46
  };
45
47
  }
package/dist/index.d.ts CHANGED
@@ -21,6 +21,7 @@ interface WACUser {
21
21
  plan?: string;
22
22
  rootChips?: Chip$1[];
23
23
  welcomeMessage?: string;
24
+ upgradeUrl?: string;
24
25
  }
25
26
  interface WACSession {
26
27
  token: string;
@@ -40,6 +41,7 @@ interface BotResponse {
40
41
  service?: string;
41
42
  subService?: string;
42
43
  ticker?: string;
44
+ redirectUrl?: string;
43
45
  [key: string]: unknown;
44
46
  };
45
47
  }
package/dist/index.mjs CHANGED
@@ -677,6 +677,9 @@ function useSession(opts = {}) {
677
677
  // src/styles/chat.module.css
678
678
  var chat_default = {
679
679
  root: "chat_root",
680
+ headerTitle: "chat_headerTitle",
681
+ menuItemTitle: "chat_menuItemTitle",
682
+ markdown: "chat_markdown",
680
683
  floatingButton: "chat_floatingButton",
681
684
  positionRight: "chat_positionRight",
682
685
  positionLeft: "chat_positionLeft",
@@ -684,25 +687,27 @@ var chat_default = {
684
687
  popupBubbleLeft: "chat_popupBubbleLeft",
685
688
  popupBubbleRight: "chat_popupBubbleRight",
686
689
  header: "chat_header",
687
- headerTitle: "chat_headerTitle",
688
690
  headerMeta: "chat_headerMeta",
689
691
  headerActions: "chat_headerActions",
690
692
  iconButton: "chat_iconButton",
691
693
  body: "chat_body",
692
694
  bubble: "chat_bubble",
693
- markdown: "chat_markdown",
694
695
  bubbleBot: "chat_bubbleBot",
695
696
  bubbleUser: "chat_bubbleUser",
697
+ bubbleCard: "chat_bubbleCard",
698
+ bubbleMeta: "chat_bubbleMeta",
696
699
  chipRow: "chat_chipRow",
697
700
  chip: "chat_chip",
698
701
  chipActive: "chat_chipActive",
699
702
  chipDisabled: "chat_chipDisabled",
700
703
  typing: "chat_typing",
701
704
  typingDot: "chat_typingDot",
705
+ wacBlink: "chat_wacBlink",
702
706
  input: "chat_input",
703
707
  inputBox: "chat_inputBox",
704
708
  sendButton: "chat_sendButton",
705
709
  hiddenFileInput: "chat_hiddenFileInput",
710
+ csvButton: "chat_csvButton",
706
711
  authGate: "chat_authGate",
707
712
  authGateIcon: "chat_authGateIcon",
708
713
  authGateTitle: "chat_authGateTitle",
@@ -712,7 +717,22 @@ var chat_default = {
712
717
  authGateDisclaimerTitle: "chat_authGateDisclaimerTitle",
713
718
  errorBanner: "chat_errorBanner",
714
719
  popupBubble: "chat_popupBubble",
715
- popupDismiss: "chat_popupDismiss"
720
+ wacPopIn: "chat_wacPopIn",
721
+ popupDismiss: "chat_popupDismiss",
722
+ menuGrid: "chat_menuGrid",
723
+ menuItem: "chat_menuItem",
724
+ menuItemIcon: "chat_menuItemIcon",
725
+ menuItemSvg: "chat_menuItemSvg",
726
+ menuItemSub: "chat_menuItemSub",
727
+ menuIconGreen: "chat_menuIconGreen",
728
+ menuIconBlue: "chat_menuIconBlue",
729
+ menuIconLeaf: "chat_menuIconLeaf",
730
+ menuIconRed: "chat_menuIconRed",
731
+ menuIconOrange: "chat_menuIconOrange",
732
+ menuIconGold: "chat_menuIconGold",
733
+ menuIconTeal: "chat_menuIconTeal",
734
+ menuIconPurple: "chat_menuIconPurple",
735
+ chat_bubbleBot: "chat_chat_bubbleBot"
716
736
  };
717
737
  function AuthGate({ brandName, loginUrl, onLoginClick }) {
718
738
  const handleClick = () => {
@@ -784,9 +804,10 @@ var ALLOWED_TAGS = [
784
804
  "ol",
785
805
  "li",
786
806
  "blockquote",
787
- "span"
807
+ "span",
808
+ "div"
788
809
  ];
789
- var ALLOWED_ATTR = ["href", "target", "rel", "class"];
810
+ var ALLOWED_ATTR = ["href", "target", "rel", "class", "style", "data-wa-gauge-pct"];
790
811
  var SANITIZE_CFG = {
791
812
  ALLOWED_TAGS,
792
813
  ALLOWED_ATTR,
@@ -797,28 +818,116 @@ var SANITIZE_CFG = {
797
818
  function inlineMarkdownToHtml(text) {
798
819
  return text.replace(/^[ \t]*#{1,6}[ \t]+(.+?)[ \t]*$/gm, "<b>$1</b>").replace(/\*\*([^\n<>]+?)\*\*/g, "<b>$1</b>").replace(/__([^\n<>]+?)__/g, "<b>$1</b>").replace(/(?<!\*)\*([^\n*<>]+?)\*(?!\*)/g, "<b>$1</b>").replace(/(?<![_a-zA-Z0-9])_([^\n_<>]+?)_(?![_a-zA-Z0-9])/g, "<i>$1</i>");
799
820
  }
821
+ function stripCardDateTime(html) {
822
+ return html.replace(
823
+ /(<span class="wa-card-date">)([^<]*)(<\/span>)/g,
824
+ (_m, open, content, close) => open + content.replace(/,\s*\d{1,2}:\d{2}.*$/, "").trim() + close
825
+ );
826
+ }
800
827
  function renderMarkdown(text) {
801
828
  if (!text) return "";
802
829
  const inlined = inlineMarkdownToHtml(text);
830
+ if (/<div[\s>]/i.test(inlined)) {
831
+ return DOMPurify.sanitize(stripCardDateTime(inlined), SANITIZE_CFG);
832
+ }
803
833
  const paragraphs = inlined.split(/\n{2,}/).map((para) => para.replace(/\n/g, "<br>")).filter((p) => p.length > 0);
804
834
  const html = paragraphs.length > 1 ? paragraphs.map((p) => `<p>${p}</p>`).join("") : paragraphs[0] ?? "";
805
- return DOMPurify.sanitize(html, SANITIZE_CFG);
835
+ return DOMPurify.sanitize(stripCardDateTime(html), SANITIZE_CFG);
836
+ }
837
+ var ROOT_MENU_CHIP_IDS = /* @__PURE__ */ new Set([
838
+ "stock_analysis",
839
+ "stock_discovery",
840
+ "new_listings",
841
+ "portfolio_risk",
842
+ "market_forecast",
843
+ "crypto",
844
+ "tradable_picks",
845
+ "peer_compare"
846
+ ]);
847
+ var MENU_SUBTITLES = {
848
+ stock_analysis: "Fundamental & technical",
849
+ stock_discovery: "Find promising stocks",
850
+ new_listings: "Track IPOs & new stocks",
851
+ portfolio_risk: "Analyze your portfolio",
852
+ market_forecast: "Outlook & key events",
853
+ crypto: "BTC, ETH & trends",
854
+ tradable_picks: "Short-term setups",
855
+ peer_compare: "Compare peer stocks"
856
+ };
857
+ var MENU_ICON_KEY = {
858
+ stock_analysis: "menuIconGreen",
859
+ stock_discovery: "menuIconBlue",
860
+ new_listings: "menuIconLeaf",
861
+ portfolio_risk: "menuIconRed",
862
+ market_forecast: "menuIconOrange",
863
+ crypto: "menuIconGold",
864
+ tradable_picks: "menuIconTeal",
865
+ peer_compare: "menuIconPurple"
866
+ };
867
+ var MENU_ICON_SVG = {
868
+ stock_analysis: ' <path d="M4 16L9 11L13 15L20 8" /> <path d="M20 8V13" /> <path d="M20 8H15" />',
869
+ stock_discovery: '<circle cx="11" cy="11" r="7"/><path d="m21 21-4.3-4.3"/>',
870
+ new_listings: '<rect x="5" y="5" width="14" height="14" rx="3"/><path d="M12 8v8"/> <path d="M8 12h8"/>',
871
+ portfolio_risk: '<path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10Z"/>',
872
+ market_forecast: '<path d="M13 2 4 14h7l-1 8 9-12h-7l1-8Z"/>',
873
+ crypto: '<path d="M4 20V10M10 20V4M16 20v-7M22 20v-4"/>',
874
+ tradable_picks: '<circle cx="12" cy="12" r="9"/><circle cx="12" cy="12" r="5"/><circle cx="12" cy="12" r="1.5"/>',
875
+ peer_compare: '<path d="M12 3v18"/><path d="M5 8l-3 6h6z"/><path d="M19 8l-3 6h6z"/>'
876
+ };
877
+ function isRootMenuChips(chips) {
878
+ return chips.length > 0 && chips.every((c) => ROOT_MENU_CHIP_IDS.has(c.id));
806
879
  }
807
880
  function MessageBubble({ message, onChipClick }) {
808
881
  const isBot = message.role === "bot";
809
- const bubbleClass = isBot ? `${chat_default.bubble} ${chat_default.bubbleBot}` : `${chat_default.bubble} ${chat_default.bubbleUser}`;
882
+ const isCard = isBot && message.content.includes("<div");
883
+ const bubbleClass = isBot ? `${chat_default.bubble} ${isCard ? chat_default.bubbleCard : chat_default.bubbleBot}` : `${chat_default.bubble} ${chat_default.bubbleUser}`;
884
+ const handleMarkdownClick = (e) => {
885
+ const anchor = e.target.closest("a");
886
+ if (!anchor?.href) return;
887
+ e.preventDefault();
888
+ window.location.assign(anchor.href);
889
+ };
890
+ const chips = message.chips ?? [];
891
+ const showMenuGrid = isBot && message.chipsActive && isRootMenuChips(chips);
810
892
  return /* @__PURE__ */ jsxs("div", { style: { display: "flex", flexDirection: "column" }, children: [
811
893
  /* @__PURE__ */ jsx("div", { className: bubbleClass, children: isBot ? /* @__PURE__ */ jsx(
812
894
  "div",
813
895
  {
814
896
  className: chat_default.markdown,
815
- dangerouslySetInnerHTML: { __html: renderMarkdown(message.content) }
897
+ dangerouslySetInnerHTML: { __html: renderMarkdown(message.content) },
898
+ onClick: handleMarkdownClick
816
899
  }
817
900
  ) : message.content }),
818
- isBot && message.chips && message.chips.length > 0 ? /* @__PURE__ */ jsx(
901
+ showMenuGrid ? /* @__PURE__ */ jsx("div", { className: chat_default.menuGrid, children: chips.map((chip) => {
902
+ const iconKey = MENU_ICON_KEY[chip.id];
903
+ const iconClass = iconKey && chat_default[iconKey] || "";
904
+ const svgIcon = MENU_ICON_SVG[chip.id];
905
+ return /* @__PURE__ */ jsxs(
906
+ "button",
907
+ {
908
+ type: "button",
909
+ className: chat_default.menuItem,
910
+ onClick: () => onChipClick(chip),
911
+ children: [
912
+ /* @__PURE__ */ jsx("div", { className: `${chat_default.menuItemIcon} ${iconClass}`, children: svgIcon ? /* @__PURE__ */ jsx(
913
+ "svg",
914
+ {
915
+ className: chat_default.menuItemSvg,
916
+ viewBox: "0 0 24 24",
917
+ "aria-hidden": "true",
918
+ dangerouslySetInnerHTML: { __html: svgIcon }
919
+ }
920
+ ) : /* @__PURE__ */ jsx("span", { "aria-hidden": "true", children: chip.icon }) }),
921
+ /* @__PURE__ */ jsx("div", { className: chat_default.menuItemTitle, children: chip.label }),
922
+ /* @__PURE__ */ jsx("div", { className: chat_default.menuItemSub, children: MENU_SUBTITLES[chip.id] ?? "" })
923
+ ]
924
+ },
925
+ chip.id
926
+ );
927
+ }) }) : isBot && chips.length > 0 ? /* @__PURE__ */ jsx(
819
928
  ChipRow,
820
929
  {
821
- chips: message.chips,
930
+ chips,
822
931
  disabled: !message.chipsActive,
823
932
  onClick: onChipClick
824
933
  }
@@ -867,18 +976,6 @@ function ChatBody({
867
976
  /* @__PURE__ */ jsx("div", { ref: endRef })
868
977
  ] });
869
978
  }
870
-
871
- // src/utils/time.ts
872
- function formatCountdown(remainingMs) {
873
- if (remainingMs <= 0) return "expired";
874
- const totalSeconds = Math.floor(remainingMs / 1e3);
875
- const hours = Math.floor(totalSeconds / 3600);
876
- const minutes = Math.floor(totalSeconds % 3600 / 60);
877
- const seconds = totalSeconds % 60;
878
- if (hours > 0) return `${hours}h ${minutes}m left`;
879
- if (minutes > 0) return `${minutes}m ${seconds}s left`;
880
- return `${seconds}s left`;
881
- }
882
979
  function ChatHeader({
883
980
  brandName,
884
981
  remainingMs,
@@ -887,13 +984,7 @@ function ChatHeader({
887
984
  onClear
888
985
  }) {
889
986
  return /* @__PURE__ */ jsxs("div", { className: chat_default.header, children: [
890
- /* @__PURE__ */ jsxs("div", { children: [
891
- /* @__PURE__ */ jsx("div", { className: chat_default.headerTitle, children: brandName }),
892
- showCountdown && remainingMs > 0 ? /* @__PURE__ */ jsxs("div", { className: chat_default.headerMeta, children: [
893
- "Session: ",
894
- formatCountdown(remainingMs)
895
- ] }) : null
896
- ] }),
987
+ /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx("div", { className: chat_default.headerTitle, children: brandName }) }),
897
988
  /* @__PURE__ */ jsxs("div", { className: chat_default.headerActions, children: [
898
989
  onClear ? /* @__PURE__ */ jsx(
899
990
  "button",
@@ -1009,15 +1100,20 @@ var DEFAULT_BRAND_NAME = "Wealth Alpha AI";
1009
1100
  var DEFAULT_BRAND_COLOR = "#1a2d5a";
1010
1101
  var DEFAULT_AUTH_CHECK = "/me";
1011
1102
  var DEFAULT_GREETING = "Hi! I'm your Wealth Alpha AI assistant. How can I help you?";
1012
- var DISCLAIMER_BLOCK = "DISCLAIMER:\n\u2022 AI-assisted analysis for educational purposes only.\n\u2022 Not financial advice. Markets involve risk.\n\u2022 Consult a SEBI-registered advisor before investing.";
1013
- var CTA_LINE = "Select a quick command below \u2014 or type your query to ask our AI Research Analyst directly.";
1103
+ var CTA_LINE = "Select a quick command below";
1014
1104
  var PORTFOLIO_CSV_CHIP_ID = "__portfolio_csv_upload";
1105
+ var UPGRADE_PREMIUM_CHIP_ID = "__upgrade_premium__";
1106
+ function resolvePricingUrl(upgradeUrl) {
1107
+ if (upgradeUrl) return upgradeUrl;
1108
+ if (typeof window !== "undefined") {
1109
+ return `${window.location.origin}/pricing`;
1110
+ }
1111
+ return "";
1112
+ }
1015
1113
  function buildWelcome(name, plan) {
1016
1114
  const greeting = name ? `Welcome back, ${name}! You have ${plan ? plan : "Premium"} access.` : `Welcome! You have ${plan ? plan : "Premium"} access.`;
1017
1115
  return `${greeting}
1018
1116
 
1019
- ${DISCLAIMER_BLOCK}
1020
-
1021
1117
  ${CTA_LINE}`;
1022
1118
  }
1023
1119
  function WealthChat(props) {
@@ -1045,6 +1141,16 @@ function WealthChat(props) {
1045
1141
  useEffect(() => {
1046
1142
  setMounted(true);
1047
1143
  }, []);
1144
+ useEffect(() => {
1145
+ if (typeof document === "undefined") return;
1146
+ const id = "wac-google-fonts";
1147
+ if (document.getElementById(id)) return;
1148
+ const link = document.createElement("link");
1149
+ link.id = id;
1150
+ link.rel = "stylesheet";
1151
+ link.href = "https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&family=Sora:wght@600;700;800&display=swap";
1152
+ document.head.appendChild(link);
1153
+ }, []);
1048
1154
  useEffect(() => {
1049
1155
  if (!mounted || open || popupShownRef.current) return;
1050
1156
  const timer = setTimeout(() => {
@@ -1129,16 +1235,30 @@ function WealthChat(props) {
1129
1235
  csvFileRef.current?.click();
1130
1236
  return;
1131
1237
  }
1238
+ if (chip.id === UPGRADE_PREMIUM_CHIP_ID) {
1239
+ appendUserMessage(chip.label);
1240
+ const pricingUrl = resolvePricingUrl(user?.upgradeUrl);
1241
+ if (pricingUrl && typeof window !== "undefined") {
1242
+ window.location.assign(pricingUrl);
1243
+ }
1244
+ return;
1245
+ }
1132
1246
  appendUserMessage(chip.label);
1133
1247
  setTyping(true);
1134
1248
  try {
1135
1249
  const resp = await callChip(chip);
1136
- if (resp) appendBotResponse(resp);
1250
+ if (!resp) return;
1251
+ const redirectUrl = resp.metadata?.redirectUrl;
1252
+ if (typeof redirectUrl === "string" && redirectUrl && typeof window !== "undefined") {
1253
+ window.location.assign(redirectUrl);
1254
+ return;
1255
+ }
1256
+ appendBotResponse(resp);
1137
1257
  } finally {
1138
1258
  setTyping(false);
1139
1259
  }
1140
1260
  },
1141
- [touch, deactivatePriorChips, appendUserMessage, callChip, setTyping, appendBotResponse]
1261
+ [touch, deactivatePriorChips, appendUserMessage, callChip, setTyping, appendBotResponse, user?.upgradeUrl]
1142
1262
  );
1143
1263
  const handleCsvFileSelected = useCallback(
1144
1264
  (e) => {