:root{
  --paper:#F2F3F1;
  --surface:#FFFFFF;
  --ink:#131C18;
  --muted:#5C6862;
  --rule:#D5DAD6;
  --rule-strong:#B9C1BC;
  --accent:#0F6E5C;
  --accent-ink:#FFFFFF;
  --flag:#8F5A06;
  --shadow:0 1px 2px rgba(19,28,24,.05), 0 12px 28px -18px rgba(19,28,24,.35);
}
@media (prefers-color-scheme: dark){
  :root{
    --paper:#0E1512;
    --surface:#151E1A;
    --ink:#E7EDE9;
    --muted:#98A49E;
    --rule:#28332E;
    --rule-strong:#3A4842;
    --accent:#4FB69C;
    --accent-ink:#08110E;
    --flag:#D6A24A;
    --shadow:0 1px 2px rgba(0,0,0,.4), 0 12px 28px -18px rgba(0,0,0,.9);
  }
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:"Newsreader",Georgia,"Times New Roman",serif;
  font-size:18px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,.ui{font-family:"Archivo","Helvetica Neue",Arial,sans-serif}
.mono{font-family:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace}
a{color:inherit}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}

.wrap{width:min(100% - 2.5rem, 62rem);margin-inline:auto}
.prose{max-width:34em}

/* ---------- header ---------- */
.site-head{
  display:flex;align-items:baseline;justify-content:space-between;gap:1rem;
  padding:1.5rem 0 1.25rem;
}
.mark{
  font-family:"Archivo",sans-serif;font-weight:700;font-size:1.15rem;
  letter-spacing:.14em;text-transform:uppercase;text-decoration:none;
}
.mark span{color:var(--accent)}
.head-meta{
  font-family:"IBM Plex Mono",monospace;font-size:.72rem;letter-spacing:.08em;
  text-transform:uppercase;color:var(--muted);text-decoration:none;
}
.head-meta:hover{color:var(--accent)}

/* ---------- hero ---------- */
.hero{padding:3.5rem 0 3rem;border-top:1px solid var(--rule)}
.eyebrow{
  font-family:"IBM Plex Mono",monospace;font-size:.72rem;letter-spacing:.16em;
  text-transform:uppercase;color:var(--accent);margin:0 0 1.5rem;
}
h1{
  font-size:clamp(2.3rem,7.5vw,3.9rem);
  line-height:1.03;letter-spacing:-.028em;font-weight:700;
  margin:0 0 1.5rem;text-wrap:balance;max-width:13em;
}
.lede{font-size:1.16rem;color:var(--ink);margin:0 0 2rem}
.lede + .lede{color:var(--muted)}

.cta-row{display:flex;flex-wrap:wrap;align-items:center;gap:1rem 1.5rem}
.btn{
  display:inline-block;background:var(--accent);color:var(--accent-ink);
  font-family:"Archivo",sans-serif;font-weight:600;font-size:.95rem;
  letter-spacing:.01em;text-decoration:none;
  padding:.85rem 1.5rem;border-radius:3px;
  transition:transform .15s ease, filter .15s ease;
}
.btn:hover{filter:brightness(1.08);transform:translateY(-1px)}
.cta-note{font-family:"IBM Plex Mono",monospace;font-size:.8rem;color:var(--muted)}

/* ---------- section scaffolding ---------- */
section{padding:3rem 0}
.sec-label{
  font-family:"IBM Plex Mono",monospace;font-size:.72rem;letter-spacing:.16em;
  text-transform:uppercase;color:var(--muted);
  margin:0 0 1.75rem;padding-bottom:.6rem;border-bottom:1px solid var(--rule);
}
h2{font-size:clamp(1.55rem,4.2vw,2.1rem);line-height:1.15;letter-spacing:-.02em;font-weight:600;margin:0 0 1.25rem;text-wrap:balance}

/* ---------- signals ---------- */
.signals{list-style:none;margin:0;padding:0;display:grid;gap:0}
.signals li{
  display:grid;grid-template-columns:auto 1fr;gap:1rem;
  padding:1.1rem 0;border-bottom:1px solid var(--rule);
}
.signals li:first-child{border-top:1px solid var(--rule)}
.signals .tick{color:var(--flag);font-family:"IBM Plex Mono",monospace;font-size:.85rem;line-height:1.75}

/* ---------- engagement schedule ---------- */
.schedule{display:grid;gap:0;border-top:2px solid var(--rule-strong)}
.eng{
  display:grid;
  grid-template-columns:9rem 1fr 11rem;
  gap:0 2rem;
  padding:1.75rem 0;
  border-bottom:1px solid var(--rule);
}
.eng-code{
  font-family:"IBM Plex Mono",monospace;font-size:.78rem;font-weight:500;
  letter-spacing:.06em;color:var(--accent);padding-top:.35rem;
}
.eng-body h3{font-size:1.22rem;line-height:1.25;letter-spacing:-.01em;font-weight:600;margin:0 0 .5rem}
.eng-body p{margin:0;color:var(--muted);font-size:1rem}
.eng-meta{
  font-family:"IBM Plex Mono",monospace;font-size:.76rem;line-height:1.7;
  color:var(--muted);padding-top:.35rem;
}
.eng-meta dt{text-transform:uppercase;letter-spacing:.1em;font-size:.66rem;opacity:.75}
.eng-meta dd{margin:0 0 .7rem;color:var(--ink)}
.eng-meta dd:last-child{margin-bottom:0}

/* ---------- principal ---------- */
.principal{
  background:var(--surface);border:1px solid var(--rule);border-radius:4px;
  padding:2rem;box-shadow:var(--shadow);
}
.principal h2{margin-bottom:.35rem}
.principal .role{
  font-family:"IBM Plex Mono",monospace;font-size:.74rem;letter-spacing:.12em;
  text-transform:uppercase;color:var(--muted);margin:0 0 1.25rem;
}
.principal p{margin:0 0 1rem;max-width:38em}
.principal p:last-child{margin-bottom:0}

/* ---------- contact ---------- */
.contact{border-top:2px solid var(--rule-strong);padding-top:2.5rem}
.contact h2{max-width:16em}
.contact .lede{color:var(--muted);max-width:34em}

.site-foot{
  border-top:1px solid var(--rule);margin-top:2rem;padding:1.5rem 0 3rem;
  display:flex;flex-wrap:wrap;gap:.5rem 1.5rem;justify-content:space-between;
  font-family:"IBM Plex Mono",monospace;font-size:.72rem;letter-spacing:.06em;
  text-transform:uppercase;color:var(--muted);
}
.site-foot a{text-decoration:none}
.site-foot a:hover{color:var(--accent)}

@media (max-width:760px){
  body{font-size:17px}
  .eng{grid-template-columns:1fr;gap:.75rem;padding:1.5rem 0}
  .eng-code{padding-top:0}
  .eng-meta{padding-top:.25rem;display:grid;grid-template-columns:auto 1fr;gap:.15rem 1rem}
  .eng-meta dt{align-self:baseline}
  .eng-meta dd{margin:0}
  .principal{padding:1.5rem}
  section{padding:2.5rem 0}
  .hero{padding:2.5rem 0}
}
@media (prefers-reduced-motion:reduce){
  *{transition:none !important;animation:none !important}
}

/* ================= service page ================= */

.crumb{
  font-family:"IBM Plex Mono",monospace;font-size:.72rem;letter-spacing:.1em;
  text-transform:uppercase;color:var(--muted);text-decoration:none;
  display:inline-block;margin-bottom:1.75rem;
}
.crumb:hover{color:var(--accent)}

/* spec strip under the hero */
.spec{
  display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem;
  border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);
  padding:1.25rem 0;margin:2.5rem 0 0;
  font-family:"IBM Plex Mono",monospace;
}
.spec dt{font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:.35rem}
.spec dd{margin:0;font-size:.9rem;color:var(--ink);line-height:1.45}

/* emphasis line */
.pull{
  font-size:clamp(1.2rem,3.2vw,1.5rem);line-height:1.35;letter-spacing:-.015em;
  border-left:3px solid var(--accent);padding:.15rem 0 .15rem 1.25rem;
  margin:2rem 0;max-width:30em;text-wrap:balance;
}

/* boxed aside */
.callout{
  background:var(--surface);border:1px solid var(--rule);border-radius:4px;
  padding:1.75rem;box-shadow:var(--shadow);margin:2rem 0;
}
.callout h3{
  font-size:.72rem;font-family:"IBM Plex Mono",monospace;font-weight:500;
  letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:0 0 1.1rem;
}
.callout ol{margin:0;padding-left:1.4rem}
.callout li{margin-bottom:.6rem}
.callout li:last-child{margin-bottom:0}
.callout p:last-child{margin-bottom:0}

/* numbered deliverables */
.deliv{list-style:none;margin:0;padding:0;counter-reset:d;border-top:1px solid var(--rule)}
.deliv li{
  counter-increment:d;
  display:grid;grid-template-columns:3rem 1fr;gap:0 1rem;
  padding:1.35rem 0;border-bottom:1px solid var(--rule);
}
.deliv li::before{
  content:counter(d,decimal-leading-zero);
  font-family:"IBM Plex Mono",monospace;font-size:.78rem;font-weight:500;
  color:var(--accent);padding-top:.3rem;
}
.deliv h3{font-size:1.08rem;line-height:1.3;font-weight:600;margin:0 0 .35rem}
.deliv p{margin:0;color:var(--muted);font-size:1rem}

/* engagement phases */
.phases{display:grid;gap:0;border-top:2px solid var(--rule-strong)}
.phase{
  display:grid;grid-template-columns:7rem 1fr;gap:0 2rem;
  padding:1.35rem 0;border-bottom:1px solid var(--rule);
}
.phase-when{
  font-family:"IBM Plex Mono",monospace;font-size:.76rem;letter-spacing:.06em;
  color:var(--accent);padding-top:.2rem;
}
.phase h3{font-size:1.05rem;font-weight:600;margin:0 0 .3rem}
.phase p{margin:0;color:var(--muted);font-size:1rem}

/* engagement card title link on the index */
.eng-body h3 a{text-decoration:none;background-image:linear-gradient(var(--rule-strong),var(--rule-strong));background-size:100% 1px;background-repeat:no-repeat;background-position:0 100%}
.eng-body h3 a:hover{color:var(--accent);background-image:linear-gradient(var(--accent),var(--accent))}
.eng-more{
  display:inline-block;margin-top:.7rem;
  font-family:"IBM Plex Mono",monospace;font-size:.74rem;letter-spacing:.08em;
  text-transform:uppercase;color:var(--accent);text-decoration:none;
}
.eng-more:hover{text-decoration:underline;text-underline-offset:3px}

@media (max-width:760px){
  .spec{grid-template-columns:1fr;gap:1rem;}
  .phase{grid-template-columns:1fr;gap:.4rem}
  .phase-when{padding-top:0}
  .callout{padding:1.35rem}
  .pull{margin:1.5rem 0}
}
