/* KD Roofers v3.0.23 components.css — reusable components only */

.kd-btn,
.kd-button,
.kd-inline-link{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:.55rem;
  border:1px solid transparent;
  clip-path:var(--kd-roof-clip-sm);
  padding:.86rem 1.2rem;
  font-weight:700;
  line-height:1;
  text-decoration:none;
  transition:transform var(--kd-transition),background var(--kd-transition),border-color var(--kd-transition),color var(--kd-transition),box-shadow var(--kd-transition);
}
.kd-btn:hover,
.kd-button:hover{
  transform:translateY(-2px);
  color:inherit;
}
.kd-btn--primary,
.kd-button--red{
  background:var(--kd-red);
  color:#fff;
  box-shadow:0 12px 28px rgba(221,24,59,.24);
}
.kd-btn--primary:hover,
.kd-button--red:hover{
  background:var(--kd-red-dark);
  color:#fff;
}
.kd-btn--dark{
  background:var(--kd-dark);
  color:#fff;
}
.kd-btn--dark:hover{
  background:var(--kd-black);
  color:#fff;
}
.kd-btn--light{
  background:#fff;
  color:var(--kd-ink);
  border-color:rgba(17,17,17,.14);
  box-shadow:0 10px 24px rgba(17,24,39,.06);
}
.kd-btn--light:hover{
  background:var(--kd-cream);
  border-color:rgba(17,17,17,.18);
  color:var(--kd-ink);
}
.kd-btn--outline-light{
  border-color:rgba(255,255,255,.28);
  color:#fff;
}
.kd-btn--outline-light:hover{
  background:#fff;
  color:var(--kd-ink);
}
.kd-button--outline{
  border-color:rgba(17,17,17,.14);
  color:var(--kd-ink);
  background:#fff;
  box-shadow:0 10px 24px rgba(17,24,39,.05);
}
.kd-button--outline:hover{
  border-color:var(--kd-red);
  color:var(--kd-red);
}
.kd-btn-row,
.kd-home-hero__actions,
.kd-service-single-hero__actions{
  display:flex;
  flex-wrap:wrap;
  gap:.85rem;
  align-items:center;
}

.kd-section-heading,
.kd-section-head{
  max-width:820px;
  margin-bottom:clamp(2.1rem,3.4vw,3.4rem);
}
.kd-section-heading--center{
  text-align:center;
  margin-inline:auto;
}
.kd-section-heading--split,
.kd-section-head--split{
  display:grid;
  grid-template-columns:1fr .82fr;
  gap:clamp(1.8rem,3vw,3rem);
  align-items:start;
  max-width:none;
}

.kd-image-mask{
  overflow:hidden;
  clip-path:var(--kd-roof-clip);
  box-shadow:var(--kd-shadow);
}
.kd-image-mask img{
  width:100%;
  height:100%;
  object-fit:cover;
}

.kd-trust-strip{
  overflow:hidden;
  background:var(--kd-black);
  color:#fff;
  border-top:1px solid rgba(255,255,255,.08);
  border-bottom:1px solid rgba(255,255,255,.08);
}
.kd-trust-strip__items{
  display:flex;
  gap:2rem;
  align-items:center;
  width:max-content;
  animation:kdMarquee 28s linear infinite;
  padding:.95rem 0;
}
.kd-trust-strip__item{
  display:inline-flex;
  align-items:center;
  gap:.6rem;
  white-space:nowrap;
  font-weight:700;
  font-size:.9rem;
}
.kd-trust-strip__item img{
  width:18px;
  height:18px;
  filter:brightness(0) invert(1);
}

.kd-service-flow__header{
  max-width:760px;
  margin-bottom:2.25rem;
}
.kd-service-flow__list{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:var(--kd-card-gap);
}
.kd-service-flow__item{
  position:relative;
  isolation:isolate;
  display:flex;
  flex-direction:column;
  min-height:100%;
  padding:clamp(1.45rem,2.35vw,2.25rem);
  background:#fff;
  border:1px solid rgba(17,17,17,.12);
  clip-path:var(--kd-roof-clip);
  box-shadow:0 16px 36px rgba(17,24,39,.065);
  overflow:hidden;
  transition:background .3s ease,border-color .3s ease,box-shadow .3s ease,transform .3s ease;
}
.kd-service-flow__item::before{
  content:"";
  position:absolute;
  left:0;
  top:0;
  width:4px;
  height:clamp(3rem,4.8vw,4.65rem);
  background:var(--kd-red);
  z-index:2;
  pointer-events:none;
  transition:height .32s ease,background .32s ease;
}
.kd-service-flow__item::after{
  content:"";
  position:absolute;
  top:0;
  right:0;
  width:clamp(4.8rem,7vw,6.8rem);
  height:clamp(4.8rem,7vw,6.8rem);
  background:rgba(221,24,59,.055);
  clip-path:polygon(0 0,100% 0,100% 100%);
  z-index:0;
  pointer-events:none;
  transition:background .3s ease,opacity .3s ease;
}
.kd-service-flow__item>*{
  position:relative;
  z-index:1;
}
.kd-service-flow__item:hover{
  background:var(--kd-dark);
  border-color:rgba(255,255,255,.16);
  box-shadow:0 24px 52px rgba(17,24,39,.16);
  transform:translateY(-4px);
}
.kd-service-flow__item:hover::before{
  height:100%;
}
.kd-service-flow__item:hover::after{
  background:rgba(255,255,255,.06);
}
.kd-service-flow__icon{
  width:42px;
  height:42px;
  margin-bottom:1rem;
  transition:filter .3s ease,opacity .3s ease,transform .3s ease;
}
.kd-service-flow__item:hover .kd-service-flow__icon{
  filter:brightness(0) invert(1);
  opacity:.95;
  transform:translateY(-2px);
}
.kd-service-flow__item h3{
  color:var(--kd-ink);
  font-size:clamp(1.05rem,1.22vw,1.16rem);
  line-height:1.18;
  transition:color .3s ease;
}
.kd-service-flow__item p,
.kd-archive-card p,
.kd-blog-card p,
.kd-blog-index-card p{
  line-height:1.52;
}
.kd-service-flow__item p{
  color:var(--kd-muted);
  transition:color .3s ease;
}
.kd-service-flow__item a,
.kd-main-service__card-link,
.kd-archive-card__link,
.kd-blog-index-card__link{
  font-weight:700;
  color:var(--kd-red);
}
.kd-service-flow__item a,
.kd-archive-card__link,
.kd-blog-card__link,
.kd-blog-index-card__link{
  margin-top:auto;
}
.kd-service-flow__item a{
  display:inline-flex;
  align-items:center;
  gap:.45rem;
  width:fit-content;
  transition:color .3s ease,transform .3s ease;
}
.kd-service-flow__item a .kd-link-arrow{
  width:17px;
  height:17px;
  transition:transform .3s ease,filter .3s ease;
}
.kd-service-flow__item:hover h3,
.kd-service-flow__item:hover p,
.kd-service-flow__item:hover a{
  color:#fff;
}
.kd-service-flow__item:hover a .kd-link-arrow{
  filter:brightness(0) invert(1);
  transform:translateX(3px);
}
.kd-about-service-tile,
.kd-project-story-card,
.kd-archive-card{
  position:relative;
  isolation:isolate;
  background:#fff;
  border:1px solid rgba(17,17,17,.12);
  clip-path:var(--kd-roof-clip);
  padding:var(--kd-card-padding);
  box-shadow:0 16px 36px rgba(17,24,39,.075);
  overflow:hidden;
}
.kd-blog-card,
.kd-blog-index-card{
  position:relative;
  isolation:isolate;
  display:flex;
  flex-direction:column;
  min-height:100%;
  background:#fff;
  border:1px solid rgba(17,17,17,.12);
  clip-path:var(--kd-roof-clip);
  padding:var(--kd-card-padding);
  box-shadow:0 16px 36px rgba(17,24,39,.075);
  overflow:hidden;
}
.kd-shared-service-tile{
  position:relative;
  isolation:isolate;
  border:1px solid rgba(17,17,17,.12);
  clip-path:var(--kd-roof-clip);
  box-shadow:0 16px 36px rgba(17,24,39,.075);
  overflow:hidden;
}
.kd-archive-card:hover,
.kd-blog-card:hover,
.kd-blog-index-card:hover{
  border-color:rgba(221,24,59,.28);
  box-shadow:0 22px 48px rgba(17,24,39,.1);
}

.kd-shared-service-mosaic{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:clamp(1.35rem,2.25vw,2.15rem);
}
.kd-shared-service-tile{
  display:flex;
  flex-direction:column;
  justify-content:flex-end;
  min-height:clamp(285px,28vw,380px);
  padding:clamp(1.25rem,2vw,1.9rem);
  background-image:var(--kd-tile-bg);
  background-size:cover;
  background-position:center;
  color:#fff;
}
.kd-shared-service-tile::before{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(180deg,rgba(5,5,5,.36),rgba(5,5,5,.9));
  z-index:0;
  pointer-events:none;
  transition:background .3s ease;
}
.kd-shared-service-tile:hover::before{
  background:linear-gradient(180deg,rgba(5,5,5,.42),rgba(5,5,5,.96));
}
.kd-shared-service-tile>*{
  position:relative;
  z-index:1;
}
.kd-shared-service-tile span{
  position:absolute;
  top:.95rem;
  right:.95rem;
  z-index:2;
  display:grid;
  place-items:center;
  min-width:46px;
  min-height:38px;
  padding:.48rem .68rem;
  background:var(--kd-red);
  color:#fff;
  font-weight:800;
  clip-path:var(--kd-roof-clip-sm);
}
.kd-shared-service-tile h3{
  max-width:620px;
  color:#fff;
  font-size:clamp(1.15rem,1.55vw,1.42rem);
  line-height:1.16;
}
.kd-shared-service-tile p{
  max-width:680px;
  color:rgba(255,255,255,.9);
  font-size:.94rem;
  line-height:1.5;
}
.kd-shared-service-tile a{
  display:inline-flex;
  align-items:center;
  gap:.45rem;
  width:fit-content;
  margin-top:.85rem;
  color:#fff;
  font-weight:800;
}
.kd-shared-service-tile a:hover{
  color:#fff;
}

.kd-emergency-band__inner{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:2rem;
}
.kd-emergency-band .kd-eyebrow{
  color:#fff;
}
.kd-emergency-band .kd-eyebrow::before{
  background:#fff;
}

.kd-split-roof{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  background:var(--kd-dark);
}
.kd-split-roof__panel{
  position:relative;
  min-height:500px;
  display:grid;
  align-items:end;
  overflow:hidden;
}
.kd-split-roof__panel img{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  opacity:.46;
}
.kd-split-roof__panel::after{
  content:"";
  position:absolute;
  inset:0;
  background:rgba(0,0,0,.54);
}
.kd-split-roof__content{
  position:relative;
  z-index:1;
  padding:clamp(2rem,4vw,4rem);
  max-width:620px;
  margin-inline:auto;
  width:min(100%,calc(var(--kd-container-wide)/2 - var(--kd-page-gutter)));
}
.kd-split-roof__content h2{
  color:#fff;
}
.kd-split-roof__content p{
  color:rgba(255,255,255,.82);
}

.kd-storm-story__grid{
  display:grid;
  grid-template-columns:.9fr 1.1fr;
  gap:clamp(2rem,5vw,4.8rem);
  align-items:center;
}
.kd-storm-list{
  display:grid;
  gap:.8rem;
  margin-top:1.5rem;
}
.kd-storm-list span{
  display:flex;
  align-items:center;
  gap:.75rem;
  background:#fff;
  border:1px solid rgba(17,17,17,.1);
  clip-path:var(--kd-roof-clip-sm);
  padding:.95rem 1rem;
  font-weight:700;
  box-shadow:0 10px 24px rgba(17,24,39,.05);
}
.kd-storm-list img{
  width:19px;
  height:19px;
}

.kd-gsap-slider{
  position:relative;
}
.kd-gsap-slider__viewport{
  overflow:hidden;
  clip-path:var(--kd-roof-clip);
}
.kd-gsap-slider__track{
  display:flex;
  will-change:transform;
}
.kd-gsap-slider__slide{
  min-width:100%;
}
.kd-project-slide{
  display:grid;
  grid-template-columns:1fr .9fr;
  align-items:center;
  gap:2rem;
  background:var(--kd-dark);
  color:#fff;
  padding:clamp(1rem,3vw,2rem);
  clip-path:var(--kd-roof-clip);
}
.kd-project-slide__image{
  height:420px;
  clip-path:polygon(0 0,calc(100% - 58px) 0,100% 58px,100% 100%,0 100%);
  overflow:hidden;
  margin:0;
}
.kd-project-slide__image img{
  width:100%;
  height:100%;
  object-fit:cover;
}
.kd-project-slide__content{
  padding:1rem;
}
.kd-project-slide__content h3{
  color:#fff;
}
.kd-project-slide__content p{
  color:rgba(255,255,255,.78);
}
.kd-project-slide__meta{
  color:var(--kd-red);
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.12em;
  font-size:.78rem;
}
.kd-gsap-slider__controls,
.kd-review-slider__controls{
  display:flex;
  gap:.75rem;
  justify-content:flex-end;
  margin-top:1.2rem;
}
.kd-gsap-slider__btn,
.kd-review-slider__controls button{
  display:inline-flex;
  align-items:center;
  gap:.5rem;
  border:1px solid rgba(17,17,17,.14);
  clip-path:var(--kd-roof-clip-sm);
  background:#fff;
  color:var(--kd-ink);
  padding:.78rem 1rem;
  font-weight:700;
  box-shadow:0 10px 24px rgba(17,24,39,.06);
}
.kd-gsap-slider__btn:hover,
.kd-review-slider__controls button:hover{
  background:var(--kd-dark);
  color:#fff;
}
.kd-slider-arrow{
  width:18px;
  height:18px;
}
.kd-slider-arrow--prev{
  transform:rotate(180deg);
}

.kd-why__grid{
  display:grid;
  grid-template-columns:.85fr 1.15fr;
  gap:clamp(2rem,5vw,5rem);
}
.kd-why__item{
  display:grid;
  grid-template-columns:64px 1fr;
  gap:1.25rem;
  padding:1.35rem 0;
}
.kd-why__num,
.kd-about-why__item span{
  display:grid;
  place-items:center;
  width:52px;
  height:52px;
  background:var(--kd-red);
  color:#fff;
  font-weight:700;
  clip-path:var(--kd-roof-clip-sm);
}

.kd-location-showcase__grid,
.kd-contact-location-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:var(--kd-card-gap);
  margin-top:2rem;
}
.kd-location-showcase__card,
.kd-contact-location-card,
.kd-location-tile,
.kd-service-row{
  position:relative;
  display:flex;
  flex-direction:column;
  min-height:100%;
  background:#fff;
  border:1px solid rgba(17,17,17,.1);
  clip-path:var(--kd-roof-clip);
  padding:var(--kd-card-padding);
  box-shadow:0 12px 30px rgba(17,24,39,.06);
  overflow:hidden;
}
.kd-location-showcase__card img{
  clip-path:var(--kd-roof-clip-sm);
  aspect-ratio:4/3;
  object-fit:cover;
  margin-bottom:1rem;
}
.kd-location-showcase__card h3{
  font-size:1.05rem;
}
.kd-location-showcase__city{
  font-weight:700;
  color:var(--kd-red);
  margin-bottom:.5rem;
}
.kd-location-showcase__card .kd-btn,
.kd-contact-location-card .kd-btn{
  margin-top:auto;
}


.kd-process-section{
  position:relative;
  isolation:isolate;
  background:linear-gradient(135deg,#0b0b0b 0%,var(--kd-dark) 56%,#171717 100%);
  color:#fff;
  padding-block:var(--kd-section-y);
  overflow:hidden;
}
.kd-process-section::before{
  content:"";
  position:absolute;
  inset:auto -6vw 0 auto;
  width:min(540px,46vw);
  height:210px;
  background:linear-gradient(135deg,transparent 42%,rgba(221,24,59,.18) 43%,transparent 44%),linear-gradient(145deg,transparent 53%,rgba(255,255,255,.08) 54%,transparent 55%);
  opacity:.75;
  pointer-events:none;
}
.kd-process-section__head,
.kd-process-section__intro{
  max-width:780px;
}
.kd-process-section__head{
  position:relative;
  z-index:1;
  margin:0 auto clamp(2rem,3.4vw,3rem);
  text-align:center;
}
.kd-process-section .kd-eyebrow{
  color:rgba(255,255,255,.84);
}
.kd-process-section .kd-eyebrow::before{
  background:var(--kd-red);
}
.kd-process-section h2,
.kd-process-section h3{
  color:#fff;
}
.kd-process-section__intro,
.kd-process-section p{
  color:rgba(255,255,255,.76);
}
.kd-process-cards{
  position:relative;
  z-index:1;
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:clamp(1rem,1.6vw,1.45rem);
  align-items:stretch;
}
.kd-process-flow{
  position:relative;
  z-index:1;
  display:flex;
  justify-content:center;
  margin:0 auto clamp(1.15rem,2vw,1.8rem);
  pointer-events:none;
}
.kd-process-flow__arrow{
  width:min(760px,72vw);
  max-height:62px;
  opacity:.78;
  filter:drop-shadow(0 10px 22px rgba(221,24,59,.16));
  animation:kdProcessArrow 4.8s ease-in-out infinite;
}
.kd-process-card{
  position:relative;
  isolation:isolate;
  min-height:clamp(220px,20vw,270px);
  display:flex;
  flex-direction:column;
  justify-content:flex-start;
  background:rgba(255,255,255,.055);
  border:1px solid rgba(255,255,255,.14);
  clip-path:var(--kd-roof-clip);
  padding:clamp(1.35rem,2vw,1.9rem);
  color:#fff;
  box-shadow:0 20px 50px rgba(0,0,0,.18);
  overflow:hidden;
}
.kd-process-card::before{
  content:"";
  position:absolute;
  inset:0 auto 0 0;
  width:3px;
  background:var(--kd-red);
  pointer-events:none;
}
.kd-process-card__marker{
  position:relative;
  z-index:1;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:.85rem;
  margin-bottom:clamp(1.15rem,1.7vw,1.55rem);
}
.kd-process-card__number{
  display:grid;
  place-items:center;
  width:56px;
  height:48px;
  background:var(--kd-red);
  color:#fff;
  font-weight:800;
  letter-spacing:.02em;
  clip-path:var(--kd-roof-clip-sm);
  box-shadow:0 14px 30px rgba(221,24,59,.3);
}
.kd-process-card__icon{
  width:48px;
  height:32px;
  padding:.42rem .55rem;
  background:rgba(255,255,255,.1);
  border:1px solid rgba(255,255,255,.12);
  clip-path:var(--kd-roof-clip-sm);
}
.kd-process-card h3{
  position:relative;
  z-index:1;
  color:#fff;
  font-size:clamp(1.03rem,1.2vw,1.18rem);
  margin-bottom:.55rem;
}
.kd-process-card p{
  position:relative;
  z-index:1;
  color:rgba(255,255,255,.76);
  font-size:.96rem;
  line-height:1.55;
}

.kd-faq-template{
  background:var(--kd-white);
}
.kd-faq-template__inner{
  width:min(var(--kd-container-wide),calc(100% - (var(--kd-page-gutter)*2)));
  margin-inline:auto;
}
.kd-faq-template__intro{
  text-align:center;
  max-width:820px;
  margin:0 auto 2.5rem;
}
.kd-faq-list{
  display:grid;
  gap:.9rem;
}
.kd-faq-item{
  background:var(--kd-cream);
  border:1px solid rgba(17,17,17,.1);
  clip-path:var(--kd-roof-clip-sm);
  box-shadow:0 12px 28px rgba(17,24,39,.045);
  overflow:hidden;
}
.kd-faq-question{
  width:100%;
  border:0;
  background:transparent;
  color:var(--kd-ink);
  display:grid;
  grid-template-columns:52px 1fr 42px;
  gap:1rem;
  align-items:center;
  padding:1rem 1.1rem;
  text-align:left;
  font-weight:700;
}
.kd-faq-question__number{
  display:grid;
  place-items:center;
  width:42px;
  height:42px;
  background:var(--kd-red);
  color:#fff;
  clip-path:var(--kd-roof-clip-sm);
}
.kd-faq-question__text{
  font-size:1rem;
}
.kd-faq-icon{
  display:grid;
  place-items:center;
  justify-self:end;
  color:var(--kd-red);
}
.kd-faq-icon__plus,
.kd-faq-icon__minus{
  display:grid;
  place-items:center;
  width:22px;
  height:22px;
}
.kd-faq-icon__svg{
  width:22px;
  height:22px;
}
.kd-faq-icon__minus{
  display:none;
}
.kd-faq-item.is-open .kd-faq-icon__plus{
  display:none;
}
.kd-faq-item.is-open .kd-faq-icon__minus{
  display:grid;
}
.kd-faq-answer{
  padding:0 1.25rem 1.25rem 4.9rem;
}
.kd-faq-answer[hidden]{
  display:none;
}


.kd-review-template{
  position:relative;
  isolation:isolate;
  background:linear-gradient(135deg,#0b0b0b 0%,var(--kd-dark) 58%,#181818 100%);
  color:#fff;
  padding-block:var(--kd-section-y);
  overflow:hidden;
}
.kd-review-template::before{
  content:"";
  position:absolute;
  right:-7vw;
  bottom:clamp(1rem,4vw,3rem);
  width:min(560px,48vw);
  height:180px;
  background:linear-gradient(145deg,transparent 43%,rgba(221,24,59,.2) 44%,transparent 45%),linear-gradient(135deg,transparent 54%,rgba(255,255,255,.08) 55%,transparent 56%);
  opacity:.75;
  pointer-events:none;
}
.kd-review-template__grid{
  position:relative;
  z-index:1;
  display:grid;
  grid-template-columns:minmax(280px,.78fr) minmax(0,1.22fr);
  gap:clamp(2rem,4.5vw,4.75rem);
  align-items:center;
}
.kd-review-template__trust{
  max-width:540px;
}
.kd-review-template h2,
.kd-review-template .kd-heading-lg,
.kd-review-template__trust h2,
.kd-review-template__trust h3{
  color:#fff;
  opacity:1;
}
.kd-review-template__trust .kd-eyebrow{
  color:rgba(255,255,255,.84);
}
.kd-review-template__trust .kd-eyebrow::before{
  background:var(--kd-red);
}
.kd-review-template__trust .kd-body{
  margin-top:.9rem;
  color:rgba(255,255,255,.76);
}
.kd-review-template__rating{
  display:grid;
  gap:.42rem;
  margin-top:1.35rem;
  padding:clamp(1rem,1.6vw,1.35rem);
  background:rgba(221,24,59,.16);
  border:1px solid rgba(255,255,255,.16);
  clip-path:var(--kd-roof-clip-sm);
  box-shadow:none;
}
.kd-review-template__rating strong{
  color:#fff;
}
.kd-review-template__rating span:not(.kd-review-stars){
  color:rgba(255,255,255,.74);
  font-size:.92rem;
}
.kd-review-stars{
  display:flex;
  gap:.22rem;
  align-items:center;
}
.kd-review-star{
  width:17px;
  height:17px;
}
.kd-review-template__slider{
  min-width:0;
}
.kd-review-template__viewport{
  overflow:hidden;
  filter:drop-shadow(0 24px 54px rgba(0,0,0,.28));
}
.kd-review-slider{
  display:grid;
}
.kd-review-slide{
  position:relative;
  background:#fff;
  color:var(--kd-ink);
  border:1px solid rgba(255,255,255,.2);
  border-left:4px solid var(--kd-red);
  clip-path:var(--kd-roof-clip);
  padding:clamp(1.45rem,2.8vw,2.65rem);
  min-height:clamp(300px,28vw,420px);
  display:flex;
  flex-direction:column;
  justify-content:center;
  overflow:hidden;
}
.kd-review-slide__top{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:1rem;
  margin-bottom:clamp(1.05rem,1.8vw,1.55rem);
}
.kd-review-slide__label{
  display:inline-flex;
  align-items:center;
  min-height:42px;
  padding:.65rem .9rem;
  background:var(--kd-red);
  color:#fff;
  font-size:.76rem;
  font-weight:800;
  letter-spacing:.12em;
  text-transform:uppercase;
  clip-path:var(--kd-roof-clip-sm);
}
.kd-review-quote-icon{
  width:clamp(42px,4vw,64px);
  height:clamp(42px,4vw,64px);
}
.kd-review-slide__stars{
  margin-bottom:clamp(.9rem,1.5vw,1.25rem);
}
.kd-review-slide__text{
  max-width:880px;
  color:var(--kd-ink);
  font-size:clamp(1.08rem,1.55vw,1.42rem);
  line-height:1.44;
  letter-spacing:-.018em;
  font-weight:650;
}
.kd-review-slide p,
.kd-review-slide strong:not(.kd-review-slide__source),
.kd-review-slide span:not(.kd-review-slide__label){
  color:var(--kd-ink);
}
.kd-review-slide__source{
  display:inline-flex;
  align-items:center;
  gap:.55rem;
  margin-top:clamp(1rem,1.8vw,1.45rem);
  color:var(--kd-red);
  font-weight:800;
  letter-spacing:.04em;
}
.kd-review-slide__source::before{
  content:"";
  width:32px;
  height:2px;
  background:var(--kd-red);
  clip-path:polygon(0 0,100% 0,88% 100%,0 100%);
}
.kd-review-template .kd-review-slider__controls{
  justify-content:flex-start;
  margin-top:1.2rem;
}
.kd-review-template .kd-review-slider__controls button{
  border-color:rgba(255,255,255,.18);
  background:#fff;
  color:var(--kd-ink);
  box-shadow:none;
}
.kd-review-template .kd-review-slider__controls button:hover{
  background:var(--kd-red);
  border-color:var(--kd-red);
  color:#fff;
}

.kd-blog-preview-home__grid,
.kd-blog-index__grid,
.kd-archive-grid,
.kd-project-story-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:var(--kd-card-gap);
}
.kd-blog-card__media,
.kd-blog-index-card__media,
.kd-archive-card__media{
  display:block;
  margin:0;
}
.kd-blog-card__media img,
.kd-blog-index-card__media img,
.kd-archive-card__media img{
  width:100%;
  aspect-ratio:4/3;
  object-fit:cover;
  clip-path:polygon(0 0,calc(100% - 28px) 0,100% 28px,100% 100%,0 100%);
}
.kd-blog-card__content,
.kd-blog-index-card__content,
.kd-archive-card__content{
  padding:var(--kd-card-padding);
}
.kd-blog-card__date,
.kd-blog-index-card__meta,
.kd-archive-card__meta{
  font-size:.78rem;
  font-weight:700;
  color:var(--kd-red);
  text-transform:uppercase;
  letter-spacing:.1em;
}

.kd-blog-card__link,
.kd-blog-index-card__link,
.kd-archive-card__link{
  display:inline-flex;
  align-items:center;
  gap:.48rem;
  width:fit-content;
  min-height:42px;
  padding:.72rem 1rem;
  margin-top:auto;
  background:var(--kd-dark);
  color:#fff;
  border:1px solid var(--kd-dark);
  clip-path:var(--kd-roof-clip-sm);
  box-shadow:0 12px 28px rgba(17,24,39,.09);
  font-weight:800;
}
.kd-blog-card__link:hover,
.kd-blog-index-card__link:hover,
.kd-archive-card__link:hover{
  background:var(--kd-cream);
  border-color:rgba(17,17,17,.16);
  color:var(--kd-ink);
}
.kd-blog-card__link .kd-inline-arrow,
.kd-blog-index-card__link .kd-inline-arrow,
.kd-archive-card__link .kd-inline-arrow{
  width:17px;
  height:17px;
  filter:brightness(0) invert(1);
}
.kd-blog-card__link:hover .kd-inline-arrow,
.kd-blog-index-card__link:hover .kd-inline-arrow,
.kd-archive-card__link:hover .kd-inline-arrow{
  filter:none;
}
.kd-pagination{
  display:flex;
  gap:.5rem;
  justify-content:center;
  margin-top:2rem;
}
.kd-pagination a,
.kd-pagination span{
  display:grid;
  place-items:center;
  min-width:40px;
  height:40px;
  border:1px solid var(--kd-line);
  font-weight:700;
  clip-path:var(--kd-roof-clip-sm);
}
.kd-pagination .current{
  background:var(--kd-red);
  color:#fff;
  border-color:var(--kd-red);
}

.kd-back-to-top{
  position:fixed;
  right:7.2rem;
  bottom:1.35rem;
  z-index:850;
  width:48px;
  height:48px;
  border:0;
  clip-path:var(--kd-roof-clip-sm);
  background:var(--kd-red);
  color:#fff;
  display:grid;
  place-items:center;
  box-shadow:var(--kd-shadow);
  opacity:0;
  visibility:hidden;
  transform:translateY(10px);
  transition:opacity var(--kd-transition),visibility var(--kd-transition),transform var(--kd-transition);
}
.kd-back-to-top.is-visible{
  opacity:1;
  visibility:visible;
  transform:none;
}
.kd-back-to-top__icon{
  width:22px;
  height:22px;
  filter:brightness(0) invert(1);
}



/* v3.0.59 performance, accessibility, and GHL form refinements */
.kd-nowrap{white-space:nowrap}
.kd-ghl-form-embed{width:100%;min-width:0}
.kd-ghl-form-embed iframe{width:100%;border:0;display:block}
.kd-project-story-card{transition:opacity .28s ease,transform .28s ease}
.kd-project-story-card:hover{transform:translateY(-8px)}
.kd-project-story-card img{transition:transform .45s ease}
.kd-project-story-card:hover img{transform:scale(1.045)}
.kd-project-story-card.is-filtering-out{opacity:0;transform:translateY(18px) scale(.97)}
.kd-gsap-slider__toggle[aria-pressed="true"]{background:var(--kd-dark);color:#fff}
