/* R54-D9: contrast is corrected at runtime by a11y-r54.js (measures the rendered colour, opacity and
   background of each secondary-text element and moves it the smallest step to 4.5:1). Kept for
   static fixes that do not depend on context. */

/* R55: the skip-link target takes focus programmatically (tabindex=-1); no focus ring on the whole page */
#main:focus{outline:none}

/* R61 (founder, 2026-10-19: "the type touches … and one word on a line"). Every page except the frozen Home.
   1. Display type was set at 0.82 to 0.98 times its size, so a descender on one line met an ascender on the next.
      Headlines and the largest display words (h1 .big) open to 1.04. Sizes, weights, tracking, colour and
      layout are unchanged. Single-line numerals (stat figures) are left as they are: they never wrap.
   2. Running text avoids a lone last word where the browser supports it (text-wrap-style: pretty, inherited);
      headings keep sl.css's balanced wrapping. */
body:not([data-page="home"]) :is(h1.disp, .f4close h2, .cHead h1, .cCh-t h2, .fwH, .fwF-h, .in5-h h1, .ww-in h1, .owF-h, .frame h3){line-height:1.04!important}
body:not([data-page="home"]) h1 .big{line-height:1.04!important}
body:not([data-page="home"]){text-wrap-style:pretty}
body:not([data-page="home"]) :is(h1, h2, h3, h4){text-wrap-style:balance}
/* R64 H-7: the service term sits inside the H1 as a kicker, on the breadcrumb's line and in its type
   (the breadcrumb keeps its "What we do" link and floats left; the kicker flows beside it). On phones the two stack. */
.p43 .crumb.r64c{float:left;margin:0 8px 0 0}
.p43 h1.disp.r64h .r64k{display:block;min-height:24px;margin:0 0 22px;font:500 13px/24px var(--sans);letter-spacing:normal;color:var(--dim)}
.p43 h1.disp.r64h .r64k .fam{width:7px;height:7px;border-radius:50%;background:var(--ac);display:inline-block;margin-right:8px;vertical-align:1px}
.p43 h1.disp.r64h .r64d{display:block;clear:left}
@media (max-width:640px){.p43 .crumb.r64c{float:none;margin:0 0 2px}.p43 h1.disp.r64h .r64k{margin-bottom:18px}}
/* R64 persona QA: the published cases a service page's own data tags, linked under the hero actions */
.p43 .r64w{margin:18px 0 0;font:500 13px/1.6 var(--sans);color:var(--dim)}
.p43 .r64w span{margin-right:4px}
.p43 .r64w a{color:inherit;text-decoration:underline;text-underline-offset:3px;display:inline-block;min-height:24px;line-height:24px}
.p43 .r64w a:hover{color:currentColor;opacity:.85}
/* R65 (E-4): the phone menu's "Work" link beside the three section chips (same chip, with the menu's direct-link arrow) */
.nv-msheet .nv-seg .nv-mwork{text-decoration:none;gap:6px}
.nv-msheet .nv-seg .nv-mwork .ar-i{width:12px;height:12px}
.nv-msheet .nv-seg .nv-mwork[aria-current="page"]{border-color:var(--lime,#d7ff63)}
@media (max-width:374px){.nv-msheet .nv-seg{gap:4px;padding-left:10px;padding-right:10px}.nv-msheet .nv-seg .chip{padding:8px 9px;font-size:12.5px}.nv-msheet .nv-seg .chip[aria-pressed="true"]{gap:6px}}
@media (max-width:339px){.nv-msheet .nv-seg .nv-mwork{gap:0}.nv-msheet .nv-seg .nv-mwork .ar-i{display:none}}
/* R65 (found while testing E-4): at 320 to 359 px the phone menu's "Start a project" button ran past the menu edge
   (pre-existing). Under 360 px the two footer buttons drop their small icons and tighten, so both fit; unchanged above. */
@media (max-width:359px){.nv-msheet .nv-mfoot{gap:6px;padding-left:10px;padding-right:10px}.nv-msheet .nv-mfoot .pill,.nv-msheet .nv-mfoot .ai-link{font-size:13px;padding-left:10px;padding-right:10px}.nv-msheet .nv-mfoot .pill svg,.nv-msheet .nv-mfoot .ai-link .nv-ext{display:none}}
