@layer gf.reset, gf.tokens, gf.theme, gf.base, gf.layout, gf.components, gf.utilities;

@property --gf-step-offset {
  syntax: "<length>";
  inherits: true;
  initial-value: 0px;
}

@layer gf.reset {
  *,
  *::before,
  *::after {
    box-sizing: border-box;
  }

  html {
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
  }

  body,
  h1, h2, h3, h4, h5, h6,
  p, figure, blockquote, dl, dd {
    margin: 0;
  }

  img,
  picture,
  svg,
  video,
  iframe {
    display: block;
    max-inline-size: 100%;
  }

  img,
  video {
    block-size: auto;
  }

  input,
  button,
  textarea,
  select {
    font: inherit;
    color: inherit;
  }

  @media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
      animation-duration: 0.01ms !important;
      animation-iteration-count: 1 !important;
      transition-duration: 0.01ms !important;
      scroll-behavior: auto !important;
    }
  }
}

@layer gf.tokens {
  :root {
    --gf-color-primary: #1f3a5f;
    --gf-color-secondary: #2a9fd6;
    --gf-color-accent: #d6336c;
    --gf-color-dark: #14202e;
    --gf-color-light: #f2f5f8;
    --gf-color-text: #1d2733;
    --gf-color-muted: #5b6876;
    --gf-color-bg: #ffffff;
    --gf-color-border: color-mix(in srgb, var(--gf-color-text) 15%, transparent);
    --gf-color-link: var(--gf-color-secondary);
    --gf-color-link-hover: var(--gf-color-primary);
    --gf-color-on-primary: #ffffff;
    --gf-color-on-dark: #ffffff;
    --gf-color-on-light: #1d2733;
    --gf-color-focus: var(--gf-color-accent);
    --gf-color-error: #c62828;

    --gf-font-body: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
    --gf-font-heading: var(--gf-font-body);
    --gf-font-weight-body: 400;
    --gf-font-weight-bold: 700;
    --gf-font-weight-heading: 700;
    --gf-line-height: 1.6;
    --gf-line-height-heading: 1.15;

    --gf-fs-xs: clamp(0.75rem, 0.72rem + 0.15vw, 0.8125rem);
    --gf-fs-sm: clamp(0.875rem, 0.85rem + 0.15vw, 0.9375rem);
    --gf-fs-md: clamp(1rem, 0.96rem + 0.2vw, 1.0625rem);
    --gf-fs-lg: clamp(1.125rem, 1.06rem + 0.3vw, 1.25rem);
    --gf-fs-xl: clamp(1.25rem, 1.14rem + 0.55vw, 1.5rem);
    --gf-fs-2xl: clamp(1.5rem, 1.3rem + 1vw, 2rem);
    --gf-fs-3xl: clamp(1.875rem, 1.5rem + 1.8vw, 2.75rem);
    --gf-fs-4xl: clamp(2.25rem, 1.7rem + 2.8vw, 3.75rem);
    --gf-fs-5xl: clamp(2.75rem, 1.9rem + 4.2vw, 4.75rem);
    --gf-root-font-size: 100%;
    --gf-text-size: var(--gf-fs-md);
    --gf-h1-size: var(--gf-fs-4xl);
    --gf-h2-size: var(--gf-fs-3xl);
    --gf-h3-size: var(--gf-fs-2xl);
    --gf-h4-size: var(--gf-fs-xl);
    --gf-h5-size: var(--gf-fs-lg);

    --gf-space-xs: clamp(0.5rem, 0.45rem + 0.25vw, 0.75rem);
    --gf-space-s: clamp(1rem, 0.9rem + 0.5vw, 1.25rem);
    --gf-space-m: clamp(1.5rem, 1.3rem + 1vw, 2rem);
    --gf-space-l: clamp(2rem, 1.6rem + 2vw, 3rem);
    --gf-space-xl: clamp(3rem, 2.4rem + 3vw, 4.5rem);
    --gf-space-xxl: clamp(4rem, 3rem + 5vw, 7rem);
    --gf-flow: var(--gf-space-s);
    --gf-wrapper-padding: var(--gf-space-xl);
    --gf-wrapper-padding-inline: var(--gf-space-m);
    --gf-grid-gap: var(--gf-space-m);
    --gf-grid-min: 16rem;
    --gf-grid-divider-color: var(--gf-color-border);
    --gf-box-padding: var(--gf-space-m);
    --gf-overline-color: var(--gf-color-secondary);
    --gf-overline-large-size: var(--gf-fs-3xl);
    --gf-overline-heading-size: var(--gf-fs-xl);
    --gf-subline-heading-size: var(--gf-fs-xl);
    --gf-subline-color: var(--gf-color-muted);
    --gf-list-marker-color: var(--gf-color-accent);
    --gf-list-divider-color: var(--gf-color-border);
    --gf-link-icon-size: 1.15em;
    --gf-download-color: var(--gf-color-link);
    --gf-download-icon-color: var(--gf-icon-color);
    --gf-download-icon-size: 1.35em;
    --gf-download-meta-color: var(--gf-color-muted);
    --gf-accordion-title-font: var(--gf-font-body);
    --gf-accordion-title-size: var(--gf-text-size);
    --gf-accordion-title-weight: var(--gf-font-weight-bold);
    --gf-accordion-title-color: inherit;
    --gf-accordion-title-color-active: var(--gf-color-accent);
    --gf-accordion-title-padding: var(--gf-space-xs);
    --gf-accordion-icon-size: 0.75em;
    --gf-accordion-indent: calc(var(--gf-accordion-icon-size) + 0.75em);
    --gf-accordion-content-padding: 0 0 var(--gf-space-s);
    --gf-accordion-border: var(--gf-color-border);
    --gf-accordion-bg: color-mix(in srgb, currentColor 6%, transparent);
    --gf-accordion-duration: 0.3s;
    --gf-number-color: var(--gf-color-accent);
    --gf-number-size: var(--gf-fs-3xl);
    --gf-number-weight: var(--gf-font-weight-heading);
    --gf-number-font: var(--gf-font-heading);
    --gf-number-style: decimal-leading-zero;
    --gf-number-gap: var(--gf-space-xs);
    --gf-number-indent: 4rem;
    --gf-number-border: 0;
    --gf-number-padding-top: 0;
    --gf-step-size: 2.25rem;
    --gf-step-gap: var(--gf-space-s);
    --gf-step-bg: color-mix(in srgb, var(--gf-number-color) 16%, transparent);
    --gf-step-color: var(--gf-number-color);
    --gf-step-font: var(--gf-font-body);
    --gf-step-font-size: var(--gf-fs-sm);
    --gf-step-weight: var(--gf-font-weight-bold);
    --gf-step-style: decimal;
    --gf-step-line: 1px solid var(--gf-color-border);
    --gf-step-line-gap: var(--gf-space-xs);
    --gf-shape-height: clamp(2.5rem, 8vw, 7rem);
    --gf-shape-reserve: 1;
    --gf-shape-slant: polygon(0 100%, 100% 0, 100% 100%);
    --gf-shape-ridge: polygon(0 100%, 0 72%, 10% 46%, 19% 64%, 33% 18%, 47% 58%, 58% 36%, 72% 74%, 86% 28%, 100% 60%, 100% 100%);
    --gf-shape-wave: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 100' preserveAspectRatio='none'%3E%3Cpath d='M0 60 C200 10 400 10 600 50 S1000 100 1200 40 V100 H0Z'/%3E%3C/svg%3E");
    --gf-accordion-circle-size: 2rem;
    --gf-accordion-circle-bg: color-mix(in srgb, var(--gf-color-accent) 14%, var(--gf-color-bg));
    --gf-accordion-circle-color: var(--gf-color-accent);
    --gf-accordion-circle-bg-active: var(--gf-color-accent);
    --gf-accordion-circle-color-active: var(--gf-color-on-primary);
    --gf-accordion-circle-icon-size: 1rem;
    --gf-accordion-circle-offset: 0px;
    --gf-accordion-icon-expand: 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='M5 12h14'/%3E%3Cpath d='M12 5v14'/%3E%3C/svg%3E");
    --gf-accordion-icon-collapse: 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='M5 12h14'/%3E%3C/svg%3E");
    --gf-btn-font: var(--gf-font-body);
    --gf-btn-weight: var(--gf-font-weight-bold);
    --gf-btn-transform: none;
    --gf-btn-letter-spacing: normal;
    --gf-btn-radius: var(--gf-radius);
    --gf-btn-font-size: var(--gf-fs-sm);
    --gf-btn-font-size-l: var(--gf-fs-md);
    --gf-btn-padding: 0.8em 1.6em;
    --gf-btn-min-height: auto;
    --gf-btn-font-size-s: var(--gf-fs-xs);
    --gf-btn-padding-s: 0.55em 1.1em;
    --gf-btn-min-height-s: var(--gf-btn-min-height);
    --gf-booknav-color: var(--gf-color-text);
    --gf-booknav-color-hover: var(--gf-color-accent);
    --gf-code-font: ui-monospace, "SF Mono", "Cascadia Code", Menlo, Consolas, monospace;
    --gf-code-size: 0.875rem;
    --gf-code-bg: #16181d;
    --gf-code-bar-bg: #1f2229;
    --gf-code-color: #e4e6eb;
    --gf-code-muted: #8a909c;
    --gf-code-keyword: #c792ea;
    --gf-code-string: #b5e08b;
    --gf-code-number: #f7a26c;
    --gf-code-title: #82aaff;
    --gf-code-attr: #ffcb6b;
    --gf-code-tag: #ff7a8a;
    --gf-code-radius: var(--gf-radius-l);
    --gf-code-inline-bg: color-mix(in srgb, var(--gf-color-text) 7%, transparent);
    --gf-sticky-top: calc(var(--gf-header-min-height) + var(--gf-space-m));
    --gf-nav-sub-size: 1.75rem;
    --gf-nav-sub-size-desktop: 1.125rem;
    --gf-nav-dropdown-bg: color-mix(in srgb, var(--gf-header-bg) 78%, transparent);
    --gf-nav-dropdown-backdrop: blur(16px) saturate(1.4);
    --gf-nav-dropdown-offset: 0.625rem;
    --gf-nav-scroll-sub-width: 15rem;
    --gf-nav-sub-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
    --gf-btn-padding-l: var(--gf-btn-padding);
    --gf-btn-min-height-l: var(--gf-btn-min-height);
    --gf-btn-line-height: 1.2;
    --gf-icon-color: var(--gf-color-secondary);
    --gf-icon-stroke: 1.75;
    --gf-person-role-color: var(--gf-color-accent);
    --gf-form-border: color-mix(in srgb, var(--gf-color-text) 25%, transparent);
    --gf-form-bg: var(--gf-color-bg);
    --gf-card-bg: var(--gf-color-bg);
    --gf-card-meta-color: var(--gf-color-muted);
    --gf-card-meta-weight: var(--gf-font-weight-body);
    --gf-iconbox-title-color: inherit;
    --gf-iconbox-title-size: var(--gf-fs-xl);
    --gf-person-title-size: var(--gf-fs-xl);
    --gf-person-image-width: 100%;
    --gf-person-placeholder-bg: color-mix(in srgb, var(--gf-color-primary) 8%, var(--gf-color-bg));
    --gf-person-placeholder-color: color-mix(in srgb, var(--gf-color-primary) 45%, var(--gf-color-bg));
    --gf-icon-size-s: 1.75rem;
    --gf-icon-size-m: 2.75rem;
    --gf-icon-size-l: 4rem;
    --gf-iconbox-gap: var(--gf-space-s);

    --gf-container: 75rem;
    --gf-container-narrow: 48rem;
    --gf-gutter: clamp(1rem, 4vw, 2rem);

    --gf-radius: 0.25rem;
    --gf-radius-l: 0.75rem;
    --gf-shadow: 0 0.25rem 1.5rem color-mix(in srgb, var(--gf-color-dark) 12%, transparent);
    --gf-image-shadow: 0 0.875rem 2rem -0.75rem color-mix(in srgb, var(--gf-color-dark) 45%, transparent);
    --gf-transition: 0.25s ease;

    --gf-frame-bar: 1.875rem;
    --gf-frame-bg: color-mix(in srgb, var(--gf-color-text) 7%, var(--gf-color-bg));
    --gf-frame-border: color-mix(in srgb, var(--gf-color-text) 12%, transparent);
    --gf-frame-radius: 0.75rem;
    --gf-frame-shadow: 0 1.75rem 3.5rem -1.5rem color-mix(in srgb, var(--gf-color-dark) 40%, transparent);
    --gf-frame-dot-1: #ff5f57;
    --gf-frame-dot-2: #febc2e;
    --gf-frame-dot-3: #28c840;
    --gf-frame-phone-width: 20rem;
    --gf-frame-phone-bezel: 0.625rem;
    --gf-frame-phone-radius: 2.5rem;
    --gf-frame-phone-bg: var(--gf-color-dark);

    --gf-header-bg: var(--gf-color-bg);
    --gf-header-color: var(--gf-color-text);
    --gf-header-min-height: 5rem;
    --gf-header-position: relative;
    --gf-header-backdrop: none;
    --gf-header-border: 0;
    --gf-topbar-bg: var(--gf-color-primary);
    --gf-topbar-color: var(--gf-color-on-primary);
    --gf-footer-bg: transparent;
    --gf-footer-color: inherit;
    --gf-bottom-bg: var(--gf-color-dark);
    --gf-bottom-color: var(--gf-color-on-dark);
    --gf-bottom-padding: var(--gf-space-xl);

    --gf-nav-color: var(--gf-header-color);
    --gf-nav-color-active: var(--gf-color-accent);
    --gf-nav-font: var(--gf-font-body);
    --gf-nav-font-size: var(--gf-fs-md);
    --gf-nav-font-size-mobile: var(--gf-fs-lg);
    --gf-nav-font-weight: var(--gf-font-weight-body);
    --gf-nav-text-transform: none;
    --gf-nav-gap: var(--gf-space-m);
    --gf-nav-mobile-bg: var(--gf-header-bg);
    --gf-nav-mobile-color: var(--gf-nav-color);
    --gf-nav-mobile-color-active: var(--gf-nav-color-active);
    --gf-nav-mobile-active-bg: transparent;
    --gf-nav-mobile-font-weight: var(--gf-nav-font-weight);
    --gf-nav-mobile-divider: var(--gf-color-border);
    --gf-nav-mobile-padding: var(--gf-space-xs) var(--gf-gutter);
    --gf-nav-mobile-panel-padding: var(--gf-space-xs) 0 var(--gf-space-m);
    --gf-nav-fullscreen-font-size: var(--gf-fs-2xl);
    --gf-nav-panel-width: 22rem;
    --gf-nav-backdrop: color-mix(in srgb, var(--gf-color-dark) 55%, transparent);
    --gf-nav-cta-bg: var(--gf-color-primary);
    --gf-nav-cta-color: var(--gf-color-on-primary);
    --gf-nav-cta-bg-hover: var(--gf-color-accent);
    --gf-nav-cta-color-hover: var(--gf-nav-cta-color);
    --gf-nav-cta-height: 2.5rem;
    --gf-nav-cta-padding: 0.5rem 1.125rem;
    --gf-nav-cta-radius: var(--gf-btn-radius);
    --gf-nav-cta-weight: var(--gf-font-weight-bold);
    --gf-nav-cta-offset: var(--gf-space-xs);
    --gf-nav-duration: 0.4s;
    --gf-nav-easing: cubic-bezier(0.2, 0.7, 0.2, 1);
    --gf-topbar-font-size: var(--gf-fs-sm);
    --gf-topbar-font-weight: var(--gf-font-weight-body);
  }
}

@layer gf.base {
  html {
    font-size: var(--gf-root-font-size);
    scroll-behavior: smooth;
    scroll-padding-block-start: calc(var(--gf-header-min-height) + var(--gf-space-s));
  }

  body {
    min-block-size: 100dvb;
    display: flex;
    flex-direction: column;
    background: var(--gf-color-bg);
    color: var(--gf-color-text);
    font-family: var(--gf-font-body);
    font-size: var(--gf-text-size);
    font-weight: var(--gf-font-weight-body);
    line-height: var(--gf-line-height);
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
  }

  h1, h2, h3, h4, h5, h6 {
    font-family: var(--gf-font-heading);
    font-weight: var(--gf-font-weight-heading);
    line-height: var(--gf-line-height-heading);
    text-wrap: balance;
    overflow-wrap: break-word;
    hyphens: auto;
  }

  h1 { font-size: var(--gf-h1-size); }
  h2 { font-size: var(--gf-h2-size); }
  h3 { font-size: var(--gf-h3-size); }
  h4 { font-size: var(--gf-h4-size); }
  h5 { font-size: var(--gf-h5-size); }
  h6 { font-size: var(--gf-fs-md); }

  p,
  ul,
  ol,
  dl,
  table,
  blockquote,
  figure {
    margin-block: 0 var(--gf-flow);
  }

  :is(p, ul, ol, dl, table, blockquote, figure):last-child {
    margin-block-end: 0;
  }

  p {
    text-wrap: pretty;
  }

  ul,
  ol {
    padding-inline-start: 1.25em;
  }

  a {
    color: var(--gf-color-link);
    text-decoration-thickness: 0.08em;
    text-underline-offset: 0.2em;
    transition: color var(--gf-transition);
  }

  a:hover {
    color: var(--gf-color-link-hover);
  }

  strong,
  b {
    font-weight: var(--gf-font-weight-bold);
  }

  :focus-visible {
    outline: 2px solid var(--gf-color-focus);
    outline-offset: 2px;
  }

  hr {
    border: 0;
    border-block-start: 1px solid var(--gf-color-border);
    margin-block: var(--gf-space-m);
  }

  .invisible,
  .gf-visually-hidden {
    position: absolute !important;
    inline-size: 1px;
    block-size: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip-path: inset(50%);
    white-space: nowrap;
    border: 0;
  }
}

@layer gf.layout {
  .gf-skip-link {
    position: absolute;
    inset-block-start: var(--gf-space-xs);
    inset-inline-start: var(--gf-space-xs);
    z-index: 1000;
    padding: var(--gf-space-xs) var(--gf-space-s);
    background: var(--gf-color-dark);
    color: var(--gf-color-on-dark);
    border-radius: var(--gf-radius);
    translate: 0 -200%;
    transition: translate var(--gf-transition);
  }

  .gf-skip-link:focus {
    translate: 0 0;
  }

  .gf-main {
    flex: 1;
  }

  .gf-main > .mod_article,
  .gf-main .gf-section,
  .gf-footer,
  .gf-bottom,
  .gf-topbar,
  .gf-header {
    display: grid;
    grid-template-columns:
      [full-start] minmax(var(--gf-gutter), 1fr)
      [content-start] min(100% - 2 * var(--gf-gutter), var(--gf-container))
      [content-end] minmax(var(--gf-gutter), 1fr)
      [full-end];
  }

  .gf-main > .mod_article > *,
  .gf-main .gf-section > *,
  .gf-footer > *,
  .gf-bottom > *,
  .gf-topbar > *,
  .gf-header > * {
    grid-column: content;
    min-inline-size: 0;
  }

  :is(.gf-main > .mod_article, .gf-main .gf-section, .gf-footer, .gf-bottom) > * {
    margin-block: 0 var(--gf-flow);
  }

  :is(.gf-main > .mod_article, .gf-main .gf-section, .gf-footer, .gf-bottom) > :last-child {
    margin-block-end: 0;
  }

  :is(.gf-main > .mod_article, .gf-main .gf-section, .gf-footer, .gf-bottom) > :has(+ [class*="gf-mt-"]) {
    margin-block-end: 0;
  }

  .gf-main > .mod_article:last-child > :last-child:not(.gf-full, .gf-section) {
    margin-block-end: var(--gf-space-xl);
  }

  :is(.gf-main > .mod_article, .gf-main .gf-section, .gf-footer, .gf-bottom) > .gf-full:has(+ .gf-full) {
    margin-block-end: 0;
  }

  :is(.gf-main > .mod_article, .gf-main .gf-section, .gf-footer, .gf-bottom) > .gf-full {
    grid-column: full;
  }

  .gf-main > .mod_article:not(.gf-section) + .mod_article:not(.gf-section) {
    margin-block-start: var(--gf-flow);
  }

  .gf-main > .mod_article > .gf-section {
    grid-column: full;
  }

  .gf-main .gf-section {
    position: relative;
    color: var(--gf-color-text);
  }

  .gf-main .gf-section > :not(.gf-wrapper__media, .gf-wrapper__overlay) {
    position: relative;
    z-index: 1;
  }

  .gf-main .gf-section > :is(.gf-wrapper__media, .gf-wrapper__overlay) {
    grid-area: auto;
    margin: 0;
  }

  .gf-main .gf-section:last-child > :last-child:not(.gf-full) {
    margin-block-end: 0;
  }

  .gf-main .gf-section--boxed {
    inline-size: min(100% - 2 * var(--gf-gutter), var(--gf-container));
    margin-inline: auto;
  }

  .gf-main .gf-section.gf-inner-narrow {
    --gf-container: var(--gf-container-narrow);
  }

  .gf-main .gf-section.gf-inner-full > * {
    grid-column: full;
  }

  .gf-main .gf-section[class*="gf-minh-"] {
    align-content: center;
  }

  .gf-main .gf-section.gf-valign-start { align-content: start; }
  .gf-main .gf-section.gf-valign-end { align-content: end; }

  .gf-topbar {
    background: var(--gf-topbar-bg);
    color: var(--gf-topbar-color);
    font-size: var(--gf-topbar-font-size);
    font-weight: var(--gf-topbar-font-weight);
  }

  .gf-topbar__inner {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: var(--gf-space-xs) var(--gf-space-m);
    padding-block: var(--gf-space-xs);
  }

  .gf-topbar a {
    color: inherit;
    text-decoration: none;
  }

  .gf-topbar a:hover {
    text-decoration: underline;
  }

  .gf-topbar :is(p, ul) {
    margin: 0;
  }

  .gf-header {
    position: var(--gf-header-position);
    inset-block-start: 0;
    z-index: 100;
    border-block-end: var(--gf-header-border);
    color: var(--gf-header-color);
  }

  .gf-header::before {
    content: "";
    position: absolute;
    z-index: -1;
    inset: 0;
    background: var(--gf-header-bg);
    -webkit-backdrop-filter: var(--gf-header-backdrop);
    backdrop-filter: var(--gf-header-backdrop);
    pointer-events: none;
  }

  .gf-header__inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--gf-space-m);
    min-block-size: var(--gf-header-min-height);
    padding-block: var(--gf-space-xs);
  }

  .gf-header__brand {
    display: flex;
    align-items: center;
    gap: var(--gf-space-s);
  }

  .gf-header__brand :is(p, figure) {
    margin: 0;
  }

  .gf-header__brand img {
    max-block-size: calc(var(--gf-header-min-height) - 2 * var(--gf-space-xs));
    inline-size: auto;
  }

  .gf-footer {
    background: var(--gf-footer-bg);
    color: var(--gf-footer-color);
  }

  .gf-bottom {
    background: var(--gf-bottom-bg);
    color: var(--gf-bottom-color);
    padding-block: var(--gf-bottom-padding);
  }

  .gf-bottom a {
    color: inherit;
  }
}

@layer gf.components {

  .gf-icon {
    display: inline-block;
    flex: none;
    inline-size: 1em;
    block-size: 1em;
    vertical-align: -0.125em;
    fill: none;
    stroke: currentColor;
    stroke-width: var(--gf-icon-stroke);
    stroke-linecap: round;
    stroke-linejoin: round;
  }

  .gf-icon-color-primary { --gf-icon-color: var(--gf-color-primary); }
  .gf-icon-color-secondary { --gf-icon-color: var(--gf-color-secondary); }
  .gf-icon-color-accent { --gf-icon-color: var(--gf-color-accent); }

  .gf-scheme-dark {
    --gf-icon-color: var(--gf-color-on-dark);
  }

  .gf-topbar .gf-iconlist__items {
    gap: 0.25em 2em;
  }

  .content-gf-iconbox {
    display: flex;
    flex-direction: column;
    gap: var(--gf-iconbox-gap);
  }

  .gf-iconbox--left {
    flex-direction: row;
    align-items: flex-start;
  }

  .gf-text-center.gf-iconbox--top {
    align-items: center;
  }

  .gf-icon-size-s { --gf-icon-size: var(--gf-icon-size-s); }
  .gf-icon-size-m { --gf-icon-size: var(--gf-icon-size-m); }
  .gf-icon-size-l { --gf-icon-size: var(--gf-icon-size-l); }

  .gf-iconbox__icon {
    display: grid;
    place-items: center;
    flex: none;
    inline-size: var(--gf-icon-size);
    block-size: var(--gf-icon-size);
    font-size: var(--gf-icon-size);
    color: var(--gf-icon-color);
  }

  :is(.gf-icon-style-soft, .gf-icon-style-filled, .gf-icon-style-outline) .gf-iconbox__icon {
    font-size: calc(var(--gf-icon-size) * 0.5);
    border-radius: 50%;
  }

  .gf-icon-style-soft .gf-iconbox__icon {
    background: color-mix(in srgb, var(--gf-icon-color) 14%, transparent);
  }

  .gf-icon-style-filled .gf-iconbox__icon {
    background: var(--gf-icon-color);
    color: var(--gf-color-on-dark);
  }

  .gf-icon-style-outline .gf-iconbox__icon {
    border: 2px solid currentColor;
  }

  .gf-iconbox__body {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
    align-self: stretch;
    min-inline-size: 0;
  }

  .gf-iconbox__body > :is(h1, h2, h3, h4, h5, h6) {
    font-size: var(--gf-iconbox-title-size);
    color: var(--gf-iconbox-title-color);
    hyphens: manual;
  }

  .gf-iconbox__body > * {
    margin-block: 0 var(--gf-space-xs);
  }

  .gf-iconbox__body > :last-child {
    margin-block-end: 0;
  }

  .gf-iconbox__body > .gf-iconbox__link {
    margin-block-start: auto;
  }

  .gf-iconbox__link a {
    font-weight: var(--gf-font-weight-bold);
  }

  .content-gf-person figure {
    max-inline-size: var(--gf-person-image-width);
    margin: 0 0 var(--gf-space-s);
  }

  .content-gf-person img {
    inline-size: 100%;
  }

  .gf-person__placeholder {
    display: grid;
    place-items: center;
    max-inline-size: var(--gf-person-image-width);
    margin: 0 0 var(--gf-space-s);
    aspect-ratio: var(--gf-person-ratio, 1);
    background: var(--gf-person-placeholder-bg);
    color: var(--gf-person-placeholder-color);
    container-type: inline-size;
  }

  .gf-person__placeholder span {
    font-family: var(--gf-font-heading);
    font-size: 30cqi;
    line-height: 1;
  }


  .gf-person__body > :is(h1, h2, h3, h4, h5, h6) {
    margin: 0;
    font-size: var(--gf-person-title-size);
    hyphens: manual;
  }

  .gf-person__role {
    margin: 0.35em 0 0.5em;
    font-weight: var(--gf-font-weight-bold);
    color: var(--gf-person-role-color);
  }

  .gf-iconlist__items {
    display: flex;
    flex-direction: column;
    gap: 0.5em;
    margin: 0;
    padding: 0;
    list-style: none;
  }

  .gf-iconlist--inline .gf-iconlist__items {
    flex-direction: row;
    flex-wrap: wrap;
    gap: 0.5em 1.5em;
  }

  .gf-text-center .gf-iconlist__items {
    align-items: center;
    justify-content: center;
  }

  .gf-iconlist__item {
    display: flex;
    align-items: baseline;
    gap: 0.6em;
  }

  .gf-iconlist__item .gf-icon {
    font-size: 1.15em;
    color: var(--gf-icon-color);
    align-self: center;
  }

  .gf-iconlist__item a {
    color: inherit;
    text-decoration: none;
  }

  .gf-iconlist__item a:hover {
    text-decoration: underline;
  }

  form .widget {
    margin-block: 0 var(--gf-space-s);
  }

  form .widget > label,
  form fieldset > legend {
    display: block;
    margin-block-end: 0.35em;
    padding: 0;
    font-size: var(--gf-fs-sm);
    font-weight: var(--gf-font-weight-bold);
  }

  form fieldset {
    margin: 0;
    padding: 0;
    border: 0;
    min-inline-size: 0;
  }

  form :is(input:not([type="checkbox"], [type="radio"], [type="range"], [type="submit"], [type="hidden"], [type="file"]), select, textarea) {
    inline-size: 100%;
    padding: 0.7em 0.9em;
    border: 1px solid var(--gf-form-border);
    border-radius: var(--gf-radius);
    background: var(--gf-form-bg);
    color: var(--gf-color-text);
    line-height: 1.4;
    transition: border-color var(--gf-transition), box-shadow var(--gf-transition);
  }

  form textarea {
    min-block-size: 8rem;
    resize: vertical;
  }

  form :is(input, select, textarea):focus-visible {
    outline: none;
    border-color: var(--gf-color-secondary);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--gf-color-secondary) 25%, transparent);
  }

  form :is(input[type="checkbox"], input[type="radio"]) {
    flex: none;
    inline-size: 1.1em;
    block-size: 1.1em;
    margin: 0;
    translate: 0 0.15em;
    accent-color: var(--gf-color-primary);
  }

  form :is(.checkbox_container, .radio_container) > span {
    display: inline-flex;
    align-items: baseline;
    gap: 0.45em;
    margin-inline-end: 1.25em;
  }

  form :is(.checkbox_container, .radio_container) > span label {
    font-size: var(--gf-fs-md);
    font-weight: var(--gf-font-weight-body);
  }

  form span.mandatory {
    color: var(--gf-color-accent);
  }

  form .error {
    color: var(--gf-color-error);
    font-size: var(--gf-fs-sm);
  }

  form :is(input, select, textarea).error {
    border-color: var(--gf-color-error);
  }

  form .help {
    margin-block-start: 0.35em;
    font-size: var(--gf-fs-sm);
    color: var(--gf-color-muted);
  }

  .mod_newslist:has(.layout_latest) {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(min(18rem, 100%), 1fr));
    gap: var(--gf-space-m);
  }

  .mod_newslist:has(.layout_latest) > :not(.layout_latest) {
    grid-column: 1 / -1;
  }

  .layout_latest {
    display: flex;
    flex-direction: column;
    padding: var(--gf-space-m);
    border-radius: var(--gf-radius);
    background: var(--gf-card-bg);
    box-shadow: var(--gf-shadow);
    color: var(--gf-color-text);
  }

  .layout_latest > * {
    margin-block: 0 var(--gf-space-xs);
  }

  .layout_latest .info {
    order: 9;
    margin: auto 0 0;
    padding-block-start: var(--gf-space-xs);
    border-block-start: 1px solid var(--gf-color-border);
    font-size: var(--gf-fs-xs);
    font-weight: var(--gf-card-meta-weight);
    color: var(--gf-card-meta-color);
  }

  .layout_latest h2 {
    font-size: var(--gf-fs-xl);
  }

  .layout_latest h2 a {
    color: inherit;
    text-decoration: none;
  }

  .layout_latest .more {
    font-size: var(--gf-fs-xs);
    font-weight: var(--gf-font-weight-bold);
    letter-spacing: 0.06em;
    text-transform: uppercase;
  }

  .layout_latest .more a {
    color: var(--gf-color-accent);
    text-decoration: none;
  }

  hgroup > :is(h1, h2, h3, h4, h5, h6) {
    margin: 0;
  }

  .gf-overline {
    margin: 0 0 0.5em;
    font-family: var(--gf-font-body);
    font-size: var(--gf-fs-sm);
    font-weight: var(--gf-font-weight-bold);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--gf-overline-color);
  }

  .gf-subline {
    margin: 0.5em 0 0;
    font-size: var(--gf-fs-lg);
    color: var(--gf-subline-color);
  }

  .gf-overline--heading,
  .gf-overline--large {
    margin-block-end: 0.25em;
    font-family: var(--gf-font-heading);
    font-size: var(--gf-overline-heading-size);
    font-weight: var(--gf-font-weight-heading);
    letter-spacing: normal;
    line-height: var(--gf-line-height-heading);
    text-transform: none;
  }

  .gf-overline--large {
    font-size: var(--gf-overline-large-size);
  }

  .gf-subline--heading {
    margin-block-start: 0.75em;
    font-family: var(--gf-font-heading);
    font-size: var(--gf-subline-heading-size);
    font-weight: var(--gf-font-weight-heading);
    line-height: var(--gf-line-height-heading);
    color: inherit;
  }

  .gf-scheme-dark {
    --gf-overline-color: var(--gf-color-on-dark);
    --gf-subline-color: var(--gf-color-muted);
  }

  .gf-size-xs { font-size: var(--gf-fs-md); }
  .gf-size-s { font-size: var(--gf-fs-lg); }
  .gf-size-m { font-size: var(--gf-fs-xl); }
  .gf-size-l { font-size: var(--gf-fs-2xl); }
  .gf-size-xl { font-size: var(--gf-fs-3xl); }
  .gf-size-xxl { font-size: var(--gf-fs-4xl); }
  .gf-size-3xl { font-size: var(--gf-fs-5xl); }

  .gf-color-primary { color: var(--gf-color-primary); }
  .gf-color-secondary { color: var(--gf-color-secondary); }
  .gf-color-accent { color: var(--gf-color-accent); }
  .gf-color-dark { color: var(--gf-color-dark); }
  .gf-color-light { color: var(--gf-color-light); }

  .gf-btn,
  .widget-submit .submit {
    --gf-btn-bg: var(--gf-color-primary);
    --gf-btn-color: var(--gf-color-on-primary);
    --gf-btn-border: var(--gf-btn-bg);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5em;
    min-block-size: var(--gf-btn-min-height);
    padding: var(--gf-btn-padding);
    border: 2px solid var(--gf-btn-border);
    border-radius: var(--gf-btn-radius);
    background: var(--gf-btn-bg);
    color: var(--gf-btn-color);
    font-family: var(--gf-btn-font);
    font-size: var(--gf-btn-font-size);
    font-weight: var(--gf-btn-weight);
    letter-spacing: var(--gf-btn-letter-spacing);
    line-height: var(--gf-btn-line-height);
    text-transform: var(--gf-btn-transform);
    text-decoration: none;
    cursor: pointer;
    transition: background-color var(--gf-transition), border-color var(--gf-transition), color var(--gf-transition);
  }

  .gf-btn:hover,
  .widget-submit .submit:hover {
    --gf-btn-bg: color-mix(in srgb, var(--gf-btn-base, var(--gf-color-primary)) 82%, black);
    color: var(--gf-btn-color);
  }

  .gf-link-icon {
    display: inline-flex;
    align-items: center;
    gap: 0.5em;
  }

  .gf-link__icon {
    flex: none;
    inline-size: var(--gf-link-icon-size);
    block-size: var(--gf-link-icon-size);
    transition: translate var(--gf-transition);
  }

  .gf-link-icon--after:hover .gf-link__icon {
    translate: 0.2em 0;
  }

  .gf-btn--primary { --gf-btn-base: var(--gf-color-primary); }
  .gf-btn--secondary { --gf-btn-base: var(--gf-color-secondary); --gf-btn-bg: var(--gf-color-secondary); }
  .gf-btn--accent { --gf-btn-base: var(--gf-color-accent); --gf-btn-bg: var(--gf-color-accent); }

  .gf-btn--light {
    --gf-btn-bg: var(--gf-color-bg);
    --gf-btn-color: var(--gf-color-primary);
  }

  .gf-btn--light:hover {
    --gf-btn-bg: var(--gf-color-light);
  }

  .gf-btn--outline {
    --gf-btn-bg: transparent;
    --gf-btn-color: currentColor;
    --gf-btn-border: currentColor;
  }

  .gf-btn--outline:hover {
    --gf-btn-bg: color-mix(in srgb, currentColor 10%, transparent);
  }

  .gf-btn--s {
    min-block-size: var(--gf-btn-min-height-s);
    padding: var(--gf-btn-padding-s);
    font-size: var(--gf-btn-font-size-s);
  }
  .gf-btn--l {
    min-block-size: var(--gf-btn-min-height-l);
    padding: var(--gf-btn-padding-l);
    font-size: var(--gf-btn-font-size-l);
  }

  .gf-text-lead { font-size: var(--gf-fs-lg); }
  .gf-text-small { font-size: var(--gf-fs-sm); }

  :is(.gf-list-check, .gf-list-icon, .gf-list-none, .gf-list-lines) :is(ul, ol) {
    list-style: none;
    padding-inline-start: 0;
  }

  :is(.gf-list-check, .gf-list-icon) li {
    position: relative;
    padding-inline-start: 1.75em;
  }

  :is(.gf-list-check, .gf-list-icon) li + li {
    margin-block-start: 0.35em;
  }

  .gf-list-icon li::before {
    content: "";
    position: absolute;
    inset-inline-start: 0;
    inset-block-start: 0.3em;
    inline-size: 1.1em;
    block-size: 1.1em;
    background: var(--gf-list-marker-color);
    mask: var(--gf-list-icon) center / contain no-repeat;
  }

  .gf-list-check li::before {
    content: "";
    position: absolute;
    inset-inline-start: 0;
    inset-block-start: 0.3em;
    inline-size: 1.1em;
    block-size: 1.1em;
    background: var(--gf-list-marker-color);
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center / contain no-repeat;
  }

  .gf-list-lines li + li {
    margin-block-start: 0.25em;
    padding-block-start: 0.25em;
    border-block-start: 1px solid var(--gf-list-divider-color);
  }

  .content-downloads :is(ul, ol) {
    display: grid;
    gap: 0.5em;
    margin: 0;
    padding: 0;
    list-style: none;
  }

  .download-element a {
    display: inline-flex;
    align-items: center;
    gap: 0.6em;
    color: var(--gf-download-color);
    text-decoration: none;
  }

  .download-element a:hover .gf-download__text {
    text-decoration: underline;
  }

  .gf-download__icon {
    flex: none;
    inline-size: var(--gf-download-icon-size);
    block-size: var(--gf-download-icon-size);
    color: var(--gf-download-icon-color);
  }

  .gf-download__meta {
    font-size: 0.85em;
    color: var(--gf-download-meta-color);
    white-space: nowrap;
  }

  .content-accordion .handorgel__header {
    margin: 0;
    font: inherit;
  }

  .handorgel__header__button {
    display: flex;
    align-items: center;
    gap: 0.75em;
    inline-size: 100%;
    margin: 0;
    padding: var(--gf-accordion-title-padding) 0;
    border: 0;
    background: none;
    color: var(--gf-accordion-title-color);
    font-family: var(--gf-accordion-title-font);
    font-size: var(--gf-accordion-title-size);
    font-weight: var(--gf-accordion-title-weight);
    line-height: 1.25;
    text-align: start;
    cursor: pointer;
    transition: color var(--gf-transition);
  }

  .handorgel__header__button:hover,
  .handorgel__header--open .handorgel__header__button {
    color: var(--gf-accordion-title-color-active);
  }

  .handorgel__header__button:focus-visible {
    outline: 2px solid var(--gf-color-focus);
    outline-offset: 2px;
  }

  .handorgel__header__button::after {
    content: "";
    flex: none;
    inline-size: calc(var(--gf-accordion-icon-size) * 0.7);
    block-size: calc(var(--gf-accordion-icon-size) * 0.7);
    margin-inline: auto 0.2em;
    border: solid currentColor;
    border-width: 0 2px 2px 0;
    rotate: 45deg;
    translate: 0 -25%;
    transition: rotate var(--gf-accordion-duration) ease, translate var(--gf-accordion-duration) ease;
  }

  .handorgel__header--open .handorgel__header__button::after {
    rotate: 225deg;
    translate: 0 25%;
  }

  .handorgel__content {
    display: none;
    overflow: hidden;
    height: 0;
    transition: height var(--gf-accordion-duration) ease;
  }

  .handorgel__content--open {
    display: block;
  }

  .handorgel__content--opened {
    overflow: visible;
  }

  .handorgel__content__inner {
    padding: var(--gf-accordion-content-padding);
    opacity: 0;
    transition: opacity var(--gf-accordion-duration) ease;
  }

  .handorgel__content--opened .handorgel__content__inner {
    opacity: 1;
  }

  .handorgel__content__inner > :first-child {
    margin-block-start: 0;
  }

  .handorgel__content__inner > :last-child {
    margin-block-end: 0;
  }

  .gf-accordion--lines {
    border-block-end: 1px solid var(--gf-accordion-border);
  }

  .gf-accordion--lines .handorgel__header {
    border-block-start: 1px solid var(--gf-accordion-border);
  }

  .gf-accordion--plus .handorgel__header__button::after {
    order: -1;
    inline-size: var(--gf-accordion-icon-size);
    block-size: var(--gf-accordion-icon-size);
    margin: 0;
    border: 0;
    background:
      linear-gradient(currentColor 0 0) center / 100% 2px no-repeat,
      linear-gradient(currentColor 0 0) center / 2px 100% no-repeat;
    rotate: none;
    translate: none;
    transition: background-size var(--gf-accordion-duration) ease;
  }

  .gf-accordion--plus .handorgel__header--open .handorgel__header__button::after {
    background-size: 100% 2px, 2px 0;
  }

  .gf-accordion--plus .handorgel__content__inner {
    padding-inline-start: var(--gf-accordion-indent);
  }

  .gf-accordion--circle {
    border-block-end: 1px solid var(--gf-accordion-border);
  }

  .gf-accordion--circle .handorgel__header {
    border-block-start: 1px solid var(--gf-accordion-border);
  }

  .gf-accordion--circle .handorgel__header__button {
    position: relative;
  }

  .gf-accordion--circle .handorgel__header__button::after {
    inline-size: var(--gf-accordion-circle-size);
    block-size: var(--gf-accordion-circle-size);
    margin-block: min(0px, (1lh - var(--gf-accordion-circle-size)) / 2);
    margin-inline: auto var(--gf-accordion-circle-offset);
    border: 0;
    border-radius: 50%;
    background: var(--gf-accordion-circle-bg);
    rotate: none;
    translate: none;
    transition: background-color var(--gf-accordion-duration) ease;
  }

  .gf-accordion--circle .handorgel__header__button::before {
    content: "";
    position: absolute;
    z-index: 1;
    inset-block-start: 50%;
    inset-inline-end: calc(var(--gf-accordion-circle-offset) + (var(--gf-accordion-circle-size) - var(--gf-accordion-circle-icon-size)) / 2);
    inline-size: var(--gf-accordion-circle-icon-size);
    block-size: var(--gf-accordion-circle-icon-size);
    background: var(--gf-accordion-circle-color);
    -webkit-mask: var(--gf-accordion-icon-expand) no-repeat center / contain;
    mask: var(--gf-accordion-icon-expand) no-repeat center / contain;
    translate: 0 -50%;
  }

  .gf-accordion--circle .handorgel__header--open .handorgel__header__button::after {
    background-color: var(--gf-accordion-circle-bg-active);
  }

  .gf-accordion--circle .handorgel__header--open .handorgel__header__button::before {
    background: var(--gf-accordion-circle-color-active);
    -webkit-mask-image: var(--gf-accordion-icon-collapse);
    mask-image: var(--gf-accordion-icon-collapse);
  }

  .gf-accordion--boxed .handorgel__header + .handorgel__content + .handorgel__header {
    margin-block-start: var(--gf-space-xs);
  }

  .gf-accordion--boxed .handorgel__header__button {
    padding-inline: var(--gf-box-padding);
    border-radius: var(--gf-radius);
    background: var(--gf-accordion-bg);
  }

  .gf-accordion--boxed .handorgel__header--open .handorgel__header__button {
    border-end-start-radius: 0;
    border-end-end-radius: 0;
  }

  .gf-accordion--boxed .handorgel__content__inner {
    padding: var(--gf-space-s) var(--gf-box-padding);
    border: 1px solid var(--gf-accordion-bg);
    border-block-start: 0;
    border-end-start-radius: var(--gf-radius);
    border-end-end-radius: var(--gf-radius);
  }

  .gf-radius-s :is(img, .gf-person__placeholder) { border-radius: 0.25rem; }
  .gf-radius-m :is(img, .gf-person__placeholder) { border-radius: 0.75rem; }
  .gf-radius-l :is(img, .gf-person__placeholder) { border-radius: 1.5rem; }
  .gf-radius-round :is(img, .gf-person__placeholder) { border-radius: 50%; }

  .gf-shadow :is(img, .gf-person__placeholder) {
    box-shadow: var(--gf-image-shadow);
  }

  :is(.gf-frame-browser, .gf-frame-phone) figure {
    position: relative;
    margin: 0;
    overflow: hidden;
    box-shadow: var(--gf-frame-shadow);
  }

  :is(.gf-frame-browser, .gf-frame-phone) :is(img, a) {
    display: block;
    inline-size: 100%;
    block-size: auto;
    border-radius: 0;
    box-shadow: none;
  }

  .gf-frame-browser figure {
    padding-block-start: var(--gf-frame-bar);
    border: 1px solid var(--gf-frame-border);
    border-radius: var(--gf-frame-radius);
    background: var(--gf-frame-bg);
  }

  .gf-frame-browser figure::before {
    content: "";
    position: absolute;
    inset-block-start: calc(var(--gf-frame-bar) / 2 - 0.3rem);
    inset-inline-start: 0.875rem;
    inline-size: 0.6rem;
    block-size: 0.6rem;
    border-radius: 50%;
    background: var(--gf-frame-dot-1);
    box-shadow: 1rem 0 0 var(--gf-frame-dot-2), 2rem 0 0 var(--gf-frame-dot-3);
  }

  .gf-frame-phone figure {
    max-inline-size: var(--gf-frame-phone-width);
    margin-inline: auto;
    padding: var(--gf-frame-phone-bezel);
    border-radius: var(--gf-frame-phone-radius);
    background: var(--gf-frame-phone-bg);
  }

  .gf-frame-phone :is(img, a) {
    overflow: hidden;
    border-radius: calc(var(--gf-frame-phone-radius) - var(--gf-frame-phone-bezel));
  }

  .gf-box {
    padding: var(--gf-box-padding);
    border-radius: var(--gf-radius);
    color: var(--gf-color-text);
  }

  .content-element-group > * {
    margin-block: 0 var(--gf-flow);
  }

  .content-element-group > :last-child {
    margin-block-end: 0;
  }

  .gf-box--filled:not([class*="gf-bg-"]) {
    background-color: var(--gf-color-light);
  }

  .gf-box--outline {
    border: 1px solid var(--gf-color-border);
  }

  .gf-box--shadow {
    box-shadow: var(--gf-shadow);
  }

  .gf-box--shadow:not([class*="gf-bg-"]) {
    background-color: var(--gf-color-bg);
  }

  .gf-box-p-s { --gf-box-padding: var(--gf-space-s); }
  .gf-box-p-m { --gf-box-padding: var(--gf-space-m); }
  .gf-box-p-l { --gf-box-padding: var(--gf-space-l); }
  .gf-box-p-xl { --gf-box-padding: var(--gf-space-xl); }

  .gf-flow > * {
    margin-block: 0 var(--gf-flow);
  }

  .gf-flow > :last-child {
    margin-block-end: 0;
  }

  .content-gf-wrapper {
    position: relative;
    color: var(--gf-color-text);
  }

  .gf-wrapper--filled {
    padding-block: var(--gf-wrapper-padding);
  }

  .gf-shape {
    --gf-shape-space: calc(var(--gf-shape-height) * var(--gf-shape-reserve));
    position: relative;
    padding-block-end: var(--gf-shape-space);
  }

  .gf-shape.gf-wrapper--filled {
    padding-block-end: calc(var(--gf-wrapper-padding) + var(--gf-shape-space));
  }

  .gf-shape::before {
    content: "";
    position: absolute;
    inset-inline: 0;
    inset-block-end: -1px;
    z-index: 0;
    block-size: calc(var(--gf-shape-height) + 1px);
    background: var(--gf-shape-color);
    pointer-events: none;
  }

  .gf-shape > :not(.gf-wrapper__media, .gf-wrapper__overlay) {
    position: relative;
    z-index: 1;
  }

  .gf-shape--slant::before { clip-path: var(--gf-shape-slant); }
  .gf-shape--ridge::before { clip-path: var(--gf-shape-ridge); }

  .gf-shape--wave::before {
    -webkit-mask: var(--gf-shape-wave) no-repeat center bottom / 100% 100%;
    mask: var(--gf-shape-wave) no-repeat center bottom / 100% 100%;
  }

  .gf-shape-color-bg { --gf-shape-color: var(--gf-color-bg); }
  .gf-shape-color-light { --gf-shape-color: var(--gf-color-light); }
  .gf-shape-color-dark { --gf-shape-color: var(--gf-color-dark); }
  .gf-shape-color-primary { --gf-shape-color: var(--gf-color-primary); }
  .gf-shape-color-secondary { --gf-shape-color: var(--gf-color-secondary); }
  .gf-shape-color-accent { --gf-shape-color: var(--gf-color-accent); }

  .gf-wrapper__inner {
    position: relative;
    z-index: 1;
  }

  .gf-full > .gf-wrapper__inner.gf-inner-container {
    inline-size: min(100% - 2 * var(--gf-gutter), var(--gf-container));
    margin-inline: auto;
  }

  .gf-full > .gf-wrapper__inner.gf-inner-narrow {
    inline-size: min(100% - 2 * var(--gf-gutter), var(--gf-container-narrow));
    margin-inline: auto;
  }

  .content-gf-wrapper:not(.gf-full) > .gf-wrapper__inner.gf-inner-narrow {
    max-inline-size: var(--gf-container-narrow);
    margin-inline: auto;
  }

  .content-gf-wrapper:not(.gf-full).gf-wrapper--filled {
    padding-inline: var(--gf-wrapper-padding-inline);
  }

  .gf-wrapper__media,
  .gf-wrapper__overlay {
    position: absolute;
    inset: 0;
    z-index: 0;
  }

  .gf-wrapper__media :is(figure, picture, img) {
    inline-size: 100%;
    block-size: 100%;
    margin: 0;
  }

  .gf-wrapper__media img {
    object-fit: cover;
    object-position: var(--gf-image-position, center);
  }

  .gf-pos-top { --gf-image-position: center top; }
  .gf-pos-bottom { --gf-image-position: center bottom; }
  .gf-pos-left { --gf-image-position: left center; }
  .gf-pos-right { --gf-image-position: right center; }

  .gf-wrapper__overlay {
    background: var(--gf-overlay-color);
    opacity: var(--gf-overlay-opacity, 0.4);
  }

  .gf-overlay-dark { --gf-overlay-color: var(--gf-color-dark); }
  .gf-overlay-light { --gf-overlay-color: var(--gf-color-bg); }
  .gf-overlay-primary { --gf-overlay-color: var(--gf-color-primary); }
  .gf-overlay-secondary { --gf-overlay-color: var(--gf-color-secondary); }
  .gf-overlay-accent { --gf-overlay-color: var(--gf-color-accent); }
  .gf-opacity-20 { --gf-overlay-opacity: 0.2; }
  .gf-opacity-40 { --gf-overlay-opacity: 0.4; }
  .gf-opacity-60 { --gf-overlay-opacity: 0.6; }
  .gf-opacity-70 { --gf-overlay-opacity: 0.7; }
  .gf-opacity-80 { --gf-overlay-opacity: 0.8; }
  .gf-opacity-90 { --gf-overlay-opacity: 0.9; }

  .content-gf-wrapper[class*="gf-minh-"] {
    display: flex;
    flex-direction: column;
    justify-content: center;
  }

  .gf-minh-s { min-block-size: clamp(16rem, 40vw, 24rem); }
  .gf-minh-m { min-block-size: clamp(20rem, 50vw, 36rem); }
  .gf-minh-l { min-block-size: clamp(24rem, 60vw, 45rem); }
  .gf-minh-xl { min-block-size: clamp(28rem, 75vw, 67.5rem); }
  .gf-minh-h40 { min-block-size: 40svh; }
  .gf-minh-h50 { min-block-size: 50svh; }
  .gf-minh-h75 { min-block-size: 75svh; }
  .gf-minh-screen { min-block-size: 100svh; }

  .content-gf-wrapper.gf-valign-start { justify-content: flex-start; }
  .content-gf-wrapper.gf-valign-end { justify-content: flex-end; }

  .gf-wrapper--fixed {
    clip-path: inset(0);
  }

  .gf-wrapper--fixed > .gf-wrapper__media {
    position: fixed;
    inset: 0;
  }

  .gf-bg-light { background-color: var(--gf-color-light); }
  .gf-bg-primary { background-color: var(--gf-color-primary); }
  .gf-bg-secondary { background-color: var(--gf-color-secondary); }
  .gf-bg-accent { background-color: var(--gf-color-accent); }
  .gf-bg-dark { background-color: var(--gf-color-dark); }

  .gf-scheme-dark {
    --gf-color-text: var(--gf-color-on-dark);
    --gf-color-muted: color-mix(in srgb, var(--gf-color-on-dark) 75%, transparent);
    --gf-color-link: var(--gf-color-on-dark);
    --gf-color-link-hover: var(--gf-color-on-dark);
    --gf-color-border: color-mix(in srgb, var(--gf-color-on-dark) 25%, transparent);
    color: var(--gf-color-text);
  }

  .gf-scheme-light {
    --gf-color-text: var(--gf-color-on-light);
    color: var(--gf-color-text);
  }

  .content-gf-grid {
    container: gf-grid / inline-size;
  }

  .gf-grid {
    display: grid;
    grid-template-columns: var(--gf-cols-s);
    gap: var(--gf-grid-gap);
    align-items: stretch;
    margin: 0;
    padding: 0;
  }

  .gf-grid--list {
    list-style: none;
  }

  @container gf-grid (width >= 36rem) {
    .gf-grid {
      grid-template-columns: var(--gf-cols-m);
    }
  }

  @container gf-grid (width >= 60rem) {
    .gf-grid {
      grid-template-columns: var(--gf-cols-l);
    }

    .gf-span-2 { grid-column: span 2; }
    .gf-span-3 { grid-column: span 3; }
    .gf-span-4 { grid-column: span 4; }
  }

  @container gf-grid (width < 36rem) {
    .gf-order-s-first { order: -1; }
    .gf-order-s-last { order: 1; }
  }

  .gf-grid__item {
    min-inline-size: 0;
  }

  .gf-align-start { align-items: start; }
  .gf-align-center { align-items: center; }
  .gf-align-end { align-items: end; }

  .gf-align-stretch > .gf-grid__item {
    display: flex;
    flex-direction: column;
  }

  .gf-align-stretch > .gf-grid__item > :only-child {
    flex: 1 0 auto;
  }

  .gf-grid--numbered {
    counter-reset: gf-number;
  }

  .gf-grid--numbered > .gf-grid__item {
    position: relative;
    counter-increment: gf-number;
    padding-block-start: var(--gf-number-padding-top);
    border-block-start: var(--gf-number-border);
  }

  .gf-grid--numbered > .gf-grid__item::before {
    content: counter(gf-number, var(--gf-number-style));
    color: var(--gf-number-color);
    font-family: var(--gf-number-font);
    font-size: var(--gf-number-size);
    font-weight: var(--gf-number-weight);
    line-height: 1;
    letter-spacing: -0.04em;
  }

  .gf-grid--numbered-top > .gf-grid__item::before {
    display: block;
    margin-block-end: var(--gf-number-gap);
  }

  .gf-grid--numbered-left > .gf-grid__item {
    padding-inline-start: var(--gf-number-indent);
  }

  .gf-grid--numbered-left > .gf-grid__item::before {
    position: absolute;
    inset-block-start: var(--gf-number-padding-top);
    inset-inline-start: 0;
  }

  .gf-grid--numbered-steps > .gf-grid__item {
    --gf-step-offset: calc((1lh - var(--gf-step-size)) / 2);
    padding-block-start: 0;
    padding-inline-start: calc(var(--gf-step-size) + var(--gf-step-gap));
    border-block-start: 0;
  }

  .gf-grid--numbered-steps > .gf-grid__item::before {
    content: counter(gf-number, var(--gf-step-style));
    position: absolute;
    inset-block-start: var(--gf-step-offset);
    inset-inline-start: 0;
    display: grid;
    place-items: center;
    inline-size: var(--gf-step-size);
    block-size: var(--gf-step-size);
    border-radius: 50%;
    background: var(--gf-step-bg);
    color: var(--gf-step-color);
    font-family: var(--gf-step-font);
    font-size: var(--gf-step-font-size);
    font-weight: var(--gf-step-weight);
    letter-spacing: 0;
  }

  .gf-grid--numbered-steps > .gf-grid__item:not(:last-child)::after {
    content: "";
    position: absolute;
    inset-block: calc(var(--gf-step-offset) + var(--gf-step-size) + var(--gf-step-line-gap)) calc(var(--gf-step-line-gap) - var(--gf-grid-gap));
    inset-inline-start: calc(var(--gf-step-size) / 2 - 0.5px);
    border-inline-start: var(--gf-step-line);
    pointer-events: none;
  }

  .gf-self-start { align-self: start; }
  .gf-self-center { align-self: center; }
  .gf-self-end { align-self: end; }
  .gf-self-stretch { align-self: stretch; }

  .gf-grid--dividers {
    overflow: clip;
  }

  .gf-grid--dividers > .gf-grid__item {
    position: relative;
  }

  .gf-grid--dividers > .gf-grid__item::after {
    content: "";
    position: absolute;
    inset: calc(var(--gf-grid-gap) / -2 - 0.5px) calc(var(--gf-grid-gap) / -2) calc(var(--gf-grid-gap) / -2) calc(var(--gf-grid-gap) / -2 - 0.5px);
    background:
      linear-gradient(var(--gf-grid-divider-color), var(--gf-grid-divider-color)) left / 1px 100% no-repeat,
      linear-gradient(var(--gf-grid-divider-color), var(--gf-grid-divider-color)) top / 100% 1px no-repeat;
    pointer-events: none;
  }

  .gf-gap-0 { --gf-grid-gap: 0; }
  .gf-gap-xs { --gf-grid-gap: var(--gf-space-xs); }
  .gf-gap-s { --gf-grid-gap: var(--gf-space-s); }
  .gf-gap-m { --gf-grid-gap: var(--gf-space-m); }
  .gf-gap-l { --gf-grid-gap: var(--gf-space-l); }
  .gf-gap-xl { --gf-grid-gap: var(--gf-space-xl); }

  .gf-min-s { --gf-grid-min: 12rem; }
  .gf-min-m { --gf-grid-min: 16rem; }
  .gf-min-l { --gf-grid-min: 20rem; }

  .gf-cols-l-1 { --gf-cols-l: minmax(0, 1fr); }
  .gf-cols-l-2 { --gf-cols-l: repeat(2, minmax(0, 1fr)); }
  .gf-cols-l-3 { --gf-cols-l: repeat(3, minmax(0, 1fr)); }
  .gf-cols-l-4 { --gf-cols-l: repeat(4, minmax(0, 1fr)); }
  .gf-cols-l-5 { --gf-cols-l: repeat(5, minmax(0, 1fr)); }
  .gf-cols-l-6 { --gf-cols-l: repeat(6, minmax(0, 1fr)); }
  .gf-cols-l-1-2 { --gf-cols-l: minmax(0, 1fr) minmax(0, 2fr); }
  .gf-cols-l-2-1 { --gf-cols-l: minmax(0, 2fr) minmax(0, 1fr); }
  .gf-cols-l-1-3 { --gf-cols-l: minmax(0, 1fr) minmax(0, 3fr); }
  .gf-cols-l-3-1 { --gf-cols-l: minmax(0, 3fr) minmax(0, 1fr); }
  .gf-cols-l-1-1-2 { --gf-cols-l: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 2fr); }
  .gf-cols-l-1-2-1 { --gf-cols-l: minmax(0, 1fr) minmax(0, 2fr) minmax(0, 1fr); }
  .gf-cols-l-2-1-1 { --gf-cols-l: minmax(0, 2fr) minmax(0, 1fr) minmax(0, 1fr); }
  .gf-cols-l-auto { --gf-cols-l: repeat(auto-fit, minmax(min(var(--gf-grid-min), 100%), 1fr)); }

  .gf-cols-m-1 { --gf-cols-m: minmax(0, 1fr); }
  .gf-cols-m-2 { --gf-cols-m: repeat(2, minmax(0, 1fr)); }
  .gf-cols-m-3 { --gf-cols-m: repeat(3, minmax(0, 1fr)); }
  .gf-cols-m-4 { --gf-cols-m: repeat(4, minmax(0, 1fr)); }
  .gf-cols-m-5 { --gf-cols-m: repeat(5, minmax(0, 1fr)); }
  .gf-cols-m-6 { --gf-cols-m: repeat(6, minmax(0, 1fr)); }
  .gf-cols-m-1-2 { --gf-cols-m: minmax(0, 1fr) minmax(0, 2fr); }
  .gf-cols-m-2-1 { --gf-cols-m: minmax(0, 2fr) minmax(0, 1fr); }
  .gf-cols-m-1-3 { --gf-cols-m: minmax(0, 1fr) minmax(0, 3fr); }
  .gf-cols-m-3-1 { --gf-cols-m: minmax(0, 3fr) minmax(0, 1fr); }
  .gf-cols-m-1-1-2 { --gf-cols-m: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 2fr); }
  .gf-cols-m-1-2-1 { --gf-cols-m: minmax(0, 1fr) minmax(0, 2fr) minmax(0, 1fr); }
  .gf-cols-m-2-1-1 { --gf-cols-m: minmax(0, 2fr) minmax(0, 1fr) minmax(0, 1fr); }
  .gf-cols-m-auto { --gf-cols-m: repeat(auto-fit, minmax(min(var(--gf-grid-min), 100%), 1fr)); }

  .gf-cols-s-1 { --gf-cols-s: minmax(0, 1fr); }
  .gf-cols-s-2 { --gf-cols-s: repeat(2, minmax(0, 1fr)); }
  .gf-cols-s-3 { --gf-cols-s: repeat(3, minmax(0, 1fr)); }
  .gf-cols-s-4 { --gf-cols-s: repeat(4, minmax(0, 1fr)); }
  .gf-cols-s-5 { --gf-cols-s: repeat(5, minmax(0, 1fr)); }
  .gf-cols-s-6 { --gf-cols-s: repeat(6, minmax(0, 1fr)); }
  .gf-cols-s-1-2 { --gf-cols-s: minmax(0, 1fr) minmax(0, 2fr); }
  .gf-cols-s-2-1 { --gf-cols-s: minmax(0, 2fr) minmax(0, 1fr); }
  .gf-cols-s-1-3 { --gf-cols-s: minmax(0, 1fr) minmax(0, 3fr); }
  .gf-cols-s-3-1 { --gf-cols-s: minmax(0, 3fr) minmax(0, 1fr); }
  .gf-cols-s-1-1-2 { --gf-cols-s: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 2fr); }
  .gf-cols-s-1-2-1 { --gf-cols-s: minmax(0, 1fr) minmax(0, 2fr) minmax(0, 1fr); }
  .gf-cols-s-2-1-1 { --gf-cols-s: minmax(0, 2fr) minmax(0, 1fr) minmax(0, 1fr); }
  .gf-cols-s-auto { --gf-cols-s: repeat(auto-fit, minmax(min(var(--gf-grid-min), 100%), 1fr)); }

  .gf-navigation ul {
    list-style: none;
    margin: 0;
    padding: 0;
  }

  .gf-navigation :is(a, strong) {
    display: block;
    color: var(--gf-nav-color);
    font-family: var(--gf-nav-font);
    font-size: var(--gf-nav-font-size);
    font-weight: var(--gf-nav-font-weight);
    text-transform: var(--gf-nav-text-transform);
    text-decoration: none;
    transition: color var(--gf-transition);
  }

  .gf-navigation :is(a:hover, .active, .trail) {
    color: var(--gf-nav-color-active);
  }

  .gf-nav-toggle {
    display: none;
    position: relative;
    inline-size: 2.75rem;
    block-size: 2.75rem;
    padding: 0;
    border: 0;
    background: none;
    color: var(--gf-header-color);
    cursor: pointer;
  }

  .gf-nav-toggle__icon,
  .gf-nav-toggle__icon::before,
  .gf-nav-toggle__icon::after {
    position: absolute;
    inset-inline-start: 50%;
    inline-size: 1.5rem;
    block-size: 2px;
    margin-inline-start: -0.75rem;
    background: currentColor;
    border-radius: 1px;
    transition: transform var(--gf-transition), opacity var(--gf-transition);
  }

  .gf-nav-toggle__icon {
    inset-block-start: 50%;
  }

  .gf-nav-toggle__icon::before,
  .gf-nav-toggle__icon::after {
    content: "";
    inset-inline-start: 0;
    margin: 0;
  }

  .gf-nav-toggle__icon::before {
    transform: translateY(-0.5rem);
  }

  .gf-nav-toggle__icon::after {
    transform: translateY(0.5rem);
  }

  [data-gf-nav-open] .gf-nav-toggle__icon {
    background: transparent;
  }

  [data-gf-nav-open] .gf-nav-toggle__icon::before {
    transform: rotate(45deg);
  }

  [data-gf-nav-open] .gf-nav-toggle__icon::after {
    transform: rotate(-45deg);
  }

  .gf-code {
    overflow: hidden;
    border-radius: var(--gf-code-radius);
    background: var(--gf-code-bg);
    color: var(--gf-code-color);
    font-family: var(--gf-code-font);
    font-size: var(--gf-code-size);
  }

  .gf-code__bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--gf-space-s);
    padding: 0.5rem 0.75rem 0.5rem 1.125rem;
    background: var(--gf-code-bar-bg);
    color: var(--gf-code-muted);
    font-size: 0.8125em;
  }

  .gf-code__copy {
    padding: 0.25rem 0.625rem;
    border: 1px solid color-mix(in srgb, var(--gf-code-muted) 40%, transparent);
    border-radius: var(--gf-radius);
    background: none;
    color: var(--gf-code-color);
    font: inherit;
    cursor: pointer;
  }

  .gf-code__copy:hover,
  .gf-code__copy.is-copied {
    border-color: var(--gf-code-string);
    color: var(--gf-code-string);
  }

  .gf-code pre {
    margin: 0;
    padding: 1rem 1.125rem 1.125rem;
    overflow-x: auto;
    line-height: 1.6;
    tab-size: 4;
  }

  .gf-code code {
    padding: 0;
    background: none;
    color: inherit;
    font: inherit;
  }

  .gf-code :is(.hljs-keyword, .hljs-selector-tag, .hljs-built_in, .hljs-literal, .hljs-type) { color: var(--gf-code-keyword); }
  .gf-code :is(.hljs-string, .hljs-regexp, .hljs-addition) { color: var(--gf-code-string); }
  .gf-code :is(.hljs-number, .hljs-symbol, .hljs-bullet) { color: var(--gf-code-number); }
  .gf-code :is(.hljs-title, .hljs-function, .hljs-section, .hljs-selector-id) { color: var(--gf-code-title); }
  .gf-code :is(.hljs-attr, .hljs-attribute, .hljs-property, .hljs-variable, .hljs-selector-class, .hljs-params) { color: var(--gf-code-attr); }
  .gf-code :is(.hljs-tag, .hljs-name, .hljs-deletion) { color: var(--gf-code-tag); }
  .gf-code :is(.hljs-comment, .hljs-quote, .hljs-meta) { color: var(--gf-code-muted); font-style: italic; }

  :where(p, li, td, th, dd, figcaption, .gf-iconbox__body) code {
    padding: 0.1em 0.35em;
    border-radius: 0.25em;
    background: var(--gf-code-inline-bg);
    font-family: var(--gf-code-font);
    font-size: 0.875em;
  }

  @container gf-grid (width >= 36rem) {
    .gf-grid__item.gf-sticky {
      position: sticky;
      inset-block-start: var(--gf-sticky-top);
      align-self: start;
    }
  }

  .gf-booknav {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
    align-items: center;
    gap: var(--gf-space-s);
    margin: 0;
    padding: var(--gf-space-m) 0 0;
    border-block-start: 1px solid var(--gf-color-border);
    list-style: none;
  }

  .gf-booknav li {
    margin: 0;
  }

  .gf-booknav :is(.previous, .next) a {
    display: inline-flex;
    flex-direction: column;
    gap: 0.125rem;
    color: var(--gf-booknav-color);
    font-weight: 650;
    text-decoration: none;
  }

  .gf-booknav :is(.previous, .next) a:hover {
    color: var(--gf-booknav-color-hover);
  }

  .gf-booknav__label {
    color: var(--gf-color-muted);
    font-size: var(--gf-fs-xs);
    font-weight: 400;
  }

  .gf-booknav .previous .gf-booknav__label::before {
    content: "← ";
  }

  .gf-booknav .next {
    text-align: end;
  }

  .gf-booknav .next a {
    align-items: flex-end;
  }

  .gf-booknav .next .gf-booknav__label::after {
    content: " →";
  }


  @media (width < 36rem) {
    .gf-booknav {
      grid-template-columns: 1fr 1fr;
    }

    .gf-booknav .up {
      grid-column: 1 / -1;
      grid-row: 1;
      justify-self: center;
    }
  }

  .gf-nav-sub {
    display: inline-grid;
    flex: none;
    place-items: center;
    inline-size: var(--gf-nav-sub-size);
    block-size: var(--gf-nav-sub-size);
    padding: 0;
    border: 0;
    border-radius: var(--gf-radius);
    background: none;
    color: inherit;
    cursor: pointer;
  }

  .gf-nav-sub::before {
    content: "";
    inline-size: 1em;
    block-size: 1em;
    background: currentColor;
    mask: var(--gf-nav-sub-icon) center / contain no-repeat;
    transition: rotate var(--gf-transition);
  }

  .gf-nav-sub[aria-expanded="true"]::before {
    rotate: 180deg;
  }

  @media (width >= 64rem) {
    .gf-navigation .level_1 {
      display: flex;
      flex-wrap: wrap;
      gap: 0 var(--gf-nav-gap);
    }

    .gf-navigation .level_1 > li {
      position: relative;
    }

    .gf-navigation .level_1 > li > :is(a, strong) {
      padding-block: var(--gf-space-xs);
    }

    .gf-navigation .level_2 {
      position: absolute;
      inset-block-start: calc(100% + var(--gf-nav-dropdown-offset));
      inset-inline-start: calc(-1 * var(--gf-space-s));
      min-inline-size: 14rem;
      padding: var(--gf-space-xs) 0;
      background: var(--gf-nav-dropdown-bg);
      -webkit-backdrop-filter: var(--gf-nav-dropdown-backdrop);
      backdrop-filter: var(--gf-nav-dropdown-backdrop);
      box-shadow: var(--gf-shadow);
      border-radius: var(--gf-radius);
      opacity: 0;
      visibility: hidden;
      translate: 0 0.5rem;
      transition: opacity var(--gf-transition), translate var(--gf-transition), visibility var(--gf-transition);
    }

    .gf-navigation .level_1 > li.gf-has-sub {
      display: flex;
      align-items: center;
    }

    .gf-navigation .level_2::before {
      content: "";
      position: absolute;
      inset-inline: 0;
      inset-block-end: 100%;
      block-size: var(--gf-nav-dropdown-offset);
    }

    .gf-navigation .level_1 > li.gf-has-sub > .gf-nav-sub {
      inline-size: var(--gf-nav-sub-size-desktop);
      margin-inline-start: 0.125rem;
    }

    .gf-navigation .level_1 > li:is(:hover, :focus-within, .is-open) > .level_2 {
      opacity: 1;
      visibility: visible;
      translate: 0 0;
    }

    .gf-navigation .level_2 :is(a, strong) {
      padding: var(--gf-space-xs) var(--gf-space-s);
    }

    .gf-navigation .level_1 > li.gf-nav-sub-mobile > :is(.level_2, .gf-nav-sub) {
      display: none;
    }
  }

  @media (width < 64rem) {
    .gf-nav-toggle {
      display: block;
      z-index: 2;
      transition: color var(--gf-nav-duration);
    }

    .gf-header[data-gf-nav-open] {
      z-index: 1000;
    }

    .gf-navigation {
      position: absolute;
      z-index: 1;
      inset-block-start: 100%;
      inset-inline: 0;
      max-block-size: calc(100dvb - var(--gf-nav-top, var(--gf-header-min-height)));
      overflow-y: auto;
      overscroll-behavior: contain;
      padding: var(--gf-nav-mobile-panel-padding);
      background: var(--gf-nav-mobile-bg);
      box-shadow: var(--gf-shadow);
      visibility: hidden;
      clip-path: inset(0 -3rem 100% -3rem);
      transition: clip-path var(--gf-nav-duration) var(--gf-nav-easing), visibility 0s var(--gf-nav-duration);
    }

    [data-gf-nav-open] .gf-navigation {
      visibility: visible;
      clip-path: inset(0 -3rem -3rem -3rem);
      transition-delay: 0s;
    }

    .gf-navigation .level_1 > li {
      opacity: 0;
      translate: 0 -0.5rem;
      transition: opacity var(--gf-nav-duration) ease, translate var(--gf-nav-duration) var(--gf-nav-easing);
    }

    [data-gf-nav-open] .gf-navigation .level_1 > li {
      opacity: 1;
      translate: 0 0;
      transition-delay: calc(0.08s + var(--gf-i, 0) * 0.04s);
    }

    .gf-navigation :is(a, strong) {
      padding: var(--gf-nav-mobile-padding);
      border-block-end: 1px solid var(--gf-nav-mobile-divider);
      color: var(--gf-nav-mobile-color);
      font-size: var(--gf-nav-font-size-mobile);
      font-weight: var(--gf-nav-mobile-font-weight);
    }

    .gf-navigation :is(a:hover, .active, .trail) {
      color: var(--gf-nav-mobile-color-active);
    }

    .gf-navigation :is(.active, .trail) {
      background: var(--gf-nav-mobile-active-bg);
    }

    .gf-navigation .level_2 :is(a, strong) {
      padding-inline-start: calc(var(--gf-gutter) + var(--gf-space-s));
    }

    .gf-navigation li.gf-has-sub {
      display: grid;
      grid-template-columns: minmax(0, 1fr) auto;
      align-items: stretch;
    }

    .gf-navigation li.gf-has-sub > ul {
      grid-column: 1 / -1;
    }

    .gf-navigation li.gf-has-sub:not(.is-open) > ul {
      display: none;
    }

    .gf-navigation li.gf-has-sub > .gf-nav-sub {
      block-size: auto;
      min-block-size: var(--gf-nav-sub-size);
      inline-size: calc(var(--gf-nav-sub-size) + var(--gf-space-s));
      border-block-end: 1px solid var(--gf-nav-mobile-divider);
      border-radius: 0;
      color: var(--gf-nav-mobile-color);
    }


    html:has(.gf-header[data-gf-nav-open]:is([data-gf-nav="offcanvas"], [data-gf-nav="fullscreen"])) {
      overflow: hidden;
    }

    [data-gf-nav="scroll"] .gf-header__inner {
      flex-wrap: wrap;
      row-gap: 0;
      padding-block-end: 0;
    }

    [data-gf-nav="scroll"] .gf-nav-toggle {
      display: none;
    }

    [data-gf-nav="scroll"] .gf-navigation {
      position: static;
      order: 3;
      flex: 1 0 100%;
      max-block-size: none;
      margin-inline: calc(-1 * var(--gf-gutter));
      padding: 0 var(--gf-gutter);
      overflow: auto hidden;
      scrollbar-width: none;
      background: none;
      box-shadow: none;
      visibility: visible;
      clip-path: none;
      transition: none;
    }

    [data-gf-nav="scroll"] .gf-navigation::-webkit-scrollbar {
      display: none;
    }

    [data-gf-nav="scroll"] .gf-navigation .level_1 {
      display: flex;
      gap: var(--gf-nav-gap);
      white-space: nowrap;
    }

    [data-gf-nav="scroll"] .gf-navigation .level_1 > li {
      flex: none;
      opacity: 1;
      translate: none;
    }

    [data-gf-nav="scroll"] .gf-navigation :is(a, strong) {
      padding: var(--gf-space-xs) 0;
      border: 0;
      background: none;
      color: var(--gf-nav-color);
    }

    [data-gf-nav="scroll"] .gf-navigation :is(a:hover, .active, .trail) {
      color: var(--gf-nav-color-active);
    }

    [data-gf-nav="fullscreen"] .gf-navigation li.gf-has-sub {
      display: flex;
      flex-wrap: wrap;
      align-items: center;
      justify-content: center;
    }

    [data-gf-nav="fullscreen"] .gf-navigation li.gf-has-sub > .gf-nav-sub {
      inline-size: var(--gf-nav-sub-size);
      border: 0;
    }

    [data-gf-nav="fullscreen"] .gf-navigation li.gf-has-sub > ul {
      flex: 1 0 100%;
    }

    [data-gf-nav="scroll"] .gf-navigation li.gf-has-sub {
      display: flex;
      align-items: center;
    }

    [data-gf-nav="scroll"] .gf-navigation li.gf-has-sub > .gf-nav-sub {
      inline-size: var(--gf-nav-sub-size);
      min-block-size: 0;
      border: 0;
      color: var(--gf-nav-color);
    }

    [data-gf-nav="scroll"] .gf-navigation .level_2 {
      position: absolute;
      z-index: 3;
      inset-block-start: calc(100% + var(--gf-space-xs));
      inset-inline-start: clamp(0px, var(--gf-sub-x, 0px), calc(100% - min(var(--gf-nav-scroll-sub-width), 100%)));
      inline-size: min(var(--gf-nav-scroll-sub-width), 100%);
      max-block-size: 60svh;
      overflow-y: auto;
      overscroll-behavior: contain;
      padding: var(--gf-space-xs) 0;
      border-radius: var(--gf-radius);
      background: var(--gf-nav-dropdown-bg);
      -webkit-backdrop-filter: var(--gf-nav-dropdown-backdrop);
      backdrop-filter: var(--gf-nav-dropdown-backdrop);
      box-shadow: var(--gf-shadow);
      white-space: normal;
    }

    [data-gf-nav="scroll"] .gf-navigation li.gf-has-sub.is-open > .level_2 {
      display: block;
    }

    [data-gf-nav="scroll"] .gf-navigation .level_2 :is(a, strong) {
      display: block;
      padding: var(--gf-space-xs) var(--gf-space-s);
    }

    :is([data-gf-nav="offcanvas"], [data-gf-nav="fullscreen"])[data-gf-nav-open] .gf-nav-toggle {
      color: var(--gf-nav-mobile-color);
    }

    [data-gf-nav="offcanvas"] .gf-navigation {
      position: fixed;
      inset: 0 0 0 auto;
      inline-size: min(var(--gf-nav-panel-width), 100%);
      max-block-size: none;
      padding-block-start: calc(var(--gf-nav-top, var(--gf-header-min-height)) + var(--gf-space-xs));
      clip-path: none;
      translate: 100% 0;
      transition: translate var(--gf-nav-duration) var(--gf-nav-easing), visibility 0s var(--gf-nav-duration);
    }

    [data-gf-nav="offcanvas"][data-gf-nav-open] .gf-navigation {
      translate: 0 0;
      transition-delay: 0s;
    }

    [data-gf-nav="offcanvas"]::before {
      content: "";
      position: fixed;
      inset: 0;
      background: var(--gf-nav-backdrop);
      opacity: 0;
      visibility: hidden;
      transition: opacity var(--gf-nav-duration), visibility 0s var(--gf-nav-duration);
    }

    [data-gf-nav="offcanvas"][data-gf-nav-open]::before {
      opacity: 1;
      visibility: visible;
      transition-delay: 0s;
    }

    [data-gf-nav="offcanvas"]:not([data-gf-nav-open]) .gf-navigation .level_1 > li {
      translate: 1.5rem 0;
    }

    [data-gf-nav="fullscreen"] .gf-navigation {
      position: fixed;
      inset: 0;
      display: grid;
      align-content: safe center;
      max-block-size: none;
      padding-block: calc(var(--gf-nav-top, var(--gf-header-min-height)) + var(--gf-space-s)) var(--gf-space-l);
      clip-path: none;
      box-shadow: none;
      opacity: 0;
      transition: opacity var(--gf-nav-duration) ease, visibility 0s var(--gf-nav-duration);
    }

    [data-gf-nav="fullscreen"][data-gf-nav-open] .gf-navigation {
      opacity: 1;
      transition-delay: 0s;
    }

    [data-gf-nav="fullscreen"] .gf-navigation :is(a, strong) {
      border: 0;
      font-family: var(--gf-font-heading);
      font-size: var(--gf-nav-fullscreen-font-size);
      text-align: center;
    }

    [data-gf-nav="fullscreen"] .gf-navigation .level_2 :is(a, strong) {
      padding-inline-start: var(--gf-gutter);
      font-size: var(--gf-nav-font-size-mobile);
    }

    [data-gf-nav="fullscreen"]:not([data-gf-nav-open]) .gf-navigation .level_1 > li {
      translate: 0 1rem;
    }
  }

  .gf-header .gf-navigation .gf-nav-cta > :is(a, strong) {
    display: inline-flex;
    align-items: center;
    min-block-size: var(--gf-nav-cta-height);
    padding: var(--gf-nav-cta-padding);
    border: 0;
    border-radius: var(--gf-nav-cta-radius);
    background: var(--gf-nav-cta-bg);
    color: var(--gf-nav-cta-color);
    font-weight: var(--gf-nav-cta-weight);
    transition: background-color var(--gf-transition), color var(--gf-transition);
  }

  .gf-header .gf-navigation .gf-nav-cta > a:is(:hover, :focus-visible) {
    background: var(--gf-nav-cta-bg-hover);
    color: var(--gf-nav-cta-color-hover);
  }

  @media (width >= 64rem) {
    .gf-navigation .level_1 {
      align-items: center;
    }

    .gf-navigation .level_1 > .gf-nav-cta {
      margin-inline-start: var(--gf-nav-cta-offset);
    }
  }

  @media (width < 64rem) {
    .gf-navigation .level_1 > .gf-nav-cta {
      padding: var(--gf-space-s) var(--gf-gutter) 0;
    }

    [data-gf-nav="scroll"] .gf-header__inner {
      position: relative;
    }

    [data-gf-nav="scroll"] .gf-navigation .level_1 > .gf-nav-cta {
      position: absolute;
      inset-block-start: calc((var(--gf-header-min-height) - var(--gf-nav-cta-height)) / 2);
      inset-inline-end: 0;
      padding: 0;
    }
  }
}

@layer gf.utilities {
  .gf-pt-0 { padding-block-start: 0 !important; }
  .gf-pt-xs { padding-block-start: var(--gf-space-xs) !important; }
  .gf-pt-s { padding-block-start: var(--gf-space-s) !important; }
  .gf-pt-m { padding-block-start: var(--gf-space-m) !important; }
  .gf-pt-l { padding-block-start: var(--gf-space-l) !important; }
  .gf-pt-xl { padding-block-start: var(--gf-space-xl) !important; }
  .gf-pt-xxl { padding-block-start: var(--gf-space-xxl) !important; }

  .gf-pb-0 { padding-block-end: calc(0 + var(--gf-shape-space, 0px)) !important; }
  .gf-pb-xs { padding-block-end: calc(var(--gf-space-xs) + var(--gf-shape-space, 0px)) !important; }
  .gf-pb-s { padding-block-end: calc(var(--gf-space-s) + var(--gf-shape-space, 0px)) !important; }
  .gf-pb-m { padding-block-end: calc(var(--gf-space-m) + var(--gf-shape-space, 0px)) !important; }
  .gf-pb-l { padding-block-end: calc(var(--gf-space-l) + var(--gf-shape-space, 0px)) !important; }
  .gf-pb-xl { padding-block-end: calc(var(--gf-space-xl) + var(--gf-shape-space, 0px)) !important; }
  .gf-pb-xxl { padding-block-end: calc(var(--gf-space-xxl) + var(--gf-shape-space, 0px)) !important; }

  .gf-mt-0 { margin-block-start: 0 !important; }
  .gf-mt-xs { margin-block-start: var(--gf-space-xs) !important; }
  .gf-mt-s { margin-block-start: var(--gf-space-s) !important; }
  .gf-mt-m { margin-block-start: var(--gf-space-m) !important; }
  .gf-mt-l { margin-block-start: var(--gf-space-l) !important; }
  .gf-mt-xl { margin-block-start: var(--gf-space-xl) !important; }
  .gf-mt-xxl { margin-block-start: var(--gf-space-xxl) !important; }
  .gf-mt-n-s { margin-block-start: calc(-1 * var(--gf-space-s)) !important; }
  .gf-mt-n-m { margin-block-start: calc(-1 * var(--gf-space-m)) !important; }
  .gf-mt-n-l { margin-block-start: calc(-1 * var(--gf-space-l)) !important; }
  .gf-mt-n-xl { margin-block-start: calc(-1 * var(--gf-space-xl)) !important; }

  .gf-mb-0 { margin-block-end: 0 !important; }
  .gf-mb-xs { margin-block-end: var(--gf-space-xs) !important; }
  .gf-mb-s { margin-block-end: var(--gf-space-s) !important; }
  .gf-mb-m { margin-block-end: var(--gf-space-m) !important; }
  .gf-mb-l { margin-block-end: var(--gf-space-l) !important; }
  .gf-mb-xl { margin-block-end: var(--gf-space-xl) !important; }
  .gf-mb-xxl { margin-block-end: var(--gf-space-xxl) !important; }

  .gf-text-left { text-align: start; }
  .gf-text-center { text-align: center; }
  .gf-text-right { text-align: end; }

  .gf-max-narrow {
    max-inline-size: var(--gf-container-narrow);
    inline-size: 100%;
  }

  .gf-max-reading {
    max-inline-size: 65ch;
    inline-size: 100%;
  }

  .gf-text-center:is(.gf-max-narrow, .gf-max-reading) {
    margin-inline: auto;
  }

  .gf-text-right:is(.gf-max-narrow, .gf-max-reading) {
    margin-inline-start: auto;
  }

  @media (width < 40rem) {
    .gf-text-s-left { text-align: start; }
    .gf-text-s-center { text-align: center; }
    .gf-text-s-right { text-align: end; }
    .gf-hide-s { display: none !important; }
  }

  @media (40rem <= width < 64rem) {
    .gf-hide-m { display: none !important; }
  }

  @media (width >= 64rem) {
    .gf-hide-l { display: none !important; }
  }
}

html .contao-cookiebar {
  --ccb-clr: var(--gf-color-text);
  --ccb-bg: var(--gf-color-bg);
  --ccb-text: var(--gf-color-text);
  --ccb-btn-clr: var(--gf-color-on-primary);
  --ccb-btn-bg: var(--gf-color-primary);
  --ccb-btn-bg-hvr: color-mix(in srgb, var(--gf-color-primary) 82%, black);
  --ccb-btn-bdr: var(--gf-color-primary);
  --ccb-detail-clr: var(--gf-color-secondary);
  --ccb-detail-clr-hvr: var(--gf-color-primary);
  --ccb-checked-clr: var(--gf-color-on-primary);
  --ccb-checked-bg: var(--gf-color-secondary);
  --ccb-focus-clr: var(--gf-color-focus);
  --ccb-info-bg: var(--gf-color-light);
  --ccb-cookies-bg: var(--gf-color-light);
  --ccb-box-shadow: var(--gf-shadow);
  font-family: var(--gf-font-body);
}

html .contao-cookiebar :is(.cc-head, .cc-group) :is(h1, h2, h3, h4, .cc-title) {
  font-family: var(--gf-font-heading);
  font-weight: var(--gf-font-weight-heading);
}

html .contao-cookiebar .highlight .success {
  --ccb-btn-bg: var(--gf-color-secondary);
  --ccb-btn-bg-hvr: color-mix(in srgb, var(--gf-color-secondary) 82%, black);
  --ccb-btn-bdr: var(--gf-color-secondary);
  --ccb-btn-clr: var(--gf-color-on-primary);
}

html .contao-cookiebar .cc-btn {
  border-radius: var(--gf-btn-radius);
  font-family: var(--gf-btn-font);
  font-weight: var(--gf-btn-weight);
  text-transform: var(--gf-btn-transform);
  letter-spacing: var(--gf-btn-letter-spacing);
}
