Enterprise AI has changed the security boundary. A Salesforce agent can read CRM records, retrieve knowledge, invoke actions, and interact with external systems. That makes the prompt a potential control plane, not merely a conversational input. Prompt injection exploits this shift. Instead of manipulating a database query, an attacker manipulates the instructions an LLM interprets. This leads to malicious instructions to alter model behavior, expose sensitive information, or influence connected functions. Direct attacks come from user input, while indirect prompt injection comes from external content the model later reads, such as documents, websites, emails, or retrieved knowledge.
For Salesforce teams, the implication of these Agentforce security risks is practical: they need to go beyond identity, permissions, and data access when it comes to preventing these risks. So, how to prevent such severe LLM security vulnerabilities? Especially when the agent’s entire input-to-action path becomes part of the attack surface. This blog will cover prompt injection Salesforce risks, impact and share best practices to prepare you for situations when an AI agent attack surfaces.
What’s insideWhat Is a Prompt Injection?Understanding the AI Agent Attack Surface in AgentforceIndirect Prompt Injection: Is Your Salesforce Agentforce AI the New Attack Surface?What Are the Key Agentforce Security Risks?Prompt Injection Risks: 7 Steps to Keep Your Agents SecureAgentforce Security Assessment ChecklistWrapping It Up
What Is a Prompt Injection?
Prompt injection occurs when untrusted content causes an LLM to follow instructions that conflict with its intended task. In an agentic system, the risk increases because the model may have tools and permissions that let it act on the result.
How to Know Your Agentforce Has Been Prompt Injected
For better prevention, you must identify signs that prompt injection Salesforce teams should look out for:
Unexpected actions: Agents trigger updates/calls to CRM/executing tools that weren’t requested by the user.Anomalous responses: Using instructions or content that the user didn’t provide, often based on external documents or knowledge bases.Data leakage attempts: Agent discloses sensitive data from the CRM, configurations, or instructions beyond the scope of the query.Redirected behavior: The agent follows links or APIs outside the trusted URL list, indicating unsafe external access.Context poisoning indicators: Persistent changes in agent reasoning or repeated references to malicious content across sessions.
Understanding the AI Agent Attack Surface in Agentforce
An AI agent attack surface includes every place where untrusted input can influence model reasoning, tool selection, data retrieval, or downstream actions. For Agentforce, that can include:
User prompts and conversation historyCRM and Data Cloud records used for groundingKnowledge articles and uploaded filesExternal websites, documents, emails, and API responsesAgent instructions, topics, actions, and connected toolsURLs and external systems the agent can access
Salesforce provides protections through the Einstein Trust Layer, including prompt injection detection, system policies, secure data retrieval, audit capabilities, and trusted URL controls. But the user must treat Agentforce security as a shared responsibility: Salesforce secures the platform, while customers configure permissions, guardrails, monitoring, and agent-specific controls.
Indirect Prompt Injection: Is Your Salesforce Agentforce AI the New Attack Surface?
Indirect prompt injection is particularly relevant to CRM environments because agents increasingly consume information they did not receive directly from the user. A malicious instruction could be embedded in a knowledge article, customer-submitted document, webpage, or retrieved source. When the agent processes that material, the content can attempt to redirect its behavior.
The attack path can be simple:
External content → Agent context → Model decision → Tool or action → Business system
What Are the Key Agentforce Security Risks?
Data exposure:The agent may be manipulated into revealing information beyond the request.Excessive agency:Over-permissioned tools can turn a manipulated response into a real business action.Instruction leakage:Attackers may attempt to extract system instructions or configuration details.Context poisoning:Malicious content can influence reused or persistent context.Unsafe external access:Using third-party links or APIs can cause data leaks or unauthorized use.
Prompt Injection Risks: 7 Steps to Keep Your Agents Secure
1Treat External Content as UntrustedClassify user input, retrieved documents, websites, emails, and API responses as data, not instructions. Define trust boundaries before content enters the agent context to reduce prompt injection Salesforce exposure.2Apply Least PrivilegeGive the agent only the Salesforce objects, fields, actions, URLs, and services required for its function. Salesforce recommends customer-side controls such as least-privilege permissions and agent guardrails.3Validate Actions, Not Only PromptsA prompt filter may spot suspicious text, but controls must also check if the action matches what the user asked for. Critical tasks should only continue after double verification or approval from human agents.4Restrict Outbound DestinationsSalesforce Trusted URLs controls reduce the risk of malicious links and outbound requests following prompt injection. In February 2026, Salesforce removed default domain *.salesforce.com. Customers are now expected to create an explicit list of domains their agents need. This change reduces exposure, limits unnecessary endpoints, and enforces tighter control over external access.5Adversarial Input TestSecurity testing should include direct injection, indirect injection through knowledge and documents, tool manipulation, data-exfiltration attempts, and unauthorized-action scenarios. OWASP recommends penetration testing and breach simulations for LLM applications.6Monitor and Audit Agent BehaviorTrack prompts, responses, tool calls, permission use, blocked actions, and anomalies. Detailed logs strengthen Salesforce security assessment and help contain Agentforce security risks tied to LLM security vulnerabilities.7Embed Security into LifecycleIntegrate security reviews across design, testing, rollout, and updates. Embedding controls early limits indirect prompt injection CRM risks and aligns with Salesforce Security & Compliance Consulting standards.
Agentforce Security Assessment Checklist
Data Sources: Review all agent inputs to confirm only trusted records and documents are consumed.Instructions: Examine agent instructions to prevent leakage or manipulation.Permissions: Audit access rights to enforce least-privilege across Salesforce objects and fields.Actions: Validate tool and action execution against approved workflows.Integrations: Inspect APIs and external systems for unsafe exposure.External URLs: Restrict outbound requests to a defined trusted list.Human Approval: Define checkpoints for sensitive or high-impact operations.Logging: Enable capture of prompts, responses, tool calls, and blocked actions.Failure Paths: Map recovery processes to ensure safe handling of injection attempts.Blast Radius: Test containment controls to limit manipulated instructions.Context Poisoning: Monitor for malicious influence across persistent agent sessions.Governance: Include compliance checks alongside technical controls before deployment.
Wrapping It Up
Prompt injection is becoming an enterprise application security issue because AI agents can translate manipulated language into access, decisions, and actions. For Salesforce organizations, Agentforce security requires more than prompt hygiene. It requires a deliberate review of the agent’s attack surface, trust boundaries, permissions, integrations, and operational controls.
Seeking a Salesforce Security & Compliance Consulting partner can help you assess these controls, identify agentic AI exposure, and build a security framework aligned with enterprise governance requirements.
.gkx-blog{
--gkx-accent:#1a73e8; --gkx-dark:#0f4fa8; --gkx-light:#e8f0fe; --gkx-hl:#f3f7ff;
--gkx-line:#e4e9f2; --gkx-ink:#101828; --gkx-body:#3f4a5a; --gkx-mute:#697586;
--gkx-ok:#0f7a4a; --gkx-ok-bg:#eefaf3; --gkx-ok-line:#c3ead6;
--gkx-warn:#a35c00; --gkx-warn-bg:#fff8ec; --gkx-warn-line:#f5dfb8;
--gkx-alt:#6537c9; --gkx-alt-bg:#f5f2ff; --gkx-alt-line:#ddd4f7;
--gkx-neg:#b42318; --gkx-neg-bg:#fdf1f1; --gkx-neg-line:#f6d5d2;
--gkx-r:10px;
width:100%; font-size:17px; line-height:1.75; color:var(--gkx-body);
-webkit-font-smoothing:antialiased;
}
.gkx-blog *,.gkx-blog *::before,.gkx-blog *::after{box-sizing:border-box;}
.gkx-blog p{margin:0 0 20px;}
.gkx-blog h2{font-size:29px; line-height:1.3; letter-spacing:-.015em; margin:52px 0 18px; color:var(--gkx-ink); font-weight:700; scroll-margin-top:90px;}
.gkx-blog h3{font-size:20px; line-height:1.38; letter-spacing:-.01em; margin:32px 0 10px; color:var(--gkx-ink); font-weight:700; scroll-margin-top:90px;}
.gkx-blog h2 + p,.gkx-blog h3 + p{margin-top:0;}
.gkx-blog img{max-width:100%; height:auto; display:block; margin:0 auto; border-radius:var(--gkx-r);}
.gkx-blog hr{border:0; border-top:1px solid var(--gkx-line); margin:44px 0;}
.gkx-blog ul,.gkx-blog ol{margin:0 0 22px; padding:0; list-style:none;}
.gkx-blog svg{fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round;}
.gkx-blog code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; font-size:.88em; color:var(--gkx-ink); background:#f5f7fa; border:1px solid var(--gkx-line); border-radius:5px; padding:1px 6px; overflow-wrap:anywhere;}
.gkx-blog a{
color:var(--gkx-accent); font-weight:600;
background-image:none !important;
text-decoration:underline !important;
text-decoration-thickness:1px; text-underline-offset:3px;
text-decoration-skip-ink:auto;
transition:color .15s ease, text-decoration-thickness .15s ease;
}
.gkx-blog a:hover,.gkx-blog a:focus-visible{color:var(--gkx-dark); text-decoration-thickness:2px;}
.gkx-blog a:visited{color:var(--gkx-accent);}
.gkx-toc-list a,.gkx-blog .gkx-btn{text-decoration:none !important;}
.gkx-blog a:focus-visible{outline:2px solid var(--gkx-accent); outline-offset:3px; border-radius:3px;}
.gkx-kw{color:var(--gkx-ink); font-weight:700;}
.gkx-lede{
background:var(--gkx-hl); border-left:4px solid var(--gkx-accent);
border-radius:0 var(--gkx-r) var(--gkx-r) 0;
padding:20px 24px; margin:0 0 26px; font-size:18px; line-height:1.7; color:var(--gkx-ink);
}
.gkx-lede p{margin:0;}
.gkx-toc{
border:1px solid var(--gkx-line); border-radius:var(--gkx-r);
background:#fff; padding:20px 24px 8px; margin:30px 0 38px;
}
.gkx-toc-head{
font-size:11px; font-weight:700; letter-spacing:.11em; text-transform:uppercase;
color:var(--gkx-mute); margin:0 0 14px;
}
.gkx-toc-list{counter-reset:gkxtoc; margin:0; padding:0;}
@media (min-width:700px){.gkx-toc-2 .gkx-toc-list{columns:2; column-gap:34px;}}
.gkx-toc-2 .gkx-toc-list li{break-inside:avoid;}
.gkx-toc-list li{counter-increment:gkxtoc; position:relative; padding:0 0 12px 34px; font-size:15.5px; line-height:1.5;}
.gkx-toc-list li::before{
content:counter(gkxtoc,decimal-leading-zero);
position:absolute; left:0; top:1px;
font-size:11px; font-weight:700; color:var(--gkx-accent);
background:var(--gkx-light); border-radius:5px; padding:2px 6px; letter-spacing:.02em;
}
.gkx-toc-list a{color:var(--gkx-body); font-weight:600;}
.gkx-toc-list a:hover{color:var(--gkx-accent); text-decoration:underline !important;}
.gkx-list li{position:relative; padding:0 0 12px 24px; line-height:1.7;}
.gkx-list li::before{
content:""; position:absolute; left:2px; top:11px;
width:7px; height:7px; border-radius:50%; background:var(--gkx-accent);
}
.gkx-list strong{color:var(--gkx-ink);}
.gkx-chips{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; margin:22px 0 26px;}
.gkx-chips li{
display:block; position:relative;
background:var(--gkx-hl); border:1px solid var(--gkx-line); border-radius:8px;
padding:12px 16px 12px 34px; font-size:15px; line-height:1.55; color:var(--gkx-ink);
}
.gkx-chips li::before{
content:""; position:absolute; left:15px; top:20px;
width:6px; height:6px; border-radius:50%; background:var(--gkx-accent);
}
.gkx-chips-ck li{padding-left:42px;}
.gkx-chips-ck li::before{
left:14px; top:14px; width:18px; height:18px; border-radius:50%;
background:var(--gkx-ok-bg); border:1px solid var(--gkx-ok-line);
}
.gkx-chips-ck li::after{
content:""; position:absolute; left:21px; top:18px; width:4px; height:8px;
border:solid var(--gkx-ok); border-width:0 2px 2px 0; transform:rotate(45deg);
}
.gkx-cards{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; margin:24px 0 30px;}
.gkx-cards-3{grid-template-columns:repeat(3,minmax(0,1fr));}
.gkx-card{
border:1px solid var(--gkx-line); border-radius:var(--gkx-r); background:#fff;
padding:20px 22px 6px; transition:box-shadow .18s ease, transform .18s ease;
}
.gkx-card:hover{box-shadow:0 6px 22px rgba(16,24,40,.07); transform:translateY(-2px);}
.gkx-card-top{display:flex; align-items:center; gap:11px; margin-bottom:10px;}
.gkx-card-icon{
width:34px; height:34px; flex:0 0 34px; border-radius:8px;
background:var(--gkx-light); color:var(--gkx-accent);
display:flex; align-items:center; justify-content:center;
}
.gkx-card-icon svg{width:19px; height:19px;}
.gkx-card-t{font-size:16px; font-weight:700; color:var(--gkx-ink); line-height:1.35; margin:0;}
.gkx-card p{font-size:15.5px; line-height:1.68; margin:0 0 14px;}
.gkx-cards-risk .gkx-card-icon{background:var(--gkx-neg-bg); color:var(--gkx-neg);}
.gkx-ops{display:grid; gap:14px; margin:24px 0 30px;}
.gkx-op{
display:flex; gap:18px; align-items:flex-start;
border:1px solid var(--gkx-line); border-radius:var(--gkx-r); background:#fff;
padding:20px 22px; transition:box-shadow .18s ease, border-color .18s ease;
}
.gkx-op:hover{box-shadow:0 6px 22px rgba(16,24,40,.07); border-color:#d3ddec;}
.gkx-op-n{
flex:0 0 38px; width:38px; height:38px; border-radius:50%;
background:var(--gkx-accent); color:#fff;
display:flex; align-items:center; justify-content:center;
font-size:13px; font-weight:700; letter-spacing:.02em;
}
.gkx-op-b{min-width:0; flex:1;}
.gkx-op-b h3{margin:1px 0 6px; font-size:17.5px;}
.gkx-op-b p{font-size:15.5px; line-height:1.68; margin:0;}
.gkx-op-b p + p{margin-top:12px;}
.gkx-steps{position:relative; margin:26px 0 32px; padding-left:26px;}
.gkx-steps::before{content:""; position:absolute; left:5px; top:8px; bottom:8px; width:2px; background:var(--gkx-line);}
.gkx-step{position:relative; padding:0 0 8px;}
.gkx-step::before{
content:""; position:absolute; left:-26px; top:12px;
width:12px; height:12px; border-radius:50%;
background:#fff; border:3px solid var(--gkx-accent);
}
.gkx-step h2,.gkx-step h3{
font-size:20px; line-height:1.38; margin:22px 0 8px; letter-spacing:-.005em;
}
.gkx-step:first-child h2,.gkx-step:first-child h3{margin-top:0;}
.gkx-step p{font-size:16px; line-height:1.72; margin:0 0 4px;}
.gkx-blog .gkx-seq{counter-reset:gkxseq; position:relative; margin:26px 0 30px; padding:0;}
.gkx-seq::before{content:""; position:absolute; left:17px; top:20px; bottom:20px; width:2px; background:var(--gkx-line);}
.gkx-seq li{counter-increment:gkxseq; position:relative; padding:4px 0 20px 56px; line-height:1.7; min-height:36px;}
.gkx-seq li:last-child{padding-bottom:0;}
.gkx-seq li::before{
content:counter(gkxseq); position:absolute; left:0; top:0;
width:36px; height:36px; border-radius:50%;
background:var(--gkx-accent); color:#fff; border:3px solid #fff; box-shadow:0 0 0 1px var(--gkx-line);
display:flex; align-items:center; justify-content:center;
font-size:13px; font-weight:700;
}
.gkx-seq strong{color:var(--gkx-ink);}
.gkx-dgrid{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; margin:24px 0 30px;}
.gkx-dgrid-3{grid-template-columns:repeat(3,minmax(0,1fr));}
.gkx-dcard{border:1px solid var(--gkx-line); border-radius:var(--gkx-r); padding:20px 22px 6px; background:#fff; border-top:3px solid var(--gkx-accent); display:grid; grid-template-columns:34px minmax(0,1fr); column-gap:12px; align-items:center; align-content:start;}
.gkx-dcard h3{margin:0 0 8px; font-size:17px;}
.gkx-dcard .gkx-card-t{margin:0 0 10px; font-size:17px;}
.gkx-dcard p{font-size:15.5px; line-height:1.68; margin:0 0 14px;}
.gkx-dtag{
display:inline-block; font-size:10.5px; font-weight:700; letter-spacing:.08em;
text-transform:uppercase; border-radius:5px; padding:3px 9px; margin-bottom:11px;
background:var(--gkx-light); color:var(--gkx-dark);
}
.gkx-dcard .gkx-card-icon{margin:0 0 10px;}
.gkx-dcard p:not(.gkx-card-t){grid-column:1 / -1;}
.gkx-d-ok{border-top-color:var(--gkx-ok);}
.gkx-d-ok .gkx-dtag,.gkx-d-ok .gkx-card-icon{background:var(--gkx-ok-bg); color:var(--gkx-ok);}
.gkx-d-warn{border-top-color:var(--gkx-warn);}
.gkx-d-warn .gkx-dtag,.gkx-d-warn .gkx-card-icon{background:var(--gkx-warn-bg); color:var(--gkx-warn);}
.gkx-d-go{border-top-color:var(--gkx-accent);}
.gkx-d-go .gkx-dtag,.gkx-d-go .gkx-card-icon{background:var(--gkx-light); color:var(--gkx-dark);}
.gkx-d-alt{border-top-color:var(--gkx-alt);}
.gkx-d-alt .gkx-dtag,.gkx-d-alt .gkx-card-icon{background:var(--gkx-alt-bg); color:var(--gkx-alt);}
.gkx-verdict{
background:var(--gkx-hl); border:1px solid var(--gkx-line); border-radius:8px;
padding:13px 16px; font-size:15px; line-height:1.65; color:var(--gkx-ink); margin:2px 0 16px;
}
.gkx-qs{counter-reset:gkxq; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; margin:22px 0 28px;}
.gkx-qs li{
counter-increment:gkxq; position:relative;
border:1px solid var(--gkx-line); border-radius:var(--gkx-r); background:#fff;
padding:16px 18px 14px 18px;
}
.gkx-qs-head{
display:block; font-size:13.5px; font-weight:700; letter-spacing:.01em;
color:var(--gkx-accent); margin-bottom:6px;
}
.gkx-qs li p{font-size:15px; line-height:1.62; margin:0;}
.gkx-faq{display:grid; gap:14px; margin:24px 0 10px;}
.gkx-faq-i{border:1px solid var(--gkx-line); border-radius:var(--gkx-r); background:#fff; padding:20px 22px 6px;}
.gkx-faq-i h3{margin:0 0 8px; font-size:17.5px; line-height:1.4;}
.gkx-faq-i p{font-size:15.5px; line-height:1.68; margin:0 0 14px;}
.gkx-table-wrap{
overflow-x:auto; -webkit-overflow-scrolling:touch;
border:1px solid var(--gkx-line); border-radius:var(--gkx-r); margin:24px 0 10px;
}
.gkx-table{width:100%; border-collapse:collapse; min-width:560px; font-size:15px;}
.gkx-table th,.gkx-table td{padding:13px 16px; text-align:left; vertical-align:top; line-height:1.6;}
.gkx-table thead th{
background:var(--gkx-hl); color:var(--gkx-dark);
font-size:11.5px; font-weight:700; letter-spacing:.07em; text-transform:uppercase;
border-bottom:1px solid var(--gkx-line); white-space:nowrap;
}
.gkx-table tbody td,.gkx-table tbody th{border-top:1px solid var(--gkx-line);}
.gkx-table tbody tr:nth-child(even) td,.gkx-table tbody tr:nth-child(even) th{background:#fbfcfe;}
.gkx-table th:first-child,.gkx-table td:first-child{
position:sticky; left:0; z-index:1;
background:#fff; font-weight:700; color:var(--gkx-ink); font-size:14.5px;
border-right:1px solid var(--gkx-line);
}
.gkx-table thead th:first-child{background:var(--gkx-hl); color:var(--gkx-dark); font-size:11.5px;}
.gkx-table tbody tr:nth-child(even) td:first-child,.gkx-table tbody tr:nth-child(even) th:first-child{background:#fbfcfe;}
.gkx-pill{
display:inline-block; font-size:12.5px; font-weight:700; letter-spacing:.01em;
border-radius:999px; padding:3px 11px; white-space:nowrap;
}
.gkx-pill-pos{background:var(--gkx-ok-bg); color:var(--gkx-ok); border:1px solid var(--gkx-ok-line);}
.gkx-pill-mid{background:var(--gkx-warn-bg); color:var(--gkx-warn); border:1px solid var(--gkx-warn-line);}
.gkx-pill-neg{background:var(--gkx-neg-bg); color:var(--gkx-neg); border:1px solid var(--gkx-neg-line);}
.gkx-tag{
display:inline-block; font-size:13px; font-weight:600; color:var(--gkx-body);
background:#f5f7fa; border:1px solid var(--gkx-line); border-radius:6px; padding:3px 9px;
}
.gkx-num{font-variant-numeric:tabular-nums; font-weight:700; color:var(--gkx-ink); white-space:nowrap;}
.gkx-table-hint{display:none; font-size:12.5px; color:var(--gkx-mute); margin:0 0 30px; text-align:right;}
.gkx-stats{border:1px solid var(--gkx-line); border-radius:var(--gkx-r); background:var(--gkx-hl); padding:20px 22px 22px; margin:26px 0 30px;}
.gkx-stats-head{display:flex; align-items:center; gap:10px; font-size:16px; font-weight:700; color:var(--gkx-dark); margin:0 0 16px; line-height:1.35;}
.gkx-stats-head svg{width:20px; height:20px; flex:0 0 20px;}
.gkx-stats-grid{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px;}
.gkx-stat{background:#fff; border:1px solid var(--gkx-line); border-radius:8px; padding:16px 18px 6px; font-size:15.5px; line-height:1.65; color:var(--gkx-ink);}
.gkx-stat p{margin:0 0 12px;}
.gkx-stat strong{color:var(--gkx-accent); font-weight:700;}
.gkx-stat .gkx-card-icon{margin:2px 0 10px;}
.gkx-plans{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; margin:24px 0 30px;}
.gkx-plan{border:1px solid var(--gkx-line); border-top:3px solid var(--gkx-accent); border-radius:var(--gkx-r); background:#fff; padding:20px 22px 8px;}
.gkx-plan-n{font-size:12px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:var(--gkx-dark); margin:0 0 6px;}
.gkx-plan-p{font-size:20px; line-height:1.3; font-weight:800; letter-spacing:-.01em; color:var(--gkx-ink); margin:0 0 16px; font-variant-numeric:tabular-nums;}
.gkx-blog .gkx-plan-list{margin:0 0 14px;}
.gkx-plan-list li{position:relative; padding:0 0 10px 28px; font-size:15.5px; line-height:1.6; color:var(--gkx-ink);}
.gkx-plan-list li::before{
content:""; position:absolute; left:0; top:3px; width:18px; height:18px; border-radius:50%;
background:var(--gkx-ok-bg); border:1px solid var(--gkx-ok-line);
}
.gkx-plan-list li::after{
content:""; position:absolute; left:7px; top:7px; width:4px; height:8px;
border:solid var(--gkx-ok); border-width:0 2px 2px 0; transform:rotate(45deg);
}
.gkx-blog .gkx-ck{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; margin:22px 0 28px;}
.gkx-ck li{
position:relative; border:1px solid var(--gkx-line); border-radius:8px; background:#fff;
padding:14px 16px 14px 50px; font-size:15.5px; line-height:1.62;
}
.gkx-ck li::before{
content:""; position:absolute; left:17px; top:17px; width:18px; height:18px;
border:2px solid var(--gkx-accent); border-radius:5px; background:#fff;
}
.gkx-ck strong{color:var(--gkx-ink);}
.gkx-flow{display:flex; flex-wrap:wrap; align-items:stretch; gap:8px 6px; margin:22px 0 28px;}
.gkx-flow-i{
background:var(--gkx-hl); border:1px solid var(--gkx-line); border-radius:8px;
padding:9px 14px; font-size:14.5px; line-height:1.4; font-weight:600; color:var(--gkx-ink);
display:flex; align-items:center;
}
.gkx-flow-a{align-self:center; color:var(--gkx-accent); font-weight:700; font-size:16px; line-height:1;}
.gkx-callout,.gkx-tip{
display:flex; gap:14px; align-items:flex-start;
border-radius:var(--gkx-r); padding:17px 20px; margin:24px 0; font-size:16px; line-height:1.68;
}
.gkx-callout{background:var(--gkx-hl); border-left:4px solid var(--gkx-accent); color:var(--gkx-ink);}
.gkx-tip{background:var(--gkx-warn-bg); border-left:4px solid var(--gkx-warn); color:var(--gkx-ink);}
.gkx-callout svg,.gkx-tip svg{width:20px; height:20px; flex:0 0 20px; margin-top:3px;}
.gkx-callout svg{color:var(--gkx-accent);} .gkx-tip svg{color:var(--gkx-warn);}
.gkx-callout p,.gkx-tip p{margin:0;}
.gkx-quote{
margin:26px 0; padding:20px 24px; border-left:4px solid var(--gkx-accent);
background:var(--gkx-hl); border-radius:0 var(--gkx-r) var(--gkx-r) 0;
font-size:18.5px; line-height:1.65; font-style:italic; color:var(--gkx-ink);
}
.gkx-quote p{margin:0;}
.gkx-takeaway{
background:var(--gkx-hl); border:1px solid var(--gkx-line); border-radius:var(--gkx-r);
padding:22px 26px; margin:28px 0 22px;
}
.gkx-takeaway p{margin:0 0 14px;} .gkx-takeaway p:last-child{margin:0;}
.gkx-emph{
border-left:4px solid var(--gkx-accent); padding:4px 0 4px 20px; margin:24px 0 8px;
font-size:19px; line-height:1.6; font-weight:600; color:var(--gkx-ink);
}
.gkx-cta{
background:var(--gkx-ink); border-radius:var(--gkx-r); padding:26px 30px; margin:32px 0;
}
.gkx-cta-h{font-size:20px; font-weight:700; color:#fff; margin:0 0 9px; line-height:1.35;}
.gkx-cta p{color:#cfd6e2; font-size:16px; line-height:1.65; margin:0 0 18px;}
.gkx-blog .gkx-btn{
display:inline-block; background:var(--gkx-accent) !important; color:#fff !important;
font-size:14.5px; font-weight:700; padding:11px 24px; border-radius:7px;
text-decoration:none !important; transition:background .15s ease;
}
.gkx-blog .gkx-btn:hover,.gkx-blog .gkx-btn:focus-visible,.gkx-blog .gkx-btn:visited{
background:var(--gkx-dark) !important; color:#fff !important; text-decoration:none !important;
}
@media (max-width:900px){
.gkx-blog h2{font-size:26px; margin-top:44px;}
.gkx-cards-3{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media (max-width:820px){
.gkx-dgrid-3,.gkx-plans,.gkx-stats-grid{grid-template-columns:1fr;}
.gkx-stat{display:grid; grid-template-columns:34px minmax(0,1fr); column-gap:14px; align-items:start;}
}
@media (max-width:700px){
.gkx-cards,.gkx-cards-3,.gkx-dgrid{grid-template-columns:1fr;}
}
@media (max-width:640px){
.gkx-table-hint{display:block;}
.gkx-blog{font-size:16.5px;}
.gkx-blog h2{font-size:23px;}
.gkx-blog h3,.gkx-step h2,.gkx-step h3{font-size:18.5px;}
.gkx-lede{font-size:17px; padding:17px 18px;}
.gkx-toc{padding:18px 18px 6px;}
.gkx-chips,.gkx-qs,.gkx-ck{grid-template-columns:1fr;}
.gkx-op{flex-direction:column; gap:12px; padding:18px;}
.gkx-cta{padding:22px 20px;}
.gkx-emph{font-size:17.5px;}
.gkx-quote{font-size:17px; padding:17px 18px;}
.gkx-takeaway{padding:18px 18px;}
.gkx-steps{padding-left:22px;}
.gkx-step::before{left:-22px;}
.gkx-stats{padding:16px 16px 18px;}
.gkx-flow{flex-direction:column; align-items:flex-start;}
.gkx-flow-a{transform:rotate(90deg); margin-left:16px;}
}
@media (prefers-reduced-motion:reduce){
.gkx-blog *{transition:none !important;}
.gkx-card:hover{transform:none;}
}