/* ==========================================================================
   Kalieb Designs — 2026 refresh layer
   Sits on top of the GeekHost template (bootstrap.min.css + style.css).
   The template supplies the base grid, buttons and typography; this file
   modernises spacing, colour, contrast, focus states and adds the components
   the original template never had (job cards, trust strip, sticky call bar,
   review cards, accordion FAQ).
   Nothing here depends on JavaScript for content to be readable.
   ========================================================================== */

:root{
  --kd-coral:#ff5b49;
  --kd-coral-dark:#e8412e;
  --kd-navy:#32526e;
  --kd-navy-deep:#12212c;
  --kd-teal:#71a4b2;
  --kd-ink:#243642;
  --kd-body:#5c6b75;
  --kd-line:#e2e8ec;
  --kd-bg:#f5f8f9;
  --kd-white:#fff;
  --kd-radius:8px;
  --kd-shadow:0 2px 16px rgba(20,45,65,.08);
  --kd-shadow-lg:0 12px 40px rgba(12,30,45,.16);
  --kd-max:1180px;
}

/* ------------------------------------------------------------ base resets */
/* Bootstrap sets this too, but declaring it here means the layout does not
   fall apart if bootstrap.min.css ever fails to load. */
*,*::before,*::after{box-sizing:border-box}
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth }
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}
}
body.kd-page{
  margin:0; padding:0;   /* Bootstrap used to reset this; it must live here now */
  font-family:Lato,"Helvetica Neue",Arial,sans-serif;
  font-size:17px; line-height:1.65; color:var(--kd-body);
  background:var(--kd-white); overflow-x:hidden;
}
.kd-page h1,.kd-page h2,.kd-page h3,.kd-page h4,.kd-page h5{
  font-family:Lato,Arial,sans-serif; color:var(--kd-ink);
  font-weight:700; line-height:1.22; margin:0 0 .55em;
}
.kd-page h1{font-size:clamp(30px,4.2vw,46px);font-weight:900;letter-spacing:-.01em}
.kd-page h2{font-size:clamp(24px,3vw,33px)}
.kd-page h3{font-size:20px}
.kd-page h4{font-size:17px}
.kd-page p{margin:0 0 1.05em}
/* Base link colour. :where() keeps specificity at zero for the exclusion list so
   button classes below win without needing an arms race of selectors. */
.kd-page a:where(:not(.kd-btn):not(.kd-header-call):not(.kd-header-sms):not(.kd-stickybar-call):not(.kd-stickybar-sms)){color:var(--kd-coral);text-decoration:none;transition:color .15s}
.kd-page a:where(:not(.kd-btn):not(.kd-header-call):not(.kd-header-sms):not(.kd-stickybar-call):not(.kd-stickybar-sms)):hover,
.kd-page a:where(:not(.kd-btn):not(.kd-header-call):not(.kd-header-sms):not(.kd-stickybar-call):not(.kd-stickybar-sms)):focus{color:var(--kd-coral-dark);text-decoration:underline}
.kd-page .kd-btn,.kd-page .kd-header-call,.kd-page .kd-header-sms,
.kd-page .kd-stickybar-call,.kd-page .kd-stickybar-sms{text-decoration:none}
.kd-page img{max-width:100%;height:auto}
.kd-page .wrapper{max-width:var(--kd-max);margin:0 auto;padding-left:18px;padding-right:18px;float:none;width:auto}
.kd-page .container-fluid{padding-left:0;padding-right:0}

/* visible keyboard focus everywhere — the template had none */
.kd-page a:focus-visible,.kd-page button:focus-visible,.kd-page input:focus-visible,
.kd-page select:focus-visible,.kd-page textarea:focus-visible,.kd-page summary:focus-visible{
  outline:3px solid #ffb400; outline-offset:2px; border-radius:3px;
}
.kd-skip{
  position:absolute;left:-9999px;top:0;z-index:999;background:var(--kd-navy-deep);color:#fff;
  padding:12px 20px;font-weight:700;
}
.kd-skip:focus{left:0;color:#fff}
.kd-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* ---------------------------------------------------------------- header */
.kd-header{background:var(--kd-navy);position:relative;z-index:60;box-shadow:0 1px 0 rgba(255,255,255,.06)}
.kd-header-inner{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:14px 0}
/* superseded: .kd-logo sizing lives in the pop layer */
.kd-header-actions{display:flex;align-items:center;gap:10px}
.kd-header-call,.kd-header-sms{
  display:flex;align-items:center;gap:10px;color:#fff;padding:7px 14px;border-radius:40px;
  border:1px solid rgba(255,255,255,.22);
}
.kd-header-call:hover,.kd-header-sms:hover,.kd-header-call:focus,.kd-header-sms:focus{
  color:#fff;text-decoration:none;background:rgba(255,255,255,.1)
}
.kd-header-call{background:var(--kd-coral);border-color:var(--kd-coral);min-width:196px}
.kd-header-call:hover,.kd-header-call:focus{background:var(--kd-coral-dark);border-color:var(--kd-coral-dark)}
.kd-header-call-ico{font-size:16px;opacity:.95}
.kd-header-call-txt strong{display:block;font-size:17px;line-height:1.1;font-weight:900}
.kd-header-call-txt small{display:block;font-size:11px;opacity:.85;letter-spacing:.2px}
.kd-navtoggle{display:none;background:transparent;border:1px solid rgba(255,255,255,.3);color:#fff;
  width:46px;height:44px;border-radius:6px;font-size:20px}

/* ------------------------------------------------------------------- nav */
.kd-nav{border-top:1px solid rgba(255,255,255,.1)}
.kd-nav ul.main{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap}
.kd-nav ul.main > li{position:relative}
.kd-nav ul.main > li > a{
  display:block;color:#dbe7ef;padding:15px 18px;font-weight:700;font-size:14px;
  letter-spacing:.9px;text-transform:uppercase;
}
.kd-nav ul.main > li > a:hover,.kd-nav ul.main > li > a:focus{background:rgba(255,255,255,.08);color:#fff;text-decoration:none}
.kd-nav ul.main > li.is-active > a{color:#fff;box-shadow:inset 0 -3px 0 var(--kd-coral)}
.kd-nav ul.submain{
  list-style:none;margin:0;padding:8px 0;position:absolute;top:100%;left:0;min-width:284px;
  background:#fff;border-radius:0 0 var(--kd-radius) var(--kd-radius);box-shadow:var(--kd-shadow-lg);
  opacity:0;visibility:hidden;transform:translateY(6px);transition:.16s;z-index:70;
}
.kd-nav ul.main > li:hover > ul.submain,
.kd-nav ul.main > li:focus-within > ul.submain{opacity:1;visibility:visible;transform:none}
.kd-nav ul.submain a{display:block;padding:11px 20px;color:var(--kd-ink);font-size:15px;font-weight:400}
.kd-nav ul.submain a:hover,.kd-nav ul.submain a:focus{background:var(--kd-bg);color:var(--kd-coral);text-decoration:none}
.kd-nav ul.submain a .fa{width:20px;color:var(--kd-coral)}
.kd-nav ul.submain li.is-active > a{color:var(--kd-coral);font-weight:700}

/* ---------------------------------------------------------------- banner */
.kd-banner{background:var(--kd-navy-deep);color:#fff;padding:52px 0 56px;background-size:cover;background-position:center}
.kd-banner h1{color:#fff;margin-bottom:.35em;max-width:22ch}
.kd-banner-sub{font-size:19px;color:#cfdde7;max-width:62ch;margin-bottom:1.4em}
.kd-crumbs{margin-bottom:16px}
.kd-crumbs ol{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;font-size:13.5px}
.kd-crumbs li + li:before{content:"›";padding:0 9px;color:#7d95a6}
.kd-crumbs a{color:#a9c2d2}
.kd-crumbs span{color:#e7f0f6}
.kd-banner-cta{display:flex;flex-wrap:wrap;gap:12px;margin:0}

/* --------------------------------------------------------------- buttons */
.kd-btn{
  display:inline-flex;align-items:center;gap:10px;padding:15px 26px;border-radius:var(--kd-radius);
  font-weight:900;font-size:17px;letter-spacing:.2px;border:2px solid transparent;cursor:pointer;
  transition:background .15s,color .15s,transform .1s;text-align:left;
}
.kd-btn:hover{text-decoration:none;transform:translateY(-1px)}
.kd-btn small{display:block;font-weight:400;font-size:12px;opacity:.9;letter-spacing:0}
.kd-btn-call{background:var(--kd-coral);color:#fff;box-shadow:0 3px 0 rgba(0,0,0,.16)}
.kd-btn-call:hover,.kd-btn-call:focus{background:var(--kd-coral-dark);color:#fff}
.kd-btn-ghost{background:transparent;color:#fff;border-color:rgba(255,255,255,.55)}
.kd-btn-ghost:hover,.kd-btn-ghost:focus{background:rgba(255,255,255,.14);color:#fff}
.kd-btn-navy{background:var(--kd-navy);color:#fff}
.kd-btn-navy:hover,.kd-btn-navy:focus{background:var(--kd-navy-deep);color:#fff}
.kd-btn-white{background:#fff;color:var(--kd-coral)}
.kd-btn-white:hover,.kd-btn-white:focus{background:#fff;color:var(--kd-coral-dark)}
.kd-btn-outline-white{background:transparent;color:#fff;border-color:rgba(255,255,255,.7)}
.kd-btn-outline-white:hover,.kd-btn-outline-white:focus{background:rgba(255,255,255,.16);color:#fff}
.kd-btn-block{display:flex;width:100%;justify-content:center}

/* -------------------------------------------------------------- sections */
.kd-sect{padding:62px 0}
.kd-sect-sm{padding:40px 0}
.kd-bg{background:var(--kd-bg)}
.kd-dark{background:var(--kd-navy);color:#cfdde7}
.kd-dark h2,.kd-dark h3{color:#fff}
.kd-center{text-align:center}
.kd-lead{font-size:19px;line-height:1.6}
.kd-sect-head{max-width:66ch;margin:0 auto 38px;text-align:center}
.kd-sect-head p{margin-bottom:0}
.kd-eyebrow{display:inline-block;font-size:12px;font-weight:900;letter-spacing:2.2px;text-transform:uppercase;
  color:var(--kd-coral);margin-bottom:10px}
.kd-dark .kd-eyebrow{color:#ffb3a8}

/* ------------------------------------------------------------ trust strip */
.kd-trust{display:grid;grid-template-columns:repeat(4,1fr);background:#fff;border:1px solid var(--kd-line);
  border-radius:var(--kd-radius);box-shadow:var(--kd-shadow);overflow:hidden;margin-top:-34px;position:relative;z-index:5}
.kd-trust > div{padding:20px 16px;text-align:center;border-right:1px solid var(--kd-line)}
.kd-trust > div:last-child{border-right:0}
.kd-trust .fa{color:var(--kd-coral);font-size:23px;display:block;margin-bottom:8px}
.kd-trust strong{display:block;color:var(--kd-ink);font-size:16px}
.kd-trust span{font-size:13px}

/* -------------------------------------------------------------- kd cards */
.kd-grid{display:grid;gap:24px}
.kd-g2{grid-template-columns:repeat(2,1fr)}
.kd-g3{grid-template-columns:repeat(3,1fr)}
.kd-g4{grid-template-columns:repeat(4,1fr)}
.kd-card{background:#fff;border:1px solid var(--kd-line);border-radius:var(--kd-radius);padding:26px;
  box-shadow:var(--kd-shadow);display:flex;flex-direction:column;transition:box-shadow .18s,transform .18s}
.kd-card:hover{box-shadow:var(--kd-shadow-lg);transform:translateY(-2px)}
.kd-card h3{margin-bottom:.4em}
.kd-card p{font-size:15.5px}
.kd-card .kd-card-ico{font-size:30px;color:var(--kd-coral);margin-bottom:12px;display:block;line-height:1}
.kd-card img.kd-card-img{width:64px;height:auto;margin-bottom:14px}
.kd-card .kd-card-link{margin-top:auto;padding-top:14px;font-weight:900;font-size:15px}
.kd-card.kd-flag{border-color:var(--kd-coral);position:relative}
.kd-card.kd-flag:before{content:attr(data-flag);position:absolute;top:-11px;left:24px;background:var(--kd-coral);
  color:#fff;font-size:10px;font-weight:900;letter-spacing:1.2px;padding:4px 11px;border-radius:3px}
.kd-dark .kd-card{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.14);box-shadow:none;color:#c9dae5}
.kd-dark .kd-card:hover{transform:none;box-shadow:none;background:rgba(255,255,255,.1)}

/* ---------------------------------------------------------------- splits */
.kd-split{display:grid;grid-template-columns:1fr 1fr;gap:46px;align-items:center}
.kd-split-wide{grid-template-columns:1.15fr .85fr}
.kd-figure{border-radius:var(--kd-radius);overflow:hidden;box-shadow:var(--kd-shadow);background:#fff}
.kd-figure img{display:block;width:100%}
.kd-figure figcaption{padding:12px 16px;font-size:13.5px;color:#7c8b95;background:#fff}

/* ----------------------------------------------------------------- chips */
.kd-chips{display:flex;flex-wrap:wrap;gap:10px;padding:0;margin:0;list-style:none}
.kd-chips li{border:1px solid var(--kd-line);background:#fff;border-radius:30px;padding:9px 17px;
  font-size:15px;color:var(--kd-ink);display:inline-flex;align-items:center;gap:8px}
.kd-chips .fa{color:var(--kd-coral)}
.kd-dark .kd-chips li{background:rgba(255,255,255,.07);border-color:rgba(255,255,255,.16);color:#e2edf3}

/* ----------------------------------------------------------------- steps */
.kd-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:30px;counter-reset:kdstep;list-style:none;padding:0;margin:0}
.kd-steps li{position:relative;padding-left:64px}
.kd-steps li:before{counter-increment:kdstep;content:counter(kdstep);position:absolute;left:0;top:2px;
  width:46px;height:46px;border-radius:50%;background:var(--kd-coral);color:#fff;font-weight:900;font-size:21px;
  display:flex;align-items:center;justify-content:center}
.kd-steps h3{margin-bottom:.3em}

/* --------------------------------------------------------------- reviews */
.kd-stars{color:#f5a623;letter-spacing:2px;font-size:16px}
.kd-review{background:#fff;border:1px solid var(--kd-line);border-radius:var(--kd-radius);padding:24px;
  box-shadow:var(--kd-shadow);display:flex;flex-direction:column}
.kd-review blockquote{border:0;padding:0;margin:10px 0 0;font-size:15.5px;color:#4d5d68;line-height:1.6}
.kd-review .kd-review-who{display:flex;align-items:center;gap:12px;margin-top:auto;padding-top:16px}
.kd-review .kd-review-who img{width:42px;height:42px;border-radius:50%;object-fit:cover;background:var(--kd-teal)}
.kd-review cite{font-style:normal;font-weight:900;color:var(--kd-ink);display:block;font-size:15px}
.kd-review .kd-review-meta{font-size:12.5px;color:#8b9aa4}

/* ------------------------------------------------------------- guarantee */
.kd-guarantee{display:flex;gap:24px;align-items:flex-start;background:#fff;border:1px solid var(--kd-line);
  border-left:5px solid var(--kd-coral);border-radius:var(--kd-radius);padding:28px;box-shadow:var(--kd-shadow)}
.kd-guarantee .fa{font-size:42px;color:var(--kd-coral);line-height:1}

/* ------------------------------------------------------------------- faq */
.kd-faq{max-width:840px;margin:0 auto}
.kd-faq details{background:#fff;border:1px solid var(--kd-line);border-radius:var(--kd-radius);margin-bottom:11px}
.kd-faq summary{padding:17px 22px;font-weight:700;color:var(--kd-ink);cursor:pointer;font-size:17px;
  list-style:none;display:flex;justify-content:space-between;align-items:center;gap:16px}
.kd-faq summary::-webkit-details-marker{display:none}
.kd-faq summary:after{content:"\f107";font-family:FontAwesome;color:var(--kd-coral);flex:0 0 auto}
.kd-faq details[open] summary:after{content:"\f106"}
.kd-faq .kd-faq-a{padding:0 22px 20px;font-size:16px}
.kd-faq .kd-faq-a p:last-child{margin-bottom:0}

/* ------------------------------------------------------------------ form */
.kd-form{background:#fff;border-radius:var(--kd-radius);padding:28px;box-shadow:var(--kd-shadow-lg)}
.kd-form label{display:block;font-weight:700;color:var(--kd-ink);font-size:14.5px;margin-bottom:5px}
.kd-form input,.kd-form select,.kd-form textarea{
  width:100%;padding:13px 14px;border:1px solid var(--kd-line);border-radius:6px;font:inherit;
  font-size:16px;margin-bottom:14px;background:#fbfcfd;color:var(--kd-ink)}
.kd-form input:focus,.kd-form select:focus,.kd-form textarea:focus{border-color:var(--kd-teal);background:#fff}
.kd-form .kd-or{text-align:center;font-size:13.5px;margin:14px 0 10px;color:#93a3ad}
.kd-hp{position:absolute;left:-9999px}

/* -------------------------------------------------------------- cta band */
.kd-cta-band{background:linear-gradient(100deg,var(--kd-coral) 0%,#ff7d64 100%);color:#fff;text-align:center;padding:56px 0}
.kd-cta-band h2{color:#fff;font-size:clamp(25px,3.4vw,36px);margin-bottom:.4em}
.kd-cta-band p{font-size:18px;max-width:56ch;margin:0 auto 22px}
.kd-cta-buttons{display:flex;gap:14px;justify-content:center;flex-wrap:wrap}

/* ---------------------------------------------------------------- footer */
/* Own grid rather than Bootstrap's columns, so the footer is correct even if
   bootstrap.min.css is missing or replaced later. */
.kd-footer .row{display:grid;grid-template-columns:repeat(4,1fr);gap:30px;margin:0}
.kd-footer .row > div{width:auto;float:none;padding:0}
@media (max-width:900px){.kd-footer .row{grid-template-columns:repeat(2,1fr)}}
@media (max-width:560px){.kd-footer .row{grid-template-columns:1fr;gap:22px}}
.kd-footer{background:var(--kd-navy);color:#b9cddb;padding:52px 0 34px;font-size:15.5px}
.kd-footer .kd-foot-h{color:#fff;font-size:15px;text-transform:uppercase;letter-spacing:1.4px;font-weight:900;margin-bottom:16px}
.kd-footer .kd-foot-h .fa{color:var(--kd-coral);margin-right:7px}
.kd-foot-list{list-style:none;padding:0;margin:0 0 26px}
.kd-foot-list li{margin-bottom:9px}
.kd-foot-list a{color:#b9cddb}
.kd-foot-list a:hover,.kd-foot-list a:focus{color:#fff}
.kd-foot-phone{margin:0 0 12px}
.kd-foot-phone a{font-size:27px;font-weight:900;color:#fff}
.kd-foot-phone a:hover{color:var(--kd-coral);text-decoration:none}
.kd-foot-meta{line-height:1.85;font-size:15px}
.kd-foot-name{font-weight:900;color:#fff}
.kd-foot-hours .fa{color:var(--kd-coral)}
.kd-social{list-style:none;padding:0;margin:16px 0 0;display:flex;gap:9px}
.kd-social a{width:38px;height:38px;border-radius:50%;background:rgba(255,255,255,.1);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:16px}
.kd-social a:hover,.kd-social a:focus{background:var(--kd-coral);color:#fff;text-decoration:none}
.kd-bottom{background:var(--kd-navy-deep);color:#8ba4b5;padding:16px 0;font-size:13.5px}
.kd-bottom .wrapper{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;align-items:center}
.kd-bottom p{margin:0}
.kd-bottom-links{list-style:none;display:flex;gap:18px;margin:0;padding:0}
.kd-bottom-links a{color:#8ba4b5}
.kd-bottom-links a:hover{color:#fff}

/* --------------------------------------------------------- sticky + top */
.kd-stickybar{display:none;position:fixed;left:0;right:0;bottom:0;z-index:90;
  box-shadow:0 -3px 18px rgba(0,0,0,.22)}
.kd-stickybar-call{flex:1 1 auto;background:var(--kd-coral);color:#fff;text-align:center;padding:15px 10px;
  font-weight:900;font-size:18px;letter-spacing:.3px}
.kd-stickybar-sms{flex:0 0 68px;background:var(--kd-navy);color:#fff;display:flex;align-items:center;
  justify-content:center;font-size:20px}
.kd-stickybar a:hover,.kd-stickybar a:focus{color:#fff;text-decoration:none}
.kd-backtop{position:fixed;right:18px;bottom:18px;z-index:80;width:46px;height:46px;border-radius:50%;
  border:0;background:var(--kd-navy);color:#fff;font-size:22px;opacity:0;visibility:hidden;transition:.2s}
.kd-backtop.is-on{opacity:.92;visibility:visible}
.kd-backtop:hover{background:var(--kd-coral);opacity:1}

/* --------------------------------------------------------------- tables */
.kd-table{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--kd-line);
  border-radius:var(--kd-radius);overflow:hidden;font-size:16px}
.kd-table caption{caption-side:top;text-align:left;font-size:14px;color:#7c8b95;padding-bottom:8px}
.kd-table th,.kd-table td{padding:14px 16px;border-bottom:1px solid var(--kd-line);text-align:left}
.kd-table thead th{background:var(--kd-navy);color:#fff;font-size:14px;letter-spacing:.6px;text-transform:uppercase}
.kd-table tbody tr:last-child td{border-bottom:0}
.kd-table tbody tr:nth-child(even){background:#fafcfc}

/* ------------------------------------------------------------ area lists */
.kd-arealist{column-count:4;column-gap:26px;list-style:none;padding:0;margin:0;font-size:15.5px}
.kd-arealist li{break-inside:avoid;margin-bottom:8px}
.kd-arealist .fa{color:var(--kd-coral);margin-right:7px}

/* ---------------------------------------------------------------- notes */
.kd-note{background:#fffdf3;border:1px solid #f2e6b8;border-left:4px solid #e9c53f;border-radius:6px;
  padding:16px 20px;font-size:15.5px;color:#6a5a1c}
.kd-note strong{color:#4c4013}

/* ----------------------------------------------------------- responsive */
@media (max-width:1024px){
  .kd-g4{grid-template-columns:repeat(2,1fr)}
  .kd-arealist{column-count:3}
}
@media (max-width:900px){
  .kd-navtoggle{display:block}
  .kd-nav{display:none;border-top:1px solid rgba(255,255,255,.14)}
  .kd-nav.is-open{display:block}
  .kd-nav ul.main{display:block}
  .kd-nav ul.main > li > a{padding:14px 4px;border-bottom:1px solid rgba(255,255,255,.09)}
  .kd-nav ul.submain{position:static;opacity:1;visibility:visible;transform:none;box-shadow:none;
    background:rgba(255,255,255,.05);border-radius:0;padding:4px 0}
  .kd-nav ul.submain a{color:#cddce7;padding:11px 18px}
  .kd-nav ul.submain a:hover{background:rgba(255,255,255,.08)}
  .kd-header-call-txt small{display:none}
  /* The sticky bottom bar already carries text-us on phones, so the header
     only needs the number and the menu toggle. */
  .kd-header-sms{display:none}
  .kd-header-call{min-width:0;padding:8px 14px}
  .kd-header-inner{gap:10px}
  .kd-logo img{max-height:38px}
  .kd-split,.kd-split-wide,.kd-g2,.kd-g3,.kd-steps{grid-template-columns:1fr}
  .kd-trust{grid-template-columns:repeat(2,1fr);margin-top:0}
  .kd-trust > div{border-bottom:1px solid var(--kd-line)}
  .kd-trust > div:nth-child(2n){border-right:0}
  .kd-arealist{column-count:2}
}
@media (max-width:767px){
  body.kd-page{font-size:16px;padding-bottom:62px}   /* room for the sticky bar */
  .kd-stickybar{display:flex}
  .kd-backtop{bottom:76px}
  .kd-sect{padding:44px 0}
  .kd-banner{padding:38px 0 42px}
  .kd-g4{grid-template-columns:1fr}
  .kd-guarantee{flex-direction:column;gap:14px}
  .kd-bottom .wrapper{justify-content:center;text-align:center}
}
@media (max-width:560px){
  .kd-header-call-txt strong{font-size:15px}
  .kd-arealist{column-count:1}
  /* Stack the sub-label under the button text instead of beside it, and stop
     the phone number itself from wrapping mid-number. */
  .kd-btn{width:100%;justify-content:center;text-align:center;flex-wrap:wrap;
    padding:14px 16px;font-size:16px;white-space:nowrap}
  .kd-btn small{flex:0 0 100%;text-align:center;margin-top:3px;white-space:normal}
  .kd-banner-cta{flex-direction:column}
  .kd-cta-buttons{flex-direction:column}
}

/* ------------------------------------------------------------- printing */
@media print{
  .kd-nav,.kd-stickybar,.kd-backtop,.kd-cta-band,.kd-header-actions{display:none!important}
  body.kd-page{font-size:12pt;color:#000}
  .kd-banner{background:none;color:#000}
  .kd-banner h1{color:#000}
}

/* ==========================================================================
   2026 "pop" layer — animated hero, scroll reveals, stat counters, TV mock.
   Everything degrades: with JS off or reduced-motion on, all content is
   visible and static. Bootstrap is gone, so guard its clearfix anyway in
   case an old cached copy loads.
   ========================================================================== */
.kd-footer .row::before,.kd-footer .row::after{content:none!important;display:none!important}
.kd-logo img{height:62px;width:auto;display:block}
@media (max-width:900px){.kd-logo img{height:44px}}

/* ------------------------------------------------------------ hero (home) */
.kd-hero{position:relative;overflow:hidden;color:#fff;
  background:linear-gradient(115deg,#0e1c26 0%,#12212c 45%,#1b3a52 100%)}
.kd-hero:before{ /* slow-moving aurora */
  content:"";position:absolute;inset:-40%;pointer-events:none;
  background:
    radial-gradient(38% 42% at 22% 32%, rgba(255,91,73,.32), transparent 68%),
    radial-gradient(30% 36% at 78% 68%, rgba(113,164,178,.30), transparent 70%),
    radial-gradient(26% 30% at 62% 18%, rgba(255,125,100,.16), transparent 70%);
  animation:kd-aurora 26s ease-in-out infinite alternate}
@keyframes kd-aurora{
  0%{transform:translate3d(-3%,-2%,0) rotate(0deg) scale(1)}
  50%{transform:translate3d(3%,2%,0) rotate(3deg) scale(1.06)}
  100%{transform:translate3d(-2%,3%,0) rotate(-2deg) scale(1.02)}}
.kd-hero:after{ /* faint grid texture */
  content:"";position:absolute;inset:0;pointer-events:none;opacity:.5;
  background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),
                   linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);
  background-size:44px 44px;
  mask-image:radial-gradient(80% 90% at 50% 10%,#000 30%,transparent 100%)}
.kd-hero .wrapper{position:relative;z-index:2;padding-top:74px;padding-bottom:60px}
.kd-hero-grid{display:grid;grid-template-columns:1.08fr .92fr;gap:52px;align-items:center}
.kd-hero h1{color:#fff;font-size:clamp(32px,4.6vw,52px);max-width:none}
.kd-hero .kd-banner-sub{font-size:20px}
.kd-rotate-wrap{display:inline-block;position:relative;color:var(--kd-coral)}
.kd-rotate-wrap .kd-rotate{display:inline-block;min-width:9.2ch}
.kd-rotate.is-out{animation:kd-word-out .3s ease forwards}
.kd-rotate.is-in{animation:kd-word-in .34s ease forwards}
@keyframes kd-word-out{to{opacity:0;transform:translateY(-12px)}}
@keyframes kd-word-in{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.kd-rotate-wrap:after{content:"";position:absolute;left:2px;right:8px;bottom:-4px;height:4px;
  border-radius:2px;background:linear-gradient(90deg,var(--kd-coral),transparent)}

/* stat counters */
.kd-stats{display:grid;grid-template-columns:repeat(4,auto);gap:12px 44px;margin-top:34px;
  padding-top:26px;border-top:1px solid rgba(255,255,255,.14);width:fit-content}
.kd-stat b{display:block;font-size:clamp(24px,2.6vw,32px);font-weight:900;color:#fff;line-height:1.05;
  font-variant-numeric:tabular-nums;white-space:nowrap}
.kd-stat b .kd-plus{color:var(--kd-coral)}
.kd-stat span{font-size:12.5px;letter-spacing:1.6px;text-transform:uppercase;color:#8fb3c9;font-weight:700}

/* CSS-drawn TV with a live review inside */
.kd-tvmock{position:relative;filter:drop-shadow(0 30px 50px rgba(0,0,0,.45))}
.kd-tvmock-frame{background:#05090c;border:4px solid #1f2f3a;border-radius:14px;padding:10px;
  position:relative}
.kd-tvmock-frame:after{content:"";position:absolute;left:50%;bottom:-26px;transform:translateX(-50%);
  width:38%;height:12px;background:linear-gradient(#22333f,#101d26);border-radius:0 0 10px 10px}
.kd-tvmock-screen{border-radius:6px;overflow:hidden;position:relative;min-height:270px;
  background:linear-gradient(140deg,#14293a 0%,#0d1b26 60%,#132c40 100%);
  display:flex;flex-direction:column;justify-content:center;padding:34px 32px}
.kd-tvmock-screen:before{content:"";position:absolute;inset:0;
  background:linear-gradient(105deg,transparent 40%,rgba(255,255,255,.06) 45%,transparent 54%);
  animation:kd-sheen 7s ease-in-out infinite}
@keyframes kd-sheen{0%,55%,100%{transform:translateX(-70%)}25%{transform:translateX(70%)}}
.kd-tvmock .kd-stars{font-size:19px;margin-bottom:10px}
.kd-tvmock blockquote{border:0;margin:0 0 14px;padding:0;color:#e8f1f7;font-size:17.5px;line-height:1.55}
.kd-tvmock cite{font-style:normal;font-weight:900;color:#fff;font-size:14.5px}
.kd-tvmock .kd-review-meta{display:block;font-size:12px;color:#8fb3c9;margin-top:2px}
.kd-tvmock-badge{position:absolute;top:-16px;right:-14px;background:linear-gradient(120deg,var(--kd-coral),#ff8a6d);
  color:#fff;font-weight:900;border-radius:50px;padding:11px 20px;font-size:14px;letter-spacing:.4px;
  box-shadow:0 8px 24px rgba(255,91,73,.45);animation:kd-float 5s ease-in-out infinite;z-index:3}
@keyframes kd-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}

/* ---------------------------------------------------------- page banners */
.kd-banner{position:relative;overflow:hidden}
/* Pages with a real photo behind the banner get more height so the photo reads
   as a full-scale hero rather than a thin strip. */
.kd-banner-img{padding:86px 0 94px;animation:kd-kenburns 24s ease-in-out infinite alternate}
@media (max-width:760px){.kd-banner-img{padding:54px 0 60px}}
@keyframes kd-kenburns{from{background-size:104%}to{background-size:112%}}
@supports not (background-size:104%){.kd-banner-img{animation:none}}

/* ------------------------------------------------------- scroll reveals */
.js .kd-reveal{opacity:0;transform:translateY(26px);transition:opacity .6s ease,transform .6s ease}
.js .kd-reveal.is-in{opacity:1;transform:none}
.js .kd-reveal-l{transform:translateX(-30px)}
.js .kd-reveal-r{transform:translateX(30px)}
.js .kd-reveal-l.is-in,.js .kd-reveal-r.is-in{transform:none}
.js .kd-grid > .kd-reveal:nth-child(2){transition-delay:.08s}
.js .kd-grid > .kd-reveal:nth-child(3){transition-delay:.16s}
.js .kd-grid > .kd-reveal:nth-child(4){transition-delay:.24s}
@media (prefers-reduced-motion: reduce){
  .js .kd-reveal,.js .kd-reveal-l,.js .kd-reveal-r{opacity:1;transform:none;transition:none}
  .kd-hero:before,.kd-tvmock-screen:before,.kd-tvmock-badge,.kd-banner-img{animation:none}}

/* ------------------------------------------------------ section eyebrow */
.kd-eyebrow{position:relative;padding-left:34px}
.kd-eyebrow:before{content:"";position:absolute;left:0;top:50%;width:24px;height:3px;
  border-radius:2px;background:var(--kd-coral);transform:translateY(-50%)}
.kd-sect-head .kd-eyebrow{padding-left:0}
.kd-sect-head .kd-eyebrow:before{position:static;display:inline-block;vertical-align:middle;
  margin-right:10px;transform:none}
.kd-sect-head .kd-eyebrow:after{content:"";display:inline-block;vertical-align:middle;width:24px;height:3px;
  border-radius:2px;background:var(--kd-coral);margin-left:10px}

/* review source badges */
.kd-review{position:relative}
.kd-review .kd-src{position:absolute;top:18px;right:18px;font-size:11px;font-weight:900;
  letter-spacing:1px;text-transform:uppercase;padding:4px 10px;border-radius:20px}
.kd-review .kd-src-google{background:#e8f0fe;color:#1a63c4}
.kd-review .kd-src-yelp{background:#ffe9e6;color:#c41200}

/* card icon chips get a ring */
.kd-card .kd-card-ico{width:58px;height:58px;border-radius:14px;display:flex;align-items:center;
  justify-content:center;font-size:26px;background:linear-gradient(135deg,rgba(255,91,73,.14),rgba(255,91,73,.05));
  border:1px solid rgba(255,91,73,.25)}

@media (max-width:900px){
  .kd-hero-grid{grid-template-columns:1fr}
  .kd-stats{grid-template-columns:repeat(2,auto);gap:18px 36px}
  .kd-tvmock{margin-top:8px}
  .kd-tvmock-badge{right:4px}
}

/* ==========================================================================
   v3 layer — hero rebuild, TV brand strip, mount-type cycler, size chart
   ========================================================================== */

/* hero v3: photo-backed TV mock, glass stat tiles */
.kd-hero .kd-eyebrow{color:#ffb3a8;margin-bottom:14px;display:inline-block}
.kd-hero-kicker{display:flex;align-items:center;gap:10px;margin:0 0 18px;font-size:14px;color:#9fbccd}
.kd-hero-kicker .kd-stars{font-size:15px}
.kd-stats{border-top:0;padding-top:0;gap:14px;width:100%;grid-template-columns:repeat(4,1fr)}
.kd-stat{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12);
  border-radius:10px;padding:14px 16px;backdrop-filter:blur(3px)}
.kd-stat span{display:block;margin-top:2px}
.kd-tvmock-screen{padding:0;min-height:300px}
.kd-tvmock-photos{position:absolute;inset:0}
.kd-tvmock-photo{position:absolute;inset:0;background-position:center;background-size:cover;
  background-repeat:no-repeat;opacity:0;transition:opacity 1.1s ease}
.kd-tvmock-photo.is-on{opacity:1;animation:kd-kenburns-t 22s ease-in-out infinite alternate}
@keyframes kd-kenburns-t{from{transform:scale(1)}to{transform:scale(1.09)}}
.kd-tvmock-quote{position:relative;z-index:2;margin-top:auto;padding:26px 28px 22px;
  background:linear-gradient(transparent, rgba(5,12,18,.88) 34%, rgba(5,12,18,.96))}
.kd-tvmock-screen{display:flex;flex-direction:column;justify-content:flex-end}
.kd-tvmock-quote blockquote{font-size:16px;margin-bottom:10px}
@media (max-width:900px){.kd-stats{grid-template-columns:repeat(2,1fr)}}
@media (prefers-reduced-motion: reduce){.kd-tvmock-photo.is-on{animation:none}.kd-tvmock-photo{transition:none}}

/* TV brand strip — nominative wordmarks, uniform treatment */
.kd-brands{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;
  gap:14px 44px;padding:10px 0 0}
.kd-brands span{font-weight:900;font-size:24px;letter-spacing:2.5px;color:#9fb0ba;
  text-transform:uppercase;transition:color .2s;cursor:default;line-height:1}
.kd-brands span:hover{color:var(--kd-navy)}
.kd-brands span small{font-size:13px;font-weight:700;letter-spacing:1px;vertical-align:super}
.kd-brands-note{text-align:center;font-size:12px;color:#a7b4bc;margin-top:30px}
.kd-dark .kd-brands span{color:#7e99ab}
.kd-dark .kd-brands span:hover{color:#fff}

/* mount-type cycler */
.kd-mounts{position:relative;background:#fff;border:1px solid var(--kd-line);border-radius:var(--kd-radius);
  box-shadow:var(--kd-shadow);overflow:hidden}
.kd-mount-slide{display:none;padding:30px 30px 20px;text-align:center}
.kd-mount-slide.is-on{display:block;animation:kd-word-in .45s ease}
.kd-mount-slide svg{width:100%;max-width:380px;height:auto}
.kd-mount-slide h3{margin:14px 0 4px}
.kd-mount-slide p{font-size:14.5px;max-width:46ch;margin:0 auto 8px}
.kd-mount-dots{display:flex;justify-content:center;gap:10px;padding:14px 0 20px}
.kd-mount-dots button{width:34px;height:8px;border-radius:5px;border:0;background:#dde5e9;cursor:pointer;transition:.2s}
.kd-mount-dots button.is-on{background:var(--kd-coral)}
.kd-mount-dots button:hover{background:var(--kd-teal)}

/* size chart flourish */
.kd-table .kd-dim{font-variant-numeric:tabular-nums;white-space:nowrap}
.kd-table tr.kd-hl td{background:#fff5f3}

/* ==========================================================================
   v4 layer — section rhythm, hero review cycler, brand logos, dark steps
   ========================================================================== */

/* warm tint band so sections alternate white / grey / warm instead of two-tone */
.kd-bg-tint{background:linear-gradient(180deg,#fff6f3 0%,#fdefe9 100%)}
.kd-bg-tint .kd-card,.kd-bg-tint .kd-review{border-color:#f3ddd5}

/* steps on the dark band */
.kd-dark .kd-steps h3{color:#fff}
.kd-dark .kd-steps li p{color:#c3d3de}
.kd-dark .kd-sect-head p{color:#c3d3de}
.kd-dark .kd-steps li:before{box-shadow:0 6px 18px rgba(255,91,73,.4)}

/* hero quote cycler */
.kd-tvq{display:none}
.kd-tvq.is-on{display:block;animation:kd-word-in .55s ease}
.kd-tvq-dots{display:flex;gap:7px;margin-top:12px}
.kd-tvq-dots i{width:8px;height:8px;border-radius:50%;background:rgba(255,255,255,.25)}
.kd-tvq-dots i.is-on{background:var(--kd-coral)}

/* brand logo strip (SVG wordmarks in brand colours) */
.kd-brandlogos{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:26px 54px;padding-top:8px}
.kd-brandlogos svg{height:30px;width:auto;opacity:.92;filter:grayscale(35%);transition:.2s}
.kd-brandlogos svg:hover{opacity:1;filter:none;transform:translateY(-2px)}
@media (max-width:560px){.kd-brandlogos{gap:18px 30px}.kd-brandlogos svg{height:24px}}

/* instagram feed shell */
.kd-ig{min-height:320px}

/* IT comparison table: our column reads as the win */
.kd-table td.kd-hl2{background:#f2fbf7;color:#1c5c44;font-weight:700}

/* ==========================================================================
   v11 polish — calmer card grids, uniform gallery tiles
   ========================================================================== */

/* Card icons: slate by default so a grid of eight cards is not a wall of
   orange. Coral returns on hover and on flagged cards, where it means something. */
.kd-card .kd-card-ico{
  color:var(--kd-navy);
  background:linear-gradient(135deg,rgba(50,82,110,.10),rgba(113,164,178,.10));
  border:1px solid rgba(50,82,110,.16);
  transition:color .2s,background .2s,border-color .2s}
.kd-card:hover .kd-card-ico{
  color:var(--kd-coral);
  background:linear-gradient(135deg,rgba(255,91,73,.13),rgba(255,91,73,.05));
  border-color:rgba(255,91,73,.3)}
.kd-card.kd-flag .kd-card-ico{
  color:var(--kd-coral);
  background:linear-gradient(135deg,rgba(255,91,73,.13),rgba(255,91,73,.05));
  border-color:rgba(255,91,73,.3)}
/* card links: quieter until the card is hovered */
.kd-card .kd-card-link a{color:var(--kd-navy)}
.kd-card:hover .kd-card-link a{color:var(--kd-coral)}

/* chips: teal ticks read as "included", coral stays for actions */
.kd-chips .fa{color:var(--kd-teal)}

/* trust strip: navy icons, coral only underline accent */
.kd-trust .fa{color:var(--kd-navy)}
.kd-trust > div{position:relative}
.kd-trust > div:after{content:"";position:absolute;left:50%;bottom:0;transform:translateX(-50%);
  width:34px;height:3px;border-radius:2px;background:var(--kd-coral);opacity:.55}

/* steps keep coral numbers (they are the point), dark band unchanged */

/* ------------------------------------------------- uniform gallery tiles */
.kd-gallery figure.kd-figure{margin:0;display:flex;flex-direction:column}
.kd-gallery img{width:100%;aspect-ratio:4/5;object-fit:cover;display:block;height:auto}
.kd-gallery figcaption{min-height:86px;display:flex;flex-direction:column;justify-content:flex-start}
.kd-gallery figcaption strong{color:var(--kd-ink);font-size:14.5px}
@supports not (aspect-ratio: 4/5){.kd-gallery img{height:340px}}

/* ---------------------------------------------------------- extra polish */
/* brand selection colour */
::selection{background:var(--kd-coral);color:#fff}

/* Embedded map (contact + service areas) */
.kd-map{border-radius:var(--kd-radius);overflow:hidden;box-shadow:var(--kd-shadow);border:1px solid var(--kd-line)}
.kd-map iframe{display:block;width:100%;height:420px;border:0;filter:saturate(.9)}
@media (max-width:760px){.kd-map iframe{height:300px}}

/* Gallery hover: gentle zoom, image only */
.kd-gallery figure{overflow:hidden}
.kd-gallery img{transition:transform .45s ease}
.kd-gallery figure:hover img{transform:scale(1.045)}
@media (prefers-reduced-motion:reduce){.kd-gallery img{transition:none}.kd-gallery figure:hover img{transform:none}}

/* Authorized-dealer logo strip */
.kd-dealers{margin-top:38px;text-align:center}
.kd-dealers small{display:block;margin-bottom:14px;font-size:12.5px;font-weight:700;letter-spacing:2.5px;text-transform:uppercase;color:var(--kd-body)}
.kd-dealers img{max-width:min(774px,92%);height:auto;opacity:.8;filter:grayscale(1);mix-blend-mode:multiply}

/* sticky header with a shadow once you scroll */
.kd-header{position:sticky;top:0}
.kd-header.is-stuck{box-shadow:0 6px 24px rgba(8,20,30,.35)}

/* gentle attention ring on the header call button (once, on load) */
@keyframes kd-ring{0%{box-shadow:0 0 0 0 rgba(255,91,73,.55)}100%{box-shadow:0 0 0 16px rgba(255,91,73,0)}}
.kd-header-call{animation:kd-ring 1.6s ease-out 1.2s 2}
@media (prefers-reduced-motion: reduce){.kd-header-call{animation:none}}

/* portfolio tiles: subtle zoom on hover */
.kd-gallery figure{overflow:hidden}
.kd-gallery img{transition:transform .5s ease}
.kd-gallery figure:hover img{transform:scale(1.045)}

/* instagram shell: label while the widget loads */
.kd-ig{position:relative}
.kd-ig:before{content:"Loading our latest installs…";position:absolute;inset:0;display:flex;
  align-items:center;justify-content:center;color:#9aa8b1;font-size:14px;z-index:0}
.kd-ig > *{position:relative;z-index:1}

/* rating badge strip (home + reviews) */
.kd-badges{display:flex;justify-content:center;gap:16px;flex-wrap:wrap;margin-top:28px}
.kd-badge{display:inline-flex;align-items:center;gap:10px;background:#fff;border:1px solid var(--kd-line);
  border-radius:50px;padding:10px 22px;box-shadow:var(--kd-shadow);color:var(--kd-ink);font-weight:700;font-size:15px}
.kd-badge .kd-stars{font-size:14px}
.kd-badge small{font-weight:400;color:#7c8b95}
.kd-page .kd-badge,.kd-page .kd-badge:hover,.kd-page .kd-badge:focus{text-decoration:none}
.kd-badge:hover{border-color:var(--kd-teal)}

/* stat band on the reviews page */
.kd-statband{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;max-width:760px;margin:0 auto 8px;text-align:center}
.kd-statband b{display:block;font-size:34px;font-weight:900;color:var(--kd-ink);font-variant-numeric:tabular-nums}
.kd-statband span{font-size:12.5px;letter-spacing:1.4px;text-transform:uppercase;color:#8b9aa4;font-weight:700}
@media(max-width:560px){.kd-statband{grid-template-columns:1fr;gap:12px}}

/* FAQ jump chips */
.kd-jump{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;margin:-8px 0 10px}
.kd-jump a{border:1px solid var(--kd-line);background:#fff;border-radius:30px;padding:8px 18px;
  font-size:14px;font-weight:700;color:var(--kd-navy)}
.kd-jump a:hover{border-color:var(--kd-coral);color:var(--kd-coral);text-decoration:none}

/* footer rating line */
.kd-foot-rating a{color:#fff;font-weight:700}
.kd-foot-rating .kd-stars{font-size:13px}

/* 404 mascot */
.kd-oops{text-align:center;margin-bottom:26px}
.kd-oops img{width:150px;height:auto}
