/* Duckworth Innovations — site styles
   One stylesheet for all three pages. Design tokens live in :root. */

:root {
  --deep: #0B3F54;   /* dark teal: text, dark bands, primary button */
  --teal: #1F7A96;   /* logo teal: accents, step markers */
  --pale: #CFE9F1;   /* light teal: text on dark, rules */
  --mist: #F3F9FB;   /* tinted section background */
  --white: #FFFFFF;
  --muted: #3D6373;  /* secondary text on light backgrounds */
  --line: #A9D3E0;   /* connector line between steps */
  --focus: #EE9A2E;  /* keyboard focus ring */

  --font-display: 'Bricolage Grotesque', 'Trebuchet MS', system-ui, sans-serif;
  --font-body: 'Atkinson Hyperlegible', Verdana, system-ui, sans-serif;

  --gutter: clamp(20px, 5vw, 48px);
  --max: 1120px;
}

*, *::before, *::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }

body {
  margin: 0;
  background: var(--deep); /* matches the footer when the page overscrolls */
  color: var(--deep);
  font-family: var(--font-body);
  font-size: 18px;
  line-height: 1.6;
}

img { max-width: 100%; height: auto; }

a { color: var(--deep); }
a:hover { color: var(--teal); }
a:focus-visible { outline: 3px solid var(--focus); outline-offset: 3px; }

h1, h2, h3, p, ul, ol { margin: 0; }

.page { background: var(--white); }

.wrap {
  max-width: var(--max);
  margin: 0 auto;
  padding-inline: var(--gutter);
}

.skip-link {
  position: absolute;
  left: -9999px;
  top: 0;
  padding: 12px 20px;
  background: var(--white);
  color: var(--deep);
  font-weight: 700;
  z-index: 10;
}
.skip-link:focus { left: 0; }

/* ---------- Type ---------- */

.display-xl {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: clamp(34px, 5.2vw, 60px);
  line-height: 1.05;
  letter-spacing: -0.02em;
  text-wrap: balance;
}

.display-lg {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: clamp(28px, 3.4vw, 40px);
  line-height: 1.1;
  letter-spacing: -0.02em;
  text-wrap: balance;
}

.lede {
  max-width: 34em;
  font-size: clamp(18px, 1.6vw, 21px);
  line-height: 1.55;
  text-wrap: pretty;
}

.muted { color: var(--muted); }

.measure { max-width: 34em; text-wrap: pretty; }

[id] { scroll-margin-top: 24px; }

.text-link {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  font-weight: 700;
}

/* ---------- Buttons ---------- */

.btn {
  display: inline-flex;
  align-items: center;
  min-height: 52px;
  padding: 0 30px;
  border-radius: 999px;
  font-weight: 700;
  font-size: 18px;
  text-decoration: none;
}
.btn-dark { background: var(--deep); color: var(--white); }
.btn-dark:hover { background: var(--teal); color: var(--white); }
.btn-light { background: var(--white); color: var(--deep); }
.btn-light:hover { background: var(--pale); color: var(--deep); }

/* ---------- Header ---------- */

.site-header .wrap {
  padding-block: 18px;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 12px 32px;
}

.brand {
  display: flex;
  align-items: center;
  gap: 12px;
  min-height: 48px;
  text-decoration: none;
  color: var(--deep);
}
.brand:hover { color: var(--deep); }
.brand img { width: 48px; height: 48px; flex-shrink: 0; }
.brand-name {
  display: flex;
  flex-wrap: wrap;
  gap: 0 7px;
  font-family: var(--font-display);
  font-size: 22px;
  line-height: 1.1;
  letter-spacing: -0.01em;
}
.brand-name strong { font-weight: 700; }
.brand-name span { font-weight: 400; color: var(--teal); }

.site-nav {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px 28px;
}
.site-nav a:not(.btn) {
  display: flex;
  align-items: center;
  min-height: 44px;
  font-size: 17px;
  text-decoration: none;
}
.site-nav a[aria-current="page"] {
  font-weight: 700;
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-underline-offset: 6px;
}
.site-nav .btn { min-height: 48px; padding: 0 24px; font-size: 17px; }

/* ---------- Bands (page sections) ---------- */

.band { padding-block: clamp(48px, 7vw, 88px); }
.band-mist { background: var(--mist); }
.band-dark { background: var(--deep); color: var(--white); }
.band-dark .lede,
.band-dark .on-dark-soft { color: var(--pale); }
.band-dark a:not(.btn) { color: var(--white); }
.band-dark a:not(.btn):hover { color: var(--pale); }

.stack { display: flex; flex-direction: column; align-items: flex-start; }
.gap-16 { gap: 16px; }
.gap-20 { gap: 20px; }
.gap-24 { gap: 24px; }
.gap-32 { gap: 32px; }
.gap-40 { gap: 40px; }

.row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px 24px;
}

/* ---------- Home: hero ---------- */

.hero { padding-block: clamp(48px, 8vw, 96px); }
.hero .wrap {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 40px 64px;
}
.hero-text { flex: 999 1 460px; min-width: 0; }
.hero-logo {
  flex: 0 1 360px;
  min-width: 0;
  width: 360px;
  aspect-ratio: 1 / 1;
}

/* ---------- Home: mission, vision, values ---------- */

.pair {
  width: 100%;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(360px, 100%), 1fr));
  gap: 40px 72px;
}
.pair > div { display: flex; flex-direction: column; gap: 10px; }

.kicker {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 20px;
  line-height: 1.2;
  color: var(--teal);
}
.statement {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: clamp(26px, 3vw, 34px);
  line-height: 1.2;
  letter-spacing: -0.01em;
  text-wrap: balance;
}
.value-name {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 24px;
  line-height: 1.25;
}

/* ---------- Home: services list ---------- */

.service-links {
  list-style: none;
  padding: 0;
  width: 100%;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr));
  gap: 4px 40px;
}
.service-links a {
  display: flex;
  align-items: center;
  gap: 14px;
  min-height: 48px;
  text-decoration: none;
  font-weight: 700;
}
.service-links a::before {
  content: "";
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: var(--teal);
  flex-shrink: 0;
}

/* ---------- Services page ---------- */

.page-head { padding-block: clamp(32px, 5vw, 56px) clamp(40px, 6vw, 72px); }
.page-head .display-xl { font-size: clamp(38px, 5.2vw, 60px); }
.page-head .lede { max-width: 36em; }

.split {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  gap: 48px 72px;
}
.split-aside { flex: 1 1 320px; min-width: 0; }
.split-main { flex: 1.4 1 420px; min-width: 0; }

.price {
  padding-top: 8px;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.price-amount {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 28px;
  line-height: 1.2;
}
.fine-print { font-size: 16px; color: var(--muted); }

/* Numbered steps joined by a line: the package is a real sequence. */
.steps {
  list-style: none;
  padding: 0;
  counter-reset: step;
}
.steps li {
  counter-increment: step;
  position: relative;
  padding: 6px 0 32px 64px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.steps li::before {
  content: counter(step);
  position: absolute;
  left: 0;
  top: 0;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: var(--teal);
  color: var(--white);
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  font-size: 19px;
  line-height: 1;
}
.steps li::after {
  content: "";
  position: absolute;
  left: 20px;
  top: 44px;
  bottom: 0;
  width: 4px;
  background: var(--line);
}
.steps li:last-child { padding-bottom: 0; }
.steps li:last-child::after { display: none; }
.steps h3 {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 23px;
  line-height: 1.25;
}
.steps p { color: var(--muted); text-wrap: pretty; }

.service-grid {
  width: 100%;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(280px, 100%), 1fr));
  gap: 48px 40px;
}
.service {
  position: relative;
  border-top: 4px solid var(--pale);
  padding-top: 19px;
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.service::before {
  content: "";
  position: absolute;
  left: 0;
  top: -9px;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: var(--teal);
}
.service h3 {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 24px;
  line-height: 1.2;
  text-wrap: balance;
}
.service ul {
  list-style: none;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
  color: var(--muted);
}

/* ---------- Contact page ---------- */

.contact-hero { padding-block: clamp(48px, 7vw, 80px); }
.contact-hero .display-xl { font-size: clamp(38px, 5.2vw, 60px); }
.contact-hero .email { overflow-wrap: anywhere; font-weight: 400; }

.about { padding-block: clamp(56px, 8vw, 96px); }
.about .wrap {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 40px 72px;
}
.portrait {
  flex: 0 1 320px;
  min-width: 0;
  width: 320px;
  aspect-ratio: 1 / 1;
  object-fit: cover;
  border-radius: 16px;
}
.about-text {
  flex: 999 1 420px;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 18px;
}
.about-text p { max-width: 36em; text-wrap: pretty; }

/* ---------- Closing call to action and footer ---------- */

.cta { padding-block: clamp(56px, 8vw, 96px) 32px; }
.cta .site-footer {
  margin-top: 64px;
  border-top: 1px solid var(--muted);
  padding-top: 16px;
}

.footer-band { padding-block: 24px 32px; }

.site-footer {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0 32px;
  font-size: 15px;
  color: var(--pale);
}
.site-footer span,
.site-footer a {
  display: flex;
  align-items: center;
  min-height: 44px;
}
.band-dark .site-footer a { color: var(--pale); overflow-wrap: anywhere; }
.band-dark .site-footer a:hover { color: var(--white); }

/* ---------- Small screens ---------- */

@media (max-width: 640px) {
  .hero-logo { flex-basis: 200px; width: 200px; }
  .portrait { flex-basis: 240px; width: 240px; }
}
