/* ==========================================================================
   Quantum Project Solutions - design system
   The Levelling Staff: a quantity surveyor measures before anyone spends, so
   the site reads like a measured run off a surveyor's staff.

   Source of truth: src/theme/assets/css/quantum.css (copied into the theme by
   build.cjs). Page-specific rules live in src/theme/assets/css/pages/*.css and
   are appended after this file in the same order every build.

   Rules of the world, kept on purpose:
   - Paper ground, navy ink, royal-blue planes that own whole regions, gold
     only as the reading mark (never text on light ground: it fails contrast).
   - No cards, no outlines around content, no shadows, no gradients. Rank comes
     from size and weight. Dividers are tick rules.
   - One family, Archivo: width axis for the readings (condensed, tabular),
     normal width for reading text.
   ========================================================================== */

@font-face{
  font-family:"Archivo";
  src:url("../fonts/archivo-latin.woff2") format("woff2");
  font-weight:100 900;font-stretch:62% 125%;font-style:normal;font-display:swap;
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:"Archivo";
  src:url("../fonts/archivo-latin-ext.woff2") format("woff2");
  font-weight:100 900;font-stretch:62% 125%;font-style:normal;font-display:swap;
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

:root{
  /* Colour */
  --paper:#F4F5F8;
  --paper-2:#EAEDF3;
  --white:#FFFFFF;
  --ink:#0E1638;
  --ink-2:#4A5272;
  --ink-3:#5E6684;
  --blue:#2A3B97;
  --blue-press:#22307D;
  --navy:#0E1638;
  --on-blue:#FFFFFF;
  --on-blue-2:#C9D0F0;
  --gold:#D2AE07;
  --gold-text:#F5D44A;
  --gold-ink:#7A6300;
  --rule:rgba(14,22,56,.14);
  --rule-strong:rgba(14,22,56,.34);
  --rule-on-blue:rgba(255,255,255,.22);
  --error:#B3261E;
  --ok:#1E6B3A;

  /* Type */
  --sans:"Archivo","Segoe UI",system-ui,-apple-system,sans-serif;
  --fs-display:clamp(2.5rem,5vw - .5rem,4rem);
  --fs-h2:clamp(2rem,1.45rem + 2vw,3.25rem);
  --fs-h3:clamp(1.25rem,1.12rem + .5vw,1.5rem);
  --fs-lead:clamp(1.125rem,1.04rem + .35vw,1.3125rem);
  --fs-body:1.0625rem;
  --fs-small:.9375rem;
  --fs-label:.8125rem;
  --fs-reading:clamp(4rem,2.6rem + 5.4vw,7.5rem);

  /* Space: one rhythm, 8px base */
  --s1:.5rem;--s2:1rem;--s3:1.5rem;--s4:2rem;--s5:3rem;--s6:4rem;--s7:6rem;--s8:8rem;
  --section:clamp(4.5rem,3rem + 6vw,9rem);
  --gutter:clamp(1.25rem,.4rem + 4vw,6rem);
  --max:1320px;

  /* The staff */
  --staff-w:28px;
  --staff-u:8px;          /* one centimetre on the staff */

  /* Chrome */
  --head-h:76px;
  --ease-out:cubic-bezier(.16,1,.3,1);
  --ease-in-out:cubic-bezier(.65,0,.35,1);
}
@media (max-width:900px){
  :root{--staff-w:10px;--staff-u:5px;--head-h:64px}
}

/* --------------------------------------------------------------------------
   Base
   -------------------------------------------------------------------------- */
html{scroll-behavior:smooth;scroll-padding-top:calc(var(--head-h) + 24px);-webkit-text-size-adjust:100%}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

body.qps-body{
  margin:0;
  position:relative;
  background:var(--paper);
  color:var(--ink);
  font-family:var(--sans);
  font-size:var(--fs-body);
  line-height:1.6;
  font-weight:400;
  font-stretch:100%;
  font-optical-sizing:auto;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  text-rendering:optimizeLegibility;
  overflow-x:clip;
  caret-color:var(--blue);
  scrollbar-color:var(--blue) var(--paper-2);
  font-feature-settings:"ss01" 0;
}
body.qps-body ::selection{background:var(--blue);color:var(--white)}
body.qps-body ::-webkit-scrollbar{width:12px;height:12px}
body.qps-body ::-webkit-scrollbar-track{background:var(--paper-2)}
body.qps-body ::-webkit-scrollbar-thumb{background:var(--blue);border:3px solid var(--paper-2)}

/* Divi: get out of the way. The theme renders the header and footer. */
body.qps-chrome #main-header,
body.qps-chrome #top-header,
body.qps-chrome #main-footer,
body.qps-chrome .et-l--header,
body.qps-chrome .et-l--footer{display:none !important}
body.qps-chrome #page-container{padding-top:var(--head-h) !important;margin-top:0 !important;overflow:visible !important}
body.qps-body #page-container,
body.qps-body #et-main-area,
body.qps-body #main-content{background:transparent}
body.qps-body #main-content .container:before{display:none}
body.qps-body .et_pb_section{background-color:transparent;padding:0}
body.qps-body .et_pb_row{width:100%;max-width:none;padding:0}
body.qps-body .et_pb_code_inner > *:first-child{margin-top:0}
body.qps-body .entry-content p:empty{display:none}

.qps *,.qps *::before,.qps *::after{box-sizing:border-box}
:where(.qps) img{display:block;max-width:100%;height:auto}
:where(.qps) figure{margin:0}
:where(.qps) p{margin:0 0 1em;padding:0}
:where(.qps) p:last-child{margin-bottom:0}
.qps ul,.qps ol,.qps dl{margin:0;padding:0;list-style:none !important}
.qps li{list-style:none !important;padding:0}
.qps li::marker{content:none}
.qps dd{margin:0}
.qps h1,.qps h2,.qps h3,.qps h4{margin:0;padding:0;color:inherit;font-family:var(--sans);font-stretch:100%;text-wrap:balance}
.qps a{color:inherit}
.qps button{font:inherit;color:inherit}
.qps :focus-visible{outline:2px solid var(--blue);outline-offset:3px}
.qps-plane :focus-visible,.qps-foot :focus-visible{outline-color:var(--gold-text)}
.qps-sr{position:absolute !important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.qps-skip{position:fixed;left:var(--s2);top:var(--s2);z-index:1000;transform:translateY(-200%);background:var(--ink);color:var(--white) !important;padding:.75rem 1rem;font-weight:600;text-decoration:none}
.qps-skip:focus{transform:none}

/* --------------------------------------------------------------------------
   Layout
   -------------------------------------------------------------------------- */
.qps-sec{position:relative;padding-block:var(--section)}
.qps-sec--tight{padding-block:calc(var(--section) * .66)}
.qps-wrap{width:100%;max-width:calc(var(--max) + var(--gutter) * 2);margin-inline:auto;padding-inline:calc(var(--gutter) + var(--staff-w) * .5)}
.qps-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:clamp(1rem,.5rem + 1.6vw,2rem)}
.qps-plane{background:var(--blue);color:var(--on-blue)}
.qps-plane--navy{background:var(--navy)}
.qps-plane .qps-lead,.qps-plane .qps-muted{color:var(--on-blue-2)}

/* Section head: a heading and at most one short lead. No eyebrow labels. */
.qps-head{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:inherit;margin-bottom:var(--s6);align-items:end;gap:var(--s3) clamp(1rem,.5rem + 1.6vw,2rem)}
.qps-head > .qps-h2{grid-column:1 / span 7}
.qps-head > .qps-lead{grid-column:8 / span 5;margin:0}
.qps-head--stack > .qps-h2,.qps-head--stack > .qps-lead{grid-column:1 / span 8}
@media (max-width:900px){
  .qps-head > .qps-h2,.qps-head > .qps-lead{grid-column:1 / -1}
  .qps-head{margin-bottom:var(--s5)}
}

/* --------------------------------------------------------------------------
   Type
   -------------------------------------------------------------------------- */
.qps-display{font-size:var(--fs-display);line-height:1.02;letter-spacing:-.035em;font-weight:620}
.qps-h1{font-size:clamp(2.5rem,1.6rem + 3vw,4rem);line-height:1.02;letter-spacing:-.035em;font-weight:620}
.qps-nb{white-space:nowrap}
.qps-h2{font-size:var(--fs-h2);line-height:1.05;letter-spacing:-.03em;font-weight:600}
.qps-h3{font-size:var(--fs-h3);line-height:1.2;letter-spacing:-.015em;font-weight:600}
.qps-lead{font-size:var(--fs-lead);line-height:1.5;color:var(--ink-2);max-width:40ch;text-wrap:pretty}
.qps-prose{max-width:66ch;text-wrap:pretty}
.qps-prose p + p{margin-top:0}
.qps-muted{color:var(--ink-2)}
.qps-small{font-size:var(--fs-small)}
.qps-num{font-stretch:68%;font-variant-numeric:tabular-nums lining-nums;font-weight:700;letter-spacing:-.01em}

/* Links in running text: navy with a gold measuring tick under them. */
.qps .qps-link{color:var(--ink);text-decoration:underline;text-decoration-color:var(--gold);text-decoration-thickness:2px;text-underline-offset:.28em;font-weight:560;transition:text-decoration-color .2s var(--ease-out),color .2s var(--ease-out)}
.qps .qps-link:hover{text-decoration-color:var(--blue);color:var(--blue)}
.qps.qps-plane .qps-link,.qps .qps-plane .qps-link{color:var(--white);text-decoration-color:var(--gold)}
.qps.qps-plane .qps-link:hover,.qps .qps-plane .qps-link:hover{color:var(--gold-text);text-decoration-color:var(--gold-text)}

/* Arrow link: a reading you can follow. */
.qps-go{display:inline-flex;align-items:center;gap:.6em;font-weight:600;text-decoration:none;color:var(--ink);min-height:44px;font-size:var(--fs-body)}
.qps-go svg{width:20px;height:20px;transition:transform .35s var(--ease-out)}
.qps-go span{background:linear-gradient(var(--gold),var(--gold)) 0 100% / 100% 2px no-repeat;padding-bottom:2px;transition:background-size .35s var(--ease-out)}
.qps-go:hover svg{transform:translateX(4px)}
.qps-go:hover span{background-size:100% 2px;color:var(--blue)}
.qps-plane .qps-go{color:var(--white)}
.qps-plane .qps-go:hover span{color:var(--gold-text)}

/* --------------------------------------------------------------------------
   Buttons: flat planes, square, press on pointer-down
   -------------------------------------------------------------------------- */
.qps-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.6em;
  min-height:52px;padding:.85rem 1.5rem;border:0;border-radius:0;
  background:var(--blue);color:var(--white) !important;text-decoration:none;
  font-weight:600;font-size:var(--fs-body);letter-spacing:-.005em;line-height:1.2;cursor:pointer;
  transition:background-color .2s var(--ease-out),transform .12s var(--ease-out);
  -webkit-tap-highlight-color:transparent;touch-action:manipulation;
}
.qps-btn svg{width:20px;height:20px;flex:none}
.qps-btn:hover{background:var(--blue-press)}
.qps-btn:active{transform:scale(.97)}
.qps-btn--paper{background:var(--paper);color:var(--ink) !important}
.qps-btn--paper:hover{background:var(--white)}
.qps-btn--paper svg{color:var(--blue)}
.qps-btn--line{background:transparent;color:var(--ink) !important;box-shadow:inset 0 0 0 1.5px var(--ink)}
.qps-btn--line:hover{background:var(--ink);color:var(--white) !important}
.qps-btn[disabled],.qps-btn[aria-disabled="true"]{opacity:.5;cursor:not-allowed;transform:none}
.qps-btn.is-busy{pointer-events:none}
.qps-btn.is-busy::after{content:"";width:16px;height:16px;border-radius:50%;border:2px solid currentColor;border-right-color:transparent;animation:qps-spin .7s linear infinite}
@keyframes qps-spin{to{transform:rotate(360deg)}}
.qps-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2) var(--s4)}

/* --------------------------------------------------------------------------
   The staff: page-length levelling staff down the left edge, plus a fixed
   gold crosshair that reads the page (quantum.js sets the reading).
   -------------------------------------------------------------------------- */
.qps-staff{
  position:absolute;z-index:40;left:0;top:0;bottom:0;width:var(--staff-w);
  pointer-events:none;
  /* A light graduated rule (simplified from the solid E-pattern at the
     client's request, Oct 2026): a hairline at the edge, a tick every
     centimetre, longer at five, longest and blue at each decimetre, where
     quantum.js prints the numeral. */
  background-image:
    linear-gradient(to bottom,var(--blue) 0 2px,transparent 2px),
    linear-gradient(to bottom,var(--ink-3) 0 1px,transparent 1px),
    linear-gradient(to bottom,var(--rule-strong) 0 1px,transparent 1px),
    linear-gradient(var(--rule-strong),var(--rule-strong));
  background-size:
    14px calc(var(--staff-u) * 10),
    9px calc(var(--staff-u) * 5),
    5px var(--staff-u),
    1px 100%;
  background-position:right top;
  background-repeat:repeat-y,repeat-y,repeat-y,no-repeat;
}
.qps-staff__marks{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.qps-staff__marks span{position:absolute;left:2px;right:14px;transform:translateY(-50%);text-align:left;font-size:12px;line-height:1;font-stretch:68%;font-weight:700;font-variant-numeric:tabular-nums lining-nums;color:var(--blue)}
.qps-staff__marks span.is-metre{color:var(--ink);font-size:13px}
.qps-staff__marks span.is-metre::after{content:"";position:absolute;left:5px;right:5px;bottom:-5px;height:2px;background:var(--gold)}
@media (max-width:900px){.qps-staff__marks{display:none}}
.qps-cross{
  position:fixed;z-index:60;left:0;top:var(--cross-y,42vh);
  width:calc(var(--staff-w) + 18px);height:2px;pointer-events:none;
  transform:translateY(-1px);
}
.qps-cross__line{display:block;width:100%;height:2px;background:var(--gold)}
/* The reading runs up the staff, like the markings on a real one: a navy chip
   above the crosshair, read bottom to top, the figure nearest the line. It
   stays inside the staff, so it never reaches the copy. */
.qps-cross__tag{
  position:absolute;left:calc((var(--staff-w) - 20px) / 2);bottom:8px;width:20px;
  display:flex;align-items:center;gap:.45rem;padding:.5rem 0;
  writing-mode:vertical-rl;transform:rotate(180deg);
  background:var(--ink);color:var(--white);
  font-size:.6875rem;line-height:20px;font-weight:560;letter-spacing:.02em;white-space:nowrap;
}
@media (prefers-reduced-motion:no-preference){.qps-cross__tag{animation:qps-tag .5s var(--ease-out) .9s both}}
@keyframes qps-tag{from{opacity:0}to{opacity:1}}
.qps-cross__tag b{font-stretch:68%;font-variant-numeric:tabular-nums;font-weight:700;font-size:.8125rem;color:var(--gold-text)}
@media (max-width:900px){
  .qps-cross{display:none}
}
/* The one authored moment: on arrival the crosshair is drawn out from the
   staff and the hero photo's dimension line is drawn across. Visible by
   default; the animation only runs where motion is welcome. */
@keyframes qps-draw{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@media (prefers-reduced-motion:no-preference){
  .qps-cross__line{transform-origin:left center;animation:qps-draw .9s var(--ease-out) .25s both}
  .qps-hero .qps-dim::before{transform-origin:left center;animation:qps-draw 1.1s var(--ease-out) .45s both}
  .qps-hero .qps-dim::after{animation:qps-fade .4s var(--ease-out) .35s both}
}
@keyframes qps-fade{from{opacity:0}to{opacity:1}}

/* --------------------------------------------------------------------------
   Header: a translucent material; content scrolls under it.
   -------------------------------------------------------------------------- */
.qps-head-bar{
  position:fixed;z-index:80;top:0;left:0;right:0;height:var(--head-h);
  background:rgba(244,245,248,.84);
  -webkit-backdrop-filter:saturate(170%) blur(18px);backdrop-filter:saturate(170%) blur(18px);
  transition:box-shadow .3s var(--ease-out),background-color .3s var(--ease-out);
}
.qps-head-bar.is-scrolled{box-shadow:0 1px 0 var(--rule)}
@media (prefers-reduced-transparency:reduce){.qps-head-bar{background:var(--paper);-webkit-backdrop-filter:none;backdrop-filter:none}}
.qps-head-bar .qps-wrap{height:100%;display:flex;align-items:center;gap:var(--s4)}
.qps-brand{display:inline-flex;align-items:center;gap:.75rem;text-decoration:none;color:var(--ink);flex:none;min-height:44px}
.qps-brand img,.qps-brand svg{width:40px;height:40px;flex:none}
.qps-brand__name{font-size:1.0625rem;line-height:1.1;letter-spacing:-.015em;font-weight:650}
.qps-brand__name span{font-weight:420;color:var(--ink-2)}
.qps-nav{margin-left:auto;display:flex;align-items:center;gap:clamp(1rem,.2rem + 1.6vw,2rem)}
.qps-nav a{position:relative;display:inline-flex;align-items:center;min-height:44px;text-decoration:none;font-size:.9688rem;font-weight:540;color:var(--ink)}
.qps-nav a::after{content:"";position:absolute;left:0;right:0;bottom:8px;height:2px;background:var(--gold);transform:scaleX(0);transform-origin:left;transition:transform .35s var(--ease-out)}
.qps-nav a:hover::after,.qps-nav a[aria-current="page"]::after{transform:scaleX(1)}
.qps-head-bar__tel{display:inline-flex;align-items:center;gap:.45rem;text-decoration:none;font-weight:600;font-size:.9688rem;color:var(--ink);font-variant-numeric:tabular-nums;min-height:44px}
.qps-head-bar__tel svg{width:18px;height:18px;color:var(--blue)}
.qps-head-bar .qps-btn{min-height:44px;padding:.6rem 1.1rem;font-size:.9375rem}
.qps-menu-btn{display:none;margin-left:auto;align-items:center;justify-content:center;width:48px;height:48px;border:0;background:transparent;cursor:pointer;color:var(--ink)}
.qps-menu-btn svg{width:26px;height:26px}
.qps-menu-btn .qps-i-close{display:none}
.qps-menu-open .qps-menu-btn .qps-i-menu{display:none}
.qps-menu-open .qps-menu-btn .qps-i-close{display:block}
@media (max-width:1100px){
  .qps-head-bar__tel{display:none}
}
@media (max-width:900px){
  .qps-nav,.qps-head-bar .qps-btn{display:none}
  .qps-menu-btn{display:inline-flex}
  .qps-brand img,.qps-brand svg{width:36px;height:36px}
  .qps-brand__name{font-size:1rem}
}

/* Mobile sheet: drops from under the header, same path in and out. */
.qps-sheet{
  position:fixed;z-index:79;left:0;right:0;top:var(--head-h);
  max-height:calc(100dvh - var(--head-h));overflow:auto;
  background:var(--paper);
  padding:var(--s3) calc(var(--gutter) + var(--staff-w)) var(--s5);
  transform:translateY(-12px);opacity:0;visibility:hidden;
  transition:transform .42s var(--ease-out),opacity .25s var(--ease-out),visibility 0s .42s;
}
/* The sheet ends on a tick rule, not a shadow. */
.qps-sheet::after{content:"";position:absolute;left:0;right:0;bottom:0;height:9px;
  background:
    linear-gradient(var(--rule-strong),var(--rule-strong)) 0 100% / 100% 1px no-repeat,
    repeating-linear-gradient(90deg,var(--rule-strong) 0 1px,transparent 1px 16px) 0 100% / 100% 5px no-repeat}
.qps-menu-open .qps-sheet{transform:none;opacity:1;visibility:visible;transition:transform .42s var(--ease-out),opacity .2s var(--ease-out),visibility 0s}
.qps-sheet nav a{display:flex;align-items:center;justify-content:space-between;min-height:56px;font-size:1.5rem;font-weight:600;letter-spacing:-.02em;text-decoration:none;color:var(--ink);box-shadow:0 1px 0 var(--rule)}
.qps-sheet nav a[aria-current="page"]{color:var(--blue)}
.qps-sheet nav a svg{width:22px;height:22px;color:var(--gold-ink)}
.qps-sheet__contact{display:grid;gap:var(--s2);margin-top:var(--s4)}
.qps-sheet__contact .qps-btn{width:100%}
.qps-sheet__contact a.qps-tel{display:flex;align-items:center;gap:.6rem;min-height:48px;font-weight:600;text-decoration:none;color:var(--ink);font-variant-numeric:tabular-nums}
.qps-sheet__contact a.qps-tel svg{width:20px;height:20px;color:var(--blue)}
@media (min-width:901px){.qps-sheet{display:none}}
@media (prefers-reduced-motion:reduce){.qps-sheet,.qps-menu-open .qps-sheet{transform:none;transition:opacity .2s linear,visibility 0s}}

/* Phone action bar: Call and Book, once the hero has scrolled away. */
.qps-dock{
  position:fixed;z-index:70;left:0;right:0;bottom:0;display:none;
  grid-template-columns:1fr 1.4fr;gap:1px;background:var(--rule-strong);
  padding-bottom:env(safe-area-inset-bottom);
  transform:translateY(110%);transition:transform .45s var(--ease-out);
}
.qps-dock a{display:flex;align-items:center;justify-content:center;gap:.5rem;min-height:56px;font-weight:600;text-decoration:none}
.qps-dock a svg{width:20px;height:20px}
.qps-dock .qps-dock__call{background:var(--paper);color:var(--ink)}
.qps-dock .qps-dock__book{background:var(--blue);color:var(--white)}
.qps-dock.is-on{transform:none}
@media (max-width:900px){.qps-dock{display:grid}}

/* --------------------------------------------------------------------------
   Tick rules: the dividers of this world
   -------------------------------------------------------------------------- */
.qps-tick{
  height:9px;border:0;margin:0;
  background:
    linear-gradient(var(--rule-strong),var(--rule-strong)) 0 100% / 100% 1px no-repeat,
    repeating-linear-gradient(90deg,var(--rule-strong) 0 1px,transparent 1px 16px) 0 100% / 100% 5px no-repeat,
    repeating-linear-gradient(90deg,var(--rule-strong) 0 1px,transparent 1px 80px) 0 100% / 100% 9px no-repeat;
}
.qps-plane .qps-tick{
  background:
    linear-gradient(var(--rule-on-blue),var(--rule-on-blue)) 0 100% / 100% 1px no-repeat,
    repeating-linear-gradient(90deg,var(--rule-on-blue) 0 1px,transparent 1px 16px) 0 100% / 100% 5px no-repeat,
    repeating-linear-gradient(90deg,rgba(255,255,255,.5) 0 1px,transparent 1px 80px) 0 100% / 100% 9px no-repeat;
}

/* Measured rows: a list where each row starts at a gold tick. */
.qps-rows{display:grid}
.qps-rows > li{position:relative;padding:1rem 0 1rem 1.5rem;box-shadow:0 1px 0 var(--rule)}
.qps-rows > li::before{content:"";position:absolute;left:0;top:1.62rem;width:10px;height:2px;background:var(--gold)}
.qps-rows > li:first-child{box-shadow:0 1px 0 var(--rule),0 -1px 0 var(--rule)}
.qps-plane .qps-rows > li{box-shadow:0 1px 0 var(--rule-on-blue)}
.qps-plane .qps-rows > li:first-child{box-shadow:0 1px 0 var(--rule-on-blue),0 -1px 0 var(--rule-on-blue)}
.qps-rows strong{display:block;font-weight:600;line-height:1.35;text-wrap:balance}
.qps-rows span{display:block;color:var(--ink-2);font-size:var(--fs-small);line-height:1.5;margin-top:.2rem;text-wrap:pretty}
.qps .qps-rows span.qps-nb,.qps .qps-plane .qps-rows span.qps-nb{display:inline;margin:0;font-size:inherit;line-height:inherit;color:inherit}
.qps-plane .qps-rows span{color:var(--on-blue-2)}

/* Credentials line: short facts separated by gold ticks. */
.qps-creds{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem 1.1rem;font-size:var(--fs-small);font-weight:540;color:var(--ink-2)}
.qps-creds li{position:relative;padding-left:1.1rem}
.qps-creds li::after{content:"";position:absolute;left:0;top:50%;width:8px;height:2px;background:var(--gold);transform:translateY(-50%)}

/* --------------------------------------------------------------------------
   Photos and the dimension callout
   -------------------------------------------------------------------------- */
.qps-photo{position:relative;background:var(--paper-2);overflow:hidden}
.qps-photo img{width:100%;height:100%;object-fit:cover}
.qps-dim{
  position:relative;display:block;margin-top:var(--s2);padding-top:14px;
  font-size:var(--fs-small);line-height:1.4;color:var(--ink-2);
}
.qps-dim::before{content:"";position:absolute;left:0;right:0;top:6px;height:1px;background:var(--ink)}
.qps-dim::after{content:"";position:absolute;left:0;right:0;top:0;height:13px;
  background:linear-gradient(var(--ink),var(--ink)) 0 0 / 1px 100% no-repeat,linear-gradient(var(--ink),var(--ink)) 100% 0 / 1px 100% no-repeat}
.qps-dim strong{color:var(--ink);font-weight:600}
.qps-plane .qps-dim{color:var(--on-blue-2)}
.qps-plane .qps-dim strong{color:var(--white)}
.qps-plane .qps-dim::before{background:var(--on-blue-2)}
.qps-plane .qps-dim::after{background:linear-gradient(var(--on-blue-2),var(--on-blue-2)) 0 0 / 1px 100% no-repeat,linear-gradient(var(--on-blue-2),var(--on-blue-2)) 100% 0 / 1px 100% no-repeat}

/* --------------------------------------------------------------------------
   Hero (home)
   -------------------------------------------------------------------------- */
.qps-hero{padding-top:clamp(2rem,1rem + 3vw,4rem);padding-bottom:clamp(2.5rem,1.5rem + 3vw,4.5rem)}
.qps-hero .qps-grid{align-items:end;row-gap:var(--s3)}
.qps-hero__copy{grid-column:1 / span 7;align-self:center;padding-bottom:var(--s3)}
.qps-hero__copy .qps-display{max-width:20ch}
.qps-hero__copy .qps-lead{margin-top:var(--s4);max-width:44ch}
.qps-hero__copy .qps-actions{margin-top:var(--s5)}
.qps-hero__fig{grid-column:8 / span 5}
.qps-hero__fig .qps-photo{aspect-ratio:4 / 5;max-height:min(60vh,560px);width:100%}
.qps-hero__foot{grid-column:1 / -1}
.qps-hero__foot .qps-tick{margin-bottom:var(--s3)}
@media (max-width:900px){
  .qps-hero__copy,.qps-hero__fig{grid-column:1 / -1}
  .qps-hero__fig .qps-photo{aspect-ratio:4 / 3;max-height:none}
  .qps-hero__copy .qps-actions .qps-btn{flex:1 1 100%}
}

/* Page hero (inner pages): heading, lead, one optional photo. */
.qps-phero{padding-top:clamp(2.5rem,1rem + 5vw,6rem);padding-bottom:var(--s6)}
.qps-phero .qps-grid{row-gap:var(--s4);align-items:end}
.qps-phero__copy{grid-column:1 / span 8}
.qps-phero__copy .qps-lead{margin-top:var(--s3);max-width:52ch}
.qps-phero__aside{grid-column:9 / span 4}
.qps-crumbs{display:flex;flex-wrap:wrap;gap:.4rem;font-size:var(--fs-small);font-weight:540;color:var(--ink-3);margin-bottom:var(--s3)}
.qps-crumbs a{color:var(--ink-2);text-decoration:none;display:inline-block;padding:15px 6px;margin:-15px -6px}
.qps-crumbs a:hover{color:var(--blue);text-decoration:underline;text-decoration-color:var(--gold)}
.qps-crumbs li + li::before{content:"/";margin-right:.4rem;color:var(--ink-3)}
@media (max-width:900px){.qps-phero__copy,.qps-phero__aside{grid-column:1 / -1}}

/* --------------------------------------------------------------------------
   Level book: the figures as a surveyor's field book, not a counter row
   -------------------------------------------------------------------------- */
.qps-book{grid-column:1 / span 7}
.qps-book__row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:var(--s3);padding:var(--s2) 0 calc(var(--s2) + 4px);position:relative}
.qps-book__row::after{content:"";position:absolute;left:0;right:0;bottom:0;height:9px;
  background:
    linear-gradient(var(--rule-strong),var(--rule-strong)) 0 100% / 100% 1px no-repeat,
    repeating-linear-gradient(90deg,var(--rule-strong) 0 1px,transparent 1px 16px) 0 100% / 100% 5px no-repeat}
.qps-book__label{font-size:var(--fs-lead);line-height:1.3;font-weight:520;padding-bottom:.55em;max-width:20ch}
.qps-book__value{font-size:var(--fs-reading);line-height:.86;font-stretch:68%;font-weight:720;letter-spacing:-.02em;font-variant-numeric:tabular-nums lining-nums;color:var(--ink);display:inline-flex;align-items:baseline}
.qps-book__value small{font-size:.42em;font-weight:620;margin-left:.08em;letter-spacing:0}
.qps-book__value i{font-style:normal;font-size:.62em;margin-right:.04em}
.qps-book__aside{grid-column:9 / span 4;align-self:start}
.qps-book__aside .qps-photo,.qps-fig--tall .qps-photo{aspect-ratio:3 / 4}
@media (max-width:900px){
  .qps-book,.qps-book__aside{grid-column:1 / -1}
  .qps-book__aside{margin-top:var(--s5)}
}

/* --------------------------------------------------------------------------
   The stage tape (signature): four stops, a gold cursor on a spring
   -------------------------------------------------------------------------- */
.qps-tape{position:relative;margin-bottom:var(--s5);user-select:none;-webkit-user-select:none}
.qps-tape__rule{
  position:relative;height:44px;
  background:
    linear-gradient(var(--on-blue-2),var(--on-blue-2)) 0 100% / 100% 1px no-repeat,
    repeating-linear-gradient(90deg,rgba(255,255,255,.38) 0 1px,transparent 1px 12px) 0 100% / 100% 10px no-repeat,
    repeating-linear-gradient(90deg,rgba(255,255,255,.7) 0 1px,transparent 1px 60px) 0 100% / 100% 20px no-repeat;
  touch-action:pan-y;cursor:grab;
}
.qps-tape.is-dragging .qps-tape__rule{cursor:grabbing}
.qps-tape__fill{position:absolute;left:0;bottom:0;height:3px;background:var(--gold);width:var(--fill,0px);pointer-events:none}
.qps-tape__cursor{
  position:absolute;left:0;bottom:-7px;width:2px;height:58px;background:var(--gold);
  pointer-events:none;will-change:transform;
}
.qps-tape__cursor::before{content:"";position:absolute;left:50%;top:-6px;width:14px;height:14px;background:var(--gold);transform:translateX(-50%)}
.qps-tape__cursor::after{content:"";position:absolute;left:50%;bottom:0;width:12px;height:2px;background:var(--gold);transform:translateX(-50%)}
.qps-tape__stops{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin-top:var(--s2)}
.qps-tape__affects{display:none;margin:var(--s2) 0 0;font-size:var(--fs-small);font-weight:520;color:var(--on-blue-2)}
.qps-tape__stop{
  display:grid;gap:.15rem;text-align:left;align-content:start;
  padding:.6rem .75rem .6rem 0;min-height:64px;border:0;background:transparent;cursor:pointer;
  color:var(--on-blue-2);-webkit-tap-highlight-color:transparent;touch-action:manipulation;
}
.qps-tape__stop b{font-size:clamp(1.125rem,1rem + .6vw,1.5rem);font-weight:600;letter-spacing:-.015em;color:var(--white);transition:color .2s var(--ease-out)}
.qps-tape__stop span{font-size:var(--fs-label);font-weight:500;line-height:1.35}
.qps-tape__stop:hover b{color:var(--gold-text)}
.qps-tape__stop[aria-selected="true"] b{color:var(--gold-text)}
.qps-tape__stop:active{transform:scale(.98)}
.qps-stage{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:clamp(1rem,.5rem + 1.6vw,2rem);row-gap:var(--s4)}
.qps-stage[hidden]{display:none}
.qps-stage__q{grid-column:1 / span 5}
.qps-stage__q .qps-h2{color:var(--white)}
.qps-stage__q p{margin-top:var(--s3);color:var(--on-blue-2);max-width:40ch;font-size:var(--fs-lead);line-height:1.5}
.qps-stage__list{grid-column:7 / span 6}
.qps-stage__list .qps-rows{grid-template-columns:1fr 1fr;column-gap:var(--s4)}
.qps-stage__list .qps-rows > li:nth-child(2){box-shadow:0 1px 0 var(--rule-on-blue),0 -1px 0 var(--rule-on-blue)}
.qps-stage__list .qps-rows > li.is-more{display:none}
.qps-stage__list.is-open .qps-rows > li.is-more{display:block;animation:qps-in .45s var(--ease-out) both}
.qps-stage__more{margin-top:var(--s3);display:inline-flex;align-items:center;gap:.5rem;min-height:44px;border:0;background:transparent;color:var(--white);font-weight:600;cursor:pointer;padding:0}
.qps-stage__more svg{width:18px;height:18px;transition:transform .35s var(--ease-out)}
.qps-stage__list.is-open .qps-stage__more svg{transform:rotate(45deg)}
.qps-stage.is-entering .qps-stage__q,.qps-stage.is-entering .qps-stage__list{animation:qps-in .5s var(--ease-out) both}
.qps-stage.is-entering .qps-stage__list{animation-delay:.05s}
@keyframes qps-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
/* Stage photos: licensed stock that illustrates the stage, never captioned as a project. */
.qps-stage__fig{margin-top:var(--s4);aspect-ratio:4 / 3}
@media (max-width:900px){
  .qps-tape__stops{grid-template-columns:repeat(4,minmax(0,1fr))}
  .qps-tape__stop span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
  .qps-tape__affects{display:block}
  .qps-tape__stop b{font-size:1.0625rem}
  .qps-stage__q,.qps-stage__list{grid-column:1 / -1}
  .qps-stage__list .qps-rows{grid-template-columns:1fr}
  .qps-stage__list .qps-rows > li:nth-child(2){box-shadow:0 1px 0 var(--rule-on-blue)}
}
@media (max-width:600px){
  .qps-tape__stop{padding-right:.25rem}
  .qps-tape__stop b{font-size:1rem;font-stretch:72%;letter-spacing:0;white-space:nowrap}
}
@media (prefers-reduced-motion:reduce){
  .qps-stage.is-entering .qps-stage__q,.qps-stage.is-entering .qps-stage__list,.qps-stage__list.is-open .qps-rows > li.is-more{animation:none}
}

/* --------------------------------------------------------------------------
   Services overview: three groups as measured columns
   -------------------------------------------------------------------------- */
.qps-groups{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s5) clamp(1rem,.5rem + 1.6vw,2rem)}
.qps-group h3{margin-bottom:.5rem}
.qps-group > p{color:var(--ink-2);margin-bottom:var(--s3);max-width:34ch}
.qps-group .qps-rows > li{padding-block:.8rem}
.qps-group .qps-rows > li::before{top:1.42rem}
.qps-groups + .qps-go{margin-top:var(--s5)}
@media (max-width:1000px){.qps-groups{grid-template-columns:1fr 1fr}}
@media (max-width:640px){.qps-groups{grid-template-columns:1fr}}

/* --------------------------------------------------------------------------
   Work: a lead project and measured strips
   -------------------------------------------------------------------------- */
.qps-work{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:clamp(1rem,.5rem + 1.6vw,2rem);row-gap:var(--s5)}
.qps-work__lead{grid-column:1 / span 7}
.qps-work__lead .qps-photo{aspect-ratio:4 / 3}
.qps-work__list{grid-column:8 / span 5;display:grid;align-content:start}
.qps-strip{display:grid;grid-template-columns:minmax(0,1fr);gap:.6rem;padding:0 0 var(--s3);margin-bottom:var(--s3);box-shadow:0 1px 0 var(--rule)}
.qps-strip:last-child{margin-bottom:0}
.qps-strip .qps-photo{aspect-ratio:800 / 212}
.qps-strip__meta{display:flex;justify-content:space-between;align-items:baseline;gap:var(--s2)}
.qps-strip__meta strong{font-weight:600;line-height:1.3}
.qps-strip__meta span{font-size:var(--fs-small);color:var(--ink-3);font-weight:540;white-space:nowrap}
.qps-work__note{margin-top:var(--s3);max-width:52ch}
.qps-after{margin-top:var(--s5)}
/* Wide context band: a photograph across the content width. */
.qps-band{padding-block:calc(var(--section) * .5) 0}
.qps-band .qps-photo{aspect-ratio:21 / 9}
@media (max-width:640px){.qps-band .qps-photo{aspect-ratio:16 / 9}}
@media (max-width:900px){.qps-work__lead,.qps-work__list{grid-column:1 / -1}}

/* --------------------------------------------------------------------------
   Credentials plane
   -------------------------------------------------------------------------- */
.qps-cred{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--s4) clamp(1rem,.5rem + 1.6vw,2rem)}
.qps-cred li{position:relative;padding-top:var(--s3)}
.qps-cred li::before{content:"";position:absolute;left:0;top:0;width:100%;height:9px;
  background:
    linear-gradient(var(--rule-on-blue),var(--rule-on-blue)) 0 100% / 100% 1px no-repeat,
    linear-gradient(var(--gold),var(--gold)) 0 0 / 2px 100% no-repeat}
.qps-cred h3{color:var(--white);margin-bottom:.5rem}
.qps-cred p{color:var(--on-blue-2);font-size:var(--fs-small);line-height:1.55;max-width:30ch}
.qps-clients{margin-top:var(--s6);display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:clamp(1rem,.5rem + 1.6vw,2rem);align-items:baseline;row-gap:var(--s2)}
.qps-clients h3{grid-column:1 / span 3;font-size:var(--fs-body);font-weight:600;color:var(--on-blue-2)}
.qps-clients ul{grid-column:4 / -1;display:flex;flex-wrap:wrap;gap:.5rem 2rem}
.qps-clients li{position:relative;padding-left:1.25rem;font-size:clamp(1.125rem,1rem + .5vw,1.375rem);font-weight:560;letter-spacing:-.01em;color:var(--white)}
.qps-clients li::before{content:"";position:absolute;left:0;top:.72em;width:9px;height:2px;background:var(--gold)}
@media (max-width:1000px){.qps-cred{grid-template-columns:1fr 1fr}}
@media (max-width:640px){.qps-cred{grid-template-columns:1fr}.qps-clients h3,.qps-clients ul{grid-column:1 / -1}}

/* --------------------------------------------------------------------------
   Consultation: direct lines and the form
   -------------------------------------------------------------------------- */
.qps-consult{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:clamp(1rem,.5rem + 1.6vw,2rem);row-gap:var(--s5)}
.qps-consult__intro{grid-column:1 / span 5}
.qps-consult__intro .qps-lead{margin-top:var(--s3)}
.qps-lines{margin-top:var(--s5);display:grid}
.qps-lines li{box-shadow:0 1px 0 var(--rule)}
.qps-lines li:first-child{box-shadow:0 1px 0 var(--rule),0 -1px 0 var(--rule)}
.qps-lines a,.qps-lines div{display:grid;grid-template-columns:24px 1fr;gap:.25rem .9rem;align-items:center;padding:.9rem 0;text-decoration:none;color:var(--ink);min-height:56px}
.qps-lines svg{width:22px;height:22px;color:var(--blue);grid-row:span 2}
.qps-lines small{font-size:var(--fs-small);color:var(--ink-3);font-weight:540;line-height:1.2}
.qps-lines strong{font-weight:600;font-variant-numeric:tabular-nums;line-height:1.3}
.qps-lines a:hover strong{color:var(--blue)}
.qps-consult__form{grid-column:7 / span 6}
@media (max-width:900px){.qps-consult__intro,.qps-consult__form{grid-column:1 / -1}}

.qps-form{background:none;padding:0}
.qps-form > .qps-tick,.qps-form__body > .qps-tick{margin-bottom:var(--s3)}
.qps-form__title{font-size:var(--fs-h3);font-weight:600;letter-spacing:-.015em;margin-bottom:.25rem}
.qps-form__note{font-size:var(--fs-small);color:var(--ink-2);margin-bottom:var(--s4)}
.qps-fields{display:grid;grid-template-columns:1fr 1fr;gap:var(--s3) var(--s3)}
.qps-field{display:grid;gap:.4rem;align-content:start}
.qps-field--wide{grid-column:1 / -1}
.qps-field label{font-size:var(--fs-small);font-weight:600;color:var(--ink)}
.qps-req{color:var(--error);margin-left:.15em}
.qps-field input,.qps-field select,.qps-field textarea{
  width:100%;min-height:52px;padding:.8rem .9rem;border:0;border-radius:0;
  background:var(--paper-2);color:var(--ink);font:inherit;font-size:1rem;line-height:1.4;
  box-shadow:inset 0 -1.5px 0 var(--ink-3);
  transition:box-shadow .2s var(--ease-out),background-color .2s var(--ease-out);
  -webkit-appearance:none;appearance:none;
}
.qps-field textarea{min-height:132px;resize:vertical}
.qps-field select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230E1638' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .8rem center;background-size:18px;padding-right:2.6rem}
.qps-field input:hover,.qps-field select:hover,.qps-field textarea:hover{background-color:#E1E5ED}
.qps-field input:focus,.qps-field select:focus,.qps-field textarea:focus{outline:none;box-shadow:inset 0 -2px 0 var(--blue),0 0 0 2px var(--blue)}
.qps-field input::placeholder,.qps-field textarea::placeholder{color:var(--ink-3)}
.qps-field__help{font-size:var(--fs-small);color:var(--ink-3)}
.qps-field__err{display:none;font-size:var(--fs-small);font-weight:600;color:var(--error)}
.qps-field.is-bad input,.qps-field.is-bad select,.qps-field.is-bad textarea{box-shadow:inset 0 -2px 0 var(--error)}
.qps-field.is-bad .qps-field__err{display:block}
.qps-hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.qps-form__foot{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2) var(--s3);margin-top:var(--s4)}
.qps-form__foot p{font-size:var(--fs-small);color:var(--ink-3);max-width:36ch;margin:0}
.qps-form__summary{display:none;margin-bottom:var(--s3);padding:.9rem 1rem;background:#FBEDEC;color:var(--error);font-size:var(--fs-small);font-weight:600}
.qps-form__summary:focus{outline:2px solid var(--error);outline-offset:2px}
.qps-form.has-errors .qps-form__summary{display:block}
.qps-form__done{display:none}
.qps-form.is-sent .qps-form__body{display:none}
.qps-form.is-sent .qps-form__done{display:block}
.qps-form__done h3{font-size:var(--fs-h3);font-weight:600;margin:var(--s2) 0 .5rem}
.qps-form__done svg{width:40px;height:40px;color:var(--ok)}
body.qps-sent .qps-form .qps-form__body{display:none}
body.qps-sent .qps-form .qps-form__done{display:block}
@media (max-width:640px){.qps-fields{grid-template-columns:1fr}.qps-form__foot .qps-btn{width:100%}}

/* --------------------------------------------------------------------------
   Footer: navy plane
   -------------------------------------------------------------------------- */
.qps-foot{background:var(--navy);color:var(--on-blue-2);padding-top:var(--s7);padding-bottom:calc(var(--s4) + env(safe-area-inset-bottom));position:relative;z-index:41}
.qps-foot a{color:var(--white);text-decoration:none}
.qps-foot a:hover{color:var(--gold-text)}
.qps-foot__top{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:clamp(1rem,.5rem + 1.6vw,2rem);row-gap:var(--s5)}
.qps-foot__brand{grid-column:1 / span 4}
.qps-foot__brand .qps-brand{color:var(--white)}
.qps-foot__brand .qps-brand__name span{color:var(--on-blue-2)}
.qps-foot__brand p{margin-top:var(--s3);max-width:34ch;font-size:var(--fs-small);line-height:1.6}
.qps-foot__col{grid-column:span 2}
.qps-foot__col--wide{grid-column:span 4}
.qps-foot h2{font-size:var(--fs-small);font-weight:600;color:rgba(255,255,255,.72);margin-bottom:var(--s2);letter-spacing:.01em}
.qps-foot li{margin-bottom:0}
.qps-foot li a{display:inline-flex;min-height:44px;align-items:center;font-size:var(--fs-small)}
.qps-foot address{font-style:normal;font-size:var(--fs-small);line-height:1.7}
.qps-foot address a{display:inline-block;min-height:44px;line-height:44px;font-variant-numeric:tabular-nums}
.qps-foot__creds{margin-top:var(--s6)}
.qps-foot__creds .qps-creds{color:var(--on-blue-2)}
.qps-foot__base{margin-top:var(--s4);padding-top:var(--s3);box-shadow:0 -1px 0 rgba(255,255,255,.14);display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--s2);font-size:var(--fs-label)}
.qps-foot__base small{font-size:inherit}
.qps-credit a{text-decoration:underline;text-decoration-color:var(--gold);text-underline-offset:.25em}
@media (max-width:1000px){
  .qps-foot__brand{grid-column:1 / -1}
  .qps-foot__col{grid-column:span 6}
  .qps-foot__col--wide{grid-column:1 / -1}
}
@media (max-width:900px){.qps-foot{padding-bottom:calc(var(--s4) + 56px + env(safe-area-inset-bottom))}}

/* --------------------------------------------------------------------------
   Closing band: one sentence and the action
   -------------------------------------------------------------------------- */
.qps-close{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:clamp(1rem,.5rem + 1.6vw,2rem);row-gap:var(--s4);align-items:end}
.qps-close .qps-h2{grid-column:1 / span 8;color:var(--white)}
.qps-close .qps-actions{grid-column:9 / span 4;justify-content:flex-end}
@media (max-width:900px){.qps-close .qps-h2,.qps-close .qps-actions{grid-column:1 / -1;justify-content:flex-start}}

/* --------------------------------------------------------------------------
   Admin bar offsets
   -------------------------------------------------------------------------- */
body.admin-bar .qps-head-bar{top:32px}
body.admin-bar .qps-sheet{top:calc(var(--head-h) + 32px)}
@media (max-width:782px){
  body.admin-bar .qps-head-bar{top:46px}
  body.admin-bar .qps-sheet{top:calc(var(--head-h) + 46px)}
}
@media (max-width:600px){
  body.admin-bar .qps-head-bar{top:0}
  body.admin-bar .qps-sheet{top:var(--head-h)}
}

@media print{
  .qps-head-bar,.qps-staff,.qps-cross,.qps-dock,.qps-sheet{display:none !important}
  body.qps-chrome #page-container{padding-top:0 !important}
}

/* ---- pages/about.css ---- */
/* ==========================================================================
   About page: the story beside the values, the promise as rows beside its
   heading, the credentials plane as three level books, the quality rows two
   up, transformation in three columns and the community photo.
   Everything else reuses quantum.css.
   ========================================================================== */

/* Hyphenated words stay whole at a line end (B-BBEE, Black-owned). */
.qps-about-nw{white-space:nowrap}

/* Rows on this page carry full sentences as notes: read them at body size. */
.qps-about-rows .qps-rows span{font-size:var(--fs-body);line-height:1.55;margin-top:.3rem;max-width:62ch;text-wrap:pretty}

/* --------------------------------------------------------------------------
   Story: two short blocks on the left, the four values as rows on the right
   -------------------------------------------------------------------------- */
.qps-about-story .qps-grid{row-gap:var(--s5);align-items:start}
.qps-about-story__copy{grid-column:1 / span 6}
.qps-about-story__copy .qps-lead{max-width:44ch}
.qps-about-story__copy .qps-h2{margin-bottom:var(--s4)}
.qps-about-story__values{grid-column:8 / span 5;padding-top:.4rem}
.qps-about-story__values .qps-h3{margin-bottom:var(--s3)}
@media (max-width:900px){
  .qps-about-story__copy,.qps-about-story__values{grid-column:1 / -1}
  .qps-about-story__values{padding-top:0}
}

/* --------------------------------------------------------------------------
   Promise: heading on the left, the rows on the right
   -------------------------------------------------------------------------- */
.qps-about-split{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:clamp(1rem,.5rem + 1.6vw,2rem);row-gap:var(--s4);align-items:start}
.qps-about-split__head{grid-column:1 / span 5}
.qps-about-split__body{grid-column:7 / span 6}
@media (max-width:900px){.qps-about-split__head,.qps-about-split__body{grid-column:1 / -1}}

/* --------------------------------------------------------------------------
   Credentials: three level books on the blue plane
   -------------------------------------------------------------------------- */
.qps-about-cred__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s6) clamp(1rem,.5rem + 1.6vw,2rem);align-items:start}
.qps-about-cred__group{position:relative;padding-top:var(--s3)}
.qps-about-cred__group::before{content:"";position:absolute;left:0;top:0;width:100%;height:9px;
  background:
    linear-gradient(var(--rule-on-blue),var(--rule-on-blue)) 0 100% / 100% 1px no-repeat,
    linear-gradient(var(--gold),var(--gold)) 0 0 / 2px 100% no-repeat}
.qps-about-cred__group .qps-h3{color:var(--white)}
.qps-about-book{margin-top:var(--s2)}
.qps-about-book > div{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:var(--s2);padding:var(--s2) 0 calc(.75rem + 4px)}
.qps-about-book > div::after{content:"";position:absolute;left:0;right:0;bottom:0;height:9px;
  background:
    linear-gradient(var(--rule-on-blue),var(--rule-on-blue)) 0 100% / 100% 1px no-repeat,
    repeating-linear-gradient(90deg,var(--rule-on-blue) 0 1px,transparent 1px 16px) 0 100% / 100% 5px no-repeat}
.qps-about-book dt{font-size:var(--fs-body);line-height:1.35;font-weight:520;color:var(--on-blue-2);padding-bottom:.3em;max-width:22ch;text-wrap:balance}
.qps-about-book dd{
  display:inline-flex;align-items:baseline;justify-self:end;white-space:nowrap;
  font-size:clamp(2.5rem,1.7rem + 2vw,3.75rem);line-height:.86;font-stretch:68%;font-weight:720;letter-spacing:-.02em;
  font-variant-numeric:tabular-nums lining-nums;color:var(--white);
}
.qps-about-book dd small{font-size:.42em;font-weight:620;margin-left:.08em;letter-spacing:0}
.qps-about-book dd i{font-style:normal;font-size:.62em;margin-right:.04em}
.qps-about-book__pre{font-size:.42em;font-weight:620;letter-spacing:0;margin-right:.18em}
.qps-about-book__word{font-size:.72em;letter-spacing:.01em}
.qps-about-cred__note{margin-top:var(--s3);font-size:var(--fs-small);line-height:1.55;color:var(--on-blue-2);max-width:36ch;text-wrap:pretty}
/* Two up on a tablet: the insurance book takes the full width below, its
   three lines side by side. */
@media (max-width:1100px) and (min-width:761px){
  .qps-about-cred__grid{grid-template-columns:1fr 1fr}
  .qps-about-cred__group:last-child{grid-column:1 / -1}
  .qps-about-cred__group:last-child .qps-about-book{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:clamp(1rem,.5rem + 1.6vw,2rem)}
}
@media (max-width:760px){
  .qps-about-cred__grid{grid-template-columns:1fr;row-gap:var(--s5)}
}

/* --------------------------------------------------------------------------
   Quality: four rows, two up
   -------------------------------------------------------------------------- */
.qps-about-quality .qps-rows{grid-template-columns:1fr 1fr;column-gap:clamp(1rem,.5rem + 1.6vw,2rem)}
.qps-about-quality .qps-rows > li:nth-child(2){box-shadow:0 1px 0 var(--rule),0 -1px 0 var(--rule)}
@media (max-width:760px){
  .qps-about-quality .qps-rows{grid-template-columns:1fr}
  .qps-about-quality .qps-rows > li:nth-child(2){box-shadow:0 1px 0 var(--rule)}
}

/* --------------------------------------------------------------------------
   Transformation: three short columns, each starting at a tick
   -------------------------------------------------------------------------- */
.qps .qps-about-cols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s5) clamp(1rem,.5rem + 1.6vw,2rem)}
.qps .qps-about-cols > li{position:relative;padding-top:var(--s3)}
.qps-about-cols > li::before{content:"";position:absolute;left:0;top:0;width:100%;height:9px;
  background:
    linear-gradient(var(--rule-strong),var(--rule-strong)) 0 100% / 100% 1px no-repeat,
    linear-gradient(var(--gold),var(--gold)) 0 0 / 2px 100% no-repeat}
.qps-about-cols .qps-h3{margin-bottom:.6rem}
.qps-about-cols p{color:var(--ink-2);max-width:38ch;text-wrap:pretty}
@media (max-width:900px){.qps .qps-about-cols{grid-template-columns:1fr;row-gap:var(--s4)}}

/* --------------------------------------------------------------------------
   Community: the photo on the left, the copy beside it on the caption line
   -------------------------------------------------------------------------- */
.qps-about-csr .qps-grid{row-gap:var(--s5);align-items:end}
.qps-about-csr__copy{grid-column:7 / span 6;grid-row:1;padding-bottom:var(--s5)}
.qps-about-csr__copy .qps-lead{margin-top:var(--s3)}
.qps-about-csr__copy .qps-after{margin-top:var(--s4)}
.qps-about-csr__fig{grid-column:1 / span 5;grid-row:1}
.qps-about-csr__fig .qps-photo{aspect-ratio:4 / 5}
@media (max-width:900px){
  .qps-about-csr__copy,.qps-about-csr__fig{grid-column:1 / -1;grid-row:auto}
  .qps-about-csr__copy{padding-bottom:0}
}

/* Transformation: the heading runs on one line above the three columns. */
.qps-about-transform .qps-head > .qps-h2{grid-column:1 / span 10}

/* Hero: centre the short title and lead against the photo, as home does. */
.qps-about-hero .qps-phero__copy{align-self:center}

/* Promise: the measuring photo under the heading. */
.qps-about-promise__fig{margin-top:var(--s4);aspect-ratio:3 / 2}

/* Link to the full accreditations page under the three groups. */
.qps-about-cred__after{margin-top:var(--s6)}


/* ---- pages/contact.css ---- */
/* ==========================================================================
   Contact. Everything else reuses quantum.css.
   ========================================================================== */

/* ---- Contact ------------------------------------------------------------ */

/* Hero aside: the office line read off like a staff reading. */
.qps-contact-call .qps-tick{margin-bottom:var(--s3)}
.qps .qps-contact-call__link{
  display:inline-grid;gap:.35rem;min-height:44px;
  text-decoration:none;color:var(--ink);-webkit-tap-highlight-color:transparent;
}
.qps-contact-call__label{display:inline-flex;align-items:center;gap:.5rem;font-size:var(--fs-small);font-weight:560;color:var(--ink-2)}
.qps-contact-call__label svg{width:18px;height:18px;flex:none;color:var(--blue)}
/* A step below the h1 so the heading still leads. */
.qps-contact-call__num{
  font-size:clamp(2.25rem,1.6rem + 2vw,3.25rem);line-height:.95;
  font-stretch:68%;font-weight:720;letter-spacing:-.015em;
  font-variant-numeric:tabular-nums lining-nums;white-space:nowrap;
  transition:color .2s var(--ease-out);
}
.qps-contact-call__link:hover .qps-contact-call__num{color:var(--blue)}

/* The form follows the hero closely here: the hero already says what to do. */
.qps-contact-consult{padding-top:var(--s5)}
.qps-contact-consult .qps-consult__intro .qps-lead{text-wrap:balance}

/* Find us: company, office and fax as measured rows on a blue plane.
   Desktop: heading left, rows right. Phone: heading, then rows. */
.qps-contact-find__grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));grid-template-rows:auto 1fr;column-gap:clamp(1rem,.5rem + 1.6vw,2rem);row-gap:var(--s3);align-items:start}
.qps-contact-find__grid > .qps-h2{grid-column:1 / span 5;grid-row:1}
.qps .qps-contact-find__book{grid-column:7 / span 6;grid-row:1 / span 2;display:grid}
.qps-contact-find__book > div{
  display:grid;grid-template-columns:7.5rem minmax(0,1fr);gap:var(--s2);align-items:baseline;
  padding:1.05rem 0;box-shadow:0 1px 0 var(--rule-on-blue);
}
.qps-contact-find__book > div:first-child{box-shadow:0 1px 0 var(--rule-on-blue),0 -1px 0 var(--rule-on-blue)}
.qps-contact-find__book dt{font-size:var(--fs-small);font-weight:540;color:var(--on-blue-2)}
.qps-contact-find__book dd{font-size:var(--fs-lead);font-weight:560;line-height:1.4;color:var(--white);text-wrap:pretty}
.qps-contact-find__book .qps-contact-find__num{font-variant-numeric:tabular-nums lining-nums}
@media (max-width:900px){
  .qps-contact-find__grid{grid-template-rows:none;row-gap:var(--s4)}
  .qps-contact-find__grid > .qps-h2,.qps .qps-contact-find__book{grid-column:1 / -1;grid-row:auto}
}
/* Phone: label above value, so the value gets the full measure. */
@media (max-width:480px){
  .qps-contact-find__book > div{grid-template-columns:minmax(0,1fr);gap:.2rem;padding:.9rem 0}
}


/* ---- pages/privacy.css ---- */
/* ==========================================================================
   Privacy policy. Everything else reuses quantum.css.
   ========================================================================== */

.qps-privacy-date .qps-tick{margin-bottom:var(--s3)}
.qps-privacy-date p{font-size:var(--fs-small);font-weight:560;color:var(--ink-2)}
.qps-privacy-date time{color:var(--ink)}

/* One reading column, a list of section links beside it on desktop. */
.qps-privacy{padding-top:var(--s5)}
.qps-privacy__grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:clamp(1rem,.5rem + 1.6vw,2rem);row-gap:var(--s5);align-items:start}
.qps-privacy__toc{grid-column:1 / span 3;position:sticky;top:calc(var(--head-h) + var(--s4))}
.qps .qps-privacy__toc ol{display:grid}
.qps .qps-privacy__toc li{box-shadow:0 1px 0 var(--rule)}
.qps .qps-privacy__toc li:first-child{box-shadow:0 1px 0 var(--rule),0 -1px 0 var(--rule)}
.qps-privacy__toc a{
  position:relative;display:flex;align-items:center;min-height:44px;padding:.55rem 0 .55rem 1.25rem;
  font-size:var(--fs-small);font-weight:540;line-height:1.3;color:var(--ink-2);text-decoration:none;
  transition:color .2s var(--ease-out);
}
.qps-privacy__toc a::before{
  content:"";position:absolute;left:0;top:50%;width:8px;height:2px;margin-top:-1px;background:var(--gold);
  transform-origin:left center;transition:transform .35s var(--ease-out);
}
.qps-privacy__toc a:hover{color:var(--blue)}
.qps-privacy__toc a:hover::before{transform:scaleX(1.75)}

.qps-privacy__body{grid-column:5 / span 8}
.qps-privacy__block{position:relative;padding-top:var(--s4)}
.qps-privacy__block + .qps-privacy__block{margin-top:var(--s6)}
/* Each block starts at a graduation: a hairline with a gold tick at its zero. */
.qps-privacy__block::before{
  content:"";position:absolute;left:0;right:0;top:0;height:9px;
  background:
    linear-gradient(var(--rule-strong),var(--rule-strong)) 0 0 / 100% 1px no-repeat,
    linear-gradient(var(--gold),var(--gold)) 0 0 / 2px 100% no-repeat;
}
.qps .qps-privacy__body h2{
  font-size:clamp(1.5rem,1.3rem + .8vw,2rem);line-height:1.15;letter-spacing:-.02em;font-weight:600;
  margin-bottom:var(--s3);
}
.qps-privacy__body p{max-width:64ch}
.qps .qps-privacy__body ul{display:grid;gap:.6rem;margin:0 0 1.25em;max-width:62ch}
.qps .qps-privacy__body ul > li{position:relative;padding-left:1.4rem;text-wrap:pretty}
.qps-privacy__body ul > li::before{content:"";position:absolute;left:0;top:.8em;width:9px;height:2px;background:var(--gold)}
.qps-privacy__body .qps-link{overflow-wrap:anywhere}

/* Who we are: the details as measured rows. */
.qps .qps-privacy__book{display:grid;margin:var(--s3) 0 var(--s4);max-width:62ch}
.qps-privacy__book > div{display:grid;grid-template-columns:7rem minmax(0,1fr);gap:var(--s2);align-items:baseline;padding:.8rem 0;box-shadow:0 1px 0 var(--rule)}
.qps-privacy__book > div:first-child{box-shadow:0 1px 0 var(--rule),0 -1px 0 var(--rule)}
.qps-privacy__book dt{font-size:var(--fs-small);font-weight:540;color:var(--ink-3)}
.qps-privacy__book dd{font-weight:560;color:var(--ink);font-variant-numeric:tabular-nums}

@media (max-width:900px){
  .qps-privacy{padding-top:var(--s4)}
  .qps-privacy__toc,.qps-privacy__body{grid-column:1 / -1}
  .qps-privacy__toc{position:static}
  .qps .qps-privacy__toc ol{grid-template-columns:1fr 1fr;column-gap:var(--s3)}
  .qps .qps-privacy__toc li:nth-child(2){box-shadow:0 1px 0 var(--rule),0 -1px 0 var(--rule)}
}
@media (max-width:480px){
  .qps-privacy__book > div{grid-template-columns:minmax(0,1fr);gap:.15rem}
}
@media (prefers-reduced-motion:reduce){
  .qps-privacy__toc a:hover::before{transform:none}
}
@media print{
  .qps-privacy__toc{display:none}
  .qps-privacy__body{grid-column:1 / -1}
}


/* ---- pages/projects.css ---- */
/* Projects page. Shared classes first (qps-head, qps-strip, qps-dim, qps-plane);
   these rules only place the Pitlochry run, the index and the client list. */

/* Hero aside: the credentials as a legend under a scale bar. */
.qps-projects-creds .qps-tick{margin-bottom:var(--s3)}
.qps-projects-creds .qps-creds{flex-direction:column;align-items:flex-start;gap:.55rem}
@media (max-width:900px){.qps-projects-creds .qps-creds{flex-direction:row;align-items:center;gap:.6rem 1.1rem}}

/* --------------------------------------------------------------------------
   Pitlochry: four frames in build order that grow with the building.
   Row one: the title block, then two small frames on its datum.
   Row two: the classrooms, then the floodlit court, largest, on one datum.
   -------------------------------------------------------------------------- */
.qps-sec.qps-projects-lead{padding-top:calc(var(--section) * .5)}
.qps-projects-run{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:clamp(1rem,.5rem + 1.6vw,2rem);row-gap:var(--s6)}
.qps-projects-run .qps-photo{aspect-ratio:4 / 3}
.qps-projects-run__head{grid-column:1 / span 5;align-self:end}
.qps-projects-run__head .qps-lead{margin-top:var(--s3)}
.qps-projects-run__head .qps-muted{margin-top:var(--s2);max-width:44ch}
.qps-projects-run__f1{grid-column:7 / span 3;align-self:end}
.qps-projects-run__f2{grid-column:10 / span 3;align-self:end}
.qps-projects-run__f3{grid-column:1 / span 5;align-self:end}
.qps-projects-run__f4{grid-column:6 / span 7;align-self:end}
.qps-projects-run__f4 .qps-photo{aspect-ratio:3 / 2}
.qps-projects-nb{white-space:nowrap}

/* Title block: a drawing's legend, hairline rows. */
.qps-projects-block{margin:var(--s4) 0 0;display:grid}
.qps-projects-block > div{display:grid;grid-template-columns:8rem minmax(0,1fr);gap:var(--s2);padding:.8rem 0;box-shadow:0 1px 0 var(--rule)}
.qps-projects-block > div:first-child{box-shadow:0 1px 0 var(--rule),0 -1px 0 var(--rule)}
.qps-projects-block dt{font-size:var(--fs-small);font-weight:540;color:var(--ink-3);line-height:1.5;padding-top:.1rem}
.qps-projects-block dd{margin:0;font-weight:580;line-height:1.45}

/* Below 1100px the two small frames get too narrow for one-line callouts. */
@media (max-width:1100px){
  .qps-projects-run{row-gap:var(--s5)}
  .qps-projects-run__head{grid-column:1 / span 9}
  .qps-projects-run__f1{grid-column:1 / span 6;align-self:start}
  .qps-projects-run__f2{grid-column:7 / span 6;align-self:start}
  .qps-projects-run__f3,.qps-projects-run__f4{grid-column:1 / -1}
  .qps-projects-run__f4 .qps-photo{aspect-ratio:4 / 3}
}
@media (max-width:900px){
  .qps-projects-run__head{grid-column:1 / -1}
}
@media (max-width:600px){
  .qps-projects-run__f1,.qps-projects-run__f2{grid-column:1 / -1}
  .qps-projects-block > div{grid-template-columns:6.5rem minmax(0,1fr)}
}

/* --------------------------------------------------------------------------
   Index: the other projects as strips, three across on wide screens.
   -------------------------------------------------------------------------- */
.qps-projects-index{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s4) clamp(1.5rem,.5rem + 2.4vw,3rem)}
@media (min-width:1101px){.qps-projects-index{grid-template-columns:repeat(3,minmax(0,1fr))}}
.qps-projects-index .qps-strip{margin:0}
.qps-projects-index .qps-strip__meta{flex-wrap:wrap;row-gap:.15rem}
.qps-projects-name{font-size:1.125rem;font-weight:600;line-height:1.3;letter-spacing:-.01em}
@media (max-width:760px){
  .qps-projects-index{grid-template-columns:minmax(0,1fr)}
  .qps-projects-index .qps-strip__meta{flex-direction:column;align-items:flex-start}
}

/* --------------------------------------------------------------------------
   Clients on the blue plane: names as measured rows, three across.
   -------------------------------------------------------------------------- */
.qps-projects-clients{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:clamp(1rem,.5rem + 1.6vw,2rem)}
.qps-projects-clients li{position:relative;padding:1.15rem 0 1.15rem 1.6rem;box-shadow:0 1px 0 var(--rule-on-blue);font-size:clamp(1.25rem,1rem + 1vw,1.75rem);font-weight:600;line-height:1.2;letter-spacing:-.02em;color:var(--white)}
.qps-projects-clients li:nth-child(-n+3){box-shadow:0 1px 0 var(--rule-on-blue),0 -1px 0 var(--rule-on-blue)}
.qps-projects-clients li::before{content:"";position:absolute;left:0;top:calc(1.15rem + .6em);width:12px;height:2px;background:var(--gold)}
@media (max-width:1000px){
  .qps-projects-clients{grid-template-columns:repeat(2,minmax(0,1fr))}
  .qps-projects-clients li:nth-child(3){box-shadow:0 1px 0 var(--rule-on-blue)}
}
@media (max-width:600px){
  .qps-projects-clients{grid-template-columns:minmax(0,1fr)}
  .qps-projects-clients li:nth-child(2){box-shadow:0 1px 0 var(--rule-on-blue)}
}


/* ---- pages/services.css ---- */
/* ==========================================================================
   Services page: the stage index under the page hero, and the four stage
   sections (paper and blue in turn). Everything else reuses quantum.css.
   ========================================================================== */

/* In-page index: four stops on a measuring rule, each a jump link. The rule
   sits on the list; each stop carries a gold mark where it meets the rule. */
.qps-services-index{position:relative}
/* .qps prefix: the shared list reset (.qps ol) would otherwise zero the padding. */
.qps .qps-services-index__stops{
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));
  column-gap:clamp(1rem,.5rem + 1.6vw,2rem);padding-top:24px;
  background:
    linear-gradient(var(--rule-strong),var(--rule-strong)) 0 17px / 100% 1px no-repeat,
    repeating-linear-gradient(90deg,var(--rule-strong) 0 1px,transparent 1px 12px) 0 11px / 100% 6px no-repeat,
    repeating-linear-gradient(90deg,var(--rule-strong) 0 1px,transparent 1px 60px) 0 5px / 100% 12px no-repeat;
}
.qps .qps-services-index__stops > li{position:relative}
.qps-services-index__stops > li::before{content:"";position:absolute;left:0;top:-24px;width:2px;height:20px;background:var(--gold)}
.qps-services-index__stops a{
  display:grid;gap:.2rem;align-content:start;min-height:64px;padding:.5rem 1rem .5rem 0;
  text-decoration:none;color:var(--ink);-webkit-tap-highlight-color:transparent;
}
.qps-services-index__stops b{
  display:inline-flex;align-items:center;gap:.45rem;
  font-size:clamp(1.125rem,1rem + .6vw,1.5rem);font-weight:600;letter-spacing:-.015em;line-height:1.2;
  transition:color .2s var(--ease-out);
}
.qps-services-index__stops b svg{width:18px;height:18px;flex:none;color:var(--blue);transform:rotate(90deg);transition:transform .35s var(--ease-out)}
.qps-services-index__stops span{font-size:var(--fs-small);line-height:1.4;color:var(--ink-2);text-wrap:balance}
.qps-services-index__stops a:hover b{color:var(--blue)}
.qps-services-index__stops a:hover b svg{transform:translateY(3px) rotate(90deg)}
@media (max-width:640px){
  /* Two by two: each stop carries its own length of rule. */
  .qps .qps-services-index__stops{grid-template-columns:1fr 1fr;column-gap:0;row-gap:var(--s2);padding-top:0;background:none}
  .qps .qps-services-index__stops > li{
    padding-top:24px;
    background:
      linear-gradient(var(--rule-strong),var(--rule-strong)) 0 17px / 100% 1px no-repeat,
      repeating-linear-gradient(90deg,var(--rule-strong) 0 1px,transparent 1px 12px) 0 11px / 100% 6px no-repeat,
      repeating-linear-gradient(90deg,var(--rule-strong) 0 1px,transparent 1px 60px) 0 5px / 100% 12px no-repeat;
  }
  .qps-services-index__stops > li::before{top:0}
  .qps-services-index__stops a{padding-right:.75rem}
}
@media (prefers-reduced-motion:reduce){
  .qps-services-index__stops a:hover b svg{transform:rotate(90deg)}
}

/* A stage: name, question and what it affects on the left; every task as
   measured rows on the right. */
.qps-services-stage__grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:clamp(1rem,.5rem + 1.6vw,2rem);row-gap:var(--s5);align-items:start}
.qps-services-stage__head{grid-column:1 / span 5}
.qps-services-stage__head > *{margin:0}
.qps-services-stage .qps-services-stage__q{
  margin-top:var(--s2);
  font-size:clamp(1.5rem,1.15rem + 1.2vw,2.25rem);line-height:1.15;letter-spacing:-.02em;font-weight:460;
  color:var(--ink-2);text-wrap:balance;
}
.qps-plane .qps-services-stage__q{color:var(--on-blue-2)}
.qps-services-stage .qps-services-stage__affects{margin-top:var(--s4)}
.qps-services-stage .qps-services-stage__lead{margin-top:var(--s3)}
.qps-services-stage__list{grid-column:7 / span 6}
.qps-services-stage__list .qps-rows{grid-template-columns:1fr 1fr;column-gap:var(--s4)}
.qps-services-stage__list .qps-rows > li:nth-child(2){box-shadow:0 1px 0 var(--rule),0 -1px 0 var(--rule)}
.qps-plane .qps-services-stage__list .qps-rows > li:nth-child(2){box-shadow:0 1px 0 var(--rule-on-blue),0 -1px 0 var(--rule-on-blue)}
/* Short labels wrap in balanced lines; notes avoid a lone last word. */
.qps-services-stage__list .qps-rows strong,.qps-services-all .qps-rows strong{text-wrap:balance}
.qps-services-all .qps-rows span{text-wrap:pretty}
@media (max-width:900px){
  .qps-services-stage__head,.qps-services-stage__list{grid-column:1 / -1}
}
@media (max-width:640px){
  .qps-services-stage__list .qps-rows{grid-template-columns:1fr}
  .qps-services-stage__list .qps-rows > li:nth-child(2){box-shadow:0 1px 0 var(--rule)}
  .qps-plane .qps-services-stage__list .qps-rows > li:nth-child(2){box-shadow:0 1px 0 var(--rule-on-blue)}
}

/* Stage photo under the lead (licensed stock, illustrative). */
.qps-services-stage__fig{margin-top:var(--s4);aspect-ratio:4 / 3}


/* ---- pages/zz-oct2026.css ---- */
/* ==========================================================================
   October 2026 additions (client email of 14 Oct): market strip, sector
   photos, appointments, specialist services, service pages, insights,
   reference letters, project evidence, founder, team. Shared across pages,
   so named zz- to load after the page files.
   ========================================================================== */

/* Market strip: TradingView ticker plus the monthly CPI line. */
.qps-ticker__tape{min-height:46px;box-shadow:0 1px 0 var(--rule),0 -1px 0 var(--rule)}
.qps-ticker__cpi{margin-top:var(--s2);font-size:var(--fs-small);color:var(--ink-2)}
.qps-ticker__cpi b{font-stretch:68%;font-variant-numeric:tabular-nums;font-weight:700;font-size:1.0625rem;color:var(--ink);margin-right:.3em}
.qps-plane .qps-ticker__tape{background:var(--white);box-shadow:none}
.qps-plane .qps-ticker__cpi{color:var(--on-blue-2)}
.qps-plane .qps-ticker__cpi b{color:var(--white)}
.qps-markets-strip{padding-block:var(--s2) var(--s4)}

/* Sector photos: three across, measured captions. */
.qps-sectors{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s5) clamp(1rem,.5rem + 1.6vw,2rem)}
.qps-sector .qps-photo{aspect-ratio:4 / 3}
.qps-sector__meta{position:relative;padding-top:var(--s2);margin-top:var(--s2);box-shadow:0 -1px 0 var(--rule)}
.qps-sector__meta::before{content:"";position:absolute;left:0;top:-1px;width:10px;height:2px;background:var(--gold)}
.qps-sector__meta strong{display:block;font-size:var(--fs-h3);font-weight:600;letter-spacing:-.015em;line-height:1.2}
.qps-sector__meta span{display:block;margin-top:.25rem;color:var(--ink-2);font-size:var(--fs-small)}
@media (max-width:1000px){.qps-sectors{grid-template-columns:1fr 1fr}}
@media (max-width:640px){.qps-sectors{grid-template-columns:1fr}}

/* Appointments with reference letters: a level book of values. */
.qps-appts{margin-top:var(--s6)}
.qps-appts > .qps-h3{margin-bottom:var(--s3)}
.qps-appts__list{display:grid;grid-template-columns:1fr 1fr;column-gap:var(--s5)}
.qps .qps-appt{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.2rem var(--s3);align-items:baseline;padding:var(--s2) 0;text-decoration:none;color:var(--ink);box-shadow:0 1px 0 var(--rule)}
.qps-appt strong{font-weight:600;line-height:1.3}
.qps-appt__value{grid-row:span 2;font-size:clamp(1.75rem,1.3rem + 1.2vw,2.5rem);font-stretch:68%;font-weight:720;font-variant-numeric:tabular-nums;line-height:1}
.qps-appt__meta{font-size:var(--fs-small);color:var(--ink-2)}
.qps-appt:hover strong{color:var(--blue)}
@media (max-width:900px){.qps-appts__list{grid-template-columns:1fr}}

/* Specialist services: list on home, list on the services blue plane. */
.qps-specialist{margin-top:var(--s6)}
.qps-specialist > .qps-h3{margin-bottom:var(--s3)}
.qps-specialist__list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:var(--s5)}
.qps .qps-specialist__list a{display:grid;gap:.2rem;padding:var(--s2) 0 var(--s2) 1.5rem;position:relative;text-decoration:none;color:var(--ink);box-shadow:0 1px 0 var(--rule);min-height:44px}
.qps-specialist__list a::before{content:"";position:absolute;left:0;top:1.62rem;width:10px;height:2px;background:var(--gold)}
.qps-specialist__list strong{font-weight:600}
.qps-specialist__list span{font-size:var(--fs-small);color:var(--ink-2)}
.qps-specialist__list a:hover strong{color:var(--blue)}
.qps-specs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:var(--s5)}
.qps .qps-spec{display:grid;gap:.3rem;padding:var(--s3) 0;text-decoration:none;color:var(--white);box-shadow:0 1px 0 var(--rule-on-blue)}
.qps-spec strong{font-size:var(--fs-h3);font-weight:600;letter-spacing:-.015em;line-height:1.2}
.qps-spec > span:not(.qps-spec__go){color:var(--on-blue-2)}
.qps-spec__go{display:inline-flex;align-items:center;gap:.5rem;font-size:var(--fs-small);font-weight:600;color:var(--gold-text)}
.qps-spec__go svg{width:18px;height:18px;transition:transform .35s var(--ease-out)}
.qps-spec:hover .qps-spec__go svg{transform:translateX(4px)}
@media (max-width:760px){.qps-specialist__list,.qps-specs{grid-template-columns:1fr}}

/* Service pages. */
.qps-svc-aside .qps-tick{margin-bottom:var(--s3)}
.qps-svc-aside__label,.qps-article__aside-label{font-size:var(--fs-small);font-weight:600;color:var(--ink-2);margin-bottom:var(--s2)}
.qps-svc-aside .qps-btn{margin-top:var(--s4);width:100%}
.qps-svc-split{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:clamp(1rem,.5rem + 1.6vw,2rem);row-gap:var(--s4)}
.qps-svc-split__head{grid-column:1 / span 5}
.qps-svc-split__head .qps-lead{margin-top:var(--s3)}
.qps-svc-split__body{grid-column:7 / span 6}
.qps-svc-steps{counter-reset:step}
.qps .qps-svc-steps > li{padding-left:3rem}
.qps .qps-svc-steps > li::before{counter-increment:step;content:counter(step);width:auto;height:auto;background:none;top:1rem;font-stretch:68%;font-weight:720;font-size:1.375rem;line-height:1;color:var(--blue);font-variant-numeric:tabular-nums}
.qps-svc-deliver .qps-rows{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:var(--s5)}
.qps-svc-related__link{display:grid;gap:.2rem;text-decoration:none;color:var(--ink);min-height:44px}
.qps-svc-related__link:hover strong{color:var(--blue)}
@media (max-width:900px){.qps-svc-split__head,.qps-svc-split__body{grid-column:1 / -1}.qps-svc-deliver .qps-rows{grid-template-columns:1fr}}

/* Insights and articles. */
.qps-insights{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 var(--s5)}
.qps .qps-insight__link{display:grid;gap:.5rem;padding:var(--s4) 0;text-decoration:none;color:var(--ink);box-shadow:0 1px 0 var(--rule)}
.qps-insight__link p{color:var(--ink-2);margin:0}
.qps-insight__meta{font-size:var(--fs-small);color:var(--ink-3);font-weight:540}
.qps-insight__link:hover .qps-h3{color:var(--blue)}
.qps-article-meta{margin-top:var(--s3);font-size:var(--fs-small);font-weight:560;color:var(--ink-3)}
.qps-article__grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:clamp(1rem,.5rem + 1.6vw,2rem);row-gap:var(--s5);align-items:start}
.qps-article__body{grid-column:1 / span 7}
.qps .qps-article__body h2{font-size:clamp(1.375rem,1.2rem + .6vw,1.75rem);font-weight:600;letter-spacing:-.02em;line-height:1.2;margin:var(--s5) 0 var(--s2)}
.qps .qps-article__body h2:first-child{margin-top:0}
.qps-article__body p{margin-bottom:1em}
.qps .qps-article__body ul{display:grid;gap:.5rem;margin:0 0 1.25em}
.qps .qps-article__body ul > li{position:relative;padding-left:1.4rem}
.qps-article__body ul > li::before{content:"";position:absolute;left:0;top:.8em;width:9px;height:2px;background:var(--gold)}
.qps-article__aside{grid-column:9 / span 4;position:sticky;top:calc(var(--head-h) + var(--s4))}
.qps-article__aside .qps-tick{margin-bottom:var(--s3)}
.qps-article__aside .qps-h3{margin-bottom:.5rem}
.qps-article__aside p{color:var(--ink-2)}
.qps-article__aside .qps-actions{margin-top:var(--s3)}
@media (max-width:900px){.qps-insights{grid-template-columns:1fr}.qps-article__body,.qps-article__aside{grid-column:1 / -1}.qps-article__aside{position:static}}

/* Reference letters and project evidence: facts as a level book. */
.qps-refs,.qps-evs{display:grid;gap:var(--s6)}
.qps-ref,.qps-ev{position:relative;padding-top:var(--s4);box-shadow:0 -1px 0 var(--rule-strong)}
.qps-ref::before,.qps-ev::before{content:"";position:absolute;left:0;top:-1px;width:2px;height:9px;background:var(--gold)}
.qps-ref,.qps-ev{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:clamp(1rem,.5rem + 1.6vw,2rem);row-gap:var(--s3)}
.qps-ref__head{grid-column:1 / span 4}
.qps-ref__by{margin-top:.5rem;font-size:var(--fs-small);color:var(--ink-2)}
.qps-ref__facts,.qps-ev__facts{display:grid}
.qps-ref__facts,.qps-ref > .qps-go{grid-column:5 / span 8}
.qps-ref__facts > div,.qps-ev__facts > div{display:grid;grid-template-columns:9rem minmax(0,1fr);gap:var(--s2);padding:.7rem 0;box-shadow:0 1px 0 var(--rule);align-items:baseline}
.qps-ref__facts dt,.qps-ev__facts dt{font-size:var(--fs-small);font-weight:540;color:var(--ink-3)}
.qps-ref__value,.qps-ev__value{font-size:1.75rem;line-height:1;font-stretch:68%;font-weight:720;font-variant-numeric:tabular-nums}
.qps-ev__fig{grid-column:1 / span 4}
.qps-ev__fig .qps-photo{aspect-ratio:4 / 3}
.qps-ev__body{grid-column:5 / span 8}
.qps-ev:not(:has(.qps-ev__fig)) .qps-ev__body{grid-column:1 / span 8}
.qps-ev__body .qps-h3{margin-bottom:var(--s2)}
.qps-ev__body .qps-go{margin-top:var(--s2)}
@media (max-width:900px){.qps-ref__head,.qps-ref__facts,.qps-ref > .qps-go,.qps-ev__fig,.qps-ev__body,.qps-ev:not(:has(.qps-ev__fig)) .qps-ev__body{grid-column:1 / -1}.qps-ref__facts > div,.qps-ev__facts > div{grid-template-columns:7rem minmax(0,1fr)}}

/* Founder-led experience: a measured table on the blue plane. */
.qps-exp{overflow-x:auto}
.qps-exp__table{width:100%;border-collapse:collapse;font-size:var(--fs-body)}
.qps-exp__table th,.qps-exp__table td{text-align:left;padding:.85rem var(--s2) .85rem 0;box-shadow:0 1px 0 var(--rule-on-blue);vertical-align:baseline}
.qps-exp__table thead th{font-size:var(--fs-small);font-weight:600;color:var(--on-blue-2)}
.qps-exp__table tbody th{font-weight:600;color:var(--white)}
.qps-exp__table td{color:var(--on-blue-2)}
.qps-exp__table .qps-exp__value{text-align:right;color:var(--white);font-stretch:68%;font-weight:720;font-size:1.375rem;font-variant-numeric:tabular-nums;white-space:nowrap;padding-right:0}
.qps-exp__table thead th:last-child{text-align:right;padding-right:0}
@media (max-width:640px){.qps-exp__table td:nth-child(3),.qps-exp__table th:nth-child(3){display:none}}

/* Founder and team. */
.qps-about-founder__copy{grid-column:1 / span 7}
.qps-about-founder__role{margin:.25rem 0 var(--s3);font-weight:600;color:var(--ink-2)}
.qps-about-founder__copy .qps-lead{max-width:56ch;margin-bottom:var(--s2)}
.qps .qps-about-founder__sub{margin:var(--s5) 0 var(--s2)}
.qps-about-founder__tl{grid-column:9 / span 4}
.qps-about-founder__tl .qps-h3{margin-bottom:var(--s2)}
.qps-tl{display:grid}
.qps .qps-tl__row{display:grid;grid-template-columns:4.5rem minmax(0,1fr);gap:var(--s2);padding:.8rem 0;box-shadow:0 1px 0 var(--rule);align-items:baseline}
.qps-tl__year{font-stretch:68%;font-weight:720;font-size:1.5rem;line-height:1;color:var(--blue);font-variant-numeric:tabular-nums}
.qps-tl__text{font-size:var(--fs-small);line-height:1.5}
.qps-team{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:var(--s5)}
.qps .qps-team li{display:grid;gap:.15rem;padding:var(--s3) 0;box-shadow:0 1px 0 var(--rule)}
.qps-team strong{font-weight:600}
.qps-team__role{font-size:var(--fs-small);color:var(--ink)}
.qps-team__qual{font-size:var(--fs-small);color:var(--ink-3)}
@media (max-width:1000px){.qps-team{grid-template-columns:1fr 1fr}}
@media (max-width:900px){.qps-about-founder__copy,.qps-about-founder__tl{grid-column:1 / -1}}
@media (max-width:600px){.qps-team{grid-template-columns:1fr}}

/* Contact: the route to a larger project enquiry. */
.qps-contact-project{margin-top:var(--s5)}
.qps-contact-project .qps-tick{margin-bottom:var(--s3)}
.qps-contact-project p{color:var(--ink-2);margin:.5rem 0 var(--s2)}

/* Accreditations and partners (client email of 19 Oct): each group is a
   measured row, its name on the left and the logos on the right. The logos
   keep the client's white grounds; multiply drops them onto the paper. */
.qps-partners__group{position:relative;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:clamp(1rem,.5rem + 1.6vw,2rem);padding-top:var(--s4);box-shadow:0 -1px 0 var(--rule-strong)}
.qps-partners__group + .qps-partners__group{margin-top:var(--s6)}
.qps-partners__group::before{content:"";position:absolute;left:0;top:-1px;width:2px;height:9px;background:var(--gold)}
.qps-partners__group > .qps-h3{grid-column:1 / span 3}
.qps-partners{grid-column:4 / span 9;display:grid;grid-template-columns:repeat(auto-fill,minmax(12rem,1fr));gap:var(--s5) clamp(1rem,.5rem + 1.6vw,2rem)}
.qps-partner__mark{height:96px;display:flex;align-items:center}
.qps-partner__mark img{mix-blend-mode:multiply}
.qps-partner__name{margin-top:var(--s2);padding-top:var(--s2);box-shadow:0 -1px 0 var(--rule);font-size:var(--fs-small);line-height:1.35;color:var(--ink-2)}
.qps-partners__after{display:flex;flex-wrap:wrap;gap:var(--s3) var(--s5);margin-top:var(--s6)}
@media (max-width:900px){
  .qps-partners__group > .qps-h3,.qps-partners{grid-column:1 / -1}
  .qps-partners{margin-top:var(--s5)}
}
@media (max-width:520px){
  .qps-partners{grid-template-columns:1fr 1fr}
  .qps-partner__mark{height:72px}
}

/* Achievements (client email of 22 Oct): the certificate beside its facts. */
.qps-award .qps-grid{align-items:center;row-gap:var(--s5)}
.qps-award__copy{grid-column:1 / span 5}
.qps-award__copy .qps-lead{margin-top:var(--s3)}
.qps-award__facts{margin-top:var(--s4)}
.qps-award__copy .qps-after{margin-top:var(--s4)}
.qps-award__fig{grid-column:7 / span 6}
.qps-award__fig .qps-photo{aspect-ratio:3290 / 2282;background:var(--white)}
.qps-award__open{display:block;color:inherit;text-decoration:none}
@media (max-width:900px){
  .qps-award__copy,.qps-award__fig{grid-column:1 / -1}
}
