/** * Photon Grid base styles — photon-ai section. * * Auto-split from base-styles.ts. Concatenated back (in order) by * base-styles.ts; edit here, not there. Order is preserved because CSS * cascade depends on it. */ export declare const photonAiCss = "/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Photon AI \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n Floating command bar, anchored to the grid body's bottom-right corner.\n Mounted as a sibling of the pinned-column panels (see PhotonAIPanel.mount /\n GridRenderer.buildLayout) so it floats independently of virtualization and\n scroll; the grid body's own overflow: hidden is what keeps it inside the\n grid container per spec, without this component needing to enforce that\n itself. */\n.pg-ai-launcher {\n position: absolute;\n bottom: 16px;\n right: 16px;\n z-index: 201;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 44px;\n height: 44px;\n border: none;\n border-radius: var(--pg-borders-radius-pill, 9999px);\n background: var(--pg-colors-primary, #2563eb);\n color: var(--pg-colors-primary-text, #ffffff);\n box-shadow: var(--pg-shadows-lg, 0 8px 24px rgba(15, 23, 42, 0.16));\n cursor: pointer;\n transition:\n transform var(--pg-transitions-duration-base, 150ms) var(--pg-transitions-easing-base, ease),\n opacity var(--pg-transitions-duration-base, 150ms) var(--pg-transitions-easing-base, ease),\n background var(--pg-transitions-duration-fast, 100ms);\n}\n.pg-ai-launcher:hover {\n background: var(--pg-colors-primary-hover, #1d4ed8);\n transform: scale(1.06);\n}\n.pg-ai-launcher:active {\n background: var(--pg-colors-primary-active, #1e40af);\n transform: scale(0.97);\n}\n.pg-ai-launcher--hidden {\n opacity: 0;\n transform: scale(0.7);\n pointer-events: none;\n}\n\n.pg-ai-panel {\n position: absolute;\n top: 12px;\n right: 12px;\n bottom: 12px;\n z-index: 201;\n width: min(360px, calc(100% - 24px));\n display: none;\n flex-direction: column;\n background: var(--pg-colors-surface, #ffffff);\n border: var(--pg-borders-width-thin, 1px) solid var(--pg-colors-border, #e2e8f0);\n border-radius: var(--pg-borders-radius-lg, 10px);\n box-shadow: var(--pg-shadows-dropdown, 0 16px 48px rgba(15, 23, 42, 0.24));\n font-family: var(--pg-typography-font-family, system-ui, sans-serif);\n color: var(--pg-colors-text-primary, #0f172a);\n}\n.pg-ai-panel--open {\n display: flex;\n}\n\n.pg-ai-panel__header {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 12px;\n border-bottom: var(--pg-borders-width-thin, 1px) solid var(--pg-colors-border, #e2e8f0);\n}\n.pg-ai-panel__title {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: var(--pg-typography-font-size-sm, 13px);\n font-weight: var(--pg-typography-font-weight-semi-bold, 600);\n color: var(--pg-colors-primary, #2563eb);\n}\n.pg-ai-panel__close {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n border: none;\n border-radius: var(--pg-borders-radius-sm, 4px);\n background: transparent;\n color: var(--pg-colors-text-secondary, #64748b);\n cursor: pointer;\n transition: background var(--pg-transitions-duration-fast, 100ms);\n}\n.pg-ai-panel__close:hover {\n background: var(--pg-colors-background-alt, #f1f5f9);\n}\n\n.pg-ai-panel__log {\n flex: 1 1 0;\n min-height: 0;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: 10px;\n padding: 14px;\n}\n\n.pg-ai-panel__message {\n max-width: 85%;\n padding: 8px 12px;\n border-radius: var(--pg-borders-radius-lg, 10px);\n font-size: var(--pg-typography-font-size-sm, 13px);\n line-height: 1.45;\n white-space: pre-wrap;\n word-break: break-word;\n}\n.pg-ai-panel__message--user {\n align-self: flex-end;\n background: var(--pg-colors-primary, #2563eb);\n color: var(--pg-colors-primary-text, #ffffff);\n border-bottom-right-radius: var(--pg-borders-radius-sm, 4px);\n}\n.pg-ai-panel__message--assistant {\n align-self: flex-start;\n background: var(--pg-colors-background-alt, #f1f5f9);\n color: var(--pg-colors-text-primary, #0f172a);\n border-bottom-left-radius: var(--pg-borders-radius-sm, 4px);\n}\n.pg-ai-panel__message--assistant.pg-ai-panel__message--error {\n background: var(--pg-colors-error-subtle, #fef2f2);\n color: var(--pg-colors-error, #dc2626);\n}\n\n.pg-ai-panel__input-wrap {\n position: relative;\n flex-shrink: 0;\n display: flex;\n padding: 10px 12px 12px;\n border-top: var(--pg-borders-width-thin, 1px) solid var(--pg-colors-border, #e2e8f0);\n}\n.pg-ai-panel__input {\n flex: 1 1 0;\n width: 100%;\n min-height: 36px;\n max-height: 120px;\n padding: 8px 40px 8px 12px;\n border: var(--pg-borders-width-thin, 1px) solid var(--pg-colors-border, #e2e8f0);\n border-radius: var(--pg-borders-radius-md, 6px);\n background: var(--pg-colors-surface, #ffffff);\n color: var(--pg-colors-text-primary, #0f172a);\n font-family: var(--pg-typography-font-family, system-ui, sans-serif);\n font-size: var(--pg-typography-font-size-sm, 13px);\n line-height: 1.4;\n resize: none;\n outline: none;\n transition: border-color var(--pg-transitions-duration-fast, 100ms);\n}\n.pg-ai-panel__input::placeholder {\n color: var(--pg-colors-text-disabled, #94a3b8);\n}\n.pg-ai-panel__input:focus {\n border-color: var(--pg-colors-border-focus, #2563eb);\n}\n.pg-ai-panel__send {\n position: absolute;\n right: 20px;\n bottom: 17px;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n flex-shrink: 0;\n border: none;\n border-radius: var(--pg-borders-radius-pill, 9999px);\n background: var(--pg-colors-primary, #2563eb);\n color: var(--pg-colors-primary-text, #ffffff);\n cursor: pointer;\n transition:\n background var(--pg-transitions-duration-fast, 100ms),\n transform var(--pg-transitions-duration-fast, 100ms),\n opacity var(--pg-transitions-duration-fast, 100ms);\n}\n.pg-ai-panel__send:hover:not(:disabled) {\n background: var(--pg-colors-primary-hover, #1d4ed8);\n transform: scale(1.08);\n}\n.pg-ai-panel__send:disabled {\n background: var(--pg-colors-text-disabled, #94a3b8);\n opacity: 0.5;\n cursor: default;\n}\n.pg-ai-panel__input:disabled {\n opacity: 0.6;\n cursor: default;\n}\n\n/* \u2500\u2500 Generative reply: loading state + typewriter streaming \u2500\u2500 */\n\n/* \"Thinking\" indicator shown while a generative provider request is in flight. */\n.pg-ai-panel__typing {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 0;\n}\n.pg-ai-panel__typing-dot {\n width: 6px;\n height: 6px;\n border-radius: var(--pg-borders-radius-pill, 9999px);\n background: var(--pg-colors-text-secondary, #64748b);\n opacity: 0.4;\n animation: pg-ai-typing 1.2s var(--pg-transitions-easing-base, ease) infinite;\n}\n.pg-ai-panel__typing-dot:nth-child(2) {\n animation-delay: 0.2s;\n}\n.pg-ai-panel__typing-dot:nth-child(3) {\n animation-delay: 0.4s;\n}\n@keyframes pg-ai-typing {\n 0%, 60%, 100% {\n opacity: 0.4;\n transform: translateY(0);\n }\n 30% {\n opacity: 1;\n transform: translateY(-3px);\n }\n}\n\n/* Blinking caret trailing the text while a reply is being typed out. */\n.pg-ai-panel__message--streaming > div:last-child::after {\n content: '';\n display: inline-block;\n width: 2px;\n height: 1em;\n margin-left: 1px;\n vertical-align: text-bottom;\n background: var(--pg-colors-primary, #2563eb);\n animation: pg-ai-caret 1s steps(1) infinite;\n}\n@keyframes pg-ai-caret {\n 0%, 50% {\n opacity: 1;\n }\n 50.01%, 100% {\n opacity: 0;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .pg-ai-panel__typing-dot,\n .pg-ai-panel__message--streaming > div:last-child::after {\n animation: none;\n }\n}\n\n/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Markdown in assistant replies \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n/*\n * Assistant messages render as Markdown (see photon-ai/chat/markdown-renderer).\n * Every value below is a theme token so code blocks re-skin with the grid in\n * light, dark, and any custom theme \u2014 a hardcoded editor palette would be the\n * one part of the panel that ignored the user's theme.\n *\n * The bubble sets white-space: pre-wrap for plain replies; block children\n * here reset it so Markdown controls its own wrapping, while
deliberately\n * keeps \"pre\" to preserve code indentation.\n */\n.pg-ai-md__p,\n.pg-ai-md__heading,\n.pg-ai-md__list {\n white-space: normal;\n}\n.pg-ai-md__p + .pg-ai-md__p,\n.pg-ai-md__p + .pg-ai-md__list,\n.pg-ai-md__list + .pg-ai-md__p,\n.pg-ai-md__code + .pg-ai-md__p,\n.pg-ai-md__p + .pg-ai-md__code,\n.pg-ai-md__heading + .pg-ai-md__p {\n margin-top: 8px;\n}\n.pg-ai-md__heading {\n font-weight: var(--pg-typography-font-weight-semi-bold, 600);\n line-height: 1.3;\n}\n.pg-ai-md__heading--1 { font-size: var(--pg-typography-font-size-lg, 15px); }\n.pg-ai-md__heading--2 { font-size: var(--pg-typography-font-size-md, 14px); }\n.pg-ai-md__heading--3,\n.pg-ai-md__heading--4 { font-size: var(--pg-typography-font-size-sm, 13px); }\n.pg-ai-md__list {\n margin: 0;\n padding-left: 20px;\n}\n.pg-ai-md__list li + li { margin-top: 3px; }\n.pg-ai-md__strong { font-weight: var(--pg-typography-font-weight-semi-bold, 600); }\n\n.pg-ai-md__code-inline {\n padding: 1px 5px;\n border-radius: var(--pg-borders-radius-sm, 4px);\n background: var(--pg-colors-background-alt, #f1f5f9);\n border: var(--pg-borders-width-thin, 1px) solid var(--pg-colors-border, #e2e8f0);\n font-family: var(--pg-typography-font-family-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);\n font-size: 0.92em;\n word-break: break-word;\n}\n\n.pg-ai-md__code {\n margin: 8px 0;\n border: var(--pg-borders-width-thin, 1px) solid var(--pg-colors-border, #e2e8f0);\n border-radius: var(--pg-borders-radius-md, 6px);\n background: var(--pg-colors-surface, #ffffff);\n overflow: hidden;\n}\n.pg-ai-md__code-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n padding: 4px 6px 4px 10px;\n background: var(--pg-colors-background-alt, #f1f5f9);\n border-bottom: var(--pg-borders-width-thin, 1px) solid var(--pg-colors-border, #e2e8f0);\n}\n.pg-ai-md__code-lang {\n font-size: var(--pg-typography-font-size-xs, 11px);\n font-weight: var(--pg-typography-font-weight-medium, 500);\n color: var(--pg-colors-text-secondary, #475569);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n.pg-ai-md__copy {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border: var(--pg-borders-width-thin, 1px) solid transparent;\n border-radius: var(--pg-borders-radius-sm, 4px);\n background: transparent;\n color: var(--pg-colors-text-secondary, #475569);\n font-family: inherit;\n font-size: var(--pg-typography-font-size-xs, 11px);\n cursor: pointer;\n transition: background var(--pg-transitions-duration-fast, 100ms),\n color var(--pg-transitions-duration-fast, 100ms);\n}\n.pg-ai-md__copy:hover {\n background: var(--pg-colors-surface, #ffffff);\n border-color: var(--pg-colors-border, #e2e8f0);\n color: var(--pg-colors-text-primary, #0f172a);\n}\n.pg-ai-md__copy:focus-visible {\n outline: none;\n border-color: var(--pg-colors-primary, #2563eb);\n box-shadow: 0 0 0 2px var(--pg-colors-primary-subtle, rgba(37, 99, 235, 0.2));\n}\n.pg-ai-md__copy--done { color: var(--pg-colors-success, #16a34a); }\n\n.pg-ai-md__pre {\n margin: 0;\n padding: 10px 12px;\n overflow-x: auto;\n white-space: pre;\n font-family: var(--pg-typography-font-family-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);\n font-size: var(--pg-typography-font-size-xs, 12px);\n line-height: 1.55;\n color: var(--pg-colors-text-primary, #0f172a);\n tab-size: 2;\n}\n\n/* A code block needs the full bubble width to be readable; the 85% cap that\n suits prose makes 60-column snippets wrap awkwardly. */\n.pg-ai-panel__message--assistant:has(.pg-ai-md__code) { max-width: 97%; }\n\n";
//# sourceMappingURL=photon-ai.css.d.ts.map