/* ==========================================================================
   Helmsman — design system
   Colours are the exact vector values from the 2026 company profile: navy #160B56, orange #F47520,
   peach #FAC39F, apricot #F9A968, lavender #8E88B8, paper #F2F4F8, body grey #4C536A. The logo is never recoloured
   except navy <-> white on dark grounds, exactly as the profile does.
   ========================================================================== */

@font-face { font-family: "Inter Tight"; src: url("/fonts/inter-tight.woff2") format("woff2"); font-weight: 400 800; font-display: swap; }
@font-face { font-family: "Inter"; src: url("/fonts/inter.woff2") format("woff2"); font-weight: 400 600; font-display: swap; }
@font-face { font-family: "IBM Plex Serif"; src: url("/fonts/plex-serif.woff2") format("woff2"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "IBM Plex Serif"; src: url("/fonts/plex-serif-italic.woff2") format("woff2"); font-weight: 400; font-style: italic; font-display: swap; }
@font-face { font-family: "IBM Plex Mono"; src: url("/fonts/plex-mono-400.woff2") format("woff2"); font-weight: 400; font-display: swap; }
@font-face { font-family: "IBM Plex Mono"; src: url("/fonts/plex-mono-500.woff2") format("woff2"); font-weight: 500; font-display: swap; }

:root {
    --navy: #160B56;
    --navy-2: #20146A;
    --navy-3: #2C2180;
    --orange: #F47520;
    --orange-ink: #B04608;      /* orange for small text on light grounds (5:1, AA) */
    --peach: #FAC39F;
    --apricot: #F9A968;        /* accent text on navy (profile page 3) */
    --lavender: #8E88B8;       /* secondary text on navy */
    --line-navy: #3C3372;
    --paper: #F2F4F8;
    --paper-2: #E7EAF1;
    --white: #FFFFFF;
    --text: #4C536A;
    --muted: #666C83;          /* 4.8:1 on paper */
    --line: #D9DDE7;
    --line-2: #C9CEDC;
    --red: #B42318;   /* 5.9:1 on paper: error text passes AA */

    --f-display: "Inter Tight", "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;
    --f-body: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;
    --f-serif: "IBM Plex Serif", Georgia, "Times New Roman", serif;
    --f-mono: "IBM Plex Mono", ui-monospace, "Cascadia Mono", Consolas, monospace;

    --gutter: clamp(16px, 4vw, 56px);
    --max: 1440px;
    --hdr: 76px;
    --ease: cubic-bezier(.2, .7, .1, 1);
    --ease-io: cubic-bezier(.7, 0, .2, 1);
    --radius: 6px;

    color-scheme: only light;   /* keep our colours: stops Android Chrome / Samsung "dark theme for web pages" repainting the site */
}

/* ---------- reset ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; overflow-x: clip; scroll-padding-top: calc(var(--hdr) + 16px); scrollbar-gutter: stable; }
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-stopped { overflow: hidden; }
body {
    margin: 0; background: var(--paper); color: var(--text);
    font: 400 17px/1.62 var(--f-body); font-feature-settings: "cv11", "ss01";
    -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility;
    overflow-x: clip;
}
img, svg, canvas { display: block; max-width: 100%; }
img { height: auto; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; }
h1, h2, h3, h4, p, ol, ul, dl, dd, figure, blockquote { margin: 0; }
ol, ul { padding: 0; list-style: none; }
address { font-style: normal; }
::selection { background: var(--orange); color: var(--navy); }
:focus-visible { outline: 2px solid var(--orange); outline-offset: 3px; border-radius: 2px; }
.sprite { position: absolute; width: 0; height: 0; overflow: hidden; }
.sr, .hp { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.skip { position: fixed; left: 16px; top: -60px; z-index: 200; background: var(--navy); color: #fff; padding: 12px 18px; border-radius: var(--radius); transition: top .2s; }
.skip:focus { top: 12px; }

/* ---------- type ---------- */
.wrap { width: min(100% - 2 * var(--gutter), var(--max)); margin-inline: auto; }
.mono { font-family: var(--f-mono); font-weight: 400; }
.serif { font-family: var(--f-serif); font-weight: 400; }
.peach { color: var(--peach); }
.eyebrow {
    display: block; font: 600 15px/1.4 var(--f-body); color: var(--orange-ink);
    margin-bottom: 18px;
}
.h1, .h2, .h3, .hero-h, .display { font-family: var(--f-display); color: var(--navy); font-weight: 700; letter-spacing: -.035em; text-wrap: balance; }
.h1 { font-size: clamp(42px, 6.6vw, 108px); line-height: .98; letter-spacing: -.04em; }
.h2 { font-size: clamp(32px, 4.6vw, 72px); line-height: 1.02; }
.h3 { font-size: clamp(24px, 2.4vw, 34px); line-height: 1.1; letter-spacing: -.025em; }
.display { font-size: clamp(42px, 7vw, 116px); line-height: .96; letter-spacing: -.045em; }
.lede { font-size: clamp(17px, 1.35vw, 20px); line-height: 1.6; max-width: 40em; color: var(--text); }
em { font-style: italic; }

/* dark grounds */
[data-theme="dark"] { background: var(--navy); color: rgba(255, 255, 255, .74); }
[data-theme="dark"] .h1, [data-theme="dark"] .h2, [data-theme="dark"] .h3, [data-theme="dark"] .display { color: #fff; }
[data-theme="dark"] .eyebrow { color: var(--apricot); }
[data-theme="dark"] .peach, .menu .peach, .order.is-helm .order-h-b { color: var(--apricot); }

/* ---------- buttons & links ---------- */
.ic { width: 20px; height: 20px; flex: none; }
.btn {
    --bg: var(--navy); --fg: #fff; --hover: var(--orange); --hover-fg: var(--navy);
    position: relative; display: inline-flex; align-items: center; gap: 12px; height: 52px; padding: 0 22px 0 24px;
    background: var(--bg); color: var(--fg); border-radius: 12px; font: 600 16px/1 var(--f-display); letter-spacing: -.01em;
    overflow: hidden; isolation: isolate; transition: color .45s var(--ease), transform .3s var(--ease); will-change: transform;
}
.btn::before {
    content: ""; position: absolute; inset: 0; z-index: -1; background: var(--hover);
    transform: translateY(101%); border-radius: 50% 50% 0 0 / 30% 30% 0 0; transition: transform .55s var(--ease), border-radius .55s var(--ease);
}
.btn:hover { color: var(--hover-fg); }
.btn:hover::before { transform: translateY(0); border-radius: 0; }
.btn .ic { transition: transform .45s var(--ease); }
.btn:hover .ic { transform: translateX(4px); }
.btn-lg { height: 62px; padding: 0 26px 0 30px; font-size: 18px; border-radius: 14px; }
.btn-sm { height: 42px; padding: 0 16px 0 18px; font-size: 15px; border-radius: 10px; gap: 8px; }
.btn-sm .ic { width: 18px; height: 18px; }
.btn-orange { --bg: var(--orange); --fg: var(--navy); --hover: #fff; --hover-fg: var(--navy); }
.btn-ghost { --bg: transparent; --fg: var(--navy); --hover: var(--navy); --hover-fg: #fff; box-shadow: inset 0 0 0 1.5px var(--navy); }
[data-theme="dark"] .btn:not(.btn-orange) { --bg: #fff; --fg: var(--navy); }
.link-arrow { display: inline-flex; align-items: center; gap: 10px; font: 600 16px/1.2 var(--f-display); color: var(--navy); }
.link-arrow span { background: linear-gradient(currentColor, currentColor) 0 100% / 0 1.5px no-repeat; padding-bottom: 3px; transition: background-size .45s var(--ease); }
.link-arrow:hover span, a:hover > .link-arrow span, a:hover .case-body .link-arrow span { background-size: 100% 1.5px; }
.link-arrow .ic { transition: transform .45s var(--ease); }
.link-arrow:hover .ic, a:hover .case-body .link-arrow .ic { transform: translateX(5px); }
[data-theme="dark"] .link-arrow { color: #fff; }

/* ==========================================================================
   Header & menu
   ========================================================================== */
.hdr {
    position: fixed; inset: 0 0 auto; z-index: 60; height: var(--hdr); color: var(--navy);
    transition: transform .5s var(--ease), background-color .4s, color .4s, box-shadow .4s; view-transition-name: hdr;
}
.hdr-in { width: min(100% - 2 * var(--gutter), var(--max)); margin-inline: auto; height: 100%; display: flex; align-items: center; gap: 28px; }
.hdr-logo { flex: none; margin-right: auto; }
.hdr-logo .logo { width: 172px; height: auto; aspect-ratio: 231 / 39.25; }
.hdr.is-scrolled { background: rgba(242, 244, 248, .82); backdrop-filter: blur(14px) saturate(1.4); -webkit-backdrop-filter: blur(14px) saturate(1.4); box-shadow: 0 1px 0 rgba(22, 11, 86, .08); }
.hdr.is-dark { color: #fff; }
.hdr.is-dark.is-scrolled { background: rgba(22, 11, 86, .8); box-shadow: 0 1px 0 rgba(255, 255, 255, .08); }
.hdr.is-hidden { transform: translateY(-100%); }
.hdr-nav { display: flex; align-items: center; gap: 4px; }
.hdr-link { position: relative; display: inline-block; padding: 10px 14px; font: 500 15px/1 var(--f-display); letter-spacing: -.005em; }
.hdr-link::after { content: ""; position: absolute; left: 14px; right: 14px; bottom: 4px; height: 1.5px; background: var(--orange); transform: scaleX(0); transform-origin: right; transition: transform .4s var(--ease); }
.hdr-link:hover::after, .hdr-link.active::after { transform: scaleX(1); transform-origin: left; }
.hdr.is-dark .btn { --bg: #fff; --fg: var(--navy); }
.hdr-sub { position: static; }
.hdr-in { position: relative; }
.hdr-drop {
    position: absolute; top: calc(100% - 4px); right: 0; width: min(960px, calc(100vw - 48px)); padding: 14px; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 4px 8px; background: #fff; border-radius: 14px;
    box-shadow: 0 24px 60px -20px rgba(22, 11, 86, .35), 0 0 0 1px rgba(22, 11, 86, .06); color: var(--navy);
    opacity: 0; visibility: hidden; transform: translateY(-6px); transition: opacity .3s, transform .4s var(--ease), visibility 0s .3s;
}
.hdr-drop::before { content: ""; position: absolute; inset: -30px 0 auto; height: 30px; }
.hdr-col { display: flex; flex-direction: column; gap: 2px; padding-bottom: 8px; }
.hdr-pillar { display: grid; grid-template-columns: 30px 1fr; column-gap: 10px; padding: 14px; border-radius: 10px; transition: background .25s; }
.hdr-pillar:hover { background: var(--paper); }
.hdr-pillar .ic { grid-row: span 2; width: 24px; height: 24px; color: var(--orange); }
.hdr-pillar strong { font: 650 16.5px/1.2 var(--f-display); letter-spacing: -.01em; }
.hdr-pillar em { font-style: normal; font-size: 13.5px; line-height: 1.45; color: var(--muted); margin-top: 4px; }
.hdr-col ul { display: grid; gap: 0; margin: 4px 0 0 26px; padding-left: 12px; border-left: 1px solid var(--line-2); }
.hdr-col li a { display: block; padding: 6px 8px; border-radius: 6px; font: 500 14.5px/1.3 var(--f-body); color: var(--navy); transition: background .2s, color .2s; }
.hdr-col li a:hover { background: var(--paper); color: var(--orange-ink); }
.hdr-all { grid-column: 1 / -1; display: flex; align-items: center; justify-content: space-between; margin-top: 6px; padding: 14px 16px; border-radius: 10px; background: var(--paper); font: 600 15px/1 var(--f-display); color: var(--navy); }
.hdr-all .ic { color: var(--orange); transition: transform .4s var(--ease); }
.hdr-all:hover .ic { transform: translateX(4px); }
.menu-sub { display: grid; gap: 4px; margin: 8px 0 6px 0; }
.menu-sub a { display: inline-flex !important; align-items: center; gap: 10px; font: 500 16px/1.3 var(--f-body) !important; letter-spacing: 0 !important; color: rgba(255, 255, 255, .72); }
.menu-sub .ic { width: 18px; height: 18px; color: var(--apricot); }
.hdr-sub:hover .hdr-drop, .hdr-sub:focus-within .hdr-drop { opacity: 1; visibility: visible; transform: none; transition-delay: 0s; }
.hdr-burger { display: none; width: 48px; height: 48px; margin-right: -10px; position: relative; z-index: 2; }
.hdr-burger i { position: absolute; left: 12px; right: 12px; height: 2px; background: currentColor; border-radius: 2px; transition: transform .45s var(--ease), top .45s var(--ease); }
.hdr-burger i:nth-of-type(1) { top: 19px; }
.hdr-burger i:nth-of-type(2) { top: 27px; }
.menu-open .hdr-burger i:nth-of-type(1) { top: 23px; transform: rotate(45deg); }
.menu-open .hdr-burger i:nth-of-type(2) { top: 23px; transform: rotate(-45deg); }
.menu-open .hdr { color: #fff; background: transparent !important; box-shadow: none !important; transform: none; }

.menu {
    position: fixed; inset: 0; z-index: 55; background: var(--navy); color: #fff;
    clip-path: inset(0 0 100% 0); visibility: hidden; transition: clip-path .7s var(--ease-io), visibility 0s .7s;
    overflow-y: auto; overscroll-behavior: contain;
}
.menu-open .menu { clip-path: inset(0 0 0 0); visibility: visible; transition: clip-path .7s var(--ease-io), visibility 0s; }
.menu-in { min-height: 100%; display: flex; flex-direction: column; justify-content: space-between; gap: 40px; padding: calc(var(--hdr) + 24px) var(--gutter) 32px; }
.menu-links a { display: flex; align-items: baseline; gap: 14px; padding: 6px 0; font: 700 clamp(38px, 11vw, 64px)/1.05 var(--f-display); letter-spacing: -.04em; }
.menu-links .mono { font-size: 12px; letter-spacing: .1em; color: var(--apricot); }
.menu-links li { overflow: hidden; }
.menu-links li a { transform: translateY(110%); transition: transform .7s var(--ease); }
.menu-open .menu-links li a { transform: none; }
.menu-open .menu-links li:nth-child(1) a { transition-delay: .12s; } .menu-open .menu-links li:nth-child(2) a { transition-delay: .16s; }
.menu-open .menu-links li:nth-child(3) a { transition-delay: .2s; } .menu-open .menu-links li:nth-child(4) a { transition-delay: .24s; }
.menu-open .menu-links li:nth-child(5) a { transition-delay: .28s; } .menu-open .menu-links li:nth-child(6) a { transition-delay: .32s; }
.menu-open .menu-links li:nth-child(7) a { transition-delay: .36s; }
.menu-foot { display: grid; gap: 6px; font: 500 17px/1.5 var(--f-display); }
.menu-foot .serif { margin-top: 14px; font-size: 18px; }

/* ==========================================================================
   The chart (WebGL contour canvas, js/chart.js)
   ========================================================================== */
.chart { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; opacity: 0; transition: opacity 1.4s var(--ease); }
.chart.is-live { opacity: 1; }

/* ==========================================================================
   Home — hero: "You think it. We build it."
   Type, space, two actions and the trust band, over slow curved lines (js/hero-lines.js).
   Everything paints on the first frame (split-now / rise); the loader holds it until it lifts.
   ========================================================================== */
.hero.hero-plain { position: relative; min-height: 100svh; display: flex; flex-direction: column; padding-top: var(--hdr); background: var(--paper); overflow: hidden; isolation: isolate; }
.hp-in { position: relative; z-index: 1; flex: 1; display: flex; flex-direction: column; justify-content: center; gap: clamp(28px, 5vh, 56px); padding-block: clamp(28px, 6vh, 72px); }
.hp-eyebrow { margin: 0; padding-top: 16px; border-top: 1px solid var(--line-2); }
.hp-eyebrow i { font-style: normal; color: var(--line-2); padding-inline: 6px; }

/* the headline, big on two deliberate lines, ending in the Helmsman asterisk */
.hp-h { margin: 0; font: 700 clamp(40px, 9.6vw, 140px)/.93 var(--f-display); letter-spacing: -.052em; color: var(--navy); text-wrap: balance; }
.hp-line { display: block; }
.hp-h .hero-ast { display: inline-block; width: .3em; height: .3em; margin-left: .06em; vertical-align: .04em; fill: var(--orange); }

/* the foot: one sentence and two actions */
.hp-foot { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: 24px clamp(32px, 6vw, 96px); padding-top: clamp(20px, 3vh, 32px); border-top: 1px solid var(--line); }
.hp-lede { max-width: 36em; font-size: clamp(17px, 1.35vw, 20px); line-height: 1.6; color: var(--text); }
.hp-ctas { display: flex; flex-wrap: wrap; align-items: center; gap: 16px 28px; }

/* slow curved lines behind (js/hero-lines.js): faint, and fainter still behind the words */
.hp-bg { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 0; pointer-events: none; opacity: 0; transition: opacity 1.6s var(--ease);
    -webkit-mask-image: linear-gradient(100deg, rgba(0,0,0,.35) 0%, rgba(0,0,0,.5) 40%, #000 80%);
            mask-image: linear-gradient(100deg, rgba(0,0,0,.35) 0%, rgba(0,0,0,.5) 40%, #000 80%); }
.hp-bg.is-live { opacity: 1; }

/* trust band */
.hero-band { position: relative; z-index: 3; }
.hero-band-in { display: grid; grid-template-columns: 1fr; align-items: center; gap: 24px 48px; padding-block: 22px; }
.hero-captain { font-size: clamp(18px, 1.6vw, 22px); color: #fff; }
.stats { display: flex; gap: clamp(22px, 4vw, 64px); }
.stats > div { display: flex; flex-direction: column-reverse; }
.stats dt { font-size: 11px; letter-spacing: .18em; text-transform: uppercase; color: var(--lavender); margin-top: 4px; }
.stats dd { font: 700 clamp(34px, 3.4vw, 50px)/1 var(--f-display); letter-spacing: -.04em; color: #fff; font-variant-numeric: tabular-nums; }
.stats dd b { color: var(--orange); font-weight: 700; }
.stats-light dt { color: var(--muted); }
.stats-light dd { color: var(--navy); }

/* ==========================================================================
   Home — intro & pillars
   ========================================================================== */
.intro { padding-block: clamp(77px, 11.2vw, 160px) clamp(58px, 8vw, 112px); }
.intro-h { margin: 0; font: 700 clamp(36px, 5.4vw, 88px)/1 var(--f-display); letter-spacing: -.045em; color: var(--navy); max-width: 14em; text-wrap: balance; }
.intro-lede { margin-top: clamp(18px, 2.4vw, 28px); max-width: 34em; font-size: clamp(18px, 1.5vw, 22px); line-height: 1.55; color: var(--text); }
.sw { color: #858AA0; transition: color .3s linear; }  /* large text: unread words stay above 3:1 */
.sw.is-lit { color: var(--navy); }
.pillars { margin-top: clamp(48px, 6vw, 88px); border-bottom: 1px solid var(--line-2); }
.pillar { border-top: 1px solid var(--line-2); }
.pillar a {
    position: relative; display: grid; grid-template-columns: 72px minmax(0, 1.05fr) minmax(0, 1.2fr) 64px; grid-template-areas: "num name line go" "num name tags go";
    align-items: center; column-gap: 24px; padding: clamp(26px, 3vw, 40px) 0; color: var(--navy); isolation: isolate;
}
.pillar a::before { content: ""; position: absolute; inset: 0 calc(-1 * var(--gutter)); z-index: -1; background: #fff; transform: scaleY(0); transform-origin: bottom; transition: transform .6s var(--ease); }
.pillar a:hover::before { transform: scaleY(1); }
.pillar-num { grid-area: num; font-size: 13px; color: var(--orange-ink); }
.pillar-name { grid-area: name; font: 700 clamp(28px, 3.4vw, 52px)/1 var(--f-display); letter-spacing: -.04em; transition: transform .6s var(--ease); }
.pillar a:hover .pillar-name { transform: translateX(10px); }
.pillar-line { grid-area: line; font-size: 17px; line-height: 1.5; color: var(--text); }
.pillar-tags { grid-area: tags; display: flex; flex-wrap: wrap; gap: 6px; margin-top: 12px; }
.pillar-tags i { font: 400 12px/1 var(--f-mono); font-style: normal; letter-spacing: .04em; padding: 7px 10px; border: 1px solid var(--line-2); border-radius: 4px; color: var(--navy); }
.pillar-go { grid-area: go; justify-self: end; display: grid; place-items: center; width: 56px; height: 56px; border-radius: 50%; border: 1.5px solid var(--navy); transition: background .45s var(--ease), border-color .45s, transform .6s var(--ease); }
.pillar a:hover .pillar-go { background: var(--orange); border-color: var(--orange); transform: rotate(-45deg); }

/* ==========================================================================
   Belief (navy)
   ========================================================================== */
.belief { position: relative; overflow: hidden; }
.belief-pin { position: relative; min-height: 100svh; display: flex; align-items: center; padding-block: clamp(110px, 14vw, 180px); }
.belief-static .belief-in { padding-block: clamp(77px, 9.6vw, 128px); }
.belief-ast { position: absolute; right: -14vmin; top: 50%; width: min(78vmin, 820px); height: auto; translate: 0 -50%; fill: none; stroke: var(--orange); stroke-opacity: .42; stroke-width: 1.6; }
.belief-in { position: relative; z-index: 1; }
.belief-h { display: block; font-size: clamp(34px, 5.2vw, 84px); line-height: 1.12; letter-spacing: -.012em; color: #fff; max-width: 17em; }
.belief-a, .belief-b { display: block; }
/* the setup line stays in serif; the answer lands big, bold and in the brand orange */
.belief-h:has(.belief-b) { max-width: none; }
.belief-a { max-width: none; text-wrap: balance; font: 700 clamp(28px, 3.9vw, 64px)/1.16 var(--f-display); letter-spacing: -.02em; word-spacing: .1em; }
.belief-b { max-width: 12.5em; margin-top: clamp(28px, 3.6vw, 60px); font: 800 clamp(44px, min(8.4vw, 13.5vh), 150px)/.92 var(--f-display); letter-spacing: -.045em; color: var(--orange); text-wrap: balance; }
.belief-b .bwm { display: inline-block; overflow: hidden; vertical-align: top; padding-bottom: .08em; margin-bottom: -.08em; }
.belief-b .bw { display: inline-block; transform-origin: 0 100%; }
.bw { display: inline-block; will-change: transform; transform-origin: 50% 100%; }
.belief-list { display: flex; flex-wrap: wrap; gap: 16px 56px; margin-top: clamp(40px, 6vw, 72px); padding-top: 26px; border-top: 1px solid var(--line-navy); font: 500 13px/1 var(--f-mono); letter-spacing: .18em; text-transform: uppercase; color: #fff; }
.belief-list .mono { color: var(--lavender); margin-right: 14px; }
.belief-note { margin-top: 32px; max-width: 40em; font-size: 18px; line-height: 1.65; }
.belief-note em { display: block; margin-top: 12px; color: var(--apricot); }

/* ==========================================================================
   One order. Entered once.
   ========================================================================== */
.order { position: relative; background: var(--paper); transition: background-color .8s var(--ease); }
.order.is-helm { background: var(--navy); }
.order-pin { min-height: 100svh; display: flex; flex-direction: column; justify-content: center; padding-block: calc(var(--hdr) + 24px) 40px; }
.order-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-end; gap: 16px 40px; }
.order-h-b { color: var(--orange-ink); transition: color .6s; }
.order-sub { max-width: 22em; font-size: 17px; }
.order .h2, .order-step, .order-sub, .order-head .eyebrow { transition: color .6s; }
.order-stage { margin-top: clamp(28px, 4vh, 48px); }
.order-tabs { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 52px; }
.order-tab { display: inline-flex; align-items: center; gap: 10px; padding: 9px 14px; border-radius: 999px; font: 500 11.5px/1 var(--f-mono); letter-spacing: .16em; text-transform: uppercase; color: var(--muted); border: 1px solid var(--line-2); transition: all .5s var(--ease); }
.order-tab i { width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
.order-tab.is-on { color: var(--navy); border-color: var(--navy); }
.order-board { position: relative; }
.order-wires { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; pointer-events: none; z-index: 2; }
.order-wires path { fill: none; stroke: var(--orange); stroke-width: 2; stroke-linecap: round; }
.order-wires circle { fill: var(--orange); }
.order-grid { position: relative; z-index: 1; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(10px, 1.4vw, 18px); }
.order-card {
    display: flex; flex-direction: column; gap: 14px; min-height: clamp(210px, 30vh, 280px); padding: clamp(14px, 1.6vw, 22px);
    background: #fff; border: 1px solid var(--line); border-radius: var(--radius); transition: background-color .7s var(--ease), border-color .7s, transform .7s var(--ease), opacity .6s;
}
.order-card-top { display: flex; justify-content: space-between; align-items: center; }
.order-dept { font-size: 11px; letter-spacing: .18em; text-transform: uppercase; color: var(--muted); }
.order-num { display: grid; place-items: center; width: 28px; height: 28px; border-radius: 4px; background: var(--navy); color: #fff; font: 500 12px/1 var(--f-mono); transition: background .6s, color .6s; }
.order-step { position: relative; display: grid; font: 600 clamp(15px, 1.35vw, 19px)/1.25 var(--f-display); color: var(--navy); letter-spacing: -.01em; min-height: 2.5em; }
.order-step > span { grid-area: 1 / 1; transition: opacity .5s, transform .6s var(--ease); }
.t-helm { opacity: 0; transform: translateY(8px); }
.order-doc { position: relative; margin-top: auto; display: grid; gap: 6px; padding: 12px 14px; background: var(--paper); border-radius: 4px; font: 400 13px/1.3 var(--f-mono); color: var(--navy); transition: background .6s, color .6s; }
.doc-k { font-size: 10.5px; letter-spacing: .1em; color: var(--muted); margin-bottom: 2px; }
.doc-row { display: flex; justify-content: space-between; gap: 10px; }
.doc-row em { font-style: normal; color: var(--muted); }
.doc-row b { font-weight: 500; min-width: 3ch; text-align: right; }
.doc-row b.is-caret::after { content: ""; display: inline-block; width: 1.5px; height: 1em; margin-left: 2px; vertical-align: -2px; background: currentColor; animation: caret .8s steps(1) infinite; }
@keyframes caret { 50% { opacity: 0; } }
.doc-row b.is-typo.is-done { color: var(--red); text-decoration: underline wavy var(--red); text-underline-offset: 3px; }
.doc-auto { position: absolute; right: 10px; top: 10px; font-size: 10px; letter-spacing: .14em; text-transform: uppercase; color: var(--orange); opacity: 0; transition: opacity .5s; }
.order-out { position: relative; display: grid; margin-top: 22px; min-height: 5.4em; }
.order-out ul { grid-area: 1 / 1; display: flex; flex-wrap: wrap; align-content: flex-start; gap: 8px 28px; font-size: 15.5px; transition: opacity .5s, transform .6s var(--ease); }
.order-out li { display: flex; align-items: center; gap: 10px; }
.order-out li::before { content: ""; width: 8px; height: 8px; background: var(--line-2); flex: none; }
.order-gain { opacity: 0; transform: translateY(8px); color: rgba(255, 255, 255, .84); }
.order-gain li::before { background: var(--orange) !important; }
.order-how { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 24px; margin-top: clamp(20px, 3vh, 36px); padding-top: 18px; border-top: 1.5px solid var(--orange); font-size: 15px; }
.order-how .eyebrow { margin: 0; }

.order.is-helm .h2, .order.is-helm .order-step { color: #fff; }
.order.is-helm .order-sub, .order.is-helm .order-how p { color: rgba(255, 255, 255, .74); }
.order.is-helm .order-head .eyebrow, .order.is-helm .order-how .eyebrow { color: var(--apricot); }
.order.is-helm .order-h-b { color: var(--apricot); }
.order.is-helm .order-tab { color: rgba(255, 255, 255, .68); border-color: rgba(255, 255, 255, .22); }
.order.is-helm .order-tab.is-on { color: #fff; border-color: var(--orange); }
.order.is-helm .order-tab.is-on i { background: var(--orange); }
.order.is-helm .order-card { background: rgba(255, 255, 255, .055); border-color: rgba(255, 255, 255, .14); }
.order.is-helm .order-card[data-card="0"] { border-color: var(--orange); }
.order.is-helm .order-card[data-card="0"] .order-num { background: var(--orange); color: var(--navy); }
.order.is-helm .order-num { background: rgba(255, 255, 255, .12); color: rgba(255, 255, 255, .6); }
.order.is-helm .order-dept, .order.is-helm .doc-k, .order.is-helm .doc-row em { color: rgba(255, 255, 255, .5); }
.order.is-helm .order-doc { background: rgba(255, 255, 255, .07); color: #fff; }
.order.is-helm .doc-row b.is-typo { color: #fff; text-decoration: none; }
.order.is-helm .order-card:not([data-card="0"]) .doc-auto { opacity: 1; }
.order.is-helm .t-today { opacity: 0; transform: translateY(-8px); }
.order.is-helm .t-helm { opacity: 1; transform: none; }
.order.is-helm .order-cost { opacity: 0; transform: translateY(-8px); }
.order.is-helm .order-gain { opacity: 1; transform: none; }
.doc-row b.is-pulse { animation: pulse 1.1s var(--ease); }
@keyframes pulse { 0%, 45% { color: var(--orange); text-shadow: 0 0 14px rgba(254, 122, 34, .8); } }

/* ==========================================================================
   What we build — the build reel (Components/Shared/BuildReel.razor)
   Two halves: "For running your business" on white, "For your customers" on navy.
   Base = a stacked list of big words (phones, short screens, reduced motion, no JS); the customer half sits on a
   full-width navy band. .is-armed (set by site.js on desktop) = one pinned screen where the words roll in one at
   a time; when the customer half starts, navy floods out of the asterisk (.reel-flood) and site.js sets
   data-theme="dark" on the section so the header and the counter follow.
   ========================================================================== */
.reel {
    /* the white half */
    --rl-fg: var(--navy); --rl-text: var(--text); --rl-kicker: var(--muted); --rl-rule: var(--line-2);
    --rl-tag: rgba(22, 11, 86, .2); --rl-tag-fg: var(--navy); --rl-more: var(--orange-ink);
    position: relative; overflow: hidden; background: var(--paper);
}
/* the navy half: each customer item carries its own colours, so it reads right pinned or stacked */
.reel-item.is-b {
    --rl-fg: #fff; --rl-text: #fff; --rl-kicker: var(--lavender); --rl-rule: var(--line-navy);
    --rl-tag: rgba(255, 255, 255, .22); --rl-tag-fg: rgba(255, 255, 255, .8); --rl-more: var(--apricot);
}
.reel[data-theme="dark"] { background: var(--paper); color: var(--text); } /* the flood paints the navy, not the section */
.reel-pin { position: relative; padding-block: clamp(80px, 11vw, 150px); }
.reel-flood { display: none; }
.reel-ast { position: absolute; right: -16vmin; top: 50%; width: min(96vmin, 920px); height: auto; translate: 0 -50%; fill: none; stroke: var(--orange); stroke-opacity: .32; stroke-width: 1.5; pointer-events: none; }
.reel-top { position: relative; z-index: 2; display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: 10px 32px; }
.reel-eyebrow { margin: 0; transition: color .6s; }
.reel-group { display: none; }
.reel-list { position: relative; z-index: 2; margin-top: clamp(28px, 4vw, 56px); }
.reel-item { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 26rem); align-items: end; gap: 12px 48px; padding-block: clamp(22px, 3vw, 36px); border-top: 1px solid var(--rl-rule); }
.reel-kicker { grid-column: 1 / -1; margin: 0; font-size: 11px; letter-spacing: .18em; text-transform: uppercase; color: var(--rl-kicker); }
.reel-kicker i { font-style: normal; color: var(--orange); padding-inline: 4px; }
.reel-word { margin: 0; font: 800 min(var(--fs, 12vw), 140px)/.86 var(--f-display); letter-spacing: -.055em; text-transform: uppercase; color: var(--rl-fg); }
.reel-item.is-b .reel-word { color: var(--orange); }
.reel-word span { display: block; overflow: hidden; padding-bottom: .06em; }
.reel-word i { display: block; font-style: normal; transition: transform .9s var(--ease); }
html.js .reel:not(.is-armed) .reel-item:not(.is-on) .reel-word i { transform: translateY(105%); animation: failsafe .01s 3.5s forwards; }
.reel-line { margin: 0; font-size: clamp(17px, 1.4vw, 20px); line-height: 1.5; color: var(--rl-text); }
.reel-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 14px; }
.reel-tags li { padding: 6px 10px; border: 1px solid var(--rl-tag); border-radius: 4px; font: 400 12px/1.2 var(--f-mono); letter-spacing: .04em; color: var(--rl-tag-fg); }
.reel-more { margin-top: 16px; font-size: 15px; color: var(--rl-more) !important; }
.reel-foot { position: relative; z-index: 2; display: flex; justify-content: space-between; align-items: flex-end; gap: 24px; margin-top: clamp(32px, 4vw, 56px); }
.reel-count { display: none; }
.reel-bar { display: none; }

/* stacked: the customer half and the button below it sit on one full-width navy band */
.reel:not(.is-armed) .reel-pin { padding-bottom: 0; }
.reel:not(.is-armed) .reel-item.is-b,
.reel:not(.is-armed) .reel-foot { background: var(--navy); box-shadow: 0 0 0 100vmax var(--navy); clip-path: inset(0 -100vmax); }
.reel:not(.is-armed) .reel-item.is-b { clip-path: inset(0 -100vmax -1px); } /* overlap by 1px so no hairline shows between the pieces */
.reel:not(.is-armed) .reel-item.is-b + .reel-item.is-b { border-top-color: var(--line-navy); }
.reel:not(.is-armed) .reel-foot { margin-top: 0; padding-block: clamp(28px, 4vw, 56px) clamp(80px, 11vw, 150px); }

/* the pinned reel */
.reel.is-armed .reel-pin { height: 100svh; display: flex; flex-direction: column; padding-block: calc(var(--hdr) + 20px) clamp(28px, 4vh, 44px); }
.reel.is-armed .reel-flood { display: block; position: absolute; inset: 0; background: var(--navy); clip-path: circle(0% at 80% 50%); transition: clip-path .6s cubic-bezier(.2, .7, .1, 1); pointer-events: none; }
.reel.is-armed.is-b-on .reel-flood { clip-path: circle(150% at 80% 50%); }
.reel.is-armed .reel-group { display: grid; justify-items: end; font-size: 12px; letter-spacing: .2em; text-transform: uppercase; }
.reel-group span { grid-area: 1 / 1; transition: opacity .5s, transform .6s var(--ease); }
.reel-group-a { color: var(--navy); }
.reel-group-b { color: var(--peach); opacity: 0; transform: translateY(8px); }
.reel.is-b-on .reel-group-a { opacity: 0; transform: translateY(-8px); }
.reel.is-b-on .reel-group-b { opacity: 1; transform: none; }
.reel.is-armed .reel-list { flex: 1; margin-block: 0; }
.reel.is-armed .reel-item { position: absolute; left: 0; right: 0; top: 50%; transform: translateY(-50%); grid-template-columns: 1fr; gap: clamp(18px, 3vh, 32px); padding: 0; border: 0; pointer-events: none; }
.reel.is-armed .reel-item.is-on { pointer-events: auto; }
.reel.is-armed .reel-kicker { display: none; }
.reel.is-armed .reel-word { font-size: min(var(--fs, 16vw), 30vh, 260px); }
.reel.is-armed .reel-word i { transform: translateY(115%); transition: transform .75s cubic-bezier(.2, .7, .1, 1); }
.reel.is-armed .reel-item.is-past .reel-word i { transform: translateY(-115%); transition-duration: .55s; }
.reel.is-armed .reel-item.is-on .reel-word i { transform: none; }
.reel.is-armed .reel-info { max-width: 34rem; opacity: 0; transform: translateY(16px); transition: opacity .35s, transform .5s var(--ease); }
.reel.is-armed .reel-item.is-on .reel-info { opacity: 1; transform: none; transition-delay: .18s; }
.reel.is-armed .reel-foot { margin-block: 0; }
.reel.is-armed .reel-count { display: block; margin: 0; font: 700 clamp(64px, 10vw, 170px)/.8 var(--f-display); letter-spacing: -.05em; color: var(--navy); font-variant-numeric: tabular-nums; transition: color .6s; }
.reel.is-armed.is-b-on .reel-count { color: #fff; }
.reel-count sup { font-size: .32em; vertical-align: 1.6em; color: var(--orange); margin-left: .08em; }
.reel.is-armed:not(.is-b-on) .reel-count sup { color: var(--orange-ink); }
.reel.is-armed .reel-bar { display: block; position: absolute; left: 0; right: 0; bottom: 0; height: 3px; background: var(--orange); transform: scaleX(0); transform-origin: left; }

@media (max-width: 640px) {
    .reel-item { grid-template-columns: 1fr; }
    .reel-foot .btn { width: 100%; justify-content: space-between; }
    /* the pinned reel on a phone: the button sits beside the counter, the group label under the heading */
    .reel.is-armed .reel-foot .btn { width: auto; }
    .reel.is-armed .reel-group { justify-items: start; font-size: 11px; }
    .reel.is-armed .reel-top { flex-direction: column; align-items: flex-start; }
}

/* ==========================================================================
   Nine questions
   ========================================================================== */
.nine { padding-block: clamp(64px, 8vw, 120px); }
.nine-head { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); align-items: end; gap: 16px 64px; }
.nine-head .eyebrow { grid-column: 1 / -1; margin-bottom: 0; }
.nine-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1px; margin-top: clamp(40px, 5vw, 64px); background: var(--line); border: 1px solid var(--line); }
.nine-q { position: relative; display: flex; gap: 18px; align-items: flex-start; min-height: 128px; padding: clamp(20px, 2.2vw, 30px); background: var(--paper); transition: background .6s var(--ease); }
.nine-q::before { content: ""; position: absolute; left: -1px; top: -1px; bottom: -1px; width: 3px; background: var(--orange); transform: scaleY(0); transform-origin: top; transition: transform .6s var(--ease); }
.nine-q .mono { font-size: 13px; color: var(--muted); padding-top: 5px; transition: color .5s; }
.nine-q > span:last-child { font: 600 clamp(18px, 1.6vw, 23px)/1.25 var(--f-display); letter-spacing: -.015em; color: var(--navy); }
html.js .nine-q > span:last-child { color: var(--muted); transition: color .6s; }
.nine-q.is-on { background: #fff; }
.nine-q.is-on::before { transform: scaleY(1); }
.nine-q.is-on .mono { color: var(--orange-ink); }
html.js .nine-q.is-on > span:last-child { color: var(--navy); }
.nine-banner { margin-top: 12px; padding: clamp(18px, 2vw, 26px) clamp(20px, 2.4vw, 34px); background: var(--navy); color: #fff; font-size: clamp(20px, 2vw, 28px); }

/* ==========================================================================
   Seven stages
   ========================================================================== */
.stages { position: relative; background: #fff; }
.stages-pin { padding-block: clamp(90px, 10vw, 140px) clamp(60px, 7vw, 100px); overflow: hidden; }
.stages-head .h2 { max-width: 17em; }
.stages-view { margin-top: clamp(40px, 6vh, 72px); }
.stages-track { display: flex; gap: 16px; padding-inline: max(var(--gutter), (100vw - var(--max)) / 2); width: max-content; will-change: transform; }
.stage { position: relative; display: flex; flex-direction: column; width: clamp(280px, 26vw, 360px); min-height: clamp(360px, 48vh, 460px); padding: 28px 26px 44px; background: var(--paper); border-radius: var(--radius); }
.stage-num { font: 700 clamp(48px, 5vw, 72px)/1 var(--f-display); letter-spacing: -.04em; color: #7F849B; transition: color .6s; font-variant-numeric: tabular-nums; }
.stage-name { margin-top: 14px; font: 700 clamp(24px, 2.2vw, 30px)/1.1 var(--f-display); color: var(--navy); letter-spacing: -.03em; }
.stage-text { margin-top: 14px; font-size: 16px; line-height: 1.55; }
.stage-out { margin-top: auto; padding-top: 22px; display: grid; }
.stage-out .label-h { margin-bottom: 6px; font-size: 15px; color: var(--orange-ink); }
.stage-out strong { font: 600 18px/1.25 var(--f-display); color: var(--navy); }
.stage::after { content: ""; position: absolute; left: 26px; right: 26px; bottom: 18px; height: 3px; background: var(--line); }
.stage::before { content: ""; position: absolute; left: 26px; right: 26px; bottom: 18px; height: 3px; background: var(--orange); z-index: 1; transform: scaleX(0); transform-origin: left; transition: transform .8s var(--ease); }
.stage.is-on .stage-num { color: var(--orange); }
.stage.is-on::before { transform: scaleX(1); }
.stages-course { margin-top: 28px; }
.stages-course span { display: block; height: 2px; background: var(--line); }
.stages-course i { display: block; height: 100%; background: var(--navy); transform: scaleX(0); transform-origin: left; }

/* ==========================================================================
   Work — case studies & products
   ========================================================================== */
.work { padding-block: clamp(77px, 9.6vw, 136px) clamp(48px, 6.4vw, 88px); }
.work-head { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: 16px 40px; margin-bottom: clamp(40px, 5vw, 72px); }
.work-head .eyebrow { grid-column: 1 / -1; margin: 0; }
.work-head .h2 { max-width: 14em; }
.cases { display: grid; gap: 24px; }
.case { position: sticky; top: calc(var(--hdr) + 12px); }
.case-in {
    display: grid; grid-template-columns: minmax(0, 1.12fr) minmax(0, .88fr); min-height: min(72vh, 640px);
    background: #fff; border: 1px solid var(--line); border-radius: 10px; overflow: hidden; transform-origin: 50% 0; will-change: transform;
    box-shadow: 0 -18px 40px -30px rgba(22, 11, 86, .3);
}
.case-img { position: relative; background: var(--paper); overflow: hidden; min-height: 320px; }
.case-img img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; padding: clamp(8px, 2vw, 28px); transition: transform 1.2s var(--ease); }
.case-in:hover .case-img img { transform: scale(1.035); }
.case-body { display: flex; flex-direction: column; padding: clamp(24px, 3vw, 48px); }
.case-title { font: 700 clamp(28px, 3vw, 46px)/1.02 var(--f-display); letter-spacing: -.04em; color: var(--navy); text-wrap: balance; }
.case-sum { margin-top: 16px; font-size: 17px; }
.case-meta { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin-top: 26px; padding-top: 14px; border-top: 2px solid var(--navy); }
.case-meta dt { font-size: 10.5px; letter-spacing: .18em; text-transform: uppercase; color: var(--muted); }
.case-meta dd { margin-top: 4px; font: 600 15px/1.3 var(--f-display); color: var(--navy); }
.case-impact { margin-top: 24px; font-size: 15.5px; }
.case-impact .label-h { margin-bottom: 8px; }
.case-body .link-arrow { margin-top: auto; padding-top: 26px; }
.work-note { margin-top: 28px; font-size: 14px; color: var(--muted); }

.products { padding-block: clamp(48px, 6.4vw, 96px); }
.build-foot { margin-top: 40px; font-size: clamp(18px, 1.6vw, 22px); color: var(--navy); }
.products-head .h2 { max-width: 16em; }
.products-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(16px, 2vw, 28px); margin-top: clamp(36px, 5vw, 64px); }
.product-img { overflow: hidden; border-radius: var(--radius); background: var(--paper-2); aspect-ratio: 5 / 3; }
.product-img img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--ease); }
.product:hover .product-img img { transform: scale(1.04); }
.product .mono { display: block; margin-top: 20px; font-size: 12px; color: var(--orange-ink); }
.product h3 { margin-top: 8px; font: 700 clamp(21px, 1.8vw, 25px)/1.15 var(--f-display); letter-spacing: -.025em; color: var(--navy); }
.product p { margin-top: 10px; font-size: 15.5px; line-height: 1.55; }

/* ==========================================================================
   The honest test
   ========================================================================== */
.honest { padding-block: clamp(77px, 9.6vw, 136px); }
.honest-head { max-width: 58rem; }
.honest-head .lede { margin-top: 20px; }
.honest-body { display: grid; grid-template-columns: minmax(0, 1.45fr) minmax(0, .8fr); gap: clamp(28px, 4vw, 64px); margin-top: clamp(36px, 5vw, 64px); align-items: start; }
.honest-list { border-top: 2px solid var(--navy); }
.honest-q { display: grid; grid-template-columns: 44px minmax(0, 1fr) auto; align-items: center; gap: 12px 20px; padding: 20px 0; border-bottom: 1px solid var(--line); }
.honest-q .mono { font-size: 13px; color: var(--orange-ink); }
.honest-q p { font: 600 clamp(17px, 1.45vw, 20px)/1.3 var(--f-display); color: var(--navy); letter-spacing: -.012em; }
.honest-yn { display: inline-flex; padding: 4px; gap: 4px; background: var(--paper-2); border-radius: 10px; }
.honest-yn button { min-width: 62px; height: 40px; padding: 0 14px; border-radius: 7px; font: 600 14px/1 var(--f-display); color: var(--navy); transition: background .35s var(--ease), color .35s; }
.honest-yn button:hover { background: #fff; }
.honest-yn button[data-a="yes"][aria-pressed="true"] { background: var(--navy); color: #fff; }
.honest-yn button[data-a="no"][aria-pressed="true"] { background: var(--orange); color: var(--navy); }
.honest-card { position: sticky; top: calc(var(--hdr) + 24px); padding: clamp(26px, 3vw, 40px); background: var(--navy); color: rgba(255, 255, 255, .74); border-radius: 10px; }
.honest-card .eyebrow { color: var(--apricot); }
.honest-verdict { font-size: clamp(22px, 2vw, 28px); line-height: 1.3; color: #fff; min-height: 5.2em; }
.honest-meter { display: grid; grid-template-columns: repeat(5, 1fr); gap: 6px; margin: 26px 0; }
.honest-meter i { height: 6px; border-radius: 3px; background: rgba(255, 255, 255, .14); transition: background .4s; }
.honest-meter i.is-yes { background: var(--apricot); }
.honest-meter i.is-no { background: var(--orange); }
.honest-card .btn { margin-bottom: 22px; }
.honest-card .btn[hidden] { display: none; }
.honest-note { font-size: 14px; line-height: 1.6; color: rgba(255, 255, 255, .62); }

/* ==========================================================================
   Why Helmsman
   ========================================================================== */
.why { padding-block: clamp(64px, 8vw, 120px); }
.why-head .h2 { max-width: 20em; }
.why-list { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; margin-top: clamp(36px, 5vw, 64px); }
.why-item { display: flex; flex-direction: column; padding: 26px 24px 28px; background: #fff; border-radius: var(--radius); }
.why-num { display: grid; place-items: center; width: 34px; height: 34px; border-radius: 4px; background: var(--navy); color: #fff; font-size: 12px; }
.why-item h3 { position: relative; margin-top: 30px; font: 700 21px/1.2 var(--f-display); letter-spacing: -.02em; color: var(--navy); }
.why-item h3::before { content: ""; position: absolute; left: 0; top: -14px; width: 22px; height: 2.5px; background: var(--orange); }
.why-item p { margin-top: 10px; font-size: 15px; line-height: 1.55; }
.why-card { display: flex; align-items: flex-end; padding: 28px 24px; border-radius: var(--radius); }
.why-card p { font-size: clamp(19px, 1.6vw, 23px); line-height: 1.35; color: #fff; }
/* why cards, alive: they come in with the number popping and the orange rule drawing itself; on hover a card
   lifts, a soft orange light follows the pointer (--mx/--my from site.js), the rule stretches and the number turns orange */
.why-item { position: relative; overflow: hidden; isolation: isolate; transition: translate .55s var(--ease), box-shadow .55s var(--ease); }
html.js .why-item[data-reveal] { transition: opacity 1s var(--ease) var(--d, 0s), transform 1.1s var(--ease) var(--d, 0s), translate .55s var(--ease), box-shadow .55s var(--ease); }
.why-item::after { content: ""; position: absolute; inset: 0; z-index: -1; background: radial-gradient(280px circle at var(--mx, 50%) var(--my, 0%), rgba(244, 117, 32, .13), transparent 65%); opacity: 0; transition: opacity .45s; pointer-events: none; }
.why-item:hover { translate: 0 -6px; box-shadow: 0 26px 50px -26px rgba(22, 11, 86, .38); }
.why-item:hover::after { opacity: 1; }
.why-num { transition: background .4s, color .4s; }
.why-item:hover .why-num { background: var(--orange); color: var(--navy); }
.why-item h3::before { transform-origin: left; transition: width .55s var(--ease); }
.why-item:hover h3::before { width: 56px; }
.why-item.is-in .why-num { animation: why-pop .7s calc(var(--d, 0s) + .25s) var(--ease) backwards; }
.why-item.is-in h3::before { animation: why-draw .7s calc(var(--d, 0s) + .4s) var(--ease) backwards; }
@keyframes why-pop { from { opacity: 0; transform: translateY(6px); } }
@keyframes why-draw { from { transform: scaleX(0); } }
/* the blueprint card: the asterisk turns slowly in its corner and leans in on hover */
.why-card { position: relative; overflow: hidden; isolation: isolate; transition: translate .55s var(--ease), box-shadow .55s var(--ease); }
html.js .why-card[data-reveal] { transition: opacity 1s var(--ease) var(--d, 0s), transform 1.1s var(--ease) var(--d, 0s), translate .55s var(--ease), box-shadow .55s var(--ease); }
.why-card p { position: relative; }
.why-card-ast { position: absolute; right: -34%; top: -38%; z-index: -1; width: 92%; height: auto; fill: none; stroke: var(--orange); stroke-opacity: .45; stroke-width: 1.4; animation: why-turn 40s linear infinite; transition: scale .8s var(--ease), stroke-opacity .5s; }
.why-card:hover { translate: 0 -6px; box-shadow: 0 26px 50px -26px rgba(22, 11, 86, .5); }
.why-card:hover .why-card-ast { scale: 1.14; stroke-opacity: .8; }
@keyframes why-turn { to { rotate: 360deg; } }
.ways, .ways-band { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 26px; margin-top: 14px; padding: 20px clamp(20px, 2.4vw, 32px); background: var(--navy); border-radius: var(--radius); color: #fff; }
.ways .eyebrow, .ways-band .eyebrow { margin: 0; color: var(--apricot); }
.ways ul, .ways-band ul { display: flex; flex-wrap: wrap; gap: 6px 0; font-size: 15.5px; }
.ways li + li::before, .ways-band li + li::before { content: "·"; padding-inline: 10px; color: rgba(255, 255, 255, .4); }
.ways-band { margin-bottom: clamp(60px, 8vw, 120px); }

/* ==========================================================================
   Clients & quotes
   ========================================================================== */
.clients { padding-block: clamp(64px, 8vw, 120px); }
.clients-head { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: 16px 64px; align-items: end; }
.clients-head .eyebrow { grid-column: 1 / -1; margin: 0; }
.clients-grid { display: grid; grid-template-columns: repeat(8, minmax(0, 1fr)); gap: 1px; margin-top: clamp(36px, 5vw, 64px); background: var(--line); border: 1px solid var(--line); }
.clients-grid li { position: relative; aspect-ratio: 2 / 1; background: #fff; overflow: hidden; perspective: 600px; transition: box-shadow .45s var(--ease); }
.clients-grid li::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 3px; background: var(--orange); transform: scaleX(0); transform-origin: left; transition: transform .5s var(--ease); }
.clients-grid li:hover { z-index: 1; box-shadow: 0 18px 40px -18px rgba(22, 11, 86, .35); }
.clients-grid li:hover::after { transform: none; }
.clients-grid img { position: absolute; inset: 20% 15%; width: 70%; height: 60%; object-fit: contain; backface-visibility: hidden; transition: transform .6s var(--ease); }
.clients-grid li:hover img { transform: scale(1.08); }

/* ==========================================================================
   FAQ
   ========================================================================== */
.faq { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); gap: 32px clamp(32px, 6vw, 96px); padding-block: clamp(64px, 8vw, 120px); }
.faq-head { align-self: start; position: sticky; top: calc(var(--hdr) + 32px); }
.faq-list { border-top: 2px solid var(--navy); }
.faq-item { border-bottom: 1px solid var(--line-2); }
.faq-item summary { display: flex; justify-content: space-between; align-items: center; gap: 24px; padding: 24px 0; cursor: pointer; list-style: none; font: 600 clamp(18px, 1.5vw, 21px)/1.3 var(--f-display); letter-spacing: -.012em; color: var(--navy); }
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary .ic { width: 26px; height: 26px; flex: none; transition: transform .45s var(--ease); }
.faq-item[open] summary .ic { transform: rotate(45deg); color: var(--orange); }
.faq-a { overflow: hidden; }
.faq-a p { padding-bottom: 26px; max-width: 62ch; font-size: 16.5px; line-height: 1.65; }

/* ==========================================================================
   Footer
   ========================================================================== */
.ftr { position: relative; z-index: 1; overflow: hidden; }
/* while the page lifts off it, the footer comes up out of the dark (site.js tweens --shade) */
.ftr::after { content: ""; position: absolute; inset: 0; z-index: 3; background: #07031F; opacity: var(--shade, 0); pointer-events: none; }
.ftr-in { padding-top: clamp(72px, 8vw, 120px); }
.ftr-top, .ftr-base { width: min(100% - 2 * var(--gutter), var(--max)); margin-inline: auto; }

/* top: the invitation on the left, small labelled columns on the right */
.ftr-top { position: relative; z-index: 1; display: grid; grid-template-columns: minmax(0, 1.7fr) repeat(4, minmax(0, 1fr)); gap: 40px 32px; padding-bottom: clamp(48px, 5vw, 80px); }
.ftr-h { margin: 0; max-width: 11em; font: 600 clamp(30px, 3.1vw, 50px)/1.06 var(--f-display); letter-spacing: -.035em; color: #fff; text-wrap: balance; }
.ftr-h span { display: block; color: rgba(255, 255, 255, .42); }
.ftr-btn { display: inline-flex; align-items: center; gap: 12px; height: 50px; margin-top: clamp(24px, 2.6vw, 36px); padding: 0 22px 0 26px; border-radius: 999px; background: var(--orange); color: var(--navy); font: 600 15.5px/1 var(--f-display); letter-spacing: -.01em; transition: background .35s, color .35s; }
.ftr-btn .ic { width: 18px; height: 18px; transition: transform .45s var(--ease); }
.ftr-btn:hover { background: #fff; }
.ftr-btn:hover .ic { transform: translateX(3px); }
.ftr-col { display: flex; flex-direction: column; align-items: flex-start; gap: 9px; font: 400 14.5px/1.45 var(--f-body); font-style: normal; color: rgba(255, 255, 255, .62); }
.ftr-k { margin: 0 0 6px; font: 500 11px/1 var(--f-mono); letter-spacing: .16em; text-transform: uppercase; color: rgba(255, 255, 255, .38); }
.ftr-col a { display: inline-flex; align-items: center; gap: 4px; color: rgba(255, 255, 255, .86); transition: color .25s; }
.ftr-col a:hover { color: var(--orange); }
.ftr-col .ic { width: 14px; height: 14px; opacity: .5; }

/* one hairline, then the base line */
.ftr-base { position: relative; z-index: 1; display: flex; flex-wrap: wrap; align-items: center; gap: 10px 28px; padding-top: 20px; border-top: 1px solid rgba(255, 255, 255, .12); font: 400 13px/1.4 var(--f-body); color: rgba(255, 255, 255, .45); }
.ftr-base a { color: rgba(255, 255, 255, .62); transition: color .25s; }
.ftr-base a:hover { color: #fff; }
.ftr-top-link { display: inline-flex; align-items: center; gap: 6px; margin-left: auto; }
.ftr-top-link .ic { width: 14px; height: 14px; rotate: -90deg; }

/* the name: the real wordmark, edge to edge, flush with the bottom of the page */
.ftr-name { position: relative; z-index: 1; margin-top: clamp(28px, 4vw, 64px); }
.ftr-name svg { width: 100%; height: auto; aspect-ratio: 494 / 74; overflow: hidden; }
.ftr-name text { font: 800 100px var(--f-display); letter-spacing: -5px; fill: #fff; }
.ftr-word, .ftr-star { transform-box: fill-box; }
.ftr-word { transition: transform 1.5s var(--ease); }
.ftr-star { transform-origin: center; }
html.js .ftr-name:not(.is-shown) .ftr-word { transform: translateY(112%); }
html.js .ftr-name:not(.is-shown) .ftr-star { transform: scale(0); }
.ftr-name.is-shown .ftr-star { animation: ftr-land 1.6s .5s var(--ease) both, ftr-turn 18s 2.1s linear infinite; }
@keyframes ftr-land { from { transform: rotate(-300deg) scale(0); } }
@keyframes ftr-turn { to { transform: rotate(360deg); } }

/* the curtain (desktop): the page is a sheet with rounded corners lifting off the footer */
html.is-curtain { --curve: clamp(28px, 3vw, 48px); }
html.is-curtain main { position: relative; z-index: 2; background: var(--paper); border-radius: 0 0 var(--curve) var(--curve); box-shadow: 0 60px 90px -40px rgba(8, 4, 36, .7); }
html.is-curtain .ftr { margin-top: calc(-1 * var(--curve)); padding-top: var(--curve); }

@media (max-width: 980px) {
    .ftr-top { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .ftr-cta { grid-column: 1 / -1; }
}
@media (max-width: 480px) {
    .ftr-top { gap: 32px 20px; }
    .ftr-top-link { margin-left: 0; }
}
@media (prefers-reduced-motion: reduce) {
    .ftr-name .ftr-star { animation: none !important; }
}

/* ==========================================================================
   Inner pages
   ========================================================================== */
.phero { position: relative; overflow: hidden; padding-top: calc(var(--hdr) + clamp(56px, 9vw, 120px)); padding-bottom: clamp(56px, 8vw, 110px); }
.phero-chart { -webkit-mask-image: radial-gradient(90% 110% at 88% 30%, #000 20%, transparent 72%); mask-image: radial-gradient(90% 110% at 88% 30%, #000 20%, transparent 72%); }
.phero-in { position: relative; z-index: 1; }
.crumbs { display: flex; flex-wrap: wrap; gap: 10px; font-size: 12px; letter-spacing: .12em; text-transform: uppercase; color: var(--muted); margin-bottom: clamp(24px, 4vw, 48px); }
.crumbs a { display: inline-block; padding-block: 6px; margin-block: -6px; }   /* a bigger tap area, same look */
.crumbs a:hover { color: var(--navy); }
.crumbs [aria-current] { color: var(--navy); }
.phero-num { display: block; margin-bottom: 16px; font-size: 13px; letter-spacing: .14em; text-transform: uppercase; color: var(--orange-ink); }
.phero .h1 { max-width: 15ch; }
.phero-lede { margin-top: clamp(20px, 3vw, 32px); max-width: 38em; font-size: clamp(18px, 1.5vw, 21px); line-height: 1.55; }
.phero-ctas { display: flex; flex-wrap: wrap; align-items: center; gap: 18px 30px; margin-top: 36px; }

.svc-index { display: grid; gap: 14px; padding-bottom: 14px; }
.svc-block { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.3fr); gap: 24px clamp(32px, 5vw, 80px); padding: clamp(28px, 4vw, 56px); background: #fff; border-radius: 10px; }
.svc-block-head .mono { font-size: 13px; color: var(--orange-ink); }
.svc-block-head .h3 { margin-top: 10px; font-size: clamp(28px, 3vw, 42px); }
.svc-block-line { margin-top: 14px; font-size: 17px; }
.svc-block-head .btn { margin-top: 28px; }
.svc-block-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 28px; align-content: start; }
.svc-block-list li { display: grid; padding: 14px 0; border-bottom: 1px solid var(--line); }
.svc-block-list strong { font: 600 16.5px/1.3 var(--f-display); color: var(--navy); }
.svc-block-list span { font-size: 14.5px; line-height: 1.45; }

.svc-intro { padding-block: clamp(38px, 4.8vw, 64px) clamp(51px, 6.4vw, 88px); border-top: 1px solid var(--line-2); }
.svc-oneline { font: 500 clamp(26px, 3.4vw, 52px)/1.14 var(--f-display); letter-spacing: -.028em; color: var(--navy); max-width: 22em; }
.svc-intro-cols { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px clamp(32px, 5vw, 80px); margin-top: clamp(32px, 4vw, 56px); font-size: 17.5px; line-height: 1.65; }
.caps { padding-bottom: clamp(64px, 8vw, 112px); }
.caps-head .h2 { max-width: 18em; }
.caps-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: clamp(32px, 5vw, 80px); margin-top: clamp(36px, 5vw, 64px); }
.cap { display: grid; grid-template-columns: 52px minmax(0, 1fr); column-gap: 12px; padding: 28px 0; border-top: 1px solid var(--line-2); }
.cap-num { grid-row: span 3; font-size: 13px; color: var(--orange-ink); padding-top: 6px; }
.cap-name { font: 700 clamp(22px, 2vw, 28px)/1.15 var(--f-display); letter-spacing: -.025em; color: var(--navy); }
.cap-line { margin-top: 6px; font: 500 13px/1.5 var(--f-mono); color: var(--orange-ink); letter-spacing: .02em; }
.cap-detail { margin-top: 12px; font-size: 16px; line-height: 1.6; }
.svc-belief { padding-block: clamp(64px, 8vw, 112px); }
.svc-belief-q { font-size: clamp(28px, 4vw, 60px); line-height: 1.15; color: #fff; max-width: 18em; }
.related { padding-block: clamp(64px, 8vw, 112px) 40px; }
.related-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: clamp(20px, 3vw, 40px); margin-top: clamp(32px, 4vw, 56px); }
.rcard-img { overflow: hidden; border-radius: 10px; background: var(--paper-2); aspect-ratio: 16 / 10; margin-bottom: 22px; }
.rcard-img img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--ease); }
.rcard:hover .rcard-img img { transform: scale(1.04); }
.rcard .eyebrow { margin-bottom: 10px; }
.rcard h3 { font: 700 clamp(24px, 2.2vw, 32px)/1.1 var(--f-display); letter-spacing: -.03em; color: var(--navy); }
.rcard p { margin-top: 10px; font-size: 16px; }
.svc-process { padding-block: clamp(51px, 6.4vw, 88px); }
.svc-process-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: end; gap: 16px 40px; }
.svc-process-head .eyebrow { width: 100%; margin: 0; }
.mini-stages { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 8px; margin-top: 36px; }
.mini-stages li { display: grid; align-content: start; gap: 6px; padding: 18px 16px 20px; background: #fff; border-radius: var(--radius); border-bottom: 3px solid var(--line); }
.mini-stages li:first-child { border-color: var(--orange); }
.mini-stages .mono { font-size: 12px; color: var(--orange-ink); }
.mini-stages strong { font: 700 18px/1.2 var(--f-display); color: var(--navy); }
.mini-stages em { font-style: normal; font-size: 13.5px; line-height: 1.35; }
.svc-next { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.svc-next a { display: grid; grid-template-columns: 40px 1fr auto; grid-template-areas: "n t i" "n e i"; gap: 4px 12px; align-items: center; padding: 28px; background: var(--navy); color: rgba(255, 255, 255, .7); border-radius: 10px; transition: background .4s; }
.svc-next a:hover { background: var(--navy-3); }
.svc-next .mono { grid-area: n; font-size: 12px; color: var(--apricot); align-self: start; padding-top: 6px; }
.svc-next strong { grid-area: t; font: 700 clamp(22px, 2vw, 28px)/1.15 var(--f-display); color: #fff; letter-spacing: -.025em; }
.svc-next em { grid-area: e; font-style: normal; font-size: 15px; }
.svc-next .ic { grid-area: i; width: 28px; height: 28px; color: var(--orange); transition: transform .45s var(--ease); }
.svc-next a:hover .ic { transform: translateX(6px); }

/* case study page */
.cs-meta { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; max-width: 62rem; margin-top: 40px; padding-top: 16px; border-top: 2px solid var(--navy); }
.cs-meta dt { font-size: 10.5px; letter-spacing: .18em; text-transform: uppercase; color: var(--muted); }
.cs-meta dd { margin-top: 4px; font: 600 16px/1.3 var(--f-display); color: var(--navy); }
.cs-meta a { text-decoration: underline; text-decoration-color: var(--orange); text-underline-offset: 4px; }
.cs-shot { padding: clamp(12px, 3vw, 48px); background: var(--paper-2); border-radius: 12px; overflow: hidden; }
.cs-shot img { width: 100%; border-radius: 6px; }
.cs-shot figcaption { margin-top: 14px; font-size: 12.5px; letter-spacing: .08em; color: var(--text); }
.cs-body { display: grid; padding-block: clamp(51px, 6.4vw, 96px) 0; }
.cs-row { display: grid; grid-template-columns: minmax(0, .5fr) minmax(0, 1.5fr); gap: 16px 48px; padding-block: clamp(28px, 4vw, 48px); border-top: 1px solid var(--line-2); }
.cs-row .eyebrow { margin: 6px 0 0; }
.cs-lead { font: 500 clamp(20px, 2vw, 28px)/1.4 var(--f-display); letter-spacing: -.015em; color: var(--navy); max-width: 34em; }
.chips { display: flex; flex-wrap: wrap; gap: 8px; }
.chips li { padding: 9px 13px; border: 1px solid var(--line-2); border-radius: 4px; background: #fff; font: 400 13px/1.2 var(--f-mono); color: var(--navy); transition: border-color .3s; }
.chips-link a { display: block; margin: -9px -13px; padding: 9px 13px; }
.chips-link li:has(a):hover { border-color: var(--navy); }
.cs-impact { margin-top: 24px; padding: clamp(28px, 4vw, 56px); border-radius: 10px; }
.cs-impact .serif { font-size: clamp(24px, 2.8vw, 40px); line-height: 1.3; color: #fff; max-width: 26em; }
.cs-next { padding-block: clamp(51px, 6.4vw, 96px); }
.cs-next a { display: grid; grid-template-columns: 1fr auto; gap: 8px 32px; padding-top: 28px; border-top: 2px solid var(--navy); }
.cs-next .eyebrow { grid-column: 1 / -1; margin: 0; }
.cs-next strong { display: block; }
.cs-next em { font-style: normal; font-size: 17px; max-width: 40em; }
.cs-next .ic { grid-row: 2 / span 2; grid-column: 2; align-self: center; width: 44px; height: 44px; color: var(--orange); transition: transform .5s var(--ease); }
.cs-next a:hover .ic { transform: translateX(8px); }

/* industries */
.inds { padding-bottom: clamp(40px, 6vw, 80px); }
.ind-list { border-bottom: 1px solid var(--line-2); }
.ind { display: grid; grid-template-columns: 56px minmax(0, .9fr) minmax(0, 1.1fr); grid-template-areas: "n name line" "n name chips" "n name case"; gap: 12px 32px; padding: clamp(28px, 3.4vw, 44px) 0; border-top: 1px solid var(--line-2); scroll-margin-top: calc(var(--hdr) + 20px); }
.ind-num { grid-area: n; font-size: 13px; color: var(--orange-ink); padding-top: 8px; }
.ind-name { grid-area: name; font: 700 clamp(26px, 2.8vw, 40px)/1.05 var(--f-display); letter-spacing: -.035em; color: var(--navy); }
.ind-line { grid-area: line; font-size: 17px; }
.ind .chips { grid-area: chips; }
.ind-case { grid-area: case; font-size: 15px; }

/* about */
.about-intro { padding-block: clamp(38px, 4.8vw, 64px) clamp(64px, 8vw, 112px); border-top: 1px solid var(--line-2); }
.about-cols { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr); gap: 48px clamp(40px, 6vw, 96px); align-items: end; }
.about-big { font: 500 clamp(26px, 3.2vw, 48px)/1.16 var(--f-display); letter-spacing: -.028em; color: var(--navy); }
.about-cols .stats { flex-direction: column; gap: 26px; }
.team { padding-block: clamp(64px, 8vw, 120px) 0; }
.team-head { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: 16px 64px; align-items: end; }
.team-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(20px, 3vw, 48px); margin-top: clamp(40px, 5vw, 72px); }
.person-photo { position: relative; aspect-ratio: 4 / 5; overflow: hidden; border-radius: 10px; background: var(--navy); }
.person-photo img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--ease); }
.person:hover .person-photo img { transform: scale(1.03); }
.person-photo span { position: absolute; inset: 0; display: grid; place-items: center; font: 800 clamp(64px, 9vw, 140px)/1 var(--f-display); letter-spacing: -.05em; color: rgba(255, 255, 255, .14); }
.person h3 { margin-top: 24px; font: 700 clamp(24px, 2.2vw, 32px)/1.1 var(--f-display); color: var(--navy); letter-spacing: -.03em; }
.person-role { margin-top: 6px; font: 500 15px/1.4 var(--f-body); color: var(--orange-ink); }
.person-bio { margin-top: 14px; max-width: 34em; font-size: 16px; line-height: 1.6; }
.person-in { margin-top: 16px; font-size: 14.5px; }
@media (max-width: 760px) { .team-head, .team-list { grid-template-columns: minmax(0, 1fr); } }

/* contact */
.contact { padding-top: calc(var(--hdr) + clamp(40px, 7vw, 100px)); padding-bottom: clamp(80px, 10vw, 140px); }
.contact-in { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); gap: 48px clamp(40px, 6vw, 96px); align-items: start; }
.contact .h1 { max-width: 9ch; }
.contact-lede { margin-top: 24px; max-width: 30em; font-size: clamp(18px, 1.5vw, 21px); }
.contact-ways { display: grid; gap: 14px; margin-top: 40px; font: 500 clamp(18px, 1.6vw, 22px)/1.35 var(--f-display); color: var(--navy); }
.contact-ways li { display: flex; gap: 14px; align-items: flex-start; }
.contact-ways .ic { margin-top: 3px; color: var(--orange-ink); }
.contact-ways a { background: linear-gradient(var(--orange), var(--orange)) 0 100% / 0 2px no-repeat; transition: background-size .45s var(--ease); }
.contact-ways a:hover { background-size: 100% 2px; }
.contact-next { margin-top: 48px; padding-top: 24px; border-top: 1px solid var(--line-2); }
.contact-next li { display: grid; grid-template-columns: 40px 1fr; padding: 8px 0; font-size: 16px; }
.contact-next .mono { font-size: 12px; color: var(--orange-ink); padding-top: 4px; }
.form { padding: clamp(24px, 3.4vw, 48px); background: #fff; border-radius: 14px; box-shadow: 0 40px 80px -50px rgba(22, 11, 86, .35); }
.form-need { border: 0; padding: 0; margin: 0 0 28px; min-width: 0; }
.form-need legend { padding: 0; }
.need-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.need { position: relative; }
.need input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.need span { display: flex; align-items: center; min-height: 52px; height: 100%; padding: 10px 16px; border-radius: 10px; border: 1.5px solid var(--line); font: 500 15px/1.3 var(--f-display); color: var(--navy); transition: background .3s, border-color .3s, color .3s; }
.need input:hover + span { border-color: var(--navy); }
.need input:checked + span { background: var(--navy); border-color: var(--navy); color: #fff; }
.need input:focus-visible + span { outline: 2px solid var(--orange); outline-offset: 2px; }
.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px 20px; }
.field { display: grid; gap: 6px; }
.field-wide { grid-column: 1 / -1; }
.field > span { font: 500 11.5px/1 var(--f-mono); letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }
.field input, .field textarea { width: 100%; padding: 12px 0; border: 0; border-bottom: 1.5px solid #8A90A6; background: transparent; font: 500 17px/1.4 var(--f-display); color: var(--navy); caret-color: var(--orange); border-radius: 0; transition: border-color .3s; resize: vertical; }
.field textarea { min-height: 110px; }
.field input:focus, .field textarea:focus { outline: none; border-color: var(--navy); box-shadow: 0 1.5px 0 var(--navy); }
.field input::placeholder, .field textarea::placeholder { color: #A5AABB; font-weight: 400; }
.field.is-bad input { border-color: var(--red); }
.form-hint { margin-top: 18px; font-size: 14px; color: var(--muted); }
.form-go { display: flex; flex-wrap: wrap; align-items: center; gap: 16px 24px; margin-top: 26px; }
.form-status { font-size: 15.5px; color: var(--navy); }
.form-status.is-bad { color: var(--red); }
.form-status.is-ok { color: #1E7A45; }
.form-legal { margin-top: 20px; font-size: 13px; color: var(--muted); }
.form-legal a, .form-status a { text-decoration: underline; text-underline-offset: 3px; }

/* prose & not found */
.prose { max-width: 70ch; padding-bottom: clamp(64px, 8vw, 112px); }
.prose-date { font-size: 14px; color: var(--muted); }
.prose h2 { margin: 36px 0 10px; font: 700 22px/1.2 var(--f-display); color: var(--navy); }
.prose a { text-decoration: underline; text-decoration-color: var(--orange); text-underline-offset: 3px; }
.nf { position: relative; min-height: 88svh; display: grid; align-items: center; overflow: hidden; padding-top: var(--hdr); }
.nf-in { position: relative; z-index: 1; }
.nf .h1 { max-width: 12ch; }
.nf .lede { margin-top: 24px; }
.nf-links { display: flex; flex-wrap: wrap; gap: 14px 32px; margin-top: 32px; }

/* ==========================================================================
   Motion primitives (driven by js/site.js)
   ========================================================================== */
@keyframes failsafe { to { opacity: 1; transform: none; } }
html.js [data-reveal]:not(.is-in) { opacity: 0; transform: translateY(26px); animation: failsafe .01s 3.5s forwards; }
html.js [data-reveal] { transition: opacity 1s var(--ease), transform 1.1s var(--ease); transition-delay: var(--d, 0s); }
html.js [data-split]:not(.is-split) { opacity: 0; animation: failsafe .01s 3.5s forwards; }
.sl { display: inline-block; overflow: hidden; vertical-align: top; padding-bottom: .1em; margin-bottom: -.1em; padding-right: .02em; }
.sl > span { display: inline-block; transform: translateY(108%); transition: transform 1.05s var(--ease); transition-delay: var(--d, 0s); }
.is-in .sl > span, .sl.is-in > span { transform: none; }
html.js [data-clients] li { opacity: 0; transform: translateY(26px) scale(.9); transition: opacity .7s var(--ease) var(--d, 0s), transform .8s var(--ease) var(--d, 0s), box-shadow .45s var(--ease); }
html.js [data-clients].is-in li { opacity: 1; transform: none; }

/* page-to-page transition (browsers with cross-document View Transitions) */
@view-transition { navigation: auto; }
::view-transition-old(root) { animation: vt-out .35s var(--ease-io) both; }
::view-transition-new(root) { animation: vt-in .6s var(--ease) both; }
@keyframes vt-out { to { opacity: 0; transform: translateY(-14px); } }
@keyframes vt-in { from { opacity: 0; transform: translateY(22px); } }

/* ==========================================================================
   Responsive
   ========================================================================== */
@media (max-width: 1180px) {
    .why-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .clients-grid { grid-template-columns: repeat(6, minmax(0, 1fr)); }
    .mini-stages { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (max-width: 980px) {
    .hp-foot { grid-template-columns: 1fr; }
    .hero-band-in { grid-template-columns: 1fr; gap: 16px; }
    :root { --hdr: 66px; }
    .hdr-nav, .hdr-cta { display: none; }
    .hdr-burger { display: block; }
    .hdr-logo .logo { width: 150px; }
    .pillar a { grid-template-columns: 48px minmax(0, 1fr) 52px; grid-template-areas: "num name go" "num line go" "num tags go"; row-gap: 10px; }
    .pillar-go { width: 48px; height: 48px; }
    .caps-list, .svc-intro-cols, .svc-block, .cs-row, .about-cols, .contact-in, .faq, .honest-body, .nine-head, .clients-head { grid-template-columns: 1fr; }
    .faq-head { position: static; }
    .honest-card { position: static; }
    .order-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .case { position: static; }
    .case-in { grid-template-columns: 1fr; min-height: 0; }
    .case-img { aspect-ratio: 16 / 10; min-height: 0; }
    .products-grid, .team-list { grid-template-columns: 1fr 1fr; }
    .ind { grid-template-columns: 44px minmax(0, 1fr); grid-template-areas: "n name" "n line" "n chips" "n case"; }
    .svc-next { grid-template-columns: 1fr; }
    .cs-meta { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .stages-track { flex-direction: column; width: auto; padding-inline: var(--gutter); transform: none !important; }
    .stage { width: auto; min-height: 0; }
    .stages-course { display: none; }
}
@media (max-width: 640px) {
    .hp-h { font-size: clamp(42px, 12.6vw, 64px); }
    .hp-ctas .btn { width: 100%; justify-content: space-between; }
    body { font-size: 16px; }
    .stats { gap: 22px; justify-content: space-between; }
    .nine-grid, .why-list, .products-grid, .team-list, .need-grid, .form-grid, .svc-block-list { grid-template-columns: 1fr; }
    .nine-q { min-height: 0; }
    .clients-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .mini-stages { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .honest-q { grid-template-columns: 34px minmax(0, 1fr); }
    .honest-yn { grid-column: 2; justify-self: start; }
    .case-meta { grid-template-columns: 1fr 1fr; }
    .order-card { min-height: 0; }
    .order-step { font-size: 14.5px; }
    .order-doc { font-size: 12px; padding: 10px; }
    .order-out ul { font-size: 14px; }
    .belief-list { gap: 14px 28px; }
    .belief-pin { min-height: 0; }
    .doc-k { padding-right: 34px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
}

/* ==========================================================================
   Reduced motion: everything is shown, nothing moves
   ========================================================================== */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
    html.js [data-reveal], html.js [data-split], .sl > span, html.js [data-clients] li { opacity: 1 !important; transform: none !important; }
    .sw { color: var(--navy); }
    html.js .nine-q > span:last-child { color: var(--navy); }
}

/* Hero copy enters with CSS alone, so it paints on the first frame (it is the page's Largest Contentful Paint).
   Starting at .01 rather than 0 keeps it an LCP candidate from the very first paint. */
@keyframes rise { from { opacity: .01; transform: translateY(18px); } }
.rise { animation: rise 1s var(--ease) both; animation-delay: var(--d, 0s); }
@media (prefers-reduced-motion: reduce) { .rise { animation: none; } }

/* Server-split headings (Ui/Split.cs): the word reveal runs on the first frame, without JavaScript */
@keyframes word-up { from { transform: translateY(108%); } }
.split-now .sl > span { transform: none; transition: none; animation: word-up 1.05s var(--ease) both; animation-delay: var(--d, 0s); }
@media (prefers-reduced-motion: reduce) { .split-now .sl > span { animation: none; } }

/* Profile screenshots come on white or grey plates: multiply blends both into the panel colour */
.case-img img, .rcard-img img, .cs-shot img { mix-blend-mode: multiply; }

/* ==========================================================================
   Motion between and around the pages (js/fx.js; html.fx-on unless reduced motion)
   ========================================================================== */
/* 1. page transitions: the navy cover with the turning asterisk */
.pt { position: fixed; inset: 0; z-index: 9998; display: grid; place-items: center; background: var(--navy); pointer-events: none; visibility: hidden; clip-path: inset(100% 0 0 0); }
.pt-ast { width: min(16vmin, 130px); height: auto; fill: var(--orange); opacity: 0; transform: scale(.4) rotate(-90deg); transition: opacity .3s, transform .6s var(--ease); }
html.fx-on .pt-ast { animation: pt-turn 2.4s linear infinite; }
@keyframes pt-turn { to { rotate: 360deg; } }
/* leaving: the cover slides up from the bottom */
html.is-pt-arm .pt { visibility: visible; transition: clip-path .55s cubic-bezier(.7, 0, .2, 1); }
html.is-pt-in .pt { clip-path: inset(0 0 0 0); }
html.is-pt-in .pt-ast { opacity: 1; transform: none; transition-delay: .18s; }
/* arriving: the page starts covered, then the cover lifts off the top */
html.is-pt .pt { visibility: visible; clip-path: inset(0 0 0 0); }
html.is-pt .pt-ast { opacity: 1; transform: none; }
html.is-pt-out .pt { clip-path: inset(0 0 100% 0); transition: clip-path .75s cubic-bezier(.7, 0, .2, 1); }
html.is-pt-out .pt-ast { opacity: 0; transform: translateY(-40px) scale(.7); transition: opacity .3s, transform .5s var(--ease); }
/* entrance effects wait under the cover, like they wait under the loader */
html.is-pt:not(.is-pt-out) .split-now .sl > span, html.is-pt:not(.is-pt-out) .rise { animation-play-state: paused; }

/* 2. the cursor */
.cur { position: fixed; left: 0; top: 0; z-index: 9990; display: grid; place-items: center; width: 10px; height: 10px; margin: -5px 0 0 -5px; border-radius: 50%; background: var(--orange); pointer-events: none; opacity: 0; transition: width .4s var(--ease), height .4s var(--ease), margin .4s var(--ease), background .3s, border-color .3s, opacity .3s, scale .2s; border: 1px solid transparent; }
.cur.is-on { opacity: 1; }
.cur.is-link { width: 42px; height: 42px; margin: -21px 0 0 -21px; background: rgba(244, 117, 32, .14); border-color: var(--orange); }
.cur.is-label { width: 92px; height: 92px; margin: -46px 0 0 -46px; background: var(--orange); }
.cur.is-down { scale: .85; }
.cur span { font: 600 14px/1 var(--f-display); letter-spacing: -.01em; color: var(--navy); opacity: 0; transform: scale(.6); transition: opacity .25s, transform .4s var(--ease); }
.cur.is-label span { opacity: 1; transform: none; }
html.fx-on [data-cursor], html.fx-on [data-cursor] * { cursor: none; }


/* 3. the footer name: letters lift off the bottom edge as the pointer passes */
.ftr-name .ftr-l { font: 800 100px var(--f-display); fill: #fff; transform-box: fill-box; }

/* ==========================================================================
   The drawn route (js/route.js, home page)
   ========================================================================== */
.route { position: absolute; left: 0; top: 0; z-index: 5; max-width: none; overflow: visible; pointer-events: none; }
.route path { fill: none; stroke: var(--orange); stroke-linecap: round; stroke-linejoin: round; }
.route-trail { stroke-width: 1.2; stroke-dasharray: 1 9; opacity: .32; }      /* the course still ahead, dotted */
.route-line { stroke-width: 2; }
/* the ship's wheel at the pen tip: the brand asterisk in a rim with round handles; orange holds on paper and on navy */
.route-helm { transition: opacity .45s; }
.route-helm .helm-rim { fill: none; stroke: var(--orange); stroke-width: 2; }
.route-helm .helm-knob, .route-helm .helm-spokes { fill: var(--orange); }
.route-helm .helm-hub { fill: var(--navy); stroke: #fff; stroke-width: 1.2; }
/* with the wheel on the page, the footer asterisk does not land by itself: it shows the moment the wheel docks into it */
html.has-helm .ftr-name.is-shown .ftr-star { animation: ftr-turn 18s linear infinite; opacity: 0; transition: opacity .3s; }
html.has-helm .ftr-name.is-shown.is-docked .ftr-star { opacity: 1; }
@media (max-width: 640px) { .route-line { stroke-width: 1.5; } .route-trail { display: none; } }

/* ==========================================================================
   Insights — index (InsightsIndex.razor) and article (InsightArticle.razor)
   ========================================================================== */
.ins { padding-bottom: clamp(64px, 8vw, 120px); }
.ins-meta { display: flex; flex-wrap: wrap; gap: 6px 22px; font-size: 11.5px; letter-spacing: .16em; text-transform: uppercase; color: var(--orange-ink); }
.ins-list { border-top: 2px solid var(--navy); }
.ins-row { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 2.6fr) 28px; align-items: start; gap: 10px 40px; padding: clamp(26px, 3vw, 40px) 0; border-bottom: 1px solid var(--line-2); transition: padding .45s var(--ease); }
.ins-side { display: grid; gap: 6px; padding-top: 6px; }
.ins-topic { font: 600 14.5px/1.3 var(--f-body); color: var(--orange-ink); }
.ins-min { font-size: 14px; color: var(--muted); }
.ins-main { display: grid; gap: 12px; }
.ins-title { font: 700 clamp(22px, 2.2vw, 34px)/1.12 var(--f-display); letter-spacing: -.03em; color: var(--navy); text-wrap: balance; transition: color .3s; }
.ins-desc { max-width: 52em; font-size: 16px; line-height: 1.6; color: var(--text); }
.ins-feed { margin-top: 28px; font-size: 14px; color: var(--muted); }
.ins-go { margin-top: 10px; align-self: start; width: 22px; height: 22px; color: var(--navy); transition: transform .45s var(--ease), color .3s; }
.ins-row:hover { padding-left: 14px; }
.ins-row:hover .ins-title { color: var(--orange-ink); }
.ins-row:hover .ins-go { transform: translateX(6px); color: var(--orange); }
.ins-feed a { color: var(--navy); text-decoration: underline; text-decoration-color: var(--orange); text-underline-offset: 3px; }

.art-byline { display: flex; flex-wrap: wrap; gap: 6px 24px; margin-top: 28px; padding-top: 16px; border-top: 2px solid var(--navy); max-width: 46rem; font-size: 14px; letter-spacing: 0; color: var(--muted); }
.art-byline span:first-child { color: var(--navy); }
.art-byline a { text-decoration: underline; text-decoration-color: var(--orange); text-underline-offset: 3px; }
.art { display: grid; grid-template-columns: minmax(0, 15rem) minmax(0, 46rem); justify-content: space-between; gap: 48px; padding-bottom: clamp(45px, 5.6vw, 80px); }
.art-toc { position: sticky; top: calc(var(--hdr) + 28px); align-self: start; }
.art-toc ol { display: grid; gap: 10px; margin-top: 4px; padding-left: 14px; border-left: 1px solid var(--line-2); font-size: 14px; line-height: 1.4; }
.art-toc a { color: var(--text); transition: color .25s; }
.art-toc a:hover { color: var(--orange-ink); }
.art-answer { padding: clamp(22px, 2.6vw, 32px); background: #fff; border-left: 3px solid var(--orange); border-radius: 0 10px 10px 0; }
.art-answer .eyebrow { margin-bottom: 10px; }
.art-answer p { font: 500 clamp(18px, 1.5vw, 21px)/1.55 var(--f-display); letter-spacing: -.01em; color: var(--navy); }
.art-sec { padding-top: clamp(36px, 4vw, 52px); scroll-margin-top: calc(var(--hdr) + 24px); }
.art-sec h2 { font: 700 clamp(24px, 2.3vw, 34px)/1.15 var(--f-display); letter-spacing: -.025em; color: var(--navy); text-wrap: balance; }
.art-sec p { margin-top: 16px; font-size: 18px; line-height: 1.75; color: var(--text); }
.art-sec ul { display: grid; gap: 12px; margin-top: 18px; }
.art-sec li { position: relative; padding-left: 26px; font-size: 17.5px; line-height: 1.6; color: var(--navy); }
.art-sec li::before { content: ""; position: absolute; left: 0; top: .62em; width: 12px; height: 2px; background: var(--orange); }
.art-cta { margin-top: clamp(44px, 5vw, 64px); padding: clamp(26px, 3vw, 40px); border-radius: 14px; }
.art-cta-h { margin-top: 8px; font: 650 clamp(22px, 2vw, 30px)/1.25 var(--f-display); letter-spacing: -.02em; color: #fff; }
.art-cta-go { display: flex; flex-wrap: wrap; align-items: center; gap: 16px 28px; margin-top: 24px; }
.art-more { padding-bottom: clamp(64px, 8vw, 112px); }
.art-more .ins-list { margin-top: 14px; }

@media (max-width: 980px) {
    .ins-row { grid-template-columns: minmax(0, 1fr); gap: 12px; }
    .ins-side { display: flex; flex-wrap: wrap; gap: 4px 16px; padding-top: 0; }
    .ins-go { display: none; }
    .art { grid-template-columns: minmax(0, 1fr); }
    .art-toc { position: static; }
}

/* ==========================================================================
   Work — one format for everything (Work.razor grid + WorkItemView.razor pages)
   The cards borrow the home page's "Selected work" card: white, 10px radius, the screen on a soft plate,
   a mono eyebrow, a bold title and a navy-ruled facts strip. Case studies are pinned first and span wider.
   ========================================================================== */
.work-head .more-filter { align-self: end; }
.more-filter { display: flex; flex-wrap: wrap; gap: 8px; }
.more-filter button { display: inline-flex; align-items: center; gap: 8px; height: 42px; padding: 0 16px; border: 1px solid var(--line-2); border-radius: 999px; background: #fff; font: 500 14.5px/1 var(--f-display); color: var(--navy); cursor: pointer; transition: background .3s, color .3s, border-color .3s; }
.more-filter button span { font: 400 11px/1 var(--f-mono); color: var(--muted); transition: color .3s; }
.more-filter button:hover { border-color: var(--navy); }
.more-filter button.is-on { background: var(--navy); border-color: var(--navy); color: #fff; }
.more-filter button.is-on span { color: var(--apricot); }

.work-note a { color: var(--navy); text-decoration: underline; text-decoration-color: var(--orange); text-underline-offset: 3px; }

/* the item page */
.pj-meta dd { font-size: 15px; }
.pj-meta a { text-decoration: underline; text-decoration-color: var(--orange); text-underline-offset: 4px; }
.pj-brief { display: grid; grid-template-columns: minmax(0, .5fr) minmax(0, 1.5fr); gap: 16px 48px; padding-block: 8px clamp(40px, 5vw, 64px); }
.pj-brief .eyebrow { margin: 8px 0 0; }
.pj-gallery { display: grid; gap: clamp(18px, 2.4vw, 32px); }
.pj-gallery-more { padding-top: clamp(45px, 5.6vw, 80px); }
.pj-shot { overflow: hidden; border: 1px solid var(--line); border-radius: 10px; background: #fff; }
.pj-shot img { width: 100%; height: auto; }
.pj-long-win { position: relative; height: min(84vh, 900px); overflow-y: auto; overscroll-behavior: contain; border: 1px solid var(--line); border-radius: 10px; background: #fff; scrollbar-width: thin; }
.pj-long-win img { width: 100%; height: auto; }
.pj-long-win:focus-visible { outline-offset: 4px; }
.pj-long figcaption { margin-top: 10px; font-size: 12.5px; letter-spacing: .08em; color: var(--muted); }
.cs-chips-h { margin: 24px 0 12px; }
.pj-related { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px 32px; padding-top: clamp(48px, 6vw, 80px); }
.pj-source { font-size: 14.5px; color: var(--navy); text-decoration: underline; text-decoration-color: var(--orange); text-underline-offset: 3px; }

@media (max-width: 980px) {
    .work-head { grid-template-columns: minmax(0, 1fr); }
    .pj-brief { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 560px) {
    .pj-long-win { height: 72vh; }
}

/* ==========================================================================
   Typography (2026-10-12, the owner's option A): no spaced-out capital labels and no typewriter face for
   labels. Sections are carried by their headings; the few labels that do a job are small plain headings.
   ========================================================================== */
:root { --f-mono: var(--f-body); }
:is(.eyebrow, .stats dt, .belief-list, .order-tab, .order-dept, .doc-auto, .reel-kicker, .reel.is-armed .reel-group, .case-meta dt, .ftr-k, .crumbs, .phero-num, .cs-meta dt, .person .mono, .field > span, .ins-meta, .ins-topic, .art-byline, .wk-eyebrow, .wk-meta i) {
    text-transform: none; letter-spacing: 0; font-variant-numeric: tabular-nums;
}
:is(.case-meta dt, .cs-meta dt, .wk-meta i, .stats dt, .order-dept, .field > span) { font-size: 13px; font-weight: 500; }
:is(.crumbs, .phero-num, .wk-eyebrow, .ins-meta, .ins-topic, .ftr-k, .order-tab, .person .mono, .reel-kicker) { font-size: 14px; font-weight: 500; }
.belief-list { font-size: 17px; font-weight: 500; }
:is(.chips li, .pillar-tags i, .reel-tags li) { font-family: var(--f-body); font-size: 14px; letter-spacing: 0; }
.phero-num { color: var(--muted); }
.hp-eyebrow { font: 500 16px/1.4 var(--f-body); color: var(--muted); }
.h2 { font-size: clamp(36px, 5.4vw, 84px); letter-spacing: -.045em; line-height: .98; }
.label-h { display: block; margin: 0 0 12px; font: 650 17px/1.3 var(--f-display); letter-spacing: -.01em; color: var(--navy); }
.q-h { font: 700 clamp(21px, 2vw, 28px)/1.15 var(--f-display); letter-spacing: -.02em; color: var(--navy); }
[data-theme="dark"] :is(.label-h, .q-h), [data-theme="dark"]:is(.label-h, .q-h) { color: #fff; }
.rcard-meta { margin-bottom: 10px; font: 500 14px/1.4 var(--f-body); color: var(--orange-ink); }
.reel-eyebrow { font: 600 15px/1.3 var(--f-body); }

/* ==========================================================================
   Work list (owner's choice 2026-10-12): image-led and a little uneven. site.js places the items in columns
   of unequal width that start at different heights; without JS it falls back to plain CSS columns.
   ========================================================================== */
/* C: image-led. The screens do the talking, at their own shapes, with a short caption under each */
.wkm { list-style: none; margin: 0; padding: 0; columns: 3 300px; column-gap: clamp(16px, 2vw, 28px); }
.wkm-li { break-inside: avoid; margin-bottom: clamp(24px, 3vw, 40px); }
.wkm-li[hidden] { display: none; }
.wkm-in { display: block; color: var(--navy); }
.wkm-img { display: block; overflow: hidden; border: 1px solid var(--line); border-radius: 10px; background: var(--paper); }
.wkm-img img { width: 100%; height: auto; max-height: 720px; object-fit: cover; object-position: top center; transition: transform 1.2s var(--ease); }
a.wkm-in:hover .wkm-img img { transform: scale(1.03); }
.wkm-cap { display: flex; justify-content: space-between; align-items: baseline; gap: 6px 16px; flex-wrap: wrap; margin-top: 12px; }
.wkm-cap strong { font: 700 19px/1.2 var(--f-display); letter-spacing: -.02em; }
.wkm-cap em { font-style: normal; font-size: 14px; color: var(--muted); }
.wkm-li.is-case .wkm-cap em { color: var(--orange-ink); }
.wkm.is-mason { columns: auto; position: relative; transition: height .6s var(--ease); }
.wkm.is-mason .wkm-li { position: absolute; left: 0; top: 0; margin: 0; transition: transform .7s var(--ease), opacity .4s; }
.wkm.is-mason.is-ready .wkm-li { will-change: transform; }

/* ==========================================================================
   Sub-service pages (SubServicePage.razor) and the practice pages' list of them
   ========================================================================== */
.sub-fit { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.25fr); gap: 24px clamp(32px, 6vw, 96px); align-items: start; padding-block: clamp(51px, 6.4vw, 96px) 0; }
.sub-signs { display: grid; gap: 0; border-top: 2px solid var(--navy); }
.sub-signs li { position: relative; padding: 18px 0 18px 34px; border-bottom: 1px solid var(--line-2); font-size: 17px; line-height: 1.5; color: var(--navy); }
.sub-signs li::before { content: ""; position: absolute; left: 4px; top: 27px; width: 14px; height: 2px; background: var(--orange); }
.sub-approach { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px clamp(24px, 4vw, 56px); margin-block: clamp(24px, 3vw, 40px); max-width: 72rem; }
.sub-approach p { font-size: 16.5px; line-height: 1.65; }
.sub-more { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 32px clamp(32px, 5vw, 80px); padding-block: clamp(45px, 5.6vw, 80px); }
.sub-more-h { margin-bottom: 16px; font: 700 21px/1.2 var(--f-display); letter-spacing: -.02em; color: var(--navy); }
.sub-guides { display: grid; gap: 12px; }
.sub-guides .link-arrow { font-size: 16px; }
.sub-strip { padding-block: clamp(40px, 5vw, 72px) 0; }
.sub-strip-h { margin-bottom: 18px; font: 700 clamp(22px, 2vw, 28px)/1.2 var(--f-display); letter-spacing: -.025em; color: var(--navy); }
.sub-strip ul { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 12px; }
.sub-strip a { display: flex; align-items: center; justify-content: space-between; gap: 12px; height: 100%; padding: 18px 20px; border: 1px solid var(--line-2); border-radius: 10px; background: #fff; font: 600 16.5px/1.25 var(--f-display); color: var(--navy); transition: border-color .3s, transform .5s var(--ease); }
.sub-strip a:hover { border-color: var(--navy); transform: translateY(-2px); }
.sub-strip .ic { color: var(--orange); flex: none; }
.sub-next { padding-bottom: clamp(45px, 5.6vw, 80px); }
.svc-next-sub a { grid-template-columns: 1fr auto; grid-template-areas: "t i" "e i"; }
.sub-fit + .caps { padding-top: clamp(64px, 8vw, 112px); }
.cap-more { grid-column: 2; justify-self: start; display: inline-flex; margin-top: 14px; font-size: 14.5px; }
@media (max-width: 900px) {
    .sub-fit, .sub-approach { grid-template-columns: minmax(0, 1fr); }
}

/* touch screens: every footer and contents link gets a finger-sized target (at least 40px tall) */
@media (pointer: coarse), (max-width: 760px) {
    .ftr-col { gap: 0; }
    .ftr-col a { min-height: 40px; }
    .ftr-base a { min-height: 40px; display: inline-flex; align-items: center; }
    .art-toc a { display: inline-flex; align-items: center; min-height: 40px; }
    .link-arrow, .pj-source { min-height: 44px; display: inline-flex; align-items: center; }
    .chips-link li { padding: 0; }
    .chips-link a { margin: 0; padding: 12px 14px; }
    .hdr-logo { padding-block: 10px; }
    main a[href^="tel:"], main a[href^="mailto:"] { display: inline-flex; align-items: center; min-height: 44px; }
}

/* ==========================================================================
   Phones, polished (2026-10-13 review at 390px). Most visitors read the site on a phone.
   ========================================================================== */
/* the label on the navy "Ways to work together" bands (all sizes): it is a plain heading now, so give it the light colour */
:is(.ways, .ways-band) .label-h { margin: 0; color: var(--apricot); }
/* body text ends without a lonely last word; headings break evenly */
p, li, dd { text-wrap: pretty; }
:is(h1, h2, h3, .wk-title, .wkm-cap strong, .cap-name, .ind-name) { text-wrap: balance; }
.prose p + p { margin-top: 14px; }
/* the footer: brighter column labels and address */
.ftr-k { color: rgba(255, 255, 255, .62); }
.ftr-col address, .ftr-col { color: rgba(255, 255, 255, .74); }

@media (max-width: 640px) {
    /* type: a clear step between page title and section titles */
    .h2 { font-size: clamp(28px, 8.2vw, 34px); line-height: 1.05; }
    .about-big { font-size: 21px; line-height: 1.3; }
    /* "Technology built around your business": about one phone screen (owner 2026-11-02; tags stay) */
    .intro { padding-block: 56px 40px; }
    .intro-h { font-size: 32px; }
    .intro-lede { font-size: 17px; }
    .pillars { margin-top: 32px; }
    .pillar a { padding-block: 22px; }
    .pillar-line { font-size: 16px; }
    .pillar-tags { margin-top: 6px; }
    /* numbered rows: the number sits above the title, the text gets the full width */
    .pillar a { grid-template-columns: minmax(0, 1fr) 44px; grid-template-areas: "num go" "name go" "line line" "tags tags"; row-gap: 6px; column-gap: 12px; }
    .pillar-go { width: 44px; height: 44px; align-self: start; }
    .cap { grid-template-columns: minmax(0, 1fr); }
    .cap-num { grid-row: auto; padding-top: 0; margin-bottom: 6px; }
    .cap-more { grid-column: 1; }
    .ind { grid-template-columns: minmax(0, 1fr); grid-template-areas: "n" "name" "line" "chips" "case"; gap: 10px; }
    .ind-num { padding-top: 0; }
    .honest-q { grid-template-columns: minmax(0, 1fr); }
    .honest-q .mono { margin-bottom: -4px; }
    .honest-yn { grid-column: 1; }
    .honest-yn button { min-width: 84px; height: 44px; }
    /* the "next" link at the foot of a case or project page: one column */
    .cs-next a { grid-template-columns: minmax(0, 1fr) 36px; }
    .cs-next strong { font-size: 28px; grid-column: 1; }
    .cs-next em { grid-column: 1 / -1; font-size: 16px; }
    .cs-next .ic { grid-row: 2; grid-column: 2; width: 32px; height: 32px; align-self: start; }
    .cs-chips-h { margin-top: 28px; }
    /* other services: light link rows instead of a stack of dark cards */
    .svc-next-sub { grid-template-columns: minmax(0, 1fr); gap: 0; }
    .svc-next-sub a { padding: 18px 0; background: none; border-radius: 0; border-top: 1px solid var(--line-2); }
    .svc-next-sub a:hover { background: none; }
    .svc-next-sub strong { color: var(--navy); font-size: 20px; }
    .svc-next-sub em { color: var(--text); font-size: 15px; }
    .svc-next:not(.svc-next-sub) { grid-template-columns: minmax(0, 1fr); }
    /* seven stages: the odd one out spans the row */
    .mini-stages li:last-child:nth-child(odd) { grid-column: 1 / -1; }
    .mini-stages li:first-child { border-color: var(--line); }
    .stage { min-height: 0; padding: 22px 22px 40px; }
    .stage-num { font-size: 36px; }
    /* the work filter: one swipeable row */
    .more-filter { flex-wrap: nowrap; overflow-x: auto; margin-inline: calc(-1 * var(--gutter)); padding: 2px var(--gutter) 8px; scrollbar-width: none; }
    .more-filter::-webkit-scrollbar { display: none; }
    .more-filter button { flex: none; height: 40px; padding: 0 14px; font-size: 14px; }
    /* tall screenshots in the work list stop at a phone-sized height */
    .wkm-img img { max-height: 460px; }
    /* breadcrumbs: just the way back (the page title is right below) */
    .crumbs [aria-current], .crumbs [aria-current] ~ *, .crumbs span[aria-hidden]:nth-last-child(2) { display: none; }
    /* about: the three numbers side by side, the portraits a little shorter */
    .stats-light { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
    .stats-light dd { font-size: 32px; }
    .person-photo { aspect-ratio: 1 / 1; }
    .person-photo img { object-position: center 25%; }
    .team { padding-bottom: 72px; }
    /* the services index: one-line buttons, list one item per row */
    .svc-block { padding: 22px 18px; }
    .svc-block-head .btn { width: 100%; justify-content: space-between; white-space: normal; text-align: left; }
    :is(.ways, .ways-band) { flex-direction: column; align-items: flex-start; }
    :is(.ways, .ways-band) ul { flex-direction: column; gap: 8px; }
    :is(.ways, .ways-band) li + li::before { content: none; }
    /* the belief steps: one per line */
    .belief-list { flex-direction: column; gap: 12px; }
    /* the big outline asterisk in "What we build" stays behind, faintly */
    .reel-ast { stroke-opacity: .14; }
    /* even section rhythm */
    .related, .svc-process, .sub-more, .faq { padding-top: 56px; }
    .caps { padding-bottom: 56px; }
    .sub-next { padding-bottom: 16px; }
    .ways-band { margin-bottom: 16px; }
    /* footer name: the turning asterisk keeps clear of the screen edge */
    .ftr-name { padding-right: 6px; }
    /* guides: the contents list is for long desktop reads; on a phone the article starts straight away */
    .art-toc { display: none; }
    .ins-desc { display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; }
}

/* AEO pass (2026-10-26): the page date, the "you probably need it if" line, the author box on guides */
.page-updated { margin-top: 18px; font-size: 14px; color: var(--muted); }
.sub-fit-lede { margin-top: 14px; font: 600 18px/1.3 var(--f-display); color: var(--orange-ink); }
.art-author { display: grid; grid-template-columns: 96px minmax(0, 1fr); gap: 4px 22px; align-items: start; margin-top: clamp(40px, 5vw, 64px); padding: 24px 0; border-top: 2px solid var(--navy); border-bottom: 1px solid var(--line-2); }
.art-author img { width: 96px; height: 96px; border-radius: 50%; object-fit: cover; object-position: center 25%; }
.art-author-k { font-size: 14px; color: var(--muted); }
.art-author-n { margin-top: 2px; font: 700 22px/1.2 var(--f-display); letter-spacing: -.02em; color: var(--navy); }
.art-author-n a:hover { color: var(--orange-ink); }
.art-author-r { margin-top: 2px; font-size: 14.5px; color: var(--orange-ink); }
.art-author-b { margin-top: 10px; font-size: 15.5px; line-height: 1.6; }
@media (max-width: 640px) { .art-author { grid-template-columns: 64px minmax(0, 1fr); } .art-author img { width: 64px; height: 64px; } }

/* ==========================================================================
   The asterisk portal on the home page (js/portal.js): the asterisk after "We build it." opens into the page
   ========================================================================== */
.portal { position: fixed; inset: 0; z-index: 120; pointer-events: none; visibility: hidden; }
.portal-svg { position: absolute; inset: 0; width: 100%; height: 100%; max-width: none; overflow: visible; }
.portal-svg use { fill: var(--orange); }
.portal-line { position: absolute; left: 50%; top: 50%; translate: -50% -50%; width: min(90vw, 1100px); margin: 0; text-align: center; font: 800 clamp(30px, 5.6vw, 84px)/1.02 var(--f-display); letter-spacing: -.045em; color: #fff; opacity: 0; }
.portal-line span { display: inline-block; }
.portal-line-b { color: var(--orange); }
html.portal-active [data-hero] .hero-ast, html.portal-active .route-helm { opacity: 0 !important; }

/* ==========================================================================
   Comparison pages (/compare, /compare/{slug}; Ui/Compare.cs). One pass to clarity: who fits, how you pay,
   side by side, then the searched questions. Our column carries a quiet orange edge, never a louder colour.
   ========================================================================== */
.cmp-fit { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; padding-block: clamp(36px, 4.4vw, 64px) 0; }
.cmp-fit-card { padding: clamp(22px, 2.4vw, 32px); background: #fff; border: 1px solid var(--line); border-radius: 12px; }
.cmp-fit-card.is-us, .cmp-pay-card.is-us { border: 2px solid var(--orange); }
.cmp-fit-h { margin: 0 0 8px; font: 700 clamp(20px, 1.8vw, 24px)/1.2 var(--f-display); letter-spacing: -.02em; color: var(--navy); }
.cmp-fit-card p { margin: 0; font-size: 17px; line-height: 1.55; }

.cmp-pay { padding-block: clamp(56px, 6.4vw, 96px) 0; }
.cmp-pay-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; margin-top: clamp(20px, 2.4vw, 32px); }
.cmp-pay-card { margin: 0; padding: clamp(22px, 2.4vw, 32px); background: #fff; border: 1px solid var(--line); border-radius: 12px; }
.cmp-pay-card dt { margin-top: 16px; font-size: 13.5px; color: var(--muted); }
.cmp-pay-card dd { margin: 3px 0 0; font-size: 16.5px; line-height: 1.5; color: var(--navy); }
.cmp-pay-card .cmp-pay-who { margin: 0; font: 600 15px/1.3 var(--f-body); color: var(--text); }
.cmp-pay-card .cmp-pay-model { margin: 4px 0 4px; font: 700 clamp(24px, 2.2vw, 30px)/1.1 var(--f-display); letter-spacing: -.03em; }
.cmp-pay-card.is-us .cmp-pay-model { color: var(--orange-ink); }

.cmp-grid { padding-block: clamp(56px, 6.4vw, 96px) 0; }
.cmp-table { margin-top: clamp(20px, 2.4vw, 32px); }
.cmp-tr { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1fr) minmax(0, 1fr); gap: 0 24px; padding: 16px 0; border-top: 1px solid var(--line); align-items: start; }
.cmp-thead { padding-block: 0 12px; border-top: 0; font: 600 15px/1.3 var(--f-body); color: var(--muted); }
.cmp-thead .is-us { color: var(--orange-ink); }
.cmp-group { padding: 28px 0 6px; font: 700 clamp(19px, 1.6vw, 22px)/1.2 var(--f-display); letter-spacing: -.02em; color: var(--navy); }
.cmp-label { font: 600 16.5px/1.4 var(--f-display); color: var(--navy); }
.cmp-cell { display: flex; gap: 10px; align-items: flex-start; font-size: 16px; line-height: 1.5; }
.cmp-cell.is-us { color: var(--navy); }
.cmp-mark { flex: none; width: 22px; height: 22px; margin-top: 1px; padding: 3px; border-radius: 50%; }
.cmp-mark.is-yes { color: #fff; background: var(--navy); }
.cmp-mark.is-cond { color: var(--orange-ink); background: #FDE7D6; }
.cmp-mark.is-no { color: var(--red); background: #FBE3E1; }
.cmp-legend { display: flex; flex-wrap: wrap; gap: 10px 22px; margin: 18px 0 0; padding-top: 16px; border-top: 1px solid var(--line); font-size: 14px; color: var(--muted); }
.cmp-legend span { display: inline-flex; align-items: center; gap: 8px; }
.cmp-legend .cmp-mark { width: 18px; height: 18px; margin: 0; padding: 2px; }

.cmp-ask { padding-block: clamp(48px, 5.6vw, 80px) 0; }
.cmp-ask-in { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 8px 32px; padding: clamp(24px, 3vw, 40px); background: var(--navy); color: rgba(255, 255, 255, .78); border-radius: 12px; }
.cmp-ask-h { grid-column: 1; margin: 0; font: 700 clamp(22px, 2vw, 28px)/1.2 var(--f-display); letter-spacing: -.025em; color: #fff; }
.cmp-ask-in > p:not(.cmp-ask-h) { grid-column: 1; margin: 0; font-size: 17px; line-height: 1.55; }
.cmp-ask-in .btn { grid-column: 2; grid-row: 1 / span 2; --bg: var(--orange); --fg: var(--navy); --hover: #fff; --hover-fg: var(--navy); }

.cmp-qa { padding-block: clamp(40px, 4.8vw, 72px) 0; }
.cmp-q { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.4fr); gap: 12px clamp(32px, 5vw, 80px); padding-block: clamp(28px, 3.2vw, 44px); border-top: 1px solid var(--line-2); }
.cmp-q-h { margin: 0; font: 700 clamp(22px, 2.1vw, 30px)/1.15 var(--f-display); letter-spacing: -.03em; color: var(--navy); text-wrap: balance; }
.cmp-q-a p { margin: 0 0 14px; font-size: 17px; line-height: 1.65; }
.cmp-q-a p.speakable { color: var(--navy); font-size: 18px; }
.cmp-points { margin: 4px 0 16px; padding: 0; list-style: none; display: grid; gap: 10px; }
.cmp-points li { position: relative; padding-left: 22px; font-size: 16.5px; line-height: 1.55; }
.cmp-points li::before { content: ""; position: absolute; left: 0; top: .72em; width: 10px; height: 2px; background: var(--orange); }
.cmp-prices { margin: 6px 0 10px; background: #fff; border: 1px solid var(--line); border-radius: 10px; overflow: hidden; }
.cmp-prices div { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: 4px 20px; padding: 12px 18px; border-top: 1px solid var(--line); }
.cmp-prices div:first-child { border-top: 0; }
.cmp-prices dt { font-size: 15.5px; }
.cmp-prices dd { margin: 0; font: 600 15.5px/1.45 var(--f-body); color: var(--navy); }
.cmp-q-a .cmp-note, .cmp-q-a .cmp-refs { font-size: 14px; color: var(--muted); }
.cmp-refs a, .cmp-other a { color: var(--navy); text-decoration: underline; text-decoration-color: var(--line-2); text-underline-offset: 3px; }
.cmp-refs a:hover, .cmp-other a:hover { text-decoration-color: var(--orange); }

.cmp-sources { padding-block: clamp(40px, 4.8vw, 72px); }
.cmp-sources > p { max-width: 46em; font-size: 15.5px; }
.cmp-sources ul { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 10px 28px; margin: 18px 0 0; padding: 0; list-style: none; }
.cmp-sources li a { display: inline-flex; align-items: center; gap: 6px; font-size: 15px; color: var(--navy); }
.cmp-sources li .ic { width: 14px; height: 14px; color: var(--orange-ink); }
.cmp-other { margin-top: 26px; font-size: 15.5px; }
.cmp-other a { margin-right: 6px; }

.cmp-hub { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 340px), 1fr)); gap: 16px; padding-block: clamp(36px, 4.4vw, 64px) 0; }
.cmp-hub-card { display: grid; gap: 8px; padding: clamp(24px, 2.8vw, 36px); background: #fff; border: 1px solid var(--line); border-radius: 12px; color: var(--text); transition: border-color .3s, transform .5s var(--ease); }
.cmp-hub-card:hover { border-color: var(--orange); transform: translateY(-3px); }
.cmp-hub-k { font-size: 15px; color: var(--muted); }
.cmp-hub-name { font: 800 clamp(36px, 3.6vw, 52px)/.98 var(--f-display); overflow-wrap: anywhere; letter-spacing: -.045em; color: var(--navy); }
.cmp-hub-fit { margin-top: 8px; font-size: 16.5px; line-height: 1.55; }
.cmp-hub-fit b { font-weight: 600; color: var(--navy); }
.cmp-hub-go { display: inline-flex; align-items: center; gap: 10px; margin-top: 10px; font: 600 16px/1 var(--f-display); color: var(--orange-ink); }
.cmp-how { padding-block: clamp(56px, 6.4vw, 96px); }
.cmp-how-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 16px; margin: clamp(20px, 2.4vw, 32px) 0 0; padding: 0; list-style: none; }
.cmp-how-list li { padding: 22px 24px; background: #fff; border-radius: 10px; font-size: 16px; line-height: 1.55; }
.cmp-how-list strong { display: block; margin-bottom: 6px; font: 700 18px/1.25 var(--f-display); color: var(--navy); }
.cmp-how-more { margin-top: 24px; display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; }

@media (max-width: 760px) {
    .cmp-fit, .cmp-pay-grid { grid-template-columns: minmax(0, 1fr); }
    .cmp-q { grid-template-columns: minmax(0, 1fr); }
    .cmp-ask-in { grid-template-columns: minmax(0, 1fr); }
    .cmp-ask-in .btn { grid-column: 1; grid-row: auto; justify-self: start; margin-top: 10px; }
    /* side by side on a phone: the question on its own line, then the two answers, each labelled */
    .cmp-thead { display: none; }
    .cmp-tr { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 10px 14px; }
    .cmp-label { grid-column: 1 / -1; }
    .cmp-cell { display: grid; grid-template-columns: 22px minmax(0, 1fr); gap: 6px 8px; font-size: 15px; }
    .cmp-cell::before { content: attr(data-who); grid-column: 1 / -1; font: 600 12.5px/1.2 var(--f-body); color: var(--muted); }
    .cmp-cell.is-us::before { color: var(--orange-ink); }
    .cmp-prices div { grid-template-columns: minmax(0, 1fr); }
}

/* ==========================================================================
   Industry pages (/industries/{slug}; Ui/IndustryPages.cs): three key facts under the hero, and the proof list.
   ========================================================================== */
.ind-facts { display: flex; flex-wrap: wrap; gap: 0; margin: 32px 0 0; }
.ind-facts div { padding: 4px 28px 4px 0; margin-right: 28px; border-right: 1px solid var(--line-2); }
.ind-facts div:last-child { border-right: 0; margin-right: 0; }
.ind-facts dt { font-size: 13.5px; color: var(--muted); }
.ind-facts dd { margin: 2px 0 0; font: 700 clamp(18px, 1.6vw, 22px)/1.2 var(--f-display); letter-spacing: -.02em; color: var(--navy); }
.ind-proof { display: grid; gap: 12px; max-width: 52em; margin: clamp(20px, 2.4vw, 32px) 0 clamp(28px, 3.2vw, 44px); padding: 0; list-style: none; }
.ind-proof li { position: relative; padding-left: 24px; font-size: 18px; line-height: 1.55; color: var(--navy); }
.ind-proof li::before { content: ""; position: absolute; left: 0; top: .74em; width: 12px; height: 2px; background: var(--orange); }
@media (max-width: 640px) {
    .ind-facts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 12px; margin-top: 26px; }
    .ind-facts div { padding: 0 12px 0 0; margin: 0; }
    .ind-facts dt { font-size: 12.5px; }
    .ind-facts dd { font-size: 15.5px; }
    .ind-proof li { font-size: 16.5px; }
}

/* ==========================================================================
   Dedicated team page (Components/Shared/DedicatedTeamBlocks.razor; Ui/DedicatedTeam.cs):
   team size and billing as three cards each, then roles and technologies side by side.
   ========================================================================== */
.dt-opts { padding-block: clamp(56px, 6.4vw, 96px) 0; }
.dt-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); gap: 16px; margin-top: clamp(20px, 2.4vw, 32px); }
.dt-card { display: flex; flex-direction: column; margin: 0; padding: clamp(22px, 2.4vw, 32px); background: #fff; border: 1px solid var(--line); border-radius: 12px; }
.dt-card dd { margin: 0; }
.dt-card-line { font: 600 14px/1.3 var(--f-body); color: var(--muted); }
.dt-card-name { margin-top: 6px !important; font: 700 clamp(24px, 2.2vw, 30px)/1.1 var(--f-display); letter-spacing: -.03em; color: var(--navy); }
.dt-card-detail { margin-top: 14px !important; font-size: 16.5px; line-height: 1.55; color: var(--navy); }
.dt-card-k { margin-top: auto; padding-top: 18px; font-size: 13px; color: var(--orange-ink); font-weight: 600; }
.dt-card-best { margin-top: 3px !important; font-size: 15.5px; line-height: 1.5; color: var(--text); }
.dt-hire { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(32px, 5vw, 80px); padding-block: clamp(56px, 6.4vw, 96px) 0; }
.dt-roles { margin: clamp(20px, 2.4vw, 32px) 0 0; }
.dt-roles div { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.2fr); gap: 4px 20px; padding: 13px 0; border-top: 1px solid var(--line); }
.dt-roles div:last-child { border-bottom: 1px solid var(--line); }
.dt-roles dt { font: 600 16px/1.4 var(--f-body); color: var(--navy); }
.dt-roles dd { margin: 0; font-size: 15.5px; line-height: 1.5; color: var(--text); }
.dt-tech { display: grid; gap: 22px; margin-top: clamp(20px, 2.4vw, 32px); }
.dt-tech-h { margin: 0 0 10px; font: 600 14px/1.3 var(--f-body); color: var(--muted); }
@media (max-width: 900px) {
    .dt-hire { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 640px) {
    .dt-roles div { grid-template-columns: minmax(0, 1fr); gap: 2px; }
    .dt-card-detail { font-size: 15.5px; }
}

/* ==========================================================================
   Consulting page (Components/Shared/ConsultingBlocks.razor; Ui/Consulting.cs): two ways to use the plan,
   three risks without one, the change-request chain with an example, and the gains. Reuses .dt-card / .dt-grid.
   ========================================================================== */
.cs-lede { max-width: 40em; margin: 14px 0 0; font-size: 18px; line-height: 1.55; color: var(--text); }
.cs-ways { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; margin-top: clamp(20px, 2.4vw, 32px); }
.cs-ways .dt-card-line, .cs-risk .dt-card-line { margin: 0; }
.cs-ways .dt-card-name, .cs-risk .dt-card-name { margin: 6px 0 0; }
.cs-list { margin: 18px 0 0; gap: 10px; }
.cs-list li { font-size: 16.5px; }
.cs-x { display: grid; gap: 12px; margin: 18px 0 0; padding: 0; list-style: none; }
.cs-x li { position: relative; padding-left: 26px; font-size: 16px; line-height: 1.5; color: var(--navy); }
.cs-x li::before { content: "\00D7"; position: absolute; left: 0; top: -.08em; font: 700 20px/1.2 var(--f-body); color: var(--orange-ink); }
.cs-chain { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 0; margin: clamp(20px, 2.4vw, 32px) 0 0; padding: 0; list-style: none; counter-reset: none; }
.cs-chain li { position: relative; padding: 18px 20px 20px 0; margin-right: 20px; border-top: 2px solid var(--line-2); font-size: 16.5px; line-height: 1.45; color: var(--navy); }
.cs-chain li:last-child { border-top-color: var(--orange); font-weight: 600; margin-right: 0; }
.cs-chain li span { display: block; margin-bottom: 8px; font-size: 13px; color: var(--muted); }
.cs-example { max-width: 56em; margin-top: clamp(28px, 3.2vw, 44px); padding: clamp(22px, 2.4vw, 32px); background: #fff; border: 1px solid var(--line); border-left: 3px solid var(--orange); border-radius: 12px; }
.cs-example p { margin: 0; font-size: 17px; line-height: 1.6; color: var(--navy); }
.cs-example .cs-example-k { margin-bottom: 8px; font: 600 14px/1.3 var(--f-body); color: var(--orange-ink); }
.cs-example .cs-fix { margin-top: 14px; font-weight: 600; }
.cs-gains { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 clamp(24px, 3vw, 48px); margin: clamp(20px, 2.4vw, 32px) 0 0; }
.cs-gains div { padding: 18px 0; border-top: 1px solid var(--line); }
.cs-gains dt { font: 700 clamp(19px, 1.6vw, 22px)/1.25 var(--f-display); letter-spacing: -.02em; color: var(--navy); }
.cs-gains dd { margin: 6px 0 0; font-size: 16px; line-height: 1.5; color: var(--text); }
@media (max-width: 900px) {
    .cs-chain { grid-template-columns: minmax(0, 1fr); }
    .cs-chain li { display: grid; grid-template-columns: 36px minmax(0, 1fr); margin-right: 0; padding: 14px 0; border-top-width: 1px; }
    .cs-chain li span { margin: 0; padding-top: .2em; }
    .cs-gains { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
    .cs-ways, .cs-gains { grid-template-columns: minmax(0, 1fr); }
    .cs-lede { font-size: 16.5px; }
    .cs-example p { font-size: 16px; }
}

/* ==========================================================================
   Pricing (/pricing; Ui/Pricing.cs) and the one-line price on service pages.
   ========================================================================== */
.pr-table { width: 100%; margin-top: clamp(20px, 2.4vw, 32px); border-collapse: collapse; background: #fff; border: 1px solid var(--line); border-radius: 12px; overflow: hidden; }
.pr-table th, .pr-table td { padding: 18px 22px; border-top: 1px solid var(--line); text-align: left; vertical-align: top; }
.pr-table thead th { border-top: 0; padding-block: 12px; font: 600 13px/1.3 var(--f-body); color: var(--muted); background: var(--bg-2, #F7F8FB); }
.pr-table tbody th { width: 30%; font: 700 clamp(18px, 1.5vw, 21px)/1.3 var(--f-display); letter-spacing: -.02em; color: var(--navy); }
.pr-table .pr-price { width: 24%; white-space: nowrap; font: 700 clamp(18px, 1.5vw, 21px)/1.3 var(--f-display); letter-spacing: -.02em; color: var(--orange-ink); }
.pr-table td:last-child { font-size: 16px; line-height: 1.5; color: var(--text); }
.pr-drivers { margin-top: clamp(28px, 3.2vw, 44px); }
.pr-drivers .cs-gains { margin-top: 0; }
.pr-note { margin: 16px 0 0; font: 600 16.5px/1.5 var(--f-body); color: var(--navy); }
.pr-link { color: inherit; transition: border-color .3s; }
.pr-link:hover { border-color: var(--navy); }
.pr-link .link-arrow { margin-top: auto; padding-top: 18px; }
.sub-price { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 14px; margin-top: 22px; font-size: 15.5px; color: var(--text); }
.sub-price strong { font: 700 20px/1.2 var(--f-display); letter-spacing: -.02em; color: var(--navy); }
.sub-price a { color: var(--navy); text-decoration: underline; text-decoration-color: var(--line-2); text-underline-offset: 3px; }
.sub-price a:hover { text-decoration-color: var(--orange); }
@media (max-width: 640px) {
    .pr-table thead { display: none; }
    .pr-table tr { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 4px 12px; padding: 16px 18px; border-top: 1px solid var(--line); }
    .pr-table tbody tr:first-child { border-top: 0; }
    .pr-table th, .pr-table td { padding: 0; border: 0; width: auto !important; }
    .pr-table td:last-child { grid-column: 1 / -1; font-size: 15px; }
    .pr-table tbody th, .pr-table .pr-price { font-size: 17px; }
}

/* AI page (Components/Shared/AiBlocks.razor): chat tools on their own against AI built in */
.ai-table { width: 100%; margin-top: clamp(20px, 2.4vw, 32px); border-collapse: separate; border-spacing: 0; background: #fff; border: 1px solid var(--line); border-radius: 12px; overflow: hidden; }
.ai-table th, .ai-table td { padding: 16px 20px; border-top: 1px solid var(--line); text-align: left; vertical-align: top; font-size: 16px; line-height: 1.5; }
.ai-table thead th { border-top: 0; padding-block: 14px; font: 600 14px/1.3 var(--f-body); color: var(--muted); }
.ai-table thead th.is-us { color: var(--orange-ink); }
.ai-table tbody th { width: 22%; font: 700 17px/1.35 var(--f-display); letter-spacing: -.01em; color: var(--navy); }
.ai-table td { width: 39%; color: var(--text); }
.ai-table td.is-us { color: var(--navy); background: #FFF8F3; }
@media (max-width: 760px) {
    .ai-table thead { display: none; }
    .ai-table tr { display: block; padding: 16px 18px; border-top: 1px solid var(--line); }
    .ai-table tbody tr:first-child { border-top: 0; }
    .ai-table th, .ai-table td { display: block; width: auto; padding: 0; border: 0; font-size: 15.5px; }
    .ai-table tbody th { width: auto; margin-bottom: 8px; font-size: 16.5px; }
    .ai-table td { margin-top: 8px; }
    .ai-table td.is-us { padding: 10px 12px; border-radius: 8px; }
    .ai-table td::before { content: attr(data-who); display: block; margin-bottom: 2px; font: 600 12.5px/1.3 var(--f-body); color: var(--muted); }
    .ai-table td.is-us::before { color: var(--orange-ink); }
}
