/* Expert typography. Sizes are defined once by role, not by individual page.
   The root follows the browser preference; rem values assume its default 16px. */
:root {
  --font-body: 1rem;
  --font-lead: 1.125rem;
  --font-small: .875rem;
  --font-label: .75rem;
  --font-control: .875rem;
  --font-h1: 2.375rem;
  --font-h2: 2rem;
  --font-h3: 1.625rem;
  --font-card-title: 1.375rem;
  --font-diagram-title: 1.125rem;
  --font-quote: 1.625rem;
  --font-nav-main: 1.375rem;
  --font-nav-sub: 1rem;
  --font-nav-mobile-main: 1.375rem;
  --line-body: 1.65;
  --line-heading: 1.2;
}
@media (max-width:360px) {
  :root { --font-h1: 2.125rem; }
}
@media (min-width:761px) {
  :root {
    --font-h1: clamp(3.5rem, 2.5rem + 1.5vw, 4rem);
    --font-h2: clamp(2.5rem, 2rem + 1vw, 3rem);
    --font-h3: 2rem;
    --font-card-title: 1.5rem;
    --font-diagram-title: 1.25rem;
    --font-quote: clamp(2rem, 1.5rem + 1vw, 2.625rem);
    --font-nav-main: .875rem;
  }
}
html { font-size:100%; }
body { font-size:var(--font-body); line-height:var(--line-body); }
h1,h2,h3 { line-height:var(--line-heading); }
p,li { line-height:var(--line-body); }
.lead,.expert-flow-intro,.ki-home-intro { line-height:var(--line-body); }
.eyebrow,.service-detail-label { line-height:1.5; }
.footer-nav h2,.footer-contact h2 { font-size:var(--font-small); }
.expert-mega-group>h3 { font-size:var(--font-label); }
.expert-mega-ai h3 { font-size:var(--font-h3); }
.expert-mega-ai .expert-mega-promise { font-size:var(--font-card-title); }
.expert-mega-link strong { font-size:var(--font-nav-sub); }
.expert-mega-link span,.expert-mega-ai p { font-size:var(--font-small); }
/* Preserve the larger main-level navigation on mobile/tablet. */
@media (max-width:1100px) {
  .header #navigation>a:not(.button),
  .header .nav-services-heading>.submenu-toggle {
    font-size:var(--font-nav-mobile-main);
  }
  .header .expert-mega-mobile a { font-size:var(--font-nav-sub); }
}
/* Break only a word that cannot fit on its own line; keep ordinary words intact. */
main .typo3-hero h1,main .overview-hero h1,
main .expert-flow>h2,main .overview-card p,
main .section.service-details .service-details-intro h2 {
  overflow-wrap:break-word;
}
/* Native details retain their keyboard and expanded-state semantics.
   Two decorative strokes form +; the vertical stroke disappears when open. */
main details>summary {
  position:relative;
  display:block;
  list-style:none;
  padding-inline-end:3rem;
  min-height:3rem;
  font-size:var(--font-body);
  line-height:var(--line-body);
  cursor:pointer;
}
main details>summary::-webkit-details-marker { display:none; }
main details>summary::marker { content:''; }
main details>summary::before,main details>summary::after {
  content:'';
  position:absolute;
  inset-inline-end:1rem;
  top:calc(50% - 1px);
  width:1rem;
  height:2px;
  background:var(--red);
  transform:none;
  border:0;
}
main details>summary::after { transform:rotate(90deg); }
main details[open]>summary::after { transform:rotate(90deg) scaleX(0); }
main details>summary:focus-visible { outline:2px solid var(--red); outline-offset:4px; }
