/* ==========================================================================
   QRIOSITY — core stylesheet
   Ported verbatim from the client's supplied build (html/assets/styles.css).
   Do not restyle. Additions belong in qriosity-wp.css.
   ========================================================================== */

:root {
  /* The palette is fixed by the brand manual and the page paints every
     surface itself. Declaring the scheme stops Chrome's auto dark mode from
     inverting the page, which was turning dark text onto dark grounds. */
  color-scheme: only light;

  --q-green: #00622b;
  --q-green-deep: #003d1b;
  --q-lemon: #6cbe4f;
  /* Lemon sits at only 3.28:1 on the brand green, so labels on a green
     ground use this lighter tint, which clears AA at 4.64:1. */
  --q-lemon-on-green: #a7d896;
  --q-lemon-ink: #35691f;
  --q-black: #282829;
  --q-ink: #1c1d1c;
  --q-soft: #4a4f4a;
  --q-muted: #676d65;
  --q-ground: #f6f7f4;
  --q-surface: #ffffff;
  --q-sunk: #eef1ec;
  --q-tint: #e6f0ea;
  --q-border: #d9ded6;
  --q-rule: #c6cdc2;
  --font-sans: "Segoe UI", Corbel, system-ui, -apple-system, sans-serif;
  --font-editorial: Georgia, "Times New Roman", serif;
}


/* ==========================================================================
   Guard layer
   --------------------------------------------------------------------------
   A child theme cannot know what its parent, or a plugin, will put on the page
   after it. Themify Ultra and its Customizer emit ordinary declarations such as
   `h1, h2, h3 { color: #222 !important}` and `p, span, address { color: #333 !important}`.

   Rules of ours that carry a class already beat a bare element selector. The
   gap is any element that takes its colour by INHERITANCE, because inheritance
   loses to a direct declaration however weak it is. A heading in the dark hero
   is white only because the hero is white, so it turns black the moment
   anything declares a colour on `h1`. That was the cause of dark text on the
   dark and green sections on a live install.

   Two rules close it. This one restores inheritance with class-level
   specificity, which beats any bare element selector. Every colour this theme
   sets is then marked important further down the file, so our own colours
   still win over this, while nothing from outside can.

   The important flags below are deliberate. Do not strip them.
   ========================================================================== */

.qriosity :is(h1, h2, h3, h4, h5, h6, p, span, strong, em, b, i, u, small, li, dt, dd,
              td, th, address, blockquote, figure, figcaption, div, article, section,
              aside, nav, header, footer, main, a, button, label, legend, time, cite) {
  color: inherit;
}

/* The design carries no capitals at all, so nothing may introduce them. */
.qriosity, .qriosity *, .qriosity *::before, .qriosity *::after { text-transform: none !important; }

/* Controls take the document typeface, not the browser's or a parent theme's. */
.qriosity :is(button, input, select, textarea, optgroup) { font-family: inherit; }


/* Typeface and measure. A parent theme routinely restyles headings and
   container widths; these sit early so this theme's own rules, which are
   equally specific and come later, still win. */
.qriosity,
.qriosity :is(h1, h2, h3, h4, h5, h6, p, li, dt, dd, td, th, address, blockquote,
              button, input, select, textarea, optgroup) {
  font-family: var(--font-sans);
}
.qriosity .shell { width: min(100% - (var(--q-gutter) * 2), 1440px) !important; max-width: none !important; }
.qriosity :is(.button, .header-cta, .project-filters button) { border-radius: 0 !important; }

/* Inverted cards set the colour; their contents follow it. */
.service-card:hover :is(h3, p, span, a),
.project-card:hover :is(h2, p, span, a),
.values-grid article:hover :is(h3, p, span, a) { color: inherit; }


* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; background: var(--q-ground) !important; color: var(--q-ink) !important; font-family: var(--font-sans); text-rendering: optimizeLegibility; }
body, button, input, select, textarea { font-family: var(--font-sans); }
img { max-width: 100%; display: block; }
a { color: inherit !important; text-decoration: none; }
button, input, textarea, select { font: inherit; }
button { cursor: pointer; }
::selection { background: var(--q-lemon) !important; color: #102414 !important; }
:focus-visible { outline: 3px solid var(--q-lemon); outline-offset: 4px; }
.shell { width: min(100% - 64px, 1440px); margin-inline: auto; }
.skip-link { position: fixed; top: -80px; left: 20px; z-index: 1000; background: white !important; color: black !important; padding: 12px 18px; }
.skip-link:focus { top: 20px; }

/* Header */
.site-header { height: 88px; background: #0e1210 !important; color: white !important; position: relative; z-index: 60; border-bottom: 1px solid rgba(255,255,255,.12); }
.header-inner { height: 100%; display: flex; align-items: center; gap: 38px; }
.brand { display: inline-flex; align-items: center; gap: 11px; letter-spacing: .16em; font-size: 15px; font-weight: 750; white-space: nowrap; }
.brand img { width: 33px; height: 33px; object-fit: contain; }
.desktop-nav { display: flex; align-items: center; gap: clamp(16px, 1.65vw, 28px); margin-left: auto; }
.desktop-nav > a, .nav-services > a { color: rgba(255,255,255,.85) !important; font-size: 12px; transition: color .2s ease; white-space: nowrap; }
.desktop-nav > a:hover, .nav-services > a:hover { color: white !important; }
.nav-services { height: 88px; display: flex; align-items: center; }
.nav-services > a span { color: var(--q-lemon) !important; margin-left: 5px; }
.mega-menu { position: absolute; inset: 88px 0 auto; background: #101511 !important; color: white !important; padding: 48px max(32px, calc((100vw - 1376px)/2)); display: grid; grid-template-columns: .75fr 1.25fr; gap: 80px; border-top: 1px solid rgba(255,255,255,.08); box-shadow: 0 30px 70px rgba(0,0,0,.28); opacity: 0; visibility: hidden; transform: translateY(-8px); transition: .22s ease; }
.nav-services:hover .mega-menu, .nav-services:focus-within .mega-menu { opacity: 1; visibility: visible; transform: translateY(0); }
.mega-menu > div:first-child > p, .footer-label { color: var(--q-lemon) !important; letter-spacing: .06em; font-size: 13px; font-weight: 700; margin: 0 0 20px; }
.mega-menu h2 { font-family: var(--font-editorial); font-weight: 400; font-size: 34px; line-height: 1.08; margin: 0 0 28px; }
.mega-links { display: grid; grid-template-columns: 1fr 1fr; }
.mega-links a { border-top: 1px solid rgba(255,255,255,.15); padding: 15px 12px; font-size: 13px; line-height: 1.35; transition: background .2s ease, color .2s ease, padding-left .2s ease; }
.mega-links a:nth-last-child(-n+2) { border-bottom: 1px solid rgba(255,255,255,.15); }
.mega-links a:hover { background: var(--q-green) !important; color: white !important; }
.mega-links span { color: var(--q-lemon) !important; font-family: ui-monospace, monospace; font-size: 9px; margin-right: 12px; }
.header-cta { border: 1px solid rgba(255,255,255,.35) !important; padding: 12px 18px; letter-spacing: .02em; font-size: 13px; font-weight: 650; white-space: nowrap; transition: background .2s ease, color .2s ease; }
.header-cta:hover { background: white !important; color: #111 !important; }
.menu-toggle { display: none; margin-left: auto; width: 44px; height: 44px; border: 1px solid rgba(255,255,255,.3) !important; background: transparent !important; padding: 12px; }
.menu-toggle span { height: 1px; background: white !important; display: block; margin: 6px 0; }
.mobile-menu { display: none; }

/* Shared type and controls */
.eyebrow { margin: 0 0 22px; color: var(--q-lemon) !important; letter-spacing: .05em; font-weight: 700; font-size: 13px; line-height: 1.45; }
.eyebrow.dark { color: var(--q-green) !important; }
.button { min-height: 52px; display: inline-flex; align-items: center; justify-content: center; gap: 24px; padding: 0 24px; border: 0 !important; font-weight: 650; letter-spacing: .015em; font-size: 14px; transition: transform .2s ease, background .2s ease, color .2s ease; }
.button:hover { transform: translateY(-2px); }
.button-primary { background: var(--q-lemon) !important; color: #142116 !important; }
.button-primary:hover { background: #80cc61 !important; }
.button-quiet { border: 1px solid rgba(255,255,255,.32) !important; color: white !important; background: transparent !important; }
.button-dark { background: var(--q-ink) !important; color: white !important; }
.button-outline-light { border: 1px solid rgba(255,255,255,.35) !important; color: white !important; background: transparent !important; }
.text-link { display: inline-flex; align-items: center; gap: 16px; color: var(--q-green) !important; letter-spacing: .01em; font-size: 14px; font-weight: 650; padding-bottom: 5px; border-bottom: 1px solid currentColor; }
.text-link.inverse { color: white !important; }
.section-heading { max-width: 670px; }
.section-heading h2 { font-size: clamp(28px, 3.1vw, 44px); line-height: 1.14; letter-spacing: -.022em; margin: 0; font-weight: 620; }
.section-heading h2 em { color: var(--q-green) !important; font-family: var(--font-editorial); font-weight: 400; text-transform: none; }
.section-heading > p:last-child { max-width: 540px; color: var(--q-muted) !important; line-height: 1.75; font-size: 16px; margin: 32px 0 0; }
.section-heading.inverse h2, .section-heading.inverse > p:last-child { color: white !important; }
.section-heading.inverse h2 em { color: var(--q-lemon) !important; }

/* Homepage hero */
.hero { color: white !important; overflow: hidden; background: linear-gradient(112deg, #0e1210 0 52%, #07321d 52% 100%) !important; position: relative; }
.home-hero { min-height: calc(100svh - 88px); }
.hero::before { content: ""; position: absolute; inset: 0; pointer-events: none; opacity: .22; background-image: linear-gradient(rgba(255,255,255,.07) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.07) 1px, transparent 1px); background-size: 72px 72px; mask-image: linear-gradient(90deg, transparent 37%, #000 70%); }
.hero-grid { min-height: calc(100svh - 158px); display: grid; grid-template-columns: 1.12fr .88fr; align-items: center; position: relative; z-index: 2; }
.hero-copy { padding: 64px 0 72px; max-width: 800px; }
.hero h1 { margin: 0; font-size: clamp(38px, 4.4vw, 62px); font-weight: 640; line-height: 1.08; letter-spacing: -.026em; }
.hero h1 em { color: var(--q-lemon) !important; font-family: var(--font-editorial); font-weight: 400; text-transform: none; }
.hero-intro { max-width: 720px; margin: 34px 0 0; color: rgba(255,255,255,.82) !important; font-size: clamp(17px, 1.35vw, 20px); line-height: 1.55; }
.hero-support { max-width: 650px; color: rgba(255,255,255,.74) !important; line-height: 1.65; font-size: 14px; margin: 14px 0 0; }
.hero-actions { display: flex; gap: 12px; margin-top: 34px; }
.hero-signal { justify-self: end; width: min(37vw, 530px); aspect-ratio: 1; position: relative; display: grid; place-items: center; }
.orbit { position: absolute; border: 1px solid rgba(143,212,111,.3) !important; border-radius: 50%; }
.orbit-one { inset: 4%; }
.orbit-two { inset: 18%; }
.signal-core { width: 47%; aspect-ratio: 1; border-radius: 50%; background: var(--q-green) !important; display: flex; flex-direction: column; justify-content: center; padding-left: 22%; box-shadow: 0 0 90px rgba(108,190,79,.18); }
.signal-core span, .signal-core strong { display: block; font-size: clamp(11px, .95vw, 14px); letter-spacing: .04em; line-height: 1.9; }
.signal-core span { color: rgba(255,255,255,.72) !important; }
.signal-core strong { color: var(--q-lemon) !important; }
.hero-signal > p { position: absolute; right: 3%; bottom: 13%; margin: 0; font-family: var(--font-editorial); font-style: italic; letter-spacing: .01em; font-size: 14px; color: rgba(255,255,255,.78) !important; }
.hero-foot { height: 70px; border-top: 1px solid rgba(255,255,255,.15); display: flex; align-items: center; gap: 42px; letter-spacing: .01em; font-size: 13px; color: rgba(255,255,255,.78) !important; position: relative; z-index: 3; }
.hero-foot a { margin-left: auto; color: white !important; }

/* Homepage */
.intro-section { padding: 135px 0; display: grid; grid-template-columns: .22fr 1.3fr .8fr; gap: 60px; align-items: start; }
.oversized-index { font-family: var(--font-editorial); color: var(--q-rule) !important; font-size: 70px; line-height: 1; margin: 0; }
.intro-statement h2 { font-size: clamp(24px, 2.6vw, 36px); line-height: 1.28; letter-spacing: -.018em; margin: 0; max-width: 850px; }
.intro-copy p { color: var(--q-soft) !important; line-height: 1.78; margin: 34px 0; }
.services-section { padding: 130px 0 145px; background: white !important; }
.services-section .section-heading { margin-bottom: 70px; }
.service-grid { display: grid; grid-template-columns: repeat(2, 1fr); border-top: 1px solid var(--q-rule); }
.service-card { min-height: 220px; padding: 32px 28px; border-bottom: 1px solid var(--q-border); display: grid; grid-template-columns: 48px 1fr auto; gap: 20px; position: relative; transition: background .25s ease, color .25s ease; }
.service-card:nth-child(odd) { border-right: 1px solid var(--q-border); }
.service-card:hover { background: var(--q-green) !important; color: white !important; }
.service-number { font-family: ui-monospace, monospace; font-size: 10px; color: var(--q-green) !important; transition: color .25s; }
.service-card:hover .service-number { color: var(--q-lemon) !important; }
.service-card h3 { margin: 0; max-width: 430px; letter-spacing: -.012em; font-size: clamp(18px, 1.6vw, 23px); line-height: 1.22; }
.service-card p { margin: 18px 0 0; max-width: 430px; color: var(--q-muted) !important; line-height: 1.65; font-size: 14px; transition: color .25s; }
.service-card:hover p { color: rgba(255,255,255,.84) !important; }
.service-arrow { font-size: 21px; }
.service-grid.compact { grid-template-columns: 1fr; }
.service-grid.compact .service-card { min-height: auto; border-right: 0; grid-template-columns: 48px 1fr auto; padding: 20px 12px; }
.service-grid.compact .service-card h3 { font-size: 17px; }
.knowledge-feature { display: grid; grid-template-columns: 1fr 1fr; min-height: 780px; background: #061b10 !important; color: white !important; }
.knowledge-image { position: relative; overflow: hidden; }
.knowledge-image::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 55%, rgba(0,0,0,.72)) !important; }
.knowledge-image { position: relative; }
.knowledge-image img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(40%) contrast(1.08); }
.knowledge-image > span { position: absolute; z-index: 2; bottom: 34px; left: 34px; letter-spacing: .04em; font-size: 13px; }
.knowledge-copy { padding: clamp(60px, 8vw, 130px); align-self: center; }
.feature-number { font-family: var(--font-editorial); color: rgba(255,255,255,.18) !important; font-size: 80px; margin: 0 0 22px; }
.knowledge-copy h2 { font-size: clamp(26px, 2.9vw, 40px); line-height: 1.22; letter-spacing: -.018em; margin: 0; }
.knowledge-copy h2 em { font-family: var(--font-editorial); font-weight: 400; color: var(--q-lemon) !important; }
.knowledge-copy > p:not(.eyebrow):not(.feature-number) { color: rgba(255,255,255,.8) !important; line-height: 1.75; max-width: 630px; margin: 30px 0; }
.knowledge-actions { display: flex; gap: 26px; align-items: center; flex-wrap: wrap; }
.knowledge-copy small { display: block; color: rgba(255,255,255,.62) !important; margin-top: 42px; font-size: 11px; }
.project-preview { padding: 140px 0; }
.project-preview .section-heading { margin-bottom: 70px; }
.home-projects { border-top: 1px solid var(--q-rule); margin-bottom: 40px; }
.home-project { min-height: 150px; display: grid; grid-template-columns: 115px 1.3fr .8fr auto; gap: 28px; align-items: center; padding: 24px 10px; border-bottom: 1px solid var(--q-border); transition: padding .2s ease, color .2s ease; }
.home-project:hover { padding-inline: 20px; color: var(--q-green) !important; }
.home-project > span { font-family: ui-monospace, monospace; color: var(--q-muted) !important; font-size: 11px; }
.home-project h3 { font-size: clamp(17px, 1.5vw, 21px); line-height: 1.32; margin: 0; }
.home-project p { color: var(--q-muted) !important; font-size: 14px; }
.home-project i { font-style: normal; font-size: 22px; }
.consortium-section { background: var(--q-green-deep) !important; color: white !important; padding: 140px 0; }
.consortium-grid { display: grid; grid-template-columns: .85fr 1.15fr; gap: 100px; }
.consortium-grid h2 { font-size: clamp(28px, 3.1vw, 44px); line-height: 1.16; letter-spacing: -.022em; margin: 0; }
.consortium-grid > div:first-child > p:not(.eyebrow) { max-width: 640px; color: rgba(255,255,255,.8) !important; line-height: 1.78; margin: 30px 0; }
.expertise-cloud { display: grid; grid-template-columns: 1fr 1fr; align-self: start; }
.expertise-cloud span { border-top: 1px solid rgba(255,255,255,.17); padding: 15px 10px; font-size: 13px; }
.expertise-cloud span:nth-last-child(-n+2) { border-bottom: 1px solid rgba(255,255,255,.17); }
.expertise-cloud i { font-style: normal; color: var(--q-lemon) !important; font-family: ui-monospace, monospace; font-size: 8px; margin-right: 12px; }
.why-section { padding: 140px 0; }
.why-section .section-heading { margin-bottom: 70px; }
.why-grid { display: grid; grid-template-columns: repeat(4, 1fr); border-top: 1px solid var(--q-rule); border-left: 1px solid var(--q-border); }
.why-grid > div { min-height: 185px; padding: 24px; border-right: 1px solid var(--q-border); border-bottom: 1px solid var(--q-border); }
.why-grid span { font-family: ui-monospace, monospace; color: var(--q-green) !important; font-size: 9px; }
.why-grid h3 { font-size: 18px; line-height: 1.32; margin: 65px 0 0; }
.heritage-section { background: #121713 !important; color: white !important; padding: 140px 0; }
.heritage-section .section-heading { margin-bottom: 80px; }
.timeline { display: grid; grid-template-columns: repeat(6, 1fr); border-top: 1px solid rgba(255,255,255,.18); }
.timeline-item { padding: 30px 20px 10px 0; border-right: 1px solid rgba(255,255,255,.13); }
.timeline-item strong { color: var(--q-lemon) !important; font-family: var(--font-editorial); font-size: 28px; font-weight: 400; }
.timeline-item p { color: rgba(255,255,255,.78) !important; line-height: 1.7; font-size: 13px; margin: 14px 0 0; }
.integrity-note { max-width: 920px; border-left: 2px solid var(--q-lemon); padding-left: 22px; color: rgba(255,255,255,.74) !important; line-height: 1.75; font-size: 13px; margin: 65px 0 0; }
.global-preview { padding: 140px 0; display: grid; grid-template-columns: .8fr 1.2fr; gap: 100px; }
.global-lead h2 { font-size: clamp(28px, 3.1vw, 42px); line-height: 1.16; letter-spacing: -.022em; margin: 0; }
.global-lead h2 em { font-family: var(--font-editorial); font-weight: 400; color: var(--q-green) !important; text-transform: none; }
.global-lead > p:not(.eyebrow) { color: var(--q-muted) !important; line-height: 1.75; max-width: 560px; margin: 30px 0; }
.location-list { border-top: 1px solid var(--q-rule); }
.location-list > div { display: grid; grid-template-columns: 48px 1fr .8fr; gap: 20px; align-items: center; border-bottom: 1px solid var(--q-border); padding: 25px 8px; }
.location-list span { font-family: ui-monospace, monospace; font-size: 9px; color: var(--q-green) !important; }
.location-list h3 { font-size: 21px; margin: 0; }
.location-list p { color: var(--q-muted) !important; font-size: 12px; }

/* Page hero */
.page-hero { background: linear-gradient(115deg, #111612 0 63%, #06351d 63% 100%) !important; color: white !important; min-height: 585px; position: relative; overflow: hidden; }
.page-hero-grid { min-height: 585px; display: grid; grid-template-columns: 1.25fr .55fr; gap: 90px; align-items: end; padding-top: 110px; padding-bottom: 85px; position: relative; z-index: 2; }
.page-hero h1 { max-width: 1050px; margin: 0; font-size: clamp(32px, 3.8vw, 52px); line-height: 1.12; letter-spacing: -.024em; }
.page-hero-intro { max-width: 800px; color: rgba(255,255,255,.85) !important; font-size: 18px; line-height: 1.65; margin: 32px 0 0; }
.page-hero-aside { align-self: end; border-top: 1px solid rgba(255,255,255,.3); padding-top: 25px; display: flex; flex-direction: column; gap: 12px; color: rgba(255,255,255,.84) !important; }
.page-hero-aside > span { letter-spacing: .03em; font-size: 13px; }
.page-hero-aside > strong { color: white !important; font-family: var(--font-editorial); font-weight: 400; font-size: 25px; line-height: 1.2; }
.page-hero-aside > p { font-size: 12px; line-height: 1.6; margin: 0; }
.page-hero-motif { position: absolute; right: -120px; top: 50%; width: 520px; height: 520px; transform: translateY(-50%); border: 1px solid rgba(108,190,79,.2) !important; border-radius: 50%; }
.page-hero-motif span { position: absolute; border: 1px solid rgba(108,190,79,.2) !important; border-radius: 50%; inset: 75px; }
.page-hero-motif span:last-child { inset: 150px; background: rgba(0,98,43,.24) !important; }
.giant-number { font-family: var(--font-editorial) !important; font-size: 90px !important; color: var(--q-lemon) !important; }
.formula { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.formula span { font-size: 14px; color: white !important; }
.formula i { color: var(--q-lemon) !important; font-style: normal; }

/* About */
.content-grid { display: grid; grid-template-columns: .75fr 1.25fr; gap: 110px; }
.about-narrative, .consortium-intro { padding: 135px 0; }
.content-grid h2 { font-size: clamp(27px, 3vw, 42px); line-height: 1.18; letter-spacing: -.02em; margin: 0; }
.prose-large p { font-family: var(--font-editorial); font-size: clamp(18px, 1.7vw, 24px); line-height: 1.62; color: var(--q-soft) !important; margin: 0 0 30px; }
.vision-mission { background: var(--q-green-deep) !important; color: white !important; padding: 130px 0; }
.vision-grid { display: grid; grid-template-columns: 1fr 1fr; }
.vision-grid article { padding: 25px 55px 25px 0; position: relative; border-top: 1px solid rgba(255,255,255,.2); }
.vision-grid article + article { border-left: 1px solid rgba(255,255,255,.2); padding-left: 55px; }
.vision-grid article > span { position: absolute; top: 25px; right: 25px; color: var(--q-lemon) !important; font-family: ui-monospace, monospace; font-size: 10px; }
.vision-grid h2 { font-family: var(--font-editorial); font-weight: 400; font-size: clamp(21px, 2.1vw, 30px); line-height: 1.45; margin: 0; color: #fff !important; }
.values-section { padding: 140px 0; }
.values-section .section-heading { margin-bottom: 70px; }
.values-grid { display: grid; grid-template-columns: repeat(5, 1fr); border-left: 1px solid var(--q-border); }
.values-grid article { padding: 25px; min-height: 300px; border: 1px solid var(--q-border) !important; border-left: 0; position: relative; transition: background .2s, color .2s; }
.values-grid article:hover { background: var(--q-green) !important; color: white !important; }
.values-grid article > span { font-family: var(--font-editorial); color: var(--q-green) !important; font-size: 60px; transition: color .2s; }
.values-grid article:hover > span { color: var(--q-lemon) !important; }
.values-grid h3 { font-size: 19px; margin: 55px 0 18px; }
.values-grid p { color: var(--q-muted) !important; font-size: 12px; line-height: 1.65; transition: color .2s; }
.values-grid article:hover p { color: rgba(255,255,255,.84) !important; }

/* Services */
.services-page { padding: 120px 0 140px; }
.philosophy-band { background: var(--q-green) !important; color: white !important; padding: 70px 0; }
.philosophy-grid { display: grid; grid-template-columns: repeat(4, 1fr); }
.philosophy-grid p { margin: 0; padding: 22px 30px; font-family: var(--font-editorial); font-size: 19px; line-height: 1.4; border-left: 1px solid rgba(255,255,255,.2); }
.philosophy-grid p:first-child { border-left: 0; }
.service-statement { background: var(--q-lemon) !important; padding: 50px 0; color: #152315 !important; }
.service-statement p { margin: 0; max-width: 1150px; font-family: var(--font-editorial); font-size: clamp(22px, 2.6vw, 36px); line-height: 1.38; }
.library-visual { padding: 120px 0 30px; display: grid; grid-template-columns: 1fr 1fr; gap: 80px; align-items: center; }
.library-visual > div:first-child { position: relative; height: 560px; overflow: hidden; }
.library-visual img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(35%); }
.library-visual h2 { font-size: clamp(26px, 2.9vw, 40px); line-height: 1.2; letter-spacing: -.02em; margin: 0; }
.library-visual p:not(.eyebrow) { color: var(--q-muted) !important; line-height: 1.75; margin: 28px 0; }
.service-detail { padding: 120px 0 140px; display: grid; grid-template-columns: .38fr 1.62fr; gap: 80px; }
.service-intro-rail { position: sticky; top: 40px; align-self: start; }
.service-intro-rail > p:last-child { color: var(--q-muted) !important; line-height: 1.7; max-width: 300px; }
.capability-group { padding: 0 0 70px; margin-bottom: 70px; border-bottom: 1px solid var(--q-rule); }
.capability-group > div { display: grid; grid-template-columns: 55px 1fr; gap: 18px; margin-bottom: 38px; }
.capability-group > div span { color: var(--q-green) !important; font-family: ui-monospace, monospace; font-size: 10px; }
.capability-group h2 { margin: 0; font-size: clamp(22px, 2.2vw, 32px); line-height: 1.2; letter-spacing: -.016em; }
.capability-group ul { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: 1fr 1fr; }
.capability-group li { border-top: 1px solid var(--q-border); padding: 14px 10px 14px 22px; position: relative; color: var(--q-soft) !important; font-size: 13px; }
.capability-group li::before { content: ""; position: absolute; left: 2px; top: 21px; width: 5px; height: 5px; background: var(--q-lemon) !important; border-radius: 50%; }
.compliance-note { background: var(--q-tint) !important; padding: 58px 0; }
.compliance-note .shell { display: grid; grid-template-columns: .35fr 1.65fr; gap: 60px; }
.compliance-note span { color: var(--q-green) !important; letter-spacing: .04em; font-size: 13px; font-weight: 700; }
.compliance-note p { margin: 0; font-family: var(--font-editorial); font-size: 21px; line-height: 1.55; }
.bridges-band { background: var(--q-green) !important; color: white !important; padding: 105px 0; }
.bridges-band .shell { max-width: 1120px; margin-left: max(32px, calc((100vw - 1376px)/2)); }
.bridges-band h2 { font-size: clamp(34px, 4vw, 56px); line-height: 1.1; letter-spacing: -.026em; margin: 0; }
.bridges-band p:last-child { color: rgba(255,255,255,.72) !important; max-width: 720px; line-height: 1.7; margin: 30px 0 0; }
.other-services { padding: 120px 0; }
.other-services > .eyebrow { margin-bottom: 35px; }

/* Projects */
.portfolio-section { padding: 100px 0 140px; }
.project-filters { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 55px; }
.project-filters button { border: 1px solid var(--q-border) !important; background: transparent !important; padding: 11px 16px; letter-spacing: .01em; font-size: 13px; color: var(--q-soft) !important; transition: background .2s ease, color .2s ease, border-color .2s ease; }
.project-filters button.active { background: var(--q-green) !important; color: white !important; border-color: var(--q-green); }
.project-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; background: var(--q-border) !important; border: 1px solid var(--q-border) !important; }
.project-card { background: white !important; min-height: 410px; padding: 34px; display: flex; flex-direction: column; transition: background .25s, color .25s; }
.project-card:hover { background: var(--q-green-deep) !important; color: white !important; }
.project-card-top, .project-card-bottom { display: flex; justify-content: space-between; gap: 30px; letter-spacing: .01em; color: var(--q-soft) !important; font-size: 13px; transition: color .25s; }
.project-card:hover .project-card-top, .project-card:hover .project-card-bottom, .project-card:hover > p { color: rgba(255,255,255,.8) !important; }
.project-card h2 { max-width: 570px; margin: 55px 0 20px; font-size: clamp(20px, 2vw, 28px); line-height: 1.26; letter-spacing: -.014em; }
.project-card > p { color: var(--q-muted) !important; line-height: 1.65; font-size: 13px; }
.project-card-bottom { margin-top: auto; align-items: end; }
.project-card-bottom i { font-style: normal; font-size: 22px; color: inherit !important; }
.empty-state { background: white !important; grid-column: 1/-1; padding: 70px; }
.classification-guide { padding: 115px 0; background: #131714 !important; color: white !important; }
.classification-grid { display: grid; grid-template-columns: repeat(3, 1fr); margin-top: 45px; }
.classification-grid article { min-height: 280px; padding: 28px; border: 1px solid rgba(255,255,255,.15) !important; border-right: 0; }
.classification-grid article:last-child { border-right: 1px solid rgba(255,255,255,.15); }
.classification-grid span { color: var(--q-lemon) !important; font-family: ui-monospace, monospace; font-size: 9px; }
.classification-grid h2 { margin: 80px 0 18px; font-size: 21px; }
.classification-grid p { color: rgba(255,255,255,.78) !important; line-height: 1.7; font-size: 13px; }
.project-detail { padding: 120px 0; display: grid; grid-template-columns: .55fr 1.45fr; gap: 100px; }
.project-detail aside > div { padding: 18px 0; border-top: 1px solid var(--q-border); display: flex; flex-direction: column; gap: 7px; }
.project-detail aside span { color: var(--q-soft) !important; letter-spacing: .02em; font-size: 13px; }
.project-detail aside strong { font-size: 14px; line-height: 1.45; }
.project-story section { margin-bottom: 55px; }
.project-story h2 { font-size: clamp(21px, 2.1vw, 30px); line-height: 1.24; margin: 0 0 22px; }
.project-story p { color: var(--q-soft) !important; font-size: 17px; line-height: 1.75; }
.project-story ul { list-style: none; padding: 0; display: grid; grid-template-columns: 1fr 1fr; }
.project-story li { padding: 14px 10px; border-top: 1px solid var(--q-border); font-size: 13px; }
.project-integrity { background: var(--q-tint) !important; padding: 28px; margin: 60px 0 40px; }
.project-integrity span { color: var(--q-green) !important; letter-spacing: .03em; font-size: 13px; font-weight: 650; }
.project-integrity p { margin: 15px 0 0; font-size: 13px; }

/* Experts and insights */
.clusters-section { background: white !important; padding: 120px 0; }
.clusters-section .section-heading { margin-bottom: 65px; }
.cluster-grid { display: grid; grid-template-columns: repeat(3, 1fr); border-top: 1px solid var(--q-rule); }
.cluster-grid > div { display: grid; grid-template-columns: 36px 1fr; gap: 15px; padding: 19px 10px; border-bottom: 1px solid var(--q-border); }
.cluster-grid span { color: var(--q-green) !important; font-family: ui-monospace, monospace; font-size: 8px; }
.cluster-grid strong { font-size: 14px; font-weight: 600; }
.leadership-section { padding: 130px 0; }
.leader-profile { display: grid; grid-template-columns: .55fr 1.45fr; gap: 80px; margin-top: 70px; }
.leader-mark { min-height: 510px; background: linear-gradient(145deg, var(--q-green) 0 60%, var(--q-lemon) 60%) !important; display: grid; place-items: center; }
.leader-mark span { width: 175px; height: 175px; border-radius: 50%; border: 1px solid rgba(255,255,255,.45) !important; display: grid; place-items: center; color: white !important; font-family: var(--font-editorial); font-size: 42px; }
.leader-profile h2 { font-size: clamp(28px, 3vw, 42px); letter-spacing: -.022em; line-height: 1.16; margin: 0; }
.leader-profile > div:last-child > p:not(.eyebrow) { color: var(--q-soft) !important; font-size: 17px; line-height: 1.75; }
.tag-list { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 32px; }
.tag-list span { border: 1px solid var(--q-border) !important; padding: 9px 13px; font-size: 13px; letter-spacing: 0; color: var(--q-soft) !important; }
.profile-note { max-width: 850px; margin: 38px 0 0 auto; padding-left: 20px; border-left: 2px solid var(--q-green); color: var(--q-muted) !important; font-size: 12px; line-height: 1.65; }
.insights-intro { padding: 130px 0; }
.insights-intro .section-heading { margin-bottom: 65px; }
.topic-grid { display: grid; grid-template-columns: repeat(4, 1fr); border-top: 1px solid var(--q-rule); border-left: 1px solid var(--q-border); }
.topic-grid > div { min-height: 145px; border-right: 1px solid var(--q-border); border-bottom: 1px solid var(--q-border); padding: 20px; }
.topic-grid span { color: var(--q-green) !important; font-family: ui-monospace, monospace; font-size: 8px; }
.topic-grid h2 { font-size: 16px; margin: 55px 0 0; }
.content-types-section { background: var(--q-green-deep) !important; color: white !important; padding: 105px 0; }
.content-types-section .content-grid h2 { max-width: 550px; }
.content-type-list { display: grid; grid-template-columns: 1fr 1fr; border-top: 1px solid rgba(255,255,255,.2); }
.content-type-list span { border-bottom: 1px solid rgba(255,255,255,.17); padding: 16px 8px; font-size: 14px; }
.editorial-note { padding: 130px 0; max-width: 1100px; }
.editorial-note h2 { font-family: var(--font-editorial); font-weight: 400; font-size: clamp(25px, 2.7vw, 38px); line-height: 1.3; margin: 0; }
.editorial-note > p:not(.eyebrow) { color: var(--q-muted) !important; max-width: 750px; line-height: 1.75; margin: 28px 0; }

/* Global and impact */
.globe-mark { width: 210px; height: 210px; border: 1px solid rgba(255,255,255,.35) !important; border-radius: 50%; position: relative; overflow: hidden; }
.globe-mark::before, .globe-mark::after { content: ""; position: absolute; inset: 0 62px; border: 1px solid rgba(108,190,79,.65) !important; border-radius: 50%; }
.globe-mark::after { inset: 62px 0; }
.globe-mark span { position: absolute; left: 0; right: 0; top: 50%; border-top: 1px solid rgba(255,255,255,.35); }
.locations-section { padding: 115px 0 140px; }
.location-card { display: grid; grid-template-columns: 60px .8fr 1.2fr; gap: 35px; align-items: start; padding: 38px 8px; border-top: 1px solid var(--q-rule); }
.location-card:last-child { border-bottom: 1px solid var(--q-rule); }
.location-card > span { color: var(--q-green) !important; font-family: ui-monospace, monospace; font-size: 9px; }
.location-card h2 { margin: 0; font-size: clamp(24px, 2.6vw, 36px); letter-spacing: -.02em; line-height: 1.18; }
.location-card ul { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; }
.location-card li { border-top: 1px solid var(--q-border); padding: 13px 8px; font-size: 12px; color: var(--q-soft) !important; }
.uk-note { background: var(--q-green-deep) !important; color: white !important; padding: 100px 0; }
.uk-note .shell { max-width: 1050px; }
.uk-note h2 { font-size: clamp(28px, 3.2vw, 44px); margin: 0; letter-spacing: -.022em; line-height: 1.18; }
.uk-note p:last-child { color: rgba(255,255,255,.82) !important; line-height: 1.75; max-width: 760px; }
.impact-manifesto { background: var(--q-lemon) !important; padding: 70px 0; }
.impact-manifesto p { margin: 0; font-family: var(--font-editorial); font-size: clamp(23px, 2.8vw, 38px); line-height: 1.32; color: #10210f !important; }
.impact-focus { padding: 130px 0; display: grid; grid-template-columns: .75fr 1.25fr; gap: 90px; }
.impact-focus h2 { font-size: clamp(26px, 2.9vw, 40px); line-height: 1.18; letter-spacing: -.02em; margin: 0; }
.impact-focus > div:first-child > p:last-child { color: var(--q-muted) !important; line-height: 1.75; }
.focus-grid { display: grid; grid-template-columns: 1fr 1fr; border-top: 1px solid var(--q-rule); }
.focus-grid span { border-bottom: 1px solid var(--q-border); padding: 16px 8px; font-size: 14px; }
.focus-grid i { font-style: normal; color: var(--q-green) !important; font-family: ui-monospace, monospace; font-size: 8px; margin-right: 12px; }

/* Contact and forms */
.contact-section { padding: 125px 0; display: grid; grid-template-columns: .9fr 1.1fr; gap: 110px; }
.contact-lead h2 { font-size: clamp(28px, 3.1vw, 44px); letter-spacing: -.022em; line-height: 1.18; margin: 0 0 44px; }
.contact-actions { border-top: 1px solid var(--q-rule); }
.contact-actions a { display: grid; grid-template-columns: 38px 1fr auto; gap: 18px; padding: 21px 8px; border-bottom: 1px solid var(--q-border); align-items: center; transition: padding .2s, color .2s; }
.contact-actions a:hover { padding-inline: 16px; color: var(--q-green) !important; }
.contact-actions span { color: var(--q-green) !important; font-family: ui-monospace, monospace; font-size: 8px; }
.contact-actions strong { font-size: 15px; font-weight: 600; }
.contact-actions i { font-style: normal; }
.contact-details { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; background: var(--q-border) !important; border: 1px solid var(--q-border) !important; }
.contact-details section { background: white !important; padding: 30px; min-height: 245px; display: flex; flex-direction: column; align-items: flex-start; }
.contact-details address { font-style: normal; display: flex; flex-direction: column; gap: 7px; color: var(--q-soft) !important; line-height: 1.45; }
.contact-details address strong { color: var(--q-ink) !important; margin-bottom: 10px; }
.contact-details section > a, .contact-details section > span { display: block; margin: 0 0 8px; color: var(--q-soft) !important; font-size: 13px; }
.form-section { padding: 120px 0 140px; display: grid; grid-template-columns: .52fr 1.48fr; gap: 90px; }
.form-intro { position: sticky; top: 35px; align-self: start; }
.form-intro h2 { font-size: clamp(26px, 2.8vw, 40px); letter-spacing: -.02em; line-height: 1.18; margin: 0; }
.form-intro > p:last-child { color: var(--q-muted) !important; line-height: 1.7; }
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 26px 20px; }
.form-grid label { display: flex; flex-direction: column; gap: 9px; }
.form-grid label.wide { grid-column: 1/-1; }
.form-grid label > span { letter-spacing: .01em; font-size: 13px; font-weight: 650; color: var(--q-soft) !important; }
.form-grid input, .form-grid select, .form-grid textarea { width: 100%; border: 1px solid var(--q-rule) !important; border-radius: 0; background: white !important; color: var(--q-ink) !important; padding: 15px 14px; min-height: 52px; }
.form-grid textarea { resize: vertical; min-height: 135px; }
.form-grid input:focus, .form-grid select:focus, .form-grid textarea:focus { border-color: var(--q-green); outline: 2px solid rgba(0,98,43,.13); }
.form-grid input[type="file"] { padding: 11px; }
.form-submit { margin-top: 35px; display: flex; align-items: center; gap: 25px; }
.form-submit p { color: var(--q-muted) !important; font-size: 11px; line-height: 1.5; max-width: 410px; }
.book-process { background: var(--q-green-deep) !important; color: white !important; padding: 75px 0; }
.process-grid { display: grid; grid-template-columns: repeat(3, 1fr); }
.process-grid > div { padding: 25px 35px; border-left: 1px solid rgba(255,255,255,.18); }
.process-grid > div:first-child { border-left: 0; }
.process-grid span { color: var(--q-lemon) !important; font-family: ui-monospace, monospace; font-size: 9px; }
.process-grid h2 { font-size: 20px; margin: 45px 0 15px; }
.process-grid p { color: rgba(255,255,255,.79) !important; line-height: 1.7; font-size: 13px; }

/* CTA and footer */
.cta-band { background: var(--q-green) !important; color: white !important; padding: 95px 0; }
.cta-inner { display: flex; justify-content: space-between; align-items: end; gap: 70px; }
.cta-inner h2 { max-width: 860px; font-size: clamp(28px, 3.2vw, 46px); line-height: 1.16; letter-spacing: -.022em; margin: 0; }
.cta-actions { display: flex; gap: 10px; flex-wrap: wrap; justify-content: flex-end; min-width: 350px; }
.site-footer { background: #0b100d !important; color: white !important; padding: 90px 0 25px; }
.footer-top { display: grid; grid-template-columns: 1.15fr 1.2fr .7fr 1fr; gap: 70px; padding-bottom: 75px; }
.footer-brand > p { letter-spacing: .02em; font-size: 13px; color: var(--q-lemon) !important; margin: 20px 0 45px; }
.footer-brand .footer-statement { color: rgba(255,255,255,.66) !important; text-transform: none; letter-spacing: 0; font-family: var(--font-editorial); font-size: 22px; line-height: 1.3; max-width: 270px; }
.footer-services, .footer-links, .footer-contact { display: flex; flex-direction: column; align-items: flex-start; gap: 11px; }
.footer-services a, .footer-links a, .footer-contact a, .footer-contact span, .footer-group a { color: rgba(255,255,255,.76) !important; font-size: 12px; line-height: 1.55; transition: color .2s ease, transform .2s ease; }
.footer-services a:hover, .footer-links a:hover, .footer-contact a:hover, .footer-group a:hover { color: white !important; }
.footer-contact { font-style: normal; }
.footer-bottom { border-top: 1px solid rgba(255,255,255,.13); padding-top: 24px; display: flex; justify-content: space-between; gap: 25px; color: rgba(255,255,255,.7) !important; letter-spacing: 0; font-size: 13px; }
.not-found { min-height: 65vh; padding: 120px 0; }
.not-found h1 { max-width: 850px; font-size: clamp(30px, 3.4vw, 48px); line-height: 1.16; letter-spacing: -.022em; margin: 0; }
.not-found > p:not(.eyebrow) { color: var(--q-muted) !important; }
.not-found > div { display: flex; gap: 25px; align-items: center; margin-top: 35px; }


/* ==========================================================================
   Approved corrections, 9 September 2026
   Contrast, brand lockup, spacing, motion and the Qriocity Group footer.
   ========================================================================== */

/* --- Contrast -------------------------------------------------------------
   The eyebrow label has a green variant for light grounds. On a dark ground
   that green sat at roughly 1.6:1 against the background, which is the
   "black text on black" the client reported. Every dark surface now takes
   the lemon instead.                                                        */
.section-heading.inverse .eyebrow.dark,
.heritage-section .eyebrow.dark,
.classification-guide .eyebrow.dark,
.consortium-section .eyebrow.dark,
.content-types-section .eyebrow.dark,
.vision-mission .eyebrow.dark,
.uk-note .eyebrow.dark,
.bridges-band .eyebrow.dark,
.book-process .eyebrow.dark,
.hero .eyebrow.dark,
.page-hero .eyebrow.dark,
.cta-band .eyebrow.dark { color: var(--q-lemon) !important; }

/* Vision and Mission: white body copy on the deep green ground, stated
   explicitly so no parent theme or plugin can darken it. */
.vision-mission,
.vision-mission h2,
.vision-mission p:not(.eyebrow),
.vision-grid article > h2 { color: #fff !important; }
.vision-mission .eyebrow { color: var(--q-lemon) !important; }

/* Dark text on the lemon bands, held above 7:1. */
.service-statement { color: #10210f !important; }
.service-statement p, .impact-manifesto p { color: #10210f !important; }

/* --- Brand lockup ---------------------------------------------------------
   The wordmark is retired. The mark carries an italic subline instead.      */
.brand { display: inline-flex; align-items: center; gap: 13px; white-space: nowrap; letter-spacing: 0; font-size: inherit; font-weight: 400; }
.brand img { width: 38px; height: 38px; object-fit: contain; flex: none; transition: transform .3s cubic-bezier(.2,.7,.3,1); }
.brand:hover img { transform: rotate(-8deg) scale(1.06); }
.brand-line { display: block; font-family: var(--font-editorial); font-style: italic; font-weight: 400; font-size: 14px; line-height: 1.2; letter-spacing: .005em; color: rgba(255,255,255,.88) !important; }
.site-footer .brand img { width: 44px; height: 44px; }
.site-footer .brand-line { font-size: 16px; }

/* --- Heritage timeline ----------------------------------------------------
   Six columns crushed the entries. Three gives each entry room, and the
   dates now read in order.                                                  */
.timeline { grid-template-columns: repeat(3, 1fr); border-top: 1px solid rgba(255,255,255,.18); }
.timeline-item { padding: 32px 34px 36px 0; border-right: 1px solid rgba(255,255,255,.13); border-bottom: 1px solid rgba(255,255,255,.13); }
.timeline-item:nth-child(3n) { border-right: 0; }
.timeline-item:nth-last-child(-n+3) { border-bottom: 0; }
.timeline-item strong { display: block; color: var(--q-lemon) !important; font-family: var(--font-editorial); font-size: 26px; font-weight: 400; letter-spacing: .01em; }

/* --- Spacing --------------------------------------------------------------
   A single rhythm token, so section padding scales with the viewport
   instead of stepping between three fixed values.                           */
:root { --q-section: clamp(64px, 7.5vw, 130px); --q-gutter: clamp(20px, 4vw, 32px); }
.shell { width: min(100% - (var(--q-gutter) * 2), 1440px); }
.services-section { padding: var(--q-section) 0; }
.project-preview, .why-section, .heritage-section, .global-preview,
.about-narrative, .consortium-intro, .values-section, .vision-mission,
.services-page, .portfolio-section, .classification-guide, .clusters-section,
.leadership-section, .insights-intro, .content-types-section, .editorial-note,
.locations-section, .uk-note, .impact-focus, .contact-section, .form-section,
.service-detail, .project-detail, .other-services, .consortium-section,
.intro-section { padding-top: var(--q-section); padding-bottom: var(--q-section); }
.cta-band { padding: clamp(56px, 6vw, 95px) 0; }
.bridges-band { padding: clamp(64px, 6.5vw, 105px) 0; }
.book-process, .philosophy-band { padding: clamp(48px, 5vw, 75px) 0; }
.service-statement, .impact-manifesto { padding: clamp(40px, 4.5vw, 70px) 0; }
.site-footer { padding: clamp(60px, 6vw, 90px) 0 25px; }
.library-visual { padding-top: var(--q-section); padding-bottom: 30px; }

/* --- Footer: five columns, including the Qriocity Group menu -------------- */
.footer-top { grid-template-columns: 1.2fr 1.15fr .9fr 1fr; gap: 56px 44px; }
.footer-group { display: flex; flex-direction: column; align-items: flex-start; gap: 11px; }

/* --- Hover ----------------------------------------------------------------
   Restrained, consistent, and never moving text the reader is on.           */
.service-card { transition: background .28s cubic-bezier(.2,.7,.3,1), color .28s cubic-bezier(.2,.7,.3,1); }
.service-card .service-arrow { transition: transform .28s cubic-bezier(.2,.7,.3,1); }
.service-card:hover .service-arrow, .service-card:focus-visible .service-arrow { transform: translate(4px, -4px); }
.home-project i, .project-card-bottom i, .contact-actions i { transition: transform .25s cubic-bezier(.2,.7,.3,1); }
.home-project:hover i, .contact-actions a:hover i { transform: translate(4px, -4px); }
.project-card { transition: background .28s ease, color .28s ease, transform .28s cubic-bezier(.2,.7,.3,1); }
.project-card:hover { transform: translateY(-3px); }
.project-card:hover .project-card-bottom i { transform: translate(4px, -4px); }
.mega-links a:hover { padding-left: 18px; }
.values-grid article { transition: background .25s ease, color .25s ease, transform .25s cubic-bezier(.2,.7,.3,1); }
.values-grid article:hover { transform: translateY(-3px); }
.location-card, .location-list > div { transition: background .25s ease, padding .25s ease; }
.location-list > div:hover { background: var(--q-sunk) !important; padding-inline: 16px; }
.project-filters button:hover { border-color: var(--q-green); color: var(--q-green) !important; }
.project-filters button.active:hover { color: #fff !important; }
.text-link { transition: gap .22s cubic-bezier(.2,.7,.3,1), color .2s ease; }
.text-link:hover { gap: 26px; }
.desktop-nav > a, .nav-services > a { position: relative; }
.desktop-nav > a::after, .nav-services > a::after { content: ""; position: absolute; left: 0; right: 0; bottom: -6px; height: 1px; background: var(--q-lemon) !important; transform: scaleX(0); transform-origin: left; transition: transform .25s cubic-bezier(.2,.7,.3,1); }
.desktop-nav > a:hover::after, .nav-services:hover > a::after { transform: scaleX(1); }
.footer-services a:hover, .footer-links a:hover, .footer-group a:hover { transform: translateX(3px); }
.knowledge-image img, .library-visual img { transition: transform .6s cubic-bezier(.2,.7,.3,1), filter .6s ease; }
.knowledge-feature:hover .knowledge-image img, .library-visual:hover img { transform: scale(1.03); }

/* --- Load and reveal ------------------------------------------------------
   Sections rise in once, on first sight. Images resolve rather than snap.   */
.qr-reveal { opacity: 0; transform: translateY(22px); transition: opacity .7s cubic-bezier(.2,.7,.3,1), transform .7s cubic-bezier(.2,.7,.3,1); will-change: opacity, transform; }
.qr-reveal.is-visible { opacity: 1; transform: none; }
.no-js .qr-reveal { opacity: 1; transform: none; }

img[data-qr-fade] { opacity: 0; transition: opacity .6s ease; }
img[data-qr-fade].is-loaded { opacity: 1; }

.qr-progress { position: fixed; inset: 0 auto auto 0; height: 2px; width: 0; background: var(--q-lemon) !important; z-index: 200; transition: width .25s ease, opacity .4s ease .2s; pointer-events: none; }
.qr-progress.is-done { width: 100%; opacity: 0; }

@keyframes qr-skeleton { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }
.qr-skeleton { background: linear-gradient(90deg, var(--q-sunk) 25%, #e4e8e1 37%, var(--q-sunk) 63%) !important; background-size: 200% 100%; animation: qr-skeleton 1.4s ease-in-out infinite; }


/* --- Contrast on the brand green ------------------------------------------
   Anywhere a lemon label sits on --q-green rather than on a near-black
   ground, it takes the lighter tint so small text still clears AA.          */
.cta-band .eyebrow,
.bridges-band .eyebrow,
.philosophy-band .eyebrow,
.signal-core strong,
.service-card:hover .service-number,
.service-card:focus-visible .service-number,
.values-grid article:hover > span { color: var(--q-lemon-on-green) !important; }

/* The initials circle straddles a green-to-lemon gradient, so no single text
   colour clears both halves. Giving the circle its own solid ground fixes it
   without changing the mark's composition. */
.leader-mark span { color: #fff !important; background: var(--q-green-deep) !important; border-color: rgba(255,255,255,.55); }

/* Decorative numerals are still text, so they clear the large-text ratio. */
.oversized-index { color: #889084 !important; }
.feature-number { color: rgba(255,255,255,.34) !important; }

@media (max-width: 1180px) {
  .desktop-nav { gap: 14px; }
  .desktop-nav > a, .nav-services > a { font-size: 11px; }
  .header-cta { display: none; }
  .hero h1 { font-size: clamp(56px, 7.4vw, 88px); }
  .why-grid { grid-template-columns: repeat(2, 1fr); }
  .timeline { grid-template-columns: repeat(3, 1fr); }
  .timeline-item { min-height: 200px; border-bottom: 1px solid rgba(255,255,255,.13); }
  .values-grid { grid-template-columns: repeat(3, 1fr); }
  .values-grid article:nth-child(n+4) { border-top: 0; }
  .footer-top { grid-template-columns: 1fr 1fr 1fr; }
  .footer-brand { grid-column: 1/-1; }
  .footer-brand .footer-statement { max-width: none; }
}

@media (max-width: 900px) {
  .shell { width: min(100% - 40px, 1440px); }
  .site-header { height: 76px; }
  .header-inner { gap: 20px; }
  .desktop-nav { display: none; }
  .menu-toggle { display: block; }
  .mobile-menu { position: fixed; inset: 76px 0 0; z-index: 55; background: #0d120f !important; color: white !important; padding: 28px 20px; overflow-y: auto; transform: translateX(100%); transition: transform .25s ease; display: flex; flex-direction: column; }
  .mobile-menu.is-open { transform: translateX(0); }
  .mobile-menu nav { display: flex; flex-direction: column; border-top: 1px solid rgba(255,255,255,.15); }
  .mobile-menu nav a { padding: 14px 4px; border-bottom: 1px solid rgba(255,255,255,.14); font-size: 16px; }
  .mobile-menu nav a.mobile-service { padding-left: 22px; color: rgba(255,255,255,.78) !important; font-size: 12px; text-transform: none; }
  .mobile-service span { color: var(--q-lemon) !important; margin-right: 12px; }
  .mobile-menu > .button { margin-top: 25px; }
  .home-hero { min-height: auto; }
  .hero-grid { min-height: auto; grid-template-columns: 1fr; }
  .hero-copy { padding: 85px 0 70px; }
  .hero-signal { display: none; }
  .hero-foot { height: 56px; }
  .intro-section { grid-template-columns: 80px 1fr; gap: 35px; padding: 100px 0; }
  .intro-copy { grid-column: 2; }
  .service-grid { grid-template-columns: 1fr; }
  .service-card:nth-child(odd) { border-right: 0; }
  .knowledge-feature, .content-grid, .consortium-grid, .global-preview, .library-visual, .service-detail, .project-detail, .impact-focus, .contact-section, .form-section { grid-template-columns: 1fr; }
  .knowledge-image { min-height: 500px; }
  .home-project { grid-template-columns: 90px 1fr auto; }
  .home-project p { display: none; }
  .consortium-grid { gap: 65px; }
  .global-preview { gap: 65px; }
  .page-hero-grid { grid-template-columns: 1fr; gap: 50px; min-height: 600px; }
  .page-hero-aside { max-width: 580px; }
  .values-grid { grid-template-columns: 1fr 1fr; }
  .philosophy-grid { grid-template-columns: 1fr 1fr; }
  .philosophy-grid p:nth-child(3) { border-left: 0; border-top: 1px solid rgba(255,255,255,.2); }
  .philosophy-grid p:nth-child(4) { border-top: 1px solid rgba(255,255,255,.2); }
  .library-visual { gap: 50px; }
  .service-intro-rail, .form-intro { position: static; }
  .project-detail, .form-section { gap: 55px; }
  .cluster-grid { grid-template-columns: 1fr 1fr; }
  .leader-profile { grid-template-columns: 1fr; }
  .leader-mark { min-height: 390px; }
  .topic-grid { grid-template-columns: repeat(3, 1fr); }
  .location-card { grid-template-columns: 45px 1fr; }
  .location-card ul { grid-column: 2; }
  .cta-inner { align-items: flex-start; flex-direction: column; }
  .cta-actions { justify-content: flex-start; min-width: 0; }
}

@media (max-width: 600px) {
  .shell { width: min(100% - 32px, 1440px); }
  .brand { font-size: 13px; }
  .hero { background: linear-gradient(160deg, #0e1210 0 58%, #07321d 100%) !important; }
  .hero-copy { padding: 68px 0 55px; }
  .hero h1 { font-size: clamp(43px, 14.7vw, 64px); }
  .hero-intro { font-size: 16px; margin-top: 28px; }
  .hero-support { display: none; }
  .hero-actions { flex-direction: column; align-items: stretch; }
  .hero-foot span:nth-child(2), .hero-foot a { display: none; }
  .intro-section { grid-template-columns: 1fr; gap: 18px; padding: 85px 0; }
  .intro-copy { grid-column: 1; }
  .oversized-index { font-size: 48px; }
  .services-section, .project-preview, .why-section, .heritage-section, .about-narrative, .values-section, .services-page, .portfolio-section, .clusters-section, .leadership-section, .insights-intro, .locations-section, .impact-focus, .contact-section, .form-section { padding-top: 85px; padding-bottom: 90px; }
  .section-heading h2 { font-size: 40px; }
  .service-card { min-height: 195px; padding: 25px 15px; grid-template-columns: 34px 1fr auto; }
  .service-card h3 { font-size: 21px; }
  .knowledge-feature { min-height: auto; }
  .knowledge-image { min-height: 390px; }
  .knowledge-copy { padding: 65px 20px; }
  .knowledge-actions { align-items: stretch; flex-direction: column; }
  .home-project { grid-template-columns: 55px 1fr auto; gap: 12px; min-height: 125px; }
  .home-project h3 { font-size: 16px; }
  .expertise-cloud, .focus-grid, .content-type-list { grid-template-columns: 1fr; }
  .expertise-cloud span:nth-last-child(-n+2) { border-bottom: 0; }
  .expertise-cloud span:last-child { border-bottom: 1px solid rgba(255,255,255,.17); }
  .why-grid, .timeline, .values-grid, .vision-grid, .project-grid, .classification-grid, .cluster-grid, .topic-grid, .process-grid, .contact-details, .form-grid { grid-template-columns: 1fr; }
  .timeline-item { min-height: 0; border-right: 0; }
  .global-preview { padding: 90px 0; }
  .location-list > div { grid-template-columns: 35px 1fr; }
  .location-list p { grid-column: 2; margin: 0; }
  .page-hero, .page-hero-grid { min-height: 530px; }
  .page-hero-grid { padding-top: 70px; padding-bottom: 65px; gap: 40px; }
  .page-hero h1 { font-size: 43px; }
  .page-hero-intro { font-size: 15px; }
  .page-hero-motif { opacity: .45; }
  .content-grid { gap: 45px; }
  .prose-large p { font-size: 21px; }
  .vision-grid article + article { border-left: 0; border-top: 1px solid rgba(255,255,255,.2); padding-left: 0; margin-top: 45px; padding-top: 45px; }
  .values-grid article { min-height: 250px; border-top: 0; }
  .values-grid article:first-child { border-top: 1px solid var(--q-border); }
  .philosophy-grid { grid-template-columns: 1fr; }
  .philosophy-grid p { border-left: 0; border-top: 1px solid rgba(255,255,255,.2); }
  .library-visual > div:first-child { height: 390px; }
  .service-detail { gap: 50px; }
  .capability-group ul, .project-story ul { grid-template-columns: 1fr; }
  .capability-group { padding-bottom: 45px; margin-bottom: 50px; }
  .compliance-note .shell { grid-template-columns: 1fr; gap: 20px; }
  .project-card { min-height: 350px; padding: 25px; }
  .classification-grid article { border-right: 1px solid rgba(255,255,255,.15); border-bottom: 0; }
  .classification-grid article:last-child { border-bottom: 1px solid rgba(255,255,255,.15); }
  .leader-mark { min-height: 310px; }
  .location-card { grid-template-columns: 34px 1fr; gap: 15px; }
  .location-card ul { grid-template-columns: 1fr; }
  .impact-manifesto p { font-size: 31px; margin-bottom: 11px; }
  .process-grid > div { border-left: 0; border-top: 1px solid rgba(255,255,255,.18); padding-inline: 0; }
  .process-grid > div:first-child { border-top: 0; }
  .contact-section { gap: 60px; }
  .form-grid label.wide { grid-column: auto; }
  .form-submit { align-items: flex-start; flex-direction: column; }
  .cta-band { padding: 75px 0; }
  .cta-inner h2 { font-size: 42px; }
  .cta-actions { flex-direction: column; width: 100%; }
  .footer-top { grid-template-columns: 1fr 1fr; gap: 55px 30px; }
  .footer-brand { grid-column: 1/-1; }
  .footer-services { grid-column: 1/-1; }
  .footer-bottom { flex-direction: column; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; }
}


html { scroll-behavior: smooth; }
[hidden] { display: none !important; }


/* ==========================================================================
   Approved corrections: responsive behaviour
   ========================================================================== */

@media (max-width: 1180px) {
  .footer-top { grid-template-columns: 1fr 1fr 1fr; }
  .footer-brand { grid-column: 1 / -1; }
  .timeline { grid-template-columns: repeat(2, 1fr); }
  .timeline-item:nth-child(3n) { border-right: 1px solid rgba(255,255,255,.13); }
  .timeline-item:nth-child(2n) { border-right: 0; }
  .timeline-item:nth-last-child(-n+3) { border-bottom: 1px solid rgba(255,255,255,.13); }
  .timeline-item:nth-last-child(-n+2) { border-bottom: 0; }
}

@media (max-width: 900px) {
  .page-hero-grid { padding-top: 96px; padding-bottom: 72px; }
  .knowledge-copy { padding: clamp(48px, 7vw, 90px) var(--q-gutter); }
  .footer-top { grid-template-columns: 1fr 1fr; }
  .footer-services { grid-column: 1 / -1; }
}

@media (max-width: 600px) {
  /* The blanket padding token already handles the section rhythm, so the
     original per-section overrides are no longer needed. */
  .services-section, .project-preview, .why-section, .heritage-section,
  .about-narrative, .values-section, .services-page, .portfolio-section,
  .clusters-section, .leadership-section, .insights-intro, .locations-section,
  .impact-focus, .contact-section, .form-section { padding-top: var(--q-section); padding-bottom: var(--q-section); }

  .section-heading h2 { font-size: clamp(24px, 6.6vw, 30px); }
  .hero h1 { font-size: clamp(30px, 8.4vw, 40px); }
  .page-hero h1 { font-size: clamp(26px, 7.4vw, 34px); }
  .cta-inner h2 { font-size: clamp(24px, 6.6vw, 30px); }
  .impact-manifesto p { font-size: clamp(21px, 6vw, 27px); margin-bottom: 10px; }
  .bridges-band h2 { font-size: clamp(28px, 8vw, 38px); }
  .contact-lead h2, .form-intro h2, .impact-focus h2, .uk-note h2,
  .leader-profile h2, .content-grid h2, .global-lead h2,
  .consortium-grid h2 { font-size: clamp(24px, 6.6vw, 30px); }

  .timeline { grid-template-columns: 1fr; }
  .timeline-item { padding: 26px 0 28px; border-right: 0; border-bottom: 1px solid rgba(255,255,255,.13); }
  .timeline-item:last-child { border-bottom: 0; }

  .footer-top { grid-template-columns: 1fr; gap: 44px; }
  .footer-brand, .footer-services, .footer-group { grid-column: auto; }
  .footer-bottom { flex-direction: column; gap: 10px; }

  .hero-actions .button, .knowledge-actions .button, .cta-actions .button { width: 100%; }
  .project-filters { gap: 6px; }
  .project-filters button { padding: 10px 12px; }
  .brand img { width: 32px; height: 32px; }
  .brand-line { font-size: 12px; }
  .site-footer .brand img { width: 38px; height: 38px; }
  .site-footer .brand-line { font-size: 14px; }
}

/* Touch targets. Pointer-coarse only, so the desktop composition is untouched. */
@media (pointer: coarse), (max-width: 900px) {
  .text-link { min-height: 34px; align-items: center; }
  .footer-services a, .footer-links a, .footer-group a,
  .footer-contact a, .footer-contact span,
  .contact-details section > a, .contact-details section > span,
  .hero-foot a, .footer-bottom a { min-height: 32px; display: flex; align-items: center; }
  .footer-contact span, .contact-details section > span { display: block; min-height: 26px; }
  .form-grid input[type="file"] { min-height: 52px; padding: 14px 12px; }
  .project-filters button { min-height: 40px; }
}

/* Very narrow phones: nothing should ever overflow the viewport. */
@media (max-width: 380px) {
  :root { --q-gutter: 16px; }
  .hero h1 { font-size: 27px; }
  .page-hero h1 { font-size: 24px; }
}

@media (prefers-reduced-motion: reduce) {
  .qr-reveal { opacity: 1 !important; transform: none !important; }
  img[data-qr-fade] { opacity: 1 !important; }
  .qr-progress { display: none; }
  .qr-skeleton { animation: none; }
}
