@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/font-0.woff2) format('woff2');
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/assets/fonts/font-1.woff2) format('woff2');
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 500;
  font-stretch: normal;
  font-display: swap;
  src: url(/assets/fonts/font-2.woff2) format('woff2');
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 600;
  font-stretch: normal;
  font-display: swap;
  src: url(/assets/fonts/font-3.woff2) format('woff2');
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 700;
  font-stretch: normal;
  font-display: swap;
  src: url(/assets/fonts/font-4.woff2) format('woff2');
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/font-5.woff2) format('woff2');
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/assets/fonts/font-6.woff2) format('woff2');
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/assets/fonts/font-7.woff2) format('woff2');
}

:root {
  /* --- Brand ---------------------------------------------------------- */
  --indigo:      #3730A3;  /* primary â€” links, actions, emphasis */
  --indigo-600:  #4338CA;  /* hover / focus only */
  --indigo-100:  #E0E7FF;  /* rare wash â€” table header, selected row */
  --amber:       #B45309;  /* sparing accent for body use */
  --amber-400:   #F59E0B;  /* logo mark, and rules on dark plates */

  /* --- Neutrals (warm stone â€” never pure grey) ------------------------ */
  --paper:     #FFFFFF;
  --paper-2:   #FAFAF9;
  --paper-3:   #F5F5F4;
  --rule:      #E7E5E4;
  --rule-2:    #D6D3D1;
  --ink-4:     #A8A29E;
  --ink-3:     #6E6762;   /* darkened from stone-500 #78716C: that failed WCAG AA
                            (4.40:1) on --paper-3. This clears 5.09:1 on every surface. */
  --ink-2:     #57534E;
  --ink:       #1C1917;
  --ink-deep:  #16132E;

  /* --- On dark plates --------------------------------------------------
   * The inverted sections are the site's colour signature â€” they are what a
   * visitor registers as "the brand". Near-black said nothing; these are
   * darkened from --indigo, so the plates now belong to the logo.
   *
   * Body text stays warm near-black (--ink). Recolouring running type toward
   * indigo reads as a product landing page, which is the opposite of the point.
   */
  --d-bg:      #16132E;
  --d-panel:   #211D42;
  --d-rule:    #2E2954;
  --d-rule-2:  #423B71;
  --d-text:    #F5F5F4;   /* 16.50:1 on --d-bg */
  --d-text-2:  #C2BDD6;   /*  9.89:1 */
  --d-text-3:  #918AAB;   /*  5.51:1 â€” AA as body text, not just as a marker */
  --d-indigo:  #A5B4FC;   /* indigo is unreadable on ink; lift it */

  /* --- Status ---------------------------------------------------------- */
  --success: #15803D;
  --warning: #A16207;
  --error:   #B91C1C;
  --info:    #1D4ED8;

  /* --- Typography ------------------------------------------------------ */
  --font-heading: 'IBM Plex Sans', system-ui, -apple-system, sans-serif;
  --font-body:    'Inter', system-ui, -apple-system, sans-serif;
  --font-mono:    'IBM Plex Mono', ui-monospace, SFMono-Regular, monospace;

  /* --- Radius (effectively square â€” rounded reads as consumer software) - */
  --radius:    2px;
  --radius-lg: 3px;

  /* --- Layout ---------------------------------------------------------- */
  --content:  1200px;   /* page max width */
  --prose:    72ch;     /* long-form measure */

  /* --- Motion (minimal by policy) -------------------------------------- */
  --ease:     cubic-bezier(0.4, 0, 0.2, 1);
  --duration: 150ms;
}


*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink-2);font:17px/1.7 var(--font-body);-webkit-font-smoothing:antialiased}h1,h2,h3{font-family:var(--font-heading);font-weight:600;line-height:1.16;color:var(--ink);letter-spacing:-.025em;margin:0}h1{font-size:clamp(42px,5.1vw,66px)}h2{font-size:clamp(30px,3vw,42px)}h3{font-size:23px}p{margin:0 0 20px;max-width:72ch}a{color:var(--indigo);text-underline-offset:4px}a:hover{color:var(--indigo-600)}button{font:inherit}img,svg{max-width:100%}a:focus-visible,button:focus-visible,summary:focus-visible{outline:3px solid var(--indigo);outline-offset:5px}.wrap{max-width:1264px;padding:0 32px;margin:auto}.skip{position:absolute;left:-9999px;background:var(--ink);color:var(--paper);padding:10px;z-index:100}.skip:focus{left:10px;top:10px}.header{border-bottom:1px solid var(--rule)}.header-inner{display:flex;align-items:center;justify-content:space-between;min-height:92px;gap:24px}.brand{display:flex;align-items:center;gap:11px;text-decoration:none;font:600 25px var(--font-heading);letter-spacing:-1px;color:var(--ink)}.brand img{width:42px;height:42px}.nav{display:flex;align-items:center;gap:27px}.nav a{font-size:14px;font-weight:500;text-decoration:none;color:var(--ink-2)}.nav a[aria-current=page]{color:var(--indigo);text-decoration:underline;text-underline-offset:8px}.btn{display:inline-flex;justify-content:center;align-items:center;text-decoration:none;font-size:14px;line-height:1.4;font-weight:600;padding:15px 22px;background:var(--indigo);color:var(--paper);border:1px solid var(--indigo);border-radius:var(--radius)}.btn:hover{background:var(--indigo-600);color:var(--paper)}.btn.secondary{background:transparent;color:var(--ink);border-color:var(--rule-2)}.nav .btn{color:var(--paper)}.menu{display:none;border:1px solid var(--rule-2);padding:8px 13px;background:var(--paper);color:var(--ink)}.hero{padding:94px 0 90px}.hero-grid{display:grid;grid-template-columns:1.12fr 1fr;gap:72px;align-items:center}.hero h1{max-width:14ch}.eyebrow{font:500 12px var(--font-mono);color:var(--indigo);margin-bottom:22px}.hero .eyebrow:before{content:'';display:block;width:40px;height:3px;background:var(--amber-400);margin-bottom:24px}.lead{font-size:20px;line-height:1.65;margin-top:27px;max-width:58ch}.actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:30px}.diagram{background:var(--d-bg);border-top:3px solid var(--amber-400);padding:28px;color:var(--d-text-2)}.diagram-title{font:500 13px var(--font-mono);color:var(--d-text);border-bottom:1px solid var(--d-rule-2);padding-bottom:18px;margin-bottom:24px}.node{padding:16px 18px;border:1px solid var(--d-rule-2);background:var(--d-panel)}.node strong{display:block;color:var(--d-text);font:500 18px var(--font-heading)}.node span{font-size:13px;display:block;margin-top:3px}.connector{text-align:center;font-size:18px;color:var(--d-text-3);line-height:30px}.node-pair{display:grid;grid-template-columns:1fr 1fr;gap:12px}.node-pair .node{padding:12px}.node-pair strong{font-size:15px}.diagram-note{font-size:12px;border-top:1px solid var(--d-rule-2);margin:22px 0 0;padding-top:16px}.strip{border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);background:var(--paper-2)}.strip .wrap{display:flex;justify-content:space-between;gap:24px;padding-top:20px;padding-bottom:20px;font:500 14px var(--font-heading);color:var(--ink)}section{padding:96px 0}.alt{background:var(--paper-2);border-top:1px solid var(--rule);border-bottom:1px solid var(--rule)}.section-head{display:grid;grid-template-columns:1fr 1fr;gap:80px;margin-bottom:42px}.section-head p{margin:0}.section-head h2{max-width:21ch}.grid{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--rule);border-left:1px solid var(--rule)}.cell{padding:32px;border-right:1px solid var(--rule);border-bottom:1px solid var(--rule)}.cell h3{margin-bottom:18px}.cell p{font-size:15px;line-height:1.8;margin-bottom:0}.plate{background:var(--d-bg);border-top:2px solid var(--amber-400);color:var(--d-text-2)}.plate h2,.plate h3{color:var(--d-text)}.plate .btn{background:var(--paper);border-color:var(--paper);color:var(--indigo)}.plate .grid,.plate .cell{border-color:var(--d-rule-2)}.rows{border-top:1px solid var(--rule)}.row{padding:28px 0;border-bottom:1px solid var(--rule);display:grid;grid-template-columns:210px 1fr 30px;gap:40px;text-decoration:none;color:var(--ink-2);align-items:start}.row h3{font-size:22px}.row p{font-size:15px;margin:0}.row .arrow{color:var(--indigo);font-size:23px}.split{display:grid;grid-template-columns:1fr 1fr;gap:80px}.split h2{margin-bottom:22px}.split h3{margin-bottom:14px}.note{border-left:3px solid var(--amber);padding-left:22px;font-size:14px}.page-hero{padding:80px 0 68px;border-bottom:1px solid var(--rule)}.page-hero h1{max-width:20ch;font-size:clamp(40px,5vw,58px)}.page-hero .lead{max-width:64ch}.prose{max-width:760px}.prose h2{font-size:30px;margin:44px 0 22px}.prose h2:first-child{margin-top:0}.steps{counter-reset:step}.step{display:grid;grid-template-columns:64px 1fr;gap:28px;border-top:1px solid var(--rule);padding:30px 0}.step:before{counter-increment:step;content:'0' counter(step);font:400 22px var(--font-mono);color:var(--indigo)}.step h3{margin-bottom:12px}.step p{margin:0}.contact-address{font-family:var(--font-heading);font-size:clamp(23px,4vw,38px);overflow-wrap:anywhere}.contact-panel{padding:32px;border:1px solid var(--rule);background:var(--paper-2)}.contact-panel h3{margin-bottom:20px}.contact-panel p{font-size:15px}.footer{border-top:1px solid var(--rule);padding:52px 0 28px}.footer-top{display:grid;grid-template-columns:1.6fr 1fr 1fr;gap:50px}.footer .brand{margin-bottom:16px}.footer p{font-size:14px;max-width:40ch}.footer h2{font:500 14px var(--font-heading);margin-bottom:16px}.footer a{display:block;font-size:14px;margin-bottom:8px;text-decoration:none}.footer .brand{display:flex;font-size:25px}.footer-bottom{border-top:1px solid var(--rule);margin-top:38px;padding-top:23px;font-size:12px;color:var(--ink-3);display:flex;justify-content:space-between;gap:16px}.industry-label{font:500 12px var(--font-mono);color:var(--ink-3);margin-bottom:14px}details{border-top:1px solid var(--rule);padding:21px 0}details:last-child{border-bottom:1px solid var(--rule)}summary{cursor:pointer;color:var(--ink);font-weight:500}details p{margin:16px 0 0;font-size:15px}.cta{padding:70px 0}.cta .wrap{display:flex;justify-content:space-between;align-items:center;gap:40px}.cta h2{font-size:32px;margin-bottom:12px}.cta p{margin:0}
@media(max-width:1050px){.nav{gap:17px}.nav a{font-size:13px}.hero-grid{gap:38px}.hero h1{font-size:53px}.header-inner{gap:15px}.nav .btn{padding:12px}.brand{font-size:23px}}
@media(max-width:850px){.menu{display:block}.header-inner{flex-wrap:wrap;min-height:78px;padding-top:15px;padding-bottom:15px}.nav{display:none;width:100%;padding:15px 0;flex-direction:column;align-items:stretch;gap:18px}.nav.open{display:flex}.nav a{font-size:16px}.hero-grid,.section-head,.split{grid-template-columns:1fr;gap:36px}.hero{padding:60px 0}.hero h1{font-size:clamp(42px,8vw,60px);max-width:18ch}.diagram{max-width:620px}.grid{grid-template-columns:repeat(2,1fr)}section{padding:64px 0}.strip .wrap{display:grid;grid-template-columns:1fr 1fr;gap:10px}.row{grid-template-columns:150px 1fr 20px;gap:22px}.footer-top{grid-template-columns:1.4fr 1fr 1fr;gap:24px}.cta .wrap{align-items:start;flex-direction:column}}
@media(max-width:560px){.wrap{padding-left:22px;padding-right:22px}.hero{padding:48px 0}.lead{font-size:18px}.hero-grid{gap:36px}.diagram{padding:22px}.grid{grid-template-columns:1fr}.cell{padding:26px}.row{grid-template-columns:1fr 24px;gap:12px}.row h3{grid-column:1}.row p{grid-column:1;grid-row:2}.row .arrow{grid-column:2;grid-row:1}.strip .wrap{font-size:12px}.footer-top{grid-template-columns:1fr 1fr}.footer-top>div:first-child{grid-column:1/-1}.footer-bottom{flex-direction:column}.page-hero{padding:52px 0}.step{grid-template-columns:40px 1fr;gap:18px}.node-pair{grid-template-columns:1fr}.contact-panel{padding:24px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important}}

.email-hint{margin-top:24px;font-size:14px}
section[id]{scroll-margin-top:28px}
