/* Opt-in town composition. Previously approved pages keep their own CSS. */
.town-page section { padding-block: 24px; }
.town-page p { margin: 0 0 12px; }
.town-page .section-title { font-size: 32px; margin-bottom: 16px; }
.town-page h3 { font: 600 28px/1.3 var(--font-heading); color: var(--color-dark-blue); text-align: center; margin: 0 0 16px; }
.town-page a:not(.button) { color: var(--color-primary); text-underline-offset: 3px; }
.town-page a:not(.button):hover { color: var(--color-dark-blue); }
.town-hero { background: var(--color-dark-blue); color: var(--color-white); text-align: center; }
.town-hero h1 { margin: 0; font: 600 32px/1.3 var(--font-heading); }
.town-intro, .town-local, .town-showcase { background: var(--color-pale-blue); }
.town-inclusions, .town-benefits, .town-process, .town-faq, .town-nearby { background: var(--color-cream); }
.town-two-columns { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 32px; }
.town-two-columns > * { min-width: 0; }
.town-inclusions .responsive-image { border-radius: 8px; }
.town-inclusions .service-feature-list li { margin-block: 0; }
.town-benefits .content-grid { padding-top: 8px; }
.town-page .content-card h3 { font-size: 28px; }
.town-price-group { min-width: 0; padding: 16px; border: 2px solid var(--color-primary); border-radius: 8px; background: var(--color-white); }
.town-price-group h3 { font: 500 22px/1.3 var(--font-body); }
.town-price-group dl { margin: 0; }
.town-price-row { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 2fr); gap: 12px; padding-block: 8px; color: var(--color-dark-blue); }
.town-price-row dd { margin: 0; text-align: right; font-weight: 700; }
.town-price-notes { padding-top: 24px; text-align: center; }
.town-process-steps { list-style: none; padding: 0; margin: 0; }
.town-process-steps li { padding-inline: 16px; border-left: 3px solid var(--color-primary); }
.town-process-steps .town-step-title { color: var(--color-dark-blue); text-align: center; margin-bottom: 16px; }
.town-process-steps .town-step-title, .town-process-steps h3, .town-demo h3 { font: 700 22px/1.3 var(--font-body); }
.town-demo { margin-top: 24px; align-items: center; }
.town-demo-actions, .town-portfolio-link { text-align: center; }
.town-demo-actions { margin-block: 24px 12px; }
.town-faq .content-disclosure { margin-bottom: 10px; border-color: var(--color-primary); border-radius: 0; }
.town-faq .content-disclosure[open] summary { background: #444; color: white; }
.town-form-panel { max-width: 700px; padding: 16px; background: var(--color-white); border: 1px solid var(--color-pale-blue); border-radius: 8px; box-shadow: 0 0 10px rgb(0 0 0 / .2); }
.town-enquiry { background: var(--color-pale-blue); }
.town-enquiry .section-title { font: 600 30px/1.3 var(--font-body); }
.town-nearby ul { list-style: none; padding: 0; margin: 0 auto; width: fit-content; max-width: 100%; text-align: left; }
.town-nearby a { display: inline-block; min-height: 44px; }
.town-demo--image-action-card { grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); align-items: start; }
.town-demo--image-action-card .town-demo-card { padding: 16px; border-radius: 8px; background: var(--color-white); }
@media (max-width: 767px) {
  .town-demo--image-action-card { grid-template-columns: minmax(0, 1fr); }
  .town-two-columns { grid-template-columns: minmax(0, 1fr); }
  .town-page .section-title { font-size: 28px; }
  .town-page .content-card h3 { font-size: 24px; }
  .town-enquiry { padding-inline: 24px; }
}
