/*fern-site-stylesheet*/:root {
  --header-height: 64px;
  --header-height-real: 64px;
  --mobile-header-height-real: 64px;
  --content-width: 640px;
  --sidebar-width: 288px;
  --page-width: 1408px;
  --logo-height: 28px;
  --font-body: ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
  --font-heading: ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
  --font-code: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;
}

:root {
  --typography-body-font-family: var(--font-body);
  --typography-heading-font-family: var(--font-heading);
  --typography-code-font-family: var(--font-code);
}


.light, :root {
  --accent-1: #fbfdff;
  --accent-2: #f5f9ff;
  --accent-3: #e9f3ff;
  --accent-4: #dbecff;
  --accent-5: #c9e2ff;
  --accent-6: #b5d5ff;
  --accent-7: #9bc3fa;
  --accent-8: #75abf4;
  --accent-9: #0070e0;
  --accent-10: #0062d0;
  --accent-11: #006ede;
  --accent-12: #0a3264;

  --accent-a1: #0080ff04;
  --accent-a2: #0066ff0a;
  --accent-a3: #0074ff16;
  --accent-a4: #0079ff24;
  --accent-a5: #0077ff36;
  --accent-a6: #016fff4a;
  --accent-a7: #0066f364;
  --accent-a8: #0064eb8a;
  --accent-a9: #0070e0;
  --accent-a10: #0062d0;
  --accent-a11: #006ede;
  --accent-a12: #002a5ef5;

  --accent-contrast: #fff;
  --accent-surface: #f3f8ffcc;
  --accent-indicator: #0070e0;
  --accent-track: #0070e0;
}

@supports (color: color(display-p3 1 1 1)) {
  @media (color-gamut: p3) {
    .light, :root {
      --accent-1: oklch(99.3% 0.0031 256);
      --accent-2: oklch(98.2% 0.0095 256);
      --accent-3: oklch(96% 0.0197 256);
      --accent-4: oklch(93.7% 0.0371 256);
      --accent-5: oklch(90.6% 0.0538 256);
      --accent-6: oklch(86.4% 0.0696 256);
      --accent-7: oklch(80.9% 0.0892 256);
      --accent-8: oklch(73.4% 0.1216 256);
      --accent-9: oklch(55.9% 0.1907 256);
      --accent-10: oklch(51.3% 0.1907 256);
      --accent-11: oklch(55.2% 0.1907 256);
      --accent-12: oklch(32.3% 0.0973 256);

      --accent-a1: color(display-p3 0.0235 0.5137 1 / 0.016);
      --accent-a2: color(display-p3 0.0235 0.349 0.8941 / 0.036);
      --accent-a3: color(display-p3 0.0078 0.4078 0.9529 / 0.079);
      --accent-a4: color(display-p3 0.0078 0.4 0.9412 / 0.13);
      --accent-a5: color(display-p3 0.0078 0.3922 0.9412 / 0.193);
      --accent-a6: color(display-p3 0.0039 0.3686 0.9451 / 0.267);
      --accent-a7: color(display-p3 0.0039 0.3412 0.8941 / 0.361);
      --accent-a8: color(display-p3 0.0039 0.3255 0.8667 / 0.495);
      --accent-a9: color(display-p3 0 0.302 0.8157 / 0.816);
      --accent-a10: color(display-p3 0 0.2588 0.749 / 0.844);
      --accent-a11: color(display-p3 0 0.298 0.8078 / 0.82);
      --accent-a12: color(display-p3 0 0.1176 0.3216 / 0.914);

      --accent-contrast: #fff;
      --accent-surface: color(display-p3 0.9569 0.9725 1 / 0.8);
      --accent-indicator: oklch(55.9% 0.1907 256);
      --accent-track: oklch(55.9% 0.1907 256);
    }
  }
}


.light, :root {
  --grayscale-1: #fdfcfd;
  --grayscale-2: #faf9fb;
  --grayscale-3: #f2eff3;
  --grayscale-4: #eae7ec;
  --grayscale-5: #e3dfe6;
  --grayscale-6: #dbd8e0;
  --grayscale-7: #d0cdd7;
  --grayscale-8: #bcbac7;
  --grayscale-9: #8e8c99;
  --grayscale-10: #84828e;
  --grayscale-11: #65636d;
  --grayscale-12: #211f26;

  --grayscale-a1: #55005503;
  --grayscale-a2: #2b005506;
  --grayscale-a3: #30004010;
  --grayscale-a4: #20003618;
  --grayscale-a5: #20003820;
  --grayscale-a6: #14003527;
  --grayscale-a7: #10003332;
  --grayscale-a8: #08003145;
  --grayscale-a9: #05001d73;
  --grayscale-a10: #0500197d;
  --grayscale-a11: #0400119c;
  --grayscale-a12: #020008e0;

  --grayscale-contrast: #000;
  --grayscale-surface: #ffffffcc;
  --grayscale-indicator: #8e8c99;
  --grayscale-track: #8e8c99;
}

@supports (color: color(display-p3 1 1 1)) {
  @media (color-gamut: p3) {
    .light, :root {
      --grayscale-1: color(display-p3 0.991 0.988 0.992);
      --grayscale-2: color(display-p3 0.98 0.976 0.984);
      --grayscale-3: color(display-p3 0.946 0.938 0.952);
      --grayscale-4: color(display-p3 0.915 0.906 0.925);
      --grayscale-5: color(display-p3 0.886 0.876 0.901);
      --grayscale-6: color(display-p3 0.856 0.846 0.875);
      --grayscale-7: color(display-p3 0.814 0.804 0.84);
      --grayscale-8: color(display-p3 0.735 0.728 0.777);
      --grayscale-9: color(display-p3 0.555 0.549 0.596);
      --grayscale-10: color(display-p3 0.514 0.508 0.552);
      --grayscale-11: color(display-p3 0.395 0.388 0.424);
      --grayscale-12: color(display-p3 0.128 0.122 0.147);

      --grayscale-a1: #55005503;
      --grayscale-a2: #2b005506;
      --grayscale-a3: #30004010;
      --grayscale-a4: #20003618;
      --grayscale-a5: #20003820;
      --grayscale-a6: #14003527;
      --grayscale-a7: #10003332;
      --grayscale-a8: #08003145;
      --grayscale-a9: #05001d73;
      --grayscale-a10: #0500197d;
      --grayscale-a11: #0400119c;
      --grayscale-a12: #020008e0;

      --grayscale-contrast: #000;
      --grayscale-surface: color(display-p3 1 1 1 / 80%);
      --grayscale-indicator: color(display-p3 0.555 0.549 0.596);
      --grayscale-track: color(display-p3 0.555 0.549 0.596);
    }
  }
}


.dark {
  --accent-1: #030711;
  --accent-2: #0d1623;
  --accent-3: #0c2646;
  --accent-4: #0a3160;
  --accent-5: #113d73;
  --accent-6: #1a4983;
  --accent-7: #235798;
  --accent-8: #2966b3;
  --accent-9: #0070e0;
  --accent-10: #2a66b3;
  --accent-11: #80b8ff;
  --accent-12: #cfe3ff;

  --accent-a1: #0408010f;
  --accent-a2: #8ad1f713;
  --accent-a3: #2c95ff38;
  --accent-a4: #1987ff54;
  --accent-a5: #258bfd69;
  --accent-a6: #3391ff7a;
  --accent-a7: #3c94fe91;
  --accent-a8: #3b93feae;
  --accent-a9: #0080ffde;
  --accent-a10: #3c93feae;
  --accent-a11: #80b8ff;
  --accent-a12: #cfe3ff;

  --accent-contrast: #fff;
  --accent-surface: #17253480;
  --accent-indicator: #0070e0;
  --accent-track: #0070e0;
}

@supports (color: color(display-p3 1 1 1)) {
  @media (color-gamut: p3) {
    .dark {
      --accent-1: oklch(13% 0.0247 256);
      --accent-2: oklch(20% 0.0298 256);
      --accent-3: oklch(26.8% 0.0685 256);
      --accent-4: oklch(31.6% 0.0942 256);
      --accent-5: oklch(36.1% 0.1047 256);
      --accent-6: oklch(40.6% 0.1104 256);
      --accent-7: oklch(45.6% 0.1198 256);
      --accent-8: oklch(51.2% 0.1372 256);
      --accent-9: oklch(55.9% 0.1907 256);
      --accent-10: oklch(51.3% 0.1372 256);
      --accent-11: oklch(77.5% 0.1241 256);
      --accent-12: oklch(91% 0.0436 256);

      --accent-a1: color(display-p3 0.0157 0.0275 0.0039 / 0.059);
      --accent-a2: color(display-p3 0.6157 0.8471 0.9961 / 0.072);
      --accent-a3: color(display-p3 0.2902 0.5765 1 / 0.215);
      --accent-a4: color(display-p3 0.2353 0.5294 0.9961 / 0.32);
      --accent-a5: color(display-p3 0.2745 0.5569 1 / 0.395);
      --accent-a6: color(display-p3 0.3137 0.5765 1 / 0.463);
      --accent-a7: color(display-p3 0.3373 0.5961 1 / 0.547);
      --accent-a8: color(display-p3 0.3412 0.5922 1 / 0.656);
      --accent-a9: color(display-p3 0.2157 0.5098 1 / 0.841);
      --accent-a10: color(display-p3 0.3412 0.5922 1 / 0.656);
      --accent-a11: color(display-p3 0.5647 0.7333 1 / 0.975);
      --accent-a12: color(display-p3 0.8392 0.898 1 / 0.988);

      --accent-contrast: #fff;
      --accent-surface: color(display-p3 0.102 0.1412 0.1961 / 0.5);
      --accent-indicator: oklch(55.9% 0.1907 256);
      --accent-track: oklch(55.9% 0.1907 256);
    }
  }
}


.dark {
  --grayscale-1: #111113;
  --grayscale-2: #18191b;
  --grayscale-3: #212225;
  --grayscale-4: #272a2d;
  --grayscale-5: #2e3135;
  --grayscale-6: #363a3f;
  --grayscale-7: #43484e;
  --grayscale-8: #5a6169;
  --grayscale-9: #696e77;
  --grayscale-10: #777b84;
  --grayscale-11: #b0b4ba;
  --grayscale-12: #edeef0;

  --grayscale-a1: #00000000;
  --grayscale-a2: #d8f4f609;
  --grayscale-a3: #ddeaf814;
  --grayscale-a4: #d3edf81d;
  --grayscale-a5: #d9edfe25;
  --grayscale-a6: #d6ebfd30;
  --grayscale-a7: #d9edff40;
  --grayscale-a8: #d9edff5d;
  --grayscale-a9: #dfebfd6d;
  --grayscale-a10: #e5edfd7b;
  --grayscale-a11: #f1f7feb5;
  --grayscale-a12: #fcfdffef;

  --grayscale-contrast: #fff;
  --grayscale-surface: rgba(0, 0, 0, 0.05);
  --grayscale-indicator: #696e77;
  --grayscale-track: #696e77;
}

@supports (color: color(display-p3 1 1 1)) {
  @media (color-gamut: p3) {
    .dark {
      --grayscale-1: color(display-p3 0.067 0.067 0.074);
      --grayscale-2: color(display-p3 0.095 0.098 0.105);
      --grayscale-3: color(display-p3 0.13 0.135 0.145);
      --grayscale-4: color(display-p3 0.156 0.163 0.176);
      --grayscale-5: color(display-p3 0.183 0.191 0.206);
      --grayscale-6: color(display-p3 0.215 0.226 0.244);
      --grayscale-7: color(display-p3 0.265 0.28 0.302);
      --grayscale-8: color(display-p3 0.357 0.381 0.409);
      --grayscale-9: color(display-p3 0.415 0.431 0.463);
      --grayscale-10: color(display-p3 0.469 0.483 0.514);
      --grayscale-11: color(display-p3 0.692 0.704 0.728);
      --grayscale-12: color(display-p3 0.93 0.933 0.94);

      --grayscale-a1: #00000000;
      --grayscale-a2: #d8f4f609;
      --grayscale-a3: #ddeaf814;
      --grayscale-a4: #d3edf81d;
      --grayscale-a5: #d9edfe25;
      --grayscale-a6: #d6ebfd30;
      --grayscale-a7: #d9edff40;
      --grayscale-a8: #d9edff5d;
      --grayscale-a9: #dfebfd6d;
      --grayscale-a10: #e5edfd7b;
      --grayscale-a11: #f1f7feb5;
      --grayscale-a12: #fcfdffef;

      --grayscale-contrast: #fff;
      --grayscale-surface: color(display-p3 0 0 0 / 5%);
      --grayscale-indicator: color(display-p3 0.415 0.431 0.463);
      --grayscale-track: color(display-p3 0.415 0.431 0.463);
    }
  }
}

.light, :root {
  color-scheme: light;
  --accent: rgba(0, 112, 224, 1);
  --background: rgba(255, 255, 255, 1);
  --border: initial;
  --sidebar-background: initial;
  --header-background: color-mix(in srgb, var(--background), transparent 30%);
  --card-background: initial;
  --theme-color: #fff;
}

.dark {
  color-scheme: dark;
  --accent: rgba(0, 112, 224, 1);
  --background: rgba(3, 7, 18, 1);
  --border: initial;
  --sidebar-background: initial;
  --header-background: color-mix(in srgb, var(--background), transparent 30%);
  --card-background: initial;
  --theme-color: #030712;
}

/* tieback brand name styling — "tie" inherits text color, "back" is brand blue italic */
/* Ensure Inter font across all docs */
body {
  font-family:
    'Inter',
    system-ui,
    -apple-system,
    sans-serif;
}
.tb {
  font-weight: 600;
  font-family:
    'Inter',
    system-ui,
    -apple-system,
    sans-serif;
}
.tb i {
  color: #0080ff;
  font-style: italic;
}

/* ---------------------------------------------------------------------------
   Knowledge Base content blocks
   Reusable editorial components (Definition, Key Takeaways, Best Practice,
   Common Mistake, Regulation Summary, Example, Tip). One shared shell keeps
   them visually consistent with the rest of the documentation site; only the
   accent colour and label change per block.
   --------------------------------------------------------------------------- */
.tb-block {
  --tb-block-accent: #0080ff;
  position: relative;
  margin: 1.5rem 0;
  padding: 1rem 1.25rem 1.05rem;
  border: 1px solid rgb(128 128 128 / 18%);
  border-left: 3px solid var(--tb-block-accent);
  border-radius: 8px;
  background: color-mix(in srgb, var(--tb-block-accent) 5%, transparent);
  font-family:
    'Inter',
    system-ui,
    -apple-system,
    sans-serif;
}

.tb-block-label {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  margin-bottom: 0.35rem;
  color: var(--tb-block-accent);
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

/* Icon rendered from a masked inline SVG so it always inherits the accent. */
.tb-block-label::before {
  flex: 0 0 auto;
  width: 1rem;
  height: 1rem;
  background-color: var(--tb-block-accent);
  content: '';
  mask-position: center;
  mask-repeat: no-repeat;
  mask-size: contain;
  -webkit-mask-position: center;
  -webkit-mask-repeat: no-repeat;
  -webkit-mask-size: contain;
  mask-image: var(--tb-block-icon);
  -webkit-mask-image: var(--tb-block-icon);
}

.tb-block-term {
  margin-bottom: 0.3rem;
  font-size: 0.95rem;
  font-weight: 600;
}

.tb-block-body > :first-child {
  margin-top: 0;
}

.tb-block-body > :last-child {
  margin-bottom: 0;
}

.tb-block-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem 1.5rem;
  margin: 0 0 0.6rem;
}

.tb-block-meta dt {
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  opacity: 0.65;
  text-transform: uppercase;
}

.tb-block-meta dd {
  margin: 0;
  font-size: 0.875rem;
}

.tb-block-definition {
  --tb-block-accent: #0080ff;
  --tb-block-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 19.5A2.5 2.5 0 0 1 6.5 17H20'/%3E%3Cpath d='M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z'/%3E%3C/svg%3E");
}

.tb-block-takeaways {
  --tb-block-accent: #1f6feb;
  --tb-block-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 11 3 3L22 4'/%3E%3Cpath d='M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11'/%3E%3C/svg%3E");
}

.tb-block-best-practice {
  --tb-block-accent: #16a34a;
  --tb-block-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='8' r='6'/%3E%3Cpath d='M15.477 12.89 17 22l-5-3-5 3 1.523-9.11'/%3E%3C/svg%3E");
}

.tb-block-mistake {
  --tb-block-accent: #dc2626;
  --tb-block-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3z'/%3E%3Cpath d='M12 9v4'/%3E%3Cpath d='M12 17h.01'/%3E%3C/svg%3E");
}

.tb-block-regulation {
  --tb-block-accent: #7c3aed;
  --tb-block-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m16 16 3-8 3 8c-.87.65-1.92 1-3 1s-2.13-.35-3-1z'/%3E%3Cpath d='m2 16 3-8 3 8c-.87.65-1.92 1-3 1s-2.13-.35-3-1z'/%3E%3Cpath d='M7 21h10'/%3E%3Cpath d='M12 3v18'/%3E%3Cpath d='M3 7h2c2 0 5-1 7-2 2 1 5 2 7 2h2'/%3E%3C/svg%3E");
}

.tb-block-example {
  --tb-block-accent: #64748b;
  --tb-block-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='18' height='18' x='3' y='3' rx='2'/%3E%3Cpath d='M9 9h6v6H9z'/%3E%3C/svg%3E");
}

.tb-block-tip {
  --tb-block-accent: #0891b2;
  --tb-block-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5'/%3E%3Cpath d='M9 18h6'/%3E%3Cpath d='M10 22h4'/%3E%3C/svg%3E");
}

@media (max-width: 640px) {

  .tb-block {
    margin: 1.25rem 0;
    padding: 0.85rem 1rem 0.9rem;
  }

  .tb-block-meta {
    flex-direction: column;
    gap: 0.4rem;
  }

}

/* ---------------------------------------------------------------------------
   About This Article
   --------------------------------------------------------------------------- */
.tb-about-article {
  margin: 2rem 0 1rem;
  padding: 1.15rem 1.35rem;
  border: 1px solid rgb(128 128 128 / 18%);
  border-radius: 10px;
  background: color-mix(in srgb, #0080ff 4%, transparent);
}

.tb-about-article-label {
  margin-bottom: 0.6rem;
  color: #0080ff;
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.tb-about-article-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem 2rem;
  margin: 0 0 0.85rem;
}

.tb-about-article-meta dt {
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  opacity: 0.65;
  text-transform: uppercase;
}

.tb-about-article-meta dd {
  margin: 0;
  font-size: 0.9rem;
  font-weight: 500;
}

.tb-about-article-statement {
  margin: 0;
  font-size: 0.875rem;
  line-height: 1.55;
  opacity: 0.8;
}

/* ---------------------------------------------------------------------------
   Platform attribution
   The "Built with Fern" mark cannot be removed on the current plan, so it is
   de-emphasised: small, muted and non-competing with tieback branding. It
   remains present, legible on hover and keyboard focusable.
   --------------------------------------------------------------------------- */
a[href*='buildwithfern.com'],
a[href*='buildwithfern.com'] * {
  font-size: 0.7rem !important;
  font-weight: 400 !important;
  opacity: 0.35;
  transition: opacity 0.15s ease-in-out;
}

a[href*='buildwithfern.com']:hover,
a[href*='buildwithfern.com']:focus-visible {
  opacity: 0.85;
}

/* Four Layers conceptual diagram (Knowledge Base editorial language) */
.tb-layers {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin: 28px 0;
}

.tb-layer {
  --tb-layer-accent: #0080ff;
  display: grid;
  grid-template-columns: 84px 160px 1fr;
  align-items: baseline;
  gap: 4px 20px;
  padding: 14px 18px;
  border: 1px solid var(--grayscale-a4, rgba(128, 128, 128, 0.2));
  border-left: 3px solid var(--tb-layer-accent);
  border-radius: 6px;
  background: color-mix(in srgb, var(--tb-layer-accent) 4%, transparent);
}

.tb-layer-index {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--tb-layer-accent);
}

.tb-layer-name {
  font-size: 15px;
  font-weight: 600;
}

.tb-layer-question {
  font-size: 14px;
  font-weight: 500;
}

.tb-layer-detail {
  grid-column: 2 / -1;
  font-size: 13px;
  line-height: 1.5;
  opacity: 0.75;
}

.tb-layer-regulatory {
  --tb-layer-accent: #7c3aed;
}

.tb-layer-governance {
  --tb-layer-accent: #0891b2;
}

.tb-layer-information {
  --tb-layer-accent: #16a34a;
}

.tb-layer-technology {
  --tb-layer-accent: #0080ff;
}

@media (max-width: 640px) {

  .tb-layer {
    grid-template-columns: 1fr;
    gap: 2px;
  }

  .tb-layer-detail {
    grid-column: 1;
  }

}

/* Responsibility Model conceptual diagram (Knowledge Base editorial language) */
.tb-orbit {
  display: flex;
  flex-direction: column;
  gap: 14px;
  margin: 28px 0;
  padding: 20px;
  border: 1px solid var(--grayscale-a4, rgba(128, 128, 128, 0.2));
  border-radius: 10px;
}

.tb-orbit-core {
  text-align: center;
  padding: 16px 18px;
  border: 1px solid color-mix(in srgb, #0080ff 40%, transparent);
  border-radius: 8px;
  background: color-mix(in srgb, #0080ff 8%, transparent);
}

.tb-orbit-core-title {
  font-size: 16px;
  font-weight: 600;
}

.tb-orbit-core-sub {
  margin-top: 2px;
  font-size: 13px;
  opacity: 0.75;
}

.tb-orbit-ring {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}

.tb-orbit-node {
  --tb-orbit-accent: #0080ff;
  padding: 12px 14px;
  border: 1px solid var(--grayscale-a4, rgba(128, 128, 128, 0.2));
  border-top: 3px solid var(--tb-orbit-accent);
  border-radius: 6px;
  background: color-mix(in srgb, var(--tb-orbit-accent) 4%, transparent);
}

.tb-orbit-node-label {
  font-size: 14px;
  font-weight: 600;
  color: var(--tb-orbit-accent);
}

.tb-orbit-node-role {
  margin-top: 4px;
  font-size: 13px;
  line-height: 1.5;
  opacity: 0.8;
}

.tb-orbit-node-1 {
  --tb-orbit-accent: #7c3aed;
}

.tb-orbit-node-2 {
  --tb-orbit-accent: #0891b2;
}

.tb-orbit-node-3 {
  --tb-orbit-accent: #16a34a;
}

.tb-orbit-node-4 {
  --tb-orbit-accent: #ca8a04;
}

.tb-orbit-node-5 {
  --tb-orbit-accent: #db2777;
}

.tb-orbit-node-6 {
  --tb-orbit-accent: #0080ff;
}

@media (max-width: 900px) {

  .tb-orbit-ring {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

}

@media (max-width: 600px) {

  .tb-orbit-ring {
    grid-template-columns: 1fr;
  }

}

/* Product Information Readiness Model conceptual diagram (Knowledge Base editorial language) */
.tb-facets {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr) minmax(0, 1fr);
  grid-auto-rows: auto;
  gap: 10px;
  align-items: stretch;
  margin: 28px 0;
  padding: 20px;
  border: 1px solid var(--grayscale-a4, rgba(128, 128, 128, 0.2));
  border-radius: 10px;
}

.tb-facets-core {
  grid-column: 2;
  grid-row: 1 / span 3;
  display: flex;
  flex-direction: column;
  justify-content: center;
  text-align: center;
  padding: 18px;
  border: 1px solid color-mix(in srgb, #0080ff 40%, transparent);
  border-radius: 8px;
  background: color-mix(in srgb, #0080ff 8%, transparent);
}

.tb-facets-core-title {
  font-size: 16px;
  font-weight: 600;
}

.tb-facets-core-sub {
  margin-top: 4px;
  font-size: 13px;
  line-height: 1.5;
  opacity: 0.75;
}

.tb-facet {
  --tb-facet-accent: #0080ff;
  padding: 12px 14px;
  border: 1px solid var(--grayscale-a4, rgba(128, 128, 128, 0.2));
  border-left: 3px solid var(--tb-facet-accent);
  border-radius: 6px;
  background: color-mix(in srgb, var(--tb-facet-accent) 4%, transparent);
}

.tb-facet-label {
  font-size: 14px;
  font-weight: 600;
  color: var(--tb-facet-accent);
}

.tb-facet-examples {
  margin-top: 4px;
  font-size: 13px;
  line-height: 1.5;
  opacity: 0.8;
}

.tb-facet-1 {
  grid-column: 1;
  --tb-facet-accent: #7c3aed;
}

.tb-facet-2 {
  grid-column: 1;
  --tb-facet-accent: #0891b2;
}

.tb-facet-3 {
  grid-column: 1;
  --tb-facet-accent: #16a34a;
}

.tb-facet-4 {
  grid-column: 3;
  grid-row: 1;
  --tb-facet-accent: #ca8a04;
}

.tb-facet-5 {
  grid-column: 3;
  grid-row: 2;
  --tb-facet-accent: #db2777;
}

.tb-facet-6 {
  grid-column: 3;
  grid-row: 3;
  --tb-facet-accent: #0080ff;
}

@media (max-width: 900px) {

  .tb-facets {
    grid-template-columns: 1fr;
  }

  .tb-facets-core,
  .tb-facet-1,
  .tb-facet-2,
  .tb-facet-3,
  .tb-facet-4,
  .tb-facet-5,
  .tb-facet-6 {
    grid-column: 1;
    grid-row: auto;
  }

  .tb-facets-core {
    order: -1;
  }

}

/* ---------------------------------------------------------------------------
   Digital Product Passport Data Flow diagram (seven stage lifecycle flow)
   --------------------------------------------------------------------------- */

.tb-flow {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(0, 128, 255, 0.05), rgba(0, 128, 255, 0));
}

.tb-flow-phase {
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  opacity: 0.65;
  margin-top: 0.25rem;
}

.tb-flow-phase-downstream {
  margin-top: 1rem;
}

.tb-flow-step {
  position: relative;
  display: grid;
  grid-template-columns: 2.25rem 1fr;
  grid-template-rows: auto auto;
  column-gap: 0.9rem;
  align-items: start;
  padding: 0.85rem 1rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-left: 4px solid var(--tb-flow-accent, #0080ff);
  border-radius: 10px;
  background: var(--tb-surface, rgba(255, 255, 255, 0.03));
}

.tb-flow-step::after {
  content: '';
  position: absolute;
  left: 1.6rem;
  bottom: -0.75rem;
  width: 1px;
  height: 0.75rem;
  background: var(--tb-flow-accent, #0080ff);
  opacity: 0.5;
}

.tb-flow-step-4::after,
.tb-flow-step-7::after {
  display: none;
}

.tb-flow-index {
  grid-column: 1;
  grid-row: 1 / span 2;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2.25rem;
  height: 2.25rem;
  border-radius: 50%;
  font-size: 0.85rem;
  font-weight: 700;
  color: #fff;
  background: var(--tb-flow-accent, #0080ff);
}

.tb-flow-name {
  grid-column: 2;
  grid-row: 1;
  font-size: 1rem;
  font-weight: 650;
  line-height: 1.4;
}

.tb-flow-detail {
  grid-column: 2;
  grid-row: 2;
  font-size: 0.875rem;
  line-height: 1.5;
  opacity: 0.8;
}

.tb-flow-step-1 {
  --tb-flow-accent: #0080ff;
}

.tb-flow-step-2 {
  --tb-flow-accent: #0ea5e9;
}

.tb-flow-step-3 {
  --tb-flow-accent: #0891b2;
}

.tb-flow-step-4 {
  --tb-flow-accent: #059669;
}

.tb-flow-step-5 {
  --tb-flow-accent: #65a30d;
}

.tb-flow-step-6 {
  --tb-flow-accent: #d97706;
}

.tb-flow-step-7 {
  --tb-flow-accent: #db2777;
}

.tb-flow-loop {
  margin-top: 0.5rem;
  padding: 0.7rem 1rem;
  border: 1px dashed var(--tb-border, rgba(120, 130, 150, 0.4));
  border-radius: 10px;
  font-size: 0.8125rem;
  line-height: 1.5;
  opacity: 0.8;
}

@media (max-width: 700px) {

  .tb-flow {
    padding: 1rem;
  }

  .tb-flow-step {
    grid-template-columns: 1.9rem 1fr;
  }

}

/* ---------------------------------------------------------------------------
   The ESPR Implementation Journey (staged vertical journey diagram)
   --------------------------------------------------------------------------- */

.tb-journey {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(0, 128, 255, 0.05), rgba(0, 128, 255, 0));
}

.tb-journey-band {
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  opacity: 0.65;
  margin-top: 0.25rem;
}

.tb-journey-band-law,
.tb-journey-band-product,
.tb-journey-band-operate {
  margin-top: 1rem;
}

.tb-journey-stage {
  position: relative;
  display: grid;
  grid-template-columns: 2.25rem 1fr;
  grid-template-rows: auto auto;
  column-gap: 0.9rem;
  align-items: start;
  padding: 0.85rem 1rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-left: 4px solid var(--tb-journey-accent, #0080ff);
  border-radius: 10px;
  background: var(--tb-surface, rgba(255, 255, 255, 0.03));
}

.tb-journey-stage::after {
  content: '';
  position: absolute;
  left: 1.6rem;
  bottom: -0.75rem;
  width: 1px;
  height: 0.75rem;
  background: var(--tb-journey-accent, #0080ff);
  opacity: 0.5;
}

.tb-journey-stage-2::after,
.tb-journey-stage-4::after,
.tb-journey-stage-6::after,
.tb-journey-stage-8::after {
  display: none;
}

.tb-journey-index {
  grid-column: 1;
  grid-row: 1 / span 2;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2.25rem;
  height: 2.25rem;
  border-radius: 50%;
  font-size: 0.85rem;
  font-weight: 700;
  color: #fff;
  background: var(--tb-journey-accent, #0080ff);
}

.tb-journey-name {
  grid-column: 2;
  grid-row: 1;
  font-size: 1rem;
  font-weight: 650;
  line-height: 1.4;
}

.tb-journey-detail {
  grid-column: 2;
  grid-row: 2;
  font-size: 0.875rem;
  line-height: 1.5;
  opacity: 0.8;
}

.tb-journey-stage-1 {
  --tb-journey-accent: #16a34a;
}

.tb-journey-stage-2 {
  --tb-journey-accent: #059669;
}

.tb-journey-stage-3 {
  --tb-journey-accent: #0891b2;
}

.tb-journey-stage-4 {
  --tb-journey-accent: #0ea5e9;
}

.tb-journey-stage-5 {
  --tb-journey-accent: #0080ff;
}

.tb-journey-stage-6 {
  --tb-journey-accent: #7c3aed;
}

.tb-journey-stage-7 {
  --tb-journey-accent: #d97706;
}

.tb-journey-stage-8 {
  --tb-journey-accent: #db2777;
}

.tb-journey-loop {
  margin-top: 0.5rem;
  padding: 0.7rem 1rem;
  border: 1px dashed var(--tb-border, rgba(120, 130, 150, 0.4));
  border-radius: 10px;
  font-size: 0.8125rem;
  line-height: 1.5;
  opacity: 0.8;
}

@media (max-width: 700px) {

  .tb-journey {
    padding: 1rem;
  }

  .tb-journey-stage {
    grid-template-columns: 1.9rem 1fr;
  }

}

/* ---------------------------------------------------------------------------
   The EU Product Regulation Lifecycle (nine stage lifecycle with actor chips)
   --------------------------------------------------------------------------- */

.tb-lifecycle {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(124, 58, 237, 0.06), rgba(124, 58, 237, 0));
}

.tb-lifecycle-band {
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  opacity: 0.65;
  margin-top: 0.25rem;
}

.tb-lifecycle-band-making,
.tb-lifecycle-band-effect,
.tb-lifecycle-band-renewal {
  margin-top: 1rem;
}

.tb-lifecycle-stage {
  position: relative;
  display: grid;
  grid-template-columns: 2.25rem 1fr auto;
  grid-template-rows: auto auto;
  column-gap: 0.9rem;
  align-items: start;
  padding: 0.85rem 1rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-left: 4px solid var(--tb-lifecycle-accent, #7c3aed);
  border-radius: 10px;
  background: var(--tb-surface, rgba(255, 255, 255, 0.03));
}

.tb-lifecycle-stage::after {
  content: '';
  position: absolute;
  left: 1.6rem;
  bottom: -0.75rem;
  width: 1px;
  height: 0.75rem;
  background: var(--tb-lifecycle-accent, #7c3aed);
  opacity: 0.5;
}

.tb-lifecycle-stage-2::after,
.tb-lifecycle-stage-5::after,
.tb-lifecycle-stage-7::after,
.tb-lifecycle-stage-9::after {
  display: none;
}

.tb-lifecycle-index {
  grid-column: 1;
  grid-row: 1 / span 2;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2.25rem;
  height: 2.25rem;
  border-radius: 50%;
  font-size: 0.85rem;
  font-weight: 700;
  color: #fff;
  background: var(--tb-lifecycle-accent, #7c3aed);
}

.tb-lifecycle-name {
  grid-column: 2;
  grid-row: 1;
  font-size: 1rem;
  font-weight: 650;
  line-height: 1.4;
}

.tb-lifecycle-actor {
  grid-column: 3;
  grid-row: 1;
  align-self: center;
  padding: 0.15rem 0.55rem;
  border: 1px solid var(--tb-lifecycle-accent, #7c3aed);
  border-radius: 999px;
  font-size: 0.6875rem;
  font-weight: 650;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  white-space: nowrap;
  opacity: 0.85;
}

.tb-lifecycle-detail {
  grid-column: 2 / span 2;
  grid-row: 2;
  font-size: 0.875rem;
  line-height: 1.5;
  opacity: 0.8;
}

.tb-lifecycle-stage-1 {
  --tb-lifecycle-accent: #16a34a;
}

.tb-lifecycle-stage-2 {
  --tb-lifecycle-accent: #059669;
}

.tb-lifecycle-stage-3 {
  --tb-lifecycle-accent: #0891b2;
}

.tb-lifecycle-stage-4 {
  --tb-lifecycle-accent: #0ea5e9;
}

.tb-lifecycle-stage-5 {
  --tb-lifecycle-accent: #0080ff;
}

.tb-lifecycle-stage-6 {
  --tb-lifecycle-accent: #7c3aed;
}

.tb-lifecycle-stage-7 {
  --tb-lifecycle-accent: #c026d3;
}

.tb-lifecycle-stage-8 {
  --tb-lifecycle-accent: #d97706;
}

.tb-lifecycle-stage-9 {
  --tb-lifecycle-accent: #db2777;
}

.tb-lifecycle-loop {
  margin-top: 0.5rem;
  padding: 0.7rem 1rem;
  border: 1px dashed var(--tb-border, rgba(120, 130, 150, 0.4));
  border-radius: 10px;
  font-size: 0.8125rem;
  line-height: 1.5;
  opacity: 0.8;
}

@media (max-width: 700px) {

  .tb-lifecycle {
    padding: 1rem;
  }

  .tb-lifecycle-stage {
    grid-template-columns: 1.9rem 1fr;
  }

  .tb-lifecycle-actor {
    grid-column: 2;
    grid-row: 3;
    justify-self: start;
    margin-top: 0.4rem;
  }

  .tb-lifecycle-detail {
    grid-column: 2;
  }

}

/* ---------------------------------------------------------------------------
   The Product Category Rollout Model (four stage maturity diagram)
   --------------------------------------------------------------------------- */

.tb-rollout {
  display: flex;
  flex-direction: column;
  gap: 0.9rem;
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(0, 128, 255, 0.05), rgba(0, 128, 255, 0));
}

.tb-rollout-stage {
  position: relative;
  display: grid;
  grid-template-columns: 2.25rem 1fr auto;
  grid-template-rows: auto auto;
  column-gap: 0.9rem;
  align-items: start;
  padding: 0.9rem 1rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-left: 4px solid var(--tb-rollout-accent, #0080ff);
  border-radius: 10px;
  background: var(--tb-surface, rgba(255, 255, 255, 0.03));
}

.tb-rollout-stage::after {
  content: '';
  position: absolute;
  left: 1.6rem;
  bottom: -0.9rem;
  width: 1px;
  height: 0.9rem;
  background: var(--tb-rollout-accent, #0080ff);
  opacity: 0.5;
}

.tb-rollout-stage-4::after {
  display: none;
}

.tb-rollout-index {
  grid-column: 1;
  grid-row: 1 / span 2;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2.25rem;
  height: 2.25rem;
  border-radius: 50%;
  font-size: 0.85rem;
  font-weight: 700;
  color: #fff;
  background: var(--tb-rollout-accent, #0080ff);
}

.tb-rollout-name {
  grid-column: 2;
  grid-row: 1;
  font-size: 1rem;
  font-weight: 650;
  line-height: 1.4;
}

.tb-rollout-status {
  grid-column: 3;
  grid-row: 1;
  align-self: center;
  padding: 0.2rem 0.6rem;
  border: 1px solid var(--tb-rollout-accent, #0080ff);
  border-radius: 999px;
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  white-space: nowrap;
  color: var(--tb-rollout-accent, #0080ff);
}

.tb-rollout-detail {
  grid-column: 2 / span 2;
  grid-row: 2;
  margin-top: 0.35rem;
  font-size: 0.875rem;
  line-height: 1.55;
  opacity: 0.8;
}

.tb-rollout-stage-1 {
  --tb-rollout-accent: #16a34a;
}

.tb-rollout-stage-2 {
  --tb-rollout-accent: #0080ff;
}

.tb-rollout-stage-3 {
  --tb-rollout-accent: #7c3aed;
}

.tb-rollout-stage-4 {
  --tb-rollout-accent: #94a3b8;
}

.tb-rollout-note {
  margin-top: 0.4rem;
  padding: 0.7rem 1rem;
  border: 1px dashed var(--tb-border, rgba(120, 130, 150, 0.4));
  border-radius: 10px;
  font-size: 0.8125rem;
  line-height: 1.5;
  opacity: 0.8;
}

@media (max-width: 700px) {

  .tb-rollout {
    padding: 1rem;
  }

  .tb-rollout-stage {
    grid-template-columns: 1.9rem 1fr;
  }

  .tb-rollout-status {
    grid-column: 2;
    grid-row: 2;
    justify-self: start;
    margin-top: 0.4rem;
  }

  .tb-rollout-detail {
    grid-column: 2;
    grid-row: 3;
  }

}

/* Conceptual diagram: The Digital Product Passport Compliance Timeline
   Used by knowledge-base/regulations/when-will-digital-product-passports-become-mandatory */
.tb-timeline {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  margin: 2rem 0;
  padding: 1.5rem 1.5rem 1.25rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(0, 128, 255, 0.05), rgba(0, 128, 255, 0));
}

.tb-timeline-stage {
  position: relative;
  display: grid;
  grid-template-columns: 1.5rem 1fr;
  column-gap: 0.9rem;
  padding: 0.85rem 1rem 0.95rem 0.5rem;
  border-radius: 10px;
}

.tb-timeline-stage::before {
  content: '';
  position: absolute;
  top: 1.85rem;
  bottom: -0.75rem;
  left: 1.22rem;
  width: 1px;
  background: var(--tb-border, rgba(120, 130, 150, 0.4));
}

.tb-timeline-stage:last-of-type::before {
  display: none;
}

.tb-timeline-marker {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 1.5rem;
  height: 1.5rem;
  border: 1px solid var(--tb-timeline-accent, #0080ff);
  border-radius: 999px;
  background: var(--tb-surface, rgba(255, 255, 255, 0.04));
  color: var(--tb-timeline-accent, #0080ff);
  font-size: 0.75rem;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}

.tb-timeline-body {
  min-width: 0;
}

.tb-timeline-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.5rem 0.75rem;
}

.tb-timeline-name {
  font-size: 0.9375rem;
  font-weight: 600;
  line-height: 1.35;
}

.tb-timeline-phase {
  display: inline-block;
  padding: 0.1rem 0.55rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.4));
  border-radius: 999px;
  font-size: 0.6875rem;
  font-weight: 500;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  opacity: 0.85;
}

.tb-timeline-lanes {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.6rem;
  margin: 0.7rem 0 0;
}

.tb-timeline-lane {
  padding: 0.6rem 0.75rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.24));
  border-top: 2px solid var(--tb-timeline-accent, #0080ff);
  border-radius: 8px;
  background: var(--tb-surface, rgba(255, 255, 255, 0.03));
}

.tb-timeline-lane dt {
  margin: 0 0 0.25rem;
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  opacity: 0.7;
}

.tb-timeline-lane dd {
  margin: 0;
  font-size: 0.8125rem;
  line-height: 1.5;
}

.tb-timeline-stage-1 {
  --tb-timeline-accent: #64748b;
}
.tb-timeline-stage-2 {
  --tb-timeline-accent: #0f766e;
}
.tb-timeline-stage-3 {
  --tb-timeline-accent: #0369a1;
}
.tb-timeline-stage-4 {
  --tb-timeline-accent: #4338ca;
}
.tb-timeline-stage-5 {
  --tb-timeline-accent: #7c3aed;
}
.tb-timeline-stage-6 {
  --tb-timeline-accent: #b45309;
}
.tb-timeline-stage-7 {
  --tb-timeline-accent: #b91c1c;
}
.tb-timeline-stage-8 {
  --tb-timeline-accent: #15803d;
}

.tb-timeline-note {
  margin-top: 0.5rem;
  padding: 0.7rem 1rem;
  border: 1px dashed var(--tb-border, rgba(120, 130, 150, 0.4));
  border-radius: 10px;
  font-size: 0.8125rem;
  line-height: 1.5;
  opacity: 0.8;
}

@media (max-width: 860px) {

  .tb-timeline-lanes {
    grid-template-columns: 1fr;
  }

}

@media (max-width: 700px) {

  .tb-timeline {
    padding: 1rem;
  }

}

/* Conceptual diagram: The Product Compliance Transformation Model
   Used by knowledge-base/standards-and-technology/how-will-digital-product-passports-change-product-compliance */
.tb-transform {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(0, 128, 255, 0.05), rgba(0, 128, 255, 0));
}

.tb-transform-era {
  position: relative;
  padding: 1rem 1rem 1.05rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.24));
  border-left: 4px solid var(--tb-transform-accent, #0080ff);
  border-radius: 10px;
  background: var(--tb-surface, rgba(255, 255, 255, 0.03));
}

.tb-transform-era-label {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.5rem 0.7rem;
  margin-bottom: 0.75rem;
}

.tb-transform-era-name {
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--tb-transform-accent, #0080ff);
}

.tb-transform-era-note {
  font-size: 0.75rem;
  line-height: 1.5;
  opacity: 0.75;
}

.tb-transform-steps {
  display: grid;
  gap: 0.55rem;
}

.tb-transform-step {
  display: grid;
  grid-template-columns: 2.6rem 1fr;
  column-gap: 0.85rem;
  align-items: start;
  padding: 0.6rem 0.75rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.2));
  border-radius: 8px;
}

.tb-transform-ref {
  padding-top: 0.1rem;
  font-family: var(--tb-mono, ui-monospace, SFMono-Regular, Menlo, monospace);
  font-size: 0.6875rem;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.04em;
  color: var(--tb-transform-accent, #0080ff);
  opacity: 0.9;
}

.tb-transform-name {
  font-size: 0.875rem;
  font-weight: 600;
  line-height: 1.4;
}

.tb-transform-detail {
  grid-column: 2;
  margin-top: 0.2rem;
  font-size: 0.8125rem;
  line-height: 1.55;
  opacity: 0.88;
}

.tb-transform-era-1 {
  --tb-transform-accent: #8a6d3b;
}
.tb-transform-era-2 {
  --tb-transform-accent: #b45309;
}
.tb-transform-era-3 {
  --tb-transform-accent: #0369a1;
}

.tb-transform-note {
  padding: 0.7rem 1rem;
  border: 1px dashed var(--tb-border, rgba(120, 130, 150, 0.4));
  border-radius: 10px;
  font-size: 0.8125rem;
  line-height: 1.5;
  opacity: 0.8;
}

@media (max-width: 700px) {

  .tb-transform {
    padding: 1rem;
  }

  .tb-transform-step {
    grid-template-columns: 1fr;
    row-gap: 0.2rem;
  }

  .tb-transform-detail {
    grid-column: 1;
  }

}

/* ---------------------------------------------------------------------------
   The Digital Product Passport Value Pyramid (tb-pyramid)
   Five stacked levels, widest at the base, narrowing towards the apex.
   Used by: knowledge-base/digital-product-passports/
            what-are-the-benefits-of-a-digital-product-passport
   --------------------------------------------------------------------------- */

.tb-pyramid {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(0, 128, 255, 0), rgba(0, 128, 255, 0.06));
}

.tb-pyramid-scale {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-pyramid-scale span:last-child {
  text-align: right;
}

.tb-pyramid-levels {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.6rem;
}

.tb-pyramid-level {
  position: relative;
  width: 100%;
  padding: 0.85rem 1rem 0.95rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.24));
  border-bottom: 3px solid var(--tb-pyramid-accent, #0080ff);
  border-radius: 10px;
  background: var(--tb-surface, rgba(255, 255, 255, 0.03));
}

.tb-pyramid-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.4rem 0.7rem;
}

.tb-pyramid-tier {
  font-family: var(--tb-mono, ui-monospace, SFMono-Regular, Menlo, monospace);
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--tb-pyramid-accent, #0080ff);
}

.tb-pyramid-name {
  font-size: 0.9375rem;
  font-weight: 600;
  line-height: 1.35;
}

.tb-pyramid-detail {
  margin: 0.4rem 0 0.65rem;
  font-size: 0.8125rem;
  line-height: 1.55;
  opacity: 0.88;
}

.tb-pyramid-class {
  display: inline-block;
  padding: 0.15rem 0.5rem;
  border: 1px solid currentcolor;
  border-radius: 999px;
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.03em;
  opacity: 0.85;
}

.tb-pyramid-class-confirmed {
  color: #0369a1;
}

.tb-pyramid-class-operational {
  color: #0f766e;
}

.tb-pyramid-class-potential {
  color: #b45309;
}

.tb-pyramid-level-5 {
  --tb-pyramid-accent: #7c3aed;
  width: 62%;
}

.tb-pyramid-level-4 {
  --tb-pyramid-accent: #b45309;
  width: 71%;
}

.tb-pyramid-level-3 {
  --tb-pyramid-accent: #0f766e;
  width: 80%;
}

.tb-pyramid-level-2 {
  --tb-pyramid-accent: #0369a1;
  width: 90%;
}

.tb-pyramid-level-1 {
  --tb-pyramid-accent: #334155;
  width: 100%;
}

.tb-pyramid-note {
  padding: 0.7rem 1rem;
  border: 1px dashed var(--tb-border, rgba(120, 130, 150, 0.4));
  border-radius: 10px;
  font-size: 0.8125rem;
  line-height: 1.5;
  opacity: 0.8;
}

@media (max-width: 860px) {

  .tb-pyramid {
    padding: 1rem;
  }

  .tb-pyramid-scale {
    flex-direction: column;
    gap: 0.2rem;
  }

  .tb-pyramid-scale span:last-child {
    text-align: left;
  }

  .tb-pyramid-level-1,
  .tb-pyramid-level-2,
  .tb-pyramid-level-3,
  .tb-pyramid-level-4,
  .tb-pyramid-level-5 {
    width: 100%;
  }

}

/* ---------------------------------------------------------------------------
   The Digital Product Passport Readiness Model (tb-readiness)
   Seven sequential stages on a connected vertical spine, each carrying a
   readiness dimension chip and an exit test.
   Used by: knowledge-base/implementation/
            how-should-organisations-prepare-for-digital-product-passports
   --------------------------------------------------------------------------- */

.tb-readiness {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(0, 128, 255, 0.05), rgba(0, 128, 255, 0));
}

.tb-readiness-scale {
  display: flex;
  gap: 1rem;
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-readiness-scale span {
  flex: 1;
}

.tb-readiness-scale span + span {
  padding-left: 0.75rem;
  border-left: 1px solid var(--tb-border, rgba(120, 130, 150, 0.35));
}

.tb-readiness-stages {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
}

.tb-readiness-stage {
  position: relative;
  display: grid;
  grid-template-columns: 2.9rem 1fr;
  column-gap: 0.9rem;
  padding: 0.85rem 1rem 0.9rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.24));
  border-left: 4px solid var(--tb-readiness-accent, #0080ff);
  border-radius: 10px;
  background: var(--tb-surface, rgba(255, 255, 255, 0.03));
}

.tb-readiness-stage::after {
  content: '';
  position: absolute;
  left: 2.35rem;
  bottom: -0.55rem;
  width: 1px;
  height: 0.55rem;
  background: var(--tb-border, rgba(120, 130, 150, 0.5));
}

.tb-readiness-stage:last-child::after {
  display: none;
}

.tb-readiness-ref {
  padding-top: 0.1rem;
  font-family: var(--tb-mono, ui-monospace, SFMono-Regular, Menlo, monospace);
  font-size: 0.75rem;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.04em;
  color: var(--tb-readiness-accent, #0080ff);
}

.tb-readiness-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.35rem 0.7rem;
}

.tb-readiness-name {
  font-size: 0.9375rem;
  font-weight: 600;
  line-height: 1.35;
}

.tb-readiness-kind {
  padding: 0.1rem 0.45rem;
  border: 1px solid currentcolor;
  border-radius: 999px;
  font-size: 0.625rem;
  font-weight: 600;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--tb-readiness-accent, #0080ff);
  opacity: 0.85;
}

.tb-readiness-detail {
  margin: 0.35rem 0 0;
  font-size: 0.8125rem;
  line-height: 1.55;
  opacity: 0.88;
}

.tb-readiness-exit {
  margin: 0.5rem 0 0;
  padding-top: 0.45rem;
  border-top: 1px dashed var(--tb-border, rgba(120, 130, 150, 0.32));
  font-size: 0.75rem;
  line-height: 1.5;
  opacity: 0.78;
}

.tb-readiness-exit span {
  margin-right: 0.4rem;
  font-family: var(--tb-mono, ui-monospace, SFMono-Regular, Menlo, monospace);
  font-size: 0.625rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  opacity: 0.85;
}

.tb-readiness-stage-1 {
  --tb-readiness-accent: #334155;
}
.tb-readiness-stage-2 {
  --tb-readiness-accent: #3f4b8a;
}
.tb-readiness-stage-3 {
  --tb-readiness-accent: #0369a1;
}
.tb-readiness-stage-4 {
  --tb-readiness-accent: #0f766e;
}
.tb-readiness-stage-5 {
  --tb-readiness-accent: #4d7c0f;
}
.tb-readiness-stage-6 {
  --tb-readiness-accent: #b45309;
}
.tb-readiness-stage-7 {
  --tb-readiness-accent: #9a3412;
}

.tb-readiness-note {
  padding: 0.7rem 1rem;
  border: 1px dashed var(--tb-border, rgba(120, 130, 150, 0.4));
  border-radius: 10px;
  font-size: 0.8125rem;
  line-height: 1.5;
  opacity: 0.8;
}

@media (max-width: 700px) {

  .tb-readiness {
    padding: 1rem;
  }

  .tb-readiness-scale {
    flex-direction: column;
    gap: 0.2rem;
  }

  .tb-readiness-scale span + span {
    padding-left: 0;
    border-left: 0;
  }

  .tb-readiness-stage {
    grid-template-columns: 1fr;
    row-gap: 0.25rem;
  }

  .tb-readiness-stage::after {
    left: 1rem;
  }

}

/* ---------------------------------------------------------------------------
   The Global Product Identification Framework (tb-gpif)
   Six ascending layers from physical product to consumers and regulators, each
   naming its owner, drawn as a stacked dependency chain with a phase axis.
   Used by: knowledge-base/standards-and-technology/what-is-gs1
   --------------------------------------------------------------------------- */

.tb-gpif {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(0, 128, 255, 0.05), rgba(0, 128, 255, 0));
}

.tb-gpif-axis {
  display: flex;
  gap: 1rem;
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-gpif-axis span {
  flex: 1;
}

.tb-gpif-axis span + span {
  padding-left: 0.75rem;
  border-left: 1px solid var(--tb-border, rgba(120, 130, 150, 0.35));
}

.tb-gpif-layers {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
}

.tb-gpif-layer {
  position: relative;
  display: grid;
  grid-template-columns: 2.9rem 1fr;
  column-gap: 0.9rem;
  padding: 0.85rem 1rem 0.9rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.24));
  border-left: 4px solid var(--tb-gpif-accent, #0080ff);
  border-radius: 10px;
  background: var(--tb-surface, rgba(255, 255, 255, 0.03));
}

.tb-gpif-layer::after {
  content: '';
  position: absolute;
  left: 2.35rem;
  bottom: -0.55rem;
  width: 1px;
  height: 0.55rem;
  background: var(--tb-border, rgba(120, 130, 150, 0.5));
}

.tb-gpif-layer:last-child::after {
  display: none;
}

.tb-gpif-ref {
  padding-top: 0.1rem;
  font-family: var(--tb-mono, ui-monospace, SFMono-Regular, Menlo, monospace);
  font-size: 0.75rem;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.04em;
  color: var(--tb-gpif-accent, #0080ff);
}

.tb-gpif-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.35rem 0.7rem;
}

.tb-gpif-name {
  font-size: 0.9375rem;
  font-weight: 600;
  line-height: 1.35;
}

.tb-gpif-owner {
  padding: 0.1rem 0.45rem;
  border: 1px solid currentcolor;
  border-radius: 999px;
  font-size: 0.625rem;
  font-weight: 600;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--tb-gpif-accent, #0080ff);
  opacity: 0.85;
}

.tb-gpif-detail {
  margin: 0.35rem 0 0;
  font-size: 0.8125rem;
  line-height: 1.55;
  opacity: 0.88;
}

.tb-gpif-note {
  padding-top: 0.85rem;
  border-top: 1px dashed var(--tb-border, rgba(120, 130, 150, 0.32));
  font-size: 0.75rem;
  line-height: 1.55;
  opacity: 0.78;
}

.tb-gpif-layer-1 {
  --tb-gpif-accent: #334155;
}
.tb-gpif-layer-2 {
  --tb-gpif-accent: #3f4b8a;
}
.tb-gpif-layer-3 {
  --tb-gpif-accent: #0369a1;
}
.tb-gpif-layer-4 {
  --tb-gpif-accent: #0f766e;
}
.tb-gpif-layer-5 {
  --tb-gpif-accent: #4d7c0f;
}
.tb-gpif-layer-6 {
  --tb-gpif-accent: #b45309;
}

@media (max-width: 640px) {

  .tb-gpif {
    padding: 1.1rem;
  }
  .tb-gpif-axis {
    display: none;
  }
  .tb-gpif-layer {
    grid-template-columns: 1fr;
    row-gap: 0.3rem;
  }
  .tb-gpif-layer::after {
    left: 1rem;
  }

}

/* ---------------------------------------------------------------------------
   The Connected Product Identity Model (tb-cpim)
   Seven connected layers from physical product to point of use, banded by
   mutability: permanent, fixed at print, changeable for life.
   Used by: knowledge-base/standards-and-technology/what-is-gs1-digital-link
   --------------------------------------------------------------------------- */

.tb-cpim {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(0, 128, 255, 0.05), rgba(0, 128, 255, 0));
}

.tb-cpim-axis {
  display: flex;
  gap: 1rem;
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-cpim-axis span {
  flex: 1;
}

.tb-cpim-axis span + span {
  padding-left: 0.75rem;
  border-left: 1px solid var(--tb-border, rgba(120, 130, 150, 0.35));
}

.tb-cpim-layers {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
}

.tb-cpim-layer {
  position: relative;
  display: grid;
  grid-template-columns: 2.9rem 1fr;
  column-gap: 0.9rem;
  padding: 0.85rem 1rem 0.9rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.24));
  border-left: 4px solid var(--tb-cpim-accent, #0080ff);
  border-radius: 10px;
  background: var(--tb-surface, rgba(255, 255, 255, 0.03));
}

.tb-cpim-layer::after {
  content: '';
  position: absolute;
  left: 2.35rem;
  bottom: -0.55rem;
  width: 1px;
  height: 0.55rem;
  background: var(--tb-border, rgba(120, 130, 150, 0.5));
}

.tb-cpim-layer:last-child::after {
  display: none;
}

.tb-cpim-ref {
  padding-top: 0.1rem;
  font-family: var(--tb-mono, ui-monospace, SFMono-Regular, Menlo, monospace);
  font-size: 0.75rem;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.04em;
  color: var(--tb-cpim-accent, #0080ff);
}

.tb-cpim-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.35rem 0.7rem;
}

.tb-cpim-name {
  font-size: 0.9375rem;
  font-weight: 600;
  line-height: 1.35;
}

.tb-cpim-kind {
  padding: 0.1rem 0.45rem;
  border: 1px solid currentcolor;
  border-radius: 999px;
  font-size: 0.625rem;
  font-weight: 600;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--tb-cpim-accent, #0080ff);
  opacity: 0.85;
}

.tb-cpim-detail {
  margin: 0.35rem 0 0;
  font-size: 0.8125rem;
  line-height: 1.55;
  opacity: 0.88;
}

.tb-cpim-note {
  padding-top: 0.85rem;
  border-top: 1px dashed var(--tb-border, rgba(120, 130, 150, 0.32));
  font-size: 0.75rem;
  line-height: 1.55;
  opacity: 0.78;
}

.tb-cpim-layer-1 {
  --tb-cpim-accent: #334155;
}
.tb-cpim-layer-2 {
  --tb-cpim-accent: #3f4b8a;
}
.tb-cpim-layer-3 {
  --tb-cpim-accent: #0369a1;
}
.tb-cpim-layer-4 {
  --tb-cpim-accent: #0e7490;
}
.tb-cpim-layer-5 {
  --tb-cpim-accent: #0f766e;
}
.tb-cpim-layer-6 {
  --tb-cpim-accent: #4d7c0f;
}
.tb-cpim-layer-7 {
  --tb-cpim-accent: #b45309;
}

@media (max-width: 640px) {

  .tb-cpim {
    padding: 1.1rem;
  }
  .tb-cpim-axis {
    display: none;
  }
  .tb-cpim-layer {
    grid-template-columns: 1fr;
    row-gap: 0.3rem;
  }
  .tb-cpim-layer::after {
    left: 1rem;
  }

}

/* ---------------------------------------------------------------------------
   The Product Identity Stack (tb-pistack)
   Conceptual diagram: seven ascending layers from physical product to digital
   information services, banded physical / identity and structure / capture.
   --------------------------------------------------------------------------- */

.tb-pistack {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(13, 148, 136, 0.05), rgba(13, 148, 136, 0));
}

.tb-pistack-axis {
  display: flex;
  gap: 1rem;
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-pistack-axis span {
  flex: 1;
}

.tb-pistack-axis span + span {
  padding-left: 0.75rem;
  border-left: 1px solid var(--tb-border, rgba(120, 130, 150, 0.35));
}

.tb-pistack-layers {
  display: flex;
  flex-direction: column-reverse;
  gap: 0.55rem;
}

.tb-pistack-layer {
  position: relative;
  display: grid;
  grid-template-columns: 2.6rem 1fr;
  column-gap: 0.9rem;
  padding: 0.85rem 1rem 0.9rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.24));
  border-left: 4px solid var(--tb-pistack-accent, #0d9488);
  border-radius: 10px;
  background: var(--tb-surface, rgba(255, 255, 255, 0.03));
}

.tb-pistack-layer::after {
  content: '';
  position: absolute;
  left: 2.1rem;
  top: -0.55rem;
  width: 1px;
  height: 0.55rem;
  background: var(--tb-border, rgba(120, 130, 150, 0.5));
}

.tb-pistack-layer:last-child::after {
  display: none;
}

.tb-pistack-ref {
  padding-top: 0.1rem;
  font-family: var(--tb-mono, ui-monospace, SFMono-Regular, Menlo, monospace);
  font-size: 0.75rem;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.04em;
  color: var(--tb-pistack-accent, #0d9488);
}

.tb-pistack-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.35rem 0.7rem;
}

.tb-pistack-name {
  font-size: 0.9375rem;
  font-weight: 600;
  line-height: 1.35;
}

.tb-pistack-role {
  padding: 0.1rem 0.45rem;
  border: 1px solid currentcolor;
  border-radius: 999px;
  font-size: 0.625rem;
  font-weight: 600;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--tb-pistack-accent, #0d9488);
  opacity: 0.85;
}

.tb-pistack-detail {
  margin: 0.35rem 0 0;
  font-size: 0.8125rem;
  line-height: 1.55;
  opacity: 0.88;
}

.tb-pistack-note {
  padding-top: 0.85rem;
  border-top: 1px dashed var(--tb-border, rgba(120, 130, 150, 0.32));
  font-size: 0.75rem;
  line-height: 1.55;
  opacity: 0.78;
}

.tb-pistack-layer-1 {
  --tb-pistack-accent: #334155;
}
.tb-pistack-layer-2 {
  --tb-pistack-accent: #3f4b8a;
}
.tb-pistack-layer-3 {
  --tb-pistack-accent: #0369a1;
}
.tb-pistack-layer-4 {
  --tb-pistack-accent: #0e7490;
}
.tb-pistack-layer-5 {
  --tb-pistack-accent: #0f766e;
}
.tb-pistack-layer-6 {
  --tb-pistack-accent: #4d7c0f;
}
.tb-pistack-layer-7 {
  --tb-pistack-accent: #b45309;
}

@media (max-width: 640px) {

  .tb-pistack {
    padding: 1.1rem;
  }
  .tb-pistack-axis {
    display: none;
  }
  .tb-pistack-layer {
    grid-template-columns: 1fr;
    row-gap: 0.3rem;
  }
  .tb-pistack-layer::after {
    left: 1rem;
  }

}

/* ---------------------------------------------------------------------------
   The Product Identity Hierarchy (tb-pih)
   Conceptual diagram: seven descending layers from physical product to the
   Digital Product Passport, banded foundation / identification / application.
   --------------------------------------------------------------------------- */

.tb-pih {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(63, 75, 138, 0.05), rgba(63, 75, 138, 0));
}

.tb-pih-axis {
  display: flex;
  gap: 1rem;
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-pih-axis span {
  flex: 1;
}

.tb-pih-axis span + span {
  padding-left: 0.75rem;
  border-left: 1px solid var(--tb-border, rgba(120, 130, 150, 0.35));
}

.tb-pih-layers {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
}

.tb-pih-layer {
  position: relative;
  display: grid;
  grid-template-columns: 2.6rem 1fr;
  column-gap: 0.9rem;
  padding: 0.85rem 1rem 0.9rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.24));
  border-left: 4px solid var(--tb-pih-accent, #3f4b8a);
  border-radius: 10px;
  background: var(--tb-surface, rgba(255, 255, 255, 0.03));
}

.tb-pih-layer::after {
  content: '';
  position: absolute;
  left: 2.1rem;
  top: -0.55rem;
  width: 1px;
  height: 0.55rem;
  background: var(--tb-border, rgba(120, 130, 150, 0.5));
}

.tb-pih-layer:first-child::after {
  display: none;
}

.tb-pih-ref {
  padding-top: 0.1rem;
  font-family: var(--tb-mono, ui-monospace, SFMono-Regular, Menlo, monospace);
  font-size: 0.75rem;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.04em;
  color: var(--tb-pih-accent, #3f4b8a);
}

.tb-pih-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.35rem 0.7rem;
}

.tb-pih-name {
  font-size: 0.9375rem;
  font-weight: 600;
  line-height: 1.35;
}

.tb-pih-role {
  padding: 0.1rem 0.45rem;
  border: 1px solid currentcolor;
  border-radius: 999px;
  font-size: 0.625rem;
  font-weight: 600;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--tb-pih-accent, #3f4b8a);
  opacity: 0.85;
}

.tb-pih-detail {
  margin: 0.35rem 0 0;
  font-size: 0.8125rem;
  line-height: 1.55;
  opacity: 0.88;
}

.tb-pih-note {
  padding-top: 0.85rem;
  border-top: 1px dashed var(--tb-border, rgba(120, 130, 150, 0.32));
  font-size: 0.75rem;
  line-height: 1.55;
  opacity: 0.78;
}

.tb-pih-layer-1 {
  --tb-pih-accent: #334155;
}
.tb-pih-layer-2 {
  --tb-pih-accent: #3f4b8a;
}
.tb-pih-layer-3 {
  --tb-pih-accent: #0369a1;
}
.tb-pih-layer-4 {
  --tb-pih-accent: #0e7490;
}
.tb-pih-layer-5 {
  --tb-pih-accent: #0f766e;
}
.tb-pih-layer-6 {
  --tb-pih-accent: #4d7c0f;
}
.tb-pih-layer-7 {
  --tb-pih-accent: #b45309;
}

@media (max-width: 640px) {

  .tb-pih {
    padding: 1.1rem;
  }
  .tb-pih-axis {
    display: none;
  }
  .tb-pih-layer {
    grid-template-columns: 1fr;
    row-gap: 0.3rem;
  }
  .tb-pih-layer::after {
    left: 1rem;
  }

}

/* ---------------------------------------------------------------------------
   The Global Product Identity Model (tb-gpim)
   Conceptual diagram: seven descending layers from the accountable
   manufacturer to the Digital Product Passport, banded allocation /
   identity / use. Layer four (the GTIN) is the emphasised keystone.
   --------------------------------------------------------------------------- */

.tb-gpim {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(14, 116, 144, 0.055), rgba(14, 116, 144, 0));
}

.tb-gpim-axis {
  display: flex;
  gap: 1rem;
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-gpim-axis span {
  flex: 1;
}

.tb-gpim-axis span + span {
  padding-left: 0.75rem;
  border-left: 1px solid var(--tb-border, rgba(120, 130, 150, 0.35));
}

.tb-gpim-layers {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
}

.tb-gpim-layer {
  position: relative;
  display: grid;
  grid-template-columns: 2.6rem 1fr;
  column-gap: 0.9rem;
  padding: 0.85rem 1rem 0.9rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.24));
  border-left: 4px solid var(--tb-gpim-accent, #0e7490);
  border-radius: 10px;
  background: var(--tb-surface, rgba(255, 255, 255, 0.03));
}

.tb-gpim-layer::after {
  content: '';
  position: absolute;
  left: 2.1rem;
  top: -0.55rem;
  width: 1px;
  height: 0.55rem;
  background: var(--tb-border, rgba(120, 130, 150, 0.5));
}

.tb-gpim-layer:first-child::after {
  display: none;
}

.tb-gpim-ref {
  padding-top: 0.1rem;
  font-family: var(--tb-mono, ui-monospace, SFMono-Regular, Menlo, monospace);
  font-size: 0.75rem;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.04em;
  color: var(--tb-gpim-accent, #0e7490);
}

.tb-gpim-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.35rem 0.7rem;
}

.tb-gpim-name {
  font-size: 0.9375rem;
  font-weight: 600;
  line-height: 1.35;
}

.tb-gpim-role {
  padding: 0.1rem 0.45rem;
  border: 1px solid currentcolor;
  border-radius: 999px;
  font-size: 0.625rem;
  font-weight: 600;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--tb-gpim-accent, #0e7490);
  opacity: 0.85;
}

.tb-gpim-detail {
  margin: 0.35rem 0 0;
  font-size: 0.8125rem;
  line-height: 1.55;
  opacity: 0.88;
}

.tb-gpim-note {
  padding-top: 0.85rem;
  border-top: 1px dashed var(--tb-border, rgba(120, 130, 150, 0.32));
  font-size: 0.75rem;
  line-height: 1.55;
  opacity: 0.78;
}

.tb-gpim-layer-1 {
  --tb-gpim-accent: #334155;
}
.tb-gpim-layer-2 {
  --tb-gpim-accent: #3f4b8a;
}
.tb-gpim-layer-3 {
  --tb-gpim-accent: #0369a1;
}
.tb-gpim-layer-4 {
  --tb-gpim-accent: #0e7490;
  background: linear-gradient(
    90deg,
    rgba(14, 116, 144, 0.09),
    var(--tb-surface, rgba(255, 255, 255, 0.03)) 55%
  );
}
.tb-gpim-layer-4 .tb-gpim-name {
  font-size: 1rem;
}
.tb-gpim-layer-5 {
  --tb-gpim-accent: #0f766e;
}
.tb-gpim-layer-6 {
  --tb-gpim-accent: #4d7c0f;
}
.tb-gpim-layer-7 {
  --tb-gpim-accent: #b45309;
}

@media (max-width: 640px) {

  .tb-gpim {
    padding: 1.1rem;
  }
  .tb-gpim-axis {
    display: none;
  }
  .tb-gpim-layer {
    grid-template-columns: 1fr;
    row-gap: 0.3rem;
  }
  .tb-gpim-layer::after {
    left: 1rem;
  }

}

/* ---------------------------------------------------------------------------
   The Product Information Delivery Model (tb-pidm)
   Conceptual diagram: seven descending layers from product identity to
   information services, banded identity / carriage / delivery. Layer four
   (the data carrier) is the emphasised pivot between the two halves.
   --------------------------------------------------------------------------- */

.tb-pidm {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(15, 118, 110, 0.055), rgba(15, 118, 110, 0));
}

.tb-pidm-axis {
  display: flex;
  gap: 1rem;
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-pidm-axis span {
  flex: 1;
}

.tb-pidm-axis span + span {
  padding-left: 0.75rem;
  border-left: 1px solid var(--tb-border, rgba(120, 130, 150, 0.35));
}

.tb-pidm-layers {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
}

.tb-pidm-layer {
  position: relative;
  display: grid;
  grid-template-columns: 2.6rem 1fr;
  column-gap: 0.9rem;
  padding: 0.85rem 1rem 0.9rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.24));
  border-left: 4px solid var(--tb-pidm-accent, #0f766e);
  border-radius: 10px;
  background: var(--tb-surface, rgba(255, 255, 255, 0.03));
}

.tb-pidm-layer::after {
  content: '';
  position: absolute;
  left: 2.1rem;
  top: -0.55rem;
  width: 1px;
  height: 0.55rem;
  background: var(--tb-border, rgba(120, 130, 150, 0.5));
}

.tb-pidm-layer:first-child::after {
  display: none;
}

.tb-pidm-ref {
  padding-top: 0.1rem;
  font-family: var(--tb-mono, ui-monospace, SFMono-Regular, Menlo, monospace);
  font-size: 0.75rem;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.04em;
  color: var(--tb-pidm-accent, #0f766e);
}

.tb-pidm-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.35rem 0.7rem;
}

.tb-pidm-name {
  font-size: 0.9375rem;
  font-weight: 600;
  line-height: 1.35;
}

.tb-pidm-role {
  padding: 0.1rem 0.45rem;
  border: 1px solid currentcolor;
  border-radius: 999px;
  font-size: 0.625rem;
  font-weight: 600;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--tb-pidm-accent, #0f766e);
  opacity: 0.85;
}

.tb-pidm-detail {
  margin: 0.35rem 0 0;
  font-size: 0.8125rem;
  line-height: 1.55;
  opacity: 0.88;
}

.tb-pidm-note {
  padding-top: 0.85rem;
  border-top: 1px dashed var(--tb-border, rgba(120, 130, 150, 0.32));
  font-size: 0.75rem;
  line-height: 1.55;
  opacity: 0.78;
}

.tb-pidm-layer-1 {
  --tb-pidm-accent: #334155;
}
.tb-pidm-layer-2 {
  --tb-pidm-accent: #3f4b8a;
}
.tb-pidm-layer-3 {
  --tb-pidm-accent: #0369a1;
}
.tb-pidm-layer-4 {
  --tb-pidm-accent: #0f766e;
  background: linear-gradient(
    90deg,
    rgba(15, 118, 110, 0.09),
    var(--tb-surface, rgba(255, 255, 255, 0.03)) 55%
  );
}
.tb-pidm-layer-4 .tb-pidm-name {
  font-size: 1rem;
}
.tb-pidm-layer-5 {
  --tb-pidm-accent: #0e7490;
}
.tb-pidm-layer-6 {
  --tb-pidm-accent: #4d7c0f;
}
.tb-pidm-layer-7 {
  --tb-pidm-accent: #b45309;
}

@media (max-width: 640px) {

  .tb-pidm {
    padding: 1.1rem;
  }
  .tb-pidm-axis {
    display: none;
  }
  .tb-pidm-layer {
    grid-template-columns: 1fr;
    row-gap: 0.3rem;
  }
  .tb-pidm-layer::after {
    left: 1rem;
  }

}

/* ---------------------------------------------------------------------------
   The Product Event Lifecycle (tb-pel)
   Conceptual diagram: seven descending stages from creation to recovery,
   banded production / distribution / ownership and use. The identifier is
   constant down the column; each stage adds an event.
   --------------------------------------------------------------------------- */

.tb-pel {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(3, 105, 161, 0.055), rgba(3, 105, 161, 0));
}

.tb-pel-axis {
  display: flex;
  gap: 1rem;
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-pel-axis span {
  flex: 1;
}

.tb-pel-axis span + span {
  padding-left: 0.75rem;
  border-left: 1px solid var(--tb-border, rgba(120, 130, 150, 0.35));
}

.tb-pel-stages {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
}

.tb-pel-stage {
  position: relative;
  display: grid;
  grid-template-columns: 2.6rem 1fr;
  column-gap: 0.9rem;
  padding: 0.85rem 1rem 0.9rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.24));
  border-left: 4px solid var(--tb-pel-accent, #0369a1);
  border-radius: 10px;
  background: var(--tb-surface, rgba(255, 255, 255, 0.03));
}

.tb-pel-stage::after {
  content: '';
  position: absolute;
  left: 1.55rem;
  top: -0.55rem;
  height: 0.55rem;
  border-left: 2px dotted var(--tb-border, rgba(120, 130, 150, 0.5));
}

.tb-pel-stage:first-child::after {
  display: none;
}

.tb-pel-ref {
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  color: var(--tb-pel-accent, #0369a1);
}

.tb-pel-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.5rem 0.75rem;
}

.tb-pel-name {
  font-size: 1rem;
  font-weight: 650;
  line-height: 1.3;
}

.tb-pel-role {
  padding: 0.1rem 0.5rem;
  border: 1px solid currentColor;
  border-radius: 999px;
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  color: var(--tb-pel-accent, #0369a1);
  opacity: 0.9;
}

.tb-pel-detail {
  margin: 0.4rem 0 0;
  font-size: 0.9375rem;
  line-height: 1.55;
  opacity: 0.88;
}

.tb-pel-note {
  margin: 0;
  padding-top: 0.35rem;
  font-size: 0.875rem;
  font-style: italic;
  line-height: 1.5;
  opacity: 0.75;
}

.tb-pel-stage-1 {
  --tb-pel-accent: #334155;
}
.tb-pel-stage-2 {
  --tb-pel-accent: #3f4b8a;
}
.tb-pel-stage-3 {
  --tb-pel-accent: #0369a1;
}
.tb-pel-stage-4 {
  --tb-pel-accent: #0e7490;
}
.tb-pel-stage-5 {
  --tb-pel-accent: #0f766e;
}
.tb-pel-stage-6 {
  --tb-pel-accent: #4d7c0f;
}
.tb-pel-stage-7 {
  --tb-pel-accent: #b45309;
}

.tb-pel-chain {
  margin: 1.75rem 0;
  padding: 1.25rem 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.24));
  border-radius: 12px;
  background: var(--tb-surface, rgba(255, 255, 255, 0.03));
}

.tb-pel-chain ol {
  margin: 0;
  padding-left: 1.15rem;
}

.tb-pel-chain li + li {
  margin-top: 0.6rem;
}

@media (max-width: 640px) {

  .tb-pel {
    padding: 1rem;
  }
  .tb-pel-axis {
    display: none;
  }
  .tb-pel-stage {
    grid-template-columns: 1fr;
    row-gap: 0.35rem;
  }
  .tb-pel-stage::after {
    left: 1rem;
  }

}

/* ---------------------------------------------------------------------------
   The Trusted Product Data Flow Model (tb-tpdf)
   Conceptual diagram: ten descending lifecycle stages from raw materials to
   recycling, each annotated with the standards and systems operating there.
   --------------------------------------------------------------------------- */

.tb-tpdf {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(15, 118, 110, 0.055), rgba(15, 118, 110, 0));
}

.tb-tpdf-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem 0.55rem;
}

.tb-tpdf-key {
  padding: 0.15rem 0.55rem;
  border: 1px solid currentColor;
  border-radius: 999px;
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  opacity: 0.9;
}

.tb-tpdf-key-id {
  color: #334155;
}
.tb-tpdf-key-link {
  color: #0369a1;
}
.tb-tpdf-key-event {
  color: #0f766e;
}
.tb-tpdf-key-dpp {
  color: #b45309;
}
.tb-tpdf-key-sys {
  color: #6b21a8;
}

.tb-tpdf-stages {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
}

.tb-tpdf-stage {
  position: relative;
  display: grid;
  grid-template-columns: 2.6rem 1fr;
  column-gap: 0.9rem;
  padding: 0.85rem 1rem 0.9rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.24));
  border-left: 4px solid var(--tb-tpdf-accent, #0f766e);
  border-radius: 10px;
  background: var(--tb-surface, rgba(255, 255, 255, 0.03));
}

.tb-tpdf-stage::after {
  content: '';
  position: absolute;
  left: 1.55rem;
  top: -0.55rem;
  height: 0.55rem;
  border-left: 2px dotted var(--tb-border, rgba(120, 130, 150, 0.5));
}

.tb-tpdf-stage:first-child::after {
  display: none;
}

.tb-tpdf-ref {
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  color: var(--tb-tpdf-accent, #0f766e);
}

.tb-tpdf-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.5rem 0.75rem;
}

.tb-tpdf-name {
  font-size: 1rem;
  font-weight: 650;
  line-height: 1.3;
}

.tb-tpdf-role {
  padding: 0.1rem 0.5rem;
  border: 1px solid currentColor;
  border-radius: 999px;
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  color: var(--tb-tpdf-accent, #0f766e);
  opacity: 0.9;
}

.tb-tpdf-detail {
  margin: 0.4rem 0 0;
  font-size: 0.9375rem;
  line-height: 1.55;
  opacity: 0.88;
}

.tb-tpdf-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem 0.4rem;
  margin-top: 0.6rem;
}

.tb-tpdf-tag {
  padding: 0.1rem 0.45rem;
  border: 1px dashed currentColor;
  border-radius: 6px;
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  opacity: 0.85;
}

.tb-tpdf-tag-id {
  color: #334155;
}
.tb-tpdf-tag-link {
  color: #0369a1;
}
.tb-tpdf-tag-event {
  color: #0f766e;
}
.tb-tpdf-tag-dpp {
  color: #b45309;
}
.tb-tpdf-tag-sys {
  color: #6b21a8;
}

.tb-tpdf-note {
  margin: 0;
  padding-top: 0.35rem;
  font-size: 0.875rem;
  font-style: italic;
  line-height: 1.5;
  opacity: 0.75;
}

.tb-tpdf-stage-1 {
  --tb-tpdf-accent: #57534e;
}
.tb-tpdf-stage-2 {
  --tb-tpdf-accent: #334155;
}
.tb-tpdf-stage-3 {
  --tb-tpdf-accent: #3f4b8a;
}
.tb-tpdf-stage-4 {
  --tb-tpdf-accent: #0369a1;
}
.tb-tpdf-stage-5 {
  --tb-tpdf-accent: #0e7490;
}
.tb-tpdf-stage-6 {
  --tb-tpdf-accent: #0f766e;
}
.tb-tpdf-stage-7 {
  --tb-tpdf-accent: #15803d;
}
.tb-tpdf-stage-8 {
  --tb-tpdf-accent: #4d7c0f;
}
.tb-tpdf-stage-9 {
  --tb-tpdf-accent: #a16207;
}
.tb-tpdf-stage-10 {
  --tb-tpdf-accent: #b45309;
}

@media (max-width: 640px) {

  .tb-tpdf {
    padding: 1rem;
  }

  .tb-tpdf-stage {
    grid-template-columns: 1fr;
  }

  .tb-tpdf-ref {
    justify-content: flex-start;
  }

  .tb-tpdf-stage::after {
    left: 1rem;
  }

}

/* ---------------------------------------------------------------------------
   The Product Data Foundation Model (tb-pdfm)
   Conceptual diagram: six descending layers from the physical product to the
   Digital Product Passport. Dependency runs downward only.
   --------------------------------------------------------------------------- */

.tb-pdfm {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(15, 118, 110, 0.055), rgba(15, 118, 110, 0));
}

.tb-pdfm-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1rem;
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-pdfm-legend-item + .tb-pdfm-legend-item {
  padding-left: 1rem;
  border-left: 1px solid var(--tb-border, rgba(120, 130, 150, 0.35));
}

.tb-pdfm-layers {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
}

.tb-pdfm-layer {
  position: relative;
  display: grid;
  grid-template-columns: 2.6rem 1fr;
  column-gap: 0.9rem;
  padding: 0.85rem 1rem 0.9rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.24));
  border-left: 4px solid var(--tb-pdfm-accent, #0f766e);
  border-radius: 10px;
  background: var(--tb-surface, rgba(255, 255, 255, 0.03));
}

.tb-pdfm-layer::after {
  content: '';
  position: absolute;
  left: 1.55rem;
  top: -0.55rem;
  height: 0.55rem;
  border-left: 2px dotted var(--tb-border, rgba(120, 130, 150, 0.5));
}

.tb-pdfm-layer:first-child::after {
  display: none;
}

.tb-pdfm-ref {
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  color: var(--tb-pdfm-accent, #0f766e);
}

.tb-pdfm-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.5rem 0.75rem;
}

.tb-pdfm-name {
  font-size: 1rem;
  font-weight: 650;
  line-height: 1.3;
}

.tb-pdfm-kind {
  padding: 0.1rem 0.5rem;
  border: 1px solid currentColor;
  border-radius: 999px;
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  color: var(--tb-pdfm-accent, #0f766e);
  opacity: 0.9;
}

.tb-pdfm-detail {
  margin: 0.4rem 0 0;
  font-size: 0.9375rem;
  line-height: 1.55;
  opacity: 0.88;
}

.tb-pdfm-note {
  margin: 0;
  padding-top: 0.35rem;
  font-size: 0.875rem;
  font-style: italic;
  line-height: 1.5;
  opacity: 0.75;
}

.tb-pdfm-layer-1 {
  --tb-pdfm-accent: #334155;
}
.tb-pdfm-layer-2 {
  --tb-pdfm-accent: #0f766e;
}
.tb-pdfm-layer-3 {
  --tb-pdfm-accent: #0e7490;
}
.tb-pdfm-layer-4 {
  --tb-pdfm-accent: #0369a1;
}
.tb-pdfm-layer-5 {
  --tb-pdfm-accent: #3f4b8a;
}
.tb-pdfm-layer-6 {
  --tb-pdfm-accent: #7c3aed;
}

@media (max-width: 640px) {

  .tb-pdfm {
    padding: 1rem;
  }

  .tb-pdfm-layer {
    grid-template-columns: 2rem 1fr;
    column-gap: 0.6rem;
  }

  .tb-pdfm-layer::after {
    left: 1rem;
  }

}

/* ---------------------------------------------------------------------------
   The Enterprise Product Data Landscape (tb-epdl)
   Conceptual diagram: six descending layers from PLM to customers, each stating
   what the layer owns and what it does not own. Information flows downward.
   --------------------------------------------------------------------------- */

.tb-epdl {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(63, 75, 138, 0.055), rgba(63, 75, 138, 0));
}

.tb-epdl-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1rem;
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-epdl-legend-item + .tb-epdl-legend-item {
  padding-left: 1rem;
  border-left: 1px solid var(--tb-border, rgba(120, 130, 150, 0.35));
}

.tb-epdl-layers {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
}

.tb-epdl-layer {
  position: relative;
  display: grid;
  grid-template-columns: 2.6rem 1fr;
  column-gap: 0.9rem;
  padding: 0.85rem 1rem 0.9rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.24));
  border-left: 4px solid var(--tb-epdl-accent, #3f4b8a);
  border-radius: 10px;
  background: var(--tb-surface, rgba(255, 255, 255, 0.03));
}

.tb-epdl-layer::after {
  content: '';
  position: absolute;
  left: 1.55rem;
  top: -0.55rem;
  height: 0.55rem;
  border-left: 2px dotted var(--tb-border, rgba(120, 130, 150, 0.5));
}

.tb-epdl-layer:first-child::after {
  display: none;
}

.tb-epdl-ref {
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  color: var(--tb-epdl-accent, #3f4b8a);
}

.tb-epdl-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.5rem 0.75rem;
}

.tb-epdl-name {
  font-size: 1rem;
  font-weight: 650;
  line-height: 1.3;
}

.tb-epdl-kind {
  padding: 0.1rem 0.5rem;
  border: 1px solid currentColor;
  border-radius: 999px;
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  color: var(--tb-epdl-accent, #3f4b8a);
  opacity: 0.9;
}

.tb-epdl-detail {
  margin: 0.4rem 0 0;
  font-size: 0.9375rem;
  line-height: 1.55;
  opacity: 0.88;
}

.tb-epdl-negative {
  opacity: 0.72;
}

.tb-epdl-note {
  margin: 0;
  padding-top: 0.35rem;
  font-size: 0.875rem;
  font-style: italic;
  line-height: 1.5;
  opacity: 0.75;
}

.tb-epdl-layer-1 {
  --tb-epdl-accent: #334155;
}
.tb-epdl-layer-2 {
  --tb-epdl-accent: #0f766e;
}
.tb-epdl-layer-3 {
  --tb-epdl-accent: #0e7490;
}
.tb-epdl-layer-4 {
  --tb-epdl-accent: #0369a1;
}
.tb-epdl-layer-5 {
  --tb-epdl-accent: #7c3aed;
}
.tb-epdl-layer-6 {
  --tb-epdl-accent: #b45309;
}

@media (max-width: 640px) {

  .tb-epdl {
    padding: 1rem;
  }

  .tb-epdl-layer {
    grid-template-columns: 2rem 1fr;
    column-gap: 0.6rem;
  }

  .tb-epdl-layer::after {
    left: 1rem;
  }

}

/* ---------------------------------------------------------------------------
   The Enterprise Integration Model (tb-eim)
   Conceptual diagram: five contributing systems fan into an integration layer,
   which in turn feeds a single publication tier.
   --------------------------------------------------------------------------- */

.tb-eim {
  display: flex;
  flex-direction: column;
  gap: 0.9rem;
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(63, 75, 138, 0.055), rgba(63, 75, 138, 0));
}

.tb-eim-tier {
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
}

.tb-eim-tier-label {
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-eim-sources {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 0.6rem;
}

.tb-eim-source,
.tb-eim-hub,
.tb-eim-target {
  padding: 0.85rem 1rem 0.9rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.24));
  border-left: 4px solid var(--tb-eim-accent, #3f4b8a);
  border-radius: 10px;
  background: var(--tb-surface, rgba(255, 255, 255, 0.03));
}

.tb-eim-name {
  font-size: 1rem;
  font-weight: 650;
  line-height: 1.3;
}

.tb-eim-kind {
  display: inline-block;
  margin-top: 0.35rem;
  padding: 0.1rem 0.5rem;
  border: 1px solid currentColor;
  border-radius: 999px;
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  color: var(--tb-eim-accent, #3f4b8a);
  opacity: 0.9;
}

.tb-eim-detail,
.tb-eim-role,
.tb-eim-negative {
  margin: 0.45rem 0 0;
  font-size: 0.9375rem;
  line-height: 1.55;
  opacity: 0.88;
}

.tb-eim-role {
  font-weight: 600;
  opacity: 0.8;
}

.tb-eim-negative {
  opacity: 0.72;
}

.tb-eim-duties {
  margin: 0.5rem 0 0;
  padding-left: 1.1rem;
  font-size: 0.9375rem;
  line-height: 1.55;
  opacity: 0.88;
}

.tb-eim-arrow {
  align-self: center;
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-eim-arrow::before {
  content: '\2193';
  margin-right: 0.45rem;
}

.tb-eim-note {
  margin: 0;
  padding-top: 0.35rem;
  font-size: 0.875rem;
  font-style: italic;
  line-height: 1.5;
  opacity: 0.75;
}

.tb-eim-source-1 {
  --tb-eim-accent: #334155;
}
.tb-eim-source-2 {
  --tb-eim-accent: #0f766e;
}
.tb-eim-source-3 {
  --tb-eim-accent: #0e7490;
}
.tb-eim-source-4 {
  --tb-eim-accent: #0369a1;
}
.tb-eim-source-5 {
  --tb-eim-accent: #b45309;
}

.tb-eim-hub {
  --tb-eim-accent: #7c3aed;
}

.tb-eim-target {
  --tb-eim-accent: #b45309;
}

@media (max-width: 640px) {

  .tb-eim {
    padding: 1rem;
  }

}

/* ---------------------------------------------------------------------------
   The Trusted Product Data Governance Framework (tb-tpdg)
   Conceptual diagram: six dependent governance layers from Ownership to
   Compliance, each stating its purpose and the cost of its absence.
   --------------------------------------------------------------------------- */

.tb-tpdg {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(63, 75, 138, 0.055), rgba(63, 75, 138, 0));
}

.tb-tpdg-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1rem;
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-tpdg-legend-item + .tb-tpdg-legend-item {
  padding-left: 1rem;
  border-left: 1px solid var(--tb-border, rgba(120, 130, 150, 0.35));
}

.tb-tpdg-layers {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
}

.tb-tpdg-layer {
  position: relative;
  display: grid;
  grid-template-columns: 2.6rem 1fr;
  column-gap: 0.9rem;
  padding: 0.85rem 1rem 0.9rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.24));
  border-left: 4px solid var(--tb-tpdg-accent, #3f4b8a);
  border-radius: 10px;
  background: var(--tb-surface, rgba(255, 255, 255, 0.03));
}

.tb-tpdg-layer::after {
  content: '';
  position: absolute;
  left: 1.55rem;
  top: -0.55rem;
  height: 0.55rem;
  border-left: 2px dotted var(--tb-border, rgba(120, 130, 150, 0.5));
}

.tb-tpdg-layer:first-child::after {
  display: none;
}

.tb-tpdg-ref {
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  color: var(--tb-tpdg-accent, #3f4b8a);
}

.tb-tpdg-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.5rem 0.75rem;
}

.tb-tpdg-name {
  font-size: 1rem;
  font-weight: 650;
  line-height: 1.3;
}

.tb-tpdg-kind {
  padding: 0.1rem 0.5rem;
  border: 1px solid currentColor;
  border-radius: 999px;
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  color: var(--tb-tpdg-accent, #3f4b8a);
  opacity: 0.9;
}

.tb-tpdg-detail {
  margin: 0.4rem 0 0;
  font-size: 0.9375rem;
  line-height: 1.55;
  opacity: 0.88;
}

.tb-tpdg-negative {
  margin: 0.4rem 0 0;
  font-size: 0.9375rem;
  line-height: 1.55;
  opacity: 0.72;
}

.tb-tpdg-note {
  margin: 0;
  padding-top: 0.35rem;
  font-size: 0.875rem;
  font-style: italic;
  line-height: 1.5;
  opacity: 0.75;
}

.tb-tpdg-layer-1 {
  --tb-tpdg-accent: #334155;
}
.tb-tpdg-layer-2 {
  --tb-tpdg-accent: #0f766e;
}
.tb-tpdg-layer-3 {
  --tb-tpdg-accent: #0e7490;
}
.tb-tpdg-layer-4 {
  --tb-tpdg-accent: #0369a1;
}
.tb-tpdg-layer-5 {
  --tb-tpdg-accent: #7c3aed;
}
.tb-tpdg-layer-6 {
  --tb-tpdg-accent: #b45309;
}

@media (max-width: 640px) {

  .tb-tpdg {
    padding: 1rem;
  }

  .tb-tpdg-layer {
    grid-template-columns: 2rem 1fr;
    column-gap: 0.6rem;
  }

  .tb-tpdg-layer::after {
    left: 1rem;
  }

}

/* ---------------------------------------------------------------------------
   The Product Data Maturity Model (tb-pdmm)
   Conceptual diagram: six dependent maturity levels from Data Collection to
   Continuous Improvement, each stating its purpose and its exit signal.
   --------------------------------------------------------------------------- */

.tb-pdmm {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(15, 118, 110, 0.055), rgba(15, 118, 110, 0));
}

.tb-pdmm-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1rem;
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-pdmm-legend-item + .tb-pdmm-legend-item {
  padding-left: 1rem;
  border-left: 1px solid var(--tb-border, rgba(120, 130, 150, 0.35));
}

.tb-pdmm-levels {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
}

.tb-pdmm-level {
  position: relative;
  display: grid;
  grid-template-columns: 2.6rem 1fr;
  column-gap: 0.9rem;
  padding: 0.85rem 1rem 0.9rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.24));
  border-left: 4px solid var(--tb-pdmm-accent, #0f766e);
  border-radius: 10px;
  background: var(--tb-surface, rgba(255, 255, 255, 0.03));
}

.tb-pdmm-level::after {
  content: '';
  position: absolute;
  left: 1.55rem;
  top: -0.55rem;
  height: 0.55rem;
  border-left: 2px dotted var(--tb-border, rgba(120, 130, 150, 0.5));
}

.tb-pdmm-level:first-child::after {
  display: none;
}

.tb-pdmm-ref {
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  color: var(--tb-pdmm-accent, #0f766e);
}

.tb-pdmm-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.5rem 0.75rem;
}

.tb-pdmm-name {
  font-size: 1rem;
  font-weight: 650;
  line-height: 1.3;
}

.tb-pdmm-kind {
  padding: 0.1rem 0.5rem;
  border: 1px solid currentColor;
  border-radius: 999px;
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  color: var(--tb-pdmm-accent, #0f766e);
  opacity: 0.9;
}

.tb-pdmm-detail {
  margin: 0.4rem 0 0;
  font-size: 0.9375rem;
  line-height: 1.55;
  opacity: 0.88;
}

.tb-pdmm-signal {
  margin: 0.4rem 0 0;
  font-size: 0.9375rem;
  line-height: 1.55;
  opacity: 0.72;
}

.tb-pdmm-note {
  margin: 0;
  padding-top: 0.35rem;
  font-size: 0.875rem;
  font-style: italic;
  line-height: 1.5;
  opacity: 0.75;
}

.tb-pdmm-level-1 {
  --tb-pdmm-accent: #334155;
}
.tb-pdmm-level-2 {
  --tb-pdmm-accent: #0f766e;
}
.tb-pdmm-level-3 {
  --tb-pdmm-accent: #0e7490;
}
.tb-pdmm-level-4 {
  --tb-pdmm-accent: #0369a1;
}
.tb-pdmm-level-5 {
  --tb-pdmm-accent: #7c3aed;
}
.tb-pdmm-level-6 {
  --tb-pdmm-accent: #b45309;
}

@media (max-width: 640px) {

  .tb-pdmm {
    padding: 1rem;
  }

  .tb-pdmm-level {
    grid-template-columns: 2rem 1fr;
    column-gap: 0.6rem;
  }

  .tb-pdmm-level::after {
    left: 1rem;
  }

}

/* ---------------------------------------------------------------------------
   The Digital Product Passport Knowledge Model (tb-dppkm)
   Conceptual diagram: seven learning pillars in dependency order, each stating
   what it establishes and the question it raises for the pillar below.
   --------------------------------------------------------------------------- */

.tb-dppkm {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(3, 105, 161, 0.055), rgba(3, 105, 161, 0));
}

.tb-dppkm-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1rem;
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-dppkm-legend-item + .tb-dppkm-legend-item {
  padding-left: 1rem;
  border-left: 1px solid var(--tb-border, rgba(120, 130, 150, 0.35));
}

.tb-dppkm-pillars {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
}

.tb-dppkm-pillar {
  position: relative;
  display: grid;
  grid-template-columns: 2.6rem 1fr;
  column-gap: 0.9rem;
  padding: 0.85rem 1rem 0.9rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.24));
  border-left: 4px solid var(--tb-dppkm-accent, #0369a1);
  border-radius: 10px;
  background: var(--tb-surface, rgba(255, 255, 255, 0.03));
}

.tb-dppkm-pillar::after {
  content: '';
  position: absolute;
  left: 1.55rem;
  top: -0.55rem;
  height: 0.55rem;
  border-left: 2px dotted var(--tb-border, rgba(120, 130, 150, 0.5));
}

.tb-dppkm-pillar:first-child::after {
  display: none;
}

.tb-dppkm-pillar-forthcoming {
  border-style: dashed;
  opacity: 0.82;
}

.tb-dppkm-ref {
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  color: var(--tb-dppkm-accent, #0369a1);
}

.tb-dppkm-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.5rem 0.75rem;
}

.tb-dppkm-name {
  font-size: 1rem;
  font-weight: 650;
  line-height: 1.3;
}

.tb-dppkm-kind {
  padding: 0.1rem 0.5rem;
  border: 1px solid currentColor;
  border-radius: 999px;
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  color: var(--tb-dppkm-accent, #0369a1);
  opacity: 0.9;
}

.tb-dppkm-detail {
  margin: 0.4rem 0 0;
  font-size: 0.9375rem;
  line-height: 1.55;
  opacity: 0.88;
}

.tb-dppkm-question {
  margin: 0.4rem 0 0;
  font-size: 0.9375rem;
  line-height: 1.55;
  opacity: 0.72;
}

.tb-dppkm-note {
  margin: 0;
  padding-top: 0.35rem;
  font-size: 0.875rem;
  font-style: italic;
  line-height: 1.5;
  opacity: 0.75;
}

.tb-dppkm-pillar-1 {
  --tb-dppkm-accent: #334155;
}
.tb-dppkm-pillar-2 {
  --tb-dppkm-accent: #b45309;
}
.tb-dppkm-pillar-3 {
  --tb-dppkm-accent: #0e7490;
}
.tb-dppkm-pillar-4 {
  --tb-dppkm-accent: #0f766e;
}
.tb-dppkm-pillar-5 {
  --tb-dppkm-accent: #0369a1;
}
.tb-dppkm-pillar-6 {
  --tb-dppkm-accent: #7c3aed;
}
.tb-dppkm-pillar-7 {
  --tb-dppkm-accent: #64748b;
}

@media (max-width: 640px) {

  .tb-dppkm {
    padding: 1rem;
  }

  .tb-dppkm-pillar {
    grid-template-columns: 2rem 1fr;
    column-gap: 0.6rem;
  }

  .tb-dppkm-pillar::after {
    left: 1rem;
  }

}

/* ---------------------------------------------------------------------------
   Knowledge Hub navigation cards (tb-hub-grid / tb-hub-card)
   Used only on the Knowledge Hub landing page for pillar, role and featured
   navigation. Matches the article card spacing and typography.
   --------------------------------------------------------------------------- */

.tb-hub-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(15.5rem, 1fr));
  gap: 0.75rem;
  margin: 1.5rem 0 2rem;
}

.tb-hub-card {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  padding: 1rem 1.05rem 1.1rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.24));
  border-radius: 10px;
  background: var(--tb-surface, rgba(255, 255, 255, 0.03));
  color: inherit;
  text-decoration: none;
  transition:
    border-color 0.15s ease,
    transform 0.15s ease;
}

.tb-hub-card:hover {
  border-color: var(--tb-hub-accent, #0369a1);
  transform: translateY(-1px);
  text-decoration: none;
}
.tb-hub-card:focus-visible {
  border-color: var(--tb-hub-accent, #0369a1);
  transform: translateY(-1px);
  text-decoration: none;
}

.tb-hub-card-count {
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--tb-hub-accent, #0369a1);
}

.tb-hub-card-title {
  font-size: 1rem;
  font-weight: 650;
  line-height: 1.3;
}

.tb-hub-card-body {
  font-size: 0.9375rem;
  line-height: 1.55;
  opacity: 0.82;
}

.tb-hub-grid-roles .tb-hub-card {
  --tb-hub-accent: #0f766e;
}

.tb-hub-grid-featured .tb-hub-card {
  --tb-hub-accent: #7c3aed;
}

@media (max-width: 640px) {

  .tb-hub-grid {
    grid-template-columns: 1fr;
  }

}

/* ---------------------------------------------------------------------------
   Knowledge Hub: clickable journey pillars, learning paths, roles,
   framework chips and the featured glossary block.
   --------------------------------------------------------------------------- */

a.tb-dppkm-pillar {
  color: inherit;
  text-decoration: none;
  transition:
    border-color 0.15s ease,
    transform 0.15s ease;
}

a.tb-dppkm-pillar:hover {
  border-color: var(--tb-dppkm-accent, #0369a1);
  transform: translateX(2px);
}
a.tb-dppkm-pillar:focus-visible {
  border-color: var(--tb-dppkm-accent, #0369a1);
  transform: translateX(2px);
}

.tb-dppkm-content {
  display: block;
}

.tb-dppkm-content .tb-dppkm-detail {
  display: block;
  margin: 0.3rem 0 0;
  font-size: 0.92rem;
  line-height: 1.55;
}

.tb-hub-paths {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 0.85rem;
  margin: 1.75rem 0 2rem;
}

.tb-hub-path {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  padding: 1.1rem 1.15rem 1.2rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.24));
  border-top: 3px solid var(--tb-hub-accent, #0369a1);
  border-radius: 12px;
  background: var(--tb-surface, rgba(255, 255, 255, 0.03));
  color: inherit;
  text-decoration: none;
  transition: border-color 0.15s ease;
}

.tb-hub-path:hover {
  border-color: var(--tb-hub-accent, #0369a1);
}
.tb-hub-path:focus-visible {
  border-color: var(--tb-hub-accent, #0369a1);
}

.tb-hub-path-count {
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--tb-hub-accent, #0369a1);
}

.tb-hub-path-title {
  font-size: 1rem;
  font-weight: 650;
  line-height: 1.35;
}

.tb-hub-path-body {
  font-size: 0.9rem;
  line-height: 1.55;
  opacity: 0.85;
}

.tb-hub-path-first {
  font-size: 0.85rem;
  line-height: 1.45;
  opacity: 0.72;
}

.tb-hub-path-cta {
  margin-top: 0.25rem;
  font-size: 0.82rem;
  font-weight: 650;
  color: var(--tb-hub-accent, #0369a1);
}

.tb-hub-roles {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: 0.85rem;
  margin: 1.5rem 0 2rem;
}

.tb-hub-role {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  padding: 1.05rem 1.1rem 1.15rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.24));
  border-radius: 12px;
  background: var(--tb-surface, rgba(255, 255, 255, 0.03));
}

.tb-hub-role-title {
  font-size: 0.95rem;
  font-weight: 650;
}

.tb-hub-role-body {
  font-size: 0.86rem;
  line-height: 1.5;
  opacity: 0.82;
}

.tb-hub-role-links {
  margin: 0.15rem 0 0;
  padding-left: 1.05rem;
  font-size: 0.85rem;
  line-height: 1.5;
}

.tb-hub-role-links li {
  margin: 0.15rem 0;
}

.tb-hub-role-cta {
  margin-top: 0.2rem;
  font-size: 0.82rem;
  font-weight: 650;
}

.tb-hub-frameworks {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
  gap: 0.5rem;
  margin: 1.5rem 0 1.75rem;
}

.tb-hub-framework {
  padding: 0.65rem 0.85rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.24));
  border-left: 3px solid #7c3aed;
  border-radius: 8px;
  background: var(--tb-surface, rgba(255, 255, 255, 0.03));
  font-size: 0.88rem;
  line-height: 1.45;
}

.tb-hub-feature {
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
  padding: 1.35rem 1.4rem 1.4rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.24));
  border-left: 4px solid #0f766e;
  border-radius: 12px;
  background: var(--tb-surface, rgba(255, 255, 255, 0.03));
  color: inherit;
  text-decoration: none;
  margin: 1.5rem 0 2rem;
  transition: border-color 0.15s ease;
}

.tb-hub-feature:hover {
  border-color: #0f766e;
}
.tb-hub-feature:focus-visible {
  border-color: #0f766e;
}

.tb-hub-feature-count {
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: #0f766e;
}

.tb-hub-feature-title {
  font-size: 1.15rem;
  font-weight: 650;
}

.tb-hub-feature-body {
  font-size: 0.92rem;
  line-height: 1.6;
  opacity: 0.85;
}

.tb-hub-feature-cta {
  font-size: 0.85rem;
  font-weight: 650;
  color: #0f766e;
}

@media (max-width: 640px) {

  .tb-hub-paths,
  .tb-hub-roles,
  .tb-hub-frameworks {
    grid-template-columns: 1fr;
  }

}

/* Framework information box (generated by scripts/docs/generate-framework-registry.mjs) */
.tb-framework-box {
  margin: 1.5rem 0 2rem;
  padding: 1rem 1.25rem;
  border: 1px solid var(--grayscale-a4, rgba(0, 0, 0, 0.08));
  border-left: 3px solid var(--accent, #2563eb);
  border-radius: 8px;
  background: var(--grayscale-a2, rgba(0, 0, 0, 0.02));
}
.tb-framework-box-head {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin-bottom: 0.375rem;
}
.tb-framework-box-label {
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  opacity: 0.6;
}
.tb-framework-box-id {
  font-family: var(--font-code, ui-monospace, monospace);
  font-size: 0.75rem;
  font-weight: 600;
  padding: 0.125rem 0.4rem;
  border-radius: 4px;
  background: var(--grayscale-a3, rgba(0, 0, 0, 0.05));
}
.tb-framework-box-name {
  font-size: 1rem;
  font-weight: 600;
  line-height: 1.4;
}
.tb-framework-box-summary {
  margin-top: 0.25rem;
  font-size: 0.875rem;
  line-height: 1.6;
  opacity: 0.8;
}

/* ---------------------------------------------------------------------------
   The Trusted Product Data Quality Model (tb-tpdq)
   Conceptual diagram: six independent quality dimensions assessed together
   beneath a single outcome, resolving to fitness for intended use.
   --------------------------------------------------------------------------- */

.tb-tpdq {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(15, 118, 110, 0.055), rgba(15, 118, 110, 0));
}

.tb-tpdq-crown {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  align-items: center;
  text-align: center;
  padding: 0.9rem 1rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.24));
  border-radius: 10px;
  background: var(--tb-surface, rgba(255, 255, 255, 0.03));
}

.tb-tpdq-crown-label {
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-tpdq-crown-title {
  font-size: 1.125rem;
  font-weight: 700;
  line-height: 1.3;
}

.tb-tpdq-crown-sub {
  font-size: 0.8125rem;
  line-height: 1.55;
  opacity: 0.75;
}

.tb-tpdq-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.55rem;
}

.tb-tpdq-dim {
  display: grid;
  grid-template-columns: 2.6rem 1fr;
  column-gap: 0.9rem;
  padding: 0.85rem 1rem 0.9rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.24));
  border-top: 4px solid var(--tb-tpdq-accent, #0f766e);
  border-radius: 10px;
  background: var(--tb-surface, rgba(255, 255, 255, 0.03));
}

.tb-tpdq-ref {
  font-family: var(--font-code, ui-monospace, monospace);
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  color: var(--tb-tpdq-accent, #0f766e);
}

.tb-tpdq-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.5rem;
}

.tb-tpdq-name {
  font-size: 1rem;
  font-weight: 600;
  line-height: 1.4;
}

.tb-tpdq-kind {
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--tb-tpdq-accent, #0f766e);
}

.tb-tpdq-question {
  margin: 0.35rem 0 0;
  font-size: 0.8125rem;
  font-weight: 600;
  line-height: 1.55;
  opacity: 0.85;
}

.tb-tpdq-detail {
  margin: 0.3rem 0 0;
  font-size: 0.8125rem;
  line-height: 1.6;
  opacity: 0.78;
}

.tb-tpdq-outcome {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.25rem;
}

.tb-tpdq-outcome-arrow {
  font-size: 1rem;
  line-height: 1;
  opacity: 0.5;
}

.tb-tpdq-outcome-text {
  padding: 0.5rem 1.1rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.35));
  border-radius: 999px;
  font-size: 0.8125rem;
  font-weight: 600;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.tb-tpdq-note {
  margin: 0;
  font-size: 0.8125rem;
  line-height: 1.65;
  opacity: 0.7;
}

.tb-tpdq-dim-1 {
  --tb-tpdq-accent: #334155;
}
.tb-tpdq-dim-2 {
  --tb-tpdq-accent: #0f766e;
}
.tb-tpdq-dim-3 {
  --tb-tpdq-accent: #0e7490;
}
.tb-tpdq-dim-4 {
  --tb-tpdq-accent: #0369a1;
}
.tb-tpdq-dim-5 {
  --tb-tpdq-accent: #7c3aed;
}
.tb-tpdq-dim-6 {
  --tb-tpdq-accent: #b45309;
}

@media (max-width: 720px) {

  .tb-tpdq {
    padding: 1rem;
  }

  .tb-tpdq-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .tb-tpdq-dim {
    grid-template-columns: 2rem 1fr;
    column-gap: 0.6rem;
  }

}

/* ---------------------------------------------------------------------------
   The Product Data Stewardship Model (tb-pdsm)
   Conceptual diagram: a vertical chain of five human responsibilities with a
   decision-authority rail, connective link labels and a feedback footer.
   --------------------------------------------------------------------------- */

.tb-pdsm {
  display: flex;
  flex-direction: column;
  gap: 1.1rem;
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(3, 105, 161, 0.055), rgba(3, 105, 161, 0));
}

.tb-pdsm-head {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}

.tb-pdsm-eyebrow {
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-pdsm-title {
  font-size: 1.125rem;
  font-weight: 700;
  line-height: 1.3;
}

.tb-pdsm-sub {
  font-size: 0.8125rem;
  line-height: 1.55;
  opacity: 0.75;
}

.tb-pdsm-body {
  display: grid;
  grid-template-columns: 8.5rem minmax(0, 1fr);
  column-gap: 1.1rem;
  align-items: stretch;
}

.tb-pdsm-rail {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.5rem;
  padding: 0.5rem 0;
  text-align: center;
}

.tb-pdsm-rail-top,
.tb-pdsm-rail-bottom {
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  opacity: 0.55;
  line-height: 1.4;
}

.tb-pdsm-rail-line {
  flex: 1 1 auto;
  width: 2px;
  min-height: 3rem;
  border-radius: 2px;
  background: linear-gradient(
    180deg,
    rgba(15, 118, 110, 0.75),
    rgba(3, 105, 161, 0.55),
    rgba(120, 130, 150, 0.25)
  );
}

.tb-pdsm-chain {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}

.tb-pdsm-rung {
  display: grid;
  grid-template-columns: 2.4rem minmax(0, 1fr);
  column-gap: 0.9rem;
  padding: 0.9rem 1rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.24));
  border-left: 4px solid var(--tb-pdsm-accent, #0369a1);
  border-radius: 10px;
  background: var(--tb-surface, rgba(255, 255, 255, 0.03));
}

.tb-pdsm-marker {
  display: flex;
  align-items: flex-start;
  justify-content: center;
}

.tb-pdsm-ref {
  font-family: var(--font-code, ui-monospace, monospace);
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  color: var(--tb-pdsm-accent, #0369a1);
}

.tb-pdsm-content {
  min-width: 0;
}

.tb-pdsm-role {
  font-size: 1rem;
  font-weight: 600;
  line-height: 1.4;
}

.tb-pdsm-question {
  margin-top: 0.15rem;
  font-size: 0.8125rem;
  font-weight: 600;
  line-height: 1.55;
  opacity: 0.85;
}

.tb-pdsm-facets {
  margin: 0.5rem 0 0;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.45rem 1rem;
}

.tb-pdsm-facets dt {
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.55;
}

.tb-pdsm-facets dd {
  margin: 0.1rem 0 0;
  font-size: 0.8125rem;
  line-height: 1.55;
  opacity: 0.8;
}

.tb-pdsm-link {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding-left: 1.1rem;
}

.tb-pdsm-link-arrow {
  font-size: 0.875rem;
  line-height: 1;
  opacity: 0.5;
}

.tb-pdsm-link-text {
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  opacity: 0.5;
}

.tb-pdsm-foot {
  display: flex;
  align-items: flex-start;
  gap: 0.7rem;
  padding: 0.85rem 1rem;
  border: 1px dashed var(--tb-border, rgba(120, 130, 150, 0.35));
  border-radius: 10px;
}

.tb-pdsm-foot-mark {
  font-size: 1rem;
  line-height: 1.4;
  opacity: 0.6;
}

.tb-pdsm-foot-text {
  margin: 0;
  font-size: 0.8125rem;
  line-height: 1.65;
  opacity: 0.75;
}

.tb-pdsm-rung-1 {
  --tb-pdsm-accent: #334155;
}
.tb-pdsm-rung-2 {
  --tb-pdsm-accent: #0f766e;
}
.tb-pdsm-rung-3 {
  --tb-pdsm-accent: #0e7490;
}
.tb-pdsm-rung-4 {
  --tb-pdsm-accent: #0369a1;
}
.tb-pdsm-rung-5 {
  --tb-pdsm-accent: #7c3aed;
}

@media (max-width: 720px) {

  .tb-pdsm {
    padding: 1rem;
  }

  .tb-pdsm-body {
    grid-template-columns: minmax(0, 1fr);
  }

  .tb-pdsm-rail {
    display: none;
  }

  .tb-pdsm-rung {
    grid-template-columns: 2rem 1fr;
    column-gap: 0.6rem;
  }

  .tb-pdsm-facets {
    grid-template-columns: minmax(0, 1fr);
  }

}

/* ---------------------------------------------------------------------------
   The Enterprise Source of Truth Model (tb-esot)
   Conceptual diagram: parallel authoritative source chips resolving through an
   ownership layer, a governance control strip and a fan-out consumption band.
   Deliberately horizontal-band composition, distinct from the vertical chain
   used by tb-pdsm and the dimension grid used by tb-tpdq.
   --------------------------------------------------------------------------- */

.tb-esot {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(14, 116, 144, 0.055), rgba(14, 116, 144, 0));
}

.tb-esot-head {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  margin-bottom: 0.35rem;
}

.tb-esot-eyebrow {
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-esot-title {
  font-size: 1.125rem;
  font-weight: 700;
  line-height: 1.3;
}

.tb-esot-sub {
  font-size: 0.8125rem;
  line-height: 1.55;
  opacity: 0.75;
}

.tb-esot-band {
  display: grid;
  grid-template-columns: 10.5rem minmax(0, 1fr);
  column-gap: 1.1rem;
  align-items: start;
  padding: 0.9rem 1rem;
  border: 1px solid rgba(120, 130, 150, 0.22);
  border-left: 3px solid var(--tb-esot-accent, #0e7490);
  border-radius: 10px;
  background: var(--tb-esot-fill, rgba(255, 255, 255, 0.03));
}

.tb-esot-band-sources {
  --tb-esot-accent: #0f766e;
}
.tb-esot-band-ownership {
  --tb-esot-accent: #0369a1;
}
.tb-esot-band-governance {
  --tb-esot-accent: #334155;
}
.tb-esot-band-use {
  --tb-esot-accent: #7c3aed;
}

.tb-esot-band-label {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}

.tb-esot-band-ref {
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  color: var(--tb-esot-accent, #0e7490);
}

.tb-esot-band-name {
  font-size: 0.9375rem;
  font-weight: 700;
  line-height: 1.3;
}

.tb-esot-band-note {
  font-size: 0.75rem;
  line-height: 1.4;
  opacity: 0.65;
}

.tb-esot-chips {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(9.5rem, 1fr));
  gap: 0.5rem;
}

.tb-esot-chip {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  padding: 0.5rem 0.65rem;
  border: 1px solid rgba(15, 118, 110, 0.35);
  border-radius: 8px;
  background: rgba(15, 118, 110, 0.07);
}

.tb-esot-chip-open {
  border-style: dashed;
  opacity: 0.85;
}

.tb-esot-chip-name {
  font-size: 0.8125rem;
  font-weight: 700;
  line-height: 1.3;
}

.tb-esot-chip-role {
  font-size: 0.75rem;
  line-height: 1.4;
  opacity: 0.7;
}

.tb-esot-ownership {
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
}

.tb-esot-question {
  margin: 0;
  font-size: 0.875rem;
  font-weight: 600;
  line-height: 1.45;
}

.tb-esot-rules {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
  gap: 0.35rem 1rem;
}

.tb-esot-rules li {
  position: relative;
  padding-left: 0.9rem;
  font-size: 0.8125rem;
  line-height: 1.5;
  opacity: 0.85;
}

.tb-esot-rules li::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0.55em;
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--tb-esot-accent, #0369a1);
}

.tb-esot-controls {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
}

.tb-esot-control {
  padding: 0.3rem 0.6rem;
  border: 1px solid rgba(120, 130, 150, 0.3);
  border-radius: 999px;
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  background: rgba(51, 65, 85, 0.07);
}

.tb-esot-consumers {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr));
  gap: 0.5rem;
}

.tb-esot-consumer {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  padding: 0.5rem 0.65rem;
  border: 1px solid rgba(124, 58, 237, 0.3);
  border-radius: 8px;
  background: rgba(124, 58, 237, 0.06);
}

.tb-esot-consumer-name {
  font-size: 0.8125rem;
  font-weight: 700;
  line-height: 1.3;
}

.tb-esot-consumer-role {
  font-size: 0.75rem;
  line-height: 1.4;
  opacity: 0.7;
}

.tb-esot-flow {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 0.1rem 0;
}

.tb-esot-flow-arrow {
  font-size: 0.9rem;
  opacity: 0.55;
}

.tb-esot-flow-text {
  font-size: 0.75rem;
  letter-spacing: 0.02em;
  opacity: 0.6;
}

.tb-esot-principle {
  margin: 0.35rem 0 0;
  padding: 0.75rem 0.9rem;
  border-radius: 10px;
  border: 1px dashed rgba(120, 130, 150, 0.35);
  font-size: 0.8125rem;
  font-weight: 600;
  line-height: 1.55;
  text-align: center;
  opacity: 0.9;
}

@media (max-width: 720px) {

  .tb-esot {
    padding: 1rem;
  }

  .tb-esot-band {
    grid-template-columns: minmax(0, 1fr);
    row-gap: 0.6rem;
  }

  .tb-esot-band-label {
    flex-direction: row;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 0.4rem;
  }

}

/* ---------------------------------------------------------------------------
   The Enterprise Master Data Management Model (tb-emdm)
   Conceptual diagram: an offset descending stack of six capabilities with a
   marked coordinating core and a closing principle statement. Deliberately a
   staircase composition, distinct from the vertical ladder (tb-pdsm), the
   dimension grid (tb-tpdq) and the horizontal bands (tb-esot).
   --------------------------------------------------------------------------- */

.tb-emdm {
  display: flex;
  flex-direction: column;
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(29, 78, 216, 0.05), rgba(29, 78, 216, 0));
}

.tb-emdm-head {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  margin-bottom: 1rem;
}

.tb-emdm-eyebrow {
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-emdm-title {
  font-size: 1.125rem;
  font-weight: 700;
  line-height: 1.3;
}

.tb-emdm-sub {
  font-size: 0.8125rem;
  line-height: 1.55;
  opacity: 0.75;
}

.tb-emdm-stack {
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tb-emdm-stage {
  position: relative;
  display: grid;
  grid-template-columns: 2.75rem minmax(0, 1fr);
  column-gap: 0.9rem;
  align-items: start;
  padding: 0.9rem 1rem;
  border: 1px solid rgba(120, 130, 150, 0.22);
  border-left: 3px solid var(--tb-emdm-accent, #1d4ed8);
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.03);
}

.tb-emdm-stage + .tb-emdm-stage::before {
  content: '↓';
  position: absolute;
  top: -0.72rem;
  left: 1.15rem;
  font-size: 0.75rem;
  line-height: 1;
  opacity: 0.45;
}

.tb-emdm-stage-1 {
  --tb-emdm-accent: #0f766e;
  margin-left: 0;
}
.tb-emdm-stage-2 {
  --tb-emdm-accent: #0369a1;
  margin-left: 0.75rem;
}
.tb-emdm-stage-3 {
  --tb-emdm-accent: #1d4ed8;
  margin-left: 1.5rem;
}
.tb-emdm-stage-4 {
  --tb-emdm-accent: #6d28d9;
  margin-left: 2.25rem;
}
.tb-emdm-stage-5 {
  --tb-emdm-accent: #b45309;
  margin-left: 3rem;
}
.tb-emdm-stage-6 {
  --tb-emdm-accent: #334155;
  margin-left: 3.75rem;
}

.tb-emdm-stage-core {
  border-width: 1px 1px 1px 5px;
  border-color: rgba(29, 78, 216, 0.45);
  border-left-color: var(--tb-emdm-accent, #1d4ed8);
  background: rgba(29, 78, 216, 0.07);
}

.tb-emdm-index {
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  color: var(--tb-emdm-accent, #1d4ed8);
}

.tb-emdm-body {
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
  min-width: 0;
}

.tb-emdm-name {
  font-size: 0.9375rem;
  font-weight: 700;
  line-height: 1.3;
}

.tb-emdm-role {
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  opacity: 0.7;
}

.tb-emdm-detail {
  margin: 0.15rem 0 0;
  font-size: 0.8125rem;
  line-height: 1.55;
  opacity: 0.85;
}

.tb-emdm-points {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem 0.5rem;
  margin: 0.35rem 0 0;
  padding: 0;
  list-style: none;
}

.tb-emdm-points li {
  padding: 0.2rem 0.55rem;
  border: 1px solid rgba(120, 130, 150, 0.24);
  border-radius: 999px;
  font-size: 0.75rem;
  line-height: 1.35;
  opacity: 0.85;
}

.tb-emdm-flag {
  align-self: flex-start;
  margin-top: 0.45rem;
  padding: 0.22rem 0.6rem;
  border-radius: 6px;
  background: rgba(29, 78, 216, 0.16);
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.01em;
}

.tb-emdm-principle {
  margin: 1.1rem 0 0;
  padding: 0.85rem 1rem;
  border-radius: 10px;
  border: 1px dashed rgba(29, 78, 216, 0.4);
  font-size: 0.875rem;
  font-weight: 600;
  line-height: 1.5;
  text-align: center;
}

@media (max-width: 720px) {

  .tb-emdm-stage {
    grid-template-columns: minmax(0, 1fr);
    row-gap: 0.35rem;
    margin-left: 0 !important;
  }

  .tb-emdm-stage + .tb-emdm-stage::before {
    left: 0.9rem;
  }

}

/* ---------------------------------------------------------------------------
   The Golden Record Lifecycle (tb-grlc)
   Conceptual diagram: multiple authoritative sources converging through
   identity resolution, validation and survivorship into a single governed
   representation, then fanning back out through controlled distribution.
   Deliberately a convergence and hub composition, distinct from the vertical
   chain used by tb-pdsm, the band layout used by tb-esot and the offset
   staircase used by tb-emdm.
   --------------------------------------------------------------------------- */

.tb-grlc {
  display: flex;
  flex-direction: column;
  gap: 0.85rem;
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(180, 132, 24, 0.06), rgba(180, 132, 24, 0));
}

.tb-grlc-head {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  margin-bottom: 0.25rem;
}

.tb-grlc-eyebrow {
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-grlc-title {
  font-size: 1.125rem;
  font-weight: 700;
  line-height: 1.3;
}

.tb-grlc-sub {
  font-size: 0.8125rem;
  line-height: 1.55;
  opacity: 0.75;
}

.tb-grlc-tier-label {
  display: flex;
  align-items: baseline;
  gap: 0.5rem;
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.55;
}

.tb-grlc-sources {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(9.5rem, 1fr));
  gap: 0.6rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tb-grlc-source {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  padding: 0.7rem 0.8rem;
  border: 1px solid rgba(120, 130, 150, 0.24);
  border-top: 3px solid var(--tb-grlc-accent, #0f766e);
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.03);
}

.tb-grlc-source-1 {
  --tb-grlc-accent: #0f766e;
}
.tb-grlc-source-2 {
  --tb-grlc-accent: #0369a1;
}
.tb-grlc-source-3 {
  --tb-grlc-accent: #7c3aed;
}
.tb-grlc-source-4 {
  --tb-grlc-accent: #b45309;
}
.tb-grlc-source-5 {
  --tb-grlc-accent: #334155;
}

.tb-grlc-source-name {
  font-size: 0.8125rem;
  font-weight: 700;
  line-height: 1.35;
}

.tb-grlc-source-role {
  font-size: 0.75rem;
  line-height: 1.45;
  opacity: 0.78;
}

.tb-grlc-converge {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.6rem;
  padding: 0.15rem 0;
}

.tb-grlc-converge-line {
  flex: 1;
  height: 1px;
  background: linear-gradient(
    90deg,
    rgba(120, 130, 150, 0),
    rgba(120, 130, 150, 0.5),
    rgba(120, 130, 150, 0)
  );
}

.tb-grlc-converge-text {
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  opacity: 0.6;
  white-space: nowrap;
}

.tb-grlc-funnel {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tb-grlc-gate {
  display: grid;
  grid-template-columns: 2.25rem minmax(0, 1fr);
  column-gap: 0.9rem;
  align-items: start;
  padding: 0.8rem 1rem;
  border: 1px solid rgba(120, 130, 150, 0.22);
  border-left: 3px solid var(--tb-grlc-accent, #0369a1);
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.03);
}

.tb-grlc-gate-1 {
  --tb-grlc-accent: #0f766e;
  width: 100%;
}
.tb-grlc-gate-2 {
  --tb-grlc-accent: #0369a1;
  width: 94%;
  margin: 0 auto;
}
.tb-grlc-gate-3 {
  --tb-grlc-accent: #7c3aed;
  width: 88%;
  margin: 0 auto;
}

.tb-grlc-gate-index {
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  opacity: 0.55;
  padding-top: 0.1rem;
}

.tb-grlc-gate-body {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
}

.tb-grlc-gate-name {
  font-size: 0.9375rem;
  font-weight: 700;
  line-height: 1.35;
}

.tb-grlc-gate-question {
  font-size: 0.8125rem;
  line-height: 1.5;
  opacity: 0.8;
}

.tb-grlc-gate-points {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem 0.5rem;
  margin: 0.35rem 0 0;
  padding: 0;
  list-style: none;
}

.tb-grlc-gate-points li {
  padding: 0.2rem 0.55rem;
  border: 1px solid rgba(120, 130, 150, 0.24);
  border-radius: 999px;
  font-size: 0.75rem;
  line-height: 1.35;
  opacity: 0.85;
}

.tb-grlc-hub {
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
  align-items: center;
  text-align: center;
  padding: 1.05rem 1.2rem;
  border: 1px solid rgba(180, 132, 24, 0.5);
  border-radius: 12px;
  background: rgba(180, 132, 24, 0.12);
}

.tb-grlc-hub-label {
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  opacity: 0.7;
}

.tb-grlc-hub-name {
  font-size: 1.0625rem;
  font-weight: 800;
  line-height: 1.3;
}

.tb-grlc-hub-detail {
  font-size: 0.8125rem;
  line-height: 1.55;
  opacity: 0.85;
  max-width: 46rem;
}

.tb-grlc-hub-exception {
  margin-top: 0.35rem;
  padding: 0.22rem 0.6rem;
  border-radius: 6px;
  border: 1px dashed rgba(180, 132, 24, 0.55);
  font-size: 0.75rem;
  font-weight: 700;
}

.tb-grlc-distribution {
  display: grid;
  grid-template-columns: 12rem minmax(0, 1fr);
  column-gap: 1.1rem;
  align-items: center;
  padding: 0.85rem 1rem;
  border: 1px solid rgba(120, 130, 150, 0.22);
  border-left: 3px solid #334155;
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.03);
}

.tb-grlc-distribution-label {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
}

.tb-grlc-distribution-name {
  font-size: 0.875rem;
  font-weight: 700;
  line-height: 1.35;
}

.tb-grlc-distribution-role {
  font-size: 0.75rem;
  line-height: 1.45;
  opacity: 0.75;
}

.tb-grlc-consumers {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tb-grlc-consumers li {
  padding: 0.25rem 0.6rem;
  border: 1px solid rgba(120, 130, 150, 0.26);
  border-radius: 999px;
  font-size: 0.75rem;
  line-height: 1.35;
  opacity: 0.9;
}

.tb-grlc-consumers li.tb-grlc-consumer-dpp {
  border-color: rgba(124, 58, 237, 0.55);
  background: rgba(124, 58, 237, 0.12);
  font-weight: 700;
  opacity: 1;
}

.tb-grlc-principle {
  margin: 0.9rem 0 0;
  padding: 0.85rem 1rem;
  border-radius: 10px;
  border: 1px dashed rgba(180, 132, 24, 0.5);
  font-size: 0.875rem;
  font-weight: 600;
  line-height: 1.5;
  text-align: center;
}

@media (max-width: 720px) {

  .tb-grlc {
    padding: 1.1rem;
  }

  .tb-grlc-gate,
  .tb-grlc-distribution {
    grid-template-columns: minmax(0, 1fr);
    row-gap: 0.35rem;
  }

  .tb-grlc-gate-1,
  .tb-grlc-gate-2,
  .tb-grlc-gate-3 {
    width: 100%;
    margin: 0;
  }

}

/* ---------------------------------------------------------------------------
   The Enterprise Digital Product Passport Reference Architecture (tb-edpa)
   Reference architecture diagram: seven horizontal architectural layers read
   top to bottom, with a cross-cutting capability rail running alongside the
   stack and an information flow legend beneath it. Deliberately an
   architectural stack composition, distinct from the convergence funnel used
   by tb-grlc, the vertical chain used by tb-pdsm, the band layout used by
   tb-esot and the offset staircase used by tb-emdm.
   --------------------------------------------------------------------------- */

.tb-edpa {
  display: flex;
  flex-direction: column;
  gap: 0.9rem;
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(3, 105, 161, 0.06), rgba(3, 105, 161, 0));
}

.tb-edpa-head {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}

.tb-edpa-eyebrow {
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-edpa-title {
  font-size: 1.125rem;
  font-weight: 700;
  line-height: 1.3;
}

.tb-edpa-sub {
  font-size: 0.8125rem;
  line-height: 1.55;
  opacity: 0.75;
}

.tb-edpa-frame {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 12.5rem;
  gap: 0.9rem;
  align-items: stretch;
}

.tb-edpa-stack {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tb-edpa-layer {
  display: grid;
  grid-template-columns: 3.1rem minmax(0, 1fr);
  gap: 0.85rem;
  align-items: start;
  padding: 0.75rem 0.9rem;
  border: 1px solid rgba(120, 130, 150, 0.24);
  border-left: 3px solid var(--tb-edpa-accent, #0369a1);
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.03);
}

.tb-edpa-layer-1 {
  --tb-edpa-accent: #334155;
}
.tb-edpa-layer-2 {
  --tb-edpa-accent: #0f766e;
}
.tb-edpa-layer-3 {
  --tb-edpa-accent: #b45309;
}
.tb-edpa-layer-4 {
  --tb-edpa-accent: #0369a1;
}
.tb-edpa-layer-5 {
  --tb-edpa-accent: #b48418;
}
.tb-edpa-layer-6 {
  --tb-edpa-accent: #7c3aed;
}
.tb-edpa-layer-7 {
  --tb-edpa-accent: #15803d;
}

.tb-edpa-layer-5 {
  border-width: 1px 1px 1px 3px;
  border-color: rgba(180, 132, 24, 0.45);
  border-left-color: #b48418;
  background: rgba(180, 132, 24, 0.1);
}

.tb-edpa-layer-index {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2.4rem;
  padding: 0.15rem 0.35rem;
  border: 1px solid rgba(120, 130, 150, 0.3);
  border-radius: 999px;
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  opacity: 0.8;
}

.tb-edpa-layer-body {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  min-width: 0;
}

.tb-edpa-layer-name {
  font-size: 0.9375rem;
  font-weight: 700;
  line-height: 1.3;
}

.tb-edpa-layer-role {
  font-size: 0.75rem;
  line-height: 1.5;
  opacity: 0.78;
}

.tb-edpa-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 0.3rem;
  margin: 0.1rem 0 0;
  padding: 0;
  list-style: none;
}

.tb-edpa-chip {
  padding: 0.15rem 0.5rem;
  border: 1px solid rgba(120, 130, 150, 0.28);
  border-radius: 999px;
  font-size: 0.71875rem;
  line-height: 1.4;
  opacity: 0.88;
}

.tb-edpa-chip-optional {
  border-style: dashed;
  opacity: 0.72;
}

.tb-edpa-rail {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  padding: 0.85rem 0.9rem;
  border: 1px dashed rgba(120, 130, 150, 0.4);
  border-radius: 10px;
  background: rgba(120, 130, 150, 0.05);
}

.tb-edpa-rail-label {
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-edpa-rail-note {
  font-size: 0.71875rem;
  line-height: 1.45;
  opacity: 0.72;
}

.tb-edpa-rail-list {
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
  margin: 0.1rem 0 0;
  padding: 0;
  list-style: none;
}

.tb-edpa-rail-item {
  padding: 0.28rem 0.5rem;
  border: 1px solid rgba(120, 130, 150, 0.24);
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.03);
  font-size: 0.75rem;
  line-height: 1.35;
  font-weight: 600;
  opacity: 0.85;
}

.tb-edpa-flows {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr));
  gap: 0.6rem;
  margin: 0;
  padding: 0.85rem 0 0;
  border-top: 1px solid rgba(120, 130, 150, 0.24);
  list-style: none;
}

.tb-edpa-flow {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  padding: 0.6rem 0.7rem;
  border: 1px solid rgba(120, 130, 150, 0.24);
  border-top: 3px solid var(--tb-edpa-flow-accent, #0369a1);
  border-radius: 10px;
}

.tb-edpa-flow-1 {
  --tb-edpa-flow-accent: #0f766e;
}
.tb-edpa-flow-2 {
  --tb-edpa-flow-accent: #7c3aed;
}
.tb-edpa-flow-3 {
  --tb-edpa-flow-accent: #b45309;
}

.tb-edpa-flow-name {
  font-size: 0.8125rem;
  font-weight: 700;
  line-height: 1.35;
}

.tb-edpa-flow-detail {
  font-size: 0.71875rem;
  line-height: 1.45;
  opacity: 0.78;
}

.tb-edpa-foot {
  font-size: 0.75rem;
  line-height: 1.55;
  opacity: 0.72;
}

@media (max-width: 900px) {

  .tb-edpa-frame {
    grid-template-columns: minmax(0, 1fr);
  }

  .tb-edpa-rail-list {
    flex-direction: row;
    flex-wrap: wrap;
  }

}

@media (max-width: 720px) {

  .tb-edpa {
    padding: 1.1rem;
  }

  .tb-edpa-layer {
    grid-template-columns: minmax(0, 1fr);
    gap: 0.4rem;
  }

  .tb-edpa-layer-index {
    justify-self: start;
  }

}

/* ---------------------------------------------------------------------------
   The Digital Product Passport Implementation Roadmap (tb-dpir)
   Gated programme lifecycle: nine numbered implementation stages, each carrying
   an explicit exit gate, grouped into three programme phases, with a parallel
   workstream rail running alongside the sequence and a feedback loop legend
   beneath it. Deliberately a gated roadmap composition, distinct from the
   architectural stack used by tb-edpa, the convergence funnel used by tb-grlc,
   the vertical chain used by tb-pdsm and the offset staircase used by tb-emdm.
   --------------------------------------------------------------------------- */

.tb-dpir {
  display: flex;
  flex-direction: column;
  gap: 0.9rem;
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(15, 118, 110, 0.06), rgba(15, 118, 110, 0));
}

.tb-dpir-head {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}

.tb-dpir-eyebrow {
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-dpir-title {
  font-size: 1.125rem;
  font-weight: 700;
  line-height: 1.3;
}

.tb-dpir-sub {
  font-size: 0.8125rem;
  line-height: 1.55;
  opacity: 0.75;
}

.tb-dpir-frame {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 13rem;
  gap: 0.9rem;
  align-items: stretch;
}

.tb-dpir-phases {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tb-dpir-phase {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  padding: 0.75rem 0.8rem;
  border: 1px dashed rgba(120, 130, 150, 0.34);
  border-radius: 12px;
  background: rgba(120, 130, 150, 0.04);
}

.tb-dpir-phase-label {
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.62;
}

.tb-dpir-stages {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tb-dpir-stage {
  display: grid;
  grid-template-columns: 2.9rem minmax(0, 1fr);
  gap: 0.85rem;
  align-items: start;
  padding: 0.7rem 0.85rem;
  border: 1px solid rgba(120, 130, 150, 0.24);
  border-left: 3px solid var(--tb-dpir-accent, #0f766e);
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.03);
}

.tb-dpir-stage-1,
.tb-dpir-stage-2 {
  --tb-dpir-accent: #b45309;
}
.tb-dpir-stage-3,
.tb-dpir-stage-4 {
  --tb-dpir-accent: #0f766e;
}
.tb-dpir-stage-5 {
  --tb-dpir-accent: #0369a1;
}
.tb-dpir-stage-6,
.tb-dpir-stage-7 {
  --tb-dpir-accent: #7c3aed;
}
.tb-dpir-stage-8 {
  --tb-dpir-accent: #b48418;
}
.tb-dpir-stage-9 {
  --tb-dpir-accent: #15803d;
}

.tb-dpir-stage-index {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2.3rem;
  padding: 0.15rem 0.35rem;
  border: 1px solid rgba(120, 130, 150, 0.3);
  border-radius: 999px;
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  opacity: 0.8;
}

.tb-dpir-stage-body {
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
  min-width: 0;
}

.tb-dpir-stage-name {
  font-size: 0.9375rem;
  font-weight: 700;
  line-height: 1.3;
}

.tb-dpir-stage-focus {
  font-size: 0.75rem;
  line-height: 1.5;
  opacity: 0.78;
}

.tb-dpir-gate {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  margin-top: 0.15rem;
  padding: 0.4rem 0.55rem;
  border: 1px solid rgba(120, 130, 150, 0.28);
  border-left: 2px solid var(--tb-dpir-accent, #0f766e);
  border-radius: 8px;
  background: rgba(120, 130, 150, 0.06);
}

.tb-dpir-gate-label {
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.62;
}

.tb-dpir-gate-text {
  font-size: 0.71875rem;
  line-height: 1.45;
  opacity: 0.85;
}

.tb-dpir-rail {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  padding: 0.85rem 0.9rem;
  border: 1px dashed rgba(120, 130, 150, 0.4);
  border-radius: 10px;
  background: rgba(120, 130, 150, 0.05);
}

.tb-dpir-rail-label {
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-dpir-rail-note {
  font-size: 0.71875rem;
  line-height: 1.45;
  opacity: 0.72;
}

.tb-dpir-rail-list {
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
  margin: 0.1rem 0 0;
  padding: 0;
  list-style: none;
}

.tb-dpir-rail-item {
  padding: 0.28rem 0.5rem;
  border: 1px solid rgba(120, 130, 150, 0.24);
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.03);
  font-size: 0.75rem;
  line-height: 1.35;
  font-weight: 600;
  opacity: 0.85;
}

.tb-dpir-loops {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr));
  gap: 0.6rem;
  margin: 0;
  padding: 0.85rem 0 0;
  border-top: 1px solid rgba(120, 130, 150, 0.24);
  list-style: none;
}

.tb-dpir-loop {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  padding: 0.6rem 0.7rem;
  border: 1px solid rgba(120, 130, 150, 0.24);
  border-top: 3px dashed var(--tb-dpir-loop-accent, #b45309);
  border-radius: 10px;
}

.tb-dpir-loop-1 {
  --tb-dpir-loop-accent: #0f766e;
}
.tb-dpir-loop-2 {
  --tb-dpir-loop-accent: #0369a1;
}
.tb-dpir-loop-3 {
  --tb-dpir-loop-accent: #7c3aed;
}
.tb-dpir-loop-4 {
  --tb-dpir-loop-accent: #b45309;
}

.tb-dpir-loop-name {
  font-size: 0.8125rem;
  font-weight: 700;
  line-height: 1.35;
}

.tb-dpir-loop-detail {
  font-size: 0.71875rem;
  line-height: 1.45;
  opacity: 0.78;
}

.tb-dpir-foot {
  font-size: 0.75rem;
  line-height: 1.55;
  opacity: 0.72;
}

@media (max-width: 900px) {

  .tb-dpir-frame {
    grid-template-columns: minmax(0, 1fr);
  }

  .tb-dpir-rail-list {
    flex-direction: row;
    flex-wrap: wrap;
  }

}

@media (max-width: 720px) {

  .tb-dpir {
    padding: 1.1rem;
  }

  .tb-dpir-stage {
    grid-template-columns: minmax(0, 1fr);
    gap: 0.4rem;
  }

  .tb-dpir-stage-index {
    justify-self: start;
  }

}

/* ---------------------------------------------------------------------------
   tb-sdrm: The Supplier DPP Readiness Model (TBF-032)
   A segmented funnel composition: a broad supplier population narrows through
   scope, fans out into four differentiated readiness pathways, then converges
   through exchange, validation and acceptance into the governed enterprise
   environment, with a remediation loop returning to the supplier and a
   monitoring band running underneath. Deliberately a funnel and fan out
   composition, distinct from the gated roadmap used by tb-dpir, the
   architectural stack used by tb-edpa, the convergence funnel used by tb-grlc,
   the vertical chain used by tb-pdsm and the offset staircase used by tb-emdm.
   --------------------------------------------------------------------------- */

.tb-sdrm {
  display: flex;
  flex-direction: column;
  gap: 0.9rem;
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(3, 105, 161, 0.06), rgba(3, 105, 161, 0));
}

.tb-sdrm-head {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}

.tb-sdrm-eyebrow {
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-sdrm-title {
  font-size: 1.125rem;
  font-weight: 700;
  line-height: 1.3;
}

.tb-sdrm-sub {
  font-size: 0.8125rem;
  line-height: 1.55;
  opacity: 0.75;
}

.tb-sdrm-flow {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

.tb-sdrm-band {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  padding: 0.75rem 0.85rem;
  border: 1px solid rgba(120, 130, 150, 0.24);
  border-left: 3px solid var(--tb-sdrm-accent, #0369a1);
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.03);
}

.tb-sdrm-band-population {
  --tb-sdrm-accent: #64748b;
  border-style: dashed;
}
.tb-sdrm-band-scope {
  --tb-sdrm-accent: #b45309;
  margin: 0 4%;
}
.tb-sdrm-band-segmentation {
  --tb-sdrm-accent: #b48418;
  margin: 0 2%;
}
.tb-sdrm-band-exchange {
  --tb-sdrm-accent: #0369a1;
  margin: 0 8%;
}
.tb-sdrm-band-validation {
  --tb-sdrm-accent: #7c3aed;
  margin: 0 12%;
}
.tb-sdrm-band-acceptance {
  --tb-sdrm-accent: #15803d;
  margin: 0 16%;
}
.tb-sdrm-band-enterprise {
  --tb-sdrm-accent: #15803d;
  margin: 0 20%;
  background: rgba(21, 128, 61, 0.07);
}

.tb-sdrm-band-step {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.62;
}

.tb-sdrm-band-name {
  font-size: 0.9375rem;
  font-weight: 700;
  line-height: 1.3;
}

.tb-sdrm-band-detail {
  font-size: 0.75rem;
  line-height: 1.5;
  opacity: 0.78;
}

.tb-sdrm-paths {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr));
  gap: 0.6rem;
  margin: 0.25rem 0 0;
  padding: 0;
  list-style: none;
}

.tb-sdrm-path {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  padding: 0.6rem 0.7rem;
  border: 1px solid rgba(120, 130, 150, 0.24);
  border-top: 3px solid var(--tb-sdrm-path-accent, #64748b);
  border-radius: 10px;
  background: rgba(120, 130, 150, 0.05);
}

.tb-sdrm-path-a {
  --tb-sdrm-path-accent: #b91c1c;
}
.tb-sdrm-path-b {
  --tb-sdrm-path-accent: #b45309;
}
.tb-sdrm-path-c {
  --tb-sdrm-path-accent: #0369a1;
}
.tb-sdrm-path-d {
  --tb-sdrm-path-accent: #64748b;
}

.tb-sdrm-path-tier {
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  opacity: 0.7;
}

.tb-sdrm-path-name {
  font-size: 0.8125rem;
  font-weight: 700;
  line-height: 1.35;
}

.tb-sdrm-path-detail {
  font-size: 0.71875rem;
  line-height: 1.45;
  opacity: 0.78;
}

.tb-sdrm-loop {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  margin: 0 6% 0 auto;
  padding: 0.6rem 0.75rem;
  border: 1px dashed rgba(185, 28, 28, 0.55);
  border-radius: 10px;
  background: rgba(185, 28, 28, 0.05);
}

.tb-sdrm-loop-label {
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.7;
}

.tb-sdrm-loop-text {
  font-size: 0.71875rem;
  line-height: 1.45;
  opacity: 0.82;
}

.tb-sdrm-monitor {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  padding: 0.75rem 0.85rem;
  border: 1px dashed rgba(120, 130, 150, 0.4);
  border-radius: 10px;
  background: rgba(120, 130, 150, 0.05);
}

.tb-sdrm-monitor-label {
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-sdrm-monitor-list {
  display: flex;
  flex-wrap: wrap;
  gap: 0.3rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tb-sdrm-monitor-item {
  padding: 0.28rem 0.5rem;
  border: 1px solid rgba(120, 130, 150, 0.24);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.03);
  font-size: 0.71875rem;
  line-height: 1.3;
  font-weight: 600;
  opacity: 0.85;
}

.tb-sdrm-foot {
  font-size: 0.75rem;
  line-height: 1.55;
  opacity: 0.72;
}

@media (max-width: 900px) {

  .tb-sdrm-band-scope,
  .tb-sdrm-band-segmentation,
  .tb-sdrm-band-exchange,
  .tb-sdrm-band-validation,
  .tb-sdrm-band-acceptance,
  .tb-sdrm-band-enterprise {
    margin: 0;
  }

  .tb-sdrm-loop {
    margin: 0;
  }

}

@media (max-width: 720px) {

  .tb-sdrm {
    padding: 1.1rem;
  }

  .tb-sdrm-paths {
    grid-template-columns: minmax(0, 1fr);
  }

}

/* ---------------------------------------------------------------------------
   tb-dvcm: The DPP Data Validation Control Model (TBF-033)
   A controlled state transition pipeline: four governed data states separated
   by three control gates, with the thirteen validation control classes shown
   as a tile grid attached to the first gate, an exception and remediation
   route running alongside the pipeline, a governed severity legend and a
   continuous revalidation trigger band. Deliberately a state machine
   composition, distinct from the segmented funnel used by tb-sdrm, the gated
   roadmap used by tb-dpir, the architectural stack used by tb-edpa, the
   convergence funnel used by tb-grlc and the offset staircase used by
   tb-emdm.
   --------------------------------------------------------------------------- */

.tb-dvcm {
  display: flex;
  flex-direction: column;
  gap: 0.9rem;
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(124, 58, 237, 0.06), rgba(124, 58, 237, 0));
}

.tb-dvcm-head {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}

.tb-dvcm-eyebrow {
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-dvcm-title {
  font-size: 1.125rem;
  font-weight: 700;
  line-height: 1.3;
}

.tb-dvcm-sub {
  font-size: 0.8125rem;
  line-height: 1.55;
  opacity: 0.75;
}

.tb-dvcm-pipeline {
  display: grid;
  grid-template-columns: minmax(0, 3fr) minmax(0, 1.35fr);
  grid-auto-rows: min-content;
  gap: 0.7rem 0.9rem;
}

.tb-dvcm-state,
.tb-dvcm-gate {
  grid-column: 1;
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
  padding: 0.75rem 0.85rem;
  border-radius: 12px;
}

.tb-dvcm-state {
  border: 1px solid rgba(120, 130, 150, 0.24);
  border-left: 3px solid var(--tb-dvcm-accent, #64748b);
  background: rgba(255, 255, 255, 0.03);
}

.tb-dvcm-state-submitted {
  --tb-dvcm-accent: #64748b;
  border-style: dashed;
}
.tb-dvcm-state-validated {
  --tb-dvcm-accent: #0369a1;
}
.tb-dvcm-state-accepted {
  --tb-dvcm-accent: #15803d;
}
.tb-dvcm-state-publishable {
  --tb-dvcm-accent: #15803d;
  background: rgba(21, 128, 61, 0.07);
}

.tb-dvcm-gate {
  border: 1px dashed rgba(124, 58, 237, 0.5);
  background: rgba(124, 58, 237, 0.05);
  margin: 0 0 0 4%;
}

.tb-dvcm-state-tag,
.tb-dvcm-gate-tag {
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.62;
}

.tb-dvcm-state-name,
.tb-dvcm-gate-name {
  font-size: 0.9375rem;
  font-weight: 700;
  line-height: 1.3;
}

.tb-dvcm-state-detail,
.tb-dvcm-gate-detail {
  font-size: 0.75rem;
  line-height: 1.5;
  opacity: 0.78;
}

.tb-dvcm-classes {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(9.5rem, 1fr));
  gap: 0.35rem;
  margin: 0.3rem 0 0;
  padding: 0;
  list-style: none;
}

.tb-dvcm-class {
  padding: 0.32rem 0.5rem;
  border: 1px solid rgba(120, 130, 150, 0.24);
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.03);
  font-size: 0.71875rem;
  line-height: 1.3;
  font-weight: 600;
  opacity: 0.85;
}

.tb-dvcm-exception {
  grid-column: 2;
  grid-row: 1 / span 5;
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  padding: 0.75rem 0.8rem;
  border: 1px dashed rgba(185, 28, 28, 0.55);
  border-radius: 12px;
  background: rgba(185, 28, 28, 0.05);
}

.tb-dvcm-exception-label {
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.72;
}

.tb-dvcm-exception-steps {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  margin: 0;
  padding: 0;
  list-style: none;
  counter-reset: tb-dvcm-exception;
}

.tb-dvcm-exception-step {
  counter-increment: tb-dvcm-exception;
  padding: 0.28rem 0.45rem;
  border: 1px solid rgba(185, 28, 28, 0.28);
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.03);
  font-size: 0.71875rem;
  line-height: 1.3;
  font-weight: 600;
  opacity: 0.88;
}

.tb-dvcm-exception-step::before {
  content: counter(tb-dvcm-exception) '. ';
  opacity: 0.6;
}

.tb-dvcm-exception-text {
  font-size: 0.71875rem;
  line-height: 1.45;
  opacity: 0.8;
}

.tb-dvcm-severity {
  grid-column: 2;
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  padding: 0.7rem 0.8rem;
  border: 1px solid rgba(120, 130, 150, 0.24);
  border-radius: 12px;
  background: rgba(120, 130, 150, 0.05);
}

.tb-dvcm-severity-label {
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.65;
}

.tb-dvcm-severity-list {
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tb-dvcm-severity-item {
  padding: 0.28rem 0.5rem;
  border-left: 3px solid var(--tb-dvcm-severity-accent, #64748b);
  border-radius: 6px;
  background: rgba(255, 255, 255, 0.03);
  font-size: 0.71875rem;
  line-height: 1.3;
  font-weight: 600;
  opacity: 0.88;
}

.tb-dvcm-severity-blocking {
  --tb-dvcm-severity-accent: #b91c1c;
}
.tb-dvcm-severity-warning {
  --tb-dvcm-severity-accent: #b45309;
}
.tb-dvcm-severity-info {
  --tb-dvcm-severity-accent: #0369a1;
}

.tb-dvcm-monitor {
  grid-column: 1 / -1;
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  padding: 0.75rem 0.85rem;
  border: 1px dashed rgba(120, 130, 150, 0.4);
  border-radius: 10px;
  background: rgba(120, 130, 150, 0.05);
}

.tb-dvcm-monitor-label {
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-dvcm-monitor-list {
  display: flex;
  flex-wrap: wrap;
  gap: 0.3rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tb-dvcm-monitor-item {
  padding: 0.28rem 0.5rem;
  border: 1px solid rgba(120, 130, 150, 0.24);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.03);
  font-size: 0.71875rem;
  line-height: 1.3;
  font-weight: 600;
  opacity: 0.85;
}

.tb-dvcm-foot {
  font-size: 0.75rem;
  line-height: 1.55;
  opacity: 0.72;
}

@media (max-width: 900px) {

  .tb-dvcm-pipeline {
    grid-template-columns: minmax(0, 1fr);
  }

  .tb-dvcm-state,
  .tb-dvcm-gate,
  .tb-dvcm-exception,
  .tb-dvcm-severity,
  .tb-dvcm-monitor {
    grid-column: 1;
    grid-row: auto;
  }

  .tb-dvcm-gate {
    margin: 0;
  }

}

@media (max-width: 720px) {

  .tb-dvcm {
    padding: 1.1rem;
  }

  .tb-dvcm-classes {
    grid-template-columns: minmax(0, 1fr);
  }

}

/* -------------------------------------------------------------------------
   tb-delc: The DPP Evidence Lifecycle (TBF-034)
   Dual layer composition: a governed evidence environment (stages 1-7),
   a separated DPP publication layer (stage 8), an encircling monitoring
   band (stage 9), and an alternative evidence state rail.
   ------------------------------------------------------------------------- */

.tb-delc {
  display: flex;
  flex-direction: column;
  gap: 0.9rem;
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(13, 148, 136, 0.07), rgba(13, 148, 136, 0));
}

.tb-delc-head {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}

.tb-delc-eyebrow {
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-delc-title {
  font-size: 1.125rem;
  font-weight: 700;
  line-height: 1.3;
}

.tb-delc-sub {
  font-size: 0.8125rem;
  line-height: 1.55;
  opacity: 0.75;
}

.tb-delc-body {
  display: grid;
  grid-template-columns: minmax(0, 3fr) minmax(0, 1.3fr);
  gap: 0.8rem 0.9rem;
  align-items: start;
}

.tb-delc-layer {
  grid-column: 1;
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
  padding: 0.85rem;
  border-radius: 12px;
}

.tb-delc-layer-evidence {
  border: 1px solid rgba(13, 148, 136, 0.45);
  background: rgba(13, 148, 136, 0.05);
}

.tb-delc-layer-publication {
  border: 1px dashed rgba(3, 105, 161, 0.55);
  background: rgba(3, 105, 161, 0.05);
}

.tb-delc-layer-label {
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.68;
}

.tb-delc-layer-note {
  font-size: 0.71875rem;
  line-height: 1.45;
  opacity: 0.78;
}

.tb-delc-boundary {
  grid-column: 1;
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.3rem 0.1rem;
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-delc-boundary::before,
.tb-delc-boundary::after {
  content: '';
  flex: 1;
  height: 1px;
  background: repeating-linear-gradient(
    90deg,
    rgba(120, 130, 150, 0.5) 0 6px,
    transparent 6px 12px
  );
}

.tb-delc-stages {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr));
  gap: 0.45rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tb-delc-stage {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  padding: 0.6rem 0.7rem;
  border: 1px solid rgba(120, 130, 150, 0.24);
  border-left: 3px solid var(--tb-delc-accent, #0d9488);
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.03);
}

.tb-delc-stage-source {
  --tb-delc-accent: #64748b;
}
.tb-delc-stage-control {
  --tb-delc-accent: #7c3aed;
}
.tb-delc-stage-decision {
  --tb-delc-accent: #15803d;
}

.tb-delc-stage-tag {
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.62;
}

.tb-delc-stage-name {
  font-size: 0.875rem;
  font-weight: 700;
  line-height: 1.3;
}

.tb-delc-stage-detail {
  font-size: 0.71875rem;
  line-height: 1.45;
  opacity: 0.78;
}

.tb-delc-outputs {
  display: flex;
  flex-wrap: wrap;
  gap: 0.3rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tb-delc-output {
  padding: 0.28rem 0.55rem;
  border: 1px solid rgba(3, 105, 161, 0.35);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.03);
  font-size: 0.71875rem;
  line-height: 1.3;
  font-weight: 600;
  opacity: 0.88;
}

.tb-delc-rail {
  grid-column: 2;
  grid-row: 1 / span 4;
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  padding: 0.75rem 0.8rem;
  border: 1px solid rgba(120, 130, 150, 0.24);
  border-radius: 12px;
  background: rgba(120, 130, 150, 0.05);
}

.tb-delc-rail-label {
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.65;
}

.tb-delc-rail-list {
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tb-delc-rail-item {
  padding: 0.28rem 0.5rem;
  border-left: 3px solid var(--tb-delc-rail-accent, #64748b);
  border-radius: 6px;
  background: rgba(255, 255, 255, 0.03);
  font-size: 0.71875rem;
  line-height: 1.3;
  font-weight: 600;
  opacity: 0.88;
}

.tb-delc-rail-active {
  --tb-delc-rail-accent: #15803d;
}
.tb-delc-rail-rejected {
  --tb-delc-rail-accent: #b91c1c;
}
.tb-delc-rail-expired {
  --tb-delc-rail-accent: #b45309;
}
.tb-delc-rail-superseded {
  --tb-delc-rail-accent: #0369a1;
}
.tb-delc-rail-revoked {
  --tb-delc-rail-accent: #b91c1c;
}

.tb-delc-rail-note {
  font-size: 0.6875rem;
  line-height: 1.45;
  opacity: 0.75;
}

.tb-delc-monitor {
  grid-column: 1 / -1;
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  padding: 0.75rem 0.85rem;
  border: 1px dashed rgba(120, 130, 150, 0.45);
  border-radius: 10px;
  background: rgba(120, 130, 150, 0.05);
}

.tb-delc-monitor-label {
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-delc-monitor-list {
  display: flex;
  flex-wrap: wrap;
  gap: 0.3rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tb-delc-monitor-item {
  padding: 0.28rem 0.5rem;
  border: 1px solid rgba(120, 130, 150, 0.24);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.03);
  font-size: 0.71875rem;
  line-height: 1.3;
  font-weight: 600;
  opacity: 0.85;
}

.tb-delc-foot {
  font-size: 0.75rem;
  line-height: 1.55;
  opacity: 0.72;
}

@media (max-width: 900px) {

  .tb-delc-body {
    grid-template-columns: minmax(0, 1fr);
  }

  .tb-delc-layer,
  .tb-delc-boundary,
  .tb-delc-rail,
  .tb-delc-monitor {
    grid-column: 1;
    grid-row: auto;
  }

}

@media (max-width: 720px) {

  .tb-delc {
    padding: 1.1rem;
  }

  .tb-delc-stages {
    grid-template-columns: minmax(0, 1fr);
  }

}

/* -------------------------------------------------------------------------
   tb-dasm: The DPP Assurance Model (TBF-035)
   Composition: a vertical seven step assurance cycle rail (how assurance is
   performed) beside a central eight domain assurance field (what is assured),
   a remediation and retest loop band, and three terminal decision states.
   ------------------------------------------------------------------------- */

.tb-dasm {
  display: flex;
  flex-direction: column;
  gap: 0.9rem;
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(79, 70, 229, 0.07), rgba(79, 70, 229, 0));
}

.tb-dasm-head {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}

.tb-dasm-eyebrow {
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-dasm-title {
  font-size: 1.125rem;
  font-weight: 700;
  line-height: 1.3;
}

.tb-dasm-sub {
  font-size: 0.8125rem;
  line-height: 1.55;
  opacity: 0.75;
}

.tb-dasm-body {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(0, 3fr);
  gap: 0.8rem 0.9rem;
  align-items: start;
}

.tb-dasm-cycle {
  grid-column: 1;
  grid-row: 1 / span 2;
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  margin: 0;
  padding: 0.85rem;
  list-style: none;
  border: 1px solid rgba(79, 70, 229, 0.45);
  border-radius: 12px;
  background: rgba(79, 70, 229, 0.05);
  counter-reset: none;
}

.tb-dasm-step {
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
  padding: 0.4rem 0.5rem;
  border: 1px solid rgba(120, 130, 150, 0.22);
  border-radius: 9px;
  background: rgba(255, 255, 255, 0.03);
}

.tb-dasm-step-num {
  flex: 0 0 auto;
  min-width: 1.25rem;
  height: 1.25rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  background: rgba(79, 70, 229, 0.18);
  font-size: 0.6875rem;
  font-weight: 700;
}

.tb-dasm-step-name {
  font-size: 0.75rem;
  font-weight: 600;
  line-height: 1.35;
}

.tb-dasm-field {
  grid-column: 2;
  grid-row: 1;
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
  padding: 0.85rem;
  border: 1px solid rgba(13, 148, 136, 0.45);
  border-radius: 12px;
  background: rgba(13, 148, 136, 0.05);
}

.tb-dasm-field-label,
.tb-dasm-loop-label {
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.68;
}

.tb-dasm-domains {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr));
  gap: 0.45rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tb-dasm-domain {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  padding: 0.5rem 0.6rem;
  border: 1px solid rgba(120, 130, 150, 0.24);
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.03);
}

.tb-dasm-domain-id {
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  opacity: 0.6;
}

.tb-dasm-domain-name {
  font-size: 0.78125rem;
  font-weight: 700;
  line-height: 1.3;
}

.tb-dasm-domain-note {
  font-size: 0.6875rem;
  line-height: 1.4;
  opacity: 0.78;
}

.tb-dasm-field-note {
  font-size: 0.71875rem;
  line-height: 1.45;
  opacity: 0.78;
}

.tb-dasm-loop {
  grid-column: 2;
  grid-row: 2;
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  padding: 0.6rem 0.75rem;
  border: 1px dashed rgba(120, 130, 150, 0.5);
  border-radius: 12px;
  background: rgba(120, 130, 150, 0.05);
}

.tb-dasm-loop-flow {
  font-size: 0.71875rem;
  font-weight: 600;
  line-height: 1.45;
  opacity: 0.85;
}

.tb-dasm-outcomes {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr));
  gap: 0.45rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tb-dasm-outcome {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  padding: 0.6rem 0.7rem;
  border: 1px solid rgba(120, 130, 150, 0.24);
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.03);
}

.tb-dasm-outcome-ready {
  border-color: rgba(13, 148, 136, 0.5);
  background: rgba(13, 148, 136, 0.07);
}

.tb-dasm-outcome-conditional {
  border-color: rgba(202, 138, 4, 0.5);
  background: rgba(202, 138, 4, 0.07);
}

.tb-dasm-outcome-not-ready {
  border-color: rgba(190, 63, 63, 0.5);
  background: rgba(190, 63, 63, 0.07);
}

.tb-dasm-outcome-name {
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  line-height: 1.3;
}

.tb-dasm-outcome-note {
  font-size: 0.71875rem;
  line-height: 1.45;
  opacity: 0.8;
}

.tb-dasm-foot {
  font-size: 0.75rem;
  line-height: 1.55;
  opacity: 0.72;
}

@media (max-width: 900px) {

  .tb-dasm-body {
    grid-template-columns: minmax(0, 1fr);
  }

  .tb-dasm-cycle,
  .tb-dasm-field,
  .tb-dasm-loop,
  .tb-dasm-outcomes {
    grid-column: 1;
    grid-row: auto;
  }

}

@media (max-width: 720px) {

  .tb-dasm {
    padding: 1.1rem;
  }

  .tb-dasm-domains {
    grid-template-columns: minmax(0, 1fr);
  }

}

/* -------------------------------------------------------------------------
   tb-dpom: The DPP Operating Model (TBF-036)
   Composition: a control room layout. An inbound event band carries the seven
   operational event types into the model, a central eight step operational
   control cycle acts as the console, two flanking columns hold the eight
   operating capabilities the cycle coordinates, and a cross-cutting governance
   band spans the full width beneath them.
   ------------------------------------------------------------------------- */

.tb-dpom {
  display: flex;
  flex-direction: column;
  gap: 0.9rem;
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(2, 132, 199, 0.07), rgba(2, 132, 199, 0));
}

.tb-dpom-head {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}

.tb-dpom-eyebrow {
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-dpom-title {
  font-size: 1.125rem;
  font-weight: 700;
  line-height: 1.3;
}

.tb-dpom-sub {
  font-size: 0.8125rem;
  line-height: 1.55;
  opacity: 0.75;
}

.tb-dpom-band {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  padding: 0.85rem;
  border: 1px solid rgba(202, 138, 4, 0.45);
  border-radius: 12px;
  background: rgba(202, 138, 4, 0.06);
}

.tb-dpom-band-label,
.tb-dpom-col-label,
.tb-dpom-cycle-label,
.tb-dpom-gov-label {
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.68;
}

.tb-dpom-events {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(9.5rem, 1fr));
  gap: 0.45rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tb-dpom-event {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  padding: 0.5rem 0.6rem;
  border: 1px solid rgba(120, 130, 150, 0.24);
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.03);
}

.tb-dpom-event-id,
.tb-dpom-cap-id {
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  opacity: 0.6;
}

.tb-dpom-event-name,
.tb-dpom-cap-name {
  font-size: 0.78125rem;
  font-weight: 700;
  line-height: 1.3;
}

.tb-dpom-event-note,
.tb-dpom-cap-note {
  font-size: 0.6875rem;
  line-height: 1.4;
  opacity: 0.78;
}

.tb-dpom-flow {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.4rem;
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  opacity: 0.7;
}

.tb-dpom-core {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.5fr) minmax(0, 1fr);
  gap: 0.75rem;
  align-items: stretch;
}

.tb-dpom-col {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  padding: 0.85rem;
  border: 1px solid rgba(13, 148, 136, 0.45);
  border-radius: 12px;
  background: rgba(13, 148, 136, 0.05);
}

.tb-dpom-caps {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 0.45rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tb-dpom-cap {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  padding: 0.5rem 0.6rem;
  border: 1px solid rgba(120, 130, 150, 0.24);
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.03);
}

.tb-dpom-console {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  padding: 0.85rem;
  border: 1px solid rgba(2, 132, 199, 0.5);
  border-radius: 12px;
  background: rgba(2, 132, 199, 0.07);
}

.tb-dpom-cycle {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(8rem, 1fr));
  gap: 0.4rem;
  margin: 0;
  padding: 0;
  list-style: none;
  counter-reset: none;
}

.tb-dpom-step {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.4rem 0.5rem;
  border: 1px solid rgba(120, 130, 150, 0.22);
  border-radius: 9px;
  background: rgba(255, 255, 255, 0.03);
}

.tb-dpom-step-num {
  flex: 0 0 auto;
  min-width: 1.25rem;
  height: 1.25rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  background: rgba(2, 132, 199, 0.2);
  font-size: 0.6875rem;
  font-weight: 700;
}

.tb-dpom-step-name {
  font-size: 0.75rem;
  font-weight: 600;
  line-height: 1.35;
}

.tb-dpom-console-note {
  font-size: 0.71875rem;
  line-height: 1.45;
  opacity: 0.8;
}

.tb-dpom-return {
  padding: 0.45rem 0.6rem;
  border: 1px dashed rgba(120, 130, 150, 0.5);
  border-radius: 10px;
  font-size: 0.6875rem;
  font-weight: 600;
  line-height: 1.45;
  text-align: center;
  opacity: 0.85;
}

.tb-dpom-gov {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  padding: 0.7rem 0.85rem;
  border: 1px solid rgba(124, 58, 237, 0.5);
  border-radius: 12px;
  background: rgba(124, 58, 237, 0.07);
}

.tb-dpom-gov-flow {
  font-size: 0.71875rem;
  font-weight: 600;
  line-height: 1.5;
  opacity: 0.88;
}

.tb-dpom-foot {
  font-size: 0.75rem;
  line-height: 1.55;
  opacity: 0.72;
}

@media (max-width: 900px) {

  .tb-dpom-core {
    grid-template-columns: minmax(0, 1fr);
  }

  .tb-dpom-caps {
    grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr));
  }

}

@media (max-width: 720px) {

  .tb-dpom {
    padding: 1.1rem;
  }

  .tb-dpom-events,
  .tb-dpom-caps,
  .tb-dpom-cycle {
    grid-template-columns: minmax(0, 1fr);
  }

}

/* -------------------------------------------------------------------------
   tb-dppg: The DPP Programme Governance Model (TBF-037)
   Composition: a governance architecture. An authority column of five
   governance levels sits above a grid of seven decision domains, a governed
   decision cycle runs beneath them as a repeating seven step loop, and a
   cross-cutting accountability and decision rights band spans the full width.
   Deliberately not a staircase, roadmap, funnel, state machine, assurance ring
   or control room, so it reads as a distinct composition from TBF-030 to
   TBF-036.
   ------------------------------------------------------------------------- */

.tb-dppg {
  display: flex;
  flex-direction: column;
  gap: 0.9rem;
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(79, 70, 229, 0.07), rgba(79, 70, 229, 0));
}

.tb-dppg-head {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}

.tb-dppg-eyebrow {
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-dppg-title {
  font-size: 1.125rem;
  font-weight: 700;
  line-height: 1.3;
}

.tb-dppg-sub {
  font-size: 0.8125rem;
  line-height: 1.55;
  opacity: 0.75;
}

.tb-dppg-region-label {
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.68;
}

.tb-dppg-levels {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  padding: 0.85rem;
  border: 1px solid rgba(79, 70, 229, 0.45);
  border-radius: 12px;
  background: rgba(79, 70, 229, 0.06);
}

.tb-dppg-level-list {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 0.4rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tb-dppg-level {
  display: grid;
  grid-template-columns: 2rem minmax(0, 12rem) minmax(0, 1fr);
  align-items: baseline;
  gap: 0.6rem;
  padding: 0.5rem 0.6rem;
  border: 1px solid rgba(120, 130, 150, 0.24);
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.03);
}

.tb-dppg-level-id,
.tb-dppg-domain-id {
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  opacity: 0.6;
}

.tb-dppg-level-name,
.tb-dppg-domain-name {
  font-size: 0.78125rem;
  font-weight: 700;
  line-height: 1.3;
}

.tb-dppg-level-note,
.tb-dppg-domain-note {
  font-size: 0.6875rem;
  line-height: 1.4;
  opacity: 0.78;
}

.tb-dppg-loop-note {
  font-size: 0.6875rem;
  line-height: 1.45;
  font-style: italic;
  opacity: 0.75;
}

.tb-dppg-domains {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  padding: 0.85rem;
  border: 1px solid rgba(13, 148, 136, 0.45);
  border-radius: 12px;
  background: rgba(13, 148, 136, 0.05);
}

.tb-dppg-domain-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr));
  gap: 0.45rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tb-dppg-domain {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  padding: 0.5rem 0.6rem;
  border: 1px solid rgba(120, 130, 150, 0.24);
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.03);
}

.tb-dppg-cycle-wrap {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  padding: 0.85rem;
  border: 1px solid rgba(202, 138, 4, 0.45);
  border-radius: 12px;
  background: rgba(202, 138, 4, 0.06);
}

.tb-dppg-cycle {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(8.5rem, 1fr));
  gap: 0.4rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tb-dppg-step {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.4rem 0.5rem;
  border: 1px solid rgba(120, 130, 150, 0.22);
  border-radius: 9px;
  background: rgba(255, 255, 255, 0.03);
}

.tb-dppg-step-num {
  flex: 0 0 auto;
  min-width: 1.25rem;
  height: 1.25rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  background: rgba(202, 138, 4, 0.22);
  font-size: 0.6875rem;
  font-weight: 700;
}

.tb-dppg-step-name {
  font-size: 0.75rem;
  font-weight: 600;
  line-height: 1.35;
}

.tb-dppg-return {
  padding: 0.45rem 0.6rem;
  border: 1px dashed rgba(120, 130, 150, 0.5);
  border-radius: 10px;
  font-size: 0.6875rem;
  font-weight: 600;
  line-height: 1.45;
  text-align: center;
  opacity: 0.85;
}

.tb-dppg-rights {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  padding: 0.7rem 0.85rem;
  border: 1px solid rgba(190, 24, 93, 0.45);
  border-radius: 12px;
  background: rgba(190, 24, 93, 0.06);
}

.tb-dppg-rights-flow {
  font-size: 0.71875rem;
  font-weight: 600;
  line-height: 1.5;
  opacity: 0.88;
}

.tb-dppg-foot {
  font-size: 0.75rem;
  line-height: 1.55;
  opacity: 0.72;
}

@media (max-width: 900px) {

  .tb-dppg-level {
    grid-template-columns: 2rem minmax(0, 1fr);
    row-gap: 0.2rem;
  }

  .tb-dppg-level-note {
    grid-column: 2 / -1;
  }

}

@media (max-width: 720px) {

  .tb-dppg {
    padding: 1.1rem;
  }

  .tb-dppg-domain-list,
  .tb-dppg-cycle {
    grid-template-columns: minmax(0, 1fr);
  }

}

/* -------------------------------------------------------------------------
   tb-dpel: The DPP Enforcement Lifecycle (TBF-038)
   Composition: a horizontal legal-applicability band above a dual-track
   surveillance body. An authority track and an operator track run side by
   side, a divergence region separates information non-compliance from
   substantive product non-compliance, a proportionate measures band follows,
   and a full-width follow-up band loops back to the applicable requirement.
   A vertical competence rail on the left carries the Union / Member State
   division. Deliberately not a staircase, maturity ladder, funnel, vertical
   process, governance architecture (TBF-037) or control room (TBF-036).
   ------------------------------------------------------------------------- */

.tb-dpel {
  display: flex;
  flex-direction: column;
  gap: 0.9rem;
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(2, 132, 199, 0.07), rgba(2, 132, 199, 0));
}

.tb-dpel-head {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}

.tb-dpel-eyebrow {
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-dpel-title {
  font-size: 1.125rem;
  font-weight: 700;
  line-height: 1.3;
}

.tb-dpel-sub {
  font-size: 0.8125rem;
  line-height: 1.55;
  opacity: 0.75;
}

.tb-dpel-region-label {
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.68;
}

.tb-dpel-stage-tag {
  display: inline-block;
  margin-right: 0.4rem;
  padding: 0.05rem 0.35rem;
  border-radius: 999px;
  background: rgba(2, 132, 199, 0.2);
  font-size: 0.5625rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  white-space: nowrap;
}

.tb-dpel-applicability {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  padding: 0.85rem;
  border: 1px solid rgba(2, 132, 199, 0.45);
  border-radius: 12px;
  background: rgba(2, 132, 199, 0.06);
}

.tb-dpel-checkpoints {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr));
  gap: 0.4rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tb-dpel-checkpoint {
  padding: 0.45rem 0.55rem;
  border: 1px solid rgba(120, 130, 150, 0.24);
  border-radius: 9px;
  background: rgba(255, 255, 255, 0.03);
  font-size: 0.71875rem;
  font-weight: 600;
  line-height: 1.35;
}

.tb-dpel-checkpoint-live {
  border-color: rgba(2, 132, 199, 0.65);
  background: rgba(2, 132, 199, 0.14);
}

.tb-dpel-body {
  display: grid;
  grid-template-columns: minmax(0, 13rem) minmax(0, 1fr);
  grid-template-areas:
    'rail tracks'
    'rail divergence'
    'rail measures';
  gap: 0.6rem;
}

.tb-dpel-rail {
  grid-area: rail;
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  padding: 0.85rem;
  border: 1px solid rgba(100, 116, 139, 0.45);
  border-radius: 12px;
  background: rgba(100, 116, 139, 0.08);
}

.tb-dpel-rail-title {
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.7;
}

.tb-dpel-rail-note {
  font-size: 0.6875rem;
  line-height: 1.5;
  opacity: 0.82;
}

.tb-dpel-tracks {
  grid-area: tracks;
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
  gap: 0.6rem;
}

.tb-dpel-track {
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
  padding: 0.85rem;
  border-radius: 12px;
  border: 1px solid rgba(120, 130, 150, 0.3);
}

.tb-dpel-track-authority {
  border-color: rgba(13, 148, 136, 0.5);
  background: rgba(13, 148, 136, 0.06);
}

.tb-dpel-track-operator {
  border-color: rgba(202, 138, 4, 0.5);
  background: rgba(202, 138, 4, 0.06);
}

.tb-dpel-track-label {
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.7;
}

.tb-dpel-steps {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tb-dpel-step {
  display: flex;
  flex-direction: column;
  gap: 0.1rem;
  padding: 0.5rem 0.6rem;
  border: 1px solid rgba(120, 130, 150, 0.24);
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.03);
}

.tb-dpel-step-name {
  font-size: 0.78125rem;
  font-weight: 700;
  line-height: 1.3;
}

.tb-dpel-step-note {
  font-size: 0.6875rem;
  line-height: 1.4;
  opacity: 0.78;
}

.tb-dpel-divergence {
  grid-area: divergence;
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
  padding: 0.85rem;
  border: 1px dashed rgba(120, 130, 150, 0.5);
  border-radius: 12px;
}

.tb-dpel-branches {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
  gap: 0.5rem;
}

.tb-dpel-branch {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  padding: 0.55rem 0.65rem;
  border-radius: 10px;
  border: 1px solid rgba(120, 130, 150, 0.28);
}

.tb-dpel-branch-info {
  border-color: rgba(2, 132, 199, 0.5);
  background: rgba(2, 132, 199, 0.06);
}

.tb-dpel-branch-substantive {
  border-color: rgba(190, 24, 93, 0.5);
  background: rgba(190, 24, 93, 0.06);
}

.tb-dpel-branch-name {
  font-size: 0.78125rem;
  font-weight: 700;
  line-height: 1.3;
}

.tb-dpel-branch-note {
  font-size: 0.6875rem;
  line-height: 1.45;
  opacity: 0.8;
}

.tb-dpel-measures {
  grid-area: measures;
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
  padding: 0.85rem;
  border: 1px solid rgba(190, 24, 93, 0.45);
  border-radius: 12px;
  background: rgba(190, 24, 93, 0.05);
}

.tb-dpel-measure-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
  gap: 0.4rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tb-dpel-measure {
  padding: 0.45rem 0.55rem;
  border: 1px solid rgba(120, 130, 150, 0.24);
  border-radius: 9px;
  background: rgba(255, 255, 255, 0.03);
  font-size: 0.71875rem;
  font-weight: 600;
  line-height: 1.4;
}

.tb-dpel-measure-penalty {
  grid-column: 1 / -1;
  border-color: rgba(190, 24, 93, 0.55);
  background: rgba(190, 24, 93, 0.1);
}

.tb-dpel-followup {
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
  padding: 0.7rem 0.85rem;
  border: 1px solid rgba(79, 70, 229, 0.45);
  border-radius: 12px;
  background: rgba(79, 70, 229, 0.06);
}

.tb-dpel-followup-text {
  font-size: 0.71875rem;
  line-height: 1.5;
  opacity: 0.88;
}

.tb-dpel-foot {
  font-size: 0.75rem;
  line-height: 1.55;
  opacity: 0.72;
}

@media (max-width: 1000px) {

  .tb-dpel-body {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas:
      'rail'
      'tracks'
      'divergence'
      'measures';
  }

  .tb-dpel-tracks {
    grid-template-columns: minmax(0, 1fr);
  }

}

@media (max-width: 720px) {

  .tb-dpel {
    padding: 1.1rem;
  }

  .tb-dpel-checkpoints,
  .tb-dpel-measure-list,
  .tb-dpel-branches {
    grid-template-columns: minmax(0, 1fr);
  }

}

/* ---------------------------------------------------------------------------
   TBF-039, The DPP Legal Responsibility Model (KB-0039)
   Concentric role map with a separate responsibility lens.
--------------------------------------------------------------------------- */

.tb-dlrm {
  display: flex;
  flex-direction: column;
  gap: 0.9rem;
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(139, 92, 246, 0.07), rgba(139, 92, 246, 0));
}

.tb-dlrm-head {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}

.tb-dlrm-eyebrow {
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-dlrm-title {
  font-size: 1.125rem;
  font-weight: 700;
  line-height: 1.3;
}

.tb-dlrm-sub {
  font-size: 0.8125rem;
  line-height: 1.55;
  opacity: 0.75;
}

.tb-dlrm-region-label {
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.68;
}

.tb-dlrm-map {
  display: grid;
  grid-template-columns: minmax(0, 15rem) minmax(0, 1fr);
  grid-template-areas:
    'core rings'
    'authority authority';
  gap: 0.6rem;
}

.tb-dlrm-core {
  grid-area: core;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 0.35rem;
  padding: 1rem;
  border: 1px solid rgba(139, 92, 246, 0.6);
  border-radius: 12px;
  background: rgba(139, 92, 246, 0.14);
}

.tb-dlrm-core-label {
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.7;
}

.tb-dlrm-core-title {
  font-size: 0.9375rem;
  font-weight: 700;
  line-height: 1.3;
}

.tb-dlrm-core-note {
  font-size: 0.6875rem;
  line-height: 1.5;
  opacity: 0.82;
}

.tb-dlrm-rings {
  grid-area: rings;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.tb-dlrm-ring {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  padding: 0.8rem;
  border: 1px solid rgba(120, 130, 150, 0.28);
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.02);
}

.tb-dlrm-ring-legal {
  border-color: rgba(139, 92, 246, 0.55);
  background: rgba(139, 92, 246, 0.09);
}

.tb-dlrm-ring-conditional {
  border-style: dashed;
  border-color: rgba(217, 119, 6, 0.55);
  background: rgba(217, 119, 6, 0.07);
}

.tb-dlrm-ring-support {
  border-color: rgba(100, 116, 139, 0.45);
  background: rgba(100, 116, 139, 0.07);
}

.tb-dlrm-roles {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr));
  gap: 0.4rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tb-dlrm-role {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  padding: 0.5rem 0.6rem;
  border: 1px solid rgba(120, 130, 150, 0.24);
  border-radius: 9px;
  background: rgba(255, 255, 255, 0.03);
}

.tb-dlrm-role-name {
  font-size: 0.75rem;
  font-weight: 700;
  line-height: 1.3;
}

.tb-dlrm-role-note {
  font-size: 0.6875rem;
  line-height: 1.45;
  opacity: 0.78;
}

.tb-dlrm-authority {
  grid-area: authority;
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
  padding: 0.75rem 0.85rem;
  border: 1px solid rgba(15, 118, 110, 0.5);
  border-radius: 12px;
  background: rgba(15, 118, 110, 0.08);
}

.tb-dlrm-authority-note {
  font-size: 0.6875rem;
  line-height: 1.5;
  opacity: 0.85;
}

.tb-dlrm-lens {
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
  padding: 0.85rem;
  border: 1px solid rgba(120, 130, 150, 0.28);
  border-radius: 12px;
  background: rgba(120, 130, 150, 0.06);
}

.tb-dlrm-lens-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(9.5rem, 1fr));
  gap: 0.4rem;
}

.tb-dlrm-lens-card {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  padding: 0.55rem 0.6rem;
  border: 1px solid rgba(120, 130, 150, 0.24);
  border-radius: 9px;
  background: rgba(255, 255, 255, 0.03);
}

.tb-dlrm-lens-legal {
  border-color: rgba(139, 92, 246, 0.55);
  background: rgba(139, 92, 246, 0.1);
}

.tb-dlrm-lens-title {
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.tb-dlrm-lens-body {
  font-size: 0.6875rem;
  line-height: 1.45;
  opacity: 0.8;
}

.tb-dlrm-footnote {
  font-size: 0.6875rem;
  line-height: 1.5;
  opacity: 0.72;
}

@media (max-width: 1000px) {

  .tb-dlrm-map {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas:
      'core'
      'rings'
      'authority';
  }

}

@media (max-width: 720px) {

  .tb-dlrm {
    padding: 1.1rem;
  }

  .tb-dlrm-roles,
  .tb-dlrm-lens-grid {
    grid-template-columns: minmax(0, 1fr);
  }

}

/* --- TBF-040: The DPP Conformity Assessment Relationship Model (tb-dcam) --- */

.tb-dcam {
  display: flex;
  flex-direction: column;
  gap: 0.9rem;
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(14, 165, 233, 0.07), rgba(14, 165, 233, 0));
}

.tb-dcam-head {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}

.tb-dcam-eyebrow {
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-dcam-title {
  font-size: 1.125rem;
  font-weight: 700;
  line-height: 1.3;
}

.tb-dcam-sub {
  font-size: 0.8125rem;
  line-height: 1.55;
  opacity: 0.75;
}

.tb-dcam-grid {
  display: grid;
  grid-template-columns: minmax(0, 12rem) minmax(0, 1fr) minmax(0, 12rem);
  gap: 0.6rem;
  align-items: stretch;
}

.tb-dcam-rail {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 0.35rem;
  padding: 0.9rem;
  border-radius: 12px;
}

.tb-dcam-rail-label {
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.75;
}

.tb-dcam-rail-note {
  font-size: 0.6875rem;
  line-height: 1.5;
  opacity: 0.82;
}

.tb-dcam-rail-operator {
  border: 1px solid rgba(139, 92, 246, 0.5);
  background: rgba(139, 92, 246, 0.08);
}

.tb-dcam-rail-consistency {
  border: 1px dashed rgba(15, 118, 110, 0.6);
  background: rgba(15, 118, 110, 0.08);
}

.tb-dcam-stack {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  margin: 0;
  padding: 0;
  list-style: none;
  counter-reset: none;
}

.tb-dcam-layer {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  padding: 0.85rem 0.95rem;
  border: 1px solid rgba(14, 165, 233, 0.45);
  border-radius: 12px;
  background: rgba(14, 165, 233, 0.07);
}

.tb-dcam-layer + .tb-dcam-layer::before {
  content: '';
  position: absolute;
  top: -0.5rem;
  left: 1.75rem;
  width: 0;
  height: 0.5rem;
  border-left: 2px solid rgba(14, 165, 233, 0.55);
}

.tb-dcam-layer-1 {
  border-color: rgba(37, 99, 235, 0.5);
  background: rgba(37, 99, 235, 0.08);
}

.tb-dcam-layer-2 {
  border-color: rgba(14, 165, 233, 0.55);
  background: rgba(14, 165, 233, 0.09);
}

.tb-dcam-layer-3 {
  border-color: rgba(5, 150, 105, 0.5);
  background: rgba(5, 150, 105, 0.08);
}

.tb-dcam-layer-4 {
  border-color: rgba(217, 119, 6, 0.5);
  background: rgba(217, 119, 6, 0.07);
}

.tb-dcam-layer-index {
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.65;
}

.tb-dcam-layer-name {
  font-size: 0.9375rem;
  font-weight: 700;
  line-height: 1.3;
}

.tb-dcam-layer-q {
  font-size: 0.75rem;
  font-weight: 600;
  line-height: 1.45;
  opacity: 0.85;
}

.tb-dcam-layer-note {
  font-size: 0.6875rem;
  line-height: 1.5;
  opacity: 0.8;
}

.tb-dcam-branch {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  margin-top: 0.45rem;
  padding: 0.55rem 0.65rem;
  border: 1px dashed rgba(217, 119, 6, 0.6);
  border-radius: 10px;
  background: rgba(217, 119, 6, 0.06);
}

.tb-dcam-branch-label {
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.75;
}

.tb-dcam-branch-body {
  font-size: 0.6875rem;
  line-height: 1.5;
  opacity: 0.82;
}

.tb-dcam-feedback {
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
  padding: 0.75rem 0.85rem;
  border: 1px solid rgba(190, 24, 93, 0.45);
  border-radius: 12px;
  background: rgba(190, 24, 93, 0.07);
}

.tb-dcam-feedback-label {
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.75;
}

.tb-dcam-feedback-note {
  font-size: 0.6875rem;
  line-height: 1.5;
  opacity: 0.82;
}

@media (max-width: 1000px) {

  .tb-dcam-grid {
    grid-template-columns: minmax(0, 1fr);
  }

}

@media (max-width: 720px) {

  .tb-dcam {
    padding: 1.1rem;
  }

  .tb-dcam-layer + .tb-dcam-layer::before {
    left: 1.1rem;
  }

}

/* --- TBF-041: The DPP Standards Landscape Model (tb-dsl) --- */

.tb-dsl {
  display: flex;
  flex-direction: column;
  gap: 0.9rem;
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(37, 99, 235, 0.07), rgba(37, 99, 235, 0));
}

.tb-dsl-head {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}

.tb-dsl-eyebrow {
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-dsl-title {
  font-size: 1.125rem;
  font-weight: 700;
  line-height: 1.3;
}

.tb-dsl-sub {
  font-size: 0.8125rem;
  line-height: 1.55;
  opacity: 0.75;
}

.tb-dsl-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 15rem);
  gap: 0.7rem;
  align-items: start;
}

.tb-dsl-map {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tb-dsl-zone {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  padding: 0.85rem 0.95rem;
  border-radius: 12px;
  border: 1px solid rgba(120, 130, 150, 0.3);
}

.tb-dsl-zone-legal {
  border-color: rgba(37, 99, 235, 0.5);
  background: rgba(37, 99, 235, 0.08);
}

.tb-dsl-zone-direction {
  border-color: rgba(124, 58, 237, 0.5);
  background: rgba(124, 58, 237, 0.08);
}

.tb-dsl-zone-ecosystem {
  border-color: rgba(14, 165, 233, 0.5);
  background: rgba(14, 165, 233, 0.08);
}

.tb-dsl-zone-domains {
  border-color: rgba(5, 150, 105, 0.5);
  background: rgba(5, 150, 105, 0.08);
}

.tb-dsl-zone-implementation {
  border-color: rgba(217, 119, 6, 0.5);
  background: rgba(217, 119, 6, 0.07);
}

.tb-dsl-zone-label {
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.7;
}

.tb-dsl-zone-name {
  font-size: 0.9375rem;
  font-weight: 700;
  line-height: 1.3;
}

.tb-dsl-zone-note {
  font-size: 0.6875rem;
  line-height: 1.5;
  opacity: 0.8;
}

.tb-dsl-nodes {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  margin: 0.15rem 0 0;
  padding: 0;
  list-style: none;
}

.tb-dsl-node {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  flex: 1 1 9.5rem;
  min-width: 0;
  padding: 0.5rem 0.6rem;
  border: 1px solid rgba(120, 130, 150, 0.35);
  border-radius: 10px;
  background: rgba(148, 163, 184, 0.09);
}

.tb-dsl-node-name {
  font-size: 0.75rem;
  font-weight: 700;
  line-height: 1.35;
}

.tb-dsl-node-role {
  font-size: 0.625rem;
  line-height: 1.45;
  opacity: 0.8;
}

.tb-dsl-node-optional {
  border-style: dashed;
}

.tb-dsl-rail {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  padding: 0.9rem;
  border: 1px solid rgba(190, 24, 93, 0.45);
  border-radius: 12px;
  background: rgba(190, 24, 93, 0.06);
}

.tb-dsl-rail-label {
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.75;
}

.tb-dsl-rail-note {
  font-size: 0.6875rem;
  line-height: 1.5;
  opacity: 0.82;
}

.tb-dsl-effects {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tb-dsl-effect {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  padding: 0.5rem 0.6rem;
  border-radius: 10px;
  border-left-width: 4px;
  border-left-style: solid;
  background: rgba(148, 163, 184, 0.08);
}

.tb-dsl-effect-binding {
  border-left-color: rgba(190, 18, 60, 0.85);
  background: rgba(190, 18, 60, 0.09);
}

.tb-dsl-effect-product {
  border-left-color: rgba(217, 119, 6, 0.85);
  background: rgba(217, 119, 6, 0.09);
}

.tb-dsl-effect-harmonised {
  border-left-color: rgba(37, 99, 235, 0.85);
  background: rgba(37, 99, 235, 0.09);
  border-top: 1px dashed rgba(37, 99, 235, 0.5);
}

.tb-dsl-effect-standard {
  border-left-color: rgba(5, 150, 105, 0.85);
  background: rgba(5, 150, 105, 0.09);
  border-top: 1px dashed rgba(5, 150, 105, 0.5);
}

.tb-dsl-effect-choice {
  border-left-color: rgba(100, 116, 139, 0.85);
  background: rgba(100, 116, 139, 0.1);
  border-top: 1px dotted rgba(100, 116, 139, 0.6);
}

.tb-dsl-effect-name {
  font-size: 0.75rem;
  font-weight: 700;
  line-height: 1.35;
}

.tb-dsl-effect-note {
  font-size: 0.625rem;
  line-height: 1.45;
  opacity: 0.82;
}

.tb-dsl-foot {
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
  padding: 0.75rem 0.85rem;
  border: 1px dashed rgba(120, 130, 150, 0.45);
  border-radius: 12px;
  background: rgba(148, 163, 184, 0.07);
}

.tb-dsl-foot-label {
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.75;
}

.tb-dsl-foot-note {
  font-size: 0.6875rem;
  line-height: 1.5;
  opacity: 0.82;
}

@media (max-width: 1000px) {

  .tb-dsl-grid {
    grid-template-columns: minmax(0, 1fr);
  }

}

@media (max-width: 720px) {

  .tb-dsl {
    padding: 1.1rem;
  }

  .tb-dsl-node {
    flex-basis: 100%;
  }

}

/* --- TBF-042: The Passport Data Origin Model (tb-pdo) --- */

.tb-pdo {
  display: flex;
  flex-direction: column;
  gap: 0.9rem;
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(5, 150, 105, 0.07), rgba(5, 150, 105, 0));
}

.tb-pdo-head {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}

.tb-pdo-eyebrow {
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-pdo-title {
  font-size: 1.125rem;
  font-weight: 700;
  line-height: 1.3;
}

.tb-pdo-sub {
  font-size: 0.8125rem;
  line-height: 1.55;
  opacity: 0.75;
}

.tb-pdo-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem 0.9rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tb-pdo-legend-item {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  opacity: 0.8;
}

.tb-pdo-legend-item::before {
  content: '';
  width: 0.85rem;
  height: 0.85rem;
  border-radius: 4px;
  flex: 0 0 auto;
}

.tb-pdo-legend-info::before {
  background: rgba(5, 150, 105, 0.45);
  border: 1px solid rgba(5, 150, 105, 0.6);
}

.tb-pdo-legend-origin::before {
  background: rgba(148, 163, 184, 0.25);
  border: 1px solid rgba(120, 130, 150, 0.5);
}

.tb-pdo-legend-authority::before {
  background: transparent;
  border-left: 3px solid rgba(37, 99, 235, 0.75);
  border-radius: 2px;
  width: 0.5rem;
}

.tb-pdo-legend-evidence::before {
  background: transparent;
  border: 1px dashed rgba(217, 119, 6, 0.8);
}

.tb-pdo-matrix {
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
}

.tb-pdo-colhead {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(0, 1.5fr) minmax(0, 1fr) minmax(0, 1fr);
  gap: 0.6rem;
  padding: 0 0.2rem;
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.55;
}

.tb-pdo-rows {
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tb-pdo-row {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(0, 1.5fr) minmax(0, 1fr) minmax(0, 1fr);
  gap: 0.6rem;
  align-items: stretch;
  padding: 0.6rem;
  border: 1px solid rgba(120, 130, 150, 0.28);
  border-radius: 12px;
  background: rgba(148, 163, 184, 0.05);
}

.tb-pdo-row-conditional {
  border-style: dashed;
}

.tb-pdo-info {
  display: flex;
  align-items: baseline;
  gap: 0.45rem;
  min-width: 0;
  padding: 0.5rem 0.6rem;
  border-radius: 10px;
  border: 1px solid rgba(5, 150, 105, 0.5);
  background: rgba(5, 150, 105, 0.12);
}

.tb-pdo-info-index {
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  opacity: 0.65;
  flex: 0 0 auto;
}

.tb-pdo-info-name {
  font-size: 0.8125rem;
  font-weight: 700;
  line-height: 1.35;
}

.tb-pdo-origins {
  display: flex;
  flex-wrap: wrap;
  align-content: flex-start;
  gap: 0.3rem;
  margin: 0;
  padding: 0.15rem 0;
  list-style: none;
  min-width: 0;
}

.tb-pdo-chip {
  padding: 0.25rem 0.5rem;
  border: 1px solid rgba(120, 130, 150, 0.45);
  border-radius: 999px;
  background: rgba(148, 163, 184, 0.14);
  font-size: 0.6875rem;
  line-height: 1.3;
}

.tb-pdo-authority {
  padding: 0.4rem 0.55rem;
  border-left: 3px solid rgba(37, 99, 235, 0.75);
  border-radius: 3px;
  background: rgba(37, 99, 235, 0.07);
  font-size: 0.6875rem;
  line-height: 1.45;
}

.tb-pdo-evidence {
  padding: 0.4rem 0.55rem;
  border: 1px dashed rgba(217, 119, 6, 0.7);
  border-radius: 8px;
  font-size: 0.6875rem;
  line-height: 1.45;
}

.tb-pdo-evidence-none {
  opacity: 0.6;
  border-style: dotted;
}

.tb-pdo-publication {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  padding: 0.85rem 0.95rem;
  border: 1px solid rgba(124, 58, 237, 0.45);
  border-radius: 12px;
  background: rgba(124, 58, 237, 0.08);
}

.tb-pdo-publication-label {
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.7;
}

.tb-pdo-publication-note {
  margin: 0;
  font-size: 0.75rem;
  line-height: 1.5;
  opacity: 0.85;
}

.tb-pdo-foot {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  padding-top: 0.3rem;
  border-top: 1px solid rgba(120, 130, 150, 0.25);
}

.tb-pdo-foot-label {
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-pdo-foot-note {
  font-size: 0.6875rem;
  line-height: 1.5;
  opacity: 0.75;
}

@media (max-width: 900px) {

  .tb-pdo-colhead {
    display: none;
  }

  .tb-pdo-row {
    grid-template-columns: minmax(0, 1fr);
  }

}

/* --- KB-0043 explanatory article diagram: battery passport flow (tb-bpf) --- */

.tb-bpf {
  display: flex;
  flex-direction: column;
  gap: 0.9rem;
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(217, 119, 6, 0.07), rgba(217, 119, 6, 0));
}

.tb-bpf-head {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}

.tb-bpf-eyebrow {
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-bpf-title {
  font-size: 1.125rem;
  font-weight: 700;
  line-height: 1.3;
}

.tb-bpf-sub {
  font-size: 0.8125rem;
  line-height: 1.55;
  opacity: 0.75;
}

.tb-bpf-flow {
  display: flex;
  flex-direction: column;
  gap: 0;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tb-bpf-stage {
  display: grid;
  grid-template-columns: 2.2rem minmax(0, 1.35fr) minmax(0, 1fr);
  gap: 0.75rem;
  align-items: stretch;
  padding: 0.35rem 0;
}

.tb-bpf-rail {
  position: relative;
  display: flex;
  align-items: flex-start;
  justify-content: center;
}

.tb-bpf-rail::before {
  content: '';
  position: absolute;
  top: 0;
  bottom: -0.7rem;
  left: 50%;
  width: 2px;
  transform: translateX(-50%);
  background: rgba(217, 119, 6, 0.35);
}

.tb-bpf-stage:last-child .tb-bpf-rail::before {
  bottom: auto;
  height: 1.4rem;
}

.tb-bpf-marker {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 1.7rem;
  height: 1.7rem;
  border-radius: 50%;
  border: 1px solid rgba(217, 119, 6, 0.6);
  background: rgba(217, 119, 6, 0.14);
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.03em;
}

.tb-bpf-card {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  min-width: 0;
  padding: 0.7rem 0.85rem;
  border: 1px solid rgba(120, 130, 150, 0.32);
  border-radius: 12px;
  background: rgba(148, 163, 184, 0.07);
}

.tb-bpf-stage-legal .tb-bpf-card {
  border-color: rgba(37, 99, 235, 0.5);
  background: rgba(37, 99, 235, 0.08);
}

.tb-bpf-stage-publish .tb-bpf-card {
  border-color: rgba(5, 150, 105, 0.5);
  background: rgba(5, 150, 105, 0.09);
}

.tb-bpf-stage-name {
  font-size: 0.875rem;
  font-weight: 700;
  line-height: 1.3;
}

.tb-bpf-stage-note {
  font-size: 0.6875rem;
  line-height: 1.5;
  opacity: 0.82;
}

.tb-bpf-stage-ref {
  font-size: 0.625rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  opacity: 0.65;
}

.tb-bpf-feeds {
  display: flex;
  flex-wrap: wrap;
  align-content: flex-start;
  gap: 0.3rem;
  margin: 0;
  padding: 0.25rem 0 0;
  list-style: none;
  min-width: 0;
}

.tb-bpf-feed {
  padding: 0.22rem 0.5rem;
  border-radius: 999px;
  font-size: 0.6875rem;
  line-height: 1.3;
  border: 1px solid rgba(120, 130, 150, 0.45);
  background: rgba(148, 163, 184, 0.12);
}

.tb-bpf-feed-supplier {
  border-color: rgba(124, 58, 237, 0.55);
  background: rgba(124, 58, 237, 0.1);
}

.tb-bpf-feed-system {
  border-color: rgba(14, 165, 233, 0.55);
  background: rgba(14, 165, 233, 0.1);
}

.tb-bpf-feed-external {
  border-color: rgba(217, 119, 6, 0.6);
  background: rgba(217, 119, 6, 0.1);
}

.tb-bpf-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem 0.9rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tb-bpf-legend-item {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  font-size: 0.6875rem;
  font-weight: 600;
  opacity: 0.8;
}

.tb-bpf-legend-item::before {
  content: '';
  width: 0.85rem;
  height: 0.85rem;
  border-radius: 999px;
  flex: 0 0 auto;
}

.tb-bpf-legend-supplier::before {
  border: 1px solid rgba(124, 58, 237, 0.6);
  background: rgba(124, 58, 237, 0.2);
}

.tb-bpf-legend-system::before {
  border: 1px solid rgba(14, 165, 233, 0.6);
  background: rgba(14, 165, 233, 0.2);
}

.tb-bpf-legend-external::before {
  border: 1px solid rgba(217, 119, 6, 0.65);
  background: rgba(217, 119, 6, 0.2);
}

.tb-bpf-foot {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  padding-top: 0.3rem;
  border-top: 1px solid rgba(120, 130, 150, 0.25);
}

.tb-bpf-foot-label {
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-bpf-foot-note {
  font-size: 0.6875rem;
  line-height: 1.5;
  opacity: 0.75;
}

@media (max-width: 900px) {

  .tb-bpf-stage {
    grid-template-columns: 2.2rem minmax(0, 1fr);
  }

  .tb-bpf-feeds {
    grid-column: 2;
  }

}

/* --- KB-0044 explanatory article diagram: construction product passport stack (tb-cps) --- */

.tb-cps {
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(160deg, rgba(15, 118, 110, 0.08), rgba(15, 118, 110, 0));
}

.tb-cps-head {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  margin-bottom: 1.1rem;
}

.tb-cps-eyebrow {
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-cps-title {
  font-size: 1.125rem;
  font-weight: 700;
  line-height: 1.3;
}

.tb-cps-sub {
  font-size: 0.8125rem;
  line-height: 1.55;
  opacity: 0.75;
}

.tb-cps-layers {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tb-cps-layer {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr);
  gap: 0.85rem;
  padding: 0.85rem 0.95rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.24));
  border-left: 4px solid rgba(15, 118, 110, 0.5);
  border-radius: 10px;
  background: var(--tb-surface, rgba(255, 255, 255, 0.55));
}

.tb-cps-layer-legal {
  border-left-color: rgba(180, 83, 9, 0.75);
}

.tb-cps-layer-output {
  border-left-color: rgba(29, 78, 216, 0.7);
}

.tb-cps-layer-band {
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
}

.tb-cps-step {
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  opacity: 0.55;
}

.tb-cps-name {
  font-size: 0.9375rem;
  font-weight: 700;
  line-height: 1.35;
}

.tb-cps-note {
  font-size: 0.8125rem;
  line-height: 1.55;
  opacity: 0.82;
}

.tb-cps-ref {
  margin-top: 0.15rem;
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  opacity: 0.65;
}

.tb-cps-inputs {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  align-content: flex-start;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tb-cps-input {
  padding: 0.2rem 0.55rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.3));
  border-radius: 999px;
  font-size: 0.75rem;
  line-height: 1.4;
  white-space: normal;
}

.tb-cps-input-supplier {
  border-color: rgba(180, 83, 9, 0.45);
  background: rgba(180, 83, 9, 0.09);
}

.tb-cps-input-system {
  border-color: rgba(15, 118, 110, 0.45);
  background: rgba(15, 118, 110, 0.09);
}

.tb-cps-input-assessment {
  border-color: rgba(109, 40, 217, 0.45);
  background: rgba(109, 40, 217, 0.09);
}

.tb-cps-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin: 0 0 0.9rem;
  padding: 0;
  list-style: none;
}

.tb-cps-legend-item {
  padding: 0.2rem 0.6rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.3));
  border-radius: 999px;
  font-size: 0.75rem;
  font-weight: 600;
}

.tb-cps-legend-supplier {
  border-color: rgba(180, 83, 9, 0.45);
  background: rgba(180, 83, 9, 0.09);
}

.tb-cps-legend-system {
  border-color: rgba(15, 118, 110, 0.45);
  background: rgba(15, 118, 110, 0.09);
}

.tb-cps-legend-assessment {
  border-color: rgba(109, 40, 217, 0.45);
  background: rgba(109, 40, 217, 0.09);
}

.tb-cps-crosscut {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  align-items: baseline;
  margin-top: 0.9rem;
  padding: 0.7rem 0.95rem;
  border: 1px dashed var(--tb-border, rgba(120, 130, 150, 0.4));
  border-radius: 10px;
}

.tb-cps-crosscut-label {
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-cps-crosscut-note {
  flex: 1 1 16rem;
  font-size: 0.8125rem;
  line-height: 1.55;
  opacity: 0.82;
}

@media (max-width: 720px) {

  .tb-cps-layer {
    grid-template-columns: minmax(0, 1fr);
  }

}

/* --- KB-0045 explanatory article diagram: multi-tier textile data chain (tb-tdc) --- */

.tb-tdc {
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(150deg, rgba(190, 24, 93, 0.07), rgba(190, 24, 93, 0));
  display: flex;
  flex-direction: column;
  gap: 1.1rem;
}

.tb-tdc-head {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}

.tb-tdc-eyebrow {
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  opacity: 0.62;
}

.tb-tdc-title {
  font-size: 1.0625rem;
  font-weight: 700;
  line-height: 1.35;
}

.tb-tdc-sub {
  font-size: 0.8125rem;
  line-height: 1.6;
  opacity: 0.82;
}

.tb-tdc-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem 0.9rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tb-tdc-legend-item {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  font-size: 0.6875rem;
  font-weight: 600;
  opacity: 0.8;
}

.tb-tdc-legend-item::before {
  content: '';
  width: 0.85rem;
  height: 0.85rem;
  border-radius: 999px;
  flex: 0 0 auto;
}

.tb-tdc-legend-data::before {
  border: 1px solid rgba(14, 165, 233, 0.6);
  background: rgba(14, 165, 233, 0.2);
}

.tb-tdc-legend-evidence::before {
  border: 1px solid rgba(217, 119, 6, 0.65);
  background: rgba(217, 119, 6, 0.2);
}

.tb-tdc-legend-system::before {
  border: 1px solid rgba(124, 58, 237, 0.6);
  background: rgba(124, 58, 237, 0.2);
}

.tb-tdc-chain {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 0.6rem;
  margin: 0;
  padding: 0;
  list-style: none;
  counter-reset: tb-tdc-tier;
}

.tb-tdc-tier {
  display: grid;
  grid-template-columns: 3.2rem minmax(0, 1.1fr) minmax(0, 1fr) minmax(0, 1fr);
  gap: 0.75rem;
  align-items: start;
  padding: 0.8rem 0.9rem;
  border: 1px solid rgba(120, 130, 150, 0.26);
  border-radius: 11px;
  background: var(--tb-surface, rgba(255, 255, 255, 0.5));
}

.tb-tdc-tier-brand {
  border-color: rgba(190, 24, 93, 0.45);
  background: rgba(190, 24, 93, 0.07);
}

.tb-tdc-tier-passport {
  border-color: rgba(5, 150, 105, 0.5);
  background: rgba(5, 150, 105, 0.08);
}

.tb-tdc-rank {
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  opacity: 0.6;
  padding-top: 0.15rem;
}

.tb-tdc-node {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  min-width: 0;
}

.tb-tdc-name {
  font-size: 0.875rem;
  font-weight: 700;
  line-height: 1.3;
}

.tb-tdc-note {
  font-size: 0.6875rem;
  line-height: 1.5;
  opacity: 0.82;
}

.tb-tdc-col {
  display: flex;
  flex-wrap: wrap;
  align-content: flex-start;
  gap: 0.3rem;
  margin: 0;
  padding: 0;
  list-style: none;
  min-width: 0;
}

.tb-tdc-chip {
  padding: 0.22rem 0.5rem;
  border-radius: 999px;
  font-size: 0.6875rem;
  line-height: 1.3;
  border: 1px solid rgba(120, 130, 150, 0.45);
  background: rgba(148, 163, 184, 0.12);
}

.tb-tdc-chip-data {
  border-color: rgba(14, 165, 233, 0.55);
  background: rgba(14, 165, 233, 0.1);
}

.tb-tdc-chip-evidence {
  border-color: rgba(217, 119, 6, 0.6);
  background: rgba(217, 119, 6, 0.1);
}

.tb-tdc-systems {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  padding: 0.85rem 0.95rem;
  border: 1px dashed rgba(124, 58, 237, 0.5);
  border-radius: 11px;
  background: rgba(124, 58, 237, 0.06);
}

.tb-tdc-systems-label {
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.65;
}

.tb-tdc-systems-list {
  display: flex;
  flex-wrap: wrap;
  gap: 0.3rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tb-tdc-system {
  padding: 0.22rem 0.5rem;
  border-radius: 999px;
  font-size: 0.6875rem;
  line-height: 1.3;
  border: 1px solid rgba(124, 58, 237, 0.55);
  background: rgba(124, 58, 237, 0.1);
}

.tb-tdc-systems-note {
  font-size: 0.6875rem;
  line-height: 1.55;
  opacity: 0.78;
}

.tb-tdc-foot {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem 1rem;
  padding-top: 0.4rem;
  border-top: 1px solid rgba(120, 130, 150, 0.25);
}

.tb-tdc-foot-label {
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-tdc-foot-note {
  flex: 1 1 16rem;
  font-size: 0.75rem;
  line-height: 1.55;
  opacity: 0.8;
}

@media (max-width: 900px) {

  .tb-tdc-tier {
    grid-template-columns: 3rem minmax(0, 1fr);
  }

  .tb-tdc-col {
    grid-column: 2;
  }

}

/* --- KB-0046 explanatory article diagram: electronics product data spine (tb-eps) --- */

.tb-eps {
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(150deg, rgba(13, 148, 136, 0.08), rgba(13, 148, 136, 0));
  display: flex;
  flex-direction: column;
  gap: 1.1rem;
}

.tb-eps-head {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}

.tb-eps-eyebrow {
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  opacity: 0.62;
}

.tb-eps-title {
  font-size: 1.0625rem;
  font-weight: 700;
  line-height: 1.35;
}

.tb-eps-sub {
  font-size: 0.8125rem;
  line-height: 1.6;
  opacity: 0.82;
}

.tb-eps-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem 0.9rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tb-eps-legend-item {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  font-size: 0.6875rem;
  font-weight: 600;
  opacity: 0.8;
}

.tb-eps-legend-item::before {
  content: '';
  width: 0.85rem;
  height: 0.85rem;
  border-radius: 999px;
  flex: 0 0 auto;
}

.tb-eps-legend-supplier::before {
  border: 1px solid rgba(13, 148, 136, 0.6);
  background: rgba(13, 148, 136, 0.2);
}

.tb-eps-legend-internal::before {
  border: 1px solid rgba(79, 70, 229, 0.6);
  background: rgba(79, 70, 229, 0.2);
}

.tb-eps-legend-external::before {
  border: 1px solid rgba(217, 119, 6, 0.65);
  background: rgba(217, 119, 6, 0.2);
}

.tb-eps-stack {
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tb-eps-layer {
  display: grid;
  grid-template-columns: 2.2rem minmax(11rem, 1fr) minmax(0, 1.6fr);
  gap: 0.75rem;
  align-items: start;
  padding: 0.75rem 0.85rem;
  border: 1px solid rgba(120, 130, 150, 0.25);
  border-radius: 10px;
  background: rgba(127, 140, 160, 0.06);
}

.tb-eps-index {
  font-size: 0.6875rem;
  font-weight: 700;
  opacity: 0.6;
  padding-top: 0.15rem;
}

.tb-eps-name {
  font-size: 0.875rem;
  font-weight: 700;
  line-height: 1.35;
}

.tb-eps-note {
  font-size: 0.75rem;
  line-height: 1.55;
  opacity: 0.82;
  margin-top: 0.2rem;
}

.tb-eps-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.tb-eps-chip {
  font-size: 0.6875rem;
  font-weight: 600;
  padding: 0.2rem 0.5rem;
  border-radius: 999px;
  border: 1px solid rgba(120, 130, 150, 0.4);
}

.tb-eps-chip-supplier {
  border-color: rgba(13, 148, 136, 0.55);
  background: rgba(13, 148, 136, 0.1);
}

.tb-eps-chip-internal {
  border-color: rgba(79, 70, 229, 0.55);
  background: rgba(79, 70, 229, 0.1);
}

.tb-eps-chip-external {
  border-color: rgba(217, 119, 6, 0.6);
  background: rgba(217, 119, 6, 0.1);
}

.tb-eps-feedback {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  padding: 0.75rem 0.85rem;
  border: 1px dashed rgba(120, 130, 150, 0.45);
  border-radius: 10px;
  background: rgba(127, 140, 160, 0.05);
}

.tb-eps-feedback-label {
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  opacity: 0.7;
}

.tb-eps-feedback-note {
  font-size: 0.75rem;
  line-height: 1.6;
  opacity: 0.85;
}

@media (max-width: 720px) {

  .tb-eps-layer {
    grid-template-columns: 2rem minmax(0, 1fr);
  }

  .tb-eps-chips {
    grid-column: 2;
  }

}

/* ---------------------------------------------------------------------------
   tieback Academy (learning surface)
   Related to the Knowledge Base editorial language, but more structured: every
   pedagogy slot is a labelled block so a learner can see the shape of a lesson.
   Colour is carried by the existing accent variables; nothing is hardcoded to a
   theme, so both light and dark render correctly.
   --------------------------------------------------------------------------- */
.tb-ac-block {
  --tb-ac-accent: #0080ff;
  margin: 28px 0;
  padding: 18px 20px;
  border: 1px solid var(--grayscale-a4, rgba(128, 128, 128, 0.2));
  border-left: 3px solid var(--tb-ac-accent);
  border-radius: 6px;
  background: color-mix(in srgb, var(--tb-ac-accent) 3%, transparent);
}

.tb-ac-objectives {
  --tb-ac-accent: #1f6feb;
}
.tb-ac-prior {
  --tb-ac-accent: #64748b;
}
.tb-ac-canonical {
  --tb-ac-accent: #0891b2;
}
.tb-ac-framework {
  --tb-ac-accent: #7c3aed;
}
.tb-ac-worked {
  --tb-ac-accent: #16a34a;
}
.tb-ac-apply {
  --tb-ac-accent: #d97706;
}
.tb-ac-tool {
  --tb-ac-accent: #94a3b8;
}

.tb-ac-quiz {
  --tb-ac-accent: #0080ff;
}
.tb-ac-complete {
  --tb-ac-accent: #16a34a;
}
.tb-ac-progress {
  --tb-ac-accent: #64748b;
}

.tb-ac-label {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--tb-ac-accent);
  margin-bottom: 10px;
}

.tb-ac-block-term {
  font-weight: 600;
  margin-bottom: 6px;
}

.tb-ac-note {
  font-size: 13px;
  line-height: 1.5;
  opacity: 0.8;
  margin: 8px 0;
}

.tb-ac-objective-list {
  margin: 8px 0 0;
  padding-left: 0;
  list-style: none;
}

.tb-ac-objective-list li {
  display: grid;
  grid-template-columns: 40px 1fr;
  gap: 10px;
  padding: 5px 0;
}

.tb-ac-objective-id {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.06em;
  color: var(--tb-ac-accent);
  padding-top: 2px;
}

.tb-ac-prior-question {
  font-weight: 500;
  margin: 0 0 8px;
}

.tb-ac-reveal summary {
  cursor: pointer;
  font-size: 13px;
  font-weight: 600;
}

.tb-ac-reveal-body {
  margin-top: 8px;
  font-size: 14px;
}

.tb-ac-canonical-link {
  font-weight: 600;
  margin: 10px 0;
}

.tb-ac-canonical-time {
  font-weight: 400;
  opacity: 0.7;
}

.tb-ac-canonical-sections {
  margin: 4px 0 0;
  font-size: 14px;
}

.tb-ac-framework-head {
  display: flex;
  align-items: baseline;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 8px;
}

.tb-ac-framework-id {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
  padding: 2px 7px;
  border-radius: 4px;
  color: var(--tb-ac-accent);
  background: color-mix(in srgb, var(--tb-ac-accent) 12%, transparent);
}

.tb-ac-framework-name {
  font-weight: 600;
}

/* Knowledge checks and assessments */
.tb-ac-quiz-items {
  list-style: none;
  margin: 12px 0 0;
  padding: 0;
}

.tb-ac-quiz-item + .tb-ac-quiz-item {
  margin-top: 22px;
  padding-top: 20px;
  border-top: 1px solid var(--grayscale-a4, rgba(128, 128, 128, 0.18));
}

.tb-ac-fieldset {
  border: 0;
  margin: 0;
  padding: 0;
}

.tb-ac-question {
  font-weight: 600;
  line-height: 1.5;
  padding: 0;
  margin-bottom: 10px;
}

.tb-ac-question-index {
  color: var(--tb-ac-accent);
}

.tb-ac-options {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.tb-ac-option {
  display: grid;
  grid-template-columns: 20px 1fr;
  align-items: start;
  gap: 10px;
  padding: 9px 12px;
  border: 1px solid var(--grayscale-a4, rgba(128, 128, 128, 0.2));
  border-radius: 6px;
  cursor: pointer;
  line-height: 1.5;
}

.tb-ac-option:hover,
.tb-ac-option:focus-within {
  border-color: var(--tb-ac-accent);
}
.tb-ac-option:focus-visible {
  border-color: var(--tb-ac-accent);
}

.tb-ac-option input {
  margin-top: 4px;
  accent-color: var(--tb-ac-accent);
}

.tb-ac-option-right {
  border-color: #16a34a;
  background: color-mix(in srgb, #16a34a 8%, transparent);
}

.tb-ac-option-wrong {
  border-color: #dc2626;
  background: color-mix(in srgb, #dc2626 8%, transparent);
}

.tb-ac-feedback {
  margin-top: 10px;
  padding: 10px 12px;
  border-radius: 6px;
  font-size: 14px;
  line-height: 1.55;
  background: var(--grayscale-a2, rgba(128, 128, 128, 0.06));
  border-left: 3px solid var(--grayscale-a6, rgba(128, 128, 128, 0.35));
}

.tb-ac-feedback-right {
  border-left-color: #16a34a;
}

.tb-ac-feedback-wrong {
  border-left-color: #dc2626;
}

.tb-ac-feedback-verdict {
  font-weight: 600;
}

.tb-ac-quiz-actions {
  display: flex;
  align-items: center;
  gap: 14px;
  flex-wrap: wrap;
  margin-top: 18px;
}

.tb-ac-button {
  font: inherit;
  font-size: 14px;
  font-weight: 600;
  padding: 8px 16px;
  border-radius: 6px;
  border: 1px solid var(--tb-ac-accent);
  color: var(--tb-ac-accent);
  background: transparent;
  cursor: pointer;
}

.tb-ac-button:hover:not(:disabled) {
  background: color-mix(in srgb, var(--tb-ac-accent) 10%, transparent);
}
.tb-ac-button:focus-visible:not(:disabled) {
  background: color-mix(in srgb, var(--tb-ac-accent) 10%, transparent);
}

.tb-ac-button:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}

.tb-ac-score {
  font-weight: 600;
  margin: 0;
}

.tb-ac-score-pass {
  color: #15803d;
}

.tb-ac-score-fail {
  color: #b91c1c;
}

.tb-ac-next {
  font-weight: 600;
}

/* Progress */
.tb-ac-bar {
  height: 8px;
  border-radius: 999px;
  background: var(--grayscale-a4, rgba(128, 128, 128, 0.2));
  overflow: hidden;
}

.tb-ac-bar-fill {
  height: 100%;
  background: var(--tb-ac-accent);
  transition: width 0.2s ease-in-out;
}

.tb-ac-progress-list {
  margin: 10px 0 0;
  padding-left: 20px;
  font-size: 14px;
}

.tb-ac-state {
  font-size: 12px;
  opacity: 0.75;
}

/* Module and path cards */
.tb-ac-card {
  margin: 16px 0;
  padding: 16px 18px;
  border: 1px solid var(--grayscale-a4, rgba(128, 128, 128, 0.2));
  border-radius: 8px;
}

.tb-ac-card-planned {
  opacity: 0.72;
}

.tb-ac-card-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.tb-ac-card-number {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  opacity: 0.7;
}

.tb-ac-badge {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.04em;
  padding: 2px 8px;
  border-radius: 999px;
}

.tb-ac-badge-available {
  color: #15803d;
  background: color-mix(in srgb, #16a34a 12%, transparent);
}

.tb-ac-badge-planned {
  color: #475569;
  background: var(--grayscale-a3, rgba(128, 128, 128, 0.12));
}

.tb-ac-card-title {
  margin: 8px 0 4px;
  font-size: 17px;
}

.tb-ac-card-meta {
  font-size: 13px;
  opacity: 0.75;
  margin: 0 0 8px;
}

@media (max-width: 640px) {

  .tb-ac-block {
    padding: 14px 14px;
  }

  .tb-ac-objective-list li {
    grid-template-columns: 34px 1fr;
  }

}

/* -------------------------------------------------------------------------
 * Academy landing page (front door) identity
 * ---------------------------------------------------------------------- */
.tb-ac-hero {
  --tb-ac-accent: #0080ff;
  margin: 8px 0 28px;
  padding: 28px 28px 24px;
  border: 1px solid var(--grayscale-a4, rgba(128, 128, 128, 0.2));
  border-radius: 14px;
  background:
    radial-gradient(
      120% 140% at 0% 0%,
      color-mix(in srgb, var(--tb-ac-accent) 10%, transparent),
      transparent 60%
    ),
    color-mix(in srgb, var(--tb-ac-accent) 3%, transparent);
}

.tb-ac-hero-eyebrow {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--tb-ac-accent);
}

.tb-ac-hero-title {
  margin: 10px 0 0;
  font-size: 30px;
  line-height: 1.2;
  font-weight: 700;
}

.tb-ac-hero-subtitle {
  margin: 6px 0 0;
  font-size: 20px;
  line-height: 1.35;
  font-weight: 600;
  opacity: 0.85;
}

.tb-ac-hero-lead {
  margin: 14px 0 0;
  font-size: 15px;
  line-height: 1.6;
  max-width: 62ch;
}

.tb-ac-hero-facts {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  list-style: none;
  margin: 16px 0 0;
  padding: 0;
}

.tb-ac-hero-facts li {
  font-size: 13px;
  font-weight: 600;
  padding: 4px 12px;
  border-radius: 999px;
  border: 1px solid color-mix(in srgb, var(--tb-ac-accent) 30%, transparent);
  background: color-mix(in srgb, var(--tb-ac-accent) 8%, transparent);
}

.tb-ac-hero-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
  margin-top: 20px;
}

.tb-ac-cta {
  display: inline-block;
  font-size: 15px;
  font-weight: 600;
  padding: 10px 20px;
  border-radius: 8px;
  background: var(--tb-ac-accent, #0080ff);
  color: #ffffff;
  text-decoration: none;
}

.tb-ac-cta:hover {
  filter: brightness(1.08);
  text-decoration: none;
}
.tb-ac-cta:focus-visible {
  filter: brightness(1.08);
  text-decoration: none;
}

.tb-ac-cta-secondary {
  display: inline-block;
  font-size: 15px;
  font-weight: 600;
  padding: 10px 18px;
  border-radius: 8px;
  border: 1px solid var(--grayscale-a5, rgba(128, 128, 128, 0.28));
  text-decoration: none;
}

/* Journey spine */
.tb-ac-journey {
  --tb-ac-accent: #0080ff;
  margin: 16px 0 8px;
}

.tb-ac-journey-list {
  list-style: none;
  margin: 0;
  padding: 0;
}

.tb-ac-journey-step {
  position: relative;
  display: grid;
  grid-template-columns: 44px 1fr;
  gap: 14px;
  padding: 0 0 18px 0;
}

.tb-ac-journey-step::before {
  content: '';
  position: absolute;
  left: 21px;
  top: 34px;
  bottom: 0;
  width: 2px;
  background: var(--grayscale-a4, rgba(128, 128, 128, 0.2));
}

.tb-ac-journey-step:last-child::before {
  display: none;
}

.tb-ac-journey-marker {
  width: 34px;
  height: 34px;
  border-radius: 999px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  font-weight: 700;
  color: #ffffff;
  background: var(--tb-ac-accent);
}

.tb-ac-journey-body {
  padding-top: 4px;
}

.tb-ac-journey-title {
  margin: 0;
  font-size: 17px;
  font-weight: 650;
}

.tb-ac-journey-meta {
  margin: 2px 0 0;
  font-size: 12px;
  opacity: 0.7;
}

.tb-ac-journey-summary {
  margin: 6px 0 0;
  font-size: 14px;
  line-height: 1.55;
}

/* Grids */
.tb-ac-grid {
  display: grid;
  gap: 14px;
  margin: 16px 0;
}

.tb-ac-grid-2 {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.tb-ac-grid-3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.tb-ac-grid-item {
  padding: 16px 18px;
  border: 1px solid var(--grayscale-a4, rgba(128, 128, 128, 0.2));
  border-radius: 10px;
}

.tb-ac-grid-marker {
  display: inline-block;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #0080ff;
}

.tb-ac-grid-title {
  margin: 4px 0 6px;
  font-size: 16px;
  font-weight: 650;
}

.tb-ac-grid-text {
  margin: 0;
  font-size: 14px;
  line-height: 1.55;
}

/* Final CTA */
.tb-ac-final {
  --tb-ac-accent: #0080ff;
  margin: 26px 0 8px;
  padding: 24px;
  border-radius: 14px;
  border: 1px solid color-mix(in srgb, var(--tb-ac-accent) 26%, transparent);
  background: color-mix(in srgb, var(--tb-ac-accent) 6%, transparent);
  text-align: center;
}

.tb-ac-final-title {
  margin: 0 0 6px;
  font-size: 20px;
  font-weight: 700;
}

.tb-ac-final-text {
  margin: 0 0 16px;
  font-size: 14px;
  line-height: 1.6;
}

.tb-ac-final-note {
  margin: 12px 0 0;
  font-size: 12px;
  opacity: 0.75;
}

@media (max-width: 720px) {

  .tb-ac-hero {
    padding: 20px 18px;
  }

  .tb-ac-hero-title {
    font-size: 24px;
  }

  .tb-ac-grid-2,
  .tb-ac-grid-3 {
    grid-template-columns: minmax(0, 1fr);
  }

}

/* Academy progress: resume card, module states, reset */
.tb-ac-resume {
  margin: 24px 0;
  padding: 20px 22px;
  border: 1px solid var(--grayscale-a4, rgba(128, 128, 128, 0.2));
  border-radius: 14px;
  background: var(--grayscale-a2, rgba(128, 128, 128, 0.05));
}

.tb-ac-resume-summary {
  margin: 10px 0 0;
  font-size: 15px;
  font-weight: 600;
}

.tb-ac-resume-facts {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
  margin: 16px 0 4px;
}

.tb-ac-resume-facts dt {
  font-size: 12px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  opacity: 0.7;
}

.tb-ac-resume-facts dd {
  margin: 4px 0 0;
  font-size: 14px;
  line-height: 1.4;
}

.tb-ac-module-states {
  list-style: none;
  margin: 14px 0 0;
  padding: 0;
}

.tb-ac-module-state {
  padding: 12px 0;
  border-top: 1px solid var(--grayscale-a3, rgba(128, 128, 128, 0.14));
}

.tb-ac-module-state-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  font-weight: 600;
}

.tb-ac-status {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 2px 10px;
  border: 1px solid var(--grayscale-a5, rgba(128, 128, 128, 0.28));
  border-radius: 999px;
  font-size: 12px;
  font-weight: 600;
  white-space: nowrap;
}

.tb-ac-status-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: currentColor;
  opacity: 0.55;
}

.tb-ac-status-complete {
  color: var(--tb-ac-accent);
  border-color: currentColor;
}

.tb-ac-status-in-progress {
  border-style: dashed;
}

.tb-ac-position {
  margin: 6px 0 10px;
  font-size: 13px;
  font-weight: 600;
  opacity: 0.85;
}

.tb-ac-reset {
  margin: 28px 0 0;
  font-size: 13px;
}

.tb-ac-button-quiet {
  background: none;
  border: 1px solid var(--grayscale-a5, rgba(128, 128, 128, 0.28));
  border-radius: 8px;
  padding: 6px 12px;
  font-size: 13px;
  cursor: pointer;
  color: inherit;
  opacity: 0.8;
}

.tb-ac-button-quiet:hover {
  opacity: 1;
}
.tb-ac-button-quiet:focus-visible {
  opacity: 1;
}

@media (max-width: 640px) {

  .tb-ac-resume-facts {
    grid-template-columns: 1fr;
  }

  .tb-ac-module-state-head {
    align-items: flex-start;
    flex-direction: column;
  }

}

/* ---------------------------------------------------------------------------
   Knowledge Templates - practical tool pages
   Shared spine for every template asset plus the readiness assessment tool.
   --------------------------------------------------------------------------- */

.tb-tpl-header {
  border: 1px solid var(--grayscale-a4, rgba(0, 0, 0, 0.1));
  border-radius: 12px;
  padding: 1.25rem 1.5rem;
  margin: 1.5rem 0 2rem;
  background: var(--grayscale-a2, rgba(0, 0, 0, 0.02));
}

.tb-tpl-badges {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-bottom: 0.75rem;
}

.tb-tpl-badge {
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  padding: 0.2rem 0.55rem;
  border-radius: 999px;
  background: var(--accent-a3, rgba(59, 130, 246, 0.12));
  color: var(--accent-11, #1d4ed8);
}

.tb-tpl-chip {
  font-size: 0.72rem;
  padding: 0.2rem 0.55rem;
  border-radius: 999px;
  border: 1px solid var(--grayscale-a5, rgba(0, 0, 0, 0.12));
  color: var(--grayscale-a11, rgba(0, 0, 0, 0.62));
}

.tb-tpl-title {
  font-size: 1.15rem;
  font-weight: 600;
  margin-bottom: 0.35rem;
}

.tb-tpl-purpose {
  margin: 0 0 1rem;
  font-size: 0.95rem;
  line-height: 1.6;
}

.tb-tpl-facets {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 1rem;
}

.tb-tpl-facet ul,
.tb-tpl-steps ol,
.tb-tpl-related ul,
.tb-tpl-limits ul {
  margin: 0.35rem 0 0;
  padding-left: 1.1rem;
}

.tb-tpl-facet li,
.tb-tpl-related li,
.tb-tpl-limits li {
  font-size: 0.88rem;
  line-height: 1.55;
}

.tb-tpl-section-label,
.tb-tpl-facet-label {
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--grayscale-a11, rgba(0, 0, 0, 0.62));
  margin-bottom: 0.4rem;
}

.tb-tpl-steps,
.tb-tpl-interpret,
.tb-tpl-limits,
.tb-tpl-scale,
.tb-tpl-result {
  border: 1px solid var(--grayscale-a4, rgba(0, 0, 0, 0.1));
  border-radius: 12px;
  padding: 1.1rem 1.35rem;
  margin: 1.5rem 0;
}

.tb-tpl-limits {
  border-left: 3px solid var(--amber-9, #d97706);
}

.tb-tpl-related {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 1.25rem;
  margin: 1.5rem 0;
}

.tb-tpl-scale-note {
  font-size: 0.88rem;
  line-height: 1.55;
}

.tb-tpl-scale-table {
  width: 100%;
  font-size: 0.85rem;
}

/* Assessment tool */

.tb-tpl-tool {
  margin: 1.5rem 0;
}

.tb-tpl-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  align-items: center;
  justify-content: space-between;
  padding: 0.65rem 0.9rem;
  border-radius: 10px;
  background: var(--grayscale-a2, rgba(0, 0, 0, 0.02));
  border: 1px solid var(--grayscale-a4, rgba(0, 0, 0, 0.1));
  margin-bottom: 1rem;
}

.tb-tpl-toolbar-note {
  font-size: 0.78rem;
  color: var(--grayscale-a11, rgba(0, 0, 0, 0.62));
}

.tb-tpl-toolbar-actions {
  display: flex;
  gap: 0.5rem;
}

.tb-tpl-btn {
  font-size: 0.8rem;
  font-weight: 600;
  padding: 0.35rem 0.75rem;
  border-radius: 8px;
  border: 1px solid var(--grayscale-a6, rgba(0, 0, 0, 0.16));
  background: transparent;
  cursor: pointer;
}

.tb-tpl-btn:hover {
  background: var(--grayscale-a3, rgba(0, 0, 0, 0.05));
}
.tb-tpl-btn:focus-visible {
  background: var(--grayscale-a3, rgba(0, 0, 0, 0.05));
}

.tb-tpl-btn-quiet {
  color: var(--grayscale-a11, rgba(0, 0, 0, 0.62));
}

.tb-tpl-dim {
  border: 1px solid var(--grayscale-a4, rgba(0, 0, 0, 0.1));
  border-radius: 12px;
  padding: 1rem 1.2rem;
  margin-bottom: 0.75rem;
}

.tb-tpl-dim-head {
  display: flex;
  gap: 1rem;
  align-items: flex-start;
  justify-content: space-between;
}

.tb-tpl-dim-title {
  font-weight: 600;
  font-size: 0.98rem;
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

.tb-tpl-gate {
  font-size: 0.62rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  padding: 0.12rem 0.4rem;
  border-radius: 999px;
  background: var(--amber-a3, rgba(217, 119, 6, 0.14));
  color: var(--amber-11, #b45309);
}

.tb-tpl-dim-question {
  margin: 0.3rem 0 0;
  font-size: 0.87rem;
  line-height: 1.55;
  color: var(--grayscale-a11, rgba(0, 0, 0, 0.68));
}

.tb-tpl-dim-score {
  font-size: 1.5rem;
  font-weight: 700;
  line-height: 1;
  min-width: 1.5rem;
  text-align: right;
}

.tb-tpl-levels {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  margin: 0.8rem 0 0.6rem;
}

.tb-tpl-level {
  width: 2.2rem;
  height: 2.2rem;
  border-radius: 8px;
  border: 1px solid var(--grayscale-a6, rgba(0, 0, 0, 0.16));
  background: transparent;
  font-weight: 600;
  font-size: 0.85rem;
  cursor: pointer;
}

.tb-tpl-level:hover {
  background: var(--grayscale-a3, rgba(0, 0, 0, 0.05));
}
.tb-tpl-level:focus-visible {
  background: var(--grayscale-a3, rgba(0, 0, 0, 0.05));
}

.tb-tpl-level.is-selected {
  background: var(--accent-9, #2563eb);
  border-color: var(--accent-9, #2563eb);
  color: #fff;
}

.tb-tpl-dim-detail summary {
  cursor: pointer;
  font-size: 0.82rem;
  color: var(--grayscale-a11, rgba(0, 0, 0, 0.62));
}

.tb-tpl-dim-detail p,
.tb-tpl-dim-detail li {
  font-size: 0.86rem;
  line-height: 1.55;
}

.tb-tpl-dim-investigate {
  border-left: 2px solid var(--grayscale-a5, rgba(0, 0, 0, 0.12));
  padding-left: 0.7rem;
}

.tb-tpl-dim-links {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  font-size: 0.8rem;
}

.tb-tpl-result-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 1rem;
  margin-bottom: 0.9rem;
}

.tb-tpl-metric-value {
  font-size: 1.9rem;
  font-weight: 700;
  line-height: 1.1;
}

.tb-tpl-metric-label {
  font-size: 0.78rem;
  color: var(--grayscale-a11, rgba(0, 0, 0, 0.62));
}

.tb-tpl-bar {
  height: 8px;
  border-radius: 999px;
  background: var(--grayscale-a4, rgba(0, 0, 0, 0.1));
  overflow: hidden;
}

.tb-tpl-bar span {
  display: block;
  height: 100%;
  background: var(--accent-9, #2563eb);
}

.tb-tpl-band {
  font-size: 0.88rem;
  line-height: 1.55;
  margin: 0.6rem 0 1rem;
}

.tb-tpl-gaps li,
.tb-tpl-actions li,
.tb-tpl-investigate li {
  font-size: 0.88rem;
  line-height: 1.55;
}

/* Template worksheets: multi row grids (Passport Data Origin Worksheet) */

.tb-tpl-chain {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 0.75rem;
  margin: 1rem 0 1.5rem;
}

.tb-tpl-chain-step {
  display: flex;
  gap: 0.6rem;
  align-items: flex-start;
  border: 1px solid var(--grayscale-a4, rgba(128, 128, 128, 0.2));
  border-radius: 8px;
  padding: 0.75rem;
}

.tb-tpl-chain-index {
  font-weight: 700;
  font-size: 0.78rem;
  opacity: 0.6;
  line-height: 1.4;
}

.tb-tpl-chain-title {
  font-weight: 650;
  font-size: 0.9rem;
}

.tb-tpl-chain-note {
  font-size: 0.82rem;
  line-height: 1.5;
  opacity: 0.85;
  margin: 0.2rem 0 0;
}

.tb-tpl-row {
  border: 1px solid var(--grayscale-a4, rgba(128, 128, 128, 0.2));
  border-left-width: 3px;
  border-radius: 8px;
  padding: 0.9rem;
  margin: 0.75rem 0;
}

.tb-tpl-row-ready {
  border-left-color: #16a34a;
}

.tb-tpl-row-partial {
  border-left-color: #d97706;
}

.tb-tpl-row-review {
  border-left-color: #d97706;
}

.tb-tpl-row-gap {
  border-left-color: #dc2626;
}

.tb-tpl-row-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 0.75rem;
  flex-wrap: wrap;
  margin-bottom: 0.6rem;
}

.tb-tpl-row-head-right {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

.tb-tpl-row-index {
  font-size: 0.78rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  font-weight: 650;
  opacity: 0.7;
}

.tb-tpl-sample {
  margin-left: 0.5rem;
  font-size: 0.68rem;
  letter-spacing: 0.04em;
  border: 1px dashed var(--grayscale-a6, rgba(128, 128, 128, 0.35));
  border-radius: 999px;
  padding: 0.1rem 0.45rem;
  opacity: 0.8;
}

.tb-tpl-status {
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  border-radius: 999px;
  padding: 0.15rem 0.55rem;
  border: 1px solid currentColor;
}

.tb-tpl-status-ready {
  color: #15803d;
}

.tb-tpl-status-partial {
  color: #b45309;
}

.tb-tpl-status-review {
  color: #b45309;
}

.tb-tpl-status-gap {
  color: #b91c1c;
}

.tb-tpl-filters {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 0.75rem;
  margin: 0.75rem 0 0.25rem;
}

.tb-tpl-filters .tb-tpl-field {
  min-width: 190px;
  flex: 1 1 190px;
}

.tb-tpl-row-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 0.65rem;
}

.tb-tpl-field {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}

.tb-tpl-field-label {
  font-size: 0.75rem;
  font-weight: 650;
  letter-spacing: 0.02em;
  opacity: 0.75;
}

.tb-tpl-input {
  width: 100%;
  font-size: 0.86rem;
  padding: 0.4rem 0.55rem;
  border-radius: 6px;
  border: 1px solid var(--grayscale-a5, rgba(128, 128, 128, 0.3));
  background: transparent;
  color: inherit;
}

.tb-tpl-input:focus-visible {
  outline: 2px solid var(--accent, #2563eb);
  outline-offset: 1px;
}

.tb-tpl-btn-add {
  width: 100%;
  margin: 0.5rem 0 1rem;
}

@media (max-width: 640px) {

  .tb-tpl-dim-head {
    flex-direction: column;
  }

  .tb-tpl-dim-score {
    text-align: left;
  }

  .tb-tpl-row-grid {
    grid-template-columns: 1fr;
  }

}

/* ---------------------------------------------------------------------------
   Knowledge Templates - toolkit landing and in-page jump actions
   --------------------------------------------------------------------------- */

.tb-tpl-jump {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.75rem;
  margin: 1.25rem 0 1.75rem;
}

.tb-tpl-jump-cta {
  display: inline-block;
  font-size: 0.9rem;
  font-weight: 600;
  padding: 0.5rem 0.95rem;
  border-radius: 8px;
  border: 1px solid var(--accent-a5, rgba(59, 130, 246, 0.22));
  background: var(--accent-a3, rgba(59, 130, 246, 0.1));
  color: var(--accent-11, #1d4ed8);
  text-decoration: none;
}

.tb-tpl-jump-cta:hover {
  background: var(--accent-a4, rgba(59, 130, 246, 0.16));
}
.tb-tpl-jump-cta:focus-visible {
  background: var(--accent-a4, rgba(59, 130, 246, 0.16));
}

.tb-tpl-jump-note {
  font-size: 0.85rem;
  color: var(--grayscale-a11, rgba(0, 0, 0, 0.62));
}

.tb-tk-hero {
  margin: 1.25rem 0 1.5rem;
}

.tb-tk-statement {
  font-size: 1.35rem;
  font-weight: 600;
  line-height: 1.35;
  margin: 0.7rem 0 0.5rem;
}

.tb-tk-lede p {
  margin: 0 0 0.6rem;
  font-size: 0.95rem;
  line-height: 1.65;
  color: var(--grayscale-a11, rgba(0, 0, 0, 0.68));
}

.tb-tk-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 1rem;
  margin: 1.5rem 0 2rem;
}

.tb-tk-card {
  border: 1px solid var(--grayscale-a4, rgba(0, 0, 0, 0.1));
  border-radius: 12px;
  padding: 1.15rem 1.35rem 1.25rem;
  background: var(--grayscale-a2, rgba(0, 0, 0, 0.02));
  display: flex;
  flex-direction: column;
}

.tb-tk-card-index {
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  color: var(--grayscale-a11, rgba(0, 0, 0, 0.62));
}

.tb-tk-card-title {
  font-size: 1.05rem;
  font-weight: 600;
  margin: 0.35rem 0 0.5rem;
}

.tb-tk-card-title a {
  text-decoration: none;
  color: inherit;
}

.tb-tk-card-desc {
  margin: 0 0 0.85rem;
  font-size: 0.92rem;
  line-height: 1.6;
}

.tb-tk-card-meta {
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  margin: 0 0 1rem;
  padding: 0;
}

.tb-tk-card-meta li {
  font-size: 0.72rem;
  padding: 0.2rem 0.55rem;
  border-radius: 999px;
  border: 1px solid var(--grayscale-a5, rgba(0, 0, 0, 0.12));
  color: var(--grayscale-a11, rgba(0, 0, 0, 0.62));
}

.tb-tk-card-cta {
  margin: auto 0 0;
  font-size: 0.9rem;
  font-weight: 600;
}

/* ---------------------------------------------------------------------------
   Worked Examples (Knowledge Base > Examples)
   Presentational only. Reuses the .tb-tpl-* status vocabulary for parity with
   the Templates the examples illustrate.
--------------------------------------------------------------------------- */

.tb-ex-header {
  border: 1px solid var(--tb-border, rgba(15, 23, 42, 0.12));
  border-radius: 14px;
  padding: 28px;
  margin: 24px 0 20px;
  background: linear-gradient(180deg, rgba(37, 99, 235, 0.05), rgba(37, 99, 235, 0));
}

.tb-ex-eyebrow {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  opacity: 0.7;
}

.tb-ex-title {
  margin: 8px 0 6px;
  font-size: 30px;
  line-height: 1.2;
  font-weight: 700;
}

.tb-ex-subtitle {
  margin: 0;
  font-size: 16px;
  opacity: 0.85;
}

.tb-ex-meta {
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 16px 0 0;
  padding: 0;
}

.tb-ex-meta li {
  font-size: 12px;
  padding: 4px 10px;
  border-radius: 999px;
  border: 1px solid var(--tb-border, rgba(15, 23, 42, 0.12));
}

.tb-ex-notice {
  border-left: 3px solid rgba(217, 119, 6, 0.7);
  background: rgba(217, 119, 6, 0.07);
  border-radius: 8px;
  padding: 14px 16px;
  margin: 20px 0;
}

.tb-ex-notice-label {
  display: block;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  margin-bottom: 4px;
}

.tb-ex-notice p {
  margin: 0;
  font-size: 14px;
}

.tb-ex-scenario {
  border: 1px solid var(--tb-border, rgba(15, 23, 42, 0.12));
  border-radius: 12px;
  padding: 18px;
  margin: 18px 0;
}

.tb-ex-scenario-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 14px;
  margin: 0;
}

.tb-ex-scenario-grid dt,
.tb-ex-pairs dt {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  opacity: 0.65;
  margin: 0 0 2px;
}

.tb-ex-scenario-grid dd,
.tb-ex-pairs dd {
  margin: 0;
  font-size: 14px;
}

.tb-ex-cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
  gap: 12px;
  margin: 18px 0;
}

.tb-ex-card {
  border: 1px solid var(--tb-border, rgba(15, 23, 42, 0.12));
  border-radius: 12px;
  padding: 14px 16px;
}

.tb-ex-card-title {
  font-weight: 650;
  font-size: 14px;
  margin-bottom: 6px;
}

.tb-ex-card-body {
  margin: 0 0 6px;
  font-size: 13px;
}

.tb-ex-card-issue {
  margin: 0;
  font-size: 13px;
  opacity: 0.7;
}

.tb-ex-stage {
  display: flex;
  gap: 14px;
  align-items: flex-start;
  border: 1px solid var(--tb-border, rgba(15, 23, 42, 0.12));
  border-radius: 12px;
  padding: 16px;
  margin: 18px 0;
}

.tb-ex-stage-index {
  font-size: 18px;
  font-weight: 700;
  opacity: 0.4;
  line-height: 1.4;
}

.tb-ex-stage-action {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  opacity: 0.65;
}

.tb-ex-stage-title {
  font-size: 16px;
  font-weight: 650;
  margin-top: 2px;
}

.tb-ex-stage-note {
  font-size: 14px;
  opacity: 0.85;
  margin-top: 6px;
}

.tb-ex-block {
  margin: 20px 0;
}

.tb-ex-table-wrap {
  overflow-x: auto;
  border: 1px solid var(--tb-border, rgba(15, 23, 42, 0.12));
  border-radius: 12px;
}

.tb-ex-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}

.tb-ex-table th,
.tb-ex-table td {
  text-align: left;
  vertical-align: top;
  padding: 10px 12px;
  border-bottom: 1px solid var(--tb-border, rgba(15, 23, 42, 0.08));
}

.tb-ex-table thead th {
  font-size: 11px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  opacity: 0.7;
  background: rgba(15, 23, 42, 0.03);
}

.tb-ex-table tbody tr:last-child th,
.tb-ex-table tbody tr:last-child td {
  border-bottom: none;
}

.tb-ex-sub {
  display: block;
  font-size: 12px;
  font-weight: 400;
  opacity: 0.65;
  margin-top: 3px;
}

.tb-ex-num {
  white-space: nowrap;
}

.tb-ex-gating {
  display: inline-block;
  margin-left: 6px;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  padding: 1px 6px;
  border-radius: 999px;
  border: 1px solid rgba(37, 99, 235, 0.35);
  opacity: 0.8;
}

.tb-ex-sequence {
  margin: 16px 0 0;
  padding-left: 20px;
  font-size: 14px;
}

.tb-ex-counts {
  font-size: 12px;
  opacity: 0.7;
  margin: 8px 2px 0;
}

.tb-ex-pairs {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
  gap: 12px;
  margin: 12px 0 0;
}

.tb-ex-note {
  font-size: 13px;
  opacity: 0.8;
  margin: 12px 0 0;
}

.tb-ex-learn {
  border: 1px solid rgba(37, 99, 235, 0.25);
  background: rgba(37, 99, 235, 0.05);
  border-radius: 12px;
  padding: 16px;
  margin: 20px 0;
}

.tb-ex-learn-label {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  opacity: 0.75;
  margin-bottom: 6px;
}

.tb-ex-learn p {
  margin: 0;
  font-size: 14px;
}

.tb-ex-try {
  border: 1px dashed var(--tb-border, rgba(15, 23, 42, 0.2));
  border-radius: 12px;
  padding: 14px 16px;
  margin: 20px 0;
}

.tb-ex-try-label {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  opacity: 0.65;
}

.tb-ex-try-link {
  display: inline-block;
  margin-top: 4px;
  font-size: 15px;
  font-weight: 650;
}

.tb-ex-try-note {
  margin: 4px 0 0;
  font-size: 13px;
  opacity: 0.75;
}

.tb-ex-ba {
  display: grid;
  gap: 10px;
  margin: 18px 0;
}

.tb-ex-ba-row {
  display: grid;
  grid-template-columns: 1fr 1.4fr;
  gap: 10px;
}

.tb-ex-ba-before,
.tb-ex-ba-after {
  border-radius: 10px;
  padding: 12px 14px;
  font-size: 14px;
  border: 1px solid var(--tb-border, rgba(15, 23, 42, 0.12));
}

.tb-ex-ba-before {
  background: rgba(15, 23, 42, 0.03);
  opacity: 0.85;
}

.tb-ex-ba-after {
  background: rgba(22, 163, 74, 0.06);
  border-color: rgba(22, 163, 74, 0.3);
}

.tb-ex-ba-label {
  display: block;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  opacity: 0.6;
  margin-bottom: 4px;
}

.tb-ex-journey {
  display: grid;
  gap: 10px;
  margin: 18px 0;
}

.tb-ex-journey-step {
  display: flex;
  gap: 14px;
  border: 1px solid var(--tb-border, rgba(15, 23, 42, 0.12));
  border-radius: 12px;
  padding: 14px 16px;
}

.tb-ex-journey-index {
  font-size: 16px;
  font-weight: 700;
  opacity: 0.4;
}

.tb-ex-journey-action {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  opacity: 0.65;
}

.tb-ex-journey-title {
  display: inline-block;
  font-size: 15px;
  font-weight: 650;
  margin-top: 2px;
}

.tb-ex-journey-note {
  margin: 4px 0 0;
  font-size: 13px;
  opacity: 0.8;
}

.tb-ex-journey-result {
  border-radius: 12px;
  padding: 14px 16px;
  border: 1px solid rgba(22, 163, 74, 0.3);
  background: rgba(22, 163, 74, 0.06);
}

.tb-ex-journey-result p {
  margin: 4px 0 0;
  font-size: 14px;
}

.tb-ex-promo {
  display: block;
  border: 1px solid var(--tb-border, rgba(15, 23, 42, 0.12));
  border-radius: 14px;
  padding: 18px;
  margin: 18px 0;
  text-decoration: none;
  color: inherit;
  transition:
    border-color 0.15s ease,
    transform 0.15s ease;
}

.tb-ex-promo:hover {
  border-color: rgba(37, 99, 235, 0.5);
  transform: translateY(-1px);
}
.tb-ex-promo:focus-visible {
  border-color: rgba(37, 99, 235, 0.5);
  transform: translateY(-1px);
}

.tb-ex-promo-top {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  opacity: 0.65;
}

.tb-ex-promo-title {
  font-size: 18px;
  font-weight: 650;
  margin: 8px 0 6px;
}

.tb-ex-promo-body {
  margin: 0;
  font-size: 14px;
  opacity: 0.85;
}

.tb-ex-promo-meta {
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  padding: 0;
  margin: 12px 0 0;
}

.tb-ex-promo-meta li {
  font-size: 12px;
  padding: 3px 9px;
  border-radius: 999px;
  border: 1px solid var(--tb-border, rgba(15, 23, 42, 0.12));
}

.tb-ex-promo-cta {
  display: inline-block;
  margin-top: 12px;
  font-size: 14px;
  font-weight: 650;
  color: rgba(37, 99, 235, 1);
}

@media (max-width: 720px) {

  .tb-ex-ba-row {
    grid-template-columns: 1fr;
  }

}

/* --- DPP Governance Ownership Model (Governance & Assurance) ---------------- */

.tb-dgo {
  display: flex;
  flex-direction: column;
  gap: 0.9rem;
  margin: 2rem 0;
  padding: 1.5rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(14, 165, 233, 0.07), rgba(14, 165, 233, 0));
}

.tb-dgo-head {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}

.tb-dgo-eyebrow {
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  opacity: 0.6;
}

.tb-dgo-title {
  font-size: 1.125rem;
  font-weight: 700;
  line-height: 1.3;
}

.tb-dgo-sub {
  font-size: 0.8125rem;
  line-height: 1.55;
  opacity: 0.75;
}

.tb-dgo-boundary {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  padding: 1rem;
  border: 2px dashed rgba(14, 165, 233, 0.45);
  border-radius: 12px;
}

.tb-dgo-boundary-label {
  font-size: 0.75rem;
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: 0.01em;
}

.tb-dgo-layers {
  display: grid;
  gap: 0.6rem;
  margin: 0;
  padding: 0;
  list-style: none;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
}

.tb-dgo-layer {
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
  padding: 0.75rem 0.85rem;
  border: 1px solid var(--tb-border, rgba(120, 130, 150, 0.28));
  border-radius: 10px;
  background: rgba(127, 140, 160, 0.06);
}

.tb-dgo-layer-name {
  font-size: 0.875rem;
  font-weight: 700;
  line-height: 1.35;
}

.tb-dgo-layer-note {
  font-size: 0.75rem;
  line-height: 1.5;
  opacity: 0.78;
}

.tb-dgo-foot {
  font-size: 0.75rem;
  line-height: 1.55;
  opacity: 0.72;
}
