/* =========================================================
   K TOITURE — GENERAL.CSS
   Palette inspirée du logo :
   rouge profond + gris toiture + noir + blanc
   ========================================================= */

/* ---------- Variables ---------- */
:root{
  --red:#bd012d;
  --red-bright:#dc0038;
  --red-dark:#8f001f;

  --black:#070707;
  --graphite:#17181b;
  --slate:#272a2f;
  --steel:#8c8d91;
  --steel-dark:#696b70;

  --bg:#f4f5f7;
  --paper:#ffffff;
  --paper-soft:#fafafa;

  --text:#18191c;
  --muted:#646b76;
  --light:#f8f9fb;
  --line:rgba(20,20,20,.12);

  --radius:24px;
  --radius-sm:16px;
  --shadow:0 22px 60px rgba(10, 10, 10, .14);
  --shadow-soft:0 14px 34px rgba(10, 10, 10, .10);

  --wrap:min(1180px, 92vw);
}

/* ---------- Reset ---------- */
*{
  box-sizing:border-box;
}

html{
  scroll-behavior:smooth;
}

body{
  margin:0;
  font-family:Manrope, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif;
  color:var(--text);
  background:
    radial-gradient(70vw 40vh at 100% -10%, rgba(189,1,45,.10), transparent 60%),
    radial-gradient(60vw 45vh at -10% 25%, rgba(105,107,112,.16), transparent 62%),
    var(--bg);
}

img{
  max-width:100%;
  height:auto;
  display:block;
}

a{
  color:inherit;
  text-decoration:none;
}

button,
input,
textarea,
select{
  font:inherit;
}

button{
  cursor:pointer;
}

.wrap{
  width:var(--wrap);
  margin-inline:auto;
}

.skip-link{
  position:absolute;
  left:-999px;
  top:1rem;
  z-index:100;
  background:var(--black);
  color:#fff;
  padding:.7rem 1rem;
  border-radius:999px;
}

.skip-link:focus{
  left:1rem;
}

/* ---------- Typo ---------- */
.eyebrow{
  display:inline-flex;
  align-items:center;
  gap:.5rem;
  margin:0 0 .8rem;
  color:var(--red);
  font-size:.78rem;
  font-weight:900;
  letter-spacing:.14em;
  text-transform:uppercase;
}

.eyebrow::before{
  content:"";
  width:34px;
  height:3px;
  background:linear-gradient(90deg, var(--red), var(--steel));
  border-radius:999px;
}

.section-title{
  margin:0;
  color:var(--text);
  font-size:clamp(1.65rem, 3vw, 2.55rem);
  line-height:1.08;
  letter-spacing:-.045em;
  font-weight:900;
}

p{
  color:var(--muted);
  line-height:1.75;
}

strong{
  font-weight:900;
}

/* ---------- Boutons ---------- */
.btn{
  min-height:50px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:.5rem;
  padding:.75rem 1.2rem;
  border-radius:999px;
  border:2px solid transparent;
  font-weight:900;
  letter-spacing:.03em;
  text-transform:uppercase;
  font-size:.86rem;
  transition:
    transform .2s ease,
    box-shadow .2s ease,
    background .2s ease,
    color .2s ease,
    border-color .2s ease;
}

.btn:hover{
  transform:translateY(-2px);
}

.btn--primary{
  color:#fff;
  background:linear-gradient(135deg, var(--red), var(--red-bright));
  box-shadow:0 16px 32px rgba(189,1,45,.24);
}

.btn--primary:hover{
  box-shadow:0 18px 40px rgba(189,1,45,.32);
}

.btn--outline{
  color:var(--graphite);
  background:#fff;
  border-color:rgba(23,24,27,.14);
}

.btn--outline:hover{
  border-color:rgba(189,1,45,.35);
  color:var(--red);
}

.btn--light{
  color:var(--black);
  background:#fff;
  box-shadow:0 16px 34px rgba(0,0,0,.18);
}

.btn:disabled{
  opacity:.6;
  cursor:not-allowed;
  transform:none;
}

/* =========================================================
   QUICKBAR MOBILE
   ========================================================= */
.quickbar{
  position:fixed;
  inset:auto 0 16px 0;
  z-index:60;
  display:flex;
  justify-content:center;
  gap:.75rem;
  pointer-events:none;
}

.quickbar a{
  min-width:120px;
  height:48px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:.5rem;
  padding:0 .95rem;
  border-radius:999px;
  color:#fff;
  background:linear-gradient(135deg, var(--graphite), #050505);
  border:1px solid rgba(255,255,255,.18);
  box-shadow:0 16px 34px rgba(0,0,0,.28);
  font-weight:900;
  pointer-events:auto;
}

.quickbar svg{
  width:18px;
  height:18px;
  fill:currentColor;
}

@media (min-width:980px){
  .quickbar{
    display:none;
  }
}

/* =========================================================
   HERO
   ========================================================= */
.hero{
  position:relative;
  isolation:isolate;
  overflow:hidden;
  min-height:760px;
  padding:1.1rem 0 6rem;
  color:#fff;
  background:
    linear-gradient(135deg, rgba(7,7,7,.96), rgba(23,24,27,.94) 42%, rgba(45,47,53,.90)),
    radial-gradient(70vw 55vh at 70% 15%, rgba(189,1,45,.35), transparent 62%);
}

.hero::after{
  content:"";
  position:absolute;
  inset:auto -6vw -7vw -6vw;
  height:220px;
  z-index:-1;
  background:var(--bg);
  transform:rotate(-3deg);
  transform-origin:left top;
}

.hero__texture{
  position:absolute;
  inset:0;
  pointer-events:none;
  overflow:hidden;
  z-index:-1;
}

.roof-line{
  position:absolute;
  width:520px;
  height:170px;
  border-top:10px solid rgba(255,255,255,.11);
  border-left:10px solid rgba(255,255,255,.11);
  transform:rotate(45deg);
  opacity:.8;
}

.roof-line--one{
  right:7vw;
  top:120px;
}

.roof-line--two{
  left:-120px;
  bottom:190px;
  border-color:rgba(189,1,45,.22);
}

.roof-line--three{
  right:35vw;
  bottom:-70px;
  width:360px;
  height:120px;
  border-color:rgba(140,141,145,.18);
}

.topbar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:1rem;
  padding:.75rem;
  border:1px solid rgba(255,255,255,.14);
  border-radius:999px;
  background:rgba(255,255,255,.06);
  box-shadow:0 18px 50px rgba(0,0,0,.22);
  backdrop-filter:blur(18px);
}

.topbar__brand{
  display:inline-flex;
  align-items:center;
  gap:.75rem;
  min-width:0;
}

.topbar__brand img{
  width:54px;
  height:54px;
  object-fit:contain;
  border-radius:18px;
  background:#fff;
  padding:.25rem;
  box-shadow:0 10px 24px rgba(0,0,0,.28);
}

.topbar__brand span{
  color:#fff;
  font-weight:900;
  font-size:1.05rem;
  letter-spacing:.02em;
  white-space:nowrap;
}

.topbar__nav{
  display:flex;
  align-items:center;
  gap:.3rem;
}

.topbar__nav a{
  color:rgba(255,255,255,.82);
  padding:.7rem .95rem;
  border-radius:999px;
  font-weight:800;
  font-size:.9rem;
  transition:.2s ease;
}

.topbar__nav a:hover{
  color:#fff;
  background:rgba(255,255,255,.10);
}

.topbar__phone{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:44px;
  padding:0 1rem;
  color:#fff;
  background:var(--red);
  border-radius:999px;
  font-weight:900;
  box-shadow:0 12px 28px rgba(189,1,45,.28);
}

.hero__grid{
  display:grid;
  grid-template-columns:minmax(0, 1.05fr) minmax(330px, .72fr);
  gap:3rem;
  align-items:center;
  padding:7rem 0 3rem;
}

.hero__copy h1{
  margin:0;
  color:#fff;
  max-width:820px;
  font-size:clamp(2.5rem, 6vw, 5.7rem);
  line-height:.92;
  letter-spacing:-.08em;
  font-weight:900;
}

.hero__lead{
  max-width:700px;
  margin:1.4rem 0 0;
  color:rgba(255,255,255,.75);
  font-size:clamp(1rem, 1.6vw, 1.16rem);
}

.hero__actions{
  display:flex;
  flex-wrap:wrap;
  gap:.8rem;
  margin-top:1.7rem;
}

.hero__checks{
  display:grid;
  gap:.65rem;
  margin:1.5rem 0 0;
  padding:0;
  list-style:none;
  color:rgba(255,255,255,.84);
  font-weight:700;
}

.hero__checks li{
  display:flex;
  align-items:center;
  gap:.65rem;
}

.check-dot{
  width:18px;
  height:18px;
  flex:0 0 auto;
  display:inline-grid;
  place-items:center;
  border-radius:999px;
  background:rgba(189,1,45,.22);
  border:1px solid rgba(255,255,255,.18);
}

.check-dot::after{
  content:"";
  width:7px;
  height:7px;
  border-radius:999px;
  background:var(--red-bright);
}

.hero__panel{
  position:relative;
  overflow:hidden;
  border-radius:34px;
  padding:1.4rem;
  background:
    linear-gradient(180deg, rgba(255,255,255,.94), rgba(255,255,255,.86)),
    linear-gradient(135deg, rgba(189,1,45,.12), transparent);
  color:var(--text);
  box-shadow:0 30px 80px rgba(0,0,0,.35);
}

.hero__panel::before{
  content:"";
  position:absolute;
  inset:0;
  background:
    linear-gradient(135deg, transparent 0 36%, rgba(189,1,45,.10) 36% 46%, transparent 46%),
    linear-gradient(45deg, transparent 0 58%, rgba(140,141,145,.15) 58% 68%, transparent 68%);
  pointer-events:none;
}

/* HERO — Photo unique toiture */
.hero__panel--photo{
  padding:1rem;
}

.hero-photo{
  position:relative;
  height:310px;
  margin:0;
  overflow:hidden;
  border-radius:28px;
  background:#f2f3f5;
  border:1px solid rgba(0,0,0,.08);
  box-shadow:0 18px 38px rgba(0,0,0,.18);
}

.hero-photo img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
  transition:transform .35s ease;
}

.hero__panel:hover .hero-photo img{
  transform:scale(1.04);
}

.hero-photo::after{
  content:"";
  position:absolute;
  inset:0;
  background:
    linear-gradient(180deg, transparent 42%, rgba(0,0,0,.58)),
    linear-gradient(135deg, rgba(189,1,45,.28), transparent 55%);
  pointer-events:none;
}

.hero-photo::before{
  content:"K Toiture";
  position:absolute;
  left:24px;
  bottom:22px;
  z-index:2;
  color:#fff;
  font-size:1.55rem;
  font-weight:900;
  letter-spacing:-.04em;
  text-shadow:0 4px 16px rgba(0,0,0,.45);
}

@media (max-width:520px){
  .hero-photo{
    height:260px;
    border-radius:24px;
  }

  .hero-photo::before{
    font-size:1.25rem;
  }
}

.panel-lines{
  display:flex;
  gap:.45rem;
  margin:1rem 0;
}

.panel-lines span{
  height:6px;
  border-radius:999px;
  background:var(--steel);
}

.panel-lines span:nth-child(1){
  width:30%;
  background:var(--red);
}

.panel-lines span:nth-child(2){
  width:44%;
}

.panel-lines span:nth-child(3){
  width:20%;
  background:var(--black);
}

.hero__panel h2{
  position:relative;
  margin:.6rem 0 .25rem;
  font-size:1.55rem;
  line-height:1.12;
  letter-spacing:-.04em;
}

.hero__panel p{
  position:relative;
  margin:.4rem 0 1rem;
}

.mini-tiles{
  position:relative;
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  gap:.65rem;
}

.mini-tiles div{
  padding:.85rem;
  border-radius:18px;
  background:rgba(23,24,27,.06);
  border:1px solid rgba(23,24,27,.08);
}

.mini-tiles strong{
  display:block;
  font-size:.82rem;
}

.mini-tiles span{
  display:block;
  margin-top:.15rem;
  color:var(--muted);
  font-size:.72rem;
  line-height:1.35;
}

/* =========================================================
   SERVICE NAV
   ========================================================= */
.service-nav{
  position:relative;
  z-index:4;
  margin-top:-3.4rem;
}

.service-nav__row{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:center;
  gap:.55rem;
  padding:.85rem;
  border-radius:28px;
  background:#fff;
  box-shadow:var(--shadow);
  border:1px solid rgba(23,24,27,.08);
}

.service-nav a{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:42px;
  padding:.55rem .85rem;
  border-radius:999px;
  color:var(--graphite);
  background:var(--paper-soft);
  border:1px solid rgba(23,24,27,.08);
  font-weight:900;
  font-size:.85rem;
  transition:.2s ease;
}

.service-nav a:hover{
  transform:translateY(-2px);
  color:var(--red);
  border-color:rgba(189,1,45,.28);
}

.service-nav .service-nav__cta{
  color:#fff;
  background:var(--red);
  border-color:transparent;
}

/* =========================================================
   INTRO
   ========================================================= */
.intro{
  display:grid;
  grid-template-columns:minmax(0, 1fr) minmax(300px, .72fr);
  gap:2rem;
  align-items:center;
  padding:6rem 0 4rem;
}

.intro__content{
  max-width:780px;
}

.intro__content p{
  margin:1rem 0 0;
}

.intro__visual{
  display:grid;
  gap:1rem;
}

/* =========================================================
   INTRO — Photo unique
   ========================================================= */

.intro-photo{
  position:relative;
  min-height:330px;
  margin:0;
  overflow:hidden;
  border-radius:34px;
  background:#ddd;
  box-shadow:var(--shadow);
}

.intro-photo img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
  transition:transform .35s ease;
}

.intro__visual:hover .intro-photo img{
  transform:scale(1.04);
}

.intro-photo::after{
  content:"";
  position:absolute;
  inset:0;
  background:
    linear-gradient(180deg, transparent 45%, rgba(0,0,0,.45)),
    linear-gradient(135deg, rgba(189,1,45,.18), transparent 55%);
  pointer-events:none;
}

.intro-photo::before{
  content:"Travail propre";
  position:absolute;
  left:22px;
  bottom:20px;
  z-index:2;
  color:#fff;
  font-size:1.45rem;
  font-weight:900;
  letter-spacing:-.03em;
  text-shadow:0 4px 16px rgba(0,0,0,.45);
}

@media (max-width:520px){
  .intro-photo{
    min-height:260px;
    border-radius:24px;
  }

  .intro-photo::before{
    font-size:1.2rem;
  }
}

.material-strip{
  display:grid;
  grid-template-columns:repeat(4, 1fr);
  gap:.6rem;
}

.material-strip span{
  min-height:68px;
  display:grid;
  place-items:center;
  text-align:center;
  border-radius:18px;
  background:#fff;
  border:1px solid rgba(23,24,27,.08);
  box-shadow:var(--shadow-soft);
  color:var(--graphite);
  font-weight:900;
  font-size:.82rem;
}

/* =========================================================
   SERVICES
   ========================================================= */
.services{
  padding:1rem 0 5.5rem;
}

.section-heading{
  max-width:860px;
  margin-bottom:1.6rem;
}

.section-heading--center{
  margin-inline:auto;
  text-align:center;
}

.section-heading--center .eyebrow{
  justify-content:center;
}

.service-grid{
  display:grid;
  grid-template-columns:repeat(3, minmax(0, 1fr));
  gap:1rem;
}

.service-card{
  position:relative;
  overflow:hidden;
  min-height:350px;
  display:flex;
  flex-direction:column;
  padding:1.2rem;
  border-radius:28px;
  background:#fff;
  border:1px solid rgba(23,24,27,.08);
  box-shadow:var(--shadow-soft);
  transition:
    transform .22s ease,
    box-shadow .22s ease,
    border-color .22s ease;
}

.service-card::after{
  content:"";
  position:absolute;
  right:-70px;
  bottom:-95px;
  width:210px;
  height:210px;
  border-radius:50%;
  background:rgba(189,1,45,.07);
}

.service-card:hover{
  transform:translateY(-6px);
  box-shadow:0 24px 58px rgba(10,10,10,.16);
  border-color:rgba(189,1,45,.20);
}

.service-card__top{
  position:relative;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:1rem;
  margin-bottom:1rem;
}

.service-icon{
  width:58px;
  height:58px;
  display:grid;
  place-items:center;
  border-radius:20px;
  color:#fff;
  box-shadow:0 14px 28px rgba(0,0,0,.16);
}

.service-icon svg{
  width:30px;
  height:30px;
  fill:currentColor;
}

.service-icon--red{
  background:linear-gradient(135deg, var(--red), var(--red-bright));
}

.service-icon--dark{
  background:linear-gradient(135deg, var(--black), var(--slate));
}

.service-icon--grey{
  background:linear-gradient(135deg, var(--steel), var(--steel-dark));
}

.service-icon--metal{
  background:linear-gradient(135deg, #5f6268, #b5b7ba);
}

.service-icon--wood{
  background:linear-gradient(135deg, #222, #575044);
}

.service-icon--clean{
  background:linear-gradient(135deg, var(--red-dark), #3b3c40);
}

.service-number{
  color:rgba(23,24,27,.10);
  font-size:2.6rem;
  font-weight:900;
  line-height:1;
}

.service-card h3{
  position:relative;
  margin:0 0 .55rem;
  font-size:1.35rem;
  line-height:1.1;
  letter-spacing:-.035em;
}

.service-card p{
  position:relative;
  margin:0 0 1rem;
}

.service-card ul{
  position:relative;
  margin:auto 0 0;
  padding:0;
  list-style:none;
  display:grid;
  gap:.45rem;
}

.service-card li{
  display:flex;
  align-items:flex-start;
  gap:.5rem;
  color:var(--text);
  font-weight:750;
  font-size:.92rem;
}

.service-card li::before{
  content:"";
  flex:0 0 auto;
  width:7px;
  height:7px;
  margin-top:.55rem;
  border-radius:50%;
  background:var(--red);
}

/* =========================================================
   METHODE
   ========================================================= */
.method{
  padding:5rem 0;
  color:#fff;
  background:
    linear-gradient(135deg, rgba(7,7,7,.96), rgba(39,42,47,.96)),
    var(--graphite);
  border-block:1px solid rgba(255,255,255,.08);
}

.method .section-title{
  color:#fff;
}

.method p{
  color:rgba(255,255,255,.72);
}

.steps{
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  gap:1rem;
  margin-top:1.5rem;
}

.step{
  position:relative;
  overflow:hidden;
  padding:1.3rem;
  min-height:230px;
  border-radius:28px;
  background:rgba(255,255,255,.07);
  border:1px solid rgba(255,255,255,.12);
}

.step::after{
  content:"";
  position:absolute;
  right:-65px;
  top:-65px;
  width:150px;
  height:150px;
  border-radius:50%;
  background:rgba(189,1,45,.30);
}

.step span{
  position:relative;
  width:48px;
  height:48px;
  display:grid;
  place-items:center;
  border-radius:16px;
  color:#fff;
  background:var(--red);
  font-weight:900;
  box-shadow:0 14px 28px rgba(189,1,45,.26);
}

.step h3{
  position:relative;
  margin:1.3rem 0 .4rem;
  font-size:1.25rem;
}

.step p{
  position:relative;
  margin:0;
}

/* =========================================================
   CALLOUT
   ========================================================= */
.callout{
  padding:4rem 0;
  background:
    linear-gradient(135deg, var(--red-dark), var(--red) 58%, var(--red-bright));
  color:#fff;
}

.callout__inner{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:2rem;
}

.callout .eyebrow{
  color:#fff;
}

.callout .eyebrow::before{
  background:#fff;
}

.callout h2{
  margin:0;
  max-width:760px;
  font-size:clamp(1.8rem, 3vw, 2.8rem);
  line-height:1.05;
  letter-spacing:-.05em;
}

.callout p{
  max-width:780px;
  color:rgba(255,255,255,.78);
}

/* =========================================================
   CONTACT
   ========================================================= */
.contact{
  display:grid;
  grid-template-columns:minmax(0, 1.1fr) minmax(300px, .75fr);
  gap:1.2rem;
  align-items:start;
  padding:5rem 0;
}

.quote-card,
.contact-box{
  background:#fff;
  border:1px solid rgba(23,24,27,.08);
  border-radius:28px;
  box-shadow:var(--shadow-soft);
}

.quote-card{
  padding:1.35rem;
}

.quote-card > p{
  margin:1rem 0 1.2rem;
}

.quote-form{
  margin-top:1rem;
}

.form-grid{
  display:grid;
  grid-template-columns:repeat(2, minmax(0, 1fr));
  gap:.9rem;
}

label{
  display:grid;
  gap:.4rem;
  min-width:0;
  color:var(--graphite);
  font-weight:900;
}

label span{
  font-size:.9rem;
}

input,
textarea,
select{
  width:100%;
  min-width:0;
  padding:.95rem 1rem;
  border-radius:16px;
  border:1px solid rgba(23,24,27,.14);
  background:#f9fafb;
  color:var(--text);
  outline:none;
  transition:
    border-color .2s ease,
    box-shadow .2s ease,
    background .2s ease;
}

textarea{
  resize:vertical;
}

input::placeholder,
textarea::placeholder{
  color:#9aa0aa;
}

input:focus,
textarea:focus,
select:focus{
  background:#fff;
  border-color:rgba(189,1,45,.42);
  box-shadow:0 0 0 4px rgba(189,1,45,.10);
}

.full{
  grid-column:1 / -1;
}

.recaptcha{
  overflow:hidden;
}

.form-actions{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:.75rem;
  margin-top:1rem;
}

.form-note{
  min-height:1.5rem;
  margin:.8rem 0 0;
  font-weight:800;
}

.form-note--success{
  color:#14783b;
}

.form-note--error{
  color:var(--red);
}

.contact-aside{
  display:grid;
  gap:1rem;
}

.contact-box{
  padding:1.1rem;
}

.contact-box--brand{
  overflow:hidden;
  position:relative;
  padding-top:1.4rem;
}

.contact-box--brand::before{
  content:"";
  position:absolute;
  inset:0 0 auto 0;
  height:8px;
  background:linear-gradient(90deg, var(--red), var(--steel), var(--black));
}

.contact-box--brand img{
  width:190px;
  max-width:72%;
  margin:0 auto 1rem;
}

.contact-box h3{
  margin:0 0 .5rem;
  font-size:1.18rem;
}

.contact-box p{
  margin:0;
}

.contact-list{
  display:grid;
  gap:.75rem;
  margin:0;
  padding:0;
  list-style:none;
}

.contact-list li{
  display:grid;
  gap:.15rem;
  padding-bottom:.75rem;
  border-bottom:1px solid rgba(23,24,27,.08);
}

.contact-list li:last-child{
  padding-bottom:0;
  border-bottom:0;
}

.contact-list strong{
  color:var(--muted);
  font-size:.78rem;
  text-transform:uppercase;
  letter-spacing:.08em;
}

.contact-list a{
  color:var(--red);
  font-weight:900;
}

.badge-line{
  display:flex;
  align-items:center;
  gap:.45rem;
  padding:.8rem 1rem;
  border-radius:999px;
  background:var(--graphite);
  color:#fff;
  font-weight:900;
  box-shadow:var(--shadow-soft);
}

.badge-line span{
  width:.7rem;
  height:.7rem;
  border-radius:50%;
}

.badge-line span:nth-child(1){
  background:var(--red);
}

.badge-line span:nth-child(2){
  background:var(--steel);
}

.badge-line span:nth-child(3){
  background:#fff;
}

/* =========================================================
   FOOTER
   ========================================================= */
.footer{
  padding:1.5rem 0;
  color:#fff;
  background:#050505;
  border-top:1px solid rgba(255,255,255,.08);
}

.footer__grid{
  display:grid;
  grid-template-columns:1fr auto 1fr;
  gap:1rem;
  align-items:center;
}

.footer a{
  color:#fff;
  border-bottom:1px dashed rgba(255,255,255,.32);
}

.footer__logo img{
  width:76px;
  height:auto;
  padding:.25rem;
  border-radius:16px;
  background:#fff;
}

.footer__legal{
  text-align:right;
  color:rgba(255,255,255,.72);
}

/* =========================================================
   REVEAL
   ========================================================= */
[data-reveal]{
  opacity:0;
  transform:translateY(18px);
  transition:
    opacity .55s ease,
    transform .55s ease;
}

[data-reveal].is-visible{
  opacity:1;
  transform:none;
}

/* =========================================================
   RESPONSIVE
   ========================================================= */
@media (max-width:1080px){
  .hero__grid,
  .intro,
  .contact{
    grid-template-columns:1fr;
  }

  .hero{
    min-height:auto;
  }

  .hero__grid{
    padding:4rem 0 3rem;
  }

  .hero__panel{
    max-width:680px;
  }

  .service-grid{
    grid-template-columns:repeat(2, minmax(0, 1fr));
  }

  .callout__inner{
    align-items:flex-start;
    flex-direction:column;
  }
}

@media (max-width:820px){
  .topbar{
    border-radius:28px;
    align-items:flex-start;
    flex-direction:column;
  }

  .topbar__nav{
    width:100%;
    overflow:auto;
    padding-bottom:.15rem;
  }

  .topbar__phone{
    width:100%;
  }

  .hero__copy h1{
    font-size:clamp(2.45rem, 15vw, 4.5rem);
  }

  .mini-tiles,
  .steps,
  .material-strip{
    grid-template-columns:1fr;
  }

  .service-grid{
    grid-template-columns:1fr;
  }

  .form-grid{
    grid-template-columns:1fr;
  }

  .footer__grid{
    grid-template-columns:1fr;
    text-align:center;
  }

  .footer__logo{
    display:flex;
    justify-content:center;
  }

  .footer__legal{
    text-align:center;
  }
}

@media (max-width:520px){
  .hero{
    padding-top:.7rem;
  }

  .topbar__brand img{
    width:48px;
    height:48px;
  }

  .topbar__nav a{
    padding:.65rem .8rem;
  }

  .hero__actions,
  .form-actions{
    display:grid;
  }

  .btn{
    width:100%;
  }

  .service-nav{
    margin-top:-2.2rem;
  }

  .service-nav__row{
    justify-content:flex-start;
    overflow:auto;
    flex-wrap:nowrap;
  }

  .service-nav a{
    white-space:nowrap;
  }

  .quote-card,
  .contact-box{
    border-radius:22px;
  }

  .hero__panel{
    border-radius:26px;
  }

  .panel-logo{
    min-height:210px;
  }

  .badge-line{
    align-items:flex-start;
    border-radius:20px;
    line-height:1.35;
  }
}