/* Shared identity, contact section and navigation across all static routes. */
:root { --color-accent-lit: #bce4bd; }
.band-dark-lift { background: #14231f; }
.sj-contact h2 {
  font-size: clamp(2rem, 4vw, 3.25rem);
  font-weight: 400;
  line-height: 1.12;
  letter-spacing: -.045em;
}
.sj-contact__kicker { font-size: .62rem; line-height: 1.6; }
.sj-contact__kicker + h2 { margin-top: 1rem; }
.sj-contact__button,
.sj-contact__email {
  display: inline-flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  min-height: 3.3rem;
  font-size: .9rem;
}
.sj-contact__button { padding: .85rem 1.35rem; border-radius: 4px; background: #bce4bd; color: #14231f; font-weight: 500; }
.sj-contact__button:is(:hover, :focus-visible) { background: #d6f0d7; }
.sj-contact__email:hover { text-decoration: underline; text-underline-offset: .3em; }
a:focus-visible { outline: 2px solid currentColor; outline-offset: 5px; }
main [id] { scroll-margin-top: 6rem; }
.sj-menu-sheet { visibility: hidden; }
.sj-menu-state:checked ~ .sj-menu-sheet { visibility: visible; }
@media (min-width: 48rem) {
  .sj-menu-state { display: none; }
}
.sj-service-index {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0 2.5rem;
  padding-bottom: 3rem;
}
.sj-service-index > a {
  display: flex;
  align-items: baseline;
  gap: 1rem;
  border-top: 1px solid #3b5145;
  padding-block: 1.2rem;
  min-width: 0;
}
.sj-service-index > a > .label-mono { color: #a9b6af; font-size: .6rem; }
.sj-service-index strong { display: block; font-size: .95rem; font-weight: 400; }
.sj-service-index strong + span { display: block; margin-top: .4rem; font-size: .78rem; line-height: 1.6; color: #a9b6af; }
.sj-service-index > a > span:last-child { margin-left: auto; color: #bce4bd; }
.sj-service-index > a:is(:hover, :focus-visible) strong { color: #bce4bd; }
.sj-example-note { margin-bottom: 1rem; font-size: .7rem; line-height: 1.6; color: var(--color-slate); }
.sj-case-example-note { margin-block: .8rem 1.5rem; font-size: .78rem; line-height: 1.7; color: var(--color-slate); }
@media (prefers-reduced-motion: no-preference) {
  .sj-contact__button { transition: background-color 180ms, translate 250ms; }
  .sj-contact__button > span[aria-hidden],
  .sj-contact__email > span[aria-hidden],
  .sj-service-index > a > span:last-child { display: inline-block; transition: translate 250ms; }
  .sj-contact__button:focus-visible > span[aria-hidden],
  .sj-contact__email:focus-visible > span[aria-hidden],
  .sj-service-index > a:focus-visible > span:last-child { translate: 3px -3px; }
  @media (hover: hover) and (pointer: fine) {
    .sj-contact__button:hover { translate: 0 -2px; }
    .sj-contact__button:hover > span[aria-hidden],
    .sj-contact__email:hover > span[aria-hidden],
    .sj-service-index > a:hover > span:last-child { translate: 3px -3px; }
  }
}
.sj-brand-lockup { display: inline-flex; align-items: center; gap: .7rem; min-height: 44px; }
.sj-brand-lockup__mark {
  display: grid;
  grid-auto-flow: column;
  place-content: center;
  width: 39px;
  height: 39px;
  border: 1px solid currentColor;
  border-radius: 50%;
  font-family: Georgia, "Times New Roman", serif;
  font-style: italic;
  font-size: 1.6rem;
  letter-spacing: -.1em;
  padding-right: .1em;
}
.sj-brand-lockup__mark > span { opacity: .6; }
.sj-brand-lockup__type { display: grid; gap: .28rem; }
.sj-brand-lockup__name { font-size: 1rem; font-weight: 500; letter-spacing: -.035em; line-height: 1.1; }
.sj-brand-lockup__name > span { opacity: .55; }
.sj-brand-lockup__role { font-size: .55rem; letter-spacing: .075em; line-height: 1.4; opacity: .7; }

.sj-contact { --hero-accent: #bce4bd; padding-block: clamp(3.5rem, 6.5vw, 6rem); background: #14231f; color: #fbfaf8; }
.sj-contact__grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 5rem; align-items: center; }
.sj-contact .sj-contact__kicker { color: #bce4bd; }
.sj-contact__copy > p:first-child { max-width: 29rem; font-size: 1rem; line-height: 1.8; color: #c0cbc5; }
.sj-contact__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 1.75rem; margin-top: 1.8rem; }
.sj-contact .sj-contact__email { color: #fbfaf8; }
.sj-contact__note { margin-top: 1.4rem; color: #a9b6af; font-size: .72rem; line-height: 1.7; }
@media (max-width: 63.99rem) {
  .sj-brand-lockup__role { display: none; }
  .sj-brand-lockup__name { font-size: .9rem; }
  .sj-contact__grid { gap: 3rem; }
}
@media (max-width: 47.99rem) {
  .sj-brand-lockup__role { display: block; font-size: .5rem; letter-spacing: .025em; }
  .sj-brand-lockup__mark { width: 34px; height: 34px; font-size: 1.35rem; }
  .sj-contact__grid { grid-template-columns: minmax(0, 1fr); gap: 2rem; }
  .sj-service-index { grid-template-columns: minmax(0, 1fr); }
}

/* Consistent grouping, reading rhythm and interactive states. */
:root { --sj-surface: #fff; --sj-section: #edf0e8; --sj-edge: #cbd4c7; }
main h1, main h2 { text-wrap: balance; }
.sj-contact { border-top: 1px solid #3c5547; }
.sj-contact__kicker,
.sj-home-kicker,
.sj-case-kicker { font-size: .7rem; letter-spacing: .11em; }
.sj-contact__note { font-size: .78rem; }
.sj-service-index { gap: 0 2.5rem; }
.sj-service-index > a { border-top-color: #4b6253; }
.sj-service-index > a > .label-mono { font-size: .7rem; }
.sj-service-index strong + span { font-size: .85rem; }
.sj-page-services .sj-module {
  padding: clamp(1.5rem, 3vw, 2.5rem);
  margin-bottom: 2rem;
  border: 1px solid var(--sj-edge);
  border-radius: 9px;
  background: var(--sj-surface);
}
.sj-page-services .sj-module:first-of-type { border-top: 1px solid var(--sj-edge); }
.sj-page-services .sj-module::before { display: none; }
.sj-page-services .sj-module:target { border-color: #6e997a; box-shadow: 0 0 0 2px #0f6e5c12; }
.sj-page-services .sj-module__head { padding-bottom: 1.7rem; border-bottom: 1px solid #e0e6dc; }
.sj-page-services .sj-module__intro h2 { max-width: 24ch; font-size: clamp(1.65rem, 2.6vw, 2.25rem); font-weight: 400; line-height: 1.18; letter-spacing: -.035em; }
.sj-page-services .sj-module__intro > p { font-size: .95rem; line-height: 1.8; }
.sj-page-services .sj-module__meta::after { display: none; }
.sj-page-services .sj-module__meta { gap: .7rem; margin-bottom: 1.1rem; }
.sj-page-services .sj-module__meta > span:first-child { display: grid; place-items: center; width: 30px; height: 30px; background: #e9f2ef; border: 1px solid #d1e0d5; border-radius: 5px; }
.sj-page-services .sj-module__viz .card-base { background: #f5f7f2; border-color: #dce3d7; box-shadow: none; }
.sj-page-services .sj-module__body { grid-template-columns: minmax(0, 1fr); gap: 1.75rem; margin-top: 1.75rem; }
.sj-page-services .sj-module__body > * { min-width: 0; }
.sj-page-services .sj-module__foot { margin-top: 0; padding-top: 1.5rem; border-top: 1px solid #e0e6dc; }
@media (min-width: 40rem) {
  .sj-page-services .sj-deliverables { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
.sj-page-services .sj-rail__link { min-height: 44px; border-color: #d1d9cd; color: #526257; }
.sj-page-services .sj-rail__link > span:first-child { color: #6c7e70; }
.sj-page-services .sj-rail__link:is(:hover, :focus-visible) { color: #0f6e5c; border-color: #0f6e5c; background: #eef4eb; }
.sj-page-services:has(#profit-intelligence:target) a.sj-rail__link[href="#profit-intelligence"],
.sj-page-services:has(#growth-intelligence:target) a.sj-rail__link[href="#growth-intelligence"],
.sj-page-services:has(#executive-intelligence:target) a.sj-rail__link[href="#executive-intelligence"],
.sj-page-services:has(#forecasting-and-modelling:target) a.sj-rail__link[href="#forecasting-and-modelling"],
.sj-page-services:has(#performance-systems:target) a.sj-rail__link[href="#performance-systems"],
.sj-page-services:has(#process-and-automation:target) a.sj-rail__link[href="#process-and-automation"],
.sj-page-services:has(#investment-narrative:target) a.sj-rail__link[href="#investment-narrative"] { color: #0f6e5c; border-color: #0f6e5c; background: #e9f2ef; }
.sj-work-toolbar { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: .8rem 1rem; border: 1px solid var(--sj-edge); border-radius: 8px; background: #eef1eb; padding: 1.25rem; margin-bottom: 2.5rem; }
.sj-work-toolbar__label { font-size: .8rem; font-weight: 500; color: #304f3d; }
.sj-work-filters { grid-column: 1 / -1; grid-row: 2; }
.sj-work-toolbar > p[aria-live] { grid-column: 2; grid-row: 1; font-size: .72rem; line-height: 1.6; }
.sj-work-filters .sj-filter-chip { font-family: inherit; font-size: .8rem; letter-spacing: 0; text-transform: none; background: #fff; border-color: #c6d0c1; }
.sj-work-filters .sj-filter-state:checked + .sj-filter-chip { background: #0f6e5c; color: #fff; border-color: #0f6e5c; }
.sj-work-heading { font-size: clamp(1.4rem, 2.5vw, 2rem); font-weight: 400; letter-spacing: -.035em; line-height: 1.25; margin-bottom: 1.7rem; }
.sj-work-card { border-radius: 8px; border-color: #d1d9ca; }
.sj-work-card h3 { font-size: 1.35rem; line-height: 1.25; letter-spacing: -.025em; min-height: 2.5em; }
.sj-work-card .label-mono { font-size: .65rem; line-height: 1.6; }
.sj-work-card__link { display: block; margin-top: 1.1rem; padding-top: .9rem; border-top: 1px solid #e0e5da; color: #0f6e5c; font-size: .8rem; }
.sj-work-card:hover .sj-work-card__link { text-decoration: underline; text-underline-offset: .25em; }
.sj-about-principles { background: #edf0e8; }
.sj-about-principles li { border-color: #cbd4c7; border-radius: 8px; }
.sj-about-principles h3 { font-size: 1.4rem; line-height: 1.25; }
.sj-about-personal { background: #f7f3eb; border-bottom: 1px solid #e0d9cb; }
.sj-about-intro h2,
.sj-about-personal h2 { font-size: clamp(1.6rem, 2.5vw, 2.15rem); line-height: 1.2; letter-spacing: -.035em; }
.sj-about-capabilities { background: #fbfaf8; border-top: 0; }
.sj-about-capabilities dl > div { border: 0; border-top: 2px solid #bfccb9; border-radius: 0; padding-inline: .25rem; background: transparent; }
.sj-about-capabilities dt { font-size: 1.05rem; }
.sj-about-capabilities dd > span { background: #eff3ea; border-color: #d9e2d1; border-radius: 4px; }
@media (min-width: 64rem) {
  .sj-brand-lockup__role { font-size: .6rem; letter-spacing: .035em; }
}
@media (max-width: 47.99rem) {
  .sj-work-toolbar { padding: 1rem; margin-bottom: 2rem; }
  .sj-work-filters .sj-filter-chip { padding-inline: .85rem; }
  .sj-work-card h3 { min-height: 0; }
  .sj-page-services .sj-module { padding: 1.25rem; }
  .sj-page-services .sj-module__intro > p { font-size: .9rem; }
}
/* Older engines retain the final visual state without scroll animations. */
@supports not (animation-timeline: view()) {
  .sj-grow { transform: none !important; }
  .sj-kpi-spoke { stroke-dashoffset: 0; }
  .sj-kpi-node { transform: scale(1); }
  .sj-kpi-hub { transform: scale(1); opacity: 1; }
  .sj-merge-card { display: none; }
  .sj-merge-final { opacity: 1; transform: none; }
  .sj-flow-before { display: none; }
  .sj-flow-after { opacity: 1; }
  .sj-flow-count-before { display: none; }
  .sj-flow-count-after { display: inline; }
}

/* Inner-page openings share one viewport and one reading alignment. */
.sj-page-banner { display: flex; min-height: 100vh; min-height: 100dvh; padding: 5.3rem 0 1.8rem; box-sizing: border-box; }
.sj-page-banner__inner { display: flex; flex-direction: column; width: 100%; gap: 1.5rem; }
.sj-page-banner__crumb nav { margin: 0; }
.sj-page-banner__copy { display: flex; flex-direction: column; align-items: start; justify-content: center; flex: 1; padding-block: 1.5rem; }
.sj-page-banner__copy h1 { max-width: 20ch; font-size: clamp(2.2rem, 4.7vw, 4.7rem); line-height: 1.08; letter-spacing: -.045em; margin-top: 1rem; }
.sj-page-banner__copy > p { max-width: 43rem; font-size: 1rem; line-height: 1.75; margin-top: 1.2rem; }
.sj-page-banner__metrics { margin-top: 0; padding-top: 1.3rem; }
.sj-page-banner__metrics > div > p:first-child { font-size: 2.4rem; }
.sj-page-banner__meta .sj-statgrid { --sj-pad-block: 1.1rem; }
.sj-page-banner__meta .sj-statgrid > div { padding-bottom: 0; }
.sj-page-banner__cta { align-self: start; display: inline-flex; align-items: center; min-height: 44px; padding: .7rem 1.2rem; background: #bce4bd; color: #14231f; border-radius: 5px; font-size: .85rem; }
.sj-service-directory { background: #edf0e8; border-bottom: 1px solid #cbd4c7; padding-block: 2rem; }
.sj-service-directory .sj-service-index { padding-bottom: 0; }
.sj-service-directory .sj-service-index > a { border-color: #bccbb6; }
.sj-service-directory .sj-service-index strong { color: #243d2d; }
.sj-service-directory .sj-service-index strong + span,
.sj-service-directory .sj-service-index > a > .label-mono { color: #526653; }
.sj-service-directory .sj-service-index > a > span:last-child { color: #245940; }
@media (max-width: 47.99rem) {
  .sj-page-banner { padding: 4.7rem 0 1.2rem; }
  .sj-page-banner__inner { gap: 1rem; }
  .sj-page-banner__copy { padding-block: .75rem; }
  .sj-page-banner__copy h1 { font-size: clamp(2rem, 7.5vw, 3.4rem); }
  .sj-page-banner__copy > p { font-size: .92rem; line-height: 1.65; margin-top: 1rem; }
  .sj-page-banner__meta .sj-statgrid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .sj-page-banner__meta .sj-statgrid--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .sj-page-banner__meta .sj-statgrid { gap: .75rem 1rem; padding-top: 1rem; }
  .sj-page-banner__meta .sj-statgrid > div { padding: 0; border: 0; }
  .sj-page-banner__meta dt { font-size: .6rem; }
  .sj-page-banner__meta dd { font-size: .78rem; line-height: 1.5; margin-top: .35rem; }
  .sj-page-banner__metrics { gap: 1rem; padding-top: 1rem; }
  .sj-page-banner__metrics > div > p:first-child { font-size: 2rem; }
  .sj-page-banner__metrics > div > p:last-child { font-size: .8rem; }
  .sj-page-banner__metrics li { font-size: .55rem; padding: .4rem .6rem; }
  .sj-case-page .sj-page-banner__crumb li:last-child { display: none; }
}
@media (max-height: 43rem) {
  .sj-page-banner { padding-bottom: 1rem; }
  .sj-page-banner__inner { gap: .7rem; }
  .sj-page-banner__copy { padding-block: .4rem; }
  .sj-page-banner__copy h1 { font-size: clamp(1.85rem, 4.4vw, 3rem); margin-top: .65rem; }
  .sj-page-banner__copy > p { font-size: .88rem; line-height: 1.55; margin-top: .8rem; }
  .sj-page-banner__metrics { padding-top: .7rem; }
  .sj-page-banner__metrics > div > p:first-child { font-size: 1.8rem; }
}
@media (min-width: 48rem) and (max-height: 30rem) {
  .sj-page-banner { padding-top: 4.6rem; padding-bottom: .6rem; }
  .sj-page-banner__inner { gap: .5rem; }
  .sj-page-banner__copy h1 { max-width: none; font-size: 1.8rem; margin-top: .4rem; }
  .sj-page-banner__copy > p { max-width: 65rem; font-size: .8rem; line-height: 1.4; margin-top: .5rem; }
  .sj-page-banner__metrics { gap: 1.5rem; padding-top: .5rem; }
  .sj-page-banner__metrics > div { display: flex; align-items: center; gap: .75rem; }
  .sj-page-banner__metrics > div > p:last-child { margin-top: 0; }
  .sj-page-banner__metrics li { font-size: .6rem; padding: .3rem .6rem; }
  .sj-page-banner__meta .sj-statgrid { --sj-pad-block: .6rem; }
  .sj-page-banner__meta dt { font-size: .6rem; }
  .sj-page-banner__meta dd { font-size: .78rem; margin-top: .2rem; }
}
@media (max-width: 47.99rem) and (max-height: 37.5rem) {
  .sj-page-banner__inner { gap: .5rem; }
  .sj-page-banner__copy { padding-block: .2rem; }
  .sj-page-banner__copy h1 { font-size: 1.8rem; }
  .sj-page-banner__metrics { padding-top: .6rem; }
}
.sj-page-services .sj-scenario-options { flex-wrap: wrap; }
.sj-page-404 main > section { min-height: 100vh; min-height: 100dvh; padding-block: 5.3rem 1.5rem; }
.sj-page-404 h1 { font-size: clamp(2rem, 4.7vw, 4.5rem); line-height: 1.1; }
@media (max-height: 43rem) {
  .sj-page-404 h1 { font-size: 2rem; margin-top: .8rem; }
  .sj-page-404 .lede { font-size: .9rem; line-height: 1.6; margin-top: 1rem; }
  .sj-page-404 main .shell > div { margin-top: 1.3rem; }
}
@media (min-width: 48rem) and (max-height: 30rem) {
  .sj-page-404 main > section { padding-block: 4.6rem .8rem; }
  .sj-page-404 h1 { font-size: 1.8rem; }
}
/* Keep the primary header action distinct on both dark and light surfaces. */
.sj-header a.sj-header-contact {
  gap: .65rem;
  background: color-mix(in srgb, #155337 calc(var(--sj-head) * 100%), #bce4bd);
  color: color-mix(in srgb, #fff calc(var(--sj-head) * 100%), #14231f);
  border: 1px solid #83b38b;
  box-shadow: 0 2px 8px #14231f0d;
}
.sj-header a.sj-header-contact:hover { background: #246747; color: #fff; border-color: #246747; }
.sj-header a.sj-header-contact:focus-visible { outline: 2px solid #3c8457; outline-offset: 3px; }
.sj-analytical-image { object-fit: contain; background: #eaf0e9; }
.sj-home-project img.sj-analytical-image,
.sj-case-next__image img.sj-analytical-image { object-fit: contain; }
