/* cyrillic-ext */

/* cyrillic */

/* greek */

/* vietnamese */

/* latin-ext */

/* latin */

/* cyrillic-ext */

/* cyrillic */

/* greek */

/* vietnamese */

/* latin-ext */

/* latin */

/* cyrillic-ext */

/* cyrillic */

/* greek */

/* vietnamese */

/* latin-ext */

/* latin */

/* cyrillic-ext */

/* cyrillic */

/* greek-ext */

/* greek */

/* vietnamese */

/* latin-ext */

/* latin */

/* cyrillic-ext */

/* cyrillic */

/* greek-ext */

/* greek */

/* vietnamese */

/* latin-ext */

/* latin */

/* cyrillic-ext */

/* cyrillic */

/* greek-ext */

/* greek */

/* vietnamese */

/* latin-ext */

/* latin */

/* cyrillic-ext */

/* cyrillic */

/* greek-ext */

/* greek */

/* math */

/* symbols */

/* vietnamese */

/* latin-ext */

/* latin */

/* cyrillic-ext */

/* cyrillic */

/* greek-ext */

/* greek */

/* math */

/* symbols */

/* vietnamese */

/* latin-ext */

/* latin */

/* cyrillic-ext */

/* cyrillic */

/* greek-ext */

/* greek */

/* math */

/* symbols */

/* vietnamese */

/* latin-ext */

/* latin */

/* cyrillic-ext */

/* cyrillic */

/* greek-ext */

/* greek */

/* math */

/* symbols */

/* vietnamese */

/* latin-ext */

/* latin */

/* cyrillic-ext */

/* cyrillic */

/* greek-ext */

/* greek */

/* math */

/* symbols */

/* vietnamese */

/* latin-ext */

/* latin */

/* cyrillic-ext */

/* cyrillic */

/* greek-ext */

/* greek */

/* math */

/* symbols */

/* vietnamese */

/* latin-ext */

/* latin */

/* cyrillic-ext */

/* cyrillic */

/* greek */

/* vietnamese */

/* latin-ext */

/* latin */

/* cyrillic-ext */

/* cyrillic */

/* greek */

/* vietnamese */

/* latin-ext */

/* latin */

/* vietnamese */

/* latin-ext */

/* latin */

/* vietnamese */

/* latin-ext */

/* latin */

/* vietnamese */

/* latin-ext */

/* latin */

/* ============================================================
   Minimal Code — Design System
   Font: Roboto / Roboto Mono
   Accent: #a70000 (no shadows anywhere)
   ============================================================ */

:root {
  --accent: #a70000;
  --accent-ink: #ffffff;

  /* Light mode defaults */
  --bg: #ffffff;
  --bg-soft: #fafafa;
  --bg-elev: #ffffff;
  --ink: #0a0a0a;
  --ink-2: #2a2a2a;
  --ink-3: #6b6b6b;
  --ink-4: #a0a0a0;
  --hair: #e8e8e8;
  --hair-strong: #d4d4d4;
  /* Control boundaries. --hair-strong is 1.48:1 on --bg and fails WCAG 1.4.11,
     which needs 3:1 where the boundary identifies the control. #8a8a8a is 3.45:1
     on #ffffff and 5.48:1 on #0a0a0a, so one value serves both surfaces. */
  --border-control: #8a8a8a;

  /* Surface-bound colour. Measured, because neither value works on both surfaces:
     --accent #a70000 is 7.95:1 on --bg but 2.49:1 on --ink;
     --accent-on-dark #ff6b6b is 7.13:1 on --ink but 2.66:1 on --bg-soft.
     These are one role on two surfaces, not two shades to be merged. Each is
     barred from the other's surface. --ink-on-dark is 12.84:1 on --ink. */
  --ink-on-dark: #f5f5f5;
  --ink-muted-on-dark: #999999;
  --hair-on-dark: #222222;
  --accent-on-dark: #ff6b6b;

  /* Density (tweakable) */
  --density: 1;
  --pad-y: calc(96px * var(--density));
  --pad-x: clamp(20px, 4vw, 80px);
  --gap: calc(24px * var(--density));

  /* Type */
  --font-head: 'Roboto', 'Helvetica Neue', Arial, sans-serif;
  --font-body: 'Roboto', 'Helvetica Neue', Arial, sans-serif;
  --font-mono: 'Roboto Mono', ui-monospace, 'SF Mono', Menlo, monospace;

  --fs-hero: clamp(40px, 4.4vw, 68px);
  --fs-h2: clamp(32px, 3vw, 46px);
  --fs-h3: clamp(22px, 2vw, 28px);
  --fs-body: 16px;
  --fs-small: 13px;
  --fs-micro: 12px;
  --fs-card: 19px;
  --fs-cta: clamp(32px, 3.4vw, 52px);   /* closing CTA heading, the size sig uses */      /* card title: the size sig uses for its own */
}

/* Vertical rhythm scales with the viewport. Redefining the token on :root moves every
   band on the site from one place; the alternative - a media query per band - is how
   this stylesheet ended up with six competing rhythms. Widths are sig's. */
@media (max-width: 1024px) { :root { --pad-y: calc(72px * var(--density)); } }
@media (max-width: 700px)  { :root { --pad-y: calc(56px * var(--density)); } }

[data-theme="dark"] {
  --bg: #0a0a0a;
  --bg-soft: #111111;
  --bg-elev: #141414;
  --ink: #f5f5f5;
  --ink-2: #dcdcdc;
  --ink-3: #a0a0a0;
  --ink-4: #6b6b6b;
  --hair: #262626;
  --hair-strong: #3a3a3a;
}

* { box-sizing: border-box; }

html, body {
  margin: 0;
  padding: 0;
  background: var(--bg);
  color: var(--ink);
  font-family: var(--font-body);
  font-size: var(--fs-body);
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  transition: background .4s ease, color .4s ease;
}

body.no-scroll { overflow: hidden; }

a { color: inherit; text-decoration: none; }
button { font-family: inherit; cursor: pointer; }
img { max-width: 100%; display: block; }

/* -----------------------------------------
   Utility
   ----------------------------------------- */
.container {
  width: 100%;
  max-width: min(1560px, calc(100% - 48px));
  margin: 0 auto;
  padding-inline: 0;
}

.eyebrow {
  font-family: var(--font-mono);
  font-size: var(--fs-micro);
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--ink-3);
  display: inline-flex;
  align-items: center;
  gap: 10px;
}
.eyebrow::before {
  content: "";
  width: 0;
  height: 1px;
  background: var(--accent);
  display: none;
}
.h-section {
  font-family: var(--font-head);
  font-weight: 500;
  font-size: var(--fs-h2);
  letter-spacing: -0.025em;
  line-height: 1.05;
  margin: 0;
  text-wrap: balance;
}
.h-card {
  font-family: var(--font-head);
  font-weight: 500;
  font-size: var(--fs-card);
  letter-spacing: -0.015em;
  line-height: 1.15;
  margin: 0;
}
.mono {
  font-family: var(--font-mono);
  font-size: var(--fs-small);
  letter-spacing: 0.02em;
}

.lede {
  font-size: clamp(15px, 1.1vw, 18px);
  color: var(--ink-3);
  max-width: 62ch;
  line-height: 1.55;
  margin: 0;
}

/* Buttons (no shadows) */
.btn {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 14px 22px;
  font-family: var(--font-body);
  font-size: 14px;
  font-weight: 500;
  letter-spacing: .01em;
  border: 1px solid transparent;
  border-radius: 0;
  transition: background .2s ease, color .2s ease, border-color .2s ease, transform .2s ease;
  text-decoration: none;
  line-height: 1;
}
.btn-primary {
  background: var(--accent);
  color: var(--accent-ink);
  border-color: var(--accent);
}
.btn-primary:hover { background: #8a0000; border-color: #8a0000; }
/* .btn-lg had no base definition and existed only as `.p-gpu .btn-lg`, so the
   class was inert everywhere else: `btn btn-primary btn-lg` rendered at the
   43px base height on cloud-infrastructure and 52px on private-ai-gpu-cloud.
   One definition, matching what .p-gpu already used. */
.btn-lg { padding: 18px 28px; font-size: 15px; }
.btn .arrow { transition: transform .2s ease; }
.btn:hover .arrow { transform: translateX(4px); }

/* Sections */
section { padding-block: var(--pad-y); }
.section-head {
  display: grid;
  grid-template-columns: 1fr;
  gap: 20px;
  margin-bottom: calc(var(--pad-y) * 0.5);
}
.section-head-row {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 40px;
  flex-wrap: wrap;
}

/* Hairline */
.hr { height: 1px; background: var(--hair); border: 0; margin: 0; }

/* Focus */
:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}

/* Scroll reveal */
.reveal {
  opacity: 0;
  transform: translateY(16px);
  transition: opacity .8s ease, transform .8s ease;
}
.reveal.in {
  opacity: 1;
  transform: translateY(0);
}

/* Image placeholder (striped) */
.ph {
  position: relative;
  background: var(--bg-soft);
  border: 1px solid var(--hair);
  overflow: hidden;
}
.ph::before {
  content: "";
  position: absolute; inset: 0;
  background-image: repeating-linear-gradient(
    135deg,
    transparent 0 14px,
    color-mix(in oklab, var(--ink) 4%, transparent) 14px 15px
  );
}
.ph .ph-label {
  position: absolute;
  left: 16px; bottom: 14px;
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--ink-3);
  background: var(--bg);
  padding: 4px 8px;
  border: 1px solid var(--hair);
}

/* ============================================================
   Section-specific styles
   ============================================================ */

/* -------- HEADER -------- */
.mc-header.scrolled {
  border-bottom-color: var(--hair);
}
.mc-header.scrolled .mc-header-inner { height: 60px; }
.mc-logo {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-family: var(--font-head);
  font-weight: 700;
  letter-spacing: -0.01em;
  font-size: 16px;
}
.mc-header .btn { padding: 10px 16px; font-size: 13px; }

/* -------- HERO -------- */
.hero-title .accent {
  color: var(--accent);
  font-style: italic;
  font-weight: 400;
}

/* Vertical links row */

/* Hero visual (dashboard / photo placeholder) */
.hv-metric .label {
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--ink-3);
  margin-bottom: 6px;
}
.hv-metric.accent-bg .label { color: rgba(255,255,255,.7); }
.hv-chart-head .t { font-size: 13px; font-weight: 500; }
.hv-chart-head .m { font-family: var(--font-mono); font-size: 11px; color: var(--ink-3); }
.hv-right .ph-bottom .big {
  font-family: var(--font-head);
  font-weight: 500;
  font-size: 32px;
  letter-spacing: -.02em;
  line-height: 1;
}
.hv-right .ph-bottom .cap {
  font-family: var(--font-mono);
  font-size: 11px;
  margin-top: 8px;
  opacity: .7;
  letter-spacing: .08em;
  text-transform: uppercase;
}

/* -------- CORE VERTICALS -------- */
.cv-section { background: var(--bg); }
.cv-intro {
  display: grid;
  grid-template-columns: 1fr 1.3fr;
  gap: 80px;
  align-items: center;
  margin-bottom: 80px;
}
.cv-intro .lede { max-width: none; }

.vertical {
  padding-block: 72px;
}
/* The number+name now heads the whole block on its own full-width row, so it is sized to
   read as a label rather than a caption. .1em tracking is too airy once the type is this big. */
.vertical-title .h-section { margin-bottom: 12px; }
.vertical-link {
  display: inline-flex; align-items: center; gap: 10px;
  margin-top: 22px;
  font-size: 14px;
  font-weight: 500;
  color: var(--accent);
  border-bottom: 1px solid var(--accent);
  padding-bottom: 2px;
  transition: gap .2s ease;
}
.vertical-link:hover { gap: 14px; }

/* Product cards within a vertical */
.product-grid { display: grid; gap: 24px; margin-top: 12px; }
.product-grid.stacked { grid-template-columns: 1fr; }
.product-grid.split { grid-template-columns: repeat(2, 1fr); }
.product-grid.triad { grid-template-columns: repeat(3, 1fr); }

.product {
  border: 1px solid var(--hair);
  background: var(--bg-elev);
  overflow: hidden;
  display: grid;
  transition: border-color .25s ease, transform .3s ease;
}
.product.horizontal { grid-template-columns: 1fr 1.1fr; min-height: 260px; }
.product.vertical-card { grid-template-rows: 200px auto; }
.product:hover {
  border-color: var(--ink);
}
.product:hover .product-cta .arrow { transform: translateX(4px); }
.product-copy {
  padding: 28px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  gap: 18px;
}
.product-copy .tag {
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--ink-3);
}
.product-copy h4 {
  font-family: var(--font-head);
  font-weight: 500;
  font-size: 22px;
  letter-spacing: -.01em;
  line-height: 1.15;
  margin: 8px 0 10px;
}
.product-copy h4 .accent { color: var(--accent); }
.product-copy p {
  font-size: 14px;
  color: var(--ink-3);
  margin: 0;
  line-height: 1.55;
}
.product-cta {
  display: inline-flex; align-items: center; gap: 8px;
  font-size: 13px;
  font-weight: 500;
  color: var(--ink);
  padding: 10px 0;
  border-bottom: 1px solid var(--ink);
  width: fit-content;
}
.product-cta-row { display: flex; gap: 28px; flex-wrap: wrap; align-items: center; }
.product-cta.secondary { color: var(--accent); border-bottom-color: var(--accent); }
.product-cta .arrow { transition: transform .25s ease; }

/* Special: DC hero product block */
@keyframes pulseDot {
  0% { box-shadow: 0 0 0 0 rgba(255,255,255,.7); }
  70% { box-shadow: 0 0 0 8px rgba(255,255,255,0); }
  100% { box-shadow: 0 0 0 0 rgba(255,255,255,0); }
}

/* Media placeholder content */
.media-overlay .row {
  display: flex; justify-content: space-between; align-items: flex-end;
  gap: 20px;
}

/* -------- WHY MINIMAL CODE -------- */
.pillar .num {
  font-family: var(--font-mono);
  font-size: 12px;
  color: var(--accent);
  letter-spacing: .1em;
}

/* -------- TECHNICAL PROWESS -------- */
.prowess-item .label {
  font-family: var(--font-mono);
  font-size: 11px;
  color: var(--ink-3);
  letter-spacing: .1em;
  text-transform: uppercase;
  margin-bottom: 16px;
}
.prowess-item .val .unit {
  font-size: .5em;
  color: var(--ink-3);
  margin-left: 4px;
}
.prowess-item .desc {
  font-size: 13px;
  color: var(--ink-3);
  line-height: 1.5;
}

/* -------- WHY CONTACT US -------- */
.cw-item p.always { max-height: 200px; opacity: 1; }

/* -------- TESTIMONIAL -------- */
.t-copy .quote {
  font-family: var(--font-head);
  font-weight: 300;
  font-size: clamp(22px, 2.2vw, 34px);
  letter-spacing: -.015em;
  line-height: 1.3;
  color: var(--ink);
  margin: 0 0 36px;
  min-height: 240px;
  text-wrap: pretty;
}
.t-copy .quote .em { color: var(--accent); font-style: italic; font-weight: 400; }
.t-copy .author {
  font-family: var(--font-head);
  font-weight: 500;
  font-size: 15px;
  margin: 0;
}
.t-copy .role {
  font-size: 13px;
  color: var(--ink-3);
  margin-top: 2px;
}
.t-dot.active { background: var(--accent); width: 40px; }

/* -------- CONTACT FORM -------- */
.contact-section {
  background: var(--accent);
  color: var(--accent-ink);
  position: relative;
}
.contact-section .eyebrow { color: rgba(255,255,255,.7); }
.contact-section .eyebrow::before { background: #fff; }
.contact-wrap {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 80px;
  align-items: start;
}
.contact-wrap h2 {
  font-family: var(--font-head);
  font-weight: 500;
  font-size: var(--fs-cta);
  letter-spacing: -.03em;
  line-height: 1;
  margin: 20px 0 24px;
}

.form {
  display: grid;
  gap: 4px;
  background: #fff;
  color: var(--ink);
  padding: 32px;
  border: 1px solid rgba(255,255,255,.2);
}
.form-row {
  display: grid;
  gap: 20px;
  grid-template-columns: 1fr 1fr;
}
/* Fields: the design system's 1B "Dolgu" treatment (karar 16.08.2026), tenant-wide.
   The retired underline/borderless input was removed from every form on 10.09.2026 —
   /contact, the homepage .cform band and the p-dvo/p-sdv/p-hci page forms all inherit
   these rules; only the custom select chevron stays with .cform below. Error state is
   .field.err (siteJs adds it on contactform:invalid). Focus keeps a visible indicator —
   outline:none is banned (WCAG 2.4.7, decision 03.08.2026).
   background-COLOR rather than the shorthand: .cform's select chevron is a
   background-image, and the shorthand would erase it. */
.field { position: relative; padding: 10px 0 0; }
.field label {
  display: block;
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--ink-3);
  margin-bottom: 6px;
}
.field input, .field textarea, .field select {
  width: 100%;
  border: 1px solid transparent;
  background-color: var(--bg-soft);
  font-family: var(--font-body);
  font-size: 16px;
  color: var(--ink);
  padding: 12px 14px;
  resize: vertical;
  transition: background-color .2s ease, border-color .2s ease;
}
.field input:hover, .field textarea:hover, .field select:hover { background-color: #f2f2f2; }
.field input:focus, .field textarea:focus, .field select:focus { background-color: var(--bg); border-color: var(--ink); }
.field.err input, .field.err textarea, .field.err select { border-color: var(--accent); background-color: rgba(167,0,0,.05); }
.field input:focus-visible, .field textarea:focus-visible, .field select:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.field textarea { min-height: 150px; }
.field .err-msg {
  font-family: var(--font-mono);
  font-size: 11px;
  color: var(--accent);
  margin-top: 6px;
  letter-spacing: .04em;
  min-height: 14px;
}
.form-submit { margin-top: 16px; display: flex; justify-content: space-between; align-items: center; }
.form-submit .meta { font-family: var(--font-mono); font-size: 11px; color: var(--ink-3); letter-spacing: .08em; text-transform: uppercase; }

/* -------- FOOTER -------- */
.mc-footer {
  background: var(--ink);
  color: var(--ink-on-dark);
  padding-top: 80px;
  padding-bottom: 24px;
}
[data-theme="dark"] .mc-footer { background: #000; }
.footer-grid {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr 1fr 1fr;
  gap: 48px;
  padding-bottom: 64px;
  border-bottom: 1px solid var(--hair-on-dark);
}
.footer-brand .mc-logo { color: #fff; font-size: 20px; }
.footer-brand p {
  color: var(--ink-muted-on-dark);
  font-size: 14px;
  max-width: 36ch;
  margin: 20px 0 0;
  line-height: 1.55;
}
.footer-col h6 {
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--ink-muted-on-dark);
  margin: 0 0 18px;
  font-weight: 400;
}
.footer-col ul { list-style: none; padding: 0; margin: 0; display: grid; gap: 10px; }
.footer-col a { color: var(--ink-on-dark); font-size: 14px; }
.footer-col a:hover { color: #fff; }
.footer-bottom {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-top: 24px;
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: .06em;
  color: var(--ink-muted-on-dark);
}
.footer-bottom .locations { display: flex; gap: 20px; }
.footer-bottom .locations span { display: flex; gap: 6px; align-items: center; }
.footer-bottom .locations span::before { content: ""; width: 6px; height: 6px; background: var(--accent); }

/* -------- TWEAKS PANEL -------- */
.tweaks-panel.open { display: block; }
.tweak-swatches button.active { outline: 2px solid var(--ink); outline-offset: 2px; }
.tweak-opts button.active { background: var(--ink); color: var(--bg); }

/* -------- RESPONSIVE -------- */
@media (max-width: 1000px) {
  .cv-intro { grid-template-columns: 1fr; gap: 24px; }
  .product.horizontal { grid-template-columns: 1fr; }
  .contact-wrap { grid-template-columns: 1fr; gap: 40px; }
  .footer-grid { grid-template-columns: 1fr 1fr; }
  .product-grid.split, .product-grid.triad { grid-template-columns: 1fr; }
}

/* -------- TEXT REVEAL (HSM / FINMA) -------- */
.tr-char.in {
  opacity: 1;
  transform: translateY(0);
  filter: blur(0);
}

/* -------- WHY CONTACT US V2 (testimonial-style) -------- */
.cw-photo.active { opacity: 1; }
.cw-visual-overlay .row {
  display: flex; justify-content: space-between; align-items: flex-end;
  gap: 20px;
}
.cw-body .em {
  color: var(--accent);
  font-style: italic;
  font-weight: 400;
}

/* ============================================================
   HERO V2 — editorial image + floating card bar
   ============================================================ */
.hero-v2 {
  padding-top: 0;
  margin-top: 8px;
  overflow: visible;
}
.hv2-stage {
  position: relative;
  width: 100%;
  height: clamp(460px, 62vh, 680px);
  overflow: hidden;
}
.hv2-bg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: grayscale(8%) contrast(1.02) brightness(0.88);
}
.hv2-scrim {
  position: absolute;
  inset: 0;
  background:
    linear-gradient(180deg, rgba(0,0,0,.15) 0%, rgba(0,0,0,.28) 40%, rgba(0,0,0,.55) 100%),
    radial-gradient(120% 80% at 30% 40%, rgba(0,0,0,0) 0%, rgba(0,0,0,.35) 100%);
}
.hv2-inner {
  position: relative;
  height: 100%;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 18px;
  color: #fff;
  padding-bottom: 90px;
}
.hv2-eyebrow .dot {
  width: 6px; height: 6px;
  border-radius: 50%;
  background: var(--accent);
  box-shadow: 0 0 0 4px rgba(167,0,0,.18);
}
.hv2-title {
  font-family: var(--font-head);
  font-weight: 400;
  font-size: clamp(44px, 6.2vw, 96px);
  line-height: 1.02;
  letter-spacing: -0.03em;
  margin: 0;
  max-width: 18ch;
  text-wrap: balance;
  color: #fff;
}
.hv2-title .accent-italic {
  font-style: italic;
  font-weight: 300;
  color: #fff;
}

/* Floating card bar pulled upward, overlaps hero image */
.hv2-bar {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  background: var(--bg);
  border: 1px solid var(--hair);
  box-shadow: 0 24px 60px -24px rgba(0,0,0,.35), 0 2px 0 0 rgba(0,0,0,.04);
  margin-top: -80px;
  position: relative;
  z-index: 2;
}

@media (max-width: 900px) {
  .hv2-bar { grid-template-columns: 1fr; margin-top: -40px; }
  .hv2-stage { height: 60vh; }
}

/* Hero v2 ↔ Core Verticals spacing fix */
.hero-v2 + section,
.hero-v2 ~ main section:first-of-type,
section.hero-v2 ~ section { /* no-op selector fallback */ }
.hero-v2 { padding-bottom: 0; margin-bottom: 0; }
.hero-v2 + section.cv-section,
.hero-v2 ~ .cv-section { padding-top: 48px; }
.cv-section { padding-top: 56px; }

/* product-media overlay polish */
.product-media .media-overlay .row { align-items: flex-end; }

/* image logo */
.mc-logo-img { padding: 0; gap: 0; }
.mc-logo-footer img { height: 56px !important; width: auto !important; filter: none !important; }

/* logo sizing */
.mc-logo-img img { height: 40px; width: auto; display: block; }
.mc-footer .mc-logo-img img { height: 44px; }

/* header-tight-override */
.mc-header.scrolled .mc-header-inner { min-height: 60px; padding-top: 8px; padding-bottom: 8px; }

/* === Alarm CTA variants === */

/* B - Marker / highlighter */

/* C - Ticker bar */
@keyframes kcSlide {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

/* D - Glitch / accent bar */
@keyframes kdPulse {
  0%, 100% { background: var(--accent); box-shadow: 0 0 12px rgba(167,0,0,.0); }
  50% { background: #ff2b2b; box-shadow: 0 0 14px rgba(167,0,0,.7); }
}

/* === NAV VARIANTS === */

/* logo text fallback (so variants don't depend on the original PNG block) */
.mc-logo .logo-text {
  font-family: var(--font-mono);
  font-size: 14px;
  letter-spacing: .22em;
  font-weight: 600;
  color: var(--ink);
}

/* B - Editorial */
.nav-edi {
  position: sticky;
  top: 0;
  z-index: 50;
}
.nav-edi-utility .ne-langs a.active { color: #fff; }
.nav-edi-main {
  background: var(--bg);
  border-bottom: 1px solid transparent;
  transition: border-color .3s ease;
}
.nav-edi.scrolled .nav-edi-main { border-bottom-color: var(--hair); }
.nav-edi-inner {
  display: flex;
  align-items: center;
  gap: 32px;
  height: 72px;
}
.ne-nav {
  display: flex;
  align-items: center;
  gap: 28px;
  margin-left: auto;
  margin-right: auto;
}
.ne-nav a {
  font-size: 15px;
  font-weight: 500;
  color: var(--ink-2);
  position: relative;
  padding: 22px 2px;
  transition: color .25s ease;
  display: inline-block;
}
/* No font-weight change on hover: a heavier face is WIDER, and .ne-nav is a flex row, so
   every following link slid sideways (measured: +1.3px on the hovered item, +0.6px on the
   rest). The accent colour and the scaleX underline carry the hover state instead. */
.ne-nav a:hover {
  color: var(--accent);
}
.ne-nav a::before {
  content: '';
  position: absolute;
  left: 0; bottom: 14px;
  width: 100%;
  height: 2px;
  background: var(--accent);
  transform: scaleX(0);
  transform-origin: right center;
  transition: transform .35s cubic-bezier(.65,.05,.35,1);
}
.ne-nav a:hover::before {
  transform: scaleX(1);
  transform-origin: left center;
}
.ne-cta {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  padding: 12px 18px 12px 22px;
  background: var(--accent);
  border: 1.5px solid var(--accent);
  font-family: var(--font-head);
  font-size: 15px;
  font-weight: 500;
  color: #fff;
  transition: background .2s ease, border-color .2s ease, transform .2s ease;
}
.ne-cta .ne-cta-arrow {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  transition: transform .25s ease;
}
.ne-cta .ne-cta-arrow svg { width: 16px; height: 16px; }
.ne-cta:hover {
  background: #8a0000;
  border-color: #8a0000;
}
.ne-cta:hover .ne-cta-arrow { transform: translateX(4px); }

/* C - Numbered Index */
.nav-idx.scrolled { border-bottom-color: var(--hair); }

/* === NAV E1 - Masthead === */

/* === NAV E3 - Pill cluster === */
.nav-pill.scrolled .nav-pill-main { border-bottom-color: var(--hair); }

/* ============================================================
   UNIFORM SECTION RHYTHM — equal vertical spacing between sections
   ============================================================ */
.cv-section,
.why-section,
.prowess-section,
.contact-why-section,
.contact-section {
  padding-top: var(--pad-y) !important;
  padding-bottom: var(--pad-y) !important;
}
/* Core Verticals contains internal .vertical rows — keep its outer band equal too */
.cv-section .vertical { padding-block: var(--pad-y); }
/* When the editorial/v2 hero sits above Core Verticals, keep the same gap */
.hero-v2 + section.cv-section,
.hero-v2 ~ .cv-section { padding-top: var(--pad-y) !important; }
/* The platform .container leaks pt-16/py-20; this design centers via max-width and wants no container padding. */
.container{padding:0!important;}

/* ===== data-center-infrastructure page-specific rules ===== */
/* ============================================================
   Data Center & Infrastructure — landing design
   Builds on mc-base.css (shared vars, nav, footer).
   ============================================================ */
.dc-page .container { width: 100%; max-width: 1240px; margin: 0 auto; padding: 0 32px; }
.dc-eyebrow {
  font-family: var(--font-mono);
  font-size: 12px;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--accent);
  display: inline-block;
  margin-bottom: 18px;
}
/* ---------------- HERO ---------------- */
/* ---------------- STATS ---------------- */
.dc-stat-big .accent { color: var(--accent); }
/* ---------------- OVERVIEW ---------------- */
.dc-overview-list { border-top: 1px solid var(--hair-strong); }
.dc-overview-item { display: grid; grid-template-columns: 80px 1fr 28px; align-items: center; gap: 24px; padding: 30px 0 30px 16px; border-bottom: 1px solid var(--hair); text-decoration: none; color: var(--ink); position: relative; transition: padding .25s ease, background .25s ease; }
.dc-overview-item::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 0; background: var(--accent); transition: width .25s ease; }
.dc-overview-item:hover { padding-left: 28px; background: color-mix(in oklab, var(--accent) 4%, var(--bg)); }
.dc-overview-item:hover::before { width: 4px; }
.dc-overview-item .num { font-family: var(--font-mono); font-size: 15px; color: var(--accent); }
.dc-overview-item .ttl { font-family: var(--font-head); font-weight: 400; font-size: var(--fs-card); letter-spacing: -.02em; }
.dc-overview-item .arr { color: var(--ink-3); display: inline-flex; transition: transform .25s ease, color .25s ease; }
.dc-overview-item:hover .arr { color: var(--accent); transform: translateX(4px); }
/* ---------------- SOLUTION DETAIL ---------------- */
.dc-solution-tag .n { color: var(--accent); }
/* ---------------- WHY ---------------- */
.dc-why-card .ix { font-family: var(--font-mono); font-size: 12px; letter-spacing: .14em; color: var(--accent); }
/* ---------------- APPROACH ---------------- */
.dc-step .ix { font-family: var(--font-head); font-weight: 300; font-size: clamp(44px, 4.5vw, 64px); letter-spacing: -.03em; color: var(--ink-3); display: block; margin-bottom: 18px; }
/* ---------------- CONTACT ---------------- */
.dc-contact-facts .row { display: flex; justify-content: space-between; gap: 20px; padding: 14px 0; border-bottom: 1px solid var(--hair); font-family: var(--font-mono); font-size: 12px; letter-spacing: .06em; text-transform: uppercase; }
.dc-contact-facts .k { color: var(--ink-3); }
.dc-contact-facts .v { color: var(--ink); }
/* No published page uses .dc-field today; its inputs are kept aligned with the
   tenant-wide Dolgu treatment so a revival cannot resurrect the retired underline. */
.dc-field .msg { display: block; font-family: var(--font-mono); font-size: 10px; letter-spacing: .04em; color: var(--accent); min-height: 12px; margin-top: 6px; }
.dc-field.err input, .dc-field.err select, .dc-field.err textarea { border-color: var(--accent); background-color: rgba(167,0,0,.05); }
.dc-form-sent { display: flex; flex-direction: column; gap: 14px; justify-content: center; min-height: 360px; }
.dc-form-sent h3 { font-family: var(--font-head); font-weight: 400; font-size: 26px; letter-spacing: -.02em; color: var(--ink); margin: 0; }
.dc-form-sent p { font-family: var(--font-head); font-size: 15px; line-height: 1.6; color: var(--ink-2); margin: 0; }
/* ---------------- FAQ ---------------- */
.dc-faq { padding: var(--pad-y) 0; }   /* was a flat 110px; every other band steps with the token */
.dc-faq-grid { display: grid; grid-template-columns: 1fr 1.4fr; gap: 72px; align-items: start; }
.dc-faq-head h2 { margin: 0 0 18px; }
.dc-faq-list { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--hair-strong); }
.dc-faq-item { border-bottom: 1px solid var(--hair); }
.dc-faq-q { width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 26px 0; background: transparent; border: 0; cursor: pointer; text-align: left; font: inherit; color: var(--ink); }
.dc-faq-q .qt { font-family: var(--font-head); font-weight: 500; font-size: 19px; letter-spacing: -.01em; line-height: 1.3; }
.dc-faq-q .ic { font-family: var(--font-mono); font-size: 22px; font-weight: 300; color: var(--ink-3); transition: transform .25s ease, color .2s ease; }
.dc-faq-item.open .dc-faq-q .ic { transform: rotate(45deg); color: var(--accent); }
.dc-faq-a { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .35s ease; }
.dc-faq-a > div { overflow: hidden; font-family: var(--font-head); font-size: 15px; line-height: 1.65; color: var(--ink-2); padding-right: 24px; }
.dc-faq-item.open .dc-faq-a { grid-template-rows: 1fr; }
.dc-faq-item.open .dc-faq-a > div { padding-bottom: 26px; }
/* ---------------- RESPONSIVE ---------------- */
@media (max-width: 1000px) {
  .dc-overview-head, .dc-why-head, .dc-solution-grid, .dc-managed, .dc-contact-grid, .dc-faq-grid { grid-template-columns: 1fr; gap: 32px; }
}
/* page-only tweaks panel */
.bf-tweaks.open { display: flex; }
.bf-tweaks .lbl { color: var(--ink-3); }
.bf-tweaks button.active {
  background: var(--accent);
  color: #fff;
  border-color: var(--accent);
}
.bf-tweaks .x {
  margin-left: 8px;
  border: 0;
  background: transparent;
  color: var(--ink-3);
  cursor: pointer;
  font-size: 14px;
  letter-spacing: 0;
}

/* ===== data-center-infrastructure page-specific rules ===== */
/* ============================================================
   Data Center & Infrastructure — landing design
   Builds on mc-base.css (shared vars, nav, footer).
   ============================================================ */

/* ===== blockchain-fintech page-specific rules ===== */
/* ============================================================
   Blockchain & FinTech — page-specific styles
   Builds on mc-base.css; adds bespoke components.
   ============================================================ */

/* Page wrapper that adds top spacing to clear the editorial nav (utility 32px + main 88px) */
/* ============================ HERO (split) ============================ */
.bf-hero {
  background: var(--bg);
  position: relative;
  overflow: hidden;
  border-bottom: 1px solid var(--hair);
}
.bf-hero-grid {
  display: grid;
  grid-template-columns: 1.15fr 1fr;
  gap: 80px;
  align-items: stretch;
  padding: 96px 0 88px;
}
.bf-hero-left { display: flex; flex-direction: column; justify-content: space-between; gap: 56px; }
.bf-hero-cta-row {
  display: flex;
  align-items: center;
  gap: 24px;
  flex-wrap: wrap;
}
.bf-hero-secondary {
  font-family: var(--font-mono);
  font-size: 12px;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--ink-2);
  border-bottom: 1px solid var(--hair-strong);
  padding-bottom: 4px;
  transition: color .2s ease, border-color .2s ease;
}
.bf-hero-secondary:hover { color: var(--accent); border-color: var(--accent); }
/* Hero right: stat panel (V1) */
.bf-stat-value .unit {
  color: var(--accent);
  font-style: italic;
  font-weight: 400;
}
/* Hero right alt: schematic diagram (V2) */
.bf-schem-corner {
  position: absolute;
  width: 10px; height: 10px;
  border: 1px solid var(--accent);
}
.bf-schem-corner.tl { top: -1px; left: -1px; border-right: 0; border-bottom: 0; }
.bf-schem-corner.tr { top: -1px; right: -1px; border-left: 0; border-bottom: 0; }
.bf-schem-corner.bl { bottom: -1px; left: -1px; border-right: 0; border-top: 0; }
.bf-schem-corner.br { bottom: -1px; right: -1px; border-left: 0; border-top: 0; }
.bf-schem-row .tag {
  padding: 10px 12px;
  background: var(--ink);
  color: #fff;
  min-width: 86px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.bf-schem-row.accent .tag { background: var(--accent); }
.bf-schem-row .body {
  padding: 10px 14px;
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: space-between;
  color: var(--ink);
}
.bf-schem-row .body .num { color: var(--accent); font-weight: 500; }
/* ============================ INTRO BAND ============================ */
.bf-intro-figure figcaption .ix { color: var(--accent); letter-spacing: .22em; }
.bf-intro p .em { color: var(--ink); font-weight: 500; }
.bf-intro-metric .v {
  font-family: var(--font-head);
  font-weight: 300;
  font-size: clamp(34px, 3.6vw, 54px);
  line-height: 1;
  letter-spacing: -.025em;
  color: var(--ink);
}
.bf-intro-metric .v .accent { color: var(--accent); font-style: italic; font-weight: 400; }
.bf-intro-metric .l {
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--ink-3);
  margin-top: 12px;
}
/* ============================ ENGINE (3 differentiators) ============================ */
.bf-engine .container { padding-bottom: 0; }
.bf-engine-list { margin-bottom: 0 !important; }
.bf-engine.light {
  background: var(--bg);
  color: var(--ink);
  border-bottom: 1px solid var(--hair);
}
.bf-engine.light .bf-intro-eyebrow { color: var(--accent); }
.bf-engine .lede {
  font-family: var(--font-head);
  font-size: 17px;
  line-height: 1.55;
  color: color-mix(in oklab, currentColor 70%, transparent);
  margin: 0;
  max-width: 540px;
}
.bf-engine-list {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0;
  border-top: 1px solid color-mix(in oklab, currentColor 18%, transparent);
}
.bf-engine-row {
  display: grid;
  grid-template-columns: 96px 1fr 1.6fr;
  gap: 48px;
  padding: 44px 0;
  border-bottom: 1px solid color-mix(in oklab, currentColor 18%, transparent);
  align-items: start;
}
.bf-engine-row .ix {
  font-family: var(--font-head);
  font-weight: 300;
  font-size: 64px;
  line-height: 1;
  letter-spacing: -.03em;
  color: var(--accent);
}
.bf-engine-row .ttl {
  font-family: var(--font-head);
  font-weight: 400;
  font-size: var(--fs-card);
  line-height: 1.15;
  letter-spacing: -.015em;
  color: inherit;
}
.bf-engine-row .ttl .it { font-style: italic; color: var(--accent); }
.bf-engine-row .body p {
  font-family: var(--font-head);
  font-size: 16px;
  line-height: 1.6;
  margin: 0 0 14px;
  color: color-mix(in oklab, currentColor 78%, transparent);
}
.bf-engine-row .body .diff {
  display: flex;
  gap: 14px;
  padding: 14px 18px;
  border-left: 2px solid var(--accent);
  background: color-mix(in oklab, currentColor 6%, transparent);
  font-family: var(--font-head);
  font-size: 14px;
  line-height: 1.5;
  color: inherit;
}
.bf-engine-row .body .diff .label {
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--accent);
  /* No nowrap. The short labels this rule was written for fit anyway; a long
     one did not, and forced invoicepipeline 207px wider than a 375px viewport. */
  margin-top: 2px;
}
/* ============================ SOLUTIONS vs SERVICES (tabbed editorial) ============================ */
.bf-svs-head .lede {
  font-family: var(--font-head);
  font-size: 17px;
  line-height: 1.55;
  color: var(--ink-2);
  margin: 16px 0 0;
  max-width: 640px;
}
/* tabs */
.bf-svs-tab .ix {
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: .22em;
  color: var(--accent);
}
.bf-svs-tab .lbl {
  font-family: var(--font-head);
  font-weight: 400;
  font-size: clamp(28px, 3vw, 44px);
  letter-spacing: -.02em;
  line-height: 1;
  color: currentColor;
}
.bf-svs-tab .ct {
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--ink-3);
  opacity: .8;
}
.bf-svs-tab.on {
  color: var(--ink);
  background: var(--ink);
  color: #f3efe7;
}
.bf-svs-tab.on .ct { color: rgba(243,239,231,.6); }
.bf-svs-tab.on .ix { color: var(--accent); }
.bf-svs-tab.on::after {
  content: "";
  position: absolute;
  left: 0; right: 0; bottom: -1px;
  height: 2px;
  background: var(--accent);
}
/* board */
@keyframes bfSvsFade {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: translateY(0); }
}
.bf-svs-aside .track {
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--accent);
  margin-bottom: 8px;
}
.bf-svs-aside-foot .k { color: var(--ink-3); }
.bf-svs-aside-foot .v { color: var(--ink); }
/* items list */
.bf-svs-item.on {
  background: color-mix(in oklab, var(--accent) 4%, var(--bg));
}
.bf-svs-item.on::before { width: 4px; }
.bf-svs-item .num {
  font-family: var(--font-mono);
  font-weight: 400;
  font-size: 44px;
  line-height: 1;
  letter-spacing: -.02em;
  color: var(--ink-3);
  opacity: .35;
  padding-top: 6px;
  transition: opacity .25s ease, color .25s ease;
}
.bf-svs-item.on .num { color: var(--accent); opacity: 1; }
.bf-svs-item .meta {
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--accent);
  margin-bottom: 10px;
}
.bf-svs-item .ttl {
  font-family: var(--font-head);
  font-weight: 500;
  font-size: var(--fs-card);
  line-height: 1.2;
  letter-spacing: -.015em;
  color: var(--ink);
  margin: 0 0 10px;
}
.bf-svs-item .body {
  font-family: var(--font-head);
  font-size: 15px;
  line-height: 1.6;
  color: var(--ink-2);
  margin: 0;
  max-width: 60ch;
}
.bf-svs-item.on .chev,
.bf-svs-item:hover .chev {
  opacity: 1;
  color: var(--accent);
  transform: translate(0, 0);
}
@media (max-width: 920px) {
  .bf-svs-tab .lbl { font-size: 28px; }
  .bf-svs-item .num { font-size: 32px; }
}
/* ============================ INDUSTRY ALIGNMENT ============================ */
.bf-industry-head .lede {
  font-family: var(--font-head);
  font-size: 17px;
  line-height: 1.55;
  color: var(--ink-2);
  margin: 0;
  max-width: 540px;
}
.bf-industry-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0;
  border-top: 1px solid var(--hair-strong);
}
.bf-industry-card {
  padding: 36px 28px 36px 28px;
  border-right: 1px solid var(--hair);
  border-bottom: 1px solid var(--hair-strong);
  position: relative;
  transition: background .25s ease;
}
.bf-industry-card:first-child { padding-left: 0; }
.bf-industry-card:last-child { border-right: 0; padding-right: 0; }
.bf-industry-card:hover { background: color-mix(in oklab, var(--ink) 3%, transparent); }
.bf-industry-card .num {
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: .18em;
  color: var(--accent);
  text-transform: uppercase;
}
.bf-industry-card h4 {
  font-family: var(--font-head);
  font-weight: 400;
  font-size: 24px;
  letter-spacing: -.012em;
  line-height: 1.18;
  color: var(--ink);
  margin: 32px 0 16px;
}
.bf-industry-card h4 .it { font-style: italic; color: var(--accent); }
.bf-industry-card p {
  font-family: var(--font-head);
  font-size: 15px;
  line-height: 1.6;
  color: var(--ink-2);
  margin: 0;
}
.bf-industry-card ul {
  list-style: none;
  padding: 0;
  margin: 22px 0 0;
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--ink-3);
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.bf-industry-card ul li::before {
  content: '+';
  color: var(--accent);
  margin-right: 10px;
}
/* ============================ PROCESS ============================ */
.bf-process-head .lede {
  font-family: var(--font-head);
  font-size: 17px;
  line-height: 1.55;
  color: var(--ink-2);
  margin: 16px 0 56px;
  max-width: 640px;
}
.bf-process-step .ix {
  font-family: var(--font-head);
  font-weight: 300;
  font-size: clamp(48px, 5vw, 72px);
  letter-spacing: -.03em;
  line-height: 1;
  color: var(--ink-3);
  margin-bottom: 22px;
  display: block;
}
/* ============================ COMPLIANCE BAND ============================ */
.bf-compliance .eyebrow {
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--accent);
  display: inline-flex;
  align-items: center;
  gap: 10px;
}
.bf-compliance .eyebrow::before {
  content: '';
  width: 22px; height: 1px; background: var(--accent);
}
.bf-compliance .frames {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 0;
  border-top: 1px solid color-mix(in oklab, currentColor 22%, transparent);
}
.bf-compliance .frame {
  padding: 24px 24px 24px 0;
  border-right: 1px solid color-mix(in oklab, currentColor 18%, transparent);
  border-bottom: 1px solid color-mix(in oklab, currentColor 18%, transparent);
}
.bf-compliance .frame:nth-child(2n) { border-right: 0; padding-left: 24px; padding-right: 0; }
.bf-compliance .frame:nth-last-child(-n+2) { border-bottom: 0; }
.bf-compliance .frame .tag {
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--accent);
}
.bf-compliance .frame .name {
  font-family: var(--font-head);
  font-weight: 400;
  font-size: 22px;
  color: var(--ink);
  margin: 10px 0 6px;
}
.bf-compliance .frame .name .it { font-style: italic; color: var(--accent); }
.bf-compliance .frame p {
  font-family: var(--font-head);
  font-size: 14px;
  line-height: 1.55;
  color: var(--ink-2);
  margin: 0;
}
/* ============================ CASE STUDY (placeholder) ============================ */
.bf-case-visual .badge {
  position: relative;
  z-index: 2;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 10px 18px;
  background: var(--bg);
  border: 1px solid var(--hair-strong);
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--accent);
  margin: auto 0 18px 18px;
  align-self: flex-end;
}
.bf-case-content h3 .it { font-style: italic; color: var(--accent); }
.bf-case-content .body {
  font-family: var(--font-head);
  font-size: 16px;
  line-height: 1.6;
  color: var(--ink-2);
}
/* ============================ FAQ ============================ */
.bf-faq-grid .lede {
  font-family: var(--font-head);
  font-size: 16px;
  line-height: 1.6;
  color: var(--ink-2);
  margin-top: 18px;
}
.bf-faq-list {
  list-style: none;
  padding: 0;
  margin: 0;
  border-top: 1px solid var(--hair-strong);
}
.bf-faq-item {
  border-bottom: 1px solid var(--hair);
}
.bf-faq-q {
  width: 100%;
  display: grid;
  grid-template-columns: 56px 1fr 24px;
  gap: 18px;
  align-items: center;
  padding: 28px 0;
  background: transparent;
  border: 0;
  cursor: pointer;
  text-align: left;
  font: inherit;
  color: var(--ink);
}
.bf-faq-q .n {
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: .18em;
  color: var(--accent);
}
.bf-faq-q .text {
  font-family: var(--font-head);
  font-size: 19px;
  font-weight: 500;
  letter-spacing: -.01em;
  line-height: 1.3;
  color: var(--ink);
}
.bf-faq-q .icn {
  font-family: var(--font-mono);
  font-size: 22px;
  color: var(--ink-3);
  font-weight: 300;
  transition: color .2s ease, transform .25s ease;
  justify-self: end;
}
.bf-faq-item.open .bf-faq-q .icn { color: var(--accent); transform: rotate(45deg); }
.bf-faq-a {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows .35s ease;
}
.bf-faq-a > div {
  overflow: hidden;
  font-family: var(--font-head);
  font-size: 15px;
  line-height: 1.65;
  color: var(--ink-2);
  padding-left: 74px;
  padding-right: 24px;
}
.bf-faq-item.open .bf-faq-a {
  grid-template-rows: 1fr;
}
.bf-faq-item.open .bf-faq-a > div { padding-bottom: 28px; }
/* ============================ FINAL CTA ============================ */
.bf-final {
  background: var(--accent);
  color: #fff;
  padding: var(--pad-y) 0;
  position: relative;
  overflow: hidden;
}
.bf-final-inner {
  position: relative;
  display: grid;
  /* minmax(0,...) not 1.2fr/1fr. A bare fr track floors at min-content, so one
     non-wrapping child pushes the track past its container: this band measured
     795px wide inside a 312px container at 375px before the cap. Restacking the
     grid does not fix that; capping the track does. */
  grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr);
  row-gap: 60px;
  column-gap: 60px;
  align-items: end;
}
.bf-final h2 {
  font-family: var(--font-head);
  font-weight: 300;
  font-size: var(--fs-cta);
  line-height: .98;
  letter-spacing: -.025em;
  margin: 0;
  color: #fff;
}
.bf-final h2 .it { font-style: italic; }
.bf-final .pitch {
  font-family: var(--font-head);
  font-size: 18px;
  line-height: 1.55;
  color: rgba(255,255,255,.85);
  margin: 22px 0 0;
  max-width: 560px;
}
.bf-final-aside {
  display: flex;
  flex-direction: column;
  gap: 18px;
  align-items: flex-start;
}
.bf-final-cta {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  padding: 18px 26px;
  background: #fff;
  color: var(--accent);
  font-family: var(--font-head);
  font-weight: 500;
  font-size: 16px;
  transition: background .2s ease, color .2s ease;
}
.bf-final-cta:hover { background: #0a0a0a; color: #fff; }
.bf-final-cta svg { width: 16px; height: 16px; }
.bf-final-meta {
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: rgba(255,255,255,.75);
  display: inline-flex;
  align-items: center;
  gap: 10px;
}
.bf-final-meta::before { content:''; width: 6px; height: 6px; background: #fff; }
/* ============================ ENGINEERING (Dossier) overrides ============================ */
.bf-v-engineering .bf-hero-grid { padding: 16px 0 80px; }
.bf-v-engineering .bf-engine-row { grid-template-columns: 60px 1.1fr 1.5fr; gap: 32px; }
.bf-v-engineering .bf-engine-row .ix { font-family: var(--font-mono); font-size: 12px; letter-spacing: .2em; color: var(--accent); padding-top: 8px; }
.bf-v-engineering .bf-process-step .ix { color: var(--accent); font-family: var(--font-mono); font-size: 13px; letter-spacing: .2em; }
/* ============================ PRESS (Newsprint / Editorial) variant ============================ */
.bf-v-press .bf-hero { background: #ffffff; border-bottom: 2px solid var(--ink); }
.bf-v-press .bf-hero-grid { padding: 72px 0 80px; gap: 64px; }
.bf-v-press .bf-kicker-row .num { color: var(--ink); }
.bf-v-press .bf-kicker-row .bar { background: var(--ink); }
.bf-v-press .bf-hero-secondary { color: var(--ink); border-color: var(--ink); }
/* press card on hero right */
.bf-press-rule.thin { height: 1px; margin: 0; }
.bf-press-stamp .k {
  font-family: 'Roboto Mono', var(--font-mono);
  font-size: 9px;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--ink-3);
}
.bf-press-stamp .v {
  font-family: 'IBM Plex Sans', var(--font-head);
  font-weight: 700;
  font-size: 18px;
  letter-spacing: -.01em;
  color: var(--ink);
}
/* press section overrides — newsprint backgrounds, slab heads */
.bf-v-press .bf-intro h2,
.bf-v-press .bf-svs-head h2,
.bf-v-press .bf-industry-head h2,
.bf-v-press .bf-process-head h2,
.bf-v-press .bf-faq-grid h2,
.bf-v-press .bf-final h2,
.bf-v-press .bf-case-content h3 {
  font-family: 'IBM Plex Sans', var(--font-head);
  font-weight: 700;
  letter-spacing: -.025em;
}
.bf-v-press .bf-intro-metric .v { font-family: 'IBM Plex Sans', var(--font-head); font-weight: 700; }
.bf-v-press .bf-engine-list { border-top: 2px solid var(--ink); }
.bf-v-press .bf-engine-row { border-bottom: 1px solid var(--ink); }
.bf-v-press .bf-engine-row .ix {
  font-family: 'IBM Plex Sans', var(--font-head);
  font-weight: 700;
  color: var(--ink);
}
.bf-v-press .bf-engine-row .ttl { font-family: 'IBM Plex Sans', var(--font-head); font-weight: 700; }
.bf-v-press .bf-engine-row .ttl .it { color: var(--accent); }
.bf-v-press .bf-engine-row .body .diff { background: rgba(0,0,0,.04); border-left-color: var(--ink); }
.bf-v-press .bf-engine-row .body .diff .label { color: var(--ink); }
.bf-v-press .bf-svs-col li .n { font-family: 'Roboto Mono', var(--font-mono); color: var(--ink); }
.bf-v-press .bf-industry-grid { border-top: 2px solid var(--ink); }
.bf-v-press .bf-industry-card h4 .it { color: var(--accent); }
.bf-v-press .bf-industry-card .num { color: var(--ink); }
.bf-v-press .bf-process-step .ix { font-family: 'IBM Plex Sans', var(--font-head); font-weight: 700; color: var(--ink-3); }
.bf-v-press .bf-compliance .frame .name .it { color: var(--accent); }
.bf-v-press .bf-case-content h3 .it { color: var(--accent); font-style: italic; }
.bf-v-press .bf-faq-list { border-top: 2px solid var(--ink); }
.bf-v-press .bf-faq-q .text { font-family: 'IBM Plex Sans', var(--font-head); font-weight: 600; }
.bf-v-press .bf-faq-q .n { color: var(--ink); }
.bf-v-press .bf-final { background: var(--accent); }
.bf-v-press .bf-final h2 { color: #fff; }
.bf-v-press .bf-final-cta { background: var(--ink); color: #fff; border-radius: 0; }
.bf-v-press .bf-final-cta:hover { background: #fff; color: var(--ink); }
/* ============================ RESPONSIVE ============================ */
@media (max-width: 1100px) {
  .bf-hero-grid { grid-template-columns: 1fr; gap: 56px; padding: 72px 0 64px; }
  .bf-intro-grid, .bf-engine-head, .bf-industry-head, .bf-faq-grid, .bf-final-inner, .bf-compliance-grid, .bf-case-grid {
    grid-template-columns: minmax(0, 1fr); row-gap: 32px; column-gap: 32px;
  }
  .bf-engine-row { grid-template-columns: 64px 1fr; gap: 24px; }
  .bf-engine-row .body { grid-column: 1 / -1; padding-top: 8px; }
  .bf-industry-grid { grid-template-columns: 1fr; }
  .bf-industry-card { border-right: 0; padding: 28px 0; }
  .bf-industry-card:first-child { padding-top: 28px; }
  .bf-compliance .frames { grid-template-columns: 1fr; }
  .bf-compliance .frame, .bf-compliance .frame:nth-child(2n) { padding: 20px 0; border-right: 0; border-bottom: 1px solid color-mix(in oklab, currentColor 18%, transparent); }
}
/* press white override */

/* Solutions/Services tab panes (mc.js toggles .svs-hidden) */
.svs-hidden{display:none!important;}

/* ===== about page-specific rules ===== */
/* ============================================================
   Blockchain & FinTech — page-specific styles
   Builds on mc-base.css; adds bespoke components.
   ============================================================ */

/* Page wrapper that adds top spacing to clear the editorial nav (utility 32px + main 88px) */
/* ============================ COMPLIANCE BAND ============================ */
.bf-compliance .frame .name {
  font-family: var(--font-head);
  font-weight: 400;
  font-size: 22px;
  color: #fff;
  margin: 10px 0 6px;
}
.bf-compliance .frame p {
  font-family: var(--font-head);
  font-size: 14px;
  line-height: 1.55;
  color: color-mix(in oklab, #fff 70%, transparent);
  margin: 0;
}
/* ============================================================
   About — page-specific tweaks (builds on mc-base.css + bf-page.css)
   ============================================================ */

/* About uses one clean design; tame the engine "What we do" so 5 rows read well */
.about-skin .bf-engine .lede { color: var(--ink-3); }
.about-skin .bf-engine-list { border-top: 1px solid var(--hair-strong); }
.about-skin .bf-engine-row {
  border-bottom: 1px solid var(--hair);
  padding: 38px 0;
  align-items: start;
}
.about-skin .bf-engine-row .ix {
  font-family: var(--font-mono);
  font-size: 13px;
  letter-spacing: .18em;
  color: var(--accent);
  font-weight: 400;
}
.about-skin .bf-engine-row .ttl { color: var(--ink); }
.about-skin .bf-engine-row .body p { color: var(--ink-2); }
/* Why-work band stays the soft grey we use elsewhere (not pure black) */
.about-skin .bf-compliance .frame .name { color: #fff; }
.about-skin .bf-compliance .frame p { color: rgba(255,255,255,.62); }
.about-skin .bf-compliance .frames { border-top-color: rgba(255,255,255,.2); }
.about-skin .bf-compliance .frame {
  border-right-color: rgba(255,255,255,.14);
  border-bottom-color: rgba(255,255,255,.14);
}
/* Who-we-are figure */
.about-top-figure .cap {
  position: absolute;
  left: clamp(20px, 4vw, 80px);
  bottom: 26px;
  display: inline-flex; align-items: center; gap: 12px;
  color: #fff;
  font-family: var(--font-mono);
  font-size: 12px; letter-spacing: .16em; text-transform: uppercase;
}
.about-top-figure .cap .dot { width: 8px; height: 8px; border-radius: 50%; background: var(--accent); }
/* Remove eyebrow dashes on About */
.about-skin .bf-intro-eyebrow::before,
.about-skin .eyebrow::before { display: none !important; }
/* Balanced 96px top/bottom padding across all About sections */
.about-skin .bf-intro,
.about-skin .bf-engine,
.about-skin .bf-industry,
.about-skin .bf-compliance,
.about-skin .bf-final { padding-top: 96px !important; padding-bottom: 96px !important; }
/* Full-bleed hero band */
.about-skin .bf-hero-grid { padding: 18px 0 28px; gap: 40px; align-items: center; }
.about-skin .bf-hero-left { gap: 24px; }
/* Statement band (accent, no image — distinct from the dark hero) */
/* Final CTA: white background variant for About */
.about-skin .bf-final { background: #fff; color: var(--ink); border-top: 1px solid var(--hair); }
.about-skin .bf-final h2 { color: var(--ink); }
.about-skin .bf-final h2 .it { color: var(--accent); }
.about-skin .bf-final .pitch { color: var(--ink-2); }
.about-skin .bf-final-cta { background: var(--accent); color: #fff; }
.about-skin .bf-final-cta:hover { background: #0a0a0a; color: #fff; }
.about-skin .bf-final-meta { color: var(--ink-3); }
.about-skin .bf-final-meta::before { background: var(--accent); }
.about-band-tag .dot { width: 8px; height: 8px; border-radius: 50%; background: #fff; }
.about-band-stats .v {
  font-family: var(--font-head);
  font-weight: 300;
  font-size: clamp(32px, 3.2vw, 48px);
  letter-spacing: -.02em;
  color: #fff;
  line-height: 1;
}
.about-band-stats .v i { font-style: normal; opacity: .7; }
.about-band-stats .k {
  font-family: var(--font-mono);
  font-size: 11px; letter-spacing: .14em; text-transform: uppercase;
  color: rgba(255,255,255,.7);
}
/* ===== digital-transformation page-specific rules ===== */
/* ============================================================
   Blockchain & FinTech — page-specific styles
   Builds on mc-base.css; adds bespoke components.
   ============================================================ */

/* Page wrapper that adds top spacing to clear the editorial nav (utility 32px + main 88px) */
.bf-v-press .bf-hero-grid { padding: 4px 0 80px; gap: 64px; }
/* ============================================================
   DT SKIN — distinct "blueprint" identity for Digital Transformation
   ============================================================ */
/* Blueprint grid backdrop on the light sections */
.dt-skin2 .bf-hero,
.dt-skin2 .bf-intro,
.dt-skin2 .bf-svs,
.dt-skin2 .bf-process,
.dt-skin2 .bf-faq {
  background-color: #fafaf8;
  background-image:
    linear-gradient(var(--blueprint) 1px, transparent 1px),
    linear-gradient(90deg, var(--blueprint) 1px, transparent 1px);
  background-size: 40px 40px;
  background-position: -1px -1px;
}
/* Eyebrows become boxed blueprint tags */
.dt-skin2 .bf-intro-eyebrow,
.dt-skin2 .bf-compliance .eyebrow {
  border: 1px solid var(--ink);
  padding: 6px 12px;
  color: var(--ink);
}
.dt-skin2 .bf-intro-eyebrow::before,
.dt-skin2 .bf-compliance .eyebrow::before { display: none; }
/* Hero: tighter, bigger, monospace kicker chip */
.dt-skin2 .bf-kicker-row .bar { display: none; }
/* Engine: instead of full-width rows, three bordered blueprint cards */
.dt-skin2 .bf-engine-list {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  border-top: 1px solid var(--ink);
  border-left: 1px solid var(--ink);
}
.dt-skin2 .bf-engine-row {
  display: block;
  grid-template-columns: none;
  gap: 0;
  padding: 36px 30px 40px;
  border-right: 1px solid var(--ink);
  border-bottom: 1px solid var(--ink);
  border-top: 0;
  position: relative;
}
.dt-skin2 .bf-engine-row .ix {
  font-family: var(--font-mono);
  font-size: 12px;
  letter-spacing: .2em;
  color: var(--accent);
  display: block;
  margin-bottom: 28px;
}
.dt-skin2 .bf-engine-row .ttl {
  font-size: var(--fs-card);
  line-height: 1.12;
  margin-bottom: 18px;
  display: block;
}
.dt-skin2 .bf-engine-row .body { max-width: none; }
.dt-skin2 .bf-engine-row:hover { background: #faf7f4; }
@media (max-width: 900px) {
  .dt-skin2 .bf-engine-list { grid-template-columns: 1fr; }
}
/* Section headings get a red index rule on the left */
/* Industry cards: blueprint corners + outlined */
.dt-skin2 .bf-industry-grid {
  border: 1px solid var(--ink);
  border-bottom: 0;
}
.dt-skin2 .bf-industry-card {
  border-right: 1px solid var(--ink);
  border-bottom: 1px solid var(--ink);
  padding: 36px 28px;
}
.dt-skin2 .bf-industry-card:first-child { padding-left: 28px; }
.dt-skin2 .bf-industry-card:hover { background: #faf7f4; }
/* Process steps: blueprint numbered tiles */
.dt-skin2 .bf-process-step .ix {
  font-family: var(--font-mono);
  font-size: 14px;
  letter-spacing: .16em;
  color: var(--accent);
}
/* Compliance stays gray but gets the blueprint frame */
.dt-skin2 .bf-compliance .frames { border: 1px solid var(--ink); border-bottom: 0; }
.dt-skin2 .bf-compliance .frame {
  border-right: 1px solid var(--ink);
  border-bottom: 1px solid var(--ink);
  padding: 22px 22px;
}
.dt-skin2 .bf-compliance .frame:nth-child(2n) { padding-left: 22px; padding-right: 22px; }
/* ============================================================
   DT SKIN 2 — "editorial dossier" alternative (no grid, dark engine)
   ============================================================ */
/* drop the blueprint grid → solid warm panels */
.dt-skin2 .bf-hero,
.dt-skin2 .bf-intro,
.dt-skin2 .bf-svs,
.dt-skin2 .bf-process,
.dt-skin2 .bf-faq {
  background-image: none;
  background-color: var(--bg);
}
/* eyebrows: solid red tag instead of outlined box */
.dt-skin2 .bf-intro-eyebrow,
.dt-skin2 .bf-compliance .eyebrow {
  border: 0;
  background: var(--accent);
  color: #fff;
  padding: 6px 12px;
}
/* hero headline: heavier, editorial */
/* Engine: full-bleed DARK band with large index cards */
.dt-skin2 .bf-engine .lede { color: rgba(255,255,255,.6); }
.dt-skin2 .bf-engine-list {
  border-top: 1px solid rgba(255,255,255,.16);
  border-left: 0;
}
.dt-skin2 .bf-engine-row {
  display: grid;
  grid-template-columns: 96px 1fr 1.6fr;
  gap: 48px;
  border-right: 0;
  border-bottom: 1px solid rgba(255,255,255,.16);
  padding: 44px 0;
}
.dt-skin2 .bf-engine-row:hover { background: transparent; }
.dt-skin2 .bf-engine-row .ix {
  font-family: var(--font-head);
  font-weight: 300;
  font-size: 56px;
  letter-spacing: -.03em;
  color: var(--accent);
  margin-bottom: 0;
}
.dt-skin2 .bf-engine-row .ttl { font-size: var(--fs-card); color: #fff; margin-bottom: 0; }
.dt-skin2 .bf-engine-row .body .diff {
  background: rgba(255,255,255,.06);
  border-left: 2px solid var(--accent);
}
.dt-skin2 .bf-engine-row .body .diff .label { color: var(--accent); }
@media (max-width: 900px) {
  .dt-skin2 .bf-engine-row { grid-template-columns: 64px 1fr; gap: 24px; }
  .dt-skin2 .bf-engine-row .body { grid-column: 1 / -1; }
}
/* remove blueprint outlines on industry/process/compliance → hairline only */
.dt-skin2 .bf-industry-grid { border: 0; border-top: 1px solid var(--hair-strong); }
.dt-skin2 .bf-industry-card { border-right: 1px solid var(--hair); border-bottom: 0; }
.dt-skin2 .bf-industry-card:last-child { border-right: 0; }
.dt-skin2 .bf-compliance .frames { border: 0; border-top: 1px solid rgba(255,255,255,.18); }
.dt-skin2 .bf-compliance .frame {
  border-right: 1px solid rgba(255,255,255,.14);
  border-bottom: 1px solid rgba(255,255,255,.14);
}
.dt-skin2 .bf-compliance .frame .name { color:#fff; }
.dt-skin2 .bf-compliance .frame p { color: rgba(255,255,255,.62); }
/* section heading red rule stays, but thicker */
/* ============================================================
   DT SKIN 3 — "soft editorial" (airy, oversized type, hairlines)
   ============================================================ */
.dt-skin3 .bf-hero,
.dt-skin3 .bf-intro,
.dt-skin3 .bf-svs,
.dt-skin3 .bf-engine,
.dt-skin3 .bf-process,
.dt-skin3 .bf-faq,
.dt-skin3 .bf-industry {
  background-image: none;
  background-color: var(--bg) !important;
  color: var(--ink);
}
/* generous breathing room */
.dt-skin3 .bf-process-head .lede { margin-bottom: 40px; }
/* eyebrow: minimal red text + dot, no box */
.dt-skin3 .bf-intro-eyebrow,
.dt-skin3 .bf-compliance .eyebrow {
  border: 0;
  background: transparent;
  color: var(--accent);
  padding: 0;
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: .22em;
  text-transform: uppercase;
  font-weight: 400;
  display: inline-flex;
  align-items: center;
  gap: 10px;
}
.dt-skin3 .bf-intro-eyebrow::before,
.dt-skin3 .bf-compliance .eyebrow::before {
  display: none;
  content: '';
  width: 7px; height: 7px; border-radius: 50%;
  background: var(--accent);
}
/* hero: very large, thin */
.dt-skin3 .bf-kicker-row .bar { display: inline-block; }
/* section headings: oversized thin, no left rule */
/* engine: airy single column, giant outline numerals */
.dt-skin3 .bf-engine .lede { color: var(--ink-3); }
.dt-skin3 .bf-engine-list { border-top: 1px solid var(--hair); border-left: 1px solid var(--hair); display: grid; grid-template-columns: repeat(3, 1fr); }
.dt-skin3 .bf-engine-row {
  display: flex;
  flex-direction: column;
  grid-template-columns: none;
  gap: 0;
  border: 0;
  border-right: 1px solid var(--hair);
  border-bottom: 1px solid var(--hair);
  padding: 30px 26px 32px;
  align-items: start;
  position: relative;
  overflow: hidden;
}
.dt-skin3 .bf-engine-row::before {
  content: "";
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 3px;
  background: var(--accent);
}
.dt-skin3 .bf-engine-row:hover { background: transparent; }
.dt-skin3 .bf-engine-row .ix {
  position: relative;
  z-index: 1;
  display: inline-grid;
  place-items: center;
  width: 40px; height: 40px;
  border: 1px solid var(--accent);
  border-radius: 50%;
  font-family: var(--font-mono);
  font-weight: 400;
  font-size: 13px;
  line-height: 1;
  letter-spacing: 0;
  color: var(--accent);
  background: var(--bg);
  -webkit-text-stroke: 0;
  text-stroke: 0;
  margin: 0 0 16px;
  pointer-events: none;
}
.dt-skin3 .bf-engine-row .ttl,
.dt-skin3 .bf-engine-row .body { position: relative; z-index: 1; }
.dt-skin3 .bf-engine-row .ttl {
  font-weight: 400;
  font-size: var(--fs-card);
  letter-spacing: -.01em;
  color: var(--ink);
  margin: 0 0 14px;
  display: block;
  line-height: 1.2;
}
.dt-skin3 .bf-engine-row .body { max-width: none; display: flex; flex-direction: column; flex: 1; }
.dt-skin3 .bf-engine-row .body p { font-size: 15.5px; line-height: 1.6; margin: 0 0 14px; }
.dt-skin3 .bf-engine-row .body .diff {
  margin-top: auto;
  background: #f6f4ef;
  border-left: 2px solid var(--accent);
  flex-direction: column;
  gap: 6px;
  padding: 13px 15px;
  font-size: 13.5px;
}
.dt-skin3 .bf-engine-row .body .diff .label { color: var(--accent); }
@media (max-width: 900px) {
  .dt-skin3 .bf-engine-list { grid-template-columns: 1fr; }
  .dt-skin3 .bf-engine-row { gap: 18px; }
}
/* industry / process: clean hairlines, no boxes */
.dt-skin3 .bf-industry-grid { border: 0; border-top: 1px solid var(--hair); }
.dt-skin3 .bf-industry-card { border-right: 1px solid var(--hair); border-bottom: 0; }
.dt-skin3 .bf-industry-card:last-child { border-right: 0; }
.dt-skin3 .bf-industry-card:hover { background: #faf8f4; }
.dt-skin3 .bf-process-step .ix {
  font-family: var(--font-head);
  font-weight: 300;
  font-size: clamp(48px,5vw,72px);
  color: var(--ink-3);
  letter-spacing: -.03em;
}
/* compliance: keep light grey, airy frames */
.dt-skin3 .bf-compliance .frames { border: 0; border-top: 1px solid var(--hair-strong); }
.dt-skin3 .bf-compliance .frame {
  border-right: 1px solid var(--hair);
  border-bottom: 1px solid var(--hair);
}
.dt-skin3 .bf-compliance .frame .name { color: var(--ink); }
.dt-skin3 .bf-industry-card:hover .bf-ind-img img { filter: grayscale(.3) contrast(1.05); transform: scale(1.03); }
.dt-skin3 .bf-hero { border-bottom: 0 !important; }
.bf-banner-sticker .mark { display: none; }

/* ===== Primary nav mega-menu (hover panels grouping sub-services) ===== */
.ne-nav-item{position:relative;display:inline-flex;align-items:center;}
.ne-nav-item:hover>.ne-mega,.ne-nav-item:focus-within>.ne-mega{opacity:1;visibility:visible;pointer-events:auto;transform:translateX(-50%) translateY(0);}
.ne-mega a.ne-mega-link{display:flex;flex-direction:column;gap:3px;padding:11px 16px;text-decoration:none;border-left:2px solid transparent;transition:background .14s ease,border-color .14s ease;}
.ne-mega a.ne-mega-link:hover{background:#faf6f5;border-left-color:var(--accent,#a70000);}
.ne-mega .ne-mega-t{display:block;font-family:var(--font-head);font-size:14px;font-weight:600;color:var(--ink);letter-spacing:.01em;}
.ne-mega a.ne-mega-link:hover .ne-mega-t{color:var(--accent,#a70000);}
/* ===== Mobile nav (hamburger + slide-in drawer) ===== */
.ne-burger{display:none;background:none;border:0;padding:8px;margin-left:auto;cursor:pointer;flex-direction:column;gap:5px;}
.ne-burger span{display:block;width:24px;height:2px;background:#111;transition:transform .2s ease;}
body.no-scroll{overflow:hidden;}
.ne-drawer{position:fixed;inset:0;background:rgba(0,0,0,.45);opacity:0;visibility:hidden;transition:opacity .25s ease;z-index:1000;}
.ne-drawer.open{opacity:1;visibility:visible;}
.ne-drawer-panel{position:absolute;top:0;right:0;height:100%;width:min(360px,86vw);background:#fff;transform:translateX(100%);transition:transform .28s ease;overflow-y:auto;-webkit-overflow-scrolling:touch;}
.ne-drawer.open .ne-drawer-panel{transform:translateX(0);}
.ne-drawer-top{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid var(--hair,#eee);}
.ne-drawer-title{font-family:var(--font-head);font-weight:600;font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);}
.ne-drawer-close{background:none;border:0;font-size:30px;line-height:1;cursor:pointer;color:#111;}
.ne-drawer-nav{padding:6px 0 24px;}
.ne-drawer-group{border-bottom:1px solid #f3f3f3;}
.ne-drawer-link{display:block;padding:15px 22px 8px;font-family:var(--font-head);font-weight:600;font-size:16px;color:var(--ink);text-decoration:none;}
.ne-drawer-subs{padding:0 22px 14px;display:flex;flex-direction:column;}
.ne-drawer-sub{padding:8px 0 8px 14px;font-size:14px;color:var(--ink-3);text-decoration:none;border-left:2px solid var(--hair);}
.ne-drawer-sub:active,.ne-drawer-sub:hover{color:var(--accent,#a70000);border-left-color:var(--accent,#a70000);}
.ne-drawer-cta{display:block;margin:18px 22px 0;padding:15px;text-align:center;background:var(--accent,#a70000);color:#fff;text-decoration:none;font-weight:600;font-family:var(--font-head);}
@media (max-width:980px){
  .ne-nav{display:none!important;}
  .nav-edi-main .ne-cta{display:none!important;}
  .ne-burger{display:flex!important;}
}

/* ================= Contact section fixes + mc-globe (2026-07-29) ================= */

/* The section sets `color` on ITSELF and expects the heading to inherit, but the platform's
   Tailwind base layer colors `h2` DIRECTLY — and inheritance never beats a direct rule, at any
   specificity. Hence an explicit rule rather than a specificity bump. */
.contact-section h2{ color:#fff; }

/* Honeypot + the schema bridge field: real inputs the runtime posts, kept out of sight and out
   of the tab order. (Do NOT use display:none — some bots skip hidden fields, which defeats it.) */
.form .hp{ position:absolute!important; left:-9999px!important; top:auto!important;
  width:1px!important; height:1px!important; opacity:0!important; pointer-events:none!important; }

/* Privacy notice under the submit row (GDPR Art.13 / revFADP Art.19 information duty). */
.form .form-privacy{ font-family:var(--font-mono); font-size:11px; line-height:1.6;
  letter-spacing:.04em; color:var(--ink-3); margin-top:18px; }
.form .form-privacy a{ font:inherit; color:var(--ink-3); text-decoration:underline; text-underline-offset:2px; }
.form .form-privacy a:hover{ color:var(--accent); }

/* Eyebrow now sits ABOVE the two-column grid so the heading and the form card share a top edge. */

/* Vertical rhythm of the contact row: the heading's top meets the card's top and the globe's
   bottom meets the card's bottom. Done with the grid rather than measured offsets — the column
   STRETCHES to the row height and the globe takes the leftover space, so it holds at any width.
   The globe box need not stay square: the module draws R = min(cw,ch) * radiusFactor and centres
   the sphere, so a wide-but-short box is fine.
   min-height is load-bearing: once the grid stacks (one column) nothing stretches the column any
   more, and a flex:1 box with no content would collapse to ZERO — the globe would vanish. */
.contact-wrap{ align-items:stretch; }
.contact-wrap > div{ display:flex; flex-direction:column; }
.contact-wrap > div > h2{ margin-top:0; }
.contact-wrap .mc-globe{ flex:1 1 auto; min-height:min(90vw,360px); width:100%; max-width:600px;
  aspect-ratio:auto; margin:0 auto; }

/* ---- MC-GLOBE ---- */
.mc-globe{ position:relative; width:min(90vw,360px); aspect-ratio:1/1; }
.mcg-cv{ position:absolute; inset:0; width:100%; height:100%; display:block; }
.mcg-overlay{ position:absolute; inset:0; overflow:visible; pointer-events:none; z-index:3; }
.mcg-badge{ position:absolute; transform:translate(-50%,-50%);
  display:flex; align-items:center; gap:8px; padding:6px 11px;
  background:var(--mcg-badge-bg); border:1px solid var(--mcg-badge-border); border-radius:9px;
  box-shadow:0 8px 22px rgba(0,0,0,.28); white-space:nowrap;
  font:700 12px ui-sans-serif,system-ui,-apple-system,sans-serif; color:var(--mcg-badge-text);
  transition:opacity .25s ease; will-change:left,top,opacity; }
.mcg-badge .lbl{ font-weight:700; letter-spacing:.01em; }
.mcg-dot{ width:7px; height:7px; border-radius:50%; background:var(--mcg-accent);
  box-shadow:0 0 0 0 var(--mcg-accent-glow); animation:mcgpulse 1.6s infinite; }
.mcg-sep{ width:1px; height:14px; background:var(--mcg-sep); }
.mcg-sub{ color:var(--mcg-badge-sub); font-weight:600; }
@keyframes mcgpulse{
  0%{ box-shadow:0 0 0 0 var(--mcg-accent-glow) }
  70%{ box-shadow:0 0 0 7px transparent }
  100%{ box-shadow:0 0 0 0 transparent } }

/* ================= Phase-1 content rebuild — shared components (2026-08-01) =================
   New section types the 17-page package needs that the design export did not ship. Tokens only —
   every colour/size comes from the :root custom properties so these inherit the design language. */

/* Breadcrumb (C3) */

/* Homepage area columns (C6) — five aligned rows, bottom-pinned CTA. */
/* Offer trio modifier (C8): lighter chrome than a product card. */
.product-grid .product.plain{ border:0; background:none; border-top:1px solid var(--hair-strong);
  border-radius:0; padding-top:20px; }
/* 2 cards centred at 3-up width (C11). */
.product-grid.pair{ grid-template-columns:repeat(3,1fr); }
.product-grid.pair > *:first-child{ grid-column:1; }
/* Bottom-pin the CTA row inside card copy (C11). */
.product-copy{ display:flex; flex-direction:column; }
.product-copy .product-cta-row{ margin-top:auto; }

/* Body-copy measure (C9). .lede stays the intro voice; this is the reading voice. */
.mc-prose{ max-width:72ch; color:var(--ink-2); }
.mc-prose p{ margin:0 0 16px; line-height:1.6; }
.mc-prose ul,.mc-prose ol{ margin:0 0 16px 20px; line-height:1.6; }

/* Disqualification block (C14): distinct tone, deliberately NO accent, NO icons. */
.mc-disqual{ background:var(--bg-soft); border-top:1px solid var(--hair-strong);
  border-bottom:1px solid var(--hair-strong); padding:40px 32px; margin:24px 0; }
.mc-disqual .mc-prose{ max-width:66ch; }
.mc-disqual ul{ list-style:none; padding:0; margin:0; }
.mc-disqual li{ padding:12px 0; border-bottom:1px solid var(--hair); color:var(--ink-2); line-height:1.55; }
.mc-disqual li:last-child{ border-bottom:0; }

/* Disclosure/accordion (C12/C13) — native details/summary: keyboard-correct without ARIA,
   deep-linkable via id, prints expanded when open. */
.mc-disc{ border-bottom:1px solid var(--hair); }
.mc-disc summary.mc-disc-q{ display:flex; align-items:baseline; justify-content:space-between;
  gap:16px; cursor:pointer; list-style:none; padding:18px 0; font-weight:500; color:var(--ink);
  font-size:17px; }
.mc-disc summary.mc-disc-q::-webkit-details-marker{ display:none; }
.mc-disc summary.mc-disc-q:hover{ color:var(--accent); }
.mc-disc .icn{ font-family:var(--font-mono); color:var(--ink-3); flex:0 0 auto;
  transition:transform .25s ease; }
.mc-disc[open] .icn{ transform:rotate(45deg); color:var(--accent); }
.mc-disc-a{ padding:0 0 20px; color:var(--ink-2); line-height:1.6; max-width:72ch; }
.mc-disc-a p{ margin:0 0 12px; }

/* Responsive table pair (C21): author BOTH; table >1024px, definition list below. */
.mc-table{ width:100%; border-collapse:collapse; font-size:15px; }
.mc-table th{ font-family:var(--font-mono); font-size:var(--fs-micro); letter-spacing:.14em;
  text-transform:uppercase; color:var(--ink-3); text-align:left; font-weight:400;
  padding:12px 16px 12px 0; border-bottom:1px solid var(--hair-strong); }
.mc-table td{ padding:16px 16px 16px 0; border-bottom:1px solid var(--hair); color:var(--ink-2);
  vertical-align:top; line-height:1.55; }
.mc-dl{ display:none; }
.mc-dl dt{ font-family:var(--font-mono); font-size:var(--fs-micro); letter-spacing:.14em;
  text-transform:uppercase; color:var(--ink-3); margin-top:20px; }
.mc-dl dd{ margin:6px 0 0; color:var(--ink-2); border-bottom:1px solid var(--hair);
  padding-bottom:16px; line-height:1.55; }
@media(max-width:1024px){ .mc-table{ display:none; } .mc-dl{ display:block; } }

/* Status notice (C22): a full-width line, not a badge, not an error colour. */
.mc-notice{ display:block; width:100%; padding:14px 18px; margin:16px 0 0;
  background:var(--bg-soft); border-left:2px solid var(--hair-strong); font-size:15px;
  color:var(--ink-2); }

/* Closing-strip helpers (C17). */
.mc-partof{ font-family:var(--font-mono); font-size:var(--fs-micro); letter-spacing:.16em;
  text-transform:uppercase; color:var(--ink-3); margin-top:24px; }

/* Contact-form arrival line (C23). */
.mc-arrival{ font-family:var(--font-mono); font-size:var(--fs-micro); letter-spacing:.1em;
  text-transform:uppercase; color:var(--accent); padding-bottom:8px; }
/* Visible consent row — for AFTER the tenant schema rename; unused until then. */

/* ---- Phase-1 layout pass (2026-08-02) ---- */
/* Five flat nav links are wider than the old four: tighten below 1440px so nothing wraps. */
@media (min-width:1024px) and (max-width:1439px){
  .ne-nav{ gap:16px; }
  .ne-nav a{ font-size:14px; }
}
/* Form helper lines under contact fields (pack copy had no styled home). */
.form .mc-field-help{ font-family:var(--font-mono); font-size:11px; letter-spacing:.04em;
  color:var(--ink-3); margin:6px 0 0; }
/* In-place submission confirmation: revealed on the red band, so it carries the card's white. */
.contact-wrap .dc-form-sent{ background:#fff; padding:40px 32px; }

/* ===== Homepage redesign — added 2026-08-15 =====
   Rules for components introduced by the new homepage that siteCss did not have.
   Source: content/prototype/Minimal_Code_Homepage_fixed.html (Claude Design export).
   Classes: hxa-card, hxa-head, hxa-name, hxa-arrow, hxa-for, hxa-prod, hxa-plink, hxa-parrow, mc-timeline, mc-proof-head, mc-proof-quote, mc-offer-grid, mc-offer, faq-fullwidth, mc-contact-grid, mc-form-card, mc-form-grid */
.hxa-card { transition: background 200ms ease; }

.hxa-card:hover { background: #fafafa; }

.hxa-name, .hxa-plink { color: #0a0a0a; }

.hxa-for { color: #6b6b6b; }

.hxa-arrow { color: #0a0a0a; transition: transform 200ms ease, color 200ms ease; }

.hxa-head:hover { text-decoration: none; }

.hxa-head:hover .hxa-name { color: #a70000; }

.hxa-head:hover .hxa-arrow { color: #a70000; transform: translate(3px,-3px); }

.hxa-prod { text-decoration: none; display: block; }

.hxa-prod:hover { text-decoration: none; }

.hxa-prod:hover .hxa-plink { color: #a70000; }

.hxa-prod:hover .hxa-parrow { color: #a70000; transform: translateX(3px); }

.hxa-parrow { color: #a0a0a0; transition: transform 200ms ease, color 200ms ease; margin-left: auto; flex: 0 0 auto; }

.faq-fullwidth .dc-faq-grid { display: block; }

.faq-fullwidth .dc-faq-head { margin-bottom: 28px; }

/* FIX 09 — heading kept in the document outline but not shown.
       Was: display:none, which removed the section's only heading from the
       accessibility tree and left an empty <h2> in the outline. */
    .faq-fullwidth .dc-faq-head h2 {
      position: absolute; width: 1px; height: 1px; margin: -1px;
      padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
    }

@media (max-width: 1000px) {
  .mc-proof-head   { grid-template-columns: 1fr !important; gap: 28px !important; }
  .mc-offer-grid   { grid-template-columns: 1fr !important; gap: 20px !important; }
  .mc-offer-grid > .mc-offer { grid-row: auto !important; display: block !important; }
  .mc-timeline    { grid-template-columns: repeat(2,1fr) !important; column-gap: 32px !important; row-gap: 44px !important; }
}

@media (max-width: 620px) {
  .mc-timeline { grid-template-columns: 1fr !important; row-gap: 40px !important; }
}

@media (max-width: 560px) {
  .mc-proof-quote { font-size: 28px !important; }
  /* grid items default to min-width:auto, so a long unbreakable string
         (the registered address, the mono email) can push a track past the
         container's max-width. */
}

/* ===== Homepage contact band — Sayfalar-identical form treatment (2026-08-16) =====
   The homepage #contact section shipped on 2026-08-15 as a MOCK: no <form> element,
   no data-contact-form hook, a submit "button" that was an <a href="#contact">, and
   field names (name/company/interest/spend/privacyConsent) that matched no
   ContactFormField key. Nothing could ever be submitted from it. It is replaced with
   the Sayfalar landing form's structure and visual, carrying MinimalCode's own copy
   and field set (ad/sirket/email/solution/fatura/mesaj + implied kvkk).

   SCOPING IS LOAD-BEARING. The /contact page shares .contact-section, .contact-wrap,
   .field and .msg with this band. Every rule below is therefore scoped to .cform or
   .mc-contact-home so /contact's form keeps its own metrics untouched. Do not lift
   any of these to a bare selector.

   Tokens are NOT redefined: both tenants already resolve --accent, the --ink scale and
   --hair, plus the Roboto pair, to identical values — which is why this renders
   pixel-identical to sayfalar.com without copying a single literal colour.
   (Never write an --ink-<star> glob in a CSS comment: the star-slash closes the comment
   early, and the parser then eats the next rule whole as invalid-rule recovery.) */

/* The globe module positions its city badges absolutely from the sphere's projected
   coordinates, so on a narrow viewport a badge ("Istanbul") lands ~28px past the globe
   box and pushed the DOCUMENT 4px wider than the viewport — a body-level sideways
   scroll. Clipped at the band, not at the globe: that way the only thing lost is the
   sliver already off-screen, instead of slicing the badge in half. `clip` rather than
   `hidden` so this never becomes a scroll container. /contact is unaffected (its
   column geometry keeps the badge inside), which is why this stays scoped. */
.mc-contact-home { overflow-x: clip; }

/* Left column — Sayfalar's proportions, MinimalCode's copy. */
.mc-contact-home .contact-wrap { grid-template-columns: 1fr 1.1fr; gap: clamp(40px, 5vw, 72px); }
.mc-contact-home .clede { color: rgba(255,255,255,.85); margin-top: 18px; max-width: 46ch; font-size: clamp(15px, 1.1vw, 18px); line-height: 1.55; }
.mc-contact-home .contact-meta { margin-top: 34px; display: flex; flex-direction: column; max-width: 480px; max-height: 480px; }

/* The white form card on the red band. */
.cform { background: #fff; color: var(--ink); padding: clamp(28px, 3vw, 40px); border: 1px solid rgba(255,255,255,.2); }

/* Fields inherit the tenant-wide Dolgu treatment (.field, section-specific styles above);
   the ported Sayfalar underline metrics were removed with the old base on 10.09.2026.
   Only the custom select chevron stays here, positioned for the 12px/14px Dolgu padding. */
.cform .field select { appearance: none; cursor: pointer; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%236b6b6b' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 14px center; padding-right: 38px; }
/* Hidden by default; contact-form.js reveals the slot with an inline display:block and
   resets it to '' (never to 'none' — that would outrank this rule permanently). */
.cform .field .msg { color: var(--accent); font-size: 12px; margin-top: 7px; display: none; font-family: var(--font-mono); }
.cform .field.err .msg { display: block; }

.cform .frow { display: grid; grid-template-columns: 1fr 1fr; gap: 0 24px; }

.cform .form-foot { margin-top: 24px; display: flex; align-items: center; gap: 18px; flex-wrap: wrap; }
.cform .form-note { font-size: 12.5px; color: var(--ink-3); font-family: var(--font-mono); }

/* Honeypot + the implied-consent bridge field: real inputs the runtime posts, kept out
   of sight. NOT display:none — some bots skip hidden fields, which defeats the trap.
   Mirrors the .form .hp rule /contact uses. */
.cform .hp { position: absolute !important; left: -9999px !important; top: auto !important; width: 1px !important; height: 1px !important; opacity: 0 !important; pointer-events: none !important; }

/* Privacy notice instead of a tickbox. MinimalCode Systems AG is Swiss/EU (revFADP +
   GDPR Art.13 information duty); KVKK is a Sayfalar/Turkey construct and does not
   apply to this tenant, so Sayfalar's .kvkk consent row is deliberately NOT ported. */
.cform .form-privacy { font-family: var(--font-mono); font-size: 11px; line-height: 1.6; letter-spacing: .04em; color: var(--ink-3); margin-top: 18px; }
.cform .form-privacy a { font: inherit; color: var(--ink-3); text-decoration: underline; text-underline-offset: 2px; }
.cform .form-privacy a:hover { color: var(--accent); }

/* In-place confirmation. siteJs reveals it with an inline display:flex, so this is a
   centred COLUMN rather than Sayfalar's centred block — identical on screen. */
.mc-contact-home .form-success { display: none; background: #fff; color: var(--ink); padding: clamp(40px, 5vw, 64px) clamp(28px, 3vw, 40px); border: 1px solid rgba(255,255,255,.2); text-align: center; flex-direction: column; align-items: center; justify-content: center; }
.mc-contact-home .form-success .check { width: 56px; height: 56px; background: var(--accent); color: #fff; display: grid; place-items: center; margin: 0 auto 20px; }
.mc-contact-home .form-success h3 { font-family: var(--font-head); font-weight: 500; font-size: 24px; letter-spacing: -.02em; color: var(--ink); margin: 0; }
.mc-contact-home .form-success p { color: var(--ink-3); margin-top: 10px; }

/* contact-form.js injects a .cf-err line only where the design has no .msg slot. Match
   the design's error type, span the whole .frow row so it cannot steal a grid column,
   and suppress the duplicate next to a real .msg slot. */
.cform .cf-err { color: var(--accent); font-size: 12px; margin-top: 7px; font-family: var(--font-mono); }
.cform .frow > .cf-err { grid-column: 1 / -1; }
.cform .field:has(.msg) + .cf-err { display: none !important; }

/* Sayfalar's own form breakpoint. The band itself already collapses at 1000px (this
   site's scale); 880px is where the two-up field row stops fitting the card. */
@media (max-width: 880px) {
  .cform .frow { grid-template-columns: 1fr; gap: 0; }
}
@media (max-width: 1000px) {
  .mc-contact-home .contact-wrap { grid-template-columns: 1fr; gap: 40px; }
}

/* ============================================================
   SAP Signavio Consulting (/sap-signavio-consulting)
   Ported 18.08.2026 from content/prototypes/11-sap-signavio-consulting.html.

   Every rule is scoped to .mc-sig. The tenants share :root tokens AND generic
   class names, so an unscoped `.tag`/`.frame`/`.row` here would restyle other
   pages. Nothing below leaves .mc-sig.

   Design-system constraints held throughout: radius 0, no shadows, no
   gradients (flat rgba overlays and hard-stop patterns only), hairline
   borders, mono uppercase eyebrows, Roboto / Roboto Mono only, one accent.
   ============================================================ */

/* Vertical rhythm sits on the <section>, not on .container: the platform
   ships `.container { padding: 0 !important }` to stop its own utility
   padding leaking in, so any padding put on the container is discarded. The
   generic `section` rule gives a flat 120px at every width. The band is
   .mcs-band now, and the 96/72/56 steps it carried as --sig-pad are --pad-y,
   redefined on :root at 1024 and 700. */
/* The Position statement stands on its own — no rule above it or below it.
   Its own bottom border goes, and so does the hero's, which drew the line
   above it. */

/* ---------- Breadcrumb --------------------------------------------------
   .mc-crumb is a flex row with no width of its own — it expects to sit
   inside a .container, and without one it ran to the viewport edge. The
   <nav> is the band (background + rhythm) and .container rides on the crumb
   itself, which is how the prototype had it. No rule under the band: the
   hero section below carries its own.
   The band carries the padding, not the container: `.container` ships
   `padding: 0 !important`, so padding put there is discarded.
   ---------------------------------------------------------------------- */

/* Eyebrow: mono, uppercase, red square marker. The system's standard label. */

/* Text CTA: mono, uppercase, hairline underline that goes red on hover. */

/* ---------- Position ---------------------------------------------------
   These were inline styles until the sanitizer ate the one declaration that
   mattered: it parses `style` attributes property by property and drops any
   it cannot evaluate, so `font-size: clamp(30px, 3vw, 48px)` vanished
   silently while the rest of the attribute survived — the statement fell
   back to 16px body text. Fluid type, container queries and anything else
   function-valued belongs in the stylesheet, which is filtered by a
   blocklist and passes them through untouched.
   ---------------------------------------------------------------------- */

/* ---------- Hero ------------------------------------------------------- */
.mc-sig .sig-hero-grid { display: grid; grid-template-columns: .9fr 1fr; gap: 56px; align-items: center; }
.mc-sig .sig-hero-cta { display: flex; align-items: center; gap: 26px; flex-wrap: wrap; }

/* ---------- Suite wheel ------------------------------------------------
   Geometry is authored markup; the type is built by the JS (see "Wheel
   type" below for why), and the rotation is driven from the stylesheet —
   see "Rotation" for the one declaration that makes it possible.
   ---------------------------------------------------------------------- */
/* The drawing is capped rather than filling its column: at full width it ran
   past the fold and dominated the hero. Type is sized in viewBox units, so
   shrinking the wheel shrinks every label with it — --wt scales the type back
   up by the same proportion, keeping rendered sizes where they were. Change
   the max-width and --wt together, or the labels drift out of legibility. */
.mc-sig .sig-wheel {
  --wt: 1.14;
  position: relative; width: 100%; max-width: 640px; margin: 0 auto;
  aspect-ratio: 1 / 1; container-type: inline-size;
}
.mc-sig .sig-wheel svg { width: 100%; height: 100%; display: block; }

/* Component ring. Flat fills, white hairline separators, no shadow. */
.mc-sig .sig-seg { cursor: pointer; transition: fill .2s ease, opacity .2s ease; }
.mc-sig .sig-seg[data-tone="ink"]    { fill: rgba(10,10,10,.08); }
.mc-sig .sig-seg[data-tone="accent"] { fill: rgba(167,0,0,.12); }
.mc-sig .sig-seg[data-tone="deep"]   { fill: rgba(138,0,0,.12); }
.mc-sig .sig-wheel[data-rel] .sig-seg { opacity: .12; }
.mc-sig .sig-wheel[data-rel] .sig-seg[data-rel="1"] { opacity: 1; }
.mc-sig .sig-seg[data-rel="1"][data-tone="ink"]    { fill: rgba(10,10,10,.18); }
.mc-sig .sig-seg[data-rel="1"][data-tone="accent"] { fill: rgba(167,0,0,.24); }
.mc-sig .sig-seg[data-rel="1"][data-tone="deep"]   { fill: rgba(138,0,0,.24); }
.mc-sig .sig-seg[data-on="1"][data-tone="ink"]    { fill: #2a2a2a; }
.mc-sig .sig-seg[data-on="1"][data-tone="accent"] { fill: #a70000; }
.mc-sig .sig-seg[data-on="1"][data-tone="deep"]   { fill: #8a0000; }

/* Phase ring (outer). Off state is a flat neutral tint, on state is ink. */
.mc-sig .sig-ph { cursor: pointer; fill: #efefef; transition: fill .2s ease; }
.mc-sig .sig-ph[data-on="1"] { fill: #0a0a0a; }

/* Flow bands with arrowheads. */
.mc-sig .sig-bandarc { cursor: pointer; transition: opacity .2s ease; }
.mc-sig .sig-wheel[data-rel] .sig-bandarc { opacity: .15; }
.mc-sig .sig-wheel[data-rel] .sig-bandarc[data-rel="1"] { opacity: 1; }

.mc-sig .sig-hub { fill: #fff; stroke: var(--hair-strong); stroke-width: 1.5; cursor: pointer; transition: stroke .2s ease, stroke-width .2s ease; }
.mc-sig .sig-wheel[data-sel="hub"] .sig-hub { stroke: var(--accent); stroke-width: 2.5; }

/* --- Wheel type --------------------------------------------------------
   The labels are real SVG <text>, curved onto the arcs in <defs> exactly as
   the prototype drew them. They cannot be authored in the section HTML —
   the sanitizer deletes <text>, <tspan> and <textPath> outright — so the JS
   builds them at runtime against the <defs> paths, which do survive. The
   arcs themselves are authored markup; only the type is scripted.
   Sizes are in viewBox units, so they scale with the drawing.
   ---------------------------------------------------------------------- */
.mc-sig .sig-wheel text { pointer-events: none; }

/* Rotation. `transform-box: view-box` is what lets an SVG group turn about
   the wheel's centre (436,436) rather than its own bounding box. It is
   stripped from style ATTRIBUTES by the HTML sanitizer but survives here —
   SiteCss is filtered by a blocklist, not an allow-list — so the declaration
   lives in the stylesheet and the JS only ever sets the angle.
   The two rings wind in opposite directions, as the prototype does. */
.mc-sig .sig-rot,
.mc-sig .sig-ring,
.mc-sig .sig-seg-t {
  transform-box: view-box;
  transition: transform 1s cubic-bezier(.4, 0, .2, 1);
}
.mc-sig .sig-rot, .mc-sig .sig-ring { transform-origin: 436px 436px; }
@media (prefers-reduced-motion: reduce) {
  .mc-sig .sig-rot, .mc-sig .sig-ring, .mc-sig .sig-seg-t { transition: none; }
}

/* The two outer captions: the SAP products that wrap the whole lifecycle. */
.mc-sig .sig-cap-t {
  font-family: var(--font-mono); font-size: calc(12.5px * var(--wt)); letter-spacing: .18em;
  text-transform: uppercase; fill: #767676;
}
/* Curved captions on the three flow bands. */
.mc-sig .sig-band-t {
  font-family: var(--font-mono); font-size: calc(13px * var(--wt)); letter-spacing: .2em;
  text-transform: uppercase; fill: #ffffff; transition: opacity .2s ease;
}
.mc-sig .sig-wheel[data-rel] .sig-band-t { opacity: .15; }
.mc-sig .sig-wheel[data-rel] .sig-band-t[data-rel="1"] { opacity: 1; }

/* Curved captions on the outer phase ring. */
.mc-sig .sig-ph-t {
  font-family: var(--font-mono); font-size: calc(12px * var(--wt)); letter-spacing: .22em;
  text-transform: uppercase; fill: #6b6b6b; transition: fill .2s ease;
}
.mc-sig .sig-ph-t[data-on="1"] { fill: #ffffff; }

/* Straight two-line component names, centred in their segment. */
.mc-sig .sig-seg-t { transition: opacity .2s ease; }
.mc-sig .sig-seg-t .v { font-family: var(--font-mono); font-size: calc(12.5px * var(--wt)); letter-spacing: .14em; fill: #595959; transition: fill .2s ease; }
.mc-sig .sig-seg-t .n { font-family: var(--font-head); font-size: calc(16.5px * var(--wt)); font-weight: 500; fill: #0a0a0a; transition: fill .2s ease; }
.mc-sig .sig-seg-t[data-on="1"] .v { fill: rgba(255,255,255,.75); }
.mc-sig .sig-seg-t[data-on="1"] .n { fill: #ffffff; }
.mc-sig .sig-wheel[data-rel] .sig-seg-t { opacity: .12; }
.mc-sig .sig-wheel[data-rel] .sig-seg-t[data-rel="1"] { opacity: 1; }

/* Focus. An `outline` on an SVG path is painted around the element's
   BOUNDING BOX, not its shape, so a focused wedge drew a rectangle across
   the drawing. The wedge indicates focus with its own stroke instead, which
   follows the shape — WCAG 2.4.7 is still satisfied, and pointer users
   never see a rectangle. */
.mc-sig .sig-wheel [role="button"]:focus { outline: none; }
.mc-sig .sig-wheel [role="button"]:focus-visible {
  outline: none; stroke: var(--accent); stroke-width: 5;
}

/* Hub detail panel. */
.mc-sig .sig-hubpanel {
  position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
  width: 36%; text-align: center; pointer-events: none;
  display: flex; flex-direction: column; gap: 1.03cqw; align-items: center;
  transition: opacity .2s ease;
}
.mc-sig .sig-wheel[data-rel] .sig-hubpanel { opacity: .2; }
.mc-sig .sig-wheel[data-rel][data-relhub="1"] .sig-hubpanel { opacity: 1; }
.mc-sig .sig-hubpanel .ring { font-family: var(--font-mono); font-size: 1.38cqw; letter-spacing: .16em; text-transform: uppercase; color: var(--accent); }
.mc-sig .sig-hubpanel .vend { font-family: var(--font-mono); font-size: 1.38cqw; letter-spacing: .14em; text-transform: uppercase; color: #767676; margin-bottom: .46cqw; }
.mc-sig .sig-hubpanel .nm { font-family: var(--font-head); font-weight: 500; font-size: 2.52cqw; line-height: 1.15; letter-spacing: -.01em; color: var(--ink); }
.mc-sig .sig-hubpanel .q { font-family: var(--font-head); font-weight: 500; font-size: 1.49cqw; line-height: 1.45; color: var(--ink); margin: 0; }
.mc-sig .sig-hubpanel .rule { width: 2.98cqw; height: 1px; background: var(--hair-strong); }
.mc-sig .sig-hubpanel .s { font-family: var(--font-head); font-size: 1.38cqw; line-height: 1.55; color: var(--ink-2); margin: 0; }
.mc-sig .sig-hubpanel .cta {
  pointer-events: auto; font-family: var(--font-mono); font-size: 1.38cqw;
  letter-spacing: .14em; text-transform: uppercase; color: var(--accent);
  border-bottom: 1px solid var(--accent); padding-bottom: .23cqw; text-decoration: none;
}
.mc-sig .sig-hubpanel .cta:hover { color: #8a0000; border-color: #8a0000; }

/* Hub label (SVG). The centred HTML panel names the hub on desktop; below
   660px that panel flows under the drawing, which would leave the circle
   blank. This text keeps the centre named at every width. Built by the JS
   like the rest of the wheel's type, shown by CSS only where the panel has
   left the hub. */
.mc-sig .sig-hub-t { display: none; pointer-events: none; }
.mc-sig .sig-hub-t .v { font-family: var(--font-mono); font-size: calc(12.5px * var(--wt)); letter-spacing: .14em; fill: #595959; }
.mc-sig .sig-hub-t .n { font-family: var(--font-head); font-size: calc(19px * var(--wt)); font-weight: 500; fill: #0a0a0a; }

/* The seven components as authored markup. Never shown: the wheel carries its
   own labels at every width (see "Narrow viewports: the wheel" below). It is
   kept because it puts the product names in the SERVED html, where the SVG
   labels — built at runtime — are not. Showing this list under a drawing whose
   type had been switched off was the old phone treatment; ruled out 17.09.2026. */
.mc-sig .sig-wlist { display: none; list-style: none; margin: 24px 0 0; padding: 0; border-top: 1px solid var(--hair); }
.mc-sig .sig-wlist li { border-bottom: 1px solid var(--hair); }
.mc-sig .sig-wlist button {
  display: flex; flex-direction: column; gap: 3px; width: 100%; margin: 0;
  padding: 12px 0; background: none; border: 0; border-radius: 0; font: inherit;
  text-align: left; cursor: pointer;
}
.mc-sig .sig-wlist .v { font-family: var(--font-mono); font-size: 10.5px; letter-spacing: .14em; text-transform: uppercase; color: var(--ink-3); }
.mc-sig .sig-wlist .n { font-family: var(--font-head); font-weight: 500; font-size: 16px; color: var(--ink); transition: color .2s ease; }
.mc-sig .sig-wlist button[data-on="1"] .n { color: var(--accent); }
.mc-sig .sig-wlist button:hover .n { color: var(--accent); }

.mc-sig .sig-wnote {
  margin: 16px 0 0; font-family: var(--font-head); font-size: 14px; line-height: 1.6;
  color: var(--ink-3); min-height: 3.2em;
}

/* ---------- Capability tabs -------------------------------------------- */
.mc-sig .sig-cap-tabs { display: grid; grid-template-columns: repeat(4, 1fr); border: 1px solid var(--hair-strong); border-bottom: 0; }
.mc-sig .sig-cap-tabs button {
  display: block; width: 100%; text-align: left; font: inherit; margin: 0;
  border: 0; border-left: 1px solid var(--hair-strong); border-radius: 0;
  padding: 22px 24px; cursor: pointer; background: var(--bg); color: var(--ink);
  transition: background .2s ease, color .2s ease;
}
.mc-sig .sig-cap-tabs button:first-child { border-left: 0; }
.mc-sig .sig-cap-tabs button .n { font-family: var(--font-mono); font-size: 11px; letter-spacing: .12em; margin-bottom: 8px; color: var(--accent); transition: color .2s ease; }
.mc-sig .sig-cap-tabs button .t { font-family: var(--font-head); font-weight: 500; font-size: 17px; }
.mc-sig .sig-cap-tabs button:hover { background: var(--bg-soft); }
.mc-sig .sig-cap-tabs button[data-on="1"] { background: var(--accent); color: #fff; }
.mc-sig .sig-cap-tabs button[data-on="1"] .n { color: rgba(255,255,255,.8); }
.mc-sig .sig-cap-tabs button[data-on="1"]:hover { background: #8a0000; }

.mc-sig .sig-cap-panel { display: grid; grid-template-columns: 1.55fr 1fr; border: 1px solid var(--hair-strong); }
.mc-sig .sig-cap-main { padding: 40px; }
.mc-sig .sig-cap-side { padding: 40px; border-left: 1px solid var(--hair-strong); background: var(--bg-soft); }
/* Each pane contributes its own main + side cell to the panel grid, so the
   wrapper dissolves. `hidden` is not on the sanitizer's attribute allow-list;
   data-on is, and it survives the round trip. */
.mc-sig .sig-cap-pane { display: contents; }
.mc-sig .sig-cap-pane[data-on="0"] { display: none; }
.mc-sig .sig-cap-tag { font-family: var(--font-mono); font-size: 11.5px; letter-spacing: .14em; text-transform: uppercase; color: var(--accent); margin-bottom: 18px; }
.mc-sig .sig-cap-aside { font-size: 14px; line-height: 1.6; color: var(--ink-3); border-left: 2px solid var(--accent); padding-left: 14px; margin-bottom: 20px; }
.mc-sig .sig-cap-aside a { color: var(--ink-2); text-decoration: underline; text-underline-offset: 2px; }
.mc-sig .sig-cap-aside a:hover { color: var(--accent); }
.mc-sig .sig-cap-body { font-size: 16.5px; line-height: 1.65; color: var(--ink-2); margin: 0 0 26px; max-width: 62ch; }
.mc-sig .sig-ticks { display: grid; gap: 14px; }
.mc-sig .sig-ticks > div { display: grid; grid-template-columns: 8px 1fr; gap: 14px; align-items: start; font-size: 15px; line-height: 1.6; color: var(--ink-2); }
.mc-sig .sig-ticks > div::before { content: ''; width: 8px; height: 8px; background: var(--accent); margin-top: .5em; }
.mc-sig .sig-cap-side .lab { font-family: var(--font-mono); font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--ink-3); margin-bottom: 16px; }
.mc-sig .sig-cap-side .q { font-family: var(--font-head); font-weight: 500; font-size: 20px; line-height: 1.4; color: var(--ink); margin: 0 0 18px; }
.mc-sig .sig-cap-side .note { font-size: 14.5px; line-height: 1.6; color: var(--ink-3); margin: 0 0 24px; }

/* ---------- Engagement models ------------------------------------------ */
.mc-sig .sig-eng-grid, .mc-sig .sig-del-grid { display: grid; grid-template-columns: repeat(4, 1fr); border-top: 1px solid var(--hair-strong); }
.mc-sig .sig-eng-grid > div, .mc-sig .sig-del-grid > div { padding: 30px 30px 30px 0; border-right: 1px solid var(--hair); }
.mc-sig .sig-eng-grid > div:not(:first-child), .mc-sig .sig-del-grid > div:not(:first-child) { padding-left: 30px; }
.mc-sig .sig-eng-grid > div:last-child, .mc-sig .sig-del-grid > div:last-child { border-right: 0; padding-right: 0; }
.mc-sig .sig-eng-grid .n { font-family: var(--font-mono); font-size: 11px; letter-spacing: .12em; color: var(--accent); margin-bottom: 14px; }
.mc-sig .sig-eng-grid h3 { font-family: var(--font-head); font-weight: 500; font-size: 19px; letter-spacing: -.01em; color: var(--ink); margin: 0 0 12px; }
.mc-sig .sig-eng-grid p { font-size: 14.5px; line-height: 1.6; color: var(--ink-2); margin: 0; }

.mc-sig .sig-eng-band {
  display: grid; grid-template-columns: 1.4fr 1fr; gap: 40px; align-items: center;
  margin-top: 56px; padding: 44px; background: var(--bg-soft); border: 1px solid var(--hair-strong);
}
.mc-sig .sig-eng-band .lab { font-family: var(--font-mono); font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--accent); margin-bottom: 16px; }
.mc-sig .sig-eng-band h3 { font-family: var(--font-head); font-weight: 500; font-size: clamp(22px, 2vw, 30px); line-height: 1.25; letter-spacing: -.02em; color: var(--ink); margin: 0 0 14px; }
.mc-sig .sig-eng-band p { font-size: 15.5px; line-height: 1.6; color: var(--ink-2); margin: 0; max-width: 56ch; }
.mc-sig .sig-eng-band > div:last-child { display: flex; justify-content: flex-end; }

/* ---------- Insights vs Intelligence ----------------------------------- */
.mc-sig .sig-cmp-head { margin-bottom: 48px; }
.mc-sig .sig-cmp-head .mcs-h2 { margin-bottom: 0; }
.mc-sig .sig-cmp-grid { display: grid; grid-template-columns: 1fr 1fr; border: 1px solid var(--hair-strong); background: var(--bg); }
.mc-sig .sig-cmp-grid > div { padding: 40px; }
.mc-sig .sig-cmp-grid > div + div { border-left: 1px solid var(--hair-strong); }
.mc-sig .sig-cmp-grid .prod { font-family: var(--font-mono); font-size: 11.5px; letter-spacing: .14em; text-transform: uppercase; color: var(--ink-3); margin-bottom: 12px; }
.mc-sig .sig-cmp-grid h3 { font-family: var(--font-head); font-weight: 500; font-size: clamp(24px, 2.2vw, 32px); letter-spacing: -.02em; color: var(--ink); margin: 0 0 28px; padding-bottom: 28px; border-bottom: 1px solid var(--hair); }
.mc-sig .sig-cmp-grid h3 em { font-style: italic; color: var(--accent); }
.mc-sig .sig-cmp-foot {
  display: grid; grid-template-columns: 1fr auto; gap: 16px 40px; align-items: baseline;
  margin-top: 34px; padding-top: 26px; border-top: 1px solid var(--hair-strong);
}
.mc-sig .sig-cmp-foot .seq { font-family: var(--font-mono); font-size: 12.5px; letter-spacing: .1em; text-transform: uppercase; color: var(--ink); line-height: 1.7; }
.mc-sig .sig-cmp-foot .seq span { background: rgba(167,0,0,.12); padding: 0 6px; }
.mc-sig .sig-cmp-foot .aside { font-size: 14.5px; line-height: 1.6; color: var(--ink-3); max-width: 44ch; }

/* ---------- Deliverables ------------------------------------------------ */
.mc-sig .sig-del-head { display: grid; grid-template-columns: 1.3fr 1fr; gap: 40px; align-items: end; margin-bottom: 48px; }
.mc-sig .sig-del-head .mcs-h2 { margin-bottom: 0; }
.mc-sig .sig-del-head p { font-size: 15.5px; line-height: 1.65; color: var(--ink-2); margin: 0; max-width: 46ch; }
.mc-sig .sig-del-grid .lab { font-family: var(--font-mono); font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--accent); margin-bottom: 20px; }
.mc-sig .sig-del-grid .sig-ticks > div { font-size: 14.5px; }
.mc-sig .sig-always { display: grid; grid-template-columns: auto 1fr 1fr; gap: 24px 40px; align-items: baseline; margin-top: 48px; padding-top: 26px; border-top: 1px solid var(--hair-strong); }
.mc-sig .sig-always .lab { font-family: var(--font-mono); font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--accent); }
.mc-sig .sig-always div:not(.lab) { font-size: 15.5px; line-height: 1.6; color: var(--ink-2); }
.mc-sig .sig-always em { font-style: italic; color: var(--ink); }
.mc-sig .sig-del-cta { margin-top: 44px; }

/* ---------- Consultants ------------------------------------------------- */
.mc-sig .sig-cons-grid { display: grid; grid-template-columns: 1.15fr .85fr; gap: 64px; align-items: start; }
.mc-sig .sig-cons-grid p { font-size: 16.5px; line-height: 1.65; color: var(--ink-2); margin: 0 0 20px; max-width: 58ch; }
.mc-sig .sig-ask > div { border-top: 1px solid var(--hair-strong); padding: 22px 0; }
.mc-sig .sig-ask > div:last-of-type { border-bottom: 1px solid var(--hair-strong); }
.mc-sig .sig-ask .lab { font-family: var(--font-mono); font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--accent); margin-bottom: 10px; }
.mc-sig .sig-ask .q { font-family: var(--font-head); font-weight: 500; font-size: 18px; line-height: 1.4; color: var(--ink); }
.mc-sig .sig-cons-grid .mcs-btn { margin-top: 32px; }

/* ---------- FAQ ---------------------------------------------------------
   <details>/<summary> rather than a scripted accordion: it survives the
   sanitizer, works with JavaScript off, and keeps the answers in the DOM for
   search engines. Same pattern the page already used as .mc-disc.
   ---------------------------------------------------------------------- */
.mc-sig .sig-faq { border-top: 1px solid var(--hair-strong); }
.mc-sig .sig-faq details { border-bottom: 1px solid var(--hair); }
.mc-sig .sig-faq > details > summary {
  display: flex; align-items: baseline; justify-content: space-between; gap: 32px;
  padding: 24px 0; cursor: pointer; list-style: none;
  font-family: var(--font-head); font-weight: 500; font-size: clamp(17px, 1.4vw, 20px);
  line-height: 1.4; color: var(--ink); transition: color .2s ease;
}
.mc-sig .sig-faq summary::-webkit-details-marker { display: none; }
.mc-sig .sig-faq summary::marker { content: ''; }
.mc-sig .sig-faq > details > summary:hover { color: var(--accent); }
.mc-sig .sig-faq > details > summary .ic { font-family: var(--font-mono); font-size: 18px; color: var(--ink-3); flex: 0 0 auto; transition: transform .2s ease, color .2s ease; }
.mc-sig .sig-faq > details[open] > summary .ic { transform: rotate(45deg); color: var(--accent); }
.mc-sig .sig-faq .a { padding: 0 0 26px; }
.mc-sig .sig-faq .a p { font-size: 15.5px; line-height: 1.65; color: var(--ink-2); margin: 0 0 14px; }

/* The nine failure modes, nested inside their own FAQ answer. */
.mc-sig .sig-modes { margin-top: 20px; border-top: 1px solid var(--hair-strong); border-bottom: 0; }
.mc-sig .sig-modes > summary { display: block; cursor: pointer; list-style: none; font-family: var(--font-mono); font-size: 12px; letter-spacing: .14em; text-transform: uppercase; color: var(--accent); padding: 18px 0; transition: color .2s ease; }
.mc-sig .sig-modes > summary:hover { color: #8a0000; }
.mc-sig .sig-modes .mode { padding: 26px 0; border-top: 1px solid var(--hair); }
.mc-sig .sig-modes .mode-h { display: flex; align-items: baseline; gap: 14px; margin-bottom: 14px; }
.mc-sig .sig-modes .mode-h .n { font-family: var(--font-mono); font-size: 12px; letter-spacing: .12em; color: var(--accent); }
.mc-sig .sig-modes .mode-h .t { font-family: var(--font-head); font-weight: 500; font-size: 18px; color: var(--ink); }
.mc-sig .sig-modes .mode p { font-size: 15px; line-height: 1.65; color: var(--ink-2); margin: 0 0 12px; }
.mc-sig .sig-modes .mode p:last-child { margin-bottom: 0; }
.mc-sig .sig-modes .mode p .k { font-family: var(--font-mono); font-size: 10.5px; letter-spacing: .16em; text-transform: uppercase; color: var(--ink-3); }

/* ---------- Contact = the page's closing -------------------------------
   D65: the red closing band and the contact section stop being two things.
   One red section, the form on it, no address block (the address lives in
   the footer). D69: the heading block splits, H2 left and lede right, and
   folds back to one column below 1100px. D66/D72: one white card at full
   container width, two columns inside it separated by 64px of space rather
   than a second box — identity, consent and send on the left, the SAP
   Signavio questions on the right.
   ---------------------------------------------------------------------- */
.mc-sig .mcs-contact-head .eyebrow {
  grid-column: 1 / -1; font-family: var(--font-mono); font-size: 12px;
  letter-spacing: .16em; text-transform: uppercase; color: rgba(255,255,255,.75);
  margin-bottom: 20px;
}
.mc-sig .mcs-contact-head h2 {
  grid-column: 1 / -1; font-family: var(--font-head); font-weight: 500;
  font-size: clamp(32px, 3.4vw, 52px); line-height: 1.1; letter-spacing: -.02em;
  color: #fff; margin: 0;
}

/* The white card. .cform carries the field styling already — this only
   places it and splits it into the two columns D67 established. */
/* The two wrappers are invisible but load-bearing: they give the columns
   independent heights, which a plain grid cannot. Deleting them collapses
   the form back into one flow and the left/right split goes with it. */
.mc-sig .sig-col-left .form-foot { margin-top: 20px; }
.mc-sig .sig-col-left .form-privacy { margin-top: 16px; }

.mc-sig .mcs-contact .form-success {
  background: #fff; border: 1px solid var(--hair); color: var(--ink);
  padding: clamp(40px, 5vw, 64px) clamp(28px, 3vw, 40px); text-align: center;
  flex-direction: column; align-items: center; justify-content: center;
}
.mc-sig .mcs-contact .form-success .check {
  width: 56px; height: 56px; background: var(--accent); color: #fff;
  display: grid; place-items: center; margin: 0 auto 20px;
}
.mc-sig .mcs-contact .form-success .check svg { width: 26px; height: 26px; }
.mc-sig .mcs-contact .form-success h3 {
  font-family: var(--font-head); font-weight: 500; font-size: 24px;
  letter-spacing: -.02em; color: var(--ink); margin: 0;
}
.mc-sig .mcs-contact .form-success p { color: var(--ink-3); margin-top: 10px; }

/* --- Inputs: nothing to restate any more. The tenant-wide .field rules ARE the design
   system's 1B "Dolgu" treatment since 10.09.2026 (the old underline base and .cform's
   ported Sayfalar metrics were removed with that change), so this scope inherits them
   like every other form. --- */

/* The hero stacks earlier than the rest of the page. Side by side below
   1200px the wheel column drops under ~500px, and its viewBox-scaled type
   with it (7.5px at 1024). Stacked, the wheel takes the container width and
   its labels stay legible. */
@media (max-width: 1200px) {
  .mc-sig .sig-hero-grid { grid-template-columns: 1fr; gap: 44px; }
}

@media (max-width: 1100px) {
  .mc-sig .mcs-contact-head h2, .mc-sig .mcs-contact-head .mcs-lede { grid-column: 1; }
}
/* ---------- Narrow viewports -------------------------------------------
   Additive only: every rule sits inside a max-width query, so the desktop
   layout above is untouched. Breakpoints follow the ones the prototype
   already used (1024 / 900 / 700).
   ---------------------------------------------------------------------- */
@media (max-width: 1024px) {
  .mc-sig .sig-cap-panel { grid-template-columns: 1fr; }
  .mc-sig .sig-cap-side { border-left: 0; border-top: 1px solid var(--hair-strong); }
  .mc-sig .sig-eng-grid, .mc-sig .sig-del-grid { grid-template-columns: repeat(2, 1fr); }
  .mc-sig .sig-eng-grid > div:nth-child(2n), .mc-sig .sig-del-grid > div:nth-child(2n) { border-right: 0; padding-right: 0; }
  .mc-sig .sig-eng-grid > div:nth-child(n+3), .mc-sig .sig-del-grid > div:nth-child(n+3) { border-top: 1px solid var(--hair); }
  .mc-sig .sig-always { grid-template-columns: 1fr; }
}
@media (max-width: 900px) {
  .mc-sig .sig-cap-tabs { grid-template-columns: repeat(2, 1fr); }
  .mc-sig .sig-cap-tabs button:nth-child(3) { border-left: 0; }
  .mc-sig .sig-cap-tabs button:nth-child(n+3) { border-top: 1px solid var(--hair-strong); }
  .mc-sig .sig-cmp-grid { grid-template-columns: 1fr; }
  .mc-sig .sig-cmp-grid > div + div { border-left: 0; border-top: 1px solid var(--hair-strong); }
  .mc-sig .sig-cons-grid { grid-template-columns: 1fr; gap: 48px; }
  .mc-sig .sig-del-head { grid-template-columns: 1fr; align-items: start; }
  .mc-sig .sig-eng-band { grid-template-columns: 1fr; }
  .mc-sig .sig-eng-band > div:last-child { justify-content: flex-start; }
}
@media (max-width: 700px) {
  .mc-sig .sig-cap-tabs { grid-template-columns: 1fr; }
  .mc-sig .sig-cap-tabs button { border-left: 0; }
  .mc-sig .sig-cap-tabs button:not(:first-child) { border-top: 1px solid var(--hair-strong); }
  .mc-sig .sig-cap-main, .mc-sig .sig-cap-side { padding: 28px 22px; }
  .mc-sig .sig-cmp-grid > div { padding: 28px 22px; }
  .mc-sig .sig-eng-grid, .mc-sig .sig-del-grid { grid-template-columns: 1fr; }
  .mc-sig .sig-eng-grid > div, .mc-sig .sig-del-grid > div { border-right: 0; padding-left: 0; padding-right: 0; }
  .mc-sig .sig-eng-grid > div + div, .mc-sig .sig-del-grid > div + div { border-top: 1px solid var(--hair); padding-left: 0; }
  .mc-sig .sig-eng-band { padding: 28px 22px; }
  .mc-sig .sig-cmp-foot { grid-template-columns: 1fr; }
}

/* ---------- Narrow viewports: the wheel --------------------------------
   The wheel gets its OWN query. The 700px block above restacks eight unrelated
   sections of this page, and that width is shared with three other page scopes
   (.about-skin, .about-band-stats, .p-dvo, .p-sdv) — so it is not the place to
   tune one drawing.
   The drawing is a fixed 872-unit square and its type is sized in viewBox units,
   so a narrow column shrinks every label with it: in a 327px column they land at
   5-7px. The type is NOT dropped for that — an unlabelled chart is a decoration,
   not a smaller chart. Instead the drawing keeps a 560px floor and pans inside an
   overflow-x container, the pattern .dc-cmp-wrap already uses in this stylesheet.
   560 x --wt 1.30 puts every label within 0.1px of where 640 x 1.14 puts it on
   desktop, so the phone reads exactly like the desktop wheel. Change the two
   together, same rule as the max-width cap above.
   ---------------------------------------------------------------------- */
@media (max-width: 660px) {
  .mc-sig .sig-wheel {
    --wt: 1.30;
    aspect-ratio: auto; max-width: none;
    overflow-x: auto; -webkit-overflow-scrolling: touch; overscroll-behavior-x: contain;
  }
  .mc-sig .sig-wheel svg { min-width: 560px; height: auto; }

  /* The panel is sized in cqw against .sig-wheel, which is now the scroll
     viewport rather than the drawing, so inside the circle it would render at
     ~8px. It flows underneath at fixed sizes and sticks to the left edge, so
     panning the wheel does not carry it off screen. The hub circle itself is
     named by .sig-hub-t rather than left blank. */
  .mc-sig .sig-hubpanel {
    position: sticky; left: 0; transform: none; width: 100%; margin-top: 26px; gap: 10px;
  }
  .mc-sig .sig-hubpanel .ring, .mc-sig .sig-hubpanel .vend, .mc-sig .sig-hubpanel .cta { font-size: 11px; }
  .mc-sig .sig-hubpanel .vend { margin-bottom: 4px; }
  .mc-sig .sig-hubpanel .nm { font-size: 22px; }
  .mc-sig .sig-hubpanel .q { font-size: 16px; }
  .mc-sig .sig-hubpanel .s { font-size: 14px; }
  .mc-sig .sig-hubpanel .rule { width: 28px; }
  .mc-sig .sig-hub-t { display: block; }
}

/* ---------------- Comparison matrix (.dc-cmp) ----------------
   Three products x six criteria, for the "How to tell which one is yours" section. It replaces
   the .dc-overview-list chooser that used to sit there, so it deliberately reuses that block's
   vocabulary: hairline rules, mono micro-labels, accent on hover, no radius, no shadow.
   Every colour here is a token. That is what makes [data-theme="dark"] work with no extra rules,
   and it is why this does not reuse .member-account-table, whose greys are hardcoded.
   Below 640px a four-column matrix is unreadable, so cells restack under their criterion and each
   names its own product from data-label. The head is clipped rather than display:none, so the
   three product links stay available to assistive tech and to crawlers in that layout too. */
/* The caption names the matrix for assistive tech. There is no .sr-only in this stylesheet
   (Tailwind only emits it when something uses it, and nothing does), so it carries its own rule. */
/* ---------------- /cloud-infrastructure, restructured 2026-08-20 ----------------
   Components for the five-section overview page. Namespaced dc-* to match the page's
   existing vocabulary. Every colour is a token, so [data-theme="dark"] needs no rules.
   .dc-pf-*   service profile columns (replaces the six-row .dc-cmp matrix)
   .dc-omx-*  the operating-model strip beneath them
   .dc-qa-more pointer from the overview FAQ to the product-page FAQs
   .dc-sp-*   the closing offer split
   The older .dc-cmp matrix is intentionally left in place: /blockchain-fintech and any
   future comparison can still use it. See OI-102. */
/* ------------------------------------------------------------------
   The five chosen variants, assembled. No review chrome: this is the
   page. Only the CSS the chosen variants need is here; everything else
   comes from the design system and the production-only file.
   ------------------------------------------------------------------ */

/* — section 3: service profile columns + operating-model strip — */
.dc-pf-card .ix { font-family: var(--font-mono); font-size: 12px; letter-spacing: .14em; color: var(--accent); }
.dc-pf-row .k { display: block; font-family: var(--font-mono); font-size: 10px; letter-spacing: .14em; text-transform: uppercase; color: var(--ink-3); margin-bottom: 6px; }
.dc-pf-row .v { font-size: 14.5px; line-height: 1.55; color: var(--ink-2); }
.dc-pf-row.neg .k { color: var(--accent); }
.dc-omx-l .k { font-family: var(--font-mono); font-size: 10.5px; letter-spacing: .18em; text-transform: uppercase; color: var(--accent); display: block; margin-bottom: 12px; }
.dc-omx-r .k { font-family: var(--font-mono); font-size: 10.5px; letter-spacing: .18em; text-transform: uppercase; color: var(--ink-3); display: block; margin-bottom: 14px; }
/* — section 4: pointer to the product-page FAQs — */
.dc-qa-more .k { font-family: var(--font-mono); font-size: 10.5px; letter-spacing: .16em; text-transform: uppercase; color: var(--accent); }

/* — section 5: framed offer split — */
.dc-sp-l .k, .dc-sp-r .k { font-family: var(--font-mono); font-size: 10.5px; letter-spacing: .18em; text-transform: uppercase; display: block; margin-bottom: 16px; }
.dc-sp-l .k { color: var(--accent); } .dc-sp-r .k { color: var(--ink-3); }
/* ===== L2 CLOUD & INFRASTRUCTURE (ci-*) — added 2026-08-20 ===== */
/* ==================================================================
   L2 — CLOUD & INFRASTRUCTURE · FINAL
   Selected variants: 01 schematic panel · 02 ink band ·
                      03 three cards      · 04 split rule
   Page-scoped ci-* rules only where base.css has no equivalent.
   Type, buttons, eyebrows, container, colour: design system.
   System rules: radius 0, no shadows, no gradients, hairlines.
   Band rhythm: soft → ink → white → soft.
   ================================================================== */
body { background: var(--bg); color: var(--ink); font-family: var(--font-head); margin: 0; }

/* ---------------- 02 · How we work — ink band ---------------- */

/* ---------------- 03 · Which one is yours — three cards ---------------- */

/* ---------------- 04 · Next step — split rule ---------------- */

/* ---------------- responsive ---------------- */
/* ===== BEGIN PAGE 04 business-process-automation ===== */
/* D128: the client's own redesign of the D126/D127 overview page, published through the
   concept pipeline. Inline clamp()/min()/text-wrap declarations moved here (the style filter
   drops them); the H1 scale and the band rhythm are normalized to the D100/D103 standards per
   the client's standing site-wide rulings, and every other clamp keeps the design's own
   values. Form controls ride the D120 Dolgu base (.field) and the D121 wiring. All rules
   scoped .p-bpa. */
.p-bpa { font-family: var(--font-head); background: #fff; color: #0a0a0a; line-height: 1.5; }
.p-bpa section { padding-block: 0 !important; }            /* G12 guard */
.p-bpa .bpa-heromin { min-height: clamp(560px, 46vw, 680px); }
.p-bpa .bpa-heroband { max-width: min(1560px, 100% - 48px); padding: 96px 0 64px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 520px), 1fr)); }
.p-bpa .bpa-h1 { font-size: var(--fs-hero); }
.p-bpa .bpa-subinv { font-size: clamp(16px, 1.3vw, 19px); }
.p-bpa .bpa-heronav { justify-self: end; }
.p-bpa .bpa-band { max-width: min(1560px, 100% - 48px); padding: 96px 0; }
.p-bpa .bpa-h2lg { font-size: clamp(38px, 3.6vw, 56px); text-wrap: balance; }
.p-bpa .bpa-num { font-size: clamp(40px, 4vw, 64px); }
.p-bpa .bpa-cols { flex: 1 1 min(100%, 560px); grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); }
.p-bpa .bpa-h3 { font-size: var(--fs-card); }
.p-bpa .bpa-p { font-size: clamp(16px, 1.2vw, 17px); }
.p-bpa .bpa-h2xl { font-size: clamp(40px, 4vw, 64px); text-wrap: balance; }
.p-bpa .bpa-h2close { font-size: var(--fs-cta); text-wrap: balance; }
.p-bpa .bpa-ledeinv { font-size: clamp(17px, 1.3vw, 19px); }
.p-bpa .bpa-formcard { padding: clamp(28px, 3vw, 60px); grid-template-columns: repeat(auto-fit, minmax(min(100%, 440px), 1fr)); gap: 40px clamp(48px, 5vw, 96px); }
.p-bpa .bpa-ulink { text-underline-offset: 3px; }
.p-bpa .scp1:hover { background: #fafafa; }
.p-bpa .scp3:hover { background: rgba(255, 255, 255, 0.04); }
.p-bpa a.scp0:hover, .p-bpa a.scp2:hover { color: #a70000; }
.p-bpa section#top a.scp0:hover { color: rgba(255, 255, 255, 0.85); background: rgba(255, 255, 255, 0.05); }
@media (max-width: 1024px) {
  .p-bpa .bpa-heroband, .p-bpa .bpa-band { padding-top: 72px !important; padding-bottom: 72px !important; }
  .p-bpa .bpa-heroband { padding: 72px 0 48px !important; }
}
/* ===== END PAGE 04 business-process-automation ===== */
/* ===== BEGIN PAGE 05 white-label-crypto-exchange =====
   D131: the owner's own redesign of the D130 unified page, published through the concept
   pipeline. Everything here is either a declaration the CMS sanitizer refuses inside a style
   attribute, or a capability it strips outright (svg <text>, SMIL). The design's own values are
   kept verbatim except where a standing site ruling covers them: the H1/H2 scale (D100) and the
   band rhythm and container gutter (D103/D92). All rules scoped .p-wlx. */
.p-wlx { font-family: var(--font-head); background: #fff; color: var(--ink); line-height: 1.5; }
.p-wlx section { padding-block: 0 !important; }            /* G12 guard */

/* FAQ: the design's accordion was JS (.dc-faq-item.open). The sanitizer strips <script>,
   so it becomes <details>. The site already styles .dc-faq-*; these rules re-point the open
   state at [open] and hide the native marker. Same shape as the .p-hci precedent. */
.p-wlx .dc-faq-d > summary.dc-faq-q { list-style: none; cursor: pointer; }
.p-wlx .dc-faq-d > summary.dc-faq-q::-webkit-details-marker { display: none; }
.p-wlx .dc-faq-d > summary.dc-faq-q::marker { content: ""; }
.p-wlx .dc-faq-d[open] .dc-faq-q .ic { transform: rotate(45deg); color: var(--accent); }
.p-wlx .dc-faq-d .dc-faq-a { grid-template-rows: 0fr; }
.p-wlx .dc-faq-d[open] .dc-faq-a { grid-template-rows: 1fr; }
.p-wlx .dc-faq-d[open] .dc-faq-a > div { padding-bottom: 26px; }

/* svg <text> is not on the sanitizer's allow-list, so every diagram label is an HTML
   overlay instead. The label sizes are expressed in cqw against the figure box so they scale
   with the svg exactly as the original user units did. The wrapper also has to take the width the
   svg used to take: several figures sit in a flex parent, where a block wrapper around a
   width:100% svg would otherwise resolve to zero. */
.p-wlx .wlx-fig { container-type: inline-size; display: block; width: 100%; min-width: 0; box-sizing: border-box; }
.p-wlx .wlx-fig > svg { display: block; width: 100%; }

/* SMIL (<animate>, <animateMotion>, <set>) is not on the allow-list. The motion the
   design authored is re-expressed as CSS: path motion via offset-path, opacity pulses via
   keyframes. Geometry tweens have no portable CSS analogue and rest at their authored value. */
@keyframes wlx-flow { to { offset-distance: 100%; } }
@keyframes wlxk1 { 0.00% { opacity: 1; } 50.00% { opacity: .2; } 100.00% { opacity: 1; } }
@keyframes wlxk2 { 0.00% { opacity: 1; } 50.00% { opacity: .25; } 100.00% { opacity: 1; } }
@keyframes wlxk3 { 0.00% { opacity: 0; } 45.00% { opacity: 0; } 50.00% { opacity: 1; } 85.00% { opacity: 1; } 100.00% { opacity: 0; } }
@keyframes wlxk4 { 0.00% { opacity: 1; } 50.00% { opacity: .3; } 100.00% { opacity: 1; } }
@keyframes wlxk5 { 0.00% { opacity: 0; } 10.00% { opacity: 0; } 11.00% { opacity: 1; } 85.00% { opacity: 1; } 100.00% { opacity: 0; } }
@keyframes wlxk6 { 0.00% { opacity: 0; } 28.00% { opacity: 0; } 29.00% { opacity: 1; } 85.00% { opacity: 1; } 100.00% { opacity: 0; } }
@keyframes wlxk7 { 0.00% { opacity: 0; } 46.00% { opacity: 0; } 47.00% { opacity: 1; } 85.00% { opacity: 1; } 100.00% { opacity: 0; } }
@keyframes wlxk8 { 0.00% { opacity: 0; } 64.00% { opacity: 0; } 65.00% { opacity: 1; } 85.00% { opacity: 1; } 100.00% { opacity: 0; } }
@media (prefers-reduced-motion: reduce) { .p-wlx [class*="wlx-m"], .p-wlx [class*="wlx-a"] { animation: none !important; } }

/* The design had no H3 tier - section sub-headings were H4 - so the outline skipped a level.
   They are H3 now; this restates the one global rule that styled the benefit cards by tag. */
.p-wlx .dc-why-card h3 { font-family: var(--font-head); font-weight: 500; font-size: 20px; letter-spacing: -.01em; color: var(--ink); margin: 22px 0 12px; }
/* the design's own hover states, which lived in a stylesheet the bundle injected at runtime */
.p-wlx .scp0:hover { background: rgb(138, 0, 0); }
.p-wlx .scp1:hover { color: var(--accent); border-color: var(--accent); }
.p-wlx .scp2:hover { background: var(--bg-soft); }
.p-wlx .scp3:hover { background: rgb(10, 10, 10); color: rgb(255, 255, 255); }

/* Spacing (the owner's "bosluklar"). The design bands are full-bleed with a flat 56px
   gutter and no max-width; every approved page uses .container = min(1560px, 100% - 48px), so on
   a wide monitor this design would run edge to edge while its neighbours cap. The vertical
   rhythm is normalised to the D103 band (96px desktop / 72px at 1024), and the horizontal gutter
   is computed so the content lands exactly where .container puts it while the band background
   still bleeds. Same device as the .p-hci precedent (D92). 100%, not 100vw: 100vw includes the
   scrollbar. Anything already wrapping a .container is skipped so the gutter is not doubled. */
.p-wlx { --wlx-gutter: max(24px, (100% - 1560px) / 2); }
.p-wlx > section > div:not(:has(.container)) {
  padding-left: var(--wlx-gutter) !important;      /* !important: the value it replaces is inline */
  padding-right: var(--wlx-gutter) !important;
}
/* Only the leading band of each section carries the rhythm; the sub-bands inside a section are
   internal spacing and keep their own smaller values. */
@media (max-width: 1024px) {
  .p-wlx > section > div:first-child { padding-top: 72px !important; padding-bottom: 72px !important; }
  .p-wlx > section > div:first-child:not(:last-child) { padding-bottom: 0 !important; }
}

/* ---- mobile layer ----------------------------------------------------------------------------
   The design is authored for desktop and styled inline, so it carries no media queries of its
   own: measured at 375px it overflowed to 618px. These are the minimum overrides that reconcile
   the two, matched by the design's own inline values so nothing else on the site can be hit.
   !important is needed only because the values being overridden are inline. Same device as the
   .p-hci precedent. */
@media (max-width: 860px) {
  /* Proportional multi-column grids collapse. Grids whose first track is a small fixed width are
     bullet-marker and icon rows (6px 1fr, 8px 1fr, 44px 1fr, 120px 1fr, auto 1fr) and must keep
     their two tracks, so they are deliberately not matched here. */
  .p-wlx [style*="grid-template-columns: 1fr"],
  .p-wlx [style*="grid-template-columns: 1.1fr"],
  .p-wlx [style*="grid-template-columns: 1.2fr"],
  .p-wlx [style*="grid-template-columns: 1.6fr"],
  .p-wlx [style*="grid-template-columns: repeat(2"],
  .p-wlx [style*="grid-template-columns: 64px 52px"],
  .p-wlx [style*="grid-template-columns: 56px 32px"],
  .p-wlx [style*="grid-template-columns: auto 1fr"] {
    grid-template-columns: minmax(0, 1fr) !important;
  }
  /* Rows sized by a nowrap label ("We reply to enquiries within 2 business days.") are wider than
     a phone. The diagram labels are the exception: they sit inside a figure that scrolls, and
     wrapping them would break their placement. */
  .p-wlx [style*="white-space: nowrap"] { white-space: normal !important; }
  .p-wlx .wlx-fig > span { white-space: nowrap !important; }
  /* desktop gutters between blocks that are now stacked */
  .p-wlx [style*="gap: 64px"], .p-wlx [style*="gap: 56px"],
  .p-wlx [style*="gap: 40px"], .p-wlx [style*="gap: 32px"] { gap: 24px !important; }
  .p-wlx [style*="display: flex"] { flex-wrap: wrap !important; }
  /* chips and inline-flex rows must be allowed to shrink below their content width */
  .p-wlx [style*="min-width: 140px"] { min-width: 0 !important; }
  /* A technical diagram scaled to 375px is illegible, so the figures hold a legible width and
     their frame scrolls instead. The label overlay is positioned against the figure box, so the
     figure - not the frame - is what must keep the width. */
  .p-wlx div:has(> .wlx-fig) { overflow-x: auto; overflow-y: hidden; }
  .p-wlx .wlx-fig { min-width: 560px; }
}

/* The contact card: the design drew the form as styled <div> placeholders. The controls are
   now real and ride the D120 .field base in this tenant's SiteCss (a page never ships its own
   input CSS), which renders them exactly as the design drew them. */
.p-wlx .wlx-formcard { background: #fff; color: var(--ink); }
@media (max-width: 640px) { .p-wlx .wlx-fpair { grid-template-columns: 1fr !important; } }

/* --- declarations the style-attribute filter refuses, moved out verbatim --- */
.p-wlx .wlx-l { font-size: 0.9091cqw; letter-spacing: 0.1636cqw; font-family: var(--font-mono); }
.p-wlx .wlx-l1 { font-size: 1.0000cqw; letter-spacing: 0.1455cqw; font-family: var(--font-mono); }
.p-wlx .wlx-l2 { font-size: 0.9091cqw; letter-spacing: 0.1273cqw; font-family: var(--font-mono); }
.p-wlx .wlx-l3 { font-size: 0.8182cqw; letter-spacing: 0.1091cqw; font-family: var(--font-mono); }
.p-wlx .wlx-l4 { font-size: 2.2500cqw; letter-spacing: 0.3500cqw; font-family: var(--font-mono); }
.p-wlx .wlx-l5 { font-size: 2.2500cqw; letter-spacing: 0.3000cqw; font-family: var(--font-mono); }
.p-wlx .wlx-l6 { font-size: 2.0000cqw; letter-spacing: 0.3000cqw; font-family: var(--font-mono); }
.p-wlx .wlx-l7 { font-size: 2.0000cqw; letter-spacing: 0.2500cqw; font-family: var(--font-mono); }
.p-wlx .wlx-l8 { font-size: 2.0000cqw; letter-spacing: 0.2750cqw; font-family: var(--font-mono); }
.p-wlx .wlx-l9 { font-size: 2.2500cqw; letter-spacing: 0.3750cqw; font-family: var(--font-mono); }
.p-wlx .wlx-l10 { font-size: 2.2500cqw; letter-spacing: 0.3250cqw; font-family: var(--font-mono); }
.p-wlx .wlx-l11 { font-size: 2.0000cqw; letter-spacing: 0.3250cqw; font-family: var(--font-mono); }
.p-wlx .wlx-l12 { font-size: 2.5000cqw; letter-spacing: 0.3500cqw; font-family: var(--font-mono); }
.p-wlx .wlx-l13 { font-size: 1.9565cqw; letter-spacing: 0.3043cqw; font-family: var(--font-mono); }
.p-wlx .wlx-l14 { font-size: 1.7391cqw; letter-spacing: 0.2391cqw; font-family: var(--font-mono); }
.p-wlx .wlx-l15 { font-size: 2.1739cqw; letter-spacing: 0.3478cqw; font-family: var(--font-mono); }
.p-wlx .wlx-l16 { font-size: 1.9565cqw; letter-spacing: 0.2609cqw; font-family: var(--font-mono); }
.p-wlx .wlx-l17 { font-size: 1.0000cqw; letter-spacing: 0.1778cqw; font-family: var(--font-mono); }
.p-wlx .wlx-l18 { font-size: 1.1111cqw; letter-spacing: 0.1444cqw; font-family: var(--font-mono); }
.p-wlx .wlx-l19 { font-size: 1.0000cqw; letter-spacing: 0.1333cqw; font-family: var(--font-mono); }
.p-wlx .wlx-l20 { font-size: 1.0000cqw; letter-spacing: 0.1556cqw; font-family: var(--font-mono); }
.p-wlx .wlx-l21 { font-size: 1.1111cqw; letter-spacing: 0.1556cqw; font-family: var(--font-mono); }
.p-wlx .wlx-l22 { font-size: 3.0769cqw; letter-spacing: 0.4615cqw; font-family: var(--font-mono); }
.p-wlx .wlx-l23 { font-size: 3.0769cqw; letter-spacing: 0.4231cqw; font-family: var(--font-mono); }
.p-wlx .wlx-m { offset-path: path("M174,64 C260,64 260,124 320,124"); offset-rotate: 0deg; animation: wlx-flow 3s linear 0s infinite; }
.p-wlx .wlx-m24 { offset-path: path("M174,124 H320"); offset-rotate: 0deg; animation: wlx-flow 3s linear 1s infinite; }
.p-wlx .wlx-m25 { offset-path: path("M174,184 C260,184 260,124 320,124"); offset-rotate: 0deg; animation: wlx-flow 3s linear 2s infinite; }
.p-wlx .wlx-m26 { offset-path: path("M470,124 H540"); offset-rotate: 0deg; animation: wlx-flow 1.6s linear 0s infinite; }
.p-wlx .wlx-m27 { offset-path: path("M690,124 H760"); offset-rotate: 0deg; animation: wlx-flow 1.6s linear 0.4s infinite; }
.p-wlx .wlx-m28 { offset-path: path("M80,96 V56 H200 V36"); offset-rotate: 0deg; animation: wlx-flow 3s linear 0s infinite; }
.p-wlx .wlx-m29 { offset-path: path("M260,50 H166"); offset-rotate: 0deg; animation: wlx-flow 2.4s linear 0s infinite; }
.p-wlx .wlx-m30 { offset-path: path("M260,82 H166"); offset-rotate: 0deg; animation: wlx-flow 2.4s linear 0.8s infinite; }
.p-wlx .wlx-m31 { offset-path: path("M28,24 H36 V32"); offset-rotate: 0deg; animation: wlx-flow 2.4s linear 0s infinite; }
.p-wlx .wlx-m32 { offset-path: path("M92,39 C150,39 150,110 190,110"); offset-rotate: 0deg; animation: wlx-flow 3.4s linear 0s infinite; }
.p-wlx .wlx-m33 { offset-path: path("M92,123 C150,123 150,110 190,110"); offset-rotate: 0deg; animation: wlx-flow 3.4s linear 0.6s infinite; }
.p-wlx .wlx-m34 { offset-path: path("M316,190 V250 H54 V188"); offset-rotate: 0deg; animation: wlx-flow 4.6s linear 0s infinite; }
.p-wlx .wlx-m35 { offset-path: path("M170,44 H230"); offset-rotate: 0deg; animation: wlx-flow 2.2s linear 0s infinite; }
.p-wlx .wlx-m36 { offset-path: path("M230,62 H170"); offset-rotate: 0deg; animation: wlx-flow 2.8s linear 0s infinite; }
.p-wlx .wlx-m37 { offset-path: path("M286,70 H196"); offset-rotate: 0deg; animation: wlx-flow 2.6s linear 0s infinite; }
.p-wlx .wlx-m38 { offset-path: path("M286,118 H196"); offset-rotate: 0deg; animation: wlx-flow 2.6s linear 0.6s infinite; }
.p-wlx .wlx-m39 { offset-path: path("M286,190 H196"); offset-rotate: 0deg; animation: wlx-flow 2.6s linear 1.2s infinite; }
.p-wlx .wlx-m40 { offset-path: path("M96,65 H860"); offset-rotate: 0deg; animation: wlx-flow 7s linear 0s infinite; }
.p-wlx .wlx-a { animation: wlxk1 1.6s linear 0s infinite; }
.p-wlx .wlx-a41 { animation: wlxk1 2s linear 0s infinite; }
.p-wlx .wlx-a42 { animation: wlxk1 2s linear 0.5s infinite; }
.p-wlx .wlx-a43 { animation: wlxk1 2s linear 1s infinite; }
.p-wlx .wlx-a44 { animation: wlxk1 2s linear 1.5s infinite; }
.p-wlx .wlx-a45 { animation: wlxk2 1.6s linear 0s infinite; }
.p-wlx .wlx-a46 { animation: wlxk3 5s linear 0s infinite; }
.p-wlx .wlx-a47 { animation: wlxk4 2s linear 0s infinite; }
.p-wlx .wlx-a48 { animation: wlxk4 1.8s linear 0s infinite; }
.p-wlx .wlx-a49 { animation: wlxk5 8s linear 0s infinite; }
.p-wlx .wlx-a50 { animation: wlxk6 8s linear 0s infinite; }
.p-wlx .wlx-a51 { animation: wlxk7 8s linear 0s infinite; }
.p-wlx .wlx-a52 { animation: wlxk8 8s linear 0s infinite; }
.p-wlx .wlx-a53 { animation: wlxk2 1.8s linear 0s infinite; }
.p-wlx .wlx-d { stroke-dasharray: 3 3; }
.p-wlx .wlx-d54 { stroke-dasharray: 2 3; }
.p-wlx .wlx-d55 { stroke-dasharray: 2 2; }
.p-wlx .wlx-h1 { font-size: var(--fs-hero); text-wrap: pretty; }
.p-wlx .wlx-al { align-items: start; }
.p-wlx .wlx-h2 { font-size: var(--fs-h2); font-weight: 500; }
.p-wlx .wlx-al56 { align-items: end; }
.p-wlx .wlx-h { font-size: clamp(20px, 1.9vw, 26px); }
.p-wlx .wlx-al57 { align-self: start; }
.p-wlx .wlx-gr { grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px), 1fr)); }
/* ===== END PAGE 05 white-label-crypto-exchange ===== */

/* ===== BEGIN PAGE 08 managed-hci-private-cloud ===== */
/* ==================================================================
   PAGE 08 — MANAGED HCI PRIVATE CLOUD — production page
   All 13 sections final. No review chrome remains.
   ================================================================== */
.p-hci { background: var(--bg); color: var(--ink); font-family: var(--font-head); margin: 0; }
/* The public layout ships h1:not([class*="mc-"]) { font-family: var(--font-sans) } inside
   its mc-public cascade layer, and a direct declaration beats inheritance. Name the
   page faces explicitly so headings do not fall back to the system sans stack. */
.p-hci h1, .p-hci h2, .p-hci h3 { font-family: var(--font-head); }

/* ============ 01 LOCKED · statement band ============ */
.p-hci .s1 { padding: clamp(58px,6.5vw,88px) 0 0; }
.p-hci .s1-band { display: grid; grid-template-columns: 1.5fr 1fr .95fr; border-top: 1px solid var(--ink); }
.p-hci .s1-cell { padding: 30px 36px 34px 0; border-right: 1px solid var(--hair); }
.p-hci .s1-cell:last-child { border-right: 0; padding-right: 0; }
.p-hci .s1-cell + .s1-cell { padding-left: 36px; }
.p-hci .s1-cell .lbl { font-family: var(--font-mono); font-size: 11px; letter-spacing: .18em; text-transform: uppercase; color: var(--ink-3); margin-bottom: 14px; }
.p-hci .s1-cell p { margin: 0; }
.p-hci .s1-lede { font-size: 16px; line-height: 1.64; color: var(--ink-2); }
.p-hci .s1-act { display: flex; flex-direction: column; gap: 10px; align-items: stretch; }
.p-hci .s1-act .btn { justify-content: center; }
.p-hci .hm { margin: 0; font-size: 13px; line-height: 1.6; color: var(--ink-3); max-width: 52ch; }
.p-hci .hm strong { color: var(--ink); font-weight: 500; }
@media(max-width:1040px){ .p-hci .s1-band {grid-template-columns:1fr} .p-hci .s1-cell {border-right:0;border-bottom:1px solid var(--hair);padding:26px 0} .p-hci .s1-cell:last-child {border-bottom:0} .p-hci .s1-cell + .s1-cell {padding-left:0} .p-hci .s1-act {align-items:flex-start} .p-hci .s1-act .btn {justify-content:flex-start} }

/* ============ 02 LOCKED · stepped statement ============ */
.p-hci .s2 { padding: clamp(60px,7vw,96px) 0; }
.p-hci .s2 h2 { margin-bottom: clamp(30px,3.6vw,42px); }
.p-hci .s2-steps { border-top: 1px solid var(--accent); padding-top: clamp(26px,3vw,34px); max-width: 80ch; }
.p-hci .s2-steps p { margin: 0 0 18px; }
.p-hci .s2-steps p:last-child { margin-bottom: 0; }
.p-hci .s2-s1 { font-size: clamp(22px,2.2vw,30px); font-weight: 500; letter-spacing: -.022em; line-height: 1.28; color: var(--ink); }
.p-hci .s2-s2 { font-size: clamp(18px,1.6vw,21px); line-height: 1.5; color: var(--ink); }
.p-hci .s2-s3 { font-size: clamp(16px,1.3vw,18px); line-height: 1.55; color: var(--ink-2); }
.p-hci .s2-s4 { font-size: clamp(15px,1.15vw,16px); line-height: 1.6; color: var(--ink-3); }

/* ============ 03 LOCKED · weighted two-track ============ */
.p-hci .s3 { padding: clamp(60px,7vw,96px) 0; }
.p-hci .s3 strong, .p-hci .s4 strong, .p-hci .s6 strong { font-weight: 500; color: var(--ink); }
.p-hci .s3 h2 { margin-bottom: clamp(28px,3.4vw,38px); }
.p-hci .s3-tracks { display: grid; grid-template-columns: 1.35fr .85fr; gap: 0; border-top: 1px solid var(--ink); }
.p-hci .s3-main { padding: clamp(26px,3vw,34px) clamp(30px,3.6vw,44px) clamp(26px,3vw,34px) 0; border-right: 1px solid var(--hair); }
.p-hci .s3-main p { margin: 0; font-size: clamp(19px,1.7vw,23px); font-weight: 500; letter-spacing: -.018em; line-height: 1.38; color: var(--ink); }
.p-hci .s3-alt { padding: clamp(26px,3vw,34px) 0 clamp(26px,3vw,34px) clamp(30px,3.6vw,44px); }
.p-hci .s3-alt p { margin: 0; font-size: clamp(15px,1.15vw,16.5px); line-height: 1.62; color: var(--ink-3); }
.p-hci .s3-close { border-top: 1px solid var(--accent); padding-top: clamp(24px,2.8vw,32px); margin-top: clamp(30px,3.4vw,40px); max-width: 72ch; }
.p-hci .s3-close p { margin: 0; font-size: clamp(16.5px,1.35vw,18.5px); line-height: 1.62; color: var(--ink-2); }
@media(max-width:940px){ .p-hci .s3-tracks {grid-template-columns:1fr} .p-hci .s3-main {border-right:0;border-bottom:1px solid var(--hair);padding:26px 0} .p-hci .s3-alt {padding:26px 0 0} }

/* ============ 04 LOCKED · independent columns ============ */
.p-hci .s4 { padding: clamp(60px,7vw,96px) 0; }
.p-hci .s4 h2 { margin-bottom: clamp(26px,3.2vw,36px); }
.p-hci .s4 ul { list-style: none; margin: 0; padding: 0; }
.p-hci .s4-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 0; border-top: 1px solid var(--ink); }
.p-hci .s4-col { padding: clamp(22px,2.6vw,30px) clamp(26px,3vw,40px) 0 0; border-right: 1px solid var(--hair); }
.p-hci .s4-col:last-child { border-right: 0; padding-right: 0; padding-left: clamp(26px,3vw,40px); }
.p-hci .s4-col .eyebrow { display: block; margin-bottom: 16px; }
.p-hci .s4-col li { padding: 13px 0; border-top: 1px solid var(--hair); font-size: 15.5px; line-height: 1.55; color: var(--ink-2); }
.p-hci .s4-col li:first-child { border-top: 0; padding-top: 0; }
.p-hci .s4-close { border-top: 1px solid var(--accent); margin-top: clamp(30px,3.4vw,42px); padding-top: clamp(22px,2.6vw,30px); max-width: 74ch; }
.p-hci .s4-close p { margin: 0; font-size: clamp(16px,1.3vw,18px); line-height: 1.62; color: var(--ink-2); }
@media(max-width:820px){ .p-hci .s4-cols {grid-template-columns:1fr} .p-hci .s4-col {border-right:0;padding-right:0} .p-hci .s4-col:last-child {padding-left:0;border-top:1px solid var(--hair-strong);margin-top:26px} }

/* ============ 05 LOCKED · horizontal sequence ============ */
.p-hci .s5 { padding: clamp(60px,7vw,96px) 0; }
.p-hci .s5 h2 { margin-bottom: clamp(26px,3.2vw,34px); }
.p-hci .s5-lede { margin: 0 0 clamp(28px,3.2vw,38px); font-size: clamp(17px,1.45vw,20px); line-height: 1.62; color: var(--ink-2); max-width: 74ch; }
.p-hci .s5-lead { margin: 0 0 20px; font-size: clamp(15.5px,1.2vw,17px); line-height: 1.6; color: var(--ink); font-weight: 500; }
.p-hci .s5-row { display: grid; grid-template-columns: repeat(3,1fr); border-top: 1px solid var(--ink); }
.p-hci .s5-cell { padding: clamp(22px,2.6vw,30px) clamp(22px,2.6vw,32px) clamp(22px,2.6vw,30px) 0; border-right: 1px solid var(--hair); }
.p-hci .s5-cell:last-child { border-right: 0; padding-right: 0; }
.p-hci .s5-cell + .s5-cell { padding-left: clamp(22px,2.6vw,32px); }
.p-hci .s5-cell .ix { display: block; font-family: var(--font-mono); font-size: 11px; letter-spacing: .18em; color: var(--accent); margin-bottom: 12px; }
.p-hci .s5-cell p { margin: 0; font-size: 15.5px; line-height: 1.55; color: var(--ink-2); }
.p-hci .s5-close { border-top: 1px solid var(--hair-strong); padding-top: clamp(20px,2.4vw,26px); }
.p-hci .s5-close p { margin: 0; font-size: clamp(15.5px,1.2vw,17px); line-height: 1.6; color: var(--ink-3); }
@media(max-width:820px){ .p-hci .s5-row {grid-template-columns:1fr} .p-hci .s5-cell {border-right:0;border-bottom:1px solid var(--hair);padding:20px 0} .p-hci .s5-cell:last-child {border-bottom:0} .p-hci .s5-cell + .s5-cell {padding-left:0} }

/* ============ 06 LOCKED · give / get split (was variant C) ============ */
.p-hci .s6 { padding: clamp(60px,7vw,96px) 0; }
.p-hci .s6 ul { list-style: none; margin: 0; padding: 0; }
.p-hci .s6 h2 { margin: 0 0 clamp(24px,2.8vw,32px); }
.p-hci .s6-grid { display: grid; grid-template-columns: 1fr .95fr; gap: clamp(32px,4vw,64px); align-items: start; }
.p-hci .s6-p1 { margin: 0 0 20px; font-size: clamp(18px,1.6vw,22px); font-weight: 500; letter-spacing: -.018em; line-height: 1.4; color: var(--ink); }
.p-hci .s6-p2 { margin: 0 0 clamp(22px,2.6vw,28px); font-size: clamp(15.5px,1.2vw,17px); line-height: 1.62; color: var(--ink-2); }
.p-hci .s6-act { display: flex; flex-direction: column; align-items: flex-start; gap: 12px; }
.p-hci .s6-note { font-size: 13px; line-height: 1.6; color: var(--ink-3); margin: 0; }
.p-hci .s6-obj { border: 1px solid var(--hair-strong); padding: clamp(24px,2.8vw,32px); position: relative; background: var(--bg); }
.p-hci .s6-obj::before, .p-hci .s6-obj::after { content:""; position:absolute; width:13px; height:13px; border:1px solid var(--accent); }
.p-hci .s6-obj::before { top:-1px; left:-1px; border-right:0; border-bottom:0; }
.p-hci .s6-obj::after { bottom:-1px; right:-1px; border-left:0; border-top:0; }
.p-hci .s6-obj li { padding: 12px 0; border-top: 1px solid var(--hair); font-size: 15.5px; line-height: 1.55; color: var(--ink-2); }
.p-hci .s6-obj li:first-child { border-top: 0; padding-top: 0; }
.p-hci .s6-p3 { margin: clamp(26px,3vw,34px) 0 0; padding-top: clamp(20px,2.4vw,26px); border-top: 1px solid var(--hair-strong); font-size: clamp(16px,1.3vw,18px); line-height: 1.55; color: var(--ink); font-weight: 500; }
@media(max-width:900px){ .p-hci .s6-grid {grid-template-columns:1fr;gap:30px} }

/* ============ 07 LOCKED · split-sentence schedule (was variant B) ============ */
.p-hci .s7 { padding: clamp(60px,7vw,96px) 0; }
.p-hci .s7 h2 { margin-bottom: clamp(26px,3.2vw,36px); }
.p-hci .s7 dl { margin: 0; border-top: 1px solid var(--ink); }
.p-hci .s7 ul { list-style: none; margin: 0; padding: 0; }
.p-hci .s7 dt { font-family: var(--font-mono); font-size: 11px; letter-spacing: .18em; text-transform: uppercase; color: var(--accent); padding-top: 3px; }
.p-hci .s7 dd { margin: 0; }
.p-hci .s7 .row { display: grid; grid-template-columns: 168px 1fr; gap: 0 clamp(24px,3vw,44px); padding: 20px 0; border-bottom: 1px solid var(--hair-strong); }
.p-hci .s7 dd li { padding: 7px 0; border-top: 1px solid var(--hair); font-size: 15.5px; line-height: 1.55; color: var(--ink-2); }
.p-hci .s7 dd li:first-child { border-top: 0; padding-top: 0; }
.p-hci .s7-close { border-top: 1px solid var(--accent); margin-top: clamp(28px,3.2vw,40px); padding-top: clamp(20px,2.4vw,28px); max-width: 76ch; }
.p-hci .s7-close p { margin: 0; font-size: clamp(16px,1.3vw,18px); line-height: 1.62; color: var(--ink-2); }
@media(max-width:700px){ .p-hci .s7 .row {grid-template-columns:1fr;gap:10px} }

/* ============ 08 LOCKED · lead-sentence emphasis (was variant C) ============ */
.p-hci .s8 { padding: clamp(60px,7vw,96px) 0; }
.p-hci .s8 h2 { margin-bottom: clamp(26px,3.2vw,36px); }
.p-hci .s8-block { border-top: 1px solid var(--hair-strong); padding: clamp(22px,2.6vw,30px) 0; max-width: 80ch; }
.p-hci .s8-block:first-of-type { border-top: 1px solid var(--ink); }
.p-hci .s8-lead { margin: 0 0 12px; font-size: clamp(18px,1.55vw,21px); font-weight: 500; letter-spacing: -.016em; line-height: 1.4; color: var(--ink); }
.p-hci .s8-rest { margin: 0; font-size: clamp(15.5px,1.25vw,17px); line-height: 1.64; color: var(--ink-2); }
.p-hci .s8-closer { border-top: 1px solid var(--accent); margin-top: clamp(28px,3.2vw,38px); padding-top: clamp(20px,2.4vw,26px); max-width: 74ch; }
.p-hci .s8-closer p { margin: 0; font-size: clamp(15.5px,1.2vw,17px); line-height: 1.62; color: var(--ink-3); }

/* ============ 09 LOCKED · comparison + tinted closing field (was variant D) ============ */
.p-hci .s9 { padding: clamp(60px,7vw,96px) 0; }
.p-hci .s9 h2 { margin-bottom: clamp(26px,3.2vw,36px); }
.p-hci .s9-opt-name { font-size: clamp(17px,1.45vw,19.5px); font-weight: 500; letter-spacing: -.016em; line-height: 1.35; color: var(--ink); margin: 0 0 12px; }
.p-hci .s9-opt-body { margin: 0; font-size: clamp(15.5px,1.25vw,16.8px); line-height: 1.64; color: var(--ink-2); }
.p-hci .s9-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 0; border-top: 1px solid var(--ink); }
.p-hci .s9-col { padding: clamp(24px,2.8vw,32px) clamp(28px,3.2vw,44px) clamp(24px,2.8vw,32px) 0; border-right: 1px solid var(--hair); }
.p-hci .s9-col:last-child { border-right: 0; padding-right: 0; padding-left: clamp(28px,3.2vw,44px); }
.p-hci .s9-field { background: var(--bg-soft); border-top: 1px solid var(--hair-strong); margin-top: clamp(26px,3vw,34px); padding: clamp(24px,2.8vw,32px) clamp(26px,3vw,36px); }
.p-hci .s9-shared { margin: 0; font-size: clamp(16px,1.3vw,18px); line-height: 1.6; color: var(--ink); font-weight: 500; }
.p-hci .s9-mixed { margin: 12px 0 0; font-size: clamp(15.5px,1.2vw,17px); line-height: 1.62; color: var(--ink-2); }
.p-hci .s9-act { margin-top: clamp(20px,2.4vw,26px); }
@media(max-width:860px){ .p-hci .s9-cols {grid-template-columns:1fr} .p-hci .s9-col {border-right:0;padding-right:0;border-bottom:1px solid var(--hair)} .p-hci .s9-col:last-child {padding-left:0;border-bottom:0} }

/* ============ 10 LOCKED · run-in labels (was variant A) ============ */
.p-hci .s10 { padding: clamp(60px,7vw,96px) 0; }
.p-hci .s10 h2 { margin-bottom: clamp(26px,3.2vw,36px); }
.p-hci .s10-body { border-top: 1px solid var(--ink); max-width: 82ch; }
.p-hci .s10-item { padding: clamp(18px,2.2vw,24px) 0; border-bottom: 1px solid var(--hair); }
.p-hci .s10-item h3 { display: inline; margin: 0; font-weight: 500; font-size: clamp(16px,1.3vw,17.5px); color: var(--accent); letter-spacing: -.005em; }
.p-hci .s10-item p { display: inline; margin: 0; font-size: clamp(16px,1.3vw,17.5px); line-height: 1.68; color: var(--ink-2); }

/* ============ 11 LOCKED · spine timeline (was variant B) ============ */
.p-hci .s11 { padding: clamp(60px,7vw,96px) 0; }
.p-hci .s11 h2 { margin-bottom: clamp(26px,3.2vw,36px); }
.p-hci .s11 ul { list-style: none; margin: 0; padding: 0; }
.p-hci .s11 h3 { font-weight: 500; }
.p-hci .s11-sub { margin: 14px 0 0; }
.p-hci .s11-sub li { padding: 7px 0; border-top: 1px solid var(--hair); font-size: 15px; line-height: 1.55; color: var(--ink-2); }
.p-hci .s11-spine { border-left: 1px solid var(--hair-strong); padding-left: 40px; margin-left: 6px; max-width: 82ch; }
.p-hci .s11-step { position: relative; padding: 0 0 clamp(24px,2.8vw,32px); }
.p-hci .s11-step:last-of-type { padding-bottom: clamp(10px,1.2vw,14px); }
.p-hci .s11-step::before { content: ""; position: absolute; left: -41px; top: 8px; width: 11px; height: 1px; background: var(--accent); }
.p-hci .s11-step .num { display: block; font-family: var(--font-mono); font-size: 11px; letter-spacing: .16em; color: var(--accent); margin-bottom: 6px; }
.p-hci .s11-step h3 { margin: 0 0 8px; font-size: clamp(16.5px,1.4vw,18.5px); color: var(--ink); }
.p-hci .s11-step p { margin: 0; font-size: clamp(15.5px,1.25vw,17px); line-height: 1.64; color: var(--ink-2); }
.p-hci .s11-need { border-top: 1px solid var(--accent); margin-top: clamp(26px,3vw,34px); padding-top: clamp(20px,2.4vw,26px); max-width: 70ch; }
.p-hci .s11-need-lead { margin: 0 0 14px; font-size: clamp(16px,1.3vw,18px); font-weight: 500; line-height: 1.5; color: var(--ink); }
.p-hci .s11-need li { padding: 11px 0; border-top: 1px solid var(--hair); font-size: 15.5px; line-height: 1.55; color: var(--ink-2); }
.p-hci .s11-need li:first-child { border-top: 0; padding-top: 0; }
@media(max-width:700px){ .p-hci .s11-spine {padding-left:24px;margin-left:2px} .p-hci .s11-step::before {left:-25px;width:8px} }

/* ============ 12 LOCKED · native accordion (was variant A) ============ */
.p-hci .s12 { padding: clamp(60px,7vw,96px) 0; }
.p-hci .s12 h2 { margin-bottom: clamp(26px,3.2vw,36px); }
.p-hci .s12 h3 { font-weight: 500; margin: 0; }
.p-hci .s12 p { margin: 0; color: var(--ink-2); }
.p-hci .s12-list { border-top: 1px solid var(--ink); max-width: 84ch; }
.p-hci .s12-item { border-bottom: 1px solid var(--hair); }
.p-hci .s12-item > summary { list-style: none; cursor: pointer; display: flex; align-items: flex-start; gap: 20px; padding: clamp(16px,2vw,21px) 0; }
.p-hci .s12-item > summary::-webkit-details-marker { display: none; }
.p-hci .s12-item summary h3 { flex: 1; font-size: clamp(16.5px,1.4vw,18.5px); line-height: 1.4; color: var(--ink); }
.p-hci .s12-item summary:hover h3 { color: var(--accent); }
.p-hci .s12-mark { position: relative; width: 13px; height: 13px; flex: 0 0 13px; margin-top: 6px; }
.p-hci .s12-mark::before, .p-hci .s12-mark::after { content: ""; position: absolute; background: var(--accent); }
.p-hci .s12-mark::before { left: 0; top: 6px; width: 13px; height: 1px; }
.p-hci .s12-mark::after { left: 6px; top: 0; width: 1px; height: 13px; }
.p-hci .s12-item[open] .s12-mark::after { display: none; }
.p-hci .s12-item > .ans { padding: 0 33px clamp(20px,2.4vw,26px) 0; }
.p-hci .s12-item > .ans p { font-size: clamp(15.5px,1.25vw,17px); line-height: 1.66; max-width: 76ch; }
.p-hci .s12-item > summary:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }

/* ============ LAYER BREAK — between the buying layer and the evaluation layer ============
   Label text comes from the canonical "Layer transition label" slot (D77). */
.p-hci .layer-break { display: flex; align-items: center; gap: clamp(16px,2vw,24px); margin: clamp(34px,4.5vw,64px) 0; }
.p-hci .layer-break-label { font-family: var(--font-mono); font-size: 11px; letter-spacing: .18em; text-transform: uppercase; color: var(--accent); white-space: nowrap; }
.p-hci .layer-break::after { content: ""; flex: 1; height: 1px; background: var(--accent); }

/* ============ 13 · close (was variant B) ============ */
.p-hci .s13 { padding: clamp(60px,7vw,96px) 0 clamp(74px,8vw,110px); }
.p-hci .s13 p { margin: 0; }
.p-hci .s13-body { border-top: 1px solid var(--accent); padding-top: clamp(24px,2.8vw,34px); max-width: 66ch; }
.p-hci .s13-ref { font-size: clamp(19px,1.75vw,25px); letter-spacing: -.018em; line-height: 1.36; color: var(--ink); font-weight: 500; }
.p-hci .s13-ask { margin-top: 16px; font-size: clamp(15.5px,1.25vw,17px); line-height: 1.62; color: var(--ink-2); }
.p-hci .s13-ask strong { font-weight: 500; color: var(--ink); }
.p-hci .s13-act { margin-top: clamp(22px,2.6vw,30px); }
.p-hci .s13-rel { margin-top: clamp(26px,3vw,36px); padding-top: clamp(18px,2.2vw,24px); border-top: 1px solid var(--hair); max-width: 84ch; font-size: 13px; line-height: 1.75; color: var(--ink-3); }
.p-hci .s13-rel a { color: var(--accent); text-decoration: underline; text-underline-offset: 2px; text-decoration-thickness: 1px; }
.p-hci .s13-rel a:hover { color: var(--accent-hover); }
/* ===== END PAGE 08 managed-hci-private-cloud ===== */

/* ===== BEGIN L2 HERO — cloud-infrastructure ===== */
/* Four generated names (ci-hx-6, ci-wy-5, ci-wy-6, ci-wy-8) carried this identical block,
   one use each. Merged and given a name. */
.ci-em { font-style:italic; color:var(--accent); }
/* Converted from inline styles. The CMS style-attribute filter drops clamp(),
   flex shorthand, text-wrap, custom properties and nested minmax(min()), and it
   reverses two-value gap — so every declaration lives here instead. */
.ci-hx-1 { padding:var(--pad-y) 0; }  /* data-screen-label="Hero */
.ci-hx-2 { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,440px),1fr)); gap:clamp(28px,3.2vw,52px); align-items:stretch; }  /* div */
.ci-hx-3 { display:flex; flex-direction:column; }  /* div */
.ci-hx-4 { display:block; color:var(--accent); margin-bottom:26px; }  /* span */
  /* h1 */
.ci-hx-7 { color:var(--ink-2); margin:0 0 32px; max-width:52ch; }  /* p */
.ci-hx-8 { display:flex; flex-wrap:wrap; gap:12px; margin-top:auto; padding-top:8px; }  /* div */
.ci-hx-9 { min-width:0; display:flex; }  /* div */
.ci-hx-10 { background:var(--bg); font-family:var(--font-body); color:var(--ink); padding:0; display:flex; justify-content:center; height:100%; }  /* data-mc-diagram=" */
.ci-hx-11 { width:100%; max-width:680px; display:flex; }  /* div */
.ci-hx-12 { width:100%; background:var(--bg); border:1px solid var(--hair-strong); overflow:hidden; display:flex; flex-direction:column; }  /* div */
.ci-hx-13 { padding:22px 20px 18px; }  /* div */
.ci-hx-14 { display:flex; justify-content:space-between; align-items:baseline; gap:20px; }  /* div */
.ci-hx-15 { font-family:var(--font-mono); font-size:13px; letter-spacing:.12em; text-transform:uppercase; color:var(--ink); }  /* span */
.ci-hx-16 { font-family:var(--font-mono); font-size:11px; letter-spacing:.16em; color:var(--ink-3); white-space:nowrap; }  /* span */
.ci-hx-17 { height:1px; background:var(--ink); margin-top:14px; }  /* div */
.ci-hx-18 { padding:0 20px; }  /* div */
.ci-hx-19 { display:flex; align-items:center; gap:16px; margin-bottom:16px; }  /* div */
.ci-hx-20 { font-family:var(--font-mono); font-size:11px; letter-spacing:.22em; text-transform:uppercase; color:var(--ink); flex:none; }  /* span */
.ci-hx-21 { flex:1; height:1px; background:var(--hair); }  /* span */
.ci-hx-22 { border:1px solid var(--hair-strong); display:grid; grid-template-columns:repeat(6, minmax(0, 1fr)); }  /* data-mc-grid=" */
.ci-hx-23 { border-bottom:1px solid var(--hair); border-right:1px solid var(--hair); grid-column:span 2; padding:14px; min-height:104px; display:flex; flex-direction:column; justify-content:space-between; gap:12px; }  /* data-mc-cell=" */
.ci-hx-24 { display:block; color:var(--ink); }  /* svg */
.ci-hx-25 { font-family:var(--font-mono); font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:var(--ink); }  /* span */
.ci-hx-26 { border-bottom:1px solid var(--hair); grid-column:span 2; padding:14px; min-height:104px; display:flex; flex-direction:column; justify-content:space-between; gap:12px; }  /* data-mc-cell=" */
.ci-hx-27 { border-bottom:1px solid var(--hair); border-right:1px solid var(--hair); grid-column:span 3; padding:14px; min-height:104px; display:flex; flex-direction:column; justify-content:space-between; gap:12px; }  /* data-mc-cell=" */
.ci-hx-28 { border-bottom:1px solid var(--hair); grid-column:span 3; padding:14px; min-height:104px; display:flex; flex-direction:column; justify-content:space-between; gap:12px; }  /* data-mc-cell=" */
.ci-hx-29 { grid-column:1 / -1; padding:13px 14px 15px; background:var(--bg-soft); display:flex; flex-wrap:wrap; align-items:center; gap:10px 16px; }  /* data-mc-locs=" */
.ci-hx-30 { font-family:var(--font-mono); font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:var(--ink-3); }  /* span */
.ci-hx-31 { display:flex; flex-wrap:wrap; gap:6px; }  /* div */
.ci-hx-32 { border:1px solid var(--hair-strong); background:var(--bg); padding:5px 7px; font-size:11px; font-weight:500; }  /* div */
.ci-hx-33 { border:1px solid var(--accent); background:var(--bg); padding:5px 7px; font-size:11px; font-weight:500; color:var(--accent); display:flex; align-items:center; gap:5px; }  /* div */
.ci-hx-34 { width:4px; height:11px; background:var(--accent); animation:mc-caret 1.1s step-end infinite; flex:none; }  /* span */
.ci-hx-35 { display:flex; justify-content:center; }  /* div */
.ci-hx-36 { width:1px; height:34px; background:var(--hair-strong); }  /* span */
.ci-hx-37 { position:relative; background-color:var(--bg); background-image:radial-gradient(var(--hair-strong) 1px, transparent 1px); background-size:15px 15px; border-top:1px solid var(--hair); padding:34px 0 22px 20px; flex:1; display:flex; flex-direction:column; }  /* data-mc-run=" */
.ci-hx-38 { position:absolute; left:50%; top:0; transform:translate(-50%, -50%); background:var(--ink); padding:10px 20px; display:flex; align-items:center; gap:12px; z-index:2; }  /* div */
.ci-hx-39 { width:8px; height:8px; background:var(--bg); }  /* span */
.ci-hx-40 { font-family:var(--font-mono); font-size:12px; letter-spacing:.28em; text-transform:uppercase; color:var(--bg); }  /* span */
.ci-hx-41 { display:flex; align-items:center; gap:14px; padding-right:20px; margin-bottom:18px; }  /* div */
.ci-hx-42 { flex:1; height:1px; background:var(--hair-strong); }  /* span */
.ci-hx-43 { width:7px; height:7px; background:var(--ink); animation:mc-pulse 2.2s ease-in-out infinite; flex:none; }  /* span */
.ci-hx-44 { font-family:var(--font-mono); font-size:11px; letter-spacing:.18em; text-transform:uppercase; color:var(--ink-2); flex:none; }  /* span */
.ci-hx-45 { display:flex; flex-direction:column; gap:14px; }  /* div */
.ci-hx-46 { overflow:hidden; }  /* div */
.ci-hx-47 { display:flex; align-items:center; gap:38px; width:max-content; white-space:nowrap; animation:mc-x 32s linear infinite; font-size:clamp(16px, 1.6vw, 19px); font-weight:500; letter-spacing:-.01em; color:var(--ink); }  /* div */
.ci-hx-48 { display:inline-flex; align-items:center; gap:38px; }  /* span */
.ci-hx-49 { width:4px; height:4px; background:var(--hair-strong); flex:none; }  /* i */
.ci-hx-50 { display:flex; align-items:center; gap:32px; width:max-content; white-space:nowrap; animation:mc-x 54s linear infinite; font-family:var(--font-mono); --mc-marq2:1; font-size:12px; letter-spacing:.16em; text-transform:uppercase; color:var(--ink-3); }  /* div */
.ci-hx-51 { display:inline-flex; align-items:center; gap:32px; }  /* span */

/* The public layout ships h1:not([class*=\"mc-\"]) { font-family: var(--font-sans) } in its
   mc-public cascade layer, and a direct declaration beats inheritance. Without this the
   hero heading falls back to the system sans stack. Measured on the live page. */
#top h1, #top h2, #top h3 { font-family: var(--font-head); }

/* --- responsive: added here because inline styles could not carry media queries --- */
/* Grid items default to min-width:auto, so cell content was holding the six columns
   open at 106px each. Letting them shrink is what makes the grid responsive at all. */
[data-mc-diagram], [data-mc-cell], [data-mc-locs] { min-width: 0; }
/* No overflow rule belongs on [data-mc-run]. The design clips its own marquee tracks one
   level in, with .ci-hx-46 { overflow: hidden }, and [data-mc-run] also hosts the INSTALL
   badge, which is absolutely positioned at top:0 with translate(-50%,-50%) so that it
   straddles the band edge. Clipping here cut the badge in half — measured at 18px of its
   39px height. Added 25 August, removed 28 August. Do not reintroduce it. */

@media (max-width: 1100px) {
  [data-mc-grid] { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  [data-mc-cell] { grid-column: span 1; }
}
@media (max-width: 620px) {
  [data-mc-grid] { grid-template-columns: 1fr; }
  [data-mc-cell] { grid-column: 1 / -1; }
}

/* Motion, from the design's own stylesheet. */
@keyframes mc-x { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@keyframes mc-pulse { 0%, 100% { opacity: 1; } 50% { opacity: .18; } }
@keyframes mc-caret { 0%, 48% { opacity: 1; } 49%, 100% { opacity: 0; } }
/* Inline styles cannot carry a media query, so these animations could not respect
   a reduced-motion preference until they moved out of the attribute. */
@media (prefers-reduced-motion: reduce) {
  [class*="ci-hx-"] { animation: none !important; }
}
/* ===== END L2 HERO — cloud-infrastructure ===== */

/* ===== BEGIN L2 HOW-WE-WORK — cloud-infrastructure ===== */
/* Converted from inline styles: the CMS style-attribute filter drops clamp(). */
.ci-w-1 { background:var(--ink); color:#fff; padding:var(--pad-y) 0; }  /* data-screen-label */
.ci-w-2 { display:block; color:rgba(255,255,255,.7); margin-bottom:24px; }  /* span */
.ci-w-3 { font-size:clamp(28px,3.1vw,42px); font-weight:500; letter-spacing:-.03em; line-height:1.1; margin:0 0 clamp(30px,3.4vw,44px); max-width:22ch; }  /* h2 */
.ci-w-4 { font-style:italic; color:#fff; }  /* em */
.ci-w-5 { border-top:1px solid rgba(255,255,255,.22); }  /* data-s2-cmp */
.ci-w-6 { display:grid; grid-template-columns:minmax(0,1fr) 1px minmax(0,1fr); border-bottom:1px solid rgba(255,255,255,.14); }  /* data-s2-pair */
.ci-w-7 { font-family:var(--font-mono); font-size:11px; letter-spacing:.16em; text-transform:uppercase; color:rgba(255,255,255,.9); padding:20px 32px 16px 0; animation:s2Fade 9s ease-in-out infinite; }  /* data-s2-anim */
.ci-w-8 { background:var(--accent); }  /* data-s2-div */
.ci-w-9 { font-family:var(--font-mono); font-size:11px; letter-spacing:.16em; text-transform:uppercase; color:rgba(255,255,255,.75); padding:20px 0 16px 32px; animation:s2FadeB 9s ease-in-out infinite; }  /* data-s2-anim */
.ci-w-10 { padding:15px 32px 17px 0; font-size:16.5px; line-height:1.5; color:#fff; }  /* div */
.ci-w-11 { padding:15px 0 17px 32px; font-size:16.5px; line-height:1.5; color:rgba(255,255,255,.8); }  /* data-s2-theirs */
.ci-w-12 { display:grid; grid-template-columns:minmax(0,1fr) 1px minmax(0,1fr); }  /* data-s2-pair */

/* Both declarations are load-bearing, and colour is the one that bites.
   The band paints itself dark and sets color:#fff on the section, but the public layout
   writes a colour DIRECTLY onto h2 in its mc-public cascade layer, and a direct declaration
   always beats inheritance. Measured on the live page before this rule existed: the heading
   rendered rgb(54,65,83) on rgb(10,10,10) — 1.92:1, against 3:1 required for large text.
   It went unnoticed because the design puts color:#fff on the <em>, so the last two words
   of the sentence stayed white while the rest did not.
   The retired .ci-hww h2 rule carried this same colour; it was removed as orphaned markup
   when the band was rebuilt, and the declaration has to move to the new selector with it. */
#how-we-work h2 { color: #fff; font-family: var(--font-head); }

/* --- responsive --- */
/* The grid is minmax(0,1fr) 1px minmax(0,1fr), so the columns already shrink correctly.
   What narrow widths need is a smaller gutter and step-down type, NOT a stack: stacking
   a comparison table separates each claim from the one it is being compared against,
   and the two column headers only govern the rows while the columns stay side by side. */
@media (max-width: 720px) {
  [data-s2-pair] > div:first-child { padding-right: 16px; }
  [data-s2-pair] > [data-s2-theirs] { padding-left: 16px; }
  [data-s2-pair] > div:not([data-s2-div]) { font-size: 15px; }
}
@media (max-width: 420px) {
  [data-s2-pair] > div:first-child { padding-right: 11px; }
  [data-s2-pair] > [data-s2-theirs] { padding-left: 11px; }
  [data-s2-pair] > div:not([data-s2-div]) { font-size: 13.5px; line-height: 1.45; }
}

/* Motion, verbatim from the design's own stylesheet. */
@keyframes s2Fade { 0%, 46% { opacity: 1; } 54%, 100% { opacity: .62; } }
@keyframes s2FadeB { 0%, 46% { opacity: .62; } 54%, 100% { opacity: 1; } }
/* Inline styles cannot carry a media query, so the alternating fade could not respect
   a reduced-motion preference until it moved out of the attribute. */
@media (prefers-reduced-motion: reduce) {
  [class*="ci-w-"] { animation: none !important; }
}
/* ===== END L2 HOW-WE-WORK — cloud-infrastructure ===== */

/* ===== BEGIN L2 WHICH-ONE — cloud-infrastructure ===== */
/* Converted from inline styles. The CMS style-attribute filter drops clamp(), flex:none,
   text-wrap and position:absolute outright, and takes half the var(--accent) declarations
   with them. Measured on the real sanitizer before this conversion was written. */
.ci-wy-1 { padding:var(--pad-y) 0; }  /* data-screen-label */
.ci-wy-2 { margin-bottom:clamp(34px,3.8vw,52px); }  /* div */
.ci-wy-3 { margin:0; max-width:22ch; font-size:clamp(30px,3.6vw,50px); font-weight:500; letter-spacing:-.03em; line-height:1.12; text-wrap:pretty; }  /* h2 */
.ci-wy-4 { color:var(--ink-3); font-weight:300; }  /* span */
.ci-wy-7 { color:var(--ink); }  /* span */
.ci-wy-10 { height:2px; background:var(--accent); margin-top:clamp(20px,2.2vw,30px); transform-origin:left; animation:wyRule 1.1s ease-out .9s both; }  /* data-wy-anim */
.ci-wy-11 { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,290px),1fr)); grid-template-rows:auto 1fr auto; gap:clamp(16px,1.8vw,24px); }  /* div */
.ci-wy-12 { display:grid; grid-row:span 3; grid-template-rows:subgrid; row-gap:0; border:1px solid var(--hair-strong); position:relative; transition:border-color .2s ease; }  /* data-wy-card */
.ci-wy-13 { position:absolute; top:-1px; left:-1px; width:13px; height:13px; border:1px solid var(--accent); border-right:0; border-bottom:0; }  /* span */
.ci-wy-14 { position:absolute; bottom:-1px; right:-1px; width:13px; height:13px; border:1px solid var(--accent); border-left:0; border-top:0; }  /* span */
.ci-wy-15 { padding:18px 22px; border-bottom:1px solid var(--hair-strong); background:var(--bg-soft); display:flex; gap:14px; align-items:baseline; }  /* div */
.ci-wy-16 { font-family:var(--font-mono); font-size:12px; letter-spacing:.16em; color:var(--accent); flex:none; }  /* span */
.ci-wy-17 { margin:0; font-size: var(--fs-card); font-weight:500; letter-spacing:-.02em; line-height:1.2; }  /* h3 */
.ci-wy-18 { padding:22px; }  /* div */
.ci-wy-19 { margin:0; font-size:15.5px; line-height:1.66; color:var(--ink-2); text-wrap:pretty; }  /* p */
.ci-wy-20 { padding:16px 22px 20px; border-top:1px solid var(--hair); }  /* div */
.ci-wy-21 { flex:none; }  /* svg */

/* From the design's own stylesheet. The sanitizer strips <style>, so they live here. */
[data-wy-card]:hover { border-color: var(--ink); }
[data-wy-cta] { text-decoration: none; display: inline-flex; align-items: center; gap: 10px; font-family: var(--font-mono); font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--accent); transition: gap .2s ease; }
[data-wy-cta]:hover { gap: 14px; color: var(--accent-hover); }

/* Motion, verbatim from the design's own stylesheet. */
@keyframes wyRule { 0% { transform: scaleX(0); } 100% { transform: scaleX(1); } }
@media (prefers-reduced-motion: reduce) {
  [data-wy-anim] { animation: none !important; background-size: 100% 100% !important; opacity: 1 !important; transform: none !important; }
}
/* ===== END L2 WHICH-ONE — cloud-infrastructure ===== */
#next-step .bf-final-cta svg { flex: none; }

/* ===== BEGIN L2 HERO FIGURE — managed-hci-private-cloud ===== */
/* The page now ships the CLIENT'S OWN design (D91). It is inline-styled, so this block only
   supplies what an inline style attribute cannot carry: rules the sanitizer refuses inside
   style="", and the [open] state the JS accordion used to provide. Everything else is the
   design's own bytes. */

/* 1. display:contents is refused inside a style attribute, so it moves here. These wrappers
      must stay transparent to layout or they introduce boxes the design does not expect. */
.p-hci .sc-host-x { display: contents; }

/* 2. background-image is refused inside a style attribute (gradients specifically). This is the
      hatch on the COMPUTE swatch in the diagram key. */
.p-hci .hci-hatch {
  background-image: repeating-linear-gradient(90deg, rgba(255,255,255,.18) 0 1px, transparent 1px 6px);
}

/* 3. The FAQ was a JS accordion (.bf-faq-item.open). The sanitizer strips <script>, so it became
      <details>. The site already styles .bf-faq-*; these rules re-point the open state at
      [open] and hide the native marker. */
.p-hci .bf-faq-d > summary.bf-faq-q { list-style: none; cursor: pointer; }
.p-hci .bf-faq-d > summary.bf-faq-q::-webkit-details-marker { display: none; }
.p-hci .bf-faq-d > summary.bf-faq-q::marker { content: ""; }
.p-hci .bf-faq-d[open] .bf-faq-q .icn { color: var(--accent); transform: rotate(45deg); }
.p-hci .bf-faq-d .bf-faq-a { grid-template-rows: 0fr; }
.p-hci .bf-faq-d[open] .bf-faq-a { grid-template-rows: 1fr; }
.p-hci .bf-faq-d[open] .bf-faq-a > div { padding-bottom: 28px; }

/* 4. The diagram carries a scale factor the design BAKED at render time (scale(.479412) against a
      652px column). There is no script here to recompute it, and CSS cannot derive a unitless
      ratio from a container width. Holding the frame at the width the factor assumes keeps the
      figure pixel-correct; below that it scrolls at full size rather than being clipped. */
.p-hci .mc-ha-frame { max-width: 652px; }
@media (max-width: 780px) {
  .p-hci .mc-ha-frame { max-width: none; height: auto !important; overflow-x: auto !important; overflow-y: hidden; }
  .p-hci .s1-ha-art { transform: none !important; }
}

/* ---- mobile layer -------------------------------------------------------------------------
   The design is authored for desktop and styled inline, so it carries no media queries of its
   own: measured at 375px it overflows to 793px, and the client asked for responsive widths in
   the same breath as "use this design". These are the minimum overrides that reconcile the two.
   They match the design's own inline declarations by attribute, so nothing else on the site can
   be hit, and !important is required only because the values being overridden are inline. */
@media (max-width: 860px) {
  /* Multi-column grids collapse to one column. Written as one general rule rather than a list of
     inline values: the enumerated version missed `0.8fr 1.2fr` on .contact-wrap, which held the
     enquiry form in a second column 224px wide inside a 327px container. The 12px track is the
     bullet marker column and must stay beside its text. */
  .p-hci [style*="grid-template-columns"]:not([style*="grid-template-columns: 12px"]) {
    grid-template-columns: minmax(0, 1fr) !important;
    gap: 24px !important;
  }
  /* wide desktop gutters between stacked blocks */
  .p-hci [style*="gap: 80px"], .p-hci [style*="gap: 72px"], .p-hci [style*="gap: 56px"] { gap: 24px !important; }
  /* the hero split and any other nowrap row */
  .p-hci [style*="display: flex"] { flex-wrap: wrap !important; }
  /* The location chips row ends with a `flex: 0 0 auto` caption ("or a combination") whose
     intrinsic 158px will not shrink into the 125px its wrapped parent gets at 375. Letting it
     shrink is the whole fix; min-width:0 is what actually permits a flex item to go below its
     content width. */
  .p-hci [style*="flex: 0 0 auto"] { flex-shrink: 1 !important; min-width: 0 !important; }

  /* nothing may set its own width wider than the screen */
  .p-hci [style*="width: 1360px"]:not(.s1-ha-art) { max-width: 100% !important; }
}

/* ---- Align the client design to the site container (D92) -----------------------------------
   The design bands are full-bleed with a flat 56px gutter and no max-width, while every other
   page uses .container = min(1560px, 100% - 48px). Measured at 1425px this page sat 64px narrower
   than /cloud-infrastructure; at 1985px it ran 313px wider, because the site caps at 1560 and the
   design never caps. The two crossed over around 1672px. Band 12 was also 32px out of line with
   bands 1-11, because it carries a .container of its own while the rest use the flat 56px.

   The background colour sits ON the padded element, so the element has to stay full width.
   Growing its horizontal padding rather than constraining its width keeps the black, red and
   off-white bands bleeding edge to edge while the content lands where .container puts it.

   100%, NOT 100vw: 100vw includes the scrollbar, which put the content 7px right of the site's
   own container and 15px narrower than 1560. Every element this is applied to is a direct child
   of a full-width band, so 100% is the body width — the same basis .container resolves against. */
@media all {
  .p-hci { --hci-gutter: max(24px, (100% - 1560px) / 2); }

  /* Bands 2-12. Anything already wrapping a .container is skipped: the contact section carries
     one, and padding it again would double the gutter. */
  .p-hci > div:not(:first-child) > *:not(:has(.container)) {
    padding-left: var(--hci-gutter) !important;
    padding-right: var(--hci-gutter) !important;
  }

  /* The hero is a two-column grid. The gutter goes on the GRID, not on the columns: a grid item's
     percentage padding resolves against its grid area, so 100% there would be the column width,
     not the page width. Moving the padding out means the black panel would stop bleeding off the
     left edge, so the bleed is repainted with a box-shadow, which costs no layout. */
  .p-hci > div:first-child > div {
    padding-left: var(--hci-gutter) !important;
    padding-right: var(--hci-gutter) !important;
  }
  .p-hci > div:first-child > div > div:first-child {
    padding-left: 0 !important;
    /* box-shadow bleed removed 9 Sep 2026 (D110): the hero panel is white and the shadow had zero spread, so it never painted anyway */
  }
  .p-hci > div:first-child > div > figure { padding-right: 0 !important; }
}

/* ===== END L2 HERO FIGURE — managed-hci-private-cloud ===== */

/* ---- Contact form success state (D93) ------------------------------------------------------
   Rendered by SiteJs when a page carries no [data-form-sent] slot of its own. Sized and coloured
   from the site tokens so it reads as part of whatever design it lands in. */
.cf-sent {
  font-family: var(--font-head, 'Roboto', sans-serif);
  font-size: 20px;
  line-height: 1.45;
  letter-spacing: -0.012em;
  color: var(--ink, #0a0a0a);
  background: var(--bg-soft, #fafafa);
  border-left: 3px solid var(--accent, #a70000);
  padding: 28px 32px;
  margin: 0;
}

/* ===== BEGIN PAGE 09 private-ai-gpu-cloud ===== */
/* Client design (D98) published under the site standards (D92 container, page-08 type scale,
   bf-faq accordion; re-measured 5 Sept against the three client-approved pages, D100: fluid hero
   like /sap-signavio-consulting, section H2 capped at page-08 44px, 96px band rhythm). Markup carries the design's inline styles; this block aligns the standards
   over them, so !important below is overriding inline values, nothing else on the site. */
.p-gpu { font-family: var(--font-head); color: var(--ink); background: #fff;
  --text-body: var(--ink-2); --text-muted: var(--ink-3); }
/* The site container (D92): min(1560px, 100% - 48px), and the page-08 band rhythm (110px). */
/* D103: the stylesheet has a global designtemplates rule, section { padding-block: var(--pad-y) },
   which the approved pages never meet (they do not use the section tag) but this markup does.
   It was silently adding 120px per side on top of the container rhythm, putting ~432px between
   sections where the approved pages carry 192 (measured on /sap-signavio-consulting: 96+96).
   Zeroing it makes the container padding the only vertical rhythm, as D100 intended. */
.p-gpu section { padding-top: 0 !important; padding-bottom: 0 !important; }
/* D103 addendum: the design wraps each band content in an unclassed div carrying its own
   inline vertical padding (72px bands, 96/80 hero) OUTSIDE the .container that now owns the
   rhythm, so the two stacked. Zeroed the same way: the container padding is the only rhythm. */
.p-gpu section > div[style*="padding: 72px 0"]:not(.container),
.p-gpu section > div[style*="padding: 96px 0"]:not(.container) { padding-top: 0 !important; padding-bottom: 0 !important; }

.p-gpu .container { width: 100% !important; max-width: min(1560px, calc(100% - 48px)) !important;
  margin-left: auto !important; margin-right: auto !important;
  padding-top: 96px !important; padding-bottom: 96px !important;
  padding-left: 0 !important; padding-right: 0 !important; }
/* Type standards, as page 08 ships them: H1 42, section H2 44. !important because the design's
   inline clamp() values are dropped by the style filter and must not leave the headings unsized. */
.p-gpu h1 { font-family: Roboto, var(--font-head), sans-serif; font-size: var(--fs-hero) !important;
  font-weight: 500; letter-spacing: -0.03em !important; line-height: 1.05 !important; }
.p-gpu .h-section { font-family: Roboto, var(--font-head), sans-serif; font-size: clamp(34px, 3vw, 44px) !important;
  font-weight: 500; letter-spacing: -0.032em; line-height: 1.06; }
.p-gpu h3 { font-family: var(--font-head); }
/* Design-system atoms the markup references but SiteCss did not define (verbatim from the
   design system's base.css, scoped). */
.p-gpu .eyebrow { font-family: var(--font-mono); font-size: 11px; letter-spacing: .16em;
  text-transform: uppercase; color: var(--ink-3); display: inline-flex; align-items: center; gap: 10px; }
.p-gpu .btn { display: inline-flex; align-items: center; gap: 10px; padding: 14px 22px;
  font-family: var(--font-head); font-size: 14px; font-weight: 500; letter-spacing: .01em;
  border: 1px solid transparent; border-radius: 0; text-decoration: none; line-height: 1;
  transition: background .2s ease, color .2s ease, border-color .2s ease; }
.p-gpu .btn-primary { background: var(--accent); color: #ffffff; border-color: var(--accent); }
.p-gpu .btn-primary:hover { background: #8a0000; border-color: #8a0000; }
.p-gpu .btn-primary:active { background: #6e0000; border-color: #6e0000; }
.p-gpu .btn-ghost { background: transparent; color: var(--ink); border-color: #8a8a8a; }
.p-gpu .btn-ghost:hover { border-color: var(--ink); }
.p-gpu .btn-ghost:active { background: var(--bg-soft); }
/* Restores the counterweight to .p-gpu .btn, which redeclares padding at (0,2,0)
   and therefore beats the global .btn-lg at (0,1,0). The .p-gpu .btn* block is a
   value-identical duplicate of the global button system (raw hex instead of tokens,
   --font-head instead of --font-body, both Roboto); merging the two is P9 work and
   has to carry the :active states across, which the global system lacks. */
.p-gpu .btn-lg { padding: 18px 28px; font-size: 15px; }
.p-gpu a { color: inherit; }
/* FAQ accordion mechanics — the site-wide bf-faq pattern's open/close rules are scoped to
   .p-hci where they were first shipped; these are the same rules for this page. */
.p-gpu .bf-faq-d > summary.bf-faq-q { list-style: none; cursor: pointer; }
.p-gpu .bf-faq-d > summary.bf-faq-q::-webkit-details-marker { display: none; }
.p-gpu .bf-faq-d > summary.bf-faq-q::marker { content: ""; }
.p-gpu .bf-faq-d[open] .bf-faq-q .icn { color: var(--accent); transform: rotate(45deg); }
.p-gpu .bf-faq-d .bf-faq-a { grid-template-rows: 0fr; }
.p-gpu .bf-faq-d[open] .bf-faq-a { grid-template-rows: 1fr; }
.p-gpu .bf-faq-d[open] .bf-faq-a > div { padding-bottom: 28px; }
/* ---------- Narrow viewports — the page-08 approach: general rules matched against the
   design's own inline declarations, additive only. ---------- */
@media (max-width: 860px) {
  /* Content grids collapse to one column; marker-column grids (a counter or label track
     beside its text) keep their track. */
  .p-gpu [style*="grid-template-columns"]:not([style*="grid-template-columns: 8px"]):not([style*="grid-template-columns: 32px"]):not([style*="grid-template-columns: 48px"]):not([style*="grid-template-columns: 56px 1fr 24px"]):not([style*="grid-template-columns: 64px"]):not([style*="grid-template-columns: auto"]) {
    grid-template-columns: minmax(0, 1fr) !important; gap: 28px !important; }
  /* Marker grids with two content tracks drop to marker + one column. */
  .p-gpu [style*="grid-template-columns: 56px 1fr 1.4fr"] { grid-template-columns: 56px 1fr !important; }
  .p-gpu [style*="grid-template-columns: 96px 1fr 1.6fr"] { grid-template-columns: 96px 1fr !important; }
  .p-gpu [style*="grid-template-columns: 60px 1.1fr 1.5fr"] { grid-template-columns: 60px 1fr !important; }
  .p-gpu [style*="grid-template-columns: 210px 1fr 1fr"] { grid-template-columns: 1fr !important; }
  .p-gpu [style*="display: flex"] { flex-wrap: wrap !important; }
}
@media (max-width: 1024px) {
  /* the Signavio page steps its band rhythm 96 to 72 at this width; same here */
  .p-gpu .container { padding-top: 72px !important; padding-bottom: 72px !important; }
}
@media (max-width: 700px) {
  /* Wide label tracks stack above their text. */
  .p-gpu [style*="grid-template-columns: 180px 1fr"] { grid-template-columns: 1fr !important; gap: 8px !important; }
  .p-gpu [style*="grid-template-columns: 200px 1fr"] { grid-template-columns: 1fr !important; gap: 8px !important; }
}

/* ---- Diagram animation (D101). The design bundle defined these @keyframes in a <style>
   block the sanitizer strips, so the inline animation properties on the hero diagram referenced
   names that existed nowhere and the diagram rendered static. The 241 keyframes the live markup
   actually references, extracted from the bundle verbatim; generated names, verified collision-free
   against this stylesheet. Names are lowercased to match the sanitizer, whose CSS serializer
   lowercases idents in style attributes (verified on the live markup). Reduced motion hides the overlay layer, as the bundle itself did. */
@media (prefers-reduced-motion: reduce) {
  .p-gpu .anim, .p-gpu .ov { animation: none !important; display: none; }
}
@keyframes o3af{0%{opacity:0}3.831%{opacity:0}3.947%{opacity:1}4.645%{opacity:1}4.994%{opacity:0}100%{opacity:0}}
@keyframes o14af{0%{opacity:0}12.797%{opacity:0}12.914%{opacity:1}13.611%{opacity:1}13.96%{opacity:0}100%{opacity:0}}
@keyframes o8af{0%{opacity:0}21.764%{opacity:0}21.881%{opacity:1}22.578%{opacity:1}22.927%{opacity:0}100%{opacity:0}}
@keyframes o21af{0%{opacity:0}30.731%{opacity:0}30.847%{opacity:1}31.545%{opacity:1}31.894%{opacity:0}100%{opacity:0}}
@keyframes o5af{0%{opacity:0}38.807%{opacity:0}38.923%{opacity:1}39.621%{opacity:1}39.97%{opacity:0}100%{opacity:0}}
@keyframes o17af{0%{opacity:0}48.664%{opacity:0}48.781%{opacity:1}49.478%{opacity:1}49.827%{opacity:0}100%{opacity:0}}
@keyframes o11af{0%{opacity:0}57.631%{opacity:0}57.747%{opacity:1}58.445%{opacity:1}58.794%{opacity:0}100%{opacity:0}}
@keyframes o0af{0%{opacity:0}66.182%{opacity:0}66.298%{opacity:1}66.996%{opacity:1}67.345%{opacity:0}100%{opacity:0}}
@keyframes o19af{0%{opacity:0}75.594%{opacity:0}75.711%{opacity:1}76.408%{opacity:1}76.757%{opacity:0}100%{opacity:0}}
@keyframes o9af{0%{opacity:0}85.006%{opacity:0}85.123%{opacity:1}85.82%{opacity:1}86.169%{opacity:0}100%{opacity:0}}
@keyframes o22af{0%{opacity:0}94.419%{opacity:0}94.535%{opacity:1}95.233%{opacity:1}95.581%{opacity:0}100%{opacity:0}}
@keyframes o18bf{0%{opacity:0}1.779%{opacity:0}1.886%{opacity:1}2.524%{opacity:1}2.843%{opacity:0}100%{opacity:0}}
@keyframes o6bf{0%{opacity:0}11.544%{opacity:0}11.65%{opacity:1}12.289%{opacity:1}12.608%{opacity:0}100%{opacity:0}}
@keyframes o22bf{0%{opacity:0}20.824%{opacity:0}20.93%{opacity:1}21.568%{opacity:1}21.888%{opacity:0}100%{opacity:0}}
@keyframes o9bf{0%{opacity:0}30.103%{opacity:0}30.21%{opacity:1}30.848%{opacity:1}31.167%{opacity:0}100%{opacity:0}}
@keyframes o2bf{0%{opacity:0}36.504%{opacity:0}36.61%{opacity:1}37.248%{opacity:1}37.568%{opacity:0}100%{opacity:0}}
@keyframes o15bf{0%{opacity:0}45.298%{opacity:0}45.404%{opacity:1}46.043%{opacity:1}46.362%{opacity:0}100%{opacity:0}}
@keyframes o20bf{0%{opacity:0}53.639%{opacity:0}53.746%{opacity:1}54.384%{opacity:1}54.703%{opacity:0}100%{opacity:0}}
@keyframes o4bf{0%{opacity:0}62.919%{opacity:0}63.025%{opacity:1}63.664%{opacity:1}63.983%{opacity:0}100%{opacity:0}}
@keyframes o13bf{0%{opacity:0}71.713%{opacity:0}71.82%{opacity:1}72.458%{opacity:1}72.777%{opacity:0}100%{opacity:0}}
@keyframes o7bf{0%{opacity:0}80.508%{opacity:0}80.614%{opacity:1}81.252%{opacity:1}81.571%{opacity:0}100%{opacity:0}}
@keyframes o10bf{0%{opacity:0}86.099%{opacity:0}86.206%{opacity:1}86.844%{opacity:1}87.163%{opacity:0}100%{opacity:0}}
@keyframes o16bf{0%{opacity:0}94.894%{opacity:0}95%{opacity:1}95.638%{opacity:1}95.957%{opacity:0}100%{opacity:0}}
@keyframes o12cf{0%{opacity:0}3.306%{opacity:0}3.4%{opacity:1}3.966%{opacity:1}4.249%{opacity:0}100%{opacity:0}}
@keyframes o4cf{0%{opacity:0}11.731%{opacity:0}11.825%{opacity:1}12.391%{opacity:1}12.674%{opacity:0}100%{opacity:0}}
@keyframes o19cf{0%{opacity:0}20.746%{opacity:0}20.84%{opacity:1}21.406%{opacity:1}21.689%{opacity:0}100%{opacity:0}}
@keyframes o7cf{0%{opacity:0}29.761%{opacity:0}29.855%{opacity:1}30.422%{opacity:1}30.705%{opacity:0}100%{opacity:0}}
@keyframes o23cf{0%{opacity:0}38.186%{opacity:0}38.28%{opacity:1}38.846%{opacity:1}39.129%{opacity:0}100%{opacity:0}}
@keyframes o1cf{0%{opacity:0}47.791%{opacity:0}47.886%{opacity:1}48.452%{opacity:1}48.735%{opacity:0}100%{opacity:0}}
@keyframes o16cf{0%{opacity:0}56.807%{opacity:0}56.901%{opacity:1}57.467%{opacity:1}57.75%{opacity:0}100%{opacity:0}}
@keyframes o10cf{0%{opacity:0}65.822%{opacity:0}65.916%{opacity:1}66.482%{opacity:1}66.765%{opacity:0}100%{opacity:0}}
@keyframes o5cf{0%{opacity:0}72.515%{opacity:0}72.609%{opacity:1}73.175%{opacity:1}73.458%{opacity:0}100%{opacity:0}}
@keyframes o20cf{0%{opacity:0}81.53%{opacity:0}81.624%{opacity:1}82.19%{opacity:1}82.473%{opacity:0}100%{opacity:0}}
@keyframes o14cf{0%{opacity:0}88.813%{opacity:0}88.908%{opacity:1}89.474%{opacity:1}89.757%{opacity:0}100%{opacity:0}}
@keyframes va{0%{opacity:1}3.831%{opacity:1}3.841%{opacity:0}9.412%{opacity:0}9.422%{opacity:1}12.797%{opacity:1}12.807%{opacity:0}18.379%{opacity:0}18.389%{opacity:1}21.764%{opacity:1}21.774%{opacity:0}27.346%{opacity:0}27.356%{opacity:1}30.731%{opacity:1}30.741%{opacity:0}36.312%{opacity:0}36.322%{opacity:1}38.807%{opacity:1}38.817%{opacity:0}44.388%{opacity:0}44.398%{opacity:1}48.664%{opacity:1}48.674%{opacity:0}54.246%{opacity:0}54.256%{opacity:1}57.631%{opacity:1}57.641%{opacity:0}63.213%{opacity:0}63.223%{opacity:1}66.182%{opacity:1}66.192%{opacity:0}71.764%{opacity:0}71.774%{opacity:1}75.594%{opacity:1}75.604%{opacity:0}81.176%{opacity:0}81.186%{opacity:1}85.006%{opacity:1}85.016%{opacity:0}90.588%{opacity:0}90.598%{opacity:1}94.419%{opacity:1}94.429%{opacity:0}100%{opacity:0}}
@keyframes vb{0%{opacity:1}1.779%{opacity:1}1.789%{opacity:0}6.886%{opacity:0}6.896%{opacity:1}11.544%{opacity:1}11.554%{opacity:0}16.65%{opacity:0}16.66%{opacity:1}20.824%{opacity:1}20.834%{opacity:0}25.93%{opacity:0}25.94%{opacity:1}30.103%{opacity:1}30.113%{opacity:0}35.21%{opacity:0}35.22%{opacity:1}36.504%{opacity:1}36.514%{opacity:0}41.61%{opacity:0}41.62%{opacity:1}45.298%{opacity:1}45.308%{opacity:0}50.404%{opacity:0}50.414%{opacity:1}53.639%{opacity:1}53.649%{opacity:0}58.746%{opacity:0}58.756%{opacity:1}62.919%{opacity:1}62.929%{opacity:0}68.025%{opacity:0}68.035%{opacity:1}71.713%{opacity:1}71.723%{opacity:0}76.82%{opacity:0}76.83%{opacity:1}80.508%{opacity:1}80.518%{opacity:0}85.614%{opacity:0}85.624%{opacity:1}86.099%{opacity:1}86.109%{opacity:0}91.206%{opacity:0}91.216%{opacity:1}94.894%{opacity:1}94.904%{opacity:0}100%{opacity:0}}
@keyframes vc{0%{opacity:1}3.306%{opacity:1}3.316%{opacity:0}7.834%{opacity:0}7.844%{opacity:1}11.731%{opacity:1}11.741%{opacity:0}16.259%{opacity:0}16.269%{opacity:1}20.746%{opacity:1}20.756%{opacity:0}25.274%{opacity:0}25.284%{opacity:1}29.761%{opacity:1}29.771%{opacity:0}34.289%{opacity:0}34.299%{opacity:1}38.186%{opacity:1}38.196%{opacity:0}42.714%{opacity:0}42.724%{opacity:1}47.791%{opacity:1}47.801%{opacity:0}52.32%{opacity:0}52.33%{opacity:1}56.807%{opacity:1}56.817%{opacity:0}61.335%{opacity:0}61.345%{opacity:1}65.822%{opacity:1}65.832%{opacity:0}70.35%{opacity:0}70.36%{opacity:1}72.515%{opacity:1}72.525%{opacity:0}77.043%{opacity:0}77.053%{opacity:1}81.53%{opacity:1}81.54%{opacity:0}86.058%{opacity:0}86.068%{opacity:1}88.813%{opacity:1}88.823%{opacity:0}93.342%{opacity:0}93.352%{opacity:1}99.245%{opacity:1}99.255%{opacity:0}100%{opacity:0}}
@keyframes o3al0{0%{opacity:0}4.296%{opacity:0}4.412%{opacity:1}5.11%{opacity:1}5.691%{opacity:0}100%{opacity:0}}
@keyframes o3al1{0%{opacity:0}4.994%{opacity:0}5.11%{opacity:1}5.808%{opacity:1}6.389%{opacity:0}100%{opacity:0}}
@keyframes o3al2{0%{opacity:0}5.691%{opacity:0}5.808%{opacity:1}6.505%{opacity:1}7.087%{opacity:0}100%{opacity:0}}
@keyframes o3al3{0%{opacity:0}6.389%{opacity:0}6.505%{opacity:1}7.203%{opacity:1}7.784%{opacity:0}100%{opacity:0}}
@keyframes o3al4{0%{opacity:0}7.087%{opacity:0}7.203%{opacity:1}7.901%{opacity:1}8.482%{opacity:0}100%{opacity:0}}
@keyframes o3al5{0%{opacity:0}7.784%{opacity:0}7.901%{opacity:1}8.598%{opacity:1}9.18%{opacity:0}100%{opacity:0}}
@keyframes o14al0{0%{opacity:0}13.263%{opacity:0}13.379%{opacity:1}14.077%{opacity:1}14.658%{opacity:0}100%{opacity:0}}
@keyframes o14al1{0%{opacity:0}13.96%{opacity:0}14.077%{opacity:1}14.774%{opacity:1}15.356%{opacity:0}100%{opacity:0}}
@keyframes o14al2{0%{opacity:0}14.658%{opacity:0}14.774%{opacity:1}15.472%{opacity:1}16.053%{opacity:0}100%{opacity:0}}
@keyframes o14al3{0%{opacity:0}15.356%{opacity:0}15.472%{opacity:1}16.17%{opacity:1}16.751%{opacity:0}100%{opacity:0}}
@keyframes o14al4{0%{opacity:0}16.053%{opacity:0}16.17%{opacity:1}16.867%{opacity:1}17.449%{opacity:0}100%{opacity:0}}
@keyframes o14al5{0%{opacity:0}16.751%{opacity:0}16.867%{opacity:1}17.565%{opacity:1}18.146%{opacity:0}100%{opacity:0}}
@keyframes o8al0{0%{opacity:0}22.229%{opacity:0}22.346%{opacity:1}23.043%{opacity:1}23.625%{opacity:0}100%{opacity:0}}
@keyframes o8al1{0%{opacity:0}22.927%{opacity:0}23.043%{opacity:1}23.741%{opacity:1}24.322%{opacity:0}100%{opacity:0}}
@keyframes o8al2{0%{opacity:0}23.625%{opacity:0}23.741%{opacity:1}24.439%{opacity:1}25.02%{opacity:0}100%{opacity:0}}
@keyframes o8al3{0%{opacity:0}24.322%{opacity:0}24.439%{opacity:1}25.136%{opacity:1}25.718%{opacity:0}100%{opacity:0}}
@keyframes o8al4{0%{opacity:0}25.02%{opacity:0}25.136%{opacity:1}25.834%{opacity:1}26.415%{opacity:0}100%{opacity:0}}
@keyframes o8al5{0%{opacity:0}25.718%{opacity:0}25.834%{opacity:1}26.532%{opacity:1}27.113%{opacity:0}100%{opacity:0}}
@keyframes o21al0{0%{opacity:0}31.196%{opacity:0}31.312%{opacity:1}32.01%{opacity:1}32.591%{opacity:0}100%{opacity:0}}
@keyframes o21al1{0%{opacity:0}31.894%{opacity:0}32.01%{opacity:1}32.708%{opacity:1}33.289%{opacity:0}100%{opacity:0}}
@keyframes o21al2{0%{opacity:0}32.591%{opacity:0}32.708%{opacity:1}33.405%{opacity:1}33.987%{opacity:0}100%{opacity:0}}
@keyframes o21al3{0%{opacity:0}33.289%{opacity:0}33.405%{opacity:1}34.103%{opacity:1}34.684%{opacity:0}100%{opacity:0}}
@keyframes o21al4{0%{opacity:0}33.987%{opacity:0}34.103%{opacity:1}34.801%{opacity:1}35.382%{opacity:0}100%{opacity:0}}
@keyframes o21al5{0%{opacity:0}34.684%{opacity:0}34.801%{opacity:1}35.498%{opacity:1}36.08%{opacity:0}100%{opacity:0}}
@keyframes o5al0{0%{opacity:0}39.272%{opacity:0}39.388%{opacity:1}40.086%{opacity:1}40.667%{opacity:0}100%{opacity:0}}
@keyframes o5al1{0%{opacity:0}39.97%{opacity:0}40.086%{opacity:1}40.784%{opacity:1}41.365%{opacity:0}100%{opacity:0}}
@keyframes o5al2{0%{opacity:0}40.667%{opacity:0}40.784%{opacity:1}41.481%{opacity:1}42.063%{opacity:0}100%{opacity:0}}
@keyframes o5al3{0%{opacity:0}41.365%{opacity:0}41.481%{opacity:1}42.179%{opacity:1}42.76%{opacity:0}100%{opacity:0}}
@keyframes o5al4{0%{opacity:0}42.063%{opacity:0}42.179%{opacity:1}42.877%{opacity:1}43.458%{opacity:0}100%{opacity:0}}
@keyframes o5al5{0%{opacity:0}42.76%{opacity:0}42.877%{opacity:1}43.574%{opacity:1}44.156%{opacity:0}100%{opacity:0}}
@keyframes o17al0{0%{opacity:0}49.13%{opacity:0}49.246%{opacity:1}49.943%{opacity:1}50.525%{opacity:0}100%{opacity:0}}
@keyframes o17al1{0%{opacity:0}49.827%{opacity:0}49.943%{opacity:1}50.641%{opacity:1}51.223%{opacity:0}100%{opacity:0}}
@keyframes o17al2{0%{opacity:0}50.525%{opacity:0}50.641%{opacity:1}51.339%{opacity:1}51.92%{opacity:0}100%{opacity:0}}
@keyframes o17al3{0%{opacity:0}51.223%{opacity:0}51.339%{opacity:1}52.036%{opacity:1}52.618%{opacity:0}100%{opacity:0}}
@keyframes o17al4{0%{opacity:0}51.92%{opacity:0}52.036%{opacity:1}52.734%{opacity:1}53.316%{opacity:0}100%{opacity:0}}
@keyframes o17al5{0%{opacity:0}52.618%{opacity:0}52.734%{opacity:1}53.432%{opacity:1}54.013%{opacity:0}100%{opacity:0}}
@keyframes o11al0{0%{opacity:0}58.096%{opacity:0}58.213%{opacity:1}58.91%{opacity:1}59.492%{opacity:0}100%{opacity:0}}
@keyframes o11al1{0%{opacity:0}58.794%{opacity:0}58.91%{opacity:1}59.608%{opacity:1}60.189%{opacity:0}100%{opacity:0}}
@keyframes o11al2{0%{opacity:0}59.492%{opacity:0}59.608%{opacity:1}60.306%{opacity:1}60.887%{opacity:0}100%{opacity:0}}
@keyframes o11al3{0%{opacity:0}60.189%{opacity:0}60.306%{opacity:1}61.003%{opacity:1}61.585%{opacity:0}100%{opacity:0}}
@keyframes o11al4{0%{opacity:0}60.887%{opacity:0}61.003%{opacity:1}61.701%{opacity:1}62.282%{opacity:0}100%{opacity:0}}
@keyframes o11al5{0%{opacity:0}61.585%{opacity:0}61.701%{opacity:1}62.399%{opacity:1}62.98%{opacity:0}100%{opacity:0}}
@keyframes o0al0{0%{opacity:0}66.647%{opacity:0}66.764%{opacity:1}67.461%{opacity:1}68.043%{opacity:0}100%{opacity:0}}
@keyframes o0al1{0%{opacity:0}67.345%{opacity:0}67.461%{opacity:1}68.159%{opacity:1}68.74%{opacity:0}100%{opacity:0}}
@keyframes o0al2{0%{opacity:0}68.043%{opacity:0}68.159%{opacity:1}68.857%{opacity:1}69.438%{opacity:0}100%{opacity:0}}
@keyframes o0al3{0%{opacity:0}68.74%{opacity:0}68.857%{opacity:1}69.554%{opacity:1}70.136%{opacity:0}100%{opacity:0}}
@keyframes o0al4{0%{opacity:0}69.438%{opacity:0}69.554%{opacity:1}70.252%{opacity:1}70.833%{opacity:0}100%{opacity:0}}
@keyframes o0al5{0%{opacity:0}70.136%{opacity:0}70.252%{opacity:1}70.95%{opacity:1}71.531%{opacity:0}100%{opacity:0}}
@keyframes o19al0{0%{opacity:0}76.059%{opacity:0}76.176%{opacity:1}76.873%{opacity:1}77.455%{opacity:0}100%{opacity:0}}
@keyframes o19al1{0%{opacity:0}76.757%{opacity:0}76.873%{opacity:1}77.571%{opacity:1}78.152%{opacity:0}100%{opacity:0}}
@keyframes o19al2{0%{opacity:0}77.455%{opacity:0}77.571%{opacity:1}78.269%{opacity:1}78.85%{opacity:0}100%{opacity:0}}
@keyframes o19al3{0%{opacity:0}78.152%{opacity:0}78.269%{opacity:1}78.966%{opacity:1}79.548%{opacity:0}100%{opacity:0}}
@keyframes o19al4{0%{opacity:0}78.85%{opacity:0}78.966%{opacity:1}79.664%{opacity:1}80.245%{opacity:0}100%{opacity:0}}
@keyframes o19al5{0%{opacity:0}79.548%{opacity:0}79.664%{opacity:1}80.362%{opacity:1}80.943%{opacity:0}100%{opacity:0}}
@keyframes o9al0{0%{opacity:0}85.472%{opacity:0}85.588%{opacity:1}86.286%{opacity:1}86.867%{opacity:0}100%{opacity:0}}
@keyframes o9al1{0%{opacity:0}86.169%{opacity:0}86.286%{opacity:1}86.983%{opacity:1}87.565%{opacity:0}100%{opacity:0}}
@keyframes o9al2{0%{opacity:0}86.867%{opacity:0}86.983%{opacity:1}87.681%{opacity:1}88.262%{opacity:0}100%{opacity:0}}
@keyframes o9al3{0%{opacity:0}87.565%{opacity:0}87.681%{opacity:1}88.379%{opacity:1}88.96%{opacity:0}100%{opacity:0}}
@keyframes o9al4{0%{opacity:0}88.262%{opacity:0}88.379%{opacity:1}89.076%{opacity:1}89.658%{opacity:0}100%{opacity:0}}
@keyframes o9al5{0%{opacity:0}88.96%{opacity:0}89.076%{opacity:1}89.774%{opacity:1}90.355%{opacity:0}100%{opacity:0}}
@keyframes o22al0{0%{opacity:0}94.884%{opacity:0}95%{opacity:1}95.698%{opacity:1}96.279%{opacity:0}100%{opacity:0}}
@keyframes o22al1{0%{opacity:0}95.581%{opacity:0}95.698%{opacity:1}96.395%{opacity:1}96.977%{opacity:0}100%{opacity:0}}
@keyframes o22al2{0%{opacity:0}96.279%{opacity:0}96.395%{opacity:1}97.093%{opacity:1}97.674%{opacity:0}100%{opacity:0}}
@keyframes o22al3{0%{opacity:0}96.977%{opacity:0}97.093%{opacity:1}97.791%{opacity:1}98.372%{opacity:0}100%{opacity:0}}
@keyframes o22al4{0%{opacity:0}97.674%{opacity:0}97.791%{opacity:1}98.488%{opacity:1}99.07%{opacity:0}100%{opacity:0}}
@keyframes o22al5{0%{opacity:0}98.372%{opacity:0}98.488%{opacity:1}99.186%{opacity:1}99.767%{opacity:0}100%{opacity:0}}
@keyframes o18bl0{0%{opacity:0}2.205%{opacity:0}2.311%{opacity:1}2.949%{opacity:1}3.481%{opacity:0}100%{opacity:0}}
@keyframes o18bl1{0%{opacity:0}2.843%{opacity:0}2.949%{opacity:1}3.588%{opacity:1}4.12%{opacity:0}100%{opacity:0}}
@keyframes o18bl2{0%{opacity:0}3.481%{opacity:0}3.588%{opacity:1}4.226%{opacity:1}4.758%{opacity:0}100%{opacity:0}}
@keyframes o18bl3{0%{opacity:0}4.12%{opacity:0}4.226%{opacity:1}4.864%{opacity:1}5.396%{opacity:0}100%{opacity:0}}
@keyframes o18bl4{0%{opacity:0}4.758%{opacity:0}4.864%{opacity:1}5.503%{opacity:1}6.035%{opacity:0}100%{opacity:0}}
@keyframes o18bl5{0%{opacity:0}5.396%{opacity:0}5.503%{opacity:1}6.141%{opacity:1}6.673%{opacity:0}100%{opacity:0}}
@keyframes o6bl0{0%{opacity:0}11.97%{opacity:0}12.076%{opacity:1}12.714%{opacity:1}13.246%{opacity:0}100%{opacity:0}}
@keyframes o6bl1{0%{opacity:0}12.608%{opacity:0}12.714%{opacity:1}13.353%{opacity:1}13.885%{opacity:0}100%{opacity:0}}
@keyframes o6bl2{0%{opacity:0}13.246%{opacity:0}13.353%{opacity:1}13.991%{opacity:1}14.523%{opacity:0}100%{opacity:0}}
@keyframes o6bl3{0%{opacity:0}13.885%{opacity:0}13.991%{opacity:1}14.629%{opacity:1}15.161%{opacity:0}100%{opacity:0}}
@keyframes o6bl4{0%{opacity:0}14.523%{opacity:0}14.629%{opacity:1}15.268%{opacity:1}15.799%{opacity:0}100%{opacity:0}}
@keyframes o6bl5{0%{opacity:0}15.161%{opacity:0}15.268%{opacity:1}15.906%{opacity:1}16.438%{opacity:0}100%{opacity:0}}
@keyframes o22bl0{0%{opacity:0}21.249%{opacity:0}21.356%{opacity:1}21.994%{opacity:1}22.526%{opacity:0}100%{opacity:0}}
@keyframes o22bl1{0%{opacity:0}21.888%{opacity:0}21.994%{opacity:1}22.632%{opacity:1}23.164%{opacity:0}100%{opacity:0}}
@keyframes o22bl2{0%{opacity:0}22.526%{opacity:0}22.632%{opacity:1}23.27%{opacity:1}23.802%{opacity:0}100%{opacity:0}}
@keyframes o22bl3{0%{opacity:0}23.164%{opacity:0}23.27%{opacity:1}23.909%{opacity:1}24.441%{opacity:0}100%{opacity:0}}
@keyframes o22bl4{0%{opacity:0}23.802%{opacity:0}23.909%{opacity:1}24.547%{opacity:1}25.079%{opacity:0}100%{opacity:0}}
@keyframes o22bl5{0%{opacity:0}24.441%{opacity:0}24.547%{opacity:1}25.185%{opacity:1}25.717%{opacity:0}100%{opacity:0}}
@keyframes o9bl0{0%{opacity:0}30.529%{opacity:0}30.635%{opacity:1}31.273%{opacity:1}31.805%{opacity:0}100%{opacity:0}}
@keyframes o9bl1{0%{opacity:0}31.167%{opacity:0}31.273%{opacity:1}31.912%{opacity:1}32.444%{opacity:0}100%{opacity:0}}
@keyframes o9bl2{0%{opacity:0}31.805%{opacity:0}31.912%{opacity:1}32.55%{opacity:1}33.082%{opacity:0}100%{opacity:0}}
@keyframes o9bl3{0%{opacity:0}32.444%{opacity:0}32.55%{opacity:1}33.188%{opacity:1}33.72%{opacity:0}100%{opacity:0}}
@keyframes o9bl4{0%{opacity:0}33.082%{opacity:0}33.188%{opacity:1}33.827%{opacity:1}34.359%{opacity:0}100%{opacity:0}}
@keyframes o9bl5{0%{opacity:0}33.72%{opacity:0}33.827%{opacity:1}34.465%{opacity:1}34.997%{opacity:0}100%{opacity:0}}
@keyframes o2bl0{0%{opacity:0}36.929%{opacity:0}37.036%{opacity:1}37.674%{opacity:1}38.206%{opacity:0}100%{opacity:0}}
@keyframes o2bl1{0%{opacity:0}37.568%{opacity:0}37.674%{opacity:1}38.312%{opacity:1}38.844%{opacity:0}100%{opacity:0}}
@keyframes o2bl2{0%{opacity:0}38.206%{opacity:0}38.312%{opacity:1}38.95%{opacity:1}39.482%{opacity:0}100%{opacity:0}}
@keyframes o2bl3{0%{opacity:0}38.844%{opacity:0}38.95%{opacity:1}39.589%{opacity:1}40.121%{opacity:0}100%{opacity:0}}
@keyframes o2bl4{0%{opacity:0}39.482%{opacity:0}39.589%{opacity:1}40.227%{opacity:1}40.759%{opacity:0}100%{opacity:0}}
@keyframes o2bl5{0%{opacity:0}40.121%{opacity:0}40.227%{opacity:1}40.865%{opacity:1}41.397%{opacity:0}100%{opacity:0}}
@keyframes o15bl0{0%{opacity:0}45.724%{opacity:0}45.83%{opacity:1}46.468%{opacity:1}47%{opacity:0}100%{opacity:0}}
@keyframes o15bl1{0%{opacity:0}46.362%{opacity:0}46.468%{opacity:1}47.107%{opacity:1}47.638%{opacity:0}100%{opacity:0}}
@keyframes o15bl2{0%{opacity:0}47%{opacity:0}47.107%{opacity:1}47.745%{opacity:1}48.277%{opacity:0}100%{opacity:0}}
@keyframes o15bl3{0%{opacity:0}47.638%{opacity:0}47.745%{opacity:1}48.383%{opacity:1}48.915%{opacity:0}100%{opacity:0}}
@keyframes o15bl4{0%{opacity:0}48.277%{opacity:0}48.383%{opacity:1}49.021%{opacity:1}49.553%{opacity:0}100%{opacity:0}}
@keyframes o15bl5{0%{opacity:0}48.915%{opacity:0}49.021%{opacity:1}49.66%{opacity:1}50.192%{opacity:0}100%{opacity:0}}
@keyframes o20bl0{0%{opacity:0}54.065%{opacity:0}54.171%{opacity:1}54.81%{opacity:1}55.342%{opacity:0}100%{opacity:0}}
@keyframes o20bl1{0%{opacity:0}54.703%{opacity:0}54.81%{opacity:1}55.448%{opacity:1}55.98%{opacity:0}100%{opacity:0}}
@keyframes o20bl2{0%{opacity:0}55.342%{opacity:0}55.448%{opacity:1}56.086%{opacity:1}56.618%{opacity:0}100%{opacity:0}}
@keyframes o20bl3{0%{opacity:0}55.98%{opacity:0}56.086%{opacity:1}56.725%{opacity:1}57.256%{opacity:0}100%{opacity:0}}
@keyframes o20bl4{0%{opacity:0}56.618%{opacity:0}56.725%{opacity:1}57.363%{opacity:1}57.895%{opacity:0}100%{opacity:0}}
@keyframes o20bl5{0%{opacity:0}57.256%{opacity:0}57.363%{opacity:1}58.001%{opacity:1}58.533%{opacity:0}100%{opacity:0}}
@keyframes o4bl0{0%{opacity:0}63.345%{opacity:0}63.451%{opacity:1}64.089%{opacity:1}64.621%{opacity:0}100%{opacity:0}}
@keyframes o4bl1{0%{opacity:0}63.983%{opacity:0}64.089%{opacity:1}64.728%{opacity:1}65.259%{opacity:0}100%{opacity:0}}
@keyframes o4bl2{0%{opacity:0}64.621%{opacity:0}64.728%{opacity:1}65.366%{opacity:1}65.898%{opacity:0}100%{opacity:0}}
@keyframes o4bl3{0%{opacity:0}65.259%{opacity:0}65.366%{opacity:1}66.004%{opacity:1}66.536%{opacity:0}100%{opacity:0}}
@keyframes o4bl4{0%{opacity:0}65.898%{opacity:0}66.004%{opacity:1}66.642%{opacity:1}67.174%{opacity:0}100%{opacity:0}}
@keyframes o4bl5{0%{opacity:0}66.536%{opacity:0}66.642%{opacity:1}67.281%{opacity:1}67.813%{opacity:0}100%{opacity:0}}
@keyframes o13bl0{0%{opacity:0}72.139%{opacity:0}72.245%{opacity:1}72.884%{opacity:1}73.415%{opacity:0}100%{opacity:0}}
@keyframes o13bl1{0%{opacity:0}72.777%{opacity:0}72.884%{opacity:1}73.522%{opacity:1}74.054%{opacity:0}100%{opacity:0}}
@keyframes o13bl2{0%{opacity:0}73.415%{opacity:0}73.522%{opacity:1}74.16%{opacity:1}74.692%{opacity:0}100%{opacity:0}}
@keyframes o13bl3{0%{opacity:0}74.054%{opacity:0}74.16%{opacity:1}74.798%{opacity:1}75.33%{opacity:0}100%{opacity:0}}
@keyframes o13bl4{0%{opacity:0}74.692%{opacity:0}74.798%{opacity:1}75.437%{opacity:1}75.969%{opacity:0}100%{opacity:0}}
@keyframes o13bl5{0%{opacity:0}75.33%{opacity:0}75.437%{opacity:1}76.075%{opacity:1}76.607%{opacity:0}100%{opacity:0}}
@keyframes o7bl0{0%{opacity:0}80.933%{opacity:0}81.04%{opacity:1}81.678%{opacity:1}82.21%{opacity:0}100%{opacity:0}}
@keyframes o7bl1{0%{opacity:0}81.571%{opacity:0}81.678%{opacity:1}82.316%{opacity:1}82.848%{opacity:0}100%{opacity:0}}
@keyframes o7bl2{0%{opacity:0}82.21%{opacity:0}82.316%{opacity:1}82.954%{opacity:1}83.486%{opacity:0}100%{opacity:0}}
@keyframes o7bl3{0%{opacity:0}82.848%{opacity:0}82.954%{opacity:1}83.593%{opacity:1}84.125%{opacity:0}100%{opacity:0}}
@keyframes o7bl4{0%{opacity:0}83.486%{opacity:0}83.593%{opacity:1}84.231%{opacity:1}84.763%{opacity:0}100%{opacity:0}}
@keyframes o7bl5{0%{opacity:0}84.125%{opacity:0}84.231%{opacity:1}84.869%{opacity:1}85.401%{opacity:0}100%{opacity:0}}
@keyframes o10bl0{0%{opacity:0}86.525%{opacity:0}86.631%{opacity:1}87.27%{opacity:1}87.801%{opacity:0}100%{opacity:0}}
@keyframes o10bl1{0%{opacity:0}87.163%{opacity:0}87.27%{opacity:1}87.908%{opacity:1}88.44%{opacity:0}100%{opacity:0}}
@keyframes o10bl2{0%{opacity:0}87.801%{opacity:0}87.908%{opacity:1}88.546%{opacity:1}89.078%{opacity:0}100%{opacity:0}}
@keyframes o10bl3{0%{opacity:0}88.44%{opacity:0}88.546%{opacity:1}89.184%{opacity:1}89.716%{opacity:0}100%{opacity:0}}
@keyframes o10bl4{0%{opacity:0}89.078%{opacity:0}89.184%{opacity:1}89.823%{opacity:1}90.355%{opacity:0}100%{opacity:0}}
@keyframes o10bl5{0%{opacity:0}89.716%{opacity:0}89.823%{opacity:1}90.461%{opacity:1}90.993%{opacity:0}100%{opacity:0}}
@keyframes o16bl0{0%{opacity:0}95.319%{opacity:0}95.426%{opacity:1}96.064%{opacity:1}96.596%{opacity:0}100%{opacity:0}}
@keyframes o16bl1{0%{opacity:0}95.957%{opacity:0}96.064%{opacity:1}96.702%{opacity:1}97.234%{opacity:0}100%{opacity:0}}
@keyframes o16bl2{0%{opacity:0}96.596%{opacity:0}96.702%{opacity:1}97.34%{opacity:1}97.872%{opacity:0}100%{opacity:0}}
@keyframes o16bl3{0%{opacity:0}97.234%{opacity:0}97.34%{opacity:1}97.979%{opacity:1}98.511%{opacity:0}100%{opacity:0}}
@keyframes o16bl4{0%{opacity:0}97.872%{opacity:0}97.979%{opacity:1}98.617%{opacity:1}99.149%{opacity:0}100%{opacity:0}}
@keyframes o16bl5{0%{opacity:0}98.511%{opacity:0}98.617%{opacity:1}99.255%{opacity:1}99.787%{opacity:0}100%{opacity:0}}
@keyframes o12cl0{0%{opacity:0}3.683%{opacity:0}3.778%{opacity:1}4.344%{opacity:1}4.816%{opacity:0}100%{opacity:0}}
@keyframes o12cl1{0%{opacity:0}4.249%{opacity:0}4.344%{opacity:1}4.91%{opacity:1}5.382%{opacity:0}100%{opacity:0}}
@keyframes o12cl2{0%{opacity:0}4.816%{opacity:0}4.91%{opacity:1}5.476%{opacity:1}5.948%{opacity:0}100%{opacity:0}}
@keyframes o12cl3{0%{opacity:0}5.382%{opacity:0}5.476%{opacity:1}6.042%{opacity:1}6.514%{opacity:0}100%{opacity:0}}
@keyframes o12cl4{0%{opacity:0}5.948%{opacity:0}6.042%{opacity:1}6.608%{opacity:1}7.08%{opacity:0}100%{opacity:0}}
@keyframes o12cl5{0%{opacity:0}6.514%{opacity:0}6.608%{opacity:1}7.174%{opacity:1}7.646%{opacity:0}100%{opacity:0}}
@keyframes o4cl0{0%{opacity:0}12.108%{opacity:0}12.203%{opacity:1}12.769%{opacity:1}13.24%{opacity:0}100%{opacity:0}}
@keyframes o4cl1{0%{opacity:0}12.674%{opacity:0}12.769%{opacity:1}13.335%{opacity:1}13.806%{opacity:0}100%{opacity:0}}
@keyframes o4cl2{0%{opacity:0}13.24%{opacity:0}13.335%{opacity:1}13.901%{opacity:1}14.372%{opacity:0}100%{opacity:0}}
@keyframes o4cl3{0%{opacity:0}13.806%{opacity:0}13.901%{opacity:1}14.467%{opacity:1}14.938%{opacity:0}100%{opacity:0}}
@keyframes o4cl4{0%{opacity:0}14.372%{opacity:0}14.467%{opacity:1}15.033%{opacity:1}15.504%{opacity:0}100%{opacity:0}}
@keyframes o4cl5{0%{opacity:0}14.938%{opacity:0}15.033%{opacity:1}15.599%{opacity:1}16.07%{opacity:0}100%{opacity:0}}
@keyframes o19cl0{0%{opacity:0}21.123%{opacity:0}21.218%{opacity:1}21.784%{opacity:1}22.255%{opacity:0}100%{opacity:0}}
@keyframes o19cl1{0%{opacity:0}21.689%{opacity:0}21.784%{opacity:1}22.35%{opacity:1}22.821%{opacity:0}100%{opacity:0}}
@keyframes o19cl2{0%{opacity:0}22.255%{opacity:0}22.35%{opacity:1}22.916%{opacity:1}23.388%{opacity:0}100%{opacity:0}}
@keyframes o19cl3{0%{opacity:0}22.821%{opacity:0}22.916%{opacity:1}23.482%{opacity:1}23.954%{opacity:0}100%{opacity:0}}
@keyframes o19cl4{0%{opacity:0}23.388%{opacity:0}23.482%{opacity:1}24.048%{opacity:1}24.52%{opacity:0}100%{opacity:0}}
@keyframes o19cl5{0%{opacity:0}23.954%{opacity:0}24.048%{opacity:1}24.614%{opacity:1}25.086%{opacity:0}100%{opacity:0}}
@keyframes o7cl0{0%{opacity:0}30.139%{opacity:0}30.233%{opacity:1}30.799%{opacity:1}31.271%{opacity:0}100%{opacity:0}}
@keyframes o7cl1{0%{opacity:0}30.705%{opacity:0}30.799%{opacity:1}31.365%{opacity:1}31.837%{opacity:0}100%{opacity:0}}
@keyframes o7cl2{0%{opacity:0}31.271%{opacity:0}31.365%{opacity:1}31.931%{opacity:1}32.403%{opacity:0}100%{opacity:0}}
@keyframes o7cl3{0%{opacity:0}31.837%{opacity:0}31.931%{opacity:1}32.497%{opacity:1}32.969%{opacity:0}100%{opacity:0}}
@keyframes o7cl4{0%{opacity:0}32.403%{opacity:0}32.497%{opacity:1}33.063%{opacity:1}33.535%{opacity:0}100%{opacity:0}}
@keyframes o7cl5{0%{opacity:0}32.969%{opacity:0}33.063%{opacity:1}33.629%{opacity:1}34.101%{opacity:0}100%{opacity:0}}
@keyframes o23cl0{0%{opacity:0}38.563%{opacity:0}38.658%{opacity:1}39.224%{opacity:1}39.695%{opacity:0}100%{opacity:0}}
@keyframes o23cl1{0%{opacity:0}39.129%{opacity:0}39.224%{opacity:1}39.79%{opacity:1}40.261%{opacity:0}100%{opacity:0}}
@keyframes o23cl2{0%{opacity:0}39.695%{opacity:0}39.79%{opacity:1}40.356%{opacity:1}40.827%{opacity:0}100%{opacity:0}}
@keyframes o23cl3{0%{opacity:0}40.261%{opacity:0}40.356%{opacity:1}40.922%{opacity:1}41.393%{opacity:0}100%{opacity:0}}
@keyframes o23cl4{0%{opacity:0}40.827%{opacity:0}40.922%{opacity:1}41.488%{opacity:1}41.96%{opacity:0}100%{opacity:0}}
@keyframes o23cl5{0%{opacity:0}41.393%{opacity:0}41.488%{opacity:1}42.054%{opacity:1}42.526%{opacity:0}100%{opacity:0}}
@keyframes o1cl0{0%{opacity:0}48.169%{opacity:0}48.263%{opacity:1}48.829%{opacity:1}49.301%{opacity:0}100%{opacity:0}}
@keyframes o1cl1{0%{opacity:0}48.735%{opacity:0}48.829%{opacity:1}49.395%{opacity:1}49.867%{opacity:0}100%{opacity:0}}
@keyframes o1cl2{0%{opacity:0}49.301%{opacity:0}49.395%{opacity:1}49.961%{opacity:1}50.433%{opacity:0}100%{opacity:0}}
@keyframes o1cl3{0%{opacity:0}49.867%{opacity:0}49.961%{opacity:1}50.527%{opacity:1}50.999%{opacity:0}100%{opacity:0}}
@keyframes o1cl4{0%{opacity:0}50.433%{opacity:0}50.527%{opacity:1}51.093%{opacity:1}51.565%{opacity:0}100%{opacity:0}}
@keyframes o1cl5{0%{opacity:0}50.999%{opacity:0}51.093%{opacity:1}51.659%{opacity:1}52.131%{opacity:0}100%{opacity:0}}
@keyframes o16cl0{0%{opacity:0}57.184%{opacity:0}57.278%{opacity:1}57.844%{opacity:1}58.316%{opacity:0}100%{opacity:0}}
@keyframes o16cl1{0%{opacity:0}57.75%{opacity:0}57.844%{opacity:1}58.41%{opacity:1}58.882%{opacity:0}100%{opacity:0}}
@keyframes o16cl2{0%{opacity:0}58.316%{opacity:0}58.41%{opacity:1}58.976%{opacity:1}59.448%{opacity:0}100%{opacity:0}}
@keyframes o16cl3{0%{opacity:0}58.882%{opacity:0}58.976%{opacity:1}59.542%{opacity:1}60.014%{opacity:0}100%{opacity:0}}
@keyframes o16cl4{0%{opacity:0}59.448%{opacity:0}59.542%{opacity:1}60.108%{opacity:1}60.58%{opacity:0}100%{opacity:0}}
@keyframes o16cl5{0%{opacity:0}60.014%{opacity:0}60.108%{opacity:1}60.674%{opacity:1}61.146%{opacity:0}100%{opacity:0}}
@keyframes o10cl0{0%{opacity:0}66.199%{opacity:0}66.293%{opacity:1}66.859%{opacity:1}67.331%{opacity:0}100%{opacity:0}}
@keyframes o10cl1{0%{opacity:0}66.765%{opacity:0}66.859%{opacity:1}67.425%{opacity:1}67.897%{opacity:0}100%{opacity:0}}
@keyframes o10cl2{0%{opacity:0}67.331%{opacity:0}67.425%{opacity:1}67.992%{opacity:1}68.463%{opacity:0}100%{opacity:0}}
@keyframes o10cl3{0%{opacity:0}67.897%{opacity:0}67.992%{opacity:1}68.558%{opacity:1}69.029%{opacity:0}100%{opacity:0}}
@keyframes o10cl4{0%{opacity:0}68.463%{opacity:0}68.558%{opacity:1}69.124%{opacity:1}69.595%{opacity:0}100%{opacity:0}}
@keyframes o10cl5{0%{opacity:0}69.029%{opacity:0}69.124%{opacity:1}69.69%{opacity:1}70.161%{opacity:0}100%{opacity:0}}
@keyframes o5cl0{0%{opacity:0}72.892%{opacity:0}72.986%{opacity:1}73.552%{opacity:1}74.024%{opacity:0}100%{opacity:0}}
@keyframes o5cl1{0%{opacity:0}73.458%{opacity:0}73.552%{opacity:1}74.118%{opacity:1}74.59%{opacity:0}100%{opacity:0}}
@keyframes o5cl2{0%{opacity:0}74.024%{opacity:0}74.118%{opacity:1}74.685%{opacity:1}75.156%{opacity:0}100%{opacity:0}}
@keyframes o5cl3{0%{opacity:0}74.59%{opacity:0}74.685%{opacity:1}75.251%{opacity:1}75.722%{opacity:0}100%{opacity:0}}
@keyframes o5cl4{0%{opacity:0}75.156%{opacity:0}75.251%{opacity:1}75.817%{opacity:1}76.288%{opacity:0}100%{opacity:0}}
@keyframes o5cl5{0%{opacity:0}75.722%{opacity:0}75.817%{opacity:1}76.383%{opacity:1}76.854%{opacity:0}100%{opacity:0}}
@keyframes o20cl0{0%{opacity:0}81.907%{opacity:0}82.002%{opacity:1}82.568%{opacity:1}83.039%{opacity:0}100%{opacity:0}}
@keyframes o20cl1{0%{opacity:0}82.473%{opacity:0}82.568%{opacity:1}83.134%{opacity:1}83.605%{opacity:0}100%{opacity:0}}
@keyframes o20cl2{0%{opacity:0}83.039%{opacity:0}83.134%{opacity:1}83.7%{opacity:1}84.171%{opacity:0}100%{opacity:0}}
@keyframes o20cl3{0%{opacity:0}83.605%{opacity:0}83.7%{opacity:1}84.266%{opacity:1}84.737%{opacity:0}100%{opacity:0}}
@keyframes o20cl4{0%{opacity:0}84.171%{opacity:0}84.266%{opacity:1}84.832%{opacity:1}85.303%{opacity:0}100%{opacity:0}}
@keyframes o20cl5{0%{opacity:0}84.737%{opacity:0}84.832%{opacity:1}85.398%{opacity:1}85.869%{opacity:0}100%{opacity:0}}
@keyframes o14cl0{0%{opacity:0}89.191%{opacity:0}89.285%{opacity:1}89.851%{opacity:1}90.323%{opacity:0}100%{opacity:0}}
@keyframes o14cl1{0%{opacity:0}89.757%{opacity:0}89.851%{opacity:1}90.417%{opacity:1}90.889%{opacity:0}100%{opacity:0}}
@keyframes o14cl2{0%{opacity:0}90.323%{opacity:0}90.417%{opacity:1}90.983%{opacity:1}91.455%{opacity:0}100%{opacity:0}}
@keyframes o14cl3{0%{opacity:0}90.889%{opacity:0}90.983%{opacity:1}91.549%{opacity:1}92.021%{opacity:0}100%{opacity:0}}
@keyframes o14cl4{0%{opacity:0}91.455%{opacity:0}91.549%{opacity:1}92.115%{opacity:1}92.587%{opacity:0}100%{opacity:0}}
@keyframes o14cl5{0%{opacity:0}92.021%{opacity:0}92.115%{opacity:1}92.681%{opacity:1}93.153%{opacity:0}100%{opacity:0}}

/* ---- D102: the three path-follower keyframes the D101 extraction missed (they sit second
   in comma-separated animation shorthands). Lowercased per G11. */
@keyframes ma{0%{transform:translate(287px,191px)}0.223%{transform:translate(287px,176px)}1.039%{transform:translate(232px,176px)}2.346%{transform:translate(232px,88px)}3.608%{transform:translate(147px,88px)}3.831%{transform:translate(147px,103px)}9.412%{transform:translate(147px,103px)}9.635%{transform:translate(147px,88px)}10.006%{transform:translate(122px,88px)}11.313%{transform:translate(122px,176px)}12.575%{transform:translate(207px,176px)}12.797%{transform:translate(207px,161px)}18.379%{transform:translate(207px,161px)}18.602%{transform:translate(207px,176px)}18.973%{transform:translate(232px,176px)}20.279%{transform:translate(232px,88px)}21.542%{transform:translate(317px,88px)}21.764%{transform:translate(317px,73px)}27.346%{transform:translate(317px,73px)}27.568%{transform:translate(317px,88px)}27.94%{transform:translate(342px,88px)}29.246%{transform:translate(342px,176px)}30.508%{transform:translate(257px,176px)}30.731%{transform:translate(257px,191px)}36.312%{transform:translate(257px,191px)}36.535%{transform:translate(257px,176px)}36.906%{transform:translate(232px,176px)}38.213%{transform:translate(232px,88px)}38.584%{transform:translate(207px,88px)}38.807%{transform:translate(207px,103px)}44.388%{transform:translate(207px,103px)}44.611%{transform:translate(207px,88px)}45.873%{transform:translate(122px,88px)}47.18%{transform:translate(122px,176px)}48.442%{transform:translate(207px,176px)}48.664%{transform:translate(207px,191px)}54.246%{transform:translate(207px,191px)}54.469%{transform:translate(207px,176px)}54.84%{transform:translate(232px,176px)}56.146%{transform:translate(232px,88px)}57.408%{transform:translate(317px,88px)}57.631%{transform:translate(317px,103px)}63.213%{transform:translate(317px,103px)}63.435%{transform:translate(317px,88px)}65.959%{transform:translate(147px,88px)}66.182%{transform:translate(147px,73px)}71.764%{transform:translate(147px,73px)}71.986%{transform:translate(147px,88px)}73.248%{transform:translate(232px,88px)}74.555%{transform:translate(232px,176px)}75.372%{transform:translate(287px,176px)}75.594%{transform:translate(287px,161px)}81.176%{transform:translate(287px,161px)}81.398%{transform:translate(287px,176px)}82.215%{transform:translate(342px,176px)}83.522%{transform:translate(342px,88px)}84.784%{transform:translate(257px,88px)}85.006%{transform:translate(257px,103px)}90.588%{transform:translate(257px,103px)}90.811%{transform:translate(257px,88px)}92.073%{transform:translate(342px,88px)}93.379%{transform:translate(342px,176px)}94.196%{transform:translate(287px,176px)}94.419%{transform:translate(287px,191px)}100%{transform:translate(287px,191px)}}
@keyframes mb{0%{transform:translate(177px,191px)}0.243%{transform:translate(177px,176px)}1.537%{transform:translate(257px,176px)}1.779%{transform:translate(257px,161px)}6.886%{transform:translate(257px,161px)}7.128%{transform:translate(257px,176px)}8.503%{transform:translate(342px,176px)}9.927%{transform:translate(342px,88px)}11.301%{transform:translate(257px,88px)}11.544%{transform:translate(257px,73px)}16.65%{transform:translate(257px,73px)}16.893%{transform:translate(257px,88px)}18.268%{transform:translate(342px,88px)}19.691%{transform:translate(342px,176px)}20.581%{transform:translate(287px,176px)}20.824%{transform:translate(287px,191px)}25.93%{transform:translate(287px,191px)}26.173%{transform:translate(287px,176px)}27.062%{transform:translate(342px,176px)}28.486%{transform:translate(342px,88px)}29.861%{transform:translate(257px,88px)}30.103%{transform:translate(257px,103px)}35.21%{transform:translate(257px,103px)}35.452%{transform:translate(257px,88px)}36.261%{transform:translate(207px,88px)}36.504%{transform:translate(207px,73px)}41.61%{transform:translate(207px,73px)}41.853%{transform:translate(207px,88px)}43.228%{transform:translate(122px,88px)}44.651%{transform:translate(122px,176px)}45.055%{transform:translate(147px,176px)}45.298%{transform:translate(147px,191px)}50.404%{transform:translate(147px,191px)}50.647%{transform:translate(147px,176px)}53.397%{transform:translate(317px,176px)}53.639%{transform:translate(317px,161px)}58.746%{transform:translate(317px,161px)}58.988%{transform:translate(317px,176px)}60.363%{transform:translate(232px,176px)}61.787%{transform:translate(232px,88px)}62.676%{transform:translate(177px,88px)}62.919%{transform:translate(177px,103px)}68.025%{transform:translate(177px,103px)}68.268%{transform:translate(177px,88px)}69.158%{transform:translate(122px,88px)}70.581%{transform:translate(122px,176px)}71.471%{transform:translate(177px,176px)}71.713%{transform:translate(177px,161px)}76.82%{transform:translate(177px,161px)}77.062%{transform:translate(177px,176px)}77.952%{transform:translate(232px,176px)}79.375%{transform:translate(232px,88px)}80.265%{transform:translate(287px,88px)}80.508%{transform:translate(287px,73px)}85.614%{transform:translate(287px,73px)}85.857%{transform:translate(287px,88px)}86.099%{transform:translate(287px,103px)}91.206%{transform:translate(287px,103px)}91.448%{transform:translate(287px,88px)}92.338%{transform:translate(232px,88px)}93.761%{transform:translate(232px,176px)}94.651%{transform:translate(177px,176px)}94.894%{transform:translate(177px,191px)}100%{transform:translate(177px,191px)}}
@keyframes mc{0%{transform:translate(-6px,176px)}3.011%{transform:translate(147px,176px)}3.306%{transform:translate(147px,161px)}7.834%{transform:translate(147px,161px)}8.13%{transform:translate(147px,176px)}8.622%{transform:translate(122px,176px)}10.353%{transform:translate(122px,88px)}11.436%{transform:translate(177px,88px)}11.731%{transform:translate(177px,103px)}16.259%{transform:translate(177px,103px)}16.554%{transform:translate(177px,88px)}17.637%{transform:translate(232px,88px)}19.368%{transform:translate(232px,176px)}20.451%{transform:translate(287px,176px)}20.746%{transform:translate(287px,161px)}25.274%{transform:translate(287px,161px)}25.569%{transform:translate(287px,176px)}26.652%{transform:translate(342px,176px)}28.384%{transform:translate(342px,88px)}29.466%{transform:translate(287px,88px)}29.761%{transform:translate(287px,73px)}34.289%{transform:translate(287px,73px)}34.585%{transform:translate(287px,88px)}35.667%{transform:translate(342px,88px)}37.399%{transform:translate(342px,176px)}37.891%{transform:translate(317px,176px)}38.186%{transform:translate(317px,191px)}42.714%{transform:translate(317px,191px)}43.009%{transform:translate(317px,176px)}44.682%{transform:translate(232px,176px)}46.414%{transform:translate(232px,88px)}47.496%{transform:translate(177px,88px)}47.791%{transform:translate(177px,73px)}52.32%{transform:translate(177px,73px)}52.615%{transform:translate(177px,88px)}53.697%{transform:translate(122px,88px)}55.429%{transform:translate(122px,176px)}56.511%{transform:translate(177px,176px)}56.807%{transform:translate(177px,191px)}61.335%{transform:translate(177px,191px)}61.63%{transform:translate(177px,176px)}62.712%{transform:translate(232px,176px)}64.444%{transform:translate(232px,88px)}65.527%{transform:translate(287px,88px)}65.822%{transform:translate(287px,103px)}70.35%{transform:translate(287px,103px)}70.645%{transform:translate(287px,88px)}72.22%{transform:translate(207px,88px)}72.515%{transform:translate(207px,103px)}77.043%{transform:translate(207px,103px)}77.338%{transform:translate(207px,88px)}77.83%{transform:translate(232px,88px)}79.562%{transform:translate(232px,176px)}81.235%{transform:translate(317px,176px)}81.53%{transform:translate(317px,161px)}86.058%{transform:translate(317px,161px)}86.353%{transform:translate(317px,176px)}88.518%{transform:translate(207px,176px)}88.813%{transform:translate(207px,161px)}93.342%{transform:translate(207px,161px)}93.637%{transform:translate(207px,176px)}100%{transform:translate(492px,176px)}}
/* ===== END PAGE 09 private-ai-gpu-cloud ===== */

/* ===== BEGIN PAGE 08 diagram animation (D102) ===== */
/* The live client-design markup has carried inline animation refs to these names since it
   shipped, and the names were defined only in designmockups (never published), so the rack
   LEDs, port lights and flow markers have been static in production. Names are already
   all-lowercase, so G11 does not bite. Sources: managed-hci-private-cloud/template.html and
   ha-cloud-diagram.html, verbatim. */
@keyframes mcled{0%,100%{opacity:.22}50%{opacity:1}}
@keyframes mcspin{100%{transform:rotate(360deg)}}
@keyframes mcportg{0%,46%{background:#c4c4c4}50%,60%{background:#17a34a}64%,100%{background:#c4c4c4}}
@keyframes mcporty{0%,30%{background:#c4c4c4}34%,44%{background:#d9a400}48%,100%{background:#c4c4c4}}
@keyframes mcdot{0%,100%{r:3.5;opacity:.55}50%{r:5;opacity:1}}
@keyframes mcflow{100%{stroke-dashoffset:-64}}
@keyframes mcflowrev{100%{stroke-dashoffset:64}}
@media (prefers-reduced-motion: reduce) {
  .p-hci [style*="animation"], .p-gpu [style*="animation"] { animation: none !important; }
}
/* ===== END PAGE 08 diagram animation (D102) ===== */

/* ===== BEGIN PAGE 10 devops-as-a-service ===== */
/* Client concept design (D107) published under the site standards measured in D100/D103:
   fluid hero H1, section H2 capped at 44, 96px band rhythm on the D92 container width, the
   bf-faq accordion, and the shared contact-form helpers. The concept authored its type and
   rhythm as cqw clamps in style attributes, which the sanitizer drops (G11 family), so the
   equivalents live here against injected dvo-* classes. Every rule is scoped .p-dvo. */
.p-dvo { font-family: Roboto, "Helvetica Neue", Arial, sans-serif; color: var(--ink); background: #fff; line-height: 1.5; }
.p-dvo section { padding-block: 0 !important; }            /* G12 guard */
.p-dvo h1 { font-size: var(--fs-hero) !important; line-height: 1.05 !important; letter-spacing: -0.03em; font-weight: 500; }
.p-dvo h2 { font-size: var(--fs-h2) !important; line-height: 1.06; letter-spacing: -0.03em; font-weight: 500; text-wrap: balance; }
.p-dvo #contact h2 { font-size: var(--fs-cta) !important; }
.p-dvo h3 { font-size: clamp(24px, 2.4vw, 32px); }
.p-dvo .dvo-lede { font-size: clamp(16px, 1.3vw, 18px); }
/* Band rhythm + the site container (D92): 96px vertical, content width min(1560px, 100% - 48px). */
.p-dvo .dvo-band { max-width: min(1560px, calc(100% - 48px)) !important; margin-inline: auto !important; padding: 96px 0 !important; }
.p-dvo .dvo-pad { padding: 40px; }
.p-dvo .dvo-gap { gap: 48px; }
.p-dvo .dvo-js-start { justify-self: start; }
/* The concept's responsive grids used min()/auto-fit values the style filter drops. */
.p-dvo .dvo-grid-120 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 120px), 1fr)); }
.p-dvo .dvo-grid-220 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); }
.p-dvo .dvo-grid-270 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 270px), 1fr)); }
.p-dvo .dvo-grid-400 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 400px), 1fr)); }
.p-dvo .dvo-grid-480 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 480px), 1fr)); }
/* FAQ accordion mechanics — the site-wide bf-faq open/close rules, scoped for this page. */
.p-dvo .bf-faq-d > summary.bf-faq-q { list-style: none; cursor: pointer; }
.p-dvo .bf-faq-d > summary.bf-faq-q::-webkit-details-marker { display: none; }
.p-dvo .bf-faq-d > summary.bf-faq-q::marker { content: ""; }
.p-dvo .bf-faq-d[open] .bf-faq-q .icn { color: var(--accent); transform: rotate(45deg); }
.p-dvo .bf-faq-d .bf-faq-a { grid-template-rows: 0fr; }
.p-dvo .bf-faq-d[open] .bf-faq-a { grid-template-rows: 1fr; }
.p-dvo .bf-faq-d[open] .bf-faq-a > div { padding-bottom: 28px; }
@media (max-width: 1024px) {
  .p-dvo .dvo-band { padding-top: 72px !important; padding-bottom: 72px !important; }
}
@media (max-width: 860px) {
  .p-dvo .dvo-gap { gap: 28px; }
  .p-dvo [style*="grid-template-columns: minmax(90px, 140px) 1fr"] { grid-template-columns: 1fr !important; gap: 8px !important; }
  .p-dvo [style*="display: flex"] { flex-wrap: wrap !important; }
}
@media (max-width: 700px) {
  .p-dvo .dvo-pad { padding: 24px; }
}
/* ===== END PAGE 10 devops-as-a-service ===== */

/* ===== BEGIN PAGE 18 sap-development-services ===== */
/* Client concept design (D111) published under the site standards measured in D100/D103, the
   page-10 (D107) pipeline: fluid hero H1, section H2 capped at 44, 96px band rhythm on the D92
   container, the page-08 contact-form pattern. The concept's cqw clamps and min() grid tracks are
   dropped by the style filter, so the equivalents live here against injected sdv-* classes.
   Every rule is scoped .p-sdv. No FAQ on this page, so no accordion rules. */
.p-sdv { font-family: Roboto, "Helvetica Neue", Arial, sans-serif; color: var(--ink); background: #fff; line-height: 1.5; }
.p-sdv section { padding-block: 0 !important; }            /* G12 guard */
.p-sdv h1 { font-size: var(--fs-hero) !important; line-height: 1.05 !important; letter-spacing: -0.03em; font-weight: 500; }
.p-sdv h2 { font-size: var(--fs-h2) !important; line-height: 1.06; letter-spacing: -0.03em; font-weight: 500; text-wrap: balance; }
.p-sdv .sdv-h2-xl { font-size: clamp(36px, 4.4vw, 64px) !important; }
.p-sdv .sdv-h2-xxl, .p-sdv #contact h2 { font-size: var(--fs-cta) !important; }
.p-sdv h3 { font-size: clamp(20px, 1.9vw, 26px); }
.p-sdv .sdv-h3-lg { font-size: clamp(24px, 2.4vw, 32px); }
.p-sdv .sdv-lede { font-size: clamp(16px, 1.3vw, 18px); }
.p-sdv .sdv-lede-lg { font-size: clamp(19px, 1.6vw, 24px); }
.p-sdv .sdv-micro { font-size: clamp(12px, 1vw, 14px); }
.p-sdv .sdv-fs-28 { font-size: clamp(22px, 2vw, 28px); }
.p-sdv .sdv-fs-56 { font-size: clamp(40px, 4vw, 56px); }
.p-sdv .sdv-band { max-width: min(1560px, calc(100% - 48px)) !important; margin-inline: auto !important; padding: 96px 0 !important; }
.p-sdv .sdv-pad { padding: 40px; }
.p-sdv .sdv-gap { gap: 48px; }
.p-sdv .sdv-js-start { justify-self: start; }
.p-sdv .sdv-grid-200 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px), 1fr)); }
.p-sdv .sdv-grid-240 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); }
.p-sdv .sdv-grid-270 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 270px), 1fr)); }
.p-sdv .sdv-grid-300 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); }
.p-sdv .sdv-grid-320 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); }
.p-sdv .sdv-grid-400 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 400px), 1fr)); }
@media (max-width: 1024px) {
  .p-sdv .sdv-band { padding-top: 72px !important; padding-bottom: 72px !important; }
}
@media (max-width: 860px) {
  .p-sdv .sdv-gap { gap: 28px; }
  .p-sdv [style*="display: flex"] { flex-wrap: wrap !important; }
}
@media (max-width: 700px) {
  .p-sdv .sdv-pad { padding: 24px; }
}
/* D116: typewriter effect on the hero accent line. CSS-only (no script ships through the
   sanitizer); keyframe names lowercase per G11; caret blinks forever, typing runs once. */
.p-sdv .sdv-type { display: inline-block; overflow: hidden; white-space: nowrap; vertical-align: bottom;
  max-width: 0; border-right: 0.06em solid #a70000; padding-right: 0.04em;
  animation: sdvtype 1.4s steps(9, end) 0.5s forwards, sdvcaret 1s step-end infinite; }
@keyframes sdvtype { to { max-width: 12ch; } }
@keyframes sdvcaret { 0%, 100% { border-right-color: #a70000; } 50% { border-right-color: transparent; } }
@media (prefers-reduced-motion: reduce) {
  .p-sdv .sdv-type { animation: none; max-width: none; border-right-color: transparent; }
}
/* D117: the RICEFW routing diagram replaces the D112 hub-and-spoke in the hero. Rebuilt from
   the client's ricefw-1c-routing-animated.svg as svg shapes + positioned HTML labels (the
   sanitizer strips svg text, G8). The delivered file's own aria text promises animated packets,
   and neither SMIL nor an svg style block survives publish, so the animation is authored here;
   keyframe names lowercase per G11. The fig takes its own full band row (flex-basis 100%), and
   the 1000px board scrolls sideways inside .sdv-fig when the container is narrower.
   D118: both title-strip strings and the bottom-left strip removed on the client's
   instruction; the board compacts to 1000x694.
   D122: the board sits BESIDE the hero text (client instruction), not on its own row: the
   1000x694 board scales to 0.8 (an 800x556 panel) so it fits the right column at 1440; below
   ~1310px container the hero's flex-wrap drops it to its own row, and below 800px the panel's
   own overflow-x scrolls the scaled board.
   D123: the scaled board is wrapped in .rw-frame (layout 800x556, overflow hidden) because
   scale() shrinks paint, not layout - without the frame the panel scrolled a 1000px ghost box
   and drew a horizontal scrollbar at desktop (client: the bar must not appear). The panel's
   height is now derived from the frame, so a mobile scrollbar adds its own height instead of
   eating the bottom strip. */
.p-sdv .sdv-fig { flex: 0 1 800px; max-width: 800px; align-self: center; }
.p-sdv .rw-frame { width: 800px; height: 556px; overflow: hidden; }
.p-sdv .rw-in { position: relative; width: 1000px; height: 694px; margin: 0; transform: scale(0.8); transform-origin: 0 0; }
.p-sdv .rw-svg { position: absolute; left: 0; top: 0; width: 1000px; height: 694px; display: block; }
.p-sdv .rw-l { position: absolute; margin: 0; font-family: "Roboto Mono", ui-monospace, monospace; font-size: 9.5px; line-height: 1; letter-spacing: 1px; font-weight: 400; white-space: nowrap; color: #6b6b6b; }
.p-sdv .rw-bt { font-size: 11px; letter-spacing: 1.2px; }
.p-sdv .rw-ch { font-size: 12px; letter-spacing: 2.5px; font-weight: 500; color: #0a0a0a; text-align: center; }
.p-sdv .rw-cc { text-align: center; line-height: 14px; }
.p-sdv .rw-letter { font-size: 26px; letter-spacing: 0; font-weight: 500; color: #a70000; }
.p-sdv .rw-name { font-family: Roboto, "Helvetica Neue", Arial, sans-serif; font-size: 16px; letter-spacing: -0.3px; font-weight: 500; color: #0a0a0a; }
.p-sdv .rw-loop { font-size: 10px; letter-spacing: 2px; text-align: center; }
.p-sdv .rw-vt { font-family: Roboto, "Helvetica Neue", Arial, sans-serif; font-size: 36px; line-height: 36px; letter-spacing: -1px; font-weight: 500; color: #ffffff; text-align: center; }
.p-sdv .rw-vs { font-size: 10.5px; line-height: 12px; letter-spacing: 2px; color: rgba(255, 255, 255, 0.75); text-align: center; }
.p-sdv .rw-rot { transform: rotate(-90deg); }
.p-sdv .rw-dash { stroke-dasharray: 6 6; }
.p-sdv .rw-pkt { opacity: 0; animation: rwtravel 3.6s linear infinite; }
.p-sdv .rw-fl { opacity: 0; animation: rwflash 3.6s linear infinite; }
.p-sdv .rw-d1 { animation-delay: 0.6s; }
.p-sdv .rw-d2 { animation-delay: 1.2s; }
.p-sdv .rw-d3 { animation-delay: 1.8s; }
.p-sdv .rw-d4 { animation-delay: 2.4s; }
.p-sdv .rw-d5 { animation-delay: 3s; }
@keyframes rwtravel { 0% { transform: translateX(0); opacity: 0; } 4%, 86% { opacity: 1; } 92%, 100% { transform: translateX(578px); opacity: 0; } }
@keyframes rwflash { 0%, 87% { opacity: 0; } 91% { opacity: 1; } 97%, 100% { opacity: 0; } }
@media (prefers-reduced-motion: reduce) {
  .p-sdv .rw-pkt, .p-sdv .rw-fl { animation: none; }
}
/* ===== END PAGE 18 sap-development-services ===== */

/* ============================================================
   MCS — the MinimalCode public component system
   Added 19.09.2026. Spec: docs/superpowers/specs/2026-09-18-minimalcode-
   design-standardization-design.md

   Values are taken verbatim from the .mc-sig block, which is the owner-chosen
   baseline. This layer is UNSCOPED and sits at the end of the stylesheet, so it
   beats the older per-page blocks (bf-*, p-*, ci-*, dc-*) at equal specificity
   as their pages migrate onto it. Those blocks are deleted in P12, once their
   last consumer is gone.

   Constraints held throughout, inherited from mc-sig: radius 0, no shadows, no
   gradients, hairline borders, mono uppercase eyebrows, Roboto / Roboto Mono
   only, one accent per surface.

   The prefix is mcs-, not mc-. app.css treats `mc-` specially
   (h1:not([class*='mc-']) and friends) and public-site-design calls an mc-
   class in public markup a bug, while this repo already ships mc-crumb/mc-sig/
   mc-cols. That contradiction is recorded in the spec, not resolved here; this
   layer stays outside it. The guard is irrelevant either way: tenant SiteCss is
   unlayered and therefore beats @layer mc-public whatever the specificity.
   ============================================================ */

/* ---------- Bands: the vertical rhythm ---------------------------------- */
.mcs-band { padding: var(--pad-y) 0; border-bottom: 1px solid var(--hair); }
.mcs-band-soft { background: var(--bg-soft); }
/* A statement band stands alone: it drops its own rule and the one above it. */
.mcs-band-bare,
.mcs-band:has(+ .mcs-band-bare) { border-bottom: 0; }

/* ---------- Headings ---------------------------------------------------- */
.mcs-h1 {
  font-family: var(--font-head); font-weight: 500;
  font-size: var(--fs-hero); line-height: 1.05; letter-spacing: -.03em;
  color: var(--ink); margin: 0 0 26px; max-width: 18ch;
overflow-wrap: break-word; }
.mcs-h2 {
  font-family: var(--font-head); font-weight: 500;
  font-size: var(--fs-h2); line-height: 1.1; letter-spacing: -.02em;
  color: var(--ink); margin: 0 0 44px;
}
.mcs-h3 {
  font-family: var(--font-head); font-weight: 500;
  font-size: var(--fs-h3); line-height: 1.15; letter-spacing: -.015em;
  color: var(--ink); margin: 0 0 14px;
}
/* Emphasis inside a heading is the accent, never italic. */
.mcs-h1 em, .mcs-h2 em, .mcs-h3 em { font-style: normal; color: var(--accent); }

.mcs-lede {
  font-size: clamp(15px, 1.1vw, 18px); line-height: 1.55;
  color: var(--ink-3); max-width: 62ch; margin: 0;
}
/* The hero paragraph is deliberately stronger than the general lede: larger, and in --ink-2
   rather than --ink-3. Standardising it down to .mcs-lede was proposed and declined.
   Owner ruling, 22.09.2026. */
.mcs-lede-hero {
  font-family: var(--font-head);
  font-size: clamp(17px, 1.25vw, 19px);
  line-height: 1.55;
  color: var(--ink-2);
  max-width: 540px;
  font-weight: 400;
}

/* ---------- Eyebrow ----------------------------------------------------- */
.mcs-eyebrow {
  display: flex; align-items: center; gap: 10px;
  font-family: var(--font-mono); font-size: var(--fs-micro); letter-spacing: .16em;
  text-transform: uppercase; color: var(--ink-3); margin-bottom: 20px;
}
.mcs-eyebrow::before {
  content: ''; width: 8px; height: 8px; background: var(--accent); flex: 0 0 auto;
}
.mcs-eyebrow-plain { display: block; margin-bottom: 34px; }
.mcs-eyebrow-plain::before { display: none; }

/* A numbered section label — a red index, a hairline rule, then the title. It takes the
   eyebrow's type and drops the square: the number is already the mark, and two red marks
   side by side read as a mistake. The index is content (01/02/03 place a page within its
   product family), which is why it survives the migration. Owner ruling, 22.09.2026. */
.mcs-eyebrow-num::before { display: none; }
.mcs-eyebrow-num .num { color: var(--accent); font-weight: 500; }
.mcs-eyebrow-num .bar { height: 1px; flex: 1; background: var(--hair-strong); }

/* ---------- Breadcrumb -------------------------------------------------- */
/* The <nav> is the band; .container rides on the crumb itself, because the
   platform .container ships `padding: 0 !important` here and padding put on it
   is discarded. */
.mcs-crumb-band { background: var(--bg); padding: 18px 0; }
.mcs-crumb {
  display: flex; flex-wrap: wrap; gap: 10px; align-items: center;
  font-family: var(--font-mono); font-size: var(--fs-micro); letter-spacing: .14em; line-height: 1.55;
  text-transform: uppercase; color: var(--ink-3); margin-bottom: 0;
}
.mcs-crumb a { color: var(--ink-3); text-decoration: none; }
.mcs-crumb a:hover { color: var(--accent); }
.mcs-crumb .sep { color: var(--ink-3); }
.mcs-crumb .here { color: var(--ink); }

/* ---------- Buttons and text CTAs --------------------------------------- */
.mcs-btn {
  display: inline-flex; align-items: center; gap: 12px; padding: 15px 24px;
  background: var(--accent); color: var(--accent-ink);
  font-family: var(--font-head); font-weight: 500; font-size: 15px;
  border: 0; border-radius: 0; text-decoration: none;
  cursor: pointer; transition: background .2s ease, border-color .2s ease;
}
.mcs-btn:hover { background: #8a0000; }
.mcs-btn:active { background: #6e0000; }
.mcs-btn svg { width: 16px; height: 16px; flex: 0 0 auto; }
/* Secondary, on a light surface. */
.mcs-btn-ghost {
  background: transparent; color: var(--ink); border: 1px solid var(--border-control);
}
.mcs-btn-ghost:hover { background: transparent; border-color: var(--ink); color: var(--ink); }
/* Inverted, for use inside .mcs-contact and other accent-filled bands. */
.mcs-btn-on-accent {
  background: var(--accent-ink); color: var(--accent); border: 1px solid var(--accent-ink);
}
.mcs-btn-on-accent:hover { background: var(--accent-ink); color: #8a0000; border-color: var(--accent-ink); }

.mcs-link {
  display: inline-block; font-family: var(--font-mono); font-size: 12px;
  letter-spacing: .16em; text-transform: uppercase; color: var(--ink);
  border-bottom: 1px solid var(--hair-strong); padding-bottom: 4px;
  text-decoration: none; transition: color .2s ease, border-color .2s ease;
}
.mcs-link:hover { color: var(--accent); border-color: var(--accent); }

/* ---------- Statement --------------------------------------------------- */
/* Fluid type lives here and not in a style attribute: the sanitizer parses
   style property by property and drops any value it cannot evaluate, so a
   clamp() in an attribute vanishes silently and the text falls back to 16px. */
.mcs-statement { text-align: center; }
.mcs-statement-h {
  font-family: var(--font-head); font-weight: 500;
  font-size: clamp(30px, 3vw, 48px); line-height: 1.22; letter-spacing: -.02em;
  color: var(--ink); max-width: 24ch; margin: 0 auto 36px;
}
.mcs-statement-lede {
  font-size: 17px; line-height: 1.65; color: var(--ink-2);
  max-width: 64ch; margin: 0 auto 30px;
}
.mcs-mark { background: rgba(167, 0, 0, .12); padding: 0 8px; }

/* ---------- Contact band ------------------------------------------------ */
.mcs-contact { background: var(--accent); padding: var(--pad-y) 0; border-bottom: 0; }
.mcs-contact-head {
  display: grid; grid-template-columns: 1.05fr .95fr;
  column-gap: 56px;
  margin-bottom: 44px;
}
.mcs-contact-head .mcs-eyebrow {
  grid-column: 1 / -1; color: rgba(255, 255, 255, .75); margin-bottom: 20px;
}
.mcs-contact-head .mcs-eyebrow::before { background: var(--accent-ink); }
.mcs-contact-head .mcs-h2 {
  grid-column: 1 / -1; font-size: var(--fs-cta);
  color: var(--accent-ink); margin: 0;
}
.mcs-contact-head .mcs-lede {
  grid-column: 1 / -1; font-size: 17px; line-height: 1.65;
  color: rgba(255, 255, 255, .88); margin: 16px 0 0;
}

/* ---------- Contact form ------------------------------------------------
   .cform / .field already carry the field styling and are unchanged. This
   only places the card and splits it into two columns.
   row-gap and column-gap are written separately on purpose: the sanitizer
   used to swap the two values of a shorthand `gap` on every write.
   ---------------------------------------------------------------------- */
.mcs-form {
  background: var(--bg); border: 1px solid var(--hair); padding: 40px;
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr);
  column-gap: 64px; row-gap: 28px;
}
/* The column wrappers look redundant and are not: they give the two columns
   independent heights, which a plain grid cannot. Removing them collapses the
   form back into one flow. */
.mcs-form-col {
  background: transparent; border: 0; padding: 0;
  display: grid; row-gap: 10px; align-content: start;
}
.mcs-form-intro { font-size: 14.5px; line-height: 1.6; color: var(--ink-3); margin: 0 0 18px; }
.mcs-form-lab {
  font-family: var(--font-mono); font-size: 11px; letter-spacing: .14em;
  text-transform: uppercase; color: var(--accent); margin-bottom: 18px;
}
.mcs-form-aside { font-size: 13.5px; line-height: 1.6; color: var(--ink-3); margin: 14px 0 0; }

/* ---------- Field corrections ------------------------------------------
   Two visible mismatches, not preferences: select rendered 46px against a 49px
   input, and radius 0 against the inputs' 4px. And .field label's 600 weight was
   never in this stylesheet - it leaked from label:not([class*='mc-']) in
   app.css. It is stated here so it cannot move when app.css changes.
   ---------------------------------------------------------------------- */
.field select { padding: 12px 14px; border-radius: 4px; height: auto; line-height: 1.5; }
.field label { font-weight: 600; }

/* ---------- Narrow viewports -------------------------------------------- */
@media (max-width: 1100px) {
  .mcs-contact-head { grid-template-columns: minmax(0, 1fr); row-gap: 20px; }
  .mcs-contact-head .mcs-lede { max-width: 60ch; }
}
@media (max-width: 860px) {
  .mcs-form { grid-template-columns: minmax(0, 1fr); row-gap: 8px; padding: 28px 22px; }
  /* Stacked, the second column needs the gap the grid used to provide. */
  .mcs-form-col + .mcs-form-col { margin-top: 20px; }
}

/* ---------- P6 step 2: devops-as-a-service ----------
   Blocks that were repeated inline 3+ times, moved verbatim. No value is changed here:
   step 3 is where they go onto the system scale. */
.p-dvo .dvo-idx { font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.14em; color: var(--ink-3); }   /* ×20 */
.mcs-row-between { display: flex; justify-content: space-between; align-items: center; }   /* ×22, shared: devops + sap-development */
.p-dvo .dvo-card { background: var(--bg); padding: 26px 24px 30px; min-height: 200px; transition: background 0.25s; }   /* ×11 */
.p-dvo .dvo-card-h { font-weight: 500; font-size: 17px; letter-spacing: -0.01em; color: var(--ink); margin: 22px 0 10px; }   /* ×11 */
.p-dvo .dvo-card-p { font-size: 14px; line-height: 1.6; color: var(--ink-2); margin: 0; }   /* ×11 */
.p-dvo .dvo-eyebrow { display: flex; font-family: var(--font-mono); font-size: var(--fs-micro); letter-spacing: .16em; text-transform: uppercase; color: var(--ink-3); margin: 0 0 16px; align-items: center; gap: 10px }   /* ×9 */
.p-dvo .dvo-h2 { font-weight: 500; line-height: 1.06; letter-spacing: -0.03em; color: var(--ink); margin: 0; }   /* ×9 */
.p-dvo .dvo-h3 { font-weight: 500; font-size: var(--fs-card); letter-spacing: -0.01em; margin: 6px 0 8px; color: var(--ink); }   /* ×9 */
.p-dvo .dvo-copy { margin: 0; font-size: 15px; line-height: 1.6; color: var(--ink-2); max-width: 62ch; }   /* ×9 */
.p-dvo .dvo-cell { padding: 18px 14px; border-right: 1px solid var(--hair-strong); border-bottom: 1px solid var(--hair-strong); color: var(--ink); }   /* ×8 */
.p-dvo .dvo-cell-idx { display: block; color: var(--accent); margin-bottom: 8px; }   /* ×8 */
.p-dvo .dvo-sec { padding: 0; border-top: 1px solid var(--hair); }   /* ×8 */
.p-dvo .dvo-step { position: relative; border-left: 1px solid var(--hair-strong); padding: 0 0 32px 30px; }   /* ×8 */
.p-dvo .dvo-step-dot { position: absolute; left: -6px; top: 6px; width: 11px; height: 11px; background: var(--accent); }   /* ×8 */
.p-dvo .dvo-dim { color: var(--ink-4); }   /* ×7 */
.p-dvo .dvo-kv { display: grid; grid-template-columns: 92px 1fr; gap: 12px; }   /* ×5 */
.p-dvo .dvo-card-lg { background: var(--bg); padding: 32px 30px 38px; transition: background 0.25s; }   /* ×4 */
.p-dvo .dvo-idx-hi { font-family: var(--font-mono); font-size: 12px; letter-spacing: 0.14em; color: var(--accent); }   /* ×4 */
.p-dvo .dvo-card-h-lg { font-weight: 500; font-size: 20px; letter-spacing: -0.01em; color: var(--ink); margin: 24px 0 12px; }   /* ×4 */
.p-dvo .dvo-card-p-lg { font-size: 15px; line-height: 1.6; color: var(--ink-2); margin: 0; }   /* ×4 */
.p-dvo .dvo-stat { font-weight: 500; font-size: 18px; letter-spacing: -0.01em; color: var(--ink); }   /* ×4 */
.p-dvo .dvo-bullet { display: flex; gap: 12px; padding: 8px 0; font-size: 15px; line-height: 1.55; color: var(--ink-2); }   /* ×4 */
.p-dvo .dvo-bullet-dot { flex: 0 0 6px; width: 6px; height: 6px; background: var(--accent); margin-top: 9px; }   /* ×4 */
.p-dvo .dvo-hi { color: var(--accent); }   /* ×3 */
.p-dvo .dvo-btn { display: inline-flex; align-items: center; gap: 10px; padding: 18px 28px; background: var(--accent); color: var(--bg); font-weight: 500; font-size: 15px; line-height: 1; text-decoration: none; transition: background 0.2s; }   /* ×3 */
.p-dvo .dvo-col { flex: 1 1 320px; min-width: 0; }   /* ×3 */
.p-dvo .dvo-defrow { display: grid; grid-template-columns: minmax(90px, 140px) 1fr; gap: 16px; padding: 18px 0; border-bottom: 1px solid var(--hair); }   /* ×3 */
.p-dvo .dvo-dt { font-weight: 500; color: var(--ink); }   /* ×3 */
.p-dvo .dvo-dd { margin: 0; color: var(--ink-2); line-height: 1.6; }   /* ×3 */
.p-dvo .dvo-bandhead { display: flex; flex-wrap: wrap; gap: 64px 24px; align-items: flex-end; justify-content: space-between; }   /* ×3 */
.p-dvo .dvo-card-sm { background: var(--bg); padding: 22px 22px 24px; }   /* ×3 */
.p-dvo .dvo-stat-cap { font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--ink-3); margin-top: 8px; }   /* ×3 */

/* Responsive compensation. The page's ≤860px rules select on the TEXT of the style attribute
   (`.p-dvo [style*="display: flex"]`, `[style*="grid-template-columns: minmax(90px, 140px) 1fr"]`),
   so extracting a block silently unhooks it: measured, 19 elements lost `flex-wrap: wrap` and the
   definition rows stayed two-column, making the page 201px taller at 375px. The extracted classes
   have to be named explicitly. Declarations copied verbatim from those rules. */
@media (max-width: 860px) {
  .p-dvo .mcs-row-between,
  .p-dvo .dvo-bullet,
  .p-dvo .dvo-bandhead { flex-wrap: wrap !important; }
  .p-dvo .dvo-defrow { grid-template-columns: 1fr !important; gap: 8px !important; }
}

/* ---------- P6 step 2: sap-development-services ----------
   Blocks that were repeated inline 3+ times, moved verbatim. No value is changed here:
   step 3 is where they go onto the system scale. */
.p-sdv .sdv-module { outline: 1px solid var(--hair); background: var(--bg); padding: 26px 24px 30px; min-height: 110px; display: flex; flex-direction: column; justify-content: flex-end; gap: 18px; transition: background 0.25s; }   /* ×8 */
.p-sdv .sdv-module-t { font-weight: 500; font-size: 18px; letter-spacing: -0.01em; color: var(--ink); }   /* ×8 */
.p-sdv .sdv-accent { color: var(--accent); }   /* ×7 */
.p-sdv .sdv-row { display: flex; flex-wrap: wrap; gap: 16px 48px; padding: 32px 0; border-bottom: 1px solid var(--hair); }   /* ×7 */
.p-sdv .sdv-row-h { font-size: var(--fs-card); flex: 1 1 240px; max-width: 340px; min-width: 0; font-weight: 500; letter-spacing: -0.02em; line-height: 1.2; margin: 0; color: var(--ink); }   /* ×7 */
.p-sdv .sdv-row-body { flex: 2 1 480px; min-width: 0; }   /* ×7 */
.p-sdv .sdv-row-p { font-size: 15px; line-height: 1.6; color: var(--ink-2); margin: 0 0 10px; }   /* ×7 */
.p-sdv .sdv-tags { font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--ink-3); }   /* ×7 */
.p-sdv .sdv-bar { height: 18px; background: var(--ink); }   /* ×7 */
.p-sdv .sdv-card { outline: 1px solid var(--hair); background: var(--bg); padding: 26px 24px 30px; min-height: 160px; transition: background 0.25s; }   /* ×7 */
.p-sdv .sdv-card-h { font-weight: 500; font-size: 17px; letter-spacing: -0.01em; color: var(--ink); margin: 26px 0 0; }   /* ×7 */
.p-sdv .sdv-sec { padding: 0; border-bottom: 1px solid var(--hair); }   /* ×6 */
.p-sdv .sdv-eyebrow { display: flex; font-family: var(--font-mono); font-size: var(--fs-micro); letter-spacing: .16em; text-transform: uppercase; color: var(--ink-3); margin: 0 0 20px; align-items: center; gap: 10px }   /* ×6 */
.p-sdv .sdv-bandhead { display: flex; flex-wrap: wrap; gap: 24px 64px; align-items: flex-end; justify-content: space-between; }   /* ×5 */
.p-sdv .sdv-h2 { font-weight: 500; line-height: 1.06; letter-spacing: -0.03em; color: var(--ink); margin: 0; }   /* ×5 */
.p-sdv .sdv-step-t { font-weight: 500; font-size: 17px; color: var(--bg); }   /* ×5 */
.p-sdv .sdv-chip { flex: 0 0 auto; white-space: nowrap; font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--ink); border: 1px solid var(--hair-strong); padding: 8px 12px; }   /* ×5 */
.p-sdv .sdv-col { flex: 1 1 320px; }   /* ×4 */
.p-sdv .sdv-tile { outline: 1px solid var(--hair); background: var(--bg); padding: 28px 26px 32px; min-height: 150px; display: flex; flex-direction: column; justify-content: flex-end; gap: 20px; }   /* ×4 */
.p-sdv .sdv-tile-h { font-weight: 500; letter-spacing: -0.02em; color: var(--ink); }   /* ×4 */
.p-sdv .sdv-tile-p { font-size: 15px; line-height: 1.55; color: var(--ink-2); margin-top: 8px; }   /* ×4 */
.p-sdv .sdv-stepcard { outline: 1px solid rgba(38, 38, 38, 1); background: var(--ink); padding: 24px 20px 28px; min-height: 280px; display: flex; flex-direction: column; justify-content: space-between; gap: 24px; }   /* ×4 */
.p-sdv .sdv-stepnum { font-family: var(--font-mono); line-height: 1; color: rgba(245, 245, 245, 1); }   /* ×4 */
.p-sdv .sdv-step-p { font-size: 13px; line-height: 1.55; color: var(--ink-4); margin-top: 8px; }   /* ×4 */
.p-sdv .sdv-grid { display: grid; gap: 1px; margin-top: 48px; }   /* ×3 */
.p-sdv .sdv-chart { display: flex; flex-direction: column-reverse; gap: 4px; height: 132px; justify-content: flex-start; }   /* ×3 */
.p-sdv .sdv-bar-hi { height: 18px; background: var(--accent); }   /* ×3 */
.p-sdv .sdv-chart-cap { font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--ink); border-top: 1px solid var(--hair-strong); margin-top: 12px; padding-top: 10px; line-height: 1.6; }   /* ×3 */

/* G15 compensation. The page's (max-width: 860px) rule `.p-sdv [style*="display: flex"] { flex-wrap: wrap !important; }`
   selects on the TEXT of the style attribute, so extracting those blocks unhooks it -- silently,
   and only below the breakpoint. The declarations are re-stated verbatim against the classes that
   replaced the inline text. 7 of the extracted rules contained "display: flex". */
@media (max-width: 860px) {
  .p-sdv .sdv-module,
  .p-sdv .sdv-row,
  .p-sdv .mcs-row-between,
  .p-sdv .sdv-bandhead,
  .p-sdv .sdv-tile,
  .p-sdv .sdv-stepcard,
  .p-sdv .sdv-chart { flex-wrap: wrap !important; }
}

/* ---------- P6 step 2: business-process-automation ----------
   Blocks that were repeated inline 3+ times, moved verbatim. No value is changed here:
   step 3 is where they go onto the system scale. */
.p-bpa .bpa-stack { display: flex; flex-direction: column; align-items: flex-start; gap: 22px; }   /* ×4 */
.p-bpa .bpa-strong { color: var(--bg); font-weight: 500; }   /* ×4 */
.p-bpa .bpa-navlink { display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 16px 0; border-bottom: 1px solid rgba(255, 255, 255, 0.28); color: var(--bg); text-decoration: none; font-family: var(--font-mono); font-size: 12px; letter-spacing: 0.12em; text-transform: uppercase; }   /* ×3 */
.p-bpa .bpa-navlabel { display: flex; gap: 14px; }   /* ×3 */
.p-bpa .bpa-dim { color: var(--ink-4); }   /* ×3 */
.p-bpa .bpa-listrow { display: flex; flex-wrap: wrap; gap: 48px 24px; padding: 44px 0; border-bottom: 1px solid var(--hair); transition: background 0.25s; }   /* ×3 */
.p-bpa .bpa-colgrid { min-width: 0; display: grid; gap: 64px 24px; }   /* ×3 */
.p-bpa .bpa-stack-sm { display: flex; flex-direction: column; align-items: flex-start; gap: 16px; }   /* ×3 */
.p-bpa .bpa-offer-h { margin: 0; line-height: 1.15; letter-spacing: -0.025em; font-weight: 500; }   /* ×3 */
.p-bpa .bpa-for { margin: 0; font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ink-3); line-height: 1.7; max-width: 44ch; }   /* ×3 */
.p-bpa .bpa-offer-p { margin: 0; line-height: 1.65; color: var(--ink-2); max-width: 62ch; }   /* ×3 */
.p-bpa .bpa-detail-link { display: inline-flex; align-items: center; gap: 10px; font-family: var(--font-mono); font-size: 12px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--ink); text-decoration: none; border-bottom: 1px solid var(--accent); padding-bottom: 3px; }   /* ×3 */
.p-bpa .bpa-steprow { position: relative; display: grid; grid-template-columns: 72px minmax(0, 1fr); gap: 24px 0; padding: 22px 0; border-bottom: 1px solid rgba(255, 255, 255, 0.2); transition: background 0.25s; }   /* ×3 */
.p-bpa .bpa-steprule { position: absolute; left: 66px; top: 0; bottom: 0; width: 2px; background: rgba(255, 255, 255, 0.2); }   /* ×3 */
.p-bpa .bpa-stephead { position: relative; display: flex; justify-content: space-between; align-items: flex-start; padding-top: 8px; }   /* ×3 */
.p-bpa .bpa-stepnum { font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.14em; color: var(--ink-4); line-height: 11px; }   /* ×3 */
.p-bpa .bpa-mark { width: 10px; height: 10px; background: var(--accent); }   /* ×3 */
.p-bpa .bpa-steptext { font-size: 17px; line-height: 1.6; color: rgba(255, 255, 255, 0.88); }   /* ×3 */
.p-bpa .bpa-inlink { color: var(--bg); text-decoration: none; border-bottom: 1px solid var(--accent); }   /* ×3 */

/* ---------- P6 step 3: the extracted classes go onto the system ----------
   Step 2 moved these declarations without changing one. This is where the values change.
   Two of the owner's questions are still open (the H3 scale, and the light-on-dark tone), so
   H3, the eyebrows and the dark-band colours are deliberately untouched here.
   Plan: docs/superpowers/plans/2026-09-22-mcs-p6-step3-onto-the-system.md */

/* Item 2.2 -- the BODY H2s take the system's type. The pages' own curve floored at 34px and ran
   1.06 / -0.03em; at 1280px it happened to compute to sig's 38.4px because 3vw x 1280 = 38.4, so
   the size only looks shared. margin is NOT taken from .mcs-h2: that class carries
   `margin: 0 0 44px`, these pages set `margin: 0` and space headings with the parent's gap, and
   adopting it would stack the two. Item 2.2 is about the heading's type. */
.p-dvo .dvo-h2,
.p-sdv .sdv-h2 {
  font-family: var(--font-head);
  line-height: 1.1;
  letter-spacing: -.02em;
}   /* the SIZE comes from the base .p-dvo h2 / .p-sdv h2 rule above, which is !important */
/* bpa's only body H2. The one real resize in this pass: clamp(38px, 3.6vw, 56px) -> --fs-h2,
   i.e. 46.08px -> 38.4px at 1280. Its type declarations came off the style attribute so this
   rule can own them; `margin: 0` stays inline. text-wrap: balance survives from the earlier rule. */
.p-bpa .bpa-h2lg {
  font-size: var(--fs-h2);
  font-weight: 500;
  line-height: 1.1;
  letter-spacing: -.02em;
}

/* The one caption whose inline max-width actually applied -- the other 17 were overridden by a
   *-band class with !important. It rendered 1240px wide inside a 1537px section, starting about
   140px right of the content it labels. Given the site width instead. */
.p-dvo .dvo-cap { max-width: min(1560px, calc(100% - 48px)); margin-inline: auto; }

/* Hover states lost when these two designs were imported. The .p-wlx rule's own comment records
   where they went: they "lived in a stylesheet the bundle injected at runtime", and were recovered
   for bpa and wlx but not for these two. Each element still declares its transition, which is what
   names the property that was meant to change -- border-color on the outline button, color on the
   text link, background on the cards and the accent button. The values are the established rule
   for the identical element elsewhere. The scp numbers are assigned per design export, so .scp1
   here is NOT .scp1 on another page: every mapping below is made from what the element is. */
.p-dvo .scp2:hover,                        /* white card, transition: background 0.25s */
.p-sdv .scp1:hover { background: var(--bg-soft); }
.p-dvo .scp0:hover,                        /* accent button, transition: background 0.2s */
.p-sdv .scp0:hover { background: #8a0000; }
.p-dvo .scp1:hover { border-color: var(--accent); }   /* outline button, transition: border-color */
.p-dvo .scp3:hover { color: var(--accent); }          /* text link, transition: color 0.2s */

/* ---------- P7 step 2: managed-hci-private-cloud ----------
   1530 inline style attributes into 52 named classes. Values move verbatim; nothing is retuned.
   Much of this page is a server rack drawn out of divs, so many of the names describe rack
   parts -- .hci-bay, .hci-node-bezel, .hci-led-dim -- rather than a design role. They are still
   names: a .hci-1..52 would be the ci-hx-* anti-pattern P5 called out. */
.p-hci .hci-bay { flex: 1; background: rgba(86, 86, 86, 1); display: flex; align-items: center; justify-content: space-between; padding: 0 3px; }   /* ×240 */
.p-hci .hci-bay-vent { width: 2px; height: 9px; background: var(--ink); opacity: 0.55; }   /* ×240 */
.p-hci .hci-bay-row { flex: 1; display: flex; gap: 2px; }   /* ×42 */
.p-hci .hci-led-dim { width: 3px; height: 3px; background: rgba(110, 110, 110, 1); }   /* ×40 */
.p-hci .hci-node { width: 100%; height: 34px; display: flex; gap: 3px; padding: 3px; box-sizing: border-box; background: rgba(247, 247, 247, 1); border: 1px solid var(--hair-strong); }   /* ×20 */
.p-hci .hci-node-bezel { width: 12px; background: var(--ink); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; }   /* ×20 */
.p-hci .hci-node-body { width: 206px; display: flex; align-items: center; gap: 3px; padding-left: 7px; box-sizing: border-box; }   /* ×20 */
.p-hci .hci-bay-col { flex: 1; display: flex; flex-direction: column; gap: 2px; }   /* ×20 */
.p-hci .hci-ledrow { display: flex; gap: 3px; }   /* ×16 */
.p-hci .hci-strong { font-weight: 500; color: var(--ink); }   /* ×11 */
.p-hci .hci-bullet { display: grid; grid-template-columns: 12px 1fr; gap: 16px; padding: 14px 0; border-bottom: 1px solid var(--hair); }   /* ×10 */
.p-hci .hci-bullet-dot { width: 6px; height: 6px; background: var(--accent); margin-top: 8px; }   /* ×10 */
.p-hci .hci-bullet-t { font-size: 16.5px; line-height: 1.55; color: var(--ink-2); }   /* ×10 */
.p-hci .hci-dev { width: 100%; height: 36px; background: var(--bg); border: 1px solid var(--hair-strong); display: flex; align-items: center; box-sizing: border-box; font-family: var(--font-mono); color: var(--ink); }   /* ×8 */
.p-hci .hci-dev-bezel { width: 32px; align-self: stretch; background: var(--ink); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 5px; }   /* ×8 */
.p-hci .hci-led-dim-sm { width: 4px; height: 4px; background: rgba(110, 110, 110, 1); }   /* ×8 */
.p-hci .hci-dev-name { padding-left: 14px; font-size: 14px; letter-spacing: 0.06em; white-space: nowrap; flex: 0 0 auto; }   /* ×8 */
.p-hci .hci-dev-leds { margin-left: auto; display: flex; flex-direction: column; gap: 3px; padding-right: 14px; }   /* ×8 */
.p-hci .hci-bar-dim { flex: 1; background: rgba(110, 110, 110, 1); }   /* ×8 */
.p-hci .hci-split { display: grid; grid-template-columns: minmax(0, 0.58fr) minmax(0, 1.42fr); gap: 80px; }   /* ×8 */
.p-hci .hci-listrow { padding: 16px 0; border-bottom: 1px solid var(--hair); }   /* ×7 */
.p-hci .hci-p { margin: 0; max-width: 88ch; font-size: 16px; line-height: 1.6; color: var(--ink-2); }   /* ×7 */
.p-hci .hci-cell { padding: 14px 20px; border-bottom: 1px solid var(--hair); border-left: 1px solid var(--hair); display: flex; align-items: center; gap: 12px; }   /* ×6 */
.p-hci .hci-h3 { margin: 0 0 12px; font-size: var(--fs-card); font-weight: 500; letter-spacing: -0.01em; color: var(--ink); }   /* ×6 */
.p-hci .hci-p-sm { margin: 0; font-size: 15px; line-height: 1.6; color: var(--ink-2); }   /* ×6 */
.p-hci .hci-p-lg { margin: 0; font-size: 16.5px; line-height: 1.65; color: var(--ink-2); }   /* ×5 */
.p-hci .hci-dt { padding: 13px 24px 13px 0; border-bottom: 1px solid var(--hair); font-size: 15.5px; font-weight: 500; color: var(--ink); }   /* ×5 */
.p-hci .hci-dd { padding: 13px 0; border-bottom: 1px solid var(--hair); font-size: 15.5px; line-height: 1.55; color: var(--ink-2); }   /* ×5 */
.p-hci .hci-micro { font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--accent); }   /* ×5 */
.p-hci .hci-dt-mono { padding: 14px 24px 14px 0; border-bottom: 1px solid var(--hair); font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.16em; text-transform: uppercase; color: var(--accent); }   /* ×4 */
.p-hci .hci-dd-15 { padding: 14px 0; border-bottom: 1px solid var(--hair); font-size: 15px; line-height: 1.6; color: var(--ink-2); }   /* ×4 */
.p-hci .hci-link { color: var(--accent); }   /* ×4 */
.p-hci .hci-row { display: flex; align-items: center; gap: 12px; }   /* ×3 */
.p-hci .hci-steprow { display: grid; grid-template-columns: 64px 1fr; gap: 28px; padding: 24px 0; border-bottom: 1px solid rgba(38, 38, 38, 1); align-items: baseline; }   /* ×3 */
.p-hci .hci-stepnum { font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.18em; color: var(--accent-on-dark); }   /* ×3 */
.p-hci .hci-step-p { margin: 0; font-size: 18px; line-height: 1.55; color: var(--hair-strong); }   /* ×3 */
.p-hci .hci-eyebrow { font-family: var(--font-mono); font-size: var(--fs-micro); letter-spacing: .16em; text-transform: uppercase; color: var(--ink-3); display: flex; align-items: center; gap: 10px }   /* ×3 */
.p-hci .hci-micro-xs { font-family: var(--font-mono); font-size: 9.5px; letter-spacing: 0.16em; text-transform: uppercase; color: var(--accent); }   /* ×3 */
.p-hci .hci-t-sm { font-size: 14.5px; line-height: 1.55; color: var(--ink-2); }   /* ×3 */
.p-hci .hci-inline { display: flex; align-items: center; gap: 7px; }   /* ×3 */
.p-hci .hci-note { border-top: 1px solid var(--accent); padding-top: 12px; font-size: 15px; line-height: 1.5; color: var(--ink-2); }   /* ×3 */
.p-hci .hci-dark-row { padding: 14px 0; border-bottom: 1px solid rgba(38, 38, 38, 1); font-size: 16.5px; line-height: 1.55; color: var(--hair-strong); }   /* ×3 */
.p-hci .hci-thead { padding: 12px 0; font-family: var(--font-mono); font-size: 9.5px; letter-spacing: 0.16em; text-transform: uppercase; color: var(--ink-3); border-bottom: 1px solid var(--hair-strong); }   /* ×3 */
.p-hci .hci-lead { margin: 0 0 14px; font-size: 20px; font-weight: 500; letter-spacing: -0.014em; line-height: 1.36; color: var(--ink); }   /* ×3 */
.p-hci .hci-p-muted { margin: 0; font-size: 16px; line-height: 1.62; color: rgba(110, 110, 110, 1); }   /* ×3 */
.p-hci .hci-loc { flex: 1 1 0; padding: 18px 20px; border-right: 1px solid var(--hair); display: flex; align-items: center; gap: 12px; }   /* ×3 */
.p-hci .hci-sq { width: 7px; height: 7px; background: var(--ink); }   /* ×3 */
.p-hci .hci-loc-name { font-family: var(--font-mono); font-size: 13px; letter-spacing: 0.06em; color: var(--ink); }   /* ×3 */
.p-hci .hci-dt-15 { padding: 14px 0; border-bottom: 1px solid var(--hair); font-size: 15px; color: var(--ink); }   /* ×3 */
.p-hci .hci-bar { width: 36px; height: 9px; background: var(--ink); }   /* ×3 */
.p-hci .hci-micro-alt { font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--ink); }   /* ×3 */
.p-hci .hci-bar-hatch { width: 36px; height: 9px; background: repeating-linear-gradient(135deg, var(--accent) 0, var(--accent) 3px, rgba(0, 0, 0, 0) 3px, rgba(0, 0, 0, 0) 6px); border: 1px solid var(--hair-strong); }   /* ×3 */

/* G15: multi-column grids collapse; the 12px bullet-marker track is excluded, as in the original. The original selects on the style-attribute text, which extraction
   deletes, so the classes that replaced it are named explicitly. */
@media (max-width: 860px) {
  .p-hci .hci-split,
  .p-hci .hci-steprow { grid-template-columns: minmax(0, 1fr) !important; gap: 24px !important; }
}

/* G15: wide desktop gutters between stacked blocks. The original selects on the style-attribute text, which extraction
   deletes, so the classes that replaced it are named explicitly. */
@media (max-width: 860px) {
  .p-hci .hci-split { gap: 24px !important; }
}

/* G15: the hero split and any other nowrap row. The original selects on the style-attribute text, which extraction
   deletes, so the classes that replaced it are named explicitly. */
@media (max-width: 860px) {
  .p-hci .hci-bay,
  .p-hci .hci-bay-row,
  .p-hci .hci-node,
  .p-hci .hci-node-bezel,
  .p-hci .hci-node-body,
  .p-hci .hci-bay-col,
  .p-hci .hci-ledrow,
  .p-hci .hci-dev,
  .p-hci .hci-dev-bezel,
  .p-hci .hci-dev-leds,
  .p-hci .hci-cell,
  .p-hci .hci-row,
  .p-hci .hci-inline,
  .p-hci .hci-loc { flex-wrap: wrap !important; }
}

/* G15: a flex item must be allowed below its content width. The original selects on the style-attribute text, which extraction
   deletes, so the classes that replaced it are named explicitly. */
@media (max-width: 860px) {
  .p-hci .hci-dev-name { flex-shrink: 1 !important; min-width: 0 !important; }
}

/* ---------- P8: white-label-crypto-exchange ----------
   1210 inline style attributes into named classes; values move verbatim. */
.p-wlx .wlx-bullet { display: grid; grid-template-columns: 6px 1fr; gap: 14px; font-size: 15px; line-height: 1.55; color: var(--ink-2); }   /* ×65 */
.p-wlx .wlx-bullet-dot { width: 6px; height: 6px; background: var(--accent); margin-top: 8px; }   /* ×65 */
.p-wlx .wlx-svg { display: block; }   /* ×24 */
.p-wlx .wlx-strong { font-weight: 500; color: var(--ink); }   /* ×24 */
.p-wlx .wlx-dim { color: var(--ink-3); }   /* ×22 */
.p-wlx .wlx-p { margin: 0; font-size: 15px; line-height: 1.6; color: var(--ink-2); }   /* ×20 */
.p-wlx .wlx-bullet-alt { display: grid; grid-template-columns: 6px 1fr; gap: 14px; font-size: 15px; line-height: 1.6; color: var(--ink-2); }   /* ×18 */
.p-wlx .wlx-bullet-dot-alt { width: 6px; height: 6px; background: var(--accent); margin-top: 9px; }   /* ×18 */
.p-wlx .wlx-sq-o { width: 8px; height: 8px; border: 1px solid var(--hair-strong); }   /* ×18 */
.p-wlx .wlx-rel { position: relative; display: block; }   /* ×17 */
.p-wlx .wlx-idx { font-family: var(--font-mono); font-size: 12px; letter-spacing: 0.16em; color: var(--accent); }   /* ×14 */
.p-wlx .wlx-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; }   /* ×14 */
.p-wlx .wlx-sec { padding: 0; background: var(--bg); border-bottom: 1px solid var(--hair); }   /* ×13 */
.p-wlx .wlx-band { padding: 96px 0; }   /* ×12 */
.p-wlx .wlx-eyebrow { font-family: var(--font-mono); font-size: var(--fs-micro); letter-spacing: .16em; text-transform: uppercase; color: var(--ink-3); margin-bottom: 18px; display: flex; align-items: center; gap: 10px }   /* ×12 */
.p-wlx .wlx-icon { width: 44px; height: 44px; border: 1px solid var(--hair-strong); display: inline-flex; align-items: center; justify-content: center; }   /* ×11 */
.p-wlx .wlx-idx-sm { font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.2em; color: var(--accent); margin-bottom: 12px; }   /* ×11 */
.p-wlx .wlx-card-h { margin: 0 0 10px; font-family: var(--font-head); font-weight: 500; font-size: var(--fs-card); letter-spacing: -0.012em; }   /* ×11 */
.p-wlx .wlx-display { margin: 0; font-family: var(--font-head); font-weight: 500; line-height: 1.04; letter-spacing: -0.03em; color: var(--ink); }   /* ×10 */
.p-wlx .wlx-p-on-dark { margin: 0; font-size: 15px; line-height: 1.65; color: rgba(255, 255, 255, 0.78); }   /* ×10 */
.p-wlx .wlx-em { color: var(--ink); font-weight: 500; }   /* ×9 */
.p-wlx .wlx-mono-accent { font-family: var(--font-mono); font-size: 12px; letter-spacing: 0.06em; color: var(--accent); }   /* ×9 */
.p-wlx .wlx-u { text-decoration: underline; }   /* ×9 */
.p-wlx .wlx-feature-h { margin: 16px 0 10px; font-family: var(--font-head); font-weight: 500; font-size: var(--fs-card); letter-spacing: -0.015em; }   /* ×8 */
.p-wlx .wlx-p-dim { margin: 0 0 22px; font-size: 15px; line-height: 1.55; color: var(--ink-3); }   /* ×8 */
.p-wlx .wlx-panel { position: relative; border: 1px solid var(--hair-strong); background-color: var(--bg); background-image: repeating-linear-gradient(0deg, rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 0) 23px, rgba(10, 10, 10, 0.04) 23px, rgba(10, 10, 10, 0.04) 24px), repeating-linear-gradient(90deg, rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 0) 23px, rgba(10, 10, 10, 0.04) 23px, rgba(10, 10, 10, 0.04) 24px); padding: 22px; }   /* ×8 */
.p-wlx .wlx-micro { font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--ink-3); }   /* ×8 */
.p-wlx .wlx-two { display: grid; grid-template-columns: 1fr 1fr; gap: 56px; padding: 48px 0; border-bottom: 1px solid var(--hair); align-items: center; }   /* ×7 */
.p-wlx .wlx-tri { display: grid; grid-template-columns: 56px 32px 1fr; gap: 24px; padding: 26px 0; border-bottom: 1px solid var(--hair); }   /* ×7 */
.p-wlx .wlx-idx-pt { font-family: var(--font-mono); font-size: 12px; letter-spacing: 0.18em; color: var(--accent); padding-top: 4px; }   /* ×7 */
.p-wlx .wlx-sub-h { margin: 0 0 8px; font-family: var(--font-head); font-weight: 500; font-size: var(--fs-card); letter-spacing: -0.012em; }   /* ×7 */
.p-wlx .wlx-bar { display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 11px 16px; border-bottom: 1px solid var(--hair); font-size: 14px; }   /* ×7 */
.p-wlx .wlx-flex1 { flex: 1 1 0; }   /* ×7 */
.p-wlx .wlx-listrow { display: grid; grid-template-columns: 64px 1fr 24px; gap: 24px; align-items: center; padding: 20px 0; border-bottom: 1px solid var(--hair); }   /* ×6 */
.p-wlx .wlx-mono-13 { font-family: var(--font-mono); font-size: 13px; color: var(--accent); }   /* ×6 */
.p-wlx .wlx-t17 { font-size: 17px; }   /* ×6 */
.p-wlx .wlx-p-16 { margin: 0; font-size: 16px; line-height: 1.65; color: var(--ink-2); }   /* ×6 */
.p-wlx .wlx-panel-alt { border-right: 1px solid var(--hair); background-color: var(--bg-soft); background-image: repeating-linear-gradient(0deg, rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 0) 23px, rgba(10, 10, 10, 0.05) 23px, rgba(10, 10, 10, 0.05) 24px), repeating-linear-gradient(90deg, rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 0) 23px, rgba(10, 10, 10, 0.05) 23px, rgba(10, 10, 10, 0.05) 24px); display: flex; align-items: center; justify-content: center; }   /* ×6 */
.p-wlx .wlx-pad { padding: 26px 28px 30px; }   /* ×6 */
.p-wlx .wlx-row { display: flex; align-items: center; gap: 16px; }   /* ×6 */
.p-wlx .wlx-idx-12 { font-family: var(--font-mono); font-size: 12px; letter-spacing: 0.18em; color: var(--accent); }   /* ×6 */
.p-wlx .wlx-h-22 { margin: 20px 0 10px; font-family: var(--font-head); font-weight: 500; font-size: var(--fs-card); letter-spacing: -0.015em; }   /* ×6 */
.p-wlx .wlx-darkrow { padding: 30px 0; border-bottom: 1px solid rgba(255, 255, 255, 0.12); display: grid; grid-template-columns: 44px 1fr; gap: 22px; }   /* ×6 */
.p-wlx .wlx-icon-on-dark { width: 44px; height: 44px; border: 1px solid rgba(255, 255, 255, 0.28); display: inline-flex; align-items: center; justify-content: center; }   /* ×6 */
.p-wlx .wlx-idx-on-dark { font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.2em; color: var(--accent-on-dark); }   /* ×6 */
.p-wlx .wlx-h-on-dark { margin: 12px 0 10px; font-family: var(--font-head); font-weight: 500; font-size: var(--fs-card); letter-spacing: -0.012em; color: var(--bg); }   /* ×6 */
.p-wlx .wlx-h-24 { margin: 18px 0 22px; font-family: var(--font-head); font-weight: 500; font-size: var(--fs-card); letter-spacing: -0.015em; }   /* ×6 */
.p-wlx .wlx-panel-clip { position: relative; overflow: hidden; border: 1px solid var(--hair); background-color: var(--bg-soft); background-image: repeating-linear-gradient(0deg, rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 0) 23px, rgba(10, 10, 10, 0.05) 23px, rgba(10, 10, 10, 0.05) 24px), repeating-linear-gradient(90deg, rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 0) 23px, rgba(10, 10, 10, 0.05) 23px, rgba(10, 10, 10, 0.05) 24px); padding: 32px 0 0 32px; }   /* ×6 */
.p-wlx .wlx-cell { border-right: 0; border-bottom: 0; background: var(--bg); color: var(--ink); }   /* ×6 */
.p-wlx .wlx-toolbar { display: flex; align-items: center; gap: 6px; padding: 9px 14px; border-bottom: 1px solid var(--hair); background: var(--bg-soft); }   /* ×6 */
.p-wlx .wlx-url { margin-left: 10px; font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.06em; color: var(--ink-3); }   /* ×6 */
.p-wlx .wlx-bar-13 { display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 13px 16px; border-bottom: 1px solid var(--hair); font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; flex-wrap: wrap; }   /* ×6 */
.p-wlx .wlx-mono-12 { font-family: var(--font-mono); font-size: 12px; }   /* ×6 */
.p-wlx .wlx-bullet-8 { display: grid; grid-template-columns: 8px 1fr; gap: 16px; font-size: 15px; line-height: 1.65; color: var(--ink-2); }   /* ×6 */
.p-wlx .wlx-bullet-dot-8 { width: 8px; height: 8px; background: var(--accent); margin-top: 8px; }   /* ×6 */
.p-wlx .wlx-eyebrow-sm { font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--accent); }   /* ×5 */
.p-wlx .wlx-h-20 { margin: 12px 0 10px; font-family: var(--font-head); font-weight: 500; font-size: var(--fs-card); letter-spacing: -0.01em; }   /* ×5 */
.p-wlx .wlx-kv { border: 1px solid var(--hair-strong); display: grid; grid-template-columns: 120px 1fr; }   /* ×5 */
.p-wlx .wlx-box { border: 1px solid var(--hair-strong); padding: 0; }   /* ×5 */
.p-wlx .wlx-pad-lg { padding: 30px 32px 34px; }   /* ×5 */
.p-wlx .wlx-two-top { display: grid; grid-template-columns: 1fr 1fr; gap: 56px; padding: 52px 0; border-top: 1px solid var(--hair); }   /* ×5 */
.p-wlx .wlx-bar-14 { display: flex; align-items: center; gap: 14px; padding: 11px 16px; border-bottom: 1px solid var(--hair); font-size: 14px; }   /* ×5 */
.p-wlx .wlx-sq { width: 6px; height: 6px; background: var(--ink); }   /* ×5 */
.p-wlx .wlx-block { padding: 30px 0 34px; border-bottom: 1px solid var(--hair); }   /* ×5 */
.p-wlx .wlx-idx-mt { font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.18em; color: var(--accent); margin-top: 24px; }   /* ×5 */
.p-wlx .wlx-h5 { margin: 10px 0; font-family: var(--font-head); font-weight: 500; font-size: 17px; letter-spacing: -0.005em; }   /* ×5 */
.p-wlx .wlx-p-14 { margin: 0; font-size: 14px; line-height: 1.55; color: var(--ink-2); }   /* ×5 */

/* G15: proportional multi-column grids collapse; marker rows (small fixed first track) are not in the original list and stay two-column. */
@media (max-width: 860px) {
  .p-wlx .wlx-two,
  .p-wlx .wlx-tri,
  .p-wlx .wlx-two-top { grid-template-columns: minmax(0, 1fr) !important; }
}

/* G15: desktop gutters between blocks that are now stacked. */
@media (max-width: 860px) {
  .p-wlx .wlx-two,
  .p-wlx .wlx-two-top { gap: 24px !important; }
}

/* G15: nowrap rows. */
@media (max-width: 860px) {
  .p-wlx .wlx-bar,
  .p-wlx .wlx-panel-alt,
  .p-wlx .wlx-row,
  .p-wlx .wlx-toolbar,
  .p-wlx .wlx-bar-13,
  .p-wlx .wlx-bar-14 { flex-wrap: wrap !important; }
}

/* ---------- P9: private-ai-gpu-cloud ----------
   578 inline style attributes; the repeated blocks become classes, values verbatim. */
.p-gpu .gpu-m0 { margin: 0; }   /* ×19 */
.p-gpu .gpu-h3 { margin: 0; font-size: var(--fs-card); font-weight: 500; }   /* ×15 */
.p-gpu .gpu-p { margin: 0; font-size: 15px; line-height: 1.55; color: var(--text-body); }   /* ×15 */
.p-gpu .gpu-idx { font-family: var(--font-mono); font-size: 12px; letter-spacing: 0.14em; color: var(--accent); }   /* ×12 */
.p-gpu .gpu-stack-6 { display: flex; flex-direction: column; gap: 6px; }   /* ×12 */
.p-gpu .gpu-sec { background: var(--bg); }   /* ×11 */
.p-gpu .gpu-bullet { display: grid; grid-template-columns: 8px 1fr; gap: 16px; padding: 14px 0; border-bottom: 1px solid var(--hair); }   /* ×10 */
.p-gpu .gpu-eyebrow { font-family: var(--font-mono); font-size: var(--fs-micro); letter-spacing: .16em; text-transform: uppercase; color: var(--ink-3); display: flex; align-items: center; gap: 10px }   /* ×10 */
.p-gpu .gpu-eyebrow-pt { font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--accent); padding-top: 5px; }   /* ×8 */
.p-gpu .gpu-bullet-dot { width: 8px; height: 8px; background: var(--accent); margin-top: 7px; }   /* ×7 */
.p-gpu .gpu-p-16 { margin: 0; font-size: 16px; line-height: 1.55; color: var(--ink); }   /* ×7 */
.p-gpu .gpu-lead { margin: 0; font-size: 17px; line-height: 1.45; color: var(--ink); }   /* ×6 */
.p-gpu .gpu-p-16-6 { margin: 0; font-size: 16px; line-height: 1.6; color: var(--ink); }   /* ×6 */
.p-gpu .gpu-stack { display: flex; flex-direction: column; }   /* ×5 */
.p-gpu .gpu-stack-20 { display: flex; flex-direction: column; gap: 20px; }   /* ×5 */
.p-gpu .gpu-row3 { display: grid; grid-template-columns: 56px 1fr 1.4fr; gap: 24px; border-top: 1px solid var(--hair); padding: 22px 0; align-items: baseline; }   /* ×5 */
.p-gpu .gpu-mb14 { margin: 0 0 14px; }   /* ×5 */
.p-gpu .gpu-card { background: var(--bg); padding: 26px; display: flex; flex-direction: column; gap: 18px; }   /* ×5 */
.p-gpu .gpu-bullet-o { width: 8px; height: 8px; border: 1px solid var(--ink-3); margin-top: 6px; }   /* ×5 */
.p-gpu .gpu-p-body16 { margin: 0; font-size: 16px; line-height: 1.55; color: var(--text-body); }   /* ×5 */
.p-gpu .gpu-p-body15 { margin: 0; font-size: 15.5px; line-height: 1.6; color: var(--text-body); }   /* ×5 */
.p-gpu .gpu-split { display: grid; grid-template-columns: 0.9fr 1.6fr; gap: 72px; padding: 72px 0; }   /* ×4 */
.p-gpu .gpu-band-soft { background: var(--bg-soft); padding: 72px 0; }   /* ×4 */
.p-gpu .gpu-idx-pt { font-family: var(--font-mono); font-size: 12px; letter-spacing: 0.14em; color: var(--accent); padding-top: 4px; }   /* ×4 */
.p-gpu .gpu-p-17 { margin: 0; font-size: 17px; line-height: 1.55; color: var(--ink); }   /* ×4 */
.p-gpu .gpu-kv { display: flex; justify-content: space-between; padding: 14px 0; border-bottom: 1px solid var(--hair); }   /* ×4 */
.p-gpu .gpu-dim { color: var(--ink-4); }   /* ×4 */
.p-gpu .gpu-p-17-6 { margin: 0; font-size: 17px; line-height: 1.6; color: var(--ink); }   /* ×4 */
.p-gpu .gpu-row-32 { display: grid; grid-template-columns: 32px 1fr; gap: 8px; padding: 10px 0; border-bottom: 1px solid var(--hair-strong); }   /* ×4 */
.p-gpu .gpu-idx-sm { font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.14em; color: var(--accent); padding-top: 3px; }   /* ×4 */
.p-gpu .gpu-p-15 { margin: 0; font-size: 15px; line-height: 1.5; color: var(--ink); }   /* ×4 */
.p-gpu .gpu-link-on-dark { color: var(--bg); }   /* ×4 */
.p-gpu .gpu-p-body17 { margin: 0; font-size: 17px; line-height: 1.6; color: var(--text-body); }   /* ×3 */
.p-gpu .gpu-tile { border: 1px solid var(--hair-strong); padding: 14px; text-align: center; }   /* ×3 */
.p-gpu .gpu-row-48 { display: grid; grid-template-columns: 48px 1fr; gap: 20px; border-top: 1px solid var(--hair-strong); padding: 20px 0; }   /* ×3 */
.p-gpu .gpu-defrow-200 { display: grid; grid-template-columns: 200px 1fr; gap: 24px; border-top: 1px solid var(--hair); padding: 22px 0; }   /* ×3 */
.p-gpu .gpu-col-rule { border-top: 2px solid var(--ink); padding-top: 18px; display: flex; flex-direction: column; gap: 22px; }   /* ×3 */
.p-gpu .gpu-defrow-180 { display: grid; grid-template-columns: 180px 1fr; gap: 24px; border-top: 1px solid var(--hair); padding: 20px 0; }   /* ×3 */
.p-gpu .gpu-col-rule-16 { border-top: 2px solid var(--ink); padding-top: 20px; display: flex; flex-direction: column; gap: 16px; }   /* ×3 */

/* G15: the design wraps band content in an unclassed div with its own vertical padding OUTSIDE the .container that owns the rhythm, so the two stacked. Applies at ALL widths. */
.p-gpu section > .gpu-split:not(.container),
.p-gpu section > .gpu-band-soft:not(.container) { padding-top: 0 !important; padding-bottom: 0 !important; }

/* G15: content grids collapse; marker-column grids keep their track (six exclusions, reproduced). */
@media (max-width: 860px) {
  .p-gpu .gpu-split,
  .p-gpu .gpu-defrow-200,
  .p-gpu .gpu-defrow-180 { grid-template-columns: minmax(0, 1fr) !important; gap: 28px !important; }
  /* Owner ruling 22 Sep 2026: the five numbered rows keep their marker track on a phone, as
     .gpu-bullet (8px), .gpu-row-32 (32px) and .gpu-row-48 (48px) already do. 56px is the width
     the component itself was authored with, so no fourth track is invented. The paragraph is
     pinned to column 2 or it would sit under the number instead of under its own heading. */
  .p-gpu .gpu-row3 { grid-template-columns: 56px minmax(0, 1fr) !important; gap: 10px 20px !important; }
  .p-gpu .gpu-row3 > .gpu-p { grid-column: 2; }
}

/* G15: nowrap rows. */
@media (max-width: 860px) {
  .p-gpu .gpu-stack-6,
  .p-gpu .gpu-stack,
  .p-gpu .gpu-stack-20,
  .p-gpu .gpu-card,
  .p-gpu .gpu-kv,
  .p-gpu .gpu-col-rule,
  .p-gpu .gpu-col-rule-16 { flex-wrap: wrap !important; }
}

/* Owner ruling 22 Sep 2026: section labels take the reference look -- grey text with the
   red square marker .mcs-eyebrow draws. The page classes keep their own margins. */
.p-dvo .dvo-eyebrow::before { content: ''; width: 8px; height: 8px; background: var(--accent); flex: 0 0 auto; }
.p-hci .hci-eyebrow::before { content: ''; width: 8px; height: 8px; background: var(--accent); flex: 0 0 auto; }
.p-gpu .gpu-eyebrow::before { content: ''; width: 8px; height: 8px; background: var(--accent); flex: 0 0 auto; }
.p-sdv .sdv-eyebrow::before { content: ''; width: 8px; height: 8px; background: var(--accent); flex: 0 0 auto; }
.p-wlx .wlx-eyebrow::before { content: ''; width: 8px; height: 8px; background: var(--accent); flex: 0 0 auto; }

/* The crumb rides on a .container, and some pages give .container the band rhythm
   (.p-gpu .container is 96px top and bottom !important). The band owns its own padding --
   18px 0 -- so the crumb must not also take the page rule. Measured: without this the band
   renders 252px tall on private-ai-gpu-cloud instead of 60px. */
.mcs-crumb-band .mcs-crumb { padding-top: 0 !important; padding-bottom: 0 !important; }

/* Owner ruling 22 Sep 2026, item 2.2: impressum and privacy-policy were the only live pages
   with no scope wrapper, so their headings fell to the Tailwind preflight reset (18px/400,
   margin 0) and to three Tailwind utilities authored into DB content, which G14 forbids. The
   headings are .mcs-h2 now; only the margins are page-local, because a legal heading follows a
   paragraph rather than opening a band and .mcs-h2 has no top margin. */
.p-legal .mcs-h2 { margin: 48px 0 16px; }
.p-legal .mcs-h1 + .mcs-h2, .p-legal .mcs-h2:first-child { margin-top: 0; }
/* The sub-headings had their 8px margins from `!mt-2 !mb-2`, the last Tailwind utilities in
   this page's database content (G14). The utility is gone; the margin it produced is not. */
.p-legal h3 { margin: 8px 0; }
