/* ==========================================================================
   Shared Components
   Legacy class names are intentionally preserved during this foundation phase.
   ========================================================================== */

/* Repeated page-level component support, centralized from current blog pages. */
.solutions_grid {
        gap: 2rem;
      }

      .solutions_grid .card {
        height: 100%;
      }

      @media (width >= 56em) {
        .solutions_grid .thin-outline-card {
          aspect-ratio: 1 / 1;
        }
      }

      .solutions_grid .thin-outline-card h3 + p {
        margin-top: 0.75rem;
      }

      .thin-outline-card {
        border: 1px solid rgba(0, 0, 0, 0.08);
        background: transparent;
      }

      .thin-outline-card .card-body {
        padding: 1.5rem;
      }

      .logo-wordmark {
        display: inline-flex;
        font-family: inherit;
        flex-direction: column;
        font-weight: 800;
        letter-spacing: 0.02em;
        text-transform: none;
        font-size: 1.05rem;
        line-height: 1;
      }

      .logo-wordmark-accent {
        font-family: inherit;
        font-weight: 600;
        letter-spacing: 0.08em;
        text-transform: none;
        font-size: 0.7em;
        line-height: 1;
      }

      .aos-item {
        opacity: 0;
        transform: translateY(16px);
        transition: opacity 0.6s ease, transform 0.6s ease;
        will-change: opacity, transform;
      }

      .aos-item.is-visible {
        opacity: 1;
        transform: translateY(0);
      }

      .hero_wrap .u-display-xl {
        font-size: clamp(2rem, 3.6vw, 3.1rem) !important;
        line-height: 1.14;
      }

      .u-rich-text h2 {
        font-size: clamp(1.3rem, 2.2vw, 1.8rem) !important;
        line-height: 1.28;
      }

      @media (width < 56em) {
        .hero_wrap .u-display-xl {
          font-size: clamp(1.55rem, 7vw, 2.15rem) !important;
          line-height: 1.2;
        }

        .u-grid-desktop {
          grid-template-columns: 1fr !important;
        }

        .u-column-4,
        .u-column-8 {
          grid-column: span 1 !important;
        }

        .u-rich-text,
        .u-rich-text li,
        .u-rich-text p {
          overflow-wrap: anywhere;
        }

        .thin-outline-card {
          padding: 1rem !important;
        }

        .hero_lottie {
          max-height: 20px;
          overflow: hidden;
        }

        .hero_lottie .lottie_component {
          height: 180px;
        }
      }

      .contact-form-grid .btn_main_wrap {
        position: relative;
      }

      .contact-form-grid .g_clickable_btn {
        position: absolute;
        inset: 0;
        width: 100%;
        height: 100%;
        background: transparent;
        border: 0;
        cursor: pointer;
      }

      @media (width < 56em) {
        .nav_wrap.is-mobile .nav_menu_wrap {
          padding-top: calc(var(--nav--height) + 0.5rem);
          padding-bottom: 1.5rem;
        }

        .nav_wrap.is-mobile .nav_links_wrap.is-mobile {
          gap: 0.75rem;
        }

        .nav_wrap.is-mobile .nav_links_item.is-mobile {
          margin: 0;
        }

        .nav_wrap.is-mobile .nav_links_link.is-mobile {
          padding: 0.5rem 0;
        }

        .nav_wrap.is-mobile .nav_btn_combo_wrap,
        .nav_wrap.is-mobile .nav_dropdown_component.is-mobile,
        .nav_wrap.is-mobile .nav_dropdown_main_wrap.is-mobile {
          display: none !important;
        }

        .nav_wrap.is-mobile .nav_actions_wrap.is-mobile {
          margin-top: 1rem;
          gap: 0.75rem;
        }

        .nav_wrap.is-mobile .nav_buttons_item.is-mobile {
          gap: 0.5rem;
        }

        .u-vflex-center-center.u-gap-row-8 {
          row-gap: 2rem;
        }

        .u-btn-group {
          gap: 0.75rem;
        }

        .contact-form-grid {
          gap: 1rem;
        }

        .g_section_space {
          padding-top: 3rem !important;
          padding-bottom: 3rem !important;
        }
      }

/* Shared nav fragment styles, moved from nav.html. */
:root {
              --nav--height: 4.25rem;
              --nav--banner-height: 2.75rem;
              --nav--height-total: var(--nav--height);
              --nav--icon-thickness: var(--border-width--main);
              --nav--hamburger-thickness: var(--nav--icon-thickness);
              --nav--hamburger-gap: 0.4rem;
              --nav--hamburger-rotate: 45;
              --nav--menu-open-duration: 400ms;
              --nav--menu-close-duration: 400ms;
              --nav--dropdown-duration: 200ms;
              --nav--dropdown-open-duration: 200ms;
              --nav--dropdown-delay: 0;
            }

            /* On smaller screens */
            @media (width < 56em) {
              /* Disable scroll when mobile menu is open */
              --nav--height: 4.375rem;
              body:has(.nav_component .w-nav-button.w--open) {
                overflow: hidden;
              }
              .nav_menu_wrap {
                padding-top: 4.375rem;
              }
              .nav_buttons_item {
                flex-flow: column !important;
                width: 100%;
              }
              .nav_btn_combo_wrap,
              .nav_dropdown_main_ad {
                display: none !important;
              }
              .nav_wrap.is-mobile .nav_menu_wrap {
                display: none;
                opacity: 0;
                pointer-events: none;
              }
              .nav_wrap.is-mobile.w--open .nav_menu_wrap {
                display: block;
                opacity: 1;
                pointer-events: auto;
              }

              .nav_wrap.is-mobile .nav_menu_wrap {
                background: rgba(245, 243, 237, 0.98);
                border: 1px solid rgba(0, 0, 0, 0.08);
                border-radius: 16px;
                margin: 1rem;
                box-shadow: 0 24px 48px rgba(0, 0, 0, 0.08);
              }

              .nav_mobile_header {
                padding: 1.25rem 1.5rem 0;
                display: flex;
                align-items: center;
                justify-content: space-between;
              }

              .nav_mobile_title {
                font-size: 0.95rem;
                letter-spacing: 0.18em;
                text-transform: uppercase;
                color: rgba(0, 0, 0, 0.5);
              }

              .nav_mobile_tagline {
                font-size: 0.85rem;
                color: rgba(0, 0, 0, 0.5);
              }

              .nav_wrap.is-mobile .nav_menu_scroll {
                padding-top: 0.75rem;
              }
            }

            /* On larger screens */
            @container (min-width: 56em) {
              /* show desktop nav & dropdown backdrop */
              .nav_wrap.is-desktop {
                display: block;
              }
              /* hide mobile nav & mobile menu backdrop */
              .nav_wrap.is-mobile {
                display: none;
              }
              /* nav height on larger than responsive nav */
              .nav_contain {
                height: var(--nav--height);
              }
              .nav_buttons_item .btn_main_wrap:nth-of-type(2) {
                display: none;
              }
            }

            /* dropdown list: initial state */
            html:not(.wf-design-mode) .nav_dropdown_component > .w-dropdown-list {
              /* removes display none to enable css transitions */
              display: grid;
              grid-template-columns: minmax(0, 1fr);
              /* sets list to 0 height by default */
              grid-template-rows: 0;
              transition: opacity var(--nav--menu-open-duration) cubic-bezier(.77,0,.175,1);
              /* makes list content not focusable when closed */
              visibility: hidden;
              opacity: 0;
              width: max-content;
            }

            /* makes list content focusable when opened */
            html:not(.wf-design-mode) .nav_dropdown_component > .w-dropdown-list.w--open {
              visibility: visible;
              opacity: 1;
            }

            /* Ensure dropdown content is properly contained */
            html:not(.wf-design-mode) .nav_dropdown_component > .w-dropdown-list > .nav_dropdown_main_content {
              /* Required for grid-template-rows transition to work */
              min-height: 0;
              overflow: hidden;

            }

            /* set open state of dropdown list */
            .nav_dropdown_component:has( > .w-dropdown-toggle[aria-expanded="true"]) > .w-dropdown-list {
              --nav--dropdown-duration: var(--nav--dropdown-open-duration);
              grid-template-rows: 1fr;
            }

            /* on desktop, delay dropdown opening if another dropdown is open */
            .nav_wrap.is-desktop:has(.nav_dropdown_component > .w-dropdown-toggle.w--open[aria-expanded="false"]) .nav_dropdown_component:has( > .w--open[aria-expanded="true"]) > .w-dropdown-list {
              transition-delay: var(--nav--dropdown-duration);
            }

            /* set open state of dropdown list */
            .nav_dropdown_component:has( > .w-dropdown-toggle[aria-expanded="true"]) > .nav_dropdown_main_wrap {
              padding-bottom: 1.5rem;
            }

            /* rotate arrow inside open dropdown */
            .w-dropdown-toggle[aria-expanded="true"] .nav_links_svg {
              transform: rotate(-180deg);
            }
            /* animate first hamburger line when opened */
            .nav_component .w-nav-button.w--open > * > :first-child {
              transform: translateY(calc(var(--nav--hamburger-thickness) * 0.75 + var(--nav--hamburger-gap) * 1)) rotate(calc(var(--nav--hamburger-rotate) * -1deg));
            }
            /* animate second hamburger line when opened */
            .nav_component .w-nav-button.w--open > * > :last-child {
              transform: translateY(calc(var(--nav--hamburger-thickness) * -0.75 + var(--nav--hamburger-gap) * -1)) rotate(calc(var(--nav--hamburger-rotate) * 1deg));
              width: 100%;

            }
            .nav_component .w-nav-button.w--open > * > :nth-child(2) {
              opacity: 0;

            }

            /* menu animations */
            @keyframes menuOpen {
              from {
                clip-path: polygon(0 0, 100% 0, 100% 0, 0 0);
              }
              to {
                clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
              }
            }

            @keyframes menuClose {
              from {
                clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
              }
              to {
                clip-path: polygon(0 0, 100% 0, 100% 0, 0 0);
              }
            }
            /* menu open */
            .nav_component:has(.w-nav-button.w--open) .w-nav-menu {
              animation: menuOpen var(--nav--menu-open-duration) ease-in-out forwards;
            }
            /* menu close */
            .nav_component:has(.w-nav-button:not(.w--open)) .w-nav-menu {
              animation: menuClose var(--nav--menu-close-duration) ease-in-out forwards;
            }
            /* position overflow to top of screen */
            .nav_component .w-nav-overlay {
              top: 0;
              min-height: 100vh;
            }
            /* search focus underline */
            .nav_search_wrap:has(input:focus-visible) {
              border-color: var(--_theme---text);
            }
            /* open dropdown on mobile */
            .nav_wrap.is-mobile [data-open-on-mobile] > .w-dropdown-toggle {
              display: none;
            }
            .nav_wrap.is-mobile [data-open-on-mobile] > .w-dropdown-list {
              visibility: visible;
              opacity: 1;
              display: block;
              grid-template-rows: 1fr;
            }
            /* Rotate Nav Banner Arrow When External Link */
            a[target="_blank"] .nav_banner_svg {
              transform: rotate(-45deg);
            }
            /* nav banner */
            html:has(.nav_banner_wrap:not(.w-condition-invisible)):not(.hide-nav-banner) {
              --nav--height-total: calc(var(--nav--banner-height) + var(--nav--height));
            }

            .hide-nav-banner .nav_banner_wrap {
              display: none;
            }

            /* Animating image on hover */
            .nav_dropdown_main_ad:hover .g_visual_img {
              transform: scale(1.05);
              transition: transform 0.2s ease;
            }

            /* Make sure the image has a smooth transition by default */
            .g_visual_img {
              transition: transform 0.2s ease;
            }
            /* Change the color of nav link out icon when hovered */
            .nav_dropdown_link:hover .nav_linkout_icon {
              color: inherit;
            }

            /* Update the styling of nav button dropdown on mobile*/
            .nav_wrap.is-mobile .nav_links_link.is-btn-dropdown {
              padding-top: var(--_spacing---space--5);
              padding-right: 0;
              padding-bottom: var(--_spacing---space--5);
            }

            /* Remove the desktop styling from button dropdown icon on mobile*/
            .nav_wrap.is-mobile .btn_dropdown_link_wrap {
              padding: 0;
              background-color: transparent;
              border: none;
              color: inherit;
              width: 100%;
            }

            /* Remove the desktop styling from button dropdown icon wrapper on mobile*/
            .nav_wrap.is-mobile .btn_dropdown_icon_wrap {
              padding: 0;
              height: auto;
              border: none;
            }

            /* Unhide the actions wrapper to show the buttons on mobile */
            .nav_wrap.is-mobile .nav_actions_wrap {
              display: flex;
            }

            /* Set the dropdown menu to full width on mobile */
            .nav_wrap.is-mobile .nav_dropdown_component > .w-dropdown-list.w--open {
              width: 100%;
            }

            /* Remove extra margin from the dropdown on mobile */
            .nav_wrap.is-mobile .nav_dropdown_main_content {
              margin-top: 0;
            }

            /* Hide the login button inside the cloud dropdown on mobile*/
            .nav_links_item.is-mobile:last-child .btn_main_wrap.is-nav {
              display: none;
            }

            /* Remove the underline from button dropdown text */
            .nav_links_link.is-btn-dropdown .nav_links_text:hover {
              text-decoration: none;
            }

            .nav_dropdown_component.u-position-relative {
              position: relative !important;
            }

            .nav_links_link.is-btn-dropdown ~ .nav_dropdown_main_wrap.is-desktop {
              transform: translate(0%);
              right: 0;
            }

/* Shared footer fragment styles, moved from footer.html. */
#footer .footer_contain {
      width: min(100%, 76rem);
      margin-inline: auto;
    }

    #footer .footer_grid {
      display: grid;
      grid-template-columns: minmax(0, 1.2fr) minmax(0, 0.95fr) minmax(0, 0.95fr) minmax(0, 0.9fr);
      column-gap: clamp(1.25rem, 2vw, 2rem);
      row-gap: 1.5rem;
      align-items: start;
    }

    #footer .footer_column {
      min-width: 0;
    }

    #footer .footer_brand {
      display: flex;
      flex-direction: column;
      gap: 1rem;
      max-width: 18rem;
    }

    #footer .footer_brand_statement {
      color: var(--swatch--slate-light, rgba(255, 255, 255, 0.72));
      font-size: clamp(0.98rem, 0.9rem + 0.2vw, 1.08rem);
      line-height: 1.58;
      max-width: 16.5rem;
      text-wrap: balance;
    }

    #footer .footer_group_wrap {
      margin: 0;
    }

    #footer .footer_group_block {
      display: flex;
      flex-direction: column;
      gap: 0.82rem;
    }

    #footer .footer_group_title {
      margin: 0;
      color: var(--_theme---foreground-primary, #fff);
      font-size: 0.82rem;
      font-weight: 600;
      letter-spacing: 0.08em;
      line-height: 1.2;
      text-transform: uppercase;
    }

    #footer .footer_group_list {
      display: flex;
      flex-direction: column;
      gap: 0.58rem;
      margin: 0;
      padding: 0;
      list-style: none;
    }

    #footer .footer_group_item {
      margin: 0;
      min-width: 0;
    }

    #footer .footer_company_list {
      display: flex;
      flex-direction: column;
      gap: 0.58rem;
      visibility: visible !important;
      opacity: 1 !important;
    }

    #footer .footer_company_item {
      position: relative;
      display: flex;
      align-items: flex-start;
      min-height: 1.5rem;
    }

    #footer .footer_link_wrap,
    #footer .footer_text_wrap {
      display: inline-flex;
      align-items: flex-start;
      max-width: 100%;
      color: var(--swatch--cloud-light, rgba(255, 255, 255, 0.92));
      text-decoration: none;
      transition: color 180ms ease, opacity 180ms ease;
    }

    #footer .footer_company_link {
      position: absolute;
      inset: 0;
      z-index: 2;
      display: block !important;
      visibility: visible !important;
      opacity: 1 !important;
    }

    #footer .footer_link_wrap:hover,
    #footer .footer_link_wrap:focus-visible,
    #footer .footer_bottom_link_wrap:hover,
    #footer .footer_bottom_link_wrap:focus-visible {
      color: var(--_theme---foreground-primary, #fff);
      opacity: 1;
    }

    #footer .footer_link_text {
      color: inherit;
      font-size: 0.95rem;
      line-height: 1.5;
      text-wrap: pretty;
      word-break: normal;
      overflow-wrap: anywhere;
    }

    #footer .footer_link_label {
      display: inline;
      color: inherit;
    }

    #footer .footer_company_text {
      position: relative;
      z-index: 1;
      display: inline;
      color: var(--swatch--cloud-light, rgba(255, 255, 255, 0.92));
      font-size: 0.95rem;
      line-height: 1.5;
    }

    #footer .footer_link_text.is-muted,
    #footer .footer_address_note {
      color: var(--swatch--slate-light, rgba(255, 255, 255, 0.62));
    }

    #footer .footer_address_note {
      display: block;
      margin-top: 0.12rem;
      font-size: 0.85rem;
      line-height: 1.4;
    }

    #footer .footer_bottom_contain {
      display: flex;
      flex-direction: column;
      align-items: flex-start;
      gap: 0.5rem;
      margin-top: 0.1rem;
    }

    #footer .footer_bottom_list {
      display: flex;
      align-items: center;
      gap: 0.75rem;
      margin: 0;
      padding: 0;
      list-style: none;
    }

    #footer .footer_bottom_item {
      margin: 0;
    }

    #footer .footer_bottom_link_wrap {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      color: var(--swatch--slate-light, rgba(255, 255, 255, 0.72));
      transition: color 180ms ease, opacity 180ms ease, transform 180ms ease;
    }

    #footer .footer_bottom_link_wrap:hover,
    #footer .footer_bottom_link_wrap:focus-visible {
      transform: translateY(-1px);
    }

    #footer .footer_bottom_text {
      color: var(--swatch--slate-light, rgba(255, 255, 255, 0.62));
      font-size: 0.82rem;
      line-height: 1.45;
      opacity: 0.82;
    }

    @media screen and (max-width: 991px) {
      #footer .footer_contain {
        width: min(100%, 60rem);
      }

      #footer .footer_grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        column-gap: 1.4rem;
        row-gap: 1.75rem;
      }

      #footer .footer_brand {
        max-width: none;
      }

      #footer .footer_brand_statement {
        max-width: 18rem;
      }
    }

    @media screen and (max-width: 767px) {
      #footer .footer_grid {
        grid-template-columns: minmax(0, 1fr);
        row-gap: 1.6rem;
      }

      #footer .footer_brand {
        gap: 0.9rem;
      }

      #footer .footer_group_block {
        gap: 0.8rem;
      }

      #footer .footer_group_list {
        gap: 0.56rem;
      }
    }

.article_card:has(a):hover .g_visual_img,
.card:has(a):hover .g_visual_img {
  transform: scale(1.04);
}

.g_visual_img {
  transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}

.logo_marquee {
  display: flex;
  gap: 2.5rem;
  overflow: hidden;
  padding-block: 0.5rem;
}

.logo_marquee_logo_component {
  display: flex;
  gap: 2.5rem;
  align-items: center;
  min-width: max-content;
  animation: marquee 48s linear infinite;
}

.logo_marquee:hover .logo_marquee_logo_component {
  animation-play-state: paused;
}

@keyframes marquee {
  0% { transform: translateX(0%); }
  100% { transform: translateX(-100%); }
}

@media (prefers-reduced-motion) {
  .logo_marquee_logo_component {
    animation-play-state: paused;
  }
}

.w-slider-dot {
  background-color: var(--swatch--cloud-light, #e2e8f0) !important;
  width: 10px !important;
  height: 10px !important;
  margin: 0 5px !important;
  border-radius: 50% !important;
  padding: 0 !important;
  transition: background-color 0.2s ease !important;
}

.w-slider-dot.w-active,
.w-slider-dot:hover {
  background-color: var(--swatch--slate-light, #475569) !important;
}

.terminal_content {
  scrollbar-width: thin;
  scrollbar-color: rgba(250, 249, 240, 0.3) transparent;
}

.terminal_content::-webkit-scrollbar {
  width: 6px;
  height: 6px;
}

.terminal_content::-webkit-scrollbar-thumb {
  background: rgba(250, 249, 240, 0.3);
  border-radius: 3px;
}

.terminal_content::-webkit-scrollbar-thumb:hover {
  background: rgba(250, 249, 240, 0.5);
}

dialog.modal_wrap[open] {
  animation: fadeIn 300ms ease-out forwards;
}

dialog.modal_wrap::backdrop {
  background: color-mix(in srgb, var(--swatch--slate-dark, #0f172a) 80%, transparent);
}

@keyframes fadeIn {
  from { opacity: 0; transform: translateY(4px); }
  to { opacity: 1; transform: translateY(0); }
}
