/* ============================================================
   Zedz Consultants — design system
   Fonts: Newsreader (headings) + Inter (body), Google Fonts
   ============================================================ */

:root{
  --ink:        #12241d;
  --forest:     #163a2c;
  --forest-2:   #1d4a37;
  --green:      #2f6b4f;
  --moss:       #6fbf95;
  --moss-soft:  #d8ece1;
  --sand:       #faf8f4;
  --sand-2:     #f2eee6;
  --card:       #ffffff;
  --clay:       #b4682f;
  --body:       #3c4a44;
  --muted:      #6b7a73;
  --line:       #e3ddd2;
  --line-dark:  rgba(255,255,255,.16);
  --onDarkDim:  rgba(238,245,240,.74);
  --onDarkFaint:rgba(238,245,240,.5);

  --wrap: 1120px;
  --r: 14px;
  --shadow: 0 1px 2px rgba(18,36,29,.04), 0 8px 28px rgba(18,36,29,.06);
  --head: "Archivo", "Helvetica Neue", Helvetica, Arial, sans-serif;
  --body-font: "Source Serif 4", Georgia, "Times New Roman", serif;
  --ui: "Archivo", "Helvetica Neue", Helvetica, Arial, sans-serif;
}

*,*::before,*::after{ box-sizing:border-box }
html{ -webkit-text-size-adjust:100% }
body{
  margin:0; background:var(--sand); color:var(--body);
  font:400 18px/1.6 var(--body-font); -webkit-font-smoothing:antialiased;
}
img{ max-width:100%; display:block }
a{ color:var(--green); text-decoration:none }
a:hover{ text-decoration:underline }

h1,h2,h3,h4{ font-family:var(--head); color:var(--ink); font-weight:600; letter-spacing:-.015em; margin:0 }
h1{ font-size:clamp(34px,5.2vw,58px); line-height:1.06 }
h2{ font-size:clamp(27px,3.4vw,40px); line-height:1.14 }
h3{ font-size:clamp(20px,2.2vw,25px); line-height:1.2 }
p{ margin:0 0 1.1em }
p:last-child{ margin-bottom:0 }

.wrap{ max-width:var(--wrap); margin:0 auto; padding:0 28px }
.narrow{ max-width:74ch }
.eyebrow{
  font:600 11.5px/1 var(--ui); letter-spacing:.17em; text-transform:uppercase;
  color:var(--green); margin:0 0 18px;
}
.on-dark .eyebrow{ color:var(--moss) }
.lede{ font-size:19px; color:var(--muted) }
.on-dark .lede{ color:var(--onDarkDim) }

/* ---------- buttons ---------- */
.btn{
  display:inline-block; font:600 15px/1 var(--ui); padding:16px 28px;
  border-radius:999px; text-decoration:none; transition:.18s ease; border:1px solid transparent;
}
.btn:hover{ text-decoration:none; transform:translateY(-1px) }
.btn-primary{ background:var(--forest); color:#fff }
.btn-primary:hover{ background:var(--forest-2) }
.btn-ghost{ border-color:var(--line); color:var(--ink); background:transparent }
.btn-ghost:hover{ border-color:var(--green); color:var(--green) }
.on-dark .btn-primary{ background:#fff; color:var(--forest) }
.on-dark .btn-primary:hover{ background:var(--moss-soft) }
.on-dark .btn-ghost{ border-color:var(--line-dark); color:#fff }
.on-dark .btn-ghost:hover{ border-color:#fff }
.btn-row{ display:flex; flex-wrap:wrap; gap:14px; margin-top:34px }

/* ---------- header ---------- */
.site-header{ position:sticky; top:0; z-index:50; background:rgba(250,248,244,.9); backdrop-filter:saturate(1.4) blur(10px); border-bottom:1px solid var(--line) }
.site-header .wrap{ display:flex; align-items:center; gap:28px; height:104px }
.brand{ display:flex; align-items:center; text-decoration:none; flex:none }
.brand img{ height:68px; width:auto; display:block }
@media(max-width:520px){ .brand img{ height:54px } }
.brand span{ color:var(--green) }
.nav{ margin-left:auto; display:flex; gap:28px; align-items:center }
.nav a{ font:500 15px/1 var(--ui); color:var(--body); text-decoration:none; padding:6px 0; border-bottom:2px solid transparent }
.nav a:hover{ color:var(--ink); text-decoration:none }
.nav a[aria-current="page"]{ color:var(--ink); border-bottom-color:var(--moss) }
.nav a.btn{ padding:11px 20px; font-size:14px; border-bottom:0 }
.nav a.btn-primary{ color:#fff }
.nav a.btn-primary:hover{ color:#fff; background:var(--forest-2) }
@media(max-width:860px){
  .site-header .wrap{ height:auto; padding-top:14px; padding-bottom:14px; flex-wrap:wrap; gap:12px }
  .nav{ margin-left:0; width:100%; gap:18px; flex-wrap:wrap }
}

/* ---------- sections ---------- */
section{ padding:86px 0 }
section.tight{ padding:60px 0 }
.on-dark{ background:var(--forest); color:var(--onDarkDim) }
.on-dark h1,.on-dark h2,.on-dark h3{ color:#fff }
.on-dark a{ color:var(--moss) }
.band{ background:var(--sand-2) }

/* ---------- hero ---------- */
.hero{ padding:104px 0 92px }
.hero h1{ max-width:16ch }
.hero .intro{ max-width:66ch; margin-top:30px; font-size:18px }
.hero .claim{
  max-width:64ch; margin-top:26px; font-size:19px; color:#fff;
  border-left:2px solid var(--moss); padding-left:22px;
}

/* ---------- stats ---------- */
.stats{ display:flex; flex-wrap:wrap; gap:56px; margin-top:58px; padding-top:34px; border-top:1px solid var(--line-dark) }
.stat .v{ font-family:var(--head); font-size:clamp(34px,4vw,46px); color:#fff; line-height:1 }
.stat .l{ font:500 12px/1 var(--ui); letter-spacing:.14em; text-transform:uppercase; color:var(--onDarkFaint); margin-top:11px }

/* ---------- generic grid ---------- */
.grid{ display:grid; gap:22px }
.g2{ grid-template-columns:repeat(2,1fr) }
.g3{ grid-template-columns:repeat(3,1fr) }
@media(max-width:900px){ .g3{ grid-template-columns:1fr 1fr } }
@media(max-width:640px){ .g2,.g3{ grid-template-columns:1fr } }

.split{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.25fr); gap:72px; align-items:start }
@media(max-width:900px){ .split{ grid-template-columns:1fr; gap:36px } }

/* ---------- ticks ---------- */
ul.ticks{ list-style:none; margin:28px 0 0; padding:0; display:grid; gap:14px }
ul.ticks li{ position:relative; padding-left:30px }
ul.ticks li::before{
  content:""; position:absolute; left:0; top:.55em; width:16px; height:9px;
  border-left:2px solid var(--moss); border-bottom:2px solid var(--moss);
  transform:rotate(-45deg);
}
.on-dark ul.ticks li::before{ border-color:var(--moss) }

/* ---------- stage list ---------- */
.stage{ display:grid; grid-template-columns:76px minmax(0,1fr); gap:26px; padding:34px 0; border-top:1px solid var(--line) }
.stage:first-of-type{ border-top:0 }
.stage .n{ font-family:var(--head); font-size:30px; color:var(--moss); line-height:1 }
.stage h3{ margin:0 }
.stage .line{ color:var(--muted); margin:8px 0 0 }
@media(max-width:640px){ .stage{ grid-template-columns:1fr; gap:10px } }

.stage-full{ padding:52px 0; border-top:1px solid var(--line) }
.stage-full .head{ display:grid; grid-template-columns:76px minmax(0,1fr); gap:26px; align-items:start }
.stage-full .body{ margin-top:22px; margin-left:102px; max-width:70ch }
@media(max-width:720px){
  .stage-full .head{ grid-template-columns:1fr; gap:8px }
  .stage-full .body{ margin-left:0 }
}
ul.inc{ list-style:none; margin:26px 0 0; padding:0; display:grid; grid-template-columns:1fr 1fr; gap:10px 28px }
@media(max-width:640px){ ul.inc{ grid-template-columns:1fr } }
ul.inc li{ position:relative; padding-left:18px; font-size:15.5px; color:var(--muted) }
ul.inc li::before{ content:""; position:absolute; left:0; top:.72em; width:5px; height:5px; border-radius:50%; background:var(--moss) }

.proof{
  margin-top:28px; background:var(--card); border:1px solid var(--line); border-left:3px solid var(--moss);
  border-radius:0 var(--r) var(--r) 0; padding:20px 24px;
}
.proof .k{ font:600 10.5px/1 var(--ui); letter-spacing:.16em; text-transform:uppercase; color:var(--green); display:block; margin-bottom:9px }
.proof p{ margin:0; color:var(--ink); font-size:16px }
.proof .more{ display:inline-block; margin-top:12px; font:600 14px/1 var(--ui) }

/* ---------- panels / cards ---------- */
.panel{ background:var(--card); border:1px solid var(--line); border-radius:var(--r); padding:34px 36px; box-shadow:var(--shadow) }
.card{ background:var(--card); border:1px solid var(--line); border-radius:var(--r); padding:26px 28px; box-shadow:var(--shadow); display:flex; flex-direction:column }
.card .meta{ display:flex; flex-wrap:wrap; gap:8px; margin-bottom:16px }
.card h3{ font-size:21px }
.card p{ color:var(--muted); font-size:16px; margin-top:12px }
.card .go{ margin-top:auto; padding-top:18px; font:600 14px/1 var(--ui) }

.tag{ font:600 11px/1 var(--ui); letter-spacing:.09em; text-transform:uppercase; color:var(--green); background:var(--moss-soft); border-radius:999px; padding:6px 11px }
.tag.plain{ background:transparent; border:1px solid var(--line); color:var(--muted) }

/* ---------- projects ---------- */
.filters{ border-top:1px solid var(--line); border-bottom:1px solid var(--line); padding:22px 0; margin-bottom:10px }
.frow{ display:flex; flex-wrap:wrap; align-items:center; gap:9px; margin:9px 0 }
.frow .lbl{ font:600 11px/1 var(--ui); letter-spacing:.15em; text-transform:uppercase; color:var(--muted); width:84px; flex:none }
.chip{ font:500 14px/1 var(--ui); padding:10px 16px; border-radius:999px; border:1px solid var(--line); background:transparent; color:var(--body); cursor:pointer; transition:.15s }
.chip:hover{ border-color:var(--green); color:var(--green) }
.chip[aria-pressed="true"]{ background:var(--forest); border-color:var(--forest); color:#fff }
.count{ font-size:14.5px; color:var(--muted); margin-top:14px }

.project{ padding:58px 0; border-bottom:1px solid var(--line) }
.project .inner{ display:grid; grid-template-columns:250px minmax(0,1fr); gap:56px }
@media(max-width:900px){ .project .inner{ grid-template-columns:1fr; gap:22px } }
.rail .num{ font-family:var(--head); font-size:15px; color:var(--moss) }
.rail dl{ margin:18px 0 0 }
.rail dt{ font:600 10.5px/1 var(--ui); letter-spacing:.13em; text-transform:uppercase; color:var(--muted); margin-top:16px }
.rail dd{ margin:6px 0 0; font-size:15px; color:var(--ink) }
.rail .arms{ display:flex; flex-wrap:wrap; gap:7px; margin-top:20px }
.rail .arms span{ font:500 11.5px/1 var(--ui); color:var(--muted); background:var(--sand-2); border-radius:999px; padding:7px 11px }
.project h2{ font-size:clamp(23px,2.7vw,31px) }
.project .sum{ font-size:18.5px; color:var(--ink); margin-top:14px; max-width:68ch }
.blk{ margin-top:28px; max-width:72ch }
.blk h4{ font:600 10.5px/1 var(--ui); letter-spacing:.16em; text-transform:uppercase; color:var(--green); margin:0 0 10px }
.blk p{ margin:0 }
.blk.hi{ border-left:2px solid var(--moss); padding-left:22px }

.phases{ margin-top:34px; background:var(--card); border:1px solid var(--line); border-radius:var(--r); padding:26px 30px }
.phases h4{ font:600 10.5px/1 var(--ui); letter-spacing:.16em; text-transform:uppercase; color:var(--green); margin:0 0 20px }
.phases ol{ list-style:none; margin:0; padding:0 }
.phases li{ position:relative; padding:0 0 20px 26px; border-left:1px solid var(--line) }
.phases li:last-child{ padding-bottom:0; border-left-color:transparent }
.phases li::before{ content:""; position:absolute; left:-5px; top:6px; width:9px; height:9px; border-radius:50%; background:var(--moss); box-shadow:0 0 0 3px var(--card) }
.phases .ph{ display:flex; flex-wrap:wrap; gap:10px; align-items:baseline }
.phases .pn{ font-weight:600; color:var(--ink) }
.phases .py{ font-size:14px; color:var(--muted) }
.phases .ps{ font:600 11px/1 var(--ui); background:var(--moss-soft); color:var(--green); border-radius:999px; padding:5px 10px }
.phases .pd{ margin:8px 0 0; font-size:15px; color:var(--muted) }

/* ---------- about ---------- */
.profile{ display:grid; grid-template-columns:320px minmax(0,1fr); gap:56px; align-items:start }
@media(max-width:860px){ .profile{ grid-template-columns:1fr; gap:30px } }
.profile .headshot{ display:block; width:132px; height:132px; border-radius:50%; object-fit:cover; object-position:50% 20%; margin:0 0 20px; border:3px solid var(--moss-soft) }
.profile .badges{ display:flex; flex-wrap:wrap; gap:8px; margin-top:18px }
.profile .badges span{ font:600 12px/1 var(--ui); background:var(--forest); color:#fff; border-radius:999px; padding:8px 13px }
.minis{ display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-top:22px }
.mini{ background:var(--sand-2); border-radius:12px; padding:18px; text-align:center }
.mini .v{ font-family:var(--head); font-size:26px; color:var(--ink) }
.mini .l{ font-size:12.5px; color:var(--muted); margin-top:5px }

.cred{ background:var(--card); border:1px solid var(--line); border-radius:var(--r); padding:24px 26px }
.cred .a{ font-family:var(--head); font-size:21px; color:var(--green) }
.cred .n{ font-weight:600; color:var(--ink); margin-top:6px; font-size:15.5px }
.cred .b{ font-size:13.5px; color:var(--muted); margin-top:5px }

.tl{ list-style:none; margin:0; padding:0 }
.tl li{ position:relative; padding:0 0 30px 30px; border-left:1px solid var(--line) }
.tl li:last-child{ padding-bottom:0 }
.tl li::before{ content:""; position:absolute; left:-5px; top:5px; width:9px; height:9px; border-radius:50%; background:var(--moss); box-shadow:0 0 0 3px var(--sand) }
.tl .y{ font:600 11px/1 var(--ui); letter-spacing:.13em; text-transform:uppercase; color:var(--green) }
.tl .r{ font-family:var(--head); font-size:20px; color:var(--ink); margin-top:7px }
.tl .o{ font-size:15px; color:var(--muted); margin-top:3px }

/* ---------- contact ---------- */
.field{ margin-bottom:20px }
.field label{ display:block; font:600 14px/1 var(--ui); color:var(--ink); margin-bottom:8px }
.field .req{ color:var(--clay) }
.field .help{ font-size:13.5px; color:var(--muted); margin-top:6px }
.field input,.field select,.field textarea{
  width:100%; font:400 16px/1.5 var(--ui); color:var(--ink); background:var(--card);
  border:1px solid var(--line); border-radius:10px; padding:13px 15px; transition:.15s;
}
.field input:focus,.field select:focus,.field textarea:focus{ outline:none; border-color:var(--green); box-shadow:0 0 0 3px var(--moss-soft) }
.field textarea{ resize:vertical }
.checks{ display:grid; grid-template-columns:1fr 1fr; gap:10px 22px }
@media(max-width:640px){ .checks{ grid-template-columns:1fr } }
.checks label{ display:flex; gap:10px; align-items:flex-start; font-weight:400; font-size:15px; color:var(--body); margin:0 }
.checks input{ width:auto; margin-top:3px }
.note{ border-radius:10px; padding:14px 16px; font-size:15px; margin-top:16px }
.note.ok{ background:var(--moss-soft); color:var(--forest) }
.note.bad{ background:#fbeee5; color:#8a4c1d }
.cinfo dt{ font:600 10.5px/1 var(--ui); letter-spacing:.13em; text-transform:uppercase; color:var(--muted); margin-top:24px }
.cinfo dt:first-child{ margin-top:0 }
.cinfo dd{ margin:7px 0 0; font-size:16.5px; color:var(--ink) }
ol.steps{ counter-reset:s; list-style:none; margin:0; padding:0 }
ol.steps li{ counter-increment:s; position:relative; padding:0 0 18px 42px; font-size:16px }
ol.steps li::before{
  content:counter(s); position:absolute; left:0; top:-1px; width:27px; height:27px; border-radius:50%;
  background:var(--moss-soft); color:var(--green); font:600 13px/27px var(--ui); text-align:center;
}

/* ---------- footer ---------- */
.site-footer{ background:var(--ink); color:var(--onDarkDim); padding:62px 0 34px }
.site-footer h2,.site-footer h3{ color:#fff }
.site-footer a{ color:var(--onDarkDim) }
.site-footer a:hover{ color:#fff }
.fgrid{ display:grid; grid-template-columns:1.5fr 1fr 1fr; gap:42px }
@media(max-width:760px){ .fgrid{ grid-template-columns:1fr; gap:28px } }
.fbrand{ font-family:var(--head); font-size:23px; color:#fff }
.flinks{ list-style:none; margin:0; padding:0; display:grid; gap:11px; font-size:15.5px }
.legal{ margin-top:46px; padding-top:22px; border-top:1px solid var(--line-dark); font-size:13.5px; color:var(--onDarkFaint); display:flex; flex-wrap:wrap; gap:14px; justify-content:space-between }

[hidden]{ display:none !important }
@media(prefers-reduced-motion:reduce){ *{ transition:none !important } }

/* ---- logo lockups ---- */
.site-footer .fbrand img{ height:84px; width:auto; display:block }
.legal .abn{ font-variant-numeric:tabular-nums }
/* serif body needs slightly tighter measure */
.lede{ font-size:19.5px }
.bio p{ color:var(--body) }
