:root {
  color-scheme: light;
  --ink: #102138;
  --muted: #43536a;
  --blue: #245bd7;
  --blue-hover: #1747b8;
  --logo-blue: #0081c7;
  --button-blue: #007abb;
  --button-blue-hover: #006a9e;
  --blueprint: #eaf3ff;
  --grid: #cee0f7;
  --rule: #d5dfec;
  --radius: 1rem;
  font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  background: #fff;
  color: var(--ink);
  font-synthesis: none;
}

*, *::before, *::after { box-sizing: border-box; }
body, h1, h2, h3, p, figure, ol { margin: 0; }
a { color: inherit; }
img, svg { display: block; }
img { max-width: 100%; }
section { scroll-margin-top: 1.5rem; }

:focus-visible {
  outline: 3px solid var(--blue);
  outline-offset: 5px;
}

.container {
  width: min(90rem, calc(100% - 2 * clamp(1.125rem, 3.125vw, 3rem)));
  margin-inline: auto;
}

.skip-link {
  position: absolute;
  z-index: 1;
  inset: .75rem auto auto .75rem;
  padding: .65rem 1rem;
  border-radius: .4rem;
  color: #fff;
  background: var(--blue);
  transform: translateY(-200%);
}
.skip-link:focus { transform: none; }
.icon-library { position: absolute; width: 0; height: 0; }
.icon {
  width: 1.15em;
  height: 1.15em;
  flex: none;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.site-header, .footer-content, .wordmark, .site-nav {
  display: flex;
  align-items: center;
}

.site-header, .footer-content { justify-content: space-between; gap: 1rem; }
.site-header { padding-block: clamp(1rem, 1.4vw, 1.35rem); }
.wordmark {
  gap: .65rem;
  flex: none;
  color: var(--logo-blue);
  text-decoration: none;
  font-size: clamp(1.35rem, 2.65vw, 2.5rem);
  font-weight: 750;
  letter-spacing: -.04em;
  line-height: 1;
}
.wordmark img { width: auto; height: clamp(1.8rem, 2.9vw, 2.75rem); }
.site-nav { gap: clamp(.8rem, 3.4vw, 3.25rem); }
.site-nav a {
  font-size: clamp(.88rem, 1.5vw, 1.4rem);
  font-weight: 550;
  line-height: 1.2;
  padding-block: .55rem;
  text-decoration: none;
}
.site-nav a:hover { color: var(--blue); }
.site-nav .nav-contact {
  border: 2px solid var(--logo-blue);
  border-radius: .7rem;
  padding: .6em 1.15em;
}
.site-nav .nav-contact:hover { background: var(--blueprint); color: var(--button-blue-hover); }

.hero {
  display: grid;
  grid-template-columns: minmax(0, .84fr) minmax(0, 1fr);
  align-items: center;
  gap: clamp(1.5rem, 4vw, 4rem);
  padding-block: clamp(3.1rem, 4.4vw, 4.2rem) clamp(3.8rem, 5.75vw, 5.55rem);
}
.hero h1 {
  font-size: clamp(3.4rem, 6.9vw, 6.6rem);
  line-height: .99;
  font-weight: 760;
  letter-spacing: -.047em;
}
.hero p {
  margin-top: clamp(1.45rem, 2.6vw, 2.5rem);
  font-size: clamp(1.12rem, 2.12vw, 2rem);
  line-height: 1.42;
  letter-spacing: -.012em;
  max-width: 34ch;
}
.actions {
  display: flex;
  flex-wrap: wrap;
  gap: clamp(.65rem, 1.5vw, 1.55rem);
  margin-top: clamp(1.5rem, 3.15vw, 3rem);
}
.button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .55em;
  min-height: 2.75rem;
  padding: .69em 1.13em;
  border: 2px solid transparent;
  border-radius: .65rem;
  font-size: clamp(1rem, 1.7vw, 1.6rem);
  font-weight: 650;
  line-height: 1.15;
  text-decoration: none;
  transition: background-color .18s, border-color .18s;
}
.button-primary { background: var(--button-blue); color: #fff; }
.button-primary:hover { background: var(--button-blue-hover); }
.button-secondary { border-color: #b8c9dd; }
.button-secondary:hover { background: var(--blueprint); border-color: var(--logo-blue); }
.blueprint {
  border-radius: var(--radius);
  background-color: var(--blueprint);
  background-image: linear-gradient(var(--grid) 1px, transparent 1px), linear-gradient(90deg, var(--grid) 1px, transparent 1px);
  background-size: 5% 7.3%;
}
.hero-visual { overflow: hidden; color: var(--blue); }
.hero-visual svg { width: 100%; height: auto; }

.work-section {
  padding-top: clamp(2rem, 4vw, 3.75rem);
  border-top: 1px solid var(--rule);
}
h2 {
  font-size: clamp(2.25rem, 4.45vw, 4.25rem);
  line-height: 1.02;
  font-weight: 740;
  letter-spacing: -.045em;
}
.work-section > h2 { margin-bottom: clamp(1.25rem, 2.35vw, 2.25rem); }
.project {
  display: grid;
  grid-template-columns: minmax(0, .72fr) minmax(0, 1.14fr);
  gap: clamp(1.5rem, 3.7vw, 3.5rem);
  align-items: start;
  border-top: 1px solid var(--rule);
  padding-block: clamp(1.65rem, 3.2vw, 3rem);
}
.project-copy { padding-block: .45rem; }
.project-type {
  display: flex;
  align-items: center;
  gap: .8em;
  margin-bottom: 1.1rem;
  color: var(--muted);
  font-size: clamp(.8rem, 1.15vw, 1.1rem);
  font-weight: 750;
  letter-spacing: .09em;
  line-height: 1.4;
  text-transform: uppercase;
}
.project-type span {
  color: var(--blue);
  border-right: 1px solid var(--rule);
  padding-right: .8em;
}
.project h3 {
  font-size: clamp(1.85rem, 3.13vw, 3rem);
  line-height: 1.08;
  font-weight: 745;
  letter-spacing: -.042em;
  overflow-wrap: anywhere;
  margin-bottom: .65em;
}
.project-copy > p:not(.project-type) {
  font-size: clamp(1.05rem, 1.55vw, 1.48rem);
  line-height: 1.53;
  max-width: 48ch;
}
.text-link {
  display: inline-flex;
  align-items: center;
  gap: .45em;
  margin-top: 1.35rem;
  color: var(--blue-hover);
  font-size: clamp(1rem, 1.45vw, 1.4rem);
  font-weight: 620;
  text-underline-offset: .24em;
}
.text-link:hover { text-decoration-thickness: 2px; }
.product-visual {
  padding: clamp(.65rem, 1.7vw, 1.65rem);
  border-radius: var(--radius);
  background: var(--blueprint);
}
.product-image {
  display: block;
  border-radius: .6rem;
}
.product-image img {
  border: 1px solid #c2d2e4;
  border-radius: inherit;
  width: 100%;
  height: auto;
}
figcaption {
  padding-top: .65rem;
  color: var(--muted);
  font-size: clamp(.75rem, .9vw, .87rem);
  line-height: 1.4;
}

.project-compliance {
  grid-template-columns: minmax(0, 1.04fr) minmax(0, 1fr);
  grid-template-areas: "workflow copy";
}
.project-compliance .project-copy { grid-area: copy; }
.workflow {
  grid-area: workflow;
  padding: clamp(1.2rem, 3.2vw, 3rem) clamp(1rem, 3.1vw, 2.9rem) clamp(.75rem, 1.5vw, 1.4rem);
  background-size: 5.5% 10%;
}
.workflow ol {
  --step-gap: clamp(1.1rem, 4vw, 3.75rem);
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--step-gap);
  padding: 0;
  list-style: none;
}
.workflow li {
  position: relative;
  display: flex;
  align-items: center;
  gap: .63em;
  min-height: 4.55rem;
  padding: .85rem .75rem;
  border: 1.5px solid var(--ink);
  border-radius: .75rem;
  background: #fafdff;
  font-size: clamp(.88rem, 1.44vw, 1.38rem);
  font-weight: 700;
  letter-spacing: -.035em;
  line-height: 1.18;
}
.workflow li .icon { width: 1.6em; height: 1.6em; }
.step-number {
  position: absolute;
  top: -.63em;
  left: .53em;
  display: grid;
  place-items: center;
  width: 1.65em;
  height: 1.65em;
  border-radius: 50%;
  background: var(--blue);
  color: #fff;
  font-size: .82em;
  letter-spacing: 0;
}
.workflow li:nth-child(odd)::before {
  content: "";
  position: absolute;
  left: 100%;
  top: 50%;
  width: calc(var(--step-gap) - 4px);
  border-top: 1.5px solid var(--blue);
}
.workflow li:nth-child(odd)::after {
  content: "";
  position: absolute;
  left: calc(100% + var(--step-gap) - 12px);
  top: calc(50% - 4px);
  width: 8px;
  height: 8px;
  border-top: 1.5px solid var(--blue);
  border-right: 1.5px solid var(--blue);
  transform: rotate(45deg);
}
.workflow li:nth-child(2) {
  --turn-width: calc(100% + var(--step-gap) + 3px);
  --turn-height: calc(var(--step-gap) - 4px);
}
.workflow li:nth-child(2)::before {
  content: "";
  position: absolute;
  top: 100%;
  right: 50%;
  width: var(--turn-width);
  height: var(--turn-height);
  background:
    linear-gradient(var(--blue), var(--blue)) right top / 1.5px 52% no-repeat,
    linear-gradient(var(--blue), var(--blue)) center center / 100% 1.5px no-repeat,
    linear-gradient(var(--blue), var(--blue)) left bottom / 1.5px 52% no-repeat;
}
.workflow li:nth-child(2)::after {
  content: "";
  position: absolute;
  left: calc(50% - var(--turn-width) + .75px);
  top: calc(100% + var(--turn-height) - 9px);
  width: 8px;
  height: 8px;
  border-right: 1.5px solid var(--blue);
  border-bottom: 1.5px solid var(--blue);
  transform: translateX(-50%) rotate(45deg);
}
.workflow figcaption { margin-top: .4rem; }

.about {
  display: grid;
  grid-template-columns: minmax(0, .53fr) minmax(0, 1fr);
  gap: clamp(1.25rem, 3.6vw, 3.4rem);
  padding-block: clamp(2.15rem, 5vw, 4.75rem);
  border-block: 1px solid var(--rule);
}
.about-copy {
  border-left: 2px solid var(--blue);
  padding-left: clamp(1rem, 3.9vw, 3.75rem);
}
.about-copy p {
  font-size: clamp(1.15rem, 2.27vw, 2.15rem);
  line-height: 1.45;
  letter-spacing: -.025em;
}
.contact {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.6rem;
  margin-block: clamp(2rem, 5vw, 4.75rem);
  padding: clamp(1.55rem, 3.7vw, 3.55rem);
  border-radius: var(--radius);
  background: var(--blueprint);
}
.contact h2 { font-size: clamp(1.95rem, 3.9vw, 3.75rem); }
.contact p {
  margin-top: .75rem;
  font-size: clamp(1.02rem, 1.85vw, 1.8rem);
  line-height: 1.45;
  letter-spacing: -.023em;
}
.contact .button { flex: none; }
.blog-preview { padding-bottom: clamp(2rem, 4vw, 3.75rem); }
.blog-preview-header {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: .75rem 1.5rem;
  margin-bottom: clamp(1.25rem, 2.35vw, 2.25rem);
}
.blog-preview-header .text-link { margin-top: 0; }
.blog-posts {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(1.25rem, 3vw, 2.75rem);
  margin: 0;
  padding: 0;
  list-style: none;
}
.blog-posts li {
  padding-top: 1rem;
  border-top: 1px solid var(--rule);
}
.blog-posts h3 {
  font-size: clamp(1.2rem, 2vw, 1.65rem);
  line-height: 1.2;
  letter-spacing: -.025em;
}
.blog-posts a {
  color: var(--blue-hover);
  text-decoration-thickness: 1px;
  text-underline-offset: .17em;
}
.blog-posts a:hover { text-decoration-thickness: 2px; }
.blog-posts p {
  margin-top: .5rem;
  color: var(--muted);
  line-height: 1.5;
  font-size: clamp(1rem, 1.35vw, 1.2rem);
  max-width: 52ch;
}
.contact-page {
  max-width: 44rem;
  padding-block: clamp(2.75rem, 6vw, 5.5rem) clamp(2rem, 4.5vw, 4.25rem);
}
.contact-page h1 {
  font-size: clamp(2.6rem, 6vw, 4.8rem);
  line-height: 1.04;
  letter-spacing: -.047em;
}
.contact-page .contact-intro {
  margin-top: .75rem;
  font-size: clamp(1.05rem, 2vw, 1.45rem);
  line-height: 1.5;
  color: var(--muted);
}
.contact-form {
  display: block;
  width: 100%;
  border: 0;
}
.site-footer {
  border-top: 1px solid var(--rule);
  padding-block: clamp(1.3rem, 2.45vw, 2.35rem);
}
.site-footer .wordmark { font-size: clamp(1.25rem, 2.2vw, 2rem); }
.site-footer .wordmark img { height: clamp(1.5rem, 2.35vw, 2.25rem); }
.site-footer p { margin-top: 1rem; color: var(--muted); font-size: .9rem; }

@media (max-width: 900px) {
  .project { gap: 1.75rem; }
  .project-copy { padding-block: 0; }
  .workflow li { padding-inline: .55rem; }
}

@media (max-width: 720px) {
  .hero { grid-template-columns: 1fr; gap: 2rem; padding-block: 2.8rem 2rem; }
  .hero h1 { font-size: clamp(3.1rem, 10.5vw, 5rem); max-width: 12ch; }
  .hero-break { display: none; }
  .hero p { margin-top: 1rem; }
  .hero-visual svg { max-height: 21rem; }
  .project, .project-compliance { grid-template-columns: 1fr; }
  .project-compliance { grid-template-areas: "copy" "workflow"; }
  .project h3 { margin-bottom: .45em; }
  .project-type { margin-bottom: .65rem; }
  .workflow { padding-top: 1.5rem; }
  .workflow ol { --step-gap: 1.8rem; }
  .workflow li { padding-inline: .65rem; }
  .about { grid-template-columns: 1fr; }
  .about h2 br { display: none; }
  .contact { flex-direction: column; align-items: flex-start; }
  .blog-posts { grid-template-columns: 1fr; }
}

@media (max-width: 380px) {
  .site-header { flex-wrap: wrap; gap: .4rem; }
  .site-nav { gap: .4rem; }
  .site-header .site-nav a { font-size: .8125rem; }
  .site-nav .nav-contact { padding-inline: .65em; }
  .wordmark { gap: .4rem; }
  .site-header .wordmark { font-size: 1.1875rem; }
  .site-header .wordmark img { height: 1.5rem; }
  .workflow ol { --step-gap: 1.25rem; }
  .workflow li .icon { width: 1.35em; height: 1.35em; }
}

@media (prefers-reduced-motion: reduce) {
  .button { transition: none; }
}
