/* ========================================================================
   iBuild Queensland — static rebuild
   Design tokens
   Ink:      #23241F  (warm near-black)
   Concrete: #EFEDE8  (warm neutral background)
   Panel:    #FFFFFF
   Green:    #4F7A34  (primary brand green, muted)
   Green Lt: #7CC53F  (bright brand accent — used sparingly)
   Timber:   #8B5A34  (warm accent for CTAs / secondary highlight)
   Text-2:   #6B6D63  (secondary text)
   Line:     #D9D5C9  (hairline rule)
   ======================================================================== */

@import url('https://fonts.googleapis.com/css2?family=Archivo:wght@500;600;700;800&family=Source+Sans+3:wght@400;500;600;700&display=swap');

:root{
  --ink:#23241F;
  --concrete:#EFEDE8;
  --panel:#FFFFFF;
  --green:#4F7A34;
  --green-lt:#7CC53F;
  --timber:#8B5A34;
  --text-2:#6B6D63;
  --line:#D9D5C9;
  --max:1180px;
}

*,*::before,*::after{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  font-family:'Source Sans 3', sans-serif;
  color:var(--ink);
  background:var(--concrete);
  font-size:17px;
  line-height:1.6;
}
img{max-width:100%;display:block;}
a{color:inherit;text-decoration:none;}
h1,h2,h3,h4{
  font-family:'Archivo', sans-serif;
  font-weight:700;
  line-height:1.12;
  margin:0 0 .5em;
  letter-spacing:-.01em;
}
h1{font-size:clamp(2.1rem,4.4vw,3.4rem); font-weight:800;}
h2{font-size:clamp(1.6rem,3vw,2.3rem);}
h3{font-size:1.25rem;}
p{margin:0 0 1.1em; max-width:64ch; color:var(--ink);}
.text-2{color:var(--text-2);}
ul.plain{list-style:none;margin:0;padding:0;}

.wrap{max-width:var(--max); margin:0 auto; padding:0 28px;}
.section{padding:72px 0;}
.section--tight{padding:48px 0;}
.section--panel{background:var(--panel);}

/* rule / spec-strip motif, used for factual data only */
.spec-strip{
  display:flex; flex-wrap:wrap; gap:0;
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
  margin:0 0 40px;
}
.spec-strip .spec{
  flex:1 1 160px;
  padding:16px 24px 16px 0;
  border-right:1px solid var(--line);
}
.spec-strip .spec:last-child{border-right:none;}
.spec .spec-num{font-family:'Archivo',sans-serif; font-weight:800; font-size:1.7rem; color:var(--green);}
.spec .spec-label{color:var(--text-2); font-size:.92rem;}

/* ---------- header ---------- */
header.site{
  position:sticky; top:0; z-index:50;
  background:rgba(239,237,232,.96);
  backdrop-filter:blur(6px);
  border-bottom:1px solid var(--line);
}
.header-inner{
  display:flex; align-items:center; justify-content:space-between;
  padding:14px 0;
}
.logo img{height:46px;}
nav.primary{display:flex; align-items:center; gap:26px;}
nav.primary a{
  font-size:.96rem; font-weight:600; color:var(--ink);
  padding:6px 0; border-bottom:2px solid transparent;
}
nav.primary a:hover, nav.primary a.active{border-bottom-color:var(--green);}
.header-cta{display:flex; align-items:center; gap:18px;}
.phone-link{font-weight:700; font-family:'Archivo',sans-serif; white-space:nowrap;}
.btn{
  display:inline-block; background:var(--green); color:#fff;
  padding:12px 22px; font-weight:700; font-family:'Archivo',sans-serif;
  font-size:.92rem; border:none; cursor:pointer; letter-spacing:.01em;
}
.btn:hover{background:var(--ink);}
.btn.outline{background:transparent; border:1.5px solid var(--ink); color:var(--ink);}
.btn.outline:hover{background:var(--ink); color:#fff;}
.btn.timber{background:var(--timber);}
.btn.timber:hover{background:var(--ink);}

.nav-toggle{display:none; background:none; border:none; cursor:pointer; padding:6px;}
.nav-toggle span{display:block; width:26px; height:2px; background:var(--ink); margin:6px 0;}

/* ---------- hero ---------- */
.hero{
  position:relative;
  min-height:64vh;
  display:flex; align-items:flex-end;
  color:#fff;
  background-size:cover; background-position:center;
}
.hero::after{
  content:''; position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(35,36,31,.15) 0%, rgba(35,36,31,.82) 100%);
}
.hero-inner{position:relative; z-index:1; padding:64px 0 52px;}
.hero .kicker{
  font-family:'Archivo',sans-serif; font-weight:700; color:var(--green-lt);
  font-size:.95rem; margin-bottom:14px;
}
.hero h1{color:#fff; max-width:16ch;}
.hero p.lede{color:#e7e5dd; max-width:52ch; font-size:1.12rem;}
.hero-cta{display:flex; gap:14px; margin-top:26px; flex-wrap:wrap;}

.page-hero{
  min-height:38vh;
}

/* ---------- inner page header (no image) ---------- */
.simple-header{
  background:var(--ink); color:#fff; padding:64px 0 44px;
}
.simple-header .kicker{color:var(--green-lt); font-family:'Archivo',sans-serif; font-weight:700; margin-bottom:10px;}
.simple-header h1{color:#fff; margin-bottom:6px;}
.simple-header p{color:#cfcdc3; margin:0;}

/* ---------- generic layout helpers ---------- */
.grid-2{display:grid; grid-template-columns:1.1fr .9fr; gap:56px; align-items:center;}
.grid-3{display:grid; grid-template-columns:repeat(3,1fr); gap:32px;}
.grid-4{display:grid; grid-template-columns:repeat(4,1fr); gap:24px;}
@media(max-width:900px){
  .grid-2{grid-template-columns:1fr; gap:32px;}
  .grid-3{grid-template-columns:1fr 1fr;}
  .grid-4{grid-template-columns:1fr 1fr;}
}
@media(max-width:560px){
  .grid-3{grid-template-columns:1fr;}
  .grid-4{grid-template-columns:1fr;}
}

.eyebrow{
  color:var(--green); font-family:'Archivo',sans-serif; font-weight:700; font-size:.98rem; margin-bottom:10px;
}
.rule{border:none; border-top:1px solid var(--line); margin:48px 0;}

.card{
  background:var(--panel); border:1px solid var(--line); padding:30px;
}
.card h3{margin-bottom:10px;}

.img-frame{border:1px solid var(--line); overflow:hidden;}
.img-frame img{width:100%; height:100%; object-fit:cover;}

/* services index */
.service-row{
  display:grid; grid-template-columns:.9fr 1.1fr; gap:0;
  border-bottom:1px solid var(--line);
}
.service-row:first-child{border-top:1px solid var(--line);}
.service-row .s-media{aspect-ratio:4/3; overflow:hidden;}
.service-row .s-media img{width:100%; height:100%; object-fit:cover; transition:transform .5s ease;}
.service-row:hover .s-media img{transform:scale(1.04);}
.service-row .s-body{padding:44px 8px 44px 48px; display:flex; flex-direction:column; justify-content:center;}
.service-row .s-tag{color:var(--text-2); font-size:.9rem; margin-bottom:8px;}
.service-row .s-link{margin-top:14px; font-weight:700; color:var(--green); font-family:'Archivo',sans-serif;}
@media(max-width:800px){
  .service-row{grid-template-columns:1fr;}
  .service-row .s-body{padding:28px 4px;}
}

/* portfolio grid */
.portfolio-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:4px;}
.portfolio-grid figure{margin:0; position:relative; aspect-ratio:4/3; overflow:hidden;}
.portfolio-grid img{width:100%; height:100%; object-fit:cover; transition:transform .5s ease;}
.portfolio-grid figure:hover img{transform:scale(1.06);}
.portfolio-grid figcaption{
  position:absolute; left:0; right:0; bottom:0; padding:14px 16px;
  background:linear-gradient(0deg, rgba(35,36,31,.85), transparent);
  color:#fff; font-size:.9rem; font-weight:600;
}
@media(max-width:800px){.portfolio-grid{grid-template-columns:1fr 1fr;}}
@media(max-width:500px){.portfolio-grid{grid-template-columns:1fr;}}

/* testimonials */
.testi{border-left:3px solid var(--green); padding-left:22px;}
.testi p{font-size:1.08rem; font-style:italic; color:var(--ink);}
.testi cite{font-style:normal; font-weight:700; font-family:'Archivo',sans-serif; font-size:.92rem;}

/* team */
.team-card{text-align:left;}
.team-card .img-frame{aspect-ratio:1/1; margin-bottom:16px;}
.team-card .role{color:var(--green); font-weight:600; font-size:.92rem; margin-bottom:10px;}
.team-card .contact-line{font-size:.9rem; color:var(--text-2);}

/* checklist */
ul.checklist{list-style:none; margin:0 0 24px; padding:0;}
ul.checklist li{
  position:relative; padding-left:28px; margin-bottom:10px; max-width:60ch;
}
ul.checklist li::before{
  content:''; position:absolute; left:0; top:9px; width:9px; height:9px; background:var(--green);
}

/* CTA band */
.cta-band{
  background:var(--ink); color:#fff; padding:64px 0;
}
.cta-band h2{color:#fff;}
.cta-band p{color:#cfcdc3;}
.cta-band .btn.outline{border-color:#fff; color:#fff;}
.cta-band .btn.outline:hover{background:#fff; color:var(--ink);}

/* forms */
form.site-form{max-width:640px;}
form.site-form label{
  display:block; font-weight:600; font-family:'Archivo',sans-serif; font-size:.9rem; margin:0 0 6px;
}
form.site-form .field{margin-bottom:20px;}
form.site-form input, form.site-form textarea, form.site-form select{
  width:100%; padding:13px 14px; border:1px solid var(--line); background:#fff;
  font-family:'Source Sans 3',sans-serif; font-size:1rem; color:var(--ink);
}
form.site-form input:focus, form.site-form textarea:focus, form.site-form select:focus{
  outline:2px solid var(--green); outline-offset:1px;
}
form.site-form .row-2{display:grid; grid-template-columns:1fr 1fr; gap:20px;}
@media(max-width:600px){form.site-form .row-2{grid-template-columns:1fr;}}

/* footer */
footer.site{background:var(--ink); color:#cfcdc3; padding:56px 0 26px;}
footer.site .foot-grid{display:grid; grid-template-columns:1.3fr 1fr 1fr 1fr; gap:36px;}
footer.site h4{color:#fff; font-size:.98rem; margin-bottom:16px;}
footer.site a{color:#cfcdc3;}
footer.site a:hover{color:var(--green-lt);}
footer.site .foot-logo{height:40px; margin-bottom:14px; filter:brightness(0) invert(1);}
footer.site ul{list-style:none; margin:0; padding:0;}
footer.site ul li{margin-bottom:9px; font-size:.95rem;}
.foot-bottom{
  border-top:1px solid #3a3b34; margin-top:44px; padding-top:22px;
  display:flex; justify-content:space-between; flex-wrap:wrap; gap:10px;
  font-size:.85rem; color:#9a9c8f;
}
@media(max-width:800px){footer.site .foot-grid{grid-template-columns:1fr 1fr;}}
@media(max-width:500px){footer.site .foot-grid{grid-template-columns:1fr;}}

/* mobile nav */
@media(max-width:960px){
  nav.primary{
    position:fixed; top:75px; left:0; right:0; bottom:0;
    height:calc(100vh - 75px);
    background:var(--concrete);
    flex-direction:column; align-items:flex-start; gap:0;
    padding:10px 28px 28px;
    transform:translateY(-8px); opacity:0; pointer-events:none;
    transition:opacity .2s ease, transform .2s ease;
    overflow-y:auto;
  }
  nav.primary.open{opacity:1; pointer-events:auto; transform:translateY(0);}
  nav.primary a{width:100%; padding:14px 0; border-bottom:1px solid var(--line);}
  .header-cta .phone-link{display:none;}
  .nav-toggle{display:block;}
  .grid-2{gap:24px;}
}

.skip-link{
  position:absolute; left:-999px; top:0; background:var(--green); color:#fff; padding:10px 16px; z-index:100;
}
.skip-link:focus{left:10px; top:10px;}

@media (prefers-reduced-motion: reduce){
  *{animation:none !important; transition:none !important;}
}

/* services dropdown */
.has-sub{position:relative;}
.has-sub .sub-trigger{cursor:pointer;}
.sub-menu{
  display:none; position:absolute; top:100%; left:0; margin-top:14px;
  background:#fff; border:1px solid var(--line); min-width:240px;
  box-shadow:0 12px 24px rgba(35,36,31,.08);
  padding:8px 0;
}
.sub-menu a{display:block; padding:11px 18px; font-weight:500; border-bottom:none !important;}
.sub-menu a:hover{background:var(--concrete); color:var(--green);}
.has-sub:hover .sub-menu, .has-sub:focus-within .sub-menu{display:block;}

@media(max-width:960px){
  .sub-menu{
    display:block; position:static; border:none; box-shadow:none; margin-top:0;
    padding-left:14px; background:transparent;
  }
  .has-sub .sub-trigger{border-bottom:1px solid var(--line); font-weight:700;}
  .sub-menu a{padding:11px 0; border-bottom:1px solid var(--line) !important; font-size:.95rem; color:var(--text-2);}
}
