/* Reusable section compositions. Variants share one category schema. */
:root {
 --tfs-color-action-primary:var(--wp--preset--color--action-primary,#318fc8);
 --tfs-color-accent:var(--wp--preset--color--accent,#318fc8);
 --cd-section-dark:#171a1d;
 --cd-section-blue:#318fc8;
 --cd-section-muted:#f2f6f9;
 --cd-section-ink:#181d21;
}
.cd-logo::before { background:var(--tfs-color-action-primary); }
.cd-featured { box-shadow:inset 0 4px var(--cd-section-blue); }
.cd-v-heading { margin-bottom:3.5rem; }
.cd-v-heading .cd-heading { font-size:clamp(2rem,3.3vw,3.3rem); max-width:25ch; letter-spacing:-.04em; }
.cd-v-heading .cd-description { max-width:65ch; }
.cd-v-heading .cd-eyebrow { color:var(--tfs-color-action-primary); }
.cd-v-services,.cd-v-reasons,.cd-v-faq,.cd-v-testimonials,.cd-v-process,.cd-v-gallery { padding-block:clamp(4rem,7vw,6.5rem); }
.cd-v-services { background:linear-gradient(to bottom,var(--cd-section-dark) 0 82%,#fff 82%); color:#fff; }
.cd-v-services .cd-v-heading .cd-description { color:#c4cdd4; }
.cd-v-services--photo_cards .cd-v-heading .cd-description { color:#5b6b76; }
.cd-v-service-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1.5rem; }
.cd-v-service-card { display:grid; grid-template-columns:minmax(0,1.7fr) minmax(0,1fr); background:#fff; color:var(--cd-section-ink); min-height:270px; box-shadow:0 16px 32px #11111114; min-width:0; }
.cd-v-service-copy { padding:clamp(1.5rem,2.5vw,2.5rem); display:flex; flex-direction:column; align-items:start; min-width:0; }
.cd-v-service-copy h3 { font-size:clamp(1.1rem,1.4vw,1.4rem); line-height:1.4; letter-spacing:-.03em; font-weight:600; }
.cd-v-service-copy p { color:#6a7279; font-size:.9rem; line-height:1.85; margin-top:.8rem; }
.cd-v-service-note { display:block; color:#687279; font-size:.7rem; margin-top:.3rem; }
.cd-v-service-icon { color:var(--cd-section-blue); margin-bottom:1rem; }
.cd-v-outline-link { border:1px solid var(--cd-section-blue); color:#217eb5; padding:.55rem 1rem; font-size:.7rem; letter-spacing:.12em; text-transform:uppercase; text-decoration:none; margin-top:1.2rem; min-height:42px; display:inline-flex; align-items:center; }
.cd-v-outline-link:hover { background:var(--cd-section-blue); color:#fff; }
.cd-v-service-photo { position:relative; overflow:hidden; background:#dfe5e8; }
.cd-v-service-photo .cd-image { position:absolute; inset:0; width:100%; height:100%; aspect-ratio:auto; object-fit:cover; object-position:65% top; background:#dfe5e8; }
.cd-v-service-card:not(:has(.cd-v-service-photo)) { grid-template-columns:1fr; }
.cd-v-services--photo_cards { background:#f2f6f9; color:var(--cd-section-ink); }
.cd-v-services--photo_cards .cd-v-service-grid { grid-template-columns:repeat(4,minmax(0,1fr)); }
.cd-v-services--photo_cards .cd-v-service-card { display:flex; flex-direction:column; }
.cd-v-services--photo_cards .cd-v-service-photo { order:-1; min-height:0; height:220px; }
.cd-v-services--photo_cards .cd-v-service-photo .cd-image { object-position:center top; }
.cd-v-services--photo_cards .cd-v-service-copy { padding:1.5rem; flex:1; }
.cd-v-reasons { background:#fff; color:var(--cd-section-ink); }
.cd-v-reasons--icon_grid .cd-v-heading { text-align:center; margin-inline:auto; }
.cd-v-reasons--icon_grid .cd-v-heading .cd-heading,.cd-v-reasons--icon_grid .cd-description { margin-inline:auto; }
.cd-v-reasons--icon_grid .cd-eyebrow { justify-content:center; }
.cd-v-reasons--icon_grid .cd-eyebrow::after { content:""; width:1.5rem; height:2px; background:currentColor; }
.cd-v-reason-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:0 3rem; }
.cd-v-reason { display:flex; gap:1.25rem; padding:2.75rem 0; min-width:0; }
.cd-v-reason:nth-child(n+4) { border-top:1px solid #dce3e7; }
.cd-v-reason-icon { color:var(--cd-section-blue); font-size:1.75rem; width:2rem; flex-shrink:0; line-height:1.2; }
.cd-v-reason h3 { font-size:1rem; font-weight:600; line-height:1.4; }
.cd-v-reason p { color:#7b838a; font-size:.9rem; line-height:1.9; margin-top:.7rem; }
.cd-v-reasons--photo_reasons>.cd-container { display:grid; grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr); gap:4rem; align-items:center; }
.cd-v-reasons--photo_reasons .cd-v-reason-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 2rem; }
.cd-v-reasons--photo_reasons .cd-v-reason { padding:1.4rem 0; }
.cd-v-reasons--photo_reasons .cd-v-reason:nth-child(n+3) { border-top:1px solid #dce3e7; }
.cd-v-reasons-photo .cd-image { aspect-ratio:4/5; object-fit:cover; object-position:65% top; }
.cd-v-faq { position:relative; isolation:isolate; background:#18252d; color:#fff; }
.cd-v-faq--photo_panel::before { content:""; position:absolute; z-index:-2; inset:0; background-image:var(--cd-section-photo,none); background-size:cover; background-position:center; }
.cd-v-faq--photo_panel::after { content:""; position:absolute; z-index:-1; inset:0; background:linear-gradient(90deg,#0d1a23ed,#13252bd9); }
.cd-v-faq>.cd-container { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.1fr); align-items:center; gap:5rem; }
.cd-v-faq .cd-heading { font-size:clamp(2rem,3.4vw,3.4rem); max-width:15ch; }
.cd-v-faq .cd-eyebrow { color:#79cafb; }
.cd-v-faq .cd-description { color:#c7d4db; max-width:40ch; }
.cd-v-faq-panel { background:#fff; color:var(--cd-section-ink); padding:1rem 2rem; box-shadow:0 15px 40px #0002; }
.cd-v-faq-panel details { border-bottom:1px solid #e1e7eb; padding:1.4rem 0; }
.cd-v-faq-panel details:last-child { border:0; }
.cd-v-faq-panel summary { list-style:none; cursor:pointer; display:flex; align-items:center; justify-content:space-between; gap:1rem; font:600 .9rem/1.7 var(--tfs-font-heading); }
.cd-v-faq-panel summary::-webkit-details-marker { display:none; }
.cd-v-faq-panel summary span::before { content:"+"; color:var(--cd-section-blue); font:400 1.6rem/1 sans-serif; }
.cd-v-faq-panel details[open] summary span::before { content:"−"; }
.cd-v-faq-panel .cd-copy { color:#6c7880; font-size:.85rem; line-height:1.9; margin-top:1rem; }
.cd-v-faq--color_panel { background:#e5f1f8; color:#192630; }
.cd-v-faq--color_panel .cd-eyebrow { color:#257fae; }
.cd-v-faq--color_panel .cd-description { color:#5b717f; }
.cd-v-testimonials { background:#f2f6f9; }
.cd-v-testimonials .cd-v-heading { text-align:center; }
.cd-v-testimonials .cd-v-heading .cd-heading,.cd-v-testimonials .cd-v-heading .cd-description { margin-inline:auto; }
.cd-v-testimonials .cd-eyebrow { justify-content:center; }
.cd-v-review-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1.5rem; }
.cd-v-review { background:#fff; border:1px solid #e1e8ed; padding:2rem; min-width:0; position:relative; }
.cd-v-quote-mark { font:600 5rem/.7 Georgia,serif; display:block; color:#339bd3; }
.cd-v-stars { color:#e3aa2d; font-size:1rem; letter-spacing:.1em; }
.cd-v-review blockquote { font-size:.95rem; line-height:1.9; color:#53636e; margin-top:1.25rem; }
.cd-v-review figcaption { display:flex; align-items:center; gap:1rem; border-top:1px solid #e6ebef; padding-top:1.5rem; margin-top:1.5rem; }
.cd-v-review figcaption strong { display:block; font-size:.85rem; color:#263844; }
.cd-v-review figcaption small { display:block; font-size:.7rem; color:#7c8993; margin-top:.3rem; }
.cd-v-review .cd-v-review-avatar { width:48px; height:48px; border-radius:50%; object-fit:cover; }
.cd-v-rating-summary { text-align:center; color:#6b7c86; margin-bottom:2rem; }
.cd-v-testimonials--featured_quote { background:#fff; }
.cd-v-testimonials--featured_quote .cd-v-review-grid { grid-template-columns:1fr; max-width:60rem; margin-inline:auto; }
.cd-v-testimonials--featured_quote .cd-v-review { display:none; text-align:center; background:#eef5fa; border:0; padding:clamp(2rem,5vw,4rem); }
.cd-v-testimonials--featured_quote .cd-v-review:first-child { display:block; }
.cd-v-testimonials--featured_quote .cd-v-review blockquote { font-size:clamp(1.3rem,2.3vw,2rem); line-height:1.65; color:#243e50; }
.cd-v-testimonials--featured_quote figcaption { justify-content:center; }
.cd-v-cta { position:relative; isolation:isolate; padding-block:clamp(5rem,10vw,9rem); background:#17212b; color:#fff; }
.cd-v-cta--image_banner::before { content:""; position:absolute; inset:0; z-index:-2; background-image:var(--cd-section-photo,none); background-size:cover; background-position:center; }
.cd-v-cta--image_banner::after { content:""; position:absolute; inset:0; z-index:-1; background:linear-gradient(90deg,#081017ef,#081017a6 48%,#08101738); }
.cd-v-cta-copy { max-width:40rem; }
.cd-v-cta .cd-heading { max-width:17ch; font-size:clamp(2.2rem,3.8vw,3.8rem); }
.cd-v-cta .cd-description { color:#d2dfe7; max-width:46ch; }
.cd-v-cta .cd-eyebrow { color:#88d3ff; }
.cd-v-phone { display:inline-block; margin-top:1.5rem; }
.cd-v-cta--split_cta { padding-block:0; }
.cd-v-cta--split_cta>.cd-container { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); width:100%; max-width:none; align-items:stretch; }
.cd-v-cta--split_cta .cd-v-cta-copy { padding:clamp(2rem,6vw,6rem); max-width:none; align-self:center; }
.cd-v-cta-image { min-height:450px; }
.cd-v-cta-image .cd-image { height:100%; aspect-ratio:auto; object-fit:cover; object-position:center top; }
.cd-v-contact { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); background:#f4f7fa; }
.cd-v-contact-story { position:relative; isolation:isolate; display:flex; align-items:center; padding:clamp(2rem,6vw,6rem); background:#17252e; color:#fff; }
.cd-v-contact-story::before { content:""; position:absolute; z-index:-2; inset:0; background-image:var(--cd-section-photo,none); background-size:cover; background-position:65% top; }
.cd-v-contact-story::after { content:""; position:absolute; z-index:-1; inset:0; background:linear-gradient(140deg,#07131de6,#07131dcc); }
.cd-v-contact .cd-heading { font-size:clamp(2rem,3.3vw,3.4rem); max-width:18ch; }
.cd-v-contact .cd-eyebrow { color:#77c9f8; }
.cd-v-contact .cd-description { color:#d2dce2; font-size:.9rem; }
.cd-v-contact-info { margin-top:2.5rem; font-size:.9rem; }
.cd-v-contact-info .cd-hours { color:#d6e2e9; margin-top:1.5rem; }
.cd-v-contact-form-wrap { padding:clamp(2rem,5vw,5rem); min-width:0; }
.cd-v-contact-form-wrap .cd-form { padding:0; background:none; margin-top:1.75rem; border:0; }
.cd-v-form-heading>span { color:#638091; font-size:.7rem; text-transform:uppercase; letter-spacing:.12em; }
.cd-v-form-heading h3 { margin-top:.8rem; font-size:clamp(1.5rem,2.3vw,2.2rem); letter-spacing:-.04em; }
.cd-v-contact .cd-form label { font-size:.75rem; color:#405665; }
.cd-v-contact .cd-form input:not(.visually-hidden),.cd-v-contact .cd-form textarea { background:#fff; border:1px solid #d7e0e7; padding:.85rem; }
.cd-v-contact .cd-form textarea { min-height:140px; }
.cd-v-contact--image_right .cd-v-contact-story { order:2; }
.cd-v-contact--image_right .cd-v-contact-form-wrap { order:1; }
.cd-v-banner,.cd-v-slide { min-height:620px; display:flex; align-items:center; position:relative; isolation:isolate; background:#14232a; color:#fff; }
.cd-v-banner::before,.cd-v-slide::before { content:""; position:absolute; inset:0; z-index:-2; background-image:var(--cd-section-photo,none); background-size:cover; background-position:65% top; }
.cd-v-banner::after,.cd-v-slide::after { content:""; position:absolute; inset:0; z-index:-1; background:linear-gradient(90deg,#07131ce8,#07131cb3 35%,#07131c19 85%); }
.cd-v-banner-copy { padding-block:5rem; max-width:40rem; }
.cd-v-banner-copy .cd-description { max-width:43ch; color:#d3e0e7; }
.cd-v-banner-copy .cd-display { font-size:clamp(2.6rem,4.6vw,4.8rem); max-width:13ch; }
.cd-v-banner-copy .cd-eyebrow { color:#80cef8; }
.cd-v-banner-copy .cd-button-secondary { color:#fff; border-color:#bdcdd6; }
.cd-v-banner-badge { display:flex; align-items:center; gap:.6rem; color:#d1dfe8; font-size:.8rem; margin-top:1.5rem; }
.cd-v-banner--split_banner>.cd-container,.cd-v-banner-video>.cd-container { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:3rem; align-items:center; }
.cd-v-banner--split_banner::before,.cd-v-banner--split_banner::after,.cd-v-banner-video::before,.cd-v-banner-video::after { display:none; }
.cd-v-banner-image .cd-image { background:#15252e; aspect-ratio:4/3; object-fit:contain; }
.cd-v-slider { position:relative; }
.cd-v-slide[hidden],.cd-v-slider-controls[hidden] { display:none !important; }
.cd-v-slider-controls { display:flex; gap:1rem; align-items:center; position:absolute; right:max(1.25rem,calc((100vw - 80rem)/2)); bottom:2rem; color:#fff; z-index:3; font-size:.8rem; }
.cd-v-slider-controls button { width:46px; height:46px; display:grid; place-items:center; border:1px solid #ffffff80; color:#fff; background:#17232dbf; cursor:pointer; }
.cd-v-slider-controls button:hover { background:var(--cd-section-blue); }
.cd-v-process { background:#eef4f8; }
.cd-v-process .cd-v-heading { text-align:center; }
.cd-v-process .cd-heading { margin-inline:auto; }
.cd-v-process .cd-eyebrow { justify-content:center; }
.cd-v-process-list { list-style:none; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); padding:0; margin:0; gap:3rem; counter-reset:steps; }
.cd-v-process-list li { min-width:0; position:relative; padding:2rem; background:#fff; border-bottom:3px solid #328fc8; }
.cd-v-process-number { display:grid; place-items:center; width:52px; height:52px; border-radius:50%; border:1px solid #acd4ed; color:#2686be; font:600 1rem/1 var(--tfs-font-heading); margin-bottom:1.8rem; }
.cd-v-process-list h3 { font-size:1.1rem; line-height:1.5; }
.cd-v-process-list p { color:#72818b; font-size:.85rem; line-height:1.9; }
.cd-v-gallery { background:#fff; }
.cd-v-gallery-grid { display:grid; grid-template-columns:1.25fr .75fr 1fr; gap:1.5rem; align-items:start; }
.cd-v-gallery-grid figure { min-width:0; }
.cd-v-gallery-grid .cd-image { height:330px; aspect-ratio:auto; object-fit:cover; object-position:65% top; background:#eaf1f6; }
.cd-v-gallery-grid figure:nth-child(3n+2) .cd-image { height:420px; }
.cd-v-gallery-grid figcaption { padding-top:1.25rem; }
.cd-v-gallery-grid figcaption strong { display:block; font-size:.9rem; font-weight:600; }
.cd-v-gallery-grid figcaption small { display:block; margin-top:.4rem; color:#8b969d; font-size:.7rem; }
.cd-header-top { background:#14212b; color:#c9d9e3; font-size:.7rem; }
.cd-header-top>.cd-container { display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:.6rem; padding-block:.6rem; }
.cd-header-contacts { display:flex; flex-wrap:wrap; gap:1.5rem; }
.cd-header-contacts a { text-decoration:none; }
.cd-header-contacts a span { margin-right:.5rem; color:#86c8ed; }
.cd-header-social { display:flex; gap:1rem; }
.cd-social-link { display:inline-flex; align-items:center; justify-content:center; min-width:32px; min-height:32px; text-decoration:none; }
.cd-footer-description { font-size:.8rem; color:#c1d0d9; }
.cd-powered-by { text-align:right; color:#a2b7c4; }
.cd-footer { background:#14212b; }
.cd-library-controls { background:#edf4f9; padding:2.5rem 0; border-bottom:1px solid #d7e4ed; }
.cd-library-controls h1 { font-size:clamp(1.8rem,3vw,2.8rem); letter-spacing:-.04em; }
.cd-library-controls>.cd-container>p { color:#5c7483; font-size:.8rem; margin-bottom:1rem; }
.cd-library-sections,.cd-library-layouts { display:flex; flex-wrap:wrap; gap:.5rem; margin-top:1.5rem; }
.cd-library-sections a,.cd-library-layouts a { display:inline-flex; padding:.65rem .85rem; border:1px solid #c7d9e7; font-size:.7rem; text-decoration:none; background:#fff; color:#3e6179; min-height:40px; align-items:center; }
.cd-library-sections a[aria-current],.cd-library-layouts a[aria-current] { background:#237fb5; color:#fff; border-color:#237fb5; }
@media (max-width:1100px) {
 .cd-v-services--photo_cards .cd-v-service-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
 .cd-v-service-card { grid-template-columns:minmax(0,1.4fr) minmax(0,1fr); }
 .cd-v-reason-grid { gap:0 2rem; }
 .cd-v-faq>.cd-container { gap:3rem; }
 .cd-v-contact-story,.cd-v-contact-form-wrap { padding:3rem 2rem; }
}
@media (max-width:767px) {
 .cd-v-heading { margin-bottom:2rem; }
 .cd-v-service-grid,.cd-v-services--photo_cards .cd-v-service-grid { grid-template-columns:1fr; }
 .cd-v-service-card { min-height:0; grid-template-columns:minmax(0,1.6fr) minmax(0,1fr); }
 .cd-v-service-copy { padding:1.5rem; }
 .cd-v-service-copy h3 { font-size:1rem; }
 .cd-v-service-copy p { font-size:.8rem; }
 .cd-v-service-note { font-size:.65rem; }
 .cd-v-reason-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 1.5rem; }
 .cd-v-reason { padding:1.5rem 0; gap:.75rem; }
 .cd-v-reason:nth-child(n+3) { border-top:1px solid #dce3e7; }
 .cd-v-reason-icon { font-size:1.3rem; width:1.5rem; }
 .cd-v-reason h3 { font-size:.85rem; }
 .cd-v-reason p { font-size:.8rem; }
 .cd-v-reasons--photo_reasons>.cd-container { grid-template-columns:1fr; gap:2rem; }
 .cd-v-reasons-photo .cd-image { aspect-ratio:4/3; }
 .cd-v-faq>.cd-container { grid-template-columns:1fr; gap:2rem; }
 .cd-v-faq-panel { padding:.5rem 1.5rem; }
 .cd-v-review-grid { grid-template-columns:1fr; }
 .cd-v-review { padding:1.75rem; }
 .cd-v-cta--split_cta>.cd-container { grid-template-columns:1fr; }
 .cd-v-cta-image { min-height:0; }
 .cd-v-cta-image .cd-image { aspect-ratio:4/3; height:auto; }
 .cd-v-contact { grid-template-columns:1fr; }
 .cd-v-contact-story,.cd-v-contact-form-wrap { padding:3rem 1.5rem; }
 .cd-v-contact--image_right .cd-v-contact-story { order:0; }
 .cd-v-contact--image_right .cd-v-contact-form-wrap { order:1; }
 .cd-v-banner,.cd-v-slide { min-height:560px; }
 .cd-v-banner-copy { padding-block:4rem; max-width:28rem; }
 .cd-v-banner-copy .cd-display { max-width:13ch; }
 .cd-v-banner::after,.cd-v-slide::after { background:linear-gradient(90deg,#07131cea,#07131c9c); }
 .cd-v-banner--split_banner>.cd-container,.cd-v-banner-video>.cd-container { grid-template-columns:1fr; gap:0; padding-bottom:2rem; }
 .cd-v-slider-controls { bottom:1rem; }
 .cd-v-process-list { grid-template-columns:1fr; gap:1rem; }
 .cd-v-process-list li { display:flex; gap:1.5rem; align-items:start; }
 .cd-v-process-number { flex-shrink:0; margin:0; }
 .cd-v-gallery-grid { grid-template-columns:1fr 1fr; gap:1rem; }
 .cd-v-gallery-grid .cd-image { height:220px; }
 .cd-v-gallery-grid figure:nth-child(3n+2) .cd-image { height:220px; }
 .cd-v-gallery-grid figure:first-child { grid-column:1/-1; }
 .cd-header-contacts { gap:.75rem; }
 .cd-header-top { font-size:.65rem; }
 .cd-header-social { display:none; }
}
@media (max-width:420px) {
 .cd-v-reason-grid,.cd-v-reasons--photo_reasons .cd-v-reason-grid { grid-template-columns:1fr; }
 .cd-v-reason:nth-child(n+2) { border-top:1px solid #dce3e7; }
 .cd-v-service-card { grid-template-columns:minmax(0,1.7fr) minmax(0,1fr); }
 .cd-v-service-copy { padding:1.25rem; }
 .cd-v-outline-link { padding:.45rem .6rem; font-size:.65rem; }
 .cd-v-process-list li { padding:1.5rem; gap:1rem; }
}
