/* Shared visual language for the website and generated API reference. */
:root {
  --site-paper: #fff;
  --site-wash: #f7f3fb;
  --site-ink: #332f3b;
  --site-heading: #321852;
  --site-muted: #655d70;
  --site-line: #ddd6e5;
  --site-accent: #7525c6;
  --site-on-dark: #ece4f5;
  --site-highlight: #fff;
  --site-visited: #922a80;
  --site-code: #f4effa;
  --site-brand-image: url("/assets/images/home-background.jpg");
  --site-brand-gradient: linear-gradient(110deg, #70206c, #8025da 40%, #a32c82 70%, #b44023);
  --site-header-wash: linear-gradient(110deg, #f5effe, #faf1f7 65%, #fcf2ed);
  --site-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --site-serif: Georgia, "Times New Roman", serif;
  --site-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  --site-width: 1120px;
  --site-gutter: max(1.5rem, calc((100% - var(--site-width)) / 2 + 2rem));
}
.gtsam-site { margin: 0; background: var(--site-paper); color: var(--site-ink); font: 400 1rem/1.7 var(--site-sans); }
.gtsam-site *, .gtsam-site *::before, .gtsam-site *::after { box-sizing: border-box; }
.gtsam-site h1, .gtsam-site h2, .gtsam-site h3 { color: var(--site-heading); font-family: var(--site-serif); font-weight: 400; letter-spacing: -.02em; line-height: 1.2; }
.gtsam-site h1 { font-size: clamp(2.6rem, 5vw, 4rem); }
.gtsam-site h2 { font-size: clamp(1.8rem, 3vw, 2.4rem); }
.gtsam-site h3 { font-size: 1.45rem; }
.gtsam-site a { color: var(--site-accent); text-decoration: underline; text-underline-offset: .18em; }
.gtsam-site a:visited { color: var(--site-visited); }
.gtsam-site a:hover { color: var(--site-heading); }
.gtsam-site :focus-visible { outline: 2px solid var(--site-accent); outline-offset: 4px; }
.gtsam-site p { margin: 0 0 1.25rem; }
.gtsam-site code { background: var(--site-code); border-color: var(--site-line); color: var(--site-heading); font-family: var(--site-mono); font-size: .88em; overflow-wrap: anywhere; }
.gtsam-site pre { background: var(--site-code); border: 1px solid var(--site-line); border-radius: 3px; padding: 1.25rem; overflow-x: auto; }
.gtsam-site pre code { padding: 0; border: 0; background: transparent; overflow-wrap: normal; }
.gtsam-site .site-header { position: relative; z-index: 20; height: auto; min-height: 65px; border: 0; border-top: 4px solid var(--site-accent); border-image: var(--site-brand-gradient) 1; background: var(--site-paper); }
.gtsam-site .site-header .wrapper, .gtsam-site .site-footer .wrapper { max-width: var(--site-width); padding: 0 2rem; }
.gtsam-site .site-title, .gtsam-site .site-title:visited { color: var(--site-heading); font: 400 1.65rem/64px var(--site-serif); letter-spacing: -.02em; text-decoration: none; }
.gtsam-site .site-nav { line-height: 64px; }
.gtsam-site .site-repo-link, .gtsam-site .site-repo-link:visited { float: right; display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; margin: 10px 0 10px 1rem; border-radius: 4px; color: var(--site-heading); text-decoration: none; }
.gtsam-site .site-repo-link:hover { color: var(--site-accent); background: var(--site-wash); }
.gtsam-site .site-repo-link svg { display: block; fill: currentColor; }
.gtsam-site .site-nav .page-link { color: var(--site-ink); font-size: .9rem; text-decoration: none; }
.gtsam-site .site-nav .page-link:hover, .gtsam-site .site-nav .page-link[aria-current="page"] { color: var(--site-accent); text-decoration: underline; text-underline-offset: .4em; }
.gtsam-site .site-footer { padding: 3rem 0; border-top: 1px solid var(--site-line); background: var(--site-wash); color: var(--site-muted); }
.gtsam-site .footer-heading { font-size: 1.4rem; }
.gtsam-site .footer-col-wrapper { color: var(--site-muted); }
.gtsam-site .skip-link { position: absolute; top: -5rem; left: 1rem; z-index: 100; padding: .6rem 1rem; background: var(--site-paper); }
.gtsam-site .skip-link:focus { top: .5rem; }
.gtsam-site .release-version, .gtsam-site .content-kicker, .gtsam-site .start-version {
  display: flex; align-items: center; gap: .8rem;
  color: var(--site-accent); font-size: .78rem; font-weight: 600; letter-spacing: .06em;
}
.gtsam-site .release-version::before, .gtsam-site .content-kicker::before, .gtsam-site .start-version::before {
  content: ""; flex: 0 0 2rem; height: 2px; background: var(--site-brand-gradient);
}
@media (max-width: 760px) {
  :root { --site-gutter: 1.25rem; }
  .gtsam-site .site-header .wrapper, .gtsam-site .site-footer .wrapper { padding: 0 1.25rem; }
}
@media (max-width: 760px) {
  .gtsam-site .site-repo-link { position: absolute; top: 10px; right: 4.25rem; margin: 0; }
  .gtsam-site .site-nav { position: absolute; top: 13px; right: 1.25rem; line-height: 1.5; border: 1px solid var(--site-line); border-radius: 5px; background: var(--site-paper); text-align: right; }
  .gtsam-site .site-nav label[for="nav-trigger"] { display: block; float: right; width: 36px; height: 36px; cursor: pointer; }
  .gtsam-site .site-nav .menu-icon { display: block; float: right; width: 36px; height: 26px; padding-top: 10px; line-height: 0; text-align: center; }
  .gtsam-site .site-nav .menu-icon > svg { fill: var(--site-ink); }
  .gtsam-site .site-nav input ~ .trigger { clear: both; display: none; }
  .gtsam-site .site-nav input:checked ~ .trigger { display: block; padding-bottom: 5px; }
  .gtsam-site .site-nav .nav-trigger { display: block; position: absolute; width: 1px; height: 1px; opacity: 0; }
  .gtsam-site .site-nav .nav-trigger:focus-visible + label { outline: 2px solid var(--site-accent); outline-offset: 3px; }
  .gtsam-site .site-nav .page-link { display: block; clear: both; margin-left: 20px; padding: .6rem 1rem; }
  .gtsam-site .site-nav .page-link:not(:last-child) { margin-right: 0; }
}
@media (prefers-reduced-motion: no-preference) { html { scroll-behavior: smooth; } }
