:root { --brand: #E30000; --brand-rgb: 227, 0, 0; --panel: #FEF3F2; }
/* ARDOCH base stylesheet - written for this site (2 Nov 2026), replacing the copied theme CSS.
   Colours come from :root variables that build.py writes per version (--brand, --brand-rgb, --panel).
   Layout: a centred container (about 90% of the window) on a brand-colour page, with white or
   pale panels that run to the right edge; content sits on a 12-column grid inside it. */

/* ---------- fonts (the visitor's own Helvetica Neue; Arial elsewhere) ---------- */
@font-face { font-family: "Ardoch Sans"; font-weight: 400; font-style: normal; font-display: swap;
  src: local("Helvetica Neue"), local("HelveticaNeue"), local("Helvetica"), local("Arial"); }
@font-face { font-family: "Ardoch Sans"; font-weight: 700; font-style: normal; font-display: swap;
  src: local("Helvetica Neue Bold"), local("HelveticaNeue-Bold"), local("Helvetica Bold"), local("Arial Bold"); }
/* Older rules in ardoch.css still name these two families */
@font-face { font-family: "Helvetica Neue Bold"; font-weight: 400; font-display: swap;
  src: local("Helvetica Neue Bold"), local("HelveticaNeue-Bold"), local("Helvetica Bold"), local("Arial Bold"); }

/* ---------- tokens ---------- */
:root {
  --ink: #111;
  --text: #5a5a5a;
  --muted: #8a8a8a;
  --line: #e6e6e6;
  --font: "Ardoch Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
  --container: 89.72vw;
  --edge: calc((100vw - var(--container)) / 2);        /* page margin beside the container */
  --col: calc((var(--container) - 176px) / 12);         /* one grid column */
  --pad: var(--col);                                    /* inner left padding of every section */
  --sp-m: clamp(40px, 2.5vw + 36px, 5vw);               /* section spacing, medium */
  --sp-l: clamp(56px, 3.333vw + 48px, 6.667vw);         /* section spacing, large */
  --nav-h: clamp(66px, 1.4vw + 74px, 94px);
}
@media (max-width: 800px) {
  :root { --container: 100vw; --edge: 0px; --pad: calc(16px + (100vw - 192px) / 12); --sp-m: 36px; --sp-l: 48px; }
}

/* ---------- base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; background: var(--brand); color: var(--text); font-family: var(--font); font-size: 16px; line-height: 1.375;
  -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; overflow-x: hidden; }
h1, h2, h3, h4, h5, h6, p, ul, ol, dl, dd, figure, blockquote { margin: 0; }
h1, h2, h3, h4, h5, h6 { font-weight: 400; }
ul, ol { padding: 0; list-style: none; }
a { color: inherit; text-decoration: none; }
img, svg { display: block; max-width: 100%; }
button { font: inherit; color: inherit; }
strong, b { font-weight: 700; }
:focus-visible { outline: 2px solid currentColor; outline-offset: 3px; }
main { display: block; }
.u-anchor { position: relative; top: -100px; }

/* ---------- type scale (fluid) ---------- */
.u-a1 { font-size: 18px; line-height: 22px; }
.u-a1--1 { font-size: clamp(12px, .625vw + 9px, 1.25vw); line-height: 1.22; }
.u-a2 { font-size: clamp(18px, 2.9vw + 4px, 3.2vw); line-height: 1.18; }
.u-a2--1 { font-size: clamp(30px, 1.45vw + 25px, 3.2vw); line-height: 1.08; }
.u-a3 { font-size: clamp(36px, 2.08vw + 30px, 4.17vw); line-height: 1.06; }
.u-a4 { font-size: clamp(36px, 4.17vw + 20px, 5.56vw); line-height: .95; }
.u-a4--1 { line-height: 1.05; }
.u-a5 { font-size: clamp(32px, 7.1vw - 2px, 6.95vw); line-height: 1.04; }
.u-a6 { font-size: clamp(40px, 8.33vw, 8.33vw); line-height: 1; }
.u-b0 { font-size: 16px; line-height: 1.35; }
.u-b1 { font-size: 14px; line-height: 18px; }
.u-b2 { font-size: 13px; line-height: 1.3; }
.u-fw-700 { font-weight: 700; }
.u-fw-400 { font-weight: 400; }
.u-uppercase { text-transform: uppercase; letter-spacing: .02em; }
.ts-10, .ts-16 { }

/* ---------- flex helpers ---------- */
.u-flex { display: flex; }
.u-flex-column { flex-direction: column; }
.u-flex-row { flex-direction: row; }
.u-flex-wrap { flex-wrap: wrap; }
.u-justify-content-between { justify-content: space-between; }
.u-justify-content-center { justify-content: center; }
.u-justify-content-start { justify-content: flex-start; }
.u-align-items-center { align-items: center; }
.u-align-items-start { align-items: flex-start; }
@media (max-width: 1140px) {
  .u-flex-lg-column { flex-direction: column; }
  .u-flex-lg-wrap { flex-wrap: wrap; }
}
@media (max-width: 800px) {
  .u-flex-md-column { flex-direction: column; }
  .u-justify-content-md-between { justify-content: space-between; }
  .u-justify-content-md-start { justify-content: flex-start; }
  .u-align-md-items-start { align-items: flex-start; }
  .u-align-content-md-start { align-content: flex-start; }
}
@media (max-width: 600px) { .u-flex-sm-column { flex-direction: column; } }

/* ---------- containers and panels ---------- */
.o-container { width: var(--container); margin-left: auto; margin-right: auto; }
.o-container--white, .o-container--light-blue { position: relative; background: #fff; }
.o-container--light-blue { background: var(--panel); }
.o-container--white::after, .o-container--light-blue::after {   /* the panel runs on to the right edge of the window */
  content: ""; position: absolute; top: 0; bottom: 0; left: 100%; width: var(--edge); background: inherit; }

/* ---------- links ---------- */
.c-link--underline { background: linear-gradient(currentColor, currentColor) no-repeat 0 100% / 0 1px; transition: background-size .3s; }
.c-link--underline:hover, a:hover > .c-link--underline { background-size: 100% 1px; }

/* ---------- buttons: label + arrow (ARDOCH style) ---------- */
.button-circle { display: flex; align-items: center; justify-content: flex-start; gap: 16px; font-weight: 700;
  text-transform: uppercase; letter-spacing: .02em; color: var(--brand); }
.button-circle > span { position: relative; }
.button-circle .circle { position: relative; flex: 0 0 auto; width: 24px; height: 24px; display: flex; align-items: center; justify-content: center;
  transition: transform .3s; }
.button-circle .circle svg { width: 22px; height: 22px; }
.button-circle .circle svg.secondary { display: none; }
.button-circle .circle path { stroke-width: 2.4; }
.button-circle:hover .circle { transform: translateX(5px); }
.button-circle:hover > span { text-decoration: underline; text-underline-offset: 4px; }
.link-wrapper { border-top: 1px solid rgba(255, 255, 255, .7); padding-top: 28px; }
.link-wrapper .button-circle, .c-big-numbers__link, .a-read-more .button-circle, .c-boxes-small__link { justify-content: space-between; }

/* ---------- navigation ---------- */
.o-navigation-wrapper { position: fixed; top: 0; left: 0; right: 0; z-index: 20; transition: background-color .3s, transform .3s; }
.o-navigation-wrapper.active { background-color: var(--brand); }
.o-navigation-wrapper.solid { background-color: transparent; }
.c-navigation { display: flex; justify-content: space-between; align-items: center; height: var(--nav-h); }
.c-navigation__logo { display: block; line-height: 0; }
.c-navigation__logo--mobile { display: none; }
.c-navigation__menu { display: flex; align-items: center; color: #fff; }
.c-navigation__menu a { display: block; margin: 0 clamp(10px, .42vw + 10px, 1.1vw); font-size: 15px; transition: opacity .25s; }
.c-navigation__menu a span { display: block; padding: 24px 0; }
.c-mobile-navigation__btn { display: none; align-items: center; justify-content: center; width: 44px; height: 44px; margin-right: -10px;
  padding: 0; background: none; border: 0; cursor: pointer; }
.c-mobile-navigation__btn-inner { position: relative; width: 22px; height: 16px; }
.c-mobile-navigation__btn-inner i { position: absolute; left: 0; width: 100%; height: 2px; background: #fff; border-radius: 1px; transition: transform .3s, opacity .3s, top .3s; }
.c-mobile-navigation__btn-inner i:nth-child(1) { top: 0; }
.c-mobile-navigation__btn-inner i:nth-child(2) { top: 7px; }
.c-mobile-navigation__btn-inner i:nth-child(3) { top: 14px; }
.c-mobile-navigation__btn.is-opened i:nth-child(1) { top: 7px; transform: rotate(45deg); }
.c-mobile-navigation__btn.is-opened i:nth-child(2) { opacity: 0; }
.c-mobile-navigation__btn.is-opened i:nth-child(3) { top: 7px; transform: rotate(-45deg); }
.c-mobile-navigation { display: none; position: fixed; inset: 0; z-index: 19; overflow: auto; background: var(--brand);
  opacity: 0; visibility: hidden; pointer-events: none; }
.c-mobile-navigation.is-opened { pointer-events: auto; }
.c-mobile-navigation__inner { min-height: 100%; padding: calc(var(--nav-h) + 40px) var(--pad) 40px; }
.c-mobile-navigation__top > ul > li { overflow: hidden; padding-bottom: 14px; }
.c-mobile-navigation__top > ul > li > a { display: inline-block; color: #fff; transform: translateY(105%); }
@media (max-width: 1140px) {
  .c-navigation__menu { display: none; }
  .c-mobile-navigation__btn { display: flex; }
  .c-mobile-navigation { display: block; }
}
@media (max-width: 800px) {
  .c-navigation { padding: 0 var(--pad); }
  .c-navigation__logo--desktop { display: none; }
  .c-navigation__logo--mobile { display: block; }
}

/* ---------- page header ---------- */
.o-header-wrapper { position: relative; background: var(--brand); overflow: hidden; }
.c-header { position: relative; display: flex; align-items: center; min-height: 52.5vw; }
.c-header > .o-container { position: relative; z-index: 2; }
.c-header__bg { display: none; }
.c-header__image { position: absolute; inset: 0; }
.c-header__image img { width: 100%; height: 100%; object-fit: cover; object-position: right bottom; }
.c-header__content { position: relative; margin: calc(var(--nav-h) + 18px) 0 112px; padding-left: var(--col);
  border-left: 1px solid rgba(255, 255, 255, .3); }
.c-header__headline { color: #fff; font-weight: 700; text-align: left; }
.c-header__text { max-width: min(560px, 44vw); color: #fff; text-align: left; }
@media (max-width: 1140px) {
  .c-header { min-height: 0; }
  .c-header__content { margin: calc(var(--nav-h) + 34px) 0 96px; padding-left: 48px; }
}
@media (max-width: 800px) {
  .c-header__content { margin: calc(var(--nav-h) + 14px) var(--pad) 32px; padding-left: var(--pad); }
  .c-header__text { max-width: 100%; font-size: 14px !important; line-height: 22px !important; }
}

/* ---------- small text row (label + down arrow) ---------- */
.c-small-text__article { position: relative; display: flex; justify-content: space-between; align-items: center;
  padding: var(--sp-m) var(--pad); }
.o-container--white:not(.o-container--disable-border) .c-small-text__article::after {
  content: ""; position: absolute; left: var(--pad); right: 0; bottom: 0; height: 1px; background: var(--line); }
.c-small-text__small-text { color: var(--text); padding-right: 24px; }
.c-small-text__icon { flex: 0 0 auto; width: 24px; height: 24px; color: var(--brand); }
.c-small-text__icon svg { width: 100%; height: 100%; }

/* ---------- statement + text ---------- */

.c-paragraph-text__article { display: flex; flex-direction: column; padding: var(--sp-m) var(--pad) var(--sp-l); }
.c-paragraph-text__big-paragraph-text { max-width: 60%; color: var(--brand); padding-bottom: var(--sp-l); }
.c-paragraph-text__article--only-big .c-paragraph-text__big-paragraph-text { padding-bottom: 0; }
.c-paragraph-text__small-paragraph-text { max-width: 540px; padding-left: 44px; border-left: 1px solid var(--text); color: var(--text); }
@media (max-width: 1140px) {
  .c-paragraph-text__big-paragraph-text { max-width: none; }
  .c-paragraph-text__small-paragraph-text { padding-left: 30px; max-width: none; }
}

/* ---------- indented section (label left, statement and text right) ---------- */
.c-paragraph-indent-link__article { position: relative; display: flex; flex-direction: column; padding: var(--sp-l) 0; }
.c-paragraph-indent-link__paragraph-indent { position: absolute; left: 0; top: 0; width: calc(var(--col) * 5 + 64px);
  padding: var(--sp-l) 0 0 var(--pad); color: var(--text); }
.c-paragraph-indent-link__big-paragraph-text, .c-paragraph-indent-link__small-paragraph-text, .c-paragraph-indent-link__link {
  margin-left: calc(var(--col) * 5 + 80px); width: calc(var(--col) * 6 + 80px); }
.c-paragraph-indent-link__big-paragraph-text { color: var(--brand); padding-bottom: var(--sp-l); }
.c-paragraph-indent-link__big-paragraph-text:last-child { padding-bottom: 0; }
.c-paragraph-indent-link__small-paragraph-text { color: var(--text); }
.c-paragraph-indent-link__link { max-width: 340px; margin-top: 40px; }
.c-paragraph-indent-link__small-paragraph-text + .c-paragraph-indent-link__link { margin-top: 32px; }
@media (max-width: 1140px) {
  .c-paragraph-indent-link__article { padding: var(--sp-l) 0; }
  .c-paragraph-indent-link__paragraph-indent { position: relative; width: auto; padding: 0 0 var(--sp-m) 48px; }
  .c-paragraph-indent-link__big-paragraph-text, .c-paragraph-indent-link__small-paragraph-text, .c-paragraph-indent-link__link {
    margin-left: 48px; width: auto; margin-right: 48px; }
  .c-paragraph-indent-link__big-paragraph-text { padding-bottom: var(--sp-m); }
}
@media (max-width: 800px) {
  .c-paragraph-indent-link__paragraph-indent { padding: 0 var(--pad) 24px; }
  .c-paragraph-indent-link__big-paragraph-text, .c-paragraph-indent-link__small-paragraph-text, .c-paragraph-indent-link__link {
    margin-left: var(--pad); margin-right: var(--pad); }
}

/* ---------- quote ---------- */
.c-paragraph-signature__article { display: flex; flex-direction: column; padding: clamp(32px, 5.56vw, 96px) var(--pad); }
.c-paragraph-signature__big-text { max-width: 60%; color: var(--brand); padding-bottom: 40px; }
.c-paragraph-signature__small-text { padding-left: 28px; border-left: 1px solid var(--brand); color: var(--text); }
@media (max-width: 1140px) { .c-paragraph-signature__big-text { max-width: none; padding-bottom: 28px; } }

/* ---------- two large image tiles (home) ---------- */
.c-boxes__list { display: flex; margin-right: calc(var(--edge) * -1); }
.c-boxes__article { position: relative; flex: 1 1 50%; min-height: clamp(340px, 41.9vw, 820px); background-size: cover; background-position: center; }
.c-boxes__article::before { content: ""; position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(var(--brand-rgb), .35) 0%, rgba(var(--brand-rgb), .78) 100%); }
.c-boxes__article-inner { position: absolute; inset: 0; display: flex; flex-direction: column; justify-content: flex-end;
  padding: 48px clamp(32px, 6.67vw, 96px) clamp(24px, 2vw, 40px); color: #fff; }
.c-boxes__big-boxes { color: #fff; font-weight: 700; padding-bottom: clamp(32px, 5vw, 96px); }
.c-boxes__article .button-circle { color: #fff; margin-bottom: 8px; }
@media (max-width: 800px) {
  .c-boxes__list { flex-direction: column; margin-right: 0; }
  .c-boxes__article { min-height: 344px; }
  .c-boxes__article-inner { padding: 32px var(--pad) 16px; }
}

/* ---------- full-width picture ---------- */
.c-big-picture__picture { display: flex; padding: var(--sp-m) 0 var(--sp-m) var(--pad); }
.c-big-picture__picture figure { width: 100%; }
.c-big-picture__picture img { width: 100%; height: auto; }

/* ---------- key figures ---------- */
.c-big-numbers .o-container > .u-flex { align-items: stretch; }
.c-big-numbers__article { flex: 0 0 calc(var(--col) * 3 + 64px + var(--pad) * 2); padding: var(--sp-l) var(--pad); }
.c-big-numbers__text { color: var(--text); padding-bottom: 48px; }
.c-big-numbers__link { max-width: 340px; padding-top: 24px; border-top: 1px solid var(--brand); }
.c-big-numbers__boxes { flex: 1 1 auto; display: grid; grid-template-columns: repeat(3, auto); justify-content: start; align-items: start;
  column-gap: clamp(48px, 5.2vw, 100px); padding: var(--sp-l) var(--pad) var(--sp-l) 0; }
.c-big-numbers__box { min-width: 0; }
.c-big-numbers__box-inner { display: flex; flex-direction: column; gap: 8px; }
.c-big-numbers__title { color: var(--text); }
.c-big-numbers__number { color: var(--brand); white-space: nowrap; }
@media (max-width: 1140px) {
  .c-big-numbers .o-container > .u-flex { flex-direction: column-reverse; }
  .c-big-numbers__article { flex-basis: auto; padding: 0 48px var(--sp-l); }
  .c-big-numbers__boxes { padding: var(--sp-l) 48px 32px; }
}
@media (max-width: 800px) {
  .c-big-numbers__boxes { grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: stretch; column-gap: 12px; }
  .c-big-numbers__box-inner { justify-content: space-between; height: 100%; }
  .c-big-numbers__article { padding: 0 var(--pad) var(--sp-l); }
  .c-big-numbers__boxes { padding: var(--sp-l) var(--pad) 24px; gap: 12px; }
}

/* ---------- three small image links (home) ---------- */
.c-boxes-small__list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(24px, 4vw, 72px);
  padding: clamp(32px, 5.56vw, 96px) var(--pad); }
.c-boxes-small__article { min-width: 0; }
.c-boxes-small__figure { aspect-ratio: 4 / 3; background-size: cover; background-position: center; }
.c-boxes-small__link { margin-top: 28px; }
@media (max-width: 800px) {
  .c-boxes-small__list { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; scroll-padding-inline: var(--pad); gap: 18px; }
  .c-boxes-small__article { flex: 0 0 72%; scroll-snap-align: start; }
}

/* ---------- project and insight cards ---------- */
.c-references__list { display: flex; flex-wrap: wrap; }
.c-references__list > .o-container { width: var(--container); }
.c-references__item { position: relative; display: flex; justify-content: space-between; gap: 48px; padding: var(--sp-m) var(--pad); }
.c-references__item + .c-references__item::before { content: ""; position: absolute; top: 0; left: var(--pad); right: var(--pad); height: 1px; background: var(--line); }
.c-references__article { display: flex; flex-direction: column; align-items: flex-start; flex: 0 1 50%; min-width: 0; }
.c-references__title { color: var(--brand); padding-bottom: 48px; }
.c-references__title--mobile { display: none; }
.c-references__text { max-width: 380px; padding-bottom: 48px; color: var(--text); }
.c-references__other-info { padding-left: 40px; border-left: 1px solid var(--line); color: var(--text); }
.c-references__other-info li + li { margin-top: 4px; }
.c-references__other-info dl { display: flex; }
.c-references__other-info dt { min-width: clamp(120px, 10vw, 150px); color: var(--muted); }
.c-references__other-info dd { padding-left: 12px; color: #333; }
.c-references__figure-wrapper { flex: 0 1 38%; min-width: 0; }
.c-references__figure { width: 100%; aspect-ratio: 1 / 1; background-size: cover; background-position: center; }
@media (max-width: 1140px) {
  .c-references__item { padding: var(--sp-m) 48px; gap: 32px; }
  .c-references__item + .c-references__item::before { left: 48px; right: 48px; }
  .c-references__article { flex-basis: 52%; }
  .c-references__figure-wrapper { flex-basis: 40%; }
}
@media (max-width: 800px) {
  .c-references__item { flex-direction: column-reverse; padding: var(--sp-m) var(--pad) 40px; gap: 0; }
  .c-references__item + .c-references__item::before { left: var(--pad); right: var(--pad); }
  .c-references__title--desktop { display: none; }
  .c-references__title--mobile { display: block; padding-bottom: 24px; font-weight: 400; }
  .c-references__figure-wrapper { margin-bottom: 28px; }
  .c-references__text { max-width: none; padding-bottom: 28px; }
  .c-references__other-info { padding-left: 24px; }
}

/* ---------- projects filter ---------- */
.c-filter__inner { display: flex; align-items: center; padding: var(--sp-m) var(--pad); border-bottom: 1px solid var(--line); }
.c-category-nav .menu { display: flex; flex-wrap: wrap; gap: 12px; }
.c-category-nav .menu li a { color: var(--brand); font-weight: 700; transition: background-color .2s, color .2s, border-color .2s; }
.c-category-nav .menu li a:hover { border-color: var(--brand); }

/* ---------- logo strip ---------- */

/* ---------- contact page wrapper ---------- */
.c-contact-boxes__list { padding: var(--sp-m) var(--pad) var(--sp-l); }

/* ---------- rich text ---------- */
.u-rte > * + * { margin-top: 20px; }
.u-rte p { line-height: 1.5; }
.u-rte ul { padding-left: 4px; }
.u-rte ul li { position: relative; padding-left: 28px; line-height: 1.5; }
.u-rte ul li + li { margin-top: 8px; }
.u-rte ul li::before { content: ""; position: absolute; left: 6px; top: .68em; width: 5px; height: 5px; border-radius: 50%; background: currentColor; opacity: .75; }
.u-rte p + ul { margin-top: 14px; }
.u-rte a { text-decoration: underline; text-underline-offset: 3px; }
.u-rte a:hover { color: var(--brand); }

/* ---------- footer ---------- */
.o-footer-wrapper { background: var(--brand); color: #fff; }
.c-footer__top { display: grid; grid-template-columns: 54% minmax(0, 1fr) auto; column-gap: 48px; align-items: start; padding: 56px 0 72px; }
.c-footer__logo { display: block; line-height: 0; }
.c-footer__menu--is-not-active { display: none; }
.c-footer__menu { font-size: 14px; line-height: 18px; }
.c-footer__title { margin-bottom: 18px; font-weight: 700; letter-spacing: .04em; }
.c-footer__menu p { margin: 0; }
.c-footer__bottom > .o-container { display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 32px 0;
  font-size: 14px; border-top: 1px solid rgba(255, 255, 255, .35); }
.c-footer__links { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 32px; }
.c-footer__copy p { margin: 0; }
@media (max-width: 1023px) {
  .c-footer__top { grid-template-columns: 1fr 1fr; column-gap: 40px; row-gap: 40px; padding: 40px 0 56px; }
  .c-footer__logo { grid-column: 1 / -1; }
}
@media (max-width: 800px) {
  .c-footer__links { gap: 12px !important; }
  .c-footer__top { padding: 40px var(--pad); grid-template-columns: 1fr; row-gap: 32px; }
  .c-footer__bottom > .o-container { flex-direction: column; align-items: flex-start; padding: 28px var(--pad); border-top: 0; }
  .c-footer__bottom { border-top: 1px solid rgba(255, 255, 255, .35); }
  .c-footer__links { flex-direction: column; align-items: flex-start; gap: 4px; }
}
