/* ===== <style> ===== */

/* ---- embedded typefaces (no remote requests) ---- */
@font-face{font-family:'Archivo';font-style:normal;font-weight:500;font-display:swap;src:url(fonts/archivo-500-ab74eca5.woff2) format('woff2')}
@font-face{font-family:'Archivo';font-style:normal;font-weight:600;font-display:swap;src:url(fonts/archivo-600-d9e8c29f.woff2) format('woff2')}
@font-face{font-family:'Archivo';font-style:normal;font-weight:700;font-display:swap;src:url(fonts/archivo-700-abada6cd.woff2) format('woff2')}
@font-face{font-family:'Archivo';font-style:normal;font-weight:800;font-display:swap;src:url(fonts/archivo-800-c26cda24.woff2) format('woff2')}
@font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/inter-400-8909904a.woff2) format('woff2')}
@font-face{font-family:'Inter';font-style:normal;font-weight:500;font-display:swap;src:url(fonts/inter-500-f3779f1e.woff2) format('woff2')}
@font-face{font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;src:url(fonts/inter-600-f9a06e79.woff2) format('woff2')}
@font-face{font-family:'Anton';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/anton-400-d0fa07ff.woff2) format('woff2')}

/* ---- shared stylesheet of the six document pages ---- */
@font-face{font-family:'AntonLocal';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/antonlocal-400-d0fa07ff.woff2) format('woff2')}

:root{
  --bg:#f3f1ea; --panel:#fbfaf6; --bone:#e8e5db;
  --ink:#2b2822; --grey:#5f5a50; --faint:#5e584d;
  --line:#2b2822; --gold:#0d7a55; --gold2:#17a877;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:80px}
body{margin:0;background:var(--bg);color:var(--ink);font-family:'Inter',system-ui,sans-serif;line-height:1.55;-webkit-font-smoothing:antialiased;overflow-x:hidden}
h1,h2,h3,.disp{font-family:'AntonLocal','Anton',sans-serif;font-weight:400;margin:0;line-height:.92;letter-spacing:.005em;text-transform:uppercase}
p{margin:0}a{color:inherit;text-decoration:none}
.wrap{max-width:1240px;margin:0 auto;padding:0 32px}
.gold{color:var(--gold)}
.tag{display:inline-flex;align-items:center;gap:10px;font-family:'Archivo';font-size:12px;font-weight:700;letter-spacing:.2em;text-transform:uppercase}
.tag::before{content:"";width:30px;height:2px;background:var(--gold)}
.btn{display:inline-flex;align-items:center;gap:10px;font-family:'Archivo';font-weight:700;font-size:13px;letter-spacing:.12em;text-transform:uppercase;padding:16px 26px;transition:.2s;cursor:pointer;border:2px solid var(--ink)}
.btn-p{background:var(--ink);color:var(--bg)}.btn-p:hover{background:var(--gold);border-color:var(--gold);color:#fff}
.btn-o{background:transparent;color:var(--ink)}.btn-o:hover{background:var(--ink);color:var(--bg)}
.section{padding:110px 0;border-top:2px solid var(--ink)}
/* Reveal is a progressive enhancement: content is visible unless JS confirms
   it can animate it. Prevents a blank page when JS fails or is disabled. */
.js-reveal .rv{opacity:0;transform:translateY(24px);transition:.7s cubic-bezier(.2,.7,.2,1)}
.js-reveal .rv.in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){
  .js-reveal .rv{opacity:1!important;transform:none!important;transition:none!important}
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
}
/* Keyboard focus visibility */
:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
.skip-link{position:absolute;left:-9999px;top:0;z-index:200;background:var(--ink);color:var(--bg);
  font-family:'Archivo';font-weight:700;font-size:13px;letter-spacing:.1em;text-transform:uppercase;padding:14px 20px;text-decoration:none}
.skip-link:focus{left:0}

header{position:fixed;inset:0 0 auto 0;z-index:50;background:var(--bg);border-bottom:2px solid var(--ink)}
.nav{display:flex;align-items:center;justify-content:space-between;height:70px}
.logo{font-family:'AntonLocal','Anton';font-size:24px;letter-spacing:.02em;text-transform:uppercase}
.nav-links{display:flex;gap:30px}
.nav-links a{font-family:'Archivo';font-size:13px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;position:relative;padding:4px 0}
.nav-links a::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--gold);transition:.25s}
.nav-links a:hover::after,.nav-links a.act::after{width:100%}
.nav-links a.act{color:var(--gold)}
.burger{display:none;background:none;border:0;font-size:1.4rem;cursor:pointer}

/* page hero header (sub-pages) */
.phead{padding:150px 0 70px;border-bottom:2px solid var(--ink)}
.phead h1{font-size:clamp(3rem,9vw,7rem)}
.phead .sub{font-size:1.15rem;max-width:560px;color:var(--grey);margin-top:22px}

/* home hero */
.hero{padding:130px 0 0}
.hero h1{font-size:clamp(3.4rem,12vw,10rem)}
.hero .row2{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;flex-wrap:wrap}
.hero .sub{font-size:1.2rem;max-width:440px;color:var(--grey);margin:24px 0 30px}
.hero-actions{display:flex;gap:12px;flex-wrap:wrap}
.hero-num{font-family:'AntonLocal','Anton';font-size:clamp(4rem,9vw,8rem);color:transparent;-webkit-text-stroke:2px var(--ink);line-height:.8}
.marq{border-top:2px solid var(--ink);border-bottom:2px solid var(--ink);background:var(--gold);color:#fff;overflow:hidden;padding:14px 0;margin-top:70px}
.marq-in{display:flex;gap:40px;white-space:nowrap;animation:mq 26s linear infinite;font-family:'AntonLocal','Anton';font-size:1.5rem;text-transform:uppercase;letter-spacing:.03em}
@keyframes mq{to{transform:translateX(-50%)}}
.marq-in span{display:inline-flex;gap:40px}

.rows{margin-top:40px;border-top:2px solid var(--ink)}
.row{display:grid;grid-template-columns:120px 1fr 1.2fr auto;gap:24px;align-items:center;padding:28px 0;border-bottom:2px solid var(--ink);transition:.25s}
.row:hover{background:var(--ink);color:var(--bg);padding-left:20px;padding-right:20px}
.row:hover .rnum{color:var(--gold);-webkit-text-stroke:0}
.row:hover .rmetric{color:var(--gold2)}
.rnum{font-family:'AntonLocal','Anton';font-size:3rem;color:transparent;-webkit-text-stroke:2px var(--ink);line-height:1}
.rtitle{font-family:'Archivo';font-weight:800;font-size:1.5rem;text-transform:uppercase;letter-spacing:.01em}
.rdesc{font-size:.98rem;opacity:.85}
.rmetric{font-family:'AntonLocal','Anton';font-size:1.5rem;color:var(--gold)}

.pgrid{display:grid;grid-template-columns:repeat(2,1fr);border:2px solid var(--ink)}
.pcell{padding:26px;border-right:2px solid var(--ink);border-bottom:2px solid var(--ink);transition:.2s;display:flex;gap:18px}
.pcell:nth-child(2n){border-right:0}
.pcell:hover{background:var(--gold);color:#fff}
.pcell .pn{font-family:'AntonLocal','Anton';font-size:2.4rem;line-height:.9;color:transparent;-webkit-text-stroke:2px var(--ink)}
.pcell:hover .pn{color:transparent;-webkit-text-stroke:2px #fff}
.pcell h4{font-family:'Archivo';font-weight:800;font-size:1.05rem;text-transform:uppercase;letter-spacing:.01em}
.pcell p{font-size:.86rem;color:var(--grey);margin-top:6px}
.pcell:hover p{color:rgba(255,255,255,.9)}

.sols{display:grid;grid-template-columns:repeat(3,1fr);border:2px solid var(--ink)}
.sol{padding:34px 28px;border-right:2px solid var(--ink);transition:.2s}
.sol:last-child{border-right:0}
.sol:hover{background:var(--ink);color:var(--bg)}
.sol .sn{font-family:'AntonLocal','Anton';font-size:2.4rem;line-height:.9;color:transparent;-webkit-text-stroke:2px var(--ink)}
.sol h3{font-family:'Archivo';font-weight:800;font-size:1.4rem;text-transform:uppercase;margin:10px 0}
.sol p{font-size:.92rem;color:var(--grey)}.sol:hover p{color:rgba(240,235,226,.8)}
.sol:hover .sn{color:transparent;-webkit-text-stroke:2px #fff}

.sectors{display:flex;flex-direction:column;gap:0;margin-top:40px;max-width:720px;border-top:2px solid var(--ink)}
.chip{font-family:'Archivo';font-weight:700;font-size:1.05rem;text-transform:uppercase;letter-spacing:.03em;border:0;border-bottom:2px solid var(--ink);padding:18px 4px;transition:.2s}
.chip:hover{background:var(--ink);color:var(--bg);padding-left:16px}

.team{display:grid;grid-template-columns:repeat(3,1fr)}
.mem{padding:34px 28px;transition:.2s}
.mem:hover{background:var(--ink);color:var(--bg)}
.mem .mn{font-family:'AntonLocal','Anton';font-size:2.6rem;color:transparent;-webkit-text-stroke:2px var(--ink);line-height:.9}
.mem:hover .mn{-webkit-text-stroke:2px var(--gold)}
.mem h3{font-family:'Archivo';font-weight:800;font-size:1.3rem;text-transform:uppercase;margin:14px 0 4px}
.mem .role{font-family:'Archivo';font-size:12px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--gold)}
.mem p{font-size:.88rem;color:var(--grey);margin-top:10px}.mem:hover p{color:rgba(240,235,226,.8)}

/* case rows */
.cases{border-top:2px solid var(--ink);margin-top:40px}
.case{display:grid;grid-template-columns:auto 1fr;gap:24px;align-items:center;padding:26px 0;border-bottom:2px solid var(--ink);transition:.25s}
.case:hover{background:var(--ink);color:var(--bg);padding-left:18px;padding-right:18px}
.case .ct{font-family:'Archivo';font-weight:700;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--gold);border:2px solid var(--gold);padding:6px 12px;white-space:nowrap}
.case h4{font-family:'Archivo';font-weight:800;font-size:1.25rem;text-transform:uppercase}
.case p{font-size:.9rem;color:var(--grey);margin-top:4px}.case:hover p{color:rgba(240,235,226,.8)}

/* contact form */
.cform{display:grid;grid-template-columns:1fr 1fr;gap:0;border:2px solid var(--ink);margin-top:44px}
.cform .field{border-right:2px solid var(--ink);border-bottom:2px solid var(--ink)}
.cform .field:nth-child(2n){border-right:0}
.cform .full{grid-column:1/3;border-right:0}
.cform label{display:block;font-family:'Archivo';font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--faint);padding:16px 20px 0}
.cform input,.cform textarea,.cform select{width:100%;border:0;background:transparent;font-family:'Inter';font-size:1rem;color:var(--ink);padding:6px 20px 18px;outline:none;resize:none}
.cform select{border-radius:0;cursor:pointer}
.field label .opt{font-weight:400;letter-spacing:0;text-transform:none;color:var(--faint)}
.cform input:focus,.cform textarea:focus,.cform select:focus{background:var(--panel)}
.cbar{padding:18px 0;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:14px}
.cinfo{display:grid;grid-template-columns:repeat(3,1fr);gap:0}
.cinfo div{padding:22px 22px 22px 0}
.cinfo .k{font-family:'Archivo';font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--faint)}
.cinfo .v{font-family:'Archivo';font-weight:700;margin-top:6px}
.cform .ferr{display:block;color:#a5311f;font-size:.82rem;padding:0 20px 14px}
.cform [aria-invalid="true"]{background:#fdf3f1}
.cf-status{margin-top:18px;font-family:'Archivo';font-weight:700;font-size:.9rem;color:var(--ink)}
.cf-fallback{margin-top:10px;font-size:.9rem;color:var(--grey)}
.cf-fallback a{color:var(--ink);text-decoration:underline;text-underline-offset:3px}
.cbar-note{margin:0;font-size:.9rem;color:var(--grey);max-width:520px}
.cbar-nojs a{color:var(--ink);text-decoration:underline;text-underline-offset:3px}
.cform .fhint{margin:4px 0 0;padding:0 20px;font-size:.82rem;line-height:1.45;color:var(--grey)}

.cta{padding:120px 0;background:var(--ink);color:var(--bg);text-align:center}
.cta h2{font-size:clamp(2.6rem,7vw,5.5rem)}
.cta p{max-width:520px;margin:20px auto 34px;opacity:.85}
.cta .btn-p{background:var(--gold);border-color:var(--gold);color:#fff}.cta .btn-p:hover{background:var(--bg);color:var(--ink);border-color:var(--bg)}
footer{border-top:2px solid var(--ink);padding:50px 0}
.foot{display:flex;justify-content:space-between;flex-wrap:wrap;gap:20px;align-items:center}
.foot .logo{font-size:20px}
/* wrap instead of fixed left margins — prevented horizontal overflow at 375/390px */
.foot-links{display:flex;flex-wrap:wrap;gap:10px 22px}
.foot a{font-family:'Archivo';font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.08em}
.foot a:hover{color:var(--gold)}
.copy{font-family:'Archivo';font-size:12px;color:var(--faint);width:100%;text-align:right;margin-top:10px}
@media(max-width:900px){.nav-links{display:none}.burger{display:block}.row{grid-template-columns:70px 1fr;gap:14px}.rdesc,.rmetric{display:none}.pgrid,.sols,.team,.cform,.cinfo{grid-template-columns:1fr}.pcell,.sol,.mem{border-right:0}.cform .field,.cform .full{border-right:0}.cinfo div{padding:14px 0}.section{padding:76px 0}.case{grid-template-columns:1fr}}
#prog{position:fixed;top:0;left:0;height:3px;width:0;background:var(--gold);z-index:60;transition:width .12s ease-out}
.logo img{height:30px;display:block}
.foot .logo img{height:30px}
@media(max-width:900px){.demo-btn{display:none}.burger{position:relative;z-index:2}header.open .nav-links{display:flex;position:absolute;top:70px;left:0;right:0;flex-direction:column;background:var(--bg);border-bottom:2px solid var(--ink);padding:6px 32px 16px;gap:0}header.open .nav-links a{padding:13px 0;border-bottom:1px solid rgba(43,40,34,.12)}header.open .nav-links a::after{display:none}}

.hero h1,.section h2{overflow-wrap:break-word;max-width:100%}
.srows{margin-top:40px;border-top:2px solid var(--ink)}
.srow{display:grid;grid-template-columns:120px 1fr;gap:24px;align-items:center;padding:26px 0;border-bottom:2px solid var(--ink);transition:.25s}
.srow:hover{background:var(--ink);color:var(--bg);padding-left:20px;padding-right:20px}
.srow:hover .rnum{color:var(--gold);-webkit-text-stroke:0}
.rsub{font-family:'Inter';font-weight:400;font-size:.95rem;color:var(--grey);margin-top:6px;text-transform:none;letter-spacing:0}
.srow:hover .rsub{color:rgba(240,235,226,.82)}
.sol-verticals{display:grid;grid-template-columns:1fr 1fr;gap:44px;margin-top:16px}
.vert-h{font-family:'AntonLocal','Anton',sans-serif;font-weight:400;text-transform:uppercase;font-size:clamp(1.6rem,3vw,2.4rem);color:var(--gold);border-bottom:2px solid var(--ink);padding-bottom:10px;margin-bottom:2px}
@media(max-width:900px){.sol-verticals{grid-template-columns:1fr;gap:26px}}
@media(max-width:900px){.srow{grid-template-columns:70px 1fr;gap:14px}}
.mem .photo{width:100%;aspect-ratio:1/1;overflow:hidden;margin-bottom:16px;background:var(--bone)}
.mem .photo img{width:100%;height:100%;object-fit:cover;display:block}
.mem:hover .photo{outline:2px solid var(--gold);outline-offset:-2px}
@media(max-width:900px){
  .rv{opacity:1 !important;transform:none !important}
  .pgrid,.sols,.team,.cform,.cinfo{grid-template-columns:1fr !important}
  .cform .field,.cform .full{border-right:0 !important;grid-column:auto !important}
  .cform input,.cform textarea{width:100%}
  .cinfo div{padding:14px 0}
  .row{padding-left:0 !important;padding-right:0 !important}
  .sectors{max-width:100%}
}
@media(max-width:600px){.hero h1{font-size:clamp(3rem,13vw,5rem)}}
.prose{max-width:860px}
.prose .lead{font-size:1.22rem;line-height:1.6;color:var(--ink);margin-top:8px}
.prose p{color:var(--grey);font-size:1.06rem;line-height:1.72;margin-top:18px}
.prose h3{font-family:'Archivo';font-weight:800;font-size:1.5rem;text-transform:uppercase;letter-spacing:.01em;margin-top:48px;color:var(--ink);border-top:2px solid var(--ink);padding-top:22px}
.prose h4{font-family:'Archivo';font-weight:700;font-size:1.02rem;text-transform:uppercase;letter-spacing:.06em;margin-top:26px;color:var(--gold)}
.prose h4+p{margin-top:8px}
.plabel{font-family:'Archivo';font-weight:700;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--gold)}


/* ---- home / portal hub stylesheet, scoped to its own view ---- */
@font-face{font-family:'AntonLocal';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/antonlocal-400-d0fa07ff.woff2) format('woff2')}:root{--paper:#f3f1ea;--ink:#2b2822;--grey:#5f5a50;--acc:#0d7a55;--acc2:#17a877}#home *{box-sizing:border-box}html.is-home{scroll-snap-type:y mandatory;scroll-behavior:smooth}#home{color:var(--ink);font-family:'Inter',system-ui,sans-serif;-webkit-font-smoothing:antialiased}#home .hlinks a,#home .portal,#home .dots a{color:inherit;text-decoration:none}#home .hubnav{position:fixed;top:0;left:0;right:0;z-index:40;background:rgba(243,241,234,.82);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:2px solid var(--ink)}#home .hubwrap{max-width:1240px;margin:0 auto;padding:0 32px;height:70px;display:flex;align-items:center;justify-content:space-between}#home .hlogo img{height:30px;display:block}#home .hlinks{display:flex;gap:30px}#home .hlinks a{font-family:'Archivo',sans-serif;font-size:.7rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--grey);position:relative}#home .hlinks a:hover{color:var(--ink)}#home .hlinks a.act{color:var(--acc)}#home .hlinks a.act::after,#home .hlinks a:hover::after{content:"";position:absolute;left:0;bottom:-6px;width:100%;height:2px;background:var(--acc)}#home .hdemo{font-family:'Archivo',sans-serif;font-size:.66rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--paper);background:var(--ink);padding:11px 20px}#home .hburger{display:none;background:none;border:0;font-size:1.4rem;color:var(--ink);cursor:pointer}@media(max-width:900px){#home .hlinks,#home .hdemo{display:none}#home .hburger{display:block}#home .hubnav.open .hlinks{display:flex;position:absolute;top:70px;left:0;right:0;flex-direction:column;background:var(--paper);border-bottom:2px solid var(--ink);padding:8px 32px 16px;gap:0}#home .hubnav.open .hlinks a{padding:13px 0;border-bottom:1px solid rgba(43,40,34,.14)}#home .hubnav.open .hlinks a.act::after,#home .hubnav.open .hlinks a:hover::after{display:none}}#home .hint{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);z-index:30;font-family:'Archivo',sans-serif;font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--grey);animation:bob 2s ease-in-out infinite}@keyframes bob{0%,100%{transform:translateX(-50%) translateY(0)}50%{transform:translateX(-50%) translateY(6px)}}#home .dots{position:fixed;top:50%;right:30px;transform:translateY(-50%);z-index:30;display:flex;flex-direction:column;gap:12px}#home .dots a{width:11px;height:11px;border:2px solid var(--ink);border-radius:50%;transition:.25s}#home .dots a.on{background:var(--acc);border-color:var(--acc)}#home :focus-visible{outline:3px solid var(--acc);outline-offset:3px}#home .skip-link{position:absolute;left:-9999px;top:0;z-index:200;background:var(--ink);color:var(--paper);
  font-family:'Archivo',sans-serif;font-weight:700;font-size:13px;letter-spacing:.1em;text-transform:uppercase;padding:14px 20px;text-decoration:none}#home .skip-link:focus{left:0}@media(prefers-reduced-motion:reduce){html.is-home{scroll-snap-type:none!important;scroll-behavior:auto!important}#home .hint{animation:none!important}#home *,#home *::before,#home *::after{transition-duration:.001ms!important}
}@media(max-width:700px){html.is-home{scroll-snap-type:none}}#home .portal{min-height:100vh;scroll-snap-align:start;display:flex;flex-direction:column;justify-content:center;padding:0 7vw;position:relative;overflow:hidden;border-bottom:2px solid var(--ink);transition:background .35s}#home .portal:hover{background:#efece2}#home .bgnum{position:absolute;right:2vw;bottom:-4vh;font-family:'AntonLocal','Anton',sans-serif;font-size:44vh;line-height:.8;color:transparent;-webkit-text-stroke:2px rgba(43,40,34,.10);pointer-events:none;user-select:none}#home .eyebrow{display:inline-flex;align-items:center;gap:14px;font-family:'Archivo',sans-serif;font-size:.8rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--acc);position:relative;z-index:2}#home .eyebrow::before{content:"";width:44px;height:2px;background:var(--acc)}#home .portal h1{font-family:'AntonLocal','Anton',sans-serif;font-weight:400;text-transform:uppercase;font-size:clamp(3rem,10vw,9rem);line-height:.9;letter-spacing:.01em;margin:22px 0 0;position:relative;z-index:2;max-width:14ch}#home .portal h1 em{font-style:normal;color:var(--acc);position:relative}#home .portal h1 em::after{content:"";position:absolute;left:0;bottom:.06em;width:0;height:.09em;background:var(--acc);transition:width .4s ease}#home .portal:hover h1 em::after{width:100%}#home .portal .sub{font-size:1.15rem;color:var(--grey);max-width:560px;margin-top:26px;position:relative;z-index:2}#home .enter{display:inline-flex;align-items:center;gap:12px;margin-top:34px;font-family:'Archivo',sans-serif;font-weight:700;font-size:.8rem;letter-spacing:.16em;text-transform:uppercase;color:var(--ink);position:relative;z-index:2}#home .enter .arrow{display:inline-block;transition:transform .25s}#home .portal:hover .enter .arrow{transform:translateX(8px)}#home .enter .box{border:2px solid var(--ink);padding:14px 24px;transition:.25s}#home .portal:hover .enter .box{background:var(--ink);color:var(--paper)}@media(max-width:700px){#home .brand{top:18px;left:22px}#home .portal{padding:0 24px}#home .dots{right:16px}#home .bgnum{font-size:32vh}#home .portal .sub{font-size:1rem}}


/* ---- review shell: exactly one page view is laid out at a time ---- */
.view[hidden]{display:none!important}
/* No-JavaScript fallback: fragment navigation still switches the page view.
   Declared after .view[hidden] so it wins on equal specificity. Has no effect
   while the script is running, because the script keeps the same view visible. */
.view:target{display:block!important}
body:has(.view:target) .view:not(:target){display:none!important}
html.is-home{scroll-snap-type:y mandatory;scroll-behavior:smooth}
html:not(.is-home){scroll-snap-type:none}
@media(prefers-reduced-motion:reduce){html.is-home{scroll-snap-type:none;scroll-behavior:auto}}
@media(max-width:700px){html.is-home{scroll-snap-type:none}}

/* QA repair 1: the HTML hidden attribute must win over display:block */
.cform .ferr[hidden],.cf-status[hidden]{display:none!important}
/* QA repair 5a: heading levels corrected; the original visual style is kept
   by mirroring the declarations the previous tag used. */
#architecture .prose h3.h-sub{font-family:'Archivo';font-weight:700;font-size:1.02rem;
  text-transform:uppercase;letter-spacing:.06em;color:var(--gold);line-height:1.3}
#ai-platform .case h3.h-sub-case{font-family:'Archivo';font-weight:800;font-size:1.25rem;
  text-transform:uppercase;line-height:1.2;margin:0}
#team .mem h2.h-mem{font-family:'Archivo';font-weight:800;font-size:1.3rem;
  text-transform:uppercase;margin:14px 0 4px;line-height:1.2;letter-spacing:.005em}
/* QA repair 5b: role label keeps AA contrast when the card inverts on hover */
#team .mem:hover .role{color:var(--gold2)}
/* QA repair 5c: 44x44 minimum touch target; the glyph size is unchanged */
@media(max-width:900px){
  .burger{min-width:44px;min-height:44px;display:inline-flex!important;
    align-items:center;justify-content:center;padding:0}
  #home .hburger{min-width:44px;min-height:44px;display:inline-flex!important;
    align-items:center;justify-content:center;padding:0}
}
/* ===== <style data-tophdr=""> ===== */

/* =========================================================================
   ONE GLOBAL MOBILE HEADER — the single navigation surface at 900px and below.
   Sticky, in normal document flow, so its layout space can never be removed.
   ========================================================================= */
.ghdr{display:none}

@media(max-width:900px){
  /* one compact header row; the section sheet overlays the page */
  .ghdr{
    display:flex;align-items:center;justify-content:space-between;width:100%;
    height:72px;min-height:72px;padding:0;box-sizing:border-box;
    background:var(--bg);border-bottom:2px solid var(--ink);
    z-index:2147483647;
    position:-webkit-sticky;position:sticky;top:0;
  }
  .ghdr-main{
    display:flex;align-items:center;justify-content:space-between;
    width:100%;height:72px;min-height:72px;padding:0 22px;box-sizing:border-box;
  }
  .ghdr-logo{display:flex;align-items:center;flex:0 1 auto;min-width:0;overflow:hidden;text-decoration:none}
  /* nominal 30px; on very narrow screens the mark scales down proportionally
     instead of colliding with the button — the aspect ratio never changes */
  .ghdr-logo img{height:30px;width:auto;max-width:100%;display:block;
    object-fit:contain;object-position:left center}

  /* the labelled button — never an icon on its own */
  .ghdr-toggle{
    flex:0 0 auto;display:inline-flex;align-items:center;gap:9px;
    min-height:44px;min-width:44px;padding:0 2px 0 10px;margin-left:14px;
    background:none;border:0;cursor:pointer;color:var(--ink);
    font-family:'Archivo',sans-serif;font-weight:700;font-size:12px;
    letter-spacing:.14em;text-transform:uppercase;
    -webkit-tap-highlight-color:transparent;
  }
  .ghdr-toggle .gt-icon{font-size:17px;line-height:1;letter-spacing:0;width:22px;text-align:center}
  .ghdr-toggle,.ghdr-toggle:hover{text-decoration:none}
  /* zero-size route targets; they never affect layout */
  .ghdr-anchor{position:absolute;top:0;left:0;width:0;height:0;overflow:hidden}

  /* Which SECTIONS anchor is on screen follows the active route, so the link
     always opens the sheet *for that route*. No script is involved. */
  .ghdr-toggle{display:none}
  .gt-open[data-r="home"]{display:inline-flex}
  body:has(#architecture:target) .gt-open{display:none}
  body:has(#architecture:target) .gt-open[data-r="architecture"]{display:inline-flex}
  body:has(#ai-platform:target) .gt-open{display:none}
  body:has(#ai-platform:target) .gt-open[data-r="ai-platform"]{display:inline-flex}
  body:has(#algorithms:target) .gt-open{display:none}
  body:has(#algorithms:target) .gt-open[data-r="algorithms"]{display:inline-flex}
  body:has(#rnd:target) .gt-open{display:none}
  body:has(#rnd:target) .gt-open[data-r="rnd"]{display:inline-flex}
  body:has(#team:target) .gt-open{display:none}
  body:has(#case-studies:target) .gt-open{display:none}
  body:has(#team:target) .gt-open[data-r="team"]{display:inline-flex}
  body:has(#case-studies:target) .gt-open[data-r="case-studies"]{display:inline-flex}
  body:has(#contact:target) .gt-open{display:none}
  body:has(#contact:target) .gt-open[data-r="contact"]{display:inline-flex}

  /* While the sheet is open: no SECTIONS anchor, and the CLOSE anchor of the
     current route — its href is that route, so closing restores it exactly. */
  body:has(.ghdr-anchor:target) .gt-open{display:none}
  body:has(#menu-home:target) .gt-close[data-r="home"]{display:inline-flex}
  body:has(#menu-architecture:target) .gt-close[data-r="architecture"]{display:inline-flex}
  body:has(#menu-ai-platform:target) .gt-close[data-r="ai-platform"]{display:inline-flex}
  body:has(#menu-algorithms:target) .gt-close[data-r="algorithms"]{display:inline-flex}
  body:has(#menu-rnd:target) .gt-close[data-r="rnd"]{display:inline-flex}
  body:has(#menu-team:target) .gt-close[data-r="team"]{display:inline-flex}
  body:has(#menu-case-studies:target) .gt-close[data-r="case-studies"]{display:inline-flex}
  body:has(#menu-contact:target) .gt-close[data-r="contact"]{display:inline-flex}
  body:has(.ghdr-anchor:target) .ghdr-toggle{color:var(--gold)}
  .ghdr-toggle:focus-visible{outline:3px solid var(--gold);outline-offset:2px}
  /* the label stays a word, never an icon alone — it just gets tighter */
  @media(max-width:400px){
    .ghdr-toggle{font-size:11px;letter-spacing:.08em;gap:6px;padding-left:6px;margin-left:8px}
    .ghdr-toggle .gt-icon{width:18px;font-size:16px}
    .ghdr-main{padding:0 16px}
  }

  /* the sheet: overlays, never pushes the page down */
  .ghdr-menu{
    display:none;position:absolute;top:100%;left:0;right:0;
    background:var(--bg);border-bottom:2px solid var(--ink);
    box-sizing:border-box;padding:0;
    box-shadow:0 18px 26px -22px rgba(43,40,34,.45);
  }
  /* the sheet opens with no JavaScript at all */
  .ghdr-anchor:target ~ .ghdr-menu{display:block}
  .ghdr-menu a{
    display:flex;align-items:center;gap:16px;
    min-height:52px;padding:0 22px;box-sizing:border-box;
    text-decoration:none;color:var(--ink);
    border-bottom:1px solid rgba(43,40,34,.13);
  }
  .ghdr-menu a:last-child{border-bottom:0}
  .gnum{
    flex:0 0 auto;width:30px;
    font-family:'AntonLocal','Anton',sans-serif;font-weight:400;
    font-size:1.15rem;line-height:1;color:rgba(43,40,34,.34);
  }
  @supports((-webkit-text-stroke:1px #000)){
    .gnum{color:transparent;-webkit-text-stroke:1px rgba(43,40,34,.42)}
  }
  .glbl{
    font-family:'Archivo',sans-serif;font-weight:700;font-size:13px;
    letter-spacing:.12em;text-transform:uppercase;
  }
  .ghdr-menu a[aria-current="page"] .glbl{color:var(--gold);font-weight:800}
  @supports((-webkit-text-stroke:1px #000)){
    .ghdr-menu a[aria-current="page"] .gnum{-webkit-text-stroke:1px var(--gold)}
  }
  .ghdr-menu a[aria-current="page"] .gnum{color:rgba(13,122,85,.4)}
  .ghdr-menu a:focus-visible{outline:3px solid var(--gold);outline-offset:-3px}

  /* the seven per-view headers are gone at 900px and below, and being fixed they
     leave no layout space behind */
  .view header{display:none!important}
  #home .hubnav{display:none!important}
  /* no second navigation row at the foot of any page */
  .foot-links{display:none}
  footer .foot{justify-content:space-between}
}

@media(min-width:901px){
  .ghdr{display:none!important}
}

/* Home portal on mobile: the 100vh portal now starts below the 72px header,
   so its height is reduced by exactly that and its content starts at the top
   instead of being centred in the remaining space. Architecture is untouched. */
@media (max-width: 700px) {
  #home .portal {
    min-height: calc(100vh - 72px);
    min-height: calc(100svh - 72px);
    justify-content: flex-start;
    padding: clamp(56px, 9svh, 84px) 24px 48px;
  }
}

/* =========================================================================
   iOS Quick Look mode. Quick Look draws its own filename / X / share bar over
   the top of the document; a web page cannot remove or measure it. When the
   file is opened over file: on iOS, the one global header is moved below that
   native bar. Ordinary Safari and Chrome never get this class, so they keep
   the header at the very top.
   ========================================================================= */
@media (max-width: 900px) {
  html.ios-file-preview .ghdr {
    position: -webkit-sticky;
    position: sticky;
    top: 108px;
    margin-top: 108px;
    z-index: 2147483647;
  }
  /* the dropdown max-height / scroll rule is gone with the dropdown itself;
     the panel is a fixed 88px and needs neither */
}

@media (max-width: 900px) {
  /* background scrolling is locked only while the sheet is open */
  html.nav-open, html.nav-open body { overflow: hidden; }
}

/* =========================================================================
   ROUTE PRESERVATION — opening the sheet must not change which section is on
   screen. Each menu fragment pins its own route, so Architecture stays
   Architecture behind the sheet even with scripting switched off.
   ========================================================================= */
  body:has(#menu-home:target) .view:not(#home){display:none!important}
  body:has(#menu-home:target) #home{display:block!important}
  body:has(#menu-architecture:target) .view:not(#architecture){display:none!important}
  body:has(#menu-architecture:target) #architecture{display:block!important}
  body:has(#menu-ai-platform:target) .view:not(#ai-platform){display:none!important}
  body:has(#menu-ai-platform:target) #ai-platform{display:block!important}
  body:has(#menu-algorithms:target) .view:not(#algorithms){display:none!important}
  body:has(#menu-algorithms:target) #algorithms{display:block!important}
  body:has(#menu-rnd:target) .view:not(#rnd){display:none!important}
  body:has(#menu-rnd:target) #rnd{display:block!important}
  body:has(#menu-team:target) .view:not(#team){display:none!important}
  body:has(#menu-case-studies:target) .view:not(#case-studies){display:none!important}
  body:has(#menu-team:target) #team{display:block!important}
  body:has(#menu-case-studies:target) #case-studies{display:block!important}
  body:has(#menu-contact:target) .view:not(#contact){display:none!important}
  body:has(#menu-contact:target) #contact{display:block!important}
  /* the sheet marks the route it belongs to */
  body:has(#menu-home:target) .ghdr-menu a[href="#home"] .glbl{color:var(--gold);font-weight:800}
  body:has(#menu-architecture:target) .ghdr-menu a[href="#architecture"] .glbl{color:var(--gold);font-weight:800}
  body:has(#menu-ai-platform:target) .ghdr-menu a[href="#ai-platform"] .glbl{color:var(--gold);font-weight:800}
  body:has(#menu-algorithms:target) .ghdr-menu a[href="#algorithms"] .glbl{color:var(--gold);font-weight:800}
  body:has(#menu-rnd:target) .ghdr-menu a[href="#rnd"] .glbl{color:var(--gold);font-weight:800}
  body:has(#menu-team:target) .ghdr-menu a[href="#team"] .glbl{color:var(--gold);font-weight:800}
  body:has(#menu-case-studies:target) .ghdr-menu a[href="#case-studies"] .glbl{color:var(--gold);font-weight:800}
  body:has(#menu-contact:target) .ghdr-menu a[href="#contact"] .glbl{color:var(--gold);font-weight:800}

/* =========================================================================
   MOBILE HERO TOP GAP — the Home portal is the reference. Every internal
   route's first hero starts the same distance below the header's bottom
   border. The 220px of total vertical padding is preserved, so each hero
   keeps its height and its lower divider stays exactly where it was.
   ========================================================================= */
:root{ --mobile-hero-top-gap: clamp(56px, 9svh, 84px); }
@media (max-width: 700px) {
  #architecture .phead,
  #ai-platform .phead,
  #algorithms .phead,
  #rnd .phead,
  #team .phead,
  #case-studies .phead,
  #contact .phead {
    padding-top: var(--mobile-hero-top-gap);
    padding-bottom: calc(220px - var(--mobile-hero-top-gap));
  }
  /* On Home the eyebrow is a flex item, so its box starts exactly at the
     padding edge. The internal tags are inline-flex on a text line, so the
     baseline strut pushes them 8px down (0px when the tag wraps to two lines).
     Aligning them to the top of their line box removes that inconsistency and
     makes the measured gap equal to the padding on every route and width.
     No font, size, colour or spacing value is touched. */
  #architecture .phead .tag,
  #ai-platform .phead .tag,
  #algorithms .phead .tag,
  #rnd .phead .tag,
  #team .phead .tag,
  #case-studies .phead .tag,
  #contact .phead .tag { vertical-align: top; }
}

/* =========================================================================
   External-source lines. No new visual language: these are the exact
   declarations already used by #rnd .plinks, made available outside #rnd,
   plus the same hover inversion the inverting rows already apply elsewhere.
   ========================================================================= */
.plinks{margin-top:12px;display:flex;flex-wrap:wrap;gap:8px 24px}
.plinks a{font-family:'Archivo',sans-serif;font-weight:700;font-size:.78rem;
  letter-spacing:.04em;color:var(--gold);text-decoration:none;
  border-bottom:1px solid transparent;word-break:break-word}
.plinks a:hover,.plinks a:focus-visible{border-bottom-color:var(--gold)}
.srow:hover .plinks a,.case:hover .plinks a,.row:hover .plinks a{color:var(--gold2)}
.srow:hover .plinks a:hover,.case:hover .plinks a:hover{border-bottom-color:var(--gold2)}
.srow:hover .plabel,.case:hover .plabel,.row:hover .plabel{color:var(--gold2)}
.srow:hover .mck-note,.case:hover .mck-note,.row:hover .mck-note{color:rgba(240,235,226,.84)}
/* headings, labels, statistics and disclaimer text carry no underline */
.plabel,.mck-note,.mck-disc{box-shadow:none;border-bottom:0;text-decoration:none}

/* ===== <style data-arch-rows=""> ===== */

/* Architecture: numbered information rows (AI Platform visual language) */
#architecture .prose .srows{margin-top:30px;border-top:2px solid var(--ink)}
#architecture .prose .srow.has-head{
  display:block;padding:26px 0;border-bottom:2px solid var(--ink);
}
#architecture .prose .srow.no-head{
  align-items:start;padding:26px 0;border-bottom:2px solid var(--ink);
}
#architecture .prose .srow.no-head>.rbody{min-width:0}

/* --- desktop / tablet geometry: unchanged, now explicitly scoped --------- */
@media(min-width:761px){
  #architecture .prose .srow.has-head>.row-head{
    display:grid;grid-template-columns:112px minmax(0,1fr);column-gap:28px;align-items:start;
  }
  #architecture .prose .srow.has-head>.rbody{margin-left:140px;min-width:0}
  #architecture .prose .srow.no-head{
    display:grid;grid-template-columns:112px minmax(0,1fr);column-gap:28px;gap:0 28px;
  }
  #architecture .prose .rnum{
    font-family:'AntonLocal','Anton',sans-serif;font-weight:400;
    font-size:2.6rem;line-height:1;color:#8a8375;
  }
  @supports((-webkit-text-stroke:2px #000)){
    #architecture .prose .rnum{color:transparent;-webkit-text-stroke:2px var(--ink)}
  }
  /* the body column is indented past the gutter, so the ordinal adds no band */
  #architecture .prose .srow.has-head>.row-head>.rnum{height:0}
}
#architecture .prose .rnum{-webkit-user-select:none;user-select:none}
/* the unnumbered summary row stays unnumbered (desktop rhythm unchanged) */
#architecture .prose .srow.is-summary .rnum{visibility:hidden}

/* headings keep their level and their spacing; the row supplies the separator */
#architecture .prose .srow h3.rtitle,
#architecture .prose .srow h4.rtitle{margin-top:0;border-top:0;padding-top:0}
#architecture .prose .srow h4.rtitle{margin-top:26px}
#architecture .prose .srow>.row-head>h3.rtitle,
#architecture .prose .srow>.row-head>h4.rtitle{margin-top:0}
#architecture .prose .srow p{margin-top:12px}
#architecture .prose .srow.no-head>.rbody>p:first-child{margin-top:0}
#architecture .prose .srow.has-head>.rbody>p:first-child{margin-top:12px}
#architecture .prose h3.h-sub{font-family:'Archivo';font-weight:700;font-size:1.02rem;
  text-transform:uppercase;letter-spacing:.06em;color:var(--gold);line-height:1.3}

@media(max-width:760px){
  #architecture .prose .srow.has-head,
  #architecture .prose .srow.no-head{padding:22px 0}
  /* body copy uses the full width beneath the number and the heading */
  #architecture .prose .srow.has-head>.rbody{margin-left:0}
  #architecture .prose .srow.has-head>.rbody>p:first-child{margin-top:14px}
  /* the unnumbered summary row: no ordinal, full width */
  #architecture .prose .srow.is-summary>.row-head{display:block}
  #architecture .prose .srow.is-summary .rnum{display:none}
  #architecture .prose .srow.is-summary>.rbody{margin-left:0}
}

/* Diagrams in Architecture and AI Platform — added 2026-09-01, scoped to .dfig */
#home .dfig,#architecture .dfig,#ai-platform .dfig{margin:26px 0 0;padding:0}
#home .dfig>a,#architecture .dfig>a,#ai-platform .dfig>a{display:block;border:0;background:transparent;text-decoration:none;box-shadow:none}
#home .dfig img,#architecture .dfig img,#ai-platform .dfig img{display:block;width:100%;height:auto}
#home .dfig figcaption,#architecture .dfig figcaption,#ai-platform .dfig figcaption{margin-top:8px;font-size:13px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--gold)}
@media(max-width:760px){#home .dfig,#architecture .dfig,#ai-platform .dfig{margin-top:20px}}
#home .dfig,#architecture .dfig{width:min(1176px,calc(100vw - 96px));max-width:none}
#architecture .prose.rv{opacity:1;transform:none}

/* ===== <style> ===== */
.case .cnum{font-family:'AntonLocal','Anton',sans-serif;font-size:2.6rem;line-height:1;color:transparent;-webkit-text-stroke:2px var(--ink);white-space:nowrap}
.case:hover .cnum{-webkit-text-stroke:2px var(--gold)}
/* ===== <style data-rnd=""> ===== */

/* R&D — reuses the approved type scale, colours, borders and row components */
#rnd .prose .lead{font-size:1.06rem;color:var(--ink)}
#rnd .disclose{font-size:.9rem;color:var(--faint);margin-top:14px;
  border-left:2px solid var(--bone);padding-left:14px}
#rnd .pubrec{align-items:start}
#rnd .pmeta{font-family:'Archivo',sans-serif;font-weight:700;font-size:.7rem;
  letter-spacing:.11em;text-transform:uppercase;color:var(--faint);margin-top:10px;line-height:1.6}
#rnd .pauth{font-size:.84rem;color:var(--grey);margin-top:8px;line-height:1.55}
#rnd .psum{font-size:.94rem;color:var(--grey);margin-top:10px;line-height:1.6}
#rnd .plinks{margin-top:12px;display:flex;flex-wrap:wrap;gap:8px 24px}
#rnd .plinks a{font-family:'Archivo',sans-serif;font-weight:700;font-size:.78rem;
  letter-spacing:.04em;color:var(--gold);text-decoration:none;
  border-bottom:1px solid transparent;word-break:break-word}
#rnd .plinks a:hover,#rnd .plinks a:focus-visible{border-bottom-color:var(--gold)}
/* the approved hover inversion keeps every line legible */
#rnd .case:hover .pmeta{color:rgba(240,235,226,.68)}
#rnd .case:hover .pauth,#rnd .case:hover .psum{color:rgba(240,235,226,.84)}
#rnd .case:hover .plinks a{color:var(--gold2)}
#rnd .case:hover .plinks a:hover{border-bottom-color:var(--gold2)}
#rnd .profstrip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));
  gap:0;margin-top:30px}
#rnd .prof{display:block;padding:26px 24px 26px 0;
  text-decoration:none;color:inherit;transition:.25s}
#rnd .prof+.prof{padding-left:24px}
#rnd .prof:hover{background:var(--ink);color:var(--bg);padding-left:24px;padding-right:24px}
#rnd .prof .pk{display:block;font-family:'Archivo',sans-serif;font-weight:700;font-size:.7rem;
  letter-spacing:.14em;text-transform:uppercase;color:var(--faint)}
#rnd .prof:hover .pk{color:rgba(240,235,226,.7)}
#rnd .prof .pv{display:block;font-family:'Archivo',sans-serif;font-weight:800;
  font-size:1.02rem;margin-top:10px;color:var(--gold);word-break:break-word}
#rnd .prof:hover .pv{color:var(--gold2)}
@media(max-width:760px){
  #rnd .profstrip{grid-template-columns:minmax(0,1fr)}
  #rnd .prof{padding:22px 0}
  #rnd .prof+.prof{border-left:0;padding-left:0}
  #rnd .prof:hover{padding-left:0;padding-right:0}
  #rnd .plinks{gap:8px 18px}
  #rnd .h-sub-case{font-size:1.08rem;line-height:1.26}  /* R&D titles run to 3–4 lines */
}

/* Very narrow screens (≤359px): long single words must wrap, never be clipped.
   Hyphenation, not truncation — the type scale and design are unchanged. */
@media(max-width:359px){
  #rnd h1,#rnd h2,#rnd .rtitle,#rnd .h-sub-case,#rnd .pmeta,#rnd .pauth{
    -webkit-hyphens:auto;hyphens:auto;overflow-wrap:break-word}
  /* Phase 3: "INFRASTRUCTURE" in the Architecture h1 is 297px at the 3rem floor;
     below 360px use the domain-page h1 floor (2.4rem) already in this system */
  #architecture .phead h1{font-size:clamp(2.4rem,8.5vw,7rem)}
}
/* R&D record titles carry a looser leading (1.26) than the AI Platform cases,
   so the shared ordinal keeps its size and only the optical nudge is retuned. */
@media(max-width:760px){
  #rnd .case.ordrow[data-ord-head="case"]{--ord-nudge:0px}
}
#rnd .verified{font-family:'Archivo',sans-serif;font-weight:700;font-size:.7rem;
  letter-spacing:.14em;text-transform:uppercase;color:var(--faint);margin-top:18px}
/* explicit text status badge — never colour alone */
#rnd .pbadge{font-family:'Archivo',sans-serif;font-weight:800;color:var(--ink);
  letter-spacing:.1em;text-transform:uppercase}
#rnd .case:hover .pbadge{color:var(--bg)}
/* status labels carry no underline in any state — text only */
#rnd .pbadge,#rnd .case:hover .pbadge,#rnd .case:focus-within .pbadge,
#rnd .pbadge:hover,#rnd .pbadge:focus,#rnd .pbadge:focus-visible{
  box-shadow:none;border-bottom:0;text-decoration:none}
#rnd .psep{padding:0 .5em;color:var(--faint)}
/* progressive disclosure */
#rnd .pmore{margin-top:14px;border-top:1px solid var(--bone)}
#rnd .pmore>summary{list-style:none;cursor:pointer;padding:11px 0 0;
  font-family:'Archivo',sans-serif;font-weight:700;font-size:.76rem;letter-spacing:.1em;
  text-transform:uppercase;color:var(--gold)}
#rnd .pmore>summary::-webkit-details-marker{display:none}
#rnd .pmore>summary::after{content:' +';font-weight:800}
#rnd .pmore[open]>summary::after{content:' –'}
#rnd .pmore>summary:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
#rnd .case:hover .pmore{border-top-color:rgba(240,235,226,.28)}
#rnd .case:hover .pmore>summary{color:var(--gold2)}
#rnd .pmore-b{padding:4px 0 6px}
#rnd .pmore-b p{font-size:.86rem;color:var(--grey);margin-top:12px;line-height:1.6}
#rnd .case:hover .pmore-b p{color:rgba(240,235,226,.84)}
#rnd .plabel2{display:block;font-family:'Archivo',sans-serif;font-weight:700;font-size:.66rem;
  letter-spacing:.14em;text-transform:uppercase;color:var(--faint);margin-bottom:4px}
#rnd .case:hover .plabel2{color:rgba(240,235,226,.62)}
@media(max-width:760px){
  #rnd .pmeta{line-height:1.7}
}

/* Very narrow screens: long single words wrap instead of being clipped.
   Scoped away from #architecture, which is frozen. */
@media(max-width:360px){
  #ai-platform .rtitle,#algorithms .rtitle,#rnd .rtitle{
    -webkit-hyphens:auto;hyphens:auto;overflow-wrap:break-word}
}
/* Architecture record titles below 390px: authorised responsive hotfix.
   Long unbreakable words (Infrastructure, Interoperability, Manufacturing,
   Operationalization) overflowed the 320-375px viewport. Scoped to
   #architecture and to max-width:389px only; 390px and above unchanged. */
@media (max-width:389px){
  #architecture .rtitle{
    overflow-wrap:break-word;
    -webkit-hyphens:auto;
    hyphens:auto;
  }
}

/* ===== <style data-ordinals=""> ===== */

/* =========================================================================
   UNIFIED MOBILE ORDINAL COMPONENT — single source of truth below 761px.
   Applies to Architecture, AI Platform standard rows, AI Platform research
   cases and Algorithms. #home .bgnum is decorative and intentionally excluded.
   ========================================================================= */
@media(max-width:760px){
  /* one gutter for every numbered informational row */
  .ordrow{
    display:grid;grid-template-columns:56px minmax(0,1fr);
    column-gap:14px;gap:0 14px;align-items:start;
  }
  .ordrow>*{min-width:0}
  /* one ordinal: same face, size, line-height, stroke and weight everywhere */
  .ordrow>.ord{
    font-family:'AntonLocal','Anton',sans-serif;font-weight:400;font-style:normal;
    font-size:2.5rem;line-height:1;letter-spacing:0;
    height:auto;margin:0;padding:0;white-space:nowrap;
    color:#8a8375;-webkit-text-stroke:0;
    -webkit-user-select:none;user-select:none;
  }
  @supports((-webkit-text-stroke:2px #000)){
    .ordrow>.ord{color:transparent;-webkit-text-stroke:2px var(--ink)}
  }
  /* Optical alignment: the ordinal's cap top is set on the cap top of the first
     line of its heading. The ordinal itself never changes — only the nudge
     differs, and only because each component's heading size differs.
     Values are measured, not guessed (cap height 35.0px in every component). */
  .ordrow>.ord{margin-top:var(--ord-nudge,0px)}
  .ordrow[data-ord-head="sub"]       {--ord-nudge:2px}  /* h-sub      16.3px / 1.30 */
  .ordrow[data-ord-head="arch-title"]{--ord-nudge:0px}  /* rtitle     24px   / 0.92 */
  .ordrow[data-ord-head="row-title"] {--ord-nudge:7px}  /* rtitle     24px   / 1.55 */
  .ordrow[data-ord-head="case"]      {--ord-nudge:2px}  /* h-sub-case 20px   / 1.20 */
  .ordrow[data-ord-head="para"]      {--ord-nudge:6px}  /* body copy  17px   / 1.72 */

  /* hover must never move a row on a touch screen */
  .srow:hover,.case:hover,.row:hover{padding-left:0;padding-right:0}
}
@media(hover:none){
  .srow:hover,.case:hover,.row:hover{padding-left:0!important;padding-right:0!important}
}

/* ===== <style data-navfit=""> ===== */

/* ===== no rule under the last row of a group: it duplicates the section separator ===== */
.srows > .srow:last-child,
#architecture .prose .srows > .srow.has-head:last-child,
#architecture .prose .srows > .srow.no-head:last-child{border-bottom:0}

/* ===== artboards: scroller while the column is too narrow to read ===== */
@media(max-width:1051px){
  #home .dfig>a,#architecture .dfig>a,#ai-platform .dfig>a{overflow-x:auto;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}
  #home .dfig img,#architecture .dfig img,#ai-platform .dfig img{width:1100px;max-width:none}
  #home .dfig figcaption::before,#architecture .dfig figcaption::before,#ai-platform .dfig figcaption::before{content:"Scroll sideways \00B7 "}
}
@media(max-width:760px){
  #home .dfig,#architecture .dfig,#ai-platform .dfig{margin-left:-32px;margin-right:-32px;width:auto;max-width:none}
  #home .dfig figcaption,#architecture .dfig figcaption,#ai-platform .dfig figcaption{padding:0 32px}
}

/* ================= Home rebuild — Governed AI positioning, 2026-09-02 ================= */
#home .hdomains{font-family:'Archivo','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:700;font-size:clamp(1.05rem,2.1vw,1.45rem);letter-spacing:.01em;color:var(--gold);margin-top:20px}
#home .hlead{max-width:720px;margin-top:18px;font-size:1.05rem;line-height:1.65;color:var(--grey)}
#home .hactions{margin-top:34px;display:flex;gap:14px;flex-wrap:wrap}

/* three domains */
#home .dgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:0 48px;margin-top:38px}
#home .dcard{display:block;padding:26px 0 0;background:transparent;text-decoration:none;color:inherit;border-top:2px solid var(--ink)}
#home .dcard:hover h3,#home .dcard:focus-visible h3{color:var(--gold)}
#home .dk{display:block;font-family:'Archivo','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--faint)}
#home .dcard h3{font-family:'Archivo','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:1.45rem;font-weight:800;letter-spacing:-.01em;margin-top:12px}
#home .dcard .dd{margin-top:8px;font-size:.92rem;color:var(--gold);font-weight:600}
#home .dcard p:not(.dd){margin-top:14px;line-height:1.6;color:var(--grey)}
#home .dgo{display:block;margin-top:20px;font-family:'Archivo','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:700;font-size:.9rem;color:var(--gold)}

/* economics */
#home .egrid{display:grid;grid-template-columns:repeat(3,1fr);gap:0 48px;margin-top:38px}
#home .ecell{padding:26px 0 0;border-top:2px solid var(--ink)}
#home .ecell h3{font-family:'Archivo','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:1.15rem;font-weight:800;margin-top:10px;line-height:1.25}
#home .ecell p{margin-top:10px;line-height:1.6;color:var(--grey);font-size:.95rem}

@media(max-width:900px){
 #home .dgrid,#home .egrid{grid-template-columns:1fr;gap:0}
 #home .dcard,#home .ecell{padding-bottom:26px}
 #home .dcard:last-child,#home .ecell:last-child{padding-bottom:0}
}

/* the four method questions are sentences, not labels — no caps, tighter leading */
#home .qrows .rtitle{text-transform:none;letter-spacing:0;font-size:clamp(1.05rem,1.9vw,1.35rem);line-height:1.28}
#home .qrows .rsub{margin-top:10px;font-size:1rem;line-height:1.6}

/* discipline links under the capabilities artboard — the artboard is an image,
   so navigation to each discipline stays as real links */
#home .clinks{margin-top:18px;display:flex;flex-wrap:wrap;gap:10px 26px}
#home .clinks a{font-family:'Archivo','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--gold)}
#home .clinks a:hover{color:var(--ink)}

/* Diagram figures must never depend on the reveal observer — two of the three
   Home figures never received .in and stayed at opacity 0 on the live site.
   Specificity (1,2,0) beats .js-reveal .rv (0,2,0). Added 2026-09-03. */
#home .dfig.rv,#architecture .dfig.rv,#ai-platform .dfig.rv{opacity:1;transform:none}

/* ============================================================================
   Domain pages (/healthcare, /financial-services, /critical-infrastructure)
   Added 2026-09-03. Additive only: every rule is scoped to .dpage or to a
   class that exists nowhere else, so no existing page can be affected.
   Deliberately NOT using .rv — these pages must render without JavaScript.
   ========================================================================= */
.dpage .hdomains{margin-top:20px;font-family:'Archivo','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:1.05rem;font-weight:700;color:var(--gold);letter-spacing:-.01em}
.dpage .hlead{max-width:720px;margin-top:18px;font-size:1.05rem;line-height:1.65;color:var(--grey)}
.dpage .hactions{margin-top:34px;display:flex;gap:14px;flex-wrap:wrap}
.dpage .dk{display:block;font-family:'Archivo','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--faint)}
.dpage .dgo{display:block;margin-top:20px;font-family:'Archivo','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:700;font-size:.9rem;color:var(--gold)}
.dpage .dh2{font-size:clamp(2.2rem,5.5vw,4.2rem);margin-top:16px;line-height:1.02}
.dpage .dsub{font-size:1.05rem;line-height:1.65;color:var(--grey);max-width:760px;margin-top:20px}
.dpage .evnote{max-width:760px;margin-top:16px;font-size:.92rem;line-height:1.6;color:var(--faint)}
.dpage .qgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:0 48px;margin-top:38px}
.dpage .disgrid,.dpage .ecogrid{display:grid;grid-template-columns:repeat(3,1fr);gap:0 48px;margin-top:38px}
.dpage .ogrid{display:grid;grid-template-columns:repeat(2,1fr);gap:0 48px;margin-top:38px}
.dpage .qcard,.dpage .discard,.dpage .ecocard,.dpage .ocard{display:block;padding:26px 0;border-top:2px solid var(--ink);background:transparent;text-decoration:none;color:inherit}
.dpage .qcard h3,.dpage .discard h3,.dpage .ecocard h3,.dpage .ocard h3{font-family:'Archivo','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:1.3rem;font-weight:800;letter-spacing:-.01em;margin:12px 0 0}
.dpage .ocard h3{font-size:1.45rem}
.dpage .qcard p,.dpage .discard p,.dpage .ecocard p,.dpage .ocard p{margin-top:12px;line-height:1.6;color:var(--grey)}
.dpage .ocard:hover h3,.dpage .ocard:focus-visible h3{color:var(--gold)}
.dpage .decbox{margin-top:38px;display:grid;grid-template-columns:320px 1fr;gap:0 48px;align-items:start}
.dpage .deccard{padding:26px 0}
.dpage .deccard.dark{background:var(--ink);color:var(--bg);border:0;border-radius:10px;padding:22px 24px}
.dpage .deccard.dark h3{font-family:'Archivo','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:1.3rem;font-weight:800;margin:0}
.dpage .deccard .mono{margin-top:10px;font-family:'JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.82rem;opacity:.75}
.dpage .decnote{margin:0;font-size:1.05rem;line-height:1.65;color:var(--grey);max-width:620px}
.dpage .cta .dh2{max-width:900px}
@media(max-width:1000px){.dpage .disgrid,.dpage .ecogrid{grid-template-columns:1fr;gap:0}}
@media(max-width:900px){.dpage .qgrid,.dpage .ogrid{grid-template-columns:1fr;gap:0}
  .dpage .decbox{grid-template-columns:1fr;gap:22px 0}}
@media(max-width:700px){.dpage .phead{padding:var(--mobile-hero-top-gap) 0 60px}
  .dpage .section{padding:64px 0}}
/* "infrastructure." overflowed its box by 13px at 360px — measured, then bounded. */
.dpage .phead h1{font-size:clamp(2.4rem,8.5vw,7rem);overflow-wrap:break-word;max-width:100%}

/* Home hero: the three domains set in the headline face, one size step down,
   sized to fill the 1176px content column exactly.
   Measured, not guessed: the string in Anton at 100px is 2277.08px wide, so
   fill size = column / 22.7708 -> 51.6px at the 1176px cap, and
   (100vw - 64px) / 22.7708 = 4.3915vw - 2.81px while the column is fluid.
   Floors at 28px below ~700px so it wraps instead of turning into a hairline. */
#home .hdomains{font-family:'AntonLocal','Anton',sans-serif;font-weight:400;
  text-transform:uppercase;letter-spacing:.005em;line-height:.95;
  font-size:clamp(28px,calc(4.3915vw - 2.81px),51.6px);
  color:var(--gold);margin-top:26px;max-width:100%;overflow-wrap:break-word}

/* Uppercase hyphen lift.
   Neither Anton nor Archivo ships the OpenType 'case' feature, so a hyphen
   drawn for lowercase sits low in an all-caps setting. Amounts measured from
   the fonts themselves:
     Anton   upm 2048 - hyphen centre 625, cap centre 880  -> 255/2048 = .1245em
     Archivo upm 1000 - hyphen centre 272, cap centre 344  ->  72/1000 = .0710em
   position:relative shifts the glyph without touching layout or line breaking. */
.uh{position:relative;top:-.1245em}
h3.rtitle .uh,#home .dcard h3 .uh,
.dpage .qcard h3 .uh,.dpage .discard h3 .uh,
.dpage .ecocard h3 .uh,.dpage .ocard h3 .uh{top:-.071em}
/* Home hero: the middle domain set in ink so the three read as a rhythm
   rather than one solid green block. */
#home .hdomains .ink{color:var(--ink)}

/* ============================================================================
   Maturity badges. Added 2026-09-04; vocabulary per Work Order 02 s.C (below).
   Built from tokens already in this release — --ink, --gold, --grey, --bg — and
   from the existing label grammar (.dk: Archivo 700, 11px, .14em, uppercase).
   Square corners and a 2px edge to match the site's rules; no pills, no
   gradients, no new colour.
   ========================================================================= */
.mb{display:inline-flex;align-items:center;gap:8px;vertical-align:baseline;
  font-family:'Archivo','Helvetica Neue',Helvetica,Arial,sans-serif;
  font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;
  line-height:1;padding:6px 10px;border:2px solid var(--ink);color:var(--ink);
  background:transparent;border-radius:0;white-space:nowrap}
.mb::before{content:"";width:7px;height:7px;background:currentColor;flex:0 0 auto}
/* Vocabulary - Work Order 02 s.C, the single authoritative list. One visual
   treatment for all eight: ink outline, square; the text carries the meaning.
   REFERENCE ARCHITECTURE .mb-ref  PRIOR FOUNDER EXPERIENCE .mb-founder
   SINAIGROUP-AI ENGAGEMENT .mb-engagement  PEER-REVIEWED RESEARCH .mb-peer
   PREPRINT .mb-preprint  EXTERNAL RESEARCH .mb-external  IN DEVELOPMENT .mb-dev
   CONCEPT .mb-concept */
.mb-ref,.mb-founder,.mb-engagement,.mb-peer,.mb-preprint,.mb-external,.mb-dev,.mb-concept{border-color:var(--ink);color:var(--ink)}
/* the badge's status word is read by screen readers, not shown */
.sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
/* when a badge closes a paragraph it sits on its own line, not mid-sentence */
p > .mb:last-child,.rsub > .mb:last-child{display:flex;width:max-content;max-width:100%;margin-top:16px}
@media(max-width:520px){.mb{font-size:10px;letter-spacing:.12em;padding:5px 8px;white-space:normal}}

/* R&D: the last row of each record list drops its rule - the section rule below it closes the list */
#rnd .cases>.case:last-child,#rnd .srows>.srow:last-child{border-bottom:0}

/* Algorithms research: additive reuse of the approved publication-card styles. */
#algorithms-research .disclose{font-size:.9rem;color:var(--faint);margin-top:14px;
  border-left:2px solid var(--bone);padding-left:14px}
#algorithms-research .pubrec{align-items:start}
#algorithms-research .pmeta{font-family:'Archivo',sans-serif;font-weight:700;font-size:.7rem;
  letter-spacing:.11em;text-transform:uppercase;color:var(--faint);margin-top:10px;line-height:1.6}
#algorithms-research .pauth{font-size:.84rem;color:var(--grey);margin-top:8px;line-height:1.55}
#algorithms-research .plinks{margin-top:12px;display:flex;flex-wrap:wrap;gap:8px 24px}
#algorithms-research .plinks a{font-family:'Archivo',sans-serif;font-weight:700;font-size:.78rem;
  letter-spacing:.04em;color:var(--gold);text-decoration:none;
  border-bottom:1px solid transparent;word-break:break-word}
#algorithms-research .plinks a:hover,
#algorithms-research .plinks a:focus-visible{border-bottom-color:var(--gold)}
#algorithms-research .case:hover .pmeta{color:rgba(240,235,226,.68)}
#algorithms-research .case:hover .pauth{color:rgba(240,235,226,.84)}
#algorithms-research .case:hover .plinks a{color:var(--gold2)}
#algorithms-research .case:hover .plinks a:hover{border-bottom-color:var(--gold2)}
@media(max-width:760px){
#algorithms-research .plinks{gap:8px 18px}
#algorithms-research .h-sub-case{font-size:1.08rem;line-height:1.26}
}
@media(max-width:359px){
#algorithms-research .h-sub-case,
#algorithms-research .pmeta,
#algorithms-research .pauth{
    -webkit-hyphens:auto;hyphens:auto;overflow-wrap:break-word}
}
@media(max-width:760px){
#algorithms-research .case.ordrow[data-ord-head="case"]{--ord-nudge:0px}
}
#algorithms-research .psep{padding:0 .5em;color:var(--faint)}
#algorithms-research .pmore{margin-top:14px;border-top:1px solid var(--bone)}
#algorithms-research .pmore>summary{list-style:none;cursor:pointer;padding:11px 0 0;
  font-family:'Archivo',sans-serif;font-weight:700;font-size:.76rem;letter-spacing:.1em;
  text-transform:uppercase;color:var(--gold)}
#algorithms-research .pmore>summary::-webkit-details-marker{display:none}
#algorithms-research .pmore>summary::after{content:' +';font-weight:800}
#algorithms-research .pmore[open]>summary::after{content:' –'}
#algorithms-research .pmore>summary:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
#algorithms-research .case:hover .pmore{border-top-color:rgba(240,235,226,.28)}
#algorithms-research .case:hover .pmore>summary{color:var(--gold2)}
#algorithms-research .pmore-b{padding:4px 0 6px}
#algorithms-research .pmore-b p{font-size:.86rem;color:var(--grey);margin-top:12px;line-height:1.6}
#algorithms-research .case:hover .pmore-b p{color:rgba(240,235,226,.84)}
#algorithms-research .plabel2{display:block;font-family:'Archivo',sans-serif;font-weight:700;font-size:.66rem;
  letter-spacing:.14em;text-transform:uppercase;color:var(--faint);margin-bottom:4px}
#algorithms-research .case:hover .plabel2{color:rgba(240,235,226,.62)}
@media(max-width:760px){
#algorithms-research .pmeta{line-height:1.7}
}

/* Case Studies uses the site's existing typography, rules and colour tokens. */
#case-studies .cs-heading{font-size:clamp(2.2rem,5.5vw,4.2rem);margin-top:16px;line-height:1.02}
#case-studies .cs-intro{font-size:1.06rem;line-height:1.72;color:var(--grey);max-width:840px;margin-top:22px}
#case-studies .cs-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin:36px 0 0;padding:24px 0;border-top:2px solid var(--ink);border-bottom:2px solid var(--ink)}
#case-studies .cs-facts dt{font-family:'Archivo',sans-serif;font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--gold)}
#case-studies .cs-facts dd{margin:10px 0 0;font-size:1.06rem;line-height:1.6}
#case-studies .cs-row{display:grid;grid-template-columns:112px minmax(0,1fr);gap:28px;padding:34px 0;border-bottom:2px solid var(--ink)}
#case-studies .cs-row:last-child{border-bottom:0}
#case-studies .cs-row h3{line-height:1.25}
#case-studies .cs-body{min-width:0}
#case-studies .cs-body>p{max-width:840px;font-size:1.06rem;line-height:1.72;color:var(--grey);margin-top:14px}
#case-studies .cs-body .cs-question{font-family:'Archivo',sans-serif;font-weight:600;color:var(--ink);margin-top:10px}
#case-studies .cs-label{font-family:'Archivo',sans-serif;font-weight:700;color:var(--ink)}
#case-studies .cs-flow-details{margin-top:24px;border-top:1px solid var(--bone)}
#case-studies .cs-flow-details summary{cursor:pointer;padding:16px 0;font-family:'Archivo',sans-serif;font-weight:700;font-size:.9rem;color:var(--gold)}
#case-studies .cs-flow{list-style:none;counter-reset:flow;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:26px;padding:10px 0 20px;margin:0}
#case-studies .cs-flow li{counter-increment:flow;border-top:2px solid var(--ink);padding-top:16px;min-width:0}
#case-studies .cs-flow li::before{content:'0' counter(flow);display:block;font-family:'Archivo',sans-serif;font-size:12px;font-weight:700;color:var(--gold);margin-bottom:12px}
#case-studies .cs-flow h4{font-family:'Archivo',sans-serif;font-size:1.02rem;line-height:1.4;font-weight:700;text-transform:uppercase;margin:0}
#case-studies .cs-flow p{font-size:1rem;line-height:1.65;color:var(--grey);margin-top:12px}
#case-studies .cs-scope{max-width:840px;border-left:2px solid var(--gold);padding-left:18px;font-size:1.06rem;line-height:1.72;color:var(--grey);margin-top:34px}
#case-studies .cs-actions{display:flex;gap:14px;flex-wrap:wrap;margin-top:30px}
#case-studies .cs-first{border-top:0}
#case-studies .cs-diagram{margin:30px 0 0;padding:0}
#case-studies .cs-diagram>a{display:block;overflow-x:auto;overscroll-behavior-x:contain}
#case-studies .cs-diagram img{display:block;width:100%;height:auto}
#case-studies .cs-diagram figcaption{display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:12px;font-family:'Archivo',sans-serif;font-weight:700;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--grey)}
#case-studies .cs-diagram figcaption a{color:var(--gold)}
#case-studies .cs-diagram figcaption a:hover{text-decoration:underline}
@media(max-width:1203px){
  #case-studies .cs-diagram img{width:1000px;max-width:none}
  #case-studies .cs-diagram figcaption>span::before{content:'Scroll sideways · '}
}
body:has(#main-case-studies:target) .view:not(#case-studies){display:none!important}
body:has(#main-case-studies:target) #case-studies{display:block!important}
@media(max-width:760px){
  #case-studies .cs-facts{grid-template-columns:1fr;gap:20px}
  #case-studies .cs-row{grid-template-columns:1fr;gap:18px}
  #case-studies .cs-flow{grid-template-columns:1fr;gap:22px}
}
/* Desktop sections stay horizontal; only mobile uses the vertical sheet. */
@media(min-width:901px){
  header .wrap.nav{max-width:1440px;gap:24px}
  .nav-links{gap:18px}
  .nav-links a{white-space:nowrap}
  header .logo,.demo-btn{flex-shrink:0}
}
@media(max-width:900px){
  body:has(#main-case-studies:target) .gt-open{display:none}
  body:has(#main-case-studies:target) .gt-open[data-r="case-studies"]{display:inline-flex}
  .ghdr-menu{max-height:calc(100svh - 72px);overflow-y:auto;overscroll-behavior:contain}
  .dpage header:focus-within .nav-links{display:flex;position:absolute;top:70px;left:0;right:0;flex-direction:column;background:var(--bg);border-bottom:2px solid var(--ink);padding:6px 32px 16px;gap:0;max-height:calc(100svh - 70px);overflow-y:auto}
  .dpage header:focus-within .nav-links a{padding:13px 0;border-bottom:1px solid var(--bone)}
}

/* Fit all eight desktop sections without switching laptops to the mobile menu. */
@media(min-width:901px) and (max-width:1399px){
  header .wrap.nav{gap:16px;padding-inline:22px}
  .nav-links{gap:12px}
  .nav-links a{letter-spacing:.04em}
  header .demo-btn{padding:12px 16px;white-space:nowrap}
}
@media(min-width:901px) and (max-width:1199px){
  header .wrap.nav{height:108px;display:grid;grid-template-columns:1fr auto;row-gap:0}
  header .nav-links{grid-column:1 / -1;grid-row:2;justify-content:space-between;padding-bottom:12px}
  header .demo-btn{grid-column:2;grid-row:1}
  html{scroll-padding-top:118px}
}

/* ------------------------------------------------------------------ *
 * Applied Work — second engagement (financial risk intelligence).
 * Additive only. Every class below is used by this case and by nothing
 * else on the site. Rules only where a rule earns its place.
 * ------------------------------------------------------------------ */

/* metadata: gold label over value, no band around it */
#case-studies .cs-facts{border-top:0;border-bottom:0;padding:0;margin:34px 0 0;gap:24px 28px}

/* technologies: one mono line, middot separated */
#case-studies .cs-tags{display:flex;flex-wrap:wrap;gap:4px 0;margin:22px 0 0;padding:0;list-style:none;
  font-family:'JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.78rem;letter-spacing:.03em;color:var(--grey)}
#case-studies .cs-tags li+li::before{content:"\00a0\00b7\00a0\00a0";color:var(--gold)}

/* in-page navigation: links, nothing drawn around them */
#case-studies .cs-jump{display:flex;flex-wrap:wrap;gap:8px 26px;margin:30px 0 0;padding:0;list-style:none}
#case-studies .cs-jump a{font-family:'Archivo',sans-serif;font-size:.86rem;font-weight:700;color:var(--gold)}
#case-studies .cs-jump a:hover{text-decoration:underline}

/* a quoted principle: the section's own left-rule idiom, as .cs-scope uses */
#case-studies .cs-quote{max-width:840px;border-left:2px solid var(--gold);padding-left:18px;margin-top:26px;
  font-family:'Archivo',sans-serif;font-weight:600;font-size:1.1rem;line-height:1.55;color:var(--ink)}

/* Diagrams: the eight artboards use the section's existing .cs-diagram
   markup, so no new figure rule is needed here. */

/* paired blocks: a hairline, not a heavy rule, and never a box */
#case-studies .cs-mgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:26px 32px;margin-top:26px}
#case-studies .cs-mgrid>section{border-top:1px solid var(--bone);padding-top:14px;min-width:0}
#case-studies .cs-mgrid h4{font-family:'Archivo',sans-serif;font-size:.92rem;line-height:1.35;font-weight:700;
  letter-spacing:.02em;text-transform:uppercase;margin:0;color:var(--ink)}
#case-studies .cs-mgrid p{font-size:.98rem;line-height:1.62;color:var(--grey);margin:10px 0 0}
#case-studies .cs-mgrid ul{margin:10px 0 0;padding-left:16px;font-size:.96rem;line-height:1.62;color:var(--grey)}
#case-studies .cs-mgrid li+li{margin-top:4px}

@media(max-width:760px){
  #case-studies .cs-mgrid{grid-template-columns:1fr;gap:22px}
}

/* ===== mobile fix 2026-09-23: whole diagram on screen + smaller headlines ===== */
/* (a) Diagrams. Where the board used to be pinned to 1000-1100px inside a
   sideways scroller it now fits the available width, and the existing link on
   the image opens the full-size file for reading the detail. */
@media(max-width:1051px){
  #home .dfig>a,#architecture .dfig>a,#ai-platform .dfig>a{overflow-x:visible}
  #home .dfig img,#architecture .dfig img,#ai-platform .dfig img{width:100%;max-width:100%}
  #home .dfig figcaption::before,#architecture .dfig figcaption::before,
  #ai-platform .dfig figcaption::before{content:none}
}
@media(max-width:1203px){
  #case-studies .cs-diagram>a{overflow-x:visible}
  #case-studies .cs-diagram img{width:100%;max-width:100%}
  #case-studies .cs-diagram figcaption>span::before{content:none}
}
/* (b) Headlines on phones. Only the display type moves; body copy is untouched. */
@media(max-width:480px){
  .phead h1{font-size:clamp(1.9rem,8.6vw,2.9rem)}
  .hero h1{font-size:clamp(2.2rem,10.5vw,3.2rem)}
  #home .portal h1{font-size:clamp(2rem,9vw,3rem)}
  #architecture .phead h1,.dpage .phead h1{font-size:clamp(1.8rem,8.2vw,2.7rem)}
  .view h2[style*="clamp"]{font-size:clamp(1.5rem,6.2vw,2.2rem)!important}
  #case-studies .cs-heading,.dpage .dh2{font-size:clamp(1.5rem,6.2vw,2.2rem)}
  .cta h2{font-size:clamp(1.7rem,6.6vw,2.6rem)}
  .hero-num{font-size:clamp(2.6rem,8vw,4rem)}
}

/* ===== mobile text pass 2026-09-23: sizes that fit a phone column ===== */
@media(max-width:480px){
  /* the domain line under the hero: a subtitle, not a second headline */
  #home .hdomains{font-size:1.25rem;line-height:1.1}
  /* list-item titles were larger than some section headings */
  .rtitle:not(.h-sub){font-size:1.15rem;line-height:1.2}
  #rnd .rtitle:not(.h-sub),#architecture .prose .srow h3.rtitle:not(.h-sub),
  #case-studies .rtitle:not(.h-sub){font-size:1.15rem;line-height:1.2}
  /* lead paragraphs sit one step above body copy, not two */
  .prose .lead{font-size:1.1rem;line-height:1.55}
  .cta h2{font-size:clamp(1.5rem,6.2vw,2.4rem)}
  /* team bios were the smallest text on the site */
  #team .mem p{font-size:.95rem;line-height:1.55}
}

/* ===== SECTIONS menu: stop the page jumping to the top when it opens ===== */
/* html.nav-open{overflow:hidden} takes the scroll out from under the sticky
   header, so the header and the whole menu land at the top of the document -
   out of view whenever the page is scrolled down. Keep the scroll where it is. */
@media(max-width:900px){
  html.nav-open,html.nav-open body{overflow:visible}
}

/* ===== HCLC board in Algorithms, 2026-09-23 =====================================
   Additive only: every selector is scoped to #algorithms .dfig, which exists
   nowhere else in the file. Behaviour matches the Architecture boards after the
   2026-09-23 mobile fix - the board fits the column and the link on it opens the
   full-size file. No sideways scroller, so no scroller rules are needed here. */
#algorithms .dfig{margin:26px 0 0;padding:0;width:min(1176px,calc(100vw - 96px));max-width:none}
#algorithms .dfig>a{display:block;border:0;background:transparent;text-decoration:none;box-shadow:none}
#algorithms .dfig img{display:block;width:100%;height:auto}
#algorithms .dfig figcaption{margin-top:8px;font-size:13px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--gold)}
#algorithms .dfig.rv{opacity:1;transform:none}
@media(max-width:760px){
  #algorithms .dfig{margin-top:20px;margin-left:-32px;margin-right:-32px;width:auto;max-width:none}
  #algorithms .dfig figcaption{padding:0 32px}
}


/* Diagrams on the landing pages — added 2026-09-26, scoped to .dpage .dfig,
   mirrors the existing #algorithms .dfig block. Additive only. */
.dpage .dfig{margin:26px 0 0;padding:0;width:min(1176px,calc(100vw - 96px));max-width:none}
.dpage .dfig>a{display:block;border:0;background:transparent;text-decoration:none;box-shadow:none}
.dpage .dfig img{display:block;width:100%;height:auto}
.dpage .dfig figcaption{margin-top:8px;font-size:13px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--gold)}
@media(max-width:760px){
  .dpage .dfig{margin-top:20px;margin-left:-32px;margin-right:-32px;width:auto;max-width:none}
  .dpage .dfig figcaption{padding:0 32px}
}

/* Centering inside the landing-page CTA — added 2026-09-27.
   .dpage .dh2 and .dpage .hactions were written for the LEFT-aligned page
   heads; inside the centred .cta they kept their left behaviour, so the
   headline box (max-width:900px, no auto margins) and the flex button
   (justify-content default flex-start) sat 138px / 115px left of centre.
   Scoped to .cta only — left-aligned .hactions elsewhere are untouched. */
.dpage .cta .dh2{margin-inline:auto}
.dpage .cta .hactions{justify-content:center}
