.technical-page {
  --public-header-height: 84px;
  background: #fafafa;
  color: #17191b;
}
.tech-header {
  height: var(--public-header-height);
  margin: 0 var(--pad);
  border-bottom: 1px solid #c9cbcb;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 35px;
}
.tech-header img {
  display: block;
  width: 134px;
  height: auto;
}
.tech-desktop-nav {
  display: flex;
  gap: 30px;
  font-size: 14px;
}
.tech-desktop-nav a[aria-current] {
  text-decoration: underline;
  text-underline-offset: 7px;
  text-decoration-color: #b88135;
}
.tech-header-actions {
  display: flex;
  align-items: center;
  gap: 32px;
}
.tech-language {
  display: flex;
  gap: 9px;
  font-size: 12px;
  color: #747676;
}
.tech-language a[aria-current] {
  color: #17191b;
  text-decoration: underline;
  text-underline-offset: 5px;
}
.tech-language span {
  color: #afb1b1;
}
.tech-header-contact {
  font-size: 14px;
}
.tech-menu {
  display: none;
  width: 44px;
  height: 44px;
  position: relative;
}
.tech-menu span {
  position: absolute;
  height: 1px;
  width: 26px;
  background: #17191b;
  left: 9px;
  top: 18px;
  transition:
    transform 0.25s,
    top 0.25s;
}
.tech-menu span + span {
  top: 26px;
}
.tech-menu[aria-expanded='true'] span {
  top: 22px;
  transform: rotate(45deg);
}
.tech-menu[aria-expanded='true'] span + span {
  transform: rotate(-45deg);
}
.tech-mobile-nav {
  position: fixed;
  top: var(--public-header-height);
  left: 0;
  right: 0;
  z-index: 59;
  background: #fafafa;
  color: #17191b;
  padding: 12px var(--pad) 20px;
  border-bottom: 1px solid #bbb;
  display: grid;
  gap: 0;
}
.tech-mobile-nav[hidden] {
  display: none;
}
.tech-library {
  padding: 50px var(--pad) 65px;
  border-top: 1px solid #cccece;
}
.tech-library > h2 {
  font-size: 42px;
  letter-spacing: -0.04em;
  margin-bottom: 40px;
}
.tech-library > div {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 40px;
}
.tech-library a {
  border-top: 1px solid #b1b5b5;
  padding-top: 20px;
  position: relative;
}
.tech-library a > span {
  font-size: 15px;
}
.tech-library p {
  font: 400 25px/1.25 var(--ginsi-public-font);
  letter-spacing: -0.025em;
  color: #797c7c;
  margin-top: 28px;
  max-width: 20ch;
  transition: color 0.2s;
}
.tech-library a:hover p {
  color: #17191b;
}
.tech-library a > b {
  position: absolute;
  right: 0;
  top: 17px;
  font-weight: 400;
  color: #98672a;
}
.tech-all {
  padding: 0 var(--pad) 70px;
  max-width: 1440px;
  margin: auto;
  display: grid;
  grid-template-columns: 1fr 2fr;
  gap: 40px;
}
.tech-all h2 {
  font-size: 20px;
  letter-spacing: -0.02em;
  font-weight: 400;
}
.tech-all nav {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px 40px;
}
.tech-all a {
  display: flex;
  justify-content: space-between;
  gap: 20px;
  font-size: 14px;
  color: #6e7272;
}
.tech-all a[aria-current] {
  color: #17191b;
}
.tech-all a span {
  color: #9b835e;
}
.tech-contact {
  padding: 70px var(--pad) 75px;
  background: #141617;
  color: #eee;
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 40px;
}
.tech-contact p {
  font: 400 clamp(38px, 4.5vw, 70px)/1.05 var(--ginsi-public-font);
  letter-spacing: -0.045em;
}
.tech-contact > a {
  font-size: 27px;
  border-bottom: 1px solid #727575;
  padding-bottom: 14px;
  min-width: 230px;
  display: flex;
  gap: 30px;
  justify-content: space-between;
}
.tech-contact > a > .site-link-arrow {
  color: #e8a23c;
}
.tech-footer {
  background: #141617;
  color: #aaa;
  padding: 30px var(--pad);
  margin: 0;
  max-width: none;
  display: flex;
  justify-content: space-between;
  gap: 30px;
  font-size: 12px;
  align-items: center;
}
.tech-footer img {
  width: 134px;
  height: auto;
}
.tech-footer nav {
  display: flex;
  gap: 23px;
}
.tech-footer a:hover {
  color: #fff;
}
/* Topic identities share typography and navigation; composition belongs to the subject. */
.technical-page {
  --tech-ink: #171a1c;
  --tech-muted: #606669;
  --tech-rule: #c9cdcd;
  --tech-accent: #c88a32;
  --tech-surface: #f1f2f2;
  background: #fafafa;
}
.technical-page h1,
.technical-page h2 {
  font-weight: var(--ginsi-public-display-weight);
}
.technical-page h3 {
  font-weight: var(--ginsi-public-heading-weight);
}
/* Keyboard focus: Forest on light; dark surfaces set their light tint. */
.technical-page a:focus-visible,
.technical-page summary:focus-visible,
.technical-page button:focus-visible {
  outline: 2px solid var(--c-forest);
  outline-offset: 5px;
}
.tech-header {
  position: sticky;
  top: 0;
  z-index: 60;
  background: #fafafa;
  margin: 0;
  padding: 0 var(--pad);
}
.tech-hero {
  padding: 38px var(--pad) 30px;
  overflow: hidden;
}
.tech-hero-layout {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 40px;
  align-items: center;
  max-width: 1440px;
  margin: auto;
}
.tech-hero h1 {
  font-size: clamp(53px, 6.1vw, 94px);
  line-height: 0.99;
  letter-spacing: -0.04em;
  max-width: 12ch;
  text-wrap: balance;
}
.tech-headline {
  font-family: var(--ginsi-public-font);
  font-weight: var(--ginsi-public-heading-weight);
  font-size: clamp(27px, 2.8vw, 42px);
  line-height: 1.15;
  letter-spacing: -0.038em;
  max-width: 22ch;
  margin: 30px 0 25px;
  white-space: normal;
}
.tech-intro {
  font-size: 16px;
  line-height: 1.7;
  max-width: 49ch;
  color: var(--tech-muted);
}
.tech-hero-art {
  min-width: 0;
  align-self: center;
}
.tech-art {
  width: 100%;
  height: auto;
  overflow: visible;
}
.tech-art text {
  fill: currentColor;
  stroke: none;
  font-family: var(--ginsi-public-font);
  font-size: 15px;
  letter-spacing: -0.2px;
}
.tech-art path,
.tech-art rect {
  stroke: currentColor;
  stroke-width: 1;
}
.tech-art .signal-path {
  opacity: 0.35;
}
.tech-art .traveler,
.tech-art .junction {
  fill: var(--tech-accent);
  stroke: none;
}
.tech-art .boundary {
  stroke-opacity: 0.48;
}
.tech-art .boundary-3 {
  stroke: var(--tech-accent);
  stroke-opacity: 1;
}
.tech-art .plane {
  fill: #e1e5e5;
  stroke-opacity: 0.7;
}
.tech-art .plane text {
  fill: #3c474c;
  font-size: 12px;
}
.tech-art .plane-cross {
  opacity: 0.13;
}
.tech-art .speech-shape {
  fill: #e8e9e8;
  stroke: none;
}
.tech-art .answer {
  fill: #fafaf9;
  stroke: #b6babb;
}
.tech-art .record-sheet {
  fill: #fafafa;
  stroke: #a5adb0;
}
.tech-art .back {
  fill: #e6e8e7;
}
.tech-art .evidence-bar {
  stroke: #b6babb;
  stroke-width: 15;
}
.tech-art .evidence-curve {
  stroke: var(--tech-accent);
  stroke-width: 2;
}
.tech-descend {
  display: flex;
  justify-content: space-between;
  margin-top: 56px;
  border-top: 1px solid var(--tech-rule);
  padding-top: 21px;
  color: inherit;
  font-size: 12px;
}
.tech-descend span {
  color: var(--tech-accent);
  font-size: 20px;
}
.topic-security .tech-header,
.hero-security {
  background: #131719;
  color: #eef0ef;
  --tech-muted: #acb3b4;
  --tech-rule: #42494b;
}

.topic-security .tech-language a[aria-current],
.topic-execution .tech-language a[aria-current] {
  color: #fff;
}
.topic-security .tech-menu span,
.topic-execution .tech-menu span {
  background: #eee;
}
.hero-security {
  padding-bottom: 32px;
}
.hero-security .tech-headline {
  max-width: 15ch;
}
.hero-security .tech-art {
  padding: 4%;
}
.hero-architecture {
  background: #e9edee;
}
.hero-architecture .tech-hero-art {
  transform: translateY(10px);
}
.hero-record {
  background: #efefed;
}
.hero-record .tech-hero-layout {
  grid-template-columns: 1.1fr 0.9fr;
}
.hero-execution,
.topic-execution .tech-header {
  background: #272b2d;
  color: #f5f5f3;
  --tech-rule: #53585a;
  --tech-muted: #b3b8b9;
}
.hero-conversation {
  background: #eceeed;
}
.hero-conversation h1 {
  max-width: none;
}
.hero-conversation .tech-headline {
  font-size: clamp(32px, 3.4vw, 53px);
}
.hero-evidence {
  background: #fafafa;
}
.hero-dataflow {
  background: #e7ebec;
}
.tech-jump {
  padding: 23px var(--pad);
  display: flex;
  flex-wrap: wrap;
  gap: 16px 35px;
  border-bottom: 1px solid var(--tech-rule);
  background: #fafafa;
  font-size: 12px;
}
.tech-jump a {
  color: #697174;
  transition: color 0.2s;
}
.tech-jump a:hover {
  color: #171a1c;
}
.tech-depth > section {
  scroll-margin-top: 30px;
}
.tech-map,
.tech-contract,
.tech-controls,
.tech-assurance,
.tech-notes {
  padding: 100px var(--pad);
}
/* Keep sideways entrances inside their section without creating a scroll container. */
.technical-page .tech-map,
.technical-page .security-processing,
.technical-page .tech-assurance {
  overflow-x: clip;
}
.tech-section-intro {
  display: grid;
  grid-template-columns: 1.1fr 1fr;
  gap: 100px;
  margin-bottom: 64px;
  align-items: start;
}
.tech-depth h2 {
  font-size: clamp(32px, 3.7vw, 57px);
  line-height: 1.06;
  letter-spacing: -0.044em;
  max-width: 22ch;
  text-wrap: balance;
}
.tech-section-intro > p {
  font-size: 16px;
  line-height: 1.75;
  color: var(--ink);
  max-width: 51ch;
  padding-top: 5px;
}
.tech-explorer {
  display: grid;
  grid-template-columns: 0.9fr 1.1fr;
  gap: 90px;
  align-items: start;
}
.tech-explorer-diagram {
  padding: 15px 0 0;
}
.tech-node-track {
  position: relative;
  display: grid;
}
.tech-node-track:before {
  content: '';
  position: absolute;
  left: 10px;
  top: 35px;
  bottom: 35px;
  width: 1px;
  background: #b2b9bb;
}
.tech-node {
  position: relative;
  display: flex;
  align-items: center;
  gap: 24px;
  padding: 22px 0;
  color: #7c8487;
  font-family: var(--ginsi-public-font);
  font-size: clamp(19px, 2vw, 30px);
  letter-spacing: -0.03em;
  transition: color 0.3s;
}
.node-dot {
  width: 21px;
  height: 21px;
  flex: 0 0 21px;
  border: 1px solid #b1b8ba;
  border-radius: 50%;
  background: #fafafa;
  position: relative;
}
.node-dot:after {
  content: '';
  position: absolute;
  inset: 6px;
  background: #acb4b6;
  border-radius: 50%;
  transition: background 0.3s;
}
.tech-node b {
  font-size: 18px;
  font-weight: 400;
  margin-left: auto;
  opacity: 0;
  transition: opacity 0.3s;
}
.tech-node:hover,
.tech-node.is-active {
  color: #171a1c;
}
.tech-node.is-active .node-dot {
  border-color: #b77e30;
}
.tech-node.is-active .node-dot:after {
  background: #c88a32;
}
.tech-node.is-active b,
.tech-node:hover b {
  opacity: 1;
}
.diagram-caption {
  max-width: 35ch;
  font-size: 12px;
  line-height: 1.6;
  color: #7a8386;
  margin-top: 35px;
}
.tech-boundaries details,
.tech-notes details {
  border-top: 1px solid #bfc5c6;
}
.tech-boundaries details:last-child,
.tech-notes details:last-child {
  border-bottom: 1px solid #bfc5c6;
}
/* "+" opens detail in place, right beside its label (GINSI.md fundamentals). */
.tech-boundaries summary,
.tech-notes summary {
  list-style: none;
  cursor: pointer;
  display: flex;
  justify-content: flex-start;
  align-items: baseline;
  gap: 14px;
  padding: 22px 0;
  font-size: 21px;
  letter-spacing: -0.03em;
}
.tech-boundaries summary::-webkit-details-marker,
.tech-notes summary::-webkit-details-marker {
  display: none;
}
.tech-boundaries summary > span,
.tech-notes summary > span {
  color: #8a9396;
  transition: transform 0.3s;
}
.tech-boundaries details[open] summary > span,
.tech-notes details[open] summary > span {
  transform: rotate(45deg);
}
.tech-boundaries details[open] summary {
  color: #996724;
}
.tech-boundaries details > div,
.tech-notes details > div {
  padding: 0 30px 27px 0;
}
.tech-boundaries p,
.tech-notes p {
  font-size: 16px;
  line-height: 1.8;
  color: var(--ink);
  max-width: 65ch;
}
.tech-boundaries details[open] > div,
.tech-notes details[open] > div {
  animation: detail-enter 0.3s ease-out;
}
/* The boundary itself is the control and explanation; no repeated selector list. */
.tech-boundary-sequence {
  max-width: 1100px;
  margin: 0 auto;
}
.tech-boundary-sequence summary {
  padding: 27px 0;
  font-size: clamp(24px, 2.6vw, 38px);
  line-height: 1.25;
  color: #737d80;
  transition: color 180ms;
}
.tech-boundary-sequence summary:hover,
.tech-boundary-sequence details[open] summary {
  color: #171a1c;
}
.tech-boundary-sequence summary > span {
  font-size: 23px;
  align-self: center;
}
.tech-boundary-sequence details[open] summary > span {
  color: #a87932;
}
.tech-boundary-sequence details > div {
  padding: 0 0 30px 32%;
}
@media (max-width: 700px) {
  .tech-boundaries.tech-boundary-sequence summary {
    font-size: 25px;
    padding: 22px 0;
  }
  .tech-boundary-sequence details > div {
    padding-left: 0;
  }
}
.tech-notes p + p {
  margin-top: 18px;
}
.explorer-record .tech-node-track {
  padding: 0;
}
.explorer-record .tech-node-track:before {
  display: none;
}
.explorer-record .node-dot {
  width: 6px;
  height: 6px;
  flex-basis: 6px;
  border-radius: 0;
  background: #b6babb;
}
.explorer-record .node-dot:after {
  display: none;
}
.explorer-record .tech-node {
  font-size: 24px;
}
.explorer-record .tech-node.is-active .node-dot {
  background: #c88a32;
}
.explorer-security .tech-node-track {
  padding-left: 0;
}
.explorer-security .tech-node-track:before {
  display: none;
}
.explorer-security .tech-node {
  border-bottom: 1px solid #d4d8d8;
}
.explorer-security .node-dot {
  border-radius: 2px;
}
.explorer-execution .tech-node:nth-child(3),
.explorer-execution .tech-node:nth-child(4) {
  margin-left: 42px;
}
.explorer-execution .tech-node:nth-child(2):after {
  content: '';
  position: absolute;
  left: 10px;
  top: 58px;
  width: 42px;
  height: 157px;
  border-left: 1px solid #b2b9bb;
  border-bottom: 1px solid #b2b9bb;
  z-index: -1;
}
.explorer-conversation .tech-node {
  padding: 24px 0;
  font-size: clamp(24px, 2.4vw, 34px);
  border-bottom: 1px solid #c5cdca;
}
.explorer-conversation .tech-node-track:before {
  display: none;
}
.explorer-conversation .node-dot {
  display: none;
}
.tech-contract {
  padding-top: 75px;
  background: #eef0f0;
}
.tech-contract h2 {
  max-width: 25ch;
  margin-bottom: 55px;
}
.tech-table-wrap {
  overflow-x: auto;
}
.tech-contract table {
  width: 100%;
  border-collapse: collapse;
  text-align: left;
  table-layout: fixed;
}
.tech-contract th,
.tech-contract td {
  vertical-align: top;
  padding: 27px 35px 27px 0;
  border-bottom: 1px solid #c8cecf;
  line-height: 1.65;
  font-size: 15px;
  color: var(--ink);
}
.tech-contract th:last-child,
.tech-contract td:last-child {
  padding-right: 0;
}
.tech-contract th:first-child {
  width: 25%;
}
.tech-contract thead th {
  font-size: 12px;
  font-weight: 400;
  color: #737d80;
  padding-top: 0;
  padding-bottom: 17px;
}
.tech-contract tbody th {
  font-weight: 400;
  font-family: var(--ginsi-public-font);
  font-size: 20px;
  line-height: 1.3;
  color: #242a2d;
  overflow-wrap: anywhere;
}
.tech-principle {
  background: var(--reading-paper, #fff);
  color: var(--ink, #131313);
  padding: 130px var(--pad) 120px;
  overflow: hidden;
}
/* A page's principle is a statement on the reading surface, like the landing's premise:
   one large regular heading with its explanation offset beside it. */
.tech-principle h2 {
  font-size: clamp(40px, 5.8vw, 92px);
  line-height: 1.03;
  letter-spacing: -0.04em;
  max-width: 19ch;
}
.principle-rule {
  display: none;
}
.tech-principle p {
  max-width: 46ch;
  margin: 44px 0 0 auto;
  font-size: 17px;
  line-height: 1.75;
  color: var(--ink, #131313);
}
.tech-controls {
  display: grid;
  grid-template-columns: 0.85fr 1.15fr;
  gap: 100px;
}
.tech-controls h2 {
  position: sticky;
  top: calc(var(--public-header-height) + 32px);
  align-self: start;
}
.control-path {
  border-left: 1px solid #c0c8c9;
  padding-left: 40px;
}
.control-stop {
  position: relative;
  padding-bottom: 45px;
}
.control-stop:last-child {
  padding-bottom: 0;
}
.control-stop:before {
  content: '';
  position: absolute;
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: #c58c3e;
  left: -45px;
  top: 9px;
}
.control-stop h3,
.assurance-levels h3 {
  font-size: 25px;
  letter-spacing: -0.025em;
  line-height: 1.2;
  margin-bottom: 19px;
}
.control-stop p,
.assurance-levels p {
  font-size: 15px;
  line-height: 1.8;
  color: var(--ink);
}
.tech-assurance {
  background: #e9eded;
}
.assurance-levels {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 50px;
}
.assurance-levels > div {
  border-top: 1px solid #aeb9bc;
  padding-top: 25px;
}
.assurance-glyph {
  display: block;
  font-size: 33px;
  color: #788b93;
  margin-bottom: 34px;
}
.tech-review-links {
  display: flex;
  gap: 45px;
  margin-top: 55px;
  flex-wrap: wrap;
}
.tech-review-links a {
  padding-bottom: 12px;
  font-size: 15px;
}
.tech-notes {
  display: grid;
  grid-template-columns: 0.75fr 1.25fr;
  gap: 100px;
}
.tech-notes summary {
  font-size: 20px;
}
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
/* Content is visible by default. Only a successfully installed observer opts it into reveals. */
@media (prefers-reduced-motion: no-preference) {
  [data-reveal].reveal-pending {
    opacity: 0;
    transform: translateY(20px);
  }
  [data-reveal] {
    transition:
      opacity 0.8s ease,
      transform 0.9s cubic-bezier(0.2, 0.7, 0.2, 1),
      clip-path 1s cubic-bezier(0.2, 0.7, 0.2, 1);
  }
  [data-reveal='title'].reveal-pending {
    transform: translateY(25px);
    clip-path: inset(0 0 100% 0);
  }
  [data-reveal='title'] {
    clip-path: inset(0 0 -10% 0);
  }
  [data-reveal='diagram'].reveal-pending {
    transform: translateY(12px) scale(0.98);
  }
  [data-reveal='line'].reveal-pending {
    opacity: 1;
    transform: scaleX(0);
  }
  .art-architecture .plane {
    animation: plane-drift 8s ease-in-out infinite alternate;
  }
  .art-architecture .plane-1 {
    animation-delay: -2s;
  }
  .art-architecture .plane-2 {
    animation-delay: -4s;
  }
  .art-architecture .plane-3 {
    animation-delay: -6s;
  }
  .art-evidence .evidence-curve {
    stroke-dasharray: 700;
    animation: trace-evidence 5s ease both;
  }
  @keyframes plane-drift {
    to {
      transform: translateY(-9px);
    }
  }
  @keyframes trace-evidence {
    from {
      stroke-dashoffset: 700;
    }
    to {
      stroke-dashoffset: 0;
    }
  }
  @keyframes detail-enter {
    from {
      opacity: 0;
      transform: translateY(5px);
    }
    to {
      opacity: 1;
      transform: none;
    }
  }
}
@media (prefers-reduced-motion: reduce) {
  .technical-page *,
  .technical-page *:before {
    animation: none !important;
    transition: none !important;
    scroll-behavior: auto !important;
  }
  .traveler {
    display: none;
  }
}
@media (min-width: 1600px) {
  .technical-page {
    --pad: max(80px, calc((100vw - 1440px) / 2));
  }
}
@media (max-width: 1050px) {
  .tech-desktop-nav {
    display: none;
  }
  .tech-menu {
    display: block;
  }
  .tech-header-contact {
    display: inline-flex;
    white-space: nowrap;
  }
  .tech-header-actions {
    gap: 24px;
  }
  .tech-hero-layout {
    gap: 10px;
  }
  .tech-hero h1 {
    font-size: 62px;
  }
  .tech-hero {
    padding-top: 30px;
  }
  .tech-section-intro,
  .tech-explorer,
  .tech-controls,
  .tech-notes {
    gap: 45px;
  }
  .tech-map,
  .tech-contract,
  .tech-controls,
  .tech-assurance,
  .tech-notes {
    padding-top: 70px;
    padding-bottom: 70px;
  }
  .tech-boundaries summary {
    font-size: 20px;
  }
  .assurance-levels {
    gap: 25px;
  }
  .tech-footer > span {
    display: none;
  }
  .tech-art text {
    font-size: 14px;
  }
}
@media (max-width: 700px) {
  .technical-page {
    --public-header-height: 72px;
  }
  .tech-header {
    height: 72px;
    gap: 15px;
  }
  .tech-header img {
    width: 111px;
  }
  .tech-header-actions {
    gap: 16px;
  }
  .tech-header-contact {
    font-size: 13px;
  }
  .tech-language {
    display: none;
  }
  .tech-mobile-nav {
    top: 72px;
    max-height: calc(100svh - 72px);
  }
  .tech-hero-layout,
  .hero-record .tech-hero-layout {
    display: block;
  }
  .tech-hero h1 {
    font-size: clamp(47px, 12vw, 65px);
    max-width: 14ch;
  }
  .tech-headline,
  .hero-conversation .tech-headline {
    font-size: 32px;
    margin-top: 25px;
  }
  .tech-intro {
    font-size: 15px;
  }
  .tech-hero-art {
    max-width: 450px;
    margin: 25px auto 0;
  }
  .tech-art {
    display: block;
  }
  .tech-descend {
    margin-top: 15px;
  }
  .tech-jump {
    gap: 15px 22px;
    font-size: 11px;
  }
  .tech-map,
  .tech-contract,
  .tech-controls,
  .tech-assurance,
  .tech-notes {
    padding-top: 55px;
    padding-bottom: 55px;
  }
  .tech-section-intro,
  .tech-explorer,
  .tech-controls,
  .tech-notes {
    display: block;
  }
  .tech-section-intro {
    margin-bottom: 35px;
  }
  .tech-section-intro p {
    font-size: 15px;
    margin-top: 25px;
  }
  .tech-depth h2 {
    font-size: 35px;
  }
  .tech-explorer-diagram {
    margin-bottom: 35px;
  }
  .tech-node {
    font-size: 25px;
    padding: 16px 0;
  }
  .diagram-caption {
    margin-top: 22px;
    max-width: 45ch;
  }
  .tech-boundaries p,
  .tech-notes p {
    font-size: 15px;
  }
  .tech-boundaries summary,
  .tech-notes summary {
    font-size: 19px;
  }
  .tech-boundaries details > div,
  .tech-notes details > div {
    padding-right: 0;
  }
  .tech-contract h2 {
    margin-bottom: 35px;
  }
  .tech-contract table,
  .tech-contract tbody,
  .tech-contract tr,
  .tech-contract tbody th,
  .tech-contract td {
    display: block;
    width: 100%;
  }
  .tech-contract thead {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip-path: inset(50%);
  }
  .tech-contract tr {
    border-top: 1px solid #bcc5c7;
    padding: 20px 0;
  }
  .tech-contract tbody th,
  .tech-contract td {
    border: 0;
    padding: 8px 0 !important;
  }
  .tech-contract th:first-child {
    width: 100%;
  }
  .tech-contract td:before {
    content: attr(data-label);
    display: block;
    font-size: 11px;
    color: #798387;
    margin: 5px 0 6px;
  }
  .tech-contract th,
  .tech-contract td {
    font-size: 14px;
    padding: 20px 24px 20px 0;
  }
  .tech-contract tbody th {
    font-size: 18px;
  }
  .tech-table-wrap {
    padding-bottom: 15px;
  }
  .tech-principle {
    padding: 84px var(--pad) 76px;
  }
  .tech-principle h2 {
    font-size: 40px;
  }
  .tech-principle p {
    margin-top: 28px;
    font-size: 16px;
  }
  .tech-controls h2 {
    position: static;
    margin-bottom: 38px;
  }
  .control-path {
    padding-left: 27px;
  }
  .control-stop:before {
    left: -32px;
  }
  .control-stop h3,
  .assurance-levels h3 {
    font-size: 24px;
  }
  .assurance-levels {
    display: block;
  }
  .assurance-levels > div {
    padding: 25px 0;
  }
  .assurance-glyph {
    margin-bottom: 20px;
  }
  .tech-review-links {
    margin-top: 25px;
    gap: 25px;
  }
  .tech-notes h2 {
    margin-bottom: 32px;
  }
  .tech-library {
    padding-top: 40px;
    padding-bottom: 40px;
  }
  .tech-library > h2 {
    font-size: 34px;
  }
  .tech-library > div {
    display: block;
  }
  .tech-library a {
    display: block;
    margin-bottom: 30px;
  }
  .tech-library p {
    margin-top: 16px;
    font-size: 23px;
    max-width: 28ch;
  }
  .tech-all {
    display: block;
    padding-bottom: 45px;
  }
  .tech-all h2 {
    margin-bottom: 24px;
  }
  .tech-all nav {
    grid-template-columns: 1fr;
    gap: 18px;
  }
  .tech-contact {
    display: block;
    padding: 50px var(--pad);
  }
  .tech-contact p {
    font-size: 40px;
  }
  .tech-contact > a {
    max-width: 260px;
    margin-top: 36px;
    font-size: 24px;
  }
  .tech-footer {
    display: block;
    padding: 20px var(--pad) 32px;
  }
  .tech-footer nav {
    margin-top: 30px;
    gap: 20px;
  }
}
/* Security adds processing, provider and review surfaces beyond the common library grammar. */
.security-processing,
.security-providers,
.security-scenarios {
  padding: 95px var(--pad);
}
.security-processing {
  background: #20292d;
  color: #eff2f1;
}
.security-processing .tech-section-intro > p {
  color: #bcc6c9;
}
.security-stage-flow {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 48px;
  position: relative;
}
.security-stage-flow:before {
  content: '';
  position: absolute;
  top: 6px;
  left: 0;
  right: 0;
  height: 1px;
  background: #647176;
}
.security-stage {
  position: relative;
  display: flex;
  flex-direction: column;
}
.security-stage-point {
  position: relative;
  display: block;
  height: 13px;
  width: 13px;
  border: 1px solid #c69853;
  border-radius: 50%;
  background: #20292d;
  margin-bottom: 31px;
}
.security-stage-point:after {
  content: '';
  position: absolute;
  inset: 3px;
  background: #e0ab5b;
  border-radius: 50%;
}
.security-stage h3 {
  font-size: 27px;
  line-height: 1.14;
  letter-spacing: -0.025em;
  margin-bottom: 23px;
}
.security-stage p {
  font-size: 15px;
  line-height: 1.8;
  color: #c1c9cb;
  margin-bottom: 27px;
}
.security-stage-boundary {
  border-top: 1px solid #4b5a60;
  padding-top: 18px;
  margin-top: auto;
  font-size: 12px;
  line-height: 1.6;
  color: #b9a17e;
}
.security-text-boundary {
  margin-top: 56px;
  padding-top: 32px;
  border-top: 1px solid #4b5a60;
  display: grid;
  grid-template-columns: 1.7fr 1fr;
  gap: 65px;
  align-items: end;
}
.security-text-boundary p {
  font-size: 14px;
  line-height: 1.85;
  color: #9fadb2;
}
.security-text-boundary a {
  font-size: 13px;
  padding-bottom: 9px;
  justify-self: end;
}
.security-provider-grid {
  display: block;
}
.security-provider {
  display: grid;
  grid-template-columns: 0.7fr 1.15fr 1fr;
  gap: 6%;
  align-items: start;
  border-top: 1px solid #b8c1c3;
  padding: 35px 0;
}
.security-provider-heading {
  min-width: 0;
}
.security-provider h3 {
  font-size: 32px;
  line-height: 1.15;
  letter-spacing: -0.03em;
}
.security-provider-heading p {
  color: #68767c;
  font-size: 12px;
  line-height: 1.6;
  max-width: 26ch;
  margin-top: 14px;
}
.security-provider > p {
  font-size: 15px;
  line-height: 1.8;
  color: var(--ink);
  max-width: 64ch;
}
.security-provider details {
  margin-top: 3px;
}
.security-provider summary {
  display: flex;
  justify-content: space-between;
  gap: 20px;
  font-size: 13px;
  cursor: pointer;
  list-style: none;
  color: #8a632d;
  padding-bottom: 14px;
}
.security-provider summary::-webkit-details-marker {
  display: none;
}
.security-provider summary span {
  transition: transform 0.3s;
}
.security-provider details[open] summary span {
  transform: rotate(45deg);
}
.security-provider details p {
  font-size: 14px;
  line-height: 1.8;
  color: var(--ink);
  padding: 5px 0 20px;
}
.security-notice-link {
  margin-top: 50px;
  display: inline-block;
  font-size: 14px;
  padding-bottom: 10px;
}
.security-scenarios {
  background: #eef0ef;
}
.security-scenarios > h2 {
  margin-bottom: 55px;
}
.security-scenario {
  display: grid;
  grid-template-columns: 1fr 1.25fr;
  gap: 100px;
  padding: 29px 0;
  border-top: 1px solid #c0c9cc;
}
.security-scenario h3 {
  font-size: 27px;
  letter-spacing: -0.025em;
  line-height: 1.18;
  max-width: 25ch;
}
.security-scenario p {
  font-size: 15px;
  line-height: 1.8;
  color: var(--ink);
}
.security-faq > div:first-child {
  position: sticky;
  top: calc(var(--public-header-height) + 32px);
  align-self: start;
}
.security-faq > div:first-child > a {
  margin-top: 30px;
  padding-bottom: 10px;
  font-size: 14px;
}
.security-faq details {
  scroll-margin-top: 35px;
}
@media (max-width: 1050px) {
  .security-processing,
  .security-providers,
  .security-scenarios {
    padding-top: 70px;
    padding-bottom: 70px;
  }
  .security-stage-flow {
    gap: 30px;
  }
  .security-stage h3 {
    font-size: 24px;
  }
  .security-stage p {
    font-size: 14px;
  }
  .security-provider {
    grid-template-columns: 0.65fr 1.35fr;
    gap: 20px 7%;
  }
  .security-provider details {
    grid-column: 2;
  }
  .security-provider-heading {
    display: block;
  }
  .security-provider-heading p {
    text-align: left;
    margin-top: 12px;
    max-width: none;
  }
  .security-scenario {
    gap: 45px;
  }
}
@media (max-width: 700px) {
  .security-processing,
  .security-providers,
  .security-scenarios {
    padding-top: 55px;
    padding-bottom: 55px;
  }
  .security-stage-flow {
    display: block;
    padding-left: 28px;
  }
  .security-stage-flow:before {
    left: 5px;
    width: 1px;
    height: auto;
    top: 7px;
    bottom: 35px;
    right: auto;
  }
  .security-stage {
    padding-bottom: 38px;
  }
  .security-stage-point {
    position: absolute;
    left: -29px;
    top: 6px;
  }
  .security-stage h3 {
    font-size: 25px;
    margin-bottom: 18px;
  }
  .security-stage p {
    font-size: 15px;
    margin-bottom: 20px;
  }
  .security-stage-boundary {
    font-size: 11px;
  }
  .security-text-boundary {
    display: block;
    margin-top: 15px;
  }
  .security-text-boundary a {
    display: inline-block;
    margin-top: 25px;
  }
  .security-provider-grid {
    display: block;
  }
  .security-provider {
    display: block;
    padding: 28px 0;
  }
  .security-provider details {
    margin-top: 22px;
  }
  .security-provider-heading {
    margin-bottom: 20px;
  }
  .security-notice-link {
    margin-top: 15px;
  }
  .security-scenario {
    display: block;
    padding: 27px 0;
  }
  .security-scenario h3 {
    font-size: 25px;
    margin-bottom: 20px;
  }
  .security-faq > div:first-child {
    position: static;
    margin-bottom: 32px;
  }
  .security-faq h2 {
    margin-bottom: 0;
  }
}

/* Explanations that carry the argument stay visible as the reader moves down the page. */
.technical-sequence {
  border-top: 1px solid var(--line, #c9cdce);
}
.technical-sequence > section {
  display: grid;
  grid-template-columns: 0.7fr 1.3fr;
  gap: 9%;
  padding: 32px 0;
  border-bottom: 1px solid var(--line, #c9cdce);
}
.technical-sequence h3,
.technical-reading h3 {
  font-size: clamp(23px, 2.3vw, 34px);
  line-height: 1.15;
  letter-spacing: -0.035em;
  font-weight: var(--ginsi-public-display-weight);
}
.technical-sequence p {
  font-size: 17px;
  line-height: 1.75;
  max-width: 65ch;
  color: var(--ink);
}
.technical-reading > div > section {
  padding: 28px 0 34px;
  border-top: 1px solid var(--line, #c9cdce);
  scroll-margin-top: 30px;
}
.technical-reading h3 + p {
  margin-top: 22px;
}
.sequence-record {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0 7%;
}
.sequence-record > section {
  display: block;
  padding: 30px 0 36px;
}
.sequence-record p {
  margin-top: 20px;
}

.security-provider-heading {
  display: block;
}
.security-provider-purpose {
  font-size: 14px;
  line-height: 1.5;
  margin: 12px 0 0;
  color: inherit;
  opacity: 0.75;
}
@media (max-width: 700px) {
  .technical-sequence,
  .technical-sequence > section {
    display: block;
  }
  .technical-sequence p {
    margin-top: 18px;
    font-size: 16px;
  }
  .technical-reading > div > section {
    padding: 24px 0 30px;
  }
}

/* Reading entrances: a rule leads, then the heading and paragraphs settle.
   The section itself never moves, so anchors and document flow remain stable. */
.technical-page [data-reveal='reading'] {
  position: relative;
  border-top-color: transparent;
}
.technical-page [data-reveal='reading']::before {
  content: '';
  position: absolute;
  inset: -1px 0 auto;
  height: 1px;
  background: linear-gradient(to right, #727c80 0 32px, var(--line, #c9cdce) 32px);
  transform-origin: left center;
}
@media (prefers-reduced-motion: no-preference) {
  .technical-page [data-reveal='reading'],
  .technical-page [data-reveal='reading'].reveal-pending {
    opacity: 1;
    transform: none;
    transition: none;
  }
  .technical-page [data-reveal='reading']::before {
    transition: transform 760ms cubic-bezier(0.22, 0.8, 0.2, 1);
  }
  .technical-page [data-reveal='reading'] > h3,
  .technical-page [data-reveal='reading'] > p {
    transition:
      transform 720ms cubic-bezier(0.22, 0.8, 0.2, 1),
      opacity 540ms ease;
  }
  .technical-page [data-reveal='reading'] > h3 {
    transition-delay: 45ms;
  }
  .technical-page [data-reveal='reading'] > p {
    transition-delay: 110ms;
  }
  .technical-page [data-reveal='reading'] > p + p {
    transition-delay: 155ms;
  }
  .technical-page [data-reveal='reading'].reveal-pending:not(:focus-within)::before {
    transform: scaleX(0.06);
  }
  .technical-page [data-reveal='reading'].reveal-pending:not(:focus-within) > h3 {
    opacity: 0;
    transform: translate3d(-40px, 0, 0);
  }
  .technical-page [data-reveal='reading'].reveal-pending:not(:focus-within) > p {
    opacity: 0;
    transform: translateY(14px);
  }
}
@media (max-width: 700px) and (prefers-reduced-motion: no-preference) {
  .technical-page [data-reveal='reading']::before {
    transition-duration: 560ms;
  }
  .technical-page [data-reveal='reading'] > h3,
  .technical-page [data-reveal='reading'] > p,
  .technical-page [data-reveal='reading'] > p + p {
    transition-duration: 520ms;
    transition-delay: 0ms;
  }
  .technical-page [data-reveal='reading'].reveal-pending:not(:focus-within) > h3,
  .technical-page [data-reveal='reading'].reveal-pending:not(:focus-within) > p {
    transform: translateY(8px);
  }
}
.technical-page .tech-contact a:focus-visible {
  outline-color: var(--c-earthlight);
}

/* ---------- Motion (landing-motion.js) ----------
   The subpages share the landing's motion language: one easing, titles rising out of
   line masks with their copy following, an opening photograph that develops and then
   falls away more slowly than the page, a header that steps aside while reading, and
   statements that fill with ink as the reader passes through them. Every state below
   has a resolved still without JavaScript and under reduced motion. */
.technical-page {
  --f-ease: cubic-bezier(0.16, 1, 0.3, 1);
}
html.has-weighted-scroll {
  scroll-behavior: auto;
}
.technical-page .f-line {
  display: block;
  overflow: hidden;
  padding: 0 0.04em 0.1em 0;
  margin-bottom: -0.1em;
}
.technical-page .f-line__inner {
  display: block;
}
.technical-page .tech-header[data-hidden='true'] {
  transform: translate3d(0, -100%, 0);
}
/* The header only steps aside on scroll; a header that holds focus stays in view. */
.technical-page .tech-header[data-hidden='true']:focus-within {
  transform: none;
}
.technical-page .f-statement {
  --f-statement-ink: var(--ink, #131313);
  --f-statement-dim: #cfccc6;
}
.topic-security .f-statement {
  --f-statement-ink: #f0f2f0;
  --f-statement-dim: #4b5356;
}
.technical-page .f-statement .f-word {
  color: color-mix(
    in srgb,
    var(--f-statement-ink) calc(clamp(0, var(--fill, 1) * var(--words, 1) - var(--w, 0), 1) * 100%),
    var(--f-statement-dim)
  );
}
.technical-page
  :is(
    .case-frontier,
    .workflow-frontier,
    .voice-frontier,
    .os-frontier,
    .dataflow-frontier,
    .methodology-frontier,
    .security-frontier
  )
  img {
  translate: 0 calc(var(--hero-out, 0) * 14%);
  scale: calc(1.02 + var(--hero-out, 0) * 0.06);
}
.technical-page .tech-contact > a {
  transition: transform 600ms var(--f-ease);
}
@media (prefers-reduced-motion: no-preference) {
  .technical-page [data-reveal='title'],
  .technical-page [data-reveal='title'].reveal-pending {
    clip-path: none;
    opacity: 1;
    transform: none;
    transition: none;
  }
  .technical-page [data-reveal='title'] .f-line__inner {
    transform-origin: 0 100%;
    transition: transform 1250ms var(--f-ease);
    transition-delay: calc(var(--line, 0) * 90ms);
  }
  .technical-page [data-reveal='title'].reveal-pending .f-line__inner {
    transform: translate3d(0, 106%, 0) rotate(1.8deg);
  }
  .technical-page [data-reveal=''] {
    transition:
      opacity 1000ms ease 160ms,
      transform 1200ms var(--f-ease) 160ms;
  }
  .technical-page [data-reveal=''].reveal-pending {
    transform: translate3d(0, 28px, 0);
  }
  /* Entrances come from where things live: paragraphs beside a heading arrive from the
     right, tables wipe across, sequences cascade in from the side one after another. */
  .technical-page :is([data-reveal='from-right'], [data-reveal='from-left']) {
    transition:
      opacity 1000ms ease 180ms,
      transform 1300ms var(--f-ease) 180ms;
  }
  .technical-page [data-reveal='from-right'].reveal-pending {
    transform: translate3d(56px, 0, 0);
  }
  .technical-page [data-reveal='from-left'].reveal-pending {
    transform: translate3d(-56px, 0, 0);
  }
  .technical-page [data-reveal='wipe'] {
    transition:
      clip-path 1600ms var(--f-ease),
      opacity 500ms ease;
  }
  .technical-page [data-reveal='wipe'].reveal-pending {
    opacity: 1;
    transform: none;
    clip-path: inset(0 100% 0 0);
  }
  .technical-page [data-reveal='cascade'],
  .technical-page [data-reveal='cascade'].reveal-pending {
    opacity: 1;
    transform: none;
  }
  .technical-page [data-reveal='cascade'] > * {
    transition:
      opacity 900ms ease,
      transform 1250ms var(--f-ease);
    transition-delay: calc(var(--i, 0) * 120ms);
  }
  .technical-page [data-reveal='cascade'].reveal-pending > * {
    opacity: 0;
    transform: translate3d(64px, 0, 0);
  }
  .technical-page [data-reveal='cascade'] > :nth-child(2) {
    --i: 1;
  }
  .technical-page [data-reveal='cascade'] > :nth-child(3) {
    --i: 2;
  }
  .technical-page [data-reveal='cascade'] > :nth-child(4) {
    --i: 3;
  }
  .technical-page [data-reveal='cascade'] > :nth-child(5) {
    --i: 4;
  }
  .technical-page [data-reveal='cascade'] > :nth-child(n + 6) {
    --i: 5;
  }
  /* The opening photograph develops once, like a print in a tray. */
  html.f-motion
    .technical-page
    :is(
      .case-frontier,
      .workflow-frontier,
      .voice-frontier,
      .os-frontier,
      .dataflow-frontier,
      .methodology-frontier,
      .security-frontier
    )
    img {
    animation: f-develop 2400ms var(--f-ease) backwards;
  }
  @keyframes f-develop {
    from {
      filter: brightness(0.18) contrast(0.85) saturate(0.55);
      scale: 1.1;
    }
  }
}
