/* ============================================================
   IMPAC PROJECTS — shared sub-page components
   Loaded after concept-2.css on all pages.
   ============================================================ */

/* current page in nav */
.nav a[aria-current="page"]{color:var(--vermilion);opacity:1;}

/* ---------- page hero ---------- */
.page-hero{
  position:relative;display:flex;align-items:flex-end;
  min-height:min(58svh,32rem);color:#fff;
}
.page-hero-bg{position:absolute;inset:0;overflow:hidden;}
.page-hero-bg img{width:100%;height:100%;object-fit:cover;}
.page-hero-bg::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(to top,rgba(10,9,7,.84) 0%,rgba(10,9,7,.45) 55%,rgba(10,9,7,.38) 100%);
}
.page-hero-in{
  position:relative;width:100%;
  padding-top:8rem;
  padding-bottom:clamp(2.2rem,5vw,3.2rem);
}
.page-hero .eyebrow{color:#fff;margin-bottom:1rem;}
.page-hero h1{font-size:clamp(2.3rem,5.6vw,4.4rem);max-width:18ch;}
.page-hero p{
  margin-top:1.1rem;max-width:40rem;
  color:rgba(255,255,255,.88);font-size:clamp(1.02rem,1.4vw,1.2rem);
}
.page-hero--plain{background:var(--charcoal);min-height:0;}
.page-hero--plain .page-hero-in{padding-top:clamp(8rem,14vw,10rem);}

/* ---------- generic section ---------- */
.section{padding-block:clamp(4.5rem,10vw,8rem);}
.section--flush-top{padding-top:0;}
.section .sec-head p{color:var(--ink-soft);}

/* ---------- detail layout (service/about pages) ---------- */
.detail-grid{
  display:grid;grid-template-columns:1.15fr .85fr;
  gap:clamp(2.5rem,6vw,5rem);align-items:start;
}
.detail-copy h2{font-size:clamp(1.8rem,3.4vw,2.7rem);margin-top:1rem;}
.detail-copy h2 em{font-style:normal;color:var(--vermilion);}
.detail-copy>p{margin-top:1.2rem;color:var(--ink-soft);max-width:44rem;}
.aside-card{
  border:1px solid var(--line);border-radius:var(--radius);background:#fff;
  padding:1.7rem 1.7rem 1.9rem;
  position:sticky;top:6.5rem;
}
.aside-card .eyebrow{margin-bottom:1rem;}
.check-list{list-style:none;}
.check-list li{
  display:flex;gap:.7rem;align-items:baseline;
  padding-block:.6rem;font-size:.97rem;font-weight:500;
}
.check-list li+li{border-top:1px solid var(--line);}
.check-list li::before{
  content:"";flex-shrink:0;width:.5rem;height:.6rem;background:var(--vermilion);
  clip-path:polygon(0 0,55% 0,100% 50%,55% 100%,0 100%,42% 50%);
}
.aside-card .btn{width:100%;margin-top:1.4rem;}

/* ---------- wide image band ---------- */
.band-img{border-radius:var(--radius);overflow:hidden;}
.band-img img{width:100%;height:clamp(16rem,42vw,27rem);object-fit:cover;}
.band-img--full img{height:auto;aspect-ratio:2.35/1;object-position:center bottom;}
@media (max-width:720px){
  .band-img--full img{aspect-ratio:16/10;}
}

/* ---------- other services links ---------- */
.more-svc{display:grid;grid-template-columns:repeat(3,1fr);gap:1.4rem;}
.more-svc a{
  display:flex;align-items:center;justify-content:space-between;gap:1rem;
  border:1px solid var(--line);border-radius:var(--radius);background:#fff;
  padding:1.3rem 1.4rem;
  text-decoration:none;font-weight:700;font-size:1.02rem;
  transition:border-color .25s,color .25s;
}
.more-svc a::after{
  content:"";flex-shrink:0;width:.6rem;height:.72rem;background:var(--vermilion);
  clip-path:polygon(0 0,55% 0,100% 50%,55% 100%,0 100%,42% 50%);
  transition:translate .25s ease;
}
.more-svc a:hover{border-color:var(--ink);color:var(--vermilion);}
.more-svc a:hover::after{translate:4px 0;}

/* ---------- gallery (projects) ---------- */
.gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(1rem,2vw,1.5rem);}
.gallery figure{position:relative;border-radius:var(--radius);overflow:hidden;isolation:isolate;}
.gallery img{width:100%;aspect-ratio:4/3;object-fit:cover;transition:scale .6s ease;}
.gallery figure:hover img{scale:1.05;}
.gallery figcaption{
  position:absolute;inset:auto 0 0 0;z-index:1;
  padding:2.2rem 1.2rem .95rem;
  background:linear-gradient(to top,rgba(10,9,7,.78),rgba(10,9,7,0));
  color:#fff;font-size:.88rem;font-weight:600;
}
.gallery-more{display:flex;justify-content:center;margin-top:clamp(2rem,4vw,3rem);}

/* ---------- contact ---------- */
.contact-grid{
  display:grid;grid-template-columns:.85fr 1.15fr;
  gap:clamp(2.5rem,6vw,5rem);align-items:start;
}
.contact-info h2{font-size:clamp(1.8rem,3.4vw,2.7rem);margin-top:1rem;}
.contact-info>p{margin-top:1.2rem;color:var(--ink-soft);}
.info-rows{margin-top:1.8rem;border-top:1px solid var(--line);}
.info-rows>div{
  display:grid;grid-template-columns:8.5rem 1fr;gap:1rem;
  padding-block:.95rem;border-bottom:1px solid var(--line);
}
.info-rows dt{
  font-size:.78rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  color:var(--ink-soft);align-self:center;
}
.info-rows dd{font-weight:600;}
.info-rows dd a{text-decoration:none;}
.info-rows dd a:hover{color:var(--vermilion);}
.form-card{
  border:1px solid var(--line);border-radius:var(--radius);background:#fff;
  padding:clamp(1.6rem,3vw,2.4rem);
}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.1rem 1.2rem;}
.field{display:flex;flex-direction:column;gap:.4rem;}
.field--full{grid-column:1/-1;}
.field label{font-size:.85rem;font-weight:700;}
.field input,.field select,.field textarea{
  font:inherit;font-size:.97rem;color:var(--ink);
  background:var(--paper);border:1px solid var(--line);border-radius:10px;
  padding:.8rem .95rem;
}
.field textarea{min-height:8.5rem;resize:vertical;}
.form-card .btn{margin-top:1.4rem;}
.form-note{margin-top:.9rem;font-size:.85rem;color:var(--ink-soft);}

/* ---------- statement band ---------- */
.stmt-band{background:var(--charcoal);color:var(--paper);padding-block:clamp(3.5rem,7vw,5.5rem);}
.stmt-band .eyebrow{margin-bottom:1.2rem;}
.stmt-band .display{font-size:clamp(1.7rem,3.6vw,2.8rem);max-width:28ch;}
.stmt-band .display em{font-style:normal;color:var(--vermilion);}

/* ---------- duo gallery variant ---------- */
.gallery--duo{grid-template-columns:repeat(2,1fr);}

/* ---------- FAQ accordion ---------- */
.faq{max-width:52rem;border-top:1px solid var(--line);}
.faq details{border-bottom:1px solid var(--line);}
.faq summary{
  display:flex;align-items:center;justify-content:space-between;gap:1.2rem;
  padding-block:1.15rem;cursor:pointer;list-style:none;
  font-weight:700;font-size:1.02rem;
  transition:color .2s;
}
.faq summary::-webkit-details-marker{display:none;}
.faq summary::after{
  content:"";flex-shrink:0;width:.6rem;height:.72rem;background:var(--vermilion);
  clip-path:polygon(0 0,55% 0,100% 50%,55% 100%,0 100%,42% 50%);
  transition:rotate .25s ease;
}
.faq summary:hover{color:var(--vermilion);}
.faq details[open] summary::after{rotate:90deg;}
.faq details p{padding-bottom:1.25rem;color:var(--ink-soft);max-width:46rem;}

/* ---------- expectation checklist columns ---------- */
.check-cols{display:grid;grid-template-columns:1fr 1fr;gap:0 clamp(2rem,5vw,4rem);align-items:start;}

/* ---------- responsive ---------- */
@media (max-width:960px){
  .detail-grid,.contact-grid{grid-template-columns:1fr;}
  .aside-card{position:static;}
  .more-svc{grid-template-columns:1fr;}
  .gallery{grid-template-columns:repeat(2,1fr);}
  .form-grid{grid-template-columns:1fr;}
  .check-cols{grid-template-columns:1fr;gap:0;}
  .check-cols .check-list+.check-list li:first-child{border-top:1px solid var(--line);}
}
@media (max-width:640px){
  .gallery{grid-template-columns:1fr;}
  .gallery--duo{grid-template-columns:1fr;}
  .info-rows>div{grid-template-columns:1fr;gap:.15rem;}
}
