/* Shared typography for both languages. Keep all type decisions here. */
:root {
  --font-ui: Arial, Helvetica, sans-serif;
  --type-small: 12px;
  --type-label: 14px;
  --type-body: 16px;
  --type-title: 22px;
  --type-section: clamp(30px, 3vw, 40px);
  --type-hero: clamp(36px, 4.8vw, 60px);
  --weight-regular: 400;
  --weight-strong: 700;
}
body, button, input, select, textarea {
  font-family: var(--font-ui);
  font-size: var(--type-body);
  font-weight: var(--weight-regular);
  line-height: 1.6;
  letter-spacing: normal;
  font-style: normal;
}
.hero h1 {
  font-size: var(--type-hero);
  font-weight: var(--weight-strong);
  line-height: 1.12;
  letter-spacing: -.025em;
}
.section h2, .approach h2, .contact-title h2 {
  font-size: var(--type-section);
  font-weight: var(--weight-strong);
  line-height: 1.2;
  letter-spacing: -.02em;
}
.solution h3, .service-grid h3, .step h3 {
  font-size: var(--type-title);
  font-weight: var(--weight-strong);
  line-height: 1.3;
  letter-spacing: -.01em;
}
.hero-desc, .section-heading > p, .solution p, .service-grid p,
.approach > div > p:not(.eyebrow), .step p {
  font-size: var(--type-body);
  font-weight: var(--weight-regular);
  line-height: 1.65;
  letter-spacing: normal;
}
.solution h4, .header nav, .header .nav-contact, .button,
.solution > a, .disciplines > span {
  font-size: var(--type-label);
  font-weight: var(--weight-strong);
  line-height: 1.45;
  letter-spacing: normal;
}
.hero-link, .disciplines p, .support, footer > span,
footer > small, footer > a:last-child {
  font-size: var(--type-label);
  font-weight: var(--weight-regular);
  line-height: 1.5;
  letter-spacing: normal;
}
.eyebrow, .image-caption, .contact-details small {
  font-size: var(--type-small);
  font-weight: var(--weight-strong);
  line-height: 1.5;
  letter-spacing: .04em;
}
.tags span, .card-top > span, .step > span, .language-option {
  font-size: var(--type-small);
  font-weight: var(--weight-regular);
  line-height: 1.5;
  letter-spacing: normal;
}
.language-option { font-weight: var(--weight-strong); }
.contact-details > div, .contact-details > a {
  font-size: var(--type-body);
  font-weight: var(--weight-strong);
  line-height: 1.5;
  letter-spacing: normal;
  overflow-wrap: anywhere;
}
/* Preserve the wordmark, separate from the content hierarchy. */
.brand { font-family: var(--font-ui); font-weight: var(--weight-strong); line-height: 1; }
/* Let larger body copy flow without fixed text heights or clipped columns. */
.solution { display: flex; flex-direction: column; min-width: 0; }
.solution p { min-height: 0; }
.solution > a { margin-top: auto; gap: 12px; }
.solution > a svg, .button svg, .hero-link svg { flex-shrink: 0; }
.tags { min-height: 0; }
.section-heading > *, .approach > *, .step > div { min-width: 0; }
.disciplines { flex-wrap: wrap; }
.image-caption { flex-wrap: wrap; }
@media (max-width: 900px) {
  .header nav { gap: 16px; }
}
@media (max-width: 700px) {
  .solution-grid { grid-template-columns: minmax(0, 1fr); }
  .service-grid { grid-template-columns: minmax(0, 1fr); }
  .service-grid article, .service-grid article:nth-child(3n+2),
  .service-grid article:nth-child(3n+3) { border-left: 0; padding: 25px 0; }
  .service-grid p, .step p { max-width: none; }
  .hero-content { padding-bottom: 110px; }
  .contact-title { gap: 16px; }
  .image-caption { gap: 8px; }
  .image-caption > span:last-child { display: none; }
}
@media (max-width: 380px) {
  .header .nav-contact { font-size: var(--type-small); }
  .contact-title { align-items: flex-start; }
  .round-arrow { width: 44px; height: 44px; }
}
