A subscription in Salesforce starts out one way but doesn’t always stay the same. The initial sale defines product, price, quantity, and period, but that’s just the beginning of the commercial story; there are upgrades, quantity changes, and usage affecting billing and customers who renew or cancel. All those events have an impact on order management, billing schedule, invoice, payment, and accounting.
That makesSalesforce subscription management a question of ownership, not just functionality. All subscriptions are managed using the Salesforce Revenue Cloud and Revenue Management. For even deeper billing capabilities, processes related to taxation, payment, accounting, or others may be covered. Thus, there can be differences in the approach to architecture. The purpose is to know when something is done natively by Salesforce and when something else starts working.
What’s inside
Decide Who Owns Which Truth
What Runs Natively
Where Native Ends
Legal Entities That Create the Most Headaches
Salesforce Billing vs Zuora
Conclusion
Decide Who Owns Which Truth
Ask two questions first: What did the customer buy, and at what price and period? And what does your ledger say you owed? The first is the commercial truth. The second is financial truth. Salesforce should answer the first. Your ERP answers the second.
Billing is the handoff, and most arguments happen there.
Which Salesforce you run matters too. Salesforce Billing, the older managed package, uses its own billing data model, separate from the newer Revenue Cloud architecture. Revenue Cloud Advanced, now marketed as Agentforce Revenue Management, is the native replacement and covers quoting, billing, revenue recognition, and order management. Moving forward, it requires a migration plan.
What Runs Natively
Follow one deal through Salesforce subscription management and the native boundary gets easier to see.
You start with the rep who quotes a product with a selling model tied to it. Term-defined means that it has a set expiry date. Evergreen means that it continues until the cancellation of the customer. When the order is activated, Dynamic Revenue Orchestration triggers the fulfillment process and Salesforce creates a billing schedule for each order item depending on the sales and billing policies.
Then the invoice scheduler does its job. On each run, it picks up everything due in that window, sorts it by account and legal entity, and creates the invoices. Payments get applied against those invoices. Refunds and credit memos are handled the same way.
The subscription itself lives as an asset with history. Amendments, renewals, and cancellations apply to that asset. A mid-term upgrade is an amendment order made to it; therefore, the history is preserved, and ARR, MRR, and churn statistics are calculated along the same path. When the accounting period ends, the data processing engine runs a job for closing the period for each legal entity.
Where Native Ends
The subscription billing Salesforce handles natively stops where money moves, and tax law starts. This table shows the five places teams most often need something outside the platform, and what to put there.
NeedWhat Salesforce handlesWhat you add
TaxTax policy and treatment per legal entityAvalara or Vertex for the calculation
PaymentsApplying payments, refunds, credit memosA gateway to collect cards and bank debits
LedgerGL account mapping, entity accounting periodsERP for close, consolidation, filings
UsageConsumption management and usage billingA metering pipeline that sends aggregated usage
DunningVaries by editionGateway retries or a collections tool
Swipe to see more →
Data flow is not unidirectional all the time. Orders and invoices can be sent from Salesforce to ERP, while financial information is sent from ERP to Salesforce. In Salesforce financial services, payments and ledger postings can also flow back into Salesforce, ensuring accurate financial records and better visibility across business operations.
Give every field one owner, or two systems will overwrite each other and finance will spend close week finding out why.
Legal Entities That Create the Most Headaches
If we had to pick one setup choice that causes the most rework, it is the legal entity. This is like an admin object with a name and an address. It actually selects the billing treatment, the tax treatment, and the accounting period for everything underneath it.
Selecting the wrong tax jurisdiction for an entity will mean that all invoices within that entity will have the wrong tax rate. Skip the entity on an order product and the system falls back to a default treatment, which may be wrong for that sale. A tax policy is required even when you have no tax engine, so nobody can skip that step.
The entity also changes how invoices get built. The invoice scheduler groups by account and legal entity, so two order products that differ only by entity land on separate invoices. Customers notice that. So does accounts receivable.
The fix is dull and effective. Decide the entity model before data load, and stamp the entity with a Flow keyed on billing country, so nobody fills in that field by hand. Two smaller traps belong here. An amendment order that is never contracted can leave future invoicing wrong. And an order activated after the scheduler runs waits for the next run.
Salesforce Billing vs Zuora
The architectural difference becomes clearer once billing moves outside Salesforce. Zuora has its own subscription model that allows synchronization of accounts, products, orders, etc., with Salesforce. The problem is that this link is created in exchange for consistent data in the implementation.
A Salesforce-centric billing system retains more of the business history within a single data model. It will be able to keep the quote, order, asset, and invoice together inside Salesforce without having to migrate them from one subscription system to another.
Zuora has real strengths. Reviewers rate its dunning, retry logic, reminders, and global payment handling highly. If collections are your biggest headache, or subscriptions also start outside your sales team, take it seriously. If the majority of business goes through reps, the native approach wins. However, implementing effective salesforce integration services requires careful planning, as the synchronization process is not free of charge. Every account, product, and amendment mapped between two systems can go off course, requiring ongoing monitoring and reconciliation.
Here is a quick test. Pick any invoice line and ask finance to trace it back to the quote line, the asset, and the amendment. If they can do that without switching systems, your Salesforce recurring revenue numbers will hold up in an audit.
Conclusion
If Salesforce already holds the customer’s commercial record, build on it. Add a tax engine, a payment gateway, and your ERP where money and tax rules come in, each with a named owner. Before you approve any Salesforce subscription management design, sketch quote to cash on a single page. Mark every arrow with the system that owns the data and who fixes it when a sync fails.
.gkaa-blog{
--gkaa-accent:#1a73e8; --gkaa-dark:#0f4fa8; --gkaa-light:#e8f0fe; --gkaa-hl:#f3f7ff;
--gkaa-line:#e4e9f2; --gkaa-ink:#101828; --gkaa-body:#3f4a5a; --gkaa-mute:#697586;
--gkaa-ok:#0f7a4a; --gkaa-ok-bg:#eefaf3; --gkaa-ok-line:#c3ead6;
--gkaa-warn:#a35c00; --gkaa-warn-bg:#fff8ec; --gkaa-warn-line:#f5dfb8;
--gkaa-alt:#6537c9; --gkaa-alt-bg:#f5f2ff; --gkaa-alt-line:#ddd4f7;
--gkaa-neg:#b42318; --gkaa-neg-bg:#fdf1f1; --gkaa-neg-line:#f6d5d2;
--gkaa-r:10px;
width:100%; font-size:17px; line-height:1.75; color:var(--gkaa-body);
-webkit-font-smoothing:antialiased;
}
.gkaa-blog *,.gkaa-blog *::before,.gkaa-blog *::after{box-sizing:border-box;}
.gkaa-blog p{margin:0 0 20px;}
.gkaa-blog h2{font-size:29px; line-height:1.3; letter-spacing:-.015em; margin:52px 0 18px; color:var(--gkaa-ink); font-weight:700; scroll-margin-top:90px;}
.gkaa-blog h3{font-size:20px; line-height:1.38; letter-spacing:-.01em; margin:32px 0 10px; color:var(--gkaa-ink); font-weight:700; scroll-margin-top:90px;}
.gkaa-blog h2 + p,.gkaa-blog h3 + p{margin-top:0;}
.gkaa-blog img{max-width:100%; height:auto; display:block; margin:0 auto; border-radius:var(--gkaa-r);}
.gkaa-blog hr{border:0; border-top:1px solid var(--gkaa-line); margin:44px 0;}
.gkaa-blog ul,.gkaa-blog ol{margin:0 0 22px; padding:0; list-style:none;}
.gkaa-blog svg{fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round;}
.gkaa-blog code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; font-size:.88em; color:var(--gkaa-ink); background:#f5f7fa; border:1px solid var(--gkaa-line); border-radius:5px; padding:1px 6px; overflow-wrap:anywhere;}
.gkaa-blog a{
color:var(--gkaa-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;
}
.gkaa-blog a:hover,.gkaa-blog a:focus-visible{color:var(--gkaa-dark); text-decoration-thickness:2px;}
.gkaa-blog a:visited{color:var(--gkaa-accent);}
.gkaa-toc-list a,.gkaa-blog .gkaa-btn{text-decoration:none !important;}
.gkaa-blog a:focus-visible{outline:2px solid var(--gkaa-accent); outline-offset:3px; border-radius:3px;}
.gkaa-kw{color:var(--gkaa-ink); font-weight:700;}
.gkaa-lede{
background:var(--gkaa-hl); border-left:4px solid var(--gkaa-accent);
border-radius:0 var(--gkaa-r) var(--gkaa-r) 0;
padding:20px 24px; margin:0 0 26px; font-size:18px; line-height:1.7; color:var(--gkaa-ink);
}
.gkaa-lede p{margin:0;}
.gkaa-toc{
border:1px solid var(--gkaa-line); border-radius:var(--gkaa-r);
background:#fff; padding:20px 24px 8px; margin:30px 0 38px;
}
.gkaa-toc-head{
font-size:11px; font-weight:700; letter-spacing:.11em; text-transform:uppercase;
color:var(--gkaa-mute); margin:0 0 14px;
}
.gkaa-toc-list{counter-reset:gkaatoc; margin:0; padding:0;}
@media (min-width:700px){.gkaa-toc-2 .gkaa-toc-list{columns:2; column-gap:34px;}}
.gkaa-toc-2 .gkaa-toc-list li{break-inside:avoid;}
.gkaa-toc-list li{counter-increment:gkaatoc; position:relative; padding:0 0 12px 34px; font-size:15.5px; line-height:1.5;}
.gkaa-toc-list li::before{
content:counter(gkaatoc,decimal-leading-zero);
position:absolute; left:0; top:1px;
font-size:11px; font-weight:700; color:var(--gkaa-accent);
background:var(--gkaa-light); border-radius:5px; padding:2px 6px; letter-spacing:.02em;
}
.gkaa-toc-list a{color:var(--gkaa-body); font-weight:600;}
.gkaa-toc-list a:hover{color:var(--gkaa-accent); text-decoration:underline !important;}
.gkaa-list li{position:relative; padding:0 0 12px 24px; line-height:1.7;}
.gkaa-list li::before{
content:""; position:absolute; left:2px; top:11px;
width:7px; height:7px; border-radius:50%; background:var(--gkaa-accent);
}
.gkaa-list strong{color:var(--gkaa-ink);}
.gkaa-chips{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; margin:22px 0 26px;}
.gkaa-chips li{
display:block; position:relative;
background:var(--gkaa-hl); border:1px solid var(--gkaa-line); border-radius:8px;
padding:12px 16px 12px 34px; font-size:15px; line-height:1.55; color:var(--gkaa-ink);
}
.gkaa-chips li::before{
content:""; position:absolute; left:15px; top:20px;
width:6px; height:6px; border-radius:50%; background:var(--gkaa-accent);
}
.gkaa-chips-ck li{padding-left:42px;}
.gkaa-chips-ck li::before{
left:14px; top:14px; width:18px; height:18px; border-radius:50%;
background:var(--gkaa-ok-bg); border:1px solid var(--gkaa-ok-line);
}
.gkaa-chips-ck li::after{
content:""; position:absolute; left:21px; top:18px; width:4px; height:8px;
border:solid var(--gkaa-ok); border-width:0 2px 2px 0; transform:rotate(45deg);
}
.gkaa-cards{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; margin:24px 0 30px;}
.gkaa-cards-3{grid-template-columns:repeat(3,minmax(0,1fr));}
.gkaa-card{
border:1px solid var(--gkaa-line); border-radius:var(--gkaa-r); background:#fff;
padding:20px 22px 6px; transition:box-shadow .18s ease, transform .18s ease;
}
.gkaa-card:hover{box-shadow:0 6px 22px rgba(16,24,40,.07); transform:translateY(-2px);}
.gkaa-card-top{display:flex; align-items:center; gap:11px; margin-bottom:10px;}
.gkaa-card-icon{
width:34px; height:34px; flex:0 0 34px; border-radius:8px;
background:var(--gkaa-light); color:var(--gkaa-accent);
display:flex; align-items:center; justify-content:center;
}
.gkaa-card-icon svg{width:19px; height:19px;}
.gkaa-card-t{font-size:16px; font-weight:700; color:var(--gkaa-ink); line-height:1.35; margin:0;}
.gkaa-card p{font-size:15.5px; line-height:1.68; margin:0 0 14px;}
.gkaa-cards-risk .gkaa-card-icon{background:var(--gkaa-neg-bg); color:var(--gkaa-neg);}
.gkaa-ops{display:grid; gap:14px; margin:24px 0 30px;}
.gkaa-op{
display:flex; gap:18px; align-items:flex-start;
border:1px solid var(--gkaa-line); border-radius:var(--gkaa-r); background:#fff;
padding:20px 22px; transition:box-shadow .18s ease, border-color .18s ease;
}
.gkaa-op:hover{box-shadow:0 6px 22px rgba(16,24,40,.07); border-color:#d3ddec;}
.gkaa-op-n{
flex:0 0 38px; width:38px; height:38px; border-radius:50%;
background:var(--gkaa-accent); color:#fff;
display:flex; align-items:center; justify-content:center;
font-size:13px; font-weight:700; letter-spacing:.02em;
}
.gkaa-op-b{min-width:0; flex:1;}
.gkaa-op-b h3{margin:1px 0 6px; font-size:17.5px;}
.gkaa-op-b p{font-size:15.5px; line-height:1.68; margin:0;}
.gkaa-op-b p + p{margin-top:12px;}
.gkaa-steps{position:relative; margin:26px 0 32px; padding-left:26px;}
.gkaa-steps::before{content:""; position:absolute; left:5px; top:8px; bottom:8px; width:2px; background:var(--gkaa-line);}
.gkaa-step{position:relative; padding:0 0 8px;}
.gkaa-step::before{
content:""; position:absolute; left:-26px; top:12px;
width:12px; height:12px; border-radius:50%;
background:#fff; border:3px solid var(--gkaa-accent);
}
.gkaa-step h2,.gkaa-step h3{
font-size:20px; line-height:1.38; margin:22px 0 8px; letter-spacing:-.005em;
}
.gkaa-step:first-child h2,.gkaa-step:first-child h3{margin-top:0;}
.gkaa-step p{font-size:16px; line-height:1.72; margin:0 0 4px;}
.gkaa-blog .gkaa-seq{counter-reset:gkaaseq; position:relative; margin:26px 0 30px; padding:0;}
.gkaa-seq::before{content:""; position:absolute; left:17px; top:20px; bottom:20px; width:2px; background:var(--gkaa-line);}
.gkaa-seq li{counter-increment:gkaaseq; position:relative; padding:4px 0 20px 56px; line-height:1.7; min-height:36px;}
.gkaa-seq li:last-child{padding-bottom:0;}
.gkaa-seq li::before{
content:counter(gkaaseq); position:absolute; left:0; top:0;
width:36px; height:36px; border-radius:50%;
background:var(--gkaa-accent); color:#fff; border:3px solid #fff; box-shadow:0 0 0 1px var(--gkaa-line);
display:flex; align-items:center; justify-content:center;
font-size:13px; font-weight:700;
}
.gkaa-seq strong{color:var(--gkaa-ink);}
.gkaa-dgrid{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; margin:24px 0 30px;}
.gkaa-dgrid-3{grid-template-columns:repeat(3,minmax(0,1fr));}
.gkaa-dcard{border:1px solid var(--gkaa-line); border-radius:var(--gkaa-r); padding:20px 22px 6px; background:#fff; border-top:3px solid var(--gkaa-accent); display:grid; grid-template-columns:34px minmax(0,1fr); column-gap:12px; align-items:center; align-content:start;}
.gkaa-dcard h3{margin:0 0 8px; font-size:17px;}
.gkaa-dcard .gkaa-card-t{margin:0 0 10px; font-size:17px;}
.gkaa-dcard p{font-size:15.5px; line-height:1.68; margin:0 0 14px;}
.gkaa-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(--gkaa-light); color:var(--gkaa-dark);
}
.gkaa-dcard .gkaa-card-icon{margin:0 0 10px;}
.gkaa-dcard p:not(.gkaa-card-t){grid-column:1 / -1;}
.gkaa-d-ok{border-top-color:var(--gkaa-ok);}
.gkaa-d-ok .gkaa-dtag,.gkaa-d-ok .gkaa-card-icon{background:var(--gkaa-ok-bg); color:var(--gkaa-ok);}
.gkaa-d-warn{border-top-color:var(--gkaa-warn);}
.gkaa-d-warn .gkaa-dtag,.gkaa-d-warn .gkaa-card-icon{background:var(--gkaa-warn-bg); color:var(--gkaa-warn);}
.gkaa-d-go{border-top-color:var(--gkaa-accent);}
.gkaa-d-go .gkaa-dtag,.gkaa-d-go .gkaa-card-icon{background:var(--gkaa-light); color:var(--gkaa-dark);}
.gkaa-d-alt{border-top-color:var(--gkaa-alt);}
.gkaa-d-alt .gkaa-dtag,.gkaa-d-alt .gkaa-card-icon{background:var(--gkaa-alt-bg); color:var(--gkaa-alt);}
.gkaa-verdict{
background:var(--gkaa-hl); border:1px solid var(--gkaa-line); border-radius:8px;
padding:13px 16px; font-size:15px; line-height:1.65; color:var(--gkaa-ink); margin:2px 0 16px;
}
.gkaa-qs{counter-reset:gkaaq; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; margin:22px 0 28px;}
.gkaa-qs li{
counter-increment:gkaaq; position:relative;
border:1px solid var(--gkaa-line); border-radius:var(--gkaa-r); background:#fff;
padding:16px 18px 14px 18px;
}
.gkaa-qs-head{
display:block; font-size:13.5px; font-weight:700; letter-spacing:.01em;
color:var(--gkaa-accent); margin-bottom:6px;
}
.gkaa-qs li p{font-size:15px; line-height:1.62; margin:0;}
.gkaa-faq{display:grid; gap:14px; margin:24px 0 10px;}
.gkaa-faq-i{border:1px solid var(--gkaa-line); border-radius:var(--gkaa-r); background:#fff; padding:20px 22px 6px;}
.gkaa-faq-i h3{margin:0 0 8px; font-size:17.5px; line-height:1.4;}
.gkaa-faq-i p{font-size:15.5px; line-height:1.68; margin:0 0 14px;}
.gkaa-table-wrap{
overflow-x:auto; -webkit-overflow-scrolling:touch;
border:1px solid var(--gkaa-line); border-radius:var(--gkaa-r); margin:24px 0 10px;
}
.gkaa-table{width:100%; border-collapse:collapse; min-width:560px; font-size:15px;}
.gkaa-table th,.gkaa-table td{padding:13px 16px; text-align:left; vertical-align:top; line-height:1.6;}
.gkaa-table thead th{
background:var(--gkaa-hl); color:var(--gkaa-dark);
font-size:11.5px; font-weight:700; letter-spacing:.07em; text-transform:uppercase;
border-bottom:1px solid var(--gkaa-line); white-space:nowrap;
}
.gkaa-table tbody td,.gkaa-table tbody th{border-top:1px solid var(--gkaa-line);}
.gkaa-table tbody tr:nth-child(even) td,.gkaa-table tbody tr:nth-child(even) th{background:#fbfcfe;}
.gkaa-table th:first-child,.gkaa-table td:first-child{
position:sticky; left:0; z-index:1;
background:#fff; font-weight:700; color:var(--gkaa-ink); font-size:14.5px;
border-right:1px solid var(--gkaa-line);
}
.gkaa-table thead th:first-child{background:var(--gkaa-hl); color:var(--gkaa-dark); font-size:11.5px;}
.gkaa-table tbody tr:nth-child(even) td:first-child,.gkaa-table tbody tr:nth-child(even) th:first-child{background:#fbfcfe;}
.gkaa-pill{
display:inline-block; font-size:12.5px; font-weight:700; letter-spacing:.01em;
border-radius:999px; padding:3px 11px; white-space:nowrap;
}
.gkaa-pill-pos{background:var(--gkaa-ok-bg); color:var(--gkaa-ok); border:1px solid var(--gkaa-ok-line);}
.gkaa-pill-mid{background:var(--gkaa-warn-bg); color:var(--gkaa-warn); border:1px solid var(--gkaa-warn-line);}
.gkaa-pill-neg{background:var(--gkaa-neg-bg); color:var(--gkaa-neg); border:1px solid var(--gkaa-neg-line);}
.gkaa-tag{
display:inline-block; font-size:13px; font-weight:600; color:var(--gkaa-body);
background:#f5f7fa; border:1px solid var(--gkaa-line); border-radius:6px; padding:3px 9px;
}
.gkaa-num{font-variant-numeric:tabular-nums; font-weight:700; color:var(--gkaa-ink); white-space:nowrap;}
.gkaa-table-hint{display:none; font-size:12.5px; color:var(--gkaa-mute); margin:0 0 30px; text-align:right;}
.gkaa-stats{border:1px solid var(--gkaa-line); border-radius:var(--gkaa-r); background:var(--gkaa-hl); padding:20px 22px 22px; margin:26px 0 30px;}
.gkaa-stats-head{display:flex; align-items:center; gap:10px; font-size:16px; font-weight:700; color:var(--gkaa-dark); margin:0 0 16px; line-height:1.35;}
.gkaa-stats-head svg{width:20px; height:20px; flex:0 0 20px;}
.gkaa-stats-grid{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px;}
.gkaa-stat{background:#fff; border:1px solid var(--gkaa-line); border-radius:8px; padding:16px 18px 6px; font-size:15.5px; line-height:1.65; color:var(--gkaa-ink);}
.gkaa-stat p{margin:0 0 12px;}
.gkaa-stat strong{color:var(--gkaa-accent); font-weight:700;}
.gkaa-stat .gkaa-card-icon{margin:2px 0 10px;}
.gkaa-plans{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; margin:24px 0 30px;}
.gkaa-plan{border:1px solid var(--gkaa-line); border-top:3px solid var(--gkaa-accent); border-radius:var(--gkaa-r); background:#fff; padding:20px 22px 8px;}
.gkaa-plan-n{font-size:12px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:var(--gkaa-dark); margin:0 0 6px;}
.gkaa-plan-p{font-size:20px; line-height:1.3; font-weight:800; letter-spacing:-.01em; color:var(--gkaa-ink); margin:0 0 16px; font-variant-numeric:tabular-nums;}
.gkaa-blog .gkaa-plan-list{margin:0 0 14px;}
.gkaa-plan-list li{position:relative; padding:0 0 10px 28px; font-size:15.5px; line-height:1.6; color:var(--gkaa-ink);}
.gkaa-plan-list li::before{
content:""; position:absolute; left:0; top:3px; width:18px; height:18px; border-radius:50%;
background:var(--gkaa-ok-bg); border:1px solid var(--gkaa-ok-line);
}
.gkaa-plan-list li::after{
content:""; position:absolute; left:7px; top:7px; width:4px; height:8px;
border:solid var(--gkaa-ok); border-width:0 2px 2px 0; transform:rotate(45deg);
}
.gkaa-blog .gkaa-ck{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; margin:22px 0 28px;}
.gkaa-ck li{
position:relative; border:1px solid var(--gkaa-line); border-radius:8px; background:#fff;
padding:14px 16px 14px 50px; font-size:15.5px; line-height:1.62;
}
.gkaa-ck li::before{
content:""; position:absolute; left:17px; top:17px; width:18px; height:18px;
border:2px solid var(--gkaa-accent); border-radius:5px; background:#fff;
}
.gkaa-ck strong{color:var(--gkaa-ink);}
.gkaa-flow{display:flex; flex-wrap:wrap; align-items:stretch; gap:8px 6px; margin:22px 0 28px;}
.gkaa-flow-i{
background:var(--gkaa-hl); border:1px solid var(--gkaa-line); border-radius:8px;
padding:9px 14px; font-size:14.5px; line-height:1.4; font-weight:600; color:var(--gkaa-ink);
display:flex; align-items:center;
}
.gkaa-flow-a{align-self:center; color:var(--gkaa-accent); font-weight:700; font-size:16px; line-height:1;}
.gkaa-callout,.gkaa-tip{
display:flex; gap:14px; align-items:flex-start;
border-radius:var(--gkaa-r); padding:17px 20px; margin:24px 0; font-size:16px; line-height:1.68;
}
.gkaa-callout{background:var(--gkaa-hl); border-left:4px solid var(--gkaa-accent); color:var(--gkaa-ink);}
.gkaa-tip{background:var(--gkaa-warn-bg); border-left:4px solid var(--gkaa-warn); color:var(--gkaa-ink);}
.gkaa-callout svg,.gkaa-tip svg{width:20px; height:20px; flex:0 0 20px; margin-top:3px;}
.gkaa-callout svg{color:var(--gkaa-accent);} .gkaa-tip svg{color:var(--gkaa-warn);}
.gkaa-callout p,.gkaa-tip p{margin:0;}
.gkaa-quote{
margin:26px 0; padding:20px 24px; border-left:4px solid var(--gkaa-accent);
background:var(--gkaa-hl); border-radius:0 var(--gkaa-r) var(--gkaa-r) 0;
font-size:18.5px; line-height:1.65; font-style:italic; color:var(--gkaa-ink);
}
.gkaa-quote p{margin:0;}
.gkaa-takeaway{
background:var(--gkaa-hl); border:1px solid var(--gkaa-line); border-radius:var(--gkaa-r);
padding:22px 26px; margin:28px 0 22px;
}
.gkaa-takeaway p{margin:0 0 14px;} .gkaa-takeaway p:last-child{margin:0;}
.gkaa-emph{
border-left:4px solid var(--gkaa-accent); padding:4px 0 4px 20px; margin:24px 0 8px;
font-size:19px; line-height:1.6; font-weight:600; color:var(--gkaa-ink);
}
.gkaa-cta{
background:var(--gkaa-ink); border-radius:var(--gkaa-r); padding:26px 30px; margin:32px 0;
}
.gkaa-cta-h{font-size:20px; font-weight:700; color:#fff; margin:0 0 9px; line-height:1.35;}
.gkaa-cta p{color:#cfd6e2; font-size:16px; line-height:1.65; margin:0 0 18px;}
.gkaa-blog .gkaa-btn{
display:inline-block; background:var(--gkaa-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;
}
.gkaa-blog .gkaa-btn:hover,.gkaa-blog .gkaa-btn:focus-visible,.gkaa-blog .gkaa-btn:visited{
background:var(--gkaa-dark) !important; color:#fff !important; text-decoration:none !important;
}
.gkaa-blog .gkaa-dcard ul{grid-column:1 / -1; margin:0 0 10px;}
.gkaa-cta p.gkaa-cta-h{color:#fff; font-size:20px; margin:0 0 9px;}
@media (max-width:900px){
.gkaa-blog h2{font-size:26px; margin-top:44px;}
.gkaa-cards-3{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media (max-width:820px){
.gkaa-dgrid-3,.gkaa-plans,.gkaa-stats-grid{grid-template-columns:1fr;}
.gkaa-stat{display:grid; grid-template-columns:34px minmax(0,1fr); column-gap:14px; align-items:start;}
}
@media (max-width:700px){
.gkaa-cards,.gkaa-cards-3,.gkaa-dgrid{grid-template-columns:1fr;}
}
@media (max-width:640px){
.gkaa-table-hint{display:block;}
.gkaa-blog{font-size:16.5px;}
.gkaa-blog h2{font-size:23px;}
.gkaa-blog h3,.gkaa-step h2,.gkaa-step h3{font-size:18.5px;}
.gkaa-lede{font-size:17px; padding:17px 18px;}
.gkaa-toc{padding:18px 18px 6px;}
.gkaa-chips,.gkaa-qs,.gkaa-ck{grid-template-columns:1fr;}
.gkaa-op{flex-direction:column; gap:12px; padding:18px;}
.gkaa-cta{padding:22px 20px;}
.gkaa-emph{font-size:17.5px;}
.gkaa-quote{font-size:17px; padding:17px 18px;}
.gkaa-takeaway{padding:18px 18px;}
.gkaa-steps{padding-left:22px;}
.gkaa-step::before{left:-22px;}
.gkaa-stats{padding:16px 16px 18px;}
.gkaa-flow{flex-direction:column; align-items:flex-start;}
.gkaa-flow-a{transform:rotate(90deg); margin-left:16px;}
}
@media (prefers-reduced-motion:reduce){
.gkaa-blog *{transition:none !important;}
.gkaa-card:hover{transform:none;}
}