/* R5: component-scoped contrast and keyboard affordances. */
.fbs-fb, .btn-facebook, .social-link-large[aria-label="Facebook"] { background-color: #1669d6 !important; color: #fff !important; }
.btn-facebook span, .social-link-large[aria-label="Facebook"] span { color: #fff !important; }
.area-cards-sub { color: #626262 !important; opacity: 1 !important; }
.blog-related-date, .ct-badge-sub { color: #626262 !important; }
.dd-week-av, .dd-week-dow { opacity: 1 !important; }
.dd-svc-sub { opacity: .85 !important; }
.dd-svc button.dd-sel .dd-svc-sub { opacity: .85 !important; }
[data-dd-scroll-region]:focus-visible { outline: 3px solid currentColor; outline-offset: 3px; }
.footer-logo[data-dd-restored] { color: #fff; font-weight: 700; font-size: 1.15rem; }
.section-tag, .blog-related-tag { color: #1c5c89 !important; background-color: #e1eef7 !important; }
.tcarousel-avatar { background-color: #1c5c89 !important; color: #fff !important; }
.rv-qa-sidebar h2 em, .article-cta-box .btn-ghost { color: #1c5c89 !important; }
#footerEmailForm button[type="submit"], .fcr-btn-primary { background-color: #2474a8 !important; color: #fff !important; }
.cta-card a[href^="tel:"], .cta-card a[href^="mailto:"], .ra-card-cta { color: #1c5c89 !important; }
.sticky-cta-text { color: #050505 !important; }
.error-tagline, .error-tagline strong, .error-links-label { color: #c8deed !important; }
.error-links a { color: #b9d9ef !important; }
.bg-404 { overflow: hidden; }

.service-showcase-card .card-link, .cta-card a { color:#1c5c89 !important; } .ba-before-tag { background-color:#424d55 !important; color:#fff !important; } .ba-after-tag { color:#1c5c89 !important; background-color:#e1eef7 !important; } .intake-submit { background-color:#2474a8 !important; color:#fff !important; }

/* R5 follow-up: named contact families, article source links, and paired sticky CTA variants. */
.blog-body > p a:not(.btn), .blog-body > ul a:not(.btn), .blog-body > ol a:not(.btn) {color:#1c5c89 !important;}
 .contact-item a, .dd-blog-cta-btn, .blog-author-info > span, .btn-outline-primary {color:#1c5c89 !important;}
.blog-footer-row .btn-primary {background:#2474a8 !important;color:#fff !important;}
a.btn[href="sms:+15195015003"][style*="background:#2ecc71"] {color:#10391f !important;}

.quick-contact .contact-item a, .quick-contact .contact-item a:hover, .hub-author-block a {color:#1c5c89 !important;}
.hub-author-block > div > div {opacity:1 !important;}

/* R5 repeated article panel follow-up: exact light/dark contexts from inventory. */
.blog-sources a[href] {color:#1c5c89 !important;text-decoration:underline;text-underline-offset:.15em;}


/* R5 keyboard focus: two-tone ring on existing form controls, without layout changes. */
form.intake-form :is(input:not([type="hidden"]),select,textarea), .newsletter-form input, #footerEmailForm input, .dd-input {scroll-margin-block:160px 110px;}
form.intake-form :is(input:not([type="hidden"]),select,textarea):focus-visible, .newsletter-form input:focus-visible, #footerEmailForm input:focus-visible, .dd-input:focus-visible {outline:2px solid #fff !important;outline-offset:1px !important;box-shadow:0 0 0 4px #153750 !important;}
@media (forced-colors:active) {
form.intake-form :is(input:not([type="hidden"]),select,textarea):focus-visible, .newsletter-form input:focus-visible, #footerEmailForm input:focus-visible, .dd-input:focus-visible {outline:2px solid CanvasText !important;outline-offset:3px !important;box-shadow:none !important;}
}

/* Growth W2: reproduced article and service contrast; paired button colours preserve readability on hover/focus. */
.blog-body .btn-outline-primary {color:#17608f !important;background-color:#fff !important;border-color:#17608f !important;}
.blog-body .btn-outline-primary:is(:hover,:focus-visible) {color:#fff !important;background-color:#17608f !important;border-color:#17608f !important;}
.blog-author-card .blog-author-info > span {color:#626262 !important;}


/* W12: allow article and request-widget columns to reflow on narrow screens. */
.blog-layout > .blog-body, .blog-layout > .blog-toc { min-width: 0; }
@media (max-width: 600px) {
  .blog-layout { grid-template-columns: minmax(0, 1fr) !important; }
  .booking-calendar-widget .dd-c { grid-template-columns: minmax(0, 1fr) !important; }
  .booking-calendar-widget .dd-l, .booking-calendar-widget .dd-r { min-width: 0; }
  .booking-calendar-widget .dd-l-title { overflow-wrap: anywhere; }
  .booking-calendar-widget .dd-pre, .booking-calendar-widget .dd-head { flex-wrap: wrap; gap: 0.5rem; }
  .footer-social-section .social-links-large { flex-wrap: wrap; }
}

@media (max-width: 480px) {
  .booking-calendar-widget .dd-svc { grid-template-columns: minmax(0, 1fr); }
  .booking-calendar-widget .dd-svc button { min-width: 0; }
  .booking-calendar-widget .dd-week-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .booking-calendar-widget .dd-week-d { min-width: 0; min-height: 64px; }
  .booking-calendar-widget .dd-week-av { overflow-wrap: anywhere; text-align: center; }
}

/* W12 review: show the full service description at narrow widths. */
@media (max-width: 480px) {
  .booking-calendar-widget .dd-svc-sub { white-space: normal; overflow: visible; text-overflow: clip; }
}

/* W29: readable mobile-menu phone and account actions. */
.mm-phone, .mm-phone:hover, .mm-phone:focus-visible { background: #193d62 !important; color: #ffffff !important; opacity: 1 !important; }

/* W30: keep desktop service mega menus inside the viewport and reachable by keyboard. */
@media (min-width:992px) {
  header#header .nav-links > li:has(> .mega-menu) { position:static !important; }
  header#header .nav-links > li > .mega-menu {
    position:absolute !important;
    top:100% !important;
    left:max(16px, calc((100vw - 1280px) / 2)) !important;
    right:auto !important;
    transform:none !important;
    max-width:calc(100vw - 32px) !important;
    max-height:calc(100dvh - 180px);
    overflow-y:auto;
    box-sizing:border-box;
    display:block !important;
    opacity:0 !important;
    visibility:hidden !important;
    pointer-events:auto !important;
    background:#fff !important;
    -webkit-backdrop-filter:none !important;
    backdrop-filter:none !important;
    transition:opacity .15s ease .2s, visibility 0s linear .35s !important;
  }
  header#header .nav-links > li:hover > .mega-menu,
  header#header .nav-links > li:focus-within > .mega-menu,
  header#header .nav-links > li.is-open > .mega-menu,
  header#header .nav-links > li.open > .mega-menu {
    opacity:1 !important;
    visibility:visible !important;
    pointer-events:auto !important;
    transition:opacity .15s ease, visibility 0s !important;
  }
  /* W34: hover bridge over the gap between link and panel; a short close delay covers slower pointers. */
  header#header .nav-links > li.has-dropdown:hover { padding-bottom:28px; margin-bottom:-28px; }
  /* Moving onto another top-level item closes the previous panel at once, so panels never stack. */
  header#header .nav-links:has(> li:hover) > li:not(:hover) > .mega-menu { transition:none !important; }
}
@media (min-width:992px) and (prefers-reduced-motion:reduce) {
  header#header .nav-links > li > .mega-menu { transition:opacity 0s linear .3s, visibility 0s linear .3s !important; }
  header#header .nav-links > li:hover > .mega-menu,
  header#header .nav-links > li:focus-within > .mega-menu { transition:none !important; }
}

@media (min-width:992px) and (max-width:1350px) {
 header#header .nav-links {gap:8px!important;padding-left:8px!important;padding-right:8px!important;}
 header#header .nav-links > li > a,
 header#header .nav-links > li > .network-toggle {font-size:14px!important;padding-left:6px!important;padding-right:6px!important;}
 header#header .nav-actions {gap:8px!important;}
 header#header .nav-actions > a {font-size:14px!important;padding-left:12px!important;padding-right:12px!important;}
}

/* W33: let service columns shrink within the mobile viewport. */
@media (max-width: 600px) {
  .service-grid { grid-template-columns: minmax(0, 1fr) !important; }
  .service-grid > .service-main, .service-grid > .service-sidebar { min-width: 0; }
}

/* Mobile service enquiries: constrain flex content and wrap complete CTA text. */
@media(max-width:767px){.service-hero>.service-hero-panel{min-width:0;box-sizing:border-box;width:100%}.service-hero .service-hero-panel .hero-ctas{min-width:0}.service-hero .service-hero-panel .hero-ctas .btn{min-width:0;max-width:100%;white-space:normal;overflow-wrap:anywhere;text-align:center}}


/* Plain-language policy and form links remain distinguishable without color. */
main>.container>p a:not(.btn),main>.container>ul>li>a:not(.btn),.legal-content p a:not(.btn),.legal-content li a:not(.btn),.form-privacy a,.intake-note a,main article td a:not(.btn){text-decoration:underline;text-underline-offset:.18em}
[data-dd-table-scroll]:focus-visible{outline:3px solid #14628a;outline-offset:3px}

/* A complete readable pair keeps service ticker labels clear on either header. */
.nav-ticker-pill{color:#175078!important;background:#deecf7!important}

@media(max-width:767px){.plans-final-cta .btn{white-space:normal;min-width:0;max-width:100%;box-sizing:border-box;overflow-wrap:break-word}}

/* Customer guide links and labels stay readable on its pale panels. */
.ai-main a:not(.ai-cta),.ai-main a:not(.ai-cta):visited,.ai-main a:not(.ai-cta):hover,.ai-main .ai-tag,.ai-header nav a:not(.ai-cta):hover{color:#175078!important}
.ai-main a:not(.ai-cta){text-decoration:underline;text-underline-offset:.18em}
.ai-header .ai-cta{background:#175078;color:#fff!important}.ai-header .ai-cta:hover{background:var(--ai-text);color:#fff!important}

/* W35: readable text on the redesigned light panels and dark CTAs (contrast audit 2026-09-29). */
body.site-v2 main .blog-takeaways h3,
body.site-v2 main .blog-takeaways h4,
body.site-v2 main .blog-takeaways li strong,
body.site-v2 main .blog-takeaways p strong { color:var(--v2-ink, #172a3d) !important; }
body.site-v2 main .blog-takeaways li,
body.site-v2 main .blog-takeaways p { color:var(--v2-body, #3b4a5a) !important; }
.dd-blog-cta .dd-blog-cta-tel,
.dd-blog-cta .dd-blog-cta-tel span { color:var(--v2-on-dark, #f4f8fb) !important; }
.dd-r .dd-head h2 em { color:var(--v2-accent-soft, #5dade2) !important; }
.rm-toggle-btn,
#blogGrid .read-more { color:var(--v2-accent-deep, #216b9b) !important; }

/* W36: local notes section on service-by-town pages. */
.ddhs-local-notes{padding:64px 0;background:var(--v2-paper,#fcfdfe)}
.ddhs-local-notes .ddhs-local-body{max-width:760px;margin:0}
.ddhs-local-notes .ddhs-local-body p{margin:0 0 1rem;line-height:1.7;color:var(--v2-body,#3b4a5a)}
.ddhs-local-notes .ddhs-local-body h3{margin:2rem 0 .75rem;font-size:1.25rem;line-height:1.3;color:var(--v2-ink,#172a3d)}
.ddhs-local-notes .ddhs-local-body h4{margin:1.25rem 0 .35rem;font-size:1.05rem;line-height:1.35;color:var(--v2-ink,#172a3d)}
.ddhs-local-notes .ddhs-local-plan{margin:0;padding-left:1.25rem}
.ddhs-local-notes .ddhs-local-plan li{margin:.45rem 0;line-height:1.6;color:var(--v2-body,#3b4a5a);list-style:disc}
.ddhs-local-notes .ddhs-local-plan li::marker{color:var(--v2-accent-deep,#216b9b)}
.ddhs-local-notes .ddhs-local-nearby{margin-top:1.75rem;font-size:.95rem}
.ddhs-local-notes .ddhs-local-nearby a{color:var(--v2-accent-deep,#216b9b);text-decoration:underline;text-underline-offset:.18em}
@media (max-width:767px){.ddhs-local-notes{padding:44px 0}}

/* W37: restore numbers and bullets on article lists (a global reset removed them). */
article.blog-body > ol, article.blog-body > ul { padding-left:1.4rem; }
article.blog-body > ol > li { list-style:decimal; }
article.blog-body > ul > li { list-style:disc; }
article.blog-body > ol > li::marker, article.blog-body > ul > li::marker { color:var(--v2-accent-deep, #216b9b); font-weight:600; }

/* W38: wide article tables scroll inside their own box on phones instead of widening the page. */
@media (max-width:700px){ article.blog-body > table{display:block;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch} }

/* T18 2026-10: keyboard focus stays clear of the fixed bottom bars (value set by accessibility.js) */
html{scroll-padding-bottom:var(--dd-fixed-bottom,0px)}
/* T18 2026-10: form field boundaries at least 3:1 against the page (WCAG 1.4.11) */
:is(.intake-form,.cta-form,.hero-quick-form,.coi-form-card form,.unsub-form,.newsletter-form-inline,.blog-search,.search-input-wrap) :is(input:not([type=checkbox]):not([type=radio]):not([type=hidden]):not([name=website]),select,textarea){border-color:#6b7b8c!important}
.fbb-newsletter input{border-color:rgba(255,255,255,.55)!important}
#dd-chat-window .dd-chat-input{border-color:#7a8ca0!important}
/* T18 2026-10: 16px text in form fields on phones (iOS zooms the page on smaller fields) */
@media (max-width:767px){input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=hidden]),select,textarea{font-size:16px!important}}
/* T10 2026-10: /services hub hero quote button above the phone cookie banner / sticky bar (iPhone 13 first screen) */
@media (max-width:767px){.services-all-hero{padding-top:130px!important}}
@media (max-width:767px){.service-hero:has(.holiday-hero-pill){padding-top:104px!important}}
/* P3 2026-10: header service ticker loops 3 times then rests (it is a seamless loop, so it stops on the same view);
   no ticker or logo-rail motion when the visitor asks for reduced motion (styles.min.css forced both to run forever) */
html body .nav-ticker-track{animation-iteration-count:3!important}
@media (prefers-reduced-motion:reduce){html body .nav-ticker-track,html body .trusted-carousel{animation:none!important}}
/* P3 2026-10: print — no fixed bars, cookie banner, chat, skip link or map placeholder; dark readable text; no URLs after internal/tel/anchor links */
@media print{
#cookie-consent-banner,#stickyMobileCta,.mobile-sticky-cta,.mobile-cta,#dd-chat-bubble,#dd-chat-window,.dd-skip-link,.dd-skip-anchor,.announcement-bar,.scroll-top-btn,#scrollTopBtn,.dd-blog-fab,.reading-progress,.dd-map-consent,.footer-skyline,.blog-hero-img,.blog-hero-overlay,.city-hero-image,.city-hero-overlay{display:none!important}
html,body{background:#fff!important;color:#000!important}
h1,h2,h3,h4,.blog-hero *,.city-hero *,.page-hero *,.service-hero *,.services-all-hero *,.hero *{color:#000!important;text-shadow:none!important}
a[href]:not([href^="http"])::after,a[href^="https://ddhomeservices.ca"]::after{content:none!important}
body{padding-top:0!important}
header,.header{position:static!important;box-shadow:none!important;transform:none!important}
.blog-hero,.city-hero,.page-hero,.service-hero,.services-all-hero{min-height:0!important;height:auto!important;padding-top:0!important;padding-bottom:0!important}
.blog-hero-content,.blog-hero .container,.city-hero .container,.page-hero .container,.service-hero-panel,.services-all-hero-panel{padding-top:.5rem!important;padding-bottom:.5rem!important;min-height:0!important}
.blog-hero *,.city-hero *,.page-hero *,.service-hero *,.hero *{opacity:1!important;-webkit-text-fill-color:currentColor!important}
}


/* Respect reduced motion after the shared header transition overrides. */
@media (prefers-reduced-motion: reduce) {
  #header.header-ready,
  #header.header-ready.hidden,
  #header .nav-links > li > a {
    transition: none !important;
  }
}
