/* ACE website components (specs/website.spec.md 4.3), used by the pages website-src/build.py generates.
   Brand: blue #143980, red #cc060d, dark #1f1f1f, font Outfit (loaded in each page head). */
:root { --ace-blue: #143980; --ace-red: #cc060d; --ace-dark: #1f1f1f; --ace-line: #e4e7ee; --ace-soft: #f4f6fa; }

/* rich text generated from content JSON */
.ace-rich p, .ace-rich li { font-size: 1.125rem; line-height: 1.6; color: var(--ace-dark); }
.ace-rich p { margin: 0 0 1rem; }
.ace-rich ul, .ace-rich ol { margin: 0 0 1rem; padding-left: 1.4rem; }
.ace-rich li { margin-bottom: .45rem; }
.ace-rich h3 { font-size: 1.3rem; line-height: 1.3; margin: 1.4rem 0 .6rem; color: var(--ace-dark); }
.ace-rich a, .ace-faq a, .ace-areas a { color: var(--ace-blue); text-decoration: underline; text-underline-offset: 2px; }
.ace-section { margin-bottom: 2.5rem; }
.ace-section h2 { margin-bottom: 1rem; }

/* price table */
.ace-prices { border: 1px solid var(--ace-line); border-radius: 10px; overflow: hidden; margin: 0 0 2.5rem; background: #fff; }
.ace-prices h2 { margin: 0; padding: 1.25rem 1.25rem .25rem; }
.ace-prices .ace-prices-intro { padding: 0 1.25rem; margin: .5rem 0 1rem; font-size: 1.05rem; line-height: 1.55; }
.ace-prices table { width: 100%; border-collapse: collapse; font-size: 1rem; }
.ace-prices th, .ace-prices td { text-align: left; padding: .8rem 1.25rem; border-top: 1px solid var(--ace-line); vertical-align: top; }
.ace-prices th { background: var(--ace-soft); font-weight: 600; font-size: .9rem; text-transform: uppercase; letter-spacing: .03em; color: #4a5263; }
.ace-prices td.ace-num { font-variant-numeric: tabular-nums; white-space: nowrap; }
.ace-prices td.ace-typical { font-weight: 700; color: var(--ace-blue); }
.ace-prices .ace-prices-foot { padding: .9rem 1.25rem 1.1rem; font-size: .9rem; color: #5b6475; border-top: 1px solid var(--ace-line); margin: 0; }
@media (max-width: 600px) {
  .ace-prices th:nth-child(4), .ace-prices td:nth-child(4) { display: none; }
  .ace-prices th, .ace-prices td { padding: .7rem .8rem; }
}

/* photo inside the content column */
.ace-figure { margin: 0 0 2.5rem; }
.ace-figure img { width: 100%; height: auto; border-radius: 10px; display: block; aspect-ratio: 3 / 2; object-fit: cover; }
.ace-figure figcaption { font-size: .9rem; color: #5b6475; margin-top: .5rem; }

/* FAQ */
.ace-faq { margin: 0 0 2.5rem; }
.ace-faq h2 { margin-bottom: 1rem; }
.ace-faq details { border: 1px solid var(--ace-line); border-radius: 8px; margin-bottom: .6rem; background: #fff; }
.ace-faq summary { cursor: pointer; padding: 1rem 1.1rem; font-weight: 600; font-size: 1.08rem; list-style: none; position: relative; padding-right: 2.6rem; }
.ace-faq summary::-webkit-details-marker { display: none; }
.ace-faq summary::after { content: "+"; position: absolute; right: 1.1rem; top: .85rem; font-size: 1.4rem; color: var(--ace-red); }
.ace-faq details[open] summary::after { content: "\2212"; }
.ace-faq details p { margin: 0; padding: 0 1.1rem 1.1rem; font-size: 1.05rem; line-height: 1.6; }

/* stats (town pages, projects) */
.ace-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 1rem; margin: 0 0 2.5rem; }
.ace-stat { background: var(--ace-soft); border-radius: 10px; padding: 1.1rem 1.2rem; }
.ace-stat b { display: block; font-size: 1.9rem; line-height: 1.1; color: var(--ace-blue); }
.ace-stat span { display: block; font-size: .95rem; color: #4a5263; margin-top: .3rem; }

/* service areas line, chips */
.ace-areas { font-size: 1.05rem; line-height: 1.7; margin: 0 0 2rem; }
.ace-chips { display: flex; flex-wrap: wrap; gap: .5rem; margin: 0 0 1.5rem; padding: 0; list-style: none; }
.ace-chips li { background: var(--ace-soft); border-radius: 999px; padding: .35rem .8rem; font-size: .95rem; }

/* projects list */
.ace-projects { margin: 0 0 2.5rem; }
.ace-projects table { width: 100%; border-collapse: collapse; font-size: 1rem; }
.ace-projects th, .ace-projects td { text-align: left; padding: .6rem .7rem; border-bottom: 1px solid var(--ace-line); }
.ace-projects th { font-size: .85rem; text-transform: uppercase; letter-spacing: .03em; color: #4a5263; }
.ace-projects td.ace-gc { color: var(--ace-blue); font-weight: 600; }
.ace-projects details { margin: 0 0 .8rem; border: 1px solid var(--ace-line); border-radius: 8px; background: #fff; }
.ace-projects details summary { cursor: pointer; padding: .9rem 1rem; font-weight: 700; font-size: 1.1rem; }
.ace-projects details > div { padding: 0 1rem 1rem; overflow-x: auto; }
@media (max-width: 600px) { .ace-projects th:nth-child(3), .ace-projects td:nth-child(3) { display: none; } }

/* related services */
.ace-related { padding: 1rem 5% 4rem; }
.ace-related .ace-related-inner { max-width: 80rem; margin: 0 auto; }
.ace-related h2 { margin-bottom: 1.5rem; }
.ace-related-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 1.25rem; }
.ace-card { display: block; border: 1px solid var(--ace-line); border-radius: 12px; overflow: hidden; background: #fff; color: var(--ace-dark); text-decoration: none; transition: box-shadow .15s; }
.ace-card:hover { box-shadow: 0 6px 20px rgba(20, 57, 128, .12); }
.ace-card img { width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: cover; display: block; }
.ace-card b { display: block; padding: .9rem 1rem .2rem; font-size: 1.1rem; }
.ace-card span { display: block; padding: 0 1rem 1rem; font-size: .95rem; color: #4a5263; line-height: 1.45; }

/* blog cards */
.ace-blog-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 1.5rem; }
.ace-blog-meta { font-size: .9rem; color: #5b6475; padding: 0 1rem; }

/* buttons added by the generator next to Webflow buttons */
.ace-btn-row { display: flex; flex-wrap: wrap; gap: .75rem; }

/* footer newsletter form (Mailchimp's own stylesheet is no longer loaded, for phone speed) */
#mc_embed_signup .indicates-required { font-size: .8rem; margin-bottom: .35rem; }
#mc_embed_signup .mc-field-group label { display: block; font-size: .9rem; margin-bottom: .35rem; }
#mc_embed_signup input[type="email"] { display: block; width: 100%; max-width: 22rem; min-height: 44px; padding: .5rem .75rem; border: 1px solid #b9c0cc; border-radius: 6px; background: #fff; font: inherit; color: var(--ace-dark); }
#mc_embed_signup input[type="email"]:focus { outline: 2px solid #143980; outline-offset: 1px; }
#mc_embed_signup .clear input[type="submit"] { margin-top: .6rem; min-height: 44px; }
