/* Pricing uses the shared palette and typography without changing other pages. */
.pricing-page .hero-terms { margin: 0 0 24px; max-width: 620px; font-size: 12px; color: #e2dafb; }
.pricing-page .pricing-section-nav { margin-top: 0; }
.pricing-page #licence-plans { padding: 64px 0; }
.plans-heading { display: flex; justify-content: space-between; align-items: end; gap: 28px; margin-bottom: 32px; }
.plans-heading h2 { font-size: clamp(1.8rem, 3vw, 2.5rem); max-width: 600px; margin: 10px 0 0; }
.plans-heading > p { font-size: 13px; line-height: 1.7; text-align: right; flex-shrink: 0; }
.pricing-page .price { padding: 32px 28px 26px; box-shadow: 0 8px 28px -20px #2b0e8133; }
.pricing-page .price-tag { position: static; display: flex; align-items: center; align-self: flex-start; min-height: 30px; margin-bottom: 15px; padding: 5px 12px; }
.pricing-page .price:not(.popular) { padding-top: 77px; }
.pricing-page .price h3 { font-size: 27px; }
.pricing-page .price .p-desc { font-size: 14px; min-height: 44px; }
.pricing-page .price .amount { margin-top: 22px; }
.pricing-page .price .num { font-size: clamp(2.5rem, 4vw, 3.25rem); letter-spacing: -.05em; }
.pricing-page .price .price-currency { display: block; margin-bottom: 10px; font-size: 14px; letter-spacing: 0; }
.pricing-page .price .p-sub { padding-bottom: 22px; border-bottom: 1px solid var(--hairline); font-weight: 600; margin-bottom: 22px; }
.pricing-page .price li { font-size: 14px; line-height: 1.55; }
.pricing-page .price .btn { min-height: 50px; }
.pricing-page .price .p-trial { font-size: 12px; margin-top: 15px; }
.pricing-terms { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; padding: 26px 8px 0; }
.pricing-terms strong { font-size: 13px; color: var(--ink); }
.pricing-terms p { font-size: 13px; line-height: 1.6; margin-top: 5px; }
.pricing-page .comparison-section { padding: 64px 0; }
.pricing-page .comparison-intro { display: block; margin-bottom: 28px; }
.pricing-page .comparison-intro h2 { font-size: clamp(2rem, 3.5vw, 2.8rem); }
.pricing-page .comparison-intro .lead { font-size: 16px; max-width: 620px; }
.pricing-page .comparison-table { min-width: 960px !important; }
.pricing-page .comparison-table thead th { text-transform: none; letter-spacing: normal; }
.pricing-page .comparison-table-brand { font-size: 15px; }
.pricing-page .comparison-table-plan { font-size: 12px; letter-spacing: normal; font-weight: 400; }
.pricing-page .comparison-value { display: block; padding: 0; background: transparent; border-radius: 0; font-size: 14px; line-height: 1.5; }
.pricing-page .comparison-table .clearwork-column .comparison-value { background: transparent; }
.pricing-page .comparison-table th, .pricing-page .comparison-table td { padding: 20px 16px; }
.pricing-page summary:focus-visible { outline: 3px solid var(--purple-400); outline-offset: 4px; }
.pricing-page #pricing-faq { padding: 64px 0; }
.pricing-page #pricing-faq .section-head { margin-bottom: 28px; }
.pricing-page .cta { padding: 64px 0; }
.pricing-page .cta .lead { max-width: 660px; }
@media (max-width: 980px) {
  .pricing-page .prices { grid-template-columns: 1fr; max-width: 580px; margin-inline: auto; }
  .pricing-page .price:not(.popular) { padding-top: 32px; }
  .pricing-page .price .p-desc { min-height: 0; }
  .plans-heading { align-items: start; flex-direction: column; gap: 12px; }
  .plans-heading > p { text-align: left; }
  .pricing-terms { gap: 18px; }
}
@media (max-width: 600px) {
  .pricing-page #licence-plans, .pricing-page .comparison-section, .pricing-page #pricing-faq { padding: 40px 0; }
  .pricing-terms { grid-template-columns: 1fr; padding-inline: 4px; }
  .pricing-page .comparison-table th:first-child { position: sticky; left: 0; z-index: 1; box-shadow: 2px 0 0 var(--grey-100); }
}


/* Contain long content and keep actions consistent across breakpoints. */
.pricing-page main .container > * { min-width: 0; }
.pricing-page main .btn { white-space: normal; text-align: center; line-height: 1.4; min-height: 48px; }
.pricing-page .faq summary { line-height: 1.45; }
.pricing-page .faq .faq-body { overflow-wrap: anywhere; }
.pricing-page .faq-hosting-note { max-width: 860px; margin: 24px auto 0; font-size: 14px; line-height: 1.65; }
.pricing-page .faq-hosting-note a { color: var(--purple-700); text-decoration: underline; text-underline-offset: 3px; }

@media (max-width: 600px) {
  .pricing-page .price { padding: 26px 22px; }
  .pricing-page .price:not(.popular) { padding-top: 26px; }
  .pricing-page .comparison-table thead th:first-child { width: 132px; }
}

.pricing-page .faq summary::after { width: 10px; height: 10px; color: var(--purple-700); opacity: 1; }

/* Visible table grid, scoped to Pricing. */
.pricing-page .table-scroll { border: 1px solid var(--grey-200); }
.pricing-page .table-scroll .doc-table { border: 0; border-radius: 0; }
.pricing-page .doc-table th, .pricing-page .doc-table td { border-right: 1px solid var(--grey-200); border-bottom: 1px solid var(--grey-200); border-left: 0; }
.pricing-page .doc-table tr > :last-child { border-right: 0; }
.pricing-page .doc-table tbody tr:last-child > * { border-bottom: 0; }

/* Quiet header tint and open, readable cost sections. */
.pricing-page .doc-table thead th { background: var(--purple-50); color: var(--ink); font-weight: 600; border-color: var(--grey-200); }
.pricing-page .comparison-table thead .clearwork-column { background: var(--purple-100); color: var(--purple-900); border-color: var(--grey-200); }
.pricing-page .comparison-table thead .comparison-table-plan { color: var(--grey-700); }
.pricing-page #buying-guide { padding: 64px 0; }
.hosting-budget .section-head { max-width: 760px; margin-bottom: 28px; }
.hosting-budget .lead { font-size: 17px; }
.hosting-budget .doc-table { min-width: 680px; }
.hosting-budget caption { padding: 14px 18px; text-align: left; font-size: 13px; color: var(--grey-700); background: white; border-bottom: 1px solid var(--grey-200); }
.pricing-page .budget-note { font-size: 13px; line-height: 1.65; margin: 12px 0; max-width: 100ch; }
.budget-note a, .budget-links a { color: var(--purple-700); text-decoration: underline; text-underline-offset: 3px; }
.first-year-budget { margin-top: 32px; padding-top: 32px; border-top: 1px solid var(--grey-200); }
.first-year-budget h3 { margin-bottom: 10px; }
.budget-totals { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; margin: 24px 0 18px; }
.budget-totals > div { padding: 22px; border: 1px solid var(--grey-200); border-radius: 16px; background: white; }
.budget-totals span { display: block; color: var(--grey-700); font-size: 14px; }
.budget-totals strong { display: block; font-family: var(--font-display); font-size: 32px; color: var(--ink); margin-top: 8px; }
.budget-links { display: flex; flex-wrap: wrap; gap: 12px 28px; margin-top: 24px; font-size: 14px; }
@media (max-width: 600px) {
  .pricing-page #buying-guide { padding: 40px 0; }
  .budget-totals { grid-template-columns: 1fr; gap: 12px; }
}

.pricing-page .comparison-table caption { background: var(--white); color: var(--grey-700); border-bottom: 1px solid var(--grey-200); padding: 14px 18px; line-height: 1.6; }

/* Managed service: one panel with aligned prices and a shared action. */
.hosting-offer { margin-top: 40px; padding: 32px; border: 1px solid var(--grey-200); border-radius: 24px; background: var(--white); }
.hosting-offer-heading { max-width: 720px; }
.hosting-offer-heading .eyebrow { margin-bottom: 12px; }
.hosting-offer-heading h3 { font-size: clamp(24px, 3vw, 30px); margin-bottom: 10px; }
.hosting-offer-heading p { font-size: 15px; line-height: 1.65; }
/* Four plans: 4 across, 2 x 2 on tablets, 1 per row on phones - never a
   count that leaves one plan alone on a row. Dividers come from each plan's
   position in that layout (nth-child), not first/last child, so no width can
   draw a stray line or indent. Each plan's four rows (name, size, price,
   billing) sit on a shared subgrid, so prices line up across a row even when
   a description wraps. */
.hosting-offer-plans {
  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr));
  margin: 28px 0; padding: 24px 0; border-block: 1px solid var(--grey-100);
}
.hosting-offer-plans > div {
  display: grid; grid-row: span 5; grid-template-rows: subgrid; align-content: start;
  min-width: 0; padding: 0 24px; border-left: 1px solid var(--grey-100);
}
.hosting-offer-plans > div:nth-child(4n + 1) { padding-left: 0; border-left: 0; }
.hosting-offer-plans > div:nth-child(4n) { padding-right: 0; }
.hosting-offer-plans h4 { font-size: 18px; font-weight: 600; margin: 0 0 6px; }
.hosting-offer-plans p { font-size: 14px; line-height: 1.5; }
.hosting-offer-price { display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px; font: 500 34px/1.2 var(--font-display); color: var(--ink); margin: 20px 0 8px; }
.hosting-offer-from { font: 500 14px/1 var(--font-body, inherit); color: var(--grey-500); }
.hosting-offer-plans .btn { margin-top: 16px; align-self: end; }
.hosting-offer-price span { font: 400 14px/1.5 var(--font-sans); color: var(--grey-700); }
.hosting-offer-plans .hosting-offer-billing { font-size: 12px; color: var(--grey-700); }
.hosting-offer-footer { display: flex; align-items: center; justify-content: space-between; gap: 24px; }
.hosting-offer-footer p { max-width: 650px; font-size: 13px; line-height: 1.65; }
.hosting-offer-footer .btn { flex-shrink: 0; }
@media (max-width: 980px) {
  .hosting-offer-footer { align-items: flex-start; flex-direction: column; }
}
/* Tablet: 2 x 2 with one clean cross of dividers. Ranges, not overlapping
   max-widths, so these nth-child rules never leak into the phone layout. */
@media (min-width: 601px) and (max-width: 980px) {
  .hosting-offer-plans { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .hosting-offer-plans > div:nth-child(odd) { padding: 0 24px 0 0; border-left: 0; }
  .hosting-offer-plans > div:nth-child(even) { padding: 0 0 0 24px; border-left: 1px solid var(--grey-100); }
  .hosting-offer-plans > div:nth-child(-n + 2) { padding-bottom: 22px; }
  .hosting-offer-plans > div:nth-child(n + 3) { padding-top: 22px; border-top: 1px solid var(--grey-100); }
}
@media (max-width: 600px) {
  .hosting-offer { padding: 24px; }
  .hosting-offer-plans { grid-template-columns: minmax(0, 1fr); padding: 0; }
  .hosting-offer-plans > div,
  .hosting-offer-plans > div:nth-child(n) { padding: 22px 0; border-left: 0; }
  .hosting-offer-plans > div + div { border-top: 1px solid var(--grey-100); }
  .hosting-offer-price { margin-top: 12px; }
  .hosting-offer-footer .btn { width: 100%; }
}

/* Hosted plans: the same cards as the one-time licences, so a buyer compares
   like with like. Heading mirrors .plans-heading; the footer is one paragraph. */
.pricing-page #cloud-plans { padding: 72px 0; }
.hosted-plans-footer { max-width: 820px; margin: 28px auto 0; font-size: 13px; line-height: 1.7; color: var(--grey-700); text-align: center; }

/* Custom cloud estimator inside the custom-cloud banner. */
.ccc { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr); gap: 32px; margin-top: 24px; padding-top: 24px; border-top: 1px solid var(--grey-100); }
.ccc-inputs { display: grid; gap: 18px; align-content: start; }
.ccc-inputs label { display: block; font-size: 14px; font-weight: 600; }
.ccc-inputs input, .ccc-inputs select { display: block; width: 100%; margin-top: 8px; padding: 12px; border: 1px solid var(--grey-300); border-radius: 8px; background: var(--white); color: var(--ink); font: inherit; font-weight: 400; }
.ccc-inputs :is(input, select):focus-visible { outline: 3px solid var(--purple-300); outline-offset: 2px; }
.ccc-output { padding: 24px; border-radius: var(--radius); background: var(--purple-50, #f4f1fd); }
.ccc-label { margin: 0 0 4px; font-size: 12px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--purple-700); }
.ccc-price { margin: 0 0 14px; font: 500 34px/1.2 var(--font-display); color: var(--ink); }
.ccc-per { font: 400 14px/1.5 var(--font-sans, inherit); color: var(--grey-700); }
.ccc-facts { list-style: none; margin: 0 0 18px; padding: 0; display: grid; gap: 6px; font-size: 14px; line-height: 1.5; color: var(--grey-700); }
.ccc-note { margin: 14px 0 0; font-size: 12px; line-height: 1.6; color: var(--grey-500); }
@media (max-width: 760px) { .ccc { grid-template-columns: minmax(0, 1fr); gap: 20px; } }
